let actor = this.actor; let effect = this.effect; let bleedingAmt; let bleedingRoll; let msg = "" let damage = effect.conditionValue; let scriptArgs = { msg, damage }; await Promise.all(actor.runScripts("preApplyCondition", { effect, data: scriptArgs })) msg = scriptArgs.msg; damage = scriptArgs.damage; msg += await actor.applyBasicDamage(damage, { damageType: game.wfrp4e.config.DAMAGE_TYPE.IGNORE_ALL, minimumOne: false, suppressMsg: true }) if (actor.status.wounds.value == 0 && !actor.hasCondition("unconscious")) { await actor.addCondition("unconscious") msg += "
" + game.i18n.format("BleedUnc", { name: actor.prototypeToken.name }) } if (actor.hasCondition("unconscious")) { bleedingAmt = effect.conditionValue; bleedingRoll = (await new Roll("1d100").roll()).total; if (bleedingRoll <= bleedingAmt * 10) { msg += "
" + game.i18n.format("BleedFail", { name: actor.prototypeToken.name }) + " (" + game.i18n.localize("Rolled") + " " + bleedingRoll + ")"; await actor.addCondition("dead") } else if (bleedingRoll % 11 == 0) { msg += "
" + game.i18n.format("BleedCrit", { name: actor.prototypeToken.name }) + " (" + game.i18n.localize("Rolled") + bleedingRoll + ")" await actor.removeCondition("bleeding") } else { msg += "
" + game.i18n.localize("BleedRoll") + ": " + bleedingRoll; } } await Promise.all(actor.runScripts("applyCondition", { effect, data: { bleedingRoll } })) if (args.suppressMessage) { let messageData = game.wfrp4e.utility.chatDataSetup(msg); messageData.speaker = { alias: this.effect.name } messageData.flavor = this.effect.name; return messageData } else { return this.script.scriptMessage(msg) }