0.9.0 (2026-07-21)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- status: stop OR-ing dead bit into mob health_state (a6b31cb)
0.2.0 (2026-06-23)
- 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)
- 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)
- 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)
- 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)
- Added Release Flow (183d4f8)