Version 2.02 build 20040513.984
- Added '$C0', '$C1', '$C2', '$C3', '$C4', '$C5', '$C6', '$C7', '$C8', and '$C9' internal variables for use with SET and SETEVAL commands. These variables can contain any numeric data and work exactly like the Ax variables.
- Added '$ch:'s' and '$target:'s' built-in variables to short-cut the building of proper posession text construction (yes, the apostraphe is included in the variable name). For example 'MSGP $ch's weapon.' with a $ch:player:name of 'Exxy' will show up as 'Exxy's weapon.', but with a $ch:player:name of 'Seras' the same code will show up as 'Seras' weapon.'.
- Added '$ch:his', '$ch:him', '$ch:he', '$ch:His', '$ch:Him', '$ch:He', '$target:his', '$target:him', '$target:he', '$target:His', '$target:Him', and '$target:He' built-in variables to return the gender variables of players. For example '$ch:He' will return 'He' or 'She' depending on the gender of $ch.
- Added '$ch:player:ccdtext' and '$target:player:ccdtext' that return the full text of the player's CCD (':player:ccd' returns the length of the text).
- Added '$ch:player:idle' and '$target:player:idle' built-in variables that return the last timestamp value of when the player sent any text to the game (command, speech, etc.)
- Added '$ch:player:sheath' and '$target:player:sheath' built-in variables that return the object ID that the player has set to sheath items into.
- Added '$ch:player:stow' and '$target:player:stow' built-in variables that return the object ID that the player has set to stow items into.
- Added '$D0', '$D1', '$D2', '$D3', '$D4', '$D5', '$D6', '$D7', '$D8', and '$D9' internal variables for use with SET and SETEVAL commands. These variables can contain any string data and work exactly like the Bx variables.
- Added '$game:world:top' built-in variable that returns the highest available/created room number.
- Added '$game:obj:howfound' built-in variable that returns the internal tracking value/flag of where $object was located using SUPER_PARSE and various complex FIND_xxx commands.
- Added '$object:initem' and '$object2:initem' built-in variables that return the item ID that the item is inside of (0 or -1 for none).
- Added '$object:ownerid' and '$object2:ownerid' built-in variables that return the player ID that the item is owned by (0 or -1 for none).
- Added '$target:player:ccd' to mirror '$ch:player:ccd'.
- Added '$target:player:title' and '$target:player:race' built-in variables that mirror the $ch versions.
- Added '_sp_nobreak' option to 'SUPER_PARSE'. It causes 'SUPER_PARSE' to find multiple targets even if one was already found. For example, in the GRIN verb/emote, using GRIN E while in the same room with Exxy and an egg (on the ground, object), would find the egg ($object) and immediately stop, forcing you to grin at the egg. This change allows you to get a reference to the egg ($object) and Exxy ($target) at the same time.
- Added 'BOOST_CH_TRADE_SKILL' and 'BOOST_TARGET_TRADE_SKILL' commands to EaxiaSEL to mirror 'BOOST_CH_SKILL' and 'BOOST_TARGET_SKILL', except that upon ranking no class experience is awarded.
- Added 'FIND_OBJECT2_BY_ID' command to EaxiaSEL. Takes one parameter, the object ID to find. Requires $ch reference point. Stores object into $object2.
- Added 'GIVE_OBJECT_ACCEPT_ALL' command to EaxiaSEL.
- Added 'MSGDEBUG' command to EaxiaSEL.
- Added 'NPC_ADVANCE_TOWARDS_ATTACKER' command to EaxiaSEL.
- Added 'SET_HOW_FOUND' command to EaxiaSEL. Takes one parameter, the value that the "how found" internal tracking value/flag to be set to. For expert use only.
- Added 'SET_PLAYER_SHEATH' command to EaxiaSEL. Takes no parameters. Sets the object ID that $target wants to sheath weapons into. Requires $target and $object as reference points.
- Added 'SET_PLAYER_SKILL' command to EaxiaSEL. Takes two parameters, the first identifies the skill ID and second parameter identifies the new total skill XP for that skill ID. Changes are made to the raw/bonusless skill XP immediately. Requires $target as a reference point.
- Added 'SET_PLAYER_STOW' command to EaxiaSEL. Takes no parameters. Sets the object ID that $target wants to stow items into. Requires $target and $object as reference points.
- Added 'UPDATE_CH_SKILLSHIGHEST_IN_MYSQL' command to EaxiaSEL.
- Added support for Avian hair features.
- Changed 'SUPER_PARSE' so that giving it one parameter of '0' will cause it to automatically turn on '_so_nobreak'.
- Converted dynamic player data to static player data.
- EaxiaSEL scripts are now parsed faster due to smarter line-skipping code.
- Fixed a bug with 'SUPER_PARSE' that was setting $game:obj:howfound for $object2 (it shouldn't ever).
- Imported many utility scripts to the engine to greatly improve speed (see RUN_UTILITY EaxiaSEL command specifications).
- Object database file now uses an indexing system to map unused slots in bulk instead of one at a time (engine speed improvements).
- Started writing support for EaxiaSEL command matching (engine speed improvements)
- Statistics output now records data to RPGN_SubAnon.EaxiaStats database (for staff desktray application support, forthcoming).
Version 2.02 build 20040301.855
- Added '$ch:player:clan' and '$target:player:clan' built-in variables representing the clan ID that the referenced player(s) are a member of.
- Added 'FIND_OBJECT_BY_ID' command to EaxiaSEL. Takes one parameter with valid $ch (first parameter = object ID to find; searches inventory and ground where player is located) or two parameters without a valid $ch or when prefered (first parameter = room number, second parameter = object ID to find)
- Added 'SET_PLAYER_CLAN' command to EaxiaSEL. Operates on $target.
- Added definition for room flag 14: 'request events (for room script)'. Events will no longer be requested for room scripts unless this flag is on for those rooms.
Version 2.02 build 20040224.742
- Added '$npc:id' and '$npc2:id' built-in variables. NPCs are automatically assigned a random number upon creation (between 0 and 999,999,999). The number is not guaranteed to be unique, but should be plenty uncommon for NPCs to remember each other since it's vey uncommon for us to have more than a few hundred NPCs loaded at any particular time. If '$npc' or '$npc2' are not referencing valid NPCs, '$npc:id' and/or '$npc2:id' will be -1 (not 0).
- Added 'CHOOSE_RANDOM_EVIL_NPC_IN_ROOM_NOT_NPC' command to EaxiaSEL.
- Added 'CHOOSE_RANDOM_GOOD_NPC_IN_ROOM_NOT_NPC' command to EaxiaSEL.
- Added 'CHOOSE_RANDOM_NPC_IN_ROOM_NOT_NPC' command to EaxiaSEL.
- Added 'DELETE_NPC2' command to EaxiaSEL.
- Added 'OTHER_NPC_IN_ROOM_WITH_SAME_TEMPLATE' command to EaxiaSEL.
- Added additional allowable characters in account name, password, and character name (combined list: -, @, ., ', !, `, #, $, %, ^, &, *, (, ), =, and +).
- Added protection in engine-side NPC Highlight system against bad NPC references (anti-crash).
- Added support for NPCs to remove other NPCs from their combat list (during death/deletion and during retreat).
- Fixed a bug with '$npc2' variables that was referencing a pointer to '$npc' (causing unexpected results and crashes with scripts that accessed the '$npc2' namespace).
- Fixed a bug with 'DELETE_NPC' that was preventing the '$npc' reference from clearing.
- Fixed a bug with the event pulsing system that was causing game crashes if the event was removed during a pulse and the event had not been parsed yet (example: an NPC pulses and kills another NPC who hasn't pulsed yet in the current event poll).
- Fixed a bug with the room script event notification that could potentially cause crashes.
Version 2.02 build 20040223.909
- Extended 'SUPER_PARSE' EaxiaSEL command by allowing a parameter to be passed to it to short-cut setting mode. The new syntax for 'SUPER_PARSE' is: (1) SUPER_PARSE, (2) SUPER_PARSE <mode>, and (3) SUPER_PARSE <custom search pattern>. You can still use custom variable '_sp' to set search mode instead of passing it as a parameter.
- Fixed a bug in 'SUPER_PARSE' that was causing all mode selections to fail (1-10), defaulting to mode 0 instead.
- Fixed a bug in 'SUPER_PARSE' that was ignoring the following custom options: _sp_invisobject, _sp_hiddenplayer, _sp_invisplayer, and _sp_invisstaff.
- Fixed a bug in 'SUPER_PARSE' that was preventing it from returning a reference to 'object2' if 'object' was found in a container without explicitly specifying one ('WEAR SHIRT' when shirt is in a backpack should return 'object' of 'shirt' and 'object2' of 'backpack').
- Fixed a bug in 'SUPER_PARSE' that was shifting mode cycling by 1, causing the first search mode to be skipped for all parsing.
- Fixed a bug in 'SUPER_PARSE' that was using inappropriate search ordering on some modes.
Version 2.01 build 20040220.1277
- Added automatic self-repairing code to the room object indexing loader upon startup after defecting problems.
- Changed class A errors about object indexes to cautions, warnings, and errors where appropriate.
- Made numerous performance-enhancing changes to the login code, particularly where characters are loaded and converted from our abstract data format to a static data struct, yielding an overall increase in login speed of around 150-300% faster.
Version 2.01 build 20040217.956
- Added 'Actions' -> 'Reload all scripts' menu option to server interface.
- Added 'Location' to 'Connection details' window (double-clicked connection from the server interface) listing the current 'in_room' data of the character connection.
- Added 'Mugging' to the internal skills list (fixes 'You gain a new rank in' bug).
- Added 'UPDATE_CH_SKILLSBONUSLESS_IN_MYSQL' command to EaxiaSEL.
- Changed server interface connection list format for connected characters from: <first> <last> [ID <id>, account '<account>'] to: <first> <last> [#<id>, <account>]
- Changed statistics system ('STATS.TXT') to interpret off-duty staff as minus-one connection and staff-appearing-as-player staff as a player instead of staff.
- Decreased static safety buffer of the internal classes list from 156 entries to 100 entries.
- Optimized variable replacement code by adding checks to return early, giving an overall script increase in performance.
- Removed class A errors about 'monster level 0' in skill boosting system.
- Removed class A warnings about class ID 0 in health generation system during health calculation.
- Removed class A warnings about class ID 0 in health generation system during mana calculation.
Version 2.01 build 20040217.69
- Fixed uninitialized data bug in EaxiaSEL-to-USL bridge causing random memory access (and random crashes).
- Increased the static buffer size used by the global replace function from ~60kb to 100kb.