Skip to content

Mob statuses and Poison Mist - #506

Merged
neeerp merged 3 commits into
v83/buffsfrom
v83/mob-statuses
Oct 17, 2026
Merged

neeerp merged 3 commits into
v83/buffsfrom
v83/mob-statuses

Conversation

@neeerp

@neeerp neeerp commented Oct 17, 2026 •

Copy link
Copy Markdown
Owner

Mobs can now carry statuses, from players' skills and attacks, and Poison Mist leaves its cloud.

What changed

  • Mob status set/reset (0xF2/0xF3): MobStat flags in the client's decode order, and statuses in spawn packets.
  • Debuff skills: USE_SKILL's mob list. Threaten, Slow, Seal, Doom and Shadow Web apply in their area with prop rolls; crashes and Dispel cancel mob buffs; statuses reset on expiry.
  • HeavenClient: MobStatParser; Speed into the mob's movement; Doom's look swap; Stun, Freeze and Web hold the mob; status effects.
  • Statuses from attacks: stuns, Panic's darkness, freezes, poisons and a learned Venom are rolled per damaging hit; Ninja Ambush joins the debuffs.
  • Damage over time: Poison, Venom and Ambush take HP each second (never below 1), crediting the inflicter. HeavenClient shows the numbers over the mob as v83's CMob::Update does. Poison- and ice-immune mobs shrug those off.
  • Poison Mist: the attack leaves a mist over the skill's box that starts 800 ms later, rolls every 2.5 s to poison the mobs in it, and lifts after the skill's time (AFFECTED_AREA_CREATED/REMOVED, 0x111/0x112). HeavenClient lays its cloud tiles as v83's FUN_00432776 does and fades them out.

Not covered

  • Buff-gated statuses (Hamstring, Blind, the ice charges, Inferno's burn).
  • Smokescreen and the other mist kinds.

Verification

  • Server unit tests cover the status codec, rolls and damage over time; client tests cover the parser and mist layout.
  • New harness tests: mob_debuffs (Slow on snails), mob_poison and poison_mist.

Reviewed with sol-loop: 2 rounds with gpt-6.1-sol on high.

Stacked on #505

Server: MobStat flags in the client's decode order, statuses in spawn
packets, USE_SKILL mob list, Threaten/Slow/Seal/Doom/Shadow Web applied
in area with prop rolls, crashes/Dispel cancel mob buffs, expiry resets.
HC: MobStatParser, spawn + 0xF2/0xF3 handlers, Speed into the shoe,
Doom look swap/restore, hold for Stun/Freeze/Web, status effects.
Harness: mob_debuffs (Slow on snails).
Attacks put their skill's status (stuns, Panic's darkness, freezes,
poisons) and a learned Venom on the mobs they hit, rolled per hit that
deals damage. Ninja Ambush joins the USE_SKILL debuffs. Poison, Venom
and Ambush take HP on the field tick each second (fixedDamage if the
mob has one, never below 1 HP), crediting the inflicter and sending
them the HP bar. Poison- and ice-immune mobs (elemAttr S1/I1) shrug off
Poison and Freeze.

HeavenClient shows the numbers each second over the hurt mob as v83's
CMob::Update does (MobHurts).
Server: Poison Mist's attack leaves a mist over the skill's lt/rb box
around the caster (mirrored facing right). It starts 800 ms later,
rolls prop every 2.5 s to poison the live mobs in it, and lifts after
the skill's time. AFFECTED_AREA_CREATED goes to the map and to joiners;
AFFECTED_AREA_REMOVED lifts it.

HeavenClient: MapMists lays the skill's `tile` clouds over the area as
v83's FUN_00432776 does (MistLayout.h, a diamond of random tiles),
draws them above the map's objects, and fades them out over a second
on removal.

Harness: poison_mist.
@neeerp
neeerp added this pull request to stack #515 October 17, 2026 23:30
@neeerp
neeerp merged commit 45a5482 into v83/skill-and-mob-details Oct 17, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant