Skip to content

The remaining mob skills: Poison Mist, counters, Dispel, Banish, 133-136 - #513

Merged
neeerp merged 4 commits into
v83/mob-status-damagefrom
v83/mob-skills-rest
Oct 17, 2026
Merged

neeerp merged 4 commits into
v83/mob-status-damagefrom
v83/mob-skills-rest

Conversation

@neeerp

@neeerp neeerp commented Oct 17, 2026 •

Copy link
Copy Markdown
Owner

The remaining mob skills: Poison Mist (131), the counters (143-145), Dispel (127), Banish (129), and the diseases Undead, Stop Potion, Stop Motion and Fear (133-136).

What changed

  • Mob Poison Mist (131) lays a mist over the mob's box for the level's time.
    • As in v83 (FUN_00431783), HeavenClient hurts the player x a second while they stand in it, and sends TAKE_DAMAGE from -4.
    • The server takes up to x and tells the field.
    • HeavenClient also learns v83's Smokescreen shelter rule (FUN_0043193a).
  • Counters (143-145) put PCounter/MCounter (bits 29/30) on the mob. Each player attack on a countering mob costs the attacker the value, give or take half the spread.
    • The client only shows its own roll (FUN_007937e3), so the server takes the HP.
  • Dispel (127) ends every buff but the diseases of each player in its area, and unsummons summons.
  • Banish (129) sends players to the mob's banMap portal with its banMsg as a pink type 5 notice.
    • HeavenClient's BROADCAST_MSG handler now follows the client per type.
  • 133-136:
    • Undead shares Puppet's buff bit 46 and is told apart by its mob skill. Stop Potion, Stop Motion and Fear are bits 75-77.
    • The server refuses potions under Stop Potion and halves recovered HP under Undead.
    • HeavenClient gives the notices, refuses item use under Stop Potion or Seduce, and hurts a player who stands still two seconds under Stop Motion.
    • Under Fear it blacks out the screen except Viewrange/3 around the player, using a new cutout shader mode.

Not covered

  • No map spawns a 133-136 caster, so those have unit and client tests but no harness test. The Fear overlay was checked live by forcing the disease.

Verification

  • diseases, buff_parser, mob_stat_parser and mist_layout client tests extended.
  • New server unit tests for the counters, Dispel, Banish and 133-136.
  • New harness tests mob_mists, mob_counters and mob_dispel_banish; mob_skills and player_diseases extended.

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

Stacked on #512

A granted MobSkill 131 cast now lays a type 0 mist over the mob's
lt/rb box for the level's time, owned by the mob and carrying the
level's elemAttr as its element. As the v83 client does
(FUN_00431783 from CUserLocal's update), HeavenClient hurts the
player x once a second while they stand in a started mob mist without
touching a mob. It shows the number and sends TAKE_DAMAGE from -4 with
the skill and level. The server takes damage only for 131 at a known
level and up to x, then tells the field through DAMAGE_PLAYER, which
drops the mob fields for sources below -1.

HeavenClient also learns the v83 Smokescreen rule (FUN_0043193a): a
started type 2 area owned by the player or a party member keeps mob
attacks, touch and mists off them. The server does not spawn those
yet. Mist layout tests cover the hit and shelter lookups, and the
harness mob_mists test covers the cast, the area, the damage limits
and the expiry.
A mob's Weapon, Magic or full counter puts PCounter (bit 29) and/or
MCounter (bit 30) on it, written after the statuses as each counter's
spread and one shared chance, as the v83 client reads them. Each player
attack (not a summon's) on a countering mob costs the attacker the value
give or take half the spread, magic against MCounter. The client shows
its own roll and sends nothing, so the server takes the HP.

HeavenClient parses the new stats and shows the counter number over the
player for each countering target it hits. Harness mob_counters casts
Lilynouch's 145 and checks the HP lost to one swing.
A mob's Dispel (127) ends every buff but the diseases of each player in
its area, unsummoning summons, and Banish (129) sends up to `count` of
them to the mob's `ban/banMap` portal with its `banMsg` as a type 5
BROADCAST_MSG. Both roll the skill's prop first and reach the mob's
controller when the skill has no area. The warp helper now takes a
portal name.

HeavenClient's BROADCAST_MSG handler now follows the client per type:
"[Notice]" lines in light blue, the popup, the pink type 5 line, and it
reads the extras of types 3, 6 and 7 instead of dropping the packet.

The mob_dispel_banish harness test has an Aqua Road mob dispel a
beginner's Nimble Feet and a subway Shade banish the player to the
ticketing booth. move_mob moved into the harness's hunting helpers.
Mob skills 133-136 now inflict their diseases. Undead shares Puppet's
buff bit 46 and is told apart by its mob skill, on both sides. Stop
Potion, Stop Motion and Fear are bits 75-77, each shown with one int; the
client had read bit 77 as an int and two bytes.

The server refuses potions under Stop Potion and halves recovered HP
(potions, Heal, Chakra) under Undead. Stop Motion's damage arrives as a
mist hit with no skill code, and the server takes up to its value but
never the last HP.

The client gives the notices, refuses item use under Stop Potion or
Seduce, and hurts a player who stands still two seconds under Stop
Motion, with the v83 chat line and packet. Under Fear it blacks out the
screen except Effect/MapEff.img/Viewrange/3 around the player, using a
new cutout shader mode.
@neeerp
neeerp force-pushed the v83/mob-skills-rest branch from 2cf9135 to 3863290 Compare October 17, 2026 23:26
@neeerp
neeerp added this pull request to stack #515 October 17, 2026 23:30
@neeerp
neeerp merged commit c91934b 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