############################################################################## # # Bailey! (Zaba and dpeg) # # A small portal vault fixated on nasty weapons. (Axes and polearms by now.) # Castle like layout, with inner bailey and moat. Medieval warfare themed. # # Currently, the depth is fixed at D:7-16 and Orc. It would be nice if the # portal vault could also appear deeper, with a harder monster set. For # example, draconians would be an option. # ############################################################################## {{ function bailey_portal(e, ptype) local desc_long if ptype == 'axe' then desc_long = [[This portal leads to a forbidden dungeon of the mad axeman. You know this because of the black pennant bearing axes in saltire. It seems as if you had better enter the portal before the standard is lowered to the ground.]] else desc_long = [[This portal leads to a forbidden dungeon of the mad chevalier. You know this because of the black pennant bearing polearms in saltire. It seems as if you had better enter the portal before the standard is lowered to the ground.]] end desc_long = string.gsub(desc_long, "\n%s+", "\n") local timeout_turns = crawl.random_range(1500, 2000) local messager = timed_msg { visible = true, -- $F{xxx} will be substituted with the 'entity' property of the timed -- marker, or with the desc property (if entity is not set). messages = time_messages(timeout_turns, "$F{The} is being lowered.", "$F{The} is being lowered.", "$F{The} is being lowered.", "$F{The} is close to the ground.") } e.lua_marker('O', timed_marker { disappear = "The portal closes with a thud.", desc = "flagged portal", desc_long = desc_long, entity = 'oriflamme', dst = "bailey_" .. ptype, dstname = "bailey", dstorigin = "in the bailey", overmap = "flagged portal", turns = timeout_turns, floor = "stone_arch", msg = messager }) e.kfeat("O = enter_portal_vault") e.colour("O = lightred") end function bailey_portal_axe(e) bailey_portal(e, 'axe') end function bailey_portal_polearm(e) bailey_portal(e, 'polearm') end -- colours and milestone function bailey_setup(e) e.kfeat("< = exit_portal_vault") e.colour("< = darkgrey") e.lrockcol("lightgrey") e.lfloorcol("white") crawl.mark_milestone("br.enter", "entered a Bailey.") end -- In order to avoid repeating the lengthy monster definitions: -- Axes. function axe_returning(e) e.mons("generate_awake kobold ; hand axe ego:returning /\ generate_awake goblin ; hand axe ego:returning") end function kobold_axe_returning(e) e.mons("generate_awake kobold ; hand axe ego:returning") end function easy_axe_fighter(e) e.mons("w:3 orc warrior ; hand axe race:orcish w:6 | war axe race:orcish w:1 /\ w:7 gnoll ; hand axe w:6 | war axe w:1 /\ w:10 hobgoblin ; hand axe w:6 | war axe w:1 /\ w:10 orc ; hand axe race:orcish w:6 | war race:orcish axe w:1 /\ w:12 goblin ; hand axe w:6 | war axe w:1") end function hard_axe_fighter(e) e.mons("w:8 orc warrior ; war axe race:orcish w:10 |\ broad axe race:orcish w:2 |\ battleaxe race:orcish w:1 /\ w:2 orc knight ; war axe race:orcish w:10 |\ broad axe race:orcish w:2 |\ battleaxe race:orcish w:1") end -- Polearms. function orc_with_reaching(e) e.mons("orc ; \ spear ego:reaching | spear ego:reaching race:orcish |\ trident ego:reaching | trident ego:reaching race:orcish |\ halberd ego:reaching | halberd ego:reaching race:orcish .\ scale mail race:orcish | scale mail |\ ring mail race:orcish | ring mail |\ splint mail race:orcish | splint mail") end function orc_warrior_with_reaching(e) e.mons("orc warrior ; \ spear w:5 ego:reaching | spear w:5 ego:reaching race:orcish |\ trident w:5 ego:reaching | trident w:5 ego:reaching race:orcish |\ halberd ego:reaching | halberd ego:reaching race:orcish |\ glaive ego:reaching | glaive ego:reaching race:orcish |\ bardiche w:1 ego:reaching | bardiche w:1 ego:reaching race:orcish .\ scale mail race:orcish | scale mail |\ ring mail race:orcish | ring mail |\ splint mail race:orcish | splint mail |\ banded mail race:orcish | banded mail |\ plate mail race:orcish | plate mail |\ crystal plate mail w:1") end function orc_knight_with_reaching(e) e.mons("orc knight ; \ trident w:5 ego:reaching | trident w:5 ego:reaching race:orcish |\ halberd ego:reaching | halberd ego:reaching race:orcish |\ glaive ego:reaching | glaive ego:reaching race:orcish |\ bardiche w:1 ego:reaching | bardiche w:1 ego:reaching race:orcish .\ ring mail race:orcish | ring mail |\ splint mail race:orcish | splint mail |\ banded mail race:orcish | banded mail |\ plate mail race:orcish | plate mail |\ crystal plate mail w:1") end -- defined but not used, since the depth for the current entry vaults is 7-16 function orc_warlord_with_reaching(e) e.mons("orc warlord ; \ halberd ego:reaching | halberd ego:reaching race:orcish |\ glaive ego:reaching | glaive ego:reaching race:orcish |\ bardiche w:1 ego:reaching | bardiche w:1 ego:reaching race:orcish . \ splint mail race:orcish | splint mail |\ banded mail race:orcish | banded mail |\ plate mail race:orcish | plate mail |\ crystal plate mail w:1") end }} # Basic bailey entries ########################################## default-depth: D:7-16, Orc NAME: bailey_entry_dummy TAGS: bailey_entry transparent trowel_portal allow_dup : local rnd = crawl.random2(2) : if rnd == 0 then : bailey_portal_axe(_G) : elseif rnd == 1 then : bailey_portal_polearm(_G) : end MAP O ENDMAP NAME: enter_bailey_1 WEIGHT: 1 TAGS: uniq_bailey : local rnd = crawl.random2(2) : if rnd == 0 then : bailey_portal_axe(_G) : elseif rnd == 1 then : bailey_portal_polearm(_G) : end MAP O ENDMAP NAME: enter_bailey_2 TAGS: uniq_bailey : local rnd = crawl.random2(2) : if rnd == 0 then ITEM: hand axe : bailey_portal_axe(_G) : elseif rnd == 1 then ITEM: halberd / spear : bailey_portal_polearm(_G) : end MAP ..... ..d.. .dOd. ..d.. ..... ENDMAP NAME: enter_bailey_3 TAGS: uniq_bailey : local rnd = crawl.random2(2) : if rnd == 0 then MONS: goblin ; hand axe : bailey_portal_axe(_G) : elseif rnd == 1 then MONS: goblin ; spear : bailey_portal_polearm(_G) : end MAP ......... .wwwwwww. .wcccccw. .wc.1.cw. .wc1O1cw. .wc.1.cw. .wcc.ccw. .wwwWwww. ......... ENDMAP NAME: enter_bailey_4 WEIGHT: 5 TAGS: uniq_bailey : local rnd = crawl.random2(2) : if rnd == 0 then MONS: goblin ; hand axe / hobgoblin ; hand axe / orc ; hand axe race:orcish MONS: goblin ; hand axe ego:returning / hobgoblin ; hand axe ego:returning /\ orc ; hand axe race:orcish ego:returning : bailey_portal_axe(_G) : elseif rnd == 1 then MONS: goblin ; spear / hobgoblin ; spear / orc ; spear race:orcish MONS: goblin ; spear ego:reaching / hobgoblin ; hand axe ego:reaching /\ orc ; spear race:orcish ego:reaching : bailey_portal_polearm(_G) : end SUBST: 1 = 122 MAP ........... .wwwwwwwww. .wcccccccw. .wc>...Ocw. .wc11111cw. .wcc+++ccw. .wwwwwwwww. .wwwwwwwww. ........... ENDMAP NAME: enter_bailey_5 TAGS: uniq_bailey : local rnd = crawl.random2(2) : if rnd == 0 then MONS: goblin ; hand axe ego:returning : bailey_portal_axe(_G) : elseif rnd == 1 then MONS: goblin ; hand axe ego:reaching : bailey_portal_polearm(_G) : end MAP ....... .wwwww. .w1>1w. .w.O.w. .w1.1w. .wwwww. ....... ENDMAP NAME: enter_bailey_6 WEIGHT: 3 COLOUR: ; : red / lightred SUBST: ; = . TAGS: uniq_bailey no_rotate : local rnd = crawl.random2(2) : if rnd == 0 then ITEM: war axe / battleaxe : bailey_portal_axe(_G) : elseif rnd == 1 then ITEM: glaive / bardiche : bailey_portal_polearm(_G) : end MAP .......nnn....... ..nnn..ndn..nnn.. ..ndn..nnn..ndn.. ..nnn.......nnn.. ................. nnn....;;;....nnn ndn....;O;....ndn nnn....;;;....nnn ................. ..nnn.......nnn.. ..ndn..nnn..ndn.. ..nnn..ndn..nnn.. .......nnn....... ENDMAP # They were just having a party. NAME: enter_bailey_7 WEIGHT: 3 : local rnd = crawl.random2(2) : if rnd == 0 then MONS: gnoll ; hand axe / goblin ; hand axe : bailey_portal_axe(_G) : elseif rnd == 1 then MONS: gnoll ; spear / goblin ; spear : bailey_portal_polearm(_G) : end SUBST: . = ...;! COLOUR: ; = red KITEM: ! = potion of confusion w:2 / potion of water w:1 KFEAT: ! = floor SUBST: ; = . MAP x@x xxxxxxx x.x x...1.x x.xxxx.1...x x....+..O..x x.xxxx...1.x x.x x.1...x x@x xxxxxxx ENDMAP NAME: enter_bailey_8 WEIGHT: 3 COLOUR: n = red : local rnd = crawl.random2(2) : if rnd == 0 then ITEM: war axe / battleaxe : bailey_portal_axe(_G) : elseif rnd == 1 then ITEM: glaive / bardiche : bailey_portal_polearm(_G) : end MAP xxxxxxxxxxxxxxxxxxx x.................@ ccccccnnncccccnnncc c.....ndn.....ndnOc c.nnn.nnn.nnn.nnn.c @+.ndn.....ndn.....c ccnnncccccnnncccccc x.................@ xxxxxxxxxxxxxxxxxxx ENDMAP # The actual portal vaults ##################################### default-depth: ########## # # # AXES # # # ########## ############################################################################ # A bailey. # # It's not human and it's got an axe. # -- The Prey (1981) # # Loot consists of approximately six good items. NAME: bailey_axe_1 WEIGHT: 10 ORIENT: encompass TAGS: bailey_axe no_rotate no_item_gen no_monster_gen LFLAGS: no_tele_control # ITEM: any good_item w:10 / nothing w:5 # : kobold_axe_returning(_G) : easy_axe_fighter(_G) : hard_axe_fighter(_G) # # Starting room flavour. You cannot actually get the axes. SUBST: Y = ccn SUBST: X : ccn KITEM: Z = good_item broad axe w:5 / broad axe / war axe /\ good_item war axe w:5 / good_item executioner's axe w:1 KFEAT: Z = teleport trap # # Traps are alarm on the entrance and alarm/net near the loot. Yes, I want # everyone to wake up. KFEAT: ~ = alarm trap / floor # # There is only one way up. You have to pass near the axe-throwing kobolds # twice. This is intended. Teleportation traps ensure you won't get # stranded. NSUBST: s = 1:T / *:. NSUBST: t = 1:T / *:. KFEAT: T = teleport trap : bailey_setup(_G) MAP ccccccccc ccccZcccc ccccYcccc ccc~A~ccc cZX~~~XZc ccc~<~ccc cccccc+cccccc ct1..w.w..1sc c=cccw.wccc=c ct1..w.w..1sc c=cccw.wccc=c ct1..w.w..1sc c=cccw.wccc=c ct1..w.w..1sc c=cccw.wccc=c ct1..w.w..1sc c=cccw.wccc=c ct1..w.w..1sc c=cccw.wccc=c ct1..w.w..1sc c=cccw.wccc=c ct1..w.w..1sc cccccc+cccccc c...c c.3.c c222c cccccc+cccccc cd.2c...c2.dc cd.23.I.32.dc cd.2c...c2.dc cccccc3cccccc c222c c...c cdddc ccccc ENDMAP ############################################################################ # Bailey 2. # # Apart from weapons and armours left by the monsters, there are about 10 # potions useful in battle. If those monsters drink them first, of course... # And there is always one stack of very good potions NAME: bailey_axe_2 ORIENT: encompass TAGS: bailey_axe no_rotate MONS: generate_awake kobold ; hand axe ego:returning /\ generate_awake goblin ; hand axe ego:returning MONS: gnoll ; halberd ego:reaching | halberd ego:electrocution MONS: orc warrior / orc knight NSUBST: e = 1:e / *:d ITEM: potion of healing / potion of heal wounds / potion of magic / nothing /\ potion of might w:5 / potion of speed w:2 / potion of berserk rage w:3 ITEM: potion of experience q:2 w:30 / potion of cure mutation q:3 w:30 /\ potion of gain intelligence q:8 / potion of gain strength q:8 /\ potion of gain dexterity q:8 : bailey_setup(_G) MAP ccc ccc ccccc ccc ccc cAccc1ccc2+2ccc1ccc1c cc+cc=cc+ccc+cc=cc+cc cc.....cc cc.....cc ccc.....ccccc.....ccc c1=..<..=1c1=..T..=1c ccc.....ccccc.....ccc cc....dcc ccd....cc cc+cc=cc+ccc+cc=cc+cc c1ccc1ccc2c2ccc1ccc2c ccc ccc ccncc ccc c+c c1ccc1ccc2c2ccc1ccc2c cc+cc=cc+ccc+cc=cc+cc cce.e.ecc ccd....cc ccc.e2e.ccccc.....ccc c1=e2U3e=1c1=..Y..=1c ccc.e2e.ccccc.....ccc cce.e.ecc cc.....cc cc+cc=cc+ccc+cc=cc+cc c