diff options
| author | historia <[not public]> | 2026-09-18 01:50:17 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-09-18 01:50:17 -0400 |
| commit | 87d08f0151e643951769e323995f1c5ed89ee200 (patch) | |
| tree | dc42a0b30ebb5a00dd7ba505cc4eaa44f4f308bc /internal/game/cmd_trigger_combat.go | |
| parent | 32a3c59cebf2a16277e54d715a67adfdbe00b456 (diff) | |
| download | thehouseoficarus-87d08f0151e643951769e323995f1c5ed89ee200.tar.gz | |
fix: harden economy recovery, shutdown concurrency, world validation, and inventory-loss paths
Diffstat (limited to 'internal/game/cmd_trigger_combat.go')
| -rw-r--r-- | internal/game/cmd_trigger_combat.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/internal/game/cmd_trigger_combat.go b/internal/game/cmd_trigger_combat.go index f9a6bf1..0578c2b 100644 --- a/internal/game/cmd_trigger_combat.go +++ b/internal/game/cmd_trigger_combat.go @@ -64,9 +64,19 @@ func (g *Game) scienceAttack(sess *net.Session, p *player.Player, mob *world.Mob if mob.HP < 0 { mob.HP = 0 } + // Science damage obeys the same finishing-blow rule as melee/ranged: + // a mob with a required finisher cannot be killed by raw damage. + if mob.FinishingBlow != "" && mob.HP <= 0 { + mob.HP = 1 + } if mob.HP < mob.MaxHP && mob.HP > 0 { mob.StartRegen() } + if mob.FinishingBlow != "" && mob.HP == 1 { + sess.WriteLine(g.colorize(sess, "warning", + fmt.Sprintf("%s resists death! Use %s on it to finish it off.", + mobDisplayName(mob, false), g.itemDisplayName(mob.FinishingBlow)))) + } sciXP := mod.BaseXP hpXP := mod.BaseXP / 3 |
