############################################################################## # # The Miniature Tomb (Zaba) # # # The Tomb en miniature tries to pose an unusual early challenge: many traps # and slow monsters, making the player choose between pressing on towards the # loot or leaving the vault. # # Flavour: Mini versions of Tomb:* and otherwise crypt like. # ############################################################################## {{ function minitomb_portal(e) 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, "Nearby sand pours into $F{the}.", "Nearby sand pours into $F{the}, lightly covering it.", "Nearby sand pours into $F{the}, greatly covering it.", "Nearby sand pours into $F{the}, almost completely blocking access.") } e.lua_marker('O', timed_marker { disappear = "The staircase has disappeared completely beneath the sand.", desc = "A sand-covered staircase", entity = 'staircase', dst = "minitomb", dstorigin = "in a tomb", overmap = "sand-covered staircase", turns = timeout_turns, floor = "floor", msg = messager }) e.kfeat("O = enter_portal_vault") e.colour("O = yellow") end -- Use the following line in destination maps after all SUBSTs -- : minitomb_setup_features(_G) -- Note that the function also defines < to be the exit portal. function minitomb_setup_features(e) e.kfeat("< = exit_portal_vault") e.colour("< = yellow") e.lrockcol("white") e.lfloorcol("yellow") e.lrocktile("wall_tomb") e.lfloortile("floor_tomb") end }} # Add the milestone. {{ function minitomb_milestone(e) crawl.mark_milestone("br.enter", "entered a Minitomb.") end }} #### Portal entry vaults. default-depth: D:4-8 NAME: enter_minitomb_1 TAGS: uniq_minitomb no_monster_gen SUBST: . = . Y:7 COLOUR: Y = yellow FTILE: Y = floor_tomb SUBST: Y = . : minitomb_portal(_G) MAP ..... ..... ..O.. ..... ..... ENDMAP NAME: enter_minitomb_2 TAGS: uniq_minitomb no_monster_gen COLOUR: ' = yellow FTILE: ' = floor_tomb SUBST: ' = . : minitomb_portal(_G) MAP ....... .cc=cc. .c'''c. .c'O'c. .c'''c. .ccccc. ....... ENDMAP NAME: enter_minitomb_3 TAGS: uniq_minitomb no_monster_gen SUBST: . = Y . COLOUR: Y = yellow FTILE: Y = floor_tomb SUBST: Y = . MONS: rat zombie / jackal zombie / worm zombie MONS: kobold zombie / goblin zombie / hobgoblin zombie MONS: orc zombie / gnoll zombie / human zombie SUBST: . = .:100 11 2 3 : minitomb_portal(_G) MAP ... .O. ... ENDMAP NAME: enter_minitomb_4 TAGS: uniq_minitomb no_monster_gen COLOUR: 1 = yellow, ' = yellow, x = white MONS: rat zombie / quokka zombie / goblin zombie FTILE: 1 = floor_tomb, ' = floor_tomb, x = floor_tomb, O = floor_tomb RTILE: x = wall_tomb : minitomb_portal(_G) MAP ......... .xxxxxxx. .x''O''x. .x'''''x. .x'x'x'x. .x1x'x1x. .xxx'xxx. ....'.... ENDMAP #### The portal vaults #################################### # Reset default depth to prevent random generation of portal vaults. default-depth: NAME: minitomb_1 WEIGHT: 60 ORIENT: encompass TAGS: minitomb no_item_gen no_monster_gen no_rotate SHUFFLE: dwyz SUBST: w=2, y=2 NSUBST: z= 1:1 / *:3 KFEAT: T = alarm trap / floor # loot: 12.5 items ITEM: any scroll w:2 / any scroll q:2 w:3 / \ any potion w:4 / any potion q:2 w:6 MONS: mummy MONS: rat zombie / jackal zombie / snake zombie / goblin zombie / \ hobgoblin zombie / kobold zombie / big kobold zombie / \ human zombie / elf zombie / centaur zombie MONS: kobold zombie / orc zombie / hobgoblin zombie : minitomb_setup_features(_G) : minitomb_milestone(_G) MAP xxxxxxxxxxxxxxxxxxxxxx x.........