ToME: the Tales of Maj'Eyal

Everything about ToME
It is currently Sat Aug 19, 2017 3:02 pm

All times are UTC




Post new topic Reply to topic  [ 74 posts ]  Go to page Previous  1, 2, 3, 4, 5
Author Message
 Post subject: Re: Vault contest!
PostPosted: Thu Feb 16, 2012 3:23 pm 
Offline
Perspiring Physicist

Joined: Tue Jul 13, 2010 2:53 pm
Posts: 1332
Maybe someone should whip together a quick `tome-vault-test.teaa` addon?

_________________
Quote:
<DarkGod> lets say it's intended


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Thu Mar 01, 2012 9:07 pm 
Offline
Loremaster

Joined: Thu Sep 23, 2010 10:18 pm
Posts: 3516
Location: London, England
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:
-- 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:
-- 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 {
[[,,,,,,,,,]]
[[,,,###,,,]]
[[,,#####,,]]
[[,##.?.##,]]
[[,##...##,]]
[[,,##.##,,]]
[[,,,#+#,,,]]
[[,,,,,,,,,]]
}

_________________
http://www.gamesofgrey.com - My own T-Engine games!
Roguelike Radio - A podcast about roguelikes


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Thu Mar 01, 2012 9:15 pm 
Offline
Sher'Tul

Joined: Mon Jun 13, 2011 4:10 pm
Posts: 1262
An empty vault? Not the most exciting design. :P 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).


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Thu Mar 01, 2012 9:17 pm 
Offline
Loremaster

Joined: Thu Sep 23, 2010 10:18 pm
Posts: 3516
Location: London, England
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"

_________________
http://www.gamesofgrey.com - My own T-Engine games!
Roguelike Radio - A podcast about roguelikes


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Mon Nov 19, 2012 4:18 am 
Offline
Uruivellas

Joined: Tue May 15, 2012 11:44 pm
Posts: 797
Here's one I made for the svn version (no venom drakes in b42).

Code:
--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]],
}



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.

_________________
<darkgod> all this fine balancing talk is boring
<darkgod> brb buffing boulder throwers


Last edited by supermini on Sat Nov 24, 2012 1:56 pm, edited 1 time in total.

Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Tue Nov 20, 2012 8:34 am 
Offline
Uruivellas

Joined: Tue May 15, 2012 11:44 pm
Posts: 797
Here's another one - a spider den.

Code:
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


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Thu Dec 27, 2012 5:37 pm 
Offline
Sher'Tul Godslayer

Joined: Fri May 07, 2004 8:26 pm
Posts: 2000
Location: Nahgharash
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.)

_________________
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
SadistSquirrel wrote:
DarkGod has two arms, one with an opened hand, one with a closed fist. You got the fist.


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Thu Dec 27, 2012 11:27 pm 
Offline
Spiderkin

Joined: Wed Jan 26, 2011 3:47 pm
Posts: 556
Possible is everything.
But mages/rune users would just teleport outside, past all enemies. :?


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Fri Dec 28, 2012 3:09 am 
Offline
Sher'Tul Godslayer

Joined: Fri May 07, 2004 8:26 pm
Posts: 2000
Location: Nahgharash
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
SadistSquirrel wrote:
DarkGod has two arms, one with an opened hand, one with a closed fist. You got the fist.


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Fri Dec 28, 2012 6:49 am 
Offline
Uruivellas

Joined: Tue May 15, 2012 11:44 pm
Posts: 797
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.

_________________
<darkgod> all this fine balancing talk is boring
<darkgod> brb buffing boulder throwers


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Tue Feb 05, 2013 10:37 pm 
Offline
Uruivellas

Joined: Thu Nov 18, 2010 6:42 pm
Posts: 744
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
Code:
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]],
}

_________________
Author of the Infinite 500 and PlenumTooltip addons, and the joys of Scaling in ToME.


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Mon Mar 11, 2013 6:56 am 
Offline
Halfling

Joined: Wed Jan 26, 2011 1:42 am
Posts: 100
Well done, Hachem. :) I'm practicing creating vaults now, but that one of yours looks masterfully done. And a necessary addition to the game!


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Sat Jul 06, 2013 1:11 am 
Offline
Halfling

Joined: Tue Apr 03, 2012 7:34 pm
Posts: 96
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?


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Mon Sep 16, 2013 11:32 pm 
Offline
Uruivellas

Joined: Sat Aug 24, 2013 5:55 am
Posts: 669
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...


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 74 posts ]  Go to page Previous  1, 2, 3, 4, 5

All times are UTC


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group