Call for mappers

All development conversation and discussion takes place here

Moderator: Moderator

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

Re: Call for mappers

#46 Post by Burb Lulls »

I think DG said he could randomise it earlier in the thread, and the last time I tried using LUA my house burnt down. :)

A more pressing concern for my first vault is that, looking at it in the game files, the walls around the enclosed items/monsters are undiggable!

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

Re: Call for mappers

#47 Post by edge2054 »

Amon Sul Crypt (with a couple surprises, one not so nice)

Code: Select all

setStatusAll{no_teleport=true}

defineTile('.', "FLOOR")
defineTile('X', "HARDWALL")
defineTile('!', "DOOR_VAULT")
defineTile('D', "DOOR")
defineTile('^', "FLOOR", nil, nil, {random_filter={add_levels=4}})
defineTile('S', "FLOOR", {random_filter={add_levels=4}}, {random_filter={name="degenerated skeleton warrior", add_levels=4}})
defineTile('A', "FLOOR", {random_filter={type="armor", ego_chance=25}}, nil)
defineTile('G', "FLOOR", nil, {random_filter={name="armoured skeleton warrior", add_levels=4}})
rotates = {"default", "90", "180", "270", "flipx", "flipy"}

return {
[[.........]],
[[...X^X...]],
[[..XX!XX..]],
[[.XXX^XXX.]],
[[.XSD.DSX.]],
[[.XXXGXXX.]],
[[.XSD.DAX.]],
[[.XXX^XXX.]],
[[..XX!XX..]],
[[...X^X...]],
[[.........]],
}
*edited* changed subtype to name and then tested it for good measure. the armored skeleton killed me :P

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

Re: Call for mappers

#48 Post by darkgod »

Added
[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

#49 Post by edge2054 »

Ratnest (tested).

Here's a couple destroyed rooms for Amon Sul that have been over run by rats and mold.

Code: Select all

setStatusAll{no_teleport=true}

defineTile('.', "FLOOR")
defineTile('D', "DOOR")
defineTile('X', "HARDWALL")
defineTile('M', "FLOOR", nil, {random_filter={subtype="molds", add_levels=4}})
defineTile('W', "FLOOR", nil, {random_filter={name="giant white rat"}})
defineTile('B', "FLOOR", {random_filter={type="money"}}, {random_filter={name="giant brown rat"}})
defineTile('G', "FLOOR", {random_filter={add_levels=4}}, {random_filter={name="giant grey rat"}})
rotates = {"default", "90", "180", "270", "flipx", "flipy"}

return {
[[.........WW......WW....]],
[[.XXXXXXXXX..XX..XX....W]],
[[.XMWWGWBGWX.XB..WW...X.]],
[[.DBWBXXWWBDWD..WXXB..D.]],
[[.XGBWBWWBMXWXM..MBG.MX.]],
[[.XXXXXXXXXXWXXXXXXXXX.W]],
[[...WW..............WW.W]],
}

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

Re: Call for mappers

#50 Post by edge2054 »

A skeleton mage cabal for Amon Sul doing whatever skeleton mages do when they get together in a group >.>

Tested

Code: Select all

setStatusAll{no_teleport=true}

defineTile('.', "FLOOR")
defineTile('D', "DOOR")
defineTile('!', "DOOR_VAULT")
defineTile('X', "HARDWALL")
defineTile('W', "FLOOR", {random_filter={subtype="staff", ego_chance=25, 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}})

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

return {
[[.........]],
[[.XXXXXXX.]],
[[.XSSSSSX.]],
[[.XXXDXXX.]],
[[.X..M..X.]],
[[.X.M.M.X.]],
[[.X..M..X.]],
[[.XDX!XDX.]],
[[.XWX.XWX.]],
[[.XXX.XXX.]],
[[.........]],
}

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

Re: Call for mappers

#51 Post by madmonk »

edge2054 wrote:A skeleton mage cabal for Amon Sul doing whatever skeleton mages do when they get together in a group
Roll the bones, baby, roll the bones!
Regards

Jon.

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

Re: Call for mappers

#52 Post by Susramanian »

I'm having a hard time with the syntax of defineTile(). I looked at a bunch of existing vault files, and there seems to be quite a bit of flexibility in how we fill in defineTile(). A few questions:

1) Is there a difference between single and double quotation marks?

2) Here's a line from vaults/crypt.lua:
defineTile('^', "FLOOR", {random_filter={add_levels=5}}, {random_filter={type="undead"}}, {random_filter={add_levels=5}})

The blue part influences objects on that tile, right? Then the next part tells you about the monster there, and then the red part... I don't know what it's doing. For quite a while I thought defineTile() had four fields or parameters or whatever the right lua word is, but this line has five.

3) Here's another line from vaults/crypt.lua:
defineTile('U', "FLOOR", {random_filter={add_levels=10, ego_chance=25}}, {random_filter={add_levels=10, type="undead", subtype="vampire", name="master vampire"}})

Isn't the stuff in blue redundant? Stating just the name of the monster to be placed should do exactly the same thing, right?

4) Do the following lines accomplish the same thing? I couldn't find a consistent approach to tossing those nils in.
defineTile('$', "FLOOR", {random_filter={add_levels=15, ego_chance=100}}, nil)
defineTile('$', "FLOOR", {random_filter={add_levels=15, ego_chance=100}})


Anyway, here's my first attempt at a vault. It's intended to appear in an orc pride. Let me say what I was going for, and hopefully somebody can tell me if I wrote it out correctly. It's an orc temple or something, with an orc necromancer in charge standing on a platform in a little pool on the west end, and a bunch of random orcs listening to him. Bone golems bouncers are waiting around to deal with intrusive @s. Storage rooms to the north and south hold a few robes and staves. None of it is diggable, except for a hollow pillar in the middle of the room which contains a guaranteed ego item and a dreadmaster. After some of the defineTile() lines, I put a comment in stating what I think that line should do. I'd love it if somebody could either confirm that I'm doing this correctly, or point out where I screwed up. Thanks a lot.

Code: Select all

defineTile('.', "FLOOR")
defineTile('~', "SHALLOW_WATER")
defineTile('#', "HARDWALL")
defineTile('%', "WALL")
defineTile('+', "DOOR")
defineTile('X', "DOOR_VAULT")
defineTile('$', "FLOOR", {random_filter={add_levels=15, ego_chance=100}}, {random_filter={add_levels=15, name="dreadmaster"}})
--the above is a floor tile with a +15 level guaranteed ego and a +15 level dreadmaster?
defineTile('\', "FLOOR", {random_filter={subtype="staff", ego_chance=25, add_levels=5}}, nil)
--the above is a floor tile with a staff and no monster?
defineTile('(', "FLOOR", {random_filter={subtype="cloth", ego_chance=25, add_levels=5}}, nil)
--robe with no monster?
defineTile('o', "FLOOR", nil, {random_filter={subtype="orc", add_levels=5}})
--floor tile with no object and a random +5 level orc from npcs/orc.lua?
defineTile('O', "FLOOR", nil, {random_filter={add_levels=15, name="orc necromancer"}})
--floor tile with no object and an +15 level orc necromancer?
defineTile('K', "FLOOR", nil, {random_filter={add_levels=5, type="undead", subtype="giant"}})
--floor tile with no object and a random +5 level bone giant from npcs/bone-giant.lua



return {
[[...............................]],
[[.#############################.]],
[[.#...................+...+..\#.]],
[[.#.......o....o......#####..\#.]],
[[.#......................K#..\#.]],
[[.#.....o.................#####.]],
[[.#~~~.....o...###........#...#.]],
[[.#~O~..o......%$#........+...X.]],
[[.#~~~.........###........#...#.]],
[[.#.......o..o............#####.]],
[[.#......................K#..(#.]],
[[.#....o....o.........#####..(#.]],
[[.#...................+...+..(#.]],
[[.#############################.]],
[[...............................]],
}
Last edited by Susramanian on Sun Oct 17, 2010 8:30 pm, edited 1 time in total.

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

Re: Call for mappers

#53 Post by Burb Lulls »

1) As far as I can tell, it doesn't matter if you use single quotes or double quotes when defining fields for objects, actors, etc. since vault files in the the game use both. forest-ruined-building3 uses double quotes while orc-armoury uses single quotes. All of them appear to use single quotes when defining the symbols used on the map, like '#', '.', 'X'. Double quotes might work, but it's best to err on the side of caution.

2) The third field denotes traps. So your example would place a random trap five levels OOD.

3) The type and subtype certainly look redundant with the name there... I suppose it's more erring on the side of caution. :)

4) Nils aren't needed if nothing follows them. So, if a tile only has an item on it, you wouldn't need a further nil after it for the actor definition. You'd put a nil before the actor definition of a tile if the tile contained no items. If a tile only had a trap, you'd put two nils before it; one for the items, one for the actors.

And for the comments in your vault:
-- Yep.
-- Yep, although the end nil is redundant.
-- Ditto.
-- Looking at orc.lua, "orc" is a subtype, not a type. Maybe:

Code: Select all

defineTile('o', "FLOOR", nil, {random_filter={subtype="orc", add_levels=5}})
-- Yep. (I think...)
-- Assuming bone giants are the only actors with undead as a type and giant as a subtype, yep. (Giant zombies?)

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

Re: Call for mappers

#54 Post by Susramanian »

Thanks, Burb Lulls. I fixed it.

The reason I'm trying to figure out this whole vault thing is because I got to thinking about the orc prides. The three wide open ones are fairly annoying to clear out, whatever your class. That much open space is simply deadly with recent monster AI changes. Also, they're monotonous. Do any vaults ever show up?

What I think would be fun is this:

1) Keep the basic idea of the current layout: a bunch of buildings crammed together to form a rough settlement.
2) Put more buildings in, so the whole settlement is quite a bit denser
3) Put a big old town square somewhere near the center on each level. Then we still have a wide open space to deal with, but we can approach it from a street or alley. The town square itself can be a huge vault that just consists of a lot of empty floor tiles with no surrounding walls. We could make different town square vaults. For example, one with a fountain in the center, one with a little park, one that's a refuse pile, and so on. We can vary the size, too.
4) Force the generation of at least one big vault on each level. Examples: Orc temple, barracks, graveyard, gladiatorial arena, town hall, etc.
5) Force the generation of a couple minor vaults on each level that contain shopkeeper-type orcs and themed loot.
6) Add orc-town-themed npcs. Examples: Pride guards (they come in packs), beasts of burden, and drunks.

All of this should give the player the sense that he's not exploring a dungeon, he's invading a town. That sounds like a blast to me.

More exotic ideas for spicing up the prides:

1) Put in occasional down staircases that lead to single-level dungeons full of all kinds of unpleasant things.
2) Put in occasional good guys to rescue.

Here's a rough idea of what I think might be generated if you increased the density and forced the town square and vault. In the northwest corner I was experimenting with a pretty regular layout which might be too boring. The rest of it is quite chaotic, besides the vault I pasted in and the town square (with a shallow pool or fountain or something) in the center.

Code: Select all

########################################################################################################################
#.........#....#........#.#........#..#...............#.#..........#.........+..#............+.#................#.+....#
#.........#....#........#.#........#..#...............#.#..........#.........#..#............#.#................#.#....#
#.........#....#........#.#........#..#...............#.#..........#.........#..#............#.#................#.#....#
#.........+....#........#.#........#..#...............#.#..........#.........#..#............#.#................#.#....#
###########....#........#.#........+..+...............#.#..........#.........#..############+#.#................#.#....#
#.........#....+........#.##########..#################.#..........###########..+............#.################+#.#....#
#.........#....##########...............................#..........#............#............#....................#....#
#.........+...............###################...........##########+#............#............#....................######
#.........#....##########.#.................#...................................#............#.################.########
#.........#....+........#.#.................#...................................#............#.#..............#.+......#
###########....#........#.#.................#...................................##############.#..............#.#......#
#.........#....##########.#........##########..................................................#..............#.#......#
#.........+....#........#.#........#...........................................................#..............#.#......#
#.........#....#........#.#........#............................................#################.............#.#......#
#.........#....+........#.#........#............................................#...............+.............+.#......#
#.........#....#........#.#........#............................................#...............###############.#......#
###########....##########.#+########....................~~~.....................#...............+...............#......#
#..............#........#.............................~~~~~~~...................#...............#.######################
###########....#........#.#+########.................~~~~~~~~~..................#...............#.#...............+....#
#.........+....+........#.#........#..................~~~~~~~...................#################+#...............#....#
#.........#....#........#.#........#....................~~~......................#................#...............#....#
#.........#....#........#.#........#.............................................#................#...............#....#
#.........#....#........#.#........#.............................................#................+...............#....#
###########....##########.##########.............................................#................#################....#
#>...............................................................................#................+....................#
#############################....................................................#................##################...#
#...................+...+..\#....................................................###################...............+...#
#.......o....o......#####..\#..............................................................#.......+...............#...#
#......................K#..\#....####################......................#################.......#...............#...#
#.....o.................#####....#..................#......................#...............#.......#...............#...#
#~~~.....o...%%%........#...#....#..................#..#################...+...............#.......#...............#...#
#~O~..o......%$%........+...X....#..................#..+...............###+#######.........#.......#...............#...#
#~~~.........%%%........#...#....#+##################..#...............#.........#.........#.......#...............#...#
#.......o..o............#####..........................#...............#.........###########.......#...............#...#
#......................K#..(#....####################..#...............#.........#.........#########...............#...#
#....o....o.........#####..(#....#..................#..#...............#.........#.................#################...#
#...................+...+..(#....#..................#..#...............#.........#.##############......................#
#############################....#..................#..#################.........#.#............#.#################....#
#.......#..........+.............#..................#..................#.........#.#............#.+...............+....#
#.......#..........#.#############+#####################..################+#######.#............#.#...............#....#
#.......############.#...............+..#..............+..#.................#......+............#.#...............#....#
#.......+............#...............#..#..............#..#.................#......##############.#################...<#
#.......############.#...............#..#..............#..#.................#.........................##################
#..................#.#...............#..#..............#..#.................#...###################...+................#
#..................#.#...............#..#..............#..+.................#...#.................#...#................#
#..................#.#...............#..#..............#..###################...+.................#...#................#
#..................#.#################..+..............#........................#.................#...#................#
#..................#....................#..............#........................###################...#................#
########################################################################################################################

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

Re: Call for mappers

#55 Post by Repton »

Susramanian wrote:Thanks, Burb Lulls. I fixed it.

The reason I'm trying to figure out this whole vault thing is because I got to thinking about the orc prides. The three wide open ones are fairly annoying to clear out, whatever your class. That much open space is simply deadly with recent monster AI changes. Also, they're monotonous. Do any vaults ever show up?
Yup. Orc armoury and hostel show up, and double-t, but they're quite big so not too common. Dragon loot is smaller and thus more frequent -- I've seen it three times in a single level (or maybe that was the non-open pride? Hmm..).

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

Re: Call for mappers

#56 Post by Repton »

Code: Select all

setStatusAll{no_teleport=true}

defineTile(' ', "FLOOR")
defineTile('#', "HARDWALL")
defineTile(':', "WALL")
defineTile('^', "FLOOR", {random_filter={add_levels=20, type='jewelry'}}, nil, {random_filter={add_levels=50, name='lethargy trap'}})
defineTile('X', "FLOOR", {random_filter={add_levels=15, ego_chance=50}}, {random_filter={add_levels=15, subtype="xorn"}})

startx = 4
starty = 0

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

return {
[[#### ####]],
[[#XX# #XX#]],
[[#XX# #XX#]],
[[##:: ::##]],
[[    ^    ]],
[[###: :###]],
[[#XX: :XX#]],
[[#XX# #XX#]],
[[#### ####]],
}

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

Re: Call for mappers

#57 Post by darkgod »

AHAHAHAHHAH ! You devil ! :)
[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

#58 Post by Repton »

A swamp, for the old forest:

Code: Select all

setStatusAll{no_teleport=true}

defineTile(',', "GRASS")
defineTile(';', "GRASS_DARK1")
defineTile('~', "SHALLOW_WATER")
defineTIle('%', "POISON_SHALLOW_WATER")

defineTile('$', "GRASS_DARK1", {random_filter={add_levels=25, type="money"}})
defineTile('*', "GRASS", {random_filter={add_levels=25, type="gem"}})
defineTile('&', "TREE_DARK", {random_filter={add_levels=15, subtype="amulet"}})

defineTile('^', "GRASS_DARK1", nil, nil, {random_filter={add_levels=15, name="poison vine"}})
defineTile('+', "GRASS", nil, nil, {random_filter={add_levels=15, name="poison vine"}})

defineTile('#', "GRASS_DARK1", nil, {random_filter={add_levels=30, subtype="plants", never_move=1}})

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

return {
[[,,,^,;,,,^;,,;++,,+,]],
[[,#,,,,;;;,,;,;#,,,;,]],
[[~~,,#,,#;;;;,;*;;,,;]],
[[,;~$,,+,*#,,,#;+#,,,]],
[[;,,#~,#,$,^,,^,$,,,;]],
[[,#*,+~+,$,,#,;,#^,,#]],
[[,,;,$~,;;%%*,+,;,;,,]],
[[;,#,^~;,+,#%%;;;^#,;]],
[[;,*,,;~~~%%,%%%,,;,;]],
[[,#,^,;%#%~%%%#%,#;+,]],
[[,,,%,;$%%$~$%,%,;$,#]],
[[;+$%%%;#%,~,%^,%$#,,]],
[[;,#%%;#%%%~%%%%,%,,^]],
[[,,$%;%;%#+&~~~#;%,,,]],
[[^$,%%%,%%+%%%%~%,+,;]],
[[,,%%#%%%*%$%~$~;%,,,]],
[[,%#,#$;#;#%~%~%%%$#;]],
[[;,%$,$,$^*%,~%,#+,#,]],
[[,#,,^,+$,#,%;;%;,;,;]],
[[,;;,,#,,,^,++,,,;;,,]],
}

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

Re: Call for mappers

#59 Post by Burb Lulls »

A quick question: Are vaults that use quickEntity as well as defineTile feasible/accepted?

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

Re: Call for mappers

#60 Post by darkgod »

yup
[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