diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js index 62208813acd3d342621d598e6ed8fbc0187b4506..7a549a27da9d2bab0c5ffbded1dfdf8f0e8ea6bd 100644 --- a/src/js/DefaultRules.js +++ b/src/js/DefaultRules.js @@ -2851,10 +2851,13 @@ window.DefaultRules = (function() { } if ((rule.autoBrand === 1)) { if ((slave.health > -20)) { - if ( /* Normal slave: */ (!slave.amp && slave.earShape !== "none") || /* Amputated slave, but we're branding something else: */ (slave.amp && !["ankles", "calves", "thighs", "feet", "hands", "lower arms", "upper arms", "wrists"].includes(rule.brandTarget)) || /* earless slave, but we are branding something else */ (slave.earShape === "none" && rule.brandTarget !== "ears")) { + if (slave.earShape === "none" && rule.brandTarget !== "ears") { + + // Brand location needs to be split into a left and right if (["ankles", "calves", "feet", "hands", "lower arms", "shoulders", "upper arms", "wrists", "cheeks", "ears", "buttocks", "breasts"].includes(rule.brandTarget)) { let left; let right; + let brandPlace = ""; if (rule.brandTarget === "ankles") { left = "left ankle"; right = "right ankle"; @@ -2893,6 +2896,65 @@ window.DefaultRules = (function() { right = "right breast"; } if (rule.brandDesign !== slave.brand[left] && rule.brandDesign !== slave.brand[right]) { + brandPlace = "both"; + } else if (rule.brandDesign !== slave.brand[left]) { + brandPlace = "left"; + } else if (rule.brandDesign !== slave.brand[right]) { + brandPlace = "right"; + } + + // Check for amputations: + if (["upper arms", "lower arms", "wrists", "hands"].includes(rule.brandTarget)) { + // Arms + if (!hasLimb(slave, "left arm") && !hasLimb(slave, "right arm")) { + brandPlace = ""; + } else if (!hasLimb(slave, "left arm")) { + if (brandPlace === "both") { + brandPlace = "right"; + } if (brandPlace === "left") { + brandPlace = ""; + } + } else if (!hasLimb(slave, "right arm")) { + if (brandPlace === "both") { + brandPlace = "left"; + } if (brandPlace === "right") { + brandPlace = ""; + } + } + } else if (["thighs", "calves", "ankles", "feet"].includes(rule.brandTarget)) { + // Legs + if (!hasLimb(slave, "left leg") && !hasLimb(slave, "right leg")) { + brandPlace = ""; + } else if (!hasLimb(slave, "left leg")) { + if (brandPlace === "both") { + brandPlace = "right"; + } if (brandPlace === "left") { + brandPlace = ""; + } + } else if (!hasLimb(slave, "right leg")) { + if (brandPlace === "both") { + brandPlace = "left"; + } if (brandPlace === "right") { + brandPlace = ""; + } + } + } + + // Apply brands: + if (["left", "right"].includes(brandPlace)) { + if (slave.devotion < 18) { + slave.devotion -= 5; + } + slave.trust -= 5; + slave.health -= 10; + if (brandPlace === "left") { + slave.brand[left] = rule.brandDesign; + r += `<br>${slave.slaveName} has been branded on the ${left}, with <span class="gold">fear</span>${slave.devotion < 18 ? `, <span class="mediumorchid">regard,</span>` : ``} and <span class="red">health</span> consequences. Their ${right} already had this brand.`; + } else if (brandPlace === "right") { + slave.brand[right] = rule.brandDesign; + r += `<br>${slave.slaveName} has been branded on the ${right}, with <span class="gold">fear</span>${slave.devotion < 18 ? `, <span class="mediumorchid">regard,</span>` : ``} and <span class="red">health</span> consequences. Their ${left} already had this brand.`; + } + } else if (brandPlace === "both") { slave.brand[left] = rule.brandDesign; slave.brand[right] = rule.brandDesign; if ((slave.devotion < 18)) { @@ -2901,31 +2963,26 @@ window.DefaultRules = (function() { slave.trust -= 10; slave.health -= 20; r += `<br>${slave.slaveName} has been branded on both ${rule.brandTarget}, with <span class="gold">fear</span>${slave.devotion < 18 ? `, <span class="mediumorchid">regard,</span>` : ``} and <span class="red">health</span> consequences.`; - } else if (rule.brandDesign !== slave.brand[left]) { - slave.brand[left] = rule.brandDesign; - if ((slave.devotion < 18)) { - slave.devotion -= 5; - } - slave.trust -= 5; - slave.health -= 10; - r += `<br>${slave.slaveName} has been branded on the ${left}, with <span class="gold">fear</span>${slave.devotion < 18 ? `, <span class="mediumorchid">regard,</span>` : ``} and <span class="red">health</span> consequences. Their ${right} already had this brand.`; - } else if (rule.brandDesign !== slave.brand[right]) { + } + + // Brand location does NOT need to be split into a left and right, (and may or may not contain left OR right already.) + } else if (slave.brand[rule.brandTarget] !== rule.brandDesign) { + if ( + (!hasLimb(slave, "left arm") && ["left upper arm", "left lower arm", "left wrist", "left hand"].includes(rule.brandTarget)) || + (!hasLimb(slave, "right arm") && ["right upper arm", "right lower arm", "right wrist", "right hand"].includes(rule.brandTarget)) || + (!hasLimb(slave, "left leg") && ["left thigh", "left calf", "left ankle", "left foot"].includes(rule.brandTarget)) || + (!hasLimb(slave, "right leg") && ["right thigh", "right calf", "right ankle", "rightfoot"].includes(rule.brandTarget)) + ) { + // no brand needed due to amp. + } else { + slave.brand[rule.brandTarget] = rule.brandDesign; if ((slave.devotion < 18)) { slave.devotion -= 5; } - slave.brand[right] = rule.brandDesign; slave.trust -= 5; slave.health -= 10; - r += `<br>${slave.slaveName} has been branded on the ${right}, with <span class="gold">fear</span>${slave.devotion < 18 ? `, <span class="mediumorchid">regard,</span>` : ``} and <span class="red">health</span> consequences. Their ${left} already had this brand.`; - } - } else if (slave.brand[rule.brandTarget] !== rule.brandDesign) { - slave.brand[rule.brandTarget] = rule.brandDesign; - if ((slave.devotion < 18)) { - slave.devotion -= 5; + r += `<br>${slave.slaveName} has been branded, with <span class="gold">fear</span>${slave.devotion < 18 ? `, <span class="mediumorchid">regard,</span>` : ``} and <span class="red">health</span> consequences.`; } - slave.trust -= 5; - slave.health -= 10; - r += `<br>${slave.slaveName} has been branded, with <span class="gold">fear</span>${slave.devotion < 18 ? `, <span class="mediumorchid">regard,</span>` : ``} and <span class="red">health</span> consequences.`; } } }