Call for mappers

All development conversation and discussion takes place here

Moderator: Moderator

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

Call for mappers

#1 Post by darkgod »

Hello

ToME now supports vaults!
Well, so now we need vaults!

So if some kind soul wants to contribute to the project in a non-code way, here is your chance!

Please say with your vault how rare you think it should be and in what zones it could appear

Example of a vault file:

Code: Select all

defineTile('.', "FLOOR")
defineTile('#', "FLOOR")
defineTile('X', "WALL")
defineTile('8', "FLOOR", {random_filter={add_levels=15}}, {random_filter={add_levels=20}})

return {
[[.......................................]],
[[.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.]],
[[.#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8X.]],
[[.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#X.]],
[[.X8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8X.X.]],
[[.X#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#X#X.]],
[[.X8X8#8#8#8#8#8#8#8#8#8#8#8#8#8#8X8X.X.]],
[[.X#X#XXXXXXXXXXXXXXXXXXXXXXXXXXX#X#X#X.]],
[[.X8X8X8#8#8#8#8#8#8#8#8#8#8#8#8#8X8X.X.]],
[[.X#X#X#XXXXXXXXXXXXXXXXXXXXXXXXXXX#X#X.]],
[[.X8X8X8#8#8#8#8#8#8#8#8#8#8#8#8#8#8X.X.]],
[[.X#X#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#X.]],
[[.X8X8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#.X.]],
[[.X#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.]],
[[.X8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#.]],
[[.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.]],
[[.......................................]],
}
[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 ;)

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

Re: Call for mappers

#2 Post by edge2054 »

Like this?

Code: Select all

defineTile('.', "FLOOR")
defineTile('T', "TRAP")
defineTile('D', "DOOR")
defineTile('X', "WALL", {random_filter={add_levels=15}}, {random_filter={add_levels=20}})

return {
[[.........]],
[[.XXXXXXX.]],
[[.XTTTTTX.]],
[[.XT...TX.]],
[[.XT...TX.]],
[[.XT...TX.]],
[[.XTTTTTX.]],
[[.XXXDXXX.]],
[[.........]],
}
Vault A.
Vault should be no teleport and have a single out of depth Lich npc.
Vault should generate Lich in the center and he should not move.
Lich offers player a quest to retrieve a book from his library claiming that they will be greatly rewarded for their efforts.

Vault B.

Code: Select all

defineTile('.', "FLOOR")
defineTile('T', "TRAP")
defineTile('D', "DOOR")
defineTile('X', "WALL", {random_filter={add_levels=15}}, {random_filter={add_levels=20}})

return {
[[.............]],
[[.XXXXXDXXXXX.]],
[[.X.XXX.XXX.X.]],
[[.X.DTT.TTD.X.]],
[[.X.XXX.XXX.X.]],
[[.XXXXX.XXXXX.]],
[[.X...X.X...X.]],
[[.X...D.X...X.]],
[[.X...XTXXTXX.]],
[[.XXDXX.XXTXX.]],
[[.X...XTXXTXX.]],
[[.XXXXXDXXDXX.]],
[[.X.........X.]],
[[.X.XXXXXXX.X.]],
[[.X.........X.]],
[[.X.XXXXXXX.X.]],
[[.X.........X.]],
[[.XXXXXXXXXXX.]],
[[.............]],
}
The book should be generated in the room with the three walls. The three by two room at the end of the trapped hallway should be a treasure vault, generating ego items or whatever.

Monsters should consist of skeletons and golems (the lich's guardians) along with a few possible molds.

Vault should be relatively common since it's more of a quest then a proper vault.

Possible spawn locations would be Tol Falos, Amon-Sul, and Moria.

As to the reward...

For undead the Lich will teach the player to use Phase Door, grant access to the Conveyance school, or increase the players magic by 2 or willpower by 1. He also tells the player that he can keep what he 'found' in the Lich's home.

For non-undead the Lich 'thanks' them for setting him free and tells them that their reward is an eternity as his loyal servant. The lich then goes about making this happen, attacking the player to prepare them for their everlasting life.

The lich should drop good loot. Two guaranteed egos, one always being mage appropriate if possible.

Lich would probably make a good necromancer once that class is finished. For an early iteration though a mage would work.

Repton
Archmage
Posts: 371
Joined: Wed Aug 05, 2009 2:17 am

Re: Call for mappers

#3 Post by Repton »

edge2054 wrote:Like this?

Code: Select all

defineTile('.', "FLOOR")
defineTile('T', "TRAP")
defineTile('D', "DOOR")
defineTile('X', "WALL", {random_filter={add_levels=15}}, {random_filter={add_levels=20}})
The signature for defineTile is:

Code: Select all

defineTile = function(char, grid, obj, actor, trap, status, spot)
There's an example of specifying traps in the Caverns of Osse map:

Code: Select all

defineTile('^', "WATER_FLOOR", nil, nil, {random_filter={}})
I presume random_filter={} just means "generate randomly, appropriate for the level".

So this line:

Code: Select all

defineTile('X', "WALL", {random_filter={add_levels=15}}, {random_filter={add_levels=20}})
is saying "Put a wall here, and also generate an object 15 levels better, and an NPC 20 levels better" :-)

(I've also got no idea why darkgod has two different floor tiles in his example..)

Repton
Archmage
Posts: 371
Joined: Wed Aug 05, 2009 2:17 am

Re: Call for mappers

#4 Post by Repton »

Here's at attempt from me:

Code: Select all

defineTile(' ', "FLOOR")
defineTile('+', "DOOR")
defineTile('X', "WALL")
defineTile('^', "FLOOR", nil, nil, {random_filter={add_levels=10}})
defineTile('$', "FLOOR", {random_filter={add_levels=15}})
defineTile('m', "FLOOR", nil, {random_filter={add_levels=20}})
defineTile('o', "FLOOR", nil, "HILL_ORC_ARCHER")

return {
[[XXXXXXXXXXXXXXXXXXXXXX]],
[[XoommmmmmmmommmmmmmmmX]],
[[X$$XXXXXXXX XXXXXXXXmX]],
[[X$$XXXXXXXX XXXXXXXXmX]],
[[X$$XXXXXXXX XXXXXXXX+X]],
[[X$$X^^^^^^^^^^^^$$^^^X]],
[[X$$X^^  ^^^^^ ^^^^^^^X]],
[[X$$+  ^^ ^   ^ ^^^^  +]],
[[X$$X^^^^^ ^^^^^ ^^ ^^X]],
[[X$$X^^$$^^^^^^^^  ^^^X]],
[[X$$XXXXXXXX XXXXXXXX+X]],
[[X$$XXXXXXXX XXXXXXXXmX]],
[[X$$XXXXXXXX XXXXXXXXmX]],
[[XoommmmmmmmommmmmmmmmX]],
[[XXXXXXXXXXXXXXXXXXXXXX]],
}
Tol Falas, Moria, maybe it would work well in the town-style prides..

Do I need a ring of floor tiles around the edge? Are vaults diggable/teleportable?

Repton
Archmage
Posts: 371
Joined: Wed Aug 05, 2009 2:17 am

Re: Call for mappers

#5 Post by Repton »

This is for places with dragons, obviously:

Code: Select all

defineTile(' ', "FLOOR")
defineTile('+', "DOOR")
defineTile('X', "WALL")
defineTile('$', "FLOOR", {random_filter={add_levels=15}})
defineTile('D', "FLOOR", {random_filter={add_levels=20}}, "GREATER_MULTIHUED_WYRM")
defineTile('d', "FLOOR", nil, "MULTIHUED_DRAKE_HATCHLING")

return {
[[XXXXXXXXXXXXXXXXXXXXXXXXXXX]],
[[XXXXXXXXXXXXXXXXXXXXXXXXXXX]],
[[XXXXXdddXXXXXXXXdXXXXXXXXXX]],
[[XXdXXXXXd    XXXXdXXX   XXX]],
[[XXdXXX   $$$  dXddXXX X  XX]],
[[XXXdd   $$$$$  dXXX   XX XX]],
[[XXd    $$$D$$$      XXXX XX]],
[[XXX     $$$$$   XXXXXXXX   ]],
[[XXXXXXd  $$$   XXXXXXXXXXXX]],
[[XXXXXXdX    dXXXdXXXXXXXXXX]],
[[XXXXXXdXXXXXXdddXXXXXXXXXXX]],
[[XXXXXdXXXXXXXXXXXXXXXXXXXXX]],
[[XXXXXXXXXXXXXXXXXXXXXXXXXXX]],
}
There was no "define_as" for multihued wyrms/drakes, so I'm not sure I can actually specify them like this..

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

Re: Call for mappers

#6 Post by Burb Lulls »

Diggers, try your luck!

Code: Select all

defineTile('.', "FLOOR")
defineTile('^', "FLOOR", nil, nil, {random_filter={}})
defineTile('#', "WALL")
defineTile('+', "DOOR")
defineTile('o', "FLOOR", nil, {random_filter={add_levels=5}})
defineTile('O', "FLOOR", nil, {random_filter={add_levels=10}})
defineTile('5', "FLOOR", {random_filter={add_levels=10}}, {random_filter={}})
defineTile('4', "FLOOR", nil, {random_filter={}})
defineTile('3', "FLOOR", {random_filter={add_levels=5}}, {random_filter={add_levels=15}})
defineTile('2', "FLOOR", {random_filter={add_levels=20}}, {random_filter={add_levels=30}})
defineTile('1', "FLOOR", nil, {random_filter={add_levels=30}})

return {
[[..............................]],
[[..........##########..........]],
[[.....######O.O..O.O######.....]],
[[.....#..................#.....]],
[[.#####.###.###..###.###.#####.]],
[[.#.....#3#^#1#..#4#^#3#.....#.]],
[[.#.o.#.###.###..###.###.#.o.#.]],
[[.#.o.#..^...^....^...^..#.o.#.]],
[[.#.O...###.###..###.###...O.#.]],
[[.#.O...#4#^#3#..#5#^#2#...O.#.]],
[[.#.o.#.###.###..###.###.#.o.#.]],
[[.#.o.#..................#.o.#.]],
[[.#..........................#.]],
[[.#############++#############.]],
[[...#..#oo...#^oo^#...oo#..#...]],
[[...#..#..#..#^oo^#..#..#..#...]],
[[...+.....#..........#.....+...]],
[[...########################...]],
[[..............................]],
}
The surrounding enemies are less than impressive, but inside the eight chambers are either:
  • An average monster guarding a good treasure.
  • An average monster guarding nothing.
  • An above-average monster guarding an okay treasure.
  • A very difficult monster guarding a great treasure.
  • A very difficult monster guarding nothing!
Ideally, I'd want the chambers to be randomised each time, but I have no idea how to do that, and also to be immune to sensing, but I'm not even sure that's possible. I made sure every chamber had at least a monster in it, to stop any sneaky phase doors.

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

Re: Call for mappers

#7 Post by darkgod »

Yeah neat exactly what I need!
Keep them coming!
[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 ;)

Repton
Archmage
Posts: 371
Joined: Wed Aug 05, 2009 2:17 am

Re: Call for mappers

#8 Post by Repton »

One for the Trollshaws:

Code: Select all

defineTile(' ', "FLOOR")
defineTile('+', "DOOR")
defineTile('X', "TREE")
defineTile('^', "FLOOR", nil, nil, {random_filter={add_levels=5}})
defineTile('#', "FLOOR", nil, "HONEY_TREE")
defineTile('q', "FLOOR", {random_filter={add_levels=10}}, "BROWN_BEAR")
defineTile('Q', "FLOOR", {random_filter={add_levels=20}}, "GRIZZLY_BEAR")

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]],
}

Repton
Archmage
Posts: 371
Joined: Wed Aug 05, 2009 2:17 am

Re: Call for mappers

#9 Post by Repton »

Here's a crypt; suit Tol Falas, Rak-Shor pride, maybe Moria.

Code: Select all

defineTile(' ', "FLOOR")
defineTile('+', "DOOR")
defineTile('X', "WALL")
defineTile('^', "FLOOR", {random_filter={add_levels=5}}, nil, {random_filter={add_levels=5}})
defineTile('u', "FLOOR", {random_filter={}}, "LESSER_VAMPIRE")
defineTile('v', "FLOOR", {random_filter={add_levels=5}}, "VAMPIRE")
defineTile('U', "FLOOR", {random_filter={add_levels=10}}, "MASTER_VAMPIRE")
defineTile('V', "FLOOR", {random_filter={add_levels=15}}, "ELDER_VAMPIRE")
defineTile('!', "FLOOR", {random_filter={add_levels=20}}, "VAMPIRE_LORD")
defineTile('W', "FLOOR", {random_filter={add_levels=15}}, "GRAVE_WIGHT")

return {
[[XXXXXXXXXXXXXXXXXXXXXXXXXXXXX]],
[[XX^^^X^^^X^^^X^^^XXXXXXXXXXXX]],
[[XX^u^X^v^X^U^X^V^XXXX^WXXXXXX]],
[[XX^ ^X^ ^X^ ^X^ ^XXXX^  WXXXX]],
[[XXX XXX XXX XXX XXXXX^ XXXXXX]],
[[XXX+XXX+XXX+XXX+XXXXX^  !XXXX]],
[[                   +   XXXXXX]],
[[XXXXX+XXX+XXX+XXX+XXX^  !XXXX]],
[[XXXXX XXX XXX XXX XXX^ XXXXXX]],
[[XXXX^ ^X^ ^X^ ^X^ ^XX^  WXXXX]],
[[XXXX^u^X^v^X^U^X^V^XX^WXXXXXX]],
[[XXXX^^^X^^^X^^^X^^^XXXXXXXXXX]],
[[XXXXXXXXXXXXXXXXXXXXXXXXXXXXX]],
}

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

Re: Call for mappers

#10 Post by darkgod »

Added!
Keep them coming !
[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 ;)

Repton
Archmage
Posts: 371
Joined: Wed Aug 05, 2009 2:17 am

Re: Call for mappers

#11 Post by Repton »

Burb Lulls wrote: Ideally, I'd want the chambers to be randomised each time, but I have no idea how to do that,
You could get the effect of randomisation by just making several versions of the same vault, with the monsters in different places..

Repton
Archmage
Posts: 371
Joined: Wed Aug 05, 2009 2:17 am

Re: Call for mappers

#12 Post by Repton »

A hostel building for town-style maps:

Code: Select all

defineTile(' ', "FLOOR")
defineTile('+', "DOOR")
defineTile('X', "WALL")
defineTile('$', "FLOOR", {random_filter={add_levels=10}})
defineTile('~', "FLOOR", {random_filter={add_levels=5}}, nil, {random_filter={add_levels=5}})
defineTile('^', "FLOOR", nil, nil, {random_filter={add_levels=5}})
defineTile('o', "FLOOR", {random_filter={add_levels=10}}, {random_filter={add_levels=10}})
defineTile('O', "FLOOR", {random_filter={add_levels=15}}, {random_filter={add_levels=15}})
defineTile('P', "FLOOR", {random_filter={add_levels=20}}, {random_filter={add_levels=20}})

return {
[[XXXXXXXXXXXXXXXXXXXXXXXXXXXXX]],
[[X~~^+                   ^+$$X]],
[[X~~^X XXXXXX+XXX+XXXXXX+XXXXX]],
[[XXXXX X ooXo  X   XPPX   $o X]],
[[X$$$X + ooX o X o XOOXo$oo  X]],
[[X   X X ooX XXX~~$X$$XXXX   X]],
[[XO ^X X ooXo OX$$~X$o      oX]],
[[XO ^+ XXXXXXXXXXXXXXXXXXXXXXX]],
[[XO ^X                      ^+]],
[[XXXXX+XXX+XXXXX+XXX+XXXXX+XXX]],
[[X~XX   XO  +$X   Xo  +$X   XX]],
[[X$XX   X O XXXO oX  oXXX o XX]],
[[X$~+ P Xo  XP+   X O X$+  oXX]],
[[XXXXXXXXXXXXXXXXXXXXXXXXXXXXX]],
}

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

Re: Call for mappers

#13 Post by darkgod »

I can randomize it ;)

Thanks keep them coming:
[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 ;)

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

Re: Call for mappers

#14 Post by Burb Lulls »

It's possible to get to the treasure without fighting a soul. However...

Code: Select all

defineTile('.', "FLOOR")
defineTile('#', "WALL")
defineTile('+', "DOOR")
defineTile('X', "FLOOR", nil, {random_filter={add_levels=15}})
defineTile('$', "FLOOR", {random_filter={add_levels=10}})

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

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

Re: Call for mappers

#15 Post by darkgod »

Added added added ! :)

I'll work on making vaults possible in places not using Roomer generator (like the prides and the trollshaws)

Keep them coming !

BTW I made all vaults have sealed doors that only the player can open, with a visual prompt, and all have hard walls, that prevent esp, detection and magic mapping them from the exterior :)
[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 ;)

Post Reply