summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/arena.cc15
-rw-r--r--crawl-ref/source/dat/arena.des309
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