Vault contest!

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

Moderator: Moderator

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

Re: Vault contest!

#31 Post by Goblinz »

well here is another entry by me. its not quite a mega vault but it is large. the fun feature about this vault is the crenelations that allow archers on the walls to fire into the courtyard. I may make variants of this fortress with different enemies (like undead)

Code: Select all

setStatusAll{no_teleport=true}
local Talents = require("engine.interface.ActorTalents")

defineTile('.', "FLOOR")
defineTile('!', "DOOR_VAULT", nil, nil, nil, {room_map={special=false, room=false, can_open=true}})
defineTile('+', "DOOR")
defineTile('x', "WALL")
defineTile('t', "TREE")
defineTile('X', "HARDWALL")
defineTile('H', "FLOOR", nil, {random_filter={add_levels=10, subtype = "minotaur"}})
defineTile('a', "FLOOR", nil, {random_filter={type = "animal"}})
defineTile('L', "FLOOR", {random_filter={add_levels=15, tome_mod="gvault"}})
defineTile('$', "FLOOR", {random_filter={add_levels=25, type="money"}})
defineTile('~', "DEEP_WATER")
defineTile('-', mod.class.Grid.new{
	define_as = "OPENWALL",
	name = "ledge", 
	display = '#', color_r=255, color_g=255, color_b=255, back_color=colors.DARK_GREY,
	does_block_move = true,
	block_sight = false,
	pass_projectile = true,
	})
defineTile('#', mod.class.Grid.new{
	define_as = "OPENWALL",
	name = "bed", 
	display = '#', color_r=200, color_g=200, color_b=0, back_color=colors.DARK_GREY,
	does_block_move = true,
	block_sight = false,
	pass_projectile = true,
	})
defineTile('%', mod.class.Grid.new{
	define_as = "OPENWALL",
	name = "fence", 
	display = '#', color_r=255, color_g=255, color_b=0, back_color=colors.DARK_GREY,
	does_block_move = true,
	block_sight = false,
	pass_projectile = true,
	})	
defineTile('h', "FLOOR", nil, mod.class.NPC.new{
	type = "humanoid", subtype = "halfling",
	display = "p", color=colors.GOLD,
	name = "halfling beastmaster",
	faction = "enemies", hard_faction = "enemies",
	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
	desc = [[A halfling with a sling that commands the beasts]],
	level_range = {10, 50}, exp_worth = 1,
	rank = 2,
	size_category = 2,
	autolevel = "warriormage",
	ai = "dumb_talented_simple", ai_state = { talent_in=4, },
	stats = { str=12, dex=18, mag=6, con=10 },
	max_life = resolvers.rngavg(140,170),
	combat_armor = 4, combat_def = 14,
	resolvers.equip{
		resolvers.equip{ {type="weapon", subtype="sling", autoreq=true}, {type="ammo", subtype="shot", autoreq=true} },
	},
	resolvers.talents{
		[Talents.T_SHOOT]=1,
		[Talents.T_STEADY_SHOT]=4,
		[Talents.T_CRIPPLING_SHOT]=4,
		[Talents.T_SLING_MASTERY]=7,
	},
}
)	
startx = 0
starty = 6

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

return {
[[XXXXXXXXXXXXXXX!!XXXXXXXXXXXXXXXX]],
[[X.............x..x..........H...X]],
[[X....h....H...x..x.........h....X]],
[[X..x--xx--....-..-....--xx--xx..X]],
[[X..x.....-..h.-..-..h.-......x..X]],
[[X..-...a.x....x..x....x......-h.X]],
[[Xh.-.a...xx--xx..xx--xx...a..-..X]],
[[X..x....~~~~~....a.~~~~~.....x..X]],
[[X..x--..~...~..H...~...~...--x..X]],
[[X....-..~.t.~....H.~.tH~...-....X]],
[[Xh...-..~...~...a..~...~...-..H.X]],
[[X..x.-..~~~~~......~~~~~.a.-.x..X]],
[[X.Hx.-..~...~.h.H..~.H.~...-.x..X]],
[[X..-...h~.t.~......~.t.~h....-h.X]],
[[Xh.-....~...~...H..~...~.....-..X]],
[[X..x.a..~~~~~......~~~~~.....x..X]],
[[X..x....XXXXXXX++XXXXXXX.....x..X]],
[[X..-....X..h.X....X.L$.X.....-..X]],
[[X..-....X..##X....XL.L.X.....-..X]],
[[X..x....X..h.X....X.L$.X.....x..X]],
[[X..x....X..##X....XHh$LX.....x..X]],
[[X..-..h.X..h.X....X.LL.X..H..-.HX]],
[[X..-....X..##X....XH$.LX.....-..X]],
[[X..x..H.X..H.X.HH.X.Lh$X...t.x..X]],
[[X..x....X..##Xh..hX...LX..h..x..X]],
[[Xh.-....XH...X.HH.X.H..X.....-..X]],
[[X..-....X++XXX....XXX++X..t..-h.X]],
[[X..x....X...H......H...X+%%%%x..X]],
[[X..x..t.X..h........h..X...a.x..X]],
[[X..-....XXXXXX....XXXXXX.aaa.-..X]],
[[X.h-.HH.XL.L$X....XL.L$X.aaa.-h.X]],
[[X..x..h.X.H..X....X..H.Xaa..ax..X]],
[[X..xx...X.h..+....+..h.X.aa.xx..X]],
[[X...xx--XXXXXXXXXXXXXXXXxx--x...X]],
[[X.....h..........H........h.....X]],
[[X..............h....h...........X]],
[[XXXXXXXXXXXXXXxxxxXXXXXXXXXXXXXXX]],
}
Those who complain are just Volunteering to fix the problem

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

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

Re: Vault contest!

#32 Post by Hedrachi »

My submission for contest #2: A dragon farm that's about to get an unpleasant surprise. Basically, xorns, xarens, and whatnot are about to cause a cave-in, so all tiles (including the monster/loot tiles) that aren't already walls have a chance to collapse like in SWL.

Code: Select all

-- setStatusAll{no_teleport=true}
-- Uncomment that if the collapse mechanism can't create a safe path for the player to get out.

defineTile('.', "FLOOR")
defineTile('~', "CAVEIN")
-- Cave-in: Cause at random, 15% of the floor tiles to become hardwalls (or just walls if the player can't move out of a hardwall. Acts as a regular wall for the
-- purposes of the xaren.
-- Same "uhoh" mentality as SWL: You can't breathe in a wall, and suddenly having the stone ceiling crash on you isn't going to feel good either.
-- If all 4 have been dug through, 60% of the floor is now wall. If hardwall, that's not only xp the player missed, but gear the player can't get at either.
defineTile('X', "HARDWALL")
defineTile('#', "WALL")
defineTile('-', "DOOR")
-- Maybe to make things interesting, as soon as one of the cave-in tiles is breached, have all doors open. Hee. Lots of fun.
defineTile('+', "DOOR_VAULT")
defineTile('A', "FLOOR", nil, {random_filter={add_levels=5}, type = "humanoid"})
defineTile('B', "FLOOR", nil, {random_filter={add_levels=10}, type = "humanoid"})
defineTile('C', "FLOOR", {random_filter={add_levels=10, tome_mod="gvault"}}, {random_filter={add_levels=20, type = "humanoid"}})
-- A, B, and C should be related in some fashion, such as "cutpurse/bandit/bandit lord" or "orc fighter/orc berserker/orc elite berserker"
defineTile('W', "FLOOR", {random_filter={add_levels=20, tome_mod="gvault"}}, {random_filter={add_levels=15, type = "dragon", subtype = "wyrm"}})
defineTile('D', "FLOOR", {random_filter={add_levels=10, tome_mod="vault"}}, {random_filter={add_levels=10, type = "dragon", subtype = "drake"}})
defineTile('d', "FLOOR", nil, {random_filter={add_levels=5, type = "dragon", subtype = "hatchling"}})
-- W, D and d should be of the same colour: In essence, this place is a "dragon farm" and the mothers are watching over their hatchlings, but are in some way unable
-- to defend themselves against the humanoids holding them hostage. Maybe have W perma-pinned?
defineTile('x', "FLOOR", nil, {random_filter={add_levels=15, type = "xaren"}})
-- They'll start moving towards the player once the player is at the row where the C goons are.

startx = 15
starty = 21

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

return {
[[XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX]],
[[X##x######x###########x####x#X]],
[[X####x#############x#####x###X]],
[[X############x###############X]],
[[XXXXX~XXXXXX~XXXXX~XXXX~XXXXXX]],
[[XWdDX....................XDdWX]],
[[Xddd-....................-dddX]],
[[XDddX.....AA......AA.....XddDX]],
[[XXXXX.....AA......AA.....XXXXX]],
[[X............................X]],
[[XXXXX.....BB......BB.....XXXXX]],
[[XWddX....................XDdWX]],
[[Xddd-.........CC.........-dddX]],
[[XdddX....................XddDX]],
[[XXXXX.....BB......BB.....XXXXX]],
[[X............................X]],
[[XXXXX.....AA......AA.....XXXXX]],
[[XDddX.....AA......AA.....XDdWX]],
[[Xddd-....................-dddX]],
[[XdddX....................XddDX]],
[[XXXXXXXXXXXXXX+XXXXXXXXXXXXXXX]],
}
Edit: Made this thing slightly more... interesting.
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?

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

Re: Vault contest!

#33 Post by darkgod »

First, a note about Sus, he is becoming a father, congrats to him!

Now, as a present to him, and all you, next beta will feature two new terrain types: GENERIC_LEVER and GENERIC_LEVER_DOOR
Allowing you to make new deviant traps and wicked vaults.

Here is a usage example:

Code: Select all

defineTile('.', "FLOOR")
defineTile('=', "FLOOR", nil, nil, nil, {foobar=true})
defineTile('&', "GENERIC_LEVER", nil, nil, nil, {lever=1, lever_kind="foo", lever_radius=10, lever_block="foobar"})
defineTile('+', "GENERIC_LEVER_DOOR", nil, nil, nil, {lever_action=3, lever_action_only_once=true, lever_action_value=0, lever_action_kind="foo"})
defineTile('"', "FLOOR", nil, nil, nil, {lever_action_value=0, lever_action_only_once=true, lever_action_kind="foo", lever_action_custom=function(i, j, who, val, old)
	if val == 3 then
		game.level.map:particleEmitter(i, j, 5, "ball_fire", {radius=5})
		return true
	end
end})

return {
[[...........]],
[[...+.......]],
[[..=====....]],
[[........"..]],
[[..&.&.&....]],
[[...........]],
[[....+......]],
[[...........]],
}
So how does it work:
- when a lever is used it will send a "pulse" of type lever_kind in a radius of "lever_radius" (stopped by any grids with an attribute equal to lever_block) with value "lever"
- any grids with a "lever_action_kind" equal to the pulse kind will trigger, its "lever_action_value" will be increased/decreased by the pulse value (if the lever is turned on or off)
- "lever_action_custom" will trigger, if any
- for GENERIC_LEVER_DOOR the door will open if it received at least "lever_action" combined pulse values
- if a grid has "lever_action_only_once" it will only trigger once (if the trigger function returns true)

In the example I gave it means that once all three levers are triggered the door to the south will open and a particle effect will fire of the north east. The northen door will never open because it is "protected" by lever_block (invisible to the player it is all floor to him)

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 ;)

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

Re: Vault contest!

#34 Post by Grey »

Congrats to Sus! Levers give me some cool ideas... :)
http://www.gamesofgrey.com - My own T-Engine games!
Roguelike Radio - A podcast about roguelikes

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

Re: Vault contest!

#35 Post by Final Master »

I now must create so many of the legendary Legend of Zelda puzzle rooms now!
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

marvalis
Uruivellas
Posts: 683
Joined: Sun Sep 05, 2010 5:11 am

Re: Vault contest!

#36 Post by marvalis »

Code: Select all

defineTile('=', "FLOOR", nil, nil, nil, {foobar=true})
defineTile('&', "GENERIC_LEVER", nil, nil, nil, {lever=1, lever_kind="foo", lever_radius=10, lever_block="foobar"})
lever_block=foobar took me a while to figure out, but it's actually quite clever. If I understand it right you can block different triggers at different points by using a different 'foobar'.

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

Re: Vault contest!

#37 Post by darkgod »

Yeah :)
[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 ;)

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

Re: Vault contest!

#38 Post by darkgod »

Next beta will have improved support for levers.
In the example bellow, the HARDWALL (tile 6) is actually a secret passage, when bumped into it will turn into floor.
The generic lever door tile 5 is a toggle, every time it receives a signal it will switch from open to close/close to open
Also, not shown in the example, both lever_kind and lever_action_kind can be either strings or tables.
If it is a table it will send multiple signals. The syntax is: lever_kind = {fooo=true, bar=true}

Code: Select all

defineTile('.', "FLOOR")
defineTile('=', "FLOOR", nil, nil, nil, {foobar=true})
defineTile('&', "GENERIC_LEVER", nil, nil, nil, {lever=1, lever_kind="foo", lever_radius=10, lever_block="foobar"})
defineTile('+', "GENERIC_LEVER_DOOR", nil, nil, nil, {lever_action=3, lever_action_value=0, lever_action_kind="foo"})
defineTile('5', "GENERIC_LEVER_DOOR", nil, nil, nil, {lever_toggle=true, lever_action_kind="foo"})
defineTile('6', "HARDWALL", nil, nil, nil, {on_block_change="FLOOR", on_block_change_msg="Ahah it opens!"})
defineTile('"', "FLOOR", nil, nil, nil, {lever_action_value=0, lever_action_only_once=true, lever_action_kind="foo", lever_action_custom=function(i, j, who, val, old)
	if val == 3 then
		game.level.map:particleEmitter(i, j, 5, "ball_fire", {radius=5})
		return true
	end
end})

return {
[[...........]],
[[...+.6.....]],
[[..=====....]],
[[........"..]],
[[..&.&.&....]],
[[...........]],
[[....+5.....]],
[[...........]],
}
[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 ;)

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

Re: Vault contest!

#39 Post by marchewka »

Three quickies to help with creation of new vaults:

1# How to create floor tile that contains item OR monster OR trap?

2# Similarly - how to create a tile that produces an item with some % chance?

3# How to create newEntity that does something randomly (say, swaps between two possible shadersr with 1/4 chance each game turn)

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

Re: Vault contest!

#40 Post by urmane »

crypt-trap2.lua

Code: Select all

-- Crypt 2 by urmane (Jim Niemira)

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

defineTile('.', "FLOOR")
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", {random_filter={add_levels=5, tome_mod="vault"}}, nil, {random_filter={add_levels=5, name="intruder alarm"}})
defineTile('U', "FLOOR", nil, {random_filter={add_levels=5, type="skeleton"}})
defineTile('+', "GENERIC_LEVER_DOOR", nil, nil, nil, {lever_action=1, lever_action_value=0, lever_action_kind="crypt_door"})
defineTile('&', "GENERIC_LEVER", nil, nil, nil,
           {lever=1, lever_kind="crypt_door", lever_radius=8, lever_block="crypt_door_block"})


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

return {
[[.............]],
[[.###########.]],
[[.#U#U#U#$###.]],
[[.#+#+#+#+###.]],
[[.!.......&##.]],
[[.#+#+#+#+###.]],
[[.#U#U#U#$###.]],
[[.###########.]],
[[.............]],
}

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

Re: Vault contest!

#41 Post by urmane »

crypt-trap3.lua

Code: Select all

-- Crypt 3 by urmane (Jim Niemira)

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

defineTile('.', "FLOOR")
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", {random_filter={add_levels=5, tome_mod="vault"}}, nil, {random_filter={add_levels=5, name="intruder alarm"}})
defineTile('U', "FLOOR", nil, {random_filter={add_levels=15, type="skeleton"}})
defineTile('+', "GENERIC_LEVER_DOOR", nil, nil, nil, {lever_action=1, lever_action_value=0, lever_action_kind="crypt_door"})
defineTile('&', "GENERIC_LEVER", nil, nil, nil,
           {lever=1, lever_kind="crypt_door", lever_radius=8, lever_block="crypt_door_block"})


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

return {
[[.............]],
[[.###########.]],
[[.#.#U#.#$###.]],
[[.#+#+#+#+###.]],
[[.!.......&##.]],
[[.#+#+#+#+###.]],
[[.#U#.#U#$###.]],
[[.###########.]],
[[.............]],
}

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

Re: Vault contest!

#42 Post by urmane »

crypt-trap4.lua

Code: Select all

-- Crypt 4 by urmane (Jim Niemira)

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

defineTile('.', "FLOOR")
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", {random_filter={add_levels=5, tome_mod="vault"}}, nil, {random_filter={add_levels=5, name="intruder alarm"}})
defineTile('U', "FLOOR", nil, {random_filter={add_levels=5, type="undead"}})
defineTile('+', "GENERIC_LEVER_DOOR", nil, nil, nil, {lever_action=1, lever_action_value=0, lever_action_kind="crypt_door"})
defineTile('&', "GENERIC_LEVER", nil, nil, nil,
           {lever=1, lever_kind="crypt_door", lever_radius=8, lever_block="crypt_door_block"})


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

return {
[[.............]],
[[.###########.]],
[[.#U#U#U#$###.]],
[[.#+#+#+#+###.]],
[[.!.......&##.]],
[[.#+#+#+#+###.]],
[[.#U#U#U#$###.]],
[[.###########.]],
[[.............]],
}

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

Re: Vault contest!

#43 Post by urmane »

crypt-trap5.lua

Code: Select all

-- Crypt 5 by urmane (Jim Niemira)

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

defineTile('.', "FLOOR")
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", {random_filter={add_levels=5, tome_mod="vault"}}, nil, {random_filter={add_levels=5, name="intruder alarm"}})
defineTile('=', "FLOOR", {random_filter={add_levels=5, tome_mod="gvault"}})
defineTile('U', "FLOOR", nil, {random_filter={add_levels=10, type="undead"}})
defineTile('+', "GENERIC_LEVER_DOOR", nil, nil, nil, {lever_action=1, lever_action_value=0, lever_action_kind="crypt_door"})
defineTile('&', "GENERIC_LEVER", nil, nil, nil,
           {lever=1, lever_kind="crypt_door", lever_radius=8, lever_block="crypt_door_block"})
defineTile('2', "HARDWALL", nil, nil, nil, {on_block_change="FLOOR", on_block_change_msg="You discovered a secret room!"})


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

return {
[[.............]],
[[.###########.]],
[[.#U#U#U#$2=#.]],
[[.#+#+#+#+###.]],
[[.!.......&##.]],
[[.#+#+#+#+###.]],
[[.#U#U#U#$###.]],
[[.###########.]],
[[.............]],
}

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

Re: Vault contest!

#44 Post by urmane »

forest-ruined-building4.lua

Code: Select all

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

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

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

defineTile('.', "FLOOR")
defineTile(',', "GRASS")
defineTile('#', "WALL")
defineTile('X', "TREE")
defineTile('x', "DOOR_VAULT")
defineTile('$', "FLOOR", {random_filter={add_levels=20, type="money"}})
defineTile('T', "FLOOR", nil, {random_filter={name="forest troll", add_levels=4}})
defineTile('%', "FLOOR", {random_filter={add_levels=5, tome_mod="vault"}})

return {
[[,XXX,XXXXXXX,]],
[[XXX,XXXXXXXXX]],
[[XX,,##,,,,,XX]],
[[XX,##,,TXX$XX]],
[[XX,#$,.,.X%XX]],
[[XX,#$.,,.X#XX]],
[[XX,#$,.,,T#XX]],
[[XX,####x###XX]],
[[XX,,,,,,,,,XX]],
[[XXXXXXXXXXXXX]],
[[,XXXXXXXXXXX,]],
}

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

Re: Vault contest!

#45 Post by urmane »

forest-ruined-building5.lua

Code: Select all

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

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

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

defineTile('.', "FLOOR")
defineTile(',', "GRASS")
defineTile('#', "WALL")
defineTile('X', "TREE")
defineTile('x', "DOOR_VAULT")
defineTile('$', "FLOOR", {random_filter={add_levels=20, type="money"}})
defineTile('T', "FLOOR", nil, {random_filter={name="forest troll", add_levels=4}})
defineTile('%', "FLOOR", {random_filter={add_levels=5, tome_mod="vault"}})

return {
[[,XXX,XXXXXXX,]],
[[XXX,XXXXXXXXX]],
[[XX,,##,,,T,XX]],
[[XX,##,,,XX$XX]],
[[XX,#.,.,.X%XX]],
[[XX,#..,,.X#XX]],
[[XX,#T,.,,$#XX]],
[[XX,####x###XX]],
[[XX,,,,,,,,,XX]],
[[XXXXXXXXXXXXX]],
[[,XXXXXXXXXXX,]],
}

Post Reply