Configuration - Hirato/lamiae GitHub Wiki

This article is strictly for the configuration of the individual game components.

For map configuration stuff, see Map Configuration.

Cutscenes

These are located in games/%GAMEDIR%/cutscenes.

As they are technically not part of game configuration, consult Cutscenes if you require more information.

Table of Contents


Base

The base configuration file is a file of the same name as the game's directory, ie

games/%GAME%.cfg    <-- This is your game's main configuration file
games/%GAME%/       <-- This is where your game lives.

Game Configuration File

The game configuration file is located inside the games subdirectory, Lamiae scans this directory to look for .cfg files, these files are used to generate the list of available games, so in essence, this file is required to allow Lamiae to acknowledge the existence of your game.

As for what this file contains, it contains the setup needed for your game. You define the game's version, the last version it's compatible with, you define the default HUD, and you associate maps with mapscripts and mapflags, otherwise they will default to scripts and flags of 0. Script 0 is a dummy script, it's a null script that does nothing by default, and a mapflag setting of 0 grants no extra properties to the map itself.

Commands

r_preparemap
r_preparemap map script [flags]

Map names a map to which the new script and flags are to be associated with, these can be changed mid-game. The values from the savegame itself will override those you've defined in here.

Script refers to the index of a Mapscript, see Mapscripts below for details.

Flags refers to specific map flags, which grant unique properties to the map. They are as follows. They can be added together with a bitwise-or, ie (| $MAP_FLAG1 $MAP_FLAG2 ...). The available flags are reduced below

MAP_VOLATILE  - The map's status isn't permanent, the map is cleared when the player leaves, and re-instantiated when entered. The map's state will still persist across savegames.
MAP_NOSAVE    - Inhibits saving on the map
MAP_NOMINIMAP - Reduces the functionality of the minimap to that of a compass.

Variables

gameversion

Defines the version of your game, you should increment this as you add additional features to you game, or pushed changes that are no longer compatible with previous versions.

compatversion

Defines the last version of your game in which savegames are considered compatible. If the gameversion of the game inside the savegame file is older than game version, a series of import # signals are sent out to update it to the latest version.

Important Notes

Several of the items below refer to various types and flags, the enumerations are reproduced in full inside data/rpg/enums.cfg, and are also presented here for convenience. Those provided in the file are mostly guaranteed to be up-to-date, and you should make a conscientious effort to use them to avoid using unmanageable magic numbers.

As for querying the values for the various slots, earlier revisions defined supplementary commands with a _get suffix to retrieve and query them. They've been deprecated and in the case of Lamiae, removed.

They've been altered to function similarly to variables, for example, echo $r_char_mdl will print the selected character object's model, and r_char_mdl will print it to screen using the standard means for variables.

The old deprecated form would look as such: echo (r_char_mdl_get) - This form isn't available in Lamiae.

The slot definitions will also contain annotations inside braces and square brackets, the annotations are as follows.

[INT][0...10]              - Integer type with a range of 0 to 10
[FLOAT][0...1]             - Floating point with a range from 0 to 1.
[VEC][0...1][0...1][0...1] - A 3D vector
[BOOL]                     - Alias for [INT][0...1]
[STRING][OPT]              - A string - Also used for hashtypes
                           - for hash types, the new value is not applied if it's invalid, whilst other types clamp
                           - an [OPT]suffix is used for in which "" is an empty value for hashes.
[*RO]                      - A read only variant of the above

As for commands, these take parameters, the commands will be annotated with the following symbols

[s] - String
[r] - Reference
[i] - Integer
[f] - float
[e] - executable CubeScript

For those that specify a lower case string as a limit, the respectively named static is used as the limiter

Statics

Statics are loaded once and the data stored in memory. Unlike the dynamics, their existence can be easily and quickly validated. The files can be freely named, but must have a .cfg extension. Not having the extension will cause the file to be silently ignored, desiable if you have text documents and things in here.

The files themselves are stored with the name they were given, and are also referenced as such. For example, if a script is available in null.cfg this would be stored inside

Also keep in mind that there is no order to how they are loaded, it is done in the order the operating system itself hands us the files. So don't make any assumptions about being able to access or tinker with a specific script during the initialisation stage.

Some validation is also done, if failing it crashes Lamiae, report a bug.

NOTE: The categories of the statics below are sorted in the order in which they are evaluated.

Globals

These are defined in games/%GAME%/variables.cfg using r_global_new.

See Scripting for more information on global variables.

Tips

These are defined in games/%GAME%/tips.cfg

The contents of this file are a series of r_tip_new invocations, which register various generic tips to display during the otherwise quick loading process.

These are also printed to the console once loading finishes, to ensure there is enough time to read them if desired.

If you do not want regular tips, simply leave this file empty for your game.

r_tip_new str
	- Registers the given string as is to display a new tip.

Categories

These are defined in games/%GAME%/categories.cfg.

These hold the names and indices of ALL the categories that are registered for the game, do note that an item can be of only a single category. Also take heed, you will want to alias the registered categories lest your files become an unmaintainable mesh of magic numbers.

r_cat_new str[s]
	- Registers str s a new category; the index is returned.
r_cat_get idx[i]
	- Returns the category's name for the given index.

Merchant

These are defined in games/%GAME%/merchants/.

Merchant definitions defines a single entity's barter prices, as well as their used currency and available store credit. These can be assigned to both containers and critters, it is advisable to attach them to the former. Do note you may put multiple containers and critters under the dominion of the same merchant, they'll share credit and barter prices.

By default, a merchant cannot trade in the given good, the buy/sell rates need to be set explicitly. Note that the given currency is currently always traded at its raw value.

By default, the buyadjust/selladjust values are set to 0.2. These adjust values are multiplied by the player's diplomacy skill, and this is then added (or subtracted) from the price. Essentially this means by default, if the player's diplomacy's maxed out, he will sell items for 1.2x what he normally would, and he'd buy items for 0.8x for what he normally would.

If for example, we have set rates in which a merchant buys for 0.6 and sells for 0.8, at max diplomacy these will effectively be 0.72 and 0.64 respectively, so items would be more valuable when sold to the NPC. So please be aware of this pitfall when balancing prices.

r_merchant_setrate cat[i] buy[f] sell[f]
	- buy and sell are multipliers, 1 = full price. The arguments are named in the perspective of the player.

r_merchant_currency [STRING]
	- Defines the item that is used as money, not validated
r_merchant_credit [INT][0...0xFFFFFF]
	- defines the amount of money owed to the player.
r_merchant_buyadjust [FLOAT][0...1]
	- reduces buying prices up to this fraction based on diplomacy skill
r_merchant_selladjust [FLOAT][0...1]
	- raises selling prices up to this fraction based on diplomacy skill

Scripts

These are defined in games/%GAME%/scripts/.

These files contain dialogue as well as scripts which are executed when events are triggered (aka, signals are received). The script named null should be kept empty as it is used as a fallback for entities that try to reference a script that doesn't exist.

For more details on both subsystems, see Scripting

r_script_node name[s] text[e] responses[e]
	- Registers a dialogue node
r_script_signal signal[s] script[e]
r_script_signal_append signal[s] script[e]
	- These two define the script to execute when a signal is received, the first overrides, and the second adds an auxiliary script.

Particle Effects

These are defined in games/%GAME%/effects/.

Particle effect shave multiple uses, these are used for idle effects like swords of fire, spawn particles for status effects, and interact with the weapons, defining the appearance of their trails, as well as those of the projectiles.

r_effect_flags [INT][0...FX_MAX]
r_effect_mdl [STRING]
	- If set, renders a model instead of a particle when used as a "projectile" effect.
r_effect_decal [INT][-1...DECAL_MAX]
r_effect_spin [VEC][-100...100][-100...100][-100...100]
r_effect_particle [INT][0...PART_LENS_FLARE-1]
r_effect_colour [INT][0...0xFFFFFF]
r_effect_fade [INT][1...120000]
r_effect_gravity [INT][-10000...100000]
r_effect_size [FLOAT][0.01f...100.0f]

- These require the FX_DYNLIGHT flag to be on.
r_effect_lightflags [INT][0...7]
r_effect_lightfade [INT][0...120000]
r_effect_lightradius [INT][16...2048]
r_effect_lightinitradius [INT][16...2048]
r_effect_lightcol [VEC][-1...-1][-1...-1][-1...-1]
r_effect_lightinitcol [VEC][-1...-1][-1...-1][-1...-1]
r_effect_flags

The following flags are available

FX_DYNLIGHT   - Enables/disables the use of the light fields.
FX_FLARE      - Generates a lens flare based on the light values.
FX_FIXEDFLARE - Generates a fixed-size lens flare based on the light values.
r_effect_particle

The following types are viable candidates for use as a particle.

PART_BLOOD
PART_WATER
PART_SMOKE
PART_STEAM
PART_FLAME
PART_FIREBALL1
PART_FIREBALL2
PART_FIREBALL3
PART_STREAK
PART_LIGHTNING
PART_EXPLOSION
PART_EXPLOSION_BLUE
PART_SPARK
PART_EDIT
PART_MUZZLE_FLASH1
PART_MUZZLE_FLASH2
PART_MUZZLE_FLASH3
PART_SNOW
PART_LEAVES

These should not be used as a particle in these contexts, period.

PART_HUD_ICON
PART_HUD_ICON_GREY
PART_TEXT
PART_METER
PART_METER_VS

Status Effect Groups

These are defined in games/%GAME%/statuses/.

These define a series of status effects and bunches them together, hence the name, statusgroup. Each status effect has their own unique properties and durations, but they are treated as a singular unit.

The main reason for this separation was to support 'polymorph" types better, essentially grouping the effect with the changes of your new type.

r_status_num_effect
	- returns the amount of effects in the selected group.
r_status_get_effect idx[i]
r_status_addgeneric type[i] strength[i] duration[i] variance[f]
r_status_addpolymorph model[s] strength[i] duration[i] variance[f]
r_status_addlight red[f] green[f] blue[f] strength[i] duration[i] variance[f]
r_status_addsignal signal[s] strength[i] duration[i] variance[f]
r_status_addscript script[e] strength[i] duration[i] variance[f]

r_status_friendly [BOOL]
r_status_icon [STRING]
r_status_name [STRING]
r_status_description [STRING]
r_status_persisteffect [STRING][OPT]
r_status_addgeneric

The following are valid generic types, invalid types are not reproduced here, but are reproduced in the enums.cfg file.

- these affect your tertiary and some secondary status
STATUS_HEALTH
STATUS_MANA
STATUS_MOVE
STATUS_WEIGHT
STATUS_CRIT
STATUS_HREGEN
STATUS_MREGEN

- these affect your primary stats
STATUS_STRENGTH
STATUS_ENDURANCE
STATUS_AGILITY
STATUS_CHARISMA
STATUS_WISDOM
STATUS_INTELLIGENCE
STATUS_LUCK

- these affect your primary skills
STATUS_ARMOUR
STATUS_DIPLOMACY
STATUS_MAGIC
STATUS_MARKSMAN
STATUS_MELEE
STATUS_STEALTH
STATUS_CRAFT

STATUS_FIRE_T
STATUS_WATER_T
STATUS_AIR_T
STATUS_EARTH_T
STATUS_ARCANE_T
STATUS_MIND_T
STATUS_HOLY_T
STATUS_DARKNESS_T
STATUS_SLASH_T
STATUS_BLUNT_T
STATUS_PIERCE_T

STATUS_FIRE_R
STATUS_WATER_R
STATUS_AIR_R
STATUS_EARTH_R
STATUS_ARCANE_R
STATUS_MIND_R
STATUS_HOLY_R
STATUS_DARKNESS_R
STATUS_SLASH_R
STATUS_BLUNT_R
STATUS_PIERCE_R

STATUS_STUN
STATUS_SILENCE
STATUS_DOOM
STATUS_LOCK
STATUS_MAGELOCK
STATUS_DISPEL
STATUS_REFLECT
STATUS_INVIS

Ammo types

These are defined in games/%GAME%/ammo/.

Essentially this is for letting you define extensible ammo types.

There are three reserved types, they are named mana, health, experience. You can redefine them to name the resources what ever you like. You cannot use these resources in any other maner via ammo, and whilst items can be associated against these, they never checked.

Ammotypes define a group of items that are classified as a single item type, for example, You could define the "Arrow" ammo group, and use to define the different types of arrows for use with recurve and composite bows, both short and long. In addition, you can define "bolts" for crossbows, bullet categories (eg 10mm rounds, with JHP, AP, and other misc variants).

r_ammo_add_item idx[i]
r_ammo_num_item
r_ammo_get_item idx[i]
r_ammo_name [STRING]

Factions

These are defined in games/%GAME%/factions/.

Each creature has a faction, and containers can also be owned by factions.

Factions are loaded in a 2-parts, fist they are parsed to determine which factions exist, and then they are initialised. Therefor you can safely assume that you can reference the other factions from the initialisation scripts, but there is no guarantee that they'll be initiated.

There are helper utilities defined in data/rpg/utilities.cfg which making interacting with factions significantly easier, and established some consistency/redundancy rules between them.

r_faction_set_relation faction[i] friendliness[i]
r_faction_get_relation faction[i]
r_faction_name [STRING]
r_faction_logo [STRING]
r_faction_base [INT][0...100]
	- defines the default friendliness to other factions

Mapscripts

These are defined in games/%GAME%/mapscripts/.

These work exactly like the script variants, with the caveat that dialogue is not available. The script called "null" should be kept empty, as unregistered maps will default to it.

For more information about signals, consult Scripting for further details.

r_mapscript_signal signal[s] script[e]
r_mapscript_signal_append signal[s] script[e]

Recipes

These are defined in games/%GAME%/recipes/.

Recipes define 3 lists of ingredients, catalysts, and products, there are built in rules to allow factoring

The required items to make the items in question are defined as INGREDIENTS * MUL + CATALYSTS, and this will produce PRODUCTS * MUL, where MUL is the factor.

r_recipe_add_ingredient idx[i]
r_recipe_add_catalyst idx[i]
r_recipe_add_product idx[i]
r_recipe_get_ingredient idx[i]
r_recipe_get_catalyst idx[i]
r_recipe_get_product idx[i]
r_recipe_num_ingredient
r_recipe_num_catalyst
r_recipe_num_product
r_recipe_name [STRING]
r_recipe_flags [INT][0...RECIPE_MAX]
r_recipe_reqs_strength [INT][0...100]
r_recipe_reqs_endurance [INT][0...100]
r_recipe_reqs_agility [INT][0...100]
r_recipe_reqs_charisma [INT][0...100]
r_recipe_reqs_wisdom [INT][0...100]
r_recipe_reqs_intelligence [INT][0...100]
r_recipe_reqs_luck [INT][0...100]
r_recipe_reqs_armour [INT][0...100]
r_recipe_reqs_diplomacy [INT][0...100]
r_recipe_reqs_magic [INT][0...100]
r_recipe_reqs_marksman [INT][0...100]
r_recipe_reqs_melee [INT][0...100]
r_recipe_reqs_stealth [INT][0...100]
r_recipe_reqs_craft [INT][0...100]
r_recipe_flags

The following flags are available. Do note that only the RECIPE_KNOWN flag is saved between sessions.

RECIPE_KNOWN  - Allows the player to craft the item.
RECIPE_SINGLE - When true, this is a one-use recipe, you make it, you lose it.

Player

The statistics of the player are defined in games/%GAME%/player.cfg. For details on configuring the player, see Critters in the dynamics section below.

Dynamics

The dynamics are effectively dynamic templates for the creatures they spawn. They are not cached, holes are therefore tolerated in the sequence. If a hole is encountered, an error is printed and the object is initialised using the default values.

items

These are defined in games/%GAME%/items/.

r_item_use_new_consumable
r_item_use_new_armour
r_item_use_new_weapon
r_item_name [STRING}
r_item_icon [STRING]
r_item_description [STRING]
r_item_mdl [STRING]
r_item_quantity [INT][0...0xFFFFFF]
r_item_script [STRING]
r_item_category [INT][0...categories]
r_item_flags [INT][0...ITEM_MAX]
r_item_value [INT][0...0xFFFFFF]
r_item_maxdurability [INT][0...0xFFFFFF]
r_item_charges [INT][-1...0xFFFF]
r_item_weight [FLOAT][0...0xFFFF]
r_item_durability [FLOAT][0...0xFFFFFF]
r_item_recovery [FLOAT][0...1]
r_item_flags

The following flags are available, do note that they're only partially supported.

ITEM_QUEST   - Identifies the item as a quest item.
ITEM_CURSED  - Identifies the item as a cursed item, cursed items cannot be unequipped normally.
ITEM_NATURAL - Identifies the item as a being part the creature, eg, a wolf's bite attack.
ITEM_STOLEN  - Identifies the item as being obviously stolen.

Uses

You are required to invoke r_item_use_new_* above before you can interact with these commands and slots; to do otherwise is to modify that which isn't available.

These are the basic commands/slots, and are available to CONSUMABLE types and beyond.

r_item_use_new_status status[i] element[i] multiplier[f]
r_item_use_type [INTRO]
r_item_use_name [STRING]
r_item_use_description [STRING]
r_item_use_icon [STRING]
r_item_use_script [STRING]
r_item_use_cooldown [INT][0...0xFFFF]
r_item_use_chargeflags [INT][0...CHARGE_MAX]
r_item_use_chargeflags

The properties of the attack can be manipulated through charge. Charge can be gained either by charging the attack, or by having the player improve the effectiveness of the skill required for this item. All factors are affected equally by charge.

CHARGE_SPEED    - The charge magnifies speed of the projectile
CHARGE_MAG      - The charge magnifies the magnitude of the effect
CHARGE_DURATION - The charge magnifies the duration of hte effects
CHARGE_TRAVEL   - The charge magnifies the lifetime of the projectile
CHARGE_RADIUS   - The charge magnifies the area explosive effects will affect

In addition to the above, these are available for ARMOUR types and beyond.

r_item_use_vwepmdl [STRING]
r_item_use_hudmdl [STRING]
r_item_use_idlefx [STRING][OPT]
r_item_use_reqs_strength [INT][0...100]
r_item_use_reqs_endurance [INT][0...100]
r_item_use_reqs_agility [INT][0...100]
r_item_use_reqs_charisma [INT][0...100]
r_item_use_reqs_wisdom [INT][0...100]
r_item_use_reqs_intelligence [INT][0...100]
r_item_use_reqs_luck [INT][0...100]
r_item_use_reqs_armour [INT][0...100]
r_item_use_reqs_diplomacy [INT][0...100]
r_item_use_reqs_magic [INT][0...100]
r_item_use_reqs_marksman [INT][0...100]
r_item_use_reqs_melee [INT][0...100]
r_item_use_reqs_stealth [INT][0...100]
r_item_use_reqs_craft [INT][0...100]
r_item_use_slots [INT][0...SLOT_MAX]
r_item_use_skill [INT][-1...SKILL_MAX]
r_item_use_slots

These act as bitflags to define the slots the item will occupy. For example | $SLOT_TORSO $SLOT_ARMS $SLOT_LEGS $SLOT_FEET could be used for full body armour, minus the helmet.

SLOT_LHAND
SLOT_RHAND
SLOT_LEGS
SLOT_ARMS
SLOT_TORSO
SLOT_HEAD
SLOT_FEET
SLOT_QUIVER

In addition to the above, the following slots are also available for WEAPON types.

r_item_use_range [INT][0...1024]
r_item_use_angle [INT][0...360]
r_item_use_lifetime [INT][0...0xFFFF]
r_item_use_gravity [INT][-1000...1000]
r_item_use_projeffect [STRING][OPT]
r_item_use_traileffect [STRING][OPT]
r_item_use_deatheffect [STRING][OPT]
r_item_use_cost [INT][0...0xFFFF]
r_item_use_pflags [INT][0...P_MAX]
r_item_use_ammo [STRING]
r_item_use_target [INT][0...T_MAX]
r_item_use_radius [INT][0...0xFFFF]
r_item_use_kickback [INT][-0xFFFF...0xFFFF]
r_item_use_recoil [INT][-0xFFFF...0xFFFF]
r_item_use_charge [INT][0...0xFFFF]
r_item_use_basecharge [FLOAT][0...100]
r_item_use_mincharge [FLOAT][0...100]
r_item_use_maxcharge [FLOAT][0...100]
r_item_use_elasticity [FLOAT][0...1]
r_item_use_speed [FLOAT][0...100]
r_item_use_pflags

The following flags are available to manipulate projectile behaviour.

P_TIME       - dissapears after set time
P_DIST       - dissapears after set distance
P_RICOCHET   - bounces off walls
P_VOLATILE   - detonates when the projectile expires without hitting anything
P_PROXIMITY  - detonates when something enters its radius
P_STATIONARY - does not move (ie mines) - requires proximity or time
P_PERSIST    - attacks travel through or bounce of targets; only hits a target once
r_item_use_target
T_SINGLE  - hits one
T_MULTI   - hits many near the area of impact
T_AREA    - persistant effect on area
T_SELF    - on self
T_SMULTI  - for multi effects on self
T_SAREA   - for area effects on self
T_HORIZ   - sideways arc; technically not horizontal when looking up or down.
T_VERT    - vertical arc
T_CONE    - hits everything inside a cone

Critters

These are defined in games/%GAME%/critters/.

r_char_name [STRING]
r_char_mdl [STRING]
r_char_portrait [STRING]
r_char_script [STRING]
r_char_faction [STRING]
r_char_merchant [STRING][OPT]
r_char_health [FLOAT]
r_char_mana [FLOAT]
r_char_base_level [INT][1...1000]
r_char_base_experience [INT][0...0x7FFFFFFF]
r_char_base_statpoints [INT][0...500]
r_char_base_skillpoints [INT][0...500]
r_char_base_strength [INT][1...100]
r_char_base_endurance [INT][1...100]
r_char_base_agility [INT][1...100]
r_char_base_charisma [INT][1...100]
r_char_base_wisdom [INT][1...100]
r_char_base_intelligence [INT][1...100]
r_char_base_luck [INT][1...100]

r_char_base_delta_strength [INTRO]
r_char_base_delta_endurance [INTRO]
r_char_base_delta_agility [INTRO]
r_char_base_delta_charisma [INTRO]
r_char_base_delta_wisdom [INTRO]
r_char_base_delta_intelligence [INTRO]
r_char_base_delta_luck [INTRO]

r_char_base_armour [INT][0...100]
r_char_base_diplomacy [INT][0...100]
r_char_base_magic [INT][0...100]
r_char_base_marksman [INT][0...100]
r_char_base_melee [INT][0...100]
r_char_base_stealth [INT][0...100]
r_char_base_craft [INT][0...100]

r_char_base_delta_armour [INTRO]
r_char_base_delta_diplomacy [INTRO]
r_char_base_delta_magic [INTRO]
r_char_base_delta_marksman [INTRO]
r_char_base_delta_melee [INTRO]
r_char_base_delta_stealth [INTRO]
r_char_base_delta_craft [INTRO]

r_char_base_fire_thresh [INT][-500...500]
r_char_base_water_thresh [INT][-500...500]
r_char_base_air_thresh [INT][-500...500]
r_char_base_earth_thresh [INT][-500...500]
r_char_base_arcane_thresh [INT][-500...500]
r_char_base_mind_thresh [INT][-500...500]
r_char_base_holy_thresh [INT][-500...500]
r_char_base_darkness_thresh [INT][-500...500]
r_char_base_slash_thresh [INT][-500...500]
r_char_base_blunt_thresh [INT][-500...500]
r_char_base_pierce_thresh [INT][-500...500]

r_char_base_delta_fire_thresh [INTRO]
r_char_base_delta_water_thresh [INTRO]
r_char_base_delta_air_thresh [INTRO]
r_char_base_delta_earth_thresh [INTRO]
r_char_base_delta_arcane_thresh [INTRO]
r_char_base_delta_mind_thresh [INTRO]
r_char_base_delta_holy_thresh [INTRO]
r_char_base_delta_darkness_thresh [INTRO]
r_char_base_delta_slash_thresh [INTRO]
r_char_base_delta_blunt_thresh [INTRO]
r_char_base_delta_pierce_thresh [INTRO]

r_char_base_fire_resist [INT][-200...100]
r_char_base_water_resist [INT][-200...100]
r_char_base_air_resist [INT][-200...100]
r_char_base_earth_resist [INT][-200...100]
r_char_base_arcane_resist [INT][-200...100]
r_char_base_mind_resist [INT][-200...100]
r_char_base_holy_resist [INT][-200...100]
r_char_base_darkness_resist [INT][-200...100]
r_char_base_slash_resist [INT][-200...100]
r_char_base_blunt_resist [INT][-200...100]
r_char_base_pierce_resist [INT][-200...100]

r_char_base_delta_fire_resist [INTRO]
r_char_base_delta_water_resist [INTRO]
r_char_base_delta_air_resist [INTRO]
r_char_base_delta_earth_resist [INTRO]
r_char_base_delta_arcane_resist [INTRO]
r_char_base_delta_mind_resist [INTRO]
r_char_base_delta_holy_resist [INTRO]
r_char_base_delta_darkness_resist [INTRO]
r_char_base_delta_slash_resist [INTRO]
r_char_base_delta_blunt_resist [INTRO]
r_char_base_delta_pierce_resist [INTRO]

- Do note that these act as bonuses upon your calculated values.
r_char_base_maxspeed [INT][0...100]
r_char_base_jumpvel [INT][0...100]
r_char_base_maxhealth [INT][0...100000]
r_char_base_maxmana [INT][0...100000]
r_char_base_crit [INT][0...100]
r_char_base_healthregen [FLOAT][0...1000]
r_char_base_manaregen [FLOATT][0...1000]

r_char_base_delta_maxspeed [INTRO]
r_char_base_delta_jumpvel [INTRO]
r_char_base_delta_maxhealth [INTRO]
r_char_base_delta_maxmana [INTRO]
r_char_base_delta_crit [INTRO]
r_char_base_delta_healthregen [FLOATRO]
r_char_base_delta_manaregen [FLOATRO]

Obstacles

These are defined in games/%GAME%/obstacles.

r_obstacle_mdl [STRING]
r_obstacle_weight [INT][0...0xFFFF]
r_obstacle_script [STRING]
r_obstacle_flags [INT][0...OBS_MAX]
r_obstacle_flags

The following flags are available for object types.

OBS_STATIONARY - Prevents the obstacle from being pushable by the player.

Containers

These are defined in games/%GAME%/containers/.

r_container_mdl [STRING]
r_container_name [STRING]
r_container_faction [STRING][OPT]
r_container_merchant [STRING][OPT]
r_container_capacity [INT][0...0xFFFF]
r_container_script [STRING]
r_container_lock [INT][0...100]
r_container_magelock [INT][0...100]

Platforms

These are defined in games/%GAME%/platforms/.

r_platform_addroute from[i] to[i]
	- from and to refer to the tag parameter of a "platformroute" entity.
	You can safely use the same 'from' tag multiple times.
r_platform_delroute from[i] to[i]
	- like r_platform_addroute, but removed the link of the from point towards the to point.
r_platform_clearroutes
	- Clears all route information on the platform.
r_platform_mdl [STRING]
r_platform_speed [INT][1...1000]
r_platform_flags [INT][0...PLAT_MAX]
r_platform_script [STRING]
r_platform_flags

The following flags are available for platforms.

PLAT_ACTIVE - When on, the platform will move around to its defined route.

Triggers

These are defined in games/%GAME%/triggers/.

r_trigger_mdl [STRING]
r_trigger_name [STRING]
r_trigger_flags [INT][0...TRIG_MAX]
r_trigger_script [STRING]
r_trigger_flags
TRIG_INVIS - disables rendering for the trigger, useful for making the object a bounding box around geometry.
TRIG_TRIGGERED - the triggered state invokes playback of the trigger animation, when true collisions are disabled.