fix: allow defender to react when attacker boosts past defense via cross-client socket
This commit is contained in:
+29
-1
@@ -1002,9 +1002,37 @@ Hooks.on("createChatMessage", async (message) => {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If attacker boosted past defense, let the defender react
|
||||
if (attackerHandledBonus && defenseRoll < attackRollFinal && defender) {
|
||||
const defenderOwner = game.users.find(u => u.active && !u.isGM && defender.testUserPermission(u, "OWNER"))
|
||||
if (defenderOwner && defenderOwner.id !== game.user.id) {
|
||||
// Cross-client: send socket to defender's client
|
||||
const sData = LethalFantasyUtils.getShieldReactionData(defender)
|
||||
game.socket.emit(`system.${SYSTEM.id}`, {
|
||||
type: "attackBoosted",
|
||||
userId: defenderOwner.id,
|
||||
attackerName, attackerId, defenderName, defenderId, defenderTokenId,
|
||||
attackRollFinal, defenseRoll, attackWeaponId, attackRollType, attackRollKey,
|
||||
shieldDamageReduction: shieldBlocked ? shieldReaction?.damageReduction ?? 0 : 0,
|
||||
d30Bleed: d30Bleed ? "true" : "",
|
||||
d30DamageMultiplier, d30DrMultiplier,
|
||||
damageTier: damageTier || "standard",
|
||||
attackD30message,
|
||||
hasShield: !!sData,
|
||||
shieldLabel: sData?.label || "",
|
||||
shieldFormula: sData?.formula || "",
|
||||
shieldDr: sData?.damageReduction || 0,
|
||||
canAdHocShield: !sData,
|
||||
})
|
||||
return // Comparison message created by defender's client
|
||||
}
|
||||
// Single-client (GM controls both): restart so defender loop can run
|
||||
mulliganRestart = true
|
||||
}
|
||||
} while (mulliganRestart)
|
||||
|
||||
const shieldDamageReduction = shieldBlocked ? shieldReaction.damageReduction : 0
|
||||
const shieldDamageReduction = shieldBlocked ? shieldReaction?.damageReduction ?? 0 : 0
|
||||
const outcome = shieldBlocked ? "shielded-hit" : (attackRollFinal > defenseRoll ? "hit" : "miss")
|
||||
|
||||
// Créer le message de comparaison - uniquement par le client qui a géré le dernier bonus
|
||||
|
||||
Reference in New Issue
Block a user