New features:
- Added
Client.Delay
to delay a single client's input handling on a timer for gameplay purposes, e.g.: using a skill that forces a two second delay on any further input, spam protection for commands - When a skill or spell is invoked, its script handler now has access to the proficiency % of the invoking character, allowing for factoring proficiency into damage calculation or other skill-based behaviours
- Jobs and races now each have primary attributes for stat-rolling and future gameplay mechanics
- Added
AFFECT_PARALYSIS
status effect to limit input during its duration for a stun skill, paralysis spell, other impairment abilities - Added new
Visible
methods for rooms, characters and objects - Added
ROOM_DARK
flag and light-source presence checking logic (Room.ActiveLightSourcePresent
) - Added
AFFECT_BLINDNESS
status effect to limit all character, room and object visibility - Unit test for a battery of
OneArgument
cases drop
andget
/take
commands now accept an "all" argument in all use cases- Add
ITEM_CLOSED
,ITEM_CLOSEABLE
flags which allow for containers to be closed and opened; items cannot be taken from or placed within a closed object - Add a
put
command for placing objects within open containers, respecting the capacity limit on that container - Several new skills and spells, including
chain lightning
andgroup heal
with some party mechanics - The
Golem.RegisterPlayerCommand
method now accepts an additional minimum level parameter - OLC commands for editing/saving game content:
redit
,medit
,oedit
,zedit
,xedit
, andreset
- Indexed lookup on characters and objects:
get 2.potion
,kill 3.slime
- Stat rolling mechanic during character creation with ranges based on job and race primary attributes
Changes:
- Stats are no longer individual fields on a character but an array with constant indices; they are accessed now using a
Character.GetStat
method, allowing for effects to modify stats - QuadTree unit test points are now randomized on each run
- Aggressive NPCs now ignore staff-level characters
- Staff characters now pass through closed doors on movement
Fixes:
- Scripted string editor cursor value no longer being casted to a string and breaking assumptions about the number of lines to be modified in editor commands
- Fix off-by-one error in
OneArgument
utility method - Objects stored within other objects now preserve their "containedness" across character inventory save/load
- Admin user included in seed data now has default password
password
correctly hashed + bcrypted with the example salt included inconfig.json.example