Heroes and Monsters
Classes and levels
A world can offer up to 89 character classes, and a hero climbs levels 0 to 100 in one of them. The
+LEVELS table describes both. A numeric row is keyed by class times 100 plus level: row
107 is class 1 at level 7, row 1200 is class 12 at level 0. Each row gives the HP and
MP gained at that level, the title the hero carries (with gender forms separated by a vertical bar), and, on the
level-0 row only, the class name, its magic-to-hand ratio and its starting weapon.
You do not have to write all hundred levels. A gain carries forward until a later row changes it, and the
AUTO_MAX keyword replaces the per-level gains with a curve from a starting figure to a level-100
figure. The experience needed for each level is the same for every class and is built into the game: the second
column of a levels row is read but not used.
Keyword rows follow a class's numeric rows and apply to that class. The ones you will use most:
| Keyword | Sets |
|---|---|
DESCRIPTION | The blurb shown when a new soul is choosing a class. |
START_ABILITY, MAX_ABILITY | Strength, wisdom, stamina, agility and dexterity at birth, and their caps. |
START_HAND_PP, MAX_HAND_PP | Training points in each of the eight weapon hands at birth, and how far each can be trained. |
START_ELEMENT_PP, MAX_ELEMENT_PP | The same for the eight elements. |
START_ITEMS, START_SPELLS, START_TOKENS | Up to eight of each that a new hero of the class begins with. |
START_LOCATION | Map, link and whether to drop straight into the scene. |
DEFAULT_SKIN | The skin a new hero wears, one name per gender. |
MAGIC_RATIO / HAND_RATIO | How the class splits its power between spells and weapons. |
MAX_WALLET, NO_GIFTS | A lower gold cap, and a class that cannot be handed items. |
HIDDEN_CLASS | A class nobody can pick at the Well. The script can move a hero into it by setting the num.hostClass cookie, and the hero is held to the level given. |
The full list, with every argument, is on the Table Reference.
Hands and elements
Each weapon hand and each element has its own training points. A hero's level in one is a curve of the points
spent on it that climbs quickly at first and flattens out, and the class's MAX_ rows cap how far
training can go. The +HANDS and +ELEMENTS tables name the eight of each. Leave
+ELEMENTS out and the world gets the stock eight: Life, Water, Nature, Earth, Death, Fire, Spirit
and Air, in that order, which is also the order every eight-value list uses.
A new hero
At the Well a new soul picks a class, spends twenty ability points, chooses a skin and arrives at the class's
start location with its starting gold (StartingGP in config.ini, a thousand unless
you say otherwise), items, spells and tokens.
Monsters
One row of +MONSTERS per monster, numbered 1 to 4095. Row 0 is not a monster but a template:
its figures are percentages applied to every monster whose own figures are left to the game. A monster has a
name, a film strip in monsters/, a look (scale, colour table, transparency), an element and an
alignment word, its combat figures, the experience and gold it yields, its level, five abilities, two
sounds, an attack path and an AI word.
Leave HP, MP, attack, defence, experience or gold at zero and the game works them out from the level, so a
first draft of a monster is just a name, a skin and a level. The alignment word matters more than it looks: the
script can count kills by alignment (KM.undead, say), which is how a quest asks for ten of a kind.
/monsterinfo 40 (or a name) prints a monster's row as the game loaded it, and
/props edits the table in a window.
Groups and encounters
+GROUPS bundles up to nine monsters that appear together. The Link Editor assigns a group to each
link; a fight on the map rolls each member against the link's chance, or spawns all of them if group row 0 says
so. Inside a scene the script's FIGHT command names monsters outright, draws a random group from
the link with *, or fights the link's usual encounter with no arguments at all.
/dist 3 lists where monsters are placed on map 3, and /dist -1 covers every map
and adds the monsters that are placed nowhere. /monsters shows the placements over the map.
Balancing
/class 3 prints a class's figures. /battle pits every class against every other
and prints each pairing once; /battle2 prints only the summary and /battle3 the whole
blow-by-blow. /doldrum compares the experience needed for each level with what a monster of the same
level yields, which shows where levelling will drag. /fight 40 puts monster 40 in front of your test
hero right now.
Monster strips and hero skins are described under Skins and Art.