Skip to content

Latest commit

 

History

History
764 lines (695 loc) · 102 KB

File metadata and controls

764 lines (695 loc) · 102 KB

Changelog

0.9.0 (2026-07-21)

Features

  • combat: carry class and equip_modifiers on Combatant (15afdc0)
  • combat: equipment damage families in magic pipeline (6b95ba6)
  • combat: equipment damage families in physical pipeline (5fbe37b)
  • combat: EquipmentBonuses read surface (81cf06a)
  • combat: make boss monsters immune to knockback (f733747)
  • combat: on-hit equipment status infliction (55b9970)
  • combat: thread skill_id into damage calculator opts (052d4c2)
  • db: add boss_respawns table (3a7b4bb)
  • items: bonus2 damage-tier key schema in BonusKeys (1edb1b4)
  • items: bonus2 skill-economy keys (4110a91)
  • items: bonus2 status infliction keys (5121341)
  • items: capacity, rate, all-stats and attack-element equip bonuses (1ed91d8)
  • items: cast, delay and long-attack rate equip bonuses (5b44250)
  • items: crit-damage, short-attack and perfect-hit equip bonuses (b8c1e30)
  • items: defender, drain, flag and race2 equip bonus keys (d9d5bdb)
  • items: flag bonuses, ternaries and level inputs in equip scripts (62d55ff)
  • items: hp-drain and splash-range equip bonuses (671a32a)
  • items: per-race experience equip bonus (26fb8f1)
  • items: race/size/class/eff constant tables in Resolver (00172a4)
  • items: regen, sp-cost, speed, fixed-cast and heal-power equip bonuses (24d7372)
  • items: transpile bonus2 damage-tier commands (f51bf8f)
  • items: tuple bonus destinations in EquipScript (365888c)
  • level-penalty: import mvp exp and drop penalty tables (ee91587)
  • mobs: award mvp exp, drops and announcement on boss death (3778251)
  • mobs: import mvp exp and mvp drops (e1cd77f)
  • players: add priest cross-session commands (cbe3f4b)
  • players: retain dead players as spatial corpses (7ec9baa)
  • priest: add aspersio and kyrie eleison (fa30c56)
  • priest: add complete skill tree (c9a8d72)
  • priest: add impositio and suffragium (33c1fcc)
  • priest: add lex skills and turn undead (6dab02f)
  • priest: add magnificat and gloria (42e9c87)
  • priest: add slow poison and status recovery (6207f4b)
  • priest: implement bs sacramenti (08bbb63)
  • priest: implement mace mastery (3f9d91e)
  • priest: implement magnus exorcismus (96a3919)
  • priest: implement redemptio (91f03ba)
  • priest: implement resurrection (4ef0954)
  • priest: implement sanctuary (7c8df82)
  • skills: expose splash_radius in skill list (f360eac)
  • skills: item_cast entry point bypassing cast requirements (f3a4c36)
  • skills: ITEM_ENCHANTARMS weapon endow (869483f)
  • skills: per-skill equipment cooldown/SP/cast adjustments (f4aa1ff)
  • skills: report cast failures to clients (3843a7c)
  • skills: Sending info to the client about non-targeted ground skills arfea (a91f384)
  • spawns: import boss spawns and respawn variance (72a2220)
  • spawns: persist boss respawn deadlines (6f2d262)
  • spawns: randomize boss respawn delay (bede9f2)
  • spawns: reconcile boss respawn deadlines at boot (e8bf39c)
  • status: add conceals property and concealed? reader (ae9da9e)
  • status: equipment res_eff tolerance in resistance chain (084d21b)
  • status: reject external status changes on boss monsters (035e0e3)
  • units: classify living units and corpses (462bd08)

Bug Fixes

  • combat: correct ASPD attack interval and use renewal ASPD formula (f71352b)
  • combat: filter corpses from proximity effects (6bc7fe7)
  • combat: renewal race taxonomy - players are player_human, normalize demi_human (7276e9b)
  • combat: resolve own player from registry snapshot to avoid self-call deadlock (af023fa)
  • Fix dialyzer (e4886be)
  • Fixed some effect (1669d06)
  • items: resolve quoted skill names, Ele_All and RC_Player_Doram equip params (24b9564)
  • items: transpile delay_consume item scripts (ebe88a7)
  • mage: audit priest inherited skills (1e9bf38)
  • maps: keep corpses as passive observers (4505163)
  • mob-ai: stop mobs seeing through hiding and cloaking (7525add)
  • movement: Dropped movement simplification (532ee3e)
  • movement: unify diagonal corner-cutting check via step_traversable? (754264f)
  • Removed unsed param (aa0da3e)
  • skills: broadcast skill effect for teleport before warp (3227e67)
  • skills: classify proximity targets by lifecycle (f371eb0)
  • skills: keep skill_cooldown bonus on zero-cooldown skills (2f4fe31)
  • skill: skip the weapon-range gate on interpreter-validated magic casts (11b7ee0)
  • status: complete priest support effects (2bf2d0c)
  • targeting: enforce living unit targets (3edebe4)
  • test: register MobState in the shared mob session helper (8791ec6)
  • units: exclude corpses from active world interactions (0fa4050)

0.8.0 (2026-07-17)

Features

  • combat: add EquipBreak break resolver (532b25b)
  • combat: roll equipment breaks on weapon hits (8800e65)
  • combat: target persistent skill unit cells (0c18311)
  • commons: character_quests table (ed983a9)
  • config: add natural_break_rate toggle (31f8e36)
  • gm: add @repairall command (334646b)
  • guild: add guild emblem upload and fetch (3d7da8e)
  • guild: add guild persistence models and migrations (32f967f)
  • guild: add guild protobuf messages and UnitSpawn guild fields (98bd5ee)
  • guild: add guild request handlers and session plumbing (48c5984)
  • guild: add guild runtime state, positions, permissions and emblem validator (ed5fdd7)
  • guild: add Guild.Manager Horde entry facade (6fd625d)
  • guild: add Guild.View protobuf mappers (c416237)
  • guild: show guild identity on unit spawn and name response (3f3d367)
  • guild: sync player presence into guild state (8c08fd3)
  • inventory: add BreakOps break/repair handler (89eb7da)
  • items: add break/unbreakable equip-script bonus keys (b64d370)
  • map: add source owned dynamic cells (3779e91)
  • mob: add forced cast interruption and cast-cancel broadcast (51b36c4)
  • mob: wire dispel and land protector mob casts (f016fad)
  • network: Route Cutin and SoundEffect world messages (c112ae5)
  • npcs: Implement Kafra buildins (close3, arrays, cart, storage, dispbottom, getcharid, getskilllv) (1eb4e43)
  • npcs: Import Airport NPCs (350f6d3)
  • npcs: Import Kafra NPCs and rAthena global functions (322bac3)
  • npcs: Importing cities/** npcs (e5b2a12)
  • npc: transpile repair/repairall commands (b5e1a87)
  • party: centralize party message views (a4c3f16)
  • party: deliver live member state to sessions (a5dd8f0)
  • party: enrich persisted member snapshots (b88b4a2)
  • party: synchronize live member snapshots (0e1af39)
  • player: add party-aware state commit seam (dbabf1f)
  • player: route break/repair-all through PlayerSession (82a09b0)
  • proto: add generic skill menu request and reply (12e131c)
  • proto: add party member state updates (95e92a2)
  • protocol: add persistent skill unit state (f306a7f)
  • proto: quest log messages (f347583)
  • sage: add advanced book and dragonology passives (dabde39)
  • sage: add auto spell (622cf34)
  • sage: add cast cancel (ab3765f)
  • sage: add dispel (475cfd5)
  • sage: add elemental change skills and converter scripts (ec7cb87)
  • sage: add elemental converter creation (a44e538)
  • sage: add free cast (d51a92f)
  • sage: add land protector with ground unit suppression (adc1f79)
  • sage: add magic rod (551e683)
  • sage: add sage skill tree data (11a6f93)
  • sage: add spell breaker (c5b0fbe)
  • sage: add the four elemental endow skills (717c1db)
  • sage: add the three element field skills (b13e54c)
  • sage: deluge cells act as water ball sources (24aacfd)
  • script: add repair/repairall DSL ops (4636e61)
  • skill-units: add indexed cell entities (21e459e)
  • skill-units: add per-cell group removal primitive (a557a63)
  • skill-units: enforce unit lifecycle policies (1e00a33)
  • skill-units: publish authoritative protocol state (489b308)
  • skill-units: synchronize visibility snapshots (e6ce999)
  • skill-units: track field-owned status support (05aa709)
  • skill: add aspd_bonus and int_bonus passive callbacks (e0f58d3)
  • status: add attacker-side on_dealt_damage callback (5d4ef87)
  • status: add explicit no-dispel metadata and audit (a8d3652)
  • status: add mob defence element override (873581b)
  • status: add the four weapon endow statuses (f182413)
  • status: add volcano, deluge and violent gale field buffs (c41e15c)
  • status: broadcast pushcart EFST icon (SC_PUSHCART) (b927405)
  • Unify script dsl parser (c1ae7e4)
  • wizard: complete normal skill tree (0cda026)
  • wizard: implement earth spike (a0c4eb6)
  • wizard: implement estimation result (58deeef)
  • wizard: implement fire pillar (45cab92)
  • wizard: implement frost nova (cf57c05)
  • wizard: implement full fidelity ice wall (d748415)
  • wizard: implement heavens drive (e86fb03)
  • wizard: implement jupitel thunder (ca6ed94)
  • wizard: implement lord of vermilion (60cfb76)
  • wizard: implement meteor storm (baffc13)
  • wizard: implement quagmire (8b033bd)
  • wizard: implement sight blaster (7d59c03)
  • wizard: implement sightrasher (11af983)
  • wizard: implement water ball (1411a0f)
  • wizard: register core skill tree (01e9ba8)
  • wizard: register persistent field skills (c2e6a5d)
  • wizard: register unobtainable platinum mechanics (b5530bf)
  • zone: consumeitem/getequipid/nude/F_GetNumSuffix/Select/killmonster/viewpoint NPC buildins (e0e34c1)
  • zone: cutin/soundeffect/getpartnerid/checkre/vip_status NPC buildins (3044128)
  • zone: equip-script bonus engine for item stat bonuses (56775db)
  • zone: F_InsertComma and input min/max range status/clamping (5a41a7b)
  • zone: getnpcid/playerattached/strnpcinfo/checkweight/specialeffect NPC buildins (4417464)
  • zone: gettimetick NPC script read (DSL + transpiler) (9fcdbe0)
  • zone: import rathena quest_db (31ae6e1)
  • zone: quest definitions registry (27dd45e)
  • zone: quest hunt credit on mob kill (8de56fe)
  • zone: quest log persistence (6086a45)
  • zone: quest log semantics (c5d8bee)
  • zone: quest script commands (e9cef26)
  • zone: quest system acceptance content (0edefff)
  • zone: renewal trait base stats (POW/STA/WIS/SPL/CON/CRT) (6b2e64e)
  • zone: route direct-call form of :read global functions (F_GetNumSuffix) (721cede)
  • zone: send quest list on map load (be5dcf7)
  • zone: server/account/npc scoped script variables (8aa6f20)
  • zone: transpile quest buildins (d9ee14a)

Bug Fixes

  • combat: enforce projectile line-of-sight on ranged mob and skill attacks (232ec30)
  • combat: gate player-vs-player targeting until PvP map modes exist (0895b2b)
  • combat: route magic damage to skill unit cells (9d012b3)
  • combat: route mob melee through the absorb_damage hook (02ee9bd)
  • combat: stop Sight Blaster detonating on friendly ground units (420fd55)
  • dialyzer: Fixed a shitload of dialyzer issues (bcfc433)
  • drops: guarantee loot placement falls back to death cell (1c85cdd)
  • Fixed transpiler to not assign to a non-used variable (b4062c5)
  • map: dedupe mob instance ids against all unit types (d6731db)
  • map: reschedule mob spawn on blocked cell instead of dropping it (ef33c4f)
  • mob: stop supervisor kill test racing MapManager boot (bd34844)
  • npc: implement atoi and hidden-name strnpcinfo fragments (73f9f6a)
  • npcs: Cross-run transpiler resolution (slugs, callfunc, blocking loops, switch guards) (6c32914)
  • npcs: Early return nested in conditional corrupts ctx (0debf3a)
  • npcs: Fixed one More Transpiler dead-var key (1a61329)
  • quic: Added keepalive (55aab24)
  • resistance: make physical status resistance multiplicative (4da7094)
  • skill-unit: expire group when damage destroys its last cell (52cd5c1)
  • skill-units: broadcast group despawn to full view range (469b0fe)
  • skill-units: dispatch mob ground handlers from group data (b000ac0)
  • skill-units: evict oldest instance instead of the new cast on overflow (5aa3a1c)
  • skill-units: ignore knockback and stray casts on the manager (3288634)
  • skill-units: pneuma and safety wall skip non-combat occupants (948b93a)
  • skill-units: skip non-combat occupants in field support reconcile (cdbf552)
  • skill-units: water ball retains its charge when a shot is blocked (fa4cac8)
  • skill: allow ground placement over dynamic terrain (31fd775)
  • skill: block player targets on enemy skills until pvp (9c7a3a4)
  • skill: resolve skill-unit cell targets in interpreter (f42dba1)
  • skills: block ice wall casting under volcano (56e5a42)
  • status: endow modifiers use the attack_element key combat reads (47d6206)
  • status: merge non-numeric modifier collisions last-writer-wins (8f287b0)
  • status: resolve status caster with its own unit type (08f5fb6)
  • status: unify StatusEntry started_at on monotonic time (50dc878)
  • status: wire dead modifier keys and guard modifiers against unread keys (5468898)
  • test: isolate integration tests from shared runtime ETS state (98f58e8)
  • warp: restore last-resort fallback to requested cell (924c177)
  • wizard: expire water ball when target leaves the map (70f6ee8)
  • zone: force-load constant modules so EF_/ET_ transpile resolution works (ed8c6f7)

Performance Improvements

  • map: coordinate index for dynamic cell lookups (aa113b9)
  • skill-units: batch visibility sync per movement step (f0feedc)
  • skill-units: direct storage reads for snapshots and range queries (1e09dac)
  • skill-units: index field-support rows and drop the occupant cache (5ef2afc)
  • skill-units: skip field support reconcile when occupancy is unchanged (f4b15cb)

0.7.0 (2026-07-12)

Features

  • announcement: add broadcast flag constants and decoder (095f8c7)
  • announcement: add scoped delivery module and global publish (410e2f9)
  • cart,vending: send typed result on skill-gated rejects (43ae752)
  • cart: send cart weight totals and per-item weight to client (c4c3410)
  • combat: absorb pre-damage status effects on mob defenders (0839199)
  • combat: read atk/matk/def/mdef-rate and damage-reduction status modifiers (d3d0c80)
  • constants: generate Emotion emote-id constants (0dea2b9)
  • gm: add @broadcast command (a0fa5eb)
  • items: Implementing some food effects (c96409d)
  • items: support char var ++/-- in item script transpiler (b8c7216)
  • items: support sc_start rate/flag args in transpiler (abedd57)
  • items: transpile announce buildins in item scripts (cd5ef6f)
  • jobs: block job change and skill reset while cart is mounted (2146577)
  • jobs: rathena-faithful job change cleanup and skill reset (fe963ed)
  • map: deliver global announcements via coordinator fan-out (92240ee)
  • mob-skill: add archetype behaviour and pure skill selector (b3251c8)
  • mob-skill: add skill-to-archetype catalog (6fb7582)
  • mob-skill: executor, mob cast phase, and elemental-nuke archetype (f265575)
  • mob-skill: ground-nuke archetype (32a6a6b)
  • mob-skill: heal archetype (10952f0)
  • mob-skill: import mob_skill_db into mob_skills.yml with coverage manifest (96a08ff)
  • mob-skill: interrupt mob casts on silence or stun (cd1d85e)
  • mob-skill: keep numeric skill_id in imported rows (7262665)
  • mob-skill: load mob skills into persistent_term with global-row resolution (c0deaad)
  • mob-skill: self-buff archetype (71b9431)
  • mob-skill: status-attack archetype (f2813e7)
  • mob-skill: summon-slave archetype with master link and slavele (a2969c2)
  • mob-skill: teleport archetype (7242c70)
  • mob: add skill-cast runtime fields to mob state (a36aa07)
  • mob: apply status modifiers to mob combat stats (58bc9d6)
  • mob: derive monster modes from ai_type at import (5292298)
  • mob: detect and count rude attacks (6ebd23e)
  • mob: distinguish self-initiated aggro (angry vs attack) (fb934ee)
  • mob: emote on skill cast when the skill row defines one (4ac681d)
  • net: add Announcement broadcast message (33bdcd7)
  • npc: transpile announce buildins to DSL calls (1dcf8d6)
  • proto: add emote request and display messages (2a22da5)
  • script: add announce/mapannounce/areaannounce/broadcast DSL ops (ce1c8dd)
  • script: add emotion DSL op (e78ea36)
  • skill: variable-cast-rate and sp-cost-rate status hooks (fb29679)
  • status: all-stat and mega consumable buffs (35e7ed9)
  • status: aspd potions and movement-speed consumables (5a30053)
  • status: combat consumable buffs (atk/matk/crit/flee/def-mdef reduction) (3d742a1)
  • status: cooked foods, pills and candy consumables (6c73dec)
  • status: notify mob sessions on status tick and expiry (02a9bdd)
  • status: stat foods, cash foods and stat scrolls (66f7e07)
  • transpiler: map emotion buildin and ET_ tokens (404efa5)
  • zone: add Unit.Emote area display primitive (8966611)
  • zone: drop-rate status hook and bubble-gum buff (96e0610)
  • zone: exp-rate status hook and battle-manual buffs (10cf9d3)
  • zone: handle player emote requests (ce75c78)
  • zone: read flat-aspd, aspd-rate delta and max-hp/sp-rate status modifiers (b54783a)
  • zone: received-heal-rate hook and heal-boost buff (c871ac9)
  • zone: renewal death exp penalty and life-insurance buff (571c00d)

Bug Fixes

  • Fixed bug in items parser, implementd speccialeffect2 (7a2101a)
  • Fixed tests who broke with dead code removal (ac3ac65)
  • mob: tolerate skill rows without an emotion key (d4540f2)
  • zone: recalc player stats after item-use script (9d9862f)
  • zone: route Emotion display packets to the client (c50b003)

0.6.0 (2026-07-10)

Features

  • acolyte: Implemented missing Acolyte skills (9b11407)
  • archer: Making Arrows skill (24b3476)
  • combat: add P.Atk/S.MAtk/Res/MRes derived combat-stat pipeline (da23f70)
  • combat: add per-hit overrefine damage roll (e28261d)
  • commons: add parties table and Party model (fb0369f)
  • jobs: add pubsub JobChange.request api and route @job through it (a7cb5dc)
  • npc: add aesir.import.npcs mix task (6400cad)
  • npc: add on_event callback with derived events list (f102a2d)
  • npc: add transpile manifest with conflict detection (3f68e9a)
  • npc: add transpiler analyzer (59acb99)
  • npc: add transpiler codegen (daa49b7)
  • npc: add transpiler command map and resolver (5086fa0)
  • npc: add transpiler file parser (e4fd7bc)
  • npc: add transpiler lexer (517d44c)
  • npc: add transpiler parser (cf4b406)
  • npc: clock scheduler for onclock/onhour/onminute labels (b15c098)
  • npc: enablenpc/disablenpc/hideonnpc ops with visibility wiring (c5ded70)
  • npc: event dispatch facade with interaction entry points (b05a449)
  • npc: monster buildin via summon_mob and case-insensitive buildin matching (08f34c5)
  • npc: onmymobdead owner events on summoned mobs (8ce5b51)
  • npc: ontouch trigger areas with leave/re-enter hysteresis (09d8e94)
  • npc: per-npc session with timer state and flag ets (10a3407)
  • npc: placement trigger/unique_name and registry event indexes (ab72966)
  • npc: run OnInit at boot and on registry reload (16915fe)
  • npcs: add openstorage script op (12860bf)
  • npcs: Implementing some functions (get_char_name, save_map, change job, etc) (3e11ae7)
  • npcs: Improving NPC transpiler to use Elixir Pipes (dd02dde)
  • party: Implemented exp-share (02c9251)
  • proto: add party protocol messages (434adbc)
  • proto: add storage wire messages (7a7bfa6)
  • refine: add pure refine outcome engine (9c9cfc9)
  • refine: add refine DSL ops and script routing (b6f536e)
  • refine: add RefineDatabase runtime loader (9fbcf00)
  • refine: add RefineOps transaction orchestrator (17bae8a)
  • refine: import rAthena refine.yml (cc48583)
  • refine: server-wide broadcast on flagged refine levels (552cb80)
  • script: add jobchange dsl op via change_job effect (2bfd898)
  • script: add not-implemented todo stubs (b70c48d)
  • script: add rathena runtime helpers and credit_zeny (26189d3)
  • script: add script-local vars to ctx (8a82d2e)
  • script: add session temp vars (1a1b2e4)
  • script: detached ctx with no-player guards (64f3d1e)
  • script: donpcevent, doevent and npc timer ops (6471da7)
  • script: npctalk overhead chat op (c410258)
  • skills: add max_weight_bonus passive callback and Weight integration (2dccead)
  • skills: add zeny_cost to skill definition, interpreter, and handler (58d4b75)
  • skills: implement MC_INCCARRY (Enlarge Weight Limit) (a801a73)
  • skills: implement MC_LOUD (Crazy Uproar) (d6c3b36)
  • skills: implement MC_MAMMONITE (Mammonite) (694f6b6)
  • stats: apply refine ATK/DEF/MATK and wlv5/armor-lv2 riders (b21d3eb)
  • status: add SC_LOUD status effect (Crazy Uproar buff) (e0994fd)
  • storage: add Storage core and persistence layer (f4e2f63)
  • storage: add StorageHandler and packet routing (dc60ed7)
  • storage: add StorageItem model and storage table (e8fb114)
  • storage: add StorageOps write-through orchestrator (9611666)
  • thief: Implemented first-job Thief skills (55d1737)
  • transpiler: wire On event labels, touch areas and event buildins (40e71c4)
  • zone: add party config accessors (ddb8b84)
  • zone: add party even-share EXP distribution (9ba94b4)
  • zone: add Party.Manager create/ensure_started/disband (3c249e4)
  • zone: add Party.Manager membership mutations (94d8ee5)
  • zone: add Party.Manager presence tracking and share-range auto-disable (a4e1d0d)
  • zone: add Party.State and Party.Member runtime structs (36f20f4)
  • zone: add PartyHandler request routing and pending invites (8faf04c)
  • zone: answer NameRequest for NPC units (23b90fb)
  • zone: apply renewal EXP level-gap penalty to solo kills (cf2cb04)
  • zone: populate NameResponse.party_name (cc6a98f)
  • zone: wire party presence and snapshots into PlayerSession (32cb1ac)

Bug Fixes

  • combat: consume equipped weapon ATK in player melee (272f7f0)
  • combat: wire status :watk (SC_LOUD/Impositio) into damage (5fd7d79)
  • Fixed NPC transpiler folder (3f077dd)
  • npcs: Fixed some transpiler issues (b3b42dd)
  • shop: Fixed item sell value (7160d81)
  • skill: Fixed AL_ANGELUS to now work on party (280ffd7)
  • zone: attach live session to a party created or joined mid-session (65dccdf)

0.5.0 (2026-07-02)

Features

  • Added on-out for skills (4b4d908)
  • combat: adjacent attack-cell helper with occupancy (edf0660)
  • combat: MATK min/max variance, per-target magic roll, heal range, and BF_MISC calculator (1da43aa)
  • combat: player approaches an adjacent, unoccupied cell (0979d68)
  • combat: resume auto-attack after skill cast (70bbfaa)
  • combat: server-authoritative continuous attack loop (e4ffafc)
  • commons: add cart protobuf messages (c9d417d)
  • commons: add cart_inventory table and CartItem model (694a0cc)
  • commons: add item-drop protobuf messages (65b5692)
  • commons: add vending protobuf messages (5bde206)
  • equipment: broadcast per-slot appearance changes to self and nearby (67dc05b)
  • gm: Adds gm command for level/job (3bdba13)
  • mob: chase to an adjacent, unoccupied cell (9e4cccb)
  • mobs: Imported spawns (8551325)
  • mobs: mix task to import mob spawns from rathena (71e487c)
  • mobs: parse rathena mob spawn lines (baf643d)
  • player: add Appearance module for equipment look diffing (6362a04)
  • player: build UnitSpawn appearance from equipped items (55cd1ed)
  • proto: add NpcShop buy/sell messages (3641f5d)
  • skill-unit: ground on_touch movement hook and cell lookup (c766435)
  • skill: Added NV_BASIC skill (00b7136)
  • skill: HT_LANDMINE and HT_BLASTMINE traps with BF_MISC damage (25fb0e4)
  • skill: status variable-cast and after-cast-delay reductions (Suffragium/Bragi) (e48dd74)
  • skill: walk into range before casting out-of-range skills (13b1084)
  • spawn: Improved spawn and AI (7468e60)
  • stats: add headgear/robe view extractors and fix two-hander shield view (f0d8ea9)
  • unit: add LookType constants for appearance sprite changes (1ba80b3)
  • weapon: Passing weapon type for client rendering (492cb4e)
  • zone: add Archer skill tree (9479ee8)
  • zone: add arrow attack_element item data + importer/loader support (04a52fa)
  • zone: add atomic cross-player vending purchase (b3f3494)
  • zone: add cart fields to PlayerState (4afe5b6)
  • zone: add cart persistence layer (4567036)
  • zone: add CartOps with atomic inventory<->cart moves (7659d8b)
  • zone: add ground item model and ETS store (7a4c111)
  • zone: add item-script override layer merged at load (edb8c40)
  • zone: add MC_CARTREVOLUTION cart-weight AoE (95495b7)
  • zone: add MC_CHANGECART cart sprite upgrade (df8e367)
  • zone: add MC_PUSHCART passive and merchant skill tree (18a7d0b)
  • zone: add MC_VENDING passive and merchant skill-tree entry (da8a234)
  • zone: add NPC shop buy transaction (2c61c86)
  • zone: add NPC shop sell transaction (43cc18e)
  • zone: add NPC shop struct, registry, and YAML loader (6d6fe59)
  • zone: add passive dex/hit/range stat contributions (5c18465)
  • zone: add pure cart core and cart weight (e23dedb)
  • zone: add pure drop calculator with renewal rates and scatter (5088d44)
  • zone: add pure NPC shop buy/sell core (e0b609f)
  • zone: add pure vending core (3d1e33d)
  • zone: add random/save-point warp ops for teleport items (aefda07)
  • zone: add rAthena item-script command set and codegen (9dac828)
  • zone: add rAthena item-script lexer (e20ba78)
  • zone: add rAthena item-script parser (21f6033)
  • zone: add rAthena item-script symbol resolver (2a4479f)
  • zone: add rAthena item-script transpiler entry point (35c435d)
  • zone: add rAthena shop-line parser (6986e65)
  • zone: add sc_end/2 DSL op, alias cure/2 to it (f03030b)
  • zone: add SC_PUSHCART status with dynamic cart sprite (dd74553)
  • zone: add skill ammo requirement and consumption (e50ef2e)
  • zone: add vending open/close handler and credit_zeny op (eaccc25)
  • zone: add vending shop ETS registry (80091ed)
  • zone: add WeaponTypes.requires_ammo?/1 predicate (a0fafd7)
  • zone: apply status speed modifiers to walk_speed (b51011d)
  • zone: broadcast ground items to players on walk-up (c7db00a)
  • zone: drive bow attack element from the equipped arrow (5046ee0)
  • zone: implement Arrow Shower (AC_SHOWER) (d0a192f)
  • zone: implement Double Strafe (AC_DOUBLE) (728d2eb)
  • zone: implement Improve Concentration (AC_CONCENTRATION) (f0372d8)
  • zone: implement Owl's Eye (AC_OWL) (a96c9c8)
  • zone: implement Vulture's Eye (AC_VULTURE) (f336386)
  • zone: import and load renewal drop level-penalty table (72dba2a)
  • zone: import rAthena shops into priv/db/shops (e703894)
  • zone: make map coordinator the ground-item writer (5538950)
  • zone: manual ground-item pickup with result feedback (16d79e1)
  • zone: open NPC shop window on click (af60f6e)
  • zone: render NPC shops as visible entities (14094fc)
  • zone: require and consume arrows on bow basic attacks (c738e68)
  • zone: roll and place mob drops on death from killer session (1827f50)
  • zone: scatter stacked ground items with random sub-cell coords (51e7e19)
  • zone: support :hit_count in Combat.execute_skill_attack (f06283b)
  • zone: transpile item scripts and emit coverage report on import (4094cca)
  • zone: verify NPC shops at boot (28665be)
  • zone: walk to out-of-range ground items before pickup (01abdeb)
  • zone: wire cart mount, load-on-spawn, and item moves (6a8ffbc)
  • zone: wire vending intents, purchase call, and shop board (79bf839)

Bug Fixes

  • dialyzer: Fixed a plethora of dialyzer issues (45f35f9)
  • Fixed weapon type (9f8efc3)
  • mobs: handle comments, optional delay, bare-map and name refs in spawn parser (1908fa5)
  • skill: allow recasting NV_TRICKDEAD to cancel feign death (2d2f8a5)
  • zone: cart weight cap is 80000 to match the weight unit (c9475b1)
  • zone: correct :speed status modifiers vs rAthena status_calc_speed (e4391d4)
  • zone: derive equip slot from item, not client position (9602c4d)
  • zone: recalc equipment on skill-cast ammo depletion (2304a58)
  • zone: resolve weapon range from equipment for skills and attacks (b816bca)

0.4.0 (2026-06-26)

Features

  • combat: block attacks under no_attack statuses (dd4b694)
  • mob: block mob move/attack under no_move/no_attack statuses (096f42c)
  • mob: ignore and shed aggro on untargetable (trick-dead) players (77059ec)
  • movement: block movement under no_move statuses (b1da602)
  • proto: add NPC dialog messages (NpcTalk/NpcDialog/NpcInteract) (342087f)
  • security: Hardening authentication with a single-use token (250da07)
  • skill: Added owning job to the skill tree protobuf (dd3078e)
  • skill: block skill casts under no_skill statuses (529bf4f)
  • skill: implement Novice skills NV_FIRSTAID and NV_TRICKDEAD (4c3d01d)
  • status: add unit-level action-gate predicates and :untargetable property (7213772)
  • zone: add :target_any skill target type (479a605)
  • zone: add Combat.execute_magic_damage for fixed-amount magic hits (d4b04a3)
  • zone: add PubSub heal application path (29c6164)
  • zone: add sc_pneuma ranged-block status (356a0bf)
  • zone: add sc_ruwach reveal/damage aura status (561e5c0)
  • zone: add skill warp directive and random-walkable-cell picker (0dc6334)
  • zone: add use Npc macro, behaviour, registry and verifier (9a1aee5)
  • zone: carry Divine Protection / Demon Bane levels on the combatant (533e2f9)
  • zone: expand Acolyte skill tree with Tier 1 skills (9662e28)
  • zone: implement Angelus (AL_ANGELUS, self-only) (ff4213a)
  • zone: implement Aqua Benedicta (AL_HOLYWATER) (9ded64f)
  • zone: implement Blessing (AL_BLESSING) (3658fd8)
  • zone: implement Cure (AL_CURE) (0e41e6a)
  • zone: implement Decrease AGI (AL_DECAGI) (4f3f300)
  • zone: implement Divine Protection and Demon Bane (race modifiers) (dc7e79d)
  • zone: implement Heal (AL_HEAL) (b3de17f)
  • zone: implement Pneuma (AL_PNEUMA) (0c91613)
  • zone: implement Ruwach (AL_RUWACH) (7e12860)
  • zone: implement Signum Crucis (AL_CRUCIS) (d7ebfc2)
  • zone: implement Teleport (AL_TELEPORT, menu-less) (c20ef62)
  • zone: NPC interaction process + dialog DSL (140198a)
  • zone: persist and load character vars + zeny on PlayerState (e1300af)
  • zone: port Sphinx Mask quest (Turban Thief) + end-to-end test (159cae3)
  • zone: script effect seam + economy/inventory/variable DSL (6f9f4a8)
  • zone: server-authoritative combat/skill target validation (5b9f34b)
  • zone: spawn static NPC entities from the registry at boot (651e4da)

Bug Fixes

  • Being a bit more lenient with warp (a16803f)
  • Being less strict with invalid scripts (b7f90f7)
  • Fix coordinator flush (d96854d)
  • Fixed Agents (b0ac89e)
  • Fixed mapcache and script (35da648)
  • status: Fixed status storage update (d6bd443)
  • zone: correct Blessing HIT bonus to val1*2 (6450443)
  • zone: enforce cast lock before begin_cast (f42775a)
  • zone: handle :target_any in SkillListView.inf_for (fd20a30)
  • zone: register players under PlayerState and disconnect on session crash (9029227)

0.3.0 (2026-06-24)

Features

  • map: Added MapCache generator (bbd98b4)
  • proto: add status display messages and unit sprite-state fields (1b57b3d)
  • proto: add UseItem and ItemUseResult messages (4d58f48)
  • status: add display metadata fields to Definition (1143e40)
  • status: add one-shot SpecialEffect primitive (bce8245)
  • status: add StatusDisplay orchestrator (b208c77)
  • status: backfill status visuals on spawn and visibility (bd3996d)
  • status: broadcast display on status apply and removal (5bcba95)
  • status: generate rAthena display-constant modules (230fe18)
  • status: populate display metadata for implemented statuses (3dd01be)
  • zone: add on_use script field to item definitions (42765bb)
  • zone: add PlayerState warp cooldown timestamp (c803833)
  • zone: add Script.Ctx shared script context (7e59e14)
  • zone: add Script.Dsl item-effect primitives (76cb7d3)
  • zone: add summon_mob/summon_random_mob DSL primitives (4e04603)
  • zone: add Warp struct and area-hit registry predicate (a003b88)
  • zone: boot-time compiler for item on_use scripts (91eb971)
  • zone: compile item scripts at zone boot (a82fc9c)
  • zone: fall back to nearest walkable cell on blocked warp destination (936a947)
  • zone: fire warps on-spawn and reset cooldown on map load (7261d0a)
  • zone: fire warps on-touch during player movement (691bc02)
  • zone: handle UseItem and run item on_use effects (9167976)
  • zone: import rAthena warp scripts to YAML (2b2400d)
  • zone: item on_use content incl. Dead Branch (ac506f3)
  • zone: load NPC warp placements from YAML at boot (e3b35df)
  • zone: render NPC warps as visible entities to the client (fdde288)
  • zone: verify warp placements at boot (613c2f3)

Bug Fixes

  • status: stop OR-ing dead bit into mob health_state (a6b31cb)

0.2.0 (2026-06-23)

Features

  • account: serve login over QUIC + protobuf, retire Ranch listener (57b5b83)
  • char: add canonical CHARACTER_INFO serializer (433fffd)
  • char: migrate char server to QUIC + protobuf (0c48e90)
  • char: modernize HcAckCharinfoPerPage to 0x0B72 (710793b)
  • char: modernize HcNotifyZonesvr to 0x0AC5 with domain field (d20d996)
  • char: send HcCharlistNotify (0x09A0) in char-list handshake (4ecc399)
  • combat: add attack_proc passive hook for multi-hit (aac827c)
  • combat: add bonus_atk and fixed_damage skill damage options (57e2d48)
  • combat: carry attack_delay_ms on Combatant (669ef4d)
  • gm: add GM commands system with @item command (7398c11)
  • inventory: add weight calculation module (ef47d70)
  • inventory: wire equip/unequip handlers with write-through sync (9fe12c5)
  • item: add equip-location bitmask and client item-type tables (3dc258f)
  • mob: track stolen_from flag on mob state (3026daa)
  • net: add central Packetver constant for per-build packet version (78c3cce)
  • packet: add equip/unequip request packets (2cdd522)
  • packet: add inventory delta, equip-ack, and sprite-change packets (711c6b8)
  • packet: migrate initial inventory sync to modern framing (65849d8)
  • packets: add CZ_USE_SKILL_TOGROUND and ZC_NOTIFY_GROUNDSKILL (5276e97)
  • proto: add skill learn messages and enrich SkillInfo (1a13b6e)
  • skill-unit: add behaviour contract, registry, and layout helper (bcd270b)
  • skill-unit: add central TickManager and place/4 facade (317eece)
  • skill-unit: add Group struct and ETS-backed Storage (b327911)
  • skill: add flee_bonus passive channel (91a8d43)
  • skill: add Storm Gust as ground skill-unit (stubbed magic damage) (c98196b)
  • skill: support ally targeting in cast interpreter (8637ab4)
  • skill: support ground-targeted casts in the interpreter and handlers (9bbe86a)
  • stats: derive equipment and flat bonuses from inventory items (a7eb902)
  • zone: add cast bar and cast cancel packets (3f6021a)
  • zone: add casting action state (0ab8e96)
  • zone: add damage_kind and fixed_cast_time to skill definition (0caa4d5)
  • zone: add skill tree data and loader (8e6449d)
  • zone: add skill tree learn validation logic (0834deb)
  • zone: carry matk/mdef through combatant for players and mobs (666aa98)
  • zone: cross-map character warp + save-point respawn (88224f2)
  • zone: enforce after-cast act delay (286be7c)
  • zone: handle skill learn requests (b476e5f)
  • zone: mage skill tree and magic combat (250caa7)
  • zone: magic damage calculator (renewal MATK/MDEF/element) (effaac2)
  • zone: movement netcode via per-map delta snapshots (66df160)
  • zone: phase-aware cast interruption (38dd31e)
  • zone: port zone server transport to QUIC + protobuf (809e9cf)
  • zone: renewal cast-time computation (fixed + variable) (ffb3642)
  • zone: renewal MATK and hard/soft MDEF for player stats (4769047)
  • zone: route storm gust through magic damage calculator (8bd5672)
  • zone: send full enriched skill tree to client (61b5710)
  • zone: split skill interpreter into begin/complete cast (1ef463e)
  • zone: wire cast lifecycle through player session (c979741)

Bug Fixes

  • char: expose 15 char slots consistently across 0x082D and 0x09A0 (98ed2ca)
  • combat: send real attack cadence as src_speed (3be78ed)
  • Fixed char-zone default bind ip (7d28c19)
  • Fixed mob movement (e8aa165)
  • Fixed Sobelow warnings (996ed73)
  • movement: Fixed movement direction (d42b994)
  • movement: Fixing movement flush (977870f)
  • skill-unit: resolve skill_id in place/4 and dedupe expire per tick (9f53bc1)
  • skill-unit: reuse Combat splash filter for Storm Gust and clean up warnings (488f9d8)
  • status: honor explicit duration param on apply_status (7ffcb3b)

0.1.0 (2026-06-17)

Features

  • Added Bash Skill (4db25d2)
  • Added Basic Leveling support (a7f09b3)
  • Added Basic Status Effects resistance (3c9cc4d)
  • Added Database Support for Account Server (226dde9)
  • Auto-discovered mob/spawn registries, drop loader GenServer (1ce1320)
  • Basic Character Stats mechanics (20755c0)
  • Basic Job mechanics (f704e73)
  • Basic non-crashing zone server with movements (b6d4791)
  • Basic Script parser (07389c8)
  • Basic Status Changes DSL (041f308)
  • Basic ZoneServer (b7f8994)
  • Changing MobDB to YAML (f51ab7c)
  • Character and Inter Server (1c1e69f)
  • combat: add collision-aware knockback (1f8c99b)
  • combat: add splash attack helper (2ec012d)
  • combat: apply passive ATK mastery and real weapon type (a4f7fd2)
  • Configure the map coordinator (7f16608)
  • Connecting the Equipment List with the PlayerSession (ad2bed5)
  • Create inventory for character (2dae6be)
  • Created Basic Mob DB (32cdeb1)
  • Created manager to have distributed mnesia tables easily (ce0bae9)
  • Creates the stateful mob entity (2f59a2e)
  • Creating Items DB (f2495fa)
  • Implemented area chat (bd53ef1)
  • Implemented player damage (cefa4d8)
  • Implementing full char-server flow (cb8fc1b)
  • Implements Basic Combat (#5) (173f6b0)
  • Implements Map Cells representation (56a6f5e)
  • Implements Mob Movement (1205569)
  • Improve Application Configuration (05f43b0)
  • Mob Movement (5dfc5b3)
  • move cluster coordination layer from memento to horde (a4b903d)
  • Moved jobs stuff to yaml (76d8758)
  • packet: add ZcSkillPostdelay (0x043d) (e43c6c6)
  • Persist char position (c6ac18b)
  • player: add natural-heal regen tick (4363553)
  • player: add NaturalHeal regen calculation module (7e44419)
  • player: add regen accumulator to PlayerState (3c81cbb)
  • player: add skill_cooldowns field to PlayerState (840b805)
  • Refactored Status Effects (054842c)
  • Refactoring JobData to drop the db overengineering (725ca85)
  • Refactoring the character stuff (dd5a74e)
  • Sending some basics status params back (ac656b3)
  • skill system (data layer, casting, packets) (3483e5c)
  • skill: add Cooldown pure module (c8d3582)
  • skill: add Passive behaviour and use macro (fbbd2bf)
  • skill: add Passives registry and aggregation (1d5fd72)
  • skill: add SM_AUTOBERSERK behavior (5838840)
  • skill: add SM_ENDURE behavior (e98c5a7)
  • skill: add SM_FATALBLOW stun rider to Bash (b8813aa)
  • skill: add SM_MAGNUM behavior (6f51fd4)
  • skill: add SM_PROVOKE behavior (5b2d353)
  • skill: add swordsman active skill definitions (57ecbea)
  • skill: add swordsman passive modules (e909c6b)
  • skill: add swordsman passives data and reject passive casts (9d1c0ac)
  • skill: enforce range for targeted skills in interpreter (892f694)
  • skill: gate casts on per-skill cooldown (ed8f894)
  • skill: send ZC_SKILL_POSTDELAY on cooldown start (9351004)
  • stats: fold passive ATK bonus into combat stats (95d8b8f)
  • status points (grant on level-up + spend to raise stats) (cbf90e2)
  • status: add SC_AUTOBERSERK reactive provoke (a6812f5)
  • status: add SC_WATK_ELEMENT attack-element endow (33577b6)
  • status: add toggle_status helper (14cd2b7)
  • status: invoke on_damage on player damage with follow-up applies (42bc7d2)

Bug Fixes

  • combat: key mob status modifiers as :mob (fa84ec3)
  • Dealing with zombies in server heartbeat (4d9cabd)
  • Fix mob attack formula (278d42e)
  • Fix ReqName (92a575b)
  • Fixed credo issues and a test (1618d81)
  • Fixed format (bef7d1f)
  • Fixed how we fetch other char names (262c683)
  • Fixed Login ip formatting and some clustering shizzles (d4e98bf)
  • Fixed Makechar Packet (2519f9a)
  • Fixed mob spawn/death (64447b7)
  • Fixed movement char data parsing (6b71875)
  • Fixed movement time to be monotonic (614c5d0)
  • Fixed name response packet (f777cbd)
  • Fixed some status effects (fa65f6e)
  • Fixed some tests (dd58807)
  • Fixes cleanup when char leaves/crashes (346c852)
  • Fixes duplicated login issue (7fcb253)
  • Fixes slot in char info per page (#6) (c837c5e)
  • Fixes Status Interpreter and ETS Tests (24a22b0)
  • Fixing tests and credo alerts (218e985)
  • Parsing character sex for creation (46ee62e)
  • Refactored player movement to not use budget system (337ccb1)
  • seeds (#2) (3cfb5a6)

Continuous Integration