diff --git a/src/endWeek/reports/penthouseReport.js b/src/endWeek/reports/penthouseReport.js index 8afecdacf8f3e8bef8cc1bf1e53d7036781a65fc..d648a744f9f1a73b02944c7e6fc68752600e9cf1 100644 --- a/src/endWeek/reports/penthouseReport.js +++ b/src/endWeek/reports/penthouseReport.js @@ -49,6 +49,7 @@ globalThis.penthouseReport = function() { V.servantsQuartersSpots = App.Entity.facilities.servantsQuarters.freeSpace; function fullReport(slave) { + const el = new DocumentFragment(); const { His, he, him @@ -162,9 +163,446 @@ globalThis.penthouseReport = function() { // r.push(App.SlaveAssignment.devotion(slave)); + App.Events.addNode(el, r); + return el; } function HGApplication(slave) { + const el = new DocumentFragment(); + const { + He, His, + he, his, him, himself, girl + } = getPronouns(S.HeadGirl); + const {he2, his2, him2, himself2, girl2} = getPronouns(slave).appendSuffix("2"); + let r = []; + + slave.training = Math.clamp(slave.training, 0, 150); + let _effectiveness = S.HeadGirl.actualAge + ((S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant) / 3) - (S.HeadGirl.accent * 5) + (V.HGSeverity * 10) + ((slave.intelligence + slave.intelligenceImplant) / 4) - (slave.accent * 5); + if (V.AgePenalty === 0) { + _effectiveness += Math.max(0, (30 - S.HeadGirl.actualAge)); + } + if (S.HeadGirl.sexualFlaw === "abusive" && V.HGSeverity >= 0) { + _effectiveness += 10; + } + if (V.HGtraining !== "health") { + slave.health.tired += 25; + } + + // + r.push(`<span style="font-weight: bold">Your Head Girl</span> <span class='slave-name'>${S.HeadGirl.slaveName}</span> notices that <span class='slave-name'>${slave.slaveName}</span>`); + switch (V.HGtraining) { + case "health": + r.push(`is unwell.`); + break; + case "obedience": + r.push(`is disobedient.`); + break; + case "paraphilia": + r.push(`has a paraphilia.`); + break; + case "flaw": + r.push(`has an unpleasant flaw worth fixing.`); + break; + case "soften": + r.push(`has an unpleasant flaw that ${he} can try to soften into a unique quirk.`); + break; + case "oral skill": + r.push(`isn't as orally skilled as ${he} is.`); + break; + case "anal skill": + r.push(`isn't as skilled at taking anal as ${he} is.`); + break; + case "fuck skill": + r.push(`isn't as skilled at vaginal intercourse as ${he} is.`); + break; + case "whore skill": + r.push(`isn't as skilled at the fine art of sex for money as ${he} is.`); + break; + case "entertain skill": + r.push(`isn't as skilled at entertainment as ${he} is.`); + } + + if (V.HGtraining === "health") { + r.push(`${He} helps slave.slaveName however ${he} can. The tender care has <span class="green">improved ${slave.slaveName}'s health.</span>`); + improveCondition(slave, 10); + slave.health.tired = Math.clamp(slave.health.tired - 10, 0, 1000); + slave.training = 0; + } else { + if (S.HeadGirl.career === "an arcology owner") { + r.push(`${He} was once an arcology owner ${himself}, making ${him} truly peerless as a Head Girl.`); + _effectiveness += 50; + } else if (setup.HGCareers.includes(S.HeadGirl.career)) { + r.push(`${He} was used to giving commands and being obeyed in ${his} life before ${he} was a slave, experience ${he} can call on now.`); + _effectiveness += 5; + } else if (S.HeadGirl.skill.headGirl >= V.masteredXP) { + r.push(`${He} is used to giving commands and being obeyed through experience, rendering ${him} more effective.`); + _effectiveness += 5; + } + + if (S.HeadGirl.actualAge > 30) { + r.push(`${His} age and experience help ${him} as ${he} works with ${slave.slaveName}.`); + } else if (S.HeadGirl.actualAge < 25 && V.AgePenalty > 0) { + r.push(`${His} youth and inexperience impede ${him} as ${he} works with ${slave.slaveName}.`); + } + + if (S.HeadGirl.accent >= 3) { + r.push(`${He} does ${his} best to give orders in ${V.language}, but has to resort to a lot of unseemly gesticulation and shouting, making ${him} much less effective.`); + } else if (S.HeadGirl.accent === 2) { + r.push(`${His} heavy ${aNational(S.HeadGirl.nationality)} accent impedes ${his} clarity in ${V.language}, making ${him} somewhat less effective.`); + } + + if (V.HGtraining === "obedience" || V.HGtraining === "flaw" || V.HGtraining === "soften") { + if (S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant > 50) { + if (slave.intelligence + slave.intelligenceImplant > 50) { + r.push(`${He} needs ${his} wits about ${him} to mold ${slave.slaveName}, who's quite intelligent ${himself2}.`); + } else if (slave.intelligence + slave.intelligenceImplant >= -50) { + r.push(`${His} intelligence helps ${him} mold ${slave.slaveName}.`); + } else { + r.push(`Molding ${slave.slaveName} is very easy, especially for a smart Head Girl like ${him}.`); + } + } + } else { + if (S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant > 50) { + if (slave.intelligence + slave.intelligenceImplant > 50) { + r.push(`Both slaves are quite intelligent, making ${his} job much easier.`); + } else if (slave.intelligence + slave.intelligenceImplant >= -50) { + r.push(`${He}'s quite intelligent and can teach ${slave.slaveName} well.`); + } else { + r.push(`${He} needs all ${his} considerable intelligence to get through to the idiot ${he} has to teach.`); + } + } + } + if (V.HGSeverity > 0) { + r.push(`Your directives encourage ${him} to rape any slave that fails in the slightest way, a task ${he} approaches`); + if (S.HeadGirl.sexualFlaw === "abusive") { + r.push(`eagerly, since ${he} prefers to take ${his} pleasure without consent.`); + } else if (S.HeadGirl.fetish === "sadist") { + r.push(`with sadistic enthusiasm.`); + } else if (S.HeadGirl.fetish === "dom") { + r.push(`with confidence.`); + } else if (S.HeadGirl.energy > 95) { + r.push(`as a convenient way to`); + if (S.HeadGirl.balls > 0) { + r.push(`drain ${his} perpetually overfilled balls into a series of spasming holes.`); + } else { + r.push(`sate ${his} excess sexual appetite.`); + } + } else { + r.push(`dutifully.`); + } + if (slave.vagina === 0) { + r.push(`In ${slave.slaveName}'s case, ${he}'s careful to limit ${his2} sexual abuse to things that won't take the ${girl2}'s virginity. The slave`); + } else if (slave.anus === 0) { + r.push(`${He}'s careful to molest ${slave.slaveName} in ways that don't involve penetrating ${his2} virgin ass. The slave`); + } else { + r.push(`${slave.slaveName}`); + } + if (slave.devotion > 50) { + r.push(`accepts the abuse, believing ${he2} deserves to be raped.`); + } else if (slave.devotion >= -20) { + r.push(`is <span class="gold">frightened</span> by the unceasing abuse.`); + slave.trust -= 1; + } else { + r.push(`<span class="mediumorchid">hates</span> and <span class="gold">fears</span> the constant abuse.`); + slave.trust -= 1; + slave.devotion -= 1; + } + r.push(`${S.HeadGirl.slaveName} makes sure ${his} victim hates it, every time, and ${slave.slaveName} can't help but do ${his2} very best to avoid this treatment.`); + } else if (V.HGSeverity === 0) { + r.push(`You allow ${him} to use ${his} own judgment when punishing failures,`); + if (S.HeadGirl.sexualFlaw === "abusive") { + r.push(`and ${he} usually decides in favor of forcing misbehaving slaves to get ${him} off.`); + } else if (S.HeadGirl.fetish === "sadist") { + r.push(`permission the sadist uses for ${his} own gratification.`); + } else if (S.HeadGirl.fetish === "dom") { + r.push(`which the dominant ${girl} uses confidently.`); + } else if (S.HeadGirl.energy > 95) { + r.push(`which ${he} uses to`); + if (S.HeadGirl.balls > 0) { + r.push(`force ${his} subordinates to keep ${his} balls drained.`); + } else { + r.push(`extract the constant sexual favors ${his} libido demands.`); + } + } else { + r.push(`and ${he} does ${his} best to be fair.`); + } + r.push(`${slave.slaveName}`); + if (slave.devotion > 50) { + r.push(`is <span class="mediumaquamarine">grateful</span> that ${he2} is punished justly when ${he2} makes mistakes.`); + slave.trust += 1; + } else if (slave.devotion >= -20) { + r.push(`does ${his2} best to learn quickly and avoid punishment.`); + } else { + r.push(`is <span class="gold">scared</span> by ${his2} inability to get away with the smallest disobedience.`); + slave.trust -= 1; + } + } else { + r.push(`You require ${him} to use respect when punishing; ${he} does ${his} best to motivate, but is unable to use real fear as a tool. slave.slaveName understands this, and <span class="mediumaquamarine">trusts</span> that if ${he2} fails, the consequences won't be too awful.`); + slave.trust += 1; + } + + if (V.HGtraining === "obedience") { + slave.training = 0; + _effectiveness -= (slave.intelligence + slave.intelligenceImplant) / 3; + if (_effectiveness <= 0) { + r.push(`${slave.slaveName} is smart enough to complicate things; ${he2} manages to outwit ${him} this week and makes no progress.`); + } else { + slave.devotion += Math.ceil(_effectiveness / 4); + if (slave.devotion < -50) { + r.push(`${He} helps watch and restrain the rebellious ${slave.slaveName}, helping wear ${him2} down, <span class="gold">breaking slave.slaveName's rebelliousness.</span>`); + } else if (slave.devotion < -20) { + r.push(`${He} keeps ${slave.slaveName} constantly aware of ${his2} slavery, <span class="gold">breaking slave.slaveName's resistance.</span>`); + } else { + r.push(`${He} acts as another pair of eyes watching ${slave.slaveName} and metes out punishments, <span class="gold">improving slave.slaveName's servitude.</span>`); + } + } + } else if (V.HGtraining === "paraphilia") { + _effectiveness -= (slave.intelligence + slave.intelligenceImplant) / 3; + slave.training += _effectiveness; + r.push(`${S.HeadGirl.slaveName} does ${his} best to get slave.slaveName past it with punishments and rewards,`); + if (slave.training > 100) { + r.push(`and <span class="green">resolves ${slave.slaveName}'s paraphilia.</span>`); + slave.training = 0; + slave.sexualFlaw = "none"; + } else { + r.push(`and makes partial progress.`); + } + } else if (V.HGtraining === "flaw") { + _effectiveness -= (slave.intelligence + slave.intelligenceImplant) / 3; + slave.training += _effectiveness; + r.push(`${S.HeadGirl.slaveName} punishes slave.slaveName whenever ${he} catches ${him2} indulging in ${his2} bad habits,`); + if (slave.training > 100) { + r.push(`and <span class="green">fixes ${slave.slaveName}'s flaw.</span>`); + slave.training = 0; + if (slave.behavioralFlaw !== "none") { + slave.behavioralFlaw = "none"; + } else if (slave.sexualFlaw !== "none") { + slave.sexualFlaw = "none"; + } + } else { + r.push(`and makes partial progress.`); + } + } else if (V.HGtraining === "soften") { + _effectiveness -= (slave.intelligence + slave.intelligenceImplant) / 3; + slave.training += _effectiveness; + r.push(`${He} punishes slave.slaveName whenever ${he} sees ${him2} breaking the rules yet does ${his} best to retain what makes the slave special,`); + if (slave.training > 150) { + slave.training = 0; + r.push(`and successfully <span class="green">softens ${slave.slaveName}'s flaw.</span>`); + if (slave.behavioralFlaw !== "none") { + SoftenBehavioralFlaw(slave); + } else if (slave.sexualFlaw !== "none") { + SoftenSexualFlaw(slave); + } + } else { + r.push(`and makes partial progress.`); + } + } else if (V.HGtraining === "oral skill") { + slave.training = 0; + if (S.HeadGirl.fetish === "cumslut" && S.HeadGirl.fetishStrength > 60) { + r.push(`In spare moments ${he} teaches ${slave.slaveName} how to suck cocks, cunts, and assholes. ${His} enthusiasm for oral sex is infectious. slave.slaveName's <span class="green">oral skills have improved.</span>`); + slaveSkillIncrease('oral', slave, random(5, 10)); + } else if ((S.HeadGirl.dick > 0) && canPenetrate(S.HeadGirl)) { + r.push(`In spare moments ${he} teaches ${slave.slaveName} how to suck cocks, cunts, and assholes. Your Head Girl uses ${his} penis as an effective teaching tool. slave.slaveName's <span class="green">oral skills have improved.</span>`); + slaveSkillIncrease('oral', slave, random(5, 10)); + } else if ((S.HeadGirl.clit > 2)) { + r.push(`In spare moments ${he} teaches ${slave.slaveName} how to suck cocks, cunts, and assholes. Your Head Girl uses ${his} pseudophallus-sized clit as an effective teaching tool. slave.slaveName's <span class="green">oral skills have improved.</span>`); + slaveSkillIncrease('oral', slave, random(5, 10)); + } else { + r.push(`In spare moments ${he} teaches ${slave.slaveName} how to suck cocks, cunts, and assholes. slave.slaveName's <span class="green">oral skills have improved.</span>`); + } + slaveSkillIncrease('oral', slave, Math.ceil(_effectiveness / 10)); + } else if (V.HGtraining === "anal skill") { + slave.training = 0; + if (S.HeadGirl.fetish === "buttslut" && S.HeadGirl.fetishStrength > 60) { + r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take it up the ass. Your Head Girl's enthusiasm for backdoor loving is infectious. slave.slaveName's <span class="green">anal skills have improved.</span>`); + slaveSkillIncrease('anal', slave, random(5, 10)); + } else if ((S.HeadGirl.dick > 0) && canPenetrate(S.HeadGirl)) { + r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a dick up the butt. Your Head Girl uses ${his} penis as an effective teaching tool. slave.slaveName's <span class="green">anal skills have improved.</span>`); + slaveSkillIncrease('anal', slave, random(5, 10)); + } else if ((S.HeadGirl.clit > 2)) { + r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a phallus up the butt. Your Head Girl uses ${his} pseudophallus-sized clit as an effective teaching tool. slave.slaveName's <span class="green">anal skills have improved.</span>`); + slaveSkillIncrease('anal', slave, random(5, 10)); + } else { + r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a dick up the butt. slave.slaveName's <span class="green">anal skills have improved.</span>`); + } + slaveSkillIncrease('anal', slave, Math.ceil(_effectiveness / 10)); + } else if (V.HGtraining === "fuck skill") { + slave.training = 0; + if (S.HeadGirl.energy > 95) { + r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a dick. Your Head Girl's enthusiasm for sex is infectious. slave.slaveName's <span class="green">vanilla sex skills have improved.</span>`); + slaveSkillIncrease('vaginal', slave, random(5, 10)); + } else if ((S.HeadGirl.dick > 0) && canPenetrate(S.HeadGirl)) { + r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a dick. Your Head Girl uses ${his} penis as an effective teaching tool. slave.slaveName's <span class="green">vanilla sex skills have improved.</span>`); + slaveSkillIncrease('vaginal', slave, random(5, 10)); + } else if ((S.HeadGirl.clit > 2)) { + r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a phallus. Your Head Girl uses ${his} pseudophallus-sized clit as an effective teaching tool. slave.slaveName's <span class="green">vanilla sex skills have improved.</span>`); + slaveSkillIncrease('vaginal', slave, random(5, 10)); + } else { + r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a dick. slave.slaveName's <span class="green">vanilla sex skills have improved.</span>`); + } + slaveSkillIncrease('vaginal', slave, Math.ceil(_effectiveness / 10)); + } else if (V.HGtraining === "whore skill") { + slave.training = 0; + r.push(`In spare moments ${he} teaches ${slave.slaveName} how to prostitute ${himself2}. ${slave.slaveName}'s <span class="green">whoring skills have improved.</span>`); + slaveSkillIncrease('whoring', slave, Math.ceil(_effectiveness / 10)); + } else if (V.HGtraining === "entertain skill") { + slave.training = 0; + if (S.HeadGirl.fetish === "humiliation" && S.HeadGirl.fetishStrength > 60) { + r.push(`In spare moments ${he} teaches ${slave.slaveName} how to entertain. Your Head Girl's enthusiasm for public display is infectious. slave.slaveName's <span class="green">entertainment skills have improved.</span>`); + slaveSkillIncrease('entertainment', slave, random(5, 10)); + } else { + r.push(`In spare moments ${he} teaches ${slave.slaveName} how to entertain. slave.slaveName's <span class="green">entertainment skills have improved.</span>`); + } + slaveSkillIncrease('entertainment', slave, Math.ceil(_effectiveness / 10)); + } + } + + if (slave.devotion >= -20) { + if (slave.attrKnown === 0) { + slave.attrKnown = 1; + r.push(`${S.HeadGirl.slaveName} also investigates the slave's basic sexual orientation, finding that ${he2} is`); + if (slave.attrXY <= 40) { + r.push(`<span class="red">disgusted by men</span>`); + } else if ((slave.attrXY <= 60)) { + r.push(`indifferent to men`); + } else if ((slave.attrXY <= 80)) { + r.push(`<span class="green">attracted to men</span>`); + } else { + r.push(`<span class="green">intensely attracted to men</span>`); + } + r.push(`and`); + if (slave.attrXX <= 40) { + r.push(`<span class="red">disgusted by women.</span>`); + } else if ((slave.attrXX <= 60)) { + r.push(`indifferent to women.`); + } else if ((slave.attrXX <= 80)) { + r.push(`<span class="green">attracted to women.</span>`); + } else { + r.push(`<span class="green">intensely attracted to women.</span>`); + } + } + } + + if (V.HGPiercings) { + if (slave.devotion >= -20 && slave.genes === "XY" && slave.attrXY <= 35 && V.arcologies[0].FSBodyPurist === "unset" && (V.arcologies[0].FSPaternalist === "unset" || (V.arcologies[0].FSPaternalist !== "unset" && SlaveStatsChecker.modScore(slave).total < 13))) { + let _piercingForbidden = 0; + piercingCheck(); + if (_piercingForbidden) { + if (V.arcologies[0].FSDegradationist !== "unset") { + r.push(`${S.HeadGirl.slaveName} thinks some piercings might push ${slave.slaveName} to adjust to life as a slave ${girl2}, but ${he} also knows you have rules applied to this slave that forbid it.`); + } else { + r.push(`${S.HeadGirl.slaveName} thinks some cute piercings might help ${slave.slaveName} adjust to life as a slave ${girl2}, but ${he} also knows you have rules applied to this slave that forbid it.`); + } + } + } + } + + App.Events.addNode(el, r); + return el; + + function piercingCheck() { + if (slave.earPiercing === 0 && slave.earShape !== "none") { + if (V.arcologies[0].FSDegradationist !== "unset") { + slave.earPiercing = 2; + } else { + slave.earPiercing = 1; + } + RulesDeconfliction(slave); + if (slave.earPiercing !== V.slaveAfterRA.earPiercing) { + _piercingForbidden = 1; + slave.earPiercing = 0; + } else { + if (V.arcologies[0].FSDegradationist !== "unset") { + r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs to adjust to life as a slave ${girl2}, so ${he} has the slave's ears pierced. This will be a constant reminder that ${he2} is simply a sexual object here.`); + } else { + r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave ${girl2}, so ${he} has the slave's ears pierced. A little feminine touch can make a big difference.`); + } + cashX(forceNeg(V.modCost), "slaveMod", slave); + return; + } + } + if (slave.nosePiercing === 0) { + if (V.arcologies[0].FSDegradationist !== "unset") { + slave.nosePiercing = 2; + } else { + slave.nosePiercing = 1; + } + RulesDeconfliction(slave); + if (slave.nosePiercing !== V.slaveAfterRA.nosePiercing) { + _piercingForbidden = 1; + slave.nosePiercing = 0; + } else { + if (V.arcologies[0].FSDegradationist !== "unset") { + r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs to adjust to life as a slave ${girl2}, so ${he} gives the slave nasal studs and a large septum ring. It should push slave.slaveName to see ${himself2} as a sexual object for others to use.`); + } else { + r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave ${girl2}, so ${he} gives the slave a cute little nose piercing. It should help slave.slaveName see ${himself2} as a bit more feminine.`); + } + cashX(forceNeg(V.modCost), "slaveMod", slave); + return; + } + } + if (slave.eyebrowPiercing === 0) { + if (V.arcologies[0].FSDegradationist !== "unset") { + slave.eyebrowPiercing = 2; + } else { + slave.eyebrowPiercing = 1; + } + RulesDeconfliction(slave); + if (slave.eyebrowPiercing !== V.slaveAfterRA.eyebrowPiercing) { + _piercingForbidden = 1; + slave.eyebrowPiercing = 0; + } else { + if (V.arcologies[0].FSDegradationist !== "unset") { + r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs to adjust to life as a slave ${girl2}, so ${he} gives the slave multiple eyebrow piercings. A slutty touch for a slave ${girl2} should help ${him2} feel a little hungrier for cock.`); + } else { + r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave ${girl2}, so ${he} gives the slave a cute little eyebrow piercing. A slutty touch for a slave ${girl2} should help ${him2} feel a little hungrier for cock.`); + } + cashX(forceNeg(V.modCost), "slaveMod", slave); + return; + } + } + if (slave.lipsPiercing === 0) { + if (V.arcologies[0].FSDegradationist !== "unset") { + slave.lipsPiercing = 2; + } else { + slave.lipsPiercing = 1; + } + RulesDeconfliction(slave); + if (slave.lipsPiercing !== V.slaveAfterRA.lipsPiercing) { + _piercingForbidden = 1; + slave.lipsPiercing = 0; + } else { + if (V.arcologies[0].FSDegradationist !== "unset") { + r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs to adjust to life as a slave ${girl2}, so ${he} has the slave's lower lip pierced. ${his2} mouth is for pleasing penises now, so it'll help ${him2} if it looks like it.`); + } else { + r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave ${girl2}, so ${he} has the slave's lower lip pierced. ${his2} mouth is for pleasing penises now, so it'll help ${him2} if it looks like it.`); + } + cashX(forceNeg(V.modCost), "slaveMod", slave); + return; + } + } + if (slave.navelPiercing === 0) { + if (V.arcologies[0].FSDegradationist !== "unset") { + slave.navelPiercing = 2; + } else { + slave.navelPiercing = 1; + } + RulesDeconfliction(slave); + if (slave.navelPiercing !== V.slaveAfterRA.navelPiercing) { + _piercingForbidden = 1; + slave.navelPiercing = 0; + } else { + if (V.arcologies[0].FSDegradationist !== "unset") { + r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave ${girl2}, so ${he} has the slave's navel pierced with a big ring. Whatever ${he2} thinks in ${his2} mind, S.HeadGirl.slaveName makes clear to ${him2} that ${his2} body belongs to you.`); + } else { + r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave ${girl2}, so ${he} has the slave's navel pierced. The prettier ${his2} lower half looks, the less reluctant ${he2} should feel to take it up the butt.`); + } + cashX(forceNeg(V.modCost), "slaveMod", slave); + return; + } + } + } } };