summaryrefslogtreecommitdiffstats
path: root/crawl-ref
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-08-12 15:57:40 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-08-12 15:57:40 +0000
commit912e177812cd2c868f888b3111fc51f860d4ce7a (patch)
tree36eff0dfde88b86d634993f536225bc4ee6373cd /crawl-ref
parenta42060983aa972a68cfc8feb6d135b44d7f2ba83 (diff)
downloadcrawl-ref-912e177812cd2c868f888b3111fc51f860d4ce7a.tar.gz
crawl-ref-912e177812cd2c868f888b3111fc51f860d4ce7a.zip
Bazaar updates (David).
Mark bazaar entry points using feature markers so the player enters at the right place even if the bazaar uses stone arches as decorative elements. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1992 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref')
-rw-r--r--crawl-ref/source/dat/bazaar.des402
-rw-r--r--crawl-ref/source/dungeon.cc13
2 files changed, 386 insertions, 29 deletions
diff --git a/crawl-ref/source/dat/bazaar.des b/crawl-ref/source/dat/bazaar.des
index fc76a22748..38d59874d6 100644
--- a/crawl-ref/source/dat/bazaar.des
+++ b/crawl-ref/source/dat/bazaar.des
@@ -79,7 +79,7 @@ NAME: bzr_entry_003
TAGS: bzr_entry
ORIENT: float
MONS: human, orc, goblin, kobold
-SUBST: . = .:210 1
+SUBST: . = .:150 1
SHUFFLE: 1234
MARKER: O = lua:bazaar_portal()
MAP
@@ -91,6 +91,52 @@ MAP
ENDMAP
###############################################################################
+# Safe
+NAME: bzr_entry_004
+TAGS: bzr_entry
+ORIENT: float
+MARKER: O = lua:bazaar_portal()
+MAP
+ xxxxx
+xx...xx
++..O..x
+xx...xx
+ xxxxx
+ENDMAP
+
+###############################################################################
+# Safe 2
+NAME: bzr_entry_005
+TAGS: bzr_entry
+ORIENT: float
+SHUFFLE: wlW
+MARKER: O = lua:bazaar_portal()
+MAP
+ wwwww
+wwwwwww
+ww<O>ww
+wwwwwww
+ wwwww
+ENDMAP
+
+###############################################################################
+# Portal along the road
+NAME: bzr_entry_006
+TAGS: bzr_entry
+ORIENT: float
+SHUFFLE: XU, TUV
+SUBST: X=.
+MARKER: O = lua:bazaar_portal()
+MAP
+ xxx
+ xxOxx
+xxx.X.xxx
+.U.....U.
+xxxxxxxxx
+ENDMAP
+
+
+###############################################################################
# Bazaar layouts.
#
# "encompass" levels are recommended, and can be as small or large as you like.
@@ -105,20 +151,27 @@ ENDMAP
NAME: bazaar_general_marketplace
TAGS: bazaar
+FLAGS: no_rotate
ORIENT: encompass
KFEAT: A = any shop
CHANCE: 30
: bazaar_message(_G)
MAP
-xxxxxxxxx
-xxxx>xxxx
-xxx...xxx
-xx..A..xx
-x<.A.A.>x
-xx..A..xx
-xxx...xxx
-xxxx>xxxx
-xxxxxxxxx
+xxxxxxxxxxxxxxx
+xxxxxxx>xxxxxxx
+xxxxxx...xxxxxx
+xxxxx.....xxxxx
+xxxx...A...xxxx
+xxx.........xxx
+xx...........xx
+x<..A.....A..>x
+xx...........xx
+xxx.........xxx
+xxxx...A...xxxx
+xxxxx.....xxxxx
+xxxxxx...xxxxxx
+xxxxxxx>xxxxxxx
+xxxxxxxxxxxxxxx
ENDMAP
NAME: bazaar_outfitter
@@ -147,37 +200,328 @@ ENDMAP
NAME: bazaar_mystics
TAGS: bazaar
ORIENT: encompass
-SHUFFLE: AB, def, xw/vl
+SHUFFLE: AB, def, wlb
KFEAT: A = scroll shop / book shop / book shop
KFEAT: B = jewellery shop
ITEM: any jewellery / good_item any jewellery
ITEM: any book / good_item any book, any staff
-SUBST: w:w.l, x:b, c:., v=bl, d=.d, e=.e, f=.f
+SUBST: d=.d, e=.e, f=.f
: bazaar_message(_G)
MAP
-xxxxxxxxxxxxx
-xxxxxxxwwwxxx
-xxxwwx....Axx
-x<...+.def.>x
-xxxwwx....Bxx
-xxxxxxxwwwxxx
-xxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxwwwwwxxxxxx
+xxxxxxxxxxwwww...wwwxxxx
+xwwwwwwwwww....A...wwxxx
+xw<......d+....e....+f>x
+xwwwwwwwwww....B...wwxxx
+xxxxxxxxxxwwww...wwwxxxx
+xxxxxxxxxxxxxwwwwwxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP
NAME: bazaar_wands
TAGS: bazaar
+FLAGS: no_rotate
ORIENT: encompass
KFEAT: A = wand shop
-ITEM: any wand
+KFEAT: B = distillery shop
+#ITEM: any wand, cursed ring of levitation
+ITEM: any wand, ring of levitation
+SHUFFLE: leAB/wdBA
+: bazaar_message(_G)
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxx......>......xxxxxxxxxx
+xxxx.........................xxxx
+xx.....l.................l.....xx
+xx......l...............l.......x
+xl....A.ll.............ll.A....lx
+xl......l...............l......lx
+xll...........................llx
+xllll.......................llllx
+xlllllll.................lllllllx
+xllllllllllll.......llllllllllllx
+xlllllllllllllllllllllllllllllllx
+x...lllllllllllllllllllllllll...x
+x........lllllllllllllll........x
+x............lllllll............x
+x..............lll..............x
+xxxxx.......................xxxxx
+x...x.......................x...x
+x.B.+.......................+.B.x
+x...x..........<e>..........x...x
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+NAME: bazaar_row
+TAGS: bazaar
+FLAGS: no_rotate
+ORIENT: encompass
+SHUFFLE: Aa/Bb/Cc/Dd/Ee/Ff
+SHUFFLE: Aa/Zz, Bb/Yy, Cc/Rr, Dd/Ss
+KFEAT: A = any shop / antique weapon shop
+KFEAT: B = any shop / antique armour shop
+KFEAT: C = any shop / wand shop
+KFEAT: D = any shop / jewellery shop
+KFEAT: E = any shop / weapon shop / armour shop
+KFEAT: F = any shop / book shop / scroll shop
+SUBST: a=T, b=T, c=T, d=T, e=T, f=T
+SUBST: z=V, y=V, r=V, s=V
+KFEAT: Z = stone_arch
+KFEAT: Y = stone_arch
+KFEAT: R = stone_arch
+KFEAT: S = stone_arch
+SHUFFLE: lw
+SUBST: w:wWx, l:lx
+: bazaar_message(_G)
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxAxxxxxxxxxxxCxxxxxxxxxxxExxxxxxxxxxxxxxxx
+xxx.....xxxxxxx...xxxxxxxxx...xxxxxxxxx...xxxxxxx.....xxx
+xx..www..xxxxxx.a.xxxxxxxxx.c.xxxxxxxxx.e.xxxxxx..lll..xx
+x<.wwwww..+...........+...........+...........+..lllll.>x
+xx..www..xxxxxx.b.xxxxxxxxx.d.xxxxxxxxx.f.xxxxxx..lll..xx
+xx......xxxxxxx...xxxxxxxxx...xxxxxxxxx...xxxxxxx.....xxx
+xxxxxxxxxxxxxxxxBxxxxxxxxxxxDxxxxxxxxxxxFxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+NAME: bazaar_circle_1
+CHANCE: 2
+TAGS: bazaar
+FLAGS: no_rotate
+ORIENT: encompass
+SHUFFLE: ABCD, EFGH
+SUBST: H=>, A=T, B=T
+KFEAT: C = any shop
+KFEAT: D = any shop
+KFEAT: E = any shop
+KFEAT: F = any shop
+KFEAT: G = any shop
+: bazaar_message(_G)
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xx...xxxxxxxxxxxxxxxxxxxxxxxxx...xx
+x.....xxxxxxxxxx...xxxxxxxxxx.....x
+x..E..+.......+.....+.......+..H..x
+x.....xxxxxxxxx..D..xxxxxxxxx.....x
+xx...xxxxx....+.....+....xxxxx...xx
+xxx+xxx....xxxxx...xxxxx....xxx+xxx
+xxx.xx..xxxxxxxxx+xxxxxxxxx..xx.xxx
+xxx.x..xxxxxxxxxx+xxxxxxxxxx..x.xxx
+xxx+x+xxxxxxxxxx...xxxxxxxxxx+x+xxx
+xxx...xxxxxxxx.......xxxxxxxx...xxx
+xx.....xxxxxx.........xxxxxx.....xx
+xx..A..xxxxxT....<....Txxxxx..B..xx
+xx.....xxxxxx.........xxxxxx.....xx
+xxx...xxxxxxxx.......xxxxxxxx...xxx
+xxx+x+xxxxxxxxxx...xxxxxxxxxx+x+xxx
+xxx.x..xxxxxxxxxx+xxxxxxxxxx..x.xxx
+xxx.xx..xxxxxxxxx+xxxxxxxxx..xx.xxx
+xxx+xxx....xxxxx...xxxxx....xxx+xxx
+xx...xxxxx....+.....+....xxxxx...xx
+x.....xxxxxxxxx..C..xxxxxxxxx.....x
+x..G..+.......+.....+.......+..F..x
+x.....xxxxxxxxxx...xxxxxxxxxx.....x
+xx...xxxxxxxxxxxxxxxxxxxxxxxxx...xx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+NAME: bazaar_circle_2
+CHANCE: 2
+TAGS: bazaar
+FLAGS: no_rotate
+ORIENT: encompass
+SHUFFLE: EFGH
+SUBST: H=>, D=T, C=T
+KFEAT: A = any shop
+KFEAT: B = any shop
+KFEAT: E = any shop
+KFEAT: F = any shop
+KFEAT: G = any shop
+: bazaar_message(_G)
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xx...xxxxxxxxxxxxxxxxxxxxxxxxx...xx
+x.....xxxxxxxxxx...xxxxxxxxxx.....x
+x..H..xxxxxxxxx.....xxxxxxxxx..E..x
+x.....xxxxxxxxx..D..xxxxxxxxx.....x
+xx...xxxxx....+.....+....xxxxx...xx
+xxx+xxx....xxxxx...xxxxx....xxx+xxx
+xxx.xx..xxxxxxxxx+xxxxxxxxx..xx.xxx
+xxx.x..xxxxxxxxxx+xxxxxxxxxx..x.xxx
+xxx+x+xxxxxxxxxx...xxxxxxxxxx+x+xxx
+xxx...xxxxxxxx.......xxxxxxxx...xxx
+xx.....xxxxxx.........xxxxxx.....xx
+xx..A..xxxxxT....<....Txxxxx..B..xx
+xx.....xxxxxx.........xxxxxx.....xx
+xxx...xxxxxxxx.......xxxxxxxx...xxx
+xxx+x+xxxxxxxxxx...xxxxxxxxxx+x+xxx
+xxx.x..xxxxxxxxxx+xxxxxxxxxx..x.xxx
+xxx.xx..xxxxxxxxx+xxxxxxxxx..xx.xxx
+xxx+xxx....xxxxx...xxxxx....xxx+xxx
+xx...xxxxx....+.....+....xxxxx...xx
+x.....xxxxxxxxx..C..xxxxxxxxx.....x
+x..G..xxxxxxxxx.....xxxxxxxxx..F..x
+x.....xxxxxxxxxx...xxxxxxxxxx.....x
+xx...xxxxxxxxxxxxxxxxxxxxxxxxx...xx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+NAME: bazaar_circle_3
+CHANCE: 2
+TAGS: bazaar
+FLAGS: no_rotate
+ORIENT: encompass
+SHUFFLE: EFGH
+SUBST: A=>, D=T, C=T
+KFEAT: B = any shop
+KFEAT: H = any shop
+KFEAT: E = any shop
+KFEAT: F = any shop
+KFEAT: G = any shop
+: bazaar_message(_G)
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xx...xxxxxxxxxxxxxxxxxxxxxxxxx...xx
+x.....xxxxxxxxxx...xxxxxxxxxx.....x
+x..H..+.......+.....+.......+..E..x
+x.....xxxxxxxxx..D..xxxxxxxxx.....x
+xx...xxxxxxxxxx.....xxxxxxxxxx...xx
+xxx+xxxxxxxxxxxx...xxxxxxxxxxxx+xxx
+xxx.xxxxxxxxxxxxx+xxxxxxxxxxxxx.xxx
+xxx.xxxxxxxxxxxxx+xxxxxxxxxxxxx.xxx
+xxx+xxxxxxxxxxxx...xxxxxxxxxxxx+xxx
+xxx...xxxxxxxx.......xxxxxxxx...xxx
+xx.....xxxxxx.........xxxxxx.....xx
+xx..A..xxxxxT....<....Txxxxx..B..xx
+xx.....xxxxxx.........xxxxxx.....xx
+xxx...xxxxxxxx.......xxxxxxxx...xxx
+xxx+xxxxxxxxxxxx...xxxxxxxxxxxx+xxx
+xxx.xxxxxxxxxxxxx+xxxxxxxxxxxxx.xxx
+xxx.xxxxxxxxxxxxx+xxxxxxxxxxxxx.xxx
+xxx+xxxxxxxxxxxx...xxxxxxxxxxxx+xxx
+xx...xxxxxxxxxx.....xxxxxxxxxx...xx
+x.....xxxxxxxxx..C..xxxxxxxxx.....x
+x..G..+.......+.....+.......+..F..x
+x.....xxxxxxxxxx...xxxxxxxxxx.....x
+xx...xxxxxxxxxxxxxxxxxxxxxxxxx...xx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+NAME: bazaar_circle_4
+CHANCE: 1
+TAGS: bazaar
+FLAGS: no_rotate
+ORIENT: encompass
+SHUFFLE: ABCDEF
+KFEAT: A = any shop
+KFEAT: B = any shop
+KFEAT: E = any shop
+KFEAT: C = any shop
+KFEAT: D = any shop
+: bazaar_message(_G)
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xx...xxxxxxxxxxxxxxxxxxxxxxxxx...xx
+x.....xxxxxxxxxx...xxxxxxxxxx.....x
+x..C..+.......+.....xxxxxxxxx..T..x
+x.....xxxxxxxxx..D..xxxxxxxxx.....x
+xx...xxxxxxxxxx.....xxxxxxxxxx...xx
+xxx+xxxxxx.xxxxx...xxxxxxxxxxxx+xxx
+xxx.xxxxxxxxxxxxx+xxxxxxxxxxxxx.xxx
+xxx.xxxxxxxxxxxxx+xxxxxxxxxxxxx.xxx
+xxx+xxxxxxxxxxxx...xxxxxxxxxxxx+xxx
+xxx...xxxxxxxx.......xxxxxxxx...xxx
+xx.....xxxxxx.........xxxxxx.....xx
+xx..A..xxxxxT....<....Txxxxx..>..xx
+xx.....xxxxxx.........xxxxxx.....xx
+xxx...xxxxxxxx.......xxxxxxxx...xxx
+xxx+xxxxxxxxxxxx...xxxxxxxxxxxx+xxx
+xxx.xxxxxxxxxxxxxTxxxxxxxxxxxxx.xxx
+xxx.xxxxxxxxxxxxxxxxxxxxxxxxxxx.xxx
+xxx+xxxxxx.xxxxx...xxxxxxxxxxxx+xxx
+xx...xxxxxxxxxx.....xxxxxxxxxx...xx
+x.....xxxxxxxxx..E..xxxxxxxxx.....x
+x..T..+.......+.....+.......+..B..x
+x.....xxxxxxxxxx...xxxxxxxxxx.....x
+xx...xxxxxxxxxxxxxxxxxxxxxxxxx...xx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+NAME: bazaar_circle_5
+CHANCE: 2
+TAGS: bazaar
+FLAGS: no_rotate
+ORIENT: encompass
+KFEAT: C = any shop
+KFEAT: D = any shop
+KFEAT: E = any shop
+KFEAT: F = any shop
+KFEAT: G = any shop
+: bazaar_message(_G)
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xx...xxxxxxxxxxxxxxxxxxxxxxxxx...xx
+x.....xxxxxxxxxx...xxxxxxxxxx.....x
+x..>..+.......+.....+.......+..E..x
+x.....xxxxxxxxx..D..xxxxxxxxx.....x
+xx...xxxxx....+.....+....xxxxx...xx
+xxxxxxx....xxxxx...xxxxx....xxxxxxx
+xxxxxx..xxxxxxxxxxxxxxxxxxx..xxxxxx
+xxxxx..xxxxxxxxxxTxxxxxxxxxx..xxxxx
+xxxxx+xxxxxxxxxx...xxxxxxxxxx+xxxxx
+xxx...xxxxxxxx.......xxxxxxxx...xxx
+xx.....xxxxxx.........xxxxxx.....xx
+xx..T..+....+....<....+....+..T..xx
+xx.....xxxxxx.........xxxxxx.....xx
+xxx...xxxxxxxx.......xxxxxxxx...xxx
+xxx+x+xxxxxxxxxx...xxxxxxxxxx+x+xxx
+xxx.x..xxxxxxxxxxTxxxxxxxxxx..x.xxx
+xxx.xx..xxxxxxxxxxxxxxxxxxx..xx.xxx
+xxx+xxx....xxxxx...xxxxx....xxx+xxx
+xx...xxxxx....+.....+....xxxxx...xx
+x.....xxxxxxxxx..C..xxxxxxxxx.....x
+x..G..xxxxxxxxx.....xxxxxxxxx..F..x
+x.....xxxxxxxxxx...xxxxxxxxxx.....x
+xx...xxxxxxxxxxxxxxxxxxxxxxxxx...xx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+NAME: bazaar_circle_6
+CHANCE: 3
+TAGS: bazaar
+FLAGS: no_rotate
+ORIENT: encompass
+KFEAT: A = any shop / antique armour shop
+KFEAT: B = any shop / antique weapon shop
+KFEAT: C = any shop / jewellery shop
+KFEAT: D = any shop / book shop
: bazaar_message(_G)
MAP
-xxxxxxxxxxx
-xx...>...xx
-x..A...A..x
-x.........x
-xllll.llllx
-x....>....x
-x..d...d..x
-xx...<...xx
-xxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxx...xxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxx.....xxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxx..D..xxxxxxxxxxxxxxx
+xxxxxxxxxx....+.....+....xxxxxxxxxx
+xxxxxxx....xxxxx...xxxxx....xxxxxxx
+xxxxxx..xxxxxxxxxxxxxxxxxxx..xxxxxx
+xxxxx..xxxxxxxxxx>xxxxxxxxxx..xxxxx
+xxxxx+xxxxxxxxxx...xxxxxxxxxx+xxxxx
+xxx...xxxxxxxx.......xxxxxxxx...xxx
+xx.....xxxxxx.........xxxxxx.....xx
+xx..A..xxxxxT....<....Txxxxx..B..xx
+xx.....xxxxxx.........xxxxxx.....xx
+xxx...xxxxxxxx.......xxxxxxxx...xxx
+xxxxx+xxxxxxxxxx...xxxxxxxxxx+xxxxx
+xxxxx..xxxxxxxxxx+xxxxxxxxxx..xxxxx
+xxxxxx..xxxxxxxxx+xxxxxxxxx..xxxxxx
+xxxxxxx....xxxxx...xxxxx....xxxxxxx
+xxxxxxxxxx....+.....+....xxxxxxxxxx
+xxxxxxxxxxxxxxx..C..xxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxx.....xxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxx...xxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc
index 471d802e6e..d40049a76c 100644
--- a/crawl-ref/source/dungeon.cc
+++ b/crawl-ref/source/dungeon.cc
@@ -1422,7 +1422,13 @@ static void fixup_bazaar_stairs()
if (grid_stair_direction(feat) == CMD_GO_DOWNSTAIRS)
grd[x][y] = DNGN_EXIT_PORTAL_VAULT;
else
+ {
grd[x][y] = DNGN_STONE_ARCH;
+ env_add_marker(
+ new map_feature_marker(
+ coord_def(x, y),
+ DNGN_STONE_ARCH));
+ }
}
}
}
@@ -6914,6 +6920,13 @@ coord_def dgn_find_nearby_stair(dungeon_feature_type stair_to_find,
return (pos);
}
+ if (stair_to_find == DNGN_STONE_ARCH)
+ {
+ const coord_def pos(dgn_find_feature_marker(stair_to_find));
+ if (in_bounds(pos) && grd(pos) == stair_to_find)
+ return (pos);
+ }
+
if (stair_to_find == DNGN_ENTER_LABYRINTH)
{
const coord_def pos(dgn_find_labyrinth_entry_point());