Turns out the current version is distributed with the files TESTNPC, TESTQUEST, and TESTQUEST2, which are really as good as any tutorial. You probably already figured this out, but you can open them up with notepad to edit them because they're really just plain text files. Those file should have all the information you need about making your own npcs and quests. These systems are a bit more user friendly because I created them for other members of the team to use.
Random level generation, however, is kind of ugly and has no tutorial yet because I'm the only one that uses it.
Random levels are made up of two main files : a definition file and a script file. The definition file contains information about the level and the translation parameters for converting the script output into a proper level. The script file controls the actual level generation.
The definition file uses the following tags:
SCRIPT takes a string that points to the script file
LIGHT, LIGHTDIFF2, LIGHTDIFF3, LIGHTDIFF4 take a numerical value and controls the light level on the four difficulty levels
ENEMY takes a string that indicates an enemy that can spawn in the world. Use multiple ENEMY tags to specify multiple enemies.
NAMEFILE takes a string that indicates three files in assets\data\text. There are three versions of the indicated file: an 'A', 'B', and a 'C'. The random level name has the format "[random from A][random from B] [random from C]"
BGNORM takes a string that indicates an .ogg file in the assets\sound\bg. This song plays normally during the first difficulty level
BGDANGER is deprecated and current does nothing
BGBOSS behaves similarly to BGNORM but is played while the boss
is active
BGDIFF2, BGDIFF3, BGDIFF4 are versions of BGNORM for the other difficulty levels
BGIMAGE, BGIMAGEDIFF2, BGIMAGEDIFF3, BGIMAGEDIFF4 take a string that indicates a png file in assets\textures\bg. They indicate the background images used on various difficulty levels. They can be used multiple times to layer multiple background images, but they must be listed from back to front.
FRONT, TRANS, and BACK translate the text grid output of the script file into actual tiles. They take two arguments: the single letter character output by the script, and the string identifier for a tile type. FRONT indicates what tile is created on the front layer, TRANS the middle layer, and BACK the back layer.
The following is a list of tile identifiers (non-complete means that a tile does not have all its art for all configurations, and must be a certain shape to appear correctly):
"EMPTY"
empty space
"ENEMYSPAWN"
spawns an enemy, takes a numerical argument that indicates what enemy
0 goblin
1 fairy
2 flower turret
3 ghost
4 skeleton
5 target
6 heavy target
7 duo target
8 push back turret
9 spider
10 fairy queen
11 DEPRECATED, this spawns nothing
12 giant plant monster
13 goblin thief
14 possessor ghost
15 lamia
16 harpy
17 salamander
18 giant cobra
19 time bomb
20 goblin mummy
21 genie
22 wisp
23 icicle platform
v0.8 (the cavern update) will include these enemies:
24 giant snowball
25 ice gargoyle
26 antimagic crystal
27 shadow
28 velociraptor
29 tnt miniboss
"TIMERTRIGGER"
trigger that returns true after x amount of time. takes a numerical value that is the trigger time.
"GRASS"
collidable tile
"DEADBRANCH"
this is actually hanging ivy. non-collidable
"LADDER"
one-way collidable
"LAMP"
non-collidable, emits steady light
"MEGALITH1"
non-collidable, incomplete
"POLEARM"
this is actually a torn banner, non-collidable, incomplete
"SAND"
collidable
"MEGALITH2"
non-collidable, incomplete
"CHEST"
treasure chest tile, takes a number of arguments
a numerical argument that indicates the chest type
0 - normal type
1 - opened if you have a red gem at level start
2 - opened if you have a blue gem at level start
3 - opened if you have a green gem at level start
4 - opened if you have a orange gem at level start
5 - opened if you have all gems at level start
6 - opened by a golden key
a numerical argument that indicates the treasure type
0 - material
1 - quest
2 - gold
a numerical argument that indicates the number of things to drop
a series of twenty numbers in quotations. These do nothing but if the are not there, the game will crash
(please don't ask)
last is a sequence of characters that indicate what kind of materials/items are available to drop
find the material or quest item index (materials are listed in a bunch of balance files like data/object/SKILL or data/object/EQUIP, these are always listed in order of their numerical material index, quest items are listed in TESTNPC in numerical index order)
the add 65 to that number and check
www.asciitable.com/ to find what character indicates the material/quest item
The treasure chest tile is currently a big mess and I want to clean it up at some point that's currently the state of it.
SHALLOWWATER"
non-collidable, incomplete
"CASTLEBOSSTRIGGER"
spawns a castle boss
"POLE"
non-collidable
"FORESTBOSSTRIGGER"
spawns the forest boss
"DUNGEON"
colildable
"LEAVES"
non-collidable
"TRUNK"
non-collidable, incomplete
"BRANCH"
one-way collidable
"CACTUS"
non-collidable, incomplete
"PYRAMID"
collidable, incomplete
"LEAVESDETAIL"
non-collidable
"BIGTREETRANSITION"
DEPRECATED, currently does nothing
"TALLGRASS"
non-collidable
"GRASSROOTS"
DEPRECATED, current does nothing
"GRASSDETAIL"
non-collidable
"BIGTRUNK"
collidable
"TRUNKBACK"
collidable
"TRUNKBACKDETAIL"
DEPRECATED, currently does nothing
"BIGTREE"
DEPRECATED, currently does nothing
"DUNGEONBACK"
non-collidable, incomplete
"DUNGEONBACKTRANSITION"
non-collidable
"DUNGEONWINDOW"
non-collidable, incomplete, emits light
"TRIGGEREDDOOR"
collidable when conditions are met, takes many arguments
first is a string in quotations, this is the particle in assets\textures\particle that is displayed
second is a number indicating what kind of event trigger this tile
0 - triggered when boss is active
1 - triggered when a tile or tiles return true
2 - triggered when the player has a quest item
third is whether tiles or items conditions are AND or OR
0 - AND
1 - OR
fourth is a set of twenty numbers in quotations, what they do depends on the second argument:
if the door tests for boss active, they do nothing, but still have to be there
if the door tests for tiles, they are ten x,y pairs indicating what tiles to set. (-1,-1) is treated as a blank and is not tested for. The lower left corner of the map is 0,0.
if the door tests for items, they are the numerical index of the quest items. -1 is treated as a blank and is not tested for.
"HEROSPAWN"
spawns the player
"PORTALSPAWN"
spawns a level portal, takes several arguments
a numerical argument that indicates what type of level
0 - static level created in the level editor
1 - random level generated by a script
a string argument in quotes that indicated the level file to be loaded
static level - this is located in assets\data\levels\edited
random level - this is located in assets\data\levels and is the definition file
a string that indicated the particle the portal in made of
a string that indicates the particle the portal expels
a string that indicates a file in assets\data\text that includes the information in the level dialogue box
"NPCSPAWN"
spawns an npc
takes a string argument that is the npc file is assets\data\npc
"HUBBEHAVIORS"
special tile does a bunch of bookkeeping and menu triggered. please do not use this tile
"VAULTDOOR"
vault doors opened by the emerald, onyx, ruby, sapphire, etc key
takes a numerical argument that indicates what key
"DESERTBOSSTRIGGER"
spawns the next stage of the desert boss
"TRAININGTRACKERS"
does the bookkeeping and logic for the race and target test levels
"LEFTCAMERACLAMP"
left camera clamp while the boss is active
"RIGHTCAMERACLAMP"
right camera clamp while the boss is active
"FORESTGEMSPAWN"
spawns forest gem container
"TOPCAMERACLAMP"
top camera clamp while the boss is active
"BOTTOMCAMERACLAMP"
bottom camera clamp while the boss is actve
"INVISIBLEWALL"
collidable
"TRIGGEREDMESSAGETILE"
displays a message at the bottom of the screen, takes several arguments
a string in quotes that is the message title
a string is quotes that is the message body
a numerical argument that indicates
0 - triggered by a tile
1 - trigged by an item
two numerical arguments that indicate either an (x,y) coordinate for a tile or the item index (y is ignored in this case but still has to be there
a numerical argument that indicates
0 - deactivated by a tile
1 - deactivaed by an item
two number arguments like the ones before
"AREATRIGGER"
tile returns true if the player ever approaches x distance
takes a number argument that is the distance in magicmeters
"WEAKILLUMINATION"
non-collidable, invisible, emits light
"WEAKDARKNESS"
non-collidable, invisible, emits darkness
"CANDLE"
non-collidable, emits light, incomplete
"CANDLESTICK"
non-collidable, incomplete
"CARPET"
non-collidable, incomplete
"SHELF"
one-way collidable, creates book objects
"TABLE"
one-way collidable, incomplete
"TABLELEG"
non-collidable, incomplete
"CHANDLIER"
one-way collidable, emits light, imcomplete
"CHAIRBOTTOM"
one-way collidable, incomplete
"CHAIRBACK"
non-collidable, incomplete
"CASTLEGEMSPAWN"
spawns a castle gem container
"SANDSTONE"
collidable
"SANDSTONEBACK"
non-collidable
"LADDERSTEP"
one-way_collidable
"LADDERSIDE"
non-collidable
"DESERTGEMSPAWN"
spawns a desert gem container
"ICE"
collidable, destructible
"CAVE"
collidable
"CAVEBG"
non-collidable
"ICESPIKES"
damaging, incomplete
"GLOWVINE"
non-collidable, incomplete
"GOLDENTHRONE"
non-collidable, incomplete
"BEANSTALK"
non-collidable
"BEANSTALKLEAFRIGHT"
one-way collidable, incomplete
"BEANSTALKLEAFLEFT"
one-way collidable, incomplete
"BEANSTALKLEAFCENTER"
one-way collidable, incompete
"PROP"
spawns a prop object, takes a string argument that indicates a file in assets\data\prop. TESTPROP is is the folder, and is pretty self-explanatory
"CASTLETHRONE"
non-collidable, incomplete
"COFFINSPAWN"
spawns a coffin object
"GRAVESPAWN"
spawns a grave object
"SANDSTONEDETAIL"
non-collidable
"CRAG"
non-collidable, incomplete
"WATER"
drowns player, incomplete
"PALMTREE"
non-collidable, incomplete
v0.8 (the cavern update) will include these tiles:
"PYRAMIDBACK"
non-collidable, incomplete
"CAVERNGEMSPAWN"
spawns a cavern gem container
"BLUECRYSTAL"
non-colidable
"GREENCRYSTAL"
non-collidable
"PURPLECRYSTAL"
non-collidable
"OBELISK"
non-collidable, incomplete
"RUINSPLATFORM"
collidable, incomplete
"RUINSPILLAR"
non-colliable, incomplete
"DESERTTHRONE"
non-collidable, incompete
"LARVAEICE"
destructible, spawns a larvae egg
"RUNE"
non-collidable
"CAVERNBOSSTRIGGER"
spawns a cavern boss
"ICEMIRROR"
spawns an ice mirror