diff --git a/src/js/utilsPC.js b/src/js/utilsPC.js index 4d1e516a74ca22e7874425dcb7377854d5b33f5d..7c843d0768302cf81d48165e4b35e2c546e921fb 100644 --- a/src/js/utilsPC.js +++ b/src/js/utilsPC.js @@ -1,3 +1,642 @@ +/** + * @returns {App.Entity.PlayerState} + */ +globalThis.basePlayer = function() { + return new App.Entity.PlayerState(); +}; + +/** + * Helper function returning PC's title + * @returns {string} + */ +globalThis.properTitle = function() { + const PC = V.PC; + if (PC.customTitle) { + return PC.customTitle; + } else if (PC.title !== 0) { + return "Sir"; + } else { + return "Ma'am"; + } +}; + +/** + * Helper function returning slave's title for PC in situations where getWrittenTitle() is inappropriate + * @returns {string} + */ +globalThis.properMaster = function() { + const PC = V.PC; + if (PC.customTitle) { + return PC.customTitle; + } else if (PC.title !== 0) { + return "Master"; + } else { + return "Mistress"; + } +}; + +/** + * @returns {string} + */ +globalThis.PlayerName = function() { + const names = V.PC.slaveSurname ? [V.PC.slaveName, V.PC.slaveSurname] : [V.PC.slaveName]; + if ((V.surnameOrder !== 1 && ["Cambodian", "Chinese", "Hungarian", "Japanese", "Korean", "Mongolian", "Taiwanese", "Vietnamese"].includes(V.PC.nationality)) || (V.surnameOrder === 2)) { + names.reverse(); + } + return names.join(" "); +}; + +/** + * @returns {string} + */ +globalThis.PCTitle = function() { + const titles = []; + + let title = PlayerName(); + if (V.cheater === 1) { + titles.push(`${title} the Cheater`); + } else if (V.arcologies[0].FSRestart > 10) { + titles.push(`${title} of the Societal Elite`); + } else if (V.rep > 18000) { + titles.push(`${title} the Great`); + } else if (V.rep > 17000) { + titles.push(`the exalted ${title}`); + } else if (V.rep > 16000) { + titles.push(`the illustrious ${title}`); + } else if (V.rep > 15000) { + titles.push(`the prestigious ${title}`); + } else if (V.rep > 14000) { + titles.push(`the renowned ${title}`); + } else if (V.rep > 13000) { + titles.push(`the famed ${title}`); + } else if (V.rep > 12000) { + titles.push(`the celebrated ${title}`); + } else if (V.rep > 11000) { + titles.push(`the honored ${title}`); + } else if (V.rep > 10000) { + titles.push(`the acclaimed ${title}`); + } else if (V.rep > 9000) { + titles.push(`the eminent ${title}`); + } else if (V.rep > 8250) { + titles.push(`the prominent ${title}`); + } else if (V.rep > 7500) { + titles.push(`the distinguished ${title}`); + } else if (V.rep > 6750) { + titles.push(`the admired ${title}`); + } else if (V.rep > 6000) { + titles.push(`the esteemed ${title}`); + } else if (V.rep > 5250) { + titles.push(`the respected ${title}`); + } else if (V.rep > 4500) { + titles.push(`the known ${title}`); + } else if (V.rep > 3750) { + titles.push(`the recognized ${title}`); + } else if (V.rep > 3000) { + titles.push(`the rumored ${title}`); + } else { + titles.push(title); + } + + if (V.PC.slaveName === "FC Dev") { + titles.push("the Creator"); + } + + if (V.plot === 1) { + if (V.invasionVictory === 3) { + if (V.PC.title === 1) { + titles.push("Hero of the City"); + } else { + titles.push("Heroine of the City"); + } + } else if (V.invasionVictory === 2) { + titles.push("Defender of the City"); + } + if (V.daughtersVictory === 3) { + titles.push("Destroyer of the Daughters"); + } else if (V.daughtersVictory === 2) { + if (V.PC.title === 1) { + titles.push("Victor over the Daughters"); + } else { + titles.push("Victrix over the Daughters"); + } + } + } + + if (V.SF.Toggle && V.SF.FS.Tension > 100) { + switch (V.SF.FS.BadOutcome) { + case 'MIGRATION': + titles.push("The Abandoned"); + break; + case 'Revolt': + titles.push("The Betrayed"); + break; + case 'ANNIHILATION': + titles.push("The Runner"); + break; + case 'OCCUPATION': + titles.push("The Occupied"); + break; + case 'ASSIMILATION': + titles.push("The Deceived"); + break; + case 'ISOLATION': + titles.push("The Ignored"); + break; + } + } + + if (V.mercenaries >= 5) { + if (V.mercenariesTitle === "Evocati") { + titles.push(`Princeps of the ${V.mercenariesTitle}`); + } else if (V.mercenariesTitle === "Knights") { + if (V.PC.title === 1) { + titles.push(`Lord Commander of the ${V.mercenariesTitle}`); + } else { + titles.push(`Lady Commander of the ${V.mercenariesTitle}`); + } + } else if (V.mercenariesTitle === "Immortals") { + titles.push(`Tyrant of the ${V.mercenariesTitle}`); + } else if (V.mercenariesTitle === "Black Eagles") { + titles.push(`Imperial Overlord of the ${V.mercenariesTitle}`); + } else { + titles.push(`Commander of the ${V.mercenariesTitle}`); + } + } else if (V.mercenaries >= 1) { + titles.push("Commander of the Mercenaries"); + } + + if (V.dispensary === 1) { + if (V.PC.title === 1) { + titles.push("Pharmacologos"); + } else { + titles.push("Pharmacologes"); + } + } + + if (V.arcologies[0].FSSupremacist >= V.FSLockinLevel * 0.9) { + titles.push("Grand Champion of the Blood"); + } else if (V.arcologies[0].FSSupremacist >= V.FSLockinLevel * 0.6) { + titles.push("Champion of the Blood"); + } else if (V.arcologies[0].FSSupremacist >= V.FSLockinLevel * 0.3) { + titles.push("Defender of the Blood"); + } + + if (V.arcologies[0].FSSubjugationist >= V.FSLockinLevel * 0.9) { + titles.push("Grand Overseer of the Inferior Race"); + } else if (V.arcologies[0].FSSubjugationist >= V.FSLockinLevel * 0.6) { + titles.push("Overseer of the Inferior Race"); + } else if (V.arcologies[0].FSSubjugationist >= V.FSLockinLevel * 0.3) { + titles.push("Subduer of the Inferior Race"); + } + + if (V.arcologies[0].FSGenderRadicalist >= V.FSLockinLevel * 0.9) { + titles.push("Buttfucker of All Slaves"); + } else if (V.arcologies[0].FSGenderRadicalist >= V.FSLockinLevel * 0.6) { + titles.push("Sodomizer of the Traps"); + } else if (V.arcologies[0].FSGenderRadicalist >= V.FSLockinLevel * 0.3) { + if (V.PC.title === 1) { + titles.push("Penetrator of the Sissies"); + } else { + titles.push("Penetratrix of the Sissies"); + } + } + + if (V.arcologies[0].FSGenderFundamentalist >= V.FSLockinLevel * 0.9) { + if (V.PC.title === 1) { + titles.push("Father to the City"); + } else { + titles.push("Mother to the City"); + } + } else if (V.arcologies[0].FSGenderFundamentalist >= V.FSLockinLevel * 0.6) { + titles.push("Defender of Women"); + } else if (V.arcologies[0].FSGenderFundamentalist >= V.FSLockinLevel * 0.3) { + titles.push("Restorer of Morals"); + } + + if (V.arcologies[0].FSPaternalist >= V.FSLockinLevel * 0.9) { + if (V.PC.title === 1) { + titles.push("Protector to All Slaves"); + } else { + titles.push("Protectrix to All Slaves"); + } + } else if (V.arcologies[0].FSPaternalist >= V.FSLockinLevel * 0.6) { + if (V.PC.title === 1) { + titles.push("Benefactor of Slaves"); + } else { + titles.push("Benefactrix of Slaves"); + } + } else if (V.arcologies[0].FSPaternalist >= V.FSLockinLevel * 0.3) { + titles.push("Pursuer of Justice"); + } + + if (V.arcologies[0].FSRepopulationFocus >= V.FSLockinLevel * 0.9) { + titles.push("the Savior of the Future"); + } else if (V.arcologies[0].FSRepopulationFocus >= V.FSLockinLevel * 0.6) { + titles.push("the Holder of the Future"); + } else if (V.arcologies[0].FSRepopulationFocus >= V.FSLockinLevel * 0.3) { + titles.push("the Repopulist"); + } + + if (V.arcologies[0].FSDegradationist >= V.FSLockinLevel * 0.9) { + titles.push("Holder of the Rod and the Lash"); + } else if (V.arcologies[0].FSDegradationist >= V.FSLockinLevel * 0.6) { + titles.push("Subduer of Slaves"); + } else if (V.arcologies[0].FSDegradationist >= V.FSLockinLevel * 0.3) { + titles.push("Pursuer of Justice"); + } + + if (V.arcologies[0].FSIntellectualDependency >= V.FSLockinLevel * 0.9) { + titles.push("Sovereign of Bimbos"); + } else if (V.arcologies[0].FSIntellectualDependency >= V.FSLockinLevel * 0.6) { + titles.push("Shepherd of the Slow"); + } else if (V.arcologies[0].FSIntellectualDependency >= V.FSLockinLevel * 0.3) { + titles.push("Lover of Bimbos"); + } + + if (V.arcologies[0].FSSlaveProfessionalism >= V.FSLockinLevel * 0.9) { + titles.push("the Mastermind"); + } else if (V.arcologies[0].FSSlaveProfessionalism >= V.FSLockinLevel * 0.6) { + titles.push("the Genius"); + } else if (V.arcologies[0].FSSlaveProfessionalism >= V.FSLockinLevel * 0.3) { + titles.push("the Smart"); + } + + if (V.arcologies[0].FSBodyPurist >= V.FSLockinLevel * 0.9) { + titles.push("the Purifier of the Breasts"); + } else if (V.arcologies[0].FSBodyPurist >= V.FSLockinLevel * 0.6) { + titles.push("the Discerning"); + } else if (V.arcologies[0].FSBodyPurist >= V.FSLockinLevel * 0.3) { + titles.push("the Tasteful"); + } + + if (V.arcologies[0].FSAssetExpansionist >= V.FSLockinLevel * 0.9) { + titles.push("the Expander of the Breasts"); + } else if (V.arcologies[0].FSAssetExpansionist >= V.FSLockinLevel * 0.6) { + titles.push("the Expander"); + } else if (V.arcologies[0].FSAssetExpansionist >= V.FSLockinLevel * 0.3) { + if (V.PC.title === 1) { + titles.push("the Implanter"); + } else { + titles.push("the Implantrix"); + } + } + + if (V.arcologies[0].FSStatuesqueGlorification >= V.FSLockinLevel * 0.9) { + if (V.PC.title === 1) { + titles.push("He Who Stands Above All"); + } else { + titles.push("She Who Stands Above All"); + } + } else if (V.arcologies[0].FSStatuesqueGlorification >= V.FSLockinLevel * 0.6) { + titles.push("Agent of Growth"); + } else if (V.arcologies[0].FSStatuesqueGlorification >= V.FSLockinLevel * 0.3) { + titles.push("height fetishist"); + } + + if (V.arcologies[0].FSPetiteAdmiration >= V.FSLockinLevel * 0.9) { + titles.push("Supporter of the Small"); + } else if (V.arcologies[0].FSPetiteAdmiration >= V.FSLockinLevel * 0.6) { + titles.push("the Size Enthusiast"); + } else if (V.arcologies[0].FSPetiteAdmiration >= V.FSLockinLevel * 0.3) { + titles.push("height fetishist"); + } + + if (V.arcologies[0].FSPastoralist >= V.FSLockinLevel * 0.9) { + if (V.PC.title === 1) { + titles.push("the Master of Stock"); + } else { + titles.push("the Mistress of Stock"); + } + } else if (V.arcologies[0].FSPastoralist >= V.FSLockinLevel * 0.6) { + titles.push("the Rancher"); + } else if (V.arcologies[0].FSPastoralist >= V.FSLockinLevel * 0.3) { + titles.push("the Farmer"); + } + + if (V.arcologies[0].FSPhysicalIdealist >= V.FSLockinLevel * 0.9) { + titles.push("beloved of Brodin"); + } else if (V.arcologies[0].FSPhysicalIdealist >= V.FSLockinLevel * 0.6) { + if (V.PC.title === 1) { + titles.push("he of the godlike Body"); + } else { + titles.push("she of the godlike Body"); + } + } else if (V.arcologies[0].FSPhysicalIdealist >= V.FSLockinLevel * 0.3) { + titles.push("advancer of Gains"); + } + + if (V.arcologies[0].FSHedonisticDecadence >= V.FSLockinLevel * 0.9) { + if (V.PC.title === 1) { + titles.push("Master of Softness"); + } else { + titles.push("Lady of Softness"); + } + } else if (V.arcologies[0].FSHedonisticDecadence >= V.FSLockinLevel * 0.6) { + titles.push("Thickness Enthusiast"); + } else if (V.arcologies[0].FSHedonisticDecadence >= V.FSLockinLevel * 0.3) { + titles.push("the Feeder"); + } + + if (V.arcologies[0].FSMaturityPreferentialist >= V.FSLockinLevel * 0.9) { + titles.push("Grand Preserver of MILFS"); + } else if (V.arcologies[0].FSMaturityPreferentialist >= V.FSLockinLevel * 0.6) { + titles.push("Fucker of MILFS"); + } else if (V.arcologies[0].FSMaturityPreferentialist >= V.FSLockinLevel * 0.3) { + if (V.PC.title === 1) { + titles.push("he of the notorious MILF preference"); + } else { + titles.push("she of the notorious MILF preference"); + } + } + + if (V.arcologies[0].FSYouthPreferentialist >= V.FSLockinLevel * 0.9) { + titles.push("Keeper of the Magnificent Young Harem"); + } else if (V.arcologies[0].FSYouthPreferentialist >= V.FSLockinLevel * 0.6) { + titles.push("Keeper of Virgins"); + } else if (V.arcologies[0].FSYouthPreferentialist >= V.FSLockinLevel * 0.3) { + titles.push("the Virginbreaker"); + } + + if (V.arcologies[0].FSChattelReligionistLaw === 1) { + titles.push("the Prophet"); + } else if (V.arcologies[0].FSChattelReligionist >= V.FSLockinLevel * 0.9) { + titles.push("Keeper of the Blade and Chalice"); + } else if (V.arcologies[0].FSChattelReligionist >= V.FSLockinLevel * 0.6) { + titles.push("Champion of the Faith"); + } else if (V.arcologies[0].FSChattelReligionist >= V.FSLockinLevel * 0.3) { + titles.push("the Holy"); + } + + if (V.arcologies[0].FSRomanRevivalist >= V.FSLockinLevel * 0.9) { + titles.push("First Consul"); + } else if (V.arcologies[0].FSRomanRevivalist >= V.FSLockinLevel * 0.6) { + titles.push("Aedile"); + } else if (V.arcologies[0].FSRomanRevivalist >= V.FSLockinLevel * 0.3) { + titles.push("Quaestor"); + } + + if (V.arcologies[0].FSNeoImperialist >= V.FSLockinLevel * 0.9) { + if (V.PC.title === 1) { + titles.push("Immortal Emperor"); + } else { + titles.push("Immortal Empress"); + } + } else if (V.arcologies[0].FSNeoImperialist >= V.FSLockinLevel * 0.6) { + if (V.PC.title === 1) { + titles.push("His Highness"); + } else { + titles.push("Her Highness"); + } + } else if (V.arcologies[0].FSNeoImperialist >= V.FSLockinLevel * 0.3) { + if (V.PC.title === 1) { + titles.push("Lord and Master"); + } else { + titles.push("Lord and Mistress"); + } + } + + if (V.arcologies[0].FSAztecRevivalist >= V.FSLockinLevel * 0.9) { + titles.push("Tlatcani"); + } else if (V.arcologies[0].FSAztecRevivalist >= V.FSLockinLevel * 0.6) { + titles.push("Cihuacoatl"); + } else if (V.arcologies[0].FSAztecRevivalist >= V.FSLockinLevel * 0.3) { + titles.push("Tlatoani"); + } + + if (V.arcologies[0].FSEgyptianRevivalist >= V.FSLockinLevel * 0.9) { + if (V.PC.title === 1) { + titles.push("the Living God"); + } else { + titles.push("the Living Goddess"); + } + } else if (V.arcologies[0].FSEgyptianRevivalist >= V.FSLockinLevel * 0.6) { + titles.push("Pharaoh"); + } else if (V.arcologies[0].FSEgyptianRevivalist >= V.FSLockinLevel * 0.3) { + if (V.PC.title === 1) { + titles.push("Prince of the Nile"); + } else { + titles.push("Princess of the Nile"); + } + } + + if (V.arcologies[0].FSEdoRevivalist >= V.FSLockinLevel * 0.9) { + if (V.PC.title === 1) { + titles.push("Emperor and Descendant of Amaterasu"); + } else { + titles.push("Amaterasu Reborn"); + } + } else if (V.arcologies[0].FSEdoRevivalist >= V.FSLockinLevel * 0.6) { + titles.push("Shogun"); + } else if (V.arcologies[0].FSEdoRevivalist >= V.FSLockinLevel * 0.3) { + titles.push("Daimyo"); + } + + if (V.arcologies[0].FSArabianRevivalist >= V.FSLockinLevel * 0.9) { + if (V.PC.title === 1) { + titles.push("Caliph"); + } else { + titles.push("Handmaiden of Allah"); + } + } else if (V.arcologies[0].FSArabianRevivalist >= V.FSLockinLevel * 0.6) { + if (V.PC.title === 1) { + titles.push("Sultan"); + } else { + titles.push("Sultana"); + } + } else if (V.arcologies[0].FSArabianRevivalist >= V.FSLockinLevel * 0.3) { + titles.push("Beloved of Allah"); + } + + if (V.arcologies[0].FSChineseRevivalist >= V.FSLockinLevel * 0.9) { + if (V.PC.title === 1) { + titles.push("Emperor and Holder of the Mandate of Heaven"); + } else { + titles.push("Empress and Holder of the Mandate of Heaven"); + } + } else if (V.arcologies[0].FSChineseRevivalist >= V.FSLockinLevel * 0.6) { + if (V.PC.title === 1) { + titles.push("Emperor"); + } else { + titles.push("Empress"); + } + } else if (V.arcologies[0].FSChineseRevivalist >= V.FSLockinLevel * 0.3) { + if (V.PC.title === 1) { + titles.push("Governor of the Province"); + } else { + titles.push("Governess of the Province"); + } + } + + const facilities = App.Entity.facilities; + if (facilities.brothel.employeesIDs().size >= 15) { + if (V.PC.title === 1) { + titles.push("Procurator of the Brothel"); + } else { + titles.push("Procuratrix of the Brothel"); + } + } + + if (facilities.club.employeesIDs().size >= 15) { + titles.push("First on the Club"); + } + if (facilities.dairy.employeesIDs().size >= 15) { + titles.push("Keeper of the Cattle"); + } + if (V.cumSlaves >= 15) { + if (V.PC.title === 1) { + titles.push("Extractor of the Ejaculate"); + } else { + titles.push("Extractrix of the Ejaculate"); + } + } + if (facilities.servantsQuarters.employeesIDs().size >= 15) { + if (V.PC.title === 1) { + titles.push("Director of the Servants"); + } else { + titles.push("Directrix of the Servants"); + } + } + if (facilities.schoolroom.employeesIDs().size >= 10) { + if (V.PC.title === 1) { + titles.push("Educator of the Slaves"); + } else { + titles.push("Educatrix of the Slaves"); + } + } + if (facilities.spa.employeesIDs().size >= 10) { + titles.push("Order of the Bath"); + } + if (facilities.arcade.employeesIDs().size >= 15) { + titles.push("Comptroller of the Arcade"); + } + if (V.nurseryChildren >= 10) { + titles.push("Caretaker of the Youth"); + } + + const schoolsPresent = []; + const schoolsPerfected = []; + for (const [school, obj] of App.Data.misc.schools) { + if (V[school].schoolProsperity >= 10) { + schoolsPerfected.push(obj.title); + } else if (V[school].schoolPresent === 1) { + schoolsPresent.push(obj.title); + } + } + + if (schoolsPerfected.length > 0) { + titles.push(`${V.PC.title === 1 ? 'Benefactor' : 'Benefactrix'} of ${schoolsPerfected.toStringExt()}`); + } + if (schoolsPresent.length > 0) { + titles.push(`Supporter of ${schoolsPresent.toStringExt()}`); + } + + if (V.TFS.schoolProsperity >= 10) { + titles.push("Honorary Sibling of the Futanari Sisters"); + } else if (V.TFS.schoolPresent === 1) { + if (V.PC.title === 1) { + titles.push("Protector of the Futanari Sisters"); + } else { + titles.push("Protectrix of the Futanari Sisters"); + } + } + + if (V.slaves.length > 50) { + if (V.PC.title === 1) { + titles.push("Master of Slaves"); + } else { + titles.push("Mistress of Slaves"); + } + } else if (V.slaves.length > 40) { + titles.push("Holder of Slaves"); + } else if (V.slaves.length > 30) { + titles.push("Keeper of Slaves"); + } else if (V.slaves.length > 20) { + titles.push("Manager of Slaves"); + } else if (V.slaves.length > 10) { + titles.push("owner of slaves"); + } + const corpValue = App.Corporate.value; + if (corpValue > 500000) { + titles.push("Corporate Titan"); + } else if (corpValue > 250000) { + titles.push("corporate innovator"); + } else if (corpValue > 100000) { + titles.push("corporate founder"); + } else if (corpValue > 0) { + if (V.PC.title === 1) { + titles.push("noted corporate businessman"); + } else { + titles.push("noted corporate businesswoman"); + } + } + + if (V.rep > 18000) { + if (V.PC.title === 1) { + titles.push("unquestioned Master of the Arcology"); + } else { + titles.push("unquestioned Mistress of the Arcology"); + } + } else if (V.rep > 15000) { + if (V.PC.title === 1) { + titles.push("Lord of the Arcology"); + } else { + titles.push("Lady of the Arcology"); + } + } else if (V.rep > 12000) { + titles.push("Ruler of the Arcology"); + } else if (V.rep > 9000) { + titles.push("chief officer of the arcology"); + } else { + titles.push("owner of the arcology"); + } + + return title + titles.toStringExt(); +}; + +/** + * @param {string|Array<string>} input + * @param {number} [increase=1] + * @returns {string} + */ +globalThis.IncreasePCSkills = function(input, increase = 1) { + if (Array.isArray(input)) { + return input.reduce((r, inputArray) => r + IncreasePCSkills(inputArray, increase), ''); + } + const player = V.PC; + const oldSkill = player.skill[input]; + player.skill[input] += increase; + let t = ``; + + if (oldSkill < 10 && player.skill[input] >= 10) { + t += `<span class="green"> \nYou have gained basic knowledge in ${input}.</span>`; + } else if (oldSkill < 30 && player.skill[input] >= 30) { + t += `<span class="green"> \nYou have gained some knowledge in ${input}.</span>`; + } else if (oldSkill < 60 && player.skill[input] >= 60) { + t += `<span class="green"> \nYou have become an expert in ${input}.</span>`; + } else if (oldSkill < 100 && player.skill[input] >= 100) { + t += `<span class="green"> \nYou have mastered ${input}.</span>`; + } + return t; +}; + +/** Returns if the player is on mandatory bedrest. + * @param {App.Entity.SlaveState} actor + * @returns {boolean} + */ +globalThis.onBedRest = function(actor) { + // consider player health and injury in the future! + if (!actor) { + return null; + } else if (!canMove(actor)) { + return true; + } else if (actor.preg > actor.pregData.normalBirth / 1.33 && actor.womb.find((ft) => ft.genetics.geneticQuirks.polyhydramnios === 2 && ft.age >= 20)) { + return true; + } else if (actor.bellyPreg >= actor.pregAdaptation * 2200) { + return true; + } + return false; +}; + globalThis.resetPersonalAttention = function() { if (V.PC.career === "escort" || V.PC.career === "prostitute" || V.PC.career === "child prostitute") { V.personalAttention = "whoring"; diff --git a/src/markets/bulkSlave/bulkSlaveIntro.js b/src/markets/bulkSlave/bulkSlaveIntro.js index 9e76f3dc949b383a5cbf99a0ea6d119cb4cb259b..5dec6c81fa9dd3a63718d427e87c1dde7680dd52 100644 --- a/src/markets/bulkSlave/bulkSlaveIntro.js +++ b/src/markets/bulkSlave/bulkSlaveIntro.js @@ -144,14 +144,14 @@ App.Markets.bulkSlaveIntro = function() { /* Adjust _slaveCost according to V.slavesSeen */ if (V.slavesSeen > V.slaveMarketLimit) { - _slaveCost += _slaveCost*((V.slavesSeen-V.slaveMarketLimit)*0.1); + _slaveCost += _slaveCost * ((V.slavesSeen - V.slaveMarketLimit) * 0.1); if (V.market.introType === "inStock") { break; } } /* Apply discount modifier */ - _slaveCost = discount*Math.trunc(_slaveCost/500); + _slaveCost = discount * Math.trunc(_slaveCost / 500); /* Charge the Player for the slave, or break out if cannot afford */ if (V.cash < _slaveCost) { @@ -195,7 +195,7 @@ App.Markets.bulkSlaveIntro = function() { V.market.numArcology = 1; } opinion = App.Neighbor.opinion(V.arcologies[0], V.arcologies[V.market.numArcology]); - opinion = Math.clamp(Math.trunc(opinion/20), -10, 10); + opinion = Math.clamp(Math.trunc(opinion / 20), -10, 10); discount -= (opinion * 25); } else if (App.Data.misc.schools.has(V.market.slaveMarket)) { if (V[V.market.slaveMarket].schoolUpgrade !== 0) { diff --git a/src/npc/databases/cheatmodeDatabase.js b/src/npc/databases/cheatmodeDatabase.js index d7054ea13f9c2b0265ac7834b7f623461ce7061f..f293c2427bb447602e49d3b20df6166798dc9fcc 100644 --- a/src/npc/databases/cheatmodeDatabase.js +++ b/src/npc/databases/cheatmodeDatabase.js @@ -1,421 +1,420 @@ +/** + * @returns {string} + */ App.Intro.cheatModeSlaves = function() { - const el = new DocumentFragment(); - const r = []; const slaveNames = []; - let _slave = BaseSlave(); - let _HS = clone(_slave); - _HS.slaveName = "Miss Anne"; - _HS.birthName = "Lindy Anne"; - _HS.ID = 990000; - _HS.relationship = 4; - _HS.relationshipTarget = 990001; - _HS.rivalry = 1; - _HS.rivalryTarget = 990002; - _HS.assignment = "be your Head Girl"; - _HS.birthWeek = random(0, 51); - _HS.actualAge = 42; - _HS.physicalAge = 42; - _HS.visualAge = 42; - _HS.ovaryAge = 42; - _HS.ageImplant = 1; - setHealth(_HS, 50); - _HS.devotion = 100; - _HS.nationality = "Stateless"; - _HS.height = 175; - _HS.race = "white"; - _HS.eye.origColor = "green"; - _HS.origHColor = "honey blonde"; - _HS.origSkin = "pale"; - _HS.hStyle = "long"; - _HS.waist = -55; - _HS.boobs = 1000; - _HS.boobsImplant = 600; - _HS.boobsImplantType = "normal"; - _HS.areolae = 1; - _HS.butt = 4; - _HS.buttImplant = 2; - _HS.buttImplantType = "normal"; - _HS.face = 55; - _HS.lips = 35; - _HS.anus = 1; - _HS.makeup = 1; - _HS.nails = 1; - _HS.earPiercing = 1; - _HS.skill.oral = 100; - _HS.skill.anal = 100; - _HS.skill.whoring = 100; - _HS.skill.entertainment = 100; - _HS.clothes = "a slave gown"; - _HS.intelligence = 100; - _HS.energy = 65; - _HS.attrXY = 40; - _HS.fetishKnown = 1; - _HS.custom.tattoo = "'Miss Anne' is tattooed in lovely flowing script over $his collarbone."; - _HS.custom.desc = "$He speaks with the rich accent of the Old South."; + let baseSlave = BaseSlave(); + + let cheatSlave = clone(baseSlave); + cheatSlave.slaveName = "Miss Anne"; + cheatSlave.birthName = "Lindy Anne"; + cheatSlave.ID = 990000; + cheatSlave.relationship = 4; + cheatSlave.relationshipTarget = 990001; + cheatSlave.rivalry = 1; + cheatSlave.rivalryTarget = 990002; + cheatSlave.assignment = "be your Head Girl"; + cheatSlave.birthWeek = random(0, 51); + cheatSlave.actualAge = 42; + cheatSlave.physicalAge = 42; + cheatSlave.visualAge = 42; + cheatSlave.ovaryAge = 42; + cheatSlave.ageImplant = 1; + setHealth(cheatSlave, 50); + cheatSlave.devotion = 100; + cheatSlave.nationality = "Stateless"; + cheatSlave.height = 175; + cheatSlave.race = "white"; + cheatSlave.eye.origColor = "green"; + cheatSlave.origHColor = "honey blonde"; + cheatSlave.origSkin = "pale"; + cheatSlave.hStyle = "long"; + cheatSlave.waist = -55; + cheatSlave.boobs = 1000; + cheatSlave.boobsImplant = 600; + cheatSlave.boobsImplantType = "normal"; + cheatSlave.areolae = 1; + cheatSlave.butt = 4; + cheatSlave.buttImplant = 2; + cheatSlave.buttImplantType = "normal"; + cheatSlave.face = 55; + cheatSlave.lips = 35; + cheatSlave.anus = 1; + cheatSlave.makeup = 1; + cheatSlave.nails = 1; + cheatSlave.earPiercing = 1; + cheatSlave.skill.oral = 100; + cheatSlave.skill.anal = 100; + cheatSlave.skill.whoring = 100; + cheatSlave.skill.entertainment = 100; + cheatSlave.clothes = "a slave gown"; + cheatSlave.intelligence = 100; + cheatSlave.energy = 65; + cheatSlave.attrXY = 40; + cheatSlave.fetishKnown = 1; + cheatSlave.custom.tattoo = "'Miss Anne' is tattooed in lovely flowing script over $his collarbone."; + cheatSlave.custom.desc = "$He speaks with the rich accent of the Old South."; if (V.seeDicks !== 100) { - _HS.genes = "XX"; - _HS.vagina = 2; - _HS.ovaries = 1; - _HS.skill.vaginal = 100; - _HS.pubertyXX = 1; + cheatSlave.genes = "XX"; + cheatSlave.vagina = 2; + cheatSlave.ovaries = 1; + cheatSlave.skill.vaginal = 100; + cheatSlave.pubertyXX = 1; } else { - _HS.genes = "XY"; - _HS.vagina = -1; - _HS.dick = 4; - _HS.balls = 4; - _HS.scrotum = 4; - _HS.foreskin = 4; - _HS.prostate = 1; - _HS.pubertyXY = 1; + cheatSlave.genes = "XY"; + cheatSlave.vagina = -1; + cheatSlave.dick = 4; + cheatSlave.balls = 4; + cheatSlave.scrotum = 4; + cheatSlave.foreskin = 4; + cheatSlave.prostate = 1; + cheatSlave.pubertyXY = 1; } - newSlave(_HS); - V.HeadGirlID = _HS.ID; - r.push(`There are quite a few left; their names are`); - slaveNames.push(_HS.slaveName); + newSlave(cheatSlave); + V.HeadGirlID = cheatSlave.ID; + slaveNames.push(cheatSlave.slaveName); - _HS = clone(_slave); - _HS.slaveName = "Cornelia"; - _HS.birthName = "Cora"; - _HS.ID = 990001; - _HS.relationship = 4; - _HS.relationshipTarget = 990000; - _HS.assignment = "whore"; - _HS.birthWeek = random(0, 51); - _HS.actualAge = 36; - _HS.physicalAge = 36; - _HS.visualAge = 36; - _HS.ovaryAge = 36; - _HS.ageImplant = 1; - setHealth(_HS, 10); - _HS.devotion = 100; - _HS.nationality = "Stateless"; - _HS.muscles = 20; - _HS.height = 190; - _HS.race = "black"; - _HS.origHColor = "black"; - _HS.pubicHColor = "black"; - _HS.origSkin = "dark"; - _HS.hStyle = "long"; - _HS.pubicHStyle = "waxed"; - _HS.waist = -55; - _HS.boobs = 1200; - _HS.boobsImplant = 1000; - _HS.boobsImplantType = "fillable"; - _HS.areolae = 2; - _HS.butt = 5; - _HS.buttImplant = 3; - _HS.buttImplantType = "fillable"; - _HS.preg = -2; - _HS.face = 15; - _HS.faceImplant = 65; - _HS.lips = 35; - _HS.lipsImplant = 10; - _HS.anus = 2; - _HS.makeup = 1; - _HS.nails = 1; - _HS.earPiercing = 1; - _HS.skill.oral = 100; - _HS.skill.anal = 100; - _HS.skill.whoring = 100; - _HS.skill.entertainment = 100; - _HS.clothes = "a slave gown"; - _HS.energy = 65; - _HS.attrXX = 80; - _HS.attrXY = 40; - _HS.fetishKnown = 1; - _HS.brand["left hand"] = "a large letter 'S'"; - _HS.custom.desc = "$He speaks with the demeaning accent of slaves from the Old South."; + cheatSlave = clone(baseSlave); + cheatSlave.slaveName = "Cornelia"; + cheatSlave.birthName = "Cora"; + cheatSlave.ID = 990001; + cheatSlave.relationship = 4; + cheatSlave.relationshipTarget = 990000; + cheatSlave.assignment = "whore"; + cheatSlave.birthWeek = random(0, 51); + cheatSlave.actualAge = 36; + cheatSlave.physicalAge = 36; + cheatSlave.visualAge = 36; + cheatSlave.ovaryAge = 36; + cheatSlave.ageImplant = 1; + setHealth(cheatSlave, 10); + cheatSlave.devotion = 100; + cheatSlave.nationality = "Stateless"; + cheatSlave.muscles = 20; + cheatSlave.height = 190; + cheatSlave.race = "black"; + cheatSlave.origHColor = "black"; + cheatSlave.pubicHColor = "black"; + cheatSlave.origSkin = "dark"; + cheatSlave.hStyle = "long"; + cheatSlave.pubicHStyle = "waxed"; + cheatSlave.waist = -55; + cheatSlave.boobs = 1200; + cheatSlave.boobsImplant = 1000; + cheatSlave.boobsImplantType = "fillable"; + cheatSlave.areolae = 2; + cheatSlave.butt = 5; + cheatSlave.buttImplant = 3; + cheatSlave.buttImplantType = "fillable"; + cheatSlave.preg = -2; + cheatSlave.face = 15; + cheatSlave.faceImplant = 65; + cheatSlave.lips = 35; + cheatSlave.lipsImplant = 10; + cheatSlave.anus = 2; + cheatSlave.makeup = 1; + cheatSlave.nails = 1; + cheatSlave.earPiercing = 1; + cheatSlave.skill.oral = 100; + cheatSlave.skill.anal = 100; + cheatSlave.skill.whoring = 100; + cheatSlave.skill.entertainment = 100; + cheatSlave.clothes = "a slave gown"; + cheatSlave.energy = 65; + cheatSlave.attrXX = 80; + cheatSlave.attrXY = 40; + cheatSlave.fetishKnown = 1; + cheatSlave.brand["left hand"] = "a large letter 'S'"; + cheatSlave.custom.desc = "$He speaks with the demeaning accent of slaves from the Old South."; if (V.seeDicks !== 0) { - _HS.genes = "XY"; - _HS.vagina = -1; - _HS.dick = 3; - _HS.balls = 3; - _HS.scrotum = 3; - _HS.foreskin = 3; - _HS.prostate = 1; - _HS.pubertyXY = 1; + cheatSlave.genes = "XY"; + cheatSlave.vagina = -1; + cheatSlave.dick = 3; + cheatSlave.balls = 3; + cheatSlave.scrotum = 3; + cheatSlave.foreskin = 3; + cheatSlave.prostate = 1; + cheatSlave.pubertyXY = 1; } else { - _HS.genes = "XX"; - _HS.vagina = 3; - _HS.ovaries = 1; - _HS.pubertyXX = 1; + cheatSlave.genes = "XX"; + cheatSlave.vagina = 3; + cheatSlave.ovaries = 1; + cheatSlave.pubertyXX = 1; } - newSlave(_HS); - slaveNames.push(_HS.slaveName); + newSlave(cheatSlave); + slaveNames.push(cheatSlave.slaveName); - _HS = clone(_slave); - _HS.slaveName = "Sheba"; - _HS.birthName = "Shaneequa"; - _HS.ID = 990002; - _HS.rivalry = 1; - _HS.rivalryTarget = 990000; - _HS.assignment = "whore"; - _HS.birthWeek = random(0, 51); - _HS.actualAge = 19; - _HS.physicalAge = 19; - _HS.visualAge = 19; - _HS.ovaryAge = 19; - setHealth(_HS, 10); - _HS.devotion = 60; - _HS.nationality = "Stateless"; - _HS.height = 175; - _HS.race = "black"; - _HS.pubicHColor = "black"; - _HS.origSkin = "brown"; - _HS.hStyle = "long"; - _HS.pubicHStyle = "waxed"; - _HS.waist = -55; - _HS.boobs = 1600; - _HS.boobsImplant = 600; - _HS.boobsImplantType = "normal"; - _HS.nipplesPiercing = 1; - _HS.areolae = 1; - _HS.butt = 6; - _HS.buttImplant = 2; - _HS.buttImplantType = "normal"; - _HS.face = 55; - _HS.faceImplant = 15; - _HS.lips = 55; - _HS.lipsImplant = 10; - _HS.anus = 1; - _HS.makeup = 1; - _HS.nails = 1; - _HS.earPiercing = 1; - _HS.skill.oral = 35; - _HS.skill.anal = 35; - _HS.skill.whoring = 35; - _HS.skill.entertainment = 35; - _HS.clothes = "a slave gown"; - _HS.energy = 100; - _HS.attrXY = 40; - _HS.fetishKnown = 1; - _HS.brand["left hand"] = "a large letter 'S'"; - _HS.custom.desc = "$He speaks with the demeaning accent of slaves from the Old South."; - _HS.mother = 990001; + cheatSlave = clone(baseSlave); + cheatSlave.slaveName = "Sheba"; + cheatSlave.birthName = "Shaneequa"; + cheatSlave.ID = 990002; + cheatSlave.rivalry = 1; + cheatSlave.rivalryTarget = 990000; + cheatSlave.assignment = "whore"; + cheatSlave.birthWeek = random(0, 51); + cheatSlave.actualAge = 19; + cheatSlave.physicalAge = 19; + cheatSlave.visualAge = 19; + cheatSlave.ovaryAge = 19; + setHealth(cheatSlave, 10); + cheatSlave.devotion = 60; + cheatSlave.nationality = "Stateless"; + cheatSlave.height = 175; + cheatSlave.race = "black"; + cheatSlave.pubicHColor = "black"; + cheatSlave.origSkin = "brown"; + cheatSlave.hStyle = "long"; + cheatSlave.pubicHStyle = "waxed"; + cheatSlave.waist = -55; + cheatSlave.boobs = 1600; + cheatSlave.boobsImplant = 600; + cheatSlave.boobsImplantType = "normal"; + cheatSlave.nipplesPiercing = 1; + cheatSlave.areolae = 1; + cheatSlave.butt = 6; + cheatSlave.buttImplant = 2; + cheatSlave.buttImplantType = "normal"; + cheatSlave.face = 55; + cheatSlave.faceImplant = 15; + cheatSlave.lips = 55; + cheatSlave.lipsImplant = 10; + cheatSlave.anus = 1; + cheatSlave.makeup = 1; + cheatSlave.nails = 1; + cheatSlave.earPiercing = 1; + cheatSlave.skill.oral = 35; + cheatSlave.skill.anal = 35; + cheatSlave.skill.whoring = 35; + cheatSlave.skill.entertainment = 35; + cheatSlave.clothes = "a slave gown"; + cheatSlave.energy = 100; + cheatSlave.attrXY = 40; + cheatSlave.fetishKnown = 1; + cheatSlave.brand["left hand"] = "a large letter 'S'"; + cheatSlave.custom.desc = "$He speaks with the demeaning accent of slaves from the Old South."; + cheatSlave.mother = 990001; if (V.seeDicks !== 100) { - _HS.genes = "XX"; - _HS.vagina = 1; - _HS.ovaries = 1; - _HS.skill.vaginal = 35; - _HS.pubertyXX = 1; + cheatSlave.genes = "XX"; + cheatSlave.vagina = 1; + cheatSlave.ovaries = 1; + cheatSlave.skill.vaginal = 35; + cheatSlave.pubertyXX = 1; } else { - _HS.genes = "XY"; - _HS.vagina = -1; - _HS.dick = 2; - _HS.balls = 2; - _HS.scrotum = 2; - _HS.foreskin = 2; - _HS.prostate = 1; - _HS.pubertyXY = 1; + cheatSlave.genes = "XY"; + cheatSlave.vagina = -1; + cheatSlave.dick = 2; + cheatSlave.balls = 2; + cheatSlave.scrotum = 2; + cheatSlave.foreskin = 2; + cheatSlave.prostate = 1; + cheatSlave.pubertyXY = 1; } - newSlave(_HS); - slaveNames.push(_HS.slaveName); + newSlave(cheatSlave); + slaveNames.push(cheatSlave.slaveName); - _HS = clone(_slave); - _HS.slaveName = "Cornflower"; - _HS.birthName = "Alysa"; - _HS.ID = 990003; - _HS.relationship = 3; - _HS.relationshipTarget = 990005; - _HS.assignment = "get milked"; - _HS.birthWeek = random(0, 51); - setHealth(_HS, 20); - _HS.devotion = 60; - _HS.nationality = "Stateless"; - _HS.muscles = 50; - _HS.height = 190; - _HS.race = "black"; - _HS.origHColor = "black"; - _HS.pubicHColor = "black"; - _HS.origSkin = "brown"; - _HS.hLength = 0; - _HS.hStyle = "shaved bald"; - _HS.pubicHStyle = "waxed"; - _HS.waist = -100; - _HS.heels = 1; - _HS.voice = 0; - _HS.boobs = 6000; - _HS.nipples = "huge"; - _HS.areolae = 2; - _HS.boobsTat = "bovine patterns"; - _HS.lactation = 2; - _HS.lactationDuration = 2; - _HS.butt = 3; - _HS.buttTat = "bovine patterns"; - _HS.face = 15; - _HS.lips = 35; - _HS.lipsTat = "bovine patterns"; - _HS.anus = 3; - _HS.anusTat = "bovine patterns"; - _HS.makeup = 1; - _HS.nails = 1; - _HS.earPiercing = 1; - _HS.nosePiercing = 2; - _HS.shouldersTat = "bovine patterns"; - _HS.armsTat = "bovine patterns"; - _HS.legsTat = "bovine patterns"; - _HS.stampTat = "bovine patterns"; - _HS.skill.oral = 15; - _HS.skill.anal = 35; - _HS.energy = 65; - _HS.attrXY = 40; - _HS.fetish = "boobs"; - _HS.fetishKnown = 1; - _HS.custom.tattoo = "A pretty blue cornflower is tattooed on each of $his cheeks."; - _HS.custom.desc = "$He once spoke with the demeaning accent of slaves from the Old South."; - _HS.mother = 990005; + cheatSlave = clone(baseSlave); + cheatSlave.slaveName = "Cornflower"; + cheatSlave.birthName = "Alysa"; + cheatSlave.ID = 990003; + cheatSlave.relationship = 3; + cheatSlave.relationshipTarget = 990005; + cheatSlave.assignment = "get milked"; + cheatSlave.birthWeek = random(0, 51); + setHealth(cheatSlave, 20); + cheatSlave.devotion = 60; + cheatSlave.nationality = "Stateless"; + cheatSlave.muscles = 50; + cheatSlave.height = 190; + cheatSlave.race = "black"; + cheatSlave.origHColor = "black"; + cheatSlave.pubicHColor = "black"; + cheatSlave.origSkin = "brown"; + cheatSlave.hLength = 0; + cheatSlave.hStyle = "shaved bald"; + cheatSlave.pubicHStyle = "waxed"; + cheatSlave.waist = -100; + cheatSlave.heels = 1; + cheatSlave.voice = 0; + cheatSlave.boobs = 6000; + cheatSlave.nipples = "huge"; + cheatSlave.areolae = 2; + cheatSlave.boobsTat = "bovine patterns"; + cheatSlave.lactation = 2; + cheatSlave.lactationDuration = 2; + cheatSlave.butt = 3; + cheatSlave.buttTat = "bovine patterns"; + cheatSlave.face = 15; + cheatSlave.lips = 35; + cheatSlave.lipsTat = "bovine patterns"; + cheatSlave.anus = 3; + cheatSlave.anusTat = "bovine patterns"; + cheatSlave.makeup = 1; + cheatSlave.nails = 1; + cheatSlave.earPiercing = 1; + cheatSlave.nosePiercing = 2; + cheatSlave.shouldersTat = "bovine patterns"; + cheatSlave.armsTat = "bovine patterns"; + cheatSlave.legsTat = "bovine patterns"; + cheatSlave.stampTat = "bovine patterns"; + cheatSlave.skill.oral = 15; + cheatSlave.skill.anal = 35; + cheatSlave.energy = 65; + cheatSlave.attrXY = 40; + cheatSlave.fetish = "boobs"; + cheatSlave.fetishKnown = 1; + cheatSlave.custom.tattoo = "A pretty blue cornflower is tattooed on each of $his cheeks."; + cheatSlave.custom.desc = "$He once spoke with the demeaning accent of slaves from the Old South."; + cheatSlave.mother = 990005; if (V.seeDicks !== 100) { - _HS.genes = "XX"; - _HS.vagina = 1; - _HS.vaginaTat = "bovine patterns"; - _HS.ovaries = 1; - _HS.skill.vaginal = 15; - _HS.pubertyXX = 1; + cheatSlave.genes = "XX"; + cheatSlave.vagina = 1; + cheatSlave.vaginaTat = "bovine patterns"; + cheatSlave.ovaries = 1; + cheatSlave.skill.vaginal = 15; + cheatSlave.pubertyXX = 1; } else { - _HS.genes = "XY"; - _HS.vagina = -1; - _HS.dick = 3; - _HS.balls = 3; - _HS.scrotum = 3; - _HS.foreskin = 3; - _HS.prostate = 1; - _HS.dickTat = "bovine patterns"; - _HS.pubertyXY = 1; + cheatSlave.genes = "XY"; + cheatSlave.vagina = -1; + cheatSlave.dick = 3; + cheatSlave.balls = 3; + cheatSlave.scrotum = 3; + cheatSlave.foreskin = 3; + cheatSlave.prostate = 1; + cheatSlave.dickTat = "bovine patterns"; + cheatSlave.pubertyXY = 1; } - newSlave(_HS); - slaveNames.push(_HS.slaveName); + newSlave(cheatSlave); + slaveNames.push(cheatSlave.slaveName); - _HS = clone(_slave); - _HS.slaveName = "Miss Lily"; - _HS.birthName = "Lillian"; - _HS.ID = 990004; - _HS.assignment = "guard you"; - _HS.birthWeek = random(0, 51); - setHealth(_HS, 20); - _HS.devotion = 30; - _HS.nationality = "Stateless"; - _HS.muscles = 50; - _HS.height = 175; - _HS.race = "white"; - _HS.eye.origColor = "green"; - _HS.origHColor = "straw blonde"; - _HS.origSkin = "pale"; - _HS.hLength = 40; - _HS.hStyle = "in a short ponytail"; - _HS.waist = -55; - _HS.boobs = 600; - _HS.butt = 3; - _HS.face = 15; - _HS.lips = 35; - _HS.preg = -2; - _HS.anus = 2; - _HS.makeup = 1; - _HS.nails = 1; - _HS.earPiercing = 1; - _HS.skill.anal = 35; - _HS.skill.combat = 1; - _HS.energy = 65; - _HS.attrXY = 40; - _HS.fetish = "buttslut"; - _HS.fetishKnown = 1; - _HS.custom.tattoo = "'Miss Lily' is tattooed in lovely flowing script over $his collarbone."; - _HS.custom.desc = "$He once spoke with the rich accent of the Old South."; - _HS.mother = 990000; + cheatSlave = clone(baseSlave); + cheatSlave.slaveName = "Miss Lily"; + cheatSlave.birthName = "Lillian"; + cheatSlave.ID = 990004; + cheatSlave.assignment = "guard you"; + cheatSlave.birthWeek = random(0, 51); + setHealth(cheatSlave, 20); + cheatSlave.devotion = 30; + cheatSlave.nationality = "Stateless"; + cheatSlave.muscles = 50; + cheatSlave.height = 175; + cheatSlave.race = "white"; + cheatSlave.eye.origColor = "green"; + cheatSlave.origHColor = "straw blonde"; + cheatSlave.origSkin = "pale"; + cheatSlave.hLength = 40; + cheatSlave.hStyle = "in a short ponytail"; + cheatSlave.waist = -55; + cheatSlave.boobs = 600; + cheatSlave.butt = 3; + cheatSlave.face = 15; + cheatSlave.lips = 35; + cheatSlave.preg = -2; + cheatSlave.anus = 2; + cheatSlave.makeup = 1; + cheatSlave.nails = 1; + cheatSlave.earPiercing = 1; + cheatSlave.skill.anal = 35; + cheatSlave.skill.combat = 1; + cheatSlave.energy = 65; + cheatSlave.attrXY = 40; + cheatSlave.fetish = "buttslut"; + cheatSlave.fetishKnown = 1; + cheatSlave.custom.tattoo = "'Miss Lily' is tattooed in lovely flowing script over $his collarbone."; + cheatSlave.custom.desc = "$He once spoke with the rich accent of the Old South."; + cheatSlave.mother = 990000; if (V.seeDicks !== 100) { - _HS.genes = "XX"; - _HS.ovaries = 1; - _HS.pubertyXX = 1; + cheatSlave.genes = "XX"; + cheatSlave.ovaries = 1; + cheatSlave.pubertyXX = 1; } else { - _HS.genes = "XY"; - _HS.vagina = -1; - _HS.dick = 4; - _HS.balls = 4; - _HS.scrotum = 4; - _HS.foreskin = 4; - _HS.prostate = 1; - _HS.pubertyXY = 1; + cheatSlave.genes = "XY"; + cheatSlave.vagina = -1; + cheatSlave.dick = 4; + cheatSlave.balls = 4; + cheatSlave.scrotum = 4; + cheatSlave.foreskin = 4; + cheatSlave.prostate = 1; + cheatSlave.pubertyXY = 1; } - newSlave(_HS); - V.BodyguardID = _HS.ID; - slaveNames.push(_HS.slaveName); + newSlave(cheatSlave); + V.BodyguardID = cheatSlave.ID; + slaveNames.push(cheatSlave.slaveName); - _HS = clone(_slave); - _HS.slaveName = "Lilac"; - _HS.birthName = "Lillian"; - _HS.ID = 990005; - _HS.relationship = 3; - _HS.relationshipTarget = 990003; - _HS.assignment = "get milked"; - _HS.birthWeek = random(0, 51); - _HS.actualAge = 36; - _HS.physicalAge = 36; - _HS.visualAge = 36; - _HS.ovaryAge = 36; - setHealth(_HS, 20); - _HS.devotion = 60; - _HS.nationality = "Stateless"; - _HS.muscles = 50; - _HS.height = 190; - _HS.race = "black"; - _HS.origHColor = "black"; - _HS.pubicHColor = "black"; - _HS.origSkin = "brown"; - _HS.hLength = 0; - _HS.hStyle = "shaved bald"; - _HS.pubicHStyle = "waxed"; - _HS.waist = -55; - _HS.heels = 1; - _HS.boobs = 8000; - _HS.nipples = "huge"; - _HS.areolae = 2; - _HS.boobsTat = "bovine patterns"; - _HS.lactation = 2; - _HS.lactationDuration = 2; - _HS.butt = 4; - _HS.buttTat = "bovine patterns"; - _HS.face = 15; - _HS.lips = 35; - _HS.lipsTat = "bovine patterns"; - _HS.anus = 3; - _HS.anusTat = "bovine patterns"; - _HS.makeup = 1; - _HS.nails = 1; - _HS.earPiercing = 1; - _HS.nosePiercing = 2; - _HS.shouldersTat = "bovine patterns"; - _HS.armsTat = "bovine patterns"; - _HS.legsTat = "bovine patterns"; - _HS.stampTat = "bovine patterns"; - _HS.skill.oral = 15; - _HS.skill.anal = 35; - _HS.energy = 65; - _HS.attrXY = 40; - _HS.fetish = "boobs"; - _HS.fetishKnown = 1; - _HS.custom.tattoo = "A pretty purple lilac is tattooed on each of $his cheeks."; - _HS.custom.desc = "$He once spoke with the demeaning accent of slaves from the Old South."; + cheatSlave = clone(baseSlave); + cheatSlave.slaveName = "Lilac"; + cheatSlave.birthName = "Lillian"; + cheatSlave.ID = 990005; + cheatSlave.relationship = 3; + cheatSlave.relationshipTarget = 990003; + cheatSlave.assignment = "get milked"; + cheatSlave.birthWeek = random(0, 51); + cheatSlave.actualAge = 36; + cheatSlave.physicalAge = 36; + cheatSlave.visualAge = 36; + cheatSlave.ovaryAge = 36; + setHealth(cheatSlave, 20); + cheatSlave.devotion = 60; + cheatSlave.nationality = "Stateless"; + cheatSlave.muscles = 50; + cheatSlave.height = 190; + cheatSlave.race = "black"; + cheatSlave.origHColor = "black"; + cheatSlave.pubicHColor = "black"; + cheatSlave.origSkin = "brown"; + cheatSlave.hLength = 0; + cheatSlave.hStyle = "shaved bald"; + cheatSlave.pubicHStyle = "waxed"; + cheatSlave.waist = -55; + cheatSlave.heels = 1; + cheatSlave.boobs = 8000; + cheatSlave.nipples = "huge"; + cheatSlave.areolae = 2; + cheatSlave.boobsTat = "bovine patterns"; + cheatSlave.lactation = 2; + cheatSlave.lactationDuration = 2; + cheatSlave.butt = 4; + cheatSlave.buttTat = "bovine patterns"; + cheatSlave.face = 15; + cheatSlave.lips = 35; + cheatSlave.lipsTat = "bovine patterns"; + cheatSlave.anus = 3; + cheatSlave.anusTat = "bovine patterns"; + cheatSlave.makeup = 1; + cheatSlave.nails = 1; + cheatSlave.earPiercing = 1; + cheatSlave.nosePiercing = 2; + cheatSlave.shouldersTat = "bovine patterns"; + cheatSlave.armsTat = "bovine patterns"; + cheatSlave.legsTat = "bovine patterns"; + cheatSlave.stampTat = "bovine patterns"; + cheatSlave.skill.oral = 15; + cheatSlave.skill.anal = 35; + cheatSlave.energy = 65; + cheatSlave.attrXY = 40; + cheatSlave.fetish = "boobs"; + cheatSlave.fetishKnown = 1; + cheatSlave.custom.tattoo = "A pretty purple lilac is tattooed on each of $his cheeks."; + cheatSlave.custom.desc = "$He once spoke with the demeaning accent of slaves from the Old South."; if (V.seeDicks !== 100) { - _HS.genes = "XX"; - _HS.vagina = 1; - _HS.vaginaTat = "bovine patterns"; - _HS.ovaries = 1; - _HS.skill.vaginal = 15; - _HS.pubertyXX = 1; + cheatSlave.genes = "XX"; + cheatSlave.vagina = 1; + cheatSlave.vaginaTat = "bovine patterns"; + cheatSlave.ovaries = 1; + cheatSlave.skill.vaginal = 15; + cheatSlave.pubertyXX = 1; } else { - _HS.genes = "XY"; - _HS.vagina = -1; - _HS.dick = 5; - _HS.balls = 5; - _HS.scrotum = 5; - _HS.foreskin = 5; - _HS.prostate = 1; - _HS.dickTat = "bovine patterns"; - _HS.pubertyXY = 1; + cheatSlave.genes = "XY"; + cheatSlave.vagina = -1; + cheatSlave.dick = 5; + cheatSlave.balls = 5; + cheatSlave.scrotum = 5; + cheatSlave.foreskin = 5; + cheatSlave.prostate = 1; + cheatSlave.dickTat = "bovine patterns"; + cheatSlave.pubertyXY = 1; } - newSlave(_HS); - slaveNames.push(_HS.slaveName); + newSlave(cheatSlave); + slaveNames.push(cheatSlave.slaveName); - r.push(`${arrayToSentence(slaveNames)}.`); - App.Events.addNode(el, r); - return el; + return `There are quite a few left; their names are ${arrayToSentence(slaveNames)}.`; }; diff --git a/src/npc/databases/ddSlavesDatabase.js b/src/npc/databases/ddSlavesDatabase.js index edf41470770ebd2e43eac3fe79c4dfe5136b4735..90fa71d27fa20a7f8b6180fdc07aab5f45783e6f 100644 --- a/src/npc/databases/ddSlavesDatabase.js +++ b/src/npc/databases/ddSlavesDatabase.js @@ -959,7 +959,10 @@ App.Data.HeroSlaves.DD = [ attrXY: 40, fetishKnown: 1, behavioralFlaw: "odd", - custom: {tattoo: "$He has a blood red, faux brand tattoo on $his left ass cheek.", desc: "$He has a nearly faded pockmark on the skin above $his left eyebrow, the last reminder of $his awkward past."} + custom: { + tattoo: "$He has a blood red, faux brand tattoo on $his left ass cheek.", + desc: "$He has a nearly faded pockmark on the skin above $his left eyebrow, the last reminder of $his awkward past." + } }, { ID: 800024, @@ -1010,7 +1013,10 @@ App.Data.HeroSlaves.DD = [ intelligence: -30, attrXX: 40, attrXY: 40, - custom: {tattoo: "$He has tattooed petals trailing from the nape of $his neck down $his back, ending between $his butt cheeks.", desc: "$His red pubic hair is waxed into the shape of a heart. $He has bright blue eyeshadow on $his bottom lids."}, + custom: { + tattoo: "$He has tattooed petals trailing from the nape of $his neck down $his back, ending between $his butt cheeks.", + desc: "$His red pubic hair is waxed into the shape of a heart. $He has bright blue eyeshadow on $his bottom lids." + }, pubicHStyle: "waxed" }, { @@ -1114,7 +1120,10 @@ App.Data.HeroSlaves.DD = [ attrXY: 40, fetishKnown: 1, behavioralFlaw: "arrogant", - custom: {tattoo: "$He has two neon-blue butterflies tattooed on $his right temple and one more right above $his right eyebrow; a bright blue, luminescent tattoo of an oriental dragon is intertwining with floral tattoos on $his right leg.", desc: "$He is almost never seen without $his long, thin, lavishly decorated smoking pipe, either holding it in hand, or carrying it tucked in $his chignon."}, + custom: { + tattoo: "$He has two neon-blue butterflies tattooed on $his right temple and one more right above $his right eyebrow; a bright blue, luminescent tattoo of an oriental dragon is intertwining with floral tattoos on $his right leg.", + desc: "$He is almost never seen without $his long, thin, lavishly decorated smoking pipe, either holding it in hand, or carrying it tucked in $his chignon." + }, career: "a gang member" }, { @@ -1407,7 +1416,10 @@ App.Data.HeroSlaves.DD = [ attrXY: 40, fetish: "humiliation", behavioralFlaw: "arrogant", - custom: {tattoo: "$He has a tattoo down $his left arm, which reads 'Once a tall, muscular, handsome man with a big dick and big balls.'", desc: "Since becoming a slave $he has been turned into a little bimbo."} + custom: { + tattoo: "$He has a tattoo down $his left arm, which reads 'Once a tall, muscular, handsome man with a big dick and big balls.'", + desc: "Since becoming a slave $he has been turned into a little bimbo." + } }, ]; @@ -1643,8 +1655,6 @@ App.Data.HeroSlaves.DDextreme = [ voice: 0, custom: {desc: "Though $his vocal cords have been altered to keep $him from speaking, $he is still capable of the occasional moo."} }, - - { ID: 800037, slaveName: "Danny 'The D'", diff --git a/src/npc/descriptions/boobs/boobsShape.js b/src/npc/descriptions/boobs/boobsShape.js index 171ad16649f16f0e5e46270062eda3a229300f4c..b9540a8e3e805f58aef4e6cf88fc611b399fdfa5 100644 --- a/src/npc/descriptions/boobs/boobsShape.js +++ b/src/npc/descriptions/boobs/boobsShape.js @@ -21,12 +21,10 @@ App.Desc.boobsShape = function(slave) { } } else { let showBoobShape = false; - // Only used in implant related text. - /* eslint-disable */ + // Only used in implant related text. let implantType = slave.boobsImplantType === "string" ? "engorged string" : slave.boobsImplantType === "normal" ? "breast" : - "fillable breast"; - /* eslint-enable */ + "fillable breast"; if (slave.boobShape === "spherical") { if (slave.boobs > 12000) { r.push(`They anchor ${him} when ${he}'s face-down, pin ${him} when ${he}'s on ${his} back, and pull what little flesh is left taut when ${he} is upright. ${His} ${slave.boobsImplant} cc ${implantType} implants are extremely obvious; with little natural breast tissue to support them, they are barely recognizable as a part ${his} body.`); diff --git a/src/npc/descriptions/butt/butt.js b/src/npc/descriptions/butt/butt.js index 32c4344116194bb86f001acfe6f38783c4646eec..a2234be31a422ef72b446a585f8286b953809ed5 100644 --- a/src/npc/descriptions/butt/butt.js +++ b/src/npc/descriptions/butt/butt.js @@ -1226,124 +1226,46 @@ App.Desc.butt = function(slave, {market, eventDescription} = {}) { r.push(`It's too small for the fashionable feminine ideal.`); } - if (slave.physicalAge <= 3) { - if (slave.butt >= 8) { - if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic ass is greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); - } else { - if (canWalk(slave)) { - r.push(`${His} butt is so massive that it is difficult for ${him} to move.`); - if (slave.muscles > 95) { - r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, using ${his}`); - if (hasBothArms(slave)) { - r.push(`arms`); - } else { - r.push(`arm`); - } - r.push(`to support them.`); - } else if (slave.muscles > 30) { - r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks with ${his} ${hands} sunk into ${his} buttcheeks to help take their weight.`); - } else if (slave.muscles > 5) { - r.push(`${He} requires assistance to get to ${his} feet, and tries to rest ${his} huge cheeks on whatever nearby surfaces ${he} can.`); - } else { - r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated on ${his} enormous rear rather than stand.`); - } + if ( + (slave.physicalAge <= 3 && slave.butt >= 8) + || (slave.physicalAge <= 12 && slave.butt >= 12) + || (slave.physicalAge > 12 && slave.butt > 17) + ) { + if (slave.fuckdoll > 0) { + r.push(`The difficulties of having a gigantic ass is greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); + } else { + if (canWalk(slave)) { + r.push(`${His} butt is so massive that it is difficult for ${him} to move.`); + if (slave.muscles > 95) { + r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, using ${his}`); + if (hasBothArms(slave)) { + r.push(`arms`); + } else { + r.push(`arm`); + } + r.push(`to support them.`); + } else if (slave.muscles > 30) { + r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks with ${his} ${hands} sunk into ${his} buttcheeks to help take their weight.`); + } else if (slave.muscles > 5) { + r.push(`${He} requires assistance to get to ${his} feet, and tries to rest ${his} huge cheeks on whatever nearby surfaces ${he} can.`); } else { - r.push(`Together it is nearly the same size as ${his} torso, making ${him} about half butt.`); - } - if (slave.butt > 15) { - if (V.buttAccessibility === 1) { - r.push(`Fortunately for ${him}, the penthouse is adapted for daily life with a rear`); - } else { - if (market) { - r.push(`${He}'ll have`); - } else { - r.push(`${He} has`); - } - r.push(`trouble living in your penthouse, which is not designed for ${girl}s with buttcheeks`); - } - r.push(`wider than a standard doorway.`); + r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated on ${his} enormous rear rather than stand.`); } - } - } - } else if (slave.physicalAge <= 12) { - if (slave.butt >= 12) { - if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic ass is greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); } else { - if (canWalk(slave)) { - r.push(`${His} butt is so massive that it is difficult for ${him} to move.`); - if (slave.muscles > 95) { - r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, using ${his}`); - if (hasBothArms(slave)) { - r.push(`arms`); - } else { - r.push(`arm`); - } - r.push(`to support them.`); - } else if (slave.muscles > 30) { - r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks with ${his} ${hands} sunk into ${his} buttcheeks to help take their weight.`); - } else if (slave.muscles > 5) { - r.push(`${He} requires assistance to get to ${his} feet, and tries to rest ${his} huge cheeks on whatever nearby surfaces ${he} can.`); - } else { - r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated on ${his} enormous rear rather than stand.`); - } - } else { - r.push(`Together it is nearly the same size as ${his} torso, making ${him} about half butt.`); - } - if (slave.butt > 15) { - if (V.buttAccessibility === 1) { - r.push(`Fortunately for ${him}, the penthouse is adapted for daily life with a rear`); - } else { - if (market) { - r.push(`${He}'ll have`); - } else { - r.push(`${He} has`); - } - r.push(`trouble living in your penthouse, which is not designed for ${girl}s with buttcheeks`); - } - r.push(`wider than a standard doorway.`); - } + r.push(`Together it is nearly the same size as ${his} torso, making ${him} about half butt.`); } - } - } else if (slave.physicalAge > 12) { - if (slave.butt > 17) { - if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic ass is greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); - } else { - if (canWalk(slave)) { - r.push(`${His} butt is so massive that it is difficult for ${him} to move.`); - if (slave.muscles > 95) { - r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, using ${his}`); - if (hasBothArms(slave)) { - r.push(`arms`); - } else { - r.push(`arm`); - } - r.push(`to support them.`); - } else if (slave.muscles > 30) { - r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks with ${his} ${hands} sunk into ${his} buttcheeks to help take their weight.`); - } else if (slave.muscles > 5) { - r.push(`${He} requires assistance to get to ${his} feet, and tries to rest ${his} huge cheeks on whatever nearby surfaces ${he} can.`); - } else { - r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated on ${his} enormous rear rather than stand.`); - } + if (slave.butt > 15) { + if (V.buttAccessibility === 1) { + r.push(`Fortunately for ${him}, the penthouse is adapted for daily life with a rear`); } else { - r.push(`Together it is nearly the same size as ${his} torso, making ${him} about half butt.`); - } - if (slave.butt > 15) { - if (V.buttAccessibility === 1) { - r.push(`Fortunately for ${him}, the penthouse is adapted for daily life with a rear`); - } else { - if (market) { - r.push(`${He}'ll have`); - } else { - r.push(`${He} has`); - } - r.push(`trouble living in your penthouse, which is not designed for ${girl}s with buttcheeks`); + if (market) { + r.push(`${He}'ll have`); + } else { + r.push(`${He} has`); } - r.push(`wider than a standard doorway.`); + r.push(`trouble living in your penthouse, which is not designed for ${girl}s with buttcheeks`); } + r.push(`wider than a standard doorway.`); } } } diff --git a/src/npc/descriptions/crotch/crotch.js b/src/npc/descriptions/crotch/crotch.js index d2b904d7abb6f9f583d04d70a6ead0a1bb851d51..65e940dde4fe175c9a28fe1bb8d6e58b4f5a2e82 100644 --- a/src/npc/descriptions/crotch/crotch.js +++ b/src/npc/descriptions/crotch/crotch.js @@ -723,6 +723,7 @@ App.Desc.crotch = function(slave, {market, eventDescription} = {}) { } break; case "a military uniform": + case "a red army uniform": if (slave.dick > 3) { r.push(`${slave.slaveName}'s uniform skirt bulges forward in front.`); } else if ((slave.dick > 0) && (slave.vagina > -1)) { @@ -761,19 +762,6 @@ App.Desc.crotch = function(slave, {market, eventDescription} = {}) { r.push(`${slave.slaveName}'s uniform miniskirt gives no hint of the cock behind it.`); } break; - case "a red army uniform": - if (slave.dick > 3) { - r.push(`${slave.slaveName}'s uniform skirt bulges forward in front.`); - } else if ((slave.dick > 0) && (slave.vagina > -1)) { - r.push(`${slave.slaveName}'s hermaphroditic genitalia are decently hidden by ${his} skirt.`); - } else if (slave.vagina > -1) { - r.push(`${slave.slaveName}'s uniform skirt gives no hint of the pussy behind it.`); - } else if (slave.vagina === -1) { - r.push(`${slave.slaveName}'s uniform skirt gives no hint of the featureless groin behind it.`); - } else if (slave.dick > 0) { - r.push(`${slave.slaveName}'s uniform skirt gives no hint of the cock behind it.`); - } - break; case "an apron": if (slave.dick > 4) { r.push(`${slave.slaveName}'s apron has a noticeable bulge in the front.`); diff --git a/src/npc/descriptions/crotch/dick.js b/src/npc/descriptions/crotch/dick.js index 8ef311b561870953f7f35d750cb280daaa47ae65..0abb26c7872fbbd0bc96c597872bad1e3295ca50 100644 --- a/src/npc/descriptions/crotch/dick.js +++ b/src/npc/descriptions/crotch/dick.js @@ -492,144 +492,7 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) { break; } if (slave.fuckdoll === 0 && slave.balls > 0 && slave.scrotum > 0) { - let scrotalFullness = slave.scrotum - slave.balls; - if (slave.balls > 90) { - if (scrotalFullness < -1) { - r.push(`${His} poor scrotum is agonizingly overfilled and looks ready to burst. ${He} must be in constant pain.`); - } else if (scrotalFullness === -1) { - r.push(`${His} poor scrotum is so overfilled, every little vein is visible. ${He} must be in constant discomfort.`); - } else if (scrotalFullness === 0) { - r.push(`${His} comfortable scrotum allows them to hang massively`); - if (hasBothLegs(slave)) { - r.push(`between ${his} legs.`); - } else { - r.push(`from ${his}`); - if (isAmputee(slave)) { - r.push(`limbless`); - } - r.push(`torso.`); - } - } else { - r.push(`Their weight and size has stretched ${his} scrotum downward, so that they`); - if (hasAnyLegs(slave)) { - r.push(`drag along the floor.`); - } else { - r.push(`hang far from ${his}`); - if (isAmputee(slave)) { - r.push(`limbless`); - } - r.push(`torso.`); - } - } - } else if (slave.balls >= 20) { - if (scrotalFullness < -1) { - r.push(`${His} poor scrotum is agonizingly overfilled and taut. ${He} must be in constant pain.`); - } else if (scrotalFullness === -1) { - r.push(`${His} poor scrotum is so overfilled, every little vein is visible. ${He} must be in constant discomfort.`); - } else if (scrotalFullness === 0) { - r.push(`${His} comfortable scrotum allows them to hang massively`); - if (hasBothLegs(slave)) { - r.push(`between ${his} legs.`); - } else { - r.push(`from ${his}`); - if (isAmputee(slave)) { - r.push(`limbless`); - } - r.push(`torso.`); - } - } else { - r.push(`Their weight and size has stretched ${his} scrotum downward, so that they dangle`); - if (hasAnyLegs(slave)) { - r.push(`to ${his}`); - if (hasBothLegs(slave)) { - r.push(`knees.`); - } else { - r.push(`knee.`); - } - } else { - r.push(`quite the distance from ${his}`); - if (isAmputee(slave)) { - r.push(`limbless`); - } - r.push(`torso.`); - } - } - } else if (slave.balls > 5) { - if (scrotalFullness < -1) { - r.push(`${His} poor scrotum is so overfilled, every little vein is visible. ${He} must be in agony.`); - } else if (scrotalFullness === -1) { - r.push(`They're held against ${his} base by a tight scrotum that permits them little movement.`); - } else if (scrotalFullness === 0) { - r.push(`${His} comfortable scrotum allows them to hang massively`); - if (hasBothLegs(slave)) { - r.push(`between ${his} legs.`); - } else { - r.push(`from ${his}`); - if (isAmputee(slave)) { - r.push(`limbless`); - } - r.push(`torso.`); - } - } else { - r.push(`Their weight has stretched ${his} scrotum downward, so that they dangle`); - if (hasAnyLegs(slave)) { - r.push(`halfway to ${his}`); - if (hasBothLegs(slave)) { - r.push(`knees.`); - } else { - r.push(`knee.`); - } - } else { - r.push(`some distance from ${his}`); - if (isAmputee(slave)) { - r.push(`limbless`); - } - r.push(`torso.`); - } - } - } else if (slave.balls > 3) { - if (scrotalFullness < -1) { - r.push(`They're too big for ${his} tiny scrotum, which is stretched tight over each ball.`); - } else if (scrotalFullness === -1) { - r.push(`They're held against ${his} base by a tight scrotum that permits them little movement.`); - } else if (scrotalFullness === 0) { - r.push(`${His} soft scrotum allows them to rest comfortably`); - if (hasBothLegs(slave)) { - r.push(`between ${his} legs.`); - } else { - r.push(`beneath ${his}`); - if (isAmputee(slave)) { - r.push(`limbless`); - } - r.push(`torso.`); - } - } else { - r.push(`${He} has a loose, dangling scrotum that allows them to swing`); - if (hasBothLegs(slave)) { - r.push(`between ${his} legs.`); - } else { - r.push(`from ${his}`); - if (isAmputee(slave)) { - r.push(`limbless`); - } - r.push(`torso.`); - } - } - } else if (slave.balls > 1) { - if (scrotalFullness < 0) { - r.push(`They're held tightly by a very minimal scrotum that turns them into a soft little bump.`); - } else if (scrotalFullness === 0) { - r.push(`${His} comfortable little scrotum allows them to rest softly.`); - } else { - r.push(`They're almost lost in ${his} big soft scrotum, wrinkled for lack of anything to fill it properly.`); - } - } else { - if (scrotalFullness === 0) { - r.push(`${He} has a soft little trace of scrotum.`); - } else { - r.push(`They've left ${his} scrotum soft and empty.`); - } - } + ballsVariant1(); } } @@ -934,41 +797,7 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) { } } } - } else if (slave.physicalAge <= 12) { - if (slave.dick >= 30) { - if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic dick are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); - } else { - if (canWalk(slave)) { - r.push(`${His} penis so massive that it is difficult for ${him} to move.`); - if (slave.muscles > 95) { - r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, using ${his} arms to support it.`); - } else if (slave.muscles > 30) { - r.push(`${He} can barely to move ${his} penis, and usually walks carrying it in any way ${he} can.`); - } else if (slave.muscles > 5) { - r.push(`${He} requires assistance to move ${his} penis, and tries to rest it on the ground whenever ${he} can.`); - } else { - r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated so ${his} enormous penis doesn't weigh ${him} down as much.`); - } - } else { - r.push(`${His} penis is nearly the same size as ${his} torso, making ${him} about half cock.`); - } - if (slave.dick >= 30) { - if (V.dickAccessibility === 1) { - r.push(`Fortunately for ${him}, the penthouse is adapted for daily life with a cock`); - } else { - if (market) { - r.push(`${He}'ll have`); - } else { - r.push(`${He} has`); - } - r.push(`trouble living in your penthouse, which is not designed for ${girl}s with dicks`); - } - r.push(`bigger than they are.`); - } - } - } - } else if (slave.physicalAge > 12) { + } else { // Below is planned to be split like this: if (slave.physicalAge <= 12) else if (slave.physicalAge > 12) if (slave.dick >= 30) { if (slave.fuckdoll > 0) { r.push(`The difficulties of having a gigantic dick are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); @@ -1033,52 +862,7 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) { } if (slave.physicalAge <= 3) { - if (slave.balls >= 25) { - if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); - } else { - if (canWalk(slave)) { - r.push(`${His} balls are so massive that it is difficult for ${him} to move.`); - if (slave.muscles > 95) { - r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, using ${his} arms to support them.`); - } else if (slave.muscles > 30) { - r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks carrying ${his} testicles in any way ${he} can.`); - } else if (slave.muscles > 5) { - r.push(`${He} requires assistance to get to ${his} feet, and tries to rest ${his} huge balls on the ground whenever ${he} can.`); - } else { - r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated so ${his} enormous balls don't weigh ${him} down as much.`); - } - } else if (canMove(slave)) { - r.push(`${His} balls are so massive that it is difficult for ${him} to move at all.`); - if (slave.muscles > 95) { - r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, dragging ${his} testicles along behind ${him}.`); - } else if (slave.muscles > 30) { - r.push(`${He} can barely manage to lift ${his} testicles, and finds it exhausting to drag them everywhere.`); - } else if (slave.muscles > 5) { - r.push(`${He} requires assistance to get ${his} testicles off the ground, and tries avoid moving them whenever ${he} can.`); - } else { - r.push(`${He} requires assistance to get ${his} testicles off the ground, and can barely manage to drag them along behind ${him}.`); - } - } else if (slave.balls >= 100) { - r.push(`${His} testicles each dwarf ${him}, making ${him} almost entirely testicle.`); - } else { - r.push(`${His} testicles each dwarf ${his} torso, making ${him} almost entirely testicle.`); - } - if (slave.balls > 90) { - if (V.ballsAccessibility === 1) { - r.push(`Fortunately for ${him}, the penthouse is adapted for daily life with balls`); - } else { - if (market) { - r.push(`${He}'ll have`); - } else { - r.push(`${He} has`); - } - r.push(`trouble living in your penthouse, which is not designed for ${girl}s with testicles`); - } - r.push(`wider than a standard doorway.`); - } - } - } + massiveTesticles1(); } else if (slave.physicalAge <= 12) { if (slave.balls >= 50) { if (slave.fuckdoll > 0) { @@ -1127,61 +911,16 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) { } } } else if (slave.physicalAge > 12) { - if (slave.balls > 70) { - if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); - } else { - if (canWalk(slave)) { - r.push(`${His} balls are so massive that it is difficult for ${him} to move.`); - if (slave.muscles > 95) { - r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, using ${his} arms to support them.`); - } else if (slave.muscles > 30) { - r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks carrying ${his} testicles in any way ${he} can.`); - } else if (slave.muscles > 5) { - r.push(`${He} requires assistance to get to ${his} feet, and tries to rest ${his} huge balls on the ground whenever ${he} can.`); - } else { - r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated so ${his} enormous balls don't weigh ${him} down as much.`); - } - } else if (canMove(slave)) { - r.push(`${His} balls are so massive that it is difficult for ${him} to move at all.`); - if (slave.muscles > 95) { - r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, dragging ${his} testicles along behind ${him}.`); - } else if (slave.muscles > 30) { - r.push(`${He} can barely manage to lift ${his} testicles, and finds it exhausting to drag them everywhere.`); - } else if (slave.muscles > 5) { - r.push(`${He} requires assistance to get ${his} testicles off the ground, and tries avoid moving them whenever ${he} can.`); - } else { - r.push(`${He} requires assistance to get ${his} testicles off the ground, and can barely manage to drag them along behind ${him}.`); - } - } else if (slave.balls >= 100) { - r.push(`Together, ${his} testicles are nearly the same size as ${him}, making ${him} about half testicle.`); - } else { - r.push(`Together, ${his} testicles are nearly the same size as ${his} torso, making ${him} about half testicle.`); - } - if (slave.balls > 90) { - if (V.ballsAccessibility === 1) { - r.push(`Fortunately for ${him}, the penthouse is adapted for daily life with balls`); - } else { - if (market) { - r.push(`${He}'ll have`); - } else { - r.push(`${He} has`); - } - r.push(`trouble living in your penthouse, which is not designed for ${girl}s with testicles`); - } - r.push(`wider than a standard doorway.`); - } - } - } - } - - if (slave.foreskin > 0) { - if (slave.foreskin - slave.dick < -1) { - r.push(`${His} cockhead is much too large for ${his} foreskin, probably as a result of recent penis growth it hasn't had time to stretch to accommodate yet.`); - if (canAchieveErection(slave) && ((slave.devotion > 20) || (slave.aphrodisiacs > 0) || (slave.gingering && slave.gingering.type === "vasodilator") || (slave.inflationType === "aphrodisiac") || (slave.drugs === "priapism agents"))) { - r.push(`The bit of erect dickhead visible at the tip of the uncomfortably stretched skin is an angry color from being squeezed so hard.`); - } else if (canAchieveErection(slave)) { - r.push(`${He} isn't erect right now, but getting a hard-on will probably be very uncomfortable for ${him}.`); + massiveTesticles2(); + } + + if (slave.foreskin > 0) { + if (slave.foreskin - slave.dick < -1) { + r.push(`${His} cockhead is much too large for ${his} foreskin, probably as a result of recent penis growth it hasn't had time to stretch to accommodate yet.`); + if (canAchieveErection(slave) && ((slave.devotion > 20) || (slave.aphrodisiacs > 0) || (slave.gingering && slave.gingering.type === "vasodilator") || (slave.inflationType === "aphrodisiac") || (slave.drugs === "priapism agents"))) { + r.push(`The bit of erect dickhead visible at the tip of the uncomfortably stretched skin is an angry color from being squeezed so hard.`); + } else if (canAchieveErection(slave)) { + r.push(`${He} isn't erect right now, but getting a hard-on will probably be very uncomfortable for ${him}.`); } else { r.push(`Fortunately for ${him}, ${he} can't get hard, making this merely uncomfortable for ${him}.`); } @@ -1248,61 +987,7 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) { r.push(`no penis and`); } r.push(`no vagina, just a tiny hole above`); - switch (slave.balls) { - case 6: - r.push(`a gigantic, clearly unnatural pair of`); - if (V.showDickCMs === 1) { - r.push(`testicles, about ${ballsToEitherUnit(slave.balls)} long`); - } else { - r.push(`testicles.`); - } - break; - case 5: - r.push(`a huge pair of`); - if (V.showDickCMs === 1) { - r.push(`testicles, about ${ballsToEitherUnit(slave.balls)} long`); - } else { - r.push(`testicles.`); - } - break; - case 4: - r.push(`a big pair of`); - if (V.showDickCMs === 1) { - r.push(`testicles, about ${ballsToEitherUnit(slave.balls)} long`); - } else { - r.push(`testicles.`); - } - break; - case 3: - r.push(`an average pair of`); - if (V.showDickCMs === 1) { - r.push(`testicles, about ${ballsToEitherUnit(slave.balls)} long`); - } else { - r.push(`testicles.`); - } - break; - case 2: - r.push(`a small pair of`); - if (V.showDickCMs === 1) { - r.push(`testicles, about ${ballsToEitherUnit(slave.balls)} long`); - } else { - r.push(`testicles.`); - } - break; - case 1: - r.push(`a soft little trace of scrotum, since ${his} testicles are so small they have retreated up into ${his} abdomen.`); - break; - case 0: - r.push(`smooth ${slave.skin} skin.`); - break; - default: - r.push(`a hypertrophied, clearly unnatural pair of testicles,`); - if (V.showDickCMs === 1) { - r.push(`about ${ballsToEitherUnit(slave.balls)} long,`); - } - r.push(`a true masterpiece of modern growth hormone treatment.`); - break; - } + ballSize(); if (slave.fuckdoll === 0 && slave.balls > 0 && slave.scrotum > 0) { let scrotalFullness = slave.scrotum - slave.balls; if (slave.balls > 90) { @@ -1449,52 +1134,7 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) { } } if (slave.physicalAge <= 3) { - if (slave.balls >= 25) { - if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); - } else { - if (canWalk(slave)) { - r.push(`${His} balls are so massive that it is difficult for ${him} to move.`); - if (slave.muscles > 95) { - r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, using ${his} arms to support them.`); - } else if (slave.muscles > 30) { - r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks carrying ${his} testicles in any way ${he} can.`); - } else if (slave.muscles > 5) { - r.push(`${He} requires assistance to get to ${his} feet, and tries to rest ${his} huge balls on the ground whenever ${he} can.`); - } else { - r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated so ${his} enormous balls don't weigh ${him} down as much.`); - } - } else if (canMove(slave)) { - r.push(`${His} balls are so massive that it is difficult for ${him} to move at all.`); - if (slave.muscles > 95) { - r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, dragging ${his} testicles along behind ${him}.`); - } else if (slave.muscles > 30) { - r.push(`${He} can barely manage to lift ${his} testicles, and finds it exhausting to drag them everywhere.`); - } else if (slave.muscles > 5) { - r.push(`${He} requires assistance to get ${his} testicles off the ground, and tries avoid moving them whenever ${he} can.`); - } else { - r.push(`${He} requires assistance to get ${his} testicles off the ground, and can barely manage to drag them along behind ${him}.`); - } - } else if (slave.balls >= 100) { - r.push(`${His} testicles each dwarf ${him}, making ${him} almost entirely testicle.`); - } else { - r.push(`${His} testicles each dwarf ${his} torso, making ${him} almost entirely testicle.`); - } - if (slave.balls > 90) { - if (V.ballsAccessibility === 1) { - r.push(`Fortunately for ${him}, the penthouse is adapted for daily life with balls`); - } else { - if (market) { - r.push(`${He}'ll have`); - } else { - r.push(`${He} has`); - } - r.push(`trouble living in your penthouse, which is not designed for ${girl}s with testicles`); - } - r.push(`wider than a standard doorway.`); - } - } - } + massiveTesticles1(); } else if (slave.physicalAge <= 12) { if (slave.balls >= 50) { if (slave.fuckdoll > 0) { @@ -1543,52 +1183,7 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) { } } } else if (slave.physicalAge > 12) { - if (slave.balls > 70) { - if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); - } else { - if (canWalk(slave)) { - r.push(`${His} balls are so massive that it is difficult for ${him} to move.`); - if (slave.muscles > 95) { - r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, using ${his} arms to support them.`); - } else if (slave.muscles > 30) { - r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks carrying ${his} testicles in any way ${he} can.`); - } else if (slave.muscles > 5) { - r.push(`${He} requires assistance to get to ${his} feet, and tries to rest ${his} huge balls on the ground whenever ${he} can.`); - } else { - r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated so ${his} enormous balls don't weigh ${him} down as much.`); - } - } else if (canMove(slave)) { - r.push(`${His} balls are so massive that it is difficult for ${him} to move at all.`); - if (slave.muscles > 95) { - r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, dragging ${his} testicles along behind ${him}.`); - } else if (slave.muscles > 30) { - r.push(`${He} can barely manage to lift ${his} testicles, and finds it exhausting to drag them everywhere.`); - } else if (slave.muscles > 5) { - r.push(`${He} requires assistance to get ${his} testicles off the ground, and tries avoid moving them whenever ${he} can.`); - } else { - r.push(`${He} requires assistance to get ${his} testicles off the ground, and can barely manage to drag them along behind ${him}.`); - } - } else if (slave.balls >= 100) { - r.push(`Together, ${his} testicles are nearly the same size as ${him}, making ${him} about half testicle.`); - } else { - r.push(`Together, ${his} testicles are nearly the same size as ${his} torso, making ${him} about half testicle.`); - } - if (slave.balls > 90) { - if (V.ballsAccessibility === 1) { - r.push(`Fortunately for ${him}, the penthouse is adapted for daily life with balls`); - } else { - if (market) { - r.push(`${He}'ll have`); - } else { - r.push(`${He} has`); - } - r.push(`trouble living in your penthouse, which is not designed for ${girl}s with testicles`); - } - r.push(`wider than a standard doorway.`); - } - } - } + massiveTesticles2(); } if (slave.prostate > 2) { r.push(`The area above ${his} crotch has a slight swell to it from ${his} prostate implant. A constant dribble of precum streams from the hole; ${his} artificially hyperactive prostate keeps ${him} that way.`); @@ -1716,248 +1311,12 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) { if (slave.scrotum !== 0) { r.push(`${He} has no penis, just a tiny hole above`); - switch (slave.balls) { - case 6: - r.push(`a gigantic, clearly unnatural pair of`); - if (V.showDickCMs === 1) { - r.push(`testicles, about ${ballsToEitherUnit(slave.balls)} long`); - } else{ - r.push(`testicles.`); - } - break; - case 5: - r.push(`a huge pair of`); - if (V.showDickCMs === 1) { - r.push(`testicles, about ${ballsToEitherUnit(slave.balls)} long`); - } else{ - r.push(`testicles.`); - } - break; - case 4: - r.push(`a big pair of`); - if (V.showDickCMs === 1) { - r.push(`testicles, about ${ballsToEitherUnit(slave.balls)} long`); - } else{ - r.push(`testicles.`); - } - break; - case 3: - r.push(`an average pair of`); - if (V.showDickCMs === 1) { - r.push(`testicles, about ${ballsToEitherUnit(slave.balls)} long`); - } else{ - r.push(`testicles.`); - } - break; - case 2: - r.push(`a small pair of`); - if (V.showDickCMs === 1) { - r.push(`testicles, about ${ballsToEitherUnit(slave.balls)} long`); - } else{ - r.push(`testicles.`); - } - break; - case 1: - r.push(`a soft little trace of scrotum, since ${his} testicles are so small they have retreated up into ${his} abdomen.`); - break; - case 0: - r.push(`smooth ${slave.skin} skin.`); - break; - default: - r.push(`a hypertrophied, clearly unnatural pair of testicles,`); - if (V.showDickCMs === 1) { - r.push(`about ${ballsToEitherUnit(slave.balls)} long,`); - } - r.push(`a true masterpiece of modern growth hormone treatment.`); - break; - } + ballSize(); if (slave.fuckdoll === 0 && slave.balls > 0 && slave.scrotum > 0) { - const scrotalFullness = slave.scrotum - slave.balls; - if (slave.balls > 90) { - if (scrotalFullness < -1) { - r.push(`${His} poor scrotum is agonizingly overfilled and looks ready to burst. ${He} must be in constant pain.`); - } else if (scrotalFullness === -1) { - r.push(`${His} poor scrotum is so overfilled, every little vein is visible. ${He} must be in constant discomfort.`); - } else if (scrotalFullness === 0) { - r.push(`${His} comfortable scrotum allows them to hang massively`); - if (hasBothLegs(slave)) { - r.push(`between ${his} legs.`); - } else { - r.push(`from ${his}`); - if (isAmputee(slave)) { - r.push(`limbless`); - } - r.push(`torso.`); - } - } else { - r.push(`Their weight and size has stretched ${his} scrotum downward, so that they`); - if (hasAnyLegs(slave)) { - r.push(`drag along the floor.`); - } else { - r.push(`hang far from ${his}`); - if (isAmputee(slave)) { - r.push(`limbless`); - } - r.push(`torso.`); - } - } - } else if (slave.balls >= 20) { - if (scrotalFullness < -1) { - r.push(`${His} poor scrotum is agonizingly overfilled and taut. ${He} must be in constant pain.`); - } else if (scrotalFullness === -1) { - r.push(`${His} poor scrotum is so overfilled, every little vein is visible. ${He} must be in constant discomfort.`); - } else if (scrotalFullness === 0) { - r.push(`${His} comfortable scrotum allows them to hang massively`); - if (hasBothLegs(slave)) { - r.push(`between ${his} legs.`); - } else { - r.push(`from ${his}`); - if (isAmputee(slave)) { - r.push(`limbless`); - } - r.push(`torso.`); - } - } else { - r.push(`Their weight and size has stretched ${his} scrotum downward, so that they dangle`); - if (hasAnyLegs(slave)) { - r.push(`to ${his}`); - if (hasBothLegs(slave)) { - r.push(`knees.`); - } else{ - r.push(`knee.`); - } - } else { - r.push(`quite the distance from ${his}`); - if (isAmputee(slave)) { - r.push(`limbless`); - } - r.push(`torso.`); - } - } - } else if (slave.balls > 5) { - if (scrotalFullness < -1) { - r.push(`${His} poor scrotum is so overfilled, every little vein is visible. ${He} must be in agony.`); - } else if (scrotalFullness === -1) { - r.push(`They're held against ${his} base by a tight scrotum that permits them little movement.`); - } else if (scrotalFullness === 0) { - r.push(`${His} comfortable scrotum allows them to hang massively`); - if (hasBothLegs(slave)) { - r.push(`between ${his} legs.`); - } else { - r.push(`from ${his}`); - if (isAmputee(slave)) { - r.push(`limbless`); - } - r.push(`torso.`); - } - } else { - r.push(`Their weight has stretched ${his} scrotum downward, so that they dangle`); - if (hasAnyLegs(slave)) { - r.push(`halfway to ${his}`); - if (hasBothLegs(slave)) { - r.push(`knees.`); - } else{ - r.push(`knee.`); - } - } else { - r.push(`some distance from ${his}`); - if (isAmputee(slave)) { - r.push(`limbless`); - } - r.push(`torso.`); - } - } - } else if (slave.balls > 3) { - if (scrotalFullness < -1) { - r.push(`They're too big for ${his} tiny scrotum, which is stretched tight over each ball.`); - } else if (scrotalFullness === -1) { - r.push(`They're held against ${his} base by a tight scrotum that permits them little movement.`); - } else if (scrotalFullness === 0) { - r.push(`${His} soft scrotum allows them to rest comfortably`); - if (hasBothLegs(slave)) { - r.push(`between ${his} legs.`); - } else { - r.push(`beneath ${his}`); - if (isAmputee(slave)) { - r.push(`limbless`); - } - r.push(`torso.`); - } - } else { - r.push(`${He} has a loose, dangling scrotum that allows them to swing`); - if (hasBothLegs(slave)) { - r.push(`between ${his} legs.`); - } else { - r.push(`from ${his}`); - if (isAmputee(slave)) { - r.push(`limbless`); - } - r.push(`torso.`); - } - } - } else if (slave.balls > 1) { - if (scrotalFullness < 0) { - r.push(`They're held tightly by a very minimal scrotum that turns them into a soft little bump.`); - } else if (scrotalFullness === 0) { - r.push(`${His} comfortable little scrotum allows them to rest softly.`); - } else { - r.push(`They're almost lost in ${his} big soft scrotum, wrinkled for lack of anything to fill it properly.`); - } - } else { - if (scrotalFullness === 0) { - r.push(`${He} has a soft little trace of scrotum.`); - } else { - r.push(`They've left ${his} scrotum soft and empty.`); - } - } + ballsVariant1(); } if (slave.physicalAge <= 3) { - if (slave.balls >= 25) { - if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); - } else { - if (canWalk(slave)) { - r.push(`${His} balls are so massive that it is difficult for ${him} to move.`); - if (slave.muscles > 95) { - r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, using ${his} arms to support them.`); - } else if (slave.muscles > 30) { - r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks carrying ${his} testicles in any way ${he} can.`); - } else if (slave.muscles > 5) { - r.push(`${He} requires assistance to get to ${his} feet, and tries to rest ${his} huge balls on the ground whenever ${he} can.`); - } else { - r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated so ${his} enormous balls don't weigh ${him} down as much.`); - } - } else if (canMove(slave)) { - r.push(`${His} balls are so massive that it is difficult for ${him} to move at all.`); - if (slave.muscles > 95) { - r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, dragging ${his} testicles along behind ${him}.`); - } else if (slave.muscles > 30) { - r.push(`${He} can barely manage to lift ${his} testicles, and finds it exhausting to drag them everywhere.`); - } else if (slave.muscles > 5) { - r.push(`${He} requires assistance to get ${his} testicles off the ground, and tries avoid moving them whenever ${he} can.`); - } else { - r.push(`${He} requires assistance to get ${his} testicles off the ground, and can barely manage to drag them along behind ${him}.`); - } - } else if (slave.balls >= 100) { - r.push(`${His} testicles each dwarf ${him}, making ${him} almost entirely testicle.`); - } else { - r.push(`${His} testicles each dwarf ${his} torso, making ${him} almost entirely testicle.`); - } - if (slave.balls > 90) { - if (V.ballsAccessibility === 1) { - r.push(`Fortunately for ${him}, the penthouse is adapted for daily life with balls`); - } else { - if (market) { - r.push(`${He}'ll have`); - } else { - r.push(`${He} has`); - } - r.push(`trouble living in your penthouse, which is not designed for ${girl}s with testicles`); - } - r.push(`wider than a standard doorway.`); - } - } - } + massiveTesticles1(); } else if (slave.physicalAge <= 12) { if (slave.balls >= 50) { if (slave.fuckdoll > 0) { @@ -2006,52 +1365,7 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) { } } } else if (slave.physicalAge > 12) { - if (slave.balls > 70) { - if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); - } else { - if (canWalk(slave)) { - r.push(`${His} balls are so massive that it is difficult for ${him} to move.`); - if (slave.muscles > 95) { - r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, using ${his} arms to support them.`); - } else if (slave.muscles > 30) { - r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks carrying ${his} testicles in any way ${he} can.`); - } else if (slave.muscles > 5) { - r.push(`${He} requires assistance to get to ${his} feet, and tries to rest ${his} huge balls on the ground whenever ${he} can.`); - } else { - r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated so ${his} enormous balls don't weigh ${him} down as much.`); - } - } else if (canMove(slave)) { - r.push(`${His} balls are so massive that it is difficult for ${him} to move at all.`); - if (slave.muscles > 95) { - r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, dragging ${his} testicles along behind ${him}.`); - } else if (slave.muscles > 30) { - r.push(`${He} can barely manage to lift ${his} testicles, and finds it exhausting to drag them everywhere.`); - } else if (slave.muscles > 5) { - r.push(`${He} requires assistance to get ${his} testicles off the ground, and tries avoid moving them whenever ${he} can.`); - } else { - r.push(`${He} requires assistance to get ${his} testicles off the ground, and can barely manage to drag them along behind ${him}.`); - } - } else if (slave.balls >= 100) { - r.push(`Together, ${his} testicles are nearly the same size as ${him}, making ${him} about half testicle.`); - } else { - r.push(`Together, ${his} testicles are nearly the same size as ${his} torso, making ${him} about half testicle.`); - } - if (slave.balls > 90) { - if (V.ballsAccessibility === 1) { - r.push(`Fortunately for ${him}, the penthouse is adapted for daily life with balls`); - } else { - if (market) { - r.push(`${He}'ll have`); - } else { - r.push(`${He} has`); - } - r.push(`trouble living in your penthouse, which is not designed for ${girl}s with testicles`); - } - r.push(`wider than a standard doorway.`); - } - } - } + massiveTesticles2(); } if (slave.prostate > 2) { r.push(`The area above ${his} crotch has a slight swell to it from ${his} prostate implant. A constant dribble of precum streams from the hole and down ${his} testicles; ${his} artificially hyperactive prostate keeps ${him} that way.`); @@ -2196,4 +1510,301 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) { r.push(App.Desc.mods(slave, "testicle")); return r.join(" "); + + function ballsVariant1() { + const scrotalFullness = slave.scrotum - slave.balls; + if (slave.balls > 90) { + if (scrotalFullness < -1) { + r.push(`${His} poor scrotum is agonizingly overfilled and looks ready to burst. ${He} must be in constant pain.`); + } else if (scrotalFullness === -1) { + r.push(`${His} poor scrotum is so overfilled, every little vein is visible. ${He} must be in constant discomfort.`); + } else if (scrotalFullness === 0) { + r.push(`${His} comfortable scrotum allows them to hang massively`); + if (hasBothLegs(slave)) { + r.push(`between ${his} legs.`); + } else { + r.push(`from ${his}`); + if (isAmputee(slave)) { + r.push(`limbless`); + } + r.push(`torso.`); + } + } else { + r.push(`Their weight and size has stretched ${his} scrotum downward, so that they`); + if (hasAnyLegs(slave)) { + r.push(`drag along the floor.`); + } else { + r.push(`hang far from ${his}`); + if (isAmputee(slave)) { + r.push(`limbless`); + } + r.push(`torso.`); + } + } + } else if (slave.balls >= 20) { + if (scrotalFullness < -1) { + r.push(`${His} poor scrotum is agonizingly overfilled and taut. ${He} must be in constant pain.`); + } else if (scrotalFullness === -1) { + r.push(`${His} poor scrotum is so overfilled, every little vein is visible. ${He} must be in constant discomfort.`); + } else if (scrotalFullness === 0) { + r.push(`${His} comfortable scrotum allows them to hang massively`); + if (hasBothLegs(slave)) { + r.push(`between ${his} legs.`); + } else { + r.push(`from ${his}`); + if (isAmputee(slave)) { + r.push(`limbless`); + } + r.push(`torso.`); + } + } else { + r.push(`Their weight and size has stretched ${his} scrotum downward, so that they dangle`); + if (hasAnyLegs(slave)) { + r.push(`to ${his}`); + if (hasBothLegs(slave)) { + r.push(`knees.`); + } else { + r.push(`knee.`); + } + } else { + r.push(`quite the distance from ${his}`); + if (isAmputee(slave)) { + r.push(`limbless`); + } + r.push(`torso.`); + } + } + } else if (slave.balls > 5) { + if (scrotalFullness < -1) { + r.push(`${His} poor scrotum is so overfilled, every little vein is visible. ${He} must be in agony.`); + } else if (scrotalFullness === -1) { + r.push(`They're held against ${his} base by a tight scrotum that permits them little movement.`); + } else if (scrotalFullness === 0) { + r.push(`${His} comfortable scrotum allows them to hang massively`); + if (hasBothLegs(slave)) { + r.push(`between ${his} legs.`); + } else { + r.push(`from ${his}`); + if (isAmputee(slave)) { + r.push(`limbless`); + } + r.push(`torso.`); + } + } else { + r.push(`Their weight has stretched ${his} scrotum downward, so that they dangle`); + if (hasAnyLegs(slave)) { + r.push(`halfway to ${his}`); + if (hasBothLegs(slave)) { + r.push(`knees.`); + } else { + r.push(`knee.`); + } + } else { + r.push(`some distance from ${his}`); + if (isAmputee(slave)) { + r.push(`limbless`); + } + r.push(`torso.`); + } + } + } else if (slave.balls > 3) { + if (scrotalFullness < -1) { + r.push(`They're too big for ${his} tiny scrotum, which is stretched tight over each ball.`); + } else if (scrotalFullness === -1) { + r.push(`They're held against ${his} base by a tight scrotum that permits them little movement.`); + } else if (scrotalFullness === 0) { + r.push(`${His} soft scrotum allows them to rest comfortably`); + if (hasBothLegs(slave)) { + r.push(`between ${his} legs.`); + } else { + r.push(`beneath ${his}`); + if (isAmputee(slave)) { + r.push(`limbless`); + } + r.push(`torso.`); + } + } else { + r.push(`${He} has a loose, dangling scrotum that allows them to swing`); + if (hasBothLegs(slave)) { + r.push(`between ${his} legs.`); + } else { + r.push(`from ${his}`); + if (isAmputee(slave)) { + r.push(`limbless`); + } + r.push(`torso.`); + } + } + } else if (slave.balls > 1) { + if (scrotalFullness < 0) { + r.push(`They're held tightly by a very minimal scrotum that turns them into a soft little bump.`); + } else if (scrotalFullness === 0) { + r.push(`${His} comfortable little scrotum allows them to rest softly.`); + } else { + r.push(`They're almost lost in ${his} big soft scrotum, wrinkled for lack of anything to fill it properly.`); + } + } else { + if (scrotalFullness === 0) { + r.push(`${He} has a soft little trace of scrotum.`); + } else { + r.push(`They've left ${his} scrotum soft and empty.`); + } + } + } + + function massiveTesticles1() { + if (slave.balls >= 25) { + if (slave.fuckdoll > 0) { + r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); + } else { + if (canWalk(slave)) { + r.push(`${His} balls are so massive that it is difficult for ${him} to move.`); + if (slave.muscles > 95) { + r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, using ${his} arms to support them.`); + } else if (slave.muscles > 30) { + r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks carrying ${his} testicles in any way ${he} can.`); + } else if (slave.muscles > 5) { + r.push(`${He} requires assistance to get to ${his} feet, and tries to rest ${his} huge balls on the ground whenever ${he} can.`); + } else { + r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated so ${his} enormous balls don't weigh ${him} down as much.`); + } + } else if (canMove(slave)) { + r.push(`${His} balls are so massive that it is difficult for ${him} to move at all.`); + if (slave.muscles > 95) { + r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, dragging ${his} testicles along behind ${him}.`); + } else if (slave.muscles > 30) { + r.push(`${He} can barely manage to lift ${his} testicles, and finds it exhausting to drag them everywhere.`); + } else if (slave.muscles > 5) { + r.push(`${He} requires assistance to get ${his} testicles off the ground, and tries avoid moving them whenever ${he} can.`); + } else { + r.push(`${He} requires assistance to get ${his} testicles off the ground, and can barely manage to drag them along behind ${him}.`); + } + } else if (slave.balls >= 100) { + r.push(`${His} testicles each dwarf ${him}, making ${him} almost entirely testicle.`); + } else { + r.push(`${His} testicles each dwarf ${his} torso, making ${him} almost entirely testicle.`); + } + if (slave.balls > 90) { + if (V.ballsAccessibility === 1) { + r.push(`Fortunately for ${him}, the penthouse is adapted for daily life with balls`); + } else { + if (market) { + r.push(`${He}'ll have`); + } else { + r.push(`${He} has`); + } + r.push(`trouble living in your penthouse, which is not designed for ${girl}s with testicles`); + } + r.push(`wider than a standard doorway.`); + } + } + } + } + + function massiveTesticles2() { + if (slave.balls > 70) { + if (slave.fuckdoll > 0) { + r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); + } else { + if (canWalk(slave)) { + r.push(`${His} balls are so massive that it is difficult for ${him} to move.`); + if (slave.muscles > 95) { + r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, using ${his} arms to support them.`); + } else if (slave.muscles > 30) { + r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks carrying ${his} testicles in any way ${he} can.`); + } else if (slave.muscles > 5) { + r.push(`${He} requires assistance to get to ${his} feet, and tries to rest ${his} huge balls on the ground whenever ${he} can.`); + } else { + r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated so ${his} enormous balls don't weigh ${him} down as much.`); + } + } else if (canMove(slave)) { + r.push(`${His} balls are so massive that it is difficult for ${him} to move at all.`); + if (slave.muscles > 95) { + r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, dragging ${his} testicles along behind ${him}.`); + } else if (slave.muscles > 30) { + r.push(`${He} can barely manage to lift ${his} testicles, and finds it exhausting to drag them everywhere.`); + } else if (slave.muscles > 5) { + r.push(`${He} requires assistance to get ${his} testicles off the ground, and tries avoid moving them whenever ${he} can.`); + } else { + r.push(`${He} requires assistance to get ${his} testicles off the ground, and can barely manage to drag them along behind ${him}.`); + } + } else if (slave.balls >= 100) { + r.push(`Together, ${his} testicles are nearly the same size as ${him}, making ${him} about half testicle.`); + } else { + r.push(`Together, ${his} testicles are nearly the same size as ${his} torso, making ${him} about half testicle.`); + } + if (slave.balls > 90) { + if (V.ballsAccessibility === 1) { + r.push(`Fortunately for ${him}, the penthouse is adapted for daily life with balls`); + } else { + if (market) { + r.push(`${He}'ll have`); + } else { + r.push(`${He} has`); + } + r.push(`trouble living in your penthouse, which is not designed for ${girl}s with testicles`); + } + r.push(`wider than a standard doorway.`); + } + } + } + } + + function ballSize() { + switch (slave.balls) { + case 0: + r.push(`smooth ${slave.skin} skin.`); + break; + case 1: + r.push(`a soft little trace of scrotum, since ${his} testicles are so small they have retreated up into ${his} abdomen.`); + break; + case 2: + r.push(`a small pair of`); + if (V.showDickCMs === 1) { + r.push(`testicles, about ${ballsToEitherUnit(slave.balls)} long`); + } else { + r.push(`testicles.`); + } + break; + case 3: + r.push(`an average pair of`); + if (V.showDickCMs === 1) { + r.push(`testicles, about ${ballsToEitherUnit(slave.balls)} long`); + } else { + r.push(`testicles.`); + } + break; + case 4: + r.push(`a big pair of`); + if (V.showDickCMs === 1) { + r.push(`testicles, about ${ballsToEitherUnit(slave.balls)} long`); + } else { + r.push(`testicles.`); + } + break; + case 5: + r.push(`a huge pair of`); + if (V.showDickCMs === 1) { + r.push(`testicles, about ${ballsToEitherUnit(slave.balls)} long`); + } else { + r.push(`testicles.`); + } + break; + case 6: + r.push(`a gigantic, clearly unnatural pair of`); + if (V.showDickCMs === 1) { + r.push(`testicles, about ${ballsToEitherUnit(slave.balls)} long`); + } else { + r.push(`testicles.`); + } + break; + default: + r.push(`a hypertrophied, clearly unnatural pair of testicles,`); + if (V.showDickCMs === 1) { + r.push(`about ${ballsToEitherUnit(slave.balls)} long,`); + } + r.push(`a true masterpiece of modern growth hormone treatment.`); + break; + } + } }; diff --git a/src/npc/descriptions/crotch/dickAccessory.js b/src/npc/descriptions/crotch/dickAccessory.js index a6d498ea02667cd1b8456bf66c5f91043918b795..46a1c846d10ce01997468bf73c438da62c4c34a8 100644 --- a/src/npc/descriptions/crotch/dickAccessory.js +++ b/src/npc/descriptions/crotch/dickAccessory.js @@ -12,7 +12,7 @@ App.Desc.dickAccessory = function(slave) { if (slave.energy > 95) { r.push(`The poor nympho looks painfully frustrated by this, and a long string of precum is dangling from the hole in the bottom of the cage.`); } - if (V.arcologies[0].FSRestart !== "unset") { + if (V.arcologies[0].FSRestart !== "unset") { r.push(`This pleases the Societal Elite.`); } } diff --git a/src/npc/descriptions/style/clothing.js b/src/npc/descriptions/style/clothing.js index 44500af21affd83fdeab18571c2973c5af368e51..7c8b2bdbe611251e4a6065c5748b4a519a09dd67 100644 --- a/src/npc/descriptions/style/clothing.js +++ b/src/npc/descriptions/style/clothing.js @@ -32,7 +32,8 @@ App.Desc.clothing = function(slave, {market, eventDescription} = {}) { r.push(App.Desc.footwear(slave)); } else { r.push(`a pretty silk blouse.`); - } break; + } + break; case "chains": r.push(`looped tightly around ${his} body wherever they can make ${his} most uncomfortable.`); if (hasAnyLegs(slave)) { diff --git a/src/npc/descriptions/womb/pregnancy.js b/src/npc/descriptions/womb/pregnancy.js index f0a2a774782ee18a731524e12e3ebf0d9025f90f..63b20b5a8d270ceeb31d3c8fa716f7dde913ad4f 100644 --- a/src/npc/descriptions/womb/pregnancy.js +++ b/src/npc/descriptions/womb/pregnancy.js @@ -96,103 +96,22 @@ App.Desc.pregnancy = function(slave, {market, eventDescription} = {}) { r.push(`stretched by ${his} straining ${slave.bellyImplant}cc belly implant. It is well past its recommended capacity and at risk of rupturing.`); } else if (slave.bellyPreg >= 600000) { r.push(`${He} is <span class="pink">dangerously pregnant,</span> ${his} overburdened womb is filled with`); - if (slave.preg >= slave.pregData.normalBirth * 1.375) { - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is horrifically overdue; ${he} should have given birth a staggering ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); - } else if (slave.preg >= slave.pregData.normalBirth * 1.25) { - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is extremely overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); - } else if (slave.preg >= slave.pregData.normalBirth * 1.075) { - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is very overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); - } else { - r.push(`${slave.pregType} babies.`); - } - r.push(App.Desc.superfetation(slave, {market: market})); + fullBelly(); } else if (slave.bellyImplant >= 600000) { r.push(`${He} looks <span class="pink">dangerously pregnant.</span> ${His} middle is massively stretched by ${his} absurdly overfilled ${slave.bellyImplant}cc belly implant.`); } else if (slave.bellyPreg >= 450000) { r.push(`${He} is <span class="pink">grotesquely pregnant,</span> ${his} womb is packed with`); - if (slave.preg >= slave.pregData.normalBirth * 1.375) { - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is horrifically overdue; ${he} should have given birth a staggering ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); - } else if (slave.preg >= slave.pregData.normalBirth * 1.25) { - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is extremely overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); - } else if (slave.preg >= slave.pregData.normalBirth * 1.075) { - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is very overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); - } else { - r.push(`${slave.pregType} babies.`); - } - r.push(App.Desc.superfetation(slave, {market: market})); + fullBelly(); } else if (slave.bellyImplant >= 450000) { r.push(`${He} looks <span class="pink">absurdly pregnant.</span> ${His} middle is massively stretched by ${his} overfilled ${slave.bellyImplant}cc belly implant.`); } else if (slave.bellyPreg >= 300000) { r.push(`${He} is <span class="pink">absurdly pregnant</span> with`); if (slave.preg >= slave.pregData.normalBirth * 1.375) { - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is horrifically overdue; ${he} should have given birth a staggering ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + overgrownBaby1(); } else if (slave.preg >= slave.pregData.normalBirth * 1.25) { - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is extremely overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + overGrownBaby2(); } else if (slave.preg >= slave.pregData.normalBirth * 1.075) { - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is very overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + overgrownBaby3(); } else { r.push(`${slave.pregType} children.`); } @@ -203,45 +122,16 @@ App.Desc.pregnancy = function(slave, {market, eventDescription} = {}) { r.push(`${He} is`); if (slave.preg >= slave.pregData.normalBirth * 1.375) { r.push(`<span class="pink">obscenely pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is horrifically overdue; ${he} should have given birth a staggering ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + overgrownBaby1(); } else if (slave.preg >= slave.pregData.normalBirth * 1.25) { r.push(`<span class="pink">obscenely pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is extremely overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + overGrownBaby2(); } else if (slave.preg >= slave.pregData.normalBirth * 1.075) { r.push(`<span class="pink">obscenely pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is very overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + overgrownBaby3(); } else if (slave.pregType > 9) { r.push(`<span class="pink">obscenely pregnant</span> with`); - if (slave.pregType >= 50) { - r.push(`an absurd number of children.`); - } else if (slave.pregType >= 30) { - r.push(`far too many children.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} children.`); - } else { - r.push(`${pregNumberName(slave.pregType, 2)}.`); - } + manyChildren(); } else { r.push(`<span class="pink">obscenely pregnant:</span> ${he}'s`); if (slave.pregType === 9) { @@ -257,46 +147,13 @@ App.Desc.pregnancy = function(slave, {market, eventDescription} = {}) { r.push(`${He} is`); if (slave.bellyPreg >= 105000) { if (slave.preg >= slave.pregData.normalBirth * 1.375) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is horrifically overdue; ${he} should have given birth a staggering ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby1(); } else if (slave.preg >= slave.pregData.normalBirth * 1.25) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is extremely overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby2(); } else if (slave.preg >= slave.pregData.normalBirth * 1.075) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is very overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby3(); } else if (slave.pregType > 8) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType >= 50) { - r.push(`an absurd number of children.`); - } else if (slave.pregType >= 30) { - r.push(`far too many children.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} children.`); - } else { - r.push(`${pregNumberName(slave.pregType, 2)}.`); - } + massivelyPregnantManyChildren(); } else { r.push(`<span class="pink">massively pregnant:</span> ${he}'s`); if (slave.pregType === 8) { @@ -307,46 +164,13 @@ App.Desc.pregnancy = function(slave, {market, eventDescription} = {}) { } } else if (slave.bellyPreg >= 90000) { if (slave.preg >= slave.pregData.normalBirth * 1.375) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is horrifically overdue; ${he} should have given birth a staggering ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby1(); } else if (slave.preg >= slave.pregData.normalBirth * 1.25) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is extremely overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby2(); } else if (slave.preg >= slave.pregData.normalBirth * 1.075) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is very overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby3(); } else if (slave.pregType > 7) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType >= 50) { - r.push(`an absurd number of children.`); - } else if (slave.pregType >= 30) { - r.push(`far too many children.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} children.`); - } else { - r.push(`${pregNumberName(slave.pregType, 2)}.`); - } + massivelyPregnantManyChildren(); } else { r.push(`<span class="pink">massively pregnant:</span> ${he}'s`); if (slave.pregType === 7) { @@ -363,46 +187,13 @@ App.Desc.pregnancy = function(slave, {market, eventDescription} = {}) { } } else if (slave.bellyPreg >= 75000) { if (slave.preg >= slave.pregData.normalBirth * 1.375) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is horrifically overdue; ${he} should have given birth a staggering ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby1(); } else if (slave.preg >= slave.pregData.normalBirth * 1.25) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is extremely overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby2(); } else if (slave.preg >= slave.pregData.normalBirth * 1.075) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is very overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby3(); } else if (slave.pregType > 6) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType >= 50) { - r.push(`an absurd number of children.`); - } else if (slave.pregType >= 30) { - r.push(`far too many children.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} children.`); - } else { - r.push(`${pregNumberName(slave.pregType, 2)}.`); - } + massivelyPregnantManyChildren(); } else { r.push(`<span class="pink">massively pregnant:</span> ${he}'s`); if (slave.pregType === 6) { @@ -415,46 +206,13 @@ App.Desc.pregnancy = function(slave, {market, eventDescription} = {}) { } } else if (slave.bellyPreg >= 60000) { if (slave.preg >= slave.pregData.normalBirth * 1.375) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is horrifically overdue; ${he} should have given birth a staggering ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby1(); } else if (slave.preg >= slave.pregData.normalBirth * 1.25) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is extremely overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby2(); } else if (slave.preg >= slave.pregData.normalBirth * 1.075) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is very overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby3(); } else if (slave.pregType > 5) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType >= 50) { - r.push(`an absurd number of children.`); - } else if (slave.pregType >= 30) { - r.push(`far too many children.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} children.`); - } else { - r.push(`${pregNumberName(slave.pregType, 2)}.`); - } + massivelyPregnantManyChildren(); } else { r.push(`<span class="pink">massively pregnant:</span> ${he}'s`); if (slave.pregType === 5) { @@ -469,46 +227,13 @@ App.Desc.pregnancy = function(slave, {market, eventDescription} = {}) { } } else if (slave.bellyPreg >= 45000) { if (slave.preg >= slave.pregData.normalBirth * 1.375) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is horrifically overdue; ${he} should have given birth a staggering ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby1(); } else if (slave.preg >= slave.pregData.normalBirth * 1.25) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is extremely overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby2(); } else if (slave.preg >= slave.pregData.normalBirth * 1.075) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is very overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby3(); } else if (slave.pregType > 4) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType >= 50) { - r.push(`an absurd number of children.`); - } else if (slave.pregType >= 30) { - r.push(`far too many children.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} children.`); - } else { - r.push(`${pregNumberName(slave.pregType, 2)}.`); - } + massivelyPregnantManyChildren(); } else { r.push(`<span class="pink">massively pregnant:</span> ${he}'s`); if (slave.pregType === 4) { @@ -521,46 +246,13 @@ App.Desc.pregnancy = function(slave, {market, eventDescription} = {}) { } } else if (slave.bellyPreg >= 30000) { if (slave.preg >= slave.pregData.normalBirth * 1.375) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is horrifically overdue; ${he} should have given birth a staggering ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby1(); } else if (slave.preg >= slave.pregData.normalBirth * 1.25) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is extremely overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby2(); } else if (slave.preg >= slave.pregData.normalBirth * 1.075) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is very overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby3(); } else if (slave.pregType > 3) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType >= 50) { - r.push(`an absurd number of children.`); - } else if (slave.pregType >= 30) { - r.push(`far too many children.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} children.`); - } else { - r.push(`${pregNumberName(slave.pregType, 2)}.`); - } + massivelyPregnantManyChildren(); } else { r.push(`<span class="pink">massively pregnant:</span> ${he}'s`); if (slave.pregType === 3) { @@ -573,46 +265,13 @@ App.Desc.pregnancy = function(slave, {market, eventDescription} = {}) { } } else { if (slave.preg >= slave.pregData.normalBirth * 1.375) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is horrifically overdue; ${he} should have given birth a staggering ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby1(); } else if (slave.preg >= slave.pregData.normalBirth * 1.25) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is extremely overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby2(); } else if (slave.preg >= slave.pregData.normalBirth * 1.075) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType === 1) { - r.push(`a single overgrown baby.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} overgrown babies.`); - } else { - r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); - } - r.push(`${He} is very overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + massivelyPregnantOvergrownBaby3(); } else if (slave.pregType > 2) { - r.push(`<span class="pink">massively pregnant</span> with`); - if (slave.pregType >= 50) { - r.push(`an absurd number of children.`); - } else if (slave.pregType >= 30) { - r.push(`far too many children.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} children.`); - } else { - r.push(`${pregNumberName(slave.pregType, 2)}.`); - } + massivelyPregnantManyChildren(); } else { r.push(`<span class="pink">massively pregnant:</span> ${he}'s`); if (slave.pregType === 2) { @@ -641,15 +300,7 @@ App.Desc.pregnancy = function(slave, {market, eventDescription} = {}) { r.push(`${He} is`); if (slave.pregType > 2) { r.push(`<span class="pink">hugely pregnant,</span> despite how early in ${his} pregnancy ${he} is: ${he}'s carrying`); - if (slave.pregType >= 50) { - r.push(`an absurd number of children.`); - } else if (slave.pregType >= 30) { - r.push(`far too many children.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} children.`); - } else { - r.push(`${pregNumberName(slave.pregType, 2)}.`); - } + manyChildren(); } else { r.push(`<span class="pink">hugely pregnant:</span> ${he}'s`); if (slave.pregType === 2) { @@ -665,15 +316,7 @@ App.Desc.pregnancy = function(slave, {market, eventDescription} = {}) { r.push(`${He} is`); if (slave.pregType > 2) { r.push(`<span class="pink">very pregnant,</span> despite how early in ${his} pregnancy ${he} is: ${he}'s carrying`); - if (slave.pregType >= 50) { - r.push(`an absurd number of children.`); - } else if (slave.pregType >= 30) { - r.push(`far too many children.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} children.`); - } else { - r.push(`${pregNumberName(slave.pregType, 2)}.`); - } + manyChildren(); } else { r.push(`<span class="pink">very pregnant:</span>`); if (slave.pregType === 2) { @@ -689,15 +332,7 @@ App.Desc.pregnancy = function(slave, {market, eventDescription} = {}) { r.push(`${He} is`); if (slave.pregType > 2) { r.push(`<span class="pink">visibly pregnant,</span> despite how early in ${his} pregnancy ${he} is: ${he}'s carrying`); - if (slave.pregType >= 50) { - r.push(`an absurd number of children.`); - } else if (slave.pregType >= 30) { - r.push(`far too many children.`); - } else if (slave.pregType >= 10) { - r.push(`${slave.pregType} children.`); - } else { - r.push(`${pregNumberName(slave.pregType, 2)}.`); - } + manyChildren(); } else { r.push(`<span class="pink">visibly pregnant.</span>`); } @@ -792,7 +427,7 @@ App.Desc.pregnancy = function(slave, {market, eventDescription} = {}) { if (!sameFather) { r.push(`tests report multiple different sources.`); } else { - if (slaveWD.litterData[slaveWD.litters.length-1][0].age <= slave.pregData.normalBirth / 8) { + if (slaveWD.litterData[slaveWD.litters.length - 1][0].age <= slave.pregData.normalBirth / 8) { r.push(`all of them too young to tell the father of.`); } else if (slave.pregSource === -7) { r.push(`all of them modified children from the gene lab.`); @@ -968,4 +603,82 @@ App.Desc.pregnancy = function(slave, {market, eventDescription} = {}) { r.push(`${His} belly is <span class="coral">large enough to be in the way,</span> both in daily affairs and during sex.`); } return r.join(" "); + + function fullBelly() { + if (slave.preg >= slave.pregData.normalBirth * 1.375) { + overgrownBaby1(); + } else if (slave.preg >= slave.pregData.normalBirth * 1.25) { + overGrownBaby2(); + } else if (slave.preg >= slave.pregData.normalBirth * 1.075) { + overgrownBaby3(); + } else { + r.push(`${slave.pregType} babies.`); + } + r.push(App.Desc.superfetation(slave, {market: market})); + } + + function massivelyPregnantOvergrownBaby1() { + r.push(`<span class="pink">massively pregnant</span> with`); + overgrownBaby1(); + } + + function overgrownBaby1() { + if (slave.pregType === 1) { + r.push(`a single overgrown baby.`); + } else if (slave.pregType >= 10) { + r.push(`${slave.pregType} overgrown babies.`); + } else { + r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); + } + r.push(`${He} is horrifically overdue; ${he} should have given birth a staggering ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + } + + function massivelyPregnantOvergrownBaby2() { + r.push(`<span class="pink">massively pregnant</span> with`); + overGrownBaby2(); + } + + function overGrownBaby2() { + if (slave.pregType === 1) { + r.push(`a single overgrown baby.`); + } else if (slave.pregType >= 10) { + r.push(`${slave.pregType} overgrown babies.`); + } else { + r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); + } + r.push(`${He} is extremely overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + } + + function massivelyPregnantOvergrownBaby3() { + r.push(`<span class="pink">massively pregnant</span> with`); + overgrownBaby3(); + } + + function overgrownBaby3() { + if (slave.pregType === 1) { + r.push(`a single overgrown baby.`); + } else if (slave.pregType >= 10) { + r.push(`${slave.pregType} overgrown babies.`); + } else { + r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`); + } + r.push(`${He} is very overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`); + } + + function massivelyPregnantManyChildren() { + r.push(`<span class="pink">massively pregnant</span> with`); + manyChildren(); + } + + function manyChildren() { + if (slave.pregType >= 50) { + r.push(`an absurd number of children.`); + } else if (slave.pregType >= 30) { + r.push(`far too many children.`); + } else if (slave.pregType >= 10) { + r.push(`${slave.pregType} children.`); + } else { + r.push(`${pregNumberName(slave.pregType, 2)}.`); + } + } }; diff --git a/src/player/js/playerJS.js b/src/player/js/playerJS.js deleted file mode 100644 index a9a5df36f88e508c405884ac3bc9097c44605e4f..0000000000000000000000000000000000000000 --- a/src/player/js/playerJS.js +++ /dev/null @@ -1,656 +0,0 @@ -globalThis.basePlayer = function() { - return new App.Entity.PlayerState(); -}; - -/** - * Helper function returning PC's title - * @returns {string} - */ -globalThis.properTitle = function() { - const PC = V.PC; - if (PC.customTitle) { - return PC.customTitle; - } else if (PC.title !== 0) { - return "Sir"; - } else { - return "Ma'am"; - } -}; - -/** - * Helper function returning slave's title for PC in situations where getWrittenTitle() is inappropriate - * @returns {string} - */ -globalThis.properMaster = function() { - const PC = V.PC; - if (PC.customTitle) { - return PC.customTitle; - } else if (PC.title !== 0) { - return "Master"; - } else { - return "Mistress"; - } -}; - -globalThis.PlayerName = function() { - const names = V.PC.slaveSurname ? [V.PC.slaveName, V.PC.slaveSurname] : [V.PC.slaveName]; - if ((V.surnameOrder !== 1 && ["Cambodian", "Chinese", "Hungarian", "Japanese", "Korean", "Mongolian", "Taiwanese", "Vietnamese"].includes(V.PC.nationality)) || (V.surnameOrder === 2)) { - names.reverse(); - } - return names.join(" "); -}; - -globalThis.PCTitle = function() { - const titles = []; - - let title = PlayerName(); - - if (V.cheater === 1) { - title = (`${title} the Cheater`); - } else if (V.arcologies[0].FSRestart > 10) { - title = (`${title} of the Societal Elite`); - } else if (V.rep > 18000) { - title = (`${title} the Great`); - } else if (V.rep > 17000) { - title = (`the exalted ${title}`); - } else if (V.rep > 16000) { - title = (`the illustrious ${title}`); - } else if (V.rep > 15000) { - title = (`the prestigious ${title}`); - } else if (V.rep > 14000) { - title = (`the renowned ${title}`); - } else if (V.rep > 13000) { - title = (`the famed ${title}`); - } else if (V.rep > 12000) { - title = (`the celebrated ${title}`); - } else if (V.rep > 11000) { - title = (`the honored ${title}`); - } else if (V.rep > 10000) { - title = (`the acclaimed ${title}`); - } else if (V.rep > 9000) { - title = (`the eminent ${title}`); - } else if (V.rep > 8250) { - title = (`the prominent ${title}`); - } else if (V.rep > 7500) { - title = (`the distinguished ${title}`); - } else if (V.rep > 6750) { - title = (`the admired ${title}`); - } else if (V.rep > 6000) { - title = (`the esteemed ${title}`); - } else if (V.rep > 5250) { - title = (`the respected ${title}`); - } else if (V.rep > 4500) { - title = (`the known ${title}`); - } else if (V.rep > 3750) { - title = (`the recognized ${title}`); - } else if (V.rep > 3000) { - title = (`the rumored ${title}`); - } - - title = (`${title}, `); - - if (V.PC.slaveName === "FC Dev") { - titles.push("the Creator"); - } - - if (V.plot === 1) { - if (V.invasionVictory === 3) { - if (V.PC.title === 1) { - titles.push("Hero of the City"); - } else { - titles.push("Heroine of the City"); - } - } else if (V.invasionVictory === 2) { - titles.push("Defender of the City"); - } - if (V.daughtersVictory === 3) { - titles.push("Destroyer of the Daughters"); - } else if (V.daughtersVictory === 2) { - if (V.PC.title === 1) { - titles.push("Victor over the Daughters"); - } else { - titles.push("Victrix over the Daughters"); - } - } - } - - if (V.SF.Toggle && V.SF.FS.Tension > 100) { - switch (V.SF.FS.BadOutcome) { - case 'MIGRATION': - titles.push("The Abandoned"); - break; - case 'Revolt': - titles.push("The Betrayed"); - break; - case 'ANNIHILATION': - titles.push("The Runner"); - break; - case 'OCCUPATION': - titles.push("The Occupied"); - break; - case 'ASSIMILATION': - titles.push("The Deceived"); - break; - case 'ISOLATION': - titles.push("The Ignored"); - break; - } - } - - if (V.mercenaries >= 5) { - if (V.mercenariesTitle === "Evocati") { - titles.push(`Princeps of the ${V.mercenariesTitle}`); - } else if (V.mercenariesTitle === "Knights") { - if (V.PC.title === 1) { - titles.push(`Lord Commander of the ${V.mercenariesTitle}`); - } else { - titles.push(`Lady Commander of the ${V.mercenariesTitle}`); - } - } else if (V.mercenariesTitle === "Immortals") { - titles.push(`Tyrant of the ${V.mercenariesTitle}`); - } else if (V.mercenariesTitle === "Black Eagles") { - titles.push(`Imperial Overlord of the ${V.mercenariesTitle}`); - } else { - titles.push(`Commander of the ${V.mercenariesTitle}`); - } - } else if (V.mercenaries >= 1) { - titles.push("Commander of the Mercenaries"); - } - - if (V.dispensary === 1) { - if (V.PC.title === 1) { - titles.push("Pharmacologos"); - } else { - titles.push("Pharmacologes"); - } - } - - if (V.arcologies[0].FSSupremacist >= V.FSLockinLevel * 0.9) { - titles.push("Grand Champion of the Blood"); - } else if (V.arcologies[0].FSSupremacist >= V.FSLockinLevel * 0.6) { - titles.push("Champion of the Blood"); - } else if (V.arcologies[0].FSSupremacist >= V.FSLockinLevel * 0.3) { - titles.push("Defender of the Blood"); - } - - if (V.arcologies[0].FSSubjugationist >= V.FSLockinLevel * 0.9) { - titles.push("Grand Overseer of the Inferior Race"); - } else if (V.arcologies[0].FSSubjugationist >= V.FSLockinLevel * 0.6) { - titles.push("Overseer of the Inferior Race"); - } else if (V.arcologies[0].FSSubjugationist >= V.FSLockinLevel * 0.3) { - titles.push("Subduer of the Inferior Race"); - } - - if (V.arcologies[0].FSGenderRadicalist >= V.FSLockinLevel * 0.9) { - titles.push("Buttfucker of All Slaves"); - } else if (V.arcologies[0].FSGenderRadicalist >= V.FSLockinLevel * 0.6) { - titles.push("Sodomizer of the Traps"); - } else if (V.arcologies[0].FSGenderRadicalist >= V.FSLockinLevel * 0.3) { - if (V.PC.title === 1) { - titles.push("Penetrator of the Sissies"); - } else { - titles.push("Penetratrix of the Sissies"); - } - } - - if (V.arcologies[0].FSGenderFundamentalist >= V.FSLockinLevel * 0.9) { - if (V.PC.title === 1) { - titles.push("Father to the City"); - } else { - titles.push("Mother to the City"); - } - } else if (V.arcologies[0].FSGenderFundamentalist >= V.FSLockinLevel * 0.6) { - titles.push("Defender of Women"); - } else if (V.arcologies[0].FSGenderFundamentalist >= V.FSLockinLevel * 0.3) { - titles.push("Restorer of Morals"); - } - - if (V.arcologies[0].FSPaternalist >= V.FSLockinLevel * 0.9) { - if (V.PC.title === 1) { - titles.push("Protector to All Slaves"); - } else { - titles.push("Protectrix to All Slaves"); - } - } else if (V.arcologies[0].FSPaternalist >= V.FSLockinLevel * 0.6) { - if (V.PC.title === 1) { - titles.push("Benefactor of Slaves"); - } else { - titles.push("Benefactrix of Slaves"); - } - } else if (V.arcologies[0].FSPaternalist >= V.FSLockinLevel * 0.3) { - titles.push("Pursuer of Justice"); - } - - if (V.arcologies[0].FSRepopulationFocus >= V.FSLockinLevel * 0.9) { - titles.push("the Savior of the Future"); - } else if (V.arcologies[0].FSRepopulationFocus >= V.FSLockinLevel * 0.6) { - titles.push("the Holder of the Future"); - } else if (V.arcologies[0].FSRepopulationFocus >= V.FSLockinLevel * 0.3) { - titles.push("the Repopulist"); - } - - if (V.arcologies[0].FSDegradationist >= V.FSLockinLevel * 0.9) { - titles.push("Holder of the Rod and the Lash"); - } else if (V.arcologies[0].FSDegradationist >= V.FSLockinLevel * 0.6) { - titles.push("Subduer of Slaves"); - } else if (V.arcologies[0].FSDegradationist >= V.FSLockinLevel * 0.3) { - titles.push("Pursuer of Justice"); - } - - if (V.arcologies[0].FSIntellectualDependency >= V.FSLockinLevel * 0.9) { - titles.push("Sovereign of Bimbos"); - } else if (V.arcologies[0].FSIntellectualDependency >= V.FSLockinLevel * 0.6) { - titles.push("Shepherd of the Slow"); - } else if (V.arcologies[0].FSIntellectualDependency >= V.FSLockinLevel * 0.3) { - titles.push("Lover of Bimbos"); - } - - if (V.arcologies[0].FSSlaveProfessionalism >= V.FSLockinLevel * 0.9) { - titles.push("the Mastermind"); - } else if (V.arcologies[0].FSSlaveProfessionalism >= V.FSLockinLevel * 0.6) { - titles.push("the Genius"); - } else if (V.arcologies[0].FSSlaveProfessionalism >= V.FSLockinLevel * 0.3) { - titles.push("the Smart"); - } - - if (V.arcologies[0].FSBodyPurist >= V.FSLockinLevel * 0.9) { - titles.push("the Purifier of the Breasts"); - } else if (V.arcologies[0].FSBodyPurist >= V.FSLockinLevel * 0.6) { - titles.push("the Discerning"); - } else if (V.arcologies[0].FSBodyPurist >= V.FSLockinLevel * 0.3) { - titles.push("the Tasteful"); - } - - if (V.arcologies[0].FSAssetExpansionist >= V.FSLockinLevel * 0.9) { - titles.push("the Expander of the Breasts"); - } else if (V.arcologies[0].FSAssetExpansionist >= V.FSLockinLevel * 0.6) { - titles.push("the Expander"); - } else if (V.arcologies[0].FSAssetExpansionist >= V.FSLockinLevel * 0.3) { - if (V.PC.title === 1) { - titles.push("the Implanter"); - } else { - titles.push("the Implantrix"); - } - } - - if (V.arcologies[0].FSStatuesqueGlorification >= V.FSLockinLevel * 0.9) { - if (V.PC.title === 1) { - titles.push("He Who Stands Above All"); - } else { - titles.push("She Who Stands Above All"); - } - } else if (V.arcologies[0].FSStatuesqueGlorification >= V.FSLockinLevel * 0.6) { - titles.push("Agent of Growth"); - } else if (V.arcologies[0].FSStatuesqueGlorification >= V.FSLockinLevel * 0.3) { - titles.push("height fetishist"); - } - - if (V.arcologies[0].FSPetiteAdmiration >= V.FSLockinLevel * 0.9) { - titles.push("Supporter of the Small"); - } else if (V.arcologies[0].FSPetiteAdmiration >= V.FSLockinLevel * 0.6) { - titles.push("the Size Enthusiast"); - } else if (V.arcologies[0].FSPetiteAdmiration >= V.FSLockinLevel * 0.3) { - titles.push("height fetishist"); - } - - if (V.arcologies[0].FSPastoralist >= V.FSLockinLevel * 0.9) { - if (V.PC.title === 1) { - titles.push("the Master of Stock"); - } else { - titles.push("the Mistress of Stock"); - } - } else if (V.arcologies[0].FSPastoralist >= V.FSLockinLevel * 0.6) { - titles.push("the Rancher"); - } else if (V.arcologies[0].FSPastoralist >= V.FSLockinLevel * 0.3) { - titles.push("the Farmer"); - } - - if (V.arcologies[0].FSPhysicalIdealist >= V.FSLockinLevel * 0.9) { - titles.push("beloved of Brodin"); - } else if (V.arcologies[0].FSPhysicalIdealist >= V.FSLockinLevel * 0.6) { - if (V.PC.title === 1) { - titles.push("he of the godlike Body"); - } else { - titles.push("she of the godlike Body"); - } - } else if (V.arcologies[0].FSPhysicalIdealist >= V.FSLockinLevel * 0.3) { - titles.push("advancer of Gains"); - } - - if (V.arcologies[0].FSHedonisticDecadence >= V.FSLockinLevel * 0.9) { - if (V.PC.title === 1) { - titles.push("Master of Softness"); - } else { - titles.push("Lady of Softness"); - } - } else if (V.arcologies[0].FSHedonisticDecadence >= V.FSLockinLevel * 0.6) { - titles.push("Thickness Enthusiast"); - } else if (V.arcologies[0].FSHedonisticDecadence >= V.FSLockinLevel * 0.3) { - titles.push("the Feeder"); - } - - if (V.arcologies[0].FSMaturityPreferentialist >= V.FSLockinLevel * 0.9) { - titles.push("Grand Preserver of MILFS"); - } else if (V.arcologies[0].FSMaturityPreferentialist >= V.FSLockinLevel * 0.6) { - titles.push("Fucker of MILFS"); - } else if (V.arcologies[0].FSMaturityPreferentialist >= V.FSLockinLevel * 0.3) { - if (V.PC.title === 1) { - titles.push("he of the notorious MILF preference"); - } else { - titles.push("she of the notorious MILF preference"); - } - } - - if (V.arcologies[0].FSYouthPreferentialist >= V.FSLockinLevel * 0.9) { - titles.push("Keeper of the Magnificent Young Harem"); - } else if (V.arcologies[0].FSYouthPreferentialist >= V.FSLockinLevel * 0.6) { - titles.push("Keeper of Virgins"); - } else if (V.arcologies[0].FSYouthPreferentialist >= V.FSLockinLevel * 0.3) { - titles.push("the Virginbreaker"); - } - - if (V.arcologies[0].FSChattelReligionistLaw === 1) { - titles.push("the Prophet"); - } else if (V.arcologies[0].FSChattelReligionist >= V.FSLockinLevel * 0.9) { - titles.push("Keeper of the Blade and Chalice"); - } else if (V.arcologies[0].FSChattelReligionist >= V.FSLockinLevel * 0.6) { - titles.push("Champion of the Faith"); - } else if (V.arcologies[0].FSChattelReligionist >= V.FSLockinLevel * 0.3) { - titles.push("the Holy"); - } - - if (V.arcologies[0].FSRomanRevivalist >= V.FSLockinLevel * 0.9) { - titles.push("First Consul"); - } else if (V.arcologies[0].FSRomanRevivalist >= V.FSLockinLevel * 0.6) { - titles.push("Aedile"); - } else if (V.arcologies[0].FSRomanRevivalist >= V.FSLockinLevel * 0.3) { - titles.push("Quaestor"); - } - - if (V.arcologies[0].FSNeoImperialist >= V.FSLockinLevel * 0.9) { - if (V.PC.title === 1) { - titles.push("Immortal Emperor"); - } else { - titles.push("Immortal Empress"); - } - } else if (V.arcologies[0].FSNeoImperialist >= V.FSLockinLevel * 0.6) { - if (V.PC.title === 1) { - titles.push("His Highness"); - } else { - titles.push("Her Highness"); - } - } else if (V.arcologies[0].FSNeoImperialist >= V.FSLockinLevel * 0.3) { - if (V.PC.title === 1) { - titles.push("Lord and Master"); - } else { - titles.push("Lord and Mistress"); - } - } - - if (V.arcologies[0].FSAztecRevivalist >= V.FSLockinLevel * 0.9) { - titles.push("Tlatcani"); - } else if (V.arcologies[0].FSAztecRevivalist >= V.FSLockinLevel * 0.6) { - titles.push("Cihuacoatl"); - } else if (V.arcologies[0].FSAztecRevivalist >= V.FSLockinLevel * 0.3) { - titles.push("Tlatoani"); - } - - if (V.arcologies[0].FSEgyptianRevivalist >= V.FSLockinLevel * 0.9) { - if (V.PC.title === 1) { - titles.push("the Living God"); - } else { - titles.push("the Living Goddess"); - } - } else if (V.arcologies[0].FSEgyptianRevivalist >= V.FSLockinLevel * 0.6) { - titles.push("Pharaoh"); - } else if (V.arcologies[0].FSEgyptianRevivalist >= V.FSLockinLevel * 0.3) { - if (V.PC.title === 1) { - titles.push("Prince of the Nile"); - } else { - titles.push("Princess of the Nile"); - } - } - - if (V.arcologies[0].FSEdoRevivalist >= V.FSLockinLevel * 0.9) { - if (V.PC.title === 1) { - titles.push("Emperor and Descendant of Amaterasu"); - } else { - titles.push("Amaterasu Reborn"); - } - } else if (V.arcologies[0].FSEdoRevivalist >= V.FSLockinLevel * 0.6) { - titles.push("Shogun"); - } else if (V.arcologies[0].FSEdoRevivalist >= V.FSLockinLevel * 0.3) { - titles.push("Daimyo"); - } - - if (V.arcologies[0].FSArabianRevivalist >= V.FSLockinLevel * 0.9) { - if (V.PC.title === 1) { - titles.push("Caliph"); - } else { - titles.push("Handmaiden of Allah"); - } - } else if (V.arcologies[0].FSArabianRevivalist >= V.FSLockinLevel * 0.6) { - if (V.PC.title === 1) { - titles.push("Sultan"); - } else { - titles.push("Sultana"); - } - } else if (V.arcologies[0].FSArabianRevivalist >= V.FSLockinLevel * 0.3) { - titles.push("Beloved of Allah"); - } - - if (V.arcologies[0].FSChineseRevivalist >= V.FSLockinLevel * 0.9) { - if (V.PC.title === 1) { - titles.push("Emperor and Holder of the Mandate of Heaven"); - } else { - titles.push("Empress and Holder of the Mandate of Heaven"); - } - } else if (V.arcologies[0].FSChineseRevivalist >= V.FSLockinLevel * 0.6) { - if (V.PC.title === 1) { - titles.push("Emperor"); - } else { - titles.push("Empress"); - } - } else if (V.arcologies[0].FSChineseRevivalist >= V.FSLockinLevel * 0.3) { - if (V.PC.title === 1) { - titles.push("Governor of the Province"); - } else { - titles.push("Governess of the Province"); - } - } - - const facilities = App.Entity.facilities; - if (facilities.brothel.employeesIDs().size >= 15) { - if (V.PC.title === 1) { - titles.push("Procurator of the Brothel"); - } else { - titles.push("Procuratrix of the Brothel"); - } - } - - if (facilities.club.employeesIDs().size >= 15) { - titles.push("First on the Club"); - } - if (facilities.dairy.employeesIDs().size >= 15) { - titles.push("Keeper of the Cattle"); - } - if (V.cumSlaves >= 15) { - if (V.PC.title === 1) { - titles.push("Extractor of the Ejaculate"); - } else { - titles.push("Extractrix of the Ejaculate"); - } - } - if (facilities.servantsQuarters.employeesIDs().size >= 15) { - if (V.PC.title === 1) { - titles.push("Director of the Servants"); - } else { - titles.push("Directrix of the Servants"); - } - } - if (facilities.schoolroom.employeesIDs().size >= 10) { - if (V.PC.title === 1) { - titles.push("Educator of the Slaves"); - } else { - titles.push("Educatrix of the Slaves"); - } - } - if (facilities.spa.employeesIDs().size >= 10) { - titles.push("Order of the Bath"); - } - if (facilities.arcade.employeesIDs().size >= 15) { - titles.push("Comptroller of the Arcade"); - } - if (V.nurseryChildren >= 10) { - titles.push("Caretaker of the Youth"); - } - - const schoolsPresent = []; - const schoolsPerfected = []; - let schoolTitle; - for (const [school, obj] of App.Data.misc.schools) { - if (V[school].schoolProsperity >= 10) { - schoolsPerfected.push(obj.title); - } else if (V[school].schoolPresent === 1) { - schoolsPresent.push(obj.title); - } - } - - if (schoolsPerfected.length > 0) { - schoolTitle = `${V.PC.title === 1 ? 'Benefactor' : 'Benefactrix'} of `; - if (schoolsPerfected.length === 1) { - schoolTitle += schoolsPerfected[0]; - } else if (schoolsPerfected.length === 2) { - schoolTitle += `${schoolsPerfected[0]} and ${schoolsPerfected[1]}`; - } else { - schoolsPerfected[schoolsPerfected.length - 1] = `and ${schoolsPerfected[schoolsPerfected.length - 1]}`; - schoolTitle += schoolsPerfected.join(", "); - } - titles.push(schoolTitle); - } - if (schoolsPresent.length > 0) { - schoolTitle = "Supporter of "; - if (schoolsPresent.length === 1) { - schoolTitle += schoolsPresent[0]; - } else if (schoolsPresent.length === 2) { - schoolTitle += `${schoolsPresent[0]} and ${schoolsPresent[1]}`; - } else { - schoolsPresent[schoolsPresent.length - 1] = `and ${schoolsPresent[schoolsPresent.length - 1]}`; - schoolTitle += schoolsPresent.join(", "); - } - titles.push(schoolTitle); - } - - if (V.TFS.schoolProsperity >= 10) { - titles.push("Honorary Sibling of the Futanari Sisters"); - } else if (V.TFS.schoolPresent === 1) { - if (V.PC.title === 1) { - titles.push("Protector of the Futanari Sisters"); - } else { - titles.push("Protectrix of the Futanari Sisters"); - } - } - - if (V.slaves.length > 50) { - if (V.PC.title === 1) { - titles.push("Master of Slaves"); - } else { - titles.push("Mistress of Slaves"); - } - } else if (V.slaves.length > 40) { - titles.push("Holder of Slaves"); - } else if (V.slaves.length > 30) { - titles.push("Keeper of Slaves"); - } else if (V.slaves.length > 20) { - titles.push("Manager of Slaves"); - } else if (V.slaves.length > 10) { - titles.push("owner of slaves"); - } - const corpValue = App.Corporate.value; - if (corpValue > 500000) { - titles.push("Corporate Titan"); - } else if (corpValue > 250000) { - titles.push("corporate innovator"); - } else if (corpValue > 100000) { - titles.push("corporate founder"); - } else if (corpValue > 0) { - if (V.PC.title === 1) { - titles.push("noted corporate businessman"); - } else { - titles.push("noted corporate businesswoman"); - } - } - - if (V.rep > 18000) { - if (V.PC.title === 1) { - titles.push("unquestioned Master of the Arcology"); - } else { - titles.push("unquestioned Mistress of the Arcology"); - } - } else if (V.rep > 15000) { - if (V.PC.title === 1) { - titles.push("Lord of the Arcology"); - } else { - titles.push("Lady of the Arcology"); - } - } else if (V.rep > 12000) { - titles.push("Ruler of the Arcology"); - } else if (V.rep > 9000) { - titles.push("chief officer of the arcology"); - } else { - titles.push("owner of the arcology"); - } - - if (titles.length === 1) { - title += titles[0]; - } else if (titles.length === 2) { - title += `${titles[0]} and ${titles[1]}`; - } else { - titles[titles.length - 1] = `and ${titles[titles.length - 1]}`; - title += titles.join(", "); - } - return title; -}; - -/** - * @param {string} input - * @param {number} [increase=1] - * @returns {string} - */ -globalThis.IncreasePCSkills = function(input, increase = 1) { - if (Array.isArray(input)) { - return input.reduce((r, inputArray) => r + IncreasePCSkills(inputArray, increase), ''); - } - const player = V.PC; - const oldSkill = player.skill[input]; - player.skill[input] += increase; - let t = ``; - - if (oldSkill < 10 && player.skill[input] >= 10) { - t += `<span class="green"> \nYou have gained basic knowledge in ${input}.</span>`; - } else if (oldSkill < 30 && player.skill[input] >= 30) { - t += `<span class="green"> \nYou have gained some knowledge in ${input}.</span>`; - } else if (oldSkill < 60 && player.skill[input] >= 60) { - t += `<span class="green"> \nYou have become an expert in ${input}.</span>`; - } else if (oldSkill < 100 && player.skill[input] >= 100) { - t += `<span class="green"> \nYou have mastered ${input}.</span>`; - } - return t; -}; - -/** Returns if the player is on mandatory bedrest. - * @returns {boolean} - */ -globalThis.onBedRest = function(actor) { - // consider player health and injury in the future! - if (!actor) { - return null; - } else if (!canMove(actor)) { - return true; - } else if (actor.preg > actor.pregData.normalBirth / 1.33 && actor.womb.find((ft) => ft.genetics.geneticQuirks.polyhydramnios === 2 && ft.age >= 20)) { - return true; - } else if (actor.bellyPreg >= actor.pregAdaptation * 2200) { - return true; - } - return false; -};