Vault contest!
Moderator: Moderator
Re: Vault contest!
Maybe someone should whip together a quick `tome-vault-test.teaa` addon?
<DarkGod> lets say it's intended
Re: Vault contest!
A pair of vaults for the Old Forest. Idea is they look the same, but one is empty and the other has treasure with a guardian. You don't know which it is until you open the door.
Code: Select all
-- Forest Tomb
startx = 4
starty = 6
rotates = {"default", "90", "180", "270", "flipx", "flipy"}
defineTile(',', "GRASS")
defineTile('.', "FLOOR")
defineTile('#', "HARDWALL")
defineTile('+', "DOOR_VAULT")
defineTile('$', "FLOOR", {random_filter={add_levels=10, tome_mod="vault"}})
defineTile('W', "FLOOR", {random_filter={add_levels=10, tome_mod="vault"}}, {random_filter={add_levels=10, name="forest wight"}})
return {
[[,,,,,,,,,]]
[[,,,###,,,]]
[[,,#####,,]]
[[,##$$$##,]]
[[,##$W$##,]]
[[,,##.##,,]]
[[,,,#+#,,,]]
[[,,,,,,,,,]]
}
Code: Select all
-- Looted Tomb
startx = 4
starty = 6
rotates = {"default", "90", "180", "270", "flipx", "flipy"}
defineTile('.', "FLOOR")
defineTile('?', "FLOOR", {lore="edens_note"})
defineTile(',', "GRASS")
defineTile('#', "HARDWALL")
defineTile('+', "DOOR_VAULT")
return {
[[,,,,,,,,,]]
[[,,,###,,,]]
[[,,#####,,]]
[[,##.?.##,]]
[[,##...##,]]
[[,,##.##,,]]
[[,,,#+#,,,]]
[[,,,,,,,,,]]
}
Re: Vault contest!
An empty vault? Not the most exciting design.
But the basic idea I like. Vaults that act like the tombs in the Last Hope graveyard would be cool; all would contain treasure, but some would have a powerful undead or a group of thieves guarding it. Some rare versions could contain special lore ("Try to be a little faster next time! Love, Eden" in an empty vault), or maybe even a boss monster that only shows up there (some sort of wightified fallen historical figure, buried in the Old Forest?).

Sorry about all the parentheses (sometimes I like to clarify things).
Re: Vault contest!
The note from Eden would be awesome! How do I add a lore note to be found in a vault...?
Edit: Added a supposed lore item to the second vault, but I doubt the code actually works for that :P Requires a new lore piece that isn't included in the regular drops saying:
"Dear graverobber,
Try to be a little faster next time.
Love, Eden"
Edit: Added a supposed lore item to the second vault, but I doubt the code actually works for that :P Requires a new lore piece that isn't included in the regular drops saying:
"Dear graverobber,
Try to be a little faster next time.
Love, Eden"
Re: Vault contest!
Here's one I made for the svn version (no venom drakes in b42).
Ideally, apart from the starting ooze the player won't see any enemies until they step on the first bit of treasure marked by the S (that can't be guaranteed, due to the fact that wretchlings and wyrms spawn friends). That square is in line of sight of both the venom drakes and the wretchling groups and has an ice trap on it, so it will hopefully freeze them in place for some double acid breath + corrosive vapour spam. There's a whole bunch of pillars that should prevent easy aoe. There's also a Worm that Walks lurking about because I'm evil like that.
Thanks to Goblinz and Hachem_Muche for helping me figure out how to test it.
Have fun.
EDIT: Added some more loot. It was too much pain for too little gain.
Code: Select all
--Acidic vault
setStatusAll{no_teleport=true}
rotates = {"default", "90", "180", "270", "flipx", "flipy"}
startx = 7
starty = 0
--Traps
defineTile('f',"FLOOR", nil, nil, {random_filter={name="ice blast trap"}})
--Greed will be your undoing
defineTile('S',"FLOOR", {random_filter={add_levels = 10, tome_mod = "vault"}}, nil, {add_levels=20, random_filter={name="ice blast trap"}})
--Enemies
defineTile('o',"FLOOR", nil, {random_filter={name = "black ooze"}}) -- to lull them into a false sense of security
defineTile('w',"FLOOR", nil, {random_filter={add_levels=10,name = "wretchling"}})
defineTile('D',"FLOOR", nil, {random_filter={add_levels=20,name = "venom wyrm"}})
defineTile('H',"FLOOR", nil, {random_filter={add_levels=10,name = "worm that walks"}})
--Goodies
defineTile('j',"FLOOR",{random_filter={add_levels=10, tome_mod = "vault"}})
defineTile('$',"FLOOR",{random_filter={add_levels = 10, tome_mod = "gvault"}})
defineTile('%',"FLOOR",{random_filter={add_levels = 20, tome_mod = "gvault"}})
defineTile('&',"FLOOR",{random_filter={add_levels = 20, tome_mod = "vault"}})
--Tiles
defineTile('.', "FLOOR")
defineTile('X', "HARDWALL")
defineTile('#', "DOOR_VAULT", nil, nil, nil, {room_map={special=false, room=false, can_open=true}})
defineTile('=', "DOOR")
return {
[[XXXXXXX#XXXXXXX]],
[[X$&$$$X.X$$$&$X]],
[[X$$$$$X.X$$$$$X]],
[[XXXXX=X.X=XXXXX]],
[[X...XfX.XfX...X]],
[[X.w...XoX...w.X]],
[[X.X.X.X.X.X.X.X]],
[[X..X.XX.XX.X..X]],
[[XX..X.X=X.X..XX]],
[[Xw.X.X...X.X.wX]],
[[XX.....S.....XX]],
[[X.X.XX.X.XX.X.X]],
[[X...X.X.X.X...X]],
[[X..X.X.X.X.X..X]],
[[X..DX.XHX.XD..X]],
[[XXXXXXfXfXXXXXX]],
[[X%jjj=.X.=jjj%X]],
[[XjjjjX.X.XjjjjX]],
[[XXXXXXXXXXXXXXX]],
}
Thanks to Goblinz and Hachem_Muche for helping me figure out how to test it.
Have fun.

EDIT: Added some more loot. It was too much pain for too little gain.
Last edited by supermini on Sat Nov 24, 2012 1:56 pm, edited 1 time in total.
<darkgod> all this fine balancing talk is boring
<darkgod> brb buffing boulder throwers
<darkgod> brb buffing boulder throwers
Re: Vault contest!
Here's another one - a spider den.
Code: Select all
setStatusAll{no_teleport=true}
rotates = {"default", "90", "180", "270", "flipx", "flipy"}
startx = 7
starty = 0
defineTile('.', "FLOOR")
defineTile('X', "HARDWALL")
defineTile('#', "DOOR_VAULT", nil, nil, nil, {room_map={special=false, room=false, can_open=true}})
defineTile('s', "FLOOR", nil , {random_filter={add_levels=5,type="spiderkin",subtype="spider"}})
defineTile('S', "FLOOR", {random_filter={add_levels=10, tome_mod=vault}}, {random_filter={add_levels=10, type="spiderkin",subtype="spider"}})
defineTile('g', "FLOOR", {random_filter={add_levels=15, tome_mod=gvault}}, {random_filter={add_levels=15, type="spiderkin",subtype="spider"}})
defineTile('B', "FLOOR", {random_filter={add_levels=20, tome_mod=gvault}}, {random_filter={add_levels=20, type="spiderkin",subtype="spider"}})
defineTile('^', "FLOOR", nil, nil, {random_filter = {name="poison blast trap", add_levels=20}})
return {
[[...XXXX#XXXX...]],
[[..XXSs^.^ssXX..]],
[[.XXS^XXXXX^SXX.]],
[[XX.sS^s^s^Ss.XX]],
[[Xs.S.s.ggg..ssX]],
[[XS.s^S.gBgS^SSX]],
[[Xss..ssggg.ss.X]],
[[XXsSsS^s^.SsSXX]],
[[.XX^Ss.Ss.s.XX.]],
[[..XXsS.s^SsXX..]],
[[...XXXXXXXXX...]],
}
<darkgod> all this fine balancing talk is boring
<darkgod> brb buffing boulder throwers
<darkgod> brb buffing boulder throwers
-
- Sher'Tul Godslayer
- Posts: 2000
- Joined: Fri May 07, 2004 8:26 pm
- Location: Nahgharash
Re: Vault contest!
I haven't read this whole topic (to avoid spoiling some of the more... unique... vaults. Tricksy forum-goers...), but have an... odd... idea. Not sure how valid it would be to implement however, since I don't know how 'scripted' a vault can be...
Basically, the whole concept boils down to Pandora's box. Upon opening a vault, a player would see... nothing. just some empty tunnels that would wend around until one reached the end/center, which would be a small room, containing a weak enemy (degenerated skeleton warrior, perhaps), a note, and a (glowing) chest. Note is bloodstained and says something along the lines of "Finally, after all that, the treausre is almost mine, soon i sha..." and cuts off with bloodstains. Upon slaying the pathetic skeleton, far too easy, one could 'open' the chest, which would spawn a vault's worth of loot... while letting out all the evil
. Considered spawning a vault's worth of level 40-50 demons scattered around the room with chest, other evil things right off, but... Might be more evil to spawn them BEHIND you, out of sight, all along the paths you walked to get in. You wouldn't know until it was too late.
Is this concept even workable? Can we script an event to tie to the chest (The generation of vault-level enemies), as well as the chest itself to generate the entire vaults loot, rather then just a single item like a typical chest would?
(I also considered some of the 'invasion' portals I've heard folk talk about, perhaps conjuring up a few of those for enemies to pour out of when you open the box... But I've never seen those, so don't know how that would work. Again, perhaps scattering them along the paths you walked in on, so you wouldn't see/know about them until it was too late.)
Basically, the whole concept boils down to Pandora's box. Upon opening a vault, a player would see... nothing. just some empty tunnels that would wend around until one reached the end/center, which would be a small room, containing a weak enemy (degenerated skeleton warrior, perhaps), a note, and a (glowing) chest. Note is bloodstained and says something along the lines of "Finally, after all that, the treausre is almost mine, soon i sha..." and cuts off with bloodstains. Upon slaying the pathetic skeleton, far too easy, one could 'open' the chest, which would spawn a vault's worth of loot... while letting out all the evil

Is this concept even workable? Can we script an event to tie to the chest (The generation of vault-level enemies), as well as the chest itself to generate the entire vaults loot, rather then just a single item like a typical chest would?
(I also considered some of the 'invasion' portals I've heard folk talk about, perhaps conjuring up a few of those for enemies to pour out of when you open the box... But I've never seen those, so don't know how that would work. Again, perhaps scattering them along the paths you walked in on, so you wouldn't see/know about them until it was too late.)
Currently playing under the name Aura of the Dawn 4 down, 227 to go!
Proud author of Orc Pit Restoration Project, Faction Allies, Dwarven Adventurer addons
Proud author of Orc Pit Restoration Project, Faction Allies, Dwarven Adventurer addons
SadistSquirrel wrote:DarkGod has two arms, one with an opened hand, one with a closed fist. You got the fist.
Re: Vault contest!
Possible is everything.
But mages/rune users would just teleport outside, past all enemies.
But mages/rune users would just teleport outside, past all enemies.

-
- Sher'Tul Godslayer
- Posts: 2000
- Joined: Fri May 07, 2004 8:26 pm
- Location: Nahgharash
Re: Vault contest!
And? The enemies are still active, NASTY, and flooding across the level. In the case of the 'invasion portal' route, endlessly until dealt with. Effectively, renders the region untraversable if you couldn't handle it, forcing you to come back later. I also though of 'sealing' the vault again until a button was pressed, but that might be even more complicated, if you couldn't disable teleports. Additionally, I was thinking of a design large enough that phase door couldn't get you out of it. Now I need to figure out how to do the code thingy they get posted as... Passing up on making a vault DESIGNED to target human greed is too good to give up on.
Currently playing under the name Aura of the Dawn 4 down, 227 to go!
Proud author of Orc Pit Restoration Project, Faction Allies, Dwarven Adventurer addons
Proud author of Orc Pit Restoration Project, Faction Allies, Dwarven Adventurer addons
SadistSquirrel wrote:DarkGod has two arms, one with an opened hand, one with a closed fist. You got the fist.
Re: Vault contest!
You could do that, but generally, 'gotcha' vaults are a bad idea in my opinion. They tend to push people to look for spoilers and piss off those who don't use them. Look at the infamous skeleton master archer vault. Everyone who's been there knows that the loot is crap, the whole vault is basically set up to kill melee, and it's probably not worth bothering (even though a movement infusion + teleport might get you in and out).
I'm somewhat guilty of this with the acid vault, but in my defense it doesn't kill you in one turn. Most of the time.
I'm somewhat guilty of this with the acid vault, but in my defense it doesn't kill you in one turn. Most of the time.
<darkgod> all this fine balancing talk is boring
<darkgod> brb buffing boulder throwers
<darkgod> brb buffing boulder throwers
-
- Uruivellas
- Posts: 744
- Joined: Thu Nov 18, 2010 6:42 pm
Re: Vault contest!
I made the following vault to allow players to finish the Lichform quest in the I.D. The idea is that a powerful necromancer has just achieved lichdom by tapping a potent source of arcane energy, while his minions stand guard. The vault is designed to keep trespassers out (hence the teleporters) while giving fair warning of intrusions (hence all the glass walls). This is a fairly difficult vault, but is more melee friendly than most. (I recommend a minimum level of 20 to take it on, because of the lich, but I don't think there is any way to restrict the level range within the vault file itself.)
lich-ascension.lua
lich-ascension.lua
Code: Select all
startx = 9
starty = 15
setStatusAll{no_teleport=true}
rotates = {"default", "90", "180", "270", "flipx", "flipy"}
defineTile('#', "WALL")
defineTile('O', "GLASSWALL")
defineTile('!', "DOOR_VAULT", nil, nil, nil, {room_map={special=true, room=false, can_open=true}})
defineTile('X', "HARDWALL", nil, nil, nil, {block = true})
defineTile('.', "FLOOR")
defineTile('^', "FLOOR",nil,nil,{random_filter={add_levels=20}})
defineTile('m', "FLOOR", nil, {random_filter={add_levels=10,type = "undead"}})
defineTile('l', "FLOOR", nil, {random_filter={add_levels=20,tome_mod="gvault", type = "undead"}})
defineTile('M', "FLOOR", nil, {random_filter={type = "humanoid",name="orc necromancer",add_levels=10,random_elite={nb_classes=1,rank=3, ai = "tactical", loot_quantity=1}}})
defineTile('L', "FLOOR", {random_filter={add_levels=15, tome_mod="uvault"}}, {random_filter={type = "undead", subtype = "lich", add_levels=10,random_boss={nb_classes=2, rank=3.5, loot_quantity = 3}}})
defineTile('*', "FLOOR", {random_filter={add_levels=15, tome_mod="vault"}})
defineTile('?', "FLOOR", {random_filter={add_levels=15, tome_mod="vault"}})
defineTile('S', "GLASSWALL", nil, nil, nil, {on_block_change="GLASSDOOR", on_block_change_msg="You've discovered a secret door!"})
defineTile('+', mod.class.Grid.new{
define_as = "ARCANE_NEXUS",
type = "floor", subtype = "floor",
name = "arcane vortex", image = "terrain/marble_floor.png", add_displays={mod.class.Grid.new{z=5, image = "terrain/temporal_instability_blue.png"}},
display = '+', color_r=255, color_g=0, color_b=255, back_color=colors.DARK_GREY,
on_move = function(self, x, y, actor, forced)
game.logSeen(actor, "#VIOLET#Wrenching magical forces assault %s.",actor.name)
end,
},
nil, nil, nil, {lichform_quest = true, block_sight=false}
)
local find_teleport = function(self, x, y, e, act)
self.add_mos[1].image = "terrain/wormhole.png"
self.name = "distorted spot on the floor"
local tp_spot = game.level.map.attrs(x, y, "teleport_spot") or nil
local radius = game.level.map.attrs(x, y, "teleport_radius") or 10
local kind = game.level.map.attrs(x, y, "GT_kind")
if type(kind) == "string" then kind = {[kind]=true} end
self:removeAllMOs()
game.level.map:updateMap(x, y)
local apply = function(i, j) -- call local function at (i,j)
local akind = game.level.map.attrs(i, j, "GT_action_kind")
if not akind then return end
if type(akind) == "string" then akind = {[akind]=true} end
for k, _ in pairs(kind) do if akind[k] then
local fct = game.level.map.attrs(i, j, "GT_action_custom")
if e.player then e:pickupFloor(e.INVEN_INVEN,true) end -- Pick up objects before teleporting
if fct and fct(i, j, e) then
if game.level.map.attrs(i, j, "GT_action_only_once") then game.level.map.attrs(i, j, "GT_action_kind", false) end
end
end end
end
if tp_spot then
local spot = game.level:pickSpot(tp_spot)
if spot then apply(spot.x, spot.y) end
else
core.fov.calc_circle(x, y, game.level.map.w, game.level.map.h, radius, function(_, i, j)
if block and game.level.map.attrs(i, j, block) then return true end
end, function(_, i, j) apply(i, j) end, nil)
end
return true
end
local teleport = function(i, j, who)
if not who:canMove(i,j) then return end
game.level.map:particleEmitter(who.x, who.y, 1, "teleport")
who:move(i,j,true)
game.level.map:particleEmitter(x, y, 1, "teleport")
game.logSeen(who, "#LIGHT_BLUE#There is a dizzying flash of light!")
return true
end
defineTile('a', "FLOOR", nil, nil, nil, {GT_action_only_once=false, GT_action_kind="teleport1", GT_action_custom=teleport})
defineTile('b', "FLOOR", nil, nil, nil, {GT_action_only_once=false, GT_action_kind="teleport2", GT_action_custom=teleport})
defineTile('c', "FLOOR", nil, nil, nil, {GT_action_only_once=false, GT_action_kind="teleport3", GT_action_custom=teleport})
defineTile('A', mod.class.Grid.new{
define_as = "GENERIC_TELEPORTER_1",
type = "floor", subtype = "floor",
name = "floor", image = "terrain/marble_floor.png", add_mos = {{image="terrain/marble_floor.png"}},
display = '&', color=colors.UMBER, back_color=colors.DARK_UMBER,
on_move = find_teleport,
},
nil, nil, nil, {GT_kind="teleport1", teleport_radius=10})
defineTile('B', mod.class.Grid.new{
define_as = "GENERIC_TELEPORTER_2",
type = "floor", subtype = "floor",
name = "floor", image = "terrain/marble_floor.png", add_mos = {{image="terrain/marble_floor.png"}},
display = '&', color=colors.UMBER, back_color=colors.DARK_UMBER,
on_move = find_teleport,
},
nil, nil, nil, {GT_kind="teleport2", teleport_radius=10})
defineTile('C', mod.class.Grid.new{
define_as = "GENERIC_TELEPORTER_3",
type = "floor", subtype = "floor",
name = "floor", image = "terrain/marble_floor.png", add_mos = {{image="terrain/marble_floor.png"}},
display = '&', color=colors.UMBER, back_color=colors.DARK_UMBER,
on_move = find_teleport,
},
nil, nil, nil, {GT_kind="teleport3", teleport_radius=15})
return {
[[########XXX########]],
[[#####XXXX?XXXX#####]],
[[###XXX***L***XXX###]],
[[#XXX*....+....*XXX#]],
[[#X*.....m.m.....*X#]],
[[XX..M.m..*..m..m.XX]],
[[X..*l...m*m.l*..l.X]],
[[XSOOOOOO#A#OOOOOOSX]],
[[Xm....O.A.A*O....mX]],
[[Xc#O#.#.#O#.#m#O#.X]],
[[X..m#.m..m..b.#...X]],
[[XO#^O.^.OO#.^.OC#.X]],
[[X...Om..Oa..OOO.O.X]],
[[X.mOO.OOO.l.O...O.X]],
[[X..#l.#.....#m#OOmX]],
[[X.......B.....^..mX]],
[[XXXXXXXXX!XXXXXXXXX]],
}
Re: Vault contest!
Well done, Hachem.
I'm practicing creating vaults now, but that one of yours looks masterfully done. And a necessary addition to the game!

Re: Vault contest!
Working on trying to whip up some interesting new vaults, but had a few quick questions:
1) I'd like to use the new walls for Rak'shor and the cooking pot from Trollmire in a vault - the walls as walls and the pot as background. Is there an easy way to just define_tile = BONE_WALL (or define_tile = COOKING_POT, e.g.) or do I have to hook it in somehow?
2) Along those lines, are there other background objects like the pot that could be used for more visual spice, so to speak?
1) I'd like to use the new walls for Rak'shor and the cooking pot from Trollmire in a vault - the walls as walls and the pot as background. Is there an easy way to just define_tile = BONE_WALL (or define_tile = COOKING_POT, e.g.) or do I have to hook it in somehow?
2) Along those lines, are there other background objects like the pot that could be used for more visual spice, so to speak?
Re: Vault contest!
My only suggestion for a vault would be a series of rooms that only have portal access that drops you in the center of the room, surrounded by enemies with no way out until you kill them.
That might be too brutal though...
That might be too brutal though...