diff --git a/Das_Schwarze_Auge_4-1/dsa4_1_character_sheet_roll20.html b/Das_Schwarze_Auge_4-1/dsa4_1_character_sheet_roll20.html
index 3f438cd4fa..126b6cfec4 100644
--- a/Das_Schwarze_Auge_4-1/dsa4_1_character_sheet_roll20.html
+++ b/Das_Schwarze_Auge_4-1/dsa4_1_character_sheet_roll20.html
@@ -11276,7 +11276,7 @@
Schild
-
AT:
+
AT:
PA:
TP(A):
TP/KK:
@@ -16238,6 +16238,8 @@ function migrateTo20210413(migrationChain) {
"KO_mod_wounds": mods["KO"],
"KK_mod_wounds": mods["KK"]
});
+
+ attrsToChange["shield_at"] = Math.max(0, parseInt(values["AT_raufen"]) + parseInt(attrsToChange["AT_mod_wounds"]));
// Updates for INI modifiers
// Set INI modifier from (main) weapon
@@ -17430,7 +17432,7 @@ function calculateTpKKMod(values, weapon) {
}
// calculate shield attack modifier
-on("change:repeating_shields change:sf_schildkampfI change:sf_schildkampfII change:sf_knaufschlag change:sf_schmutzigetricks change:AT_raufen", function(eventInfos) {
+on("change:repeating_shields change:sf_schildkampfI change:sf_schildkampfII change:sf_knaufschlag change:sf_schmutzigetricks change:AT_raufen change:AT_mod_wounds", function(eventInfos) {
getAttrs(["activeShieldRowId"], function(rowIdValues) {
var activeShieldRowId = rowIdValues["activeShieldRowId"];
if (eventInfos.sourceAttribute && eventInfos.sourceAttribute.endsWith("_shield_active")) {
@@ -17441,7 +17443,7 @@ on("change:repeating_shields change:sf_schildkampfI change:sf_schildkampfII chan
}
}
- let variablesToGet = [ "sf_schildkampfI", "sf_schildkampfII", "sf_schmutzigetricks", "sf_knaufschlag"]
+ let variablesToGet = [ "sf_schildkampfI", "sf_schildkampfII", "sf_schmutzigetricks", "sf_knaufschlag", "AT_raufen", "AT_mod_wounds"]
// Wenn es ein aktives Schild (oder Parierwaffe) gibt, möchten wir auch dessen Werte mit laden
if (activeShieldRowId) {
@@ -17450,7 +17452,11 @@ on("change:repeating_shields change:sf_schildkampfI change:sf_schildkampfII chan
variablesToGet.push("repeating_shields_" + activeShieldRowId + "_shield_type");
} else {
console.log("no active shield found");
- setAttrs({ shield_at_available: "0", shield_at_mod: 0 });
+ setAttrs({
+ "shield_at": 0,
+ "shield_at_available": "0",
+ "shield_at_mod": 0
+ });
return;
}
@@ -17458,7 +17464,11 @@ on("change:repeating_shields change:sf_schildkampfI change:sf_schildkampfII chan
let result = calculateShieldAttack(values, activeShieldRowId);
console.log('calculated shield attack');
console.log(result);
- setAttrs({ shield_at_mod: result.shieldAtMod, shield_at_available: result.shieldAtAvailable });
+ setAttrs({
+ "shield_at": result["shield_at"],
+ "shield_at_mod": result["shieldAtMod"],
+ "shield_at_available": result["shieldAtAvailable"]
+ });
});
});
@@ -17475,16 +17485,19 @@ function calculateShieldAttack(values, activeShieldRowId) {
var schildkampfII = values["sf_schildkampfII"];
var knaufschlag = values["sf_knaufschlag"];
var schmutzigeTricks = values["sf_schmutzigetricks"];
+ var shieldAt = Math.max(0, parseInt(values["AT_raufen"]) + parseInt(values["AT_mod_wounds"]));
// Without a Shield, no Shield Attack
if (shieldType !== "shield" || !activeShieldRowId) {
shieldAtAvailable = "0";
+ shieldAt = 0;
console.log("ping");
// Without Shield Combat I, no Shield Attacks
} else if (schildkampfI !== "1") {
console.log("schildkampfI:", schildkampfI);
shieldAtAvailable = "0";
+ shieldAt = 0;
console.log("pong");
// Good to go, check for modifier reduction
@@ -17498,6 +17511,10 @@ function calculateShieldAttack(values, activeShieldRowId) {
if (activeShieldAtMod) {
shieldAtMod -= activeShieldAtMod;
}
- return {shieldAtMod: shieldAtMod, shieldAtAvailable: shieldAtAvailable };
+ return {
+ "shield_at": shieldAt,
+ "shieldAtMod": shieldAtMod,
+ "shieldAtAvailable": shieldAtAvailable
+ };
}