Vault contest!

All new ideas for the upcoming releases of ToME 4.x.x should be discussed here

Moderator: Moderator

Message
Author
urmane
Cornac
Posts: 40
Joined: Sun Jan 01, 2012 5:57 pm

Re: Vault contest!

#46 Post by urmane »

forest-ruined-building6.lua

Code: Select all

-- Forest Ruined Building 6 by urmane (Jim Niemira)
-- Intended for Trollmire

setStatusAll{no_teleport=true}

rotates = {"default", "90", "180", "270", "flipx", "flipy"}

defineTile('.', "FLOOR")
defineTile(',', "GRASS")
defineTile('#', "WALL")
defineTile('X', "TREE")
defineTile('+', "DOOR_VAULT")
defineTile('T', "FLOOR", {random_filter={add_levels=5, type="money"}}, {random_filter={name="forest troll", add_levels=4}})

return {
[[#XXXX#XX]],
[[,,,,,,,X]],
[[##.###,X]],
[[,,.#T+,X]],
[[#.X##XX,]],
[[,...,,,,]],
[[#####,#,]],
[[,,X,,,#,]],
}

urmane
Cornac
Posts: 40
Joined: Sun Jan 01, 2012 5:57 pm

Re: Vault contest!

#47 Post by urmane »

mirror-mirror.lua

Code: Select all

-- mirror-mirror by urmane (Jim Niemira)

setStatusAll{no_teleport=true}
startx = 1
starty = 4

defineTile('.', "FLOOR")
defineTile('!', "DOOR_VAULT")
defineTile('#', "HARDWALL")
defineTile('$', "FLOOR", {random_filter={add_levels=5, tome_mod="vault"}})
-- 1 opens the +'s
defineTile('+', "GENERIC_LEVER_DOOR", nil, nil, nil, {lever_action=1, lever_action_value=0, lever_action_kind="crypt_door"})
defineTile('1', "GENERIC_LEVER", nil, nil, nil,
           {lever=1, lever_kind="crypt_door", lever_radius=1, lever_block="crypt_door_block"})
-- 2 opens the 9's
defineTile('2', "GENERIC_LEVER", nil, nil, nil,
           {lever=1, lever_kind="crypt_door_bad", lever_radius=4, lever_block="crypt_door_block"})
defineTile('9', "GENERIC_LEVER_DOOR", nil, nil, nil, {lever_action=1, lever_action_value=0, lever_action_kind="crypt_door_bad"})
-- 3 does nothing except look like a lever
defineTile('3', "GENERIC_LEVER", nil, nil, nil,
           {lever=1, lever_kind="crypt_door_bogus", lever_radius=1, lever_block="crypt_door_block"})

defineTile('X', "FLOOR", nil, {random_filter={add_levels=5}})

rotates = {"default", "90", "180", "270", "flipx", "flipy"}

return {
[[###########]],
[[#1#1#1#1#$#]],
[[#.+.+.+.+.#]],
[[!.#########]],
[[#.+.9.9XXX#]],
[[#1#2#3#3#X#]],
[[###########]],
}

urmane
Cornac
Posts: 40
Joined: Sun Jan 01, 2012 5:57 pm

Re: Vault contest!

#48 Post by urmane »

Not really a vault per se, more an experiment

secrets.lua

Code: Select all

-- secrets by urmane (Jim Niemira)

setStatusAll{no_teleport=true}
startx = 2
starty = 0

defineTile('#', "HARDWALL")
defineTile('-', "HARDWALL", nil, nil, nil, {on_block_change="FLOOR", on_block_change_msg="You discovered a secret room!"})
defineTile('$', "FLOOR", {random_filter={add_levels=20, type="money"}})
defineTile('*', "FLOOR", {random_filter={add_levels=5, tome_mod="gvault"}}, {random_filter={add_levels=20}})

rotates = {"default", "90", "180", "270", "flipx", "flipy"}

return {
[[##-######]],
[[##-######]],
[[##$--$-##]],
[[######-##]],
[[###$--$##]],
[[##-######]],
[[##-#-#-##]],
[[##$-#$###]],
[[######-##]],
[[###-##-##]],
[[##*#-#$##]],
[[#####-###]],
[[#########]],
}

urmane
Cornac
Posts: 40
Joined: Sun Jan 01, 2012 5:57 pm

Re: Vault contest!

#49 Post by urmane »

No door on this one ... it looks too easy ...

too-easy.lua

Code: Select all

-- too-easy by urmane (Jim Niemira)

setStatusAll{no_teleport=true}
startx = 4
starty = 0

defineTile('#', "HARDWALL")
defineTile('$', "FLOOR", {random_filter={add_levels=5, tome_mod="gvault"}})
defineTile('^', "FLOOR", nil, nil, {random_filter={name="summoning alarm"}})

rotates = {"default", "90", "180", "270", "flipx", "flipy"}

return {
[[####.####]],
[[#.......#]],
[[#.......#]],
[[#^^.^^..#]],
[[#..^..^^#]],
[[#...$...#]],
[[#########]],
}

urmane
Cornac
Posts: 40
Joined: Sun Jan 01, 2012 5:57 pm

Re: Vault contest!

#50 Post by urmane »

The intention here is that the alarm wakes up everybody, and the Umber Hulks eat through the walls - the player must run the archer gauntlet.

umber-hulk-archer-trap.lua

Code: Select all

-- Umber-Hulk-Archer trap by urmane (Jim Niemira)

setStatusAll{no_teleport=true}
startx = 7
starty = 6

defineTile('.', "FLOOR")
defineTile('+', "DOOR")
defineTile('!', "DOOR_VAULT")
defineTile('#', "HARDWALL")
-- The intruder alarm trap may not be in the zone - in that case, there will be no trap on this tile
defineTile('^', "FLOOR", nil, nil, {random_filter={add_levels=5, name="intruder alarm"}})
defineTile('$', "FLOOR", {random_filter={add_levels=5, tome_mod="vault"}})
defineTile('A', "FLOOR", nil, {random_filter={add_levels=10, name="skeleton archer"}})
defineTile('X', "FLOOR", nil, {random_filter={add_levels=10, name="umber hulk"}})

rotates = {"default", "90", "180", "270", "flipx", "flipy"}

return {
[[#########]],
[[#A#A#...$]],
[[#.#.#....]],
[[#.X.X....]],
[[#........]],
[[########^]],
[[.......!.]],
[[########^]],
[[#........]],
[[#.X.X....]],
[[#.#.#....]],
[[#A#A#...$]],
[[#########]],
}

marchewka
Thalore
Posts: 156
Joined: Thu Dec 30, 2010 9:52 am

Re: Vault contest!

#51 Post by marchewka »

urmane wrote:The intention here is that the alarm wakes up everybody, and the Umber Hulks eat through the walls - the player must run the archer gauntlet.
Umm, don't umber hulks PASS through wall, instead of eating it?

bricks
Sher'Tul
Posts: 1262
Joined: Mon Jun 13, 2011 4:10 pm

Re: Vault contest!

#52 Post by bricks »

Regardless, they can't move or see through hard walls, and even if they were normal walls, they wouldn't need the trap to notice the player, since they can see through walls. I think. You'd need some custom Umber Hulk entities.
Sorry about all the parentheses (sometimes I like to clarify things).

urmane
Cornac
Posts: 40
Joined: Sun Jan 01, 2012 5:57 pm

Re: Vault contest!

#53 Post by urmane »

Could I just change them to normal walls, maybe moving the vault door back to the outside, and putting a normal door at the end of the corridor?

urmane
Cornac
Posts: 40
Joined: Sun Jan 01, 2012 5:57 pm

Re: Vault contest!

#54 Post by urmane »

Updated:

Code: Select all

-- Umber-Hulk-Archer trap by urmane (Jim Niemira)

setStatusAll{no_teleport=true}
startx = 0
starty = 6

defineTile('.', "FLOOR")
defineTile('+', "DOOR")
defineTile('!', "DOOR_VAULT")
defineTile('#', "HARDWALL")
defineTile('=', "WALL")
-- The intruder alarm trap may not be in the zone - in that case, there will be no trap on this tile
defineTile('^', "FLOOR", nil, nil, {random_filter={add_levels=5, name="intruder alarm"}})
defineTile('$', "FLOOR", {random_filter={add_levels=5, tome_mod="vault"}})
defineTile('A', "FLOOR", nil, {random_filter={add_levels=10, name="skeleton archer"}})
defineTile('X', "FLOOR", nil, {random_filter={add_levels=10, name="umber hulk"}})

rotates = {"default", "90", "180", "270", "flipx", "flipy"}

return {
[[#########]],
[[#A#A#...$]],
[[#.#.#....]],
[[#.X.X....]],
[[#........]],
[[#=======^]],
[[!......+.]],
[[#=======^]],
[[#........]],
[[#.X.X....]],
[[#.#.#....]],
[[#A#A#...$]],
[[#########]],
}

bricks
Sher'Tul
Posts: 1262
Joined: Mon Jun 13, 2011 4:10 pm

Re: Vault contest!

#55 Post by bricks »

Like I said, the Umber Hulks will see through the walls, if I understand their sensing mechanic right.
Sorry about all the parentheses (sometimes I like to clarify things).

Grey
Loremaster
Posts: 3517
Joined: Thu Sep 23, 2010 10:18 pm
Location: London, England
Contact:

Re: Vault contest!

#56 Post by Grey »

Can we have some consensus on what makes a good vault? Because these ones with preset trap placement and lever mechanics seem to only encourage spoilers. Death traps that you can't back out of also seem like bad design. Would be nice to see more procedural elements to the internal mechanics of vaults.

On another note, new simple low level vaults for Trollmire is great to see.
http://www.gamesofgrey.com - My own T-Engine games!
Roguelike Radio - A podcast about roguelikes

marchewka
Thalore
Posts: 156
Joined: Thu Dec 30, 2010 9:52 am

Re: Vault contest!

#57 Post by marchewka »

In a slightly lighter mood - here's a proposal for a few interesting rooms/minivalults for forest type areas - trollmire and old forest. I hope they work, especially the way i tried to implement randomness in some of them.

Code: Select all


-- forest interesting room #08/15, take 1

startx = 2
starty = 2 

setStatusAll{no_teleport=false}
rotates = {"default", "90", "180", "270", "flipx", "flipy"}

defineTile('.', "GRASS")
defineTile('#', "TREE")

defineTile('i', "GRASS", {random_filter={add_levels=0, tome_mod="vault"}})

defineTile('V', "GRASS", nil, {random_filter={add_levels=5, name = "poisonous ivy"}})

return {
[[###]],
[[#V#]],
[[#i.]],
[[#V#]],
[[###]],
}


-- forest interesting room #08/15, take 2

startx = 1
starty = 0 

setStatusAll{no_teleport=false}
rotates = {"default", "90", "180", "270", "flipx", "flipy"}

defineTile('.', "GRASS")
defineTile('#', "TREE")

defineTile('i', "GRASS", {random_filter={add_levels=0, tome_mod="vault"}}, nil, {random_filter={add_levels=5}})

defineTile('V', "GRASS", nil, {random_filter={add_levels=5, name = "poisonous ivy"}})
defineTile('M', "GRASS", nil, {random_filter={add_levels=5, name = "treant"}})


return {
[[#V#]],
[[#M#]],
[[#i#]],
[[###]],
}

-- forest interesting room #08/15, take 3

startx = 1
starty = 0 

setStatusAll{no_teleport=true}
rotates = {"default", "90", "180", "270", "flipx", "flipy"}

defineTile('#', "TREE")
defineTile('!', "ROCK_VAULT")

defineTile('B', "FLOOR", random_filter={add_levels=0, tome_mod="vault"}}, {random_filter={add_levels=10, type = "animal", subtype = "bear"}})


return {
[[#!#]],
[[#B#]],
[[###]],
}

-- forest interesting room #08/15, take 4

startx = 0
starty = 0 

setStatusAll{no_teleport=false}
rotates = {"default", "90", "180", "270", "flipx", "flipy"}

defineTile('.', "GRASS")
defineTile('f', "FLOWER")

defineTile('i', "GRASS", if rng.range(0, 1) > 0 then {random_filter={add_levels=1}} else nil end, if rng.range(0, 1) > 0 then {random_filter={add_levels=5, name = "poisonous ivy"}} else nil end, if rnd.range(0, 1) > 0 then {random_filter={add_levels=5}} else nil end)


return {
[[.ff.]],
[[fiif]],
[[fiif]],
[[.ff.]],
}

-- forest interesting room #08/15, take 5

startx = 3
starty = 2 

setStatusAll{no_teleport=true}
rotates = {"default", "90", "180", "270", "flipx", "flipy"}

defineTile('.', "GRASS")
defineTile('f', "FLOWER")
defineTile('T', "HARDTREE")
defineTile('O', "ROCK_VAULT")


defineTile('R', "GRASS", random_filter={add_levels=5, name = "treant"}, nil, nil)
defineTile('i', "GRASS", random_filter={add_levels=0, tome_mod=”vault”}}, nil, nil)


return {
[[TTTTT]],
[[TiROT]],
[[TiROf]],
[[TiROT]],
[[TTTTT]],
}

-- forest interesting room #08/15, take 6

startx = 0
starty = 0 

setStatusAll{no_teleport=false}
rotates = {"default", "90", "180", "270", "flipx", "flipy"}

defineTile('.', "GRASS")
defineTile('f', "FLOWER"))


defineTile('T', "TREE", nil, random_filter={add_levels=0, tome_mod=”vault”}},, nil)


return {
[[.....]],
[[..f..]],
[[.fRf.]],
[[..f..]],
[[.....]],
}

-- forest interesting room #08/15, take 7

startx = 0
starty = 0 

setStatusAll{no_teleport=false}
rotates = {"default", "90", "180", "270", "flipx", "flipy"}

defineTile('.', "GRASS")
defineTile('f', "FLOWER")


defineTile('T', "TREE")

defineTile('R', "GRASS", random_filter={add_levels=10, type = "troll"}, random_filter={add_levels=0, tome_mod = "vault"}, nil)

defineTile('F', "FLOWER", nil, nil, random_filter={add_levels=5})



return {
[[.fTf.]],
[[fTFTf]],
[[TFRFT]],
[[fTFTf]],
[[.fTf.]],
}
edit: code tags instead of quote tags
Last edited by marchewka on Wed Feb 08, 2012 12:54 am, edited 1 time in total.

Grey
Loremaster
Posts: 3517
Joined: Thu Sep 23, 2010 10:18 pm
Location: London, England
Contact:

Re: Vault contest!

#58 Post by Grey »

Looks cool. You can use "

Code: Select all

" tags instead of quote tags to make them display a little better on the forums.
http://www.gamesofgrey.com - My own T-Engine games!
Roguelike Radio - A podcast about roguelikes

marchewka
Thalore
Posts: 156
Joined: Thu Dec 30, 2010 9:52 am

Re: Vault contest!

#59 Post by marchewka »

1# thank you for the word of appreciation!
2# can someone please confirm if the way used by me to induce randomness actually works? or are there any other problems in the code itself? it's not tested in the TOME engine
3# think i could please ask for some explanation on how to test such ideas versus how do they compile / look in game? Is there some easy way to do it?
4# and finally - another idea - an ancient tomb, sealed by a boulder, with ancient prince raised as a skeleton mage + 2 archers, and a bunch of equipment of the dead:

Code: Select all

--tomb of an ancient prince
startx = 3
starty = 2

rotates = {"default", "90", "180", "270", "flipx", "flipy"}

setStatusAll{no_teleport=true}

defineTile('.', "FLOOR")
defineTile('#', "HARDWALL")
defineTile('X', "ROCK_VAULT")

defineTile('I', "FLOOR", if rng.range(0, 2) > 0 then {random_filter={add_levels=5,subtype="infusion"}} else nil end)
defineTile('R', "FLOOR", if rng.range(0, 2) > 0 then {random_filter={add_levels=5,subtype="rune"}} else nil end)
defineTile('r', "FLOOR", if rng.range(0, 2) > 0 then {random_filter={add_levels=5,subtype="ring"}} else nil end)
defineTile('E', "FLOOR", if rng.range(0, 2) > 0 then {random_filter={add_levels=5,subtype="belt"}} else nil end)
defineTile('t', "FLOOR", if rng.range(0, 2) > 0 then {random_filter={add_levels=5,subtype="tool"}} else nil end)
defineTile('n', "FLOOR", if rng.range(0, 2) > 0 then {random_filter={add_levels=5,subtype="necklace"}} else nil end)
defineTile('B', "FLOOR", if rng.range(0, 2) > 0 then {random_filter={add_levels=5,subtype="body"}} else nil end)
defineTile('O', "FLOOR", if rng.range(0, 2) > 0 then {random_filter={add_levels=5,subtype="boots"}} else nil end)
defineTile('a', "FLOOR", if rng.range(0, 2) > 0 then {random_filter={add_levels=5,subtype="gloves"}} else nil end)
defineTile('C', "FLOOR", if rng.range(0, 2) > 0 then {random_filter={add_levels=5,subtype="cloak"}} else nil end)
defineTile('1', "FLOOR", if rng.range(0, 2) > 0 then {random_filter={add_levels=5,subtype="weapon"}} else nil end)
defineTile('2', "FLOOR", if rng.range(0, 2) > 0 then {random_filter={add_levels=5,subtype="shield"}} else nil end)

defineTile('^', "FLOOR", nil, nil, {random_filter={add_levels=20}})

defineTile('$', "FLOOR", {random_filter={add_levels=10,type="money"}})

defineTile('M', "FLOOR", nil, {random_filter={add_levels=25, name="skeletal mage"}})
defineTile('A', "FLOOR", nil, {random_filter={add_levels=15, name="skeletal archer"}})

return {
[[.#^.^#.]],
[[.#^.^#.]],
[[###X###]],
[[#A...A#]],
[[#$HMn$#]],
[[#t1BCa#]],
[[#R.E.r#]],
[[#I.O..#]],
[[##...##]],
[[.#####.]],
}


edge2054
Retired Ninja
Posts: 3756
Joined: Fri May 28, 2010 4:38 pm

Re: Vault contest!

#60 Post by edge2054 »

I think your random tile thing will work.

As to the rest, first unzip the files and then..
edge2054 wrote:Did some experimenting with 'vault testing' and I think this will work (or at least it worked for me on decent sized vaults).

First create a file for your vault in data\maps\vaults.lua

Next modify data\zones\trollmire\zone.lua

Change lines 52-54 to...

Code: Select all

			nb_rooms = 1,
			rooms = {"lesser_vault"},
			lesser_vaults_list = {"your_vault_file_here"},
This should get the zone to always generate one room (the number of rooms flag) and always generate the vault in question. I'm not really sure what the difference between lesser and greater vaults are. I know some zone files use greater_vault flags but I don't see where vaults are tagged this way. Maybe someone can expand on that.

But the above is tested and should work for most vaults.

*note* This will invalidate your game so should be used on a test character using a test copy of the game if you want to keep your characters in the vault.
Hope that helps :P

Post Reply