Release Creation / build (release) Successful in 1m35s
- Fix handleAttackBoosted guard: replaced attackerIsCrossClient check with defenderIsMine so the socket handler runs whenever the current user controls the defender. Previously, when a GM-controlled monster attacked with a D30 special result (damage multiplier, bleed, DR multiplier, mulligan), the createChatMessage hook was suppressed (d30PendingFromGM) but handleAttackBoosted returned early because the attacker wasn't a cross-client PC, so nobody created the comparison message. - Remove map auto-pan on target/damage button hover (mouseenter/mouseleave handlers on .request-defense-btn and .apply-wounds-btn). - Filter defeated combatants and dead monster tokens from the target selection list. Characters at 0 HP are still selectable (death saves). - Restore 3D dice animation for damage rolls (lethal-fantasy.mjs, character-sheet.mjs). - Allow negative bonuses on weapon items (damaged weapons). - Allow negative HP for characters (death saving throws). - Fix D30Roll.convertToInternalType guard to warn on missing weapon regardless of isRanged flag. - Fix ranged weapon loading comparison (<= to <). - Add isRangedAttack to rollTarget for consistent ranged detection. Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>