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:

Re: Vault contest!

#16 Post by darkgod »

Only a few more hours for the first contest !
[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 ;)

Hedrachi
Uruivellas
Posts: 606
Joined: Tue May 11, 2010 8:58 pm
Location: Ore uh gun, USA

Re: Vault contest!

#17 Post by Hedrachi »

Bit high on the gear-dishin-out ratio, but I figure if you can clear it out, you deserve the gear.

Code: Select all

--Hedrachi's "If You Don't Hate Orcs Now, You'll Hate Them After This" vault contest submission.

startx = 0
starty = 6

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

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

defineTile('a', "FLOOR", {random_filter={add_levels=10, tome_mod="gvault"}}, {random_filter={add_levels=15, type = "orc", subtype = "cryomancer"}})
defineTile('b', "FLOOR", {random_filter={add_levels=10, tome_mod="gvault"}}, {random_filter={add_levels=10, type = "orc", subtype = "pyromancer"}})
defineTile('o', "FLOOR", nil, {random_filter={add_levels=3, type = "orc"}})
defineTile('p', "FLOOR", {random_filter={add_levels=10, type = "money"}}, {random_filter={add_levels=5, type = "orc", subtype = "grand master assassin"}})
defineTile('q', "FLOOR", nil, {random_filter={add_levels=5, type = "orc", subtype = "archer"}})
defineTile('r', "FLOOR", nil, {random_filter={add_levels=5, type = "orc", subtype = "wyrmic"}})
-- Does that subtype work? Want em to be wyrmics, could care less if they're fiery or icy.
defineTile('u', "FLOOR", {random_filter={add_levels=10, tome_mod="uvault"}}, nil, {random_filter={add_levels=10}})
-- Ideally, change the random +10 level trap here to a "Gotcha!" trap where the pyro/cryo doors open, and make the doors locked until the trap
-- is sprung. But should be good as it is.

return {
[[############]],
[[#a#..q...#b#]],
[[##+......+##]],
[[#..r.o.r...#]],
[[#..........#]],
[[#...&&&o..p#]],
[[X...&u&o..p#]],
[[#...&&&o..p#]],
[[#..........#]],
[[#..r.o..r..#]],
[[##+......+##]],
[[#b#..q...#a#]],
[[############]],
}
Having satellite internet is a lot like relying on the processes described in those RFC's for your internet. Except, instead of needing to worry about statues interrupting your connection, this time you worry about the weather. I have satellite internet. Fun, no?

Marcotte
Wyrmic
Posts: 203
Joined: Sat Jan 26, 2008 1:12 am

Re: Vault contest!

#18 Post by Marcotte »

Code: Select all

-- A spiral vault, without any seals, with a vault at the end

min_level = 1
rarity = 10

meta_generator = function(gen, id)
	local w = rng.range(5, 9)
	local h = rng.range(5, 9)
	return { 
		name="lv_spiral"..w.."x"..h, 
		w=w+2, h=h+2,
		generator = function(self, x, y)
			local filter = nil

			-- Initialize with the walls
			for i = 1, self.w do
				for j = 1, self.h do
					gen.map.room_map[i-1+x][j-1+y].room = id
					gen.map.room_map[i-1+x][j-1+y].special = true
					gen.map(i-1+x, j-1+y, Map.TERRAIN, gen:resolve("wall"))
				end
			end

			local min_x, max_x = 2, self.w - 1
			local min_y, max_y = 2, self.h - 1

			local i, j
			local dir_x, dir_y
			local rotation

			-- 8 possible entries and starting directions
			local choice = rng.range(1, 8)
			if choice == 1 then
				i, j = 1, 2
				dir_x, dir_y = 1, 0
				rotation = -1
				-- These are to compensate the first reduction in range
				min_x = min_x - 2
			elseif choice == 2 then
				i, j = 2, 1
				dir_x, dir_y = 0, 1
				rotation = 1
				min_y = min_y - 2
			elseif choice == 3 then
				i, j = self.w, 2
				dir_x, dir_y = -1, 0
				rotation = 1
				max_x = max_x + 2
			elseif choice == 4 then
				i, j = self.w-1, 1
				dir_x, dir_y = 0, 1
				rotation = -1
				min_y = min_y - 2
			elseif choice == 5 then
				i, j = 1, self.h-1
				dir_x, dir_y = 1, 0
				rotation = 1
				min_x = min_x - 2
			elseif choice == 6 then
				i, j = 2, self.h
				dir_x, dir_y = 0, -1
				rotation = -1
				max_y = max_y + 2
			elseif choice == 7 then
				i, j = self.w, self.h-1
				dir_x, dir_y = -1, 0
				rotation = -1
				max_x = max_x + 2
			else -- if choice == 8 then
				i, j = self.w-1, self.h
				dir_x, dir_y = 0, -1
				rotation = 1
				max_y = max_y + 2
			end
			
			gen.map.room_map[i-1+x][j-1+y].entry = {id, 1}

			local num_turns = 0

			while min_x <= max_x and min_y <= max_y do
				-- Tunnel one "edge" of the spiral
				while i + dir_x >= min_x and i + dir_x <= max_x and
					j + dir_y >= min_y and j + dir_y <= max_y do
					i = i + dir_x
					j = j + dir_y
				
					gen.map(i-1+x, j-1+y, Map.TERRAIN, gen:resolve("floor"))
			
					-- Fill the vault with monsters (but not at the beginning)
					-- It could be changed to give stronger monsters at the
					-- end of the spiral
					if num_turns >= 1 and rng.percent(75) then
						local m = gen.zone:makeEntity(gen.level, "actor", filter, nil, true)
						-- Prevent huge quantities of rats
						m.make_escort = nil

						if m and m:canMove(i-1+x, j-1+y) then
							-- Very important, since using add_entities
							-- skip this call when the monsters get added
							-- to the map.
							m:added()
							gen.map.room_map[i-1+x][j-1+y].add_entities = {{"actor", m}}
						elseif m then
							m:removed()
						end
					end
				end

				-- Never go back that far
				if dir_x == 1 then
					min_x = min_x + 2
				elseif dir_x == -1 then
					max_x = max_x - 2
				end
				if dir_y == 1 then
					min_y = min_y + 2
				elseif dir_y == -1 then
					max_y = max_y - 2
				end

				-- Change direction (anticlockwise if rotation == 1)
				dir_x, dir_y = rotation * dir_y, -rotation * dir_x
				num_turns = num_turns + 1
			end -- while min_x <= max_x and min_y <= max_y


			-- The last spot is the end of the spiral, put the forge there
			gen.map(i-1+x, j-1+y, Map.TERRAIN, gen:resolve("NORMAL_FORGE", nil, true))
		end,
	}
end
Oups, sorry. Wrong module :P

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

Re: Vault contest!

#19 Post by edge2054 »

I see BoB vault design contests will be... interesting.

Marcotte
Wyrmic
Posts: 203
Joined: Sat Jan 26, 2008 1:12 am

Re: Vault contest!

#20 Post by Marcotte »

All BOB (not BoB) rooms are procedurally generated (even vaults). This make figuring out possible (aka: doable) rooms a little on the hard side.

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

Re: Vault contest!

#21 Post by darkgod »

Ok people I kinda was busy (you know making new releases and all ;) ) nad had not enough time to give to those very neat vaults.

So I nominate Susramanian as the new contest leader. The contest time will also switch to 3 weeks, which is more realistic for everybody.

Thanks and go do more ! :)
[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!

#22 Post by Susramanian »

I just finished cleaning up and adding most of the vaults submitted so far. They should be in the next beta.

I'm happy to announce that Burb Lulls has won the first vault contest with his snow giant fort! As promised, there is now a fearsome new unique randomly roaming Eyal: Burb the snow giant champion. Don't interrupt him when he's making art.

For the next contest, I'm arbitrarily setting the submission deadline at Sunday, June 19th. Hopefully soon I'll be posting a sample vault that shows off some new features in the works: levers and secret doors! Also, I'd like to retract that thing I said a while ago about small vaults being better than big vaults. Judging by reactions to the bandit fortress megavault, big vaults are extremely popular. Feel free to submit them! But make them just a little smaller than the bandit fortress... say, 35 by 35.

When submitting vaults, I give bonus points if the thing works the first time I paste it in and fire it up, so testing your creations is encouraged (but not mandatory).

Go build us vaults!

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

Re: Vault contest!

#23 Post by Goblinz »

Okay lets get some new entries

Here is a basic one I have rather uncreatively called sprial vault

Code: Select all

setStatusAll{no_teleport=true}

defineTile('.', "FLOOR")
defineTile('X', "HARDWALL")
defineTile('!', "DOOR_VAULT")
defineTile('D', "DOOR")
defineTile('1', "FLOOR", {random_filter={add_levels=15, tome_mod="vault"}}, {random_filter={add_levels=20}})
defineTile('2', "FLOOR", {random_filter={add_levels=12, tome_mod="vault"}}, {random_filter={add_levels=17}})
defineTile('3', "FLOOR", {random_filter={add_levels=5}}, nil)

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

startx = 5
starty = 0

return {
[[XXXXXXXXXXX]],
[[X...D3....X]],
[[X.XXXXXXX.X]],
[[X.X..D..X.X]],
[[X.X.XXX.X.X]],
[[X.X.X1X.X.X]],
[[X.X.XDX.X.X]],
[[X.X.X.XDX.X]],
[[X3X2X.X2X.X]],
[[XDXDX.X.XDX]],
[[X.X.X.X.X3X]],
[[X.X.X.X.X.X]],
[[X.X.X1D.X.X]],
[[X.X.XXXXX.X]],
[[X.X..2D...X]],
[[X!XXXXXXXXX]],
}
Those who complain are just Volunteering to fix the problem

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

Dekar
Spiderkin
Posts: 559
Joined: Wed Jan 26, 2011 3:47 pm

Re: Vault contest!

#24 Post by Dekar »

Here is a vault for the Scintillating Caves foremost: A bunch of rats which gathered small items.
Inspired by my latest Shadowblade who found the Trollmire far superior to the Caves as first area because of the rune and infusion vaults there. :)

My tests with the crystal tiles in the Trollmire didnt exactly work, but I guess this because it uses a different tileset.

Code: Select all

--caveratnest

startx = 1
starty = 0

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

defineTile('.', "CRYSTAL_FLOOR")
defineTile('#', "CRYSTAL_WALL2")

defineTile('*', "CRYSTAL_FLOOR", {random_filter={add_levels=5,subtype="infusion"}})
defineTile('+', "CRYSTAL_FLOOR", {random_filter={add_levels=5,subtype="rune"}})
defineTile('$', "CRYSTAL_FLOOR", {random_filter={add_levels=20,type="money"}})

defineTile('r', "CRYSTAL_FLOOR", nil, {random_filter={add_levels=5,subtype="rodent"}})




return {
[[#.##....]],
[[#..#....]],
[[##.###..]],
[[.#rrr##.]],
[[.#rrr$##]],
[[##$rrr*#]],
[[#+rrrr##]],
[[##*##$##]],
[[.####*$#]],
[[....####]],
}

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

Re: Vault contest!

#25 Post by Goblinz »

Okay here is a more complicated vault. you enter a dryad's glade and you can defend it from waves of undead for about 65 turns (6 waves of 3 undead). if you can save the tree you get a 5% increase in nature resistance

Code: Select all

setStatusAll{no_teleport=true}





defineTile('.', "GRASS")
defineTile('!', "ROCK_VAULT", nil, nil, nil, {room_map={special=false, room=false, can_open=true}})
defineTile('X', "HARDTREE")
defineTile('T', "TREE")
defineTile('f', "FLOWER")
defineTile('D', "HARDTREE")--will be removed to allow enemies to come in
defineTile('t', mod.class.Grid.new{
	define_as = "TRIGGER",
	name = "grass", image = "terrain/lava_floor.png",
	display = '.', color=colors.LIGHT_GREEN, back_color={r=44,g=95,b=43},
	firsttime= true,
	on_move = function(self, x, y, who)
		if self.firsttime then
			--trigger stuff
			local answer =false
			local text = "As you enter the glade a Dryad asks for you help in defending her home"
			require("engine.ui.Dialog"):yesnoLongPopup("Dryad's Glade", text.."\nDo you help her defend her home?", 400, function(ret)
				if ret then 
				self.firsttime=false
				local m = game.level.map(x+5, y, Map.ACTOR)
				if m and m.isTree then
					m.triggered=true
					m.savior = who
					m.faction = who.faction
				end	
				m = game.level.map(x-5, y, Map.ACTOR)
				if m and m.isTree then
					m.triggered=true
					m.savior = who
					m.faction = who.faction
				end	
				m = game.level.map(x, y+5, Map.ACTOR)
				if m and m.isTree then
					m.triggered=true
					m.savior = who
					m.faction = who.faction
				end	
				m = game.level.map(x, y-5, Map.ACTOR)
				if m and m.isTree then
					m.triggered=true
					m.savior = who
					m.faction = who.faction
				end		
				game.logSeen(who, "Prepare to defend the tree")
				else
					game.logSeen(who, "The Dryad then leaves crestfallen and abandons her tree")
				end
			end)			
		end	
		
	end,
})
defineTile('O', "GRASS", nil, mod.class.NPC.new{
	type = "immovable", subtype = "plants",
	display = "#", color=colors.GOLD,
	name = "Dyrad's Tree",
	faction = "sunwall", hard_faction = "sunwall",
	body = { INVEN = 10},
	desc = [[A Dryads Home]],
	level_range = {10, 50}, exp_worth = 0,
	rank = 3,
	move_others=true,
	size_category = 5,
	autolevel = "warrior",
	ai = "dumb_talented_simple", ai_state = { talent_in=3, },
	stats = { str=10, dex=10, mag=3, con=10 },
	infravision = 10,
	combat_armor = 15, combat_def = 1,
	never_move = 1,
	fear_immune = 1,
	--stuff for events
	isTree = true,
	survived=false,
	triggered = false,
	wallsopend = false,
	count = 0,
	wavecount=100,
	max_life = resolvers.rngavg(140,170),
	act = function(self)
		--summoning and a bunch of other stuff
		
		if self.triggered then
			if not self.wallsopend then self:createEntries() end
			self.count = self.count+1
			--game.logSeen(self.savior, "count at %d",self.count)
			if self.count == self.wavecount then 
				game.logSeen(self.savior, "A wave of eneimies aproach")
				self:summonInvaders()
				self.wavecount = self.wavecount + 100
			end
			if self.count == 650 then
				self.triggered = false
				local DT = engine.DamageType
				require("engine.ui.Dialog"):simplePopup("Dryad's Glade", "You have succsefully kept the tree alive")
				if(self.savior.resists[DT.NATURE]or 0) < 60 then
					self.savior.resists[DT.NATURE] = (self.savior.resists[DT.NATURE]or 0) + 5
					game.logSeen(self.savior, "A wave of energy passes over you increaseing your nature restist by 5")
				end
			end
		end
	end,
	createEntries =  function(self)
		local g = game.zone:makeEntityByName(game.level, "terrain", "GRASS")
		game.zone:addEntity(game.level, g, "terrain", self.x + 1, self.y+6)
		game.zone:addEntity(game.level, g, "terrain", self.x , self.y+6)
		game.zone:addEntity(game.level, g, "terrain", self.x - 1, self.y+6)
		game.zone:addEntity(game.level, g, "terrain", self.x + 1, self.y-6)
		game.zone:addEntity(game.level, g, "terrain", self.x , self.y-6)
		game.zone:addEntity(game.level, g, "terrain", self.x - 1, self.y-6)
		game.zone:addEntity(game.level, g, "terrain", self.x + 6, self.y+1)
		game.zone:addEntity(game.level, g, "terrain", self.x + 6, self.y)
		game.zone:addEntity(game.level, g, "terrain", self.x + 6, self.y-1)
		game.zone:addEntity(game.level, g, "terrain", self.x -6, self.y+1)
		game.zone:addEntity(game.level, g, "terrain", self.x -6, self.y)
		game.zone:addEntity(game.level, g, "terrain", self.x -6, self.y+1)
		self.wallsopend = true
	end,
	summonInvaders = function(self)
		local dir = rng.range(1,4)
		if dir==1 then
			self:createInvader(self.x + 1, self.y+6)
			self:createInvader(self.x , self.y+6)
			self:createInvader(self.x - 1, self.y+6)
		elseif dir==2 then
			self:createInvader(self.x + 1, self.y-6)
			self:createInvader(self.x , self.y-6)
			self:createInvader(self.x - 1, self.y-6)
		elseif dir==3 then
			self:createInvader(self.x+6,self.y+1)
			self:createInvader(self.x+6,self.y)
			self:createInvader(self.x+6,self.y-1)
		else --assumed 4 at this point
			self:createInvader(self.x-6,self.y+1)
			self:createInvader(self.x-6,self.y)
			self:createInvader(self.x-6,self.y-1)
		end	
	end,
	createInvader = function(self,sx,sy)
		local x, y = util.findFreeGrid(sx, sy, 5, true, {[Map.ACTOR]=true})
		if x then
			local m = game.zone:makeEntity(game.level, "actor", {type="undead"}, nil, true)
			if m then
				game.zone:addEntity(game.level, m, "actor", x, y)
				game.logSeen(game.player, "%s marches to destroy the tree!", m.name:capitalize())
			end
		end	
	end,
	
}
)

startx = 0
starty = 6

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

return {
[[..XXXDDDXXX..]],
[[.XX.TT.TT.XX.]],
[[XX......f..XX]],
[[X...f.......X]],
[[XT..f..f...TX]],
[[!T.......f.TD]],
[[!t.f..O...f.D]],
[[!T..f......TD]],
[[XT......f..TX]],
[[X...f...f...X]],
[[XX.........XX]],
[[.XX.TT.TT.XX.]],
[[..XXXDDDXXX..]],
}
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!

#26 Post by edge2054 »

Wanted to comment on the rat vault.

While I'm a big fan of rats nests just because they make thematic sense note that rodents have a pretty low level cap (like 4 or so I think) so adding levels to them will never make them higher level then that.

Maybe some rat swarm mobs could be added with a higher level cap and generally just more dangerous (disease on hit, high attack, apr, low or no crit, extra damage from spells but phys resist or something).

Tasseographer
Wayist
Posts: 25
Joined: Mon May 23, 2011 12:32 am

Re: Vault contest!

#27 Post by Tasseographer »

I know that this is an extremely simple design, but I also feel that the present lack of random pentagrams sealing demons away beneath the earth is detracting from my play experience.

This should probably only occur underground, although it would be amusing to come across a little clearing with a blazing lava pentagram in, say, the Trollmire...


Code: Select all



--sealed pentagram

startx = 7
starty = 7

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

defineTile('.', "FLOOR")
defineTile('#', "HARDWALL")
defineTile('X', "DOOR_VAULT")
defineTile('&', "LAVA_FLOOR")


defineTile('*', "FLOOR", {random_filter={add_levels=10, tome_mod="uvault"}}, {random_filter={add_levels=20, type = "demon"}},


return {
[[.............]],
[[......&......]],
[[.....&.&.....]],
[[.&&&&&&&&&&&.]],
[[..&.&###&.&..]],
[[...&.#*#.&...]],
[[..&.&#X#&.&..]],
[[.&&&&&.&&&&&.]],
[[.....&.&.....]],
[[......&......]],
[[.............]]


}

tiger_eye
Perspiring Physicist
Posts: 889
Joined: Thu Feb 17, 2011 5:20 am

Re: Vault contest!

#28 Post by tiger_eye »

Here are a few vault ideas that I've come up with. They are not close to being finished code (sorry Sus, I'll try to be better in the future), so I don't expect to win. Nonetheless, sharing ideas is better than sharing nothing, so here goes:

Jailbreak 1!

Code: Select all

Jailbreak! (small, 13x11)
X : DOOR_VAULT
# : HARDWALL
% : WALL
g : gaoler (i.e., jailer), race appropriate to zone, or just use "npc/humanoid_halfling_sm_halfling.png" image :)
h : random (unique?) humanoid and/or thieves, hostile towards the player and other enemies on the level (but friendly to each other, of course).
+ : gates/doors (sealed_door.png and sealed_door_cracked.png?) to open when upper gaoler is defeated.  If levers are possible, have a lever where the gaoler starts and use that to open the doors instead.  Levers would be prefered, I think, so it would be possible for the inmates to fight the gaolers :)
= : gates/doors to open when lower gaoler is defeated.
? : vault item
! : gvault item
.............
.............
.###+#X#+###.
.+h#h#g#h#h+.
.#####%#####.
.=h#??!??#h+.
.#####%#####.
.=h#h#g#h#h=.
.###=#X#=###.
.............
.............
Jailbreak 2!

Code: Select all

Jailbreak! (medium, 13x13)
as above, except
h : also have vault item
H : also have gvault item
.............
.............
.#+###X###+#.
.#h#h#.+h#h#.
.###+#.#####.
.+h#..g#H#h+.
.###+###=###.
.=h#H#g..#h=.
.#####.#=###.
.#h#h=.#h#h#.
.#=###X###=#.
.............
.............
Unstable Xorn Den

Code: Select all

Unstable Xorn Den (13x13)
Upon removing any loose rubble, '%', ALL the lose rubble is removed
The intention is that players won't get swarmed (much) if they stay and fight... but if they run away, then, well, several Xorn/Xaren will likely chase after them...
% : ROCK_VAULT
# : rocky mountains?
.............
.....###.....
...##%X%##...
..#%X...X%#..
..#X.X##.X#..
.#%.X??##.%#.
.#X.#?!?#.X#.
.#%.##??X.%#.
..#X.##X.X#..
..#%X...X%#..
...##%X%##...
.....###.....
.............
Mirage

Code: Select all

Mirage (9x9)
Intended for Eruan
Upon entering water, '~', what appeared as loot/money, '$', becomes enemies
T : PALMTREE
? : vault item
$ : fake vault item/money--actually an enemy
.T.......
...~~~.T.
..~~$~~..
.~~$??~~.
.~?$T$?~.
.~~??$~~.
..~~$~~..
...~~~...
........T
Sinister Bunnies
A very under-developed idea. Basically, I'd like a vault based on cute little bunnies (vermin_rodent_cute_little_bunny.png) in Heart of the Gloom. I envision the cute little bunnies will always be friendly toward the player (even if you hurt them), but, well, they really are sinister. Perhaps you need to kill them for the vault loot they are carrying, or perhaps they resurrect as super-evil bunnies after you kill them, or perhaps they summon gloomed/sick/deformed bunnies who will attack you. I don't know--hopefully somebody else can develop this idea further!

lukep
Sher'Tul Godslayer
Posts: 1712
Joined: Mon Mar 14, 2011 10:32 am
Location: Canada

Re: Vault contest!

#29 Post by lukep »

tiger_eye wrote: Sinister Bunnies
A very under-developed idea. Basically, I'd like a vault based on cute little bunnies (vermin_rodent_cute_little_bunny.png) in Heart of the Gloom. I envision the cute little bunnies will always be friendly toward the player (even if you hurt them), but, well, they really are sinister. Perhaps you need to kill them for the vault loot they are carrying, or perhaps they resurrect as super-evil bunnies after you kill them, or perhaps they summon gloomed/sick/deformed bunnies who will attack you. I don't know--hopefully somebody else can develop this idea further!
My idea for this:
Have a vault containing 10 Sinister Bunnies. When you open the door, each is teleported to a random location on the level. They immediately start to search each other out, and if two meet, they quickly spawn hostile evil bunnies. When you have killed all 10 "parents" an inner door opens, giving loot. Would require much more coding than I know how to do.
Some of my tools for helping make talents:
Melee Talent Creator
Annotated Talent Code (incomplete)

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

Re: Vault contest!

#30 Post by Burb Lulls »

Firstly, thanks for choosing my vault in the first contest! I'm guessing that puts me out of the running in this one, but I'd like to put one up anyway for vault's sake. To commemorate the first time I saw Burb the Snow Giant Champion kill someone in the chat, here's...

The Boneworks
Location: Erúan
All those skeletons have to come from somewhere.

Code: Select all

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

defineTile('.', "FLOOR")
defineTile(',', "SAND")
defineTile(';', "UNDERGROUND_FLOOR")
defineTile('X', "HARDWALL")
defineTile('#', "WALL")
defineTile('~', "DEEP_WATER")
defineTile('F', "UNDERGROUND_TREE")
defineTile('C', "CRYSTAL_WALL")
defineTile('T', "PALMTREE")
defineTile('%', "LAVA")
defineTile('+', "DOOR")
defineTile('!', "DOOR_VAULT")

defineTile('G', mod.class.Grid.new{
	define_as = "GLASS_WALL",
	name = "thick glass", image = "terrain/frozen_ground.png",
	display = '#', color=colors.LIGHT_BLUE, back_color={r=89, g=100, b=255},
	always_remember = true,
	does_block_move = true,
	air_level = -20,
})
defineTile('L', mod.class.Grid.new{
	define_as = "LOCKED_DOOR",
	name = "locked door", image = "terrain/granite_door1.png",
	display = '+', color_r=238, color_g=154, color_b=77, back_color=colors.DARK_UMBER,
	always_remember = true,
	does_block_move = true,
	block_sight = true,
	air_level = -20,
})

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

defineTile('0', "FLOOR", nil, {random_filter={add_levels=12, name="runed bone giant", random_boss={nb_classes=2, rank=3.5, loot_quantity = 2}}})
defineTile('1', "FLOOR", nil, {random_filter={add_levels=10, name="archlich"}})
defineTile('2', "UNDERGROUND_FLOOR", nil, {random_filter={add_levels=6, name="ghast"}})
defineTile('3', "UNDERGROUND_FLOOR", nil, {random_filter={add_levels=8, name="ghoulking"}})
defineTile('4', "FLOOR", nil, {random_filter={add_levels=4, name="skeleton archer"}})
defineTile('5', "FLOOR", nil, {random_filter={add_levels=6, name="skeleton master archer"}})
defineTile('6', "FLOOR", nil, {random_filter={add_levels=6, name="armoured skeleton warrior"}})
defineTile('7', "FLOOR", nil, {random_filter={add_levels=4, name="skeleton mage"}})
defineTile('8', "FLOOR", nil, {random_filter={add_levels=2, name="degenerated skeleton warrior"}})

return {
[[,,,,,,,,,,,,,,,,,,,,,,,,,T,,,,TT,,,]],
[[,XX,,XX,,XX,,XX,,,T,,,,,,,T,,,,,,T,]],
[[,XX..XX..XX..XX.,,,,T,TT,,,,,,,,,,T]],
[[,XX##XX##XX##XXXXXXXXXXXXXXXXXXX,,,]],
[[,X..8.G..G....X.8........X..CCCX,,T]],
[[,X8...G..G.6..X..........!...0CX,,,]],
[[,X####X..X####X....8..8..X.1CCCX,,,]],
[[TX7...G..G.8..X..........X.....X,,,]],
[[,X....G..G....+..8.......X?????XT,,]],
[[TX....G..G..4.X.....8....X?????X,,,]],
[[,X####X..X####XXGGGGGGXLXXXXXXXX,,,]],
[[,X$$..G..G..$$X........64X,,,,,,,,,]],
[[,X$$..G..G..$$X........64X,,,,,,,,,]],
[[,XXXXXX++XXXXXXX+XXXXXXXXXXXXXX,,,,]],
[[,X.......................X....XX,,,]],
[[,X.7X.~~~~~.X.....6......+.....X,,,]],
[[,X.4X.~~~~~.X...5..6.....+.....X,,,]],
[[,X....~~~~~.....7..6.....X.7...!,,,]],
[[,X.4X.~~~~~.X...5..6.....+.....X,,,]],
[[,X.7X.~~~~~.X.....6......+.....X,,,]],
[[,X.......................X....XX,,,]],
[[,XXXX++XXXX...XXXXXXXXXXXXXXXXX,,,,]],
[[TXFF;;;FFFX...X%%........%....X,,,,]],
[[TXF;;;;;;FX...+...%%%%%%.%%%%%X,,,,]],
[[,X;;F2;;F;X...X%%%%....%......X,,,,]],
[[,X;;;FF;;;X...XXXXXXXXXXXXXXX+X,,,,]],
[[,XF;FFFF;FX...#$$$X......%44%.X,,,,]],
[[,XF;;FF2;;X...#$$$+.%%%%.%%%%.X,,T,]],
[[,XF;2F3F;FX.6.#$$$X%%55%......X,,,T]],
[[,X2F;;;;2FXXXXXXXXXXXXXXXXXXXXX,,T,]],
[[,XF;FF;;FFX,,,,,,,,,,,,,,,,,,,,,T,T]],
[[,XX##XX##XXT,,,,,,,,,,,,,,,,TTT,,,,]],
[[,XX,,XX,,XX,,T,,,,,,,,,,,,,,,,,T,,,]],
[[,XX,,XX,,XX,T,,,,,,,,,,T,,,T,TT,T,,]],
[[,,,,,,,,T,T,,,,,,,,,T,,,,,,,TT,,,,,]],
}
Those pesky undead are up to no good again. A lich has set up a combination lab and skeleton manufacturing plant out in Erúan. Take a walk past the holding cells, see the skeleton archer firing range, inspect the ghoul habitat, and if you can find your way to the lich's chamber, maybe you can take a look at his newest project!

The vault has been tested, and is all present and correct by my reckoning.

Post Reply