Some variations for the early vaults

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

Moderator: Moderator

Post Reply
Message
Author
IvenGray
Higher
Posts: 69
Joined: Mon Aug 20, 2012 5:58 am

Some variations for the early vaults

#1 Post by IvenGray »

Countered the vaults like the following one for too many times:
__##/##
__#. M .#
###/# /###
#. . .# . . .#
#. . .# . . .#
#. . .# . . .#
#/ #/# /# /#
#M#. M.#M#
###/#/###
#. . .#. . .#
#. . .#. . .#
#. . .#. . .#
###/#/###
__#. M .#
__#####
Several vaults like the one above are generated in games so often that players know perfectly well about these vaults. These vaults ceased to be risky, and people hardly think about dangers when they stride into these vaults. I guess this situation is not desired, so some varied versions of these vaults are needed to make them less predictable. For example, it would be good if the levels/number/positions of the monsters are more flexible.

IvenGray
Higher
Posts: 69
Joined: Mon Aug 20, 2012 5:58 am

Re: Some variations for the early vaults

#2 Post by IvenGray »

Made some codes to serve as examples. Added some possible monster and loot spawns in the circle-vault and skeleton-mage-cabal, and made another version of honey-glade-vault with the same look outside.

Code: Select all

--A varied version of circle vault
setStatusAll{no_teleport=true, vault_only_door_open=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)

--add some possible positions for monsters&loot monsters:{4,5,6,7,8,9,0}/loot:{p}
if (1) then
	--monsters
	if rng.percent(3) then
		defineTile('4', "FLOOR", {random_filter={add_levels=15, tome_mod="vault"}}, {random_filter={add_levels=17}})
	else
		defineTile('4', "FLOOR")
	end
	if rng.percent(3) then
		defineTile('5', "FLOOR", {random_filter={add_levels=15, tome_mod="vault"}}, {random_filter={add_levels=17}})
	else
		defineTile('5', "FLOOR")
	end
	if rng.percent(3) then
		defineTile('6', "FLOOR", {random_filter={add_levels=15, tome_mod="vault"}}, {random_filter={add_levels=17}})
	else
		defineTile('6', "FLOOR")
	end
		if rng.percent(3) then
		defineTile('7', "FLOOR", {random_filter={add_levels=15, tome_mod="vault"}}, {random_filter={add_levels=17}})
	else
		defineTile('7', "FLOOR")
	end
	if rng.percent(3) then
		defineTile('8', "FLOOR", {random_filter={add_levels=15, tome_mod="vault"}}, {random_filter={add_levels=17}})
	else
		defineTile('8', "FLOOR")
	end
	if rng.percent(3) then
		defineTile('9', "FLOOR", {random_filter={add_levels=15, tome_mod="vault"}}, {random_filter={add_levels=17}})
	else
		defineTile('9', "FLOOR")
	end
	if rng.percent(3) then
		defineTile('0', "FLOOR", {random_filter={add_levels=15, tome_mod="vault"}}, {random_filter={add_levels=17}})
	else
		defineTile('0', "FLOOR")
	end
	--loot
	if rng.percent(5) then
		defineTile('p', "FLOOR", {random_filter={add_levels=10}}, nil)
	else
		defineTile('p', "FLOOR")
	end
end
rotates = {"default", "90", "180", "270", "flipx", "flipy"}

startx = 5
starty = 0

return {
[[...........]],
[[...XX!XX...]],
[[..XX.2.XX..]],
[[.XXXDXDXXX.]],
[[.X4..X..5X.]],
[[.X383X393X.]],
[[.XDXDXDXDX.]],
[[.X2X.2.X2X.]],
[[.XXXDXDXXX.]],
[[.XX..X..XX.]],
[[.X6..X..7X.]],
[[.X303X303X.]],
[[.XXXDXDXXX.]],
[[..XXp1pXX..]],
[[...XXXXX...]],
[[...........]],
}

Code: Select all

--A varied version of honey glade vault
setStatusAll{no_teleport=true, vault_only_door_open=true}

startx = 2
starty = 10

rotates = {"default", "90", "180", "270", "flipx", "flipy"}
	
defineTile('!', "ROCK_VAULT", nil, nil, nil, {room_map={special=false, room=false, can_open=true}})
defineTile(' ', "GRASS")
defineTile('X', "HARDTREE")
defineTile('^', "GRASS", nil, nil, {random_filter={add_levels=5}})

if rng.percent(80) then
	--same as before
	defineTile('#', "GRASS", nil, {random_filter={name="honey tree"}})
	defineTile('q', "GRASS", {random_filter={add_levels=10, tome_mod="vault"}}, {random_filter={name="brown bear", add_levels=10}})
	defineTile('Q', "GRASS", {random_filter={add_levels=20, tome_mod="vault"}}, {random_filter={name="grizzly bear", add_levels=20}})

	return {
	[[XXXXXXXXXX]],
	[[XXX   XXXX]],
	[[XX #q# XXX]],
	[[XX qQq XXX]],
	[[XX #q# XXX]],
	[[XXX   XXXX]],
	[[XXXX XXXXX]],
	[[XXXX   XXX]],
	[[XXXXXX!XXX]],
	[[XX^^^^ XXX]],
	[[XX XXXXXXX]],
	}
else
	--a mold version
	defineTile('~', "POISON_DEEP_WATER")
	defineTile('m', "GRASS_SHORT", nil, {random_filter={subtype="molds", add_levels=5}})
	defineTile('j', "GRASS_SHORT", nil, {random_filter={subtype="oozes", add_levels=6}})
	defineTile('.', "GRASS_SHORT", {random_filter={add_levels=10, tome_mod="vault"}})
	defineTile('M', "GRASS_SHORT", {random_filter={add_levels=15, tome_mod="vault"}}, {random_filter={subtype="oozes", add_levels=10}})
	return {
	[[XXXXXXXXXX]],
	[[XXX   XXXX]],
	[[XXMXjMm.XX]],
	[[XX ~~mX.XX]],
	[[XX  ~~~mXX]],
	[[XXX  mXXXX]],
	[[XXXX XXXXX]],
	[[XXXX   XXX]],
	[[XXXXXX!XXX]],
	[[XX^^^^ XXX]],
	[[XX XXXXXXX]],
	}
end

Code: Select all

--skeleton mage cabal varied
setStatusAll{no_teleport=true, vault_only_door_open=true}

defineTile('.', "FLOOR")
defineTile('D', "DOOR")
defineTile('!', "DOOR_VAULT")
defineTile('X', "HARDWALL")
defineTile('W', "FLOOR", {random_filter={subtype="staff", tome_mod="vault", add_levels=4}})
defineTile('S', "FLOOR", {random_filter={type="scroll", ego_chance=25, add_levels=4}})
defineTile('M', "FLOOR", nil, {random_filter={name="skeleton mage", add_levels=4}})

--trick 1: change of skeleton mages' levels
if rng.percent(20) then
	--choose one skeleton mage and upgrade it by 10 levels
	if rng.percent(50) then
		defineTile('N', "FLOOR", nil, {random_filter={name="skeleton mage", add_levels=4}})
		defineTile('H', "FLOOR", nil, {random_filter={name="skeleton mage", add_levels=14}})
	else
		defineTile('N', "FLOOR", nil, {random_filter={name="skeleton mage", add_levels=14}})
		defineTile('H', "FLOOR", nil, {random_filter={name="skeleton mage", add_levels=4}})
	end
else
	--same as before
	defineTile('N', "FLOOR", nil, {random_filter={name="skeleton mage", add_levels=4}})
	defineTile('H', "FLOOR", nil, {random_filter={name="skeleton mage", add_levels=4}})
end
--trick 2: 3 more mages behind the scroll door
if rng.percent(20) then
    --varied version
	defineTile('m', "FLOOR",  {random_filter={type="scroll", ego_chance=30, add_levels=6}}, {random_filter={name="skeleton mage", add_levels=10}})
else
    --same as before
	defineTile('m', "FLOOR", {random_filter={type="scroll", ego_chance=25, add_levels=4}})
end

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

return {
[[.........]],
[[.bXXXXXa.]],
[[.XmSmSmX.]],
[[.XXXDXXX.]],
[[.X..M..X.]],
[[.X.N.H.X.]],
[[.X..M..X.]],
[[.XDX!XDX.]],
[[.XWX.XWX.]],
[[.cXX.XXd.]],
[[.........]],
}

Razakai
Uruivellas
Posts: 889
Joined: Tue May 14, 2013 3:45 pm

Re: Some variations for the early vaults

#3 Post by Razakai »

I think more variety in general for TOME would be good. This is definitely a good idea though, I'd enjoy opening vaults and finding something new every time. I wouldn't mind seeing more 'big' vaults either like the bandit fortress and the multihued wyrm lair, those effectively act as entire alternate levels which is fun. Maybe have a couple for each zone to further vary things?

HousePet
Perspiring Physicist
Posts: 6215
Joined: Sun Sep 09, 2012 7:43 am

Re: Some variations for the early vaults

#4 Post by HousePet »

Could be interesting to have the occasional non randomly generated map as well.
My feedback meter decays into coding. Give me feedback and I make mods.

Post Reply