diff options
author | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-12-31 09:07:02 +0000 |
---|---|---|
committer | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-12-31 09:07:02 +0000 |
commit | 2fe9be622f5a8a5f84aa983c5da4d431f5f7f153 (patch) | |
tree | 36c805757d64bc43224206067fe450646d1285cc /crawl-ref | |
parent | 86d488e3efa0b1d8ec12223527235e3ef3a5fec2 (diff) | |
download | crawl-ref-2fe9be622f5a8a5f84aa983c5da4d431f5f7f153.tar.gz crawl-ref-2fe9be622f5a8a5f84aa983c5da4d431f5f7f153.zip |
Allow choosing different arena layouts (patch by sorear).
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8060 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref')
-rw-r--r-- | crawl-ref/source/arena.cc | 15 | ||||
-rw-r--r-- | crawl-ref/source/dat/arena.des | 309 |
2 files changed, 320 insertions, 4 deletions
diff --git a/crawl-ref/source/arena.cc b/crawl-ref/source/arena.cc index 95855fc328..87ce24c573 100644 --- a/crawl-ref/source/arena.cc +++ b/crawl-ref/source/arena.cc @@ -46,6 +46,7 @@ namespace arena int trials_done = 0; int team_a_wins = 0; bool allow_summons = true; + std::string arena_type = ""; faction faction_a(true); faction faction_b(false); @@ -123,7 +124,12 @@ namespace arena const unwind_stringset mtags(you.uniq_map_tags); const unwind_stringset mnames(you.uniq_map_names); - const map_def *map = random_map_for_tag("arena_level", false); + std::string map_name = "arena_" + arena_type; + const map_def *map = random_map_for_tag(map_name.c_str(), false); + + if (!map) + throw make_stringf("No arena maps named \"%s\"", arena_type.c_str()); + ASSERT(map); dgn_place_map(map, true, true); @@ -167,6 +173,11 @@ namespace arena && !total_trials) total_trials = ntrials; + arena_type = strip_tag_prefix(spec, "arena:"); + + if (arena_type.empty()) + arena_type = "default"; + std::vector<std::string> factions = split_string(" v ", spec); if (factions.size() == 1) @@ -195,7 +206,6 @@ namespace arena unwind_var< FixedVector<bool, NUM_MONSTERS> > uniq(you.unique_creatures); - parse_monster_spec(); coord_def place_a(dgn_find_feature_marker(DNGN_STONE_STAIRS_UP_I)); coord_def place_b(dgn_find_feature_marker(DNGN_STONE_STAIRS_DOWN_I)); faction_a.place_at(place_a); @@ -275,6 +285,7 @@ namespace arena throw (std::string) { //no_messages mx; + parse_monster_spec(); setup_level(); // Monster set up may block waiting for matchups. diff --git a/crawl-ref/source/dat/arena.des b/crawl-ref/source/dat/arena.des index 1e4a708a83..aa500d1f0f 100644 --- a/crawl-ref/source/dat/arena.des +++ b/crawl-ref/source/dat/arena.des @@ -1,5 +1,5 @@ -NAME: arena_level -TAGS: arena_level no_mons_gen +NAME: arena_default +TAGS: arena_default no_mons_gen MARKER: A = feat: stone_stairs_up_i MARKER: B = feat: stone_stairs_down_i MARKER: O = feat: escape_hatch_up @@ -24,3 +24,308 @@ X.......A.......X X...............X XXXXXXXXXXXXXXXXX ENDMAP + +# Metal-lined vault, when electricity reflection is important +NAME: arena_metal +TAGS: arena_metal no_mons_gen +MARKER: A = feat: stone_stairs_up_i +MARKER: B = feat: stone_stairs_down_i +MARKER: O = feat: escape_hatch_up +SUBST: A = ., B = ., O = . +ORIENT: encompass +MAP +XXXXXXXXXXXXXXXXXXX +XvvvvvvvvvvvvvvvvvX +Xv...............vX +Xv.......B.......vX +Xv...............vX +Xv...............vX +Xv...............vX +Xv...............vX +Xv...............vX +Xv.......O.......vX +Xv...............vX +Xv...............vX +Xv...............vX +Xv...............vX +Xv...............vX +Xv.......A.......vX +Xv...............vX +XvvvvvvvvvvvvvvvvvX +XXXXXXXXXXXXXXXXXXX +ENDMAP +# Especially for immobile monsters... all locations are in LOS of each other +NAME: arena_small +TAGS: arena_small no_mons_gen +MARKER: A = feat: stone_stairs_up_i +MARKER: B = feat: stone_stairs_down_i +MARKER: O = feat: escape_hatch_up +SUBST: A = ., B = ., O = . +ORIENT: encompass +MAP +XXXXXXXXXXXXXXXXX +XvvvvvvvvvvvvvvvX +XvvvvvvvvvvvvvvvX +XvvvvvvvvvvvvvvvX +Xvvvvvv.B.vvvvvvX +Xvvvv.......vvvvX +Xvvvv.......vvvvX +Xvvv.........vvvX +Xvvv....O....vvvX +Xvvv.........vvvX +Xvvvv.......vvvvX +Xvvvv.......vvvvX +Xvvvvvv.A.vvvvvvX +XvvvvvvvvvvvvvvvX +XvvvvvvvvvvvvvvvX +XvvvvvvvvvvvvvvvX +XXXXXXXXXXXXXXXXX +ENDMAP + +# for fine-tuning interactions +NAME: arena_narrow +TAGS: arena_narrow no_mons_gen +MARKER: A = feat: stone_stairs_up_i +MARKER: B = feat: stone_stairs_down_i +MARKER: O = feat: escape_hatch_up +SUBST: A = ., B = ., O = . +ORIENT: encompass +MAP +XXXXXXXXXXXXXXXXX +XXXXXX.....XXXXXX +XXXXXX..B..XXXXXX +XXXXXX.....XXXXXX +XXXXXX.....XXXXXX +XXXXXX.....XXXXXX +XXXXXX.....XXXXXX +XXXXXX.....XXXXXX +XXXXXX..O..XXXXXX +XXXXXX.....XXXXXX +XXXXXX.....XXXXXX +XXXXXX.....XXXXXX +XXXXXX.....XXXXXX +XXXXXX.....XXXXXX +XXXXXX..A..XXXXXX +XXXXXX.....XXXXXX +XXXXXXXXXXXXXXXXX +ENDMAP + +NAME: arena_corridor +TAGS: arena_corridor no_mons_gen +MARKER: A = feat: stone_stairs_up_i +MARKER: B = feat: stone_stairs_down_i +MARKER: O = feat: escape_hatch_up +SUBST: A = ., B = ., O = . +ORIENT: encompass +MAP +XXXXXXXXXXXXXXXXX +XXXXXXXXBXXXXXXXX +XXXXXXXX.XXXXXXXX +XXXXXXXX.XXXXXXXX +XXXXXXXX.XXXXXXXX +XXXXXXXX.XXXXXXXX +XXXXXXXX.XXXXXXXX +XXXXXXXX.XXXXXXXX +XXXXXXXXOXXXXXXXX +XXXXXXXX.XXXXXXXX +XXXXXXXX.XXXXXXXX +XXXXXXXX.XXXXXXXX +XXXXXXXX.XXXXXXXX +XXXXXXXX.XXXXXXXX +XXXXXXXX.XXXXXXXX +XXXXXXXXAXXXXXXXX +XXXXXXXXXXXXXXXXX +ENDMAP + +NAME: arena_pillarred +TAGS: arena_pillarred no_mons_gen +MARKER: A = feat: stone_stairs_up_i +MARKER: B = feat: stone_stairs_down_i +MARKER: O = feat: escape_hatch_up +SUBST: A = ., B = ., O = G +ORIENT: encompass +MAP +XXXXXXXXXXXXXXXXX +X...............X +X.G...G.B.G...G.X +X...............X +X...G...G...G...X +X...............X +X.G...G...G...G.X +X...............X +X...G...O...G...X +X...............X +X.G...G...G...G.X +X...............X +X...G...G...G...X +X...............X +X.G...G.A.G...G.X +X...............X +XXXXXXXXXXXXXXXXX +ENDMAP + +NAME: arena_lattice +TAGS: arena_lattice no_mons_gen +MARKER: A = feat: stone_stairs_up_i +MARKER: B = feat: stone_stairs_down_i +MARKER: O = feat: escape_hatch_up +SUBST: A = ., B = ., O = X +ORIENT: encompass +MAP +XXXXXXXXXXXXXXXXX +X...............X +X.X...X.B.X...X.X +X...............X +X...X...X...X...X +X...............X +X.X...X...X...X.X +X...............X +X...X...O...X...X +X...............X +X.X...X...X...X.X +X...............X +X...X...X...X...X +X...............X +X.X...X.A.X...X.X +X...............X +XXXXXXXXXXXXXXXXX +ENDMAP + +NAME: arena_river +TAGS: arena_river no_mons_gen no_pool_fixup +MARKER: A = feat: stone_stairs_up_i +MARKER: B = feat: stone_stairs_down_i +MARKER: O = feat: escape_hatch_up +SUBST: A = ., B = ., O = w +ORIENT: encompass +MAP +XXXXXXXXXXXXXXXXX +X...............X +X.......B.......X +X...............X +X...............X +Xw..............X +Xww.............X +Xwww....wwwww...X +X.wwwwwwOwwwwww.X +X...wwwww....wwwX +X.............wwX +X..............wX +X...............X +X...............X +X.......A.......X +X...............X +XXXXXXXXXXXXXXXXX +ENDMAP + +NAME: arena_swamp +TAGS: arena_swamp no_mons_gen +MARKER: A = feat: stone_stairs_up_i +MARKER: B = feat: stone_stairs_down_i +MARKER: O = feat: escape_hatch_up +SUBST: A = ., B = ., O = x +SUBST: . = w:30 W .:5 +SUBST: x = W .:5 +ORIENT: encompass +MAP +XXXXXXXXXXXXXXXXX +X........xx.....X +X.......B..x....X +X..........x....X +X..........x....X +X..........x....X +X.........x.....X +X........x......X +X.......O.......X +X......x........X +X.....x.........X +X....x..........X +X....x..........X +X....x..........X +X....x..A.......X +X.....xx........X +XXXXXXXXXXXXXXXXX +ENDMAP + +NAME: arena_lava +TAGS: arena_lava no_mons_gen +MARKER: A = feat: stone_stairs_up_i +MARKER: B = feat: stone_stairs_down_i +MARKER: O = feat: escape_hatch_up +SUBST: A = ., B = ., O = x +SUBST: . = l:30 . +SUBST: x = . +ORIENT: encompass +MAP +XXXXXXXXXXXXXXXXX +X........xx.....X +X.......B..x....X +X..........x....X +X..........x....X +X..........x....X +X.........x.....X +X........x......X +X.......O.......X +X......x........X +X.....x.........X +X....x..........X +X....x..........X +X....x..........X +X....x..A.......X +X.....xx........X +XXXXXXXXXXXXXXXXX +ENDMAP + +NAME: arena_baffles +TAGS: arena_baffles no_mons_gen +MARKER: A = feat: stone_stairs_up_i +MARKER: B = feat: stone_stairs_down_i +MARKER: O = feat: escape_hatch_up +SUBST: A = ., B = ., O = X +ORIENT: encompass +MAP +XXXXXXXXXXXXXXXXX +X...X...B...X...X +X.X.X.X.X.X.X.X.X +X.......X.......X +X.XXXXX.X.XXXXX.X +X.......X.......X +X.X.X.X.X.X.X.X.X +X...X.......X...X +XXX.X.XXOXX.X.XXX +X...X.......X...X +X.X.X.X.X.X.X.X.X +X.......X.......X +X.XXXXX.X.XXXXX.X +X.......X.......X +X.X.X.X.X.X.X.X.X +X...X...A...X...X +XXXXXXXXXXXXXXXXX +ENDMAP + +NAME: arena_glassbaffles +TAGS: arena_glassbaffles no_mons_gen +MARKER: A = feat: stone_stairs_up_i +MARKER: B = feat: stone_stairs_down_i +MARKER: O = feat: escape_hatch_up +SUBST: A = ., B = ., O = o +ORIENT: encompass +MAP +ooooooooooooooooo +o...o...B...o...o +o.o.o.o.o.o.o.o.o +o.......o.......o +o.ooooo.o.ooooo.o +o.......o.......o +o.o.o.o.o.o.o.o.o +o...o.......o...o +ooo.o.ooOoo.o.ooo +o...o.......o...o +o.o.o.o.o.o.o.o.o +o.......o.......o +o.ooooo.o.ooooo.o +o.......o.......o +o.o.o.o.o.o.o.o.o +o...o...A...o...o +ooooooooooooooooo +ENDMAP |