Vault contest!

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

Moderator: Moderator

Message
Author
darkgod
Master of Eyal
Posts: 10750
Joined: Wed Jul 24, 2002 9:26 pm
Location: Angolwen
Contact:

Vault contest!

#1 Post by darkgod »

Hello my fellow players, I have come here today to propose a vaults contest!

Everybody loves a good, deadly, vault and they are really easy to create!
So Sus will post a guide how to make vaults and then you are very welcome to go wild.

We will add to the game any vaults we deem fun and every week we will select one vault as the favorite, its maker will get to have an in-game unique named after her/him (you can choose the name, and obviously it must be in-theme "LOLZOR17" won't do).

Oh and even if you don't think you've got a winning vault, submit it anyway! The point of this whole contest is to get ToME a ton of new vaults, which we all love to find. We'll be adding to ToME all vaults from the contest that we like, not just the week's winning vault.

For each vault also post in which zones it would logically be possible to spawn.
And get wild, you can do normal vaults but dont hesitate to suggest special scripted events/mechanisms inside the vault too, I may or may not be able/want to do it, but then, I just might ;)

So be creative, have fun!
[tome] joylove: You can't just release an expansion like one would release a Kraken XD
--
[tome] phantomfrettchen: your ability not to tease anyone is simply stunning ;)

Susramanian
Spiderkin
Posts: 454
Joined: Sat May 15, 2010 3:09 am

Re: Vault contest!

#2 Post by Susramanian »

Creating a vault for ToME is easy. Basic steps:

1) Draw a picture of your vault using your favorite text editor, representing walls and loot and monsters and whatever else using letters and symbols. It helps with readability to pick appropriate letters and symbols; consider using ^ to represent traps, for example, or D to represent a big dragon.

2) Make a 'key' to your map of the vault, telling the game what you meant by all the symbols you used. ToME can't just read a D and know that you mean a big dragon. You have to tell it explicitly.

You don't need any special software. Use a monospaced font so your vault map looks nice and rectangular. When you post your vault code in this thread, put the text inside code tags, like this:

Code: Select all

 blah blah blah 
This will force the forum to display the text in a monospaced font.

Below is a sample vault into which I try to put all the features commonly seen in current vaults. It looks long and complicated, but that's only because I'm trying to make a comprehensive example. Use it as a reference later, and remember that most vaults are much simpler than this. A detailed explanation of each line follows the vault code.

Code: Select all

--sample vault

startx = 3
starty = 7 
 
setStatusAll{no_teleport=true}
rotates = {"default", "90", "180", "270", "flipx", "flipy"}

defineTile('%', "WALL")
defineTile('.', "FLOOR")
defineTile('#', "HARDWALL")
defineTile('+', "DOOR")
defineTile('X', "DOOR_VAULT")
defineTile('&', "LAVA_FLOOR")
defineTile('~', "DEEP_WATER")

defineTile('$', "FLOOR", {random_filter={add_levels=20, type="money"}})
defineTile('\', "FLOOR", {random_filter={add_levels=5, tome_mod="vault"}})
defineTile('|', "FLOOR", {random_filter={add_levels=5, tome_mod="gvault"}})
defineTile('/', "FLOOR", {random_filter={add_levels=5, tome_mod="uvault"}})

defineTile('D', "FLOOR", nil, {random_filter={add_levels=5, name = "fire drake"}})
defineTile('U', "FLOOR", nil, {random_filter={add_levels=10, type = "demon", subtype = "major"}})
defineTile('a', "FLOOR", nil, {random_filter={add_levels=1, type = "animal"}})
defineTile('x', "FLOOR", nil, {random_filter={add_levels=15}})
 
defineTile('^', "FLOOR", nil, nil, {random_filter={add_levels=20}})

defineTile('a', "FLOOR", {random_filter={add_levels=10, tome_mod="vault"}}, {random_filter={add_levels=15, type = "insect", subtype = "ant"}})
defineTile('b', "FLOOR", {random_filter={add_levels=15, tome_mod="gvault"}}, nil, {random_filter={add_levels=20}})
defineTile('c', "FLOOR", nil, {random_filter={add_levels=10, type = "animal", subtype = "canine"}}, {random_filter={add_levels=5}})
defineTile('d', "FLOOR", {random_filter={add_levels=15, tome_mod="uvault"}}, {random_filter={add_levels=10, name = "storm wyrm"}}, {random_filter={add_levels=5}})

 return {
 [[########]],
 [[#^.abcd#]],
 [[#D..Uax#]],
 [[#+%%%%+#]],
 [[#~~~&&&#]],
 [[#~~~&&&#]],
 [[#$..\|/#]],
 [[###X####]],
 }
 
The first line is a commented out (begins with --) name for the vault, so we know what to call the file when the vault eventually gets included in ToME.

Then we have this:

Code: Select all

startx = 3
starty = 7 
This is only really necessary for vaults whose center is sealed off behind walls, making pathing impossible. That's not the case with my sample vault, but including it doesn't hurt. The coordinates 3, 7 give the location of the vault door (X).

These lines...

Code: Select all

setStatusAll{no_teleport=true}
rotates = {"default", "90", "180", "270", "flipx", "flipy"}
... tell the game that teleporting isn't allowed in this vault, and that the game can feel free to generate the vault rotated or flipped for the sake of variety.

All of the lines that follow define a symbol used on the map at the end, telling the game what exactly to put on that tile in the vault when it's generated. Tiles include, at the least, terrain features. In addition, they can have loot, monsters, and traps. Each 'defineTile()' statement is a comma-separated list. The first item in the list is the symbol used on your map that you're defining. The second is the terrain type to use, followed by loot, monster, and trap. So the the format goes like this:
defineTile(symbol used, terrain, loot, monster, trap)

The first seven such lines in my sample vault all have only two entries in their lists: the symbol used and the terrain type. If you don't put anything after those, the game assumes you don't want anything else. So these seven lines produce tiles in the game of a certain terrain type with no loot, monsters, or traps.

The next four lines include a third item in their lists that specifies loot to generate. The line...

Code: Select all

defineTile('$', "FLOOR", {random_filter={add_levels=20, type="money"}}) 
...says to put a normal floor tile down where you put the $ symbol, and to include a pile of gold on that tile generated at twenty levels above the current zone's level. Vaults typically generate loot, monsters, and traps at well above the level on which the vault appears.
The line...

Code: Select all

defineTile('|', "FLOOR", {random_filter={add_levels=5, tome_mod="gvault"}})
...says to generate an item on a normal floor tile where you put the | symbol in your map. The item will be generated five levels above the current zone level, and the part that says tome_mod="gvault" tells the game to give that item a better chance of being high quality. The three levels of quality-weighting available are "vault" (above average), "gvault" (way above average), and "uvault" (amazing). Use "uvault" very sparingly, since it very frequently generates artifacts.

The next four lines all have a fourth entry in the list. This tells the game what type of monster to generate. Notice that the third entry in each of these is 'nil', which says to generate no loot. It's certainly possible to generate both loot and monsters (and traps) on a single tile, but I start with one at a time. Monsters can be specified in several ways. In my four lines, I go in decreasing order of specificity; the first line says to make a very particular monster: a fire drake. The second says to make a major demon, but doesn't specify which one. The third line says to make an animal; it could be anything from a cobra to a polar bear. The fourth line says to just generate any old monster (and to add 15 to its level).

This line...

Code: Select all

defineTile('^', "FLOOR", nil, nil, {random_filter={add_levels=20}})
...produces a normal floor tile with no loot, no monsters, and a +20 level trap.

The four final defineTile() lines all generate a floor tile with more than one interesting feature.

Code: Select all

defineTile('a', "FLOOR", {random_filter={add_levels=10, tome_mod="vault"}}, {random_filter={add_levels=15, type = "insect", subtype = "ant"}})
The above line makes a tile with vault-quality item, an ant, and no trap.

Code: Select all

defineTile('b', "FLOOR", {random_filter={add_levels=15, tome_mod="gvault"}}, nil, {random_filter={add_levels=20}})
The above line makes a tile with a greater-vault-quality item, no monster, and a trap.

Code: Select all

defineTile('c', "FLOOR", nil, {random_filter={add_levels=10, type = "animal", subtype = "canine"}}, {random_filter={add_levels=5}})
The above line makes a tile with no item, a canine monster, and a trap.

Code: Select all

defineTile('d', "FLOOR", {random_filter={add_levels=15, tome_mod="uvault"}}, {random_filter={add_levels=10, name = "storm wyrm"}}, {random_filter={add_levels=5}})
The above line makes a tile with an uber item, a storm wyrm, and a trap.

The last part is your ascii drawing of the vault, returned as a comma-separated list of rows but organized in a nice, stacked-up format so they read like what the vault will look like in-game.

For more examples of vaults, look through the ones already in-game. They're in t-engine4/game/modules/tome/data/maps/vaults/

Susramanian
Spiderkin
Posts: 454
Joined: Sat May 15, 2010 3:09 am

Re: Vault contest!

#3 Post by Susramanian »

For anybody using Windows who wants text editor advice beyond 'pick your favorite,' I recommend Notepad++. It does all sorts of useful stuff.

Nagyhal
Wyrmic
Posts: 282
Joined: Tue Feb 15, 2011 12:01 am

Re: Vault contest!

#4 Post by Nagyhal »

This is fun!

I'm an advocate for NotePad++, but I've also been using PabloDraw, an ASCII art editor, to draw and sketch out vaults. It lets you select text as a rectangular block, copy and drag these blocks of text, or even "fill" a block with a certain character ("." and "#" being the roguelike vault designer's favourites.)

There are also paint-software-style tools to flip or rotate a given block of text.

I'll let everybody know if I ever find a better ASCII art editor, but for now I recommend PabloDraw, which is lightweight, clean and free!

Goblinz
Module Developer
Posts: 163
Joined: Tue Dec 14, 2010 3:23 am
Location: Where I need to be

Re: Vault contest!

#5 Post by Goblinz »

Here is my entry. The idea is you encounter a group of sun paladins about to a attack a vampire lair (some map with lots of undead). when you go through the door there is a battle and everything. But the necro tiles deal blight damage that heals undead and if it kills some non undead it raises it as a zombie like thing.

Code: Select all

newEntity{
	define_as = "NECRO",
	name = "lava floor", image = "terrain/lava_floor.png",
	display = '.', color=colors.RED, back_color=colors.DARK_GREY,
	shader = "lava",
	mindam = resolvers.mbonus(5, 15),
	maxdam = resolvers.mbonus(10, 30),
	on_stand = function(self, x, y, who)
		local DT = engine.DamageType
		local dam = DT:get(DT.RETCH).projector(self, x, y, DT.RETCH, rng.range(self.mindam, self.maxdam))
		if dam > 0 and not who.undead then game.logPlayer(who, "dark energies course through") end
		if who.dead and not who.undead then
		--add undead
			local NPC = require "mod.class.NPC"
			local m = NPC.new{
				type = "undead", subtype = "ghoul",
				display = "z",
				name = "risen corpse", color=colors.GREY,
				desc = "a body raised through dark magic",

				body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },

				rank = 2,
				life_rating = 12,
				max_life = resolvers.rngavg(50,90),
				infravision = 20,

				autolevel = "ghoul",
				ai = "summoned", ai_real = "tactical", ai_state = { talent_in=2, },
				stats = {str=0, dex=0, con=0, cun=0, wil=0, mag=0},
				inc_stats = { str=25 + , dex=18, con=10  },

				resolvers.equip{
					{type="weapon", subtype="longsword", autoreq=true},
				},

				level_range = {1, nil}, exp_worth = 1,
				silent_levelup = true,

				combat_armor = 5, combat_def = 3,
				resolvers.talents{
					[Talents.T_STUN]={base=1, every=10, max=5},
					[Talents.T_BITE_POISON]={base=1, every=10, max=5},
					[Talents.T_ROTTING_DISEASE]={base=1, every=10, max=5},
				},

				faction = "enemies" 
			}
			game.zone:addEntity(game.level, m, "actor", x, y)
		end
		end
	end,
}

setStatusAll{no_teleport=true}

defineTile('.', "FLOOR")
defineTile('!', "DOOR_VAULT", nil, nil, nil, {room_map={special=false, room=false, can_open=true}})
defineTile('+', "DOOR")
defineTile('~', "NECRO")
defineTile('X', "HARDWALL")
defineTile('v', "FLOOR", {random_filter={add_levels=5,tome_mod="vault"}}, {random_filter={add_levels=5, type="undead", subtype="vampire", name="vampire"}})
defineTile('U', "FLOOR", {random_filter={add_levels=10, tome_mod="gvault"}}, {random_filter={add_levels=10, type="undead", subtype="vampire", name="master vampire"}})
defineTile('V', "FLOOR", {random_filter={add_levels=15, tome_mod="gvault"}}, {random_filter={add_levels=15, type="undead", subtype="vampire", name="elder vampire"}})
defineTile('L', "FLOOR", {random_filter={add_levels=20, tome_mod="gvault"}}, {random_filter={add_levels=20, type="undead", subtype="vampire", name="vampire lord"}})
defineTile('W', "FLOOR", {random_filter={add_levels=15, tome_mod="gvault"}}, {random_filter={add_levels=15, type="undead", subtype="wight", name="grave wight"}})
defineTile('S', "FLOOR", {random_filter={add_levels=15, tome_mod="gvault"}}, {random_filter={add_levels=15, nil, name="sun palidin"}})
startx = 0
starty = 6

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

return {
[[XXXXXXXXXXXXXXXXXXXXXXXXXXXXX]],
[[X....X......................X]],
[[X....X..~.~..v~..~.V........X]],
[[X....X....~..~.~..~..XXXXX..X]],
[[X....X..~.v.~...~...XXXXXX..X]],
[[X..S.X..~.~~.v~.~..XXXXXXX..X]],
[[X..S.+.~..~..~....LXXXXXXX..X]],
[[!....+.~.~.~.v.~...XXXXXXX..X]],
[[X..S.+..~..~.~.v.~..XXXXXX..X]],
[[X..S.X...~..~..~..~..XXXXX..X]],
[[X....X.~.~.~......~..W......X]],
[[X....X.......~.~..V.........X]],
[[XXXXXXXXXXXXXXXXXXXXXXXXXXXXX]],

}


also how many entries are we limited to ?
Those who complain are just Volunteering to fix the problem

<yufra> every vault designer should ask themselves exactly that: What Would Grey Do?

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

Re: Vault contest!

#6 Post by edge2054 »

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.
Last edited by edge2054 on Mon Apr 11, 2011 4:46 pm, edited 1 time in total.

Susramanian
Spiderkin
Posts: 454
Joined: Sat May 15, 2010 3:09 am

Re: Vault contest!

#7 Post by Susramanian »

I forgot to mention something about traps: don't use them.

Okay, maybe that's a bit draconian. But frequently vault makers get trap-happy, and decide to carpet the floors of their vaults in traps. The various *bands, including T2, suffered badly from this. And traps are due for a complete overhaul sometime before release, which means all existing traps might just disappear. So do everybody a favor and just forget about traps when making your vaults, or at least use them very sparingly.

Susramanian
Spiderkin
Posts: 454
Joined: Sat May 15, 2010 3:09 am

Re: Vault contest!

#8 Post by Susramanian »

Another thing I forgot to mention: text editors make it far too easy to make gigantic vaults. They look so small and innocent in your document, but in-game they take up the whole level. This is what happened with the Bandit Fortress. It's a 40x40 vault that gets generated in the Old Forest, which has 50x50 levels. This causes problems. It's probably best to keep vaults well under, say, 30x30. Adding a whole bunch of small, 10x10 vaults to the game is much more valuable than adding a single big one.

That reminds me; feel free to submit more than one vault per week! The more you submit, the better your chances of winning.

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

Re: Vault contest!

#9 Post by edge2054 »

Probably not a winner but I wanted to make a lich liar and since I took the time to code it figured I'd post it. I'll do a more unique entry to this week, have an idea I think will be fun and different. This vault uses target passing. Once the doors are open the whole vault will chain aggro. :twisted:

Suitable for any high level undead dungeon. Dreadfell or the Necro pride would be good spots.

Code: Select all

-- lich liar
setStatusAll{no_teleport=true}

startx = 9
starty = 16

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

defineTile('.', "FLOOR")
defineTile('X', "HARDWALL")
defineTile('!', "DOOR_VAULT", nil, nil, nil, {room_map={special=false, room=false, can_open=true}})

defineTile('a', "FLOOR", nil, {random_filter={name="armoured skeleton warrior", add_levels=10}})
defineTile('m', "FLOOR", nil, {random_filter={name="skeleton mage", add_levels=10}})
defineTile('g', "FLOOR", nil, {random_filter={subtype="ghoul", add_levels=10}})
defineTile('l', "FLOOR", nil, {random_filter={name="lich"}})
defineTile('$', "FLOOR", {random_filter={add_levels=20, tome_mod="gvault"}})

return {
[[XXXXXXXXXXXXXXXXX]],
[[Xm.ggg..g..ggg.mX]],
[[X.X...........X.X]],
[[X..a.........a..X]],
[[X...XXX.a.XXX...X]],
[[X...X.......X...X]],
[[X...X.a.l.a.X...X]],
[[Xm.aX.......Xa.mX]],
[[X...Xg..a..gX...X]],
[[X...Xg$$$$$gX...X]],
[[X...Xg$$$$$gX...X]],
[[X...XXXXXXXXX...X]],
[[Xm.a.a.a.a.a.a.mX]],
[[X.X...........X.X]],
[[Xm.............mX]],
[[XXXXXXXX!XXXXXXXX]],
}
Last edited by edge2054 on Mon Apr 11, 2011 9:19 pm, edited 1 time in total.

madmonk
Reaper
Posts: 2257
Joined: Wed Dec 12, 2007 12:21 am
Location: New Zealand

Re: Vault contest!

#10 Post by madmonk »

Rain of Death

OK, I wanted to show how powerful archers can be... I also didn't want the archers to move thus the lava constraints. I also wanted archers that used Pin to good effect and the Master Archer uses it a lot. You could consider any archer here for variety.

I did consider putting more archers in but felt this is enough for a good demonstration.

Ideally both doors in any entrance should open if 1 is opened, not sure how to do that!

Code: Select all

-- Rain of Death

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

defineTile('.', "FLOOR")
defineTile('X', "HARDWALL")
defineTile('!', "DOOR_VAULT", nil, nil, nil, {room_map={special=false, room=false, can_open=true}})

-- All a are Skeleton Master Archer
defineTile('a', "FLOOR", nil, {random_filter={name="skeleton master archer", add_levels=10}})

defineTile('$', "FLOOR", {random_filter={add_levels=20, tome_mod="gvault"}})

[[XXXXXXX!!XXXXXXXXX]],
[[X..vaav..vaav.X]],
[[X..vvvv..vvvv.X]],
[[Xvv..........vvX]],
[[Xav..........vaX]],
[[Xav..........vaX]],
[[Xvv..........vvX]],
[[!..............!]],
[[!..............!]],
[[Xvv..........vvX]],
[[Xav..........vaX]],
[[Xav..........vaX]],
[[Xvv..........vvX]],
[[X..vvvv..vvvv.X]],
[[X..vaav..vaav.X]],
[[XXXXXXX!!XXXXXXXXX]],
[Update]I forgot to add that all doors should be in range of any archer (not sure if I have that!)
Regards

Jon.

Burb Lulls
Spiderkin
Posts: 480
Joined: Mon Jul 26, 2004 5:20 am
Location: Blighty

Re: Vault contest!

#11 Post by Burb Lulls »

Okay, this is my proper entry, a snow giant camp for the Daikara. Not much to say, beyond there being a nasty little ambush for people who rush straight for the treasure in the main building.

Possible additions:
-- Cold drake 'pen' in the NE area?
-- QuickEntity campfire in the centre?
-- Edit: Ooh, and maybe dot some of those snowy trees around for aesthetics.

Code: Select all

-- Snow Giant Camp
setStatusAll{no_teleport=true}
rotates = {"default", "90", "180", "270", "flipx", "flipy"}

defineTile('.', "FLOOR")
defineTile(',', "ROCKY_GROUND")
defineTile('#', "HARDWALL")
defineTile('X', "MOUNTAIN_WALL")
defineTile('+', "DOOR")
defineTile('!', "DOOR_VAULT")

defineTile('$', "FLOOR", {random_filter={add_levels=10, tome_mod="vault"}})
defineTile('?', "FLOOR", {random_filter={add_levels=5, tome_mod="vault"}}, {random_filter={add_levels=5, type="giant", subtype="ice"}})
defineTile('P', "FLOOR", nil, {random_filter={name="snow giant"}})
defineTile('T', "FLOOR", nil, {random_filter={add_levels=5, name="snow giant thunderer"}})
defineTile('B', "FLOOR", nil, {random_filter={add_levels=5, name="snow giant boulder thrower"}})
defineTile('C', "FLOOR", nil, {random_filter={add_levels=8, name="snow giant chieftain"}})

startx = 12
starty = 19

return {
[[XX###############XXXXXXXX]],
[[X,#...#$$$$$#...#XXXXXXXX]],
[[X,#.....C.C.....#,,XXXXXX]],
[[X,#BB.#.....#.TT#,,,,XXXX]],
[[X,#####..C..#####,,,,,,XX]],
[[X,,,,,###!###,,,,,,,,,,XX]],
[[X,#,,,,,,,,,,,,,,###,,,XX]],
[[X###,,,,,,,,,,,,##?##,,,X]],
[[X#?+,,,,,,,,,P,,,#+#,,,,X]],
[[X###,,#,,,,P,,,,,,,,,,,,X]],
[[X,#,,###,,,,,,P,,,,,#,,,X]],
[[X,,,,#?+,,P,,,,,,,,###,,X]],
[[X,,,,###,,,,P,,,,,,+?#,,X]],
[[X,,,,,#,,,,,,,,,,,,###,,X]],
[[XX,,,,,,,,,,,,,,,,,,#,,XX]],
[[XX,,,,#+#,,,,,,,,,,,,,,XX]],
[[XXX,,##?##,,,,,,,,,,,,XXX]],
[[XXXXXX###,,,,,,,,,,,,XXXX]],
[[XXXXXXXXXX,,,,,,,XXXXXXXX]],
[[XXXXXXXXXXXX,XXXXXXXXXXXX]],
}
This second vault is more an example of an idea than a proper vault. It reintroduces glass walls from ToME 2 that you can see through. It's the classic Metroid trick: Be forced to walk past a bunch of caged monsters, collect the treasure at the end, walk back and... where have the monsters gone? Rather than just release them right next to you, approaching the treasure room teleports them all over the level. Suddenly, the vault is the safest place on the map...

Could remove the glass walls as well anyway, or replace them with 'broken glass walls' for added drama.

Code: Select all

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

defineTile('.', "FLOOR")
defineTile('#', "HARDWALL")
defineTile('-', "WALL")
defineTile('+', "DOOR")
defineTile('!', "DOOR_VAULT")
-- defineTile ('G'), "GLASS_WALL")

defineTile('@', "FLOOR", nil, {random_filter={add_levels=10}})
defineTile('$', "FLOOR", {random_filter={add_levels=10, tome_mod="vault"}})
defineTile('*', "FLOOR", {random_filter={add_levels=15, tome_mod="gvault"}})

-- defineTile('x'): stepping here teleports the enemies in the vault randomly over the level, and removes the glass walls

startx = 4
starty = 14

return {
[[--#####--]],
[[--#$*$#--]],
[[--#$$$#--]],
[[--##+##--]],
[[---#x#---]],
[[####.####]],
[[#@@G.G@@#]],
[[#@@G.G@@#]],
[[####.####]],
[[#@@G.G@@#]],
[[#@@G.G@@#]],
[[####.####]],
[[#@@G.G@@#]],
[[#@@G.G@@#]],
[[####!####]],
}

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

Re: Vault contest!

#12 Post by edge2054 »

Here's my official entry. The idea is that some orcs where digging out some rooms and stumbled into a sealed chamber full of horrors.

Any place orcs might be would be a good spot for this vault. So any pride with rock walls or Reknor.

Code: Select all

-- Horror Chamber

setStatusAll{no_teleport=true}

startx = 20
starty = 3

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

-- tiles
defineTile('.', "OLD_FLOOR")
defineTile('#', "OLD_WALL")
defineTile(' ', "FLOOR")
defineTile('X', "HARDWALL")
defineTile('+', "DOOR")
defineTile('!', "DOOR_VAULT", nil, nil, nil, {room_map={special=false, room=false, can_open=true}})

-- monsters
defineTile('o', 'FLOOR', nil, {random_filter={subtype='orc', add_levels=10}})
defineTile('h', 'OLD_FLOOR', nil, {random_filter={subtype='eldritch', add_levels=20}})
defineTile('c', 'OLD_FLOOR', nil, {random_filter={subtype='temporal', add_levels=20}})
defineTile('b', 'OLD_FLOOR', nil, {random_filter={name="bloated horror", add_levels=20}})

-- loots
defineTile('a', "OLD_FLOOR", {random_filter={type="armor", add_levels=10, tome_mod="vault"}}, nil)
defineTile('w', "OLD_FLOOR", {random_filter={type="weapon", add_levels=10, tome_mod="vault"}}, nil)
defineTile('r', 'OLD_FLOOR', {random_filter={add_levels=20, tome_mod="vault"}})
defineTile('t', 'OLD_FLOOR', {random_filter={add_levels=20, tome_mod="gvault"}})

-- monster + loots
defineTile('l', 'OLD_FLOOR', {random_filter={add_levels=20, tome_mod="vault"}}, {random_filter={subtype='eldritch', add_levels=20}})
defineTile('H', 'OLD_FLOOR', {random_filter={add_levels=20, tome_mod="gvault"}}, {random_filter={name="headless horror", add_levels=20}})
defineTile('R', 'OLD_FLOOR', {random_filter={add_levels=20, tome_mod="gvault"}}, {random_filter={name="radiant horror", add_levels=20}})

return {
[[XX!XXXXXXXXXXXXXXXXX]],
[[Xo oX o   oX.a.wXooX]],
[[Xo  +  o   +....+  X]],
[[X o Xo  o  Xa.wwX  X]],
[[X############..####X]],
[[Xhc.#h.l##h##ab#.hrX]],
[[Xr.r..h.#crc#..#.l#X]],
[[Xl#..#..#....bw..##X]],
[[Xl..h...#.####...h.X]],
[[X###..######.r..h##X]],
[[X##..##....c..#####X]],
[[X###.r..#######tltlX]],
[[X##c..####rrhr.r.rcX]],
[[X####.##lth.#..R..tX]],
[[XtHt#..#tt.rl...r.lX]],
[[Xttt##.###b....#...X]],
[[X.####.#####.##b...X]],
[[Xr..#..r.r#...###.lX]],
[[Xr.l..#...c.#..h.r#X]],
[[XXXXXXXXXXXXXXXXXXXX]],
}

Final Master
Sher'Tul
Posts: 1022
Joined: Fri May 21, 2010 8:16 pm
Location: Inside the minds of all
Contact:

Re: Vault contest!

#13 Post by Final Master »

My official entry I have titled the Temple of the Eye - being that the over all design of it is kin to some old designs or symbols of eyes. The basis of it is that you bust into a temple with guardian statues that blast you with magics and what not. But they are guardians, what are they guarding? Why, 4 good quality items and 5 great quality items in a central room. However, upon attempting to exit the central room, you are ambushed with the originators of the Temple of the Eye; but being long since gone they have been reincarnated as Wraiths.

Okay, I have two scripts that I'd like to have run in this vault [but considering it's size it could very well just be a one time map dungeon too].

1) The 9 items generated in the center room I would like to be reduced by 1 for each kill of a statue [and yes, there is 1 more statue than an item].

2) When you enter and then leave the center room [weather picking up any of the items or not] I would like all the wraiths [the s ] to be summoned.

There is also a new npc type that I added [as that was more simple than trying to fangle with making walls have talents] called statues. I will give their code after the vault.

Now then, the vault :

Code: Select all

-- Temple of the Eye

setStatusAll{no_teleport=true}
rotates = {"default", "90"}

defineTile('+', "DOOR_VAULT")
defineTile('.', "FLOOR")
defineTile('#', "HARDWALL")
defineTile('$', "DEEP_WATER", {random_filter={type="money"}})
defineTile('^', "FLOOR", nil, nil, {random_filter={add_levels=30}})
defineTile('^', "FLOOR", nil, nil, {random_filter={name="ice trap", add_levels=30}})
defineTile('\', "FLOOR", {random_filter={add_levels=5, tome_mod="vault"}})
defineTile('/', "FLOOR", {random_filter={add_levels=5, tome_mod="gvault"}})
defineTile('@', "FLOOR", nil, {random_filter={add_levels=10, name = "infused statue"}})
defineTile('Q', "FLOOR", nil, {random_filter={add_levels=10, name = "inscribed statue"}})
defineTile('Z', "FLOOR", nil, {random_filter={add_levels=10, name = "imbued statue"}})
defineTile('s', "FLOOR", nil, {random_filter={add_levels=15, type = "undead", subtype = "wight"}})

return {
[[+#############################+]],
[[#....s#.................#s....#]],
[[#...s.#.......s.s.......#.s...#]],
[[#....s#........$........#s....#]],
[[#..Q..#.......$.$.......#..Q..#]],
[[#.....#......$...$......#.....#]],
[[#.....#.....$.....$.....#.....#]],
[[#.....#....$.......$....#.....#]],
[[#.....#...$.........$...#.....#]],
[[#.....#..$...........$..#.....#]],
[[#.....#.$..sss...sss..$.#.....#]],
[[#.....#$..#####+#####..$#.....#]],
[[#.....^...#.........#...^.....#]],
[[#....$#...#.@.....@.#...#$....#]],
[[#.s.$.#...#...\/\...#...#.$.s.#]],
[[#..$..#.Z.#...///...#.Z.#..$..#]],
[[#.s.$.#...#...\/\...#...#.$.s.#]],
[[#....$#...#.@.....@.#...#$....#]],
[[#.....^...#.........#...^.....#]],
[[#.....#$..#####+#####..$#.....#]],
[[#.....#.$..sss...sss..$.#.....#]],
[[#.....#..$...........$..#.....#]],
[[#.....#...$.........$...#.....#]],
[[#.....#....$.......$....#.....#]],
[[#.....#.....$.....$.....#.....#]],
[[#.....#......$...$......#.....#]],
[[#..Q..#.......$.$.......#..Q..#]],
[[#....s#........$........#s....#]],
[[#...s.#.......s.s.......#.s...#]],
[[#....s#.................#s....#]],
[[+#############################+]],
}
Now then, the statues:

Code: Select all

newEntity{
	define_as = "BASE_NPC_STATUE",
	type = "construct", subtype = "statue",
	display = "Q", color=colors.WHITE,
	desc = [[Crafted from marble, the statues possess magnificent sheen.]],

	autolevel = "caster",
	ai = "dumb_talented_simple", ai_state = { talent_in=4, },
	stats = { str=1, dex=1, wil=20, cun=1, mag=20, con=20 },
	infravision = 7,
	rank = 2,
	size_category = 4,
		
		max_life = 100, life_rating = 5,

	resists = { [ DamageType.ALL ] = 50, },
	
	cut_immune = 1,
	blind_immune = 1,
	fear_immune = 1,
	poison_immune = 1,
	disease_immune = 1,
	stone_immune = 1,
	confuse_immune = 1,
	stun_immune = 1,
	silence_immune = 1,
	knockback_immune = 1,
	never_move = 1,
	no_breath = 1,
	
	end,
}

newEntity{ base = "BASE_NPC_STATUE",
	name = "Infused Statue", color=colors.GREEN,
	desc=[[This statue is covered in moss and vines.]],
		level_range = {10, nil}, exp_worth = 1,
		rarity = 1,
	
	resolvers.inscription("INFUSION:_WILD_GROWTH", {cooldown=3, dur=5}),
	resolvers.inscription("INFUSION:_INSIDIOUS_POISON", {cooldown=2, dur=3}),
	
	end,
}

newEntity{ base = "BASE_NPC_STATUE",
	name = "Inscribed Statue", color=colors.BLUE,
	desc=[[This statue is covered in glyphs and runes.]],
		level_range = {10, nil}, exp_worth = 1,
		rarity = 1,
		max_mana = 200, mana_regen = 2,
		
	[Talents.T_FLAME]={base=1, every=7, max=4},
	[Talents.T_ICE_SHARDS]={base=2, every=7, max=5},
	[Talents.T_STRIKE]={base=3, every=7, max=6},	
	
	end,
}

newEntity{ base = "BASE_NPC_STATUE",
	name = "Imbued Statue", color=colors.YELLOW,
	desc=[[This statue is covered in pictographs and slime.]],
		level_range = {10, nil}, exp_worth = 1,
		rarity = 1,
		equilibrium_regen = -0.5
		
	[Talents.T_MANA_CLASH]={base=1, every=7, max=4},
	[Talents.T_AURA_OF_SILENCE]={base=2, every=7, max=5},
	[Talents.T_SLIME_SPIT]={base=3, every=7, max=6},	
	
	end,
}	
Final Master's Character Guides
Final Master's Guide to the Arena
Edge: Final Master... official Tome 4 (thread) necromancer.
Zonk: I'd rather be sick than on fire! :D

Canderel
Sher'Tul
Posts: 1252
Joined: Mon Nov 24, 2003 2:31 pm
Location: South Africa

Re: Vault contest!

#14 Post by Canderel »

Pls introduce vault with those creatures that are rare in the alchemist quests...

Like naga, multi-hued wyrm, greater demon, Faeros... ?

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

Re: Vault contest!

#15 Post by edge2054 »

Canderel wrote:Pls introduce vault with those creatures that are rare in the alchemist quests...

Like naga, multi-hued wyrm, greater demon, Faeros... ?
Faeros at least don't spawn in a zone unless specifically loaded, which means it would take a bit of code magic on DG's part to get them to force gen inside a vault.

Post Reply