Vault feedback please


If you are interested in helping with tiles, vaults, patches or documentation, this is the place for that.

User avatar

Spider Stomper

Posts: 186

Joined: Friday, 8th March 2013, 13:27

Post Saturday, 13th July 2013, 13:17

Vault feedback please

This is a map I've been working on for a long time.
I wanted to get feedback on it before sending uploading it in mantis. I've tested the map a lot but I'm still very new at making vaults and I'm sure that there are a lot of mistakes or things that can be improved :D

The map was inspired by the following discussion:
viewtopic.php?f=5&t=5770
The map originally has no rock wall but the forum messes up white spaces, rock wall added instead.
  Code:
########
# In the hall lie the broken corpses of Xom's previous toys.
# Beyond your reach, you can see several treasures from these fallen adventurers.
# An altar and a single gold coin await for you.

# Implicitly Xom is trying to bribe you.
# If you decide to follow him you randomly get one of the displayed items.
# The offer is tempting but the price is quite high.

{{
  -- Some header declarations in a function to save space
  function xom_bribery(e)
    e.tags("no_rtele_into")
    e.tags("no_item_gen")
    e.tags("no_monster_gen")
    e.tags("no_pool_fixup")
    e.tags("uniq_altar_xom")
    e.tags("temple_overflow_xom")
    e.orient("float")
    e.kprop("!|wW# = no_tele_into")
    e.kfeat("C = altar_xom")
    e.kfeat("J = n")
    e.kfeat("? = w")
    e.kfeat("!| = W")
    e.ftile("# = FLOOR_PEBBLE_GREEN")
    e.ftile("&C = FLOOR_PEBBLE_DARKGRAY")
    e.kitem("! = w:20 | mimic / w:30 any randart weapon mimic / w:30 any randart armour mimic / w:15 any randart mimic / w:5 any mimic")
    e.kitem("| = w:20 | / w:30 any randart weapon / w:30 any randart armour / w:15 any randart / w:5 any")
    e.kitem("# = gold q:1")
  end
}}

{{
function callback.grunt_xom_gamble_announce(data,triggerable,triggerer,marker,ev)
  if not dgn.persist.grunt_xom_gamble_announced then
    dgn.persist.grunt_xom_gamble_announced = true
   
--A soon as the player sees the altar, dead toy corpses are generated.
--No message needed for this, the corpses "always" were there.

    for slave in iter.slave_iterator("target_floor", 1) do
      dgn.create_item(slave.x, slave.y, "centaur skeleton/ dwarf skeleton/ elf skeleton/ demonspawn skeleton/ draconian skeleton/ felid skeleton/ ghoul skeleton/ halfling skeleton/ human skeleton/ kobold skeleton/ merfolk skeleton/ minotaur skeleton/ naga skeleton/ ogre skeleton/ spriggan skeleton/ tengu skeleton/ troll skeleton")
    end     
  end
end

function callback.xom_check_stepped(data, triggerable, triggerer, marker, ev)
  local x, y = marker:pos()

-- Steping over the coin seals the pact. If you worship Xom a bridge is
-- opened and you get access to one treasure.

  if monster_step == true then
    return
  elseif you.god() == "Xom" then
    crawl.god_speaks("Xom", "You check the gold piece that lies in the floor and notice how the engraved effigy winks an eye at you.")
    crawl.god_speaks("Xom", "Xom opens a path towards one of the surrounding treasures!")
    for slave in iter.slave_iterator("bridge", 1) do
      dgn.terrain_changed(slave.x, slave.y, "shallow_water", false, false, false)
    end
    for slave in iter.slave_iterator("cwall", 1) do
      dgn.terrain_changed(slave.x, slave.y, "shallow_water", false, false, false)
    end
  else
    crawl.god_speaks("Xom", "You check the gold piece that lies in the floor, it depicts a strange creature making an obscene sign at you.")
  end
end
}}

NAME:   xom_bribery_A
DEPTH:  D:2-10
 : xom_bribery(_G)

{{
    dgn.persist.grunt_xom_gamble_announced = false
    local announce_marker = TriggerableFunction:new {
        func = "callback.grunt_xom_gamble_announce",
        repeated = true}
    announce_marker:add_triggerer(DgnTriggerer:new {
        type="player_los"})
    lua_marker('C', announce_marker)
    lua_marker('&', props_marker { target_floor=1 })
    local tm2 = TriggerableFunction:new{func="callback.xom_check_stepped",
                                   repeated=false}
    tm2:add_triggerer(DgnTriggerer:new{type="player_move"})
    lua_marker('#', tm2)
    lua_marker('?', props_marker { bridge=1 })
    lua_marker('J', props_marker { cwall=1 })
}}

MAP
xxxxcccccxxxx 
xxcccwwwcccxx
xccwwwwwwwccx
ccwwww|wwwwcc
cww!ww?ww!wwc
cwwwwbJbwwwwc
cwwwnn&nnwwwc
cw!wn&#&nw!wc
cwwwnnCnnwwwc
cwwwwn}nwwwwc
cww!wnnnw!wwc
ccwwwwwwwwwcc
xccwbw!wbwccx
xxccwwwwwccxx
xx.ncccccn.xx
...........
ENDMAP

NAME:   xom_bribery_B
DEPTH:  D:2-10
 : xom_bribery(_G)

{{
    dgn.persist.grunt_xom_gamble_announced = false
    local announce_marker = TriggerableFunction:new {
        func = "callback.grunt_xom_gamble_announce",
        repeated = true}
    announce_marker:add_triggerer(DgnTriggerer:new {
        type="player_los"})
    lua_marker('C', announce_marker)
    lua_marker('&', props_marker { target_floor=1 })
    local tm2 = TriggerableFunction:new{func="callback.xom_check_stepped",
                                   repeated=false}
    tm2:add_triggerer(DgnTriggerer:new{type="player_move"})
    lua_marker('#', tm2)
    lua_marker('?', props_marker { bridge=1 })
    lua_marker('J', props_marker { cwall=1 })
}}

MAP
xxxxcccccxxxx 
xxcccwwwcccxx
xccwwwwwwwccx
ccwwww!wwwwcc
cww!wwwww|wwc
cwwwwbnb?wwwc
cwwwnn&Jnwwwc
cw!wn&#&nw!wc
cwwwnnCnnwwwc
cwwwwn}nwwwwc
cww!wnnnw!wwc
ccwwwwwwwwwcc
xccwbw!wbwccx
xxccwwwwwccxx
xx.ncccccn.xx
xx.........xx
ENDMAP

NAME:   xom_bribery_C
DEPTH:  D:2-10
 : xom_bribery(_G)

{{
    dgn.persist.grunt_xom_gamble_announced = false
    local announce_marker = TriggerableFunction:new {
        func = "callback.grunt_xom_gamble_announce",
        repeated = true}
    announce_marker:add_triggerer(DgnTriggerer:new {
        type="player_los"})
    lua_marker('C', announce_marker)
    lua_marker('&', props_marker { target_floor=1 })
    local tm2 = TriggerableFunction:new{func="callback.xom_check_stepped",
                                   repeated=false}
    tm2:add_triggerer(DgnTriggerer:new{type="player_move"})
    lua_marker('#', tm2)
    lua_marker('?', props_marker { bridge=1 })
    lua_marker('J', props_marker { cwall=1 })
}}

MAP
xxxxcccccxxxx 
xxcccwwwcccxx
xccwwwwwwwccx
ccwwww!wwwwcc
cww!wwwww!wwc
cwwwwbnbwwwwc
cwwwnn&nnwwwc
cw!wn&#&J?|wc
cwwwnnCnnwwwc
cwwwwn}nwwwwc
cww!wnnnw!wwc
ccwwwwwwwwwcc
xccwbw!wbwccx
xxccwwwwwccxx
xx.ncccccn.xx
xx.........xx
ENDMAP

NAME:   xom_bribery_D
DEPTH:  D:2-10
 : xom_bribery(_G)

{{
    dgn.persist.grunt_xom_gamble_announced = false
    local announce_marker = TriggerableFunction:new {
        func = "callback.grunt_xom_gamble_announce",
        repeated = true}
    announce_marker:add_triggerer(DgnTriggerer:new {
        type="player_los"})
    lua_marker('C', announce_marker)
    lua_marker('&', props_marker { target_floor=1 })
    local tm2 = TriggerableFunction:new{func="callback.xom_check_stepped",
                                   repeated=false}
    tm2:add_triggerer(DgnTriggerer:new{type="player_move"})
    lua_marker('#', tm2)
    lua_marker('?', props_marker { bridge=1 })
    lua_marker('J', props_marker { cwall=1 })
}}

MAP
xxxxcccccxxxx 
xxcccwwwcccxx
xccwwwwwwwccx
ccwwww!wwwwcc
cww!wwwww!wwc
cwwwwbnbwwwwc
cwwwnn&nnwwwc
cw!wn&#&nw!wc
cwwwnnCJnwwwc
cwwwwn}n?wwwc
cww!wnnnw|wwc
ccwwwwwwwwwcc
xccwbw!wbwccx
xxccwwwwwccxx
xx.ncccccn.xx
xx.........xx
ENDMAP

NAME:   xom_bribery_E
DEPTH:  D:2-10
 : xom_bribery(_G)

{{
    dgn.persist.grunt_xom_gamble_announced = false
    local announce_marker = TriggerableFunction:new {
        func = "callback.grunt_xom_gamble_announce",
        repeated = true}
    announce_marker:add_triggerer(DgnTriggerer:new {
        type="player_los"})
    lua_marker('C', announce_marker)
    lua_marker('&', props_marker { target_floor=1 })
    local tm2 = TriggerableFunction:new{func="callback.xom_check_stepped",
                                   repeated=false}
    tm2:add_triggerer(DgnTriggerer:new{type="player_move"})
    lua_marker('#', tm2)
    lua_marker('?', props_marker { bridge=1 })
    lua_marker('J', props_marker { cwall=1 })
}}

MAP
xxxxcccccxxxx 
xxcccwwwcccxx
xccwwwwwwwccx
ccwwww!wwwwcc
cww!wwwww!wwc
cwwwwbnbwwwwc
cwwwnn&nnwwwc
cw!wn&#&nw!wc
cwwwnnCnnwwwc
cwwwwn}nwwwwc
cww!wnJnw!wwc
ccwwww?wwwwcc
xccwbw|wbwccx
xxccwwwwwccxx
xx.ncccccn.xx
xx.........xx
ENDMAP

Last edited by Marbit on Sunday, 14th July 2013, 09:48, edited 3 times in total.

Tartarus Sorceror

Posts: 1776

Joined: Monday, 21st February 2011, 15:57

Location: South Carolina

Post Saturday, 13th July 2013, 14:29

Re: Vault feedback please

I haven't tried to figure out how to insert vaults when compiling, but I like the idea.
In the vault description comment, you've misspelled "price."
User avatar

Spider Stomper

Posts: 186

Joined: Friday, 8th March 2013, 13:27

Post Saturday, 13th July 2013, 14:59

Re: Vault feedback please

jejorda2 wrote:I haven't tried to figure out how to insert vaults when compiling, but I like the idea.
In the vault description comment, you've misspelled "price."


It also took me while but the process is simple and you don't need to compile anything, you just need to modiffy a text file.
Inside the folder where you installed crawl you will find the des folder that in subfolders contains all the vaults. If you want to add a vault just open any des file and add the code.
In the game you can test the vault by entering wizzard mode (alt+&), followed by the command to get a vault (L) and finally the name of the vault (xom_bribery_A for this vault).

The location of the crawl folder will depend on your computer, the way that you installed crawl and OS that you use.

Tartarus Sorceror

Posts: 1776

Joined: Monday, 21st February 2011, 15:57

Location: South Carolina

Post Saturday, 13th July 2013, 18:16

Re: Vault feedback please

I replaced all the text in test.des with what's between the code tags in the OP and resumed a game that was in wizard mode, version 0.13-a0-1628-g8987dc3.
I placed the vault (version A) and it showed up. My character was standing on the vault. I picked up the coin (the message appeared), prayed at the altar (rejecting Xom), and went down the stairs. I came back up the stairs, joined Xom, and got no message or bridge to the items.

I used shatter and Ice Form to collect the items, only some of which were mimics.

I know the corpses in the old butcher shop vault were good free piety for Okawaru worshippers, and had to be changed somehow. I had some trolls get finesse on D2 in that vault before it was fixed. You might want to do something with the corpses in this vault.

On my third try, I got the vault to "work." I worshipped Xom *before* picking up the coin. Autopickup makes that kind of a hard thing to do in general. I don't think I would have figured it out without being able to generate the vault for myself several times.

It also works to worship Xom outside the vault, so long as you follow xom when you pick up the coin.

Since it is pretty easy to break into the vault (LRD, Shatter, Disintegration, teleportation combined with any kind of flight or swimming), I think it would be rare for anyone to actually decide, "Hey, one of those items is worth worshiping Xom," then then worship it to get the loot.

Suggested improvements:
Replace the water and most of the walls with translucent unnaturally hard rock walls.
Open a path upon joining the religion at the altar, and ditch the coin.

For this message the author jejorda2 has received thanks:
Marbit
User avatar

Spider Stomper

Posts: 186

Joined: Friday, 8th March 2013, 13:27

Post Saturday, 13th July 2013, 19:40

Re: Vault feedback please

Thanks for the feedback.

The vault was updated:
-Teleport is no longer possible to the treasure area.
-Skeletons are produced instead of corpses.

Thanks

Return to Contributions

Who is online

Users browsing this forum: No registered users and 6 guests

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.