diff --git a/sanityCheck.sh b/sanityCheck.sh index 9544ffe99889ef97cf08607fc96ca843184fb3fa..5de0388b504975009010087fde7938da592bfc9c 100755 --- a/sanityCheck.sh +++ b/sanityCheck.sh @@ -40,7 +40,7 @@ $GREP -e "<<.*[(][^<>)]*[(][^<>)]*)\?[^<>)]*>>" -- "src/*" | myprint "MissingClo # Check for too many >>>. e.g.: <</if>>> $GREP "<<[^<>]*[<>]\?[^<>]*>>>" -- "src/*.tw" | myprint "TooManyAngleBrackets" # Check for wrong capitalization on 'activeslave' and other common typos -$GREP -e "\$act" --and --not -e "\$\(activeSlave\|activeChild\|activeArcology\|activeOrgan\|activeLimbs\|activeUnits\|activeLurcher\)" -- "src/*" | myprint "WrongCapitalization" +$GREP -e "\$act" --and --not -e "\$\(activeSlave\|activeChild\|activeArcology\|activeOrgan\|activeLimbs\|activeUnits\|activeLurcher\|active\\.)" -- "src/*" | myprint "WrongCapitalization" # Check for strange spaces e.g. $slaves[$i]. lips $GREP "\$slaves\[\$i\]\. " -- 'src/*' | myprint "MissingPropertyAfterSlaves" # Check using refreshmentType instead of refreshment diff --git a/src/descriptions/arcologyDescription.js b/src/descriptions/arcologyDescription.js index a554299ecaeca119512ea7a5bab05e3e15b467cb..3e7816b63e7f4672e3b257439424817f19cc6edf 100644 --- a/src/descriptions/arcologyDescription.js +++ b/src/descriptions/arcologyDescription.js @@ -898,7 +898,7 @@ App.Desc.playerArcology = function(lastElement) { } else if (A.FSEgyptianRevivalistIncestPolicy === 1) { buffer.push(`Close relationships between citizens, slaves and siblings are common.`); } - if (A.FSSubjugationistLawME === 1) { + if (A.FSSubjugationistLawME === 1 && typeof A.FSSubjugationistRace === "string") { buffer.push(`${capFirstChar(A.FSSubjugationistRace)} subhumans form a majority of the slaves.`); } if (A.FSChattelReligionistLaw === 1) { diff --git a/src/endWeek/economics/arcmgmt.js b/src/endWeek/economics/arcmgmt.js index 9132b05c0588d7f78b67972fa1c80b3edec71598..a9b96bbd2e89f5a7983fd9aa14ae1589191b6900 100644 --- a/src/endWeek/economics/arcmgmt.js +++ b/src/endWeek/economics/arcmgmt.js @@ -1,4 +1,4 @@ -App.EndWeek.arcmgmt = function() { +App.EndWeek.arcManagement = function() { const el = new DocumentFragment(); let r; let _enslaved; diff --git a/src/endWeek/economics/persBusiness.js b/src/endWeek/economics/persBusiness.js index d3f11a542b9c6fe29357d29d034190dd0de93807..e5c9d3876afd7cbd9d67cc461c41ae6aaa809056 100644 --- a/src/endWeek/economics/persBusiness.js +++ b/src/endWeek/economics/persBusiness.js @@ -523,7 +523,7 @@ App.EndWeek.personalBusiness = function() { V.SecExp.proclamation.cooldown = 4; V.personalAttention = "business"; } else { - r.push(`As you currently lack the minimum amount of your chosen proclamation currency, ${V.SecExp.proclamation.currency}, it would be unwise to attempt execution of your V.SecExp.proclamation.type this week.`); + r.push(`As you currently lack the minimum amount of your chosen proclamation currency, ${V.SecExp.proclamation.currency}, it would be unwise to attempt execution of your ${V.SecExp.proclamation.type} this week.`); } } @@ -926,7 +926,7 @@ App.EndWeek.personalBusiness = function() { r.push(`A share of our weapons production is sold to other Free Cities.`); income += Math.round(V.week / 3 * price * 10 * factoryMod); } - if (V.peacekeepers.strength >= 50) { + if (V.peacekeepers !== 0 && V.peacekeepers.strength >= 50) { r.push(`The peacekeeping force is always in need of new armaments and is happy to be supplied by their ally.`); income += Math.round(V.peacekeepers.strength * price * 10 * factoryMod); } diff --git a/src/endWeek/economics/personalNotes.js b/src/endWeek/economics/personalNotes.js index f066bba907a7a2c4a074fb4ecd2229da2e20caab..b14c662e194f287f47bdf8a12b57737909319032 100644 --- a/src/endWeek/economics/personalNotes.js +++ b/src/endWeek/economics/personalNotes.js @@ -32,13 +32,15 @@ App.EndWeek.personalNotes = function() { if (V.PC.rules.lactation === "sell") { /* watch this be a disaster */ milk = milkAmount(V.PC); - r.push(`Whenever you have a free moment and a chest swollen with milk, you spend your time attached to the nearest milker. As a result, you produce${milk} liters of sellable milk over the week.`); - if (V.arcologies[0].FSPastoralistLaw === 1) { - milkSale = milk * (28 + Math.trunc(V.arcologies[0].FSPastoralist / 30)); - r.push(`Since breast milk is ${V.arcologies[0].name}'s only legal dairy product, and yours is in a class all of its own, society can't get enough of it and you make <span class="yellowgreen">${cashFormat(milkSale)}.</span>`); - } else if (V.arcologies[0].FSPastoralist !== "unset") { - milkSale = milk * (12 + Math.trunc(V.arcologies[0].FSPastoralist / 30)); - r.push(`Since milk is fast becoming a major part of the ${V.arcologies[0].name}'s dietary culture, and yours is in a class all of its own, you make <span class="yellowgreen">${cashFormat(milkSale)}.</span>`); + r.push(`Whenever you have a free moment and a chest swollen with milk, you spend your time attached to the nearest milker. As a result, you produce ${milk} liters of sellable milk over the week.`); + if (V.arcologies[0].FSPastoralist !== "unset") { + if (V.arcologies[0].FSPastoralistLaw === 1) { + milkSale = milk * (28 + Math.trunc(V.arcologies[0].FSPastoralist / 30)); + r.push(`Since breast milk is ${V.arcologies[0].name}'s only legal dairy product, and yours is in a class all of its own, society can't get enough of it and you make <span class="yellowgreen">${cashFormat(milkSale)}.</span>`); + } else { + milkSale = milk * (12 + Math.trunc(V.arcologies[0].FSPastoralist / 30)); + r.push(`Since milk is fast becoming a major part of the ${V.arcologies[0].name}'s dietary culture, and yours is in a class all of its own, you make <span class="yellowgreen">${cashFormat(milkSale)}.</span>`); + } } else { milkSale = milk * 8; r.push(`Your milk is sold for <span class="yellowgreen">${cashFormat(milkSale)}.</span>`); @@ -282,7 +284,7 @@ App.EndWeek.personalNotes = function() { V.PC.labor = 1; } if (V.PC.labor === 1) { - if (V.PC.birthsTotal > 0) { + if (V.PC.counter.birthsTotal > 0) { r.push(App.UI.DOM.makeElement("div", `<span class="red">A dull cramp runs down your middle.</span> You'll be giving birth soon.`)); } else { r.push(App.UI.DOM.makeElement("div", `You begin to experience <span class="red">odd cramps</span> in your lower body. Contractions, more than likely.`)); diff --git a/src/endWeek/economics/reputation.js b/src/endWeek/economics/reputation.js index 700859646e8394b4053a1de1cfea87e5d66cecb4..49a05a566a65c6ed2a0f16ce8432ef85193a9642 100644 --- a/src/endWeek/economics/reputation.js +++ b/src/endWeek/economics/reputation.js @@ -640,7 +640,7 @@ App.EndWeek.reputation = function() { FutureSocieties.Change("EgyptianRevivalist", 5); } if (V.language !== "Ancient Egyptian") { - r.push(`Continuing to use ${V.language} as the lingua franca of V.arcologies[0].name rather than revived Ancient Egyptian <span class="red">disappoints</span> society and causes doubt about your revivalist project.`); + r.push(`Continuing to use ${V.language} as the lingua franca of ${V.arcologies[0].name} rather than revived Ancient Egyptian <span class="red">disappoints</span> society and causes doubt about your revivalist project.`); FutureSocieties.Change("EgyptianRevivalist", -2); } } else if (V.arcologies[0].FSEdoRevivalist !== "unset") { diff --git a/src/endWeek/saChoosesOwnJob.js b/src/endWeek/saChoosesOwnJob.js index f77cecf7efd1dcf0cff38695c4789a8f8f136321..f59353abde47fc5268fa7546b00439183a53685a 100644 --- a/src/endWeek/saChoosesOwnJob.js +++ b/src/endWeek/saChoosesOwnJob.js @@ -88,7 +88,7 @@ App.SlaveAssignment.choosesOwnJob = (function() { slave.devotion -= 5; } else if (slave.health.illness > 1) { if (V.universalRulesAssignsSelfFacility === 1 && V.clinic > clinicL) { - choice.push(`is ill, so ${he} decides to get treatment at${V.clinicName}.`); + choice.push(`is ill, so ${he} decides to get treatment at ${V.clinicName}.`); choice.push(assignJob(slave, "get treatment in the clinic")); } else { choice.push(`is ill, so ${he} decides to rest.`); diff --git a/src/endWeek/saLongTermEffects.js b/src/endWeek/saLongTermEffects.js index 65b954b233b507a14271bb389e6f688d4c216cfa..1dfd4167a7356c9af00202b01fd0479d897600c2 100644 --- a/src/endWeek/saLongTermEffects.js +++ b/src/endWeek/saLongTermEffects.js @@ -397,7 +397,7 @@ App.SlaveAssignment.longTermEffects = (function() { r.push(`Having ${his} heavy milk production forced through ${his} tiny nipples <span class="change positive">stretches and engorges them.</span>`); slave.nipples = "cute"; } - } else if (slave.nipples === "cute" || slave.nipples === "inverted") { + } else if (slave.nipples === "cute") { if (random(1, 100) > 80) { r.push(`${He}'s lactating so heavily that ${his} permanently swollen nipples gradually become accustomed to the constant flow of milk. They <span class="change positive">become puffy</span> and engorged.`); slave.nipples = "puffy"; diff --git a/src/endWeek/saPleaseYou.js b/src/endWeek/saPleaseYou.js index 9d6d59b55af92d00b7d9628ae387db9ebb7d23ba..429356747b7a560d642da9d018f2300a710d280f 100644 --- a/src/endWeek/saPleaseYou.js +++ b/src/endWeek/saPleaseYou.js @@ -1799,4 +1799,4 @@ App.SlaveAssignment.pleaseYou = (function() { slave.fetishStrength = 10; } } -})(); \ No newline at end of file +})(); diff --git a/src/endWeek/saRecruitGirls.js b/src/endWeek/saRecruitGirls.js index 781b51e2c80e6e5921df4fdd31e4317554f60a12..2815560f3a779593e31196a055cf500cda8f0ee2 100644 --- a/src/endWeek/saRecruitGirls.js +++ b/src/endWeek/saRecruitGirls.js @@ -1475,7 +1475,7 @@ App.SlaveAssignment.recruitGirls = (function() { pushFS(`Clad in ${his} holy garb, ${slave.slaveName} preaches to the atrium with a powerful appeal to the new morality, in which ${his} absolute faith in your revelations is unmistakable.`); seed += 1; } else if (arcology.FSNeoImperialist !== "unset" && slave.clothes === "a tight Imperial bodysuit") { - pushFS(`${He} lectures eloquently on the importance of hierarchy and noble lineage in a pseduo-religious fashion, dressed out in ${his} form-fitting bodysuit; most of the listeners' eyes fall on ${his} tightly-outlined chest and how ${his} nipples protrude obviously underneath the cybersuit, your crest emblazoned over the rock-hard nubs doing more of the arguing.`); + pushFS(`${He} lectures eloquently on the importance of hierarchy and noble lineage in a pseudo-religious fashion, dressed out in ${his} form-fitting bodysuit; most of the listeners' eyes fall on ${his} tightly-outlined chest and how ${his} nipples protrude obviously underneath the cybersuit, your crest emblazoned over the rock-hard nubs doing more of the arguing.`); seed += 1; } else if (arcology.FSNeoImperialist !== "unset" && slave.clothes === "Imperial Plate") { pushFS(`${He} gives a lengthy speech about the importance of hierarchy and noble lineage in a pseudo-religious fashion, speaking on the divine right of the nobility to rule while dominating the floor in ${his} ultra-heavy Imperial plate.`); diff --git a/src/endWeek/saRules.js b/src/endWeek/saRules.js index 4ecf3c17775b2b33ae8311b97596fc420751be74..ee970e4645556a04413e51090bf09f0ce367a2f8 100644 --- a/src/endWeek/saRules.js +++ b/src/endWeek/saRules.js @@ -893,7 +893,7 @@ App.SlaveAssignment.rules = function(slave) { r.push(`is frigid and has little interest in getting off, making the rule restricting ${his} sexual outlets superfluous.`); slave.need = 0; } else if (slave.relationship === -3) { - r.push(`You make sure your troublesome ${wife}'s sexual needs are handled, openly, in the middle of V.cellblockName, where everyone can see, hear, and smell your dominance.`); + r.push(`You make sure your troublesome ${wife}'s sexual needs are handled, openly, in the middle of ${V.cellblockName}, where everyone can see, hear, and smell your dominance.`); slave.need = 0; if (canDoVaginal(slave) && slave.vagina > 0) { seX(slave, "penetrative", V.PC, "vaginal", 7); @@ -1230,7 +1230,7 @@ App.SlaveAssignment.rules = function(slave) { r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); } - r.push(`${He} is <span class="hotpink">very happy</span> with ${his} private room in the back of ${V.nurseryName} and <span class="mediumaquamarine">trusts</span> you a bit more for placing the responsibility of raising V.arcologies[0].name's children in ${his}`); + r.push(`${He} is <span class="hotpink">very happy</span> with ${his} private room in the back of ${V.nurseryName} and <span class="mediumaquamarine">trusts</span> you a bit more for placing the responsibility of raising ${V.arcologies[0].name}'s children in ${his}`); if (!hasAnyArms(slave)) { r.push(`figurative`); } diff --git a/src/events/scheduled/assholeKnight.tw b/src/events/scheduled/assholeKnight.tw index 68ff0acdd8d75f954dee57890757bd5e8e1f78fc..4868fa8e06d2d672a4b18d5c4430427543d44314 100644 --- a/src/events/scheduled/assholeKnight.tw +++ b/src/events/scheduled/assholeKnight.tw @@ -4,7 +4,7 @@ The group of citizens you hand-picked as your Knights have quickly proven themselves a reliable staple of the Arcology. Being visibly a league above the common citizen with their heavy Imperial Plate decorated with glimmering pendants and marks of their individual, flowery coats of arms, their mere presence is enough to make most common criminals cower and keep merchants selling their wares at fair prices. The tenets of neo-Imperial hierarchy and their own social prestige have already gone to their heads, and many Knights are now recognized immediately by the common citizens as heroic, uncowed citizen-soldiers. <br><br> -Despite the noble reputations of many of your Knights, their image as defenders of the downtrodden and honest protectors of the Arcology is not universal. Although you Knighted every last one of them yourself, it seems you might have made a misjudgement on the character of one of your new servants; a stream of minor offenses from one Knight in particular has been building up in your inbox for quite some time, and reviewing the whole dossier now paints a portrait of abuses and misconduct. +Despite the noble reputations of many of your Knights, their image as defenders of the downtrodden and honest protectors of the Arcology is not universal. Although you Knighted every last one of them yourself, it seems you might have made a misjudgment on the character of one of your new servants; a stream of minor offenses from one Knight in particular has been building up in your inbox for quite some time, and reviewing the whole dossier now paints a portrait of abuses and misconduct. <br><br> This singular Knight has apparently been using their position to extort and bully the populace, demanding unreasonably steep discounts from merchants and regularly beating the peasantry - often for no reason other than momentary amusement, and treating them as "less than even slaves". A number of frustrated citizens have sent you a petition demanding that you denounce and punish them for their petty offenses - a picture of a woman with her face blurred out and a trail of bruises over every inch of her naked body is attached. No names have been attached to the petition, apparently for fear of what the Knight in question will do to them should their attempts be uncovered. Whatever you decide to do with this man will undoubtedly set the precedent for how you deal with Knights who abuse their station in the future. <br><br> diff --git a/src/events/scheduled/pitFightNonlethal.js b/src/events/scheduled/pitFightNonlethal.js index d635b43845fe822101311d002e7a3d620bfcc58f..e303e2bb5594d26f852934a69d8d44561747072c 100644 --- a/src/events/scheduled/pitFightNonlethal.js +++ b/src/events/scheduled/pitFightNonlethal.js @@ -89,7 +89,7 @@ App.Facilities.Pit.fight.nonlethal = function(fighters) { const approves = slave.devotion > 50 || (slave.devotion > 20 && (slave.fetish === "masochist" || slave.fetish === "humiliation" || slave.sexualQuirk === "perverted" || slave.behavioralQuirk === "sinful")); - r.push(`${slave.slaveName} and the ${animal.name} enter ${V.pit.name} from opposite sides. ${slave.slaveName} is naked and ${his} wrists have been bound, and ${he} has already been given ${his} instructions: ${he} is to try to avoid being caught and ${approves ? `fucked` : `raped`} by the animal for five minutes, and if ${he} succeeds, ${he} wins two complete days of rest. The ${animal.name} has been given a large dose of aphrodisics, and its lust is apparent – its ${animal.dick.desc} cock is clearly visible, even from where you're seated.`); + r.push(`${slave.slaveName} and the ${animal.name} enter ${V.pit.name} from opposite sides. ${slave.slaveName} is naked and ${his} wrists have been bound, and ${he} has already been given ${his} instructions: ${he} is to try to avoid being caught and ${approves ? `fucked` : `raped`} by the animal for five minutes, and if ${he} succeeds, ${he} wins two complete days of rest. The ${animal.name} has been given a large dose of aphrodisiacs, and its lust is apparent – its ${animal.dick.desc} cock is clearly visible, even from where you're seated.`); } else { r.push(`You review the rules — the combatants are wearing light gloves, and the fight will be nonlethal, with you as the judge. The winner will have the right to do anything they wish to the loser,`); diff --git a/src/facilities/pit/pit.tw b/src/facilities/pit/pit.tw index b85be64c08069d22452909ce0e6495d6a4115bb9..e0ebcece67db665fb8dac13416878ac687a4265e 100644 --- a/src/facilities/pit/pit.tw +++ b/src/facilities/pit/pit.tw @@ -1,237 +1,3 @@ :: Pit [nobr jump-to-safe jump-from-safe] <<includeDOM App.Facilities.Pit.pit()>> - -/* - <<if $activeCanine != 0 || $activeHooved != 0 || $activeFeline != 0>> - - <<switch $activeCanine.breed>> - <<case "Beagle" "French Bulldog" "Poodle" "Yorkshire Terrier">> - <<set _animalEligible = 0>> - <<default>> - <<set _animalEligible = 1>> - <</switch>> - - <<if $pit.animalFights == 1>> - <br> - <<if $pit.lethal == 1>> - <<if $pit.animalType == $activeCanine.type>> - <<if $activeCanine.species != "dog">> - Your slave will fight a ''$activeCanine.species''. - $activeCanine.speciesCap - <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pit.animalType = "hooved"]]<</if>> - <<if _FL > 0>> | - <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pit.animalType = "feline"]] - <<else>> - //House cats are too small for your slave to fight// - <</if>> - <</if>> - <<else>> - <<if _animalEligible == 1>> - Your slave will fight a ''$activeCanine.breed''. - $activeCanine.breed - <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pit.animalType = "hooved"]]<</if>> - <<if _FL > 0>> | - <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pit.animalType = "feline"]] - <<else>> - //House cats are too small for your slave to fight// - <</if>> - <</if>> - <<else>> - //<<print $activeCanine.breed>>s are too small for your slave to fight// - <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pit.animalType = "hooved"]]<</if>> - <<if _FL > 0>> | - <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pit.animalType = "feline"]] - <<else>> - //House cats are too small for your slave to fight// - <</if>> - <</if>> - <</if>> - <</if>> - <<elseif $pit.animalType == $activeHooved.type>> - Your slave will fight a ''$activeHooved.species''. - <<if _CL > 0>> - <<if $activeCanine.species != "dog">> - [["" + $activeCanine.speciesCap + ""|Pit][$pit.animalType = "canine"]] | - <<else>> - <<if _animalEligible == 1>> - [["" + $activeCanine.breed + ""|Pit][$pit.animalType = "canine"]] | - <<else>> - //<<print $activeCanine.breed>>s are too small for your slave to fight// | - <</if>> - <</if>> - <</if>> - $activeHooved.speciesCap - <<if _FL > 0>> | - <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pit.animalType = "feline"]] - <<else>> - //House cats are too small for your slave to fight// - <</if>> - <</if>> - <<elseif $pit.animalType == $activeFeline.type>> - <<if $activeFeline.species != "cat">> - Your slave will fight a ''$activeFeline.species''. - <<else>> - //House cats are too small for your slave to fight// - <</if>> - <<if _CL > 0>> - <<if $activeCanine.species != "dog">> - [["" + $activeCanine.speciesCap + ""|Pit][$pit.animalType = "canine"]] - <<else>> - <<if _animalEligible == 1>> - [["" + $activeCanine.breed + ""|Pit][$pit.animalType = "canine"]] - <<else>> - //<<print $activeCanine.breed>>s are too small for your slave to fight// - <</if>> - <</if>> - <</if>> - <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pit.animalType = "hooved"]] | <</if>> - <<if $activeFeline.species != "cat">> - $activeFeline.speciesCap - <<else>> - //House cats are too small for your slave to fight// - <</if>> - <<else>> - Select an animal for your slave to fight. - <<if _CL > 0>> - <<if $activeCanine.species != "dog">> - [["" + $activeCanine.speciesCap + ""|Pit][$pit.animalType = "canine"]] - <<else>> - <<if _animalEligible == 1>> - [["" + $activeCanine.breed + ""|Pit][$pit.animalType = "canine"]] - <<else>> - //<<print $activeCanine.breed>>s are too small for your slave to fight// - <</if>> - <</if>> - <</if>> - <<if (_CL > 0 && _HL > 0) || (_CL > 0 && _FL > 0) || (_HL > 0 && _FL > 0)>> | <</if>> - <<if _HL > 0>> - [["" + $activeHooved.speciesCap + ""|Pit][$pit.animalType = "hooved"]] - <</if>> - <<if (_HL > 0 && _FL > 0)>> | <</if>> - <<if _FL > 0>> - <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pit.animalType = "feline"]] - <<else>> - //House cats are too small for your slave to fight// - <</if>> - <</if>> - - <</if>> - <<elseif $pit.lethal == 0>> - <<if $pit.animalType == $activeCanine.type>> - <<if $activeCanine.species != "dog">> - Your slave will try to avoid being used by a ''$activeCanine.species''. - $activeCanine.speciesCap - <<else>> - <<if _animalEligible == 1>> - Your slave will try to avoid being used by a ''$activeCanine.breed''. - $activeCanine.breed - <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pit.animalType = "hooved"]]<</if>> - <<if _FL > 0>> | - <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pit.animalType = "feline"]] - <<else>> - //House cats are too small to use your slave// - <</if>> - <</if>> - <<else>> - //<<print $activeCanine.breed>>s are too small to use your slave// - <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pit.animalType = "hooved"]]<</if>> - <<if _FL > 0>> | - <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pit.animalType = "feline"]] - <<else>> - //House cats are too small to use your slave// - <</if>> - <</if>> - <</if>> - <</if>> - <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pit.animalType = "hooved"]]<</if>> - <<if _FL > 0>> | - <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pit.animalType = "feline"]] - <<else>> - //House cats are too small to use your slave// - <</if>> - <</if>> - <<elseif $pit.animalType == $activeHooved.type>> - Your slave will try to avoid being used by a ''$activeHooved.species''. - <<if _CL > 0>> - <<if $activeCanine.species != "dog">> - [["" + $activeCanine.speciesCap + ""|Pit][$pit.animalType = "canine"]] | - <<else>> - <<if _animalEligible == 1>> - [["" + $activeCanine.breed + ""|Pit][$pit.animalType = "canine"]] | - <<else>> - //<<print $activeCanine.breed>>s are too small for your slave to fight// | - <</if>> - <</if>> - <</if>> - $activeHooved.speciesCap - <<if _FL > 0>> | - <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pit.animalType = "feline"]] - <<else>> - //House cats are too small to use your slave// - <</if>> - <</if>> - <<elseif $pit.animalType == $activeFeline.type>> - <<if $activeFeline.species != "cat">> - Your slave will try to avoid being used by a ''$activeFeline.species''. - <<else>> - //House cats are too small to use your slave// - <</if>> - <<if _CL > 0>> - <<if $activeCanine.species != "dog">> - [["" + $activeCanine.speciesCap + ""|Pit][$pit.animalType = "canine"]] - <<else>> - <<if _animalEligible == 1>> - [["" + $activeCanine.breed + ""|Pit][$pit.animalType = "canine"]] - <<else>> - //<<print $activeCanine.breed>>s are too small for your slave to fight// - <</if>> - <</if>> - <</if>> - <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pit.animalType = "hooved"]] | <</if>> - <<if $activeFeline.species != "cat">> - $activeFeline.speciesCap - <<else>> - //House cats are too small to use your slave// - <</if>> - <<else>> - Select an animal for your slave to try to avoid. - <<if _CL > 0>> - <<if $activeCanine.species != "dog">> - [["" + $activeCanine.speciesCap + ""|Pit][$pit.animalType = "canine"]] - <<else>> - <<if _animalEligible == 1>> - [["" + $activeCanine.breed + ""|Pit][$pit.animalType = "canine"]] - <<else>> - //<<print $activeCanine.breed>>s are too small for your slave to fight// - <</if>> - <</if>> - <</if>> - <<if (_CL > 0 && _HL > 0) || (_CL > 0 && _FL > 0) || (_HL > 0 && _FL > 0)>> | <</if>> - <<if _HL > 0>> - [["" + $activeHooved.speciesCap + ""|Pit][$pit.animalType = "hooved"]] - <</if>> - <<if (_HL > 0 && _FL > 0)>> | <</if>> - <<if _FL > 0>> - <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pit.animalType = "feline"]] - <<else>> - //House cats are too small to use your slave// - <</if>> - <</if>> - <</if>> - <</if>> - <<else>> - <<set $pit.animalType = 0>> - <</if>> - <</if>> -*/ diff --git a/src/interaction/main/walkPast.js b/src/interaction/main/walkPast.js index 27edf82a9bd197324e8a1234e3859dc4da8f3f7b..7c308cbc41f0c099a4d2bbb29cb9252f8925d5e9 100644 --- a/src/interaction/main/walkPast.js +++ b/src/interaction/main/walkPast.js @@ -5130,7 +5130,7 @@ globalThis.walkPast = (function() { t += `${His} huge belly lewdly stretches ${his} bodysuit.`; break; case "a tight Imperial bodysuit": - t += `${His} cybernetic bodysuit is lewdly stretched out by ${his} huges belly.`; + t += `${His} cybernetic bodysuit is lewdly stretched out by ${his} huge belly.`; break; case "a kimono": t += `${His} kimono demurely covers the sides of ${his} huge belly.`; @@ -5492,7 +5492,7 @@ globalThis.walkPast = (function() { t += `${His} taut armor shows every jiggle in ${his} big gut as ${he} moves.`; break; case "Imperial Plate": - t += `${His} ultra-heavy armor isn't quite massive enough to hige the jiggle of ${his} big gut.`; + t += `${His} ultra-heavy armor isn't quite massive enough to hide the jiggle of ${his} big gut.`; break; case "a mounty outfit": t += `The buttons on ${his} staining jacket struggle to hold back ${his} big jiggling gut.`; @@ -5918,7 +5918,7 @@ globalThis.walkPast = (function() { t += `${His} taut armor shows every jiggle in ${his} fat, jiggling gut as ${he} moves.`; break; case "Imperial Plate": - t += `${His} ultra-heavy armor isn't quite massive enough to hige the jiggle of ${his} big gut.`; + t += `${His} ultra-heavy armor isn't quite massive enough to hide the jiggle of ${his} big gut.`; break; case "a mounty outfit": t += `The buttons on ${his} staining jacket struggle to hold back ${his} fat, jiggling gut.`; diff --git a/src/interaction/siFinancial.js b/src/interaction/siFinancial.js index b6f19c6efa20221677a7bddcd16f83f29bcd4839..ab933946cde9fa6e5a0b92bd8ff733d6481847b3 100644 --- a/src/interaction/siFinancial.js +++ b/src/interaction/siFinancial.js @@ -11,7 +11,7 @@ App.UI.SlaveInteract.financial = function(slave) { slave.porn.spending = Math.clamp(Math.ceil(slave.porn.spending / 1000) * 1000, 0, 5000); if (slave.porn.prestige === 3) { - App.UI.DOM.appendNewElement("div", el, `${He} is so prestigious in the realm of ${slave.porn.fameType} porn that ${his} fame is self-sustaining.`, "note") + App.UI.DOM.appendNewElement("div", el, `${He} is so prestigious in the realm of ${slave.porn.fameType} porn that ${his} fame is self-sustaining.`, "note"); } else if (slave.porn.feed === 0) { r = []; r.push(`The media hub is not releasing highlights of ${his} sex life.`); diff --git a/src/js/SetBellySize.js b/src/js/SetBellySize.js index 93485c47a428acfad0e78d367deb1f040201abe7..0e2218877886dc4777bd8144e39ef5deed4c1e49 100644 --- a/src/js/SetBellySize.js +++ b/src/js/SetBellySize.js @@ -1,5 +1,5 @@ /** - * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState | App.Entity.PlayerState} slave */ globalThis.SetBellySize = function(slave) { WombNormalizePreg(slave); /* now with support for legacy code that advances pregnancy by setting .preg++ */ diff --git a/src/js/futureSocietyJS.js b/src/js/futureSocietyJS.js index 32c14eda04df65e2079520f2083ba66aa2bb653c..e96505c2a2fcc7e35d2a594dbb24b6f2ade510fa 100644 --- a/src/js/futureSocietyJS.js +++ b/src/js/futureSocietyJS.js @@ -58,7 +58,7 @@ globalThis.FutureSocieties = (function() { [ "FSPetiteAdmiration", "FSStatuesqueGlorification"] ]; - /** @type {Record<FC.FutureSociety, {noun: FC.FutureSocietyNoun, adj: FC.FutureSocietyAdj}} */ + /** @type {Record<FC.FutureSociety, {noun: FC.FutureSocietyNoun, adj: FC.FutureSocietyAdj}>} */ const DisplayName = { FSSupremacist: {noun: "Racial Supremacism", adj: "Supremacist"}, FSSubjugationist: {noun: "Racial Subjugationism", adj: "Subjugationist"}, diff --git a/src/js/ibcJS.js b/src/js/ibcJS.js index 654765c6b8e240538b43e58de1a9dfcce7d93916..ea09c7c542d8648881007e4d03abdc5d425f61fb 100644 --- a/src/js/ibcJS.js +++ b/src/js/ibcJS.js @@ -20,7 +20,12 @@ globalThis.ibc = (() => { /** The player's old master is a known parent, but we don't normally have a slavelike object * for him. We use this one instead, wherever necessary. * @type {IBCRelative} */ - const oldMaster = {ID: -3, mother: 0, father: 0, inbreedingCoeff: 0}; + const oldMaster = { + ID: -3, + mother: 0, + father: 0, + inbreedingCoeff: 0 + }; /** Create a node for the given ID * @param {number} id @@ -38,9 +43,10 @@ globalThis.ibc = (() => { // Determine the length of the shared prefix between the two NodeCode parameters let prefix_len = (nca, ncb) => { let i = 0; - for (i=0; i<Math.min(nca.length, ncb.length); i++) { - if (nca[i] !== ncb[i]) + for (i = 0; i < Math.min(nca.length, ncb.length); i++) { + if (nca[i] !== ncb[i]) { break; + } } return i; }; @@ -53,8 +59,9 @@ globalThis.ibc = (() => { let match = false; b.nodecodes.forEach(ncb => { let l = prefix_len(nca, ncb); - if (l === 0 && match) + if (l === 0 && match) { return; + } if (l > 0) { match = true; @@ -79,10 +86,12 @@ globalThis.ibc = (() => { } let ret = null; - if (n.mother !== null) + if (n.mother !== null) { ret = find_nc(nc, n.mother); - if (n.father !== null && ret === null) + } + if (n.father !== null && ret === null) { ret = find_nc(nc, n.father); + } return ret; }; @@ -100,15 +109,17 @@ globalThis.ibc = (() => { ret.nodecodes.forEach(nc => { let i = pfx_s.indexOf(nc.join(';')); - if (i === -1) + if (i === -1) { return; + } pfx.pop(i); pfx_s.pop(i); }); - if (anc.findIndex(s => (s[0] == ret)) === -1) + if (anc.findIndex(s => (s[0] == ret)) === -1) { anc.push([ret, p]); + } } return anc; @@ -137,11 +148,11 @@ globalThis.ibc = (() => { let kinship = (mother, father) => { let _coeff = 0; - if (!mother || !father) + if (!mother || !father) { _coeff = 0; - else if (mother === father) + } else if (mother === father) { _coeff = 0.5 * (1 + coeff(mother)); - else { + } else { let cf = 0; let cmn = common(mother, father); @@ -155,14 +166,16 @@ globalThis.ibc = (() => { cmn.forEach(el2 => { let co = el2[0]; - if (co == c) + if (co == c) { return; + } let m_pp = []; let f_pp = []; co.nodecodes.forEach(nc => { - if (nc.slice(0, p.length).join(';') != p_s) + if (nc.slice(0, p.length).join(';') != p_s) { return; + } m_pp = m_pp.concat(mps(mother, nc)); f_pp = f_pp.concat(mps(father, nc)); @@ -172,8 +185,9 @@ globalThis.ibc = (() => { f_pp.forEach(fp => { let mf_s = [mp.join(';'), fp.join(';')].join(','); let i = paths_s.indexOf(mf_s); - if (i === -1) + if (i === -1) { return; + } paths_s.pop(i); paths.pop(i); }); @@ -182,7 +196,7 @@ globalThis.ibc = (() => { paths.forEach(p => { let pfx = prefix_len(p[0], p[1]); - cf += 0.5**(p[0].length + p[1].length+1 - 2*pfx) * (1 + coeff(c)); + cf += 0.5 ** (p[0].length + p[1].length + 1 - 2 * pfx) * (1 + coeff(c)); }); }); @@ -194,8 +208,9 @@ globalThis.ibc = (() => { // Determine the coefficient of inbreeding of a node `n` let coeff = n => { - if (n._coeff === null) + if (n._coeff === null) { n._coeff = kinship(n.mother, n.father); + } return n._coeff; }; @@ -230,8 +245,9 @@ globalThis.ibc = (() => { let seen = []; let curid = 0; Object.values(nodes).forEach(n => { - if (n.mother !== null || n.father !== null) + if (n.mother !== null || n.father !== null) { return; + } n.nodecodes.push([curid]); curid += 1; seen.push(n.id); @@ -241,18 +257,20 @@ globalThis.ibc = (() => { let oldSeenLength = -1; while (seen.length !== total) { oldSeenLength = seen.length; - Object.keys(nodes).forEach(s=> { + Object.keys(nodes).forEach(s => { let n = nodes[s]; - if (seen.includes(+s)) // We've already done this + if (seen.includes(+s)) { // We've already done this return; - else if ((n.mother !== null && n.mother.nodecodes.length === 0) || (n.father !== null && n.father.nodecodes.length === 0)) // Too soon, we haven't done its parents + } else if ((n.mother !== null && n.mother.nodecodes.length === 0) || (n.father !== null && n.father.nodecodes.length === 0)) { // Too soon, we haven't done its parents return; + } seen.push(n.id); // Compute the NodeCodes from its parents [n.mother, n.father].forEach((a, i) => { - if (a === null || (n.mother === n.father && i === 1)) // Ignore missing parents/repeated + if (a === null || (n.mother === n.father && i === 1)) { // Ignore missing parents/repeated return; + } a.nodecodes.forEach(nc => { // Copy the NodeCode, push the child number, then add it @@ -270,7 +288,7 @@ globalThis.ibc = (() => { // dump all the nodes participating in or descended from the cycle and let the player figure it out if (oldSeenLength === seen.length) { const badSlaveIDs = Object.keys(nodes).filter(s => !seen.includes(+s)).map(k => nodes[k].id); - throw(`Inbreeding calculation: heritance cycle detected. Check slave IDs: ${badSlaveIDs}`); + throw (`Inbreeding calculation: heritance cycle detected. Check slave IDs: ${badSlaveIDs}`); } } @@ -285,7 +303,7 @@ globalThis.ibc = (() => { * @param {boolean} [ignore_coeffs=false] * @returns {Object.<number, IBCNode>|{}} */ - let nodes_slaves = (slaves, ignore_coeffs=false) => { + let nodes_slaves = (slaves, ignore_coeffs = false) => { let nodes = {}; /** Recursively create the nodes we need, moving upwards from the given slave @@ -346,7 +364,7 @@ globalThis.ibc = (() => { * @param {boolean} [ignore_coeffs=false] * @returns {Object.<number, number>} */ - let coeff_slaves = (slaves, ignore_coeffs=false) => { + let coeff_slaves = (slaves, ignore_coeffs = false) => { /** @type {Object.<number, number>} */ let ret = {}; if (!ignore_coeffs) { @@ -379,7 +397,7 @@ globalThis.ibc = (() => { * @param {boolean} [ignore_coeffs=false] * @returns {number} */ - let kinship_slaves = (a, b, ignore_coeffs=false) => { + let kinship_slaves = (a, b, ignore_coeffs = false) => { if (!a || !b) { return 0; } @@ -392,13 +410,15 @@ globalThis.ibc = (() => { * @param {boolean} [ignore_coeffs=false] * @returns {number} */ - let coeff_slave = (slave, ignore_coeffs=false) => { - if (!ignore_coeffs && "inbreedingCoeff" in slave && slave.inbreedingCoeff !== -1) + let coeff_slave = (slave, ignore_coeffs = false) => { + if (!ignore_coeffs && "inbreedingCoeff" in slave && slave.inbreedingCoeff !== -1) { return slave.inbreedingCoeff; + } let gp = find_gp(slave.ID); - if (!ignore_coeffs && gp !== null && "inbreedingCoeff" in gp && gp.inbreedingCoeff !== -1) + if (!ignore_coeffs && gp !== null && "inbreedingCoeff" in gp && gp.inbreedingCoeff !== -1) { return gp.inbreedingCoeff; + } return coeff_slaves([slave], ignore_coeffs)[slave.ID]; }; @@ -410,10 +430,10 @@ globalThis.ibc = (() => { * @param {boolean} [ignore_coeffs=false] * @returns {Object.<number, number>} */ - let kinship_one_many = (a, others, ignore_coeffs=false) => { + let kinship_one_many = (a, others, ignore_coeffs = false) => { let nodes = nodes_slaves(others.concat([a]), ignore_coeffs); - let ks = {0: 0}; + let ks = { 0: 0 }; others.forEach(s => { ks[s.ID] = kinship(nodes[a.ID], nodes[s.ID]); }); @@ -433,12 +453,15 @@ globalThis.ibc = (() => { // occurrences of the COI for the affected slaves /** @type {IBCRelative[]} */ let all_slave_like = V.slaves.concat(V.genePool).concat(V.cribs).concat(V.tanks).concat(Object.values(V.missingTable)); - if (V.boomerangSlave !== 0) + if (V.boomerangSlave !== 0) { all_slave_like.push(V.boomerangSlave); - if (V.traitor !== 0) + } + if (V.traitor !== 0) { all_slave_like.push(V.traitor); - if (V.activeSlave !== 0) + } + if (V.activeSlave !== 0) { all_slave_like.push(V.activeSlave); + } all_slave_like.push(V.PC); // Add a fake entry for the PC's old master all_slave_like.push(oldMaster); @@ -457,10 +480,12 @@ globalThis.ibc = (() => { // Add fetuses all_fetuses.filter(f => (f.father === id || f.mother === id)).forEach(f => { // We may have to manually add the parents later - if (specificCharacterID(f.father)) + if (specificCharacterID(f.father)) { cur_fetus_parents.add(f.father); - if (specificCharacterID(f.mother)) + } + if (specificCharacterID(f.mother)) { cur_fetus_parents.add(f.mother); + } cur_fetuses.add(f); }); @@ -509,8 +534,9 @@ globalThis.ibc = (() => { // Use a string of the form "parent;parent" to store the cache value; since kinship is // commutative, the minimum parent ID will be first let kinship_str = Math.min(f.mother, f.father) + ';' + Math.max(f.mother, f.father); - if (!kinship_cache.has(kinship_str)) + if (!kinship_cache.has(kinship_str)) { kinship_cache.set(kinship_str, kinship(nodes[f.mother], nodes[f.father])); + } f.inbreedingCoeff = kinship_cache.get(kinship_str); }); diff --git a/src/js/pregJS.js b/src/js/pregJS.js index f49081b8a30702e4bdaf8cd76b999d850386f372..37a43d9378fde86db687d47cf19c4c072cbe118f 100644 --- a/src/js/pregJS.js +++ b/src/js/pregJS.js @@ -581,7 +581,7 @@ globalThis.getBaseBoobs = function(slave) { /** * Terminate a pregnancy without birth (i.e. miscarriage/abortion), while automatically applying the correct postpartum length - * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState | App.Entity.PlayerState} slave */ globalThis.TerminatePregnancy = function(slave) { if (slave.bellyPreg > 1500) { diff --git a/src/js/sexActsJS.js b/src/js/sexActsJS.js index 19d28e8a3a03c84a18f2399d816ae3ef90055870..d2f3bc093ceb79ba0ced6d707df837e4c486f860 100644 --- a/src/js/sexActsJS.js +++ b/src/js/sexActsJS.js @@ -482,7 +482,7 @@ globalThis.actX = function(slave, act, count = 1) { * Sex is between two. This is a handy wrapper for actX that emphasizes that. * @param {App.Entity.SlaveState} slave1 always a slave * @param {string} act1 oral, anal, etc - * @param {FC.HumanState | "public"} slave2 slave or PC or "public" + * @param {FC.HumanState | "public" | "slaves"} slave2 slave or PC or "public" * @param {string} act2 oral, anal, etc * @param {number} count */ diff --git a/src/js/statsChecker/eyeChecker.js b/src/js/statsChecker/eyeChecker.js index afd7bfa80946ea64770e8b30e19f381c739cbcba..7014da62b7795bf87b7c6b899a76f2d49f28e18c 100644 --- a/src/js/statsChecker/eyeChecker.js +++ b/src/js/statsChecker/eyeChecker.js @@ -266,7 +266,7 @@ globalThis.getGeneticEyeColor = function(playerOrSlave, side) { if (side !== "left" && side !== "right") { return "ERROR:" + side; } if (playerOrSlave.geneticQuirks.albinism === 2) { - const slave = (/** @type App.Entity.SlaveState */(playerOrSlave)); + const slave = (/** @type {App.Entity.SlaveState} */(playerOrSlave)); return slave.albinismOverride && slave.albinismOverride.eyeColor; } else { if (side === "left" && typeof playerOrSlave.geneticQuirks.heterochromia === "string") { diff --git a/src/js/storyJS.js b/src/js/storyJS.js index 308b7503bd984cac47cf333603551691dc2a4788..fa0f4c1fe063e65bf9f88a8ec3ef1557bcb1966b 100644 --- a/src/js/storyJS.js +++ b/src/js/storyJS.js @@ -141,7 +141,7 @@ globalThis.canFemImpreg = function(slave1, slave2) { }; /** - * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState| App.Entity.PlayerState} slave * @returns {number} */ globalThis.milkAmount = function(slave) { diff --git a/src/js/wombJS.js b/src/js/wombJS.js index 1b60a26dc0d2fde2412cfe00c2ba2ed792f9aafc..8265298e9ea6a979ffecf2d0c29461ddb7ab7792 100644 --- a/src/js/wombJS.js +++ b/src/js/wombJS.js @@ -597,7 +597,7 @@ globalThis.WombNormalizePreg = function(actor) { if (max < actor.preg) { WombProgress(actor, actor.preg - max, actor.preg - max); - // console.log("progressin womb"); + // console.log("progress in womb"); } else if (max > actor.preg) { actor.preg = max; // console.log("advancing .preg"); @@ -941,4 +941,4 @@ globalThis.WombGetFetalSizeSum = function(actor) { actor.womb.forEach((ft) => sum += ft.volume); return sum; -}; \ No newline at end of file +}; diff --git a/src/npc/descriptions/belly/belly.js b/src/npc/descriptions/belly/belly.js index 4d0e4ec15f962df6c91f124f1db339c351194dec..662f911cc776cbb52c7e17b58aa1da981bdb3b65 100644 --- a/src/npc/descriptions/belly/belly.js +++ b/src/npc/descriptions/belly/belly.js @@ -7485,7 +7485,7 @@ App.Desc.belly = function(slave, {market, eventDescription} = {}) { } else if (slave.bellyImplant > 0) { r.push(`${slave.slaveName}'s armor is specially tailored to fit such an absurdly gravid ${girl}. It just barely shows a hint of ${his} titanic implant-filled belly underneath the ultra-heavy armor.`); } else { - r.push(`${slave.slaveName}'s armor is specially tailored to fit such an absurdly gravid ${girl}. It just barely shows a hint of ${his} titanic pregnant belly${him} underneath the ultra-heavy armor.`); + r.push(`${slave.slaveName}'s armor is specially tailored to fit such an absurdly gravid ${girl}. It just barely shows a hint of ${his} titanic pregnant belly ${him} underneath the ultra-heavy armor.`); } } else if (slave.belly >= 450000) { if (isBellyFluidLargest) { @@ -12261,7 +12261,7 @@ App.Desc.belly = function(slave, {market, eventDescription} = {}) { } else if (slave.bellyImplant > 0) { r.push(`${slave.slaveName}'s bodysuit tightly clings to ${his} hugely gravid stomach. It clearly displays ${his} giant implant-filled belly through the skintight material.`); } else { - r.push(`${slave.slaveName}'s bodysuit tightly clings to ${his} hugely gravid stomach. It clearly displays${his} giant pregnant belly through the skintight material.`); + r.push(`${slave.slaveName}'s bodysuit tightly clings to ${his} hugely gravid stomach. It clearly displays ${his} giant pregnant belly through the skintight material.`); } } else if (slave.belly >= 30000) { if (isBellyFluidLargest) { @@ -12311,13 +12311,13 @@ App.Desc.belly = function(slave, {market, eventDescription} = {}) { r.push(`${slave.slaveName}'s bodysuit clearly displays ${his} fat belly, clearly showing every fold and roll through the skintight material.`); } else if (slave.belly >= 1500 || slave.bellyAccessory === "a small empathy belly") { if (slave.bellyAccessory === "a small empathy belly") { - r.push(`${slave.slaveName}'s bodysuit clearly displays${his} small pregnant belly through the skintight material.`); + r.push(`${slave.slaveName}'s bodysuit clearly displays ${his} small pregnant belly through the skintight material.`); } else if (isBellyFluidLargest) { - r.push(`${slave.slaveName}'s bodysuit clearly displays${his} ${slave.inflationType}-swollen belly.`); + r.push(`${slave.slaveName}'s bodysuit clearly displays ${his} ${slave.inflationType}-swollen belly.`); } else if (slave.bellyImplant > 0) { - r.push(`${slave.slaveName}'s bodysuit clearly displays${his} implant-rounded belly through the skintight material.`); + r.push(`${slave.slaveName}'s bodysuit clearly displays ${his} implant-rounded belly through the skintight material.`); } else { - r.push(`${slave.slaveName}'s bodysuit clearly displays${his} growing belly through the skintight material.`); + r.push(`${slave.slaveName}'s bodysuit clearly displays ${his} growing belly through the skintight material.`); } } else if (slave.weight > 30) { r.push(`${slave.slaveName}'s bodysuit clearly displays ${his} chubby belly underneath the skintight material.`); diff --git a/src/npc/generate/newSlaveIntro.js b/src/npc/generate/newSlaveIntro.js index 96b362af692208f39c9e5ae11ac5c19a208613c2..693c3ae82f69d19d12c7d0ee487ea8abbbf3c3b1 100644 --- a/src/npc/generate/newSlaveIntro.js +++ b/src/npc/generate/newSlaveIntro.js @@ -239,12 +239,12 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest = slave.origRace = slave.race; } if (slave.race !== slave.origRace) { - r.push(`A blood test reveals that ${he} was originally ${slave.origRace}, not slave.race ${(V.PC.skill.medicine >= 50 || V.PC.skill.slaving >= 50) ? `, just as you suspected` : ``}.`); + r.push(`A blood test reveals that ${he} was originally ${slave.origRace}, not ${slave.race} ${(V.PC.skill.medicine >= 50 || V.PC.skill.slaving >= 50) ? `, just as you suspected` : ``}.`); } } if (slave.skin !== slave.origSkin) { if (slave.skin !== "sun tanned" && slave.skin !== "spray tanned") { - r.push(`An epidermis scan reveals that ${his} skin was originally ${slave.origSkin}, not slave.skin${(V.PC.skill.medicine >= 75 || V.PC.skill.slaving >= 75) ? `, just as you suspected` : ``}.`); + r.push(`An epidermis scan reveals that ${his} skin was originally ${slave.origSkin}, not ${slave.skin}${(V.PC.skill.medicine >= 75 || V.PC.skill.slaving >= 75) ? `, just as you suspected` : ``}.`); } } @@ -1967,10 +1967,10 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest = } r.push(`but eventually ${he} feels the radiated heat on ${his} skin and manages to get one inarticulate, wordless noise of terror out before the dreadful sizzling noise and the sweet smell of burning flesh. If ${he} didn't know ${he} was a slave before, <span class="mediumorchid">${he} does now,</span> and ${he}'s got the <span class="gold">agonizing</span> <span class="red">injury</span> to prove it.`); if (V.arcologies[0].FSSubjugationistRace === slave.race && V.arcologies[0].FSSubjugationist > 0) { - r.push(`Society <span class="green">approves</span> of your purchase and branding of an inferior ${slave.race} person; this advances the idea that slave.race people ought to be enslaved.`); + r.push(`Society <span class="green">approves</span> of your purchase and branding of an inferior ${slave.race} person; this advances the idea that ${slave.race} people ought to be enslaved.`); FutureSocieties.Change("Subjugationist", 2); } else if ((V.arcologies[0].FSSupremacistRace === slave.race) && (V.arcologies[0].FSSupremacist > 0)) { - r.push(`Society <span class="red">disapproves</span> of your purchase and branding of ${addA(slave.race)} person; this reduces support for the idea that slave.race people are superior.`); + r.push(`Society <span class="red">disapproves</span> of your purchase and branding of ${addA(slave.race)} person; this reduces support for the idea that ${slave.race} people are superior.`); FutureSocieties.Change("Supremacist", -2); } applyBrand(); @@ -2062,10 +2062,10 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest = } r.push(`If ${he} didn't know ${he} was a slave before, <span class="mediumorchid">${he} does now,</span> and ${he}'s got the <span class="gold">agonizing</span> <span class="red">injury</span> to prove it. What ${he} doesn't yet know is just how permanent this lashing's effects will be. The level of violence and the coating you used will leave ${him} scarred with the marks of slavery forever.`); if (V.arcologies[0].FSSubjugationistRace === slave.race && V.arcologies[0].FSSubjugationist > 0) { - r.push(`Society <span class="green">approves</span> of your purchase and whipping of an inferior ${slave.race} person; this advances the idea that slave.race people ought to be enslaved.`); + r.push(`Society <span class="green">approves</span> of your purchase and whipping of an inferior ${slave.race} person; this advances the idea that ${slave.race} people ought to be enslaved.`); FutureSocieties.Change("Subjugationist", 2); } else if ((V.arcologies[0].FSSupremacistRace === slave.race) && (V.arcologies[0].FSSupremacist > 0)) { - r.push(`Society <span class="red">disapproves</span> of your purchase and whipping of ${addA(slave.race)} person; this reduces support for the idea that slave.race people are superior.`); + r.push(`Society <span class="red">disapproves</span> of your purchase and whipping of ${addA(slave.race)} person; this reduces support for the idea that ${slave.race} people are superior.`); FutureSocieties.Change("Supremacist", -2); } slave.devotion -= 5; @@ -2081,10 +2081,10 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest = const r = []; r.push(`You drag ${him} to the body modification studio and strap ${him} down with ${his} ${scarTarget} clear and defenseless. ${He} doesn't understand what's coming for a while, even as disinfectant is applied to ${his} ${scarTarget}. You have a wide selection of tools to create scars, the trick is to keep the wound from healing correctly afterwards. Of course, ${he} has no way of knowing that the pain you are inflicting as you cut into ${his} flesh will leave such a permanent mark, but the basic message is clear: if ${he} didn't know ${he} was a slave before, <span class="mediumorchid">${he} does now,</span> and ${he}'s got the <span class="gold">agonizing</span> <span class="red">injury</span> to prove it.`); if (V.arcologies[0].FSSubjugationistRace === slave.race && V.arcologies[0].FSSubjugationist > 0) { - r.push(`Society <span class="green">approves</span> of your purchase and scarring of an inferior ${slave.race} person; this advances the idea that slave.race people ought to be enslaved.`); + r.push(`Society <span class="green">approves</span> of your purchase and scarring of an inferior ${slave.race} person; this advances the idea that ${slave.race} people ought to be enslaved.`); FutureSocieties.Change("Subjugationist", 2); } else if ((V.arcologies[0].FSSupremacistRace === slave.race) && (V.arcologies[0].FSSupremacist > 0)) { - r.push(`Society <span class="red">disapproves</span> of your purchase and scarring of ${addA(slave.race)} person; this reduces support for the idea that slave.race people are superior.`); + r.push(`Society <span class="red">disapproves</span> of your purchase and scarring of ${addA(slave.race)} person; this reduces support for the idea that ${slave.race} people are superior.`); FutureSocieties.Change("Supremacist", -2); } App.Medicine.Modification.addScar(slave, scarTarget, V.scarDesign.primary); diff --git a/src/personalAssistant/assistantAppearance.js b/src/personalAssistant/assistantAppearance.js index d576991376b0f02d786d5684116151de8bd55466..b12bb8d2af1bad9022b061fb78e2fb42cc5b64ef 100644 --- a/src/personalAssistant/assistantAppearance.js +++ b/src/personalAssistant/assistantAppearance.js @@ -27,9 +27,9 @@ globalThis.PersonalAssistantAppearance = function() { r.push(`${V.arcologies[0].FSSubjugationistRace}`); } r.push(`monster ${girlA} with`); - if (V.arcologies[0].FSSupremacist !== "unset" && V.assistant.fsAppearance !== "subjugationist") { + if (V.arcologies[0].FSSupremacist !== "unset" && typeof V.arcologies[0].FSSupremacistRace === "string" && V.assistant.fsAppearance !== "subjugationist") { r.push(randomRaceSkin(V.arcologies[0].FSSupremacistRace)); - } else if (V.assistant.fsAppearance === "subjugationist") { + } else if (V.assistant.fsAppearance === "subjugationist" && typeof V.arcologies[0].FSSubjugationistRace === "string") { r.push(randomRaceSkin(V.arcologies[0].FSSubjugationistRace)); } else { r.push(`pale`); @@ -73,9 +73,9 @@ globalThis.PersonalAssistantAppearance = function() { r.push(`${V.arcologies[0].FSSubjugationistRace}`); } r.push(`bimbo shemale with bleached blonde hair,`); - if (V.arcologies[0].FSSupremacist !== "unset" && V.assistant.fsAppearance !== "subjugationist") { + if (V.arcologies[0].FSSupremacist !== "unset" && typeof V.arcologies[0].FSSupremacistRace === "string" && V.assistant.fsAppearance !== "subjugationist") { r.push(randomRaceSkin(V.arcologies[0].FSSupremacistRace)); - } else if (V.assistant.fsAppearance === "subjugationist") { + } else if (V.assistant.fsAppearance === "subjugationist" && typeof V.arcologies[0].FSSubjugationistRace === "string") { r.push(randomRaceSkin(V.arcologies[0].FSSubjugationistRace)); } else { r.push(`tanned`); @@ -764,7 +764,7 @@ globalThis.PersonalAssistantAppearance = function() { case "roman revivalist": r.push(`${HeA} has ${hisA} toga undone and is absentmindedly jerking off. When ${heA} notices you watching, ${HeA} waves ${hisA} throbbing erection at you, imploring you to finish ${himA} off.`); break; - case "Neo-Imperialist": + case "neo imperialist": r.push(`${HeA}'s stripped off his bodysuit and is absentmindedly jerking off. When ${heA} notices you watching, ${heA} waves ${hisA} throbbing erection at you, imploring you to finish ${himA} off.`); break; case "egyptian revivalist": @@ -994,7 +994,7 @@ globalThis.PersonalAssistantAppearance = function() { supremacist: ``, subjugationist: ``, "roman revivalist": ``, - "Neo-Imperialist": ``, + "neo imperialist": ``, "aztec revivalist": ``, "egyptian revivalist": ``, "edo revivalist": ``, @@ -1025,7 +1025,7 @@ globalThis.PersonalAssistantAppearance = function() { supremacist: `${HisA} distinct ${V.arcologies[0].FSSupremacistRace} features are only enhanced by ${hisA} monstrous appearance, and ${heA} has taken to jump-scaring slaves of lesser races when ${heA} isn't too busy with other tasks.`, subjugationist: `${HisA} distinct ${V.arcologies[0].FSSubjugationistRace} features are further exaggerated by ${hisA} monstrous appearance.`, "roman revivalist": `${HeA}'s wearing a conservative stola, which combined with ${hisA} monstrous appearance makes ${himA} look like a Greek demigoddess.`, - "Neo-Imperialist": `${HeA}'s wearing a set of high-tech battle armor, which combined with ${hisA} monstrous appearance makes ${himA} look like some kind of demonic Pagan emperor.`, + "neo imperialist": `${HeA}'s wearing a set of high-tech battle armor, which combined with ${hisA} monstrous appearance makes ${himA} look like some kind of demonic Pagan emperor.`, "aztec revivalist": `${HeA}'s wearing a traditional huipil, a long cape and a headdress, which amplify ${hisA} monstrous visage.`, "egyptian revivalist": `${HeA}'s wearing golden jewelry and a Pharaoh's beard, which combined with ${hisA} animal characteristics makes ${himA} look like an Egyptian deity.`, "edo revivalist": `${HeA}'s given ${hisA} appearance a Japanese style, making ${himA} look like a demon.`, @@ -1056,7 +1056,7 @@ globalThis.PersonalAssistantAppearance = function() { supremacist: `${HeA} remains nude in order to properly display the glory of a superior ${V.arcologies[0].FSSupremacistRace} cock.`, subjugationist: `Like most ${V.arcologies[0].FSSubjugationistRace} subhumans ${heA} has no self-control, and is constantly playing with ${hisA} erect cock and whimpering in needy arousal.`, "roman revivalist": `${HeA}'s taken to reclining on a traditional Roman couch and drinking wine out of a shallow dish.`, - "Neo-Imperialist": `${HeA}'s wearing an extremely tight-fitting bodysuit that emphasizes the bulge of ${hisA} heavy balls and the swell of ${hisA} asscheeks against the skintight nanoweave.`, + "neo imperialist": `${HeA}'s wearing an extremely tight-fitting bodysuit that emphasizes the bulge of ${hisA} heavy balls and the swell of ${hisA} asscheeks against the skintight nanoweave.`, "aztec revivalist": `${HeA}'s wearing a headdress and a loincloth, which can't hide ${hisA} enviable package.`, "egyptian revivalist": `${HeA}'s wearing an Egyptian melting perfume cake on ${hisA} head.`, "edo revivalist": `${HeA}'s wearing a brief Japanese bathhouse robe.`, @@ -1087,7 +1087,7 @@ globalThis.PersonalAssistantAppearance = function() { supremacist: `wearing armor that blends elements from elite warriors of several historically ${V.arcologies[0].FSSupremacistRace} cultures, evoking the glory of ages past.`, subjugationist: `with wild unkempt hair, dressed in ragged animal skins and crude bone jewelry.`, "roman revivalist": `wearing the armor of a Roman auxilia, complete with lorica hamata and oval shield painted with your arcology's symbols.`, - "Neo-Imperialist": `wearing a full set of advanced, powered battle armor, painted in your colors and with the crest of your family displayed prominently over a massive holographic tower shield.`, + "neo imperialist": `wearing a full set of advanced, powered battle armor, painted in your colors and with the crest of your family displayed prominently over a massive holographic tower shield.`, "aztec revivalist": `wearing the battledress of the greatest warriors,${HeA} stands incredibly imposing, holding a spear and shield.`, "egyptian revivalist": `wearing a simple white linen dress, kohl eye shadow, and sandals, making ${himA} look like a barbarian immigrant to the land of the Nile.`, "edo revivalist": `wearing a Japanese warrior's robe with a pair of swords tucked into its sash.`, @@ -1118,7 +1118,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `wearing a perfectly-tailored suit. ${HeA} has two different tones ${heA} uses when speaking: a respectful one for talking with ${hisA} ${V.arcologies[0].FSSupremacistRace} equals, and a strict domineering one for interacting with the lesser races.`, "subjugationist": `wearing a nice, slightly-used suit. ${HeA} speaks with a stereotypical ${V.arcologies[0].FSSubjugationistRace} voice, but is otherwise the model of a perfect subservient secretary.`, "roman revivalist": `wearing a fine stola appropriate for a respectable Roman lady, with ${hisA} hair up in a complicated style.`, - "Neo-Imperialist": `wearing an elegant black suit tailored perfectly for ${hisA} holographic body, one that you recognize as being the latest in old-world fashion.`, + "neo imperialist": `wearing an elegant black suit tailored perfectly for ${hisA} holographic body, one that you recognize as being the latest in old-world fashion.`, "aztec revivalist": `wearing a modest huipil,${hisA} hair braided to two ponytails, ${HeA}'s the picture of quiet elegance.`, "egyptian revivalist": `wearing a simple white linen dress, kohl eye shadow, sandals, and a serene expression.`, "edo revivalist": `wearing a fine kimono, getae, tabi, and an expression of perfect serenity.`, @@ -1150,7 +1150,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `with swollen breasts and a big pregnant belly. ${HeA} wears a golden tiara on ${hisA} head, and ${hisA} otherwise nude form is a shining example of the ${V.arcologies[0].FSSupremacistRace} race's divine beauty.`, "subjugationist": `with swollen hips and breasts and a huge pregnant belly. ${HeA}'s nude aside from a crown of wilted flowers and the iron shackles on ${hisA} wrists and ankles.`, "roman revivalist": `with swollen hips and a big pregnant belly. ${HeA}'s clothed in a loose stola, with dozens of flowers woven into ${hisA} curly auburn hair.`, - "Neo-Imperialist": `with a heaving, pregnant belly. The crest of your family is emblazoned over ${hisA} womb, as if the unborn child is already your property.`, + "neo imperialist": `with a heaving, pregnant belly. The crest of your family is emblazoned over ${hisA} womb, as if the unborn child is already your property.`, "aztec revivalist": `glowing like a sun goddess,${hisA} full belly commands awe and respect in all who see ${himA}.`, "egyptian revivalist": `wielding an ankh-headed staff. ${HeA}'s wearing a gilded headdress and linen skirt, but leaves ${hisA} breasts and pregnant stomach bare to gleam like bronze.`, "edo revivalist": `${HisA} swollen hips and pregnant belly loosely wrapped in a red tomesode. ${HisA} waterfall of black hair is held by a comb shaped like big pointed fox ears.`, @@ -1183,7 +1183,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `${HeA} is nude except for a golden tiara on ${hisA} head, a symbol of the ${V.arcologies[0].FSSupremacistRace} race's divine right to rule. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy ${V.arcologies[0].FSSupremacistRace} baby.`, "subjugationist": `${HeA} is shackled onto a large bed, the iron chains forcing ${hisA} legs apart and putting ${hisA} gaping pussy on display. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy ${V.arcologies[0].FSSubjugationistRace} slave baby.`, "roman revivalist": `${HeA}'s taken to reclining on a traditional Roman couch and drinking wine out of a shallow dish. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy baby.`, - "Neo-Imperialist": `${HeA}'s made ${himselfA} up like a glowing goddess, a golden halo surrounding ${hisA} head at all times. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy baby.`, + "neo imperialist": `${HeA}'s made ${himselfA} up like a glowing goddess, a golden halo surrounding ${hisA} head at all times. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy baby.`, "aztec revivalist": `${HeA} glows like a sun goddess, ${hisA} life-giving belly commands awe and respect in all who see ${himA}. Every sacrifice before ${himA} coincides with another life entering the world.`, "egyptian revivalist": `${HeA}'s wearing an Egyptian melting perfume cake on ${hisA} head. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy baby.`, "edo revivalist": `${HeA}'s wearing a brief Japanese bathhouse robe. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy baby.`, @@ -1222,7 +1222,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `wearing a plaid skirt and a white shirt. ${HeA} is constantly taking notes and studying the latest textbooks, satisfying the ${V.arcologies[0].FSSupremacistRace} race's thirst for knowledge.`, "subjugationist": `wearing a plaid skirt and a white shirt. ${HeA} speaks with a stereotypical ${V.arcologies[0].FSSubjugationistRace} accent, giving the impression of a foreign exchange student with much to learn.`, "roman revivalist": `wearing a ${girlA}'s stola, with ${hisA} hair pulled up into a proper upper-class Roman coiffure. ${HeA} usually carries a wax tablet and a stylus.`, - "Neo-Imperialist": `wearing a prim and proper school uniform, with your family crest on ${hisA} breast pocket. ${HisA} short plaid skirt occasionally flips up to flash a hint of ${hisA} holographic panties.`, + "neo imperialist": `wearing a prim and proper school uniform, with your family crest on ${hisA} breast pocket. ${HisA} short plaid skirt occasionally flips up to flash a hint of ${hisA} holographic panties.`, "aztec revivalist": `wearing only an overshirt,${hisA} cute little legs are complimented by ${hisA} twin tails.`, "egyptian revivalist": `wearing a simple white linen skirt, kohl eye shadow, sandals, and no top at all, baring ${hisA} perky young breasts.`, "edo revivalist": `wearing a simple robe appropriate for a proper, traditional Japanese lady.`, @@ -1252,7 +1252,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `${girlA} wearing shorts and a pink t-shirt with the words '${properMaster()}'s little ${V.arcologies[0].FSSupremacistRace} princess' on the front.`, "subjugationist": `slave ${girlA} wearing nothing but a leather collar and trying ${hisA} best to do master proud.`, "roman revivalist": `${girlA} wearing a ${girlA}'s stola.`, - "Neo-Imperialist": `${girlA} wearing a tiny elementary schooler's uniform, complete with miniature plaid skirt.`, + "neo imperialist": `${girlA} wearing a tiny elementary schooler's uniform, complete with miniature plaid skirt.`, "aztec revivalist": `${girlA} wearing only an overshirt; ${hisA} cute little legs are complimented by ${hisA} twin tails.`, "egyptian revivalist": `${girlA} wearing a simple white linen dress, kohl eye shadow and sandals.`, "edo revivalist": `${girlA} wearing a kimono far too large for ${himselfA}.`, @@ -1283,7 +1283,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `belly wearing a cute yellow dress. ${HeA} cradles ${hisA} swollen belly protectively, glowing with pride at carrying a ${V.arcologies[0].FSSupremacistRace} child.`, "subjugationist": `belly, wearing nothing but a pregnancy biometrics collar. The collar's display reads 'Carrying 2 more ${V.arcologies[0].FSSubjugationistRace} subhumans!', something the ${girlA} occasionally reads aloud to ${himselfA}.`, "roman revivalist": `belly wearing a ${girlA}'s stola.`, - "Neo-Imperialist": `${girlA} wearing a tiny elementary schooler's uniform, complete with miniature plaid skirt. ${HisA} belly swells underneath the cotton shirt.`, + "neo imperialist": `${girlA} wearing a tiny elementary schooler's uniform, complete with miniature plaid skirt. ${HisA} belly swells underneath the cotton shirt.`, "aztec revivalist": `belly wearing only an overshirt which struggles to cover ${hisA} rounded middle; ${hisA} cute little legs are complimented by ${hisA} twin tails.`, "egyptian revivalist": `belly wearing a bulging white linen dress, kohl eye shadow and sandals.`, "edo revivalist": `belly wearing a kimono far too large for ${himselfA} but does nothing to distract from ${hisA} swollen midriff.`, @@ -1316,7 +1316,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `fairy with distinctly ${V.arcologies[0].FSSupremacistRace} features. ${HeA} has wrapped a golden ribbon around ${hisA} torso to fashion ${himselfA} a dress.`, "subjugationist": `fairy with exaggerated ${V.arcologies[0].FSSubjugationistRace} features. ${HeA} is completely unclothed, with ${hisA} hair in a mess and covered in dirt.`, "roman revivalist": `fairy wearing a small handkerchief wrapped around ${himA} like a toga, with one tiny breast sticking out. A wreath made of twisted clovers sits on ${hisA} head.`, - "Neo-Imperialist": `fairy, ${hisA} tiny body encased in a tight-fitting, high-tech bodysuit.`, + "neo imperialist": `fairy, ${hisA} tiny body encased in a tight-fitting, high-tech bodysuit.`, "aztec revivalist": `fairy, yellow paint creating tribal patterns across ${hisA} naked form.`, "egyptian revivalist": `fairy wearing a simple white linen dress and has eye shadow poorly applied around ${hisA} eyes.`, "edo revivalist": `fairy wearing a fine kimono and holding a little fan. ${HeA} looks like a little Hina doll.`, @@ -1347,7 +1347,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `and distinctly ${V.arcologies[0].FSSupremacistRace} features. ${HeA} has wrapped a golden ribbon around ${hisA} chest to create an improvised bra, and another under ${hisA} swollen belly to fashion a thong.`, "subjugationist": `and exaggerated ${V.arcologies[0].FSSubjugationistRace} features. ${HeA} is completely unclothed, with ${hisA} hair in a mess and covered in dirt.`, "roman revivalist": `wearing a small handkerchief wrapped around ${himA} like a toga, with one tiny milky breast sticking out. A wreath made of twisted clovers sits on ${hisA} head.`, - "Neo-Imperialist": `fairy, ${hisA} tiny body encased in a tight-fitting, high-tech bodysuit. ${HisA} belly swells underneath the skintight material.`, + "neo imperialist": `fairy, ${hisA} tiny body encased in a tight-fitting, high-tech bodysuit. ${HisA} belly swells underneath the skintight material.`, "aztec revivalist": `yellow paint creating tribal patterns across ${hisA} naked form and curving around ${hisA} swollen belly.`, "egyptian revivalist": `wearing a simple white linen dress and has eye shadow poorly applied around ${hisA} eyes.`, "edo revivalist": `wearing a fine kimono and holding a little fan. ${HeA} looks like a little Hina doll.`, @@ -1376,7 +1376,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `slime. ${HeA} keeps trying to shape ${hisA} goo into a beautiful ${V.arcologies[0].FSSupremacistRace} ${girlA}, but ${heA} hasn't quite perfected the finer details yet.`, "subjugationist": `slime. ${HeA} keeps trying to shape ${hisA} goo into a pretty face, but keeps ending up with over-exaggerated ${V.arcologies[0].FSSubjugationistRace} features instead.`, "roman revivalist": `slime with a ${girlA}'s stola sinking into ${hisA} head.`, - "Neo-Imperialist": `slime wearing a high-class suit that fits loosely around ${hisA} gelatinous features, occasionally slipping inside the slime.`, + "neo imperialist": `slime wearing a high-class suit that fits loosely around ${hisA} gelatinous features, occasionally slipping inside the slime.`, "egyptian revivalist": `slime and quite perturbed about the amount of sand caught in ${himA}.`, "edo revivalist": `slime with a silken kimono floating inside ${himA}.`, "arabian revivalist": `slime with a headscarf and a pair of sunglasses floating inside ${himA}.`, @@ -1408,7 +1408,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `${HeA} cycles between different outfits that reflect the various holy garments of religions popular in ${V.arcologies[0].FSSupremacistRace} countries.`, "subjugationist": `${HeA} is wearing a simple white linen dress, and ${hisA} right ankle is shackled to an iron ball and chain that prevents ${himA} from flying very high.`, "roman revivalist": `${HeA} is wearing a fine stola appropriate for a respectable Roman lady, with ${hisA} hair up in a complicated style.`, - "Neo-Imperialist": `${HeA} is wearing a skintight bodysuit that gives ${himA} the appearance of some kind of techno-angel, cybernetics and angelic beauty meshing seamlessly together.`, + "neo imperialist": `${HeA} is wearing a skintight bodysuit that gives ${himA} the appearance of some kind of techno-angel, cybernetics and angelic beauty meshing seamlessly together.`, "aztec revivalist": `${HeA} is wearing a modest huipil with ${hisA} hair braided to two ponytails; ${HeA}'s the picture of quiet elegance.`, "egyptian revivalist": `${HeA} is wearing a simple white linen dress, kohl eye shadow, sandals, and a serene expression.`, "edo revivalist": `${HeA} is wearing a fine kimono with slits for ${hisA} wings, getae, tabi, and an expression of perfect serenity.`, @@ -1448,7 +1448,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `${HeA} is wearing a cute little dressed stitched with designs from ${V.arcologies[0].FSSupremacistRace} culture. Occasionally you get a glance up it; a white pair of panties with similar designs say hello.`, "subjugationist": `${HeA} is shackled to an iron ball and chain that's almost as big as ${heA} is, and ${heA} has to slowly and comically drag it behind ${himA} to get anywhere. Occasionally ${heA} tumbles over in ${hisA} struggles, flipping ${hisA} white linen dress up and treating you to a good look at ${hisA} panties.`, "roman revivalist": `${HeA} is wearing a cute little tunic. Occasionally you get a glance up it; a cute little pussy says hello.`, - "Neo-Imperialist": `${HeA} is wearing a tiny executive skirt that mixes cute and professional. ${HeA}'s obviously not wearing any panties underneath.`, + "neo imperialist": `${HeA} is wearing a tiny executive skirt that mixes cute and professional. ${HeA}'s obviously not wearing any panties underneath.`, "aztec revivalist": `${HeA} is wearing a huipil with ${hisA} hair braided to two ponytails. You can clearly see through the sides that ${heA} has chosen to forgo underwear.`, "egyptian revivalist": `${HeA} is wearing a simple white linen dress, kohl eye shadow, and a serene expression. ${HisA} dress hangs low enough to block your view, unfortunately.`, "edo revivalist": `${HeA} is wearing a cute little kimono with slits for ${hisA} wings. Occasionally you get a glance up it; a lovely pair of panties say hello.`, @@ -1488,7 +1488,7 @@ globalThis.PersonalAssistantAppearance = function() { }, "subjugationist": `${HisA} cartoonishly exaggerated ${V.arcologies[0].FSSubjugationistRace} body is just begging for a whipping, even when ${heA} isn't doing something mischievous and sneaky, which is rare.`, "roman revivalist": `${HeA}'d fit in perfectly tormenting the condemned in Tartarus.`, - "Neo-Imperialist": `${HeA}'s bound himself up with high-tech holographic chains, reminiscent of a slave locked in your cellblocks with ${hisA} devilish features.`, + "neo imperialist": `${HeA}'s bound himself up with high-tech holographic chains, reminiscent of a slave locked in your cellblocks with ${hisA} devilish features.`, "aztec revivalist": `${HeA}'s taken to carrying a pair of ceremonial daggers perfect for bloodletting and even an impromptu sacrifice. Two things ${heA} really enjoys performing.`, "egyptian revivalist": `${HeA} has recently adjusted ${hisA} appearance to resemble an Egyptian slave; that combined with a manufactured rebellious streak are sure to earn ${himA} a whipping.`, "edo revivalist": `${HeA} has tightly bound ${himselfA} in shibari ropes, although they don't achieve much given ${heA} can still fly freely.`, @@ -1529,7 +1529,7 @@ globalThis.PersonalAssistantAppearance = function() { }, "subjugationist": `${HeA} still hasn't managed to undo the spell; ${HeA} looks like a racist caricature of a ${V.arcologies[0].FSSubjugationistRace} ${girlA}, and has an appropriately demeaning accent to match. What's worse, the spell also seems to have stripped most of ${hisA} literacy in ${V.language}, making reading ${hisA} tomes an arduous task for ${himA}.`, "roman revivalist": `While ${heA} acts like a typical Roman ${womanA}, ${HeA} is pretty obviously Greek. ${HeA} can't even name the Pantheon correctly.`, - "Neo-Imperialist": `${HeA} looks like someone you would find selling "magical tokens" on the side of your neon-bathed streets, cybernetic trinkets adorning ${hisA} whole body.`, + "neo imperialist": `${HeA} looks like someone you would find selling "magical tokens" on the side of your neon-bathed streets, cybernetic trinkets adorning ${hisA} whole body.`, "aztec revivalist": `${HeA} is still very obviously not a native and has become rather caught up in the fear that ${heA}'ll soon be sacrificed.`, "egyptian revivalist": `${HeA}'s managed to untangle ${himselfA} from the wrappings, though ${heA} has chosen to leave several still wrapped around ${hisA} body.`, "edo revivalist": `${HeA}'s managed to correct the spell, somewhat, though ${heA} now resembles something that belongs in a hentai.`, @@ -1577,7 +1577,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `wearing nothing at all. ${HeA} looks vaguely ${V.arcologies[0].FSSupremacistRace}, but wrong. You swear you see patches of fish-like scales on ${hisA} skin, but they keep disappearing whenever you try to focus on them.`, "subjugationist": `wearing nothing at all. ${HeA} looks vaguely ${V.arcologies[0].FSSubjugationistRace}, but wrong. You swear you see patches of fish-like scales on ${hisA} skin, but they keep disappearing whenever you try to focus on them.`, "roman revivalist": `wearing a poorly folded toga. You swear you see movement under ${hisA} skin.`, - "Neo-Imperialist": `wearing a tight-fitting bodysuit that you swear moves in unsettling ways. Is the bodysuit moving, or the skin underneath?`, + "neo imperialist": `wearing a tight-fitting bodysuit that you swear moves in unsettling ways. Is the bodysuit moving, or the skin underneath?`, "aztec revivalist": `wearing a torn huipil. ${HeA} looks vaguely Aztec, but wrong. You swear you see movement under ${hisA} skin.`, "egyptian revivalist": `wearing nothing at all. ${HeA} looks vaguely Egyptian, but wrong. You swear you see movement under ${hisA} skin.`, "edo revivalist": `wearing a loose kimono. ${HeA} looks vaguely Japanese, but wrong. You swear you see movement under ${hisA} skin.`, @@ -1626,7 +1626,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `${HeA} is an ideal ${V.arcologies[0].FSSupremacistRace} man, and ${hisA} massive dick is always hard and ready to continue propagating the master race.`, "subjugationist": `${HeA} is a deceptively handsome ${V.arcologies[0].FSSubjugationistRace} man, and gives off an air of lust and danger that serves as a warning to not let the inferior race's libido run unchecked.`, "roman revivalist": `${HeA} is an ideal Roman man, complete with something big and heavy hanging under ${hisA} toga.`, - "Neo-Imperialist": `${HeA} looks like an ideal Imperial Knight, wearing tight leather pants and a nanoweave shirt that fail to contain both his rippling pectorals and the outline of a massive cock.`, + "neo imperialist": `${HeA} looks like an ideal Imperial Knight, wearing tight leather pants and a nanoweave shirt that fail to contain both his rippling pectorals and the outline of a massive cock.`, "aztec revivalist": `${HeA} is an ideal Aztec man wearing a headdress and a loincloth, which can't hide ${hisA} enviable package.`, "egyptian revivalist": `${HeA} is an ideal Egyptian man, complete with something big and heavy dangling behind ${hisA} loincloth.`, "edo revivalist": `${HeA} is an ideal Japanese man, complete with something big and heavy between ${hisA} legs.`, @@ -1696,7 +1696,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `In fact,${HeA} is the most gorgeous ${V.arcologies[0].FSSupremacistRace} ${womanA} you've ever seen.`, "subjugationist": `In fact,${HeA} is the most gorgeous ${V.arcologies[0].FSSubjugationistRace} ${womanA} you've ever seen.`, "roman revivalist": `In fact,${HeA} is the most gorgeous Roman ${womanA} you've ever seen.`, - "Neo-Imperialist": `In fact,${HeA} is the most gorgeous Imperial ${womanA} you've ever seen.`, + "neo imperialist": `In fact,${HeA} is the most gorgeous Imperial ${womanA} you've ever seen.`, "aztec revivalist": `In fact,${HeA} is the most gorgeous Aztec ${womanA} you've ever seen.`, "egyptian revivalist": `In fact,${HeA} is the most gorgeous Egyptian ${womanA} you've ever seen.`, "edo revivalist": `In fact,${HeA} is the most gorgeous Japanese ${womanA} you've ever seen.`, diff --git a/src/player/js/PlayerState.js b/src/player/js/PlayerState.js index f5371f36de922420fce09381cb6df29360d7b44d..1cbe58b92443625649cea44c452c4de90faba9eb 100644 --- a/src/player/js/PlayerState.js +++ b/src/player/js/PlayerState.js @@ -1672,7 +1672,7 @@ App.Entity.PlayerState = class PlayerState { polyhydramnios: 0, /** Pleasurable pregnancy and orgasmic birth. Wider hips, looser and wetter vagina. High pregadaptation and low birth damage. */ uterineHypersensitivity: 0, - /** inapropriate lacation*/ + /** inappropriate lactation*/ galactorrhea: 0, /** is abnormally tall. gigantism + dwarfism - is very average*/ gigantism: 0, diff --git a/src/uncategorized/bodyModification.js b/src/uncategorized/bodyModification.js index 08e7c5fed7033bc29ddc9bad1d198a3444ee5d56..1fec8a3a5e371f1596f0eb166d239ab22b120d00 100644 --- a/src/uncategorized/bodyModification.js +++ b/src/uncategorized/bodyModification.js @@ -192,7 +192,7 @@ App.Medicine.Modification.Select.brand = function(slave, cheat = false) { } } else { if (slave.brand[V.brandTarget.local] === V.brandDesign.local) { - p.append(`${He} already has ${V.brandDesign.local} on ${his} V.brandTarget.local.`); + p.append(`${He} already has ${V.brandDesign.local} on ${his} ${V.brandTarget.local}.`); } else { if (!cheat) { p.append( diff --git a/src/uncategorized/economics.tw b/src/uncategorized/economics.tw index e108f2ea75093c15f67462e7f9176fc541884f84..15fe30f21f0d91731cf978edc99f29467672ce77 100644 --- a/src/uncategorized/economics.tw +++ b/src/uncategorized/economics.tw @@ -19,7 +19,7 @@ <<if $useTabs == 0>> <<includeDOM App.EndWeek.neighborsDevelopment()>> - <<includeDOM App.EndWeek.arcmgmt()>> + <<includeDOM App.EndWeek.arcManagement()>> <<if $FSAnnounced > 0>> <br><br> @@ -74,7 +74,7 @@ <div id="Management" class="tab-content"> <div class="content"> - <<includeDOM App.EndWeek.arcmgmt()>> + <<includeDOM App.EndWeek.arcManagement()>> </div> </div>