############################################################################## # # The Ossuary, a Tomb en miniature (Zaba) # # # The Ossuary 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 ossuary_portal(e) local desc_long = "You can make out a staircase leading downwards into a small tomb. Sand ".. "surrounds the staircase and is continuously pouring onto it. Before long the ".. "staircase will be gone. They say that some distant relatives of the pharaohs ".. "were entombed here." 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", desc_long = desc_long, entity = 'staircase', dst = "ossuary", 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 -- : ossuary_setup_features(_G) -- Note that the function also defines < to be the exit portal. function ossuary_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 ossuary_milestone(e) crawl.mark_milestone("br.enter", "entered an Ossuary.") end }} #### Portal entry vaults. default-depth: D:4-8 NAME: enter_ossuary_1 TAGS: uniq_ossuary no_monster_gen SUBST: . = . ':7 COLOUR: ' = yellow FTILE: ' = floor_tomb SUBST: ' = . : ossuary_portal(_G) MAP ..... .'''. .'O'. .'''. ..... ENDMAP NAME: enter_ossuary_2 TAGS: uniq_ossuary no_monster_gen SHUFFLE: CD / c+ COLOUR: ' = yellow COLOUR: C = yellow COLOUR: D = yellow SUBST: D = = SUBST: C = c FTILE: ' = floor_tomb SUBST: ' = . : ossuary_portal(_G) MAP ....... .ccDcc. .c'''c. .C'O'C. .c'''c. .ccCcc. ....... ENDMAP NAME: enter_ossuary_3 TAGS: uniq_ossuary 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 : ossuary_portal(_G) MAP ... .O. ... ENDMAP NAME: enter_ossuary_4 TAGS: uniq_ossuary 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 : ossuary_portal(_G) MAP ......... .xxxxxxx. .x''O''x. .x'''''x. .x'x'x'x. .x1x'x1x. .xxx'xxx. ....'.... ENDMAP NAME: enter_ossuary_5 TAGS: uniq_ossuary no_monster_gen COLOUR: c = white, = = white, ' = yellow RTILE: c = wall_tomb, = = wall_tomb FTILE: ' = floor_tomb NSUBST: = = 1:= / *:c SUBST: c : cx : ossuary_portal(_G) MAP ... ..c.. ..=c=.. ..=c'c=.. .cc'O'cc. ..=c'c=.. ..=c=.. ..c.. ... ENDMAP #### The portal vaults #################################### # Reset default depth to prevent random generation of portal vaults. default-depth: NAME: ossuary_tomb_1 WEIGHT: 40 ORIENT: encompass TAGS: ossuary 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 : ossuary_setup_features(_G) : ossuary_milestone(_G) MAP xxxxxxxxxxxxxxxxxxxxxx x.........