ToME: the Tales of Maj'Eyal

Everything about ToME
It is currently Sat Oct 21, 2017 8:14 am

All times are UTC




Post new topic Reply to topic  [ 74 posts ]  Go to page 1, 2, 3, 4, 5  Next
Author Message
 Post subject: Vault contest!
PostPosted: Sun Apr 10, 2011 9:41 pm 
Offline
Master of Eyal

Joined: Wed Jul 24, 2002 9:26 pm
Posts: 10126
Location: Angolwen
Hello my fellow players, I have come here today to propose a vaults contest!

Everybody loves a good, deadly, vault and they are really easy to create!
So Sus will post a guide how to make vaults and then you are very welcome to go wild.

We will add to the game any vaults we deem fun and every week we will select one vault as the favorite, its maker will get to have an in-game unique named after her/him (you can choose the name, and obviously it must be in-theme "LOLZOR17" won't do).

Oh and even if you don't think you've got a winning vault, submit it anyway! The point of this whole contest is to get ToME a ton of new vaults, which we all love to find. We'll be adding to ToME all vaults from the contest that we like, not just the week's winning vault.

For each vault also post in which zones it would logically be possible to spawn.
And get wild, you can do normal vaults but dont hesitate to suggest special scripted events/mechanisms inside the vault too, I may or may not be able/want to do it, but then, I just might ;)

So be creative, 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 ;)


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Sun Apr 10, 2011 9:46 pm 
Offline
Spiderkin

Joined: Sat May 15, 2010 3:09 am
Posts: 454
Creating a vault for ToME is easy. Basic steps:

1) Draw a picture of your vault using your favorite text editor, representing walls and loot and monsters and whatever else using letters and symbols. It helps with readability to pick appropriate letters and symbols; consider using ^ to represent traps, for example, or D to represent a big dragon.

2) Make a 'key' to your map of the vault, telling the game what you meant by all the symbols you used. ToME can't just read a D and know that you mean a big dragon. You have to tell it explicitly.

You don't need any special software. Use a monospaced font so your vault map looks nice and rectangular. When you post your vault code in this thread, put the text inside code tags, like this:
Code:
 blah blah blah
This will force the forum to display the text in a monospaced font.

Below is a sample vault into which I try to put all the features commonly seen in current vaults. It looks long and complicated, but that's only because I'm trying to make a comprehensive example. Use it as a reference later, and remember that most vaults are much simpler than this. A detailed explanation of each line follows the vault code.

Code:
--sample vault

startx = 3
starty = 7
 
setStatusAll{no_teleport=true}
rotates = {"default", "90", "180", "270", "flipx", "flipy"}

defineTile('%', "WALL")
defineTile('.', "FLOOR")
defineTile('#', "HARDWALL")
defineTile('+', "DOOR")
defineTile('X', "DOOR_VAULT")
defineTile('&', "LAVA_FLOOR")
defineTile('~', "DEEP_WATER")

defineTile('$', "FLOOR", {random_filter={add_levels=20, type="money"}})
defineTile('\', "FLOOR", {random_filter={add_levels=5, tome_mod="vault"}})
defineTile('|', "FLOOR", {random_filter={add_levels=5, tome_mod="gvault"}})
defineTile('/', "FLOOR", {random_filter={add_levels=5, tome_mod="uvault"}})

defineTile('D', "FLOOR", nil, {random_filter={add_levels=5, name = "fire drake"}})
defineTile('U', "FLOOR", nil, {random_filter={add_levels=10, type = "demon", subtype = "major"}})
defineTile('a', "FLOOR", nil, {random_filter={add_levels=1, type = "animal"}})
defineTile('x', "FLOOR", nil, {random_filter={add_levels=15}})
 
defineTile('^', "FLOOR", nil, nil, {random_filter={add_levels=20}})

defineTile('a', "FLOOR", {random_filter={add_levels=10, tome_mod="vault"}}, {random_filter={add_levels=15, type = "insect", subtype = "ant"}})
defineTile('b', "FLOOR", {random_filter={add_levels=15, tome_mod="gvault"}}, nil, {random_filter={add_levels=20}})
defineTile('c', "FLOOR", nil, {random_filter={add_levels=10, type = "animal", subtype = "canine"}}, {random_filter={add_levels=5}})
defineTile('d', "FLOOR", {random_filter={add_levels=15, tome_mod="uvault"}}, {random_filter={add_levels=10, name = "storm wyrm"}}, {random_filter={add_levels=5}})

 return {
 [[########]],
 [[#^.abcd#]],
 [[#D..Uax#]],
 [[#+%%%%+#]],
 [[#~~~&&&#]],
 [[#~~~&&&#]],
 [[#$..\|/#]],
 [[###X####]],
 }
 

The first line is a commented out (begins with --) name for the vault, so we know what to call the file when the vault eventually gets included in ToME.

Then we have this:
Code:
startx = 3
starty = 7
This is only really necessary for vaults whose center is sealed off behind walls, making pathing impossible. That's not the case with my sample vault, but including it doesn't hurt. The coordinates 3, 7 give the location of the vault door (X).

These lines...
Code:
setStatusAll{no_teleport=true}
rotates = {"default", "90", "180", "270", "flipx", "flipy"}
... tell the game that teleporting isn't allowed in this vault, and that the game can feel free to generate the vault rotated or flipped for the sake of variety.

All of the lines that follow define a symbol used on the map at the end, telling the game what exactly to put on that tile in the vault when it's generated. Tiles include, at the least, terrain features. In addition, they can have loot, monsters, and traps. Each 'defineTile()' statement is a comma-separated list. The first item in the list is the symbol used on your map that you're defining. The second is the terrain type to use, followed by loot, monster, and trap. So the the format goes like this:
defineTile(symbol used, terrain, loot, monster, trap)

The first seven such lines in my sample vault all have only two entries in their lists: the symbol used and the terrain type. If you don't put anything after those, the game assumes you don't want anything else. So these seven lines produce tiles in the game of a certain terrain type with no loot, monsters, or traps.

The next four lines include a third item in their lists that specifies loot to generate. The line...
Code:
defineTile('$', "FLOOR", {random_filter={add_levels=20, type="money"}})
...says to put a normal floor tile down where you put the $ symbol, and to include a pile of gold on that tile generated at twenty levels above the current zone's level. Vaults typically generate loot, monsters, and traps at well above the level on which the vault appears.
The line...
Code:
defineTile('|', "FLOOR", {random_filter={add_levels=5, tome_mod="gvault"}})
...says to generate an item on a normal floor tile where you put the | symbol in your map. The item will be generated five levels above the current zone level, and the part that says tome_mod="gvault" tells the game to give that item a better chance of being high quality. The three levels of quality-weighting available are "vault" (above average), "gvault" (way above average), and "uvault" (amazing). Use "uvault" very sparingly, since it very frequently generates artifacts.

The next four lines all have a fourth entry in the list. This tells the game what type of monster to generate. Notice that the third entry in each of these is 'nil', which says to generate no loot. It's certainly possible to generate both loot and monsters (and traps) on a single tile, but I start with one at a time. Monsters can be specified in several ways. In my four lines, I go in decreasing order of specificity; the first line says to make a very particular monster: a fire drake. The second says to make a major demon, but doesn't specify which one. The third line says to make an animal; it could be anything from a cobra to a polar bear. The fourth line says to just generate any old monster (and to add 15 to its level).

This line...
Code:
defineTile('^', "FLOOR", nil, nil, {random_filter={add_levels=20}})
...produces a normal floor tile with no loot, no monsters, and a +20 level trap.

The four final defineTile() lines all generate a floor tile with more than one interesting feature.
Code:
defineTile('a', "FLOOR", {random_filter={add_levels=10, tome_mod="vault"}}, {random_filter={add_levels=15, type = "insect", subtype = "ant"}})
The above line makes a tile with vault-quality item, an ant, and no trap.
Code:
defineTile('b', "FLOOR", {random_filter={add_levels=15, tome_mod="gvault"}}, nil, {random_filter={add_levels=20}})
The above line makes a tile with a greater-vault-quality item, no monster, and a trap.
Code:
defineTile('c', "FLOOR", nil, {random_filter={add_levels=10, type = "animal", subtype = "canine"}}, {random_filter={add_levels=5}})
The above line makes a tile with no item, a canine monster, and a trap.
Code:
defineTile('d', "FLOOR", {random_filter={add_levels=15, tome_mod="uvault"}}, {random_filter={add_levels=10, name = "storm wyrm"}}, {random_filter={add_levels=5}})
The above line makes a tile with an uber item, a storm wyrm, and a trap.

The last part is your ascii drawing of the vault, returned as a comma-separated list of rows but organized in a nice, stacked-up format so they read like what the vault will look like in-game.

For more examples of vaults, look through the ones already in-game. They're in t-engine4/game/modules/tome/data/maps/vaults/


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Sun Apr 10, 2011 10:37 pm 
Offline
Spiderkin

Joined: Sat May 15, 2010 3:09 am
Posts: 454
For anybody using Windows who wants text editor advice beyond 'pick your favorite,' I recommend Notepad++. It does all sorts of useful stuff.


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Sun Apr 10, 2011 11:17 pm 
Offline
Wyrmic

Joined: Tue Feb 15, 2011 12:01 am
Posts: 282
This is fun!

I'm an advocate for NotePad++, but I've also been using PabloDraw, an ASCII art editor, to draw and sketch out vaults. It lets you select text as a rectangular block, copy and drag these blocks of text, or even "fill" a block with a certain character ("." and "#" being the roguelike vault designer's favourites.)

There are also paint-software-style tools to flip or rotate a given block of text.

I'll let everybody know if I ever find a better ASCII art editor, but for now I recommend PabloDraw, which is lightweight, clean and free!


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Mon Apr 11, 2011 12:46 am 
Offline
Module Developer

Joined: Tue Dec 14, 2010 3:23 am
Posts: 163
Location: Where I need to be
Here is my entry. The idea is you encounter a group of sun paladins about to a attack a vampire lair (some map with lots of undead). when you go through the door there is a battle and everything. But the necro tiles deal blight damage that heals undead and if it kills some non undead it raises it as a zombie like thing.
Code:
newEntity{
   define_as = "NECRO",
   name = "lava floor", image = "terrain/lava_floor.png",
   display = '.', color=colors.RED, back_color=colors.DARK_GREY,
   shader = "lava",
   mindam = resolvers.mbonus(5, 15),
   maxdam = resolvers.mbonus(10, 30),
   on_stand = function(self, x, y, who)
      local DT = engine.DamageType
      local dam = DT:get(DT.RETCH).projector(self, x, y, DT.RETCH, rng.range(self.mindam, self.maxdam))
      if dam > 0 and not who.undead then game.logPlayer(who, "dark energies course through") end
      if who.dead and not who.undead then
      --add undead
         local NPC = require "mod.class.NPC"
         local m = NPC.new{
            type = "undead", subtype = "ghoul",
            display = "z",
            name = "risen corpse", color=colors.GREY,
            desc = "a body raised through dark magic",

            body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },

            rank = 2,
            life_rating = 12,
            max_life = resolvers.rngavg(50,90),
            infravision = 20,

            autolevel = "ghoul",
            ai = "summoned", ai_real = "tactical", ai_state = { talent_in=2, },
            stats = {str=0, dex=0, con=0, cun=0, wil=0, mag=0},
            inc_stats = { str=25 + , dex=18, con=10  },

            resolvers.equip{
               {type="weapon", subtype="longsword", autoreq=true},
            },

            level_range = {1, nil}, exp_worth = 1,
            silent_levelup = true,

            combat_armor = 5, combat_def = 3,
            resolvers.talents{
               [Talents.T_STUN]={base=1, every=10, max=5},
               [Talents.T_BITE_POISON]={base=1, every=10, max=5},
               [Talents.T_ROTTING_DISEASE]={base=1, every=10, max=5},
            },

            faction = "enemies"
         }
         game.zone:addEntity(game.level, m, "actor", x, y)
      end
      end
   end,
}

setStatusAll{no_teleport=true}

defineTile('.', "FLOOR")
defineTile('!', "DOOR_VAULT", nil, nil, nil, {room_map={special=false, room=false, can_open=true}})
defineTile('+', "DOOR")
defineTile('~', "NECRO")
defineTile('X', "HARDWALL")
defineTile('v', "FLOOR", {random_filter={add_levels=5,tome_mod="vault"}}, {random_filter={add_levels=5, type="undead", subtype="vampire", name="vampire"}})
defineTile('U', "FLOOR", {random_filter={add_levels=10, tome_mod="gvault"}}, {random_filter={add_levels=10, type="undead", subtype="vampire", name="master vampire"}})
defineTile('V', "FLOOR", {random_filter={add_levels=15, tome_mod="gvault"}}, {random_filter={add_levels=15, type="undead", subtype="vampire", name="elder vampire"}})
defineTile('L', "FLOOR", {random_filter={add_levels=20, tome_mod="gvault"}}, {random_filter={add_levels=20, type="undead", subtype="vampire", name="vampire lord"}})
defineTile('W', "FLOOR", {random_filter={add_levels=15, tome_mod="gvault"}}, {random_filter={add_levels=15, type="undead", subtype="wight", name="grave wight"}})
defineTile('S', "FLOOR", {random_filter={add_levels=15, tome_mod="gvault"}}, {random_filter={add_levels=15, nil, name="sun palidin"}})
startx = 0
starty = 6

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

return {
[[XXXXXXXXXXXXXXXXXXXXXXXXXXXXX]],
[[X....X......................X]],
[[X....X..~.~..v~..~.V........X]],
[[X....X....~..~.~..~..XXXXX..X]],
[[X....X..~.v.~...~...XXXXXX..X]],
[[X..S.X..~.~~.v~.~..XXXXXXX..X]],
[[X..S.+.~..~..~....LXXXXXXX..X]],
[[!....+.~.~.~.v.~...XXXXXXX..X]],
[[X..S.+..~..~.~.v.~..XXXXXX..X]],
[[X..S.X...~..~..~..~..XXXXX..X]],
[[X....X.~.~.~......~..W......X]],
[[X....X.......~.~..V.........X]],
[[XXXXXXXXXXXXXXXXXXXXXXXXXXXXX]],

}


also how many entries are we limited to ?

_________________
Those who complain are just Volunteering to fix the problem

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


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Mon Apr 11, 2011 3:22 am 
Offline
Retired Ninja

Joined: Fri May 28, 2010 4:38 pm
Posts: 3756
Did some experimenting with 'vault testing' and I think this will work (or at least it worked for me on decent sized vaults).

First create a file for your vault in data\maps\vaults.lua

Next modify data\zones\trollmire\zone.lua

Change lines 52-54 to...

Code:
         nb_rooms = 1,
         rooms = {"lesser_vault"},
         lesser_vaults_list = {"your_vault_file_here"},


This should get the zone to always generate one room (the number of rooms flag) and always generate the vault in question. I'm not really sure what the difference between lesser and greater vaults are. I know some zone files use greater_vault flags but I don't see where vaults are tagged this way. Maybe someone can expand on that.

But the above is tested and should work for most vaults.

*note* This will invalidate your game so should be used on a test character using a test copy of the game if you want to keep your characters in the vault.

_________________
Jack's Cheese and Bread Snack


Last edited by edge2054 on Mon Apr 11, 2011 4:46 pm, edited 1 time in total.

Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Mon Apr 11, 2011 2:40 pm 
Offline
Spiderkin

Joined: Sat May 15, 2010 3:09 am
Posts: 454
I forgot to mention something about traps: don't use them.

Okay, maybe that's a bit draconian. But frequently vault makers get trap-happy, and decide to carpet the floors of their vaults in traps. The various *bands, including T2, suffered badly from this. And traps are due for a complete overhaul sometime before release, which means all existing traps might just disappear. So do everybody a favor and just forget about traps when making your vaults, or at least use them very sparingly.


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Mon Apr 11, 2011 4:49 pm 
Offline
Spiderkin

Joined: Sat May 15, 2010 3:09 am
Posts: 454
Another thing I forgot to mention: text editors make it far too easy to make gigantic vaults. They look so small and innocent in your document, but in-game they take up the whole level. This is what happened with the Bandit Fortress. It's a 40x40 vault that gets generated in the Old Forest, which has 50x50 levels. This causes problems. It's probably best to keep vaults well under, say, 30x30. Adding a whole bunch of small, 10x10 vaults to the game is much more valuable than adding a single big one.

That reminds me; feel free to submit more than one vault per week! The more you submit, the better your chances of winning.


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Mon Apr 11, 2011 7:56 pm 
Offline
Retired Ninja

Joined: Fri May 28, 2010 4:38 pm
Posts: 3756
Probably not a winner but I wanted to make a lich liar and since I took the time to code it figured I'd post it. I'll do a more unique entry to this week, have an idea I think will be fun and different. This vault uses target passing. Once the doors are open the whole vault will chain aggro. :twisted:

Suitable for any high level undead dungeon. Dreadfell or the Necro pride would be good spots.

Code:
-- lich liar
setStatusAll{no_teleport=true}

startx = 9
starty = 16

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

defineTile('.', "FLOOR")
defineTile('X', "HARDWALL")
defineTile('!', "DOOR_VAULT", nil, nil, nil, {room_map={special=false, room=false, can_open=true}})

defineTile('a', "FLOOR", nil, {random_filter={name="armoured skeleton warrior", add_levels=10}})
defineTile('m', "FLOOR", nil, {random_filter={name="skeleton mage", add_levels=10}})
defineTile('g', "FLOOR", nil, {random_filter={subtype="ghoul", add_levels=10}})
defineTile('l', "FLOOR", nil, {random_filter={name="lich"}})
defineTile('$', "FLOOR", {random_filter={add_levels=20, tome_mod="gvault"}})

return {
[[XXXXXXXXXXXXXXXXX]],
[[Xm.ggg..g..ggg.mX]],
[[X.X...........X.X]],
[[X..a.........a..X]],
[[X...XXX.a.XXX...X]],
[[X...X.......X...X]],
[[X...X.a.l.a.X...X]],
[[Xm.aX.......Xa.mX]],
[[X...Xg..a..gX...X]],
[[X...Xg$$$$$gX...X]],
[[X...Xg$$$$$gX...X]],
[[X...XXXXXXXXX...X]],
[[Xm.a.a.a.a.a.a.mX]],
[[X.X...........X.X]],
[[Xm.............mX]],
[[XXXXXXXX!XXXXXXXX]],
}

_________________
Jack's Cheese and Bread Snack


Last edited by edge2054 on Mon Apr 11, 2011 9:19 pm, edited 1 time in total.

Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Mon Apr 11, 2011 8:27 pm 
Offline
Reaper

Joined: Wed Dec 12, 2007 12:21 am
Posts: 2257
Location: New Zealand
Rain of Death

OK, I wanted to show how powerful archers can be... I also didn't want the archers to move thus the lava constraints. I also wanted archers that used Pin to good effect and the Master Archer uses it a lot. You could consider any archer here for variety.

I did consider putting more archers in but felt this is enough for a good demonstration.

Ideally both doors in any entrance should open if 1 is opened, not sure how to do that!

Code:
-- Rain of Death

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

defineTile('.', "FLOOR")
defineTile('X', "HARDWALL")
defineTile('!', "DOOR_VAULT", nil, nil, nil, {room_map={special=false, room=false, can_open=true}})

-- All a are Skeleton Master Archer
defineTile('a', "FLOOR", nil, {random_filter={name="skeleton master archer", add_levels=10}})

defineTile('$', "FLOOR", {random_filter={add_levels=20, tome_mod="gvault"}})

[[XXXXXXX!!XXXXXXXXX]],
[[X..vaav..vaav.X]],
[[X..vvvv..vvvv.X]],
[[Xvv..........vvX]],
[[Xav..........vaX]],
[[Xav..........vaX]],
[[Xvv..........vvX]],
[[!..............!]],
[[!..............!]],
[[Xvv..........vvX]],
[[Xav..........vaX]],
[[Xav..........vaX]],
[[Xvv..........vvX]],
[[X..vvvv..vvvv.X]],
[[X..vaav..vaav.X]],
[[XXXXXXX!!XXXXXXXXX]],


[Update]I forgot to add that all doors should be in range of any archer (not sure if I have that!)

_________________
Regards

Jon.


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Mon Apr 11, 2011 9:39 pm 
Offline
Spiderkin

Joined: Mon Jul 26, 2004 5:20 am
Posts: 479
Location: Blighty
Okay, this is my proper entry, a snow giant camp for the Daikara. Not much to say, beyond there being a nasty little ambush for people who rush straight for the treasure in the main building.

Possible additions:
-- Cold drake 'pen' in the NE area?
-- QuickEntity campfire in the centre?
-- Edit: Ooh, and maybe dot some of those snowy trees around for aesthetics.

Code:
-- Snow Giant Camp
setStatusAll{no_teleport=true}
rotates = {"default", "90", "180", "270", "flipx", "flipy"}

defineTile('.', "FLOOR")
defineTile(',', "ROCKY_GROUND")
defineTile('#', "HARDWALL")
defineTile('X', "MOUNTAIN_WALL")
defineTile('+', "DOOR")
defineTile('!', "DOOR_VAULT")

defineTile('$', "FLOOR", {random_filter={add_levels=10, tome_mod="vault"}})
defineTile('?', "FLOOR", {random_filter={add_levels=5, tome_mod="vault"}}, {random_filter={add_levels=5, type="giant", subtype="ice"}})
defineTile('P', "FLOOR", nil, {random_filter={name="snow giant"}})
defineTile('T', "FLOOR", nil, {random_filter={add_levels=5, name="snow giant thunderer"}})
defineTile('B', "FLOOR", nil, {random_filter={add_levels=5, name="snow giant boulder thrower"}})
defineTile('C', "FLOOR", nil, {random_filter={add_levels=8, name="snow giant chieftain"}})

startx = 12
starty = 19

return {
[[XX###############XXXXXXXX]],
[[X,#...#$$$$$#...#XXXXXXXX]],
[[X,#.....C.C.....#,,XXXXXX]],
[[X,#BB.#.....#.TT#,,,,XXXX]],
[[X,#####..C..#####,,,,,,XX]],
[[X,,,,,###!###,,,,,,,,,,XX]],
[[X,#,,,,,,,,,,,,,,###,,,XX]],
[[X###,,,,,,,,,,,,##?##,,,X]],
[[X#?+,,,,,,,,,P,,,#+#,,,,X]],
[[X###,,#,,,,P,,,,,,,,,,,,X]],
[[X,#,,###,,,,,,P,,,,,#,,,X]],
[[X,,,,#?+,,P,,,,,,,,###,,X]],
[[X,,,,###,,,,P,,,,,,+?#,,X]],
[[X,,,,,#,,,,,,,,,,,,###,,X]],
[[XX,,,,,,,,,,,,,,,,,,#,,XX]],
[[XX,,,,#+#,,,,,,,,,,,,,,XX]],
[[XXX,,##?##,,,,,,,,,,,,XXX]],
[[XXXXXX###,,,,,,,,,,,,XXXX]],
[[XXXXXXXXXX,,,,,,,XXXXXXXX]],
[[XXXXXXXXXXXX,XXXXXXXXXXXX]],
}


This second vault is more an example of an idea than a proper vault. It reintroduces glass walls from ToME 2 that you can see through. It's the classic Metroid trick: Be forced to walk past a bunch of caged monsters, collect the treasure at the end, walk back and... where have the monsters gone? Rather than just release them right next to you, approaching the treasure room teleports them all over the level. Suddenly, the vault is the safest place on the map...

Could remove the glass walls as well anyway, or replace them with 'broken glass walls' for added drama.

Code:
setStatusAll{no_teleport=true}
rotates = {"default", "90", "180", "270", "flipx", "flipy"}

defineTile('.', "FLOOR")
defineTile('#', "HARDWALL")
defineTile('-', "WALL")
defineTile('+', "DOOR")
defineTile('!', "DOOR_VAULT")
-- defineTile ('G'), "GLASS_WALL")

defineTile('@', "FLOOR", nil, {random_filter={add_levels=10}})
defineTile('$', "FLOOR", {random_filter={add_levels=10, tome_mod="vault"}})
defineTile('*', "FLOOR", {random_filter={add_levels=15, tome_mod="gvault"}})

-- defineTile('x'): stepping here teleports the enemies in the vault randomly over the level, and removes the glass walls

startx = 4
starty = 14

return {
[[--#####--]],
[[--#$*$#--]],
[[--#$$$#--]],
[[--##+##--]],
[[---#x#---]],
[[####.####]],
[[#@@G.G@@#]],
[[#@@G.G@@#]],
[[####.####]],
[[#@@G.G@@#]],
[[#@@G.G@@#]],
[[####.####]],
[[#@@G.G@@#]],
[[#@@G.G@@#]],
[[####!####]],
}


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Mon Apr 11, 2011 10:37 pm 
Offline
Retired Ninja

Joined: Fri May 28, 2010 4:38 pm
Posts: 3756
Here's my official entry. The idea is that some orcs where digging out some rooms and stumbled into a sealed chamber full of horrors.

Any place orcs might be would be a good spot for this vault. So any pride with rock walls or Reknor.

Code:
-- Horror Chamber

setStatusAll{no_teleport=true}

startx = 20
starty = 3

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

-- tiles
defineTile('.', "OLD_FLOOR")
defineTile('#', "OLD_WALL")
defineTile(' ', "FLOOR")
defineTile('X', "HARDWALL")
defineTile('+', "DOOR")
defineTile('!', "DOOR_VAULT", nil, nil, nil, {room_map={special=false, room=false, can_open=true}})

-- monsters
defineTile('o', 'FLOOR', nil, {random_filter={subtype='orc', add_levels=10}})
defineTile('h', 'OLD_FLOOR', nil, {random_filter={subtype='eldritch', add_levels=20}})
defineTile('c', 'OLD_FLOOR', nil, {random_filter={subtype='temporal', add_levels=20}})
defineTile('b', 'OLD_FLOOR', nil, {random_filter={name="bloated horror", add_levels=20}})

-- loots
defineTile('a', "OLD_FLOOR", {random_filter={type="armor", add_levels=10, tome_mod="vault"}}, nil)
defineTile('w', "OLD_FLOOR", {random_filter={type="weapon", add_levels=10, tome_mod="vault"}}, nil)
defineTile('r', 'OLD_FLOOR', {random_filter={add_levels=20, tome_mod="vault"}})
defineTile('t', 'OLD_FLOOR', {random_filter={add_levels=20, tome_mod="gvault"}})

-- monster + loots
defineTile('l', 'OLD_FLOOR', {random_filter={add_levels=20, tome_mod="vault"}}, {random_filter={subtype='eldritch', add_levels=20}})
defineTile('H', 'OLD_FLOOR', {random_filter={add_levels=20, tome_mod="gvault"}}, {random_filter={name="headless horror", add_levels=20}})
defineTile('R', 'OLD_FLOOR', {random_filter={add_levels=20, tome_mod="gvault"}}, {random_filter={name="radiant horror", add_levels=20}})

return {
[[XX!XXXXXXXXXXXXXXXXX]],
[[Xo oX o   oX.a.wXooX]],
[[Xo  +  o   +....+  X]],
[[X o Xo  o  Xa.wwX  X]],
[[X############..####X]],
[[Xhc.#h.l##h##ab#.hrX]],
[[Xr.r..h.#crc#..#.l#X]],
[[Xl#..#..#....bw..##X]],
[[Xl..h...#.####...h.X]],
[[X###..######.r..h##X]],
[[X##..##....c..#####X]],
[[X###.r..#######tltlX]],
[[X##c..####rrhr.r.rcX]],
[[X####.##lth.#..R..tX]],
[[XtHt#..#tt.rl...r.lX]],
[[Xttt##.###b....#...X]],
[[X.####.#####.##b...X]],
[[Xr..#..r.r#...###.lX]],
[[Xr.l..#...c.#..h.r#X]],
[[XXXXXXXXXXXXXXXXXXXX]],
}

_________________
Jack's Cheese and Bread Snack


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Mon Apr 11, 2011 11:35 pm 
Offline
Sher'Tul

Joined: Fri May 21, 2010 8:16 pm
Posts: 1022
Location: Inside the minds of all
My official entry I have titled the Temple of the Eye - being that the over all design of it is kin to some old designs or symbols of eyes. The basis of it is that you bust into a temple with guardian statues that blast you with magics and what not. But they are guardians, what are they guarding? Why, 4 good quality items and 5 great quality items in a central room. However, upon attempting to exit the central room, you are ambushed with the originators of the Temple of the Eye; but being long since gone they have been reincarnated as Wraiths.

Okay, I have two scripts that I'd like to have run in this vault [but considering it's size it could very well just be a one time map dungeon too].

1) The 9 items generated in the center room I would like to be reduced by 1 for each kill of a statue [and yes, there is 1 more statue than an item].

2) When you enter and then leave the center room [weather picking up any of the items or not] I would like all the wraiths [the s ] to be summoned.

There is also a new npc type that I added [as that was more simple than trying to fangle with making walls have talents] called statues. I will give their code after the vault.

Now then, the vault :

Code:
-- Temple of the Eye

setStatusAll{no_teleport=true}
rotates = {"default", "90"}

defineTile('+', "DOOR_VAULT")
defineTile('.', "FLOOR")
defineTile('#', "HARDWALL")
defineTile('$', "DEEP_WATER", {random_filter={type="money"}})
defineTile('^', "FLOOR", nil, nil, {random_filter={add_levels=30}})
defineTile('^', "FLOOR", nil, nil, {random_filter={name="ice trap", add_levels=30}})
defineTile('\', "FLOOR", {random_filter={add_levels=5, tome_mod="vault"}})
defineTile('/', "FLOOR", {random_filter={add_levels=5, tome_mod="gvault"}})
defineTile('@', "FLOOR", nil, {random_filter={add_levels=10, name = "infused statue"}})
defineTile('Q', "FLOOR", nil, {random_filter={add_levels=10, name = "inscribed statue"}})
defineTile('Z', "FLOOR", nil, {random_filter={add_levels=10, name = "imbued statue"}})
defineTile('s', "FLOOR", nil, {random_filter={add_levels=15, type = "undead", subtype = "wight"}})

return {
[[+#############################+]],
[[#....s#.................#s....#]],
[[#...s.#.......s.s.......#.s...#]],
[[#....s#........$........#s....#]],
[[#..Q..#.......$.$.......#..Q..#]],
[[#.....#......$...$......#.....#]],
[[#.....#.....$.....$.....#.....#]],
[[#.....#....$.......$....#.....#]],
[[#.....#...$.........$...#.....#]],
[[#.....#..$...........$..#.....#]],
[[#.....#.$..sss...sss..$.#.....#]],
[[#.....#$..#####+#####..$#.....#]],
[[#.....^...#.........#...^.....#]],
[[#....$#...#.@.....@.#...#$....#]],
[[#.s.$.#...#...\/\...#...#.$.s.#]],
[[#..$..#.Z.#...///...#.Z.#..$..#]],
[[#.s.$.#...#...\/\...#...#.$.s.#]],
[[#....$#...#.@.....@.#...#$....#]],
[[#.....^...#.........#...^.....#]],
[[#.....#$..#####+#####..$#.....#]],
[[#.....#.$..sss...sss..$.#.....#]],
[[#.....#..$...........$..#.....#]],
[[#.....#...$.........$...#.....#]],
[[#.....#....$.......$....#.....#]],
[[#.....#.....$.....$.....#.....#]],
[[#.....#......$...$......#.....#]],
[[#..Q..#.......$.$.......#..Q..#]],
[[#....s#........$........#s....#]],
[[#...s.#.......s.s.......#.s...#]],
[[#....s#.................#s....#]],
[[+#############################+]],
}


Now then, the statues:

Code:
newEntity{
   define_as = "BASE_NPC_STATUE",
   type = "construct", subtype = "statue",
   display = "Q", color=colors.WHITE,
   desc = [[Crafted from marble, the statues possess magnificent sheen.]],

   autolevel = "caster",
   ai = "dumb_talented_simple", ai_state = { talent_in=4, },
   stats = { str=1, dex=1, wil=20, cun=1, mag=20, con=20 },
   infravision = 7,
   rank = 2,
   size_category = 4,
      
      max_life = 100, life_rating = 5,

   resists = { [ DamageType.ALL ] = 50, },
   
   cut_immune = 1,
   blind_immune = 1,
   fear_immune = 1,
   poison_immune = 1,
   disease_immune = 1,
   stone_immune = 1,
   confuse_immune = 1,
   stun_immune = 1,
   silence_immune = 1,
   knockback_immune = 1,
   never_move = 1,
   no_breath = 1,
   
   end,
}

newEntity{ base = "BASE_NPC_STATUE",
   name = "Infused Statue", color=colors.GREEN,
   desc=[[This statue is covered in moss and vines.]],
      level_range = {10, nil}, exp_worth = 1,
      rarity = 1,
   
   resolvers.inscription("INFUSION:_WILD_GROWTH", {cooldown=3, dur=5}),
   resolvers.inscription("INFUSION:_INSIDIOUS_POISON", {cooldown=2, dur=3}),
   
   end,
}

newEntity{ base = "BASE_NPC_STATUE",
   name = "Inscribed Statue", color=colors.BLUE,
   desc=[[This statue is covered in glyphs and runes.]],
      level_range = {10, nil}, exp_worth = 1,
      rarity = 1,
      max_mana = 200, mana_regen = 2,
      
   [Talents.T_FLAME]={base=1, every=7, max=4},
   [Talents.T_ICE_SHARDS]={base=2, every=7, max=5},
   [Talents.T_STRIKE]={base=3, every=7, max=6},   
   
   end,
}

newEntity{ base = "BASE_NPC_STATUE",
   name = "Imbued Statue", color=colors.YELLOW,
   desc=[[This statue is covered in pictographs and slime.]],
      level_range = {10, nil}, exp_worth = 1,
      rarity = 1,
      equilibrium_regen = -0.5
      
   [Talents.T_MANA_CLASH]={base=1, every=7, max=4},
   [Talents.T_AURA_OF_SILENCE]={base=2, every=7, max=5},
   [Talents.T_SLIME_SPIT]={base=3, every=7, max=6},   
   
   end,
}   

_________________
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


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Tue Apr 12, 2011 11:14 am 
Offline
Sher'Tul

Joined: Mon Nov 24, 2003 2:31 pm
Posts: 1251
Location: South Africa
Pls introduce vault with those creatures that are rare in the alchemist quests...

Like naga, multi-hued wyrm, greater demon, Faeros... ?


Top
 Profile  
 
 Post subject: Re: Vault contest!
PostPosted: Tue Apr 12, 2011 4:37 pm 
Offline
Retired Ninja

Joined: Fri May 28, 2010 4:38 pm
Posts: 3756
Canderel wrote:
Pls introduce vault with those creatures that are rare in the alchemist quests...

Like naga, multi-hued wyrm, greater demon, Faeros... ?


Faeros at least don't spawn in a zone unless specifically loaded, which means it would take a bit of code magic on DG's part to get them to force gen inside a vault.

_________________
Jack's Cheese and Bread Snack


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 74 posts ]  Go to page 1, 2, 3, 4, 5  Next

All times are UTC


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group