diff --git a/src/main.mjs b/src/main.mjs index e9bc9cf..4d13479 100644 --- a/src/main.mjs +++ b/src/main.mjs @@ -505,6 +505,14 @@ class DSA41_CharacterDocument extends Actor { return actor; } + + get_hp_roll_modifier() { + if (this.system.lebenspunkte.aktuell < Math.round(this.system.computed.lebenspunkte.max / 4)) return 3; + if (this.system.lebenspunkte.aktuell < Math.round(this.system.computed.lebenspunkte.max / 3)) return 2; + if (this.system.lebenspunkte.aktuell < Math.round(this.system.computed.lebenspunkte.max / 2)) return 1; + + return 0; + } } class DSA41_CharacterData extends TypeDataModel { @@ -1236,6 +1244,8 @@ class DSA41_ActorSheet extends DSA41_ApplicationMixin(ActorSheetV2) { const item_id = event.target.closest("[data-item-id]")?.dataset.itemId; const item = this.document.items.get(item_id); + const hp_roll_modifier = this.document.get_hp_roll_modifier(); + let flavor = game.i18n.localize("DSA41.roll_types." + roll_type); if (typeof success_value !== 'undefined') { flavor += " <= " + success_value; @@ -1251,6 +1261,9 @@ class DSA41_ActorSheet extends DSA41_ApplicationMixin(ActorSheetV2) { flavor += " <= " + (Number(success_value) + data.modifikator); } + if (hp_roll_modifier !== 0) + roll_formula = roll_formula + " + " + hp_roll_modifier; + let roll = new Roll(roll_formula, this.document.system); roll.toMessage({ speaker: ChatMessage.getSpeaker({ actor: this.document }), @@ -1275,6 +1288,9 @@ class DSA41_ActorSheet extends DSA41_ApplicationMixin(ActorSheetV2) { const talentwert = item.system.talentwert - data.modifikator; const roll_modifier = talentwert < 0 ? -talentwert: 0; + + if (hp_roll_modifier !== 0) + roll_modifier += hp_roll_modifier; const roll1 = (await new Roll("1d20").evaluate()).total + roll_modifier; const roll2 = (await new Roll("1d20").evaluate()).total + roll_modifier; @@ -1330,6 +1346,9 @@ class DSA41_ActorSheet extends DSA41_ApplicationMixin(ActorSheetV2) { flavor += " <= " + (Number(success_value) + data.modifikator); } + if (hp_roll_modifier !== 0) + roll_formula = roll_formula + " + " + hp_roll_modifier; + let roll = new Roll(roll_formula, this.document.system); roll.toMessage({ speaker: ChatMessage.getSpeaker({ actor: this.document }), @@ -1353,6 +1372,9 @@ class DSA41_ActorSheet extends DSA41_ApplicationMixin(ActorSheetV2) { let flavor = game.i18n.localize("DSA41.roll_types." + roll_type); flavor += " <= " + (Number((data.crit == "on") ? item.parade_crit : item.parade) + data.modifikator); + if (hp_roll_modifier !== 0) + roll_formula = roll_formula + " + " + hp_roll_modifier; + let roll = new Roll(roll_formula, this.document.system); roll.toMessage({ speaker: ChatMessage.getSpeaker({ actor: this.document }), @@ -1399,7 +1421,7 @@ class DSA41_ActorSheet extends DSA41_ApplicationMixin(ActorSheetV2) { const groessen_modifikator = Math.max(data.ziel_groesse + data.deckung + data.ziel_bewegung, -2); const andere_modifikator = data.entfernung + data.wind + data.modifikator; - const total_modifikator = groessen_modifikator + andere_modifikator; + const total_modifikator = groessen_modifikator + andere_modifikator + hp_roll_modifier; let roll = new Roll(roll_formula + " + " + total_modifikator, this.document.system); roll.toMessage({ @@ -1447,6 +1469,9 @@ class DSA41_ActorSheet extends DSA41_ApplicationMixin(ActorSheetV2) { const zauberfertigkeitswert = item.system.zauberfertigkeitswert - data.modifikator - data.magieresistenz; const roll_modifier = zauberfertigkeitswert < 0 ? -zauberfertigkeitswert: 0; + if (hp_roll_modifier !== 0) + roll_modifier += hp_roll_modifier; + const roll1 = (await new Roll("1d20").evaluate()).total + roll_modifier; const roll2 = (await new Roll("1d20").evaluate()).total + roll_modifier; const roll3 = (await new Roll("1d20").evaluate()).total + roll_modifier;