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!
Call for mappers
Moderator: Moderator
- 
				Burb Lulls
 - Spiderkin
 - Posts: 480
 - Joined: Mon Jul 26, 2004 5:20 am
 - Location: Blighty
 
Re: Call for mappers
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!
			
			
									
									
						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!
Re: Call for mappers
Amon Sul Crypt (with a couple surprises, one not so nice)
*edited* changed subtype to name and then tested it for good measure.  the armored skeleton killed me 
			
			
									
									
						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...]],
[[.........]],
}Re: Call for mappers
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
						--
[tome] phantomfrettchen: your ability not to tease anyone is simply stunning
Re: Call for mappers
Ratnest (tested).
Here's a couple destroyed rooms for Amon Sul that have been over run by rats and mold.
			
			
									
									
						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]],
}Re: Call for mappers
A skeleton mage cabal for Amon Sul doing whatever skeleton mages do when they get together in a group >.>
Tested
			
			
									
									
						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.]],
[[.........]],
}Re: Call for mappers
Roll the bones, baby, roll the bones!edge2054 wrote:A skeleton mage cabal for Amon Sul doing whatever skeleton mages do when they get together in a group
Regards
Jon.
						Jon.
- 
				Susramanian
 - Spiderkin
 - Posts: 454
 - Joined: Sat May 15, 2010 3:09 am
 
Re: Call for mappers
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.
			
			
													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
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:
-- Yep. (I think...)
-- Assuming bone giants are the only actors with undead as a type and giant as a subtype, yep. (Giant zombies?)
			
			
									
									
						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}})-- 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
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.
			
			
									
									
						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.........#####..(#....#..................#..#...............#.........#.................#################...#
#...................+...+..(#....#..................#..#...............#.........#.##############......................#
#############################....#..................#..#################.........#.#............#.#################....#
#.......#..........+.............#..................#..................#.........#.#............#.+...............+....#
#.......#..........#.#############+#####################..################+#######.#............#.#...............#....#
#.......############.#...............+..#..............+..#.................#......+............#.#...............#....#
#.......+............#...............#..#..............#..#.................#......##############.#################...<#
#.......############.#...............#..#..............#..#.................#.........................##################
#..................#.#...............#..#..............#..#.................#...###################...+................#
#..................#.#...............#..#..............#..+.................#...#.................#...#................#
#..................#.#...............#..#..............#..###################...+.................#...#................#
#..................#.#################..+..............#........................#.................#...#................#
#..................#....................#..............#........................###################...#................#
########################################################################################################################Re: Call for mappers
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..).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?
Re: Call for mappers
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#]],
[[#### ####]],
}
Re: Call for mappers
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
						--
[tome] phantomfrettchen: your ability not to tease anyone is simply stunning
Re: Call for mappers
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
A quick question: Are vaults that use quickEntity as well as defineTile feasible/accepted?
			
			
									
									
						Re: Call for mappers
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
						--
[tome] phantomfrettchen: your ability not to tease anyone is simply stunning