diff --git a/FCHost/fchost/fchost_handler.cc b/FCHost/fchost/fchost_handler.cc index 33586d050ea421cf7836d55437b380041bd1a8bb..98ce4417d404aebe5f49ae3380e54d80e8c47e38 100644 --- a/FCHost/fchost/fchost_handler.cc +++ b/FCHost/fchost/fchost_handler.cc @@ -73,9 +73,13 @@ bool FCHostHandler::OnConsoleMessage(CefRefPtr<CefBrowser> browser, cef_log_seve const CefString& message, const CefString& source, int line) { std::ofstream s("console.log", std::ios_base::app); - s << DateTime() << " - " << source.c_str() << ":" << line << ": " << message.c_str() << "\n"; - s.flush(); - s.close(); + s << DateTime() << " - "; + if (!source.empty()) { + s << source.c_str(); + } else { + s << "Unknown Source"; + } + s << ":" << line << ": " << message.c_str() << "\n"; return false; } diff --git a/devTools/FC.d.ts b/devTools/FC.d.ts index 19c0f79fbcc87ee64d8e3b3912141584e2d10edc..46779cb572d3dcc6ea6f0322200434680a81b0e5 100644 --- a/devTools/FC.d.ts +++ b/devTools/FC.d.ts @@ -42,6 +42,10 @@ declare namespace App { namespace Debug {} namespace Desc {} + namespace Encyclopedia { + namespace Entries {} + } + namespace Entity { class Serializable {} diff --git a/js/002-config/fc-js-init.js b/js/002-config/fc-js-init.js index 7f6482afd104d9f214bd39cf9002e64c8796d2f4..c3a378971a317816924c8ba2f1e11da0f662b2c0 100644 --- a/js/002-config/fc-js-init.js +++ b/js/002-config/fc-js-init.js @@ -10,6 +10,8 @@ App.Arcology = { App.Art = {}; App.Data = {}; App.Debug = {}; +App.Encyclopedia = {}; +App.Encyclopedia.Entries = {}; App.Entity = {}; App.Entity.Utils = {}; App.MainView = {}; diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js new file mode 100644 index 0000000000000000000000000000000000000000..f578b2cd9f480aac6d41eeedbc759128ad7e5677 --- /dev/null +++ b/js/003-data/gameVariableData.js @@ -0,0 +1,1737 @@ +// A whitelist for ingame variables. Used to init the game or fill in gaps. Also used as a whitelist. Anything not on this list will be removed on BC. +App.Data.defaultGameStateVariables = { + returnTo: "init", + nextButton: "Continue", + nextLink: "Alpha disclaimer", + storedLink: "", + ver: 0, + pmodVer: 0, + releaseID: 0, + slaveIndices: 0, + genePool: [], + missingTable: {}, + slaves: [], + showMissingSlaves: false, + showMissingSlavesSD: false, + marrying: [], + // array of slave being married this week + organs: [], + ArcadeiIDs: [], + BrothiIDs: [], + CellBiIDs: [], + CliniciIDs: [], + ClubiIDs: [], + DairyiIDs: [], + FarmyardiIDs: [], + HGSuiteiIDs: [], + MastSiIDs: [], + SchlRiIDs: [], + ServQiIDs: [], + SpaiIDs: [], + NurseryiIDs: [], + saveImported: 0, + PC: {}, + freshPC: 0, + cheater: 0, + cash: 0, + cashLastWeek: 0, + autosave: 1, + useFSNames: 1, + FSNamePref: 0, + seeDetails: 1, + seeDesk: 1, + newModelUI: 1, + seeArcology: 1, + seeFCNN: 1, + useSummaryCache: true, + seeExtreme: 0, + seeBestiality: 0, + seePee: 1, + seeIncest: 1, + extremeUnderage: 0, + seeHyperPreg: 0, + seePreg: 1, + dangerousPregnancy: 0, + adamPrinciple: 0, + seeCircumcision: 1, + seeAge: 1, + seeDicks: 25, + seeDicksAffectsPregnancy: 1, + seeRace: 1, + seeNationality: 1, + realRoyalties: 0, + seeIllness: 1, + seeImages: 0, + seeFaces: 1, + seeAvatar: 1, + seeHeight: 0, + imageChoice: 1, + seeVectorArtHighlights: 1, + seeMainFetishes: 0, + seeSummaryImages: 1, + seeReportImages: 1, + lineSeparations: 1, + slavePanelStyle: 1, + showSexualHistory: 1, + showBodyMods: 1, + showImplantEffects: 1, + showClothing: 1, + showAgeDetail: 1, + showBoobCCs: 1, + showHeightCMs: 1, + showDickCMs: 1, + showInches: 1, + showNumbers: 2, + showNumbersMax: 20, + showScores: 1, + showAssignToScenes: 1, + showEWD: 1, + showEWM: 1, + showVignettes: 1, + showAppraisal: 1, + verticalizeArcologyLinks: 0, + positionMainLinks: -1, + showTipsFromEncy: 1, + displayAssignments: 1, + sortSlavesBy: "devotion", + sortSlavesOrder: "descending", + sortSlavesMain: 1, + HGSeverity: 0, + HGFormality: 1, + universalRulesConsent: 0, + universalRulesRest: 0, + universalRulesFacilityWork: 1, + universalRulesImpregnation: "none", + universalRulesBirthing: 0, + universalRulesCSec: 0, + universalRulesNewSlavesRA: 1, + universalRulesAssignsSelfFacility: 0, + universalRulesImmobileSlavesMaintainMuscles: 0, + universalRulesChildrenBecomeBreeders: 0, + slaveDead: 0, + rulesAssistantMain: 1, + rulesAssistantAuto: 0, + abbreviateDevotion: 2, + abbreviateRules: 2, + abbreviateClothes: 2, + abbreviateOrigins: 2, + abbreviateRulesets: 2, + abbreviateNationality: 2, + abbreviateHealth: 2, + abbreviateDiet: 2, + abbreviateDrugs: 2, + abbreviateRace: 2, + abbreviateGenitalia: 2, + abbreviatePhysicals: 2, + abbreviateSkills: 2, + abbreviateMental: 2, + abbreviateSidebar: 2, + summaryStats: 0, + nicknamesAllowed: 1, + modRequestsAllowed: 1, + expansionRequestsAllowed: 1, + plot: 1, + continent: "North America", + terrain: "rural", + language: "English", + headGirlTrainsSkills: 1, + headGirlTrainsHealth: 1, + headGirlTrainsObedience: 1, + headGirlTrainsFlaws: 1, + headGirlSoftensFlaws: 1, + headGirlTrainsParaphilias: 1, + retainCareer: 1, + useSlaveSummaryTabs: 0, + useSlaveSummaryOverviewTab: 0, + useSlaveListInPageJSNavigation: 0, + fucktoyInteractionsPosition: 1, + killChoice: -1, + assignmentRecords: {}, + verboseDescriptions: 0, + useAccordion: 0, + debugMode: 0, + showNeighborDetails: 1, + useTabs: 0, + tabChoice: {Main: "all"}, + formatNumbers: 1, + makeDicks: 0, + showEconomicDetails: 0, + allowMaleSlaveNames: false, + profiler: 0, + economy: 100, + baseDifficulty: 3, + difficultySwitch: 0, + neighboringArcologies: 3, + newDescriptions: 0, + familyTesting: 0, + showDistantRelatives: 0, + inbreeding: 1, + allowFamilyTitles: 0, + surnameOrder: 0, + disableLisping: 0, + weightAffectsAssets: 1, + curativeSideEffects: 1, + // eslint-disable-next-line camelcase + pedo_mode: 0, + minimumSlaveAge: 16, + fertilityAge: 13, + potencyAge: 13, + AgePenalty: 1, + precociousPuberty: 0, + loliGrow: 0, + retirementAge: 45, + customRetirementAge: 45, + customMenialRetirementAge: 65, + FSCreditCount: 5, + targetArcology: {type: "New"}, + REFeminizationCheckinIDs: [], + REMILFCheckinIDs: [], + REOrientationCheckinIDs: [], + REUglyCheckinIDs: [], + REButtholeCheckinIDs: [], + REFutaSisterCheckinIDs: [], + REReductionCheckinIDs: [], + activeSlave: 0, + activeChild: 0, + reminders: [], + boomerangSlave: 0, + boomerangWeeks: 0, + boomerangBuyer: 0, + bioreactorPerfectedID: 0, + independenceDay: 0, + invasionVictory: 0, + daughtersVictory: 0, + startingGirlCopied: 0, + startingGirlRelation: 0, + archetyped: 0, + createRelatedSlave: 0, + slavesVisible: 0, + dormitory: 20, + dormitoryPopulation: 0, + rooms: 5, + roomsPopulation: 0, + brothelDecoration: "standard", + brothelUpgradeDrugs: 0, + brothelAdsSpending: 0, + brothelAdsOld: 0, + brothelAdsModded: 0, + brothelAdsImplanted: 0, + brothelAdsStacked: 0, + brothelAdsPreg: 0, + brothelAdsXX: 0, + brothelName: "the Brothel", + brothelNameCaps: "The Brothel", + brothel: 0, + dairyDecoration: "standard", + dairyPrepUpgrade: 0, + dairyStimulatorsUpgrade: 0, + dairyStimulatorsSetting: 0, + dairyStimulatorsSettingChanged: 0, + dairyFeedersUpgrade: 0, + dairyFeedersSetting: 0, + dairyFeedersSettingChanged: 0, + dairyPregUpgrade: 0, + dairyPregSetting: 0, + dairyPregSettingChanged: 0, + dairyRestraintsUpgrade: 0, + dairyRestraintsSetting: 0, + dairySlimMaintainUpgrade: 0, + dairySlimMaintain: 0, + dairyHyperPregRemodel: 0, + dairyWeightSetting: 0, + dairyImplantsSetting: 1, + dairyUpgradeMenials: 0, + createBioreactors: 0, + bioreactorsAnnounced: 0, + bioreactorsHerm: 0, + bioreactorsXX: 0, + bioreactorsXY: 0, + bioreactorsBarren: 0, + dairyName: "the Dairy", + dairyNameCaps: "The Dairy", + dairy: 0, + cumSlaves: 0, + clubDecoration: "standard", + clubUpgradePDAs: 0, + clubAdsSpending: 0, + clubAdsOld: 0, + clubAdsModded: 0, + clubAdsImplanted: 0, + clubAdsStacked: 0, + clubAdsPreg: 0, + clubAdsXX: 0, + clubName: "the Club", + clubNameCaps: "The Club", + club: 0, + servantsQuartersDecoration: "standard", + servantsQuartersUpgradeMonitoring: 0, + servantsQuarters: 0, + servantsQuartersName: "the Servants' Quarters", + servantsQuartersNameCaps: "The Servants' Quarters", + schoolroomDecoration: "standard", + schoolroomUpgradeSkills: 0, + schoolroomUpgradeLanguage: 0, + schoolroomUpgradeRemedial: 0, + schoolroomRemodelBimbo: 0, + schoolroom: 0, + schoolroomName: "the Schoolroom", + schoolroomNameCaps: "The Schoolroom", + spaDecoration: "standard", + spa: 0, + spaSpots: 0, + spaUpgrade: 0, + spaFix: 0, + spaName: "the Spa", + spaNameCaps: "The Spa", + // Incubator Subsection + incubator: 0, + incubatorSlaves: 0, + incubatorBulkRelease: 0, + incubatorOrgans: [], + incubatorOldID: 0, + incubatorUpgradeSpeed: 5, + incubatorUpgradeWeight: 0, + incubatorUpgradeMuscles: 0, + incubatorUpgradeGrowthStims: 0, + incubatorUpgradeReproduction: 0, + incubatorUpgradeOrgans: 0, + incubatorImprintSetting: 0, + incubatorWeightSetting: 0, + incubatorMusclesSetting: 0, + incubatorGrowthStimsSetting: 0, + incubatorReproductionSetting: 0, + incubatorName: "the Incubator", + incubatorNameCaps: "The Incubator", + sortIncubatorList: "Unsorted", + readySlaves: 0, + reservedChildren: 0, + tanks: [], + clinicDecoration: "standard", + clinic: 0, + clinicUpgradeFilters: 0, + clinicUpgradeScanner: 0, + clinicUpgradePurge: 0, + clinicName: "the Clinic", + clinicNameCaps: "The Clinic", + arcadeDecoration: "standard", + arcadeUpgradeInjectors: 0, + arcadeUpgradeFuckdolls: 0, + arcadeUpgradeCollectors: 0, + arcadeUpgradeHealth: -1, + arcadeName: "the Arcade", + arcadeNameCaps: "The Arcade", + arcade: 0, + fuckdollsSold: 0, + cellblockDecoration: "standard", + cellblockUpgrade: 0, + cellblock: 0, + cellblockName: "the Cellblock", + cellblockNameCaps: "The Cellblock", + cellblockWardenCumsInside: 1, + masterSuiteDecoration: "standard", + masterSuiteUpgradeLuxury: 0, + masterSuiteUpgradePregnancy: 0, // Is the upgrade active? + masterSuitePregnancyFertilityDrugs: 0, // Are slaves being put on fertility drugs? + masterSuitePregnancyFertilitySupplements: 0, // Are those drugs being supplemented (health benefits and (even) more multiple pregnancies) + masterSuitePregnancySlaveLuxuries: 0, // Are the slaves being given some nicer things to reduce stress during preg? (health/devotion/trust benefits) + universalHGImpregnateMasterSuiteToggle: 0, // Will the HG impregnate fertile slaves in the MS? + masterSuiteHyperPregnancy: 0, + masterSuite: 0, + masterSuiteName: "the Master Suite", + masterSuiteNameCaps: "The Master Suite", + // Nursery Subsection + nursery: 0, // counts the number of children the nursery can support + nurseryNannies: 0, // counts the number of nannies the nursery can support + nurseryBabies: 0, // counts the number of children currently in the nursery + MatronInfluence: 0, // check for whether the children are influenced by the Matron + nannyInfluence: 0, // check for whether the children are influenced by the nannies + nurseryDecoration: "standard", + nurseryWeight: 0, + nurseryMuscles: 0, + nurseryHormones: 0, + nurseryOrgans: 0, // not currently in use + nurseryImprintSetting: 0, + nurseryWeightSetting: 0, + nurseryMusclesSetting: 0, + nurseryHormonesSetting: 0, + nurseryName: "the Nursery", + nurseryNameCaps: "The Nursery", + reservedChildrenNursery: 0, + cribs: [], // array of children in the nursery + cribsFreed: [], // array of children that have been freed + childToSlave: -1, // number of total children that have become slaves + cribsIndices: 0, + sortNurseryList: "Unsorted", + targetAgeNursery: 18, + // Farmyard Subsection + farmyard: 0, + farmyardShowgirls: [], // array of farmhands putting on shows + farmyardFarmers: [], // array of farmhands farming + farmMenials: 0, + farmMenialsSpace: 0, + farmyardDecoration: "standard", + farmyardUpgrade: { + pump: 0, + fertilizer: 0, + hydroponics: 0, + machinery: 0, + seeds: 0, + lab: 0 + }, + farmyardCrops: 0, + farmyardStable: 0, + farmyardKennels: 0, + farmyardCages: 0, + activeCanine: 0, + activeHooved: 0, + activeFeline: 0, + farmyardLab: 0, + farmyardLabUpgrades: {animalOvaries: 0, animalTesticles: 0, animalMpreg: 0}, + animalsBought: { + canines: 0, + hooved: 0, + felines: 0, + labradorRetrievers: 0, + germanShepherds: 0, + goldenRetrievers: 0, + frenchBulldogs: 0, + bulldogs: 0, + beagles: 0, + poodles: 0, + rottweilers: 0, + yorkshireTerriers: 0, + siberianHuskies: 0, + horses: 0, + bulls: 0, + pigs: 0, + siameses: 0, + persians: 0, + maineCoons: 0, + ragdolls: 0, + bengals: 0, + abbysinians: 0, + birmans: 0, + orientalShorthairs: 0, + sphynxes: 0, + russianBlues: 0, + wolves: 0, + foxes: 0, + jackals: 0, + dingos: 0, + zebras: 0, + cougars: 0, + jaguars: 0, + pumas: 0, + lynx: 0, + leopards: 0, + lions: 0, + tigers: 0 + }, + canines: [], + hooved: [], + felines: [], + farmyardName: "the Farmyard", + farmyardNameCaps: "The Farmyard", + HGSuite: 0, + HGSuiteSurgery: 1, + HGSuiteDrugs: 1, + HGSuiteHormones: 1, + HGSuiteEquality: 0, + HGSuiteName: "the Head Girl Suite", + HGSuiteNameCaps: "The Head Girl Suite", + fighterIDs: [], + pitBG: 0, + pitAnimal: 0, + pitAnimalType: 0, + pitAudience: "none", + pitLethal: 0, + pitVirginities: 0, + pitFought: 0, + pit: 0, + pitName: "the Pit", + pitNameCaps: "The Pit", + dojo: 0, + feeder: 0, + cockFeeder: 0, + suppository: 0, + weatherCladding: 0, + weatherAwareness: 0, + boobAccessibility: 0, + servantMilkers: 0, + servantMilkersMultiplier: 1, + studio: 0, + studioFeed: 0, + PCSlutContacts: 1, + // Porn star counts (prestige 1) and ID's (prestige 3) + pornStars: {}, + pregInventor: 0, + pregInventorID: 0, + pregInventions: 0, + legendaryWhoreID: 0, + legendaryEntertainerID: 0, + legendaryCowID: 0, + legendaryBallsID: 0, + legendaryWombID: 0, + legendaryAbolitionistID: 0, + FSAnnounced: 0, + FSCredits: 0, + FSGotRepCredits: 0, + FSSingleSlaveRep: 10, + FSSpending: 0, + FSLockinLevel: 100, + applyLaw: 0, + FSPromenade: { + Subjugationist: 0, + Supremacist: 0, + GenderRadicalist: 0, + GenderFundamentalist: 0, + Paternalist: 0, + Degradationist: 0, + BodyPurist: 0, + TransformationFetishist: 0, + YouthPreferentialist: 0, + MaturityPreferentialist: 0, + SlimnessEnthusiast: 0, + AssetExpansionist: 0, + Pastoralist: 0, + PhysicalIdealist: 0, + ChattelReligionist: 0, + RomanRevivalist: 0, + AztecRevivalist: 0, + EgyptianRevivalist: 0, + EdoRevivalist: 0, + ArabianRevivalist: 0, + ChineseRevivalist: 0, + Repopulationist: 0, + Eugenics: 0, + Hedonism: 0, + IntellectualDependency: 0, + SlaveProfessionalism: 0, + PetiteAdmiration: 0, + StatuesqueGlorification: 0 + }, + // Corporation + corpAnnounced: 0, + corpAssetsDev: 0, + corpAssetsDevOld: 0, + corpAssetsSlave: 0, + corpAssetsSlaveOld: 0, + corpCash: 0, + corpCashDividend: 0, + corpDiv: 0, + corpDivArcade: 0, + corpDivArcadeDev: 0, + corpDivArcadeFromMarket: 0, + corpDivArcadeSlaves: 0, + corpDivBreak: 0, + corpDivBreakDev: 0, + corpDivBreakFromMarket: 0, + corpDivBreakSlaves2: 0, + corpDivBreakSlaves: 0, + corpDivBreakToMarket: 0, + corpDivBreakToMenial: 0, + corpDivBreakToSurgery: 0, + corpDivBreakToTrain: 0, + corpDivDairy: 0, + corpDivDairyDev: 0, + corpDivDairyFromMarket: 0, + corpDivDairySlaves: 0, + corpDivExtra: 0, + corpDivExtraDev: 0, + corpDivExtraSlaves: 0, + corpDivExtraToArcade: 0, + corpDivExtraToBreak: 0, + corpDivExtraToMarket: 0, + corpDivLegal: 0, + corpDivLegalDev: 0, + corpDivLegalSlaves: 0, + corpDivLegalToMarket: 0, + corpDivLegalToMenial: 0, + corpDivLegalToSurgery: 0, + corpDivLegalToTrain: 0, + corpDivMenial: 0, + corpDivMenialDev: 0, + corpDivMenialFromMarket: 0, + corpDivMenialSlaves: 0, + corpDivSurgery: 0, + corpDivSurgeryDev: 0, + corpDivSurgeryFromMarket: 0, + corpDivSurgerySlaves2: 0, + corpDivSurgerySlaves: 0, + corpDivSurgeryToDairy: 0, + corpDivSurgeryToMarket: 0, + corpDivSurgeryToTrain: 0, + corpDivTrain: 0, + corpDivTrainDev: 0, + corpDivTrainFromMarket: 0, + corpDivTrainSlaves2: 0, + corpDivTrainSlaves: 0, + corpDivTrainToMarket: 0, + corpDivTrainToWhore: 0, + corpDivWhore: 0, + corpDivWhoreDev: 0, + corpDivWhoreFromMarket: 0, + corpDivWhoreSlaves: 0, + corpDividend: 0, + corpEcon: 0, + corpExpandToken: 0, + corpIncorporated: 0, + corpMarket: 0, + corpOpCostOld: 0, + corpOverheadOld: 0, + corpProfitOld: 0, + corpRev: 0, + corpRevOld: 0, + corpSpec: 0, + corpSpecAccent: 0, + corpSpecAge: 0, + corpSpecAmputee: 0, + corpSpecBalls: 0, + corpSpecDevotion: 0, + corpSpecDick: 0, + corpSpecEducation: 0, + corpSpecGender: 0, + corpSpecGenitalia: 0, + corpSpecHeight: 0, + corpSpecHormones: 0, + corpSpecImplants: 0, + corpSpecInjection: 0, + corpSpecIntelligence: 0, + corpSpecMilk: 0, + corpSpecMuscle: 0, + corpSpecPussy: 0, + corpSpecRaces: [], + corpSpecSexEd: 0, + corpSpecToken: 0, + corpSpecTrust: 0, + corpSpecVirgin: 0, + corpSpecWeight: 0, + dividendTimer: 0, + newCorp: 1, + personalShares: 0, + publicShares: 0, + vanillaShareSplit: 1, + // Slave sexual services and goods variables + publicFuckdolls: 0, + classSatisfied: { + lowerClass: 0, + middleClass: 0, + upperClass: 0, + topClass: 0 + }, + whoreBudget: { + lowerClass: 7, + middleClass: 40, + upperClass: 200, + topClass: 1500 + }, + arcadePrice: 2, + clubSlaveSexAmount: 0, + shelterSlave: 0, + shelterSlaveBought: 0, + shelterAbuse: 0, + shelterSlaveGeneratedWeek: 0, + // alternate clothing access variables + clothesBoughtBunny: 0, + clothesBoughtConservative: 0, + clothesBoughtChains: 0, + clothesBoughtWestern: 0, + clothesBoughtOil: 0, + clothesBoughtHabit: 0, + clothesBoughtToga: 0, + clothesBoughtHuipil: 0, + clothesBoughtKimono: 0, + clothesBoughtHarem: 0, + clothesBoughtQipao: 0, + clothesBoughtEgypt: 0, + clothesBoughtBelly: 0, + clothesBoughtMaternityDress: 0, + clothesBoughtMaternityLingerie: 0, + clothesBoughtLazyClothes: 0, + clothesBoughtBimbo: 0, + clothesBoughtCourtesan: 0, + shoesBoughtHeels: 0, + clothesBoughtPetite: 0, + // non-fs + clothesBoughtMilitary: 0, + clothesBoughtCultural: 0, + clothesBoughtMiddleEastern: 0, + clothesBoughtPol: 0, + clothesBoughtCostume: 0, + clothesBoughtPantsu: 0, + clothesBoughtCareer: 0, + clothesBoughtDresses: 0, + clothesBoughtBodysuits: 0, + clothesBoughtCasual: 0, + clothesBoughtUnderwear: 0, + clothesBoughtSports: 0, + clothesBoughtPony: 0, + clothesBoughtSwimwear: 0, + toysBoughtDildos: 0, + toysBoughtGags: 0, + toysBoughtVaginalAttachments: 0, + toysBoughtButtPlugs: 0, + toysBoughtButtPlugTails: 0, + toysBoughtSmartVibes: 0, + buckets: 0, + // pregmod variables + specialSlavesPriceOverride: 0, + pregAccessibility: 0, + dickAccessibility: 0, + ballsAccessibility: 0, + buttAccessibility: 0, + ageMode: 0, + enema: 0, + medicalEnema: 0, + dairyPiping: 0, + inflatedSlavesMilk: 0, + inflatedSlavesCum: 0, + milkPipeline: 0, + cumPipeline: 0, + wcPiping: 0, + burstee: 0, + slaveDeath: 0, + clinicInflateBelly: 0, + playerBred: 0, + propOutcome: 0, + EliteSires: ["crazy", "futa", "moves", "preggo", "quick", "virgin"], + startingPoint: -1, + PhysicalRetirementAgePolicy: 0, + raped: -1, + children: [], + missingParentID: -10000, + startingSlaveRelative: 0, + mom: 0, + // animalParts: 0, + originOveride: 0, + playerAging: 2, + pregSpeedControl: 0, + clinicSpeedGestation: 0, + playerSurgery: 0, + playerGetsMilked: 0, + bodyswapAnnounced: 0, + surnamesForbidden: 0, + menstruation: 0, + FCTVcount: 0, + FCTVrate: 4, + FCTVreceiver: 0, + receiverAvailable: 0, + FCTVshow: 0, + FCTVremote: 0, + lastShow: 0, + randShow: 0, + FCNNstation: 0, + MercenariesMessageSent: 0, + SpecialForcesMessageSent: 0, + BodyguardHasSucessfullyRecivedSignal: 0, + finalChoice: "none", + eliteTotal: 12, + eliteDead: 0, + eliteVegetable: 0, + eliteFate: 0, + swanSong: 0, + swanSongWeek: 99999, + failedElite: 0, + eugenicsFullControl: 0, + badC: 0, + badB: 0, + schoolSuggestion: 0, + TSS: { + schoolUpgrade: 0, + schoolPresent: 0, + schoolProsperity: 0, + subsidize: 0, + schoolAnnexed: 0, + studentsBought: 0, + schoolSale: 0 + }, + GRI: { + schoolUpgrade: 0, + schoolPresent: 0, + schoolProsperity: 0, + subsidize: 0, + schoolAnnexed: 0, + studentsBought: 0, + schoolSale: 0 + }, + SCP: { + schoolUpgrade: 0, + schoolPresent: 0, + schoolProsperity: 0, + subsidize: 0, + schoolAnnexed: 0, + studentsBought: 0, + schoolSale: 0 + }, + LDE: { + schoolUpgrade: 0, + schoolPresent: 0, + schoolProsperity: 0, + subsidize: 0, + schoolAnnexed: 0, + studentsBought: 0, + schoolSale: 0 + }, + TGA: { + schoolUpgrade: 0, + schoolPresent: 0, + schoolProsperity: 0, + subsidize: 0, + schoolAnnexed: 0, + studentsBought: 0, + schoolSale: 0 + }, + TCR: { + schoolUpgrade: 0, + schoolPresent: 0, + schoolProsperity: 0, + subsidize: 0, + schoolAnnexed: 0, + studentsBought: 0, + schoolSale: 0 + }, + TFS: { + schoolUpgrade: 0, + schoolPresent: 0, + schoolProsperity: 0, + subsidize: 0, + schoolAnnexed: 0, + studentsBought: 0, + schoolSale: 0 + }, + futaAddiction: 0, + HA: { + schoolUpgrade: 0, + schoolPresent: 0, + schoolProsperity: 0, + subsidize: 0, + schoolAnnexed: 0, + studentsBought: 0, + schoolSale: 0 + }, + NUL: { + schoolUpgrade: 0, + schoolPresent: 0, + schoolProsperity: 0, + subsidize: 0, + schoolAnnexed: 0, + studentsBought: 0, + schoolSale: 0 + }, + IDNumber: 1, + nIDNumber: 1, // tracks children in the nursery + week: 1, + weddingPlanned: 0, + personalAttention: "sex", + HeadGirl: 0, + HGTimeInGrade: 0, + HGEnergy: 0, + HGCum: 0, + Recruiter: 0, + recruiterTarget: "desperate whores", + recruiterProgress: 0, + recruiterIdleRule: "number", + recruiterIdleNumber: 20, + recruiterIOUs: 0, + bodyguardTrains: 1, + Bodyguard: 0, + Madam: 0, + DJ: 0, + Milkmaid: 0, + milkmaidImpregnates: 0, + Farmer: 0, + Collectrix: 0, + Stewardess: 0, + stewardessImpregnates: 0, + Schoolteacher: 0, + Attendant: 0, + Matron: 0, + Nurse: 0, + Wardeness: 0, + Concubine: 0, + economicUncertainty: 10, + justiceEvents: ["slave deal", "slave training", "majority deal", "indenture deal", "virginity deal", "breeding deal"], + // not in setupVars because we remove events from this array as they occur + prisonCircuit: ["low tier criminals", "gangs and smugglers", "white collar", "military prison"], + prisonCircuitIndex: 0, + fixedNationality: 0, + fixedRace: 0, + ui: "start", + tooltipsEnabled: 1, + brandTarget: {primary: "buttock", secondary: "buttock", local: "buttock"}, + brandDesign: {primary: "your initials", official: "your initials", local: "your initials"}, + scarTarget: {primary: "left cheek", secondary: "left cheek", local: "left cheek"}, + scarDesign: {primary: "generic", local: "generic"}, + oralTotal: 0, + vaginalTotal: 0, + analTotal: 0, + mammaryTotal: 0, + penetrativeTotal: 0, + milkTotal: 0, + cumTotal: 0, + foodTotal: 0, + birthsTotal: 0, + pitKillsTotal: 0, + collaboration: 0, + traitor: 0, + traitorType: 0, + traitorWeeks: 0, + hackerSupport: 0, + hostage: 0, + hostageAnnounced: 0, + hostageRescued: 0, + hostageGiveIn: 0, + rivalSet: 0, + rivalryFS: 0, + rivalryFSAdopted: 0, + rivalryFSRace: 0, + rivalOwner: 0, + rivalOwnerEnslaved: 0, + rivalryPower: 0, + rivalryDuration: 0, + rivalRace: 0, + rivalGender: 0, + nationHate: 0, + slaveMedic: 0, + PShoot: 0, + PSnatch: 0, + PStrip: 0, + PRaid: 0, + PRaidTarget: 0, + PAid: 0, + PPit: 0, + dispensary: 0, + dispensaryUpgrade: 0, + organFarmUpgrade: 0, + completedOrgans: [], + ImplantProductionUpgrade: 0, + permaPregImplant: 0, + injectionUpgrade: 0, + hormoneUpgradeMood: 0, + hormoneUpgradeShrinkage: 0, + hormoneUpgradePower: 0, + pubertyHormones: 0, + dietXXY: 0, + dietCleanse: 0, + cumProDiet: 0, + dietFertility: 0, + curativeUpgrade: 0, + growthStim: 0, + reproductionFormula: 0, + aphrodisiacUpgrade: 0, + aphrodisiacUpgradeRefine: 0, + healthyDrugsUpgrade: 0, + superFertilityDrugs: 0, + bellyImplants: 0, + cervixImplants: 0, + meshImplants: 0, + prostateImplants: 0, + youngerOvaries: 0, + sympatheticOvaries: 0, + fertilityImplant: 0, + asexualReproduction: 0, + animalOvaries: 0, + // {} currently unused + animalTesticles: 0, + // {} currently unused + animalMpreg: 0, + // {} currently unused + geneticMappingUpgrade: 0, + pregnancyMonitoringUpgrade: 0, + cloningSystem: 0, + geneticFlawLibrary: 0, + surgeryUpgrade: 0, + barracks: 0, + mercenaries: 0, + mercenariesHelpCorp: 0, + personalArms: 0, + saleDescription: 0, + gingering: 0, + beforeGingering: 0, + gingeringDetected: 0, + gingeringDetection: 0, + surgeryDescription: 0, + encyclopedia: "How to Play", + showEncyclopedia: 1, + trinkets: [], + SPcost: 1000, + debtWarned: 0, + internationalTrade: 1, + internationalVariety: 0, + slaveCostFactor: 0.95, + menialDemandFactor: 0, + menialSupplyFactor: 0, + demandTimer: 0, + supplyTimer: 0, + elapsedDemandTimer: 0, + elapsedSupplyTimer: 0, + slaveCostRandom: 0, + deltaDemand: 0, + deltaDemandOld: 0, + deltaSupply: 0, + deltaSupplyOld: 0, + NPCSexSupply: { + lowerClass: 3000, + middleClass: 3000, + upperClass: 3000, + topClass: 3000 + }, + NPCMarketShare: { + lowerClass: 1000, + middleClass: 1000, + upperClass: 1000, + topClass: 1000 + }, + sexSubsidies: { + lowerClass: 0, + middleClass: 0, + upperClass: 0, + topClass: 0 + }, + sexSupplyBarriers: { + lowerClass: 0, + middleClass: 0, + upperClass: 0, + topClass: 0 + }, + minimumSlaveCost: 2500, + facilityCost: 100, + enduringRep: 1000, + rep: 0, + repLastWeek: 0, + arcologyUpgrade: { + drones: 0, + hydro: 0, + apron: 0, + grid: 0, + spire: 0 + }, + AGrowth: 2, + ACitizens: 4250, + lowerClass: 3120, + LSCBase: 800, + visitors: 0, + rentDefaults: { + lowerClass: 20, + middleClass: 50, + upperClass: 180, + topClass: 650 + }, + rent: { + lowerClass: 20, + middleClass: 50, + upperClass: 180, + topClass: 650 + }, + rentEffectL: 1, + middleClass: 890, + MCBase: 200, + rentEffectM: 1, + upperClass: 200, + UCBase: 40, + rentEffectU: 1, + topClass: 40, + TCBase: 20, + rentEffectT: 1, + GDP: 278.6, + NPCSlaves: 900, + ASlaves: 900, + AProsperityCap: 0, + food: 50000, + foodLastWeek: 0, + foodProduced: 0, + foodStored: 0, + foodCost: 25, + foodMarket: 0, + foodRate: { + slave: 2, + lower: 1.8, + middle: 2, + upper: 2.2, + top: 2.4 + }, + foodConsumption: 0, // total amount food consumed per week + revealFoodEffects: 0, + rations: 0, + building: {}, + menials: 0, + fuckdolls: 0, + menialBioreactors: 0, + prestigeAuctioned: 0, + slaveMarketLimit: 20, + slavesSeen: 0, + slaveOrphanageTotal: 0, + citizenOrphanageTotal: 0, + privateOrphanageTotal: 0, + breederOrphanageTotal: 0, + alwaysSubsidizeRep: 0, + alwaysSubsidizeGrowth: 0, + ProImmigrationCash: 0, + ProImmigrationRep: 0, + AntiImmigrationCash: 0, + AntiImmigrationRep: 0, + ProEnslavementCash: 0, + ProEnslavementRep: 0, + AntiEnslavementCash: 0, + AntiEnslavementRep: 0, + BasicSMR: 1, + HealthInspectionSMR: 0, + EducationSMR: 0, + FrigiditySMR: 0, + BasicBeautySMR: 0, + QualityBeautySMR: 0, + BasicWeightSMR: 0, + BasicIntelligenceSMR: 0, + QualityIntelligenceSMR: 0, + BasicHeightSMR: 0, + AdvancedHeightSMR: 0, + IntelligenceEugenicsSMR: 0, + HeightEugenicsSMR: 0, + FaceEugenicsSMR: 0, + HonestySMR: 0, + ProRefugees: 0, + ProRecruitment: 0, + OralEncouragement: 0, + VaginalEncouragement: 0, + AnalEncouragement: 0, + OralDiscouragement: 0, + VaginalDiscouragement: 0, + AnalDiscouragement: 0, + CashForRep: 0, + RepForCash: 0, + Cash4Babies: 0, + RegularParties: 0, + PAPublic: 0, + CoursingAssociation: 0, + Lurcher: 0, + coursed: 0, + RaidingMercenaries: 0, + raided: 0, + MixedMarriage: 0, + CulturalOpenness: 0, + goodImageCampaign: 0, + sexualOpeness: 0, + policyCost: 5000, + expiree: 0, + retiree: 0, + birthee: 0, + CustomRetirementAgePolicy: 0, + BioreactorRetirement: 0, + ArcadeRetirement: 0, + CitizenRetirement: 0, + citizenRetirementMenials: 0, + citizenRetirementTrigger: 0, + FSSupLawTrigger: 0, + FSSubLawTrigger: 0, + SexMilestoneRetirement: 0, + MilkMilestoneRetirement: 0, + CumMilestoneRetirement: 0, + BirthsMilestoneRetirement: 0, + KillsMilestoneRetirement: 0, + retirementSex: 10000, + retirementMilk: 50000, + retirementCum: 500000, + retirementBirths: 5, + retirementKills: 3, + nicaea: 0, + nicaeaAnnounceable: 0, + nicaeaAnnounced: 0, + nicaeaPreparation: 0, + nicaeaInvolvement: -2, + nicaeaPower: 0, + nicaeaHeld: 0, + nicaeaFocus: "", + nicaeaAssignment: "", + nicaeaAchievement: "", + peacekeepers: 0, + peacekeepersFate: 0, + mercRomeo: 0, + oralUseWeight: 5, + vaginalUseWeight: 5, + analUseWeight: 5, + childProtectionAct: 1, + niceWeather: [], + lightWeather: [], + heavyWeather: [], + extremeWeather: [], + weatherToday: {}, + customSlaveOrdered: 0, + // I am not a slave object! Do not treat me like one! + customSlave: {}, + huskSlaveOrdered: 0, + huskSlave: {}, + // non-vanilla shit + // eslint-disable-next-line camelcase + one_time_age_overrides_pedo_mode: 0, + activeSlaveOneTimeMinAge: 0, + activeSlaveOneTimeMaxAge: 999, + oneTimeDisableDisability: 0, + targetAge: 18, + pubertyLength: 5, + maxGrowthAge: 24, + // Job Fulfillment Center + JFCOrder: 0, + Role: "", + cheatMode: 0, + cheatModeM: 1, + experimental: { + nursery: 0, + food: 0, + animalOvaries: 0, + dinnerParty: 0 + }, + NaNArray: [], + fcnn: [ + "...coming up at the top of the hour: Catgirl slaves, science fact or science fiction...", + "...coming up at the top of the hour: Malnockestivi Smith, Free Cities' first MtFtMtFtH transgendered person...", + "...new arcology construction up 23% worldwide this year, according to...", + "...United States Congress spends 1,264th consecutive day gridlocked over post office...", + "...coming up at the top of the hour: Arcology owners: oversexed oligarchs or attractive, oversexed oligarchs?...", + "...coming up at the top of the hour: Anal sex: not just for sex any more...", + "...coming up at the top of the hour: Oral sex: the new hello...", + "...new book by prominent feminist suggests that women should not be used as sexual appliances...", + "...just ahead, interview with Desha Moore, prominent advocate for compulsory female enslavement...", + "...just ahead, Slave Market Trends: will the pierced anus be in again this year...", + "...just ahead, Slave Market Trends: upstart slave trainers avoid implants...", + "...implant technology firm BusTech notches successful initial public offering...", + "...the upcoming shortage of authentic leather and what it means for the whip industry...", + "...dairy conglomerate Creem Inc. denies allegations of adulterating breast milk with...", + "...two-time award-winning actress Linda Loveless debuted new implants on the red carpet this...", + "...dick size: are your slaves lying to you when they tell you you're too big...", + "...just ahead, slave expert's opinion on best shemale slaves to use for double penetration...", + "...Free Cities social conservatives criticize marriage, say your slaves should be enough...", + "...councilman Taggart suggested in a public address that involuntary enslavement...", + "...councilman Taggart denies allegations that he has remained faithful to his wife...", + "...councilman Taggart presented evidence that regulation of the sex slave market would...", + "...after a word from our sponsors. Creem Inc.: for all your dairy needs...", + "...after a word from our sponsors. Horstmann Ltd, Free Cities' finest whipmakers...", + "...after a word from our sponsors. Coming soon to theaters, Quintuple, the musical...", + "...critical of low-end slave training corporation Wallerson & Sons for practices that they say...", + "...training corporation Wallerson & Sons called a study on slave illness rates 'ludicrous,' but...", + "...our tech correspondent: the possibilities of virally-administered gene therapy...", + "...our tech correspondent: breakthrough in in-vitro drug treatments that promise to...", + "...our tech correspondent: next year to see release of two competing aphrodisiacs...", + "...our tech correspondent: the coming permanent aphrodisiac implants, and what they mean...", + "...Sex Slaves in Space: what it takes to keep a mining crew happy for an 18-month contract...", + "...the implant-drug balance: how much tissue growth is necessary to support larger...", + "...the actress stated that the cut to full nudity in the script violated contractual...", + "...doping scandal as Slave Games watchdog alleges champion used internal reservoir of lube...", + "...next on Extreme Surgery: the mouthpussy experimenters and what they...", + "...'A hole's a hole,' said CEO of upstart budget glory hole franchise...", + "...underground slave pit fights step into the light this evening as...", + "...underground slave pit fight champion, freed yesterday, sells herself back into...", + "...with the lead designer of the MP17, the new machine pistol marketed specifically for bodyguards...", + "...the new Aegis drone series: because your arcology's security is your most important possession...", + "...the BAe Goshawk: because you deserve to travel at twice the speed of sound in the finest style...", + "...this year's Goat.cx award for outstanding orifice innovation goes to...", + "...public controversy over cannibalism. Decadence taken too far or an acceptable next step...", + "...sixth day of street cleaners' strike. Spokesman for the strikers: 'It's getting too nasty...", + "...debuts new book, 'So Long, And Thanks For All The Dicks', in which the recently retired sex slaves tell-all about...", + "...cure for lactose intolerance, for which he was awarded the International Association of Pastoralist...", + "...from the Free Cities have become increasingly common clientele for the black market...", + "...a risky gamble on the three-hour-long hardcore sex scene, but the box office figures for just...", + ], + // INCORPORATED MODS + SF: {}, + // Misc mod variables + recruiterEugenics: 0, + AgeEffectOnTrainerPricingPC: 1, + AgeEffectOnTrainerEffectivenessPC: 1, + AgeTrainingUpperBoundPC: 14, + AgeTrainingLowerBoundPC: 12, + IsInPrimePC: 3, + IsPastPrimePC: 5000, + prostheticsUpgrade: 0, + adjustProstheticsCompleted: 0, + adjustProsthetics: [], + researchLab: { + aiModule: 1, + tasks: [], + maxSpace: 0, + hired: 0, + menials: 0, + }, + prosthetics: {}, + merchantFSWares: ["AssetExpansionistResearch", "GenderRadicalistResearch", "HedonisticDecadenceResearch", "SlaveProfessionalismResearch", "SlimnessEnthusiastResearch", "TransformationFetishistResearch", "YouthPreferentialistResearch"], + merchantIllegalWares: ["asexualReproduction", "childhoodFertilityInducedNCS", "PGHack", "RapidCellGrowthFormula", "sympatheticOvaries", "UterineRestraintMesh"], + // "AnimalOrgans" for future use + RapidCellGrowthFormula: 0, + UterineRestraintMesh: 0, + PGHack: 0, + diversePronouns: 0, + // Security Expansion + wasToggledBefore: 0, + // moved first build to post toggle + secExpEnabled: 0, + // Career-skill gain + masteredXP: 200, + // Weather effect on economy + antiWeatherFreeze: 0, + econWeatherDamage: 0, + disasterResponse: 0, + postSexCleanUp: 1, + sideBarOptions: { + compact: 1, + Cash: 1, + Upkeep: 1, + SexSlaveCount: 1, + roomPop: 1, + Rep: 1, + GSP: 1, + Authority: 1, + Security: 1, + Crime: 1 + }, + DefaultBirthDestination: "individually decided fates", + abbreviateHormoneBalance: 2, + // END OLD INIT VARIABLES SECTION, after this, variables were being created in other places in the game + + shelterGirlsIDs: [], // Only needed in endweek loop + AProsperityCapModified: 0, + PCTitle: "", + Sweatshops: 0, + thisWeeksFSWares: 0, + thisWeeksIllegalWares: 0, + milkTap: 0, + corpSpecTimer: 0, + debugModeCustomFunction: 0, + active: 0, + recuriterOffice: 0, + campaign: 0, + miniTruth: 0, + secretService: 0, + fakeNews: 0, + controlLeaks: 0, + marketInfiltration: 0, + blackOps: 0, + focus: "social engineering", + + militiaRecruitmen: 0, + corpSpecCosmetics: 0, + rivalID: 0, + eventDescription: 0, + eliteAuctioned: 0, + slavesSacrificedThisWeek: 0, + subSlaves: 0, + + PopCap: 0, + masturbationAllowed: 0, + HGtraining: "", + mercenariesTitle: "", + milk: 0, + cum: 0, + hormones: 0, + milkSale: 0, + FSReminder: 0, + facility: {}, + boomerangStats: {}, + FSNonconformist: "", + econAdvantage: 0, + attackType: "none", + attackThisWeek: 0, + lastAttackWeeks: 0, + lastRebellionWeeks: 0, + hasFoughtOnce: 0, + hasFoughtMajorBattleOnce: 0, + hasRebelledOnce: 0, + majorBattle: 0, + PCvictoryStreak: 0, + PClossStreak: 0, + foughtThisWeek: 0, + + /* edicts */ + alternativeRents: 0, + enslavementRights: 0, + securityExemption: 0, + sellData: 0, + propCampaignBoost: 0, + slaveWatch: 0, + subsidyChurch: 0, + limitImmigration: 0, + openBorders: 0, + slavesOfficers: 0, + martialSchool: 0, + discountMercenaries: 0, + militiaFounded: 0, + recruitVolunteers: 0, + conscription: 0, + militaryService: 0, + militarizedSociety: 0, + militaryExemption: 0, + lowerRquirements: 0, + noSubhumansInArmy: 0, + pregExemption: 0, + eliteOfficers: 0, + liveTargets: 0, + legionTradition: 0, + eagleWarriors: 0, + ronin: 0, + sunTzu: 0, + mamluks: 0, + pharaonTradition: 0, + weaponsLaw: 3, + soldierWages: 1, + militiaSoldierPrivilege: 0, + slaveSoldierPrivilege: 0, + mercSoldierPrivilege: 0, + tradeLegalAid: 0, + taxTrade: 0, + + /* buildings */ + secHQ: 0, + secMenials: 0, + secUpgrades: {}, + crimeUpgrades: {}, + intelUpgrades: {}, + readinessUpgrades: {}, + riotCenter: 0, + riotUpgrades: {}, + fort: {}, + sentUnitCooldown: 0, + advancedRiotEquip: 0, + brainImplant: -1, + brainImplantProject: 0, + weapMenials: 0, + weapManu: 0, + weapProductivity: 1, + weapLab: 1, + baseUpgradeTime: 10, + weapUpgrades: [], + currentUpgrade: {}, + droneUpgrades: {}, + humanUpgrade: {}, + sellTo: {}, + completedUpgrades: [], + transportHub: 0, + airport: 1, + railway: 1, + docks: 1, + hubSecurity: 1, + + /* events */ + smilingManProgress: 0, + investedFunds: 0, + relationshipLM: 0, + captureRoute: 0, + collaborationRoute: 0, + smilingManWeek: 0, + globalCrisisWeeks: 0, + smilingManFate: 4, + + /* rebellions */ + tension: 0, + slaveProgress: 0, + citizenProgress: 0, + slaveRebellionEventFires: 0, + citizenRebellionEventFires: 0, + slaveRebellion: 0, + citizenRebellion: 0, + rebellingUnits: [], + engageRule: 0, + irregulars: 0, + rebellingMilitia: 0, + rebellingSlaves: 0, + rebellingMercs: 0, + repairTime: 3, + arcRepairTime: 0, + garrison: {}, + rebellionsCount: 0, + PCrebWon: 0, + PCrebLoss: 0, + + /* armed forces stats */ + targetUnit: 0, + targetIndex: 0, + secBotsCost: 500, + secBotsUpgradeCost: 250, + equipUpgradeCost: 250, + maxTroops: 30, + militiaTotalManpower: 0, + militiaFreeManpower: 0, + militiaEmployedManpower: 0, + militiaTotalCasualties: 0, + slavesEmployedManpower: 0, + slavesTotalCasualties: 0, + slavesMaxTroops: 30, + mercTotalManpower: 0, + mercFreeManpower: 0, + mercEmployedManpower: 0, + mercTotalCasualties: 0, + militiaLoyalty: 0, + slaveArmyLoyalty: 0, + mercLoyalty: 0, + createdSlavesUnits: 0, + createdMilitiaUnits: 0, + createdMercUnits: 0, + + /* battle relevant vars */ + slaveVictories: [], + slaveIncreasedPrestige: 0, + totalKills: 0, + battlesCount: 0, + majorBattlesCount: 0, + chosenTactic: "none", + leadingTroops: "none", + attackTroops: 0, + attackEquip: 0, + battleTerrain: "none", + maxTurns: 10, + battleResult: 4, + /* sets battleResult value outside accepted range (-3,3) to avoid evaluation problems */ + losses: 0, + enemyLosses: 0, + battleTurns: 0, + tacticsSuccessful: 0, + leaderWounded: 0, + /* 0=no wound, 1=mute, 2=blind, 3=amputee, 4=health */ + gainedCombat: 0, + gainedWarfare: 0, + expectedEquip: 0, + estimatedMen: 0, + SFIntervention: 0, + carriableSoldiers: 0, + SFatk: 0, + SFdef: 0, + SFhp: 0, + rebellingID: [], + saveValid: 0, + lastSelection: [], + + /* statistics */ + equipMod: 0.15, + secBotsBaseAttack: 7, + secBotsBaseDefense: 3, + secBotsMorale: 200, + secBotsBaseHp: 3, + militiaBaseAttack: 0, + militiaBaseDefense: 0, + militiaBaseMorale: 0, + militiaBaseHp: 0, + slaveBaseAttack: 0, + slaveBaseDefense: 0, + slaveBaseMorale: 0, + slaveBaseHp: 0, + mercBaseAttack: 0, + mercBaseDefense: 0, + mercBaseMorale: 0, + mercBaseHp: 0, + SFBaseAttack: 0, + SFBaseDefense: 0, + SFBaseMorale: 0, + SFBaseHp: 0, + + raBaseAttack: 7, + raBaseDefense: 2, + raBaseMorale: 100, + raBaseHp: 2, + fcBaseAttack: 6, + fcBaseDefense: 4, + fcBaseMorale: 130, + fcBaseHp: 3, + owBaseAttack: 8, + owBaseDefense: 4, + owBaseMorale: 110, + owBaseHp: 2, + ffBaseAttack: 9, + ffBaseDefense: 2, + ffBaseMorale: 160, + ffBaseHp: 2, + + /* units */ + secBots: {}, + + militiaUnits: [], + slaveUnits: [], + mercUnits: [], + + /* SFanon additions */ + SFSupportLevel: 0, + SFGear: 0, + SavedLeader: 0, + SavedSFI: 0, + sectionInFirebase: 0, + + /* base vars */ + secExp: {}, + PCvictories: 0, + PClosses: 0, + + /* buildings */ + woundType: 0, + /* 0:no wound, 1:mute, 2:blind, 3:amputee, 4<:health */ + + showOne: 0, + showTwo: 0, + showThree: 0, + showFour: 0, + showFive: 0, + showSix: 0, + showSeven: 0, + showEight: 0, + showNine: 0, + showTen: 0, + showEleven: 0, + showTwelve: 0, + showThirteen: 0, + showFourteen: 0, + showFifteen: 0, + showSixteen: 0, + reminderEntry: "", + reminderWeek: "", + lastWeeksCashIncome: {}, + lastWeeksCashExpenses: {}, + lastWeeksCashProfits: {}, + lastWeeksRepIncome: {}, + lastWeeksRepExpenses: {}, + lastWeeksRepProfits: {}, + currentRule: {}, + costs: 0, + seeBuilding: 0, + slaveOneTimeMinAge: 0, + slaveOneTimeMaxAge: 0, + FCTVenable: 0, + purchasedSagBGone: 0, + eliteFail: 0, + eliteFailTimer: 0, + nurseryGrowthStimsSetting: 0, + MadamIgnoresFlaws: 0, + farmyardBreeding: 0, + farmyardShows: 0, + DJignoresFlaws: 0, + slaveFightingBG: 0, + SecExp: {}, + childSex: 0, + HGSlaveSuccess: 0, + unMadam: 0, + madamCashBonus: 0, + whorePriceAdjustment: {}, + unDJ: 0, + DJRepBonus: 0, + fuckSlaves: 0, + freeSexualEnergy: 0, + publicServants: 0, + averageDick: 0, + slavesWithWorkingDicks: 0, + slaveJobValues: {}, + + FSSlaveProfLawTrigger: 0, + + fluid: 0, + cumSale: 0, + showClothingErection: true, + revivalistLanguage: 0, + corpOpCost: 0, + corpNeighborBonus: 0, + corpOverhead: 0, + corpEconBonus: 0, + corpNeighborBonusOld: 0, + corpEconBonusOld: 0, + corpEconOld: 0, + assistant: {}, + localEcon: 0, + econRate: 0, + drugsCost: 0, + rulesCost: 0, + modCost: 0, + surgeryCost: 0, + arcologies: [], + leaders: [], + HackingSkillMultiplier: 0, + upgradeMultiplierArcology: 0, + upgradeMultiplierMedicine: 0, + upgradeMultiplierTrade: 0, + nationalities: {}, + heroSlaves: [], + baseHeroSlave: {}, + JobIDArray: {}, + averageTrust: 0, + averageDevotion: 0, + enduringTrust: 0, + enduringDevotion: 0, + defaultRules: [], +}; + +App.Data.ignoreGameStateVariables = [ + // pronouns + "Mothers", + "mothers", + "Fathers", + "Husbands", + "Husband", + "Brother", + "Son", + "Shota", + "Men", + "Man", + "fathers", + "husbands", + "husband", + "brother", + "son", + "shota", + "men", + "man", + "Mother", + "Wives", + "Wife", + "Sister", + "Daughter", + "Loli", + "Women", + "Woman", + "mother", + "wives", + "wife", + "sister", + "daughter", + "loli", + "women", + "woman", + "Girl", + "Herself", + "Hers", + "Her", + "She", + "girl", + "herself", + "hers", + "her", + "she", + "Father", + "father", + "Boy", + "Himself", + "His", + "Him", + "He", + "boy", + "himself", + "his", + "him", + "he", + + // Enunciate + "XEnunciate", + "xEnunciate", + "SchEnunciate", + "schEnunciate", + "ScEnunciate", + "scEnunciate", + "ShEnunciate", + "shEnunciate", + "PsEnunciate", + "psEnunciate", + "ChEnunciate", + "chEnunciate", + "zzEnunciate", + "ZEnunciate", + "zEnunciate", + "ccEnunciate", + "CEnunciate", + "cEnunciate", + "ssEnunciate", + "SEnunciate", + "sEnunciate", + "sayEnunciate", + "titleEnunciate" +]; diff --git a/js/003-data/miscData.js b/js/003-data/miscData.js index e1be87724bfb2c5c79cc2b7ea4e12124bbe97506..95b68abe80333c7d1db1520a455b6e117cff0422 100644 --- a/js/003-data/miscData.js +++ b/js/003-data/miscData.js @@ -2687,3 +2687,45 @@ App.Data.misc.nationalityPoolSelector = { "Japan": App.Data.misc.asiaNationalities, "Brazil": App.Data.misc.southamericaNationalities }; + +App.Data.weather = { + nice: [ + {name: "Sunny", severity: 1}, + {name: "Cloudy", severity: 1}, + {name: "Partly Cloudy", severity: 1}, + {name: "Overcast", severity: 1}, + {name: "Light Wind", severity: 1}, + {name: "Clear and Calm", severity: 1}, + {name: "Light Rain", severity: 1}, + {name: "Heavy Rain", severity: 1}, + {name: "Smoke warning", severity: 1}, + ], + light: [ + {name: "High Winds", severity: 2}, + {name: "Acid Rain", severity: 2}, + {name: "T-Storm Warning", severity: 2}, + {name: "Flood Warning", severity: 2}, + {name: "Tornado Warning", severity: 2}, + {name: "Light Sandstorm", severity: 2}, + {name: "High Heat", severity: 2}, + {name: "Smoky", severity: 2}, + ], + heavy: [ + {name: "Extreme Winds", severity: 3}, + {name: "Heavy Acid Rain", severity: 3}, + {name: "Extreme T-storm", severity: 3}, + {name: "Flooding", severity: 3}, + {name: "Tornadoes", severity: 3}, + {name: "Sandstorm", severity: 3}, + {name: "Extreme Heat", severity: 3}, + {name: "Dense Smoke", severity: 3}, + ], + extreme: [ + {name: "Solar Flare", severity: 4}, + {name: "Ion Storm", severity: 4}, + {name: "Cataclysmic Rains", severity: 4}, + {name: "Cat 6 Hurricane", severity: 4}, + {name: "Abrasive Sandstorm", severity: 4}, + {name: "Radiological Warning", severity: 4}, + ] +}; diff --git a/src/002-config/mousetrapConfig.js b/src/002-config/mousetrapConfig.js index bae8064f053960b41c22fb8489e3122a81ab75b3..1007d1f07271562f06aea98bcc4a3df159143d88 100644 --- a/src/002-config/mousetrapConfig.js +++ b/src/002-config/mousetrapConfig.js @@ -54,10 +54,10 @@ Mousetrap.bind("h", function() { $("#manageHG a").trigger("click"); }); Mousetrap.bind("s", function() { - $("#buySlaves a.macro-link").trigger("click"); + $("#buySlaves a").trigger("click"); }); Mousetrap.bind("a", function() { - $("#managePA a.macro-link").trigger("click"); + $("#managePA a").trigger("click"); }); Mousetrap.bind("b", function() { $("#manageBG a").trigger("click"); diff --git a/src/003-assets/CSS/slaveList.css b/src/003-assets/CSS/slaveList.css index c0750f9317c2a1b8e535123baa1716d621df1786..a6a15b2b3d30a9cb5982777fa761e3360dfae282 100644 --- a/src/003-assets/CSS/slaveList.css +++ b/src/003-assets/CSS/slaveList.css @@ -2,6 +2,19 @@ div.slaveSummary { clear: both; } +.slaveSummary.card { + border-radius: 8px; + border-top: 2px #333333; + border-left: 2px #333333; + border-bottom: 0; + border-right: 0; + border-style: solid; + background-color: #1a1a1a; + box-shadow: 10px 10px 5px black; + padding: 10px; + margin-bottom: 15px; +} + /* slave summary paragraph when "see images" is enabled */ p.si { margin-bottom: 0; @@ -28,8 +41,3 @@ span.freeAssignment { .strong { font-weight: bold; } - -.emphasizedSlave{ - font-weight: bold; - text-decoration: underline; -} diff --git a/src/003-assets/CSS/tabs.css b/src/003-assets/CSS/tabs.css index fd8adaf4b1e507cb3ea37edbcf3202dfc50a85fb..1f972210d691fff9990db931f5c2d915e8d3537e 100644 --- a/src/003-assets/CSS/tabs.css +++ b/src/003-assets/CSS/tabs.css @@ -1,8 +1,8 @@ -div.tab { +div.tabbar { overflow: hidden; } -div.tab button { +div.tabbar button { background-color: #252525; border: solid 2px #252525; color: #68d; @@ -14,22 +14,50 @@ div.tab button { font-size: large; } -div.tab button:hover { +div.tabbar button.card { + border-top-left-radius: 15px; + border-top-right-radius: 15px; + border: none; +} + +div.tabbar button.card.active { + background-color: #1a1a1a; +} + +div.tabbar button:hover { background-color: #414141; } -div.tab button.active { +div.tabbar button.active { background-color: #050505; color: #c7cedf; } -.tabcontent { +div.tabbar a.active { + color: white; + pointer-events: none; + cursor: default; +} + +.tabcontent:not(.noFade) { display: none; padding: 6px 12px; -webkit-animation: fadeEffect 0.3s; animation: fadeEffect 0.3s; } +.tabcontent.card { + border-radius: 0 8px 8px 8px; + background-color: #1a1a1a; + box-shadow: 10px 10px 5px black; + margin-bottom: 15px; +} + + +.tabcontent.card .slaveSummary.card { + background-color: #252525; +} + @-webkit-keyframes fadeEffect { from { opacity: 0; diff --git a/src/004-base/arcologyBuilding.js b/src/004-base/arcologyBuilding.js index 262d9d94a5795cbd6f0a091ade74d7c6d1fedf02..ba1f746564abc68335c11bbca038c708fc1d3c9d 100644 --- a/src/004-base/arcologyBuilding.js +++ b/src/004-base/arcologyBuilding.js @@ -88,7 +88,7 @@ App.Arcology.Cell.BaseCell = class extends App.Entity.Serializable { buySpan.classList.add("clear-formatting"); buySpan.append(App.UI.DOM.passageLink("Buy", "Main", () => { - cashX(-(price + 10000)); + cashX(-(price + 10000), "capEx"); A.demandFactor += 20; App.Arcology.updateOwnership(); cell.owner = 1; diff --git a/src/Mods/DinnerParty/dinnerPartyExecution.tw b/src/Mods/DinnerParty/dinnerPartyExecution.tw index 92cec1cbe427a6e9e89b3430fa3d0adbcde71e14..4e6c863d5ad70d2f9e9bd1e057bdebdb698d393f 100644 --- a/src/Mods/DinnerParty/dinnerPartyExecution.tw +++ b/src/Mods/DinnerParty/dinnerPartyExecution.tw @@ -557,11 +557,8 @@ /*<br style="clear:both" />*/ <br> - <<if $activeSlave.origin != 0>> - <<set $toSearch = $activeSlave.origin>> - <<if $toSearch.indexOf("Slave Shelter") != -1>> - <<set $shelterAbuse += 1>> - <</if>> + <<if isShelterSlave($activeSlave)>> + <<set $shelterAbuse += 1>> <</if>> <<= removeActiveSlave() >> diff --git a/src/SecExp/js/secExp.js b/src/SecExp/js/secExp.js index d0a9c9dcef3f32c12ee18a24d3780eaace9fb697..5541934309d473e6fe079da1ba7ea59c3e96eb32 100644 --- a/src/SecExp/js/secExp.js +++ b/src/SecExp/js/secExp.js @@ -292,7 +292,7 @@ App.SecExp.battle = (function() { if(V.readinessUpgrades.earlyWarn > 0) { init += 2; } - if( V.SF.Toggle && V.SF.Active >= 1 && jsDef(V.sectionInFirebase)) { + if( V.SF.Toggle && V.SF.Active >= 1 && V.sectionInFirebase >= 1) { init += 2; } return init; @@ -401,7 +401,6 @@ App.SecExp.Check = (function() { V.SecExp.settings.show = V.SecExp.settings.show || 0; if (jsDef(V.showSecExp)) { V.SecExp.settings.show = V.showSecExp; - delete V.showSecExp; } if (passage() === "init" || passage() === "New Game Plus") { @@ -431,38 +430,32 @@ App.SecExp.Check = (function() { } if (jsDef(V.trade)) { V.SecExp.core.trade = V.trade; - delete V.trade; } V.SecExp.core.authority = V.SecExp.core.authority || 0; if (jsDef(V.authority)) { V.SecExp.core.authority = V.authority; - delete V.authority; } V.SecExp.security = V.SecExp.security || {}; V.SecExp.security.cap = V.SecExp.security.cap || 100; if (jsDef(V.security)) { V.SecExp.security.cap = V.security; - delete V.security; } V.SecExp.core.crimeLow = V.SecExp.core.crimeLow || 30; if (jsDef(V.crime)) { V.SecExp.core.crimeLow = V.crime; - delete V.crime; } V.SecExp.settings.difficulty = V.SecExp.settings.difficulty || 1; if (jsDef(V.difficulty)) { V.SecExp.settings.difficulty = V.difficulty; - delete V.difficulty; } V.SecExp.settings.battle = V.SecExp.settings.battle || {}; V.SecExp.settings.battle.enabled = V.SecExp.settings.battle.enabled || 1; if (jsDef(V.battlesEnabled)) { V.SecExp.settings.battle.enabled = V.battlesEnabled; - delete V.battlesEnabled; } delete V.SecExp.battle; @@ -470,19 +463,16 @@ App.SecExp.Check = (function() { V.SecExp.settings.battle.frequency = V.SecExp.settings.battle.frequency || 1; if (jsDef(V.battleFrequency)) { V.SecExp.settings.battle.frequency = V.battleFrequency; - delete V.battleFrequency; } V.SecExp.settings.battle.force = V.SecExp.settings.battle.force || 0; if (jsDef(V.forceBattle)) { V.SecExp.settings.battle.force = V.forceBattle; - delete V.forceBattle; } if (jsDef(V.readiness)) { if(V.readiness === 10) { V.sectionInFirebase = 1; } - delete V.readiness; } V.SecExp.settings.unitDescriptions = V.SecExp.settings.unitDescriptions || 0; @@ -490,58 +480,48 @@ App.SecExp.Check = (function() { V.SecExp.settings.battle.allowSlavePrestige = V.SecExp.settings.battle.allowSlavePrestige || 1; if (jsDef(V.allowPrestigeFromBattles)) { V.SecExp.settings.battle.allowSlavePrestige = V.allowPrestigeFromBattles; - delete V.allowPrestigeFromBattles; } V.SecExp.settings.battle.major.enabled = 0; if (jsDef(V.majorBattlesEnabled)) { V.SecExp.settings.battle.major.enabled = V.majorBattlesEnabled; - delete V.majorBattlesEnabled; } V.SecExp.settings.battle.major.gameOver = V.SecExp.settings.battle.major.gameOver || 1; if (jsDef(V.majorBattleGameOver)) { V.SecExp.settings.battle.major.gameOver = V.majorBattleGameOver; - delete V.majorBattleGameOver; } V.SecExp.settings.battle.major.force = V.SecExp.settings.battle.major.force || 0; if (jsDef(V.forceMajorBattle)) { V.SecExp.settings.battle.major.force = V.forceMajorBattle; - delete V.forceMajorBattle; } - delete V.majorBattleMult; delete V.SecExp.settings.battle.major.mult; V.SecExp.settings.rebellion = V.SecExp.settings.rebellion || {}; V.SecExp.settings.rebellion.enabled = V.SecExp.settings.rebellion.enabled || 1; if (jsDef(V.rebellionsEnabled)) { V.SecExp.settings.rebellion.enabled = V.rebellionsEnabled; - delete V.rebellionsEnabled; } V.SecExp.settings.rebellion.force = V.SecExp.settings.rebellion.force || 0; if (jsDef(V.forceRebellion)) { V.SecExp.settings.rebellion.force = V.forceRebellion; - delete V.forceRebellion; } V.SecExp.settings.rebellion.gameOver = V.SecExp.settings.rebellion.gameOver || 1; if (jsDef(V.rebellionGameOver)) { V.SecExp.settings.rebellion.gameOver = V.rebellionGameOver; - delete V.rebellionGameOver; } V.SecExp.settings.rebellion.speed = V.SecExp.settings.rebellion.speed || 1; if (jsDef(V.rebellionSpeed)) { V.SecExp.settings.rebellion.speed = V.rebellionSpeed; - delete V.rebellionSpeed; } if (V.SecExp.settings.battle.enabled + V.SecExp.settings.rebellion.enabled > 0) { V.SecExp.settings.showStats = V.SecExp.settings.showStats || 0; if (jsDef(V.showBattleStatistics)) { V.SecExp.settings.showStats = V.showBattleStatistics; - delete V.showBattleStatistics; } } @@ -556,7 +536,7 @@ App.SecExp.Check = (function() { delete V.SecExp.buildings.pr; } if (jsDef(V.propHub)) { - V.SecExp.buildings.propHub.active = V.propHub; delete V.propHub; + V.SecExp.buildings.propHub.active = V.propHub; } if (V.SecExp.buildings.propHub.active > 0) { @@ -564,19 +544,16 @@ App.SecExp.Check = (function() { V.SecExp.buildings.propHub.campaign = V.SecExp.buildings.propHub.campaign || 0; if (jsDef(V.propCampaign)) { V.SecExp.buildings.propHub.campaign = V.propCampaign; - delete V.propCampaign; } V.SecExp.buildings.propHub.miniTruth = V.SecExp.buildings.propHub.miniTruth || 0; if (jsDef(V.miniTruth)) { V.SecExp.buildings.propHub.miniTruth = V.miniTruth; - delete V.miniTruth; } V.SecExp.buildings.propHub.secretService = V.SecExp.buildings.propHub.secretService || 0; if (jsDef(V.secretService)) { V.SecExp.buildings.propHub.secretService = V.secretService; - delete V.secretService; } if (jsDef(V.SecExp.buildings.propHub.SS)) { V.SecExp.buildings.propHub.secretService = V.SecExp.buildings.propHub.SS; @@ -592,7 +569,6 @@ App.SecExp.Check = (function() { if (jsDef(V.RecuriterOffice)) { V.recuriterOffice = V.RecuriterOffice; - delete V.RecuriterOffice; } const vars = ['recuriterOffice', 'fakeNews', 'controlLeaks', 'marketInfiltration', 'blackOps']; for(let i = 0; i < vars.length; i++) { @@ -608,7 +584,7 @@ App.SecExp.Check = (function() { V.SecExp.buildings.barracks = V.SecExp.buildings.barracks || {}; V.SecExp.buildings.barracks.active = V.SecExp.buildings.barracks.active || 0; if (jsDef(V.secBarracks)) { - V.SecExp.buildings.barracks.active = V.secBarracks; delete V.secBarracks; + V.SecExp.buildings.barracks.active = V.secBarracks; } if (V.SecExp.buildings.barracks.active > 0) { @@ -619,7 +595,6 @@ App.SecExp.Check = (function() { V.SecExp.buildings.barracks.upgrades.loyaltyMod = V.SecExp.buildings.barracks.upgrades.loyaltyMod || 0; if (jsDef(V.secBarracksUpgrades)) { V.SecExp.buildings.barracks.upgrades = V.secBarracksUpgrades; - delete V.secBarracksUpgrades; } } @@ -627,58 +602,22 @@ App.SecExp.Check = (function() { V.SecExp.proclamation.cooldown = V.SecExp.proclamation.cooldown || 0; if (jsDef(V.proclamationsCooldown)) { V.SecExp.proclamation.cooldown = V.proclamationsCooldown; - delete V.proclamationsCooldown; } V.SecExp.proclamation.currency = V.SecExp.proclamation.currency || ""; if (jsDef(V.proclamationCurrency)) { V.SecExp.proclamation.currency = V.proclamationCurrency; - delete V.proclamationCurrency; } V.SecExp.proclamation.type = V.SecExp.proclamation.type || "crime"; if (jsDef(V.proclamationType)) { if (V.proclamationType !== "none") { V.SecExp.proclamation.type = V.proclamationType; } - delete V.proclamationType; } } - if (jsDef(V.secRestPoint)) { - delete V.secRestPoint; - } - if (jsDef(V.SecExp.security)) { - delete V.SecExp.security.low; - } - if (jsDef(V.crimeCap)) { - delete V.crimeCap; - } if (jsDef(V.SecExp.core)) { delete V.SecExp.core.crimeCap; } - if (jsDef(V.recon)) { - delete V.recon; - } - if (jsDef(V.SecExp.battle)) { - delete V.SecExp.battle.recon; - } - - delete V.battlesEnabledOceanic; - delete V.baseBribePerAttacker; delete V.bribeCost; - - delete V.deployingBots; - - delete V.reqMenials; delete V.troopCount; - delete V.maxUnits; delete V.deployableUnits; - delete V.deployedUnits; delete V.activeUnits; - - delete V.upgradeUpkeep; delete V.SFSupportUpkeep; - delete V.secBarracksUpkeep; delete V.secHQUpkeep; - delete V.propHubUpkeep; delete V.riotUpkeep; - delete V.soldierUpkeep; delete V.edictsAuthUpkeep; - - // Unsed varabiles - delete V.rebelDefeatAftermath; delete V.notInvolved; - delete V.limitSubhumans; delete V.oldFlux; } // Closes general check function. function secRestPoint() { diff --git a/src/SecExp/secInit.tw b/src/SecExp/secInit.tw deleted file mode 100644 index 571892fdc6b630aee2a8bc72fdf2734a03507bc2..0000000000000000000000000000000000000000 --- a/src/SecExp/secInit.tw +++ /dev/null @@ -1,282 +0,0 @@ -:: secInit [nobr] - -/* base vars */ -<<set $SecExp = SecExpBase()>> -<<= App.SecExp.Check.general()>> -<<set $secExp = SecExpBase()>> -<<set $attackType = "none">> -<<set $attackThisWeek = 0>> -<<set $lastAttackWeeks = 0>> -<<set $lastRebellionWeeks = 0>> -<<set $hasFoughtOnce = 0>> -<<set $hasFoughtMajorBattleOnce = 0>> -<<set $hasRebelledOnce = 0>> -<<set $majorBattle = 0>> -<<set $PCvictoryStreak = 0>> -<<set $PCvictories = 0>> -<<set $PClossStreak = 0>> -<<set $PClosses = 0>> -<<set $foughtThisWeek = 0>> - -/* edicts */ -<<set $alternativeRents = 0>> -<<set $enslavementRights = 0>> -<<set $securityExemption = 0>> -<<set $sellData = 0>> -<<set $propCampaignBoost = 0>> -<<set $slaveWatch = 0>> -<<set $subsidyChurch = 0>> -<<set $limitImmigration = 0>> -<<set $openBorders = 0>> -<<set $slavesOfficers = 0>> -<<set $martialSchool = 0>> -<<set $discountMercenaries = 0>> -<<set $militiaFounded = 0>> -<<set $recruitVolunteers = 0>> -<<set $conscription = 0>> -<<set $militaryService = 0>> -<<set $militarizedSociety = 0>> -<<set $militaryExemption = 0>> -<<set $lowerRquirements = 0>> -<<set $noSubhumansInArmy = 0>> -<<set $pregExemption = 0>> -<<set $eliteOfficers = 0>> -<<set $liveTargets = 0>> -<<set $legionTradition = 0>> -<<set $eagleWarriors = 0>> -<<set $ronin = 0>> -<<set $sunTzu = 0>> -<<set $mamluks = 0>> -<<set $pharaonTradition = 0>> -<<set $weaponsLaw = 3>> -<<set $soldierWages = 1>> -<<set $militiaSoldierPrivilege = 0>> -<<set $slaveSoldierPrivilege = 0>> -<<set $mercSoldierPrivilege = 0>> -<<set $tradeLegalAid = 0>> -<<set $taxTrade = 0>> - -/* buildings */ -<<set $secHQ = 0>> -<<set $secMenials = 0>> -<<set $secUpgrades = { - nanoCams: 0, - cyberBots: 0, - eyeScan: 0, - cryptoAnalyzer: 0, - coldstorage: 0}>> -<<set $crimeUpgrades = { - autoTrial: 0, - autoArchive: 0, - worldProfiler: 0, - advForensic: 0}>> -<<set $intelUpgrades = { - sensors: 0, - radar: 0, - signalIntercept: 0}>> -<<set $readinessUpgrades = { - earlyWarn: 0, - rapidPlatforms: 0, - pathways: 0, - rapidVehicles: 0}>> -<<set $riotCenter = 0>> -<<set $riotUpgrades = { - freeMedia: 0, - rapidUnit: 0, - rapidUnitSpeed: 0}>> -<<set $fort = { - reactor: 0, - waterway: 0, - assistant:0}>> -<<set $sentUnitCooldown = 0>> -<<set $advancedRiotEquip = 0>> -<<set $brainImplant = -1>> -<<set $brainImplantProject = 0>> -<<set $weapManu = 0>> -<<set $weapMenials = 0>> -<<set $weapProductivity = 1>> -<<set $weapLab = 1>> -<<set $baseUpgradeTime = 10>> -<<set $currentUpgrade = { - name: " ", - unit: 0, - type: 0, - time: 0}>> -<<set $droneUpgrades = { - attack: 0, - defense: 0, - hp:0}>> -<<set $humanUpgrade = { - attack: 0, - defense: 0, - hp:0, - morale: 0}>> -<<set $sellTo = { - citizen: 1, - raiders: 1, - oldWorld: 1, - FC: 1}>> -<<set $completedUpgrades = []>> -<<set $transportHub = 0>> -<<set $airport = 0>> -<<set $railway = 0>> -<<set $docks = 0>> -<<set $hubSecurity = 1>> - -/* events */ -<<set $smilingManProgress = 0>> -<<set $investedFunds = 0>> -<<set $relationshipLM = 0>> -<<set $captureRoute = 0>> -<<set $collaborationRoute = 0>> -<<set $smilingManWeek = 0>> -<<set $globalCrisisWeeks = 0>> -<<set $smilingManFate = 4>> - -/* rebellions */ -<<set $tension = 0>> -<<set $slaveProgress = 0>> -<<set $citizenProgress = 0>> -<<set $slaveRebellionEventFires = 0>> -<<set $citizenRebellionEventFires = 0>> -<<set $slaveRebellion = 0>> -<<set $citizenRebellion = 0>> -<<set $rebellingUnits = []>> -<<set $irregulars = 0>> -<<set $engageRule = 0>> -<<set $rebellingMilitia = 0>> -<<set $rebellingSlaves = 0>> -<<set $rebellingMercs = 0>> -<<set $repairTime = 3>> -<<set $arcRepairTime = 0>> -<<set $garrison = { - penthouse: 0, - reactor: 0, - assistant: 0, - waterway: 0, - reactorTime: 0, - assistantTime: 0, - waterwayTime: 0 }>> -<<set $rebellionsCount = 0>> -<<set $PCrebWon = 0>> -<<set $PCrebLoss = 0>> - - -/* armed forces stats */ -<<set $targetUnit = 0>> -<<set $targetIndex = 0>> -<<set $secBotsCost = 500>> -<<set $secBotsUpgradeCost = 250>> -<<set $equipUpgradeCost = 250>> -<<set $maxTroops = 30>> -<<set $militiaTotalManpower = 0>> -<<set $militiaFreeManpower = 0>> -<<set $militiaEmployedManpower = 0>> -<<set $militiaTotalCasualties = 0>> -<<set $slavesOfficers = 0>> -<<set $slavesEmployedManpower = 0>> -<<set $slavesTotalCasualties = 0>> -<<set $mercTotalManpower = 0>> -<<set $mercEmployedManpower = 0>> -<<set $mercTotalCasualties = 0>> -<<set $mercLoyalty = 0>> -<<set $createdSlavesUnits = 0>> -<<set $createdMilitiaUnits = 0>> -<<set $createdMercUnits = 0>> -<<set $mercFreeManpower = 0>> -<<if $wasToggledBefore == 0>> - <<if $mercenaries == 1>> - <<set $mercFreeManpower = random(5,20)>> - <<elseif $mercenaries > 1>> - <<set $mercFreeManpower = random(10,30)>> - <</if>> -<</if>> - -/* battle relevant variables */ -<<set $slaveVictories = []>> -<<set $slaveIncreasedPrestige = 0>> -<<set $totalKills = 0>> -<<set $battlesCount = 0>> -<<set $majorBattlesCount = 0>> -<<set $chosenTactic = "none">> -<<set $leadingTroops = "none">> -<<set $attackTroops = 0>> -<<set $attackEquip = 0>> -<<set $battleTerrain = "none">> -<<set $maxTurns = 10>> -<<set $battleResult = 4>> /* sets $battleResult value outside accepted range (-3,3) to avoid evaluation problems */ -<<set $losses = 0>> -<<set $enemyLosses = 0>> -<<set $battleTurns = 0>> -<<set $tacticsSuccessful = 0>> -<<set $leaderWounded = 0>> -<<set $woundType = 0>> /* 0=no wound, 1=mute, 2=blind, 3=amputee, 4<=health */ -<<set $gainedCombat = 0>> -<<set $gainedWarfare = 0>> -<<set $expectedEquip = 0>> -<<set $estimatedMen = 0>> -<<set $SFIntervention = 0>> -<<set $carriableSoldiers = 0>> -<<set $SFatk = 0>> -<<set $SFdef = 0>> -<<set $SFhp = 0>> -<<set $rebellingID = []>> -<<set $saveValid = 0>> -<<set $lastSelection = []>> - -/* statistics */ -<<set $equipMod = 0.15>> -<<set $secBotsBaseAttack = 7>> -<<set $secBotsBaseDefense = 3>> -<<set $secBotsMorale = 200>> -<<set $secBotsBaseHp = 3>> -<<set $militiaBaseAttack = 7>> -<<set $militiaBaseDefense = 5>> -<<set $militiaBaseMorale = 140>> -<<set $militiaBaseHp = 3>> -<<set $slaveBaseAttack = 8>> -<<set $slaveBaseDefense = 3>> -<<set $slaveBaseMorale = 110>> -<<set $slaveBaseHp = 3>> -<<set $mercBaseAttack = 8>> -<<set $mercBaseDefense = 4>> -<<set $mercBaseMorale = 125>> -<<set $mercBaseHp = 4>> -<<set $SFBaseAttack = 8>> -<<set $SFBaseDefense = 4>> -<<set $SFBaseMorale = 140>> -<<set $SFBaseHp = 4>> - -<<set $raBaseAttack = 7>> -<<set $raBaseDefense = 2>> -<<set $raBaseMorale = 100>> -<<set $raBaseHp = 2>> -<<set $fcBaseAttack = 6>> -<<set $fcBaseDefense = 4>> -<<set $fcBaseMorale = 130>> -<<set $fcBaseHp = 3>> -<<set $owBaseAttack = 8>> -<<set $owBaseDefense = 4>> -<<set $owBaseMorale = 110>> -<<set $owBaseHp = 2>> -<<set $ffBaseAttack = 9>> -<<set $ffBaseDefense = 2>> -<<set $ffBaseMorale = 160>> -<<set $ffBaseHp = 2>> - -<<set $secBots = { - active: 0, - ID: -1, - isDeployed: 0, - troops: 0, - maxTroops: 0, - equip: 0} >> -<<set $militiaUnits = []>> -<<set $slaveUnits = []>> -<<set $mercUnits = []>> - -/* SFanon additions */ -<<set $SFSupportLevel = 0>> -<<set $SFGear = 0>> -<<set $SavedLeader = "none">> -<<set $SavedSFI = 0>> diff --git a/src/cheats/mod_EditFSCheatDatatypeCleanup.tw b/src/cheats/mod_EditFSCheatDatatypeCleanup.tw index 34bcde5b51fe328dba2f659a3794cc0527d59033..6a037084e6964564a520dcc57551a2996b206c3d 100644 --- a/src/cheats/mod_EditFSCheatDatatypeCleanup.tw +++ b/src/cheats/mod_EditFSCheatDatatypeCleanup.tw @@ -2,175 +2,7 @@ <<set $nextButton = "Continue", $nextLink = "Main", $returnTo = "Main">> -<<if $arcologies[0].FSSupremacist != "unset">> - <<set $arcologies[0].FSSupremacist = Number($arcologies[0].FSSupremacist) || "unset">> - <<set $arcologies[0].FSSupremacistDecoration = Number($arcologies[0].FSSupremacistDecoration) || 0>> - <<set $arcologies[0].FSSupremacistLawME = Number($arcologies[0].FSSupremacistLawME) || 0>> -<</if>> -<<if $arcologies[0].FSSubjugationist != "unset">> - <<set $arcologies[0].FSSubjugationist = Number($arcologies[0].FSSubjugationist) || "unset">> - <<set $arcologies[0].FSSubjugationistDecoration = Number($arcologies[0].FSSubjugationistDecoration) || 0>> - <<set $arcologies[0].FSSubjugationistLawME = Number($arcologies[0].FSSubjugationistLawME) || 0>> -<</if>> -<<if $arcologies[0].FSGenderRadicalist != "unset">> - <<set $arcologies[0].FSGenderRadicalist = Number($arcologies[0].FSGenderRadicalist) || "unset">> - <<set $arcologies[0].FSGenderRadicalistDecoration = Number($arcologies[0].FSGenderRadicalistDecoration) || 0>> - <<set $arcologies[0].FSGenderRadicalistLawBeauty = Number($arcologies[0].FSGenderRadicalistLawBeauty) || 0>> - <<set $arcologies[0].FSGenderRadicalistLawFuta = Number($arcologies[0].FSGenderRadicalistLawFuta) || 0>> -<</if>> -<<if $arcologies[0].FSRepopulationFocus != "unset">> - <<set $arcologies[0].FSRepopulationFocus = Number($arcologies[0].FSRepopulationFocus) || "unset">> - <<set $arcologies[0].FSRepopulationFocusDecoration = Number($arcologies[0].FSRepopulationFocusDecoration) || 0>> - <<set $arcologies[0].FSRepopulationFocusSMR = Number($arcologies[0].FSRepopulationFocusSMR) || 0>> - <<set $arcologies[0].FSRepopulationFocusLaw = Number($arcologies[0].FSRepopulationFocusLaw) || 0>> -<</if>> -<<if $arcologies[0].FSRestart != "unset">> - <<set $arcologies[0].FSRestart = Number($arcologies[0].FSRestart) || "unset">> - <<set $arcologies[0].FSRestartDecoration = Number($arcologies[0].FSRestartDecoration) || 0>> - <<set $arcologies[0].FSRestartSMR = Number($arcologies[0].FSRestartSMR) || 0>> - <<set $arcologies[0].FSRestartLaw = Number($arcologies[0].FSRestartLaw) || 0>> -<</if>> -<<if $arcologies[0].FSHedonisticDecadence != "unset">> - <<set $arcologies[0].FSHedonisticDecadence = Number($arcologies[0].FSHedonisticDecadence) || "unset">> - <<set $arcologies[0].FSHedonisticDecadenceDecoration = Number($arcologies[0].FSHedonisticDecadenceDecoration) || 0>> - <<set $arcologies[0].FSHedonisticDecadenceSMR = Number($arcologies[0].FSHedonisticDecadenceSMR) || 0>> - <<set $arcologies[0].FSHedonisticDecadenceLaw = Number($arcologies[0].FSHedonisticDecadenceLaw) || 0>> - <<set $arcologies[0].FSHedonisticDecadenceLaw2 = Number($arcologies[0].FSHedonisticDecadenceLaw2) || 0>> - <<set $arcologies[0].FSHedonisticDecadenceStrongFat = Number($arcologies[0].FSHedonisticDecadenceStrongFat) || 0>> -<</if>> -<<if $arcologies[0].FSIntellectualDependency != "unset">> - <<set $arcologies[0].FSIntellectualDependency = Number($arcologies[0].FSIntellectualDependency) || "unset">> - <<set $arcologies[0].FSIntellectualDependencyDecoration = Number($arcologies[0].FSIntellectualDependencyDecoration) || 0>> - <<set $arcologies[0].FSIntellectualDependencySMR = Number($arcologies[0].FSIntellectualDependencySMR) || 0>> - <<set $arcologies[0].FSIntellectualDependencyLaw = Number($arcologies[0].FSIntellectualDependencyLaw) || 0>> - <<set $arcologies[0].FSIntellectualDependencyLawBeauty = Number($arcologies[0].FSIntellectualDependencyLawBeauty) || 0>> -<</if>> -<<if $arcologies[0].FSSlaveProfessionalism != "unset">> - <<set $arcologies[0].FSSlaveProfessionalism = Number($arcologies[0].FSSlaveProfessionalism) || "unset">> - <<set $arcologies[0].FSSlaveProfessionalismDecoration = Number($arcologies[0].FSSlaveProfessionalismDecoration) || 0>> - <<set $arcologies[0].FSSlaveProfessionalismSMR = Number($arcologies[0].FSSlaveProfessionalismSMR) || 0>> - <<set $arcologies[0].FSSlaveProfessionalismLaw = Number($arcologies[0].FSSlaveProfessionalismLaw) || 0>> -<</if>> -<<if $arcologies[0].FSPetiteAdmiration != "unset">> - <<set $arcologies[0].FSPetiteAdmiration = Number($arcologies[0].FSPetiteAdmiration) || "unset">> - <<set $arcologies[0].FSPetiteAdmirationDecoration = Number($arcologies[0].FSPetiteAdmirationDecoration) || 0>> - <<set $arcologies[0].FSPetiteAdmirationSMR = Number($arcologies[0].FSPetiteAdmirationSMR) || 0>> - <<set $arcologies[0].FSPetiteAdmirationLaw = Number($arcologies[0].FSPetiteAdmirationLaw) || 0>> - <<set $arcologies[0].FSPetiteAdmirationLaw2 = Number($arcologies[0].FSPetiteAdmirationLaw2) || 0>> -<</if>> -<<if $arcologies[0].FSStatuesqueGlorification != "unset">> - <<set $arcologies[0].FSStatuesqueGlorification = Number($arcologies[0].FSStatuesqueGlorification) || "unset">> - <<set $arcologies[0].FSStatuesqueGlorificationDecoration = Number($arcologies[0].FSStatuesqueGlorificationDecoration) || 0>> - <<set $arcologies[0].FSStatuesqueGlorificationSMR = Number($arcologies[0].FSStatuesqueGlorificationSMR) || 0>> - <<set $arcologies[0].FSStatuesqueGlorificationLaw = Number($arcologies[0].FSStatuesqueGlorificationLaw) || 0>> - <<set $arcologies[0].FSStatuesqueGlorificationLaw2 = Number($arcologies[0].FSStatuesqueGlorificationLaw2) || 0>> -<</if>> -<<if $arcologies[0].FSGenderFundamentalist != "unset">> - <<set $arcologies[0].FSGenderFundamentalist = Number($arcologies[0].FSGenderFundamentalist) || "unset">> - <<set $arcologies[0].FSGenderFundamentalistDecoration = Number($arcologies[0].FSGenderFundamentalistDecoration) || 0>> - <<set $arcologies[0].FSGenderFundamentalistLawBeauty = Number($arcologies[0].FSGenderFundamentalistLawBeauty) || 0>> - <<set $arcologies[0].FSGenderFundamentalistLawBimbo = Number($arcologies[0].FSGenderFundamentalistLawBimbo) || 0>> - <<set $arcologies[0].FSGenderFundamentalistSMR = Number($arcologies[0].FSGenderFundamentalistSMR) || 0>> -<</if>> -<<if $arcologies[0].FSPaternalist != "unset">> - <<set $arcologies[0].FSPaternalist = Number($arcologies[0].FSPaternalist) || "unset">> - <<set $arcologies[0].FSPaternalistDecoration = Number($arcologies[0].FSPaternalistDecoration) || 0>> - <<set $arcologies[0].FSPaternalistLaw = Number($arcologies[0].FSPaternalistLaw) || 0>> -<</if>> -<<if $arcologies[0].FSDegradationist != "unset">> - <<set $arcologies[0].FSDegradationist = Number($arcologies[0].FSDegradationist) || "unset">> - <<set $arcologies[0].FSDegradationistDecoration = Number($arcologies[0].FSDegradationistDecoration) || 0>> - <<set $arcologies[0].FSDegradationistLaw = Number($arcologies[0].FSDegradationistLaw) || 0>> -<</if>> -<<if $arcologies[0].FSBodyPurist != "unset">> - <<set $arcologies[0].FSBodyPurist = Number($arcologies[0].FSBodyPurist) || "unset">> - <<set $arcologies[0].FSBodyPuristDecoration = Number($arcologies[0].FSBodyPuristDecoration) || 0>> - <<set $arcologies[0].FSBodyPuristLaw = Number($arcologies[0].FSBodyPuristLaw) || 0>> -<</if>> -<<if $arcologies[0].FSTransformationFetishist != "unset">> - <<set $arcologies[0].FSTransformationFetishist = Number($arcologies[0].FSTransformationFetishist) || "unset">> - <<set $arcologies[0].FSTransformationFetishistDecoration = Number($arcologies[0].FSTransformationFetishistDecoration) || 0>> - <<set $arcologies[0].FSTransformationFetishistSMR = Number($arcologies[0].FSTransformationFetishistSMR) || 0>> -<</if>> -<<if $arcologies[0].FSYouthPreferentialist != "unset">> - <<set $arcologies[0].FSYouthPreferentialist = Number($arcologies[0].FSYouthPreferentialist) || "unset">> - <<set $arcologies[0].FSYouthPreferentialistDecoration = Number($arcologies[0].FSYouthPreferentialistDecoration) || 0>> - <<set $arcologies[0].FSYouthPreferentialistLaw = Number($arcologies[0].FSYouthPreferentialistLaw) || 0>> -<</if>> -<<if $arcologies[0].FSMaturityPreferentialist != "unset">> - <<set $arcologies[0].FSMaturityPreferentialist = Number($arcologies[0].FSMaturityPreferentialist) || "unset">> - <<set $arcologies[0].FSMaturityPreferentialistDecoration = Number($arcologies[0].FSMaturityPreferentialistDecoration) || 0>> - <<set $arcologies[0].FSMaturityPreferentialistLaw = Number($arcologies[0].FSMaturityPreferentialistLaw) || 0>> -<</if>> -<<if $arcologies[0].FSSlimnessEnthusiast != "unset">> - <<set $arcologies[0].FSSlimnessEnthusiast = Number($arcologies[0].FSSlimnessEnthusiast) || "unset">> - <<set $arcologies[0].FSSlimnessEnthusiastDecoration = Number($arcologies[0].FSSlimnessEnthusiastDecoration) || 0>> - <<set $arcologies[0].FSSlimnessEnthusiastSMR = Number($arcologies[0].FSSlimnessEnthusiastSMR) || 0>> - <<set $arcologies[0].FSSlimnessEnthusiastLaw = Number($arcologies[0].FSSlimnessEnthusiastLaw) || 0>> -<</if>> -<<if $arcologies[0].FSAssetExpansionist != "unset">> - <<set $arcologies[0].FSAssetExpansionist = Number($arcologies[0].FSAssetExpansionist) || "unset">> - <<set $arcologies[0].FSAssetExpansionistDecoration = Number($arcologies[0].FSAssetExpansionistDecoration) || 0>> - <<set $arcologies[0].FSAssetExpansionistSMR = Number($arcologies[0].FSAssetExpansionistSMR) || 0>> -<</if>> -<<if $arcologies[0].FSPastoralist != "unset">> - <<set $arcologies[0].FSPastoralist = Number($arcologies[0].FSPastoralist) || "unset">> - <<set $arcologies[0].FSPastoralistDecoration = Number($arcologies[0].FSPastoralistDecoration) || 0>> - <<set $arcologies[0].FSPastoralistLaw = Number($arcologies[0].FSPastoralistLaw) || 0>> -<</if>> -<<if $arcologies[0].FSPhysicalIdealist != "unset">> - <<set $arcologies[0].FSPhysicalIdealist = Number($arcologies[0].FSPhysicalIdealist) || "unset">> - <<set $arcologies[0].FSPhysicalIdealistDecoration = Number($arcologies[0].FSPhysicalIdealistDecoration) || 0>> - <<set $arcologies[0].FSPhysicalIdealistLaw = Number($arcologies[0].FSPhysicalIdealistLaw) || 0>> - <<set $arcologies[0].FSPhysicalIdealistSMR = Number($arcologies[0].FSPhysicalIdealistSMR) || 0>> - <<set $arcologies[0].FSPhysicalIdealistStrongFat = Number($arcologies[0].FSPhysicalIdealistStrongFat) || 0>> -<</if>> -<<if $arcologies[0].FSChattelReligionist != "unset">> - <<set $arcologies[0].FSChattelReligionist = Number($arcologies[0].FSChattelReligionist) || "unset">> - <<set $arcologies[0].FSChattelReligionistDecoration = Number($arcologies[0].FSChattelReligionistDecoration) || 0>> - <<set $arcologies[0].FSChattelReligionistLaw = Number($arcologies[0].FSChattelReligionistLaw) || 0>> - <<set $arcologies[0].FSChattelReligionistCreed = Number($arcologies[0].FSChattelReligionistCreed) || 0>> -<</if>> -<<if $arcologies[0].FSEdoRevivalist != "unset">> - <<set $arcologies[0].FSEdoRevivalist = Number($arcologies[0].FSEdoRevivalist) || "unset">> - <<set $arcologies[0].FSEdoRevivalistDecoration = Number($arcologies[0].FSEdoRevivalistDecoration) || 0>> - <<set $arcologies[0].FSEdoRevivalistLaw = Number($arcologies[0].FSEdoRevivalistLaw) || 0>> -<</if>> -<<if $arcologies[0].FSRomanRevivalist != "unset">> - <<set $arcologies[0].FSRomanRevivalist = Number($arcologies[0].FSRomanRevivalist) || "unset">> - <<set $arcologies[0].FSRomanRevivalistDecoration = Number($arcologies[0].FSRomanRevivalistDecoration) || 0>> - <<set $arcologies[0].FSRomanRevivalistLaw = Number($arcologies[0].FSRomanRevivalistLaw) || 0>> -<</if>> -<<if $arcologies[0].FSAztecRevivalist != "unset">> - <<set $arcologies[0].FSAztecRevivalist = Number($arcologies[0].FSAztecRevivalist) || "unset">> - <<set $arcologies[0].FSAztecRevivalistDecoration = Number($arcologies[0].FSAztecRevivalistDecoration) || 0>> - <<set $arcologies[0].FSAztecRevivalistLaw = Number($arcologies[0].FSAztecRevivalistLaw) || 0>> -<</if>> -<<if $arcologies[0].FSEgyptianRevivalist != "unset">> - <<set $arcologies[0].FSEgyptianRevivalist = Number($arcologies[0].FSEgyptianRevivalist) || "unset">> - <<set $arcologies[0].FSEgyptianRevivalistDecoration = Number($arcologies[0].FSEgyptianRevivalistDecoration) || 0>> - <<set $arcologies[0].FSEgyptianRevivalistLaw = Number($arcologies[0].FSEgyptianRevivalistLaw) || 0>> -<</if>> -<<if $arcologies[0].FSEdoRevivalist != "unset">> - <<set $arcologies[0].FSEdoRevivalist = Number($arcologies[0].FSEdoRevivalist) || "unset">> - <<set $arcologies[0].FSEdoRevivalistDecoration = Number($arcologies[0].FSEdoRevivalistDecoration) || 0>> - <<set $arcologies[0].FSEdoRevivalistLaw = Number($arcologies[0].FSEdoRevivalistLaw) || 0>> -<</if>> -<<if $arcologies[0].FSArabianRevivalist != "unset">> - <<set $arcologies[0].FSArabianRevivalist = Number($arcologies[0].FSArabianRevivalist) || "unset">> - <<set $arcologies[0].FSArabianRevivalistDecoration = Number($arcologies[0].FSArabianRevivalistDecoration) || 0>> - <<set $arcologies[0].FSArabianRevivalistLaw = Number($arcologies[0].FSArabianRevivalistLaw) || 0>> -<</if>> -<<if $arcologies[0].FSChineseRevivalist != "unset">> - <<set $arcologies[0].FSChineseRevivalist = Number($arcologies[0].FSChineseRevivalist) || "unset">> - <<set $arcologies[0].FSChineseRevivalistDecoration = Number($arcologies[0].FSChineseRevivalistDecoration) || 0>> - <<set $arcologies[0].FSChineseRevivalistLaw = Number($arcologies[0].FSChineseRevivalistLaw) || 0>> -<</if>> -<<for _fscdc = 0; _fscdc < setup.FutureSocieties.length; _fscdc++>> - <<if !($arcologies[0][setup.FutureSocieties[_fscdc]] > 0)>> - <<run FutureSocieties.remove(setup.FutureSocieties[_fscdc])>> - <</if>> -<</for>> +<<= App.Update.FScheatDatatypeCleanup()>> You perform the dark rituals, pray to the chaos gods, and sell your CHEATING SOUL for the power to change and mold the Future Society to your will. diff --git a/src/cheats/mod_EditNeighborArcologyCheatDatatypeCleanup.tw b/src/cheats/mod_EditNeighborArcologyCheatDatatypeCleanup.tw index f104e553837a7b42aeaef514c29b42fb9ec20b74..edd8847420ef27c9e4b83661beda8bba866819f2 100644 --- a/src/cheats/mod_EditNeighborArcologyCheatDatatypeCleanup.tw +++ b/src/cheats/mod_EditNeighborArcologyCheatDatatypeCleanup.tw @@ -2,147 +2,7 @@ <<set $nextButton = "Continue", $nextLink = "Main">> -<<set _l = $arcologies.length>> -<<for _i = 1; _i < _l; _i++>> - <<set $arcologies[_i].honeymoon = Number($arcologies[_i].honeymoon) || 0>> - <<set $arcologies[_i].prosperity = Number($arcologies[_i].prosperity) || 0>> - <<set $arcologies[_i].ownership = Number($arcologies[_i].ownership) || 0>> - <<set $arcologies[_i].minority = Number($arcologies[_i].minority) || 0>> - <<set $arcologies[_i].PCminority = Number($arcologies[_i].PCminority) || 0>> - <<set $arcologies[_i].demandFactor = Number($arcologies[_i].demandFactor) || 0>> - <<if $arcologies[_i].FSSupremacist != "unset">> - <<set $arcologies[_i].FSSupremacist = Number($arcologies[_i].FSSupremacist) || "unset">> - <</if>> - <<if $arcologies[_i].FSSupremacist != "unset" && !setup.filterRacesLowercase.includes($arcologies[_i].FSSupremacistRace)>> - <<set $arcologies[_i].FSSupremacistRace = setup.filterRacesLowercase.random()>> - <</if>> - <<if $arcologies[_i].FSSubjugationist != "unset">> - <<set $arcologies[_i].FSSubjugationist = Number($arcologies[_i].FSSubjugationist) || "unset">> - <</if>> - <<if $arcologies[_i].FSSubjugationist != "unset" && !setup.filterRacesLowercase.includes($arcologies[_i].FSSubjugationistRace)>> - <<set $arcologies[_i].FSSubjugationistRace = setup.filterRacesLowercase.random()>> - <</if>> - <<if $arcologies[_i].FSGenderRadicalist != "unset">> - <<set $arcologies[_i].FSGenderRadicalist = Number($arcologies[_i].FSGenderRadicalist) || "unset">> - <<set $arcologies[_i].FSGenderFundamentalist = "unset">> - <</if>> - <<if $arcologies[_i].FSGenderFundamentalist != "unset">> - <<set $arcologies[_i].FSGenderFundamentalist = Number($arcologies[_i].FSGenderFundamentalist) || "unset">> - <<set $arcologies[_i].FSGenderRadicalist = "unset">> - <</if>> - <<if $arcologies[_i].FSPaternalist != "unset">> - <<set $arcologies[_i].FSPaternalist = Number($arcologies[_i].FSPaternalist) || "unset">> - <<set $arcologies[_i].FSDegradationist = "unset">> - <</if>> - <<if $arcologies[_i].FSDegradationist != "unset">> - <<set $arcologies[_i].FSDegradationist = Number($arcologies[_i].FSDegradationist) || "unset">> - <<set $arcologies[_i].FSPaternalist = "unset">> - <</if>> - <<if $arcologies[_i].FSBodyPurist != "unset">> - <<set $arcologies[_i].FSBodyPurist = Number($arcologies[_i].FSBodyPurist) || "unset">> - <<set $arcologies[_i].FSTransformationFetishist = "unset">> - <</if>> - <<if $arcologies[_i].FSTransformationFetishist != "unset">> - <<set $arcologies[_i].FSTransformationFetishist = Number($arcologies[_i].FSTransformationFetishist) || "unset">> - <<set $arcologies[_i].FSBodyPurist = "unset">> - <</if>> - <<if $arcologies[_i].FSYouthPreferentialist != "unset">> - <<set $arcologies[_i].FSYouthPreferentialist = Number($arcologies[_i].FSYouthPreferentialist) || "unset">> - <<set $arcologies[_i].FSMaturityPreferentialist = "unset">> - <</if>> - <<if $arcologies[_i].FSMaturityPreferentialist != "unset">> - <<set $arcologies[_i].FSMaturityPreferentialist = Number($arcologies[_i].FSMaturityPreferentialist) || "unset">> - <<set $arcologies[_i].FSYouthPreferentialist = "unset">> - <</if>> - <<if $arcologies[_i].FSSlimnessEnthusiast != "unset">> - <<set $arcologies[_i].FSSlimnessEnthusiast = Number($arcologies[_i].FSSlimnessEnthusiast) || "unset">> - <<set $arcologies[_i].FSAssetExpansionist = "unset">> - <</if>> - <<if $arcologies[_i].FSAssetExpansionist != "unset">> - <<set $arcologies[_i].FSAssetExpansionist = Number($arcologies[_i].FSAssetExpansionist) || "unset">> - <<set $arcologies[_i].FSSlimnessEnthusiast = "unset">> - <</if>> - <<if $arcologies[_i].FSPastoralist != "unset">> - <<set $arcologies[_i].FSPastoralist = Number($arcologies[_i].FSPastoralist) || "unset">> - <</if>> - <<if $arcologies[_i].FSPhysicalIdealist != "unset">> - <<set $arcologies[_i].FSPhysicalIdealist = Number($arcologies[_i].FSPhysicalIdealist) || "unset">> - <<set $arcologies[_i].FSHedonisticDecadence = "unset">> - <</if>> - <<if $arcologies[_i].FSHedonisticDecadence != "unset">> - <<set $arcologies[_i].FSHedonisticDecadence = Number($arcologies[_i].FSHedonisticDecadence) || "unset">> - <<set $arcologies[_i].FSPhysicalIdealist = "unset">> - <</if>> - <<if $arcologies[_i].FSChattelReligionist != "unset">> - <<set $arcologies[_i].FSChattelReligionist = Number($arcologies[_i].FSChattelReligionist) || "unset">> - <</if>> - <<if $arcologies[_i].FSRomanRevivalist != "unset">> - <<set $arcologies[_i].FSRomanRevivalist = Number($arcologies[_i].FSRomanRevivalist) || "unset">> - <<set $arcologies[_i].FSArabianRevivalist = $arcologies[_i].FSAztecRevivalist = $arcologies[_i].FSChineseRevivalist = $arcologies[_i].FSEdoRevivalist = $arcologies[_i].FSEgyptianRevivalist = "unset">> - <</if>> - <<if $arcologies[_i].FSAztecRevivalist != "unset">> - <<set $arcologies[_i].FSAztecRevivalist = Number($arcologies[_i].FSAztecRevivalist) || "unset">> - <<set $arcologies[_i].FSArabianRevivalist = $arcologies[_i].FSChineseRevivalist = $arcologies[_i].FSEdoRevivalist = $arcologies[_i].FSEgyptianRevivalist = $arcologies[_i].FSRomanRevivalist = "unset">> - <</if>> - <<if $arcologies[_i].FSEgyptianRevivalist != "unset">> - <<set $arcologies[_i].FSEgyptianRevivalist = Number($arcologies[_i].FSEgyptianRevivalist) || "unset">> - <<set $arcologies[_i].FSArabianRevivalist = $arcologies[_i].FSAztecRevivalist = $arcologies[_i].FSChineseRevivalist = $arcologies[_i].FSEdoRevivalist = $arcologies[_i].FSRomanRevivalist = "unset">> - <</if>> - <<if $arcologies[_i].FSEdoRevivalist != "unset">> - <<set $arcologies[_i].FSEdoRevivalist = Number($arcologies[_i].FSEdoRevivalist) || "unset">> - <<set $arcologies[_i].FSArabianRevivalist = $arcologies[_i].FSAztecRevivalist = $arcologies[_i].FSChineseRevivalist = $arcologies[_i].FSEgyptianRevivalist = $arcologies[_i].FSRomanRevivalist = "unset">> - <</if>> - <<if $arcologies[_i].FSArabianRevivalist != "unset">> - <<set $arcologies[_i].FSArabianRevivalist = Number($arcologies[_i].FSArabianRevivalist) || "unset">> - <<set $arcologies[_i].FSAztecRevivalist = $arcologies[_i].FSChineseRevivalist = $arcologies[_i].FSEdoRevivalist = $arcologies[_i].FSEgyptianRevivalist = $arcologies[_i].FSRomanRevivalist = "unset">> - <</if>> - <<if $arcologies[_i].FSChineseRevivalist != "unset">> - <<set $arcologies[_i].FSChineseRevivalist = Number($arcologies[_i].FSChineseRevivalist) || "unset">> - <<set $arcologies[_i].FSArabianRevivalist = $arcologies[_i].FSAztecRevivalist = $arcologies[_i].FSEdoRevivalist = $arcologies[_i].FSEgyptianRevivalist = $arcologies[_i].FSRomanRevivalist = "unset">> - <</if>> - <<if $arcologies[_i].FSNull != "unset">> - <<set $arcologies[_i].FSNull = Number($arcologies[_i].FSNull) || "unset">> - <</if>> - <<if $arcologies[_i].FSRepopulationFocus != "unset">> - <<set $arcologies[_i].FSRepopulationFocus = Number($arcologies[_i].FSRepopulationFocus) || "unset">> - <<set $arcologies[_i].FSRestart = "unset">> - <</if>> - <<if $arcologies[_i].FSRestart != "unset">> - <<set $arcologies[_i].FSRestart = Number($arcologies[_i].FSRestart) || "unset">> - <<set $arcologies[_i].FSRepopulationFocus = "unset">> - <</if>> - <<if $arcologies[_i].FSIntellectualDependency != "unset">> - <<set $arcologies[_i].FSIntellectualDependency = Number($arcologies[_i].FSIntellectualDependency) || "unset">> - <<set $arcologies[_i].FSSlaveProfessionalism = "unset">> - <</if>> - <<if $arcologies[_i].FSSlaveProfessionalism != "unset">> - <<set $arcologies[_i].FSSlaveProfessionalism = Number($arcologies[_i].FSSlaveProfessionalism) || "unset">> - <<set $arcologies[_i].FSIntellectualDependency = "unset">> - <</if>> - <<if $arcologies[_i].FSPetiteAdmiration != "unset">> - <<set $arcologies[_i].FSPetiteAdmiration = Number($arcologies[_i].FSPetiteAdmiration) || "unset">> - <<set $arcologies[_i].FSStatuesqueGlorification = "unset">> - <</if>> - <<if $arcologies[_i].FSStatuesqueGlorification != "unset">> - <<set $arcologies[_i].FSStatuesqueGlorification = Number($arcologies[_i].FSStatuesqueGlorification) || "unset">> - <<set $arcologies[_i].FSPetiteAdmiration = "unset">> - <</if>> - <<if $arcologies[_i].FSCummunism != "unset">> - <<set $arcologies[_i].FSCummunism = Number($arcologies[_i].FSCummunism) || "unset">> - <</if>> - <<if $arcologies[_i].FSIncestFetishist != "unset">> - <<set $arcologies[_i].FSIncestFetishist = Number($arcologies[_i].FSIncestFetishist) || "unset">> - <</if>> - <<set $arcologies[_i].embargo = Number($arcologies[_i].embargo) || 0>> - <<set $arcologies[_i].embargoTarget = Number($arcologies[_i].embargoTarget) || 0>> - <<set $arcologies[_i].CyberEconomic = Number($arcologies[_i].CyberEconomic) || 0>> - <<set $arcologies[_i].CyberEconomicTarget = Number($arcologies[_i].CyberEconomicTarget) || 0>> - <<set $arcologies[_i].CyberReputation = Number($arcologies[_i].CyberReputation) || 0>> - <<set $arcologies[_i].CyberReputationTarget = Number($arcologies[_i].CyberReputationTarget) || 0>> - <<set $arcologies[_i].influenceTarget = Number($arcologies[_i].influenceTarget) || 0>> - <<set $arcologies[_i].influenceBonus = Number($arcologies[_i].influenceBonus) || 0>> - <<set $arcologies[_i].rival = Number($arcologies[_i].rival) || 0>> -<</for>> +<<= App.Update.neighborArcologyCheatDatatypeCleanup()>> You have CHEATED your way to influencing the neighboring arcologies. They have been unscrupulously directed according to your CHEAT whims. diff --git a/src/cheats/mod_EditSlaveCheatDatatypeCleanup.tw b/src/cheats/mod_EditSlaveCheatDatatypeCleanup.tw index 8daeaa606527f4443f6ad2da8e1968faad9fbca0..259d748bfbaa74c177b5e2c72ed4ca88aa5e50b6 100644 --- a/src/cheats/mod_EditSlaveCheatDatatypeCleanup.tw +++ b/src/cheats/mod_EditSlaveCheatDatatypeCleanup.tw @@ -1,6 +1,6 @@ :: MOD_Edit Slave Cheat Datatype Cleanup [nobr] -<<set $nextButton = "Continue", $nextLink = "Slave Interact">> +<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Slave Interact">> /* Cancel Option Check */ <<if $tempSlave == "unset">> <<unset $tempSlave>> diff --git a/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw b/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw index fb9854ded3321576c73bddf4236380c4c9fc3e76..bf96dec6d138ce696bfe3cf57a7b03306b3b9b76 100644 --- a/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw +++ b/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw @@ -1,6 +1,6 @@ :: MOD_Edit Slave Cheat Datatype Cleanup New [nobr] -<<set $nextButton = "Continue", $nextLink = "Slave Interact">> +<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Slave Interact">> /* Cancel Option Check */ <<if $tempSlave == "unset">> <<unset $tempSlave>> diff --git a/src/data/backwardsCompatibility/BackwardsCompatibility.tw b/src/data/backwardsCompatibility/BackwardsCompatibility.tw new file mode 100644 index 0000000000000000000000000000000000000000..29f9e342cd8e7a049750350bf0a9d7f52f8f4096 --- /dev/null +++ b/src/data/backwardsCompatibility/BackwardsCompatibility.tw @@ -0,0 +1,52 @@ +:: Backwards Compatibility [nobr] + +/* no-usedOnce disabling checking for only used once instances in this file */ +<<set $nextButton = "Continue", $nextLink = "Main", $returnTo = "Main">> + +<<run App.Update.setNonexistantProperties(V, App.Data.defaultGameStateVariables)>> + +<div> + <<= App.Update.oldVersions()>> +</div> + +<div> + <<= App.Update.globalVariables()>> +</div> + +<div> + <<= App.Update.slaveVariables()>> +</div> + +<div> + <<= App.Update.slaveRecords()>> +</div> + +<div> + <<= App.Update.specialSlaveRecords()>> +</div> + +<div> + <<= App.Update.HeroSlavesCleanup()>> + <<run $heroSlaves.forEach(function(s) {if (s.pregType > 0 && Array.isArray(s.womb)) delete s.womb;})>> + <<set $activeSlave = BaseSlave()>> + <<set $baseHeroSlave = clone($activeSlave)>> +</div> + +<div> + <<= App.Update.RAassistantData()>> +</div> + +/* Sec Exp */ +<div> + <<= App.SecExp.Check.general()>> + <<if $secExpEnabled == 1>> + <br> <<include "SecExpBackwardCompatibility">> + <</if>> +</div> +<div> + <<= App.Update.autoshred()>> +</div> +/* leave this at the bottom of BC */ +<div> + <<= App.Update.cleanUp()>> +</div> diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js new file mode 100644 index 0000000000000000000000000000000000000000..2c06f990a9da8a46d026a9569063f625b5f5a719 --- /dev/null +++ b/src/data/backwardsCompatibility/backwardsCompatibility.js @@ -0,0 +1,2184 @@ +App.Update.autoshred = function() { + const defaultGameStateVariables = new Set(Object.getOwnPropertyNames(App.Data.defaultGameStateVariables)); + let extraCount = 0; + + for (const v in V) { + if (!defaultGameStateVariables.has(v)) { + if (V.debugMode) { + if (!App.Data.ignoreGameStateVariables.includes(v)) { + console.log("Not on whitelist, removed:", "V."+v+":", V[v]); + } else { + extraCount++; + } + } + delete V[v]; + } + } + if (extraCount !== 0) { + console.log(`and ${extraCount} more`); + } +}; + +App.Update.setNonexistantProperties = function(obj, props) { + console.log(obj, props); + let count = 0; + for (const p of Object.getOwnPropertyNames(props)) { + if (typeof obj[p] === "undefined") { + if (obj[p] !== props[p]) { + console.log("setting V." + p + " to ", props[p]); + } + obj[p] = clone(props[p]); + count++; + } + } + return console.log(`Set up ${count} variables.`); +}; + +App.Update.globalVariables = function() { + let r = `Setting missing global variables... `; + if (Array.isArray(V.nationalities)) { + V.nationalities = weightedArray2HashMap(V.nationalities); + } + + // Records + if (jQuery.isEmptyObject(V.lastWeeksCashIncome)) { + setupLastWeeksCash(); + } + + if (jQuery.isEmptyObject(V.lastWeeksRepIncome)) { + setupLastWeeksRep(); + } + + // Slave mods/surgery + { + if (typeof V.brandTarget === "string") { + V.brandTarget = {primary: V.brandTarget, secondary: "buttock", local: "buttock"}; + } else if (typeof V.brandTarget !== "object") { + V.brandTarget = {primary: "buttock", secondary: "buttock", local: "buttock"}; + } + if (typeof V.brandDesign === "string") { + V.brandDesign = {primary: V.brandDesign, official: V.brandDesign, local: V.brandDesign}; + } else if (typeof V.brandDesign !== "object") { + V.brandDesign = {primary: "your initials", official: "your initials", local: "your initials"}; + } + if (typeof V.brandDesign.official === "undefined") { + V.brandDesign.official = "your personal symbol"; + } + if (jQuery.isEmptyObject(V.scarTarget)) { + V.scarTarget = {primary: "left cheek", secondary: "left cheek", local: "left cheek"}; + } + if (jQuery.isEmptyObject(V.scarDesign)) { + V.scarDesign = {primary: "generic", local: "generic"}; + } + } + + // Reminders + { + if (!Array.isArray(V.reminders)) { + let r = V.reminders; + V.reminders = []; + for (let i = 0; i < r.entries.length; i++) { + App.Reminders.add(r.entries[i], V.week + Number(r.weeks[i])); + } + for (let i = 0; i < r.overdue.length; i++) { + let s = r.overdue[i].split(" "); + s.splice(s.length - 5, 5); + s = s.join(" "); + App.Reminders.add(s, V.week - 1); + } + } + } + + // Display + { + if (typeof V.sideBarOptions.roomPop === "undefined") { + V.sideBarOptions.roomPop = 1; + } + if (typeof V.sideBarOptions.compact === "undefined") { + V.sideBarOptions.compact = 1; + } + if (V.sortSlavesBy === "income" || V.sortSlavesBy === "lastWeeksCashIncome") { + V.sortSlavesBy = "weeklyIncome"; + } + } + + if (typeof V.taitorWeeks !== "undefined") { + V.traitorWeeks = V.taitorWeeks; + } + + // Orphanages + if ((typeof V.DefaultBirthDestination === "undefined") || (V.DefaultBirthDestination === "") || (V.DefaultBirthDestination === "anywhere")) { + V.DefaultBirthDestination = "individually decided fates"; + } + + // Rent + { + if (typeof V.LCRent !== "undefined") { + V.rent.lowerClass = V.LCRent; + } + if (typeof V.MCRent !== "undefined") { + V.rent.middleClass = V.MCRent; + } + if (typeof V.UCRent !== "undefined") { + V.rent.upperClass = V.UCRent; + } + if (typeof V.TCRent !== "undefined") { + V.rent.topClass = V.TCRent; + } + } + + // PC + { + PCDatatypeCleanup(); + V.enduringTrust = Number(V.enduringTrust) || 0; + V.enduringDevotion = Number(V.enduringDevotion) || 0; + V.averageTrust = Number(V.averageTrust) || 0; + V.averageDevotion = Number(V.averageDevotion) || 0; + if (typeof V.trainingRegimen !== "undefined") { + if (typeof V.personalAttention === "number") { + V.personalAttention = [{ID: V.personalAttention, trainingRegimen: V.trainingRegimen}]; + } + } + V.HackingSkillMultiplier = upgradeMultiplier('hacking'); + V.upgradeMultiplierArcology = upgradeMultiplier('engineering'); + V.upgradeMultiplierMedicine = upgradeMultiplier('medicine'); + V.upgradeMultiplierTrade = upgradeMultiplier('trading'); + } + + // Looks at all wombs, including PC. + BCReserveInit(); + + // Menials + { + if (typeof V.AMenials !== "undefined") { + V.ASlaves += Math.trunc(V.AMenials / 2); + } + if (typeof V.helots !== "undefined") { + V.menials = V.helots; + } + if (typeof V.TradeShowHelots !== "undefined") { + V.TradeShowMenials = V.TradeShowHelots; + } + } + + // Items/upgrades purchased + { + if (V.merchantFSWares.length === 0) { + V.merchantFSWares.push("AssetExpansionistResearch"); + V.merchantFSWares.push("GenderRadicalistResearch"); + V.merchantFSWares.push("HedonisticDecadenceResearch"); + V.merchantFSWares.push("SlaveProfessionalismResearch"); + V.merchantFSWares.push("SlimnessEnthusiastResearch"); + V.merchantFSWares.push("TransformationFetishistResearch"); + V.merchantFSWares.push("YouthPreferentialistResearch"); + } + if (V.merchantIllegalWares.length === 0) { + V.merchantIllegalWares.push("childhoodFertilityInducedNCS"); + V.merchantIllegalWares.push("UterineRestraintMesh"); + V.merchantIllegalWares.push("RapidCellGrowthFormula"); + V.merchantIllegalWares.push("PGHack"); + V.merchantIllegalWares.push("sympatheticOvaries"); + V.merchantIllegalWares.push("asexualReproduction"); + } + if (typeof V.arcologies[0].childhoodFertilityInducedNCSResearch === "undefined") { + V.arcologies[0].childhoodFertilityInducedNCSResearch = 0; + } + delete V.arcologies[0].childFertilityInducedNCSResearch; + } + + // Shopping for slaves + if (jQuery.isEmptyObject(V.huskSlave)) { + V.huskSlave = new App.Entity.CustomSlaveOrder(); + } + if (V.prisonCircuit.length === 0) { + V.prisonCircuit = ["low tier criminals", "gangs and smugglers", "white collar", "military prison"]; + V.prisonCircuitIndex = random(0, V.prisonCircuit.length - 1); + } + + App.Update.CustomSlaveOrder(V.huskSlave); + App.Update.CustomSlaveOrder(V.customSlave); + + // Farmyard Subsection + const animalsBought = ["canines", "hooved", "felines", "labradorRetrievers", "germanShepherds", "goldenRetrievers", "frenchBulldogs", "bulldogs", "beagles", "poodles", "rottweilers", "yorkshireTerriers", "siberianHuskies", "horses", "bulls", "pigs", "siameses", "persians", "maineCoons", "ragdolls", "bengals", "abbysinians", "birmans", "orientalShorthairs", "sphynxes", "russianBlues", "wolves", "foxes", "jackals", "dingos", "zebras", "cougars", "jaguars", "pumas", "lynx", "leopards", "lions", "tigers"]; + animalsBought.forEach(function(species) { V.animalsBought[species] = V.animalsBought[species] || 0; }); + + // SF + App.SF.BC(); + + // FS + { + if (V.FSGotRepCreditSix === 1) { + V.FSGotRepCredits = 7; + } else if (V.FSGotRepCreditFive === 1) { + V.FSGotRepCredits = 6; + } else if (V.FSGotRepCreditFour === 1) { + V.FSGotRepCredits = 5; + } else if (V.FSGotRepCreditThree === 1) { + V.FSGotRepCredits = 4; + } else if (V.FSGotRepCreditTwo === 1) { + V.FSGotRepCredits = 3; + } else if (V.FSGotRepCreditOne === 1) { + V.FSGotRepCredits = 2; + } else if (V.FSAnnounced === 1) { + V.FSGotRepCredits = 1; + } else { + V.FSGotRepCredits = 0; + } + if (typeof V.arcologies[0].FSAztecRevivalist === "undefined") { + for (let bci = 0; bci < V.arcologies.length; bci++) { + V.arcologies[bci].FSAztecRevivalist = "unset", V.arcologies[bci].FSAztecRevivalistDecoration = 0; + } + V.arcologies[0].FSAztecRevivalistLaw = 0, V.arcologies[0].FSAztecRevivalistSMR = 0; + } + if (typeof V.arcologies[0].FSHedonisticDecadence === "undefined") { + for (let bci = 0; bci < V.arcologies.length; bci++) { + V.arcologies[bci].FSHedonisticDecadence = "unset", V.arcologies[bci].FSHedonisticDecadenceDecoration = 0; + } + V.arcologies[0].FSHedonisticDecadenceLaw = 0, V.arcologies[0].FSHedonisticDecadenceLaw2 = 0, V.arcologies[0].FSHedonisticDecadenceSMR = 0, V.arcologies[0].FSHedonisticDecadenceResearch = 0; + } + if (typeof V.arcologies[0].FSHedonisticDecadenceDietResearch === "undefined") { + V.arcologies[0].FSHedonisticDecadenceDietResearch = 0; + } + if (typeof V.arcologies[0].FSPhysicalIdealistStrongFat === "undefined") { + V.arcologies[0].FSPhysicalIdealistStrongFat = 0; + } + if (typeof V.arcologies[0].FSHedonisticDecadenceStrongFat === "undefined") { + V.arcologies[0].FSHedonisticDecadenceStrongFat = 0; + } + if (typeof V.arcologies[0].FSIntellectualDependency === "undefined") { + for (let bci = 0; bci < V.arcologies.length; bci++) { + V.arcologies[bci].FSIntellectualDependency = "unset", V.arcologies[bci].FSIntellectualDependencyDecoration = 0; + } + V.arcologies[0].FSIntellectualDependencyLaw = 0, V.arcologies[0].FSIntellectualDependencyLawBeauty = 0, V.arcologies[0].FSIntellectualDependencySMR = 0, V.arcologies[0].FSIntellectualDependencyResearch = 0; + } + if (typeof V.arcologies[0].FSSlaveProfessionalism === "undefined") { + for (let bci = 0; bci < V.arcologies.length; bci++) { + V.arcologies[bci].FSSlaveProfessionalism = "unset", V.arcologies[bci].FSSlaveProfessionalismDecoration = 0; + } + V.arcologies[0].FSSlaveProfessionalismLaw = 0, V.arcologies[0].FSSlaveProfessionalismSMR = 0, V.arcologies[0].FSSlaveProfessionalismResearch = 0; + } + if (typeof V.arcologies[0].FSPetiteAdmiration === "undefined") { + for (let bci = 0; bci < V.arcologies.length; bci++) { + V.arcologies[bci].FSPetiteAdmiration = "unset", V.arcologies[bci].FSPetiteAdmirationDecoration = 0; + } + V.arcologies[0].FSPetiteAdmirationLaw = 0, V.arcologies[0].FSPetiteAdmirationLaw2 = 0, V.arcologies[0].FSPetiteAdmirationSMR = 0, V.arcologies[0].FSPetiteAdmirationResearch = 0; + } + if (typeof V.arcologies[0].FSStatuesqueGlorification === "undefined") { + for (let bci = 0; bci < V.arcologies.length; bci++) { + V.arcologies[bci].FSStatuesqueGlorification = "unset", V.arcologies[bci].FSStatuesqueGlorificationDecoration = 0; + } + V.arcologies[0].FSStatuesqueGlorificationLaw = 0, V.arcologies[0].FSStatuesqueGlorificationLaw2 = 0, V.arcologies[0].FSStatuesqueGlorificationSMR = 0, V.arcologies[0].FSStatuesqueGlorificationResearch = 0; + } + if (typeof V.arcologies[0].FSCummunism === "undefined") { + for (let bci = 0; bci < V.arcologies.length; bci++) { + V.arcologies[bci].FSCummunism = "unset", V.arcologies[bci].FSCummunismDecoration = 0; + } + V.arcologies[0].FSCummunismResearch = 0; + } + if (typeof V.arcologies[0].FSIncestFetishist === "undefined") { + for (let bci = 0; bci < V.arcologies.length; bci++) { + V.arcologies[bci].FSIncestFetishist = "unset", V.arcologies[bci].FSIncestFetishistDecoration = 0; + } + V.arcologies[0].FSIncestFetishistResearch = 0; + } + for (let bci = 0; bci < V.arcologies.length; bci++) { + if (V.arcologies[bci].FSHedonisticDecadence === 0) { + V.arcologies[bci].FSHedonisticDecadence = "unset", V.arcologies[bci].FSHedonisticDecadenceDecoration = 0; + } + } + if (typeof V.arcologies[0].FSPhysicalIdealistLaw === "undefined") { + V.arcologies[0].FSPhysicalIdealistLaw = 0; + } + } + + // Arcologies + { + if (jQuery.isEmptyObject(V.arcologies)) { + V.arcologies = []; + V.arcologies[0] = { + name: "Arcology X-", + direction: 0, + government: 1, + honeymoon: 0, + prosperity: 50, + FSSupremacist: "unset", + FSSupremacistRace: 0, + FSSubjugationist: "unset", + FSSubjugationistRace: 0, + FSGenderRadicalist: "unset", + FSGenderFundamentalist: "unset", + FSPaternalist: "unset", + FSDegradationist: "unset", + FSBodyPurist: "unset", + FSTransformationFetishist: "unset", + FSYouthPreferentialist: "unset", + FSMaturityPreferentialist: "unset", + FSSlimnessEnthusiast: "unset", + FSAssetExpansionist: "unset", + FSPastoralist: "unset", + FSPhysicalIdealist: "unset", + FSChattelReligionist: "unset", + FSRomanRevivalist: "unset", + FSEgyptianRevivalist: "unset", + FSEdoRevivalist: "unset", + FSArabianRevivalist: "unset", + FSChineseRevivalist: "unset", + FSNull: "unset", + FSRepopulationFocus: "unset", + FSRestart: "unset", + FSHedonisticDecadence: "unset", + FSIntellectualDependency: "unset", + FSSlaveProfessionalism: "unset", + FSPetiteAdmiration: "unset", + FSStatuesqueGlorification: "unset", + embargo: 1, + embargoTarget: -1, + influenceTarget: -1, + influenceBonus: 0, + rival: 0 + }; + } + } + + // Player Arcology: object + { + if (typeof V.arcologyName !== "undefined") { + V.arcologies[0].name = V.arcologyName; + } else if (typeof V.arcologies[0].name === "undefined") { + V.arcologies[0].name = "Arcology X-4"; + } + if (typeof V.arcologies[0].ownership === "undefined") { + V.arcologies[0].ownership = 50; + } + if (typeof V.arcologies[0].minority === "undefined") { + V.arcologies[0].minority = 20; + } + if (typeof V.arcologies[0].embargo === "undefined") { + V.arcologies[0].embargo = 1; + } + if (typeof V.arcologies[0].embargoTarget === "undefined") { + V.arcologies[0].embargoTarget = -1; + } + if (typeof V.arcologies[0].hackingEconomic === "undefined") { + V.arcologies[0].hackingEconomic = 1; + } + if (typeof V.arcologies[0].hackingEconomicTarget === "undefined") { + V.arcologies[0].hackingEconomicTarget = -1; + } + if (typeof V.arcologies[0].hackingReputationTarget === "undefined") { + V.arcologies[0].hackingReputationTarget = -1; + } + if (typeof V.arcologies[0].hackingReputation === "undefined") { + V.arcologies[0].hackingReputation = 1; + } + if (typeof V.arcologies[0].influenceTarget === "undefined") { + V.arcologies[0].influenceTarget = -1; + } + if (typeof V.arcologies[0].influenceBonus === "undefined") { + V.arcologies[0].influenceBonus = -1; + } + if (typeof V.arcologies[0].CyberEconomic === "undefined") { + V.arcologies[0].CyberEconomic = 1; + } + if (typeof V.arcologies[0].CyberEconomicTarget === "undefined") { + V.arcologies[0].CyberEconomicTarget = -1; + } + if (typeof V.arcologies[0].CyberReputation === "undefined") { + V.arcologies[0].CyberReputation = 1; + } + if (typeof V.arcologies[0].CyberReputationTarget === "undefined") { + V.arcologies[0].CyberReputationTarget = -1; + } + if (typeof V.arcologies[0].rival === "undefined") { + V.arcologies[0].rival = 0; + } + if (typeof V.arcologies[0].FSNull === "undefined") { + V.arcologies[0].FSNull = "unset"; + } + if (typeof V.arcologies[0].FSRepopulationFocus === "undefined") { + V.arcologies[0].FSRepopulationFocus = "unset"; + } + if (typeof V.arcologies[0].FSRepopulationFocusPregPolicy === "undefined") { + V.arcologies[0].FSRepopulationFocusPregPolicy = 0; + } + if (typeof V.arcologies[0].FSRepopulationFocusMilfPolicy === "undefined") { + V.arcologies[0].FSRepopulationFocusMilfPolicy = 0; + } + if (typeof V.arcologies[0].FSRepopulationFocusInterest === "undefined") { + V.arcologies[0].FSRepopulationFocusInterest = 0; + } + if (typeof V.arcologies[0].FSRestart === "undefined") { + V.arcologies[0].FSRestart = "unset"; + } + if (typeof V.arcologies[0].FSEugenicsChastityPolicy === "undefined") { + V.arcologies[0].FSEugenicsChastityPolicy = 0; + } + if (typeof V.arcologies[0].FSEugenicsSterilizationPolicy === "undefined") { + V.arcologies[0].FSEugenicsSterilizationPolicy = 0; + } + if (typeof V.arcologies[0].FSEugenicsInterest === "undefined") { + V.arcologies[0].FSEugenicsInterest = 0; + } + if (typeof V.arcologies[0].PCminority === "undefined") { + V.arcologies[0].PCminority = 0; + } + if (typeof V.arcologies[0].demandFactor === "undefined") { + V.arcologies[0].demandFactor = 250; + } + if (typeof V.arcologies[0].leaderID === "undefined") { + V.arcologies[0].leaderID = 0; + } + // FS + { + if ((typeof V.FSSupremacist !== "undefined") && V.FSSupremacist !== "unset") { + V.arcologies[0].FSSupremacist = V.FSSupremacist; + V.arcologies[0].FSSupremacistRace = V.FSSupremacistRace; + } else if (typeof V.arcologies[0].FSSupremacist === "undefined") { + V.arcologies[0].FSSupremacist = "unset"; + } + if ((typeof V.FSSupremacistLawME !== "undefined") && V.FSSupremacistLawME !== 0) { + V.arcologies[0].FSSupremacistLawME = V.FSSupremacistLawME; + } else if (typeof V.arcologies[0].FSSupremacistLawME === "undefined") { + V.arcologies[0].FSSupremacistLawME = 0; + } + if (V.arcologies[0].FSSupremacistRace === "middle") { + V.arcologies[0].FSSupremacistRace = "middle eastern"; + } else if (V.arcologies[0].FSSupremacistRace === "pacific") { + V.arcologies[0].FSSupremacistRace = "pacific islander"; + } else if (V.arcologies[0].FSSupremacistRace === "southern") { + V.arcologies[0].FSSupremacistRace = "southern european"; + } else if (V.arcologies[0].FSSupremacistRace === "mixed") { + V.arcologies[0].FSSupremacistRace = "mixed race"; + } + if ((typeof V.FSSubjugationist !== "undefined") && V.FSSubjugationist !== "unset") { + V.arcologies[0].FSSubjugationist = V.FSSubjugationist; + V.arcologies[0].FSSubjugationistRace = V.FSSubjugationistRace; + } else if (typeof V.arcologies[0].FSSubjugationist === "undefined") { + V.arcologies[0].FSSubjugationist = "unset"; + } + if ((typeof V.FSSubjugationistLawME !== "undefined") && V.FSSubjugationistLawME !== 0) { + V.arcologies[0].FSSubjugationistLawME = V.FSSubjugationistLawME; + } else if (typeof V.arcologies[0].FSSubjugationistLawME === "undefined") { + V.arcologies[0].FSSubjugationistLawME = 0; + } + if (V.arcologies[0].FSSubjugationistRace === "middle") { + V.arcologies[0].FSSubjugationistRace = "middle eastern"; + } else if (V.arcologies[0].FSSubjugationistRace === "pacific") { + V.arcologies[0].FSSubjugationistRace = "pacific islander"; + } else if (V.arcologies[0].FSSubjugationistRace === "southern") { + V.arcologies[0].FSSubjugationistRace = "southern european"; + } else if (V.arcologies[0].FSSubjugationistRace === "mixed") { + V.arcologies[0].FSSubjugationistRace = "mixed race"; + } + if ((typeof V.FSDegradationist !== "undefined") && V.FSDegradationist !== "unset") { + V.arcologies[0].FSDegradationist = V.FSDegradationist; + } else if (typeof V.arcologies[0].FSDegradationist === "undefined") { + V.arcologies[0].FSDegradationist = "unset"; + } + if ((typeof V.FSDegradationistLaw !== "undefined") && V.FSDegradationistLaw !== 0) { + V.arcologies[0].FSDegradationistLaw = V.FSDegradationistLaw; + } else if (typeof V.arcologies[0].FSDegradationistLaw === "undefined") { + V.arcologies[0].FSDegradationistLaw = 0; + } + if ((typeof V.FSPaternalist !== "undefined") && V.FSPaternalist !== "unset") { + V.arcologies[0].FSPaternalist = V.FSPaternalist; + } else if (typeof V.arcologies[0].FSPaternalist === "undefined") { + V.arcologies[0].FSPaternalist = "unset"; + } + if ((typeof V.FSPaternalistLaw !== "undefined") && V.FSPaternalistLaw !== 0) { + V.arcologies[0].FSPaternalistLaw = V.FSPaternalistLaw; + } else if (typeof V.arcologies[0].FSPaternalistLaw === "undefined") { + V.arcologies[0].FSPaternalistLaw = 0; + } + if ((typeof V.FSGenderFundamentalist !== "undefined") && V.FSGenderFundamentalist !== "unset") { + V.arcologies[0].FSGenderFundamentalist = V.FSGenderFundamentalist; + } else if (typeof V.arcologies[0].FSGenderFundamentalist === "undefined") { + V.arcologies[0].FSGenderFundamentalist = "unset"; + } + if ((typeof V.FSGenderFundamentalistSMR !== "undefined") && V.FSGenderFundamentalistSMR !== 0) { + V.arcologies[0].FSGenderFundamentalistSMR = V.FSGenderFundamentalistSMR; + } else if (typeof V.arcologies[0].FSGenderFundamentalistSMR === "undefined") { + V.arcologies[0].FSGenderFundamentalistSMR = 0; + } + delete V.arcologies[0].FSGenderFundamentalistLaw; + if ((typeof V.FSGenderRadicalist !== "undefined") && V.FSGenderRadicalist !== "unset") { + V.arcologies[0].FSGenderRadicalist = V.FSGenderRadicalist; + } else if (typeof V.arcologies[0].FSGenderRadicalist === "undefined") { + V.arcologies[0].FSGenderRadicalist = "unset"; + } + if (typeof V.arcologies[0].FSGenderRadicalistLawBeauty === "undefined") { + V.arcologies[0].FSGenderRadicalistLawBeauty = 0; + } + if (typeof V.arcologies[0].FSGenderRadicalistLawFuta === "undefined") { + V.arcologies[0].FSGenderRadicalistLawFuta = 0; + } + delete V.arcologies[0].FSGenderRadicalistLawDicks; + delete V.arcologies[0].FSGenderRadicalistSMR; + if ((typeof V.FSBodyPurist !== "undefined") && V.FSBodyPurist !== "unset") { + V.arcologies[0].FSBodyPurist = V.FSBodyPurist; + } else if (typeof V.arcologies[0].FSBodyPurist === "undefined") { + V.arcologies[0].FSBodyPurist = "unset"; + } + if ((typeof V.FSBodyPuristLaw !== "undefined") && V.FSBodyPuristLaw !== 0) { + V.arcologies[0].FSBodyPuristLaw = V.FSBodyPuristLaw; + } else if (typeof V.arcologies[0].FSBodyPuristLaw === "undefined") { + V.arcologies[0].FSBodyPuristLaw = 0; + } + if ((typeof V.FSPhysicalIdealist !== "undefined") && V.FSPhysicalIdealist !== "unset") { + V.arcologies[0].FSPhysicalIdealist = V.FSPhysicalIdealist; + } else if (typeof V.arcologies[0].FSPhysicalIdealist === "undefined") { + V.arcologies[0].FSPhysicalIdealist = "unset"; + } + if ((typeof V.FSPhysicalIdealistSMR !== "undefined") && V.FSPhysicalIdealistSMR !== 0) { + V.arcologies[0].FSPhysicalIdealistSMR = V.FSPhysicalIdealistSMR; + } else if (typeof V.arcologies[0].FSPhysicalIdealistSMR === "undefined") { + V.arcologies[0].FSPhysicalIdealistSMR = 0; + } + if ((typeof V.FSTransformationFetishist !== "undefined") && V.FSTransformationFetishist !== "unset") { + V.arcologies[0].FSTransformationFetishist = V.FSTransformationFetishist; + } else if (typeof V.arcologies[0].FSTransformationFetishist === "undefined") { + V.arcologies[0].FSTransformationFetishist = "unset"; + } + if ((typeof V.FSTransformationFetishistSMR !== "undefined") && V.FSTransformationFetishistSMR !== 0) { + V.arcologies[0].FSTransformationFetishistSMR = V.FSTransformationFetishistSMR; + } else if (typeof V.arcologies[0].FSTransformationFetishistSMR === "undefined") { + V.arcologies[0].FSTransformationFetishistSMR = 0; + } + delete V.arcologies[0].FSTransformationFetishistLaw; + if ((typeof V.FSAssetExpansionist !== "undefined") && V.FSAssetExpansionist !== "unset") { + V.arcologies[0].FSAssetExpansionist = V.FSAssetExpansionist; + } else if (typeof V.arcologies[0].FSAssetExpansionist === "undefined") { + V.arcologies[0].FSAssetExpansionist = "unset"; + } + if ((typeof V.FSAssetExpansionistSMR !== "undefined") && V.FSAssetExpansionistSMR !== 0) { + V.arcologies[0].FSAssetExpansionistSMR = V.FSAssetExpansionistSMR; + } else if (typeof V.arcologies[0].FSAssetExpansionistSMR === "undefined") { + V.arcologies[0].FSAssetExpansionistSMR = 0; + } + delete V.arcologies[0].FSAssetExpansionistLaw; + if ((typeof V.FSSlimnessEnthusiast !== "undefined") && V.FSSlimnessEnthusiast !== "unset") { + V.arcologies[0].FSSlimnessEnthusiast = V.FSSlimnessEnthusiast; + } else if (typeof V.arcologies[0].FSSlimnessEnthusiast === "undefined") { + V.arcologies[0].FSSlimnessEnthusiast = "unset"; + } + if ((typeof V.FSSlimnessEnthusiastSMR !== "undefined") && V.FSSlimnessEnthusiastSMR !== 0) { + V.arcologies[0].FSSlimnessEnthusiastSMR = V.FSSlimnessEnthusiastSMR; + } else if (typeof V.arcologies[0].FSSlimnessEnthusiastSMR === "undefined") { + V.arcologies[0].FSSlimnessEnthusiastSMR = 0; + } + if ((typeof V.FSMaturityPreferentialist !== "undefined") && V.FSMaturityPreferentialist !== "unset") { + V.arcologies[0].FSMaturityPreferentialist = V.FSMaturityPreferentialist; + } else if (typeof V.arcologies[0].FSMaturityPreferentialist === "undefined") { + V.arcologies[0].FSMaturityPreferentialist = "unset"; + } + if ((typeof V.FSMaturityPreferentialistLaw !== "undefined") && V.FSMaturityPreferentialistLaw !== 0) { + V.arcologies[0].FSMaturityPreferentialistLaw = V.FSMaturityPreferentialistLaw; + } else if (typeof V.arcologies[0].FSMaturityPreferentialistLaw === "undefined") { + V.arcologies[0].FSMaturityPreferentialistLaw = 0; + } + if ((typeof V.FSYouthPreferentialist !== "undefined") && V.FSYouthPreferentialist !== "unset") { + V.arcologies[0].FSYouthPreferentialist = V.FSYouthPreferentialist; + } else if (typeof V.arcologies[0].FSYouthPreferentialist === "undefined") { + V.arcologies[0].FSYouthPreferentialist = "unset"; + } + if ((typeof V.FSYouthPreferentialistLaw !== "undefined") && V.FSYouthPreferentialistLaw !== 0) { + V.arcologies[0].FSYouthPreferentialistLaw = V.FSYouthPreferentialistLaw; + } else if (typeof V.arcologies[0].FSYouthPreferentialistLaw === "undefined") { + V.arcologies[0].FSYouthPreferentialistLaw = 0; + } + if ((typeof V.FSPastoralist !== "undefined") && V.FSPastoralist !== "unset") { + V.arcologies[0].FSPastoralist = V.FSPastoralist; + } else if (typeof V.arcologies[0].FSPastoralist === "undefined") { + V.arcologies[0].FSPastoralist = "unset"; + } + if ((typeof V.FSPastoralistLaw !== "undefined") && V.FSPastoralistLaw !== 0) { + V.arcologies[0].FSPastoralistLaw = V.FSPastoralistLaw; + } else if (typeof V.arcologies[0].FSPastoralistLaw === "undefined") { + V.arcologies[0].FSPastoralistLaw = 0; + } + if ((typeof V.FSChattelReligionist !== "undefined") && V.FSChattelReligionist !== "unset") { + V.arcologies[0].FSChattelReligionist = V.FSChattelReligionist; + } else if (typeof V.arcologies[0].FSChattelReligionist === "undefined") { + V.arcologies[0].FSChattelReligionist = "unset"; + } + if ((typeof V.FSChattelReligionistLaw !== "undefined") && V.FSChattelReligionistLaw !== 0) { + V.arcologies[0].FSChattelReligionistLaw = V.FSChattelReligionistLaw; + } else if (typeof V.arcologies[0].FSChattelReligionistLaw === "undefined") { + V.arcologies[0].FSChattelReligionistLaw = 0; + } + if ((typeof V.FSRomanRevivalist !== "undefined") && V.FSRomanRevivalist !== "unset") { + V.arcologies[0].FSRomanRevivalist = V.FSRomanRevivalist; + } else if (typeof V.arcologies[0].FSRomanRevivalist === "undefined") { + V.arcologies[0].FSRomanRevivalist = "unset"; + } + if ((typeof V.FSRomanRevivalistLaw !== "undefined") && V.FSRomanRevivalistLaw !== 0) { + V.arcologies[0].FSRomanRevivalistLaw = V.FSRomanRevivalistLaw; + } else if (typeof V.arcologies[0].FSRomanRevivalistLaw === "undefined") { + V.arcologies[0].FSRomanRevivalistLaw = 0; + } + if ((typeof V.FSEgyptianRevivalist !== "undefined") && V.FSEgyptianRevivalist !== "unset") { + V.arcologies[0].FSEgyptianRevivalist = V.FSEgyptianRevivalist; + } else if (typeof V.arcologies[0].FSEgyptianRevivalist === "undefined") { + V.arcologies[0].FSEgyptianRevivalist = "unset"; + } + if ((typeof V.FSEgyptianRevivalistLaw !== "undefined") && V.FSEgyptianRevivalistLaw !== 0) { + V.arcologies[0].FSEgyptianRevivalistLaw = V.FSEgyptianRevivalistLaw; + } else if (typeof V.arcologies[0].FSEgyptianRevivalistLaw === "undefined") { + V.arcologies[0].FSEgyptianRevivalistLaw = 0; + } + if (typeof V.arcologies[0].FSEgyptianRevivalistIncestPolicy === "undefined") { + V.arcologies[0].FSEgyptianRevivalistIncestPolicy = 0; + } + if (typeof V.arcologies[0].FSEgyptianRevivalistInterest === "undefined") { + V.arcologies[0].FSEgyptianRevivalistInterest = 0; + } + if ((typeof V.FSEdoRevivalist !== "undefined") && V.FSEdoRevivalist !== "unset") { + V.arcologies[0].FSEdoRevivalist = V.FSEdoRevivalist; + } else if (typeof V.arcologies[0].FSEdoRevivalist === "undefined") { + V.arcologies[0].FSEdoRevivalist = "unset"; + } + if ((typeof V.FSEdoRevivalistLaw !== "undefined") && V.FSEdoRevivalistLaw !== 0) { + V.arcologies[0].FSEdoRevivalistLaw = V.FSEdoRevivalistLaw; + } else if (typeof V.arcologies[0].FSEdoRevivalistLaw === "undefined") { + V.arcologies[0].FSEdoRevivalistLaw = 0; + } + if ((typeof V.FSArabianRevivalist !== "undefined") && V.FSArabianRevivalist !== "unset") { + V.arcologies[0].FSArabianRevivalist = V.FSArabianRevivalist; + } else if (typeof V.arcologies[0].FSArabianRevivalist === "undefined") { + V.arcologies[0].FSArabianRevivalist = "unset"; + } + if ((typeof V.FSArabianRevivalistLaw !== "undefined") && V.FSArabianRevivalistLaw !== 0) { + V.arcologies[0].FSArabianRevivalistLaw = V.FSArabianRevivalistLaw; + } else if (typeof V.arcologies[0].FSArabianRevivalistLaw === "undefined") { + V.arcologies[0].FSArabianRevivalistLaw = 0; + } + if ((typeof V.FSChineseRevivalist !== "undefined") && V.FSChineseRevivalist !== "unset") { + V.arcologies[0].FSChineseRevivalist = V.FSChineseRevivalist; + } else if (typeof V.arcologies[0].FSChineseRevivalist === "undefined") { + V.arcologies[0].FSChineseRevivalist = "unset"; + } + if ((typeof V.FSChineseRevivalistLaw !== "undefined") && V.FSChineseRevivalistLaw !== 0) { + V.arcologies[0].FSChineseRevivalistLaw = V.FSChineseRevivalistLaw; + } else if (typeof V.arcologies[0].FSChineseRevivalistLaw === "undefined") { + V.arcologies[0].FSChineseRevivalistLaw = 0; + } + delete V.arcologies[0].FSNullLaw; + + if (V.arcologies[0].FSSubjugationist !== "unset" && !Number.isFinite(V.arcologies[0].FSSubjugationist)) { + V.arcologies[0].FSSubjugationist = 10; + r += `<br>Fixed NaN FS value for FSSubjugationist`; + } + if (V.arcologies[0].FSGenderRadicalist !== "unset" && !Number.isFinite(V.arcologies[0].FSGenderRadicalist)) { + V.arcologies[0].FSGenderRadicalist = 10; + r += `<br>Fixed NaN FS value for FSGenderRadicalist`; + } + if (V.arcologies[0].FSRestart !== "unset" && !Number.isFinite(V.arcologies[0].FSRestart)) { + V.arcologies[0].FSRestart = 10; + r += `<br>Fixed NaN FS value for FSRestart`; + } + if (V.arcologies[0].FSRepopulationFocus !== "unset" && !Number.isFinite(V.arcologies[0].FSRepopulationFocus)) { + V.arcologies[0].FSRepopulationFocus = 10; + r += `<br>Fixed NaN FS value for FSRepopulationFocus`; + } + if (V.arcologies[0].FSSupremacist !== "unset" && !Number.isFinite(V.arcologies[0].FSSupremacist)) { + V.arcologies[0].FSSupremacist = 10; + r += `<br>Fixed NaN FS value for FSSupremacist`; + } + if (V.arcologies[0].FSBodyPurist !== "unset" && !Number.isFinite(V.arcologies[0].FSBodyPurist)) { + V.arcologies[0].FSBodyPurist = 10; + r += `<br>Fixed NaN FS value for FSBodyPurist`; + } + if (V.arcologies[0].FSPaternalist !== "unset" && !Number.isFinite(V.arcologies[0].FSPaternalist)) { + V.arcologies[0].FSPaternalist = 10; + r += `<br>Fixed NaN FS value for FSPaternalist`; + } + if (V.arcologies[0].FSSlimnessEnthusiast !== "unset" && !Number.isFinite(V.arcologies[0].FSSlimnessEnthusiast)) { + V.arcologies[0].FSSlimnessEnthusiast = 10; + r += `<br>Fixed NaN FS value for FSSlimnessEnthusiast`; + } + if (V.arcologies[0].FSGenderFundamentalist !== "unset" && !Number.isFinite(V.arcologies[0].FSGenderFundamentalist)) { + V.arcologies[0].FSGenderFundamentalist = 10; + r += `<br>Fixed NaN FS value for FSGenderFundamentalist`; + } + if (V.arcologies[0].FSMaturityPreferentialist !== "unset" && !Number.isFinite(V.arcologies[0].FSMaturityPreferentialist)) { + V.arcologies[0].FSMaturityPreferentialist = 10; + r += `<br>Fixed NaN FS value for FSMaturityPreferentialist`; + } + if (V.arcologies[0].FSYouthPreferentialist !== "unset" && !Number.isFinite(V.arcologies[0].FSYouthPreferentialist)) { + V.arcologies[0].FSYouthPreferentialist = 10; + r += `<br>Fixed NaN FS value for FSYouthPreferentialist`; + } + if (V.arcologies[0].FSTransformationFetishist !== "unset" && !Number.isFinite(V.arcologies[0].FSTransformationFetishist)) { + V.arcologies[0].FSTransformationFetishist = 10; + r += `<br>Fixed NaN FS value for FSTransformationFetishist`; + } + if (V.arcologies[0].FSHedonisticDecadence !== "unset" && !Number.isFinite(V.arcologies[0].FSHedonisticDecadence)) { + V.arcologies[0].FSHedonisticDecadence = 10; + r += `<br>Fixed NaN FS value for FSHedonisticDecadence`; + } + if (V.arcologies[0].FSPhysicalIdealist !== "unset" && !Number.isFinite(V.arcologies[0].FSPhysicalIdealist)) { + V.arcologies[0].FSPhysicalIdealist = 10; + r += `<br>Fixed NaN FS value for FSPhysicalIdealist`; + } + if (V.arcologies[0].FSPastoralist !== "unset" && !Number.isFinite(V.arcologies[0].FSPastoralist)) { + V.arcologies[0].FSPastoralist = 10; + r += `<br>Fixed NaN FS value for FSPastoralist`; + } + if (V.arcologies[0].FSAssetExpansionist !== "unset" && !Number.isFinite(V.arcologies[0].FSAssetExpansionist)) { + V.arcologies[0].FSAssetExpansionist = 10; + r += `<br>Fixed NaN FS value for FSAssetExpansionist`; + } + if (V.arcologies[0].FSDegradationist !== "unset" && !Number.isFinite(V.arcologies[0].FSDegradationist)) { + V.arcologies[0].FSDegradationist = 10; + r += `<br>Fixed NaN FS value for FSDegradationist`; + } + if (V.arcologies[0].FSRomanRevivalist !== "unset" && !Number.isFinite(V.arcologies[0].FSRomanRevivalist)) { + V.arcologies[0].FSRomanRevivalist = 10; + r += `<br>Fixed NaN FS value for FSRomanRevivalist`; + } + if (V.arcologies[0].FSChattelReligionist !== "unset" && !Number.isFinite(V.arcologies[0].FSChattelReligionist)) { + V.arcologies[0].FSChattelReligionist = 10; + r += `<br>Fixed NaN FS value for FSChattelReligionist`; + } + if (V.arcologies[0].FSChineseRevivalist !== "unset" && !Number.isFinite(V.arcologies[0].FSChineseRevivalist)) { + V.arcologies[0].FSChineseRevivalist = 10; + r += `<br>Fixed NaN FS value for FSChineseRevivalist`; + } + if (V.arcologies[0].FSArabianRevivalist !== "unset" && !Number.isFinite(V.arcologies[0].FSArabianRevivalist)) { + V.arcologies[0].FSArabianRevivalist = 10; + r += `<br>Fixed NaN FS value for FSArabianRevivalist`; + } + if (V.arcologies[0].FSEdoRevivalist !== "unset" && !Number.isFinite(V.arcologies[0].FSEdoRevivalist)) { + V.arcologies[0].FSEdoRevivalist = 10; + r += `<br>Fixed NaN FS value for FSEdoRevivalist`; + } + if (V.arcologies[0].FSEgyptianRevivalist !== "unset" && !Number.isFinite(V.arcologies[0].FSEgyptianRevivalist)) { + V.arcologies[0].FSEgyptianRevivalist = 10; + r += `<br>Fixed NaN FS value for FSEgyptianRevivalist`; + } + if (V.arcologies[0].FSAztecRevivalist !== "unset" && !Number.isFinite(V.arcologies[0].FSAztecRevivalist)) { + V.arcologies[0].FSAztecRevivalist = 10; + r += `<br>Fixed NaN FS value for FSAztecRevivalist`; + } + if (V.arcologies[0].FSIntellectualDependency !== "unset" && !Number.isFinite(V.arcologies[0].FSIntellectualDependency)) { + V.arcologies[0].FSIntellectualDependency = 10; + r += `<br>Fixed NaN FS value for FSIntellectualDependency`; + } + if (V.arcologies[0].FSSlaveProfessionalism !== "unset" && !Number.isFinite(V.arcologies[0].FSSlaveProfessionalism)) { + V.arcologies[0].FSSlaveProfessionalism = 10; + r += `<br>Fixed NaN FS value for FSSlaveProfessionalism`; + } + if (V.arcologies[0].FSPetiteAdmiration !== "unset" && !Number.isFinite(V.arcologies[0].FSPetiteAdmiration)) { + V.arcologies[0].FSPetiteAdmiration = 10; + r += `<br>Fixed NaN FS value for FSPetiteAdmiration`; + } + if (V.arcologies[0].FSStatuesqueGlorification !== "unset" && !Number.isFinite(V.arcologies[0].FSStatuesqueGlorification)) { + V.arcologies[0].FSStatuesqueGlorification = 10; + r += `<br>Fixed NaN FS value for FSStatuesqueGlorification`; + } + // Clean up FS in player arcology + App.Update.FScheatDatatypeCleanup(); + } + } + + // Player Arcology + { + if (typeof V.assistant === "number") { + assistant.BC(); + } else { + assistant.object(); + } + if (jQuery.isEmptyObject(V.FSPromenade)) { + V.FSPromenade = { + Subjugationist: 0, + Supremacist: 0, + GenderRadicalist: 0, + GenderFundamentalist: 0, + Paternalist: 0, + Degradationist: 0, + BodyPurist: 0, + TransformationFetishist: 0, + YouthPreferentialist: 0, + MaturityPreferentialist: 0, + SlimnessEnthusiast: 0, + AssetExpansionist: 0, + Pastoralist: 0, + PhysicalIdealist: 0, + ChattelReligionist: 0, + RomanRevivalist: 0, + AztecRevivalist: 0, + EgyptianRevivalist: 0, + EdoRevivalist: 0, + ArabianRevivalist: 0, + ChineseRevivalist: 0, + Repopulationist: 0, + Eugenics: 0, + Hedonism: 0, + IntellectualDependency: 0, + SlaveProfessionalism: 0, + PetiteAdmiration: 0, + StatuesqueGlorification: 0 + }; + } + if (jQuery.isEmptyObject(V.arcologyUpgrade)) { + V.arcologyUpgrade = { + drones: 0, + hydro: 0, + apron: 0, + grid: 0, + spire: 0 + }; + V.arcologyUpgrade.drones = (V.AProsperityCap > 60) ? 1 : 0; + V.arcologyUpgrade.hydro = (V.AProsperityCap > 80) ? 1 : 0; + V.arcologyUpgrade.apron = (V.AProsperityCap > 100) ? 1 : 0; + V.arcologyUpgrade.grid = (V.AProsperityCap > 120) ? 1 : 0; + V.arcologyUpgrade.spire = (V.AProsperityCap > 240) ? 1 : 0; + } + if (jQuery.isEmptyObject(V.building)) { + if (typeof V.sectors !== "undefined") { + App.Update.sectorsToBuilding(); + } else { + V.building = App.Arcology.defaultBuilding(); + } + } + + if (jQuery.isEmptyObject(V.trinkets)) { + V.trinkets = []; + if (V.PC.career === "wealth") { + V.trinkets.push("a collection of diplomas from expensive schools"); + } else if (V.PC.career === "capitalist") { + V.trinkets.push("a framed low denomination piece of paper money from your native country"); + } else if (V.PC.career === "mercenary") { + V.trinkets.push("a battered old assault rifle"); + } else if (V.PC.career === "slaver") { + V.trinkets.push("a framed picture of a slave with her sale price scrawled across the bottom"); + } else if (V.PC.career === "engineer") { + V.trinkets.push("an artist's impression of an early arcology design"); + } else if (V.PC.career === "medicine") { + V.trinkets.push("a framed postsurgical x-ray"); + } else if (V.PC.career === "celebrity") { + V.trinkets.push("a framed copy of the first news story featuring yourself"); + } else if (V.PC.career === "arcology owner") { + V.trinkets.push("a miniature model of your first arcology"); + } else if (V.PC.career === "escort") { + V.trinkets.push("a copy of the first porno you starred in"); + } else if (V.PC.career === "servant") { + V.trinkets.push("a framed picture of your late Master"); + } else if (V.PC.career === "gang") { + V.trinkets.push("your favorite handgun, whose sight has instilled fear in many"); + } else if (V.PC.career === "BlackHat") { + V.trinkets.push("a news clipping of your first successful live hack"); + } + } + } + + // Clean up neighbor's arcologies + App.Update.neighborArcologyCheatDatatypeCleanup(); + + // Corp + { + App.Corporate.Backcompat(); + /* Corporation variables added*/ + if (V.corpExpandToken > 1) { + V.corpExpandToken = 1; + } + V.dividendTimer = V.dividendTimer || 13; + + /* Removing the old Corp from save*/ + if (V.corpValue) { + cashX(Math.min(Math.trunc((V.corpValue / (V.publicShares + V.personalShares)) * V.personalShares), 1000000), "stocksTraded"); + /* Paying the player for his old corporation, so they can get the new one started with haste. It should perhaps have a message going with it*/ + if (typeof V.sectors !== "undefined") { + for (let i = 0; i < V.sectors.length; i++) { + if (V.sectors[i].type === "CorporateMarket") { + V.sectors[i].type = "Markets"; + break; + } + } + } + } + } + + // Organs + { + let newOrgans = []; + V.organs.forEach(o => { + if (o.type === "eyes") { + newOrgans.push({type: "leftEye", weeksToCompletion: o.weeksToCompletion, ID: o.ID}); + newOrgans.push({type: "rightEye", weeksToCompletion: o.weeksToCompletion, ID: o.ID}); + } else { + newOrgans.push(o); + } + }); + V.organs = newOrgans; + + newOrgans = []; + V.completedOrgans.forEach(o => { + if (o.type === "eyes") { + newOrgans.push({type: "leftEye", ID: o.ID}); + newOrgans.push({type: "rightEye", ID: o.ID}); + } else { + newOrgans.push(o); + } + }); + V.completedOrgans = newOrgans; + } + + FacilityDatatypeCleanup(); + + if (typeof V.TFS.compromiseWeek === "undefined") { + V.TFS.compromiseWeek = 0; + } + + // Pornstars + { + /* migrate to new genre-driven pornstar object */ + if (typeof V.pornStars === "number") { + const oldPornStars = V.pornStars; + + V.pornStars = {}; + V.pornStars.general = {p1count: oldPornStars, p3ID: V.pornStarID}; + V.pornStars.fuckdoll = {p1count: V.pornStarFuckdolls, p3ID: V.pornStarFuckdollID}; + V.pornStars.rape = {p1count: V.pornStarRapees, p3ID: V.pornStarRapeID}; + V.pornStars.preggo = {p1count: V.pornStarPreggos, p3ID: V.pornStarPreggoID}; + V.pornStars.BBW = {p1count: V.pornStarBBWs, p3ID: V.pornStarBBWID}; + V.pornStars.gainer = {p1count: V.pornStarGainers, p3ID: V.pornStarGainerID}; + V.pornStars.stud = {p1count: V.pornStarStuds, p3ID: V.pornStarStudID}; + V.pornStars.loli = {p1count: V.pornStarLolis, p3ID: V.pornStarLoliID}; + V.pornStars.deepThroat = {p1count: V.pornStarDeepThroats, p3ID: V.pornStarDeepThroatID}; + V.pornStars.struggleFuck = {p1count: V.pornStarStruggleFucks, p3ID: V.pornStarStruggleFuckID}; + V.pornStars.painal = {p1count: V.pornStarPainals, p3ID: V.pornStarPainalID}; + V.pornStars.tease = {p1count: V.pornStarTeases, p3ID: V.pornStarTeaseID}; + V.pornStars.romantic = {p1count: V.pornStarRomantics, p3ID: V.pornStarRomanticID}; + V.pornStars.pervert = {p1count: V.pornStarPerverts, p3ID: V.pornStarPervertID}; + V.pornStars.caring = {p1count: V.pornStarCarings, p3ID: V.pornStarCaringID}; + V.pornStars.unflinching = {p1count: V.pornStarUnflinchings, p3ID: V.pornStarUnflinchingID}; + V.pornStars.sizeQueen = {p1count: V.pornStarSizeQueens, p3ID: V.pornStarSizeQueenID}; + V.pornStars.neglectful = {p1count: V.pornStarNeglectfuls, p3ID: V.pornStarNeglectfulID}; + V.pornStars.cumAddict = {p1count: V.pornStarCumAddicts, p3ID: V.pornStarCumAddictID}; + V.pornStars.analAddict = {p1count: V.pornStarAnalAddicts, p3ID: V.pornStarAnalAddictID}; + V.pornStars.attentionWhore = {p1count: V.pornStarAttentionWhores, p3ID: V.pornStarAttentionWhoreID}; + V.pornStars.breastGrowth = {p1count: V.pornStarBreastGrowths, p3ID: V.pornStarBreastGrowthID}; + V.pornStars.abusive = {p1count: V.pornStarAbusives, p3ID: V.pornStarAbusiveID}; + V.pornStars.malicious = {p1count: V.pornStarMalicious, p3ID: V.pornStarMaliciousID}; + V.pornStars.selfHating = {p1count: V.pornStarSelfHatings, p3ID: V.pornStarSelfHatingID}; + V.pornStars.breeder = {p1count: V.pornStarBreeders, p3ID: V.pornStarBreederID}; + V.pornStars.sub = {p1count: V.pornStarSubs, p3ID: V.pornStarSubID}; + V.pornStars.cumSlut = {p1count: V.pornStarCumSluts, p3ID: V.pornStarCumSlutID}; + V.pornStars.anal = {p1count: V.pornStarAnals, p3ID: V.pornStarAnalID}; + V.pornStars.humiliation = {p1count: V.pornStarHumiliations, p3ID: V.pornStarHumiliationID}; + V.pornStars.boobs = {p1count: V.pornStarBoobs, p3ID: V.pornStarBoobsID}; + V.pornStars.dom = {p1count: V.pornStarDoms, p3ID: V.pornStarDomID}; + V.pornStars.sadist = {p1count: V.pornStarSadists, p3ID: V.pornStarSadistID}; + V.pornStars.masochist = {p1count: V.pornStarMasochists, p3ID: V.pornStarMasochistID}; + V.pornStars.pregnancy = {p1count: V.pornStarPregnancySluts, p3ID: V.pornStarPregnancyID}; + } + + /* make sure that any new genres get added correctly (and populate V.pornStars for very old games) */ + for (let genre in App.Porn.getAllGenres()) { + if (typeof V.pornStars[genre.fameVar] === "undefined") { + V.pornStars[genre.fameVar] = {p1count: 0, p3ID: 0}; + } + } + if (V.PCSlutContacts === 0) { + V.PCSlutContacts = 1; + } + } + + // Slave services and goods variables + { + if (typeof V.lowerClassSatisfied !== "undefined") { + V.classSatisfied.lowerClass = V.lowerClassSatisfied; + } + if (typeof V.sexSubsidiesLC !== "undefined") { + V.sexSubsidies.lowerClass = V.sexSubsidiesLC; + } + if (typeof V.sexSupplyBarriersLC !== "undefined") { + V.sexSupplyBarriers.lowerClass = V.sexSupplyBarriersLC; + } + V.food = Math.max(+V.food, 0) || 0; + if (V.foodConsumption === 0) { + V.foodConsumption = ((V.lowerClass * V.foodRate.lower) + (V.middleClass * V.foodRate.middle) + (V.upperClass * V.foodRate.upper) + (V.topClass * V.foodRate.top)); /* total amount food consumed per week */ + } + } + + EconomyDatatypeCleanup(); + ArcologyDatatypeCleanup(); + + r += ` Done!<br>`; + return r; +}; + +App.Update.slaveVariables = function() { + let r = `Setting missing slave variables... `; + /* Adding a new variable? Consider putting it in datatypeCleanupJS.tw instead of here */ + for (let bci = 0; bci < V.slaves.length; bci++) { + let Slave = V.slaves[bci]; + + if (typeof Slave !== "object") { + V.slaves.deleteAt(bci), bci--; + continue; + } + + App.Update.Slave(Slave); + + V.slaves[bci] = Slave; + } + r += ` Done!<br>`; + return r; +}; + +App.Update.slaveRecords = function() { + let r = `Checking and fixing slave records...`; + V.slaves.forEach((slave) => { + App.Entity.Utils.SlaveDataSchemeCleanup(slave); + SlaveDatatypeCleanup(slave); + let leaderIdx = V.leaders.findIndex(function(s) { return s.ID === slave.ID; }); + if (leaderIdx !== -1) { + V.leaders[leaderIdx] = slave; + } + }); + if (V.hostage !== 0) { + App.Update.Slave(V.hostage); + App.Entity.Utils.SlaveDataSchemeCleanup(V.hostage); + SlaveDatatypeCleanup(V.hostage); + } + if (typeof V.slaveAfterRA !== "undefined") { + App.Update.Slave(V.slaveAfterRA); + App.Entity.Utils.SlaveDataSchemeCleanup(V.slaveAfterRA); + SlaveDatatypeCleanup(V.slaveAfterRA); + } + if (V.boomerangSlave !== 0) { + App.Update.Slave(V.boomerangSlave); + App.Entity.Utils.SlaveDataSchemeCleanup(V.boomerangSlave); + SlaveDatatypeCleanup(V.boomerangSlave); + } + if (V.traitor !== 0) { + App.Update.Slave(V.traitor); + App.Entity.Utils.SlaveDataSchemeCleanup(V.traitor); + SlaveDatatypeCleanup(V.traitor); + } + r += ` Done!<br>`; + + if (V.tanks.length > 0) { + r += `Checking and fixing records for incubator tanks... `; + V.tanks.forEach((slave) => { + App.Update.Slave(slave); + App.Entity.Utils.SlaveDataSchemeCleanup(slave); + SlaveDatatypeCleanup(slave, true); + /* pass second argument as true so that slaveAgeDatatypeCleanup is not run */ + }); + r += ` Done!<br> `; + } + + if (V.cribs.length > 0) { + r += `Checking and fixing records for nursery cribs... `; + V.cribs.forEach((child) => { + if (child.actualAge < 3) { + App.Facilities.Nursery.InfantDatatypeCleanup(child); + } else { + App.Entity.Utils.SlaveDataSchemeCleanup(child, true); + App.Facilities.Nursery.ChildDatatypeCleanup(child); + } + }); + V.cribsIndices = App.Facilities.Nursery.cribsToIndices(); + r += ` Done!<br> `; + } + return r; +}; + +App.Update.specialSlaveRecords = function() { + let r = ""; + if (V.heroSlaves.length > 0) { + r += `Checking and fixing special slave records... `; + V.heroSlaves.forEach((slave) => { + App.Entity.Utils.SlaveDataSchemeCleanup(slave); + /* No SlaveDatatypeCleanup() call as hero slaves are not SlaveState objects */ + }); + r += ` Done!<br> `; + } + return r; +}; + +App.Update.genePoolRecords = function() { + let r = `Updating gene pool records... `; + for (let bci = 0; bci < V.genePool.length; bci++) { + let slave = V.genePool[bci]; + + App.Update.Slave(slave); + + if (V.genePool.map(function(s) { return s.ID; }).count(slave.ID) > 1) { + /* first check for duplicate IDs, keep the first entry and delete the others */ + for (let bci2 = bci + 1; bci2 < V.genePool.length; bci2++) { + if (V.genePool[bci2].ID === slave.ID) { + V.genePool.deleteAt(bci2), bci2--; + } + } + } + let dontDeleteMe = 0; + if (typeof V.slaveIndices[slave.ID] !== "undefined") { + /* are we still in the V.slaves array? */ + dontDeleteMe = 1; + } + if (V.traitor !== 0) { + if (isImpregnatedBy(V.traitor, slave) || V.traitor.ID === slave.ID) { + /* did we impregnate the traitor, or are we the traitor? */ + dontDeleteMe = 1; + } + } + if (V.boomerangSlave !== 0) { + if (isImpregnatedBy(V.boomerangSlave, slave) || V.boomerangSlave.ID === slave.ID) { + /* did we impregnate the boomerang, or are we the boomerang? */ + dontDeleteMe = 1; + } + } + if (isImpregnatedBy(V.PC, slave)) { + /* did we impregnate the PC */ + dontDeleteMe = 1; + } + if (dontDeleteMe === 0) { + /* avoid going through this loop if possible */ + for (let bci2 = 0; bci2 < V.slaves.length; bci2++) { + if (isImpregnatedBy(V.slaves[bci2], slave)) { + /* have we impregnated a slave on the slaves array? */ + dontDeleteMe = 1; + break; + } + } + } + if (dontDeleteMe === 0) { + V.genePool.deleteAt(bci), bci--; + continue; + } + if (typeof slave.origSkin === "undefined") { + slave.origSkin = slave.skin; + } + if (typeof slave.origRace === "undefined") { + slave.origRace = slave.race; + } + if (V.releaseID < 1059) { + if (typeof slave.eyesImplant === "undefined") { + slave.eyesImplant = 0; + } + let oldEyes; + if (slave.origEye === "implant") { + slave.eyesImplant = 1; + oldEyes = V.genePool.find(function(s) { return s.ID === slave.ID; }); + slave.origEye = oldEyes.origEye; + } + if (slave.origEye === "none") { + slave.eyes = -3; + oldEyes = V.genePool.find(function(s) { return s.ID === slave.ID; }); + slave.origEye = oldEyes.origEye; + } + if (slave.eyeColor === "empty") { + slave.eyeColor = slave.origEye; + slave.eyes = -4; + } + } + if (typeof slave.custom === "undefined") { + slave.custom = {}; + } + slave.custom.tattoo = slave.customTat || ""; + slave.custom.label = slave.custom.label || ""; + slave.custom.desc = slave.custom.desc || ""; + slave.custom.title = slave.custom.title || ""; + slave.custom.titleLisp = slave.custom.titleLisp || ""; + slave.custom.hairVector = slave.custom.hairVector || 0; + slave.custom.image = slave.custom.image || null; + + App.Entity.Utils.GenePoolRecordCleanup(slave); + V.genePool[bci] = slave; + } + if (V.nurseryNannies > 0) { + for (let bci = 0; bci < V.cribs.length; bci++) { + App.Update.Slave(V.cribs[bci]); + // let _nurseryChild = V.cribs[bci]; TODO: on importing this to JS, what is this even supposed to do? + } + } + + V.AgeEffectOnTrainerPricingPC = 1; + V.AgeEffectOnTrainerEffectivenessPC = 1; + V.AgeTrainingUpperBoundPC = 14; + V.AgeTrainingLowerBoundPC = 12; + V.IsInPrimePC = 3; + V.IsPastPrimePC = 5000; + r += ` Done!<br>`; + return r; +}; + +App.Update.RAassistantData = function() { + let r = `Updating Rules Assistant data...`; + V.defaultRules = V.defaultRules.map(rule => App.Entity.Utils.RARuleDatatypeCleanup(rule)); + r += ` Done!<br>`; + return r; +}; + +App.Update.oldVersions = function() { + if (V.releaseID === 1021 || V.releaseID === 1020 || V.releaseID === 1019 || V.releaseID === 2022) { + V.releaseID = 1022; + } + let r = ""; + if (V.releaseID < 1043) { + V.defaultRules.forEach((rule) => { + if (rule.condition.excludeSpecialSlaves) { + rule.condition.specialSlaves = 0; + } else { + rule.condition.specialSlaves = -1; + } + delete rule.condition.excludeSpecialSlaves; + }); + } + if (V.releaseID === 1043) { + V.slaves.forEach(s => { s.skill.whoring = s.skill.whore / 2; }); + V.tanks.forEach(s => { s.skill.whoring = s.skill.whore / 2; }); + V.cribs.forEach(s => { s.skill.whoring = s.skill.whore / 2; }); + V.heroSlaves.forEach(hs => { + if (hs.hasOwnProperty("skill") && hs.skill.hasOwnProperty("whore")) { + hs.skill.whoring = hs.skill.whore; + delete hs.skill.whore; + } + }); + } + /* unify cybermod & vanilla */ + /* limbs */ + if (V.releaseID < 1045) { + if (typeof V.limbs !== "undefined") { + V.adjustProsthetics = []; + V.limbs.forEach((l) => { + switch (l.type) { + case "simple": + V.adjustProsthetics.push({id: "basicL", workLeft: l.weeksToCompletion * 10, slaveID: l.ID}); + break; + case "sex": + V.adjustProsthetics.push({id: "sexL", workLeft: l.weeksToCompletion * 10, slaveID: l.ID}); + break; + case "beauty": + V.adjustProsthetics.push({id: "beautyL", workLeft: l.weeksToCompletion * 10, slaveID: l.ID}); + break; + case "combat": + V.adjustProsthetics.push({id: "combatL", workLeft: l.weeksToCompletion * 10, slaveID: l.ID}); + break; + case "cyber": + V.adjustProsthetics.push({id: "cyberneticL", workLeft: l.weeksToCompletion * 10, slaveID: l.ID}); + break; + } + }); + } + if (typeof V.limbsCompleted !== "undefined") { + V.adjustProstheticsCompleted = V.limbsCompleted; + } + + /* lab */ + if (typeof V.researchLab.level === "undefined") { + V.researchLab.level = 0; + if (typeof V.researchLab.built !== "undefined") { + if (V.researchLab.built === "true") { + V.researchLab.level = 1; + if (V.prostheticsUpgrade === 0) { + V.prostheticsUpgrade = 1; + } + } + delete V.researchLab.built; + } + } + if (typeof V.researchLab.speed === "undefined") { + V.researchLab.speed = ((V.researchLab.hired * 3) + V.researchLab.menials) * V.researchLab.aiModule; + } + if (typeof V.researchLab.tasks === "undefined") { + V.researchLab.tasks = []; + } + if (typeof V.researchLab.research !== "undefined") { + if (V.researchLab.research !== "none") { + let id; + switch (V.researchLab.research) { + case "Basic prosthetics interface": + id = "interfaceP1"; + break; + case "Advanced prosthetics interface": + id = "interfaceP2"; + break; + case "Basic prosthetic limbs": + id = "basicL"; + break; + case "Advanced sex limbs": + id = "sexL"; + break; + case "Advanced beauty limbs": + id = "beautyL"; + break; + case "Advanced combat limbs": + id = "combatL"; + break; + case "Cybernetic limbs": + id = "cyberneticL"; + break; + case "Ocular implants": + id = "ocular"; + break; + case "Cochlear implants": + id = "cochlear"; + break; + case "Electrolarynx": + id = "electrolarynx"; + break; + } + V.researchLab.tasks.push({type: "research", id: id, workLeft: V.researchLab.productionTime}); + } + delete V.researchLab.research; + } + if (typeof V.researchLab.manufacture !== "undefined") { + if (V.researchLab.manufacture !== "none") { + let id; + switch (V.researchLab.manufacture) { + case "Basic prosthetics interface": + id = "interfaceP1"; + break; + case "Advanced prosthetics interface": + id = "interfaceP2"; + break; + case "Basic prosthetic limbs": + id = "basicL"; + break; + case "Advanced sex limbs": + id = "sexL"; + break; + case "Advanced beauty limbs": + id = "beautyL"; + break; + case "Advanced combat limbs": + id = "combatL"; + break; + case "Cybernetic limbs": + id = "cyberneticL"; + break; + case "Ocular implants": + id = "ocular"; + break; + case "Cochlear implants": + id = "cochlear"; + break; + case "Electrolarynx": + id = "electrolarynx"; + break; + } + V.researchLab.tasks.push({type: "craft", id: id, workLeft: V.researchLab.productionTime}); + } + delete V.researchLab.manufacture; + } + delete V.researchLab.productionTime; + + /* stockpile */ + if (jQuery.isEmptyObject(V.prosthetics)) { + if (jQuery.isEmptyObject(V.stockpile)) { + V.prosthetics = {}; + setup.prostheticIDs.forEach(function(id) { + V.prosthetics[id] = {amount: 0, research: 0}; + }); + } else { + if (typeof V.stockpile.cochlearImplant === "undefined") { + V.stockpile.cochlearImplant = 0; + } + if (typeof V.stockpile.electrolarynx === "undefined") { + V.stockpile.electrolarynx = 0; + } + if (typeof V.stockpile.interfacePTail === "undefined") { + V.stockpile.interfacePTail = 0; + } + if (typeof V.stockpile.modPTail === "undefined") { + V.stockpile.modPTail = 0; + } + if (typeof V.stockpile.warPTail === "undefined") { + V.stockpile.warPTail = 0; + } + if (typeof V.stockpile.sexPTail === "undefined") { + V.stockpile.sexPTail = 0; + } + V.prosthetics = { + interfaceP1: {amount: V.stockpile.basicPLimbInterface, research: V.researchLab.basicPLimbInterface}, + interfaceP2: {amount: V.stockpile.advPLimbInterface, research: V.researchLab.advPLimbInterface}, + basicL: {amount: V.stockpile.basicPLimb, research: V.researchLab.basicPLimb}, + sexL: {amount: V.stockpile.advSexPLimb, research: V.researchLab.advSexPLimb}, + beautyL: {amount: V.stockpile.advGracePLimb, research: V.researchLab.advGracePLimb}, + combatL: {amount: V.stockpile.advCombatPLimb, research: V.researchLab.advCombatPLimb}, + cyberneticL: {amount: V.stockpile.cyberneticPLimb, research: V.researchLab.cyberneticPLimb}, + ocular: {amount: V.stockpile.ocularImplant, research: V.researchLab.ocularImplant}, + cochlear: {amount: V.stockpile.cochlearImplant, research: V.researchLab.cochlearImplant}, + electrolarynx: {amount: V.stockpile.electrolarynx, research: V.researchLab.electrolarynx}, + interfaceTail: {amount: V.stockpile.interfacePTail, research: 0}, + modT: {amount: V.stockpile.modPTail, research: 0}, + combatT: {amount: V.stockpile.warPTail, research: 0}, + sexT: {amount: V.stockpile.sexPTail, research: 0}, + erectile: {amount: V.stockpile.erectileImplant, research: V.researchLab.erectileImplant} + }; + delete V.researchLab.basicPLimbInterface; + delete V.researchLab.advPLimbInterface; + delete V.researchLab.basicPLimb; + delete V.researchLab.advSexPLimb; + delete V.researchLab.advGracePLimb; + delete V.researchLab.advCombatPLimb; + delete V.researchLab.cyberneticPLimb; + delete V.researchLab.ocularImplant; + delete V.researchLab.cochlearImplant; + delete V.researchLab.electrolarynx; + delete V.researchLab.erectileImplant; + } + } + } + if (V.releaseID < 1047) { + if (V.loliGrow > 0) { + V.loliGrow = 1; + } else { + V.loliGrow = 0; + } + } + if (V.releaseID < 1055) { + if (V.disableLisping === 0) { + V.disableLisping = 1; + } else { + V.disableLisping = 0; + } + } + if (V.releaseID < 1057) { + r += `Standardizing player object... `; + if (typeof V.PC.actualAge === "undefined") { + if (V.PC.age === 1) { + V.PC.actualAge = 20; + } else if (V.PC.age === 3) { + V.PC.actualAge = 50; + } else { + V.PC.actualAge = 35; + } + } + if (typeof V.PC.markings === "undefined") { + V.PC.markings = "none"; + } + if (typeof V.PC.pronoun === "undefined") { + generatePlayerPronouns(V.PC); + } + if (typeof V.PC.pregKnown === "undefined") { + if (V.PC.preg > 0) { + V.PC.pregKnown = 1; + } else { + V.PC.pregKnown = 0; + } + } + if (typeof V.PC.pregWeek === "undefined") { + if (V.PC.preg > 0) { + V.PC.pregWeek = V.PC.preg; + } else { + V.PC.pregWeek = 0; + } + } + if (typeof V.PC.pregType === "undefined") { + if (V.PC.preg > 0) { + V.PC.pregType = 1; + } else { + V.PC.pregType = 0; + } + } + if (typeof V.PC.belly === "undefined") { + if (V.PC.preg > 0) { + V.PC.belly = getPregBellySize(V.PC); + } else { + V.PC.belly = 0; + } + } + if (typeof V.PC.skin === "undefined") { + V.PC.skin = "light"; + } + if (typeof V.PC.origSkin === "undefined") { + V.PC.origSkin = V.PC.skin; + } + if (typeof V.PC.eyeColor === "undefined") { + V.PC.eyeColor = "blue"; + } + if (typeof V.PC.origEye === "undefined") { + V.PC.origEye = V.PC.eyeColor; + } + if (typeof V.PC.pupil === "undefined") { + if (V.PC.eyeColor === "catlike") { + V.PC.pupil = "catlike"; + V.PC.eyeColor = "blue"; + } else if (V.PC.eyeColor === "serpent-like") { + V.PC.pupil = "serpent-like"; + V.PC.eyeColor = "blue"; + } else if (V.PC.eyeColor === "devilish") { + V.PC.pupil = "devilish"; + V.PC.eyeColor = "blue"; + } else if (V.PC.eyeColor === "demonic") { + V.PC.pupil = "demonic"; + V.PC.eyeColor = "blue"; + } else if (V.PC.eyeColor === "hypnotic") { + V.PC.pupil = "hypnotic"; + V.PC.eyeColor = "blue"; + } else if (V.PC.eyeColor === "heart-shaped") { + V.PC.pupil = "heart-shaped"; + V.PC.eyeColor = "blue"; + } else if (V.PC.eyeColor === "wide-eyed") { + V.PC.pupil = "wide-eyed"; + V.PC.eyeColor = "blue"; + } else if (V.PC.eyeColor === "almond-shaped") { + V.PC.pupil = "almond-shaped"; + V.PC.eyeColor = "blue"; + } else if (V.PC.eyeColor === "bright") { + V.PC.pupil = "bright"; + V.PC.eyeColor = "blue"; + } else if (V.PC.eyeColor === "teary") { + V.PC.pupil = "teary"; + V.PC.eyeColor = "blue"; + } else if (V.PC.eyeColor === "vacant") { + V.PC.pupil = "vacant"; + V.PC.eyeColor = "blue"; + } else { + V.PC.pupil = "circular"; + } + } + if (typeof V.PC.sclerae === "undefined") { + V.PC.sclerae = "white"; + } + if (typeof V.PC.race === "undefined") { + V.PC.race = "white"; + } + if (typeof V.PC.origRace === "undefined") { + V.PC.origRace = V.PC.race; + } + if (typeof V.PC.hColor === "undefined") { + V.PC.hColor = "blonde"; + } + if (typeof V.PC.origHColor === "undefined") { + V.PC.origHColor = V.PC.hColor; + } + if (typeof V.PC.nationality === "undefined") { + V.PC.nationality = "Stateless"; + } + if (V.PC.boobsBonus === -0.5) { + V.PC.boobsBonus = -1; + } + if (typeof V.PC.sclerae === "undefined") { + V.PC.sclerae = "white"; + } + if (typeof V.PC.fetish === "undefined") { + V.PC.fetish = "none"; + } + if (typeof V.PC.behavioralFlaw === "undefined") { + V.PC.behavioralFlaw = "none"; + } + if (typeof V.PC.behavioralQuirk === "undefined") { + V.PC.behavioralQuirk = "none"; + } + if (typeof V.PC.sexualFlaw === "undefined") { + V.PC.sexualFlaw = "none"; + } + if (typeof V.PC.sexualQuirk === "undefined") { + V.PC.sexualQuirk = "none"; + } + if (typeof V.PC.pubicHStyle === "undefined") { + V.PC.pubicHStyle = "hairless"; + } + if (typeof V.PC.underArmHStyle === "undefined") { + V.PC.underArmHStyle = "hairless"; + } + if (typeof V.PC.eggType === "undefined") { + V.PC.eggType = "human"; + } + if (typeof V.PC.ballType === "undefined") { + V.PC.ballType = "human"; + } + if (typeof V.PC.geneticQuirks === "undefined") { + V.PC.geneticQuirks = { + macromastia: 0, + gigantomastia: 0, + fertility: 0, + hyperFertility: 0, + superfetation: 0, + gigantism: 0, + dwarfism: 0, + pFace: 0, + uFace: 0, + albinism: 0, + heterochromia: 0, + rearLipedema: 0, + wellHung: 1, + wGain: 0, + wLoss: 0, + mGain: 0, + mLoss: 0, + androgyny: 0, + girlsOnly: 0 + }; + if (V.PC.birthMaster > 0) { + V.PC.geneticQuirks.fertility = 2; + } else if (V.PC.career === "servant") { + V.PC.geneticQuirks.fertility = 1; + } + } else { + if (typeof V.PC.geneticQuirks.heterochromia === "undefined") { + V.PC.geneticQuirks.heterochromia = 0; + } + if (typeof V.PC.geneticQuirks.girlsOnly === "undefined") { + V.PC.geneticQuirks.girlsOnly = 0; + } + if (typeof V.PC.geneticQuirks.mGain === "undefined") { + V.PC.geneticQuirks.mGain = 0; + } + if (typeof V.PC.geneticQuirks.mLoss === "undefined") { + V.PC.geneticQuirks.mLoss = 0; + } + } + if (V.releaseID < 1032) { + if (V.PC.pregSource === -1) { + V.PC.pregSource = -6; + } else if (V.PC.pregSource === -2) { + V.PC.pregSource = -5; + } else if (V.PC.pregSource === -6) { + V.PC.pregSource = -1; + } else if (V.PC.pregSource === -5) { + V.PC.pregSource = -2; + } + } + if (typeof V.PC.genes === "undefined") { + if (V.PC.title === 1) { + V.PC.genes = "XY"; + } else { + V.PC.genes = "XX"; + } + } + + /* player object converter */ + let newPC = basePlayer(); + newPC.slaveName = V.PC.name; + newPC.slaveSurname = V.PC.surname; + newPC.birthName = V.PC.name; + if (V.PC.slaveSurname) { + newPC.birthSurname = V.PC.surname; + } else { + newPC.birthSurname = ""; + } + newPC.title = V.PC.title; + newPC.genes = V.PC.genes; + newPC.career = V.PC.career; + newPC.rumor = V.PC.rumor; + newPC.birthWeek = V.PC.birthWeek; + newPC.refreshment = V.PC.refreshment; + newPC.refreshmentType = V.PC.refreshmentType; + newPC.actualAge = V.PC.actualAge; + newPC.physicalAge = V.PC.physicalAge; + newPC.visualAge = V.PC.visualAge; + newPC.ovaryAge = V.PC.ovaryAge; + newPC.ageImplant = V.PC.ageImplant; + newPC.nationality = V.PC.nationality; + newPC.race = V.PC.race; + newPC.origRace = V.PC.origRace; + newPC.skin = V.PC.skin; + newPC.origSkin = V.PC.origSkin; + newPC.markings = V.PC.markings; + newPC.hColor = V.PC.hColor; + newPC.origHColor = V.PC.origHColor; + newPC.origEye = V.PC.origEye; + /* needed for compatibility currently */ + newPC.eye.origColor = V.PC.origEye; + newPC.eye.left.iris = V.PC.eyeColor; + newPC.eye.left.pupil = V.PC.pupil; + newPC.eye.left.sclera = V.PC.sclerae; + newPC.eye.right.iris = V.PC.eyeColor; + newPC.eye.right.pupil = V.PC.pupil; + newPC.eye.right.sclera = V.PC.sclerae; + newPC.faceShape = V.PC.faceShape; + newPC.skill.trading = V.PC.trading; + newPC.skill.warfare = V.PC.warfare; + newPC.skill.hacking = V.PC.hacking; + newPC.skill.slaving = V.PC.slaving; + newPC.skill.engineering = V.PC.engineering; + newPC.skill.medicine = V.PC.medicine; + newPC.skill.cumTap = V.PC.cumTap; + newPC.father = V.PC.father; + newPC.mother = V.PC.mother; + newPC.sisters = V.PC.sisters; + newPC.daughters = V.PC.daughters; + newPC.counter.birthsTotal = V.PC.births; + newPC.counter.birthElite = V.PC.birthElite; + newPC.counter.birthMaster = V.PC.birthMaster; + newPC.counter.birthDegenerate = V.PC.birthDegenerate; + newPC.counter.birthClient = V.PC.birthClient; + newPC.counter.birthArcOwner = V.PC.birthArcOwner; + newPC.counter.birthCitizen = V.PC.birthCitizen; + newPC.counter.birthFutaSis = V.PC.birthFutaSis; + newPC.counter.birthSelf = V.PC.birthSelf; + newPC.counter.birthLab = V.PC.birthLab; + newPC.counter.birthOther = V.PC.birthOther; + if (typeof V.PC.laborCount !== "undefined") { + newPC.counter.laborCount = V.PC.laborCount; + } + newPC.counter.slavesFathered = V.PC.slavesFathered; + newPC.counter.slavesKnockedUp = V.PC.slavesKnockedUp; + newPC.sexualEnergy = V.PC.sexualEnergy; + newPC.staminaPills = V.PC.staminaPills; + newPC.preg = V.PC.preg; + newPC.pregType = V.PC.pregType; + newPC.pregWeek = V.PC.pregWeek; + newPC.pregKnown = V.PC.pregKnown; + newPC.fertKnown = V.PC.fertKnown; + newPC.fertPeak = V.PC.fertPeak; + newPC.fertDrugs = V.PC.fertDrugs; + newPC.forcedFertDrugs = V.PC.forcedFertDrugs; + newPC.belly = V.PC.belly; + newPC.bellyPreg = V.PC.bellyPreg; + newPC.pregSource = V.PC.pregSource; + newPC.pregMood = V.PC.pregMood; + newPC.labor = V.PC.labor; + newPC.degeneracy = V.PC.degeneracy; + newPC.pubicHStyle = V.PC.pubicHStyle; + newPC.underArmHStyle = V.PC.underArmHStyle; + if (V.PC.dick === 1) { + newPC.dick = 4; + newPC.prostate = 1; + if (V.PC.ballsImplant === 4 || V.PC.balls === 4) { + newPC.balls = 30; + newPC.scrotum = 7; + } else if (V.PC.ballsImplant === 3 || V.PC.balls === 3) { + newPC.balls = 14; + newPC.scrotum = 6; + } else if (V.PC.ballsImplant === 2 || V.PC.balls === 2) { + newPC.balls = 9; + newPC.scrotum = 5; + } else if (V.PC.ballsImplant === 1 || V.PC.balls === 1) { + newPC.balls = 5; + newPC.scrotum = 4; + } else { + newPC.balls = 3; + newPC.scrotum = 3; + } + if (V.PC.ballsImplant > 0) { + newPC.ballsImplant = newPC.balls - 3; + } + } else { + newPC.dick = 0; + newPC.prostate = 0; + newPC.balls = 0; + newPC.scrotum = 0; + } + newPC.newVag = V.PC.newVag; + if (V.PC.vagina === 1) { + newPC.ovaries = 1; + newPC.vaginaLube = 1; + if (V.PC.newVag === 1) { + newPC.vagina = 1; + } else if (V.PC.career === "escort" || V.PC.birthsTotal >= 10 || V.PC.career === "servant") { + newPC.vagina = 4; + } else if (V.PC.birthsTotal > 2) { + newPC.vagina = 3; + } else if (V.PC.career === "gang" || V.PC.career === "celebrity" || V.PC.career === "wealth" || V.PC.birthsTotal > 0) { + newPC.vagina = 2; + } else { + newPC.vagina = 1; + } + } + if (V.PC.boobs === 1) { + if (V.PC.boobsBonus === -3) { + newPC.boobs = 400; + } else if (V.PC.boobsBonus === -2) { + newPC.boobs = 500; + } else if (V.PC.boobsBonus === -1) { + newPC.boobs = 700; + } else if (V.PC.boobsBonus === 1) { + newPC.boobs = 1100; + } else if (V.PC.boobsBonus === 2) { + newPC.boobs = 1300; + } else if (V.PC.boobsBonus === 3) { + newPC.boobs = 1500; + } else { + newPC.boobs = 900; + } + } else if (V.PC.genes === "XX") { + newPC.boobs = 200; + } else { + newPC.boobs = 100; + } + if (V.PC.boobsImplant === 1) { + newPC.boobsImplant = newPC.boobs - 900; + } + newPC.lactation = V.PC.lactation; + newPC.lactationDuration = V.PC.lactationDuration; + newPC.genes = V.PC.genes; + if (V.PC.butt === 3) { + newPC.butt = 5; + } else if (V.PC.butt === 2) { + newPC.butt = 4; + } else if (V.PC.butt === 1) { + newPC.butt = 3; + } else { + newPC.butt = 2; + } + if (V.PC.buttImplant === 1) { + newPC.buttImplant = newPC.butt - 2; + } + newPC.reservedChildren = V.PC.reservedChildren; + newPC.reservedChildrenNursery = V.PC.reservedChildrenNursery; + newPC.geneticQuirks = clone(V.PC.geneticQuirks); + if (V.arcologies[0].FSPhysicalIdealist !== "unset") { + newPC.muscles = 100; + } else if (V.PC.title === 1) { + newPC.muscles = 50; + } else { + newPC.muscles = 30; + } + if (V.PC.title === 0) { + newPC.hLength = 15; + newPC.waist = -20; + newPC.voice = 2; + newPC.shoulders = -1; + newPC.hips = 1; + } + if (V.PC.career === "escort") { + newPC.anus = 1; + newPC.clothes = "a slutty outfit"; + newPC.intelligenceImplant = 15; + } else if (V.PC.career === "servant") { + newPC.clothes = "a nice maid outfit"; + newPC.intelligenceImplant = 0; + } + if (typeof V.PCWounded !== "undefined") { + newPC.majorInjury = V.PCWounded; + } + if (typeof V.girls !== "undefined") { + if (V.girls === 1) { + newPC.rules.living = "spare"; + } else if (V.girls === 2) { + newPC.rules.living = "normal"; + } else { + newPC.rules.living = "luxurious"; + } + } + if (typeof V.playerGetsMilked !== "undefined") { + if (V.playerGetsMilked === 2) { + V.PC.rules.lactation = "sell"; + } else if (V.playerGetsMilked === 1) { + V.PC.rules.lactation = "maintain"; + } + } + + WombInit(newPC); + + V.PC = clone(newPC); + + if (typeof V.PC.name === "undefined") { + if (typeof V.PCName !== "undefined") { + V.PC.name = V.PCName; + } + } + if (typeof V.PC.surname === "undefined") { + V.PC.surname = 0; + } + if (typeof V.PC.faceShape === "undefined") { + V.PC.faceShape = "normal"; + } + + r += ` Done!`; + } + return r; +}; + +App.Update.HeroSlavesCleanup = function() { + V.heroSlaves.forEach(function(s) { + /* Nationalities, races, surnames random fill */ + if (!s.nationality) { + /* Check for a pre-set race and if the nationality fits, else regenerate */ + if (s.race && setup.filterRacesLowercase.includes(s.race)) { + raceToNationality(s); + } else { + s.nationality = hashChoice(V.nationalities); + } + } + if (!s.race || !setup.filterRacesLowercase.includes(s.race)) { + nationalityToRace(s); + } + if (!s.birthSurname && s.birthSurname !== "") { + s.birthSurname = (setup.surnamePoolSelector[s.nationality + "." + s.race] || + setup.surnamePoolSelector[s.nationality] || + setup.whiteAmericanSlaveSurnames).random(); + } + if (!s.birthName && s.birthName !== "") { + s.birthName = (setup.namePoolSelector[s.nationality + "." + s.race] || + setup.namePoolSelector[s.nationality] || + setup.whiteAmericanSlaveNames).random(); + } + generatePronouns(s); + if (s.geneMods === undefined) { + s.geneMods = {NCS: 0, rapidCellGrowth: 0}; + } else { + if (s.geneMods.NCS === undefined) { + s.geneMods.NCS = 0; + } + if (s.geneMods.rapidCellGrowth === undefined) { + s.geneMods.rapidCellGrowth = 0; + } + } + // WombInit(s); + }); + return; +}; + +App.Update.cleanUp = function() { + /* leave this at the bottom of BC */ + if (V.releaseID < App.Version.release) { + V.releaseID = App.Version.release; + } + /* reset NaNArray after BC is run */ + V.NaNArray = findNaN(); + return; +}; + +App.Update.sectorsToBuilding = function() { + V.building = new App.Arcology.Building([]); + const B = V.building; + const S = V.sectors; + + B.sections.push(new App.Arcology.Section("penthouse", [ + [new App.Arcology.Cell.Penthouse()] + ])); + if (V.arcologyUpgrade.spire === 1) { + B.sections.push(new App.Arcology.Section("spire", [ + [ + sectorToApartment(S[1]), sectorToApartment(S[2]) + ], + [ + sectorToApartment(S[3]), sectorToApartment(S[4]) + ] + ])); + } + B.sections.push(new App.Arcology.Section("apartments", + [ + [sectorToApartment(S[8]), sectorToApartment(S[9]), sectorToApartment(S[10]), sectorToApartment(S[11])], + [sectorToApartment(S[12]), sectorToApartment(S[13]), sectorToApartment(S[14]), sectorToApartment(S[15])], + [sectorToApartment(S[16]), sectorToApartment(S[17]), sectorToApartment(S[18]), sectorToApartment(S[19])], + ])); + + function sectorToApartment(sector) { + const a = new App.Arcology.Cell.Apartment(sector.ownership); + if (sector.type === "LuxuryApartments") { + a.type = 1; + } else if (sector.type === "DenseApartments") { + a.type = 3; + } + return a; + } + + B.sections.push(new App.Arcology.Section("shops", [ + [sectorToShop(S[5]), sectorToShop(S[6]), sectorToShop(S[7])] + ])); + + function sectorToShop(sector) { + return new App.Arcology.Cell.Shop(sector.ownership, sector.type); + } + + B.sections.push(new App.Arcology.Section("markets", + [ + [sectorToMarket(S[20]), sectorToMarket(S[21]), sectorToMarket(S[22]), sectorToMarket(S[23]), sectorToMarket(S[24])] + ])); + + function sectorToMarket(sector) { + const m = new App.Arcology.Cell.Market(sector.ownership); + if (sector.type === "transportHub") { + m.type = "Transport Hub"; + } else if (sector.type === "CorporateMarket") { + m.type = "Corporate Market"; + } else { + m.type = sector.type; + } + return m; + } + + B.sections.push(new App.Arcology.Section("manufacturing", + [ + [sectorToManu(S[25]), sectorToManu(S[26]), sectorToManu(S[27]), sectorToManu(S[28]), sectorToManu(S[29])] + ])); + + function sectorToManu(sector) { + const m = new App.Arcology.Cell.Manufacturing(sector.ownership); + if (sector.type === "weapManu") { + m.type = "Weapon Manufacturing"; + } else { + m.type = sector.type; + } + return m; + } +}; + +App.Update.slaveLoopInit = function() { + let SL = V.slaves.length; + for (let i = 0; i < SL; i++) { + if (V.slaves[i].assignment !== "be imported") { + removeNonNGPSlave(V.slaves[i]); + i--, SL--; + } + } + for (let i = 0; i < SL; i++) { + if (V.slaves[i].assignment === "be imported") { + V.slaves[i].ID += NGPOffset; + V.slaves[i].assignment = "rest"; + V.slaves[i].weekAcquired = 0; + V.slaves[i].newGamePlus = 1; + if (V.slaves[i].mother > 0) { + V.slaves[i].mother += NGPOffset; + } else if (V.freshPC === 1 && V.slaves[i].mother === -1) { + V.slaves[i].mother = -NGPOffset; + } else if (V.slaves[i].mother < -1) { + V.slaves[i].mother -= NGPOffset; + } + if (V.slaves[i].father > 0) { + V.slaves[i].father += NGPOffset; + } else if (V.freshPC === 1 && V.slaves[i].father === -1) { + V.slaves[i].father = -NGPOffset; + } else if (V.slaves[i].father < -1) { + V.slaves[i].father -= NGPOffset; + } + V.slaves[i].daughters = 0; + V.slaves[i].sisters = 0; + V.slaves[i].canRecruit = 0; + V.slaves[i].breedingMark = 0; + if (V.arcologies[0].FSRomanRevivalist > 90) { + V.slaves[i].nationality = "Roman Revivalist"; + } else if (V.arcologies[0].FSAztecRevivalist > 90) { + V.slaves[i].nationality = "Aztec Revivalist"; + } else if (V.arcologies[0].FSEgyptianRevivalist > 90) { + V.slaves[i].nationality = "Ancient Egyptian Revivalist"; + } else if (V.arcologies[0].FSEdoRevivalist > 90) { + V.slaves[i].nationality = "Edo Revivalist"; + } else if (V.arcologies[0].FSArabianRevivalist > 90) { + V.slaves[i].nationality = "Arabian Revivalist"; + } else if (V.arcologies[0].FSChineseRevivalist > 90) { + V.slaves[i].nationality = "Ancient Chinese Revivalist"; + } + if (V.slaves[i].relationTarget !== 0) { + V.slaves[i].relationTarget += NGPOffset; + } + if (V.slaves[i].relationshipTarget !== 0) { + V.slaves[i].relationshipTarget += NGPOffset; + } + if (V.slaves[i].cloneID !== 0) { + V.slaves[i].cloneID += NGPOffset; + } + V.slaves[i].rivalry = 0, V.slaves[i].rivalryTarget = 0, V.slaves[i].subTarget = 0; + V.slaves[i].drugs = "no drugs"; + V.slaves[i].porn.spending = 0; + V.slaves[i].rules.living = "spare"; + V.slaves[i].diet = "healthy"; + V.slaves[i].pregControl = "none"; + } + } + V.slaveIndices = slaves2indices(); + for (let k = 0; k < SL; k++) { + for (let i = 0; i < SL; i++) { + if (V.slaves[k].mother === V.slaves[i].ID || V.slaves[k].father === V.slaves[i].ID) { + V.slaves[i].daughters += 1; + } + if (areSisters(V.slaves[k], V.slaves[i]) > 0) { + V.slaves[i].sisters += 1; + } + } + if (V.slaves[k].pregSource > 0) { + V.slaves[k].pregSource += NGPOffset; + let getFather = V.slaveIndices[V.slaves[k].pregSource]; + if (getFather) { + V.slaves[k].pregSource = 0; + } + } + for (let sInit = 0; sInit < V.slaves[k].womb.length; sInit++) { + if (V.slaves[k].womb[sInit].fatherID > 0) { + V.slaves[k].womb[sInit].fatherID += NGPOffset; + } else if (V.freshPC === 1 && V.slaves[k].womb[sInit].fatherID === -1) { + V.slaves[k].womb[sInit].fatherID = -NGPOffset; + } else if (V.slaves[k].womb[sInit].fatherID < -20) { + V.slaves[k].womb[sInit].fatherID -= NGPOffset; + } + if (V.slaves[k].womb[sInit].genetics.father > 0) { + V.slaves[k].womb[sInit].genetics.father += NGPOffset; + } else if (V.freshPC === 1 && V.slaves[k].womb[sInit].genetics.father === -1) { + V.slaves[k].womb[sInit].genetics.father = -NGPOffset; + } else if (V.slaves[k].womb[sInit].genetics.father < -20) { + V.slaves[k].womb[sInit].genetics.father -= NGPOffset; + } + if (V.slaves[k].womb[sInit].genetics.mother > 0) { + V.slaves[k].womb[sInit].genetics.mother += NGPOffset; + } else if (V.freshPC === 1 && V.slaves[k].womb[sInit].genetics.mother === -1) { + V.slaves[k].womb[sInit].genetics.mother = -NGPOffset; + } else if (V.slaves[k].womb[sInit].genetics.mother < -20) { + V.slaves[k].womb[sInit].genetics.mother -= NGPOffset; + } + } + if (V.slaves[k].cloneID !== 0) { + let getClone = V.slaveIndices[V.slaves[k].cloneID]; + if (getClone) { + V.slaves[k].cloneID = 0; + } + } + } + V.genePool = ngUpdateGenePool(V.genePool); + if (typeof V.missingTable === undefined || V.showMissingSlaves === false) { + V.missingTable = {}; + } else { + V.missingTable = ngUpdateMissingTable(V.missingTable); + } + for (let i = 0; i < SL; i++) { + if (V.slaves[i].relation !== 0) { + let seed = 0, rt = V.slaves[i].relationTarget, ID = V.slaves[i].ID; + let j = V.slaveIndices[rt]; + if ((j) && V.slaves[j].relationTarget === ID) { + seed = 1; + } + if (seed === 0) { + V.slaves[i].relation = 0, V.slaves[i].relationTarget = 0; + } + } + if (V.slaves[i].relationship > 0) { + let seed = 0, rt = V.slaves[i].relationshipTarget, ID = V.slaves[i].ID; + let j = V.slaveIndices[rt]; + if ((j) && V.slaves[j].relationshipTarget === ID) { + seed = 1; + } + if (seed === 0) { + V.slaves[i].relationship = 0, V.slaves[i].relationshipTarget = 0; + } + } + } + for (let i = 0; i < SL; i++) { + if (V.familyTesting === 1) { + if (V.slaves[i].canRecruit === 1) { + /* V.recruiters.push(V.slaves[i]);*/ + } + } else { + if (V.slaves[i].relation === 0) { + if (random(1, 100) <= 5) { + V.slaves[i].recruiter = "twin"; + } else if ((V.slaves[i].actualAge > 32) && (random(1, 100) <= 41)) { + V.slaves[i].recruiter = "mother"; + } else if ((V.slaves[i].actualAge < 24) && (random(1, 100) <= 40)) { + V.slaves[i].recruiter = "daughter"; + } else if ((V.slaves[i].actualAge < 43) && (random(1, 100) <= 20)) { + V.slaves[i].recruiter = "older sister"; + } else if ((V.slaves[i].actualAge < 25) && (V.slaves[i].actualAge > 18) && (random(1, 100) <= 20)) { + V.slaves[i].recruiter = "young sister"; + } + } else { + V.slaves[i].recruiter = 0; + } + } + /* closes family mode */ + V.slaves[i].counter.milk = 0; + V.slaves[i].counter.cum = 0; + V.slaves[i].counter.births = 0; + V.slaves[i].counter.mammary = 0; + V.slaves[i].counter.penetrative = 0; + V.slaves[i].counter.oral = 0; + V.slaves[i].counter.anal = 0; + V.slaves[i].counter.vaginal = 0; + V.slaves[i].lifetimeCashExpenses = 0; + V.slaves[i].lifetimeCashIncome = 0; + V.slaves[i].lastWeeksCashIncome = 0; + V.slaves[i].lifetimeRepExpenses = 0; + V.slaves[i].lifetimeRepIncome = 0; + V.slaves[i].lastWeeksRepExpenses = 0; + V.slaves[i].lastWeeksRepIncome = 0; + } +}; diff --git a/src/js/datatypeCleanupJS.js b/src/data/backwardsCompatibility/datatypeCleanup.js similarity index 80% rename from src/js/datatypeCleanupJS.js rename to src/data/backwardsCompatibility/datatypeCleanup.js index 5d33a2c1155af80e5064535f633802f181dbec8c..d89b851d5b8e54834a6b2f679764019239badd03 100644 --- a/src/js/datatypeCleanupJS.js +++ b/src/data/backwardsCompatibility/datatypeCleanup.js @@ -1660,6 +1660,13 @@ window.PCDatatypeCleanup = function PCDatatypeCleanup() { if (typeof PC.refreshment !== "string") { PC.refreshment = "cigar"; } + if (!(V.ver.startsWith("0.10"))) { + if (V.PC.refreshment === "cigar") { + V.PC.refreshmentType = 0; + } else { + V.PC.refreshmentType = 1; + } + } PC.refreshmentType = Math.clamp(+PC.refreshmentType, 0, 6) || 0; PC.skill.trading = Math.clamp(+PC.skill.trading, -100, 100) || 0; PC.skill.warfare = Math.clamp(+PC.skill.warfare, -100, 100) || 0; @@ -1755,6 +1762,28 @@ window.PCDatatypeCleanup = function PCDatatypeCleanup() { } else { PC.buttImplantType = "none"; } + if (V.PC.customTitle === "") { + V.PC.customTitle = undefined, V.PC.customTitleLisp = undefined; + } + if (typeof V.PC.counter.oral === "undefined") { + V.PC.counter.oral = 0; + } + if (typeof V.PC.counter.vaginal === "undefined") { + V.PC.counter.vaginal = 0; + } + if (typeof V.PC.counter.anal === "undefined") { + V.PC.counter.anal = 0; + } + if (typeof V.PC.counter.mammary === "undefined") { + V.PC.counter.mammary = 0; + } + if (typeof V.PC.counter.penetrative === "undefined") { + V.PC.counter.penetrative = 0; + } + WombInit(V.PC); + if (typeof V.PC.ID === "undefined") { + V.PC.ID = -1; + } /* None of these are in use */ PC.bellyPreg = PC.belly; @@ -1766,10 +1795,14 @@ window.PCDatatypeCleanup = function PCDatatypeCleanup() { window.EconomyDatatypeCleanup = function EconomyDatatypeCleanup() { V.arcologies[0].prosperity = Math.clamp(+V.arcologies[0].prosperity, 1, V.AProsperityCap) || 1; V.AProsperityCap = Math.max(+V.AProsperityCap, 0) || 0; - - V.food = Math.max(+V.food, 0) || 0; - V.economy = Math.max(+V.economy, 20) || 100; + if (V.economy === 0.5) { + V.economy = 200; + } else if (V.economy === 1) { + V.economy = 100; + } else if (V.economy === 1.5) { + V.economy = 67; + } V.difficultySwitch = Math.clamp(+V.difficultySwitch, 0, 1) || 0; if (V.baseDifficulty) { V.baseDifficulty = Math.clamp(+V.baseDifficulty, 1, 5) || 3; @@ -2574,3 +2607,319 @@ App.Entity.Utils.migratePronouns = function(subject) { delete subject["noun"]; /* eslint-enable dot-notation */ }; + +App.Update.FScheatDatatypeCleanup = function() { + if (V.arcologies[0].FSSupremacist !== "unset") { + V.arcologies[0].FSSupremacist = Number(V.arcologies[0].FSSupremacist) || "unset"; + V.arcologies[0].FSSupremacistDecoration = Number(V.arcologies[0].FSSupremacistDecoration) || 0; + V.arcologies[0].FSSupremacistLawME = Number(V.arcologies[0].FSSupremacistLawME) || 0; + } + if (V.arcologies[0].FSSubjugationist !== "unset") { + V.arcologies[0].FSSubjugationist = Number(V.arcologies[0].FSSubjugationist) || "unset"; + V.arcologies[0].FSSubjugationistDecoration = Number(V.arcologies[0].FSSubjugationistDecoration) || 0; + V.arcologies[0].FSSubjugationistLawME = Number(V.arcologies[0].FSSubjugationistLawME) || 0; + } + if (V.arcologies[0].FSGenderRadicalist !== "unset") { + V.arcologies[0].FSGenderRadicalist = Number(V.arcologies[0].FSGenderRadicalist) || "unset"; + V.arcologies[0].FSGenderRadicalistDecoration = Number(V.arcologies[0].FSGenderRadicalistDecoration) || 0; + V.arcologies[0].FSGenderRadicalistLawBeauty = Number(V.arcologies[0].FSGenderRadicalistLawBeauty) || 0; + V.arcologies[0].FSGenderRadicalistLawFuta = Number(V.arcologies[0].FSGenderRadicalistLawFuta) || 0; + } + if (V.arcologies[0].FSRepopulationFocus !== "unset") { + V.arcologies[0].FSRepopulationFocus = Number(V.arcologies[0].FSRepopulationFocus) || "unset"; + V.arcologies[0].FSRepopulationFocusDecoration = Number(V.arcologies[0].FSRepopulationFocusDecoration) || 0; + V.arcologies[0].FSRepopulationFocusSMR = Number(V.arcologies[0].FSRepopulationFocusSMR) || 0; + V.arcologies[0].FSRepopulationFocusLaw = Number(V.arcologies[0].FSRepopulationFocusLaw) || 0; + } + if (V.arcologies[0].FSRestart !== "unset") { + V.arcologies[0].FSRestart = Number(V.arcologies[0].FSRestart) || "unset"; + V.arcologies[0].FSRestartDecoration = Number(V.arcologies[0].FSRestartDecoration) || 0; + V.arcologies[0].FSRestartSMR = Number(V.arcologies[0].FSRestartSMR) || 0; + V.arcologies[0].FSRestartLaw = Number(V.arcologies[0].FSRestartLaw) || 0; + } + if (V.arcologies[0].FSHedonisticDecadence !== "unset") { + V.arcologies[0].FSHedonisticDecadence = Number(V.arcologies[0].FSHedonisticDecadence) || "unset"; + V.arcologies[0].FSHedonisticDecadenceDecoration = Number(V.arcologies[0].FSHedonisticDecadenceDecoration) || 0; + V.arcologies[0].FSHedonisticDecadenceSMR = Number(V.arcologies[0].FSHedonisticDecadenceSMR) || 0; + V.arcologies[0].FSHedonisticDecadenceLaw = Number(V.arcologies[0].FSHedonisticDecadenceLaw) || 0; + V.arcologies[0].FSHedonisticDecadenceLaw2 = Number(V.arcologies[0].FSHedonisticDecadenceLaw2) || 0; + V.arcologies[0].FSHedonisticDecadenceStrongFat = Number(V.arcologies[0].FSHedonisticDecadenceStrongFat) || 0; + } + if (V.arcologies[0].FSIntellectualDependency !== "unset") { + V.arcologies[0].FSIntellectualDependency = Number(V.arcologies[0].FSIntellectualDependency) || "unset"; + V.arcologies[0].FSIntellectualDependencyDecoration = Number(V.arcologies[0].FSIntellectualDependencyDecoration) || 0; + V.arcologies[0].FSIntellectualDependencySMR = Number(V.arcologies[0].FSIntellectualDependencySMR) || 0; + V.arcologies[0].FSIntellectualDependencyLaw = Number(V.arcologies[0].FSIntellectualDependencyLaw) || 0; + V.arcologies[0].FSIntellectualDependencyLawBeauty = Number(V.arcologies[0].FSIntellectualDependencyLawBeauty) || 0; + } + if (V.arcologies[0].FSSlaveProfessionalism !== "unset") { + V.arcologies[0].FSSlaveProfessionalism = Number(V.arcologies[0].FSSlaveProfessionalism) || "unset"; + V.arcologies[0].FSSlaveProfessionalismDecoration = Number(V.arcologies[0].FSSlaveProfessionalismDecoration) || 0; + V.arcologies[0].FSSlaveProfessionalismSMR = Number(V.arcologies[0].FSSlaveProfessionalismSMR) || 0; + V.arcologies[0].FSSlaveProfessionalismLaw = Number(V.arcologies[0].FSSlaveProfessionalismLaw) || 0; + } + if (V.arcologies[0].FSPetiteAdmiration !== "unset") { + V.arcologies[0].FSPetiteAdmiration = Number(V.arcologies[0].FSPetiteAdmiration) || "unset"; + V.arcologies[0].FSPetiteAdmirationDecoration = Number(V.arcologies[0].FSPetiteAdmirationDecoration) || 0; + V.arcologies[0].FSPetiteAdmirationSMR = Number(V.arcologies[0].FSPetiteAdmirationSMR) || 0; + V.arcologies[0].FSPetiteAdmirationLaw = Number(V.arcologies[0].FSPetiteAdmirationLaw) || 0; + V.arcologies[0].FSPetiteAdmirationLaw2 = Number(V.arcologies[0].FSPetiteAdmirationLaw2) || 0; + } + if (V.arcologies[0].FSStatuesqueGlorification !== "unset") { + V.arcologies[0].FSStatuesqueGlorification = Number(V.arcologies[0].FSStatuesqueGlorification) || "unset"; + V.arcologies[0].FSStatuesqueGlorificationDecoration = Number(V.arcologies[0].FSStatuesqueGlorificationDecoration) || 0; + V.arcologies[0].FSStatuesqueGlorificationSMR = Number(V.arcologies[0].FSStatuesqueGlorificationSMR) || 0; + V.arcologies[0].FSStatuesqueGlorificationLaw = Number(V.arcologies[0].FSStatuesqueGlorificationLaw) || 0; + V.arcologies[0].FSStatuesqueGlorificationLaw2 = Number(V.arcologies[0].FSStatuesqueGlorificationLaw2) || 0; + } + if (V.arcologies[0].FSGenderFundamentalist !== "unset") { + V.arcologies[0].FSGenderFundamentalist = Number(V.arcologies[0].FSGenderFundamentalist) || "unset"; + V.arcologies[0].FSGenderFundamentalistDecoration = Number(V.arcologies[0].FSGenderFundamentalistDecoration) || 0; + V.arcologies[0].FSGenderFundamentalistLawBeauty = Number(V.arcologies[0].FSGenderFundamentalistLawBeauty) || 0; + V.arcologies[0].FSGenderFundamentalistLawBimbo = Number(V.arcologies[0].FSGenderFundamentalistLawBimbo) || 0; + V.arcologies[0].FSGenderFundamentalistSMR = Number(V.arcologies[0].FSGenderFundamentalistSMR) || 0; + } + if (V.arcologies[0].FSPaternalist !== "unset") { + V.arcologies[0].FSPaternalist = Number(V.arcologies[0].FSPaternalist) || "unset"; + V.arcologies[0].FSPaternalistDecoration = Number(V.arcologies[0].FSPaternalistDecoration) || 0; + V.arcologies[0].FSPaternalistLaw = Number(V.arcologies[0].FSPaternalistLaw) || 0; + } + if (V.arcologies[0].FSDegradationist !== "unset") { + V.arcologies[0].FSDegradationist = Number(V.arcologies[0].FSDegradationist) || "unset"; + V.arcologies[0].FSDegradationistDecoration = Number(V.arcologies[0].FSDegradationistDecoration) || 0; + V.arcologies[0].FSDegradationistLaw = Number(V.arcologies[0].FSDegradationistLaw) || 0; + } + if (V.arcologies[0].FSBodyPurist !== "unset") { + V.arcologies[0].FSBodyPurist = Number(V.arcologies[0].FSBodyPurist) || "unset"; + V.arcologies[0].FSBodyPuristDecoration = Number(V.arcologies[0].FSBodyPuristDecoration) || 0; + V.arcologies[0].FSBodyPuristLaw = Number(V.arcologies[0].FSBodyPuristLaw) || 0; + } + if (V.arcologies[0].FSTransformationFetishist !== "unset") { + V.arcologies[0].FSTransformationFetishist = Number(V.arcologies[0].FSTransformationFetishist) || "unset"; + V.arcologies[0].FSTransformationFetishistDecoration = Number(V.arcologies[0].FSTransformationFetishistDecoration) || 0; + V.arcologies[0].FSTransformationFetishistSMR = Number(V.arcologies[0].FSTransformationFetishistSMR) || 0; + } + if (V.arcologies[0].FSYouthPreferentialist !== "unset") { + V.arcologies[0].FSYouthPreferentialist = Number(V.arcologies[0].FSYouthPreferentialist) || "unset"; + V.arcologies[0].FSYouthPreferentialistDecoration = Number(V.arcologies[0].FSYouthPreferentialistDecoration) || 0; + V.arcologies[0].FSYouthPreferentialistLaw = Number(V.arcologies[0].FSYouthPreferentialistLaw) || 0; + } + if (V.arcologies[0].FSMaturityPreferentialist !== "unset") { + V.arcologies[0].FSMaturityPreferentialist = Number(V.arcologies[0].FSMaturityPreferentialist) || "unset"; + V.arcologies[0].FSMaturityPreferentialistDecoration = Number(V.arcologies[0].FSMaturityPreferentialistDecoration) || 0; + V.arcologies[0].FSMaturityPreferentialistLaw = Number(V.arcologies[0].FSMaturityPreferentialistLaw) || 0; + } + if (V.arcologies[0].FSSlimnessEnthusiast !== "unset") { + V.arcologies[0].FSSlimnessEnthusiast = Number(V.arcologies[0].FSSlimnessEnthusiast) || "unset"; + V.arcologies[0].FSSlimnessEnthusiastDecoration = Number(V.arcologies[0].FSSlimnessEnthusiastDecoration) || 0; + V.arcologies[0].FSSlimnessEnthusiastSMR = Number(V.arcologies[0].FSSlimnessEnthusiastSMR) || 0; + V.arcologies[0].FSSlimnessEnthusiastLaw = Number(V.arcologies[0].FSSlimnessEnthusiastLaw) || 0; + } + if (V.arcologies[0].FSAssetExpansionist !== "unset") { + V.arcologies[0].FSAssetExpansionist = Number(V.arcologies[0].FSAssetExpansionist) || "unset"; + V.arcologies[0].FSAssetExpansionistDecoration = Number(V.arcologies[0].FSAssetExpansionistDecoration) || 0; + V.arcologies[0].FSAssetExpansionistSMR = Number(V.arcologies[0].FSAssetExpansionistSMR) || 0; + } + if (V.arcologies[0].FSPastoralist !== "unset") { + V.arcologies[0].FSPastoralist = Number(V.arcologies[0].FSPastoralist) || "unset"; + V.arcologies[0].FSPastoralistDecoration = Number(V.arcologies[0].FSPastoralistDecoration) || 0; + V.arcologies[0].FSPastoralistLaw = Number(V.arcologies[0].FSPastoralistLaw) || 0; + } + if (V.arcologies[0].FSPhysicalIdealist !== "unset") { + V.arcologies[0].FSPhysicalIdealist = Number(V.arcologies[0].FSPhysicalIdealist) || "unset"; + V.arcologies[0].FSPhysicalIdealistDecoration = Number(V.arcologies[0].FSPhysicalIdealistDecoration) || 0; + V.arcologies[0].FSPhysicalIdealistLaw = Number(V.arcologies[0].FSPhysicalIdealistLaw) || 0; + V.arcologies[0].FSPhysicalIdealistSMR = Number(V.arcologies[0].FSPhysicalIdealistSMR) || 0; + V.arcologies[0].FSPhysicalIdealistStrongFat = Number(V.arcologies[0].FSPhysicalIdealistStrongFat) || 0; + } + if (V.arcologies[0].FSChattelReligionist !== "unset") { + V.arcologies[0].FSChattelReligionist = Number(V.arcologies[0].FSChattelReligionist) || "unset"; + V.arcologies[0].FSChattelReligionistDecoration = Number(V.arcologies[0].FSChattelReligionistDecoration) || 0; + V.arcologies[0].FSChattelReligionistLaw = Number(V.arcologies[0].FSChattelReligionistLaw) || 0; + V.arcologies[0].FSChattelReligionistCreed = Number(V.arcologies[0].FSChattelReligionistCreed) || 0; + } + if (V.arcologies[0].FSEdoRevivalist !== "unset") { + V.arcologies[0].FSEdoRevivalist = Number(V.arcologies[0].FSEdoRevivalist) || "unset"; + V.arcologies[0].FSEdoRevivalistDecoration = Number(V.arcologies[0].FSEdoRevivalistDecoration) || 0; + V.arcologies[0].FSEdoRevivalistLaw = Number(V.arcologies[0].FSEdoRevivalistLaw) || 0; + } + if (V.arcologies[0].FSRomanRevivalist !== "unset") { + V.arcologies[0].FSRomanRevivalist = Number(V.arcologies[0].FSRomanRevivalist) || "unset"; + V.arcologies[0].FSRomanRevivalistDecoration = Number(V.arcologies[0].FSRomanRevivalistDecoration) || 0; + V.arcologies[0].FSRomanRevivalistLaw = Number(V.arcologies[0].FSRomanRevivalistLaw) || 0; + } + if (V.arcologies[0].FSAztecRevivalist !== "unset") { + V.arcologies[0].FSAztecRevivalist = Number(V.arcologies[0].FSAztecRevivalist) || "unset"; + V.arcologies[0].FSAztecRevivalistDecoration = Number(V.arcologies[0].FSAztecRevivalistDecoration) || 0; + V.arcologies[0].FSAztecRevivalistLaw = Number(V.arcologies[0].FSAztecRevivalistLaw) || 0; + } + if (V.arcologies[0].FSEgyptianRevivalist !== "unset") { + V.arcologies[0].FSEgyptianRevivalist = Number(V.arcologies[0].FSEgyptianRevivalist) || "unset"; + V.arcologies[0].FSEgyptianRevivalistDecoration = Number(V.arcologies[0].FSEgyptianRevivalistDecoration) || 0; + V.arcologies[0].FSEgyptianRevivalistLaw = Number(V.arcologies[0].FSEgyptianRevivalistLaw) || 0; + } + if (V.arcologies[0].FSEdoRevivalist !== "unset") { + V.arcologies[0].FSEdoRevivalist = Number(V.arcologies[0].FSEdoRevivalist) || "unset"; + V.arcologies[0].FSEdoRevivalistDecoration = Number(V.arcologies[0].FSEdoRevivalistDecoration) || 0; + V.arcologies[0].FSEdoRevivalistLaw = Number(V.arcologies[0].FSEdoRevivalistLaw) || 0; + } + if (V.arcologies[0].FSArabianRevivalist !== "unset") { + V.arcologies[0].FSArabianRevivalist = Number(V.arcologies[0].FSArabianRevivalist) || "unset"; + V.arcologies[0].FSArabianRevivalistDecoration = Number(V.arcologies[0].FSArabianRevivalistDecoration) || 0; + V.arcologies[0].FSArabianRevivalistLaw = Number(V.arcologies[0].FSArabianRevivalistLaw) || 0; + } + if (V.arcologies[0].FSChineseRevivalist !== "unset") { + V.arcologies[0].FSChineseRevivalist = Number(V.arcologies[0].FSChineseRevivalist) || "unset"; + V.arcologies[0].FSChineseRevivalistDecoration = Number(V.arcologies[0].FSChineseRevivalistDecoration) || 0; + V.arcologies[0].FSChineseRevivalistLaw = Number(V.arcologies[0].FSChineseRevivalistLaw) || 0; + } + for (let _fscdc = 0; _fscdc < setup.FutureSocieties.length; _fscdc++) { + if (!(V.arcologies[0][setup.FutureSocieties[_fscdc]] > 0)) { + FutureSocieties.remove(setup.FutureSocieties[_fscdc]); + } + } +}; + +App.Update.neighborArcologyCheatDatatypeCleanup = function() { + let _l = V.arcologies.length; + for (let _i = 1; _i < _l; _i++) { + V.arcologies[_i].honeymoon = Number(V.arcologies[_i].honeymoon) || 0; + V.arcologies[_i].prosperity = Number(V.arcologies[_i].prosperity) || 0; + V.arcologies[_i].ownership = Number(V.arcologies[_i].ownership) || 0; + V.arcologies[_i].minority = Number(V.arcologies[_i].minority) || 0; + V.arcologies[_i].PCminority = Number(V.arcologies[_i].PCminority) || 0; + V.arcologies[_i].demandFactor = Number(V.arcologies[_i].demandFactor) || 0; + if (V.arcologies[_i].FSSupremacist !== "unset") { + V.arcologies[_i].FSSupremacist = Number(V.arcologies[_i].FSSupremacist) || "unset"; + } + if (V.arcologies[_i].FSSupremacist !== "unset" && !setup.filterRacesLowercase.includes(V.arcologies[_i].FSSupremacistRace)) { + V.arcologies[_i].FSSupremacistRace = setup.filterRacesLowercase.random(); + } + if (V.arcologies[_i].FSSubjugationist !== "unset") { + V.arcologies[_i].FSSubjugationist = Number(V.arcologies[_i].FSSubjugationist) || "unset"; + } + if (V.arcologies[_i].FSSubjugationist !== "unset" && !setup.filterRacesLowercase.includes(V.arcologies[_i].FSSubjugationistRace)) { + V.arcologies[_i].FSSubjugationistRace = setup.filterRacesLowercase.random(); + } + if (V.arcologies[_i].FSGenderRadicalist !== "unset") { + V.arcologies[_i].FSGenderRadicalist = Number(V.arcologies[_i].FSGenderRadicalist) || "unset"; + V.arcologies[_i].FSGenderFundamentalist = "unset"; + } + if (V.arcologies[_i].FSGenderFundamentalist !== "unset") { + V.arcologies[_i].FSGenderFundamentalist = Number(V.arcologies[_i].FSGenderFundamentalist) || "unset"; + V.arcologies[_i].FSGenderRadicalist = "unset"; + } + if (V.arcologies[_i].FSPaternalist !== "unset") { + V.arcologies[_i].FSPaternalist = Number(V.arcologies[_i].FSPaternalist) || "unset"; + V.arcologies[_i].FSDegradationist = "unset"; + } + if (V.arcologies[_i].FSDegradationist !== "unset") { + V.arcologies[_i].FSDegradationist = Number(V.arcologies[_i].FSDegradationist) || "unset"; + V.arcologies[_i].FSPaternalist = "unset"; + } + if (V.arcologies[_i].FSBodyPurist !== "unset") { + V.arcologies[_i].FSBodyPurist = Number(V.arcologies[_i].FSBodyPurist) || "unset"; + V.arcologies[_i].FSTransformationFetishist = "unset"; + } + if (V.arcologies[_i].FSTransformationFetishist !== "unset") { + V.arcologies[_i].FSTransformationFetishist = Number(V.arcologies[_i].FSTransformationFetishist) || "unset"; + V.arcologies[_i].FSBodyPurist = "unset"; + } + if (V.arcologies[_i].FSYouthPreferentialist !== "unset") { + V.arcologies[_i].FSYouthPreferentialist = Number(V.arcologies[_i].FSYouthPreferentialist) || "unset"; + V.arcologies[_i].FSMaturityPreferentialist = "unset"; + } + if (V.arcologies[_i].FSMaturityPreferentialist !== "unset") { + V.arcologies[_i].FSMaturityPreferentialist = Number(V.arcologies[_i].FSMaturityPreferentialist) || "unset"; + V.arcologies[_i].FSYouthPreferentialist = "unset"; + } + if (V.arcologies[_i].FSSlimnessEnthusiast !== "unset") { + V.arcologies[_i].FSSlimnessEnthusiast = Number(V.arcologies[_i].FSSlimnessEnthusiast) || "unset"; + V.arcologies[_i].FSAssetExpansionist = "unset"; + } + if (V.arcologies[_i].FSAssetExpansionist !== "unset") { + V.arcologies[_i].FSAssetExpansionist = Number(V.arcologies[_i].FSAssetExpansionist) || "unset"; + V.arcologies[_i].FSSlimnessEnthusiast = "unset"; + } + if (V.arcologies[_i].FSPastoralist !== "unset") { + V.arcologies[_i].FSPastoralist = Number(V.arcologies[_i].FSPastoralist) || "unset"; + } + if (V.arcologies[_i].FSPhysicalIdealist !== "unset") { + V.arcologies[_i].FSPhysicalIdealist = Number(V.arcologies[_i].FSPhysicalIdealist) || "unset"; + V.arcologies[_i].FSHedonisticDecadence = "unset"; + } + if (V.arcologies[_i].FSHedonisticDecadence !== "unset") { + V.arcologies[_i].FSHedonisticDecadence = Number(V.arcologies[_i].FSHedonisticDecadence) || "unset"; + V.arcologies[_i].FSPhysicalIdealist = "unset"; + } + if (V.arcologies[_i].FSChattelReligionist !== "unset") { + V.arcologies[_i].FSChattelReligionist = Number(V.arcologies[_i].FSChattelReligionist) || "unset"; + } + if (V.arcologies[_i].FSRomanRevivalist !== "unset") { + V.arcologies[_i].FSRomanRevivalist = Number(V.arcologies[_i].FSRomanRevivalist) || "unset"; + V.arcologies[_i].FSArabianRevivalist = V.arcologies[_i].FSAztecRevivalist = V.arcologies[_i].FSChineseRevivalist = V.arcologies[_i].FSEdoRevivalist = V.arcologies[_i].FSEgyptianRevivalist = "unset"; + } + if (V.arcologies[_i].FSAztecRevivalist !== "unset") { + V.arcologies[_i].FSAztecRevivalist = Number(V.arcologies[_i].FSAztecRevivalist) || "unset"; + V.arcologies[_i].FSArabianRevivalist = V.arcologies[_i].FSChineseRevivalist = V.arcologies[_i].FSEdoRevivalist = V.arcologies[_i].FSEgyptianRevivalist = V.arcologies[_i].FSRomanRevivalist = "unset"; + } + if (V.arcologies[_i].FSEgyptianRevivalist !== "unset") { + V.arcologies[_i].FSEgyptianRevivalist = Number(V.arcologies[_i].FSEgyptianRevivalist) || "unset"; + V.arcologies[_i].FSArabianRevivalist = V.arcologies[_i].FSAztecRevivalist = V.arcologies[_i].FSChineseRevivalist = V.arcologies[_i].FSEdoRevivalist = V.arcologies[_i].FSRomanRevivalist = "unset"; + } + if (V.arcologies[_i].FSEdoRevivalist !== "unset") { + V.arcologies[_i].FSEdoRevivalist = Number(V.arcologies[_i].FSEdoRevivalist) || "unset"; + V.arcologies[_i].FSArabianRevivalist = V.arcologies[_i].FSAztecRevivalist = V.arcologies[_i].FSChineseRevivalist = V.arcologies[_i].FSEgyptianRevivalist = V.arcologies[_i].FSRomanRevivalist = "unset"; + } + if (V.arcologies[_i].FSArabianRevivalist !== "unset") { + V.arcologies[_i].FSArabianRevivalist = Number(V.arcologies[_i].FSArabianRevivalist) || "unset"; + V.arcologies[_i].FSAztecRevivalist = V.arcologies[_i].FSChineseRevivalist = V.arcologies[_i].FSEdoRevivalist = V.arcologies[_i].FSEgyptianRevivalist = V.arcologies[_i].FSRomanRevivalist = "unset"; + } + if (V.arcologies[_i].FSChineseRevivalist !== "unset") { + V.arcologies[_i].FSChineseRevivalist = Number(V.arcologies[_i].FSChineseRevivalist) || "unset"; + V.arcologies[_i].FSArabianRevivalist = V.arcologies[_i].FSAztecRevivalist = V.arcologies[_i].FSEdoRevivalist = V.arcologies[_i].FSEgyptianRevivalist = V.arcologies[_i].FSRomanRevivalist = "unset"; + } + if (V.arcologies[_i].FSNull !== "unset") { + V.arcologies[_i].FSNull = Number(V.arcologies[_i].FSNull) || "unset"; + } + if (V.arcologies[_i].FSRepopulationFocus !== "unset") { + V.arcologies[_i].FSRepopulationFocus = Number(V.arcologies[_i].FSRepopulationFocus) || "unset"; + V.arcologies[_i].FSRestart = "unset"; + } + if (V.arcologies[_i].FSRestart !== "unset") { + V.arcologies[_i].FSRestart = Number(V.arcologies[_i].FSRestart) || "unset"; + V.arcologies[_i].FSRepopulationFocus = "unset"; + } + if (V.arcologies[_i].FSIntellectualDependency !== "unset") { + V.arcologies[_i].FSIntellectualDependency = Number(V.arcologies[_i].FSIntellectualDependency) || "unset"; + V.arcologies[_i].FSSlaveProfessionalism = "unset"; + } + if (V.arcologies[_i].FSSlaveProfessionalism !== "unset") { + V.arcologies[_i].FSSlaveProfessionalism = Number(V.arcologies[_i].FSSlaveProfessionalism) || "unset"; + V.arcologies[_i].FSIntellectualDependency = "unset"; + } + if (V.arcologies[_i].FSPetiteAdmiration !== "unset") { + V.arcologies[_i].FSPetiteAdmiration = Number(V.arcologies[_i].FSPetiteAdmiration) || "unset"; + V.arcologies[_i].FSStatuesqueGlorification = "unset"; + } + if (V.arcologies[_i].FSStatuesqueGlorification !== "unset") { + V.arcologies[_i].FSStatuesqueGlorification = Number(V.arcologies[_i].FSStatuesqueGlorification) || "unset"; + V.arcologies[_i].FSPetiteAdmiration = "unset"; + } + if (V.arcologies[_i].FSCummunism !== "unset") { + V.arcologies[_i].FSCummunism = Number(V.arcologies[_i].FSCummunism) || "unset"; + } + if (V.arcologies[_i].FSIncestFetishist !== "unset") { + V.arcologies[_i].FSIncestFetishist = Number(V.arcologies[_i].FSIncestFetishist) || "unset"; + } + V.arcologies[_i].embargo = Number(V.arcologies[_i].embargo) || 0; + V.arcologies[_i].embargoTarget = Number(V.arcologies[_i].embargoTarget) || 0; + V.arcologies[_i].CyberEconomic = Number(V.arcologies[_i].CyberEconomic) || 0; + V.arcologies[_i].CyberEconomicTarget = Number(V.arcologies[_i].CyberEconomicTarget) || 0; + V.arcologies[_i].CyberReputation = Number(V.arcologies[_i].CyberReputation) || 0; + V.arcologies[_i].CyberReputationTarget = Number(V.arcologies[_i].CyberReputationTarget) || 0; + V.arcologies[_i].influenceTarget = Number(V.arcologies[_i].influenceTarget) || 0; + V.arcologies[_i].influenceBonus = Number(V.arcologies[_i].influenceBonus) || 0; + V.arcologies[_i].rival = Number(V.arcologies[_i].rival) || 0; + } +}; diff --git a/src/data/backwardsCompatibility/generalBC.js b/src/data/backwardsCompatibility/generalBC.js deleted file mode 100644 index 654ef4d55de2db7ee83171e1ce600851e1ed22c6..0000000000000000000000000000000000000000 --- a/src/data/backwardsCompatibility/generalBC.js +++ /dev/null @@ -1,63 +0,0 @@ -App.Update.sectorsToBuilding = function() { - V.building = new App.Arcology.Building([]); - const B = V.building; - const S = V.sectors; - - B.sections.push(new App.Arcology.Section("penthouse", [[new App.Arcology.Cell.Penthouse()]])); - if (V.arcologyUpgrade.spire === 1) { - B.sections.push(new App.Arcology.Section("spire", [[ - sectorToApartment(S[1]), sectorToApartment(S[2])], [ - sectorToApartment(S[3]), sectorToApartment(S[4])]])); - } - B.sections.push(new App.Arcology.Section("apartments", - [ - [sectorToApartment(S[8]), sectorToApartment(S[9]), sectorToApartment(S[10]), sectorToApartment(S[11])], - [sectorToApartment(S[12]), sectorToApartment(S[13]), sectorToApartment(S[14]), sectorToApartment(S[15])], - [sectorToApartment(S[16]), sectorToApartment(S[17]), sectorToApartment(S[18]), sectorToApartment(S[19])], - ])); - - function sectorToApartment(sector) { - const a = new App.Arcology.Cell.Apartment(sector.ownership); - if (sector.type === "LuxuryApartments") { - a.type = 1; - } else if (sector.type === "DenseApartments") { - a.type = 3; - } - return a; - } - - B.sections.push(new App.Arcology.Section("shops", [[sectorToShop(S[5]), sectorToShop(S[6]), sectorToShop(S[7])]])); - - function sectorToShop(sector) { - return new App.Arcology.Cell.Shop(sector.ownership, sector.type); - } - - B.sections.push(new App.Arcology.Section("markets", - [[sectorToMarket(S[20]), sectorToMarket(S[21]), sectorToMarket(S[22]), sectorToMarket(S[23]), sectorToMarket(S[24])]])); - - function sectorToMarket(sector) { - const m = new App.Arcology.Cell.Market(sector.ownership); - if (sector.type === "transportHub") { - m.type = "Transport Hub"; - } else if (sector.type === "CorporateMarket") { - m.type = "Corporate Market"; - } else { - m.type = sector.type; - } - return m; - } - - B.sections.push(new App.Arcology.Section("manufacturing", - [[sectorToManu(S[25]), sectorToManu(S[26]), sectorToManu(S[27]), sectorToManu(S[28]), sectorToManu(S[29])]])); - - function sectorToManu(sector) { - const m = new App.Arcology.Cell.Manufacturing(sector.ownership); - if (sector.type === "weapManu") { - m.type = "Weapon Manufacturing"; - } else { - m.type = sector.type; - } - return m; - } - -}; diff --git a/src/descriptions/arcologyDescription.js b/src/descriptions/arcologyDescription.js index 9aea9f61a537bdf7c2fa5ab9dcf1eb1f4363eff6..f25075e068ed659282904d9fb6d8abd39322d4a1 100644 --- a/src/descriptions/arcologyDescription.js +++ b/src/descriptions/arcologyDescription.js @@ -12,8 +12,8 @@ App.Desc.playerArcology = function(lastElement) { function location() { const fragment = document.createDocumentFragment(); - fragment.append(App.UI.DOM.makeElement("span", A.name, "arcology-name"), - ` your arcology, is located in a Free City in ${V.terrain === "oceanic" ? "the middle of the ocean" : V.continent}. It is a huge structure whose${V.arcologyUpgrade.apron === 1 ? " solar-paneled" : ""} skin gleams in the sunshine${V.arcologyUpgrade.hydro === 1 ? ", while verdant exterior hydroponics bays lend it an air of growth" : ""}. `); + fragment.append(App.UI.DOM.makeElement("span", A.name, "name"), + `, your arcology, is located in a Free City in ${V.terrain === "oceanic" ? "the middle of the ocean" : V.continent}. It is a huge structure whose${V.arcologyUpgrade.apron === 1 ? " solar-paneled" : ""} skin gleams in the sunshine${V.arcologyUpgrade.hydro === 1 ? ", while verdant exterior hydroponics bays lend it an air of growth" : ""}. `); let buffer = []; if (V.weatherCladding === 1) { diff --git a/src/events/intro/initNationalities.tw b/src/events/intro/initNationalities.tw index 7d84f8f64086b582298b1a6240d26f527b932d7b..c74149433bdc9e4157d036b498b56f4e262707fe 100644 --- a/src/events/intro/initNationalities.tw +++ b/src/events/intro/initNationalities.tw @@ -1,7 +1,82 @@ :: init Nationalities [silently] <<if $secExpEnabled > 0>> - <<include "secInit">> + /* base vars */ + <<set $SecExp = SecExpBase()>> + <<= App.SecExp.Check.general()>> + <<set $secExp = SecExpBase()>> + <<set $secUpgrades = { + nanoCams: 0, + cyberBots: 0, + eyeScan: 0, + cryptoAnalyzer: 0, + coldstorage: 0}>> + <<set $crimeUpgrades = { + autoTrial: 0, + autoArchive: 0, + worldProfiler: 0, + advForensic: 0}>> + <<set $intelUpgrades = { + sensors: 0, + radar: 0, + signalIntercept: 0}>> + <<set $readinessUpgrades = { + earlyWarn: 0, + rapidPlatforms: 0, + pathways: 0, + rapidVehicles: 0}>> + <<set $riotCenter = 0>> + <<set $riotUpgrades = { + freeMedia: 0, + rapidUnit: 0, + rapidUnitSpeed: 0}>> + <<set $fort = { + reactor: 0, + waterway: 0, + assistant:0}>> + <<set $currentUpgrade = { + name: " ", + unit: 0, + type: 0, + time: 0}>> + <<set $droneUpgrades = { + attack: 0, + defense: 0, + hp:0}>> + <<set $humanUpgrade = { + attack: 0, + defense: 0, + hp:0, + morale: 0}>> + <<set $sellTo = { + citizen: 1, + raiders: 1, + oldWorld: 1, + FC: 1}>> + <<set $garrison = { + penthouse: 0, + reactor: 0, + assistant: 0, + waterway: 0, + reactorTime: 0, + assistantTime: 0, + waterwayTime: 0 }>> + <<if $wasToggledBefore == 0>> + <<if $mercenaries == 1>> + <<set $mercFreeManpower = random(5,20)>> + <<elseif $mercenaries > 1>> + <<set $mercFreeManpower = random(10,30)>> + <</if>> + <</if>> + + /* battle relevant variables */ + <<set $secBots = { + active: 0, + ID: -1, + isDeployed: 0, + troops: 0, + maxTroops: 0, + equip: 0} >> <</if>> <<set $minimumSlaveAge = variableAsNumber($minimumSlaveAge, 3, 18, 18)>> @@ -73,9 +148,6 @@ <<set $minimumSlaveCost = 3000>> <<set $enduringRep = $rep>> -<<set $arcologies = []>> -<<set $leaders = []>> - <<set _seed = ["east", "north", "northeast", "northwest", "south", "southeast", "southwest", "west"]>> <<set _govtypes = ["a committee", "a corporation", "an individual", "an oligarchy", "direct democracy", "elected officials"]>> @@ -841,7 +913,7 @@ <<include "DF Slaves Database">> <</if>> <<include "custom Slaves Database">> -<<HeroSlavesCleanup>> +<<= App.Update.HeroSlavesCleanup()>> <<set $activeSlave = 0>> <<set $activeChild = 0>> diff --git a/src/gui/Encyclopedia/encyclopedia.css b/src/gui/Encyclopedia/encyclopedia.css new file mode 100644 index 0000000000000000000000000000000000000000..9cd84398b514dfad886a5eef12650c5f4a6fc474 --- /dev/null +++ b/src/gui/Encyclopedia/encyclopedia.css @@ -0,0 +1,3 @@ +.encyclopedia.topic { + font-weight: bold; +} diff --git a/src/gui/Encyclopedia/encyclopedia.tw b/src/gui/Encyclopedia/encyclopedia.tw index 2761cbe3e19b0ff8ad7a7eca8738653fac8f429d..37deb257ed0749ab4255f99a304521a631f5d60b 100644 --- a/src/gui/Encyclopedia/encyclopedia.tw +++ b/src/gui/Encyclopedia/encyclopedia.tw @@ -779,17 +779,17 @@ SLAVE ASSIGNMENTS: <<case "Head Girl">> - //Most Free Cities slaveowners eventually find it convenient to promote a @@.mediumaquamarine;[[trusted|Encyclopedia][$encyclopedia = "Trust"]]@@y slave to a position over others. The stable of slaves necessary to present a proper public image has become so large that assistance managing and overseeing slaves is quite useful. In addition, such a slave can be an example to lesser livestock. + //Most Free Cities slaveowners eventually find it convenient to promote a @@.mediumaquamarine;[[trusting|Encyclopedia][$encyclopedia = "Trust"]]@@ slave to a position over others. The stable of slaves necessary to present a proper public image has become so large that assistance managing and overseeing slaves is quite useful. In addition, such a slave can be an example to lesser livestock. - <br><br>A good Head Girl will be @@.hotpink;[[devotion|Encyclopedia][$encyclopedia = "From Rebellious to Devoted"]]@@ to her master and sexually skilled. Experienced slaveowners have also found that an older slave girl is often more effective than a young one. Since slavery is new, older slave girls will have spent part of their adult lives as free women, and have a deeper body of life experience to draw on. + <br><br>A good Head Girl will be @@.hotpink;[[devoted|Encyclopedia][$encyclopedia = "From Rebellious to Devoted"]]@@ to her master and sexually skilled. Experienced slaveowners have also found that an older slave girl is often more effective than a young one. Since slavery is new, older slave girls will have spent part of their adult lives as free women, and have a deeper body of life experience to draw on. <br><br>Naturally, some slaveowners form a strong emotional bond with their Head Girl. @@.mediumaquamarine;[[Trusting|Encyclopedia][$encyclopedia = "Trust"]]@@ and relying on a close companion can begin to resemble old world relationships. It is a paradox of modern Free Cities life that such closeness is strongly frowned upon. Rumors that a prominent person is emotionally involved with his or her Head Girl can be as socially devastating as rumors of infidelity were a hundred years ago. <br><br>— Lawrence, W. G., //Guide to Modern Slavery, 2037 Edition//// - <br><br>A ''Head Girl'' can be selected from among your @@.hotpink;[[devotion|Encyclopedia][$encyclopedia = "From Rebellious to Devoted"]]@@ slaves immediately. Duties are numerous, but mostly involve training slaves. They will generally train whichever girls they think appropriate, but can be given some direction on the same menu used to select one. Giving your [[Head Girl a suite|Encyclopedia][$encyclopedia = "Head Girl Suite"]] and a personal slave will allow her to train an extra slave each week, an extremely powerful ability. + <br><br>A ''Head Girl'' can be selected from among your @@.hotpink;[[devoted|Encyclopedia][$encyclopedia = "From Rebellious to Devoted"]]@@ slaves immediately. Duties are numerous, but mostly involve training slaves. They will generally train whichever girls they think appropriate, but can be given some direction on the same menu used to select one. Giving your [[Head Girl a suite|Encyclopedia][$encyclopedia = "Head Girl Suite"]] and a personal slave will allow her to train an extra slave each week, an extremely powerful ability. - @@.hotpink;[[devotion|Encyclopedia][$encyclopedia = "From Rebellious to Devoted"]],@@ @@.cyan;intelligence,@@ and age over 35 all help Head Girls do well. Head Girls will do better if they are comfortable with the arcology's [[lingua franca|Encyclopedia][$encyclopedia = "Lingua Franca"]]. Skills are required when teaching that skill, meaning that slaves without vaginas cannot teach vaginal skills. Conversely, slaves with functional dicks are better at teaching other sexual skills. Also having max sex skills, dom as their fetish and being your wife provide more boosts. + @@.hotpink;[[Devotion|Encyclopedia][$encyclopedia = "From Rebellious to Devoted"]],@@ @@.cyan;intelligence,@@ and age over 35 all help Head Girls do well. Head Girls will do better if they are comfortable with the arcology's [[lingua franca|Encyclopedia][$encyclopedia = "Lingua Franca"]]. Skills are required when teaching that skill, meaning that slaves without vaginas cannot teach vaginal skills. Conversely, slaves with functional dicks are better at teaching other sexual skills. Also having max sex skills, dom as their fetish and being your wife provide more boosts. <<case "Madam">> @@ -836,12 +836,12 @@ SLAVE ASSIGNMENTS: <<case "Recruiter">> - A ''recruiter'' can be selected from among your @@.hotpink;[[devotion|Encyclopedia][$encyclopedia = "From Rebellious to Devoted"]]@@ slaves immediately. @@.cyan;intelligence,@@ entertainment skills, and luxurious living standards help a recruiter convince vulnerable people to submit to voluntary enslavement. Each targetable group is also more sympathetic to an appropriate recruiter: - <br> <br> <br> <br> Desperate whores: a sexually veteran recruiter - <br> <br> <br> <br> Expectant mothers: a visibly pregnant recruiter - <br> <br> <br> <br> Young migrants: a [[healthy|Encyclopedia][$encyclopedia = "Health"]] and pretty recruiter - <br> <br> <br> <br> Dissolute sissies: a recruiter with a working dick - <br> <br> <br> <br> Reassignment candidates: a pretty recruiter without working female reproductive organs + A ''Recruiter'' can be selected from among your @@.hotpink;[[devoted|Encyclopedia][$encyclopedia = "From Rebellious to Devoted"]]@@ slaves immediately. @@.cyan;Intelligence,@@ entertainment skills, and luxurious living standards help a recruiter convince vulnerable people to submit to voluntary enslavement. Each targetable group is also more sympathetic to an appropriate recruiter: + <br> Desperate whores: a sexually veteran recruiter + <br> Expectant mothers: a visibly pregnant recruiter + <br> Young migrants: a [[healthy|Encyclopedia][$encyclopedia = "Health"]] and pretty recruiter + <br> Dissolute sissies: a recruiter with a working dick + <br> Reassignment candidates: a pretty recruiter without working female reproductive organs <br><br>Once your household reaches a significant number of slaves you may direct the Recruiter to do publicity instead of acquisitions, for a boost to @@.green;[[reputation|Encyclopedia][$encyclopedia = "Arcologies and Reputation"]]@@ and possibly advancing [[future societies|Encyclopedia][$encyclopedia = "Future Societies"]]. Activating this ability does not influence any other means of obtaining new slaves. (Note that "Facilities & leadership" includes the Recruiter herself and a slot for Head Girl, two positions that do not require a facility.) @@ -867,56 +867,56 @@ SLAVE ASSIGNMENTS: SLAVE ASSIGNMENTS (COMMON): **********/ <<case "Attending Classes">> - <<encyclopediaEntryAttendingClasses>> + <<print App.UI.DOM.includeDOM(App.Encyclopedia.Entries.attendingClasses(), "encyclasses")>> //Associated facility: [[Schoolroom|Encyclopedia][$encyclopedia = "Schoolroom"]]// <<case "Confinement">> - <<encyclopediaEntryConfinement>> + <<print App.UI.DOM.includeDOM(App.Encyclopedia.Entries.confinement(), "encyconfine")>> //Associated facility: [[Cellblock|Encyclopedia][$encyclopedia = "Cellblock"]]// <<case "Fucktoy">> - <<encyclopediaEntryFucktoy>> + <<print App.UI.DOM.includeDOM(App.Encyclopedia.Entries.fucktoy(), "encyfucktoy")>> //Associated facility: [[Master Suite|Encyclopedia][$encyclopedia = "Master Suite"]]// <<case "Glory Hole">> - <<encyclopediaEntryGloryHole>> + <<print App.UI.DOM.includeDOM(App.Encyclopedia.Entries.gloryHole(), "encyglory")>> //Associated facility: [[Arcade|Encyclopedia][$encyclopedia = "Arcade"]]// <<case "Milking">> - <<encyclopediaEntryMilking>> + <<print App.UI.DOM.includeDOM(App.Encyclopedia.Entries.milking(), "encymilk")>> //Associated facility: [[Dairy|Encyclopedia][$encyclopedia = "Dairy"]]// <<case "Farming">> - <<encyclopediaEntryFarming>> + <<print App.UI.DOM.includeDOM(App.Encyclopedia.Entries.farming(), "encyfarm")>> //Associated facility: [[Farmyard|Encyclopedia][$encyclopedia = "Farmyard"]]// <<case "Public Service">> - <<encyclopediaEntryPublicService>> + <<print App.UI.DOM.includeDOM(App.Encyclopedia.Entries.publicService(), "encypublic")>> //Associated facility: [[Club|Encyclopedia][$encyclopedia = "Club"]]// <<case "Rest">> - <<encyclopediaEntryRest>> + <<print App.UI.DOM.includeDOM(App.Encyclopedia.Entries.rest(), "encyrest")>> //Associated facilities: [[Spa|Encyclopedia][$encyclopedia = "Spa"]], [[Clinic|Encyclopedia][$encyclopedia = "Clinic"]]// <<case "Sexual Servitude">> - <<encyclopediaEntrySexualServitude>> + <<print App.UI.DOM.includeDOM(App.Encyclopedia.Entries.sexualServitude(), "encysexServ")>> <<case "Servitude">> - <<encyclopediaEntryServitude>> + <<print App.UI.DOM.includeDOM(App.Encyclopedia.Entries.servitude(), "encyserve")>> //Associated facility: [[Servants' Quarters|Encyclopedia][$encyclopedia = "Servants' Quarters"]]// <<case "Whoring">> - <<encyclopediaEntryWhoring>> + <<print App.UI.DOM.includeDOM(App.Encyclopedia.Entries.whoring(), "encywhore")>> //Associated facility: [[Brothel|Encyclopedia][$encyclopedia = "Brothel"]]// /********** diff --git a/src/gui/Encyclopedia/encyclopediaEntries.js b/src/gui/Encyclopedia/encyclopediaEntries.js new file mode 100644 index 0000000000000000000000000000000000000000..d001c999475654e7b3b2f0812d0499db8dee2b09 --- /dev/null +++ b/src/gui/Encyclopedia/encyclopediaEntries.js @@ -0,0 +1,96 @@ +/* TODO: add entries for Nursery */ + +App.Encyclopedia.Entries = (function() { + /** + * @param {string} topic + * @returns {HTMLElement} + */ + function topic(topic) { + return App.UI.DOM.makeElement("span", topic, ["encyclopedia", "topic"]); + } + + /** + * @param {string} linkText + * @param {string} topic + * @returns {HTMLElement} + */ + function encyLink(linkText, topic) { + return App.UI.DOM.passageLink(linkText, "Encyclopedia", () => { + V.encyclopedia = topic; + if (passage() !== "Encyclopedia") { + V.nextButton = "Back"; + V.nextLink = "Main"; + } + }); + } + + const entries = {}; + + entries.attendingClasses = () => + App.UI.DOM.combineNodes(topic("Attending classes"), + " is an assignment which educates the slave, raising intelligence if possible. Being educated raises value and is useful for some jobs and leadership positions."); + + entries.confinement = () => + App.UI.DOM.combineNodes(topic("Confinement"), + " is an assignment which accelerates breaking for disobedient slaves. If a slave isn't obedient enough to work and isn't ", + encyLink("unhealthy", "Health"), " enough to need rest, this will make them useful sooner."); + + entries.fucktoy = () => + App.UI.DOM.combineNodes(topic("Fucktoy service"), + " is an assignment which keeps the slave close and under the player's eye. It's mostly just for fun, but fucktoys can improve reputation based on their beauty, and the player character's attention can be targeted to areas of the slave's body with possible fetish effects on happy slaves."); + + entries.gloryHole = () => + App.UI.DOM.combineNodes(topic("Occupying a glory hole"), + " is an assignment which makes money off of slaves regardless of their beauty, skills, or feelings; it's not fun or ", + encyLink("healthy", "Health"), " but very powerful for extracting ¤ out of otherwise useless slaves."); + + entries.milking = () => { + const fragment = document.createDocumentFragment(); + + fragment.append(topic("Getting milked"), + " is an assignment which makes money from lactation based on a slave's breasts, ", encyLink("health", "Health"), + " and hormonal status."); + if (V.seeDicks > 0) { + fragment.append(" Cows with balls will also give semen."); + } + fragment.append(` Creates profit quickly from slaves with big tits${V.seeDicks ? " or balls" : ""}.`); + + return fragment; + }; + + entries.farming = function() { + const fragment = document.createDocumentFragment(); + fragment.append(topic("Farming"), " is an assignment which produces ", encyLink("food", "Food"), + " from your slaves' hard work"); + if (V.seeBestiality === 1) { + fragment.append(" and allows you to breed slaves with animals"); + } + fragment.append(". Can also reduce arcology upkeep with upgrades in the ", + encyLink("Farmyard", "Farmyard")); + return fragment; + }; + + entries.publicService = () => + App.UI.DOM.combineNodes(topic("Public Service"), + " is an assignment which increases reputation based on a slave's beauty, sexual appeal, and skills. Very similar to whoring, but for reputation rather than money."); + + entries.rest = () => + App.UI.DOM.combineNodes(topic("Rest"), " is an assignment mostly used to improve ", encyLink("health", "Health"), + ". It can be useful to order slaves you wish to intensively modify to rest, since most modifications damage health. It will synergize with curative treatments, providing bonus healing when both are simultaneously applied."); + + + entries.sexualServitude = () => + App.UI.DOM.combineNodes(topic("Sexual servitude"), + " is an assignment which pleases other slaves by forcing the slave to service them sexually. Useful for driving the targeted slave's ", + encyLink("devotion", "Devotion"), "up quickly."); + + entries.servitude = () => + App.UI.DOM.combineNodes(topic("Servitude"), " is an assignment which reduces your upkeep based on the slave's ", + encyLink("devotion", "Devotion"), + " Available at lower obedience than other jobs, is insensitive to the quality of a slave's body, and doesn't require skills; a good transitional assignment. Unusually, low sex drive is advantageous as a servant, since it reduces distraction. Lactating slaves are slightly better at this job, since they can contribute to their fellow slaves' nutrition."); + + entries.whoring = () => + App.UI.DOM.combineNodes(topic("Whoring"), " is an assignment which makes money based on a slave's beauty, sexual appeal, and skills. Good whores take a long time to train and beautify but become very profitable."); + + return entries; +})(); diff --git a/src/gui/Encyclopedia/encyclopediaWidgets.tw b/src/gui/Encyclopedia/encyclopediaWidgets.tw deleted file mode 100644 index e8e0bca00256ac1afdb7bf7e4af1038f2784fa89..0000000000000000000000000000000000000000 --- a/src/gui/Encyclopedia/encyclopediaWidgets.tw +++ /dev/null @@ -1,94 +0,0 @@ -:: Encyclopedia Widgets [nobr widget] - -/* TODO: add entries for Nursery */ - -<<widget "encyclopediaEntryAttendingClasses">> -''Attending classes'' is an assignment which educates the slave, raising intelligence if possible. Being educated raises value and is useful for some jobs and leadership positions. -<</widget>> - -<<widget "encyclopediaEntryConfinement">> -''Confinement'' is an assignment which accelerates breaking for disobedient slaves. If a slave isn't obedient enough to work and isn't -<<if passage() == "Encyclopedia">> - [[unhealthy|Encyclopedia][$encyclopedia = "Health"]] -<<else>> - [[unhealthy|Encyclopedia][$encyclopedia = "Health",$nextButton = "Back",$nextLink = "Main"]] -<</if>> -enough to need rest, this will make them useful sooner. -<</widget>> - -<<widget "encyclopediaEntryFucktoy">> -''Fucktoy service'' is an assignment which keeps the slave close and under the player's eye. It's mostly just for fun, but fucktoys can improve reputation based on their beauty, and the player character's attention can be targeted to areas of the slave's body with possible fetish effects on happy slaves. -<</widget>> - -<<widget "encyclopediaEntryGloryHole">> -''Occupying a glory hole'' is an assignment which makes money off of slaves regardless of their beauty, skills, or feelings; it's not fun or -<<if passage() == "Encyclopedia">> - [[healthy|Encyclopedia][$encyclopedia = "Health"]], -<<else>> - [[healthy|Encyclopedia][$encyclopedia = "Health",$nextButton = "Back",$nextLink = "Main"]], -<</if>> -but very powerful for extracting ¤ out of otherwise useless slaves. -<</widget>> - -<<widget "encyclopediaEntryMilking">> -''Getting milked'' is an assignment which makes money from lactation based on a slave's breasts, -<<if passage() == "Encyclopedia">> - [[health|Encyclopedia][$encyclopedia = "Health"]], -<<else>> - [[health|Encyclopedia][$encyclopedia = "Health",$nextButton = "Back",$nextLink = "Main"]], -<</if>> -and hormonal status.<<if $seeDicks > 0>> Cows with balls will also give semen.<</if>> Creates profit quickly from slaves with big tits<<if $seeDicks > 0>> or balls<</if>>. -<</widget>> - -<<widget "encyclopediaEntryFarming">> -''Farming'' is an assignment which produces -<<if passage() == "Encyclopedia">> - [[food|Encyclopedia][$encyclopedia = "Food"]] -<<else>> - [[food|Encyclopedia][$encyclopedia = "Food",$nextButton = "Back",$nextLink = "Main"]] -<</if>> -from your slaves' hard work<<if $seeBestiality == 1>> and allows you to breed slaves with animals<</if>>. Can also reduce arcology upkeep with upgrades in the -<<if passage() == "Encyclopedia">> - [[Farmyard|Encyclopedia][$encyclopedia = "Farmyard"]]. -<<else>> - [[Farmyard|Encyclopedia][$encyclopedia = "Farmyard",$nextButton = "Back",$nextLink = "Main"]]. -<</if>> -<</widget>> - -<<widget "encyclopediaEntryPublicService">> -''Public Service'' is an assignment which increases reputation based on a slave's beauty, sexual appeal, and skills. Very similar to whoring, but for reputation rather than money. -<</widget>> - -<<widget "encyclopediaEntryRest">> -''Rest'' is an assignment mostly used to improve -<<if passage() == "Encyclopedia">> - [[health|Encyclopedia][$encyclopedia = "Health"]]. -<<else>> - [[health|Encyclopedia][$encyclopedia = "Health",$nextButton = "Back",$nextLink = "Main"]]. -<</if>> -It can be useful to order slaves you wish to intensively modify to rest, since most modifications damage health. It will synergize with curative treatments, providing bonus healing when both are simultaneously applied. -<</widget>> - -<<widget "encyclopediaEntrySexualServitude">> -''Sexual servitude'' is an assignment which pleases other slaves by forcing the slave to service them sexually. Useful for driving the targeted slave's -<<if passage() == "Encyclopedia">> - [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] -<<else>> - [[devotion|Encyclopedia][$encyclopedia = "Devotion",$nextButton = "Back",$nextLink = "Main"]] -<</if>> -up quickly. -<</widget>> - -<<widget "encyclopediaEntryServitude">> -''Servitude'' is an assignment which reduces your upkeep based on the slave's -<<if passage() == "Encyclopedia">> - [[devotion|Encyclopedia][$encyclopedia = "Devotion"]]. -<<else>> - [[devotion|Encyclopedia][$encyclopedia = "Devotion",$nextButton = "Back",$nextLink = "Main"]]. -<</if>> -Available at lower obedience than other jobs, is insensitive to the quality of a slave's body, and doesn't require skills; a good transitional assignment. Unusually, low sex drive is advantageous as a servant, since it reduces distraction. Lactating slaves are slightly better at this job, since they can contribute to their fellow slaves' nutrition. -<</widget>> - -<<widget "encyclopediaEntryWhoring">> -''Whoring'' is an assignment which makes money based on a slave's beauty, sexual appeal, and skills. Good whores take a long time to train and beautify but become very profitable. -<</widget>> \ No newline at end of file diff --git a/src/gui/css/mainStyleSheet.css b/src/gui/css/mainStyleSheet.css index 9e98b1be2a78444bc9956dab8910bfb53eb1ad7c..dc0e69c9be39a271a1a2a5f795cb1e9d7110c371 100644 --- a/src/gui/css/mainStyleSheet.css +++ b/src/gui/css/mainStyleSheet.css @@ -304,7 +304,7 @@ table.corporate td { margin-top: 0.5em; margin-bottom: 1.5em; } -div.tab { +.tab { margin-left: 2em; } div.indent, p.indent { @@ -347,9 +347,8 @@ div.double-choices, p.double-choices { text-decoration-color: white; } -.arcology-name { +.name { font-weight: bold; - text-decoration: underline; } div.cheat-menu { @@ -373,6 +372,10 @@ h3 + p { margin: 0 auto; } +.major-link { + font-weight: bold; +} + .clear-formatting { color: white; font-weight: normal; @@ -387,3 +390,13 @@ h3 + p { font-weight: bold; color: red; } + +div.center { + margin-left: auto; + margin-right: auto; + text-align: center; +} + +div.flex-container { + display: flex; +} diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw index 233a691ce57e0b46c2d7921bfc870f5106ba06ac..0a1e8930f9f42dd732e3ab3d054a794c7816eadc 100644 --- a/src/init/storyInit.tw +++ b/src/init/storyInit.tw @@ -12,393 +12,33 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ -<<set $returnTo = "init", $nextButton = "Continue", $nextLink = "Alpha disclaimer">> +<<run App.Update.setNonexistantProperties(V, App.Data.defaultGameStateVariables)>> <<set $ver = App.Version.base, $pmodVer = App.Version.pmod, $releaseID = App.Version.release>> -/* This needs to be broken down into individual files that can be added to StoryInit instead. */ - <<set _NGPOffset = 1200000>> -<<if def $slaves>> - <<set _SL = $slaves.length>> - <<for _i = 0; _i < _SL; _i++>> - <<if $slaves[_i].assignment != "be imported">> - <<run removeNonNGPSlave($slaves[_i])>> - <<set _i--, _SL-->> - <</if>> - <</for>> - <<for _i = 0; _i < _SL; _i++>> - <<if $slaves[_i].assignment == "be imported">> - <<set $slaves[_i].ID += _NGPOffset>> - <<set $slaves[_i].assignment = "rest">> - <<set $slaves[_i].weekAcquired = 0>> - <<set $slaves[_i].newGamePlus = 1>> - <<if $slaves[_i].mother > 0>> - <<set $slaves[_i].mother += _NGPOffset>> - <<elseif $freshPC == 1 && $slaves[_i].mother == -1>> - <<set $slaves[_i].mother = -_NGPOffset>> - <<elseif $slaves[_i].mother < -1>> - <<set $slaves[_i].mother -= _NGPOffset>> - <</if>> - <<if $slaves[_i].father > 0>> - <<set $slaves[_i].father += _NGPOffset>> - <<elseif $freshPC == 1 && $slaves[_i].father == -1>> - <<set $slaves[_i].father = -_NGPOffset>> - <<elseif $slaves[_i].father < -1>> - <<set $slaves[_i].father -= _NGPOffset>> - <</if>> - <<set $slaves[_i].daughters = 0>> - <<set $slaves[_i].sisters = 0>> - <<set $slaves[_i].canRecruit = 0>> - <<set $slaves[_i].breedingMark = 0>> - <<if $arcologies[0].FSRomanRevivalist > 90>> - <<set $slaves[_i].nationality = "Roman Revivalist">> - <<elseif $arcologies[0].FSAztecRevivalist > 90>> - <<set $slaves[_i].nationality = "Aztec Revivalist">> - <<elseif $arcologies[0].FSEgyptianRevivalist > 90>> - <<set $slaves[_i].nationality = "Ancient Egyptian Revivalist">> - <<elseif $arcologies[0].FSEdoRevivalist > 90>> - <<set $slaves[_i].nationality = "Edo Revivalist">> - <<elseif $arcologies[0].FSArabianRevivalist > 90>> - <<set $slaves[_i].nationality = "Arabian Revivalist">> - <<elseif $arcologies[0].FSChineseRevivalist > 90>> - <<set $slaves[_i].nationality = "Ancient Chinese Revivalist">> - <</if>> - <<if $slaves[_i].relationTarget != 0>> - <<set $slaves[_i].relationTarget += _NGPOffset>> - <</if>> - <<if $slaves[_i].relationshipTarget != 0>> - <<set $slaves[_i].relationshipTarget += _NGPOffset>> - <</if>> - <<if $slaves[_i].cloneID != 0>> - <<set $slaves[_i].cloneID += _NGPOffset>> - <</if>> - <<set $slaves[_i].rivalry = 0, $slaves[_i].rivalryTarget = 0, $slaves[_i].subTarget = 0>> - <<set $slaves[_i].drugs = "no drugs">> - <<set $slaves[_i].porn.spending = 0>> - <<set $slaves[_i].rules.living = "spare">> - <<set $slaves[_i].diet = "healthy">> - <<set $slaves[_i].pregControl = "none">> - <</if>> - <</for>> - <<set $slaveIndices = slaves2indices()>> - <<for _k = 0; _k < _SL; _k++>> - <<for _i = 0; _i < _SL; _i++>> - <<if $slaves[_k].mother == $slaves[_i].ID || $slaves[_k].father == $slaves[_i].ID>> - <<set $slaves[_i].daughters += 1>> - <</if>> - <<if areSisters($slaves[_k], $slaves[_i]) > 0>> - <<set $slaves[_i].sisters += 1>> - <</if>> - <</for>> - <<if $slaves[_k].pregSource > 0>> - <<set $slaves[_k].pregSource += _NGPOffset>> - <<set _getFather = $slaveIndices[$slaves[_k].pregSource]>> - <<if ndef _getFather>> - <<set $slaves[_k].pregSource = 0>> - <</if>> - <</if>> - <<for _sInit = 0; _sInit < $slaves[_k].womb.length; _sInit++>> - <<if $slaves[_k].womb[_sInit].fatherID > 0>> - <<set $slaves[_k].womb[_sInit].fatherID += _NGPOffset>> - <<elseif $freshPC == 1 && $slaves[_k].womb[_sInit].fatherID == -1>> - <<set $slaves[_k].womb[_sInit].fatherID = -_NGPOffset>> - <<elseif $slaves[_k].womb[_sInit].fatherID < -20>> - <<set $slaves[_k].womb[_sInit].fatherID -= _NGPOffset>> - <</if>> - <<if $slaves[_k].womb[_sInit].genetics.father > 0>> - <<set $slaves[_k].womb[_sInit].genetics.father += _NGPOffset>> - <<elseif $freshPC == 1 && $slaves[_k].womb[_sInit].genetics.father == -1>> - <<set $slaves[_k].womb[_sInit].genetics.father = -_NGPOffset>> - <<elseif $slaves[_k].womb[_sInit].genetics.father < -20>> - <<set $slaves[_k].womb[_sInit].genetics.father -= _NGPOffset>> - <</if>> - <<if $slaves[_k].womb[_sInit].genetics.mother > 0>> - <<set $slaves[_k].womb[_sInit].genetics.mother += _NGPOffset>> - <<elseif $freshPC == 1 && $slaves[_k].womb[_sInit].genetics.mother == -1>> - <<set $slaves[_k].womb[_sInit].genetics.mother = -_NGPOffset>> - <<elseif $slaves[_k].womb[_sInit].genetics.mother < -20>> - <<set $slaves[_k].womb[_sInit].genetics.mother -= _NGPOffset>> - <</if>> - <</for>> - <<if $slaves[_k].cloneID != 0>> - <<set _getClone = $slaveIndices[$slaves[_k].cloneID]>> - <<if ndef _getClone>> - <<set $slaves[_k].cloneID = 0>> - <</if>> - <</if>> - <</for>> - <<set $genePool = ngUpdateGenePool($genePool)>> - <<if ndef $missingTable || $showMissingSlaves == false>> - <<set $missingTable = {}>> - <<else>> - <<set $missingTable = ngUpdateMissingTable($missingTable)>> - <</if>> - <<for _i = 0; _i < _SL; _i++>> - <<if $slaves[_i].relation != 0>> - <<set _seed = 0, _rt = $slaves[_i].relationTarget, _ID = $slaves[_i].ID>> - <<set _j = $slaveIndices[_rt]>> - <<if (def _j) && $slaves[_j].relationTarget == _ID>> - <<set _seed = 1>> - <</if>> - <<if _seed == 0>> - <<set $slaves[_i].relation = 0, $slaves[_i].relationTarget = 0>> - <</if>> - <</if>> - <<if $slaves[_i].relationship > 0>> - <<set _seed = 0, _rt = $slaves[_i].relationshipTarget, _ID = $slaves[_i].ID>> - <<set _j = $slaveIndices[_rt]>> - <<if (def _j) && $slaves[_j].relationshipTarget == _ID>> - <<set _seed = 1>> - <</if>> - <<if _seed == 0>> - <<set $slaves[_i].relationship = 0, $slaves[_i].relationshipTarget = 0>> - <</if>> - <</if>> - <</for>> - <<for _i = 0; _i < _SL; _i++>> - <<if $familyTesting == 1>> - <<if $slaves[_i].canRecruit == 1>> - /*<<set $recruiters.push($slaves[_i])>>*/ - <</if>> - <<else>> - <<if $slaves[_i].relation == 0>> - <<if random(1,100) <= 5>> - <<set $slaves[_i].recruiter = "twin">> - <<elseif ($slaves[_i].actualAge > 32) && (random(1,100) <= 41)>> - <<set $slaves[_i].recruiter = "mother">> - <<elseif ($slaves[_i].actualAge < 24) && (random(1,100) <= 40)>> - <<set $slaves[_i].recruiter = "daughter">> - <<elseif ($slaves[_i].actualAge < 43) && (random(1,100) <= 20)>> - <<set $slaves[_i].recruiter = "older sister">> - <<elseif ($slaves[_i].actualAge < 25) && ($slaves[_i].actualAge > 18) && (random(1,100) <= 20)>> - <<set $slaves[_i].recruiter = "young sister">> - <</if>> - <<else>> - <<set $slaves[_i].recruiter = 0>> - <</if>> - <</if>> /*closes family mode */ - <<set $slaves[_i].counter.milk = 0>> - <<set $slaves[_i].counter.cum = 0>> - <<set $slaves[_i].counter.births = 0>> - <<set $slaves[_i].counter.mammary = 0>> - <<set $slaves[_i].counter.penetrative = 0>> - <<set $slaves[_i].counter.oral = 0>> - <<set $slaves[_i].counter.anal = 0>> - <<set $slaves[_i].counter.vaginal = 0>> - <<set $slaves[_i].lifetimeCashExpenses = 0>> - <<set $slaves[_i].lifetimeCashIncome = 0>> - <<set $slaves[_i].lastWeeksCashIncome = 0>> - <<set $slaves[_i].lifetimeRepExpenses = 0>> - <<set $slaves[_i].lifetimeRepIncome = 0>> - <<set $slaves[_i].lastWeeksRepExpenses = 0>> - <<set $slaves[_i].lastWeeksRepIncome = 0>> - <</for>> - <<set $slavesOriginal = []>> /* not used by pregmod */ -<<else>> - <<set $slaves = []>> - <<set $slavesOriginal = []>> /* not used by pregmod */ - <<set $genePool = []>> - <<set $slaveIndices = slaves2indices()>> - <<set $missingTable = {}>> - <<set $showMissingSlaves = false>> - <<set $showMissingSlavesSD = false>> -<</if>> -<<set $marrying = []>> /* array of slave being married this week*/ -<<set $organs = []>> -<<set $ArcadeiIDs = [], $BrothiIDs = [], $CellBiIDs = [], $CliniciIDs = [], $ClubiIDs = [], $DairyiIDs = [], $FarmyardiIDs = [], $HGSuiteiIDs = [], $MastSiIDs = [], $SchlRiIDs = [], $ServQiIDs = [], $SpaiIDs = [], $NurseryiIDs = []>> +<<run App.Update.slaveLoopInit()>> -<<if ndef $saveImported>> - <<set $saveImported = 0>> -<</if>> +/* 0 out the record books as we start a new game */ +<<run setupLastWeeksCash()>> +<<run setupLastWeeksRep()>> <<if $saveImported == 0>> /* new game (not NG+) */ <<set $PC = basePlayer()>> <<run WombInit($PC)>> - <<set $freshPC = 0>> - <<set $cheater = 0>> - <<setupLastWeeksCash>> - <<setupLastWeeksRep>> - <<set $cash = 0>> - <<set $cashLastWeek = 0>> <<run cashX(10000, "personalBusiness")>> - <<set $autosave = 1>> - <<set $useFSNames = 1>> - <<set $FSNamePref = 0>> - <<set $seeDetails = 1>> - <<set $seeDesk = 1>> - <<set $newModelUI = 1>> - <<set $seeArcology = 1>> - <<set $seeFCNN = 1>> - <<set $useSummaryCache = true>> - <<set $seeExtreme = 0>> - <<set $seeBestiality = 0>> - <<set $seePee = 1>> - <<set $seeIncest = 1>> - <<set $extremeUnderage = 0>> - <<set $seeHyperPreg = 0>> - <<set $seePreg = 1>> - <<set $dangerousPregnancy = 0>> - <<set $adamPrinciple = 0>> - <<set $seeCircumcision = 1>> - <<set $seeAge = 1>> - <<set $seeDicks = 25>> - <<set $seeDicksAffectsPregnancy = 1>> - <<set $seeRace = 1>> - <<set $seeNationality = 1>> - <<set $realRoyalties = 0>> - <<set $seeIllness = 1>> - <<set $seeImages = 0>> - <<set $seeFaces = 1>> - <<set $seeAvatar = 1>> - <<set $seeHeight = 0>> - <<set $imageChoice = 1>> - <<set $seeVectorArtHighlights = 1>> - <<set $seeMainFetishes = 0>> - <<set $seeSummaryImages = 1>> - <<set $seeReportImages = 1>> - <<set $lineSeparations = 1>> - <<set $showSexualHistory = 1>> - <<set $showBodyMods = 1>> - <<set $showImplantEffects = 1>> - <<set $showClothing = 1>> - <<set $showAgeDetail = 1>> - <<set $showBoobCCs = 1>> - <<set $showHeightCMs = 1>> - <<set $showDickCMs = 1>> - <<set $showInches = 1>> - <<set $showNumbers = 2>> - <<set $showNumbersMax = 20>> - <<set $showScores = 1>> - <<set $showAssignToScenes = 1>> - <<set $showEWD = 1>> - <<set $showEWM = 1>> - <<set $showVignettes = 1>> - <<set $showAppraisal = 1>> - <<set $verticalizeArcologyLinks = 0>> - <<set $positionMainLinks = -1>> - <<set $showTipsFromEncy = 1>> - <<set $displayAssignments = 1>> - <<set $sortSlavesBy = "devotion">> - <<set $sortSlavesOrder = "descending">> - <<set $sortSlavesMain = 1>> - <<set $HGSeverity = 0>> - <<set $HGFormality = 1>> - <<set $universalRulesConsent = 0>> - <<set $universalRulesRest = 0>> - <<set $universalRulesFacilityWork = 1>> - <<set $universalRulesImpregnation = "none">> - <<set $universalRulesBirthing = 0>> - <<set $universalRulesCSec = 0>> - <<set $universalRulesNewSlavesRA = 1>> - <<set $universalRulesAssignsSelfFacility = 0>> - <<set $universalRulesImmobileSlavesMaintainMuscles = 0>> - <<set $universalRulesChildrenBecomeBreeders = 0>> - <<set $slaveDead = 0>> - <<set $rulesAssistantMain = 1>> - <<set $rulesAssistantAuto = 0>> - <<set $abbreviateDevotion = 2>> - <<set $abbreviateRules = 2>> - <<set $abbreviateClothes = 2>> - <<set $abbreviateOrigins = 2>> - <<set $abbreviateRulesets = 2>> - <<set $abbreviateNationality = 2>> - <<set $abbreviateHealth = 2>> - <<set $abbreviateDiet = 2>> - <<set $abbreviateDrugs = 2>> - <<set $abbreviateRace = 2>> - <<set $abbreviateGenitalia = 2>> - <<set $abbreviatePhysicals = 2>> - <<set $abbreviateSkills = 2>> - <<set $abbreviateMental = 2>> - <<set $abbreviateSidebar = 2>> - <<set $summaryStats = 0>> - <<set $nicknamesAllowed = 1>> - <<set $modRequestsAllowed = 1>> - <<set $expansionRequestsAllowed = 1>> - <<set $plot = 1>> - <<set $continent = "North America">> - <<set $terrain = "rural">> - <<set $language = "English">> - <<set $headGirlTrainsSkills = 1>> - <<set $headGirlTrainsHealth = 1>> - <<set $headGirlTrainsObedience = 1>> - <<set $headGirlTrainsFlaws = 1>> - <<set $headGirlSoftensFlaws = 1>> - <<set $headGirlTrainsParaphilias = 1>> - <<set $retainCareer = 1>> - <<set $useSlaveSummaryTabs = 0>> - <<set $useSlaveSummaryOverviewTab = 0>> - <<set $useSlaveListInPageJSNavigation = 0>> - <<set $killChoice = -1>> - <<set $assignmentRecords = {}>> - - /* master suite reporting and alternate descriptions */ - <<set $verboseDescriptions = 0>> - /* Accordion 000-250-006 */ - <<set $useAccordion = 0>> - - <<set $debugMode = 0>> - <<set $showNeighborDetails = 1>> - <<set $useTabs = 0>> - <<set $tabChoice = {Main: "all"}>> - <<set $formatNumbers = 1>> - - /* onlyintendeddickgirls variables */ - <<set $makeDicks = 0>> - - /* economy reports variables */ - <<set $showEconomicDetails = 0>> - - /* Pregmod specific */ - <<set $allowMaleSlaveNames = false>> - <<set $profiler = 0>> - <<set $economy = 100>> - <<set $baseDifficulty = 3>> - <<set $difficultySwitch = 0>> - <<set $neighboringArcologies = 3>> - <<set $newDescriptions = 0>> - <<set $familyTesting = 0>> - <<set $showDistantRelatives = 0>> - <<set $inbreeding = 1>> - <<set $allowFamilyTitles = 0>> - <<set $surnameOrder = 0>> - - /% Begin mod section: toggle whether slaves lisp. %/ - <<set $disableLisping = 0>> - /% End mod section: toggle whether slaves lisp. %/ - - <<set $weightAffectsAssets = 1>> - <<set $curativeSideEffects = 1>> - - /* non-vanilla shit */ - <<set $pedo_mode = 0>> - <<set $minimumSlaveAge = 18>> - <<set $fertilityAge = 13>> - <<set $potencyAge = 13>> - <<set $AgePenalty = 1>> - <<set $precociousPuberty = 0>> - <<set $loliGrow = 0>> - - <<set $retirementAge = 45>> - <<set $customRetirementAge = 45>> - <<set $customMenialRetirementAge = 65>> - <<set $FSCreditCount = 5>> - <<include "Init Rules">> <<else>> /* imported save (NG+) */ <<if $freshPC == 0>> - <<set $cashLastWeek = $cash>> <<if def $arcologies[0].prosperity>> <<run cashX((250*$arcologies[0].prosperity*$arcologies[0].ownership), "personalBusiness")>> <</if>> - <<set _cash = $cash>> - <<set _cash = Math.clamp(1000*Math.trunc(_cash/100000), 5000, 1000000)>> - <<run cashX((_cash-$cash), "personalBusiness")>> /*"-cash" to clean out the current value of cash and then completely replace it with the new value for NG+ start. */ + <<set _cash = $cash, $cash = 0, $cashLastWeek = 0>> + <<run cashX((Math.clamp(1000*Math.trunc(_cash/100000), 5000, 1000000)), "personalBusiness")>> <<if $retainCareer == 0>> <<set $PC.career = "arcology owner", $PC.skill.trading = 100, $PC.skill.warfare = 100, $PC.skill.hacking = 100, $PC.skill.slaving = 100, $PC.skill.engineering = 100, $PC.skill.medicine = 100>> <</if>> @@ -457,946 +97,31 @@ You should have received a copy of the GNU General Public License along with thi <<unset $corpAssetsDev, $corpAssetsDevOld, $corpAssetsSlave, $corpAssetsSlaveOld, $corpCash, $corpDiv, $corpDivArcadeFromMarket, $corpDivArcadeSlaves, $corpDivBreakFromMarket, $corpDivBreakSlaves, $corpDivBreakSlaves2, $corpDivBreakToMarket, $corpDivBreakToMenial, $corpDivBreakToSurgery, $corpDivBreakToTrain, $corpDivDairyFromMarket, $corpDivDairySlaves, $corpDivExtraSlaves, $corpDivExtraToArcade, $corpDivExtraToBreak, $corpDivExtraToMarket, $corpDividend, $corpDivLegalSlaves, $corpDivLegalToMarket, $corpDivLegalToMenial, $corpDivLegalToSurgery, $corpDivLegalToTrain, $corpDivMenialFromMarket, $corpDivMenialSlaves, $corpDivSurgeryFromMarket, $corpDivSurgerySlaves, $corpDivSurgerySlaves2, $corpDivSurgeryToDairy, $corpDivSurgeryToMarket, $corpDivSurgeryToTrain, $corpDivTrainFromMarket, $corpDivTrainSlaves, $corpDivTrainSlaves2, $corpDivTrainToMarket, $corpDivTrainToWhore, $corpDivWhoreFromMarket, $corpDivWhoreSlaves, $corpOpCostOld, $corpOverheadOld, $corpProfitOld, $corpRev, $corpRevOld, $corpSpecAccent, $corpSpecAge, $corpSpecAmputee, $corpSpecBalls, $corpSpecDevotion, $corpSpecDick, $corpSpecEducation, $corpSpecGender, $corpSpecGenitalia, $corpSpecHeight, $corpSpecHormones, $corpSpecImplants, $corpSpecInjection, $corpSpecIntelligence, $corpSpecMilk, $corpSpecMuscle, $corpSpecPussy, $corpSpecSexEd, $corpSpecTrust, $corpSpecVirgin, $corpSpecWeight, $dividendTimer, $personalShares, $publicShares>> <</if>> - -<<set $targetArcology = {type: "New"}>> - -<<set $REFeminizationCheckinIDs = []>> -<<set $REMILFCheckinIDs = []>> -<<set $REOrientationCheckinIDs = []>> -<<set $REUglyCheckinIDs = []>> -<<set $REButtholeCheckinIDs = []>> -<<set $REFutaSisterCheckinIDs = []>> -<<set $REReductionCheckinIDs = []>> -<<set $activeSlave = 0>> -<<set $activeChild = 0>> -<<set $reminders = []>> - -<<set $boomerangSlave = 0, $boomerangWeeks = 0, $boomerangBuyer = 0>> - -<<set $bioreactorPerfectedID = 0>> - -<<set $independenceDay = 0>> -<<set $invasionVictory = 0>> -<<set $daughtersVictory = 0>> -<<set $startingGirlCopied = 0, $startingGirlRelation = 0>> -<<set $archetyped = 0>> -<<set $createRelatedSlave = 0>> - -<<set $slavesVisible = 0>> -<<set $dormitory = 20>> -<<set $dormitoryPopulation = 0>> -<<set $rooms = 5>> -<<set $roomsPopulation = 0>> - -<<set $brothelDecoration = "standard">> -<<set $brothelUpgradeDrugs = 0>> -<<set $brothelAdsSpending = 0>> -<<set $brothelAdsOld = 0>> -<<set $brothelAdsModded = 0>> -<<set $brothelAdsImplanted = 0>> -<<set $brothelAdsStacked = 0>> -<<set $brothelAdsPreg = 0>> -<<set $brothelAdsXX = 0>> -<<set $brothelName = "the Brothel">> -<<set $brothelNameCaps = "The Brothel">> -<<set $brothel = 0>> -<<set $dairyDecoration = "standard">> -<<set $dairyPrepUpgrade = 0>> -<<set $dairyStimulatorsUpgrade = 0>> -<<set $dairyStimulatorsSetting = 0>> -<<set $dairyStimulatorsSettingChanged = 0>> -<<set $dairyFeedersUpgrade = 0>> -<<set $dairyFeedersSetting = 0>> -<<set $dairyFeedersSettingChanged = 0>> -<<set $dairyPregUpgrade = 0>> -<<set $dairyPregSetting = 0>> -<<set $dairyPregSettingChanged = 0>> -<<set $dairyRestraintsUpgrade = 0>> -<<set $dairyRestraintsSetting = 0>> -<<set $dairySlimMaintainUpgrade = 0>> -<<set $dairySlimMaintain = 0>> -<<set $dairyHyperPregRemodel = 0>> -<<set $dairyWeightSetting = 0>> -<<set $dairyImplantsSetting = 1>> -<<set $dairyUpgradeMenials = 0>> -<<set $createBioreactors = 0>> -<<set $bioreactorsAnnounced = 0>> -<<set $bioreactorsHerm = 0>> -<<set $bioreactorsXX = 0>> -<<set $bioreactorsXY = 0>> -<<set $bioreactorsBarren = 0>> -<<set $dairyName = "the Dairy">> -<<set $dairyNameCaps = "The Dairy">> -<<set $dairy = 0>> -<<set $cumSlaves = 0>> -<<set $clubDecoration = "standard">> -<<set $clubUpgradePDAs = 0>> -<<set $clubAdsSpending = 0>> -<<set $clubAdsOld = 0>> -<<set $clubAdsModded = 0>> -<<set $clubAdsImplanted = 0>> -<<set $clubAdsStacked = 0>> -<<set $clubAdsPreg = 0>> -<<set $clubAdsXX = 0>> -<<set $clubName = "the Club">> -<<set $clubNameCaps = "The Club">> -<<set $club = 0>> -<<set $servantsQuartersDecoration = "standard">> -<<set $servantsQuartersUpgradeMonitoring = 0>> -<<set $servantsQuarters = 0>> -<<set $servantsQuartersName = "the Servants' Quarters">> -<<set $servantsQuartersNameCaps = "The Servants' Quarters">> -<<set $schoolroomDecoration = "standard">> -<<set $schoolroomUpgradeSkills = 0>> -<<set $schoolroomUpgradeLanguage = 0>> -<<set $schoolroomUpgradeRemedial = 0>> -<<set $schoolroomRemodelBimbo = 0>> -<<set $schoolroom = 0>> -<<set $schoolroomName = "the Schoolroom">> -<<set $schoolroomNameCaps = "The Schoolroom">> -<<set $spaDecoration = "standard">> -<<set $spa = 0>> -<<set $spaSpots = 0>> -<<set $spaUpgrade = 0>> -<<set $spaFix = 0>> -<<set $spaName = "the Spa">> -<<set $spaNameCaps = "The Spa">> - -/% Incubator Subsection %/ -<<set $incubator = 0>> -<<set $incubatorSlaves = 0>> -<<set $incubatorBulkRelease = 0>> -<<set $incubatorOrgans = []>> -<<set $incubatorOldID = 0>> -<<set $incubatorUpgradeSpeed = 5>> -<<set $incubatorUpgradeWeight = 0>> -<<set $incubatorUpgradeMuscles = 0>> -<<set $incubatorUpgradeGrowthStims = 0>> -<<set $incubatorUpgradeReproduction = 0>> -<<set $incubatorUpgradeOrgans = 0>> -<<set $incubatorImprintSetting = 0>> -<<set $incubatorWeightSetting = 0>> -<<set $incubatorMusclesSetting = 0>> -<<set $incubatorGrowthStimsSetting = 0>> -<<set $incubatorReproductionSetting = 0>> -<<set $incubatorName = "the Incubator">> -<<set $incubatorNameCaps = "The Incubator">> -<<set $reservedChildren = 0>> -<<set $tanks = []>> - -<<set $clinicDecoration = "standard">> -<<set $clinic = 0>> -<<set $clinicUpgradeFilters = 0>> -<<set $clinicUpgradeScanner = 0>> -<<set $clinicUpgradePurge = 0>> -<<set $clinicName = "the Clinic">> -<<set $clinicNameCaps = "The Clinic">> -<<set $arcadeDecoration = "standard">> -<<set $arcadeUpgradeInjectors = 0>> -<<set $arcadeUpgradeFuckdolls = 0>> -<<set $arcadeUpgradeCollectors = 0>> -<<set $arcadeUpgradeHealth = -1>> -<<set $arcadeName = "the Arcade">> -<<set $arcadeNameCaps = "The Arcade">> -<<set $arcade = 0>> -<<set $fuckdollsSold = 0>> -<<set $cellblockDecoration = "standard">> -<<set $cellblockUpgrade = 0>> -<<set $cellblock = 0>> -<<set $cellblockName = "the Cellblock">> -<<set $cellblockNameCaps = "The Cellblock">> -<<set $cellblockWardenCumsInside = 1>> -<<set $masterSuiteDecoration = "standard">> -<<set $masterSuiteUpgradeLuxury = 0>> -<<set $masterSuiteUpgradePregnancy = 0>> /* Is the upgrade active? */ -<<set $masterSuitePregnancyFertilityDrugs = 0>> /* Are slaves being put on fertility drugs? */ -<<set $masterSuitePregnancyFertilitySupplements = 0>> /* Are those drugs being supplemented (health benefits and (even) more multiple pregnancies) */ -<<set $masterSuitePregnancySlaveLuxuries = 0>> /* Are the slaves being given some nicer things to reduce stress during preg? (health/devotion/trust benefits) */ -<<set $universalHGImpregnateMasterSuiteToggle = 0>> /* Will the HG impregnate fertile slaves in the MS? */ -<<set $masterSuiteHyperPregnancy = 0>> -<<set $masterSuite = 0>> -<<set $masterSuiteName = "the Master Suite">> -<<set $masterSuiteNameCaps = "The Master Suite">> - -/% Nursery Subsection %/ -<<set $nursery = 0>> /* counts the number of children the nursery can support */ -<<set $nurseryNannies = 0>> /* counts the number of nannies the nursery can support */ -<<set $nurseryBabies = 0>> /* counts the number of children currently in the nursery */ -<<set $MatronInfluence = 0>> /* check for whether the children are influenced by the Matron */ -<<set $nannyInfluence = 0>> /* check for whether the children are influenced by the nannies */ -<<set $nurseryDecoration = "standard">> -<<set $nurseryWeight = 0>> -<<set $nurseryMuscles = 0>> -<<set $nurseryHormones = 0>> -<<set $nurseryOrgans = 0>> /* not currently in use */ -<<set $nurseryImprintSetting = 0>> -<<set $nurseryWeightSetting = 0>> -<<set $nurseryMusclesSetting = 0>> -<<set $nurseryHormonesSetting = 0>> -<<set $nurseryName = "the Nursery">> -<<set $nurseryNameCaps = "The Nursery">> -<<set $reservedChildrenNursery = 0>> -<<set $cribs = []>> /* array of children in the nursery */ -<<set $cribsFreed = []>> /* array of children that have been freed */ -<<set $childToSlave = -1>> /* number of total children that have become slaves */ -<<run $cribs.forEach(function(c) { - App.Facilities.Nursery.childInit(c); -})>> -<<set $cribsIndices = App.Facilities.Nursery.cribsToIndices()>> - - -/% Farmyard Subsection %/ -<<set $farmyard = 0>> -<<set $farmyardShowgirls = []>> /* array of farmhands putting on shows */ -<<set $farmyardFarmers = []>> /* array of farmhands farming */ -<<set $farmMenials = 0>> -<<set $farmMenialsSpace = 0>> -<<set $farmyardDecoration = "standard">> -<<set $farmyardUpgrade = {pump: 0, fertilizer: 0, hydroponics: 0, machinery: 0, seeds: 0, lab: 0}>> -<<set $farmyardCrops = 0>> -<<set $farmyardStable = 0>> -<<set $farmyardKennels = 0>> -<<set $farmyardCages = 0>> -<<set $activeCanine = 0>> -<<set $activeHooved = 0>> -<<set $activeFeline = 0>> -<<set $farmyardLab = 0>> -<<set $farmyardLabUpgrades = {animalOvaries: 0, animalTesticles: 0, animalMpreg: 0}>> -<<set $animalsBought = {canines: 0, hooved: 0, felines: 0, labradorRetrievers: 0, germanShepherds: 0, goldenRetrievers: 0, frenchBulldogs: 0, bulldogs: 0, beagles: 0, poodles: 0, rottweilers: 0, yorkshireTerriers: 0, siberianHuskies: 0, horses: 0, bulls: 0, pigs: 0, siameses: 0, persians: 0, maineCoons: 0, ragdolls: 0, bengals: 0, abbysinians: 0, birmans: 0, orientalShorthairs: 0, sphynxes: 0, russianBlues: 0, wolves: 0, foxes: 0, jackals: 0, dingos: 0, zebras: 0, cougars: 0, jaguars: 0, pumas: 0, lynx: 0, leopards: 0, lions: 0, tigers: 0}>> -<<set $canines = []>> -<<set $hooved = []>> -<<set $felines = []>> -<<set $farmyardName = "the Farmyard">> -<<set $farmyardNameCaps = "The Farmyard">> - -<<set $HGSuite = 0>> -<<set $HGSuiteSurgery = 1>> -<<set $HGSuiteDrugs = 1>> -<<set $HGSuiteHormones = 1>> -<<set $HGSuiteEquality = 0>> -<<set $HGSuiteName = "the Head Girl Suite">> -<<set $HGSuiteNameCaps = "The Head Girl Suite">> -<<set $fighterIDs = []>> -<<set $pitBG = 0>> -<<set $pitAnimal = 0>> -<<set $pitAnimalType = 0>> -<<set $pitAudience = "none">> -<<set $pitLethal = 0>> -<<set $pitVirginities = 0>> -<<set $pitFought = 0>> -<<set $pit = 0>> -<<set $pitName = "the Pit">> -<<set $pitNameCaps = "The Pit">> -<<set $dojo = 0>> -<<set $feeder = 0>> -<<set $cockFeeder = 0>> -<<set $suppository = 0>> -<<set $weatherCladding = 0>> -<<set $weatherAwareness = 0>> -<<set $boobAccessibility = 0>> -<<set $servantMilkers = 0>> -<<set $servantMilkersMultiplier = 1>> - -<<set $studio = 0>> -<<set $studioFeed = 0>> -<<set $PCSlutContacts = 1>> - /* Porn star counts (prestige 1) and ID's (prestige 3) */ -<<set $pornStars = {}>> <<for _genre range App.Porn.getAllGenres()>> <<set $pornStars[_genre.fameVar] = { p1count: 0, p3ID: 0 }>> <</for>> -<<set $pregInventor = 0>> -<<set $pregInventorID = 0>> -<<set $pregInventions = 0>> - -<<set $legendaryWhoreID = 0>> -<<set $legendaryEntertainerID = 0>> -<<set $legendaryCowID = 0>> -<<set $legendaryBallsID = 0>> -<<set $legendaryWombID = 0>> -<<set $legendaryAbolitionistID = 0>> - -<<set $FSAnnounced = 0>> -<<set $FSCredits = 0>> -<<set $FSGotRepCredits = 0>> -<<set $FSSingleSlaveRep = 10>> -<<set $FSSpending = 0>> -<<set $FSLockinLevel = 100>> -<<set $applyLaw = 0>> -<<set $FSPromenade = {Subjugationist: 0, Supremacist: 0, GenderRadicalist: 0, GenderFundamentalist: 0, Paternalist: 0, Degradationist: 0, BodyPurist: 0, TransformationFetishist: 0, YouthPreferentialist: 0, MaturityPreferentialist: 0, SlimnessEnthusiast: 0, AssetExpansionist: 0, Pastoralist: 0, PhysicalIdealist: 0, ChattelReligionist: 0, RomanRevivalist: 0, AztecRevivalist: 0, EgyptianRevivalist: 0, EdoRevivalist: 0, ArabianRevivalist: 0, ChineseRevivalist: 0, Repopulationist: 0, Eugenics: 0, Hedonism: 0, IntellectualDependency: 0, SlaveProfessionalism: 0, PetiteAdmiration: 0, StatuesqueGlorification: 0}>> - -/*new corporation variables*/ -<<set $newCorp = 1>> -<<set $vanillaShareSplit = 1>> -<<set $corpEcon = 0>> -<<set $corpCashDividend = 0>> -<<set $corpDiv = 0>> -<<set $corpExpandToken = 0>> -<<set $corpSpec = 0>> -<<set $corpSpecToken = 0>> -<<set $corpDivExtra = 0>> -<<set $corpDivLegal = 0>> -<<set $corpDivBreak = 0>> -<<set $corpDivSurgery = 0>> -<<set $corpDivTrain = 0>> -<<set $corpDivArcade = 0>> -<<set $corpDivMenial = 0>> -<<set $corpDivDairy = 0>> -<<set $corpDivWhore = 0>> -<<set $corpDivExtraDev = 0>> -<<set $corpDivLegalDev = 0>> -<<set $corpDivBreakDev = 0>> -<<set $corpDivSurgeryDev = 0>> -<<set $corpDivTrainDev = 0>> -<<set $corpDivArcadeDev = 0>> -<<set $corpDivMenialDev = 0>> -<<set $corpDivDairyDev = 0>> -<<set $corpDivWhoreDev = 0>> -<<set $corpSpecRaces = []>> - -<<set $corpAnnounced = 0>> -<<set $corpIncorporated = 0>> -<<set $corpMarket = 0>> - -/* Slave sexual services and goods variables */ -<<set $publicFuckdolls = 0>> -<<set $classSatisfied = {lowerClass: 0, middleClass: 0, upperClass: 0, topClass: 0}>> -<<set $whoreBudget = {lowerClass: 7, middleClass: 40, upperClass: 200, topClass: 1500}>> -<<set $arcadePrice = 2>> -<<set $clubSlaveSexAmount = 0>> - -<<set $shelterSlave = 0>> -<<set $shelterSlaveBought = 0>> -<<set $shelterAbuse = 0>> -<<set $shelterSlaveGeneratedWeek = 0>> - -/* alternate clothing access variables */ -<<set $clothesBoughtBunny = 0>> -<<set $clothesBoughtConservative = 0>> -<<set $clothesBoughtChains = 0>> -<<set $clothesBoughtWestern = 0>> -<<set $clothesBoughtOil = 0>> -<<set $clothesBoughtHabit = 0>> -<<set $clothesBoughtToga = 0>> -<<set $clothesBoughtHuipil = 0>> -<<set $clothesBoughtKimono = 0>> -<<set $clothesBoughtHarem = 0>> -<<set $clothesBoughtQipao = 0>> -<<set $clothesBoughtEgypt = 0>> -<<set $clothesBoughtBelly = 0>> -<<set $clothesBoughtMaternityDress = 0>> -<<set $clothesBoughtMaternityLingerie = 0>> -<<set $clothesBoughtLazyClothes = 0>> -<<set $clothesBoughtBimbo = 0>> -<<set $clothesBoughtCourtesan = 0>> -<<set $shoesBoughtHeels = 0>> -<<set $clothesBoughtPetite = 0>> -/* non-fs */ -<<set $clothesBoughtMilitary = 0>> -<<set $clothesBoughtCultural = 0>> -<<set $clothesBoughtMiddleEastern = 0>> -<<set $clothesBoughtPol = 0>> -<<set $clothesBoughtCostume = 0>> -<<set $clothesBoughtPantsu = 0>> -<<set $clothesBoughtCareer = 0>> -<<set $clothesBoughtDresses = 0>> -<<set $clothesBoughtBodysuits = 0>> -<<set $clothesBoughtCasual = 0>> -<<set $clothesBoughtUnderwear = 0>> -<<set $clothesBoughtSports = 0>> -<<set $clothesBoughtPony = 0>> -<<set $clothesBoughtSwimwear = 0>> -<<set $toysBoughtDildos = 0>> -<<set $toysBoughtGags = 0>> -<<set $toysBoughtVaginalAttachments = 0>> -<<set $toysBoughtButtPlugs = 0>> -<<set $toysBoughtButtPlugTails = 0>> -<<set $toysBoughtSmartVibes = 0>> -<<set $buckets = 0>> - -/*pregmod variables */ -<<set $specialSlavesPriceOverride = 0>> -<<set $pregAccessibility = 0>> -<<set $dickAccessibility = 0>> -<<set $ballsAccessibility = 0>> -<<set $buttAccessibility = 0>> -<<set $ageMode = 0>> -<<set $enema = 0>> -<<set $medicalEnema = 0>> -<<set $dairyPiping = 0>> -<<set $inflatedSlavesMilk = 0>> -<<set $inflatedSlavesCum = 0>> -<<set $milkPipeline = 0>> -<<set $cumPipeline = 0>> -<<set $wcPiping = 0>> -<<set $burstee = 0>> -<<set $slaveDeath = 0>> -<<set $clinicInflateBelly = 0>> -<<set $playerBred = 0>> -<<set $propOutcome = 0>> -<<set $EliteSires = ["crazy", "futa", "moves", "preggo", "quick", "virgin"]>> -<<set $startingPoint = -1>> -<<set $PhysicalRetirementAgePolicy = 0>> -<<set $raped = -1>> -<<set $children = []>> -<<set $missingParentID = -10000>> -<<set $startingSlaveRelative = 0>> -<<set $mom = 0>> -/*<<set $animalParts = 0>>*/ -<<set $originOveride = 0>> -<<set $playerAging = 2>> -<<set $pregSpeedControl = 0>> -<<set $clinicSpeedGestation = 0>> -<<set $playerSurgery = 0>> -<<set $playerGetsMilked = 0>> -<<set $bodyswapAnnounced = 0>> -<<set $surnamesForbidden = 0>> -<<set $menstruation = 0>> -<<set $FCTVcount = 0>> -<<set $FCTVrate = 4>> -<<set $FCTVreceiver = 0>> -<<set $receiverAvailable = 0>> -<<set $FCTVshow = 0>> -<<set $FCTVremote = 0>> -<<set $lastShow = 0>> -<<set $randShow = 0>> -<<set $FCNNstation = 0>> -<<set $MercenariesMessageSent = 0>> -<<set $SpecialForcesMessageSent = 0>> -<<set $BodyguardHasSucessfullyRecivedSignal = 0>> -<<set $finalChoice = "none">> -<<set $eliteTotal = 12>> -<<set $eliteDead = 0>> -<<set $eliteVegetable = 0>> -<<set $eliteFate = 0>> -<<set $swanSong = 0>> -<<set $failedElite = 0>> -<<set $eugenicsFullControl = 0>> -<<set $badC = 0, $badB = 0>> - -<<set $schoolSuggestion = 0>> -<<set $TSS = {schoolUpgrade: 0, schoolPresent: 0, schoolProsperity: 0, subsidize: 0, schoolAnnexed: 0, studentsBought: 0, schoolSale: 0}>> -<<set $GRI = {schoolUpgrade: 0, schoolPresent: 0, schoolProsperity: 0, subsidize: 0, schoolAnnexed: 0, studentsBought: 0, schoolSale: 0}>> -<<set $SCP = {schoolUpgrade: 0, schoolPresent: 0, schoolProsperity: 0, subsidize: 0, schoolAnnexed: 0, studentsBought: 0, schoolSale: 0}>> -<<set $LDE = {schoolUpgrade: 0, schoolPresent: 0, schoolProsperity: 0, subsidize: 0, schoolAnnexed: 0, studentsBought: 0, schoolSale: 0}>> -<<set $TGA = {schoolUpgrade: 0, schoolPresent: 0, schoolProsperity: 0, subsidize: 0, schoolAnnexed: 0, studentsBought: 0, schoolSale: 0}>> -<<set $TCR = {schoolUpgrade: 0, schoolPresent: 0, schoolProsperity: 0, subsidize: 0, schoolAnnexed: 0, studentsBought: 0, schoolSale: 0}>> -<<set $TFS = {farmUpgrade: 0, schoolUpgrade: 0, schoolPresent: 0, schoolProsperity: 0, subsidize: 0, schoolAnnexed: 0, studentsBought: 0, schoolSale: 0, compromiseWeek: 0}>> -<<set $futaAddiction = 0>> -<<set $HA = {schoolUpgrade: 0, schoolPresent: 0, schoolProsperity: 0, subsidize: 0, schoolAnnexed: 0, studentsBought: 0, schoolSale: 0}>> -<<set $NUL = {schoolUpgrade: 0, schoolPresent: 0, schoolProsperity: 0, subsidize: 0, schoolAnnexed: 0, studentsBought: 0, schoolSale: 0}>> - -<<set $IDNumber = 1>> -<<set $nIDNumber = 1>> /* tracks children in the nursery */ - -<<set $week = 1>> - -<<set $weddingPlanned = 0>> -<<set $personalAttention = "sex">> -<<set $HeadGirl = 0>> -<<set $HGTimeInGrade = 0>> -<<set $HGEnergy = 0>> -<<set $HGCum = 0>> -<<set $Recruiter = 0>> -<<set $recruiterTarget = "desperate whores">> -<<set $recruiterProgress = 0>> -<<set $recruiterIdleRule = "number">> -<<set $recruiterIdleNumber = 20>> -<<set $recruiterIOUs = 0>> -<<set $bodyguardTrains = 1>> -<<set $Bodyguard = 0>> -<<set $Madam = 0>> -<<set $DJ = 0>> -<<set $Milkmaid = 0>> -<<set $milkmaidImpregnates = 0>> -<<set $Farmer = 0>> -<<set $Collectrix = 0>> -<<set $Stewardess = 0>> -<<set $stewardessImpregnates = 0>> -<<set $Schoolteacher = 0>> -<<set $Attendant = 0>> -<<set $Matron = 0>> -<<set $Nurse = 0>> -<<set $Wardeness = 0>> -<<set $Concubine = 0>> -<<set $economicUncertainty = 10>> - <<run assistant.object()>> - -<<set $justiceEvents = ["slave deal", "slave training", "majority deal", "indenture deal", "virginity deal", "breeding deal"]>> /* not in setupVars because we remove events from this array as they occur */ -<<set $prisonCircuit = ["low tier criminals", "gangs and smugglers", "white collar", "military prison"]>> -<<set $prisonCircuitIndex = random(0,$prisonCircuit.length-1)>> - -<<set $fixedNationality = 0>> -<<set $fixedRace = 0>> -<<set $ui = "start">> -<<set $tooltipsEnabled = 0>> - -<<set $brandTarget = {primary: "buttock", secondary: "buttock", local: "buttock"}>> -<<set $brandDesign = {primary: "your initials", official: "your initials", local: "your initials"}>> - -<<set $scarTarget = {primary: "left cheek", secondary: "left cheek", local: "left cheek"}>> -<<set $scarDesign = {primary: "generic", local: "generic"}>> - -<<set $oralTotal = 0>> -<<set $vaginalTotal = 0>> -<<set $analTotal = 0>> -<<set $mammaryTotal = 0>> -<<set $penetrativeTotal = 0>> -<<set $milkTotal = 0>> -<<set $cumTotal = 0>> -<<set $foodTotal = 0>> -<<set $birthsTotal = 0>> -<<set $pitKillsTotal = 0>> - -<<set $collaboration = 0>> -<<set $traitor = 0>> -<<set $traitorType = 0>> -<<set $traitorWeeks = 0>> -<<set $hackerSupport = 0>> -<<set $hostage = 0>> -<<set $hostageAnnounced = 0>> -<<set $hostageRescued = 0>> -<<set $hostageGiveIn = 0>> -<<set $rivalSet = 0>> -<<set $rivalryFS = 0>> -<<set $rivalryFSAdopted = 0>> -<<set $rivalryFSRace = 0>> -<<set $rivalOwner = 0>> -<<set $rivalOwnerEnslaved = 0>> -<<set $rivalryPower = 0>> -<<set $rivalryDuration = 0>> -<<set $rivalRace = 0>> -<<set $rivalGender = 0>> -<<set $nationHate = 0>> -<<set $slaveMedic = 0>> -<<set $PShoot = 0>> -<<set $PSnatch = 0>> -<<set $PRaid = 0>> -<<set $PAid = 0>> -<<set $PPit = 0>> - -<<set $dispensary = 0>> -<<set $dispensaryUpgrade = 0>> -<<set $organFarmUpgrade = 0>> -<<set $completedOrgans = []>> -<<set $ImplantProductionUpgrade = 0>> -<<set $permaPregImplant = 0>> -<<set $injectionUpgrade = 0>> -<<set $hormoneUpgradeMood = 0>> -<<set $hormoneUpgradeShrinkage = 0>> -<<set $hormoneUpgradePower = 0>> -<<set $pubertyHormones = 0>> -<<set $dietXXY = 0>> -<<set $dietCleanse = 0>> -<<set $cumProDiet = 0>> -<<set $dietFertility = 0>> -<<set $curativeUpgrade = 0>> -<<set $growthStim = 0>> -<<set $reproductionFormula = 0>> -<<set $aphrodisiacUpgrade = 0>> -<<set $aphrodisiacUpgradeRefine = 0>> -<<set $healthyDrugsUpgrade = 0>> -<<set $superFertilityDrugs = 0>> -<<set $bellyImplants = 0>> -<<set $cervixImplants = 0>> -<<set $meshImplants = 0>> -<<set $prostateImplants = 0>> -<<set $youngerOvaries = 0>> -<<set $sympatheticOvaries = 0>> -<<set $fertilityImplant = 0>> -<<set $asexualReproduction = 0>> -<<set $animalOvaries = 0>> /*{pigOvaries: 0, canineOvaries: 0, horseOvaries: 0, cowOvaries: 0} currently unused*/ -<<set $animalTesticles = 0>> /*{pigTestes: 0, dogTestes: 0, horseTestes: 0, cowTestes: 0} currently unused*/ -<<set $animalMpreg = 0>> /*{pigMpreg: 0, dogMpreg: 0, horseMpreg: 0, cowMpreg: 0} currently unused*/ -<<set $geneticMappingUpgrade = 0>> -<<set $pregnancyMonitoringUpgrade = 0>> -<<set $cloningSystem = 0>> -<<set $geneticFlawLibrary = 0>> - -<<set $surgeryUpgrade = 0>> - -<<set $barracks = 0>> -<<set $mercenaries = 0>> -<<set $mercenariesHelpCorp = 0>> -<<set $personalArms = 0>> - -<<set $saleDescription = 0>> -<<set $gingering = 0>> -<<set $beforeGingering = 0>> -<<set $gingeringDetected = 0>> -<<set $gingeringDetection = 0>> -<<set $surgeryDescription = 0>> -<<set $encyclopedia = "How to Play">> -<<set $showEncyclopedia = 1>> - -<<set $trinkets = []>> -<<set $SPcost = 1000>> -<<set $debtWarned = 0>> -<<set $internationalTrade = 1>> -<<set $internationalVariety = 0>> -<<set $slaveCostFactor = 0.95>> -<<set $menialDemandFactor = 0>> -<<set $menialSupplyFactor = 0>> -<<set $demandTimer = 0>> -<<set $supplyTimer = 0>> -<<set $elapsedDemandTimer = 0>> -<<set $elapsedSupplyTimer = 0>> -<<set $slaveCostRandom = 0>> -<<set $deltaDemand = 0>> -<<set $deltaDemandOld = 0>> -<<set $deltaSupply = 0>> -<<set $deltaSupplyOld = 0>> -<<set $NPCSexSupply = {lowerClass: 3000, middleClass: 3000, upperClass: 3000, topClass: 3000}>> -<<set $NPCMarketShare = {lowerClass: 1000, middleClass: 1000, upperClass: 1000, topClass: 1000}>> -<<set $sexSubsidies = {lowerClass: 0, middleClass: 0, upperClass: 0, topClass: 0}>> -<<set $sexSupplyBarriers = {lowerClass: 0, middleClass: 0, upperClass: 0, topClass: 0}>> -<<set $minimumSlaveCost = 2500>> -<<set $facilityCost = 100>> -<<set $enduringRep = 1000>> -<<set $rep = 0>> <<run repX(1000, "event")>> -<<set $repLastWeek = 0>> - -<<set $arcologyUpgrade = {drones: 0, hydro: 0, apron: 0, grid: 0, spire: 0}>> - -<<set $AGrowth = 2>> -<<set $ACitizens = 4250>> -<<set $lowerClass = 3120>> -<<set $LSCBase = 800>> -<<set $visitors = 0>> -<<set $rentDefaults = {lowerClass: 20, middleClass: 50, upperClass: 180, topClass: 650}>> -<<set $rent = {lowerClass: 20, middleClass: 50, upperClass: 180, topClass: 650}>> -<<set $rentEffectL = 1>> -<<set $middleClass = 890>> -<<set $MCBase = 200>> -<<set $rentEffectM = 1>> -<<set $upperClass = 200>> -<<set $UCBase = 40>> -<<set $rentEffectU = 1>> -<<set $topClass = 40>> -<<set $TCBase = 20>> -<<set $rentEffectT = 1>> -<<set $GDP = 278.6>> -<<set $NPCSlaves = 900>> -<<set $ASlaves = 900>> -<<set $AProsperityCap = 0>> - -<<set $food = 50000>> -<<set $foodLastWeek = 0>> -<<set $foodProduced = 0>> -<<set $foodStored = 0>> -<<set $foodCost = 25>> -<<set $foodMarket = 0>> -<<set $foodRate = {slave: 2, lower: 1.8, middle: 2, upper: 2.2, top: 2.4}>> -<<set $foodConsumption = (($lowerClass*$foodRate.lower) + ($middleClass*$foodRate.middle) + ($upperClass*$foodRate.upper) + ($topClass*$foodRate.top))>> /* total amount food consumed per week */ -<<set $farmMenials = 0>> -<<set $revealFoodEffects = 0>> -<<set $rations = 0>> - <<set $building = App.Arcology.defaultBuilding()>> <<set _sellable = $building.findCells(cell => cell.canBeSold())>> <<set _random12 = jsRandomMany(_sellable, 12)>> <<run _random12.forEach(cell => {cell.owner = 0})>> - -<<set $menials = 0>> -<<set $fuckdolls = 0>> -<<set $menialBioreactors = 0>> -<<set $prestigeAuctioned = 0>> -<<set $slaveMarketLimit = 20>> -<<set $slavesSeen = 0>> - -<<set $slaveOrphanageTotal = 0>> -<<set $citizenOrphanageTotal = 0>> -<<set $privateOrphanageTotal = 0>> -<<set $breederOrphanageTotal = 0>> - -<<set $alwaysSubsidizeRep = 0>> -<<set $alwaysSubsidizeGrowth = 0>> -<<set $ProImmigrationCash = 0>> -<<set $ProImmigrationRep = 0>> -<<set $AntiImmigrationCash = 0>> -<<set $AntiImmigrationRep = 0>> -<<set $ProEnslavementCash = 0>> -<<set $ProEnslavementRep = 0>> -<<set $AntiEnslavementCash = 0>> -<<set $AntiEnslavementRep = 0>> -<<set $BasicSMR = 1>> -<<set $HealthInspectionSMR = 0>> -<<set $EducationSMR = 0>> -<<set $FrigiditySMR = 0>> -<<set $BasicBeautySMR = 0>> -<<set $QualityBeautySMR = 0>> -<<set $BasicWeightSMR = 0>> -<<set $BasicIntelligenceSMR = 0>> -<<set $QualityIntelligenceSMR = 0>> -<<set $BasicHeightSMR = 0>> -<<set $AdvancedHeightSMR = 0>> -<<set $IntelligenceEugenicsSMR = 0>> -<<set $HeightEugenicsSMR = 0>> -<<set $FaceEugenicsSMR = 0>> -<<set $HonestySMR = 0>> -<<set $ProRefugees = 0>> -<<set $ProRecruitment = 0>> -<<set $OralEncouragement = 0>> -<<set $VaginalEncouragement = 0>> -<<set $AnalEncouragement = 0>> -<<set $OralDiscouragement = 0>> -<<set $VaginalDiscouragement = 0>> -<<set $AnalDiscouragement = 0>> -<<set $CashForRep = 0>> -<<set $RepForCash = 0>> -<<set $Cash4Babies = 0>> -<<set $RegularParties = 0>> -<<set $PAPublic = 0>> -<<set $CoursingAssociation = 0>> - <<set $Lurcher = 0>> - <<set $coursed = 0>> -<<set $RaidingMercenaries = 0>> - <<set $raided = 0>> -<<set $MixedMarriage = 0>> -<<set $CulturalOpenness = 0>> -<<set $goodImageCampaign = 0>> -<<set $sexualOpeness = 0>> - -<<set $policyCost = 5000>> -<<set $expiree = 0>> -<<set $retiree = 0>> -<<set $birthee = 0>> -<<set $CustomRetirementAgePolicy = 0>> -<<set $BioreactorRetirement = 0>> -<<set $ArcadeRetirement = 0>> -<<set $CitizenRetirement = 0>> -<<set $citizenRetirementMenials = 0>> -<<set $citizenRetirementTrigger = 0>> -<<set $FSSupLawTrigger = 0>> -<<set $FSSubLawTrigger = 0>> -<<set $SexMilestoneRetirement = 0>> -<<set $MilkMilestoneRetirement = 0>> -<<set $CumMilestoneRetirement = 0>> -<<set $BirthsMilestoneRetirement = 0>> -<<set $KillsMilestoneRetirement = 0>> -<<set $retirementSex = 10000>> -<<set $retirementMilk = 50000>> -<<set $retirementCum = 500000>> -<<set $retirementBirths = 5>> -<<set $retirementKills = 3>> -<<set $nicaea = 0>> -<<set $nicaeaAnnounceable = 0>> -<<set $nicaeaAnnounced = 0>> -<<set $nicaeaPreparation = 0>> -<<set $nicaeaInvolvement = -2>> -<<set $nicaeaPower = 0>> -<<set $nicaeaHeld = 0>> -<<set $peacekeepers = 0>> -<<set $peacekeepersFate = 0>> -<<set $mercRomeo = 0>> - -<<set $oralUseWeight = 5>> -<<set $vaginalUseWeight = 5>> -<<set $analUseWeight = 5>> - -<<set $childProtectionAct = 1>> - -<<set $niceWeather = [ - {name: "Sunny", severity: 1}, - {name: "Cloudy", severity: 1}, - {name: "Partly Cloudy", severity: 1}, - {name: "Overcast", severity: 1}, - {name: "Light Wind", severity: 1}, - {name: "Clear and Calm", severity: 1}, - {name: "Light Rain", severity: 1}, - {name: "Heavy Rain", severity: 1}, - {name: "Smoke warning", severity: 1}, -]>> - -<<set $lightWeather = [ - {name: "High Winds", severity: 2}, - {name: "Acid Rain", severity: 2}, - {name: "T-Storm Warning", severity: 2}, - {name: "Flood Warning", severity: 2}, - {name: "Tornado Warning", severity: 2}, - {name: "Light Sandstorm", severity: 2}, - {name: "High Heat", severity: 2}, - {name: "Smoky", severity: 2}, -]>> - -<<set $heavyWeather = [ - {name: "Extreme Winds", severity: 3}, - {name: "Heavy Acid Rain", severity: 3}, - {name: "Extreme T-storm", severity: 3}, - {name: "Flooding", severity: 3}, - {name: "Tornadoes", severity: 3}, - {name: "Sandstorm", severity: 3}, - {name: "Extreme Heat", severity: 3}, - {name: "Dense Smoke", severity: 3}, -]>> - -<<set $extremeWeather = [ - {name: "Solar Flare", severity: 4}, - {name: "Ion Storm", severity: 4}, - {name: "Cataclysmic Rains", severity: 4}, - {name: "Cat 6 Hurricane", severity: 4}, - {name: "Abrasive Sandstorm", severity: 4}, - {name: "Radiological Warning", severity: 4}, -]>> - -<<set $weatherToday = $niceWeather.random()>> - -<<set $customSlaveOrdered = 0>> -/* I am not a slave object! Do not treat me like one! */ -<<set $customSlave = new App.Entity.CustomSlaveOrder()>> - -<<set $huskSlaveOrdered = 0>> -<<set $huskSlave = new App.Entity.CustomSlaveOrder()>> - -/*non-vanilla shit*/ - -<<set $one_time_age_overrides_pedo_mode = 0>> -<<set $activeSlaveOneTimeMinAge = 0>> -<<set $activeSlaveOneTimeMaxAge = 999>> -<<set $oneTimeDisableDisability = 0>> -<<set $targetAge = $minimumSlaveAge>> -<<set $pubertyLength = 5>> -<<set $maxGrowthAge = 24>> - -/* Job Fulfillment Center */ -<<set $JFCOrder = 0, $Role = "">> - -<<set $cheatMode = 0>> -<<set $cheatModeM = 1>> -<<set $experimental = { - nursery: 0, - food: 0, - animalOvaries: 0, - dinnerParty: 0 -}>> -<<set $NaNArray = []>> - -<<set $fcnn = []>> -<<set $fcnn.push("...coming up at the top of the hour: Catgirl slaves, science fact or science fiction...")>> -<<set $fcnn.push("...coming up at the top of the hour: Malnockestivi Smith, Free Cities' first MtFtMtFtH transgendered person...")>> -<<set $fcnn.push("...new arcology construction up 23% worldwide this year, according to...")>> -<<set $fcnn.push("...United States Congress spends 1,264th consecutive day gridlocked over post office...")>> -<<set $fcnn.push("...coming up at the top of the hour: Arcology owners: oversexed oligarchs or attractive, oversexed oligarchs?...")>> -<<set $fcnn.push("...coming up at the top of the hour: Anal sex: not just for sex any more...")>> -<<set $fcnn.push("...coming up at the top of the hour: Oral sex: the new hello...")>> -<<set $fcnn.push("...new book by prominent feminist suggests that women should not be used as sexual appliances...")>> -<<set $fcnn.push("...just ahead, interview with Desha Moore, prominent advocate for compulsory female enslavement...")>> -<<set $fcnn.push("...just ahead, Slave Market Trends: will the pierced anus be in again this year...")>> -<<set $fcnn.push("...just ahead, Slave Market Trends: upstart slave trainers avoid implants...")>> -<<set $fcnn.push("...implant technology firm BusTech notches successful initial public offering...")>> -<<set $fcnn.push("...the upcoming shortage of authentic leather and what it means for the whip industry...")>> -<<set $fcnn.push("...dairy conglomerate Creem Inc. denies allegations of adulterating breast milk with...")>> -<<set $fcnn.push("...two-time award-winning actress Linda Loveless debuted new implants on the red carpet this...")>> -<<set $fcnn.push("...dick size: are your slaves lying to you when they tell you you're too big...")>> -<<set $fcnn.push("...just ahead, slave expert's opinion on best shemale slaves to use for double penetration...")>> -<<set $fcnn.push("...Free Cities social conservatives criticize marriage, say your slaves should be enough...")>> -<<set $fcnn.push("...councilman Taggart suggested in a public address that involuntary enslavement...")>> -<<set $fcnn.push("...councilman Taggart denies allegations that he has remained faithful to his wife...")>> -<<set $fcnn.push("...councilman Taggart presented evidence that regulation of the sex slave market would...")>> -<<set $fcnn.push("...after a word from our sponsors. Creem Inc.: for all your dairy needs...")>> -<<set $fcnn.push("...after a word from our sponsors. Horstmann Ltd, Free Cities' finest whipmakers...")>> -<<set $fcnn.push("...after a word from our sponsors. Coming soon to theaters, Quintuple, the musical...")>> -<<set $fcnn.push("...critical of low-end slave training corporation Wallerson & Sons for practices that they say...")>> -<<set $fcnn.push("...training corporation Wallerson & Sons called a study on slave illness rates 'ludicrous,' but...")>> -<<set $fcnn.push("...our tech correspondent: the possibilities of virally-administered gene therapy...")>> -<<set $fcnn.push("...our tech correspondent: breakthrough in in-vitro drug treatments that promise to...")>> -<<set $fcnn.push("...our tech correspondent: next year to see release of two competing aphrodisiacs...")>> -<<set $fcnn.push("...our tech correspondent: the coming permanent aphrodisiac implants, and what they mean...")>> -<<set $fcnn.push("...Sex Slaves in Space: what it takes to keep a mining crew happy for an 18-month contract...")>> -<<set $fcnn.push("...the implant-drug balance: how much tissue growth is necessary to support larger...")>> -<<set $fcnn.push("...the actress stated that the cut to full nudity in the script violated contractual...")>> -<<set $fcnn.push("...doping scandal as Slave Games watchdog alleges champion used internal reservoir of lube...")>> -<<set $fcnn.push("...next on Extreme Surgery: the mouthpussy experimenters and what they...")>> -<<set $fcnn.push("...'A hole's a hole,' said CEO of upstart budget glory hole franchise...")>> -<<set $fcnn.push("...underground slave pit fights step into the light this evening as...")>> -<<set $fcnn.push("...underground slave pit fight champion, freed yesterday, sells herself back into...")>> -<<set $fcnn.push("...with the lead designer of the MP17, the new machine pistol marketed specifically for bodyguards...")>> -<<set $fcnn.push("...the new Aegis drone series: because your arcology's security is your most important possession...")>> -<<set $fcnn.push("...the BAe Goshawk: because you deserve to travel at twice the speed of sound in the finest style...")>> -<<set $fcnn.push("...this year's Goat.cx award for outstanding orifice innovation goes to...")>> -<<set $fcnn.push("...public controversy over cannibalism. Decadence taken too far or an acceptable next step...")>> -<<set $fcnn.push("...sixth day of street cleaners' strike. Spokesman for the strikers: 'It's getting too nasty...")>> -<<set $fcnn.push("...debuts new book, 'So Long, And Thanks For All The Dicks', in which the recently retired sex slaves tell-all about...")>> -<<set $fcnn.push("...cure for lactose intolerance, for which he was awarded the International Association of Pastoralist...")>> -<<set $fcnn.push("...from the Free Cities have become increasingly common clientele for the black market...")>> -<<set $fcnn.push("...a risky gamble on the three-hour-long hardcore sex scene, but the box office figures for just...")>> - -/* HACKY EVENT WORKAROUNDS */ -<<set $eventID = -1>> - -/* INCORPORATED MODS */ - -/*SFVAR*/ <<set $SF = Object.assign({}, $SF, {Toggle:0, Active: -1}), $SF.Facility = Object.assign({}, $SF.Facility, {Toggle:0, Active:0})>> - -/* Misc mod variables */ -<<set $recruiterEugenics = 0>> - -<<if ndef $AgeEffectOnTrainerPricingPC>> - <<set $AgeEffectOnTrainerPricingPC = 1>> -<</if>> -<<if ndef $AgeEffectOnTrainerEffectivenessPC>> - <<set $AgeEffectOnTrainerEffectivenessPC = 1>> -<</if>> -<<if ndef $AgeTrainingUpperBoundPC>> - <<set $AgeTrainingUpperBoundPC = 14>> -<</if>> -<<if ndef $AgeTrainingLowerBoundPC>> - <<set $AgeTrainingLowerBoundPC = 12>> -<</if>> -<<if ndef $IsInPrimePC>> - <<set $IsInPrimePC = 3>> -<</if>> -<<if ndef $IsPastPrimePC>> - <<set $IsPastPrimePC = 5000>> -<</if>> - -<<set $prostheticsUpgrade = 0>> -<<set $adjustProstheticsCompleted = 0>> -<<set $adjustProsthetics = []>> /*format: {id: string, workleft: int, slaveID: int}*/ -/*task: {type: "research"/"craft/craftFit", id: string, workLeft: int, [if constructFit] slaveID: int}*/ -<<set $researchLab = { - level: 0, - aiModule: 1, - tasks: [], - maxSpace: 0, - hired: 0, - menials: 0, -}>> -<<set $prosthetics = {}>> <<run setup.prostheticIDs.forEach(function(id) { $prosthetics[id] = {amount: 0, research: 0}; })>> -<<set $merchantFSWares = ["AssetExpansionistResearch", "GenderRadicalistResearch", "HedonisticDecadenceResearch", "SlaveProfessionalismResearch", "SlimnessEnthusiastResearch", "TransformationFetishistResearch", "YouthPreferentialistResearch"]>> -<<set $merchantIllegalWares = ["asexualReproduction", "childhoodFertilityInducedNCS", "PGHack", "RapidCellGrowthFormula", "sympatheticOvaries", "UterineRestraintMesh"]>> /* "AnimalOrgans" for future use */ -<<set $RapidCellGrowthFormula = 0>> -<<set $UterineRestraintMesh = 0>> -<<set $PGHack = 0>> - -<<set $diversePronouns = 0>> - -/* Security Expansion */ -<<set $wasToggledBefore = 0>> -/* moved first build to post toggle */ -<<set $secExpEnabled = $secExpEnabled || 0>> - -/* Career-skill gain */ -<<set $masteredXP = 200>> +/*SFVAR*/ <<set $SF = Object.assign({}, $SF, {Toggle:0, Active: -1}), $SF.Facility = Object.assign({}, $SF.Facility, {Toggle:0, Active:0})>> -/* Weather effect on economy */ -<<set $antiWeatherFreeze = 0>> -<<set $econWeatherDamage = 0>> -<<set $disasterResponse = 0>> +<<set $foodConsumption = (($lowerClass*$foodRate.lower) + ($middleClass*$foodRate.middle) + ($upperClass*$foodRate.upper) + ($topClass*$foodRate.top))>> /* total amount food consumed per week */ -<<set $postSexCleanUp = 1>> +<<set $weatherToday = App.Data.weather.nice.random()>> +<<set $prisonCircuitIndex = random(0,$prisonCircuit.length-1)>> -<<set $sideBarOptions = {compact:1, Cash:1, Upkeep:1, SexSlaveCount:1, roomPop:1, Rep:1, GSP:1, Authority:1, Security:1, Crime:1}>> -<<set $DefaultBirthDestination = "individually decided fates">> -<<set $abbreviateHormoneBalance = 2>> +/* I am not a slave object! Do not treat me like one! */ +<<set $customSlave = new App.Entity.CustomSlaveOrder()>> +<<set $huskSlave = new App.Entity.CustomSlaveOrder()>> <<= App.SF.Init()>> diff --git a/src/interaction/budgets/recordTemplates.js b/src/interaction/budgets/recordTemplates.js new file mode 100644 index 0000000000000000000000000000000000000000..8a7cc9feb4692bcfdec3f4f7a8c458ea20c02a4a --- /dev/null +++ b/src/interaction/budgets/recordTemplates.js @@ -0,0 +1,152 @@ +App.Data.Records = {}; + +App.Data.Records.LastWeeksCash = function() { + this.whore = 0, + this.whoreBrothel = 0, + this.rest = 0, + this.houseServant = 0, + this.confined = 0, + this.publicServant = 0, + this.classes = 0, + this.milked = 0, + this.milkedDairy = 0, + this.extraMilk = 0, // milk from slaves doing other things + this.gloryhole = 0, + this.gloryholeArcade = 0, + this.porn = 0, + this.recruiter = 0, + // Slaves in general + this.fuckdolls = 0, + this.menialTrades = 0, + this.menialBioreactors = 0, + + this.slaveTransfer = 0, + this.fuckdollsTransfer = 0, + this.menialTransfer = 0, + this.menialBioreactorsTransfer = 0, + this.babyTransfer = 0, + this.menialRetirement = 0, + + this.slaveMod = 0, + this.slaveSurgery = 0, + this.slaveUpkeep = 0, + this.birth = 0, + + // Buildings + this.lab = 0, + this.brothel = 0, + this.brothelAds = 0, + this.club = 0, + this.clubAds = 0, + this.arcade = 0, + this.dairy = 0, + this.servantsQuarters = 0, + this.masterSuite = 0, + this.school = 0, + this.spa = 0, + this.clinic = 0, + this.cellblock = 0, + this.incubator = 0, + this.nursery = 0, + this.farmyard = 0, + this.pit = 0, + + this.environment = 0, + this.weather = 0, + + this.mercenaries = 0, + this.peacekeepers = 0, + this.specialForces = 0, + this.securityExpansion = 0, + + this.citizenOrphanage = 0, + this.privateOrphanage = 0, + + this.capEx = 0, + this.futureSocieties = 0, + this.schoolBacking = 0, + this.policies = 0, + this.edicts = 0, + + // Personal Finance + this.personalBusiness = 0, + this.personalLivingExpenses = 0, + this.PCtraining = 0, + this.PCmedical = 0, + this.PCskills = 0, + this.stocksTraded = 0, // trading + this.stocks = 0, // share growth + this.fines = 0, + this.event = 0, // poker night etc. Try to file things elsewhere if you can. + this.war = 0, + + this.rents = 0, + + this.cheating = 0, + this.total = 0; +}; + +App.Data.Records.LastWeeksRep = function() { + // Slave Jobs + this.fucktoy = 0, + this.publicServant = 0, + this.gloryholeArcade = 0, + this.gloryhole = 0, + + this.concubine = 0, + this.headGirl = 0, + this.bodyguard = 0, + this.recruiter = 0, + + // Slaves in general + this.fuckdolls = 0, + this.slaveTransfer = 0, + this.babyTransfer = 0, + this.birth = 0, + this.retirement = 0, + this.slavesViewOfPC = 0, + this.prestigiousSlave = 0, + this.vignette = 0, + this.porn = 0, + + // Buildings + this.arcade = 0, + this.brothel = 0, + this.club = 0, + this.publicServantClub = 0, + this.clubAds = 0, + this.pit = 0, + this.servantsQuarters = 0, + this.spa = 0, + + this.architecture = 0, + + // Policies + this.capEx = 0, + this.futureSocieties = 0, + this.policies = 0, + this.edicts = 0, + this.war = 0, + this.food = 0, + + // Forces + this.peacekeepers = 0, + this.specialForces = 0, + this.securityExpansion = 0, + + // Personal Finance + this.personalBusiness = 0, + this.PCappearance = 0, + this.PCactions = 0, // actions involving your body = becoming pregnant, etc. + this.PCRelationships = 0, + this.SlaveRelationships = 0, + this.event = 0, // poker night etc. Try to file things elsewhere if you can. + this.war = 0, + + // special + this.multiplier = 0, + this.overflow = 0, + this.cheating = 0, + + this.total = 0; +}; diff --git a/src/interaction/main/mainLinks.js b/src/interaction/main/mainLinks.js index 7347394b22558a227880ed65eb54590a0875c4d0..c3556d512d2028c67df0c571d88f543a0b1153aa 100644 --- a/src/interaction/main/mainLinks.js +++ b/src/interaction/main/mainLinks.js @@ -1,121 +1,142 @@ -/* OPEN MAIN */ -App.UI.View.MainLinks = function() { +/** + * @returns {DocumentFragment} + */ +App.UI.View.mainLinks = function() { "use strict"; const PA = Array.isArray(V.personalAttention) ? V.personalAttention.map(x => getSlave(x.ID)) : []; - let r = ''; + let fragment = document.createDocumentFragment(); if (V.PC.health.shortDamage >= 30) { - r += `The injuries received in the recent battle prevent you from undertaking tiring efforts.`; + fragment.append(`The injuries received in the recent battle prevent you from undertaking tiring efforts.`); } else { switch (V.personalAttention) { case "business": - r += `You plan to focus on business this week.`; + fragment.append(`You plan to focus on business this week.`); break; case "whoring": - r += `You plan to focus on earning extra money this week.`; + fragment.append(`You plan to focus on earning extra money this week.`); break; case "upkeep": - r += `You plan to focus on cleaning the penthouse this week.`; + fragment.append(`You plan to focus on cleaning the penthouse this week.`); break; case "defensive survey": - r += `You plan to survey ${V.arcologies[0].name}'s defenses in person this week.`; + fragment.append(`You plan to survey ${V.arcologies[0].name}'s defenses in person this week.`); break; case "development project": - r += `You plan on contributing to a local development project this week.`; + fragment.append(`You plan on contributing to a local development project this week.`); break; case "smuggling": - r += `You plan to make some easy (but dirty) money this week.`; + fragment.append(`You plan to make some easy (but dirty) money this week.`); break; case "HG": - r += `You plan to support your Head Girl this week, `; + fragment.append(`You plan to support your Head Girl this week, `); if (V.HeadGirl) { const {he, his} = getPronouns(V.HeadGirl); - r += `so ${he} can give more slaves ${his} attention.`; + fragment.append(`so ${he} can give more slaves ${his} attention.`); } else { - r += `should you assign one.`; + fragment.append(`should you assign one.`); } break; case "sex": - r += `You plan to have as much sex with your slaves as possible this week.`; + fragment.append(`You plan to have as much sex with your slaves as possible this week.`); break; case "trading": - r += `This week you will learn trading.`; + fragment.append(`This week you will learn trading.`); break; case "warfare": - r += `This week you will learn modern combat tactics.`; + fragment.append(`This week you will learn modern combat tactics.`); break; case "slaving": - r += `This week you will learn slaving.`; + fragment.append(`This week you will learn slaving.`); break; case "engineering": - r += `This week you will learn engineering.`; + fragment.append(`This week you will learn engineering.`); break; case "medicine": - r += `This week you will learn medicine.`; + fragment.append(`This week you will learn medicine.`); break; case "hacking": - r += `This week you will learn hacking.`; + fragment.append(`This week you will learn hacking.`); break; case "proclamation": - r += `This week you plan to issue a proclamation about ${V.SecExp.proclamation.type}.`; + fragment.append(`This week you plan to issue a proclamation about ${V.SecExp.proclamation.type}.`); break; case "technical accidents": - r += `This week you plan to sell your technical skills to the highest bidder.`; + fragment.append(`This week you plan to sell your technical skills to the highest bidder.`); break; default: if (PA.length > 0) { - r += `You plan to train `; - let l = PA.length; - for (let dwi = 0; dwi < l; dwi++) { - if (dwi > 0 && dwi === l - 1) { - r += ` and `; - } - r += `<strong><u><span class="pink">${SlaveFullName(PA[dwi])}</span></u></strong> to ${V.personalAttention[dwi].trainingRegimen}`; - if (dwi > 0 && dwi < l - 2) { - r += `,`; + fragment.append(`You plan to train `); + + const trainees = []; + PA.forEach((trainee, i) => { + trainees.push(App.UI.DOM.combineNodes(App.UI.DOM.makeElement("span", SlaveFullName(trainee), "slave-name"), + ` to ${V.personalAttention[i].trainingRegimen}`)); } - } - r += ` this week.`; + ); + fragment.append(App.UI.DOM.arrayToList(trainees)); + + fragment.append(` this week.`); } break; } } if (V.PC.health.shortDamage < 30) { - r += ` <span id="managePA"><strong>${App.UI.passageLink("Change plans", "Personal Attention Select")}</strong></span> <span class="cyan">[A]</span>`; + const link = App.UI.DOM.makeElement("span", App.UI.DOM.passageLink("Change plans", "Personal Attention Select"), "major-link"); + link.id = "managePA"; + fragment.append(" ", link, " ", App.UI.DOM.makeElement("span", "[A]", "hotkey")); } - if (V.useSlaveSummaryOverviewTab !== 1) { + if (V.useSlaveSummaryOverviewTab === 0) { + let div = document.createElement("div"); if (typeof V.slaveIndices[V.HeadGirl.ID] !== 'undefined') { - r += `<br><strong><u><span class="pink">${SlaveFullName(V.HeadGirl)}</span></u></strong> is serving as your Head Girl`; + div.append(App.UI.DOM.makeElement("span", SlaveFullName(V.HeadGirl), "slave-name"), " is serving as your Head Girl"); if (V.arcologies[0].FSEgyptianRevivalistLaw === 1) { - r += ` and Consort`; + div.append(` and Consort`); } - r += `. <span id="manageHG"><strong>${App.UI.passageLink("Manage Head Girl", "HG Select")}</strong></span> <span class="cyan">[H]</span>`; - } else if (typeof V.slaveIndices[V.HeadGirl.ID] === 'undefined' && (V.slaves.length > 1)) { - r += `<br>You have not selected a Head Girl`; + div.append(". ", + App.UI.DOM.makeElement("span", App.UI.DOM.passageLink("Manage Head Girl", "HG Select"), "major-link"), + " ", App.UI.DOM.makeElement("span", "[H]", "hotkey")); + div.id = "manageHG"; + } else if (V.slaves.length > 1) { + div.append(`You have not selected a Head Girl`); if (V.arcologies[0].FSEgyptianRevivalistLaw === 1) { - r += ` and Consort`; + div.append(` and Consort`); } - r += `. <span id="manageHG"><strong>${App.UI.passageLink("Select one", "HG Select")}</strong></span> <span class="cyan">[H]</span>`; - } else if (typeof V.slaveIndices[V.HeadGirl.ID] === 'undefined') { - r += `<br><span class="note">You do not have enough slaves to keep a Head Girl</span>`; + div.append(". ", + App.UI.DOM.makeElement("span", App.UI.DOM.passageLink("Select One", "HG Select"), "major-link"), + " ", App.UI.DOM.makeElement("span", "[H]", "hotkey")); + div.id = "manageHG"; + } else { + div.append(App.UI.DOM.makeElement("span", "You do not have enough slaves to keep a Head Girl", "note")); } - r += `<br>`; + fragment.append(div); + div = document.createElement("div"); if (typeof V.slaveIndices[V.Recruiter.ID] !== 'undefined') { - r += `<strong><u><span class="pink">${SlaveFullName(V.Recruiter)}</span></u></strong> is working to recruit girls. <span id="manageRecruiter"><strong>${App.UI.passageLink("Manage Recruiter", "Recruiter Select")}</strong></span> <span class="cyan">[U]</span>`; + div.append(App.UI.DOM.makeElement("span", SlaveFullName(V.Recruiter), "slave-name"), " is working to recruit girls. ", + App.UI.DOM.makeElement("span", App.UI.DOM.passageLink("Manage Recruiter", "Recruiter Select"), "major-link")); } else { - r += `You have not selected a Recruiter. <span id="manageRecruiter"><strong>${App.UI.passageLink("Select one", "Recruiter Select")}</strong></span> <span class="cyan">[U]</span>`; + div.append("You have not selected a Recruiter. ", + App.UI.DOM.makeElement("span", App.UI.DOM.passageLink("Select one", "Recruiter Select"), "major-link")); } + div.append(" ", App.UI.DOM.makeElement("span", "[U]", "hotkey")); + div.id = "manageRecruiter"; + fragment.append(div); if (V.dojo) { - r += `<br>`; + div = document.createElement("div"); if (typeof V.slaveIndices[V.Bodyguard.ID] !== 'undefined') { - r += `<strong><u><span class="pink">${SlaveFullName(V.Bodyguard)}</span></u></strong> is serving as your bodyguard. <span id="manageBG"><strong>${App.UI.passageLink("Manage Bodyguard", "BG Select")}</strong></span> <span class="cyan">[B]</span>`; + div.append(App.UI.DOM.makeElement("span", SlaveFullName(V.Bodyguard), "slave-name"), " is serving as your bodyguard. ", + App.UI.DOM.makeElement("span", App.UI.DOM.passageLink("Manage Bodyguard", "BG Select"), "major-link")); } else { - r += `You have not selected a Bodyguard. <span id="manageBG"><strong>${App.UI.passageLink("Select one", "BG Select")}</strong></span> <span class="cyan">[B]</span>`; + div.append("You have not selected a Bodyguard. ", + App.UI.DOM.makeElement("span", App.UI.DOM.passageLink("Select one", "BG Select"), "major-link")); } + div.append(" ", App.UI.DOM.makeElement("span", "[B]", "hotkey")); + div.id = "manageBG"; + fragment.append(div); } } @@ -129,19 +150,24 @@ App.UI.View.MainLinks = function() { const slaveOrgans = V.completedOrgans.reduce((acc, organ) => organ.ID === V.slaves[i].ID ? acc + 1 : acc, 0); /* if the interrogated slave has one or more organs ready: */ if (slaveOrgans > 0) { - r += '<br><span class="yellow">The fabricator has completed '; + const div = document.createElement("div"); + div.classList.add("yellow"); + div.append("The fabricator has completed "); if (slaveOrgans > 1) { - r += `${slaveOrgans} organs`; + div.append(`${slaveOrgans} organs`); } else { - r += 'an organ'; + div.append('an organ'); } - r += ` for </span>${App.UI.link(V.slaves[i].slaveName, () => { V.activeSlave = V.slaves[i]; }, [], "Slave Interact")}, <span class="yellow">which `; + div.append(" for ", + App.UI.DOM.makeElement("span", App.UI.link(V.slaves[i].slaveName, () => { V.activeSlave = V.slaves[i]; }, [], "Slave Interact"), "clear-formatting"), + " which "); if (slaveOrgans > 1) { - r += 'are'; + div.append('are'); } else { - r += 'is'; + div.append('is'); } - r += ' ready to be implanted.</span>'; + div.append(' ready to be implanted.'); + fragment.append(div); } } } @@ -151,7 +177,12 @@ App.UI.View.MainLinks = function() { if (getSlave(V.adjustProsthetics[j].slaveID) !== undefined) { const i = V.slaveIndices[V.adjustProsthetics[j].slaveID]; if (V.adjustProsthetics[j].workLeft <= 0) { - r += `<br><span class="yellow">The lab has completed ${addA(setup.prosthetics[V.adjustProsthetics[j].id].name)} for</span> <span id="name">${App.UI.link(SlaveFullName(V.slaves[i]), () => { V.activeSlave = V.slaves[i]; }, [], "Slave Interact")},</span> <span class="yellow"> which is ready to be attached.</span>`; + const div = document.createElement("div"); + div.classList.add("yellow"); + div.append(`The lab has completed ${addA(setup.prosthetics[V.adjustProsthetics[j].id].name)} for `, + App.UI.DOM.makeElement("span", App.UI.link(SlaveFullName(V.slaves[i]), () => { V.activeSlave = V.slaves[i]; }, [], "Slave Interact"), "clear-formatting"), + " which is ready to be attached."); + fragment.append(div); } } else { V.adjustProsthetics.splice(j, 1); @@ -161,57 +192,90 @@ App.UI.View.MainLinks = function() { } if (V.completedOrgans.length > 0 && V.adjustProstheticsCompleted > 0) { - r += `<br>${App.UI.passageLink("Implant and Attach", "Multiple Organ Implant")} <span class="yellow">all organs and prosthetics that are ready.</span>`; + const div = document.createElement("div"); + div.append(App.UI.DOM.passageLink("Implant and Attach", "Multiple Organ Implant"), + App.UI.DOM.makeElement("span", " all organs and prosthetics that are ready.", "yellow")); + fragment.append(div); } else if (V.completedOrgans.length > 1) { - r += `<br>${App.UI.passageLink("Implant", "Multiple Organ Implant")} <span class="yellow">all organs that are ready for implantation.</span>`; + const div = document.createElement("div"); + div.append(App.UI.DOM.passageLink("Implant", "Multiple Organ Implant"), + App.UI.DOM.makeElement("span", " all organs that are ready for implantation.", "yellow")); + fragment.append(div); } else if (V.adjustProstheticsCompleted > 1) { - r += `<br>${App.UI.passageLink("Attach", "Multiple Organ Implant")} <span class="yellow">all prosthetics that are ready to be attached.</span>`; + const div = document.createElement("div"); + div.append(App.UI.DOM.passageLink("Attach", "Multiple Organ Implant"), + App.UI.DOM.makeElement("span", " all prosthetics that are ready to be attached.", "yellow")); + fragment.append(div); } - if (V.slaveCostFactor > 1.05) { - r += `<br><span class="yellow">There is a bull market for slaves; the price of slaves is very high.</span>`; - } else if (V.slaveCostFactor > 1) { - r += `<br><span class="yellow">The slave market is bullish; the price of slaves is high.</span>`; - } else if (V.slaveCostFactor < 0.95) { - r += `<br><span class="yellow">There is a bear market for slaves; the price of slaves is very low.</span>`; - } else if (V.slaveCostFactor < 1) { - r += `<br><span class="yellow">The slave market is bearish; the price of slaves is low.</span>`; + const div = document.createElement("div"); + if (V.slaveCostFactor === 1) { + div.append("The slave market is stable; the price of slaves is average."); } else { - r += `<br>The slave market is stable; the price of slaves is average.`; + let r; + if (V.slaveCostFactor > 1) { + if (V.slaveCostFactor > 1.05) { + r = "There is a bull market for slaves; the price of slaves is very high."; + } else { + r = "The slave market is bullish; the price of slaves is high."; + } + } else { + if (V.slaveCostFactor < 0.95) { + r = "There is a bear market for slaves; the price of slaves is very low."; + } else { + r = "The slave market is bearish; the price of slaves is low."; + } + } + div.append(App.UI.DOM.makeElement("span", r, "yellow")); + } + + const buySlaves = App.UI.DOM.makeElement("span", App.UI.DOM.passageLink("Buy Slaves", "Buy Slaves"), "major-link"); + buySlaves.id = "buySlaves"; + div.append(" ", buySlaves, " ", App.UI.DOM.makeElement("span", "[S]", "hotkey")); + + fragment.append(div); + + /** + * @param {string} school + */ + function schoolSale(school) { + const div = document.createElement("div"); + div.append(App.UI.DOM.makeElement("span", "For your first purchase, ", "yellow"), + App.UI.DOM.passageLink(school, school, () => { V.slavesSeen += 1; }), + App.UI.DOM.makeElement("span", " will sell at half price this week.", "yellow")); + fragment.append(div); } - r += ` <span id="buySlaves"><strong>${App.UI.passageLink("Buy Slaves", "Buy Slaves")}</strong></span> <span class="cyan">[S]</span>`; if (V.seeDicks !== 100) { if (V.TSS.schoolSale !== 0) { - r += `<br><span class="yellow">For your first purchase, </span><strong>[[The Slavegirl School][$slavesSeen += 1]]</strong><span class="yellow"> will sell at half price this week.</span>`; + schoolSale("The Slavegirl School"); } if (V.GRI.schoolSale !== 0) { - r += `<br><span class="yellow">For your first purchase, </span><strong>[[Growth Research Institute][$slavesSeen += 1]]</strong><span class="yellow"> will sell at half price this week.</span>`; + schoolSale("Growth Research Institute"); } if (V.SCP.schoolSale !== 0) { - r += `<br><span class="yellow">For your first purchase, </span><strong>[[St. Claver Preparatory][$slavesSeen += 1]]</strong><span class="yellow"> will sell at half price this week.</span>`; + schoolSale("St. Claver Preparatory"); } if (V.TCR.schoolSale !== 0) { - r += `<br><span class="yellow">For your first purchase, </span><strong>[[The Cattle Ranch][$slavesSeen += 1]]</strong><span class="yellow"> will sell at half price this week.</span>`; + schoolSale("The Cattle Ranch"); } if (V.HA.schoolSale !== 0) { - r += `<br><span class="yellow">For your first purchase, </span><strong>[[The Hippolyta Academy][$slavesSeen += 1]]</strong><span class="yellow"> will sell at half price this week.</span>`; + schoolSale("The Hippolyta Academy"); } } if (V.seeDicks !== 0) { if (V.LDE.schoolSale !== 0) { - r += `<br><span class="yellow">For your first purchase, </span><strong>[[L'École des Enculées][$slavesSeen += 1]]</strong><span class="yellow"> will sell at half price this week.</span>`; + schoolSale("L'École des Enculées"); } if (V.TGA.schoolSale !== 0) { - r += `<br><span class="yellow">For your first purchase, </span><strong>[[The Gymnasium-Academy][$slavesSeen += 1]]</strong><span class="yellow"> will sell at half price this week.</span>`; + schoolSale("The Gymnasium-Academy"); } if (V.TFS.schoolSale !== 0) { - r += `<br><span class="yellow">For your first purchase, </span><strong>[[The Futanari Sisters][$slavesSeen += 1]]</strong><span class="yellow"> will sell at half price this week.</span>`; + schoolSale("The Futanari Sisters"); } } if (V.NUL.schoolSale !== 0) { - r += `<br><span class="yellow">For your first purchase, </span><strong>[[Nueva Universidad de Libertad][$slavesSeen += 1]]</strong><span class="yellow"> will sell at half price this week.</span>`; + schoolSale("Nueva Universidad de Libertad"); } - return r; + return fragment; }; -/* CLOSE MAIN */ diff --git a/src/interaction/prostheticConfig.tw b/src/interaction/prostheticConfig.tw index 3b3ce3310b2d38a52f46041e59bb4708c1c3e4a1..2333878bf23caa94140c5551bef7218132945df2 100644 --- a/src/interaction/prostheticConfig.tw +++ b/src/interaction/prostheticConfig.tw @@ -3,7 +3,7 @@ <<switch $prostheticsConfig>> <<case "main">> - <<set $nextButton = "Back", $nextLink = "Slave Interact">> + <<set $nextButton = "Confirm changes", $nextLink = "AS Dump", $returnTo = "Slave Interact">> /* get all prosthetics that are ready for this slave */ <<if $adjustProstheticsCompleted > 0>> <<set $adjustProsthetics = $adjustProsthetics.filter(function(p) { diff --git a/src/interaction/slaveInteract.js b/src/interaction/slaveInteract.js index b074dd7901ecb4536e7fc40f8f1b038830b75ce6..a07144e3f36a884301b6b09b4bb1ee7843c5ab43 100644 --- a/src/interaction/slaveInteract.js +++ b/src/interaction/slaveInteract.js @@ -889,8 +889,9 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) { } else if (sexOption.goto) { App.UI.replace('#miniscene', `<<goto "${sexOption.goto}">>`); } + V.slaves[V.slaveIndices[V.activeSlave.ID]] = V.activeSlave; - App.UI.SlaveInteract.refreshAll(slave); + App.UI.SlaveInteract.refreshAll(V.slaves[V.slaveIndices[V.activeSlave.ID]]); return; } } @@ -2530,12 +2531,15 @@ App.UI.SlaveInteract.generateRows = function(array, slave, category, accessCheck }; App.UI.SlaveInteract.refreshAll = function(slave) { + App.UI.SlaveInteract.fucktoyPref(slave); + App.UI.SlaveInteract.assignmentBlock("assignmentLinks", slave); + App.UI.SlaveInteract.drugs(slave); + App.UI.SlaveInteract.useSlaveDisplay(slave); App.UI.SlaveInteract.bloating(slave); App.UI.SlaveInteract.fertility(slave); - App.UI.SlaveInteract.useSlaveDisplay(slave); - App.UI.SlaveInteract.drugs(slave); App.UI.SlaveInteract.curatives(slave); App.UI.SlaveInteract.aphrodisiacs(slave); App.UI.SlaveInteract.incubator(slave); App.UI.SlaveInteract.nursery(slave); + App.UI.SlaveInteract.custom(slave); }; diff --git a/src/js/assayJS.js b/src/js/assayJS.js index 4190785dd6ba934a70aef69c497288a650fd8c81..2333008aae8e1822e05ff258608aba080874c5fd 100644 --- a/src/js/assayJS.js +++ b/src/js/assayJS.js @@ -1815,3 +1815,11 @@ window.retirementReady = function RetirementReady(slave) { // no retirement for you return false; }; + +/** Is the slave a shelter slave? + * @param {SlaveState} slave + * @returns {boolean} + */ +window.isShelterSlave = function isShelterSlave(slave) { + return (typeof slave.origin === "string" && slave.origin.includes("Slave Shelter")); +}; diff --git a/src/js/economyJS.js b/src/js/economyJS.js index d84eab5d11b22775837ed09acdc21b04c10186de..e0f3b186c30a8a4413fdcb557a0fffc58c7f0bd0 100644 --- a/src/js/economyJS.js +++ b/src/js/economyJS.js @@ -2180,7 +2180,7 @@ window.supplyPoliciesReport = function(NPCclass) { // charge supply barriers (unreported, since it's a flat amount that you were told when you enacted the policy) const supplyCosts = [0, 1000, 5000, 20000, 60000]; - cashX(forceNeg(supplyCosts[V.sexSupplyBarriers[varName]])); + cashX(forceNeg(supplyCosts[V.sexSupplyBarriers[varName]]), "policies"); // report subsidy cost since it is variable if (V.sexSubsidies[varName] > 0) { @@ -2221,3 +2221,15 @@ window.ownershipReport = function({sidebar}) { return r += warrning ? `<span class="warning"> A dangerously narrow margin of control.</span>` : ``; } }; + +window.setupLastWeeksCash = function() { + V.lastWeeksCashIncome = new App.Data.Records.LastWeeksCash(); + V.lastWeeksCashExpenses = new App.Data.Records.LastWeeksCash(); + V.lastWeeksCashProfits = new App.Data.Records.LastWeeksCash(); +}; + +window.setupLastWeeksRep = function() { + V.lastWeeksRepIncome = new App.Data.Records.LastWeeksRep(); + V.lastWeeksRepExpenses = new App.Data.Records.LastWeeksRep(); + V.lastWeeksRepProfits = new App.Data.Records.LastWeeksRep(); +}; diff --git a/src/js/main.js b/src/js/main.js index 01d409520d4206580d6b1df096145e30adb5d6f9..89902d6ba07f7b0fa090ab430fcceaa41214e2af 100644 --- a/src/js/main.js +++ b/src/js/main.js @@ -67,7 +67,7 @@ App.MainView.errors = function() { }; /** - * @return {Text} + * @returns {Text} */ App.MainView.fcnn = function() { let text; @@ -81,15 +81,92 @@ App.MainView.fcnn = function() { return document.createTextNode(`${text} `); }; +App.MainView.useFucktoys = function() { + const fragment = document.createDocumentFragment(); + for (const slave of V.slaves) { + if (slave.assignment !== "please you") { + continue; + } + fragment.append(App.MainView.useFucktoy(slave)); + } + return fragment; +}; + /** - * @return {HTMLDivElement} + * @param {App.Entity.SlaveState} slave + * @returns {HTMLDivElement} + */ +App.MainView.useFucktoy = function(slave) { + const fragment = document.createDocumentFragment(); + + function setEnvironment() { + V.activeSlave = slave; + V.nextButton = "Back"; + V.nextLink = "AS Dump"; + V.returnTo = passage(); + } + + const {him, his} = getPronouns(slave); + + const div = document.createElement("div"); + div.classList.add("note"); + + div.append(App.Interact.ToyChest(slave)); + + div.append(" In the coming week you plan to concentrate on "); + + if (slave.toyHole !== "all her holes") { + div.append(`${his} ${slave.toyHole}`); + } else { + div.append(`all of ${his} holes equally`); + } + + if (slave.fuckdoll === 0) { + div.append(", but for now:"); + + const optionDiv = document.createElement("div"); + optionDiv.classList.add("indent"); + + optionDiv.append(App.UI.DOM.passageLink(`Use ${his} mouth`, "FLips", setEnvironment), + " | ", App.UI.DOM.passageLink("Play with " + his + " tits", "FBoobs", setEnvironment)); + + if (canDoVaginal(slave)) { + optionDiv.append(" | ", App.UI.DOM.passageLink(`Fuck ${him}`, "FVagina", setEnvironment)); + if (canDoAnal(slave)) { + optionDiv.append(" | ", App.UI.DOM.passageLink(`Use ${his} holes`, "FButt", setEnvironment)); + } + } + if (canDoAnal(slave)) { + optionDiv.append(" | ", App.UI.DOM.passageLink(`Fuck ${his} ass`, "FAnus", setEnvironment)); + } + if (canDoVaginal(slave) || canDoAnal(slave)) { + if (slave.belly >= 300000) { + optionDiv.append(" | ", App.UI.DOM.passageLink(`Fuck ${him} over ${his} belly`, "FBellyFuck", setEnvironment)); + } + } + if (canPenetrate(slave)) { + optionDiv.append(" | ", App.UI.DOM.passageLink(`Ride ${him}`, "FDick", setEnvironment)); + } + optionDiv.append(" | ", App.UI.DOM.passageLink(`Abuse ${him}`, "FAbuse", setEnvironment)); + + div.append(optionDiv); + } else { + div.append("."); + } + fragment.append(div); + + return div; +}; + +/** + * @returns {HTMLDivElement} */ App.MainView.useGuard = function() { const guard = V.slaves[V.slaveIndices[V.Bodyguard.ID]]; const outerDiv = document.createElement("div"); - if (guard === undefined || guard.assignment !== "guard you" || V.useSlaveSummaryOverviewTab === 1) { + if (guard === undefined || guard.assignment !== "guard you") { return outerDiv; } @@ -134,3 +211,67 @@ App.MainView.useGuard = function() { return outerDiv; }; + +App.MainView.full = function() { + function mainMenu() { + const div = document.createElement("div"); + + div.append(App.UI.DOM.makeElement("span", "MAIN MENU", "name")); + const span = document.createElement("span"); + span.classList.add("tab", "note"); + span.append(App.UI.DOM.passageLink("Summary Options", "Summary Options")); + + if (V.rulesAssistantMain !== 0) { + const raLink = document.createElement("span"); + raLink.id = "RAButton"; + raLink.append(" | ", App.UI.DOM.passageLink("Rules Assistant Options", "Rules Assistant"), + " ", App.UI.DOM.makeElement("span", "[R]", ["clear-formatting", "hotkey"])); + span.append(raLink); + + if (V.rulesAssistantAuto !== 1) { + span.append(" | ", App.UI.DOM.passageLink("Apply Rules Assistant at week end", "Main", () => { V.rulesAssistantAuto = 1; })); + } else { + span.append(" | ", App.UI.DOM.passageLink("Stop applying Rules Assistant at week end", "Main", () => { V.rulesAssistantAuto = 0; })); + } + span.append(" | "); + if (DefaultRulesError()) { + span.append(App.UI.DOM.makeElement("span", "WARNING: One or more rules' custom conditions has errors!", "warning")); + } + span.append(App.UI.DOM.passageLink("Re-apply Rules Assistant now (this will only check slaves in the Penthouse)", "Main", () => { + for (const slave of V.slaves) { + if (assignmentVisible(slave) && slave.useRulesAssistant === 1) { + DefaultRules(slave); + } + } + })); + } + div.append(" ", span); + return div; + } + + const fragment = document.createDocumentFragment(); + + fragment.append(App.Reminders.list({maxFuture: 5, link: true})); + + if (V.seeFCNN === 1) { + const div = document.createElement("div"); + div.classList.add("main-fcnn"); + div.append(App.MainView.fcnn(), + App.UI.DOM.passageLink("Hide", passage(), () => { V.seeFCNN = 0; }) + ); + fragment.append(div); + } + + fragment.append(mainMenu()); + + fragment.append(App.UI.SlaveList.penthousePage()); + + if (V.fucktoyInteractionsPosition === 0) { + fragment.append(App.MainView.useFucktoys()); + } + if (V.useSlaveSummaryOverviewTab === 0) { + fragment.append(App.MainView.useGuard()); + } + + return App.UI.DOM.includeDOM(fragment, "mainFullDOM"); +}; diff --git a/src/js/slaveListing.js b/src/js/slaveListing.js index 9e67529d96a1e51ff738758598ec8010786ced52..276c717bc823749b585a3b7896d33a57b691d35c 100644 --- a/src/js/slaveListing.js +++ b/src/js/slaveListing.js @@ -78,6 +78,9 @@ App.UI.SlaveList.render = function() { let slaveDiv = document.createElement("div"); slaveDiv.id = `slave-${slaves[_si].ID}`; slaveDiv.classList.add("slaveSummary"); + if (V.slavePanelStyle === 2) { + slaveDiv.classList.add("card"); + } slaveDiv.appendChild(ss); res.appendChild(slaveDiv); } @@ -147,9 +150,9 @@ App.UI.SlaveList.render = function() { */ function renderSlave(index, interactionLink, showTransfers, postNote) { let res = document.createDocumentFragment(); - if (V.lineSeparations === 0) { + if (V.slavePanelStyle === 0) { res.appendChild(document.createElement("br")); - } else { + } else if (V.slavePanelStyle === 1) { const hr = document.createElement("hr"); hr.style.margin = "0"; res.appendChild(hr); @@ -380,7 +383,7 @@ App.UI.SlaveList.render = function() { * <<print 'pass/count/indexed/flag::[' + passageName + '/' + _Count + '/' + _indexed + '/' + $SlaveSummaryFiler + ']'>> */ - if (indices.length > 1 && passageName === "Main" && V.useSlaveSummaryTabs === 0) { + if (indices.length > 1 && passageName === "Main") { const _buttons = []; let _offset = -50; if (/Select/i.test(passageName)) { @@ -590,6 +593,31 @@ App.UI.SlaveList.sortingLinks = function(passage) { return r; }; +/** + * @param {string} passage + * @returns {*} + */ +App.UI.SlaveList.sortingLinksDOM = function(passage) { + const outerDiv = document.createElement("div"); + outerDiv.classList.add("flex-container"); + const textify = string => capFirstChar(string.replace(/([A-Z])/g, " $1")); + + let innerDiv = App.UI.DOM.makeElement("div", "Sort by: ", "indent"); + let order = ["devotion", "name", "assignment", "seniority", "actualAge", "visualAge", "physicalAge", "weeklyIncome"] + .map(so => V.sortSlavesBy !== so ? + App.UI.DOM.passageLink(textify(so), passage, () => { V.sortSlavesBy = so; }) : textify(so)); + innerDiv.append(App.UI.DOM.arrayToList(order, " | ", " | ")); + outerDiv.append(innerDiv); + + innerDiv = App.UI.DOM.makeElement("div", "Sort: ", "indent"); + order = ["descending", "ascending"].map(so => V.sortSlavesOrder !== so ? + App.UI.DOM.passageLink(textify(so), passage, () => { V.sortSlavesOrder = so; }) : textify(so)); + innerDiv.append(App.UI.DOM.arrayToList(order, " | ", " | ")); + outerDiv.append(innerDiv); + + return outerDiv; +}; + /** * Standard tabs for a facility with a single job (SJ) * @param {App.Entity.Facilities.Facility} facility @@ -611,11 +639,11 @@ App.UI.SlaveList.listSJFacilitySlaves = function(facility, facilityPassage, show if (V.sortSlavesMain) { r += this.sortingLinks(facilityPassage) + '<br>'; } - r += '<div class="tab">' + + r += '<div class="tabbar">' + App.UI.tabbar.tabButton('assign', tabCaptions.assign) + App.UI.tabbar.tabButton('remove', tabCaptions.remove) + - (showTransfersTab ? App.UI.tabbar.tabButton('transfer', tabCaptions.transfer) : '')+ - '</div>'; + (showTransfersTab ? App.UI.tabbar.tabButton('transfer', tabCaptions.transfer) : '') + + '</div>'; if (facility.hostedSlaves > 0) { let facilitySlaves = job.employeesIndices(); @@ -699,17 +727,22 @@ App.UI.SlaveList.listNGPSlaves = function() { const thisPassage = 'New Game Plus'; let r = this.sortingLinks(thisPassage) + '<br>'; - r += '<div class="tab">' + + r += '<div class="tabbar">' + App.UI.tabbar.tabButton('assign', 'Import a slave') + App.UI.tabbar.tabButton('remove', 'Remove from import') + - '</div>'; + '</div>'; const NGPassignment = "be imported"; /** @type {App.Entity.SlaveState[]} */ const slaves = V.slaves; if (V.slavesToImport > 0) { - const importedSlavesIndices = slaves.reduce((acc, s, i) => { if (s.assignment === NGPassignment) { acc.push(i); } return acc; }, []); + const importedSlavesIndices = slaves.reduce((acc, s, i) => { + if (s.assignment === NGPassignment) { + acc.push(i); + } + return acc; + }, []); SlaveSort.indices(importedSlavesIndices); r += App.UI.tabbar.makeTab("remove", App.UI.SlaveList.render.listMarkup(importedSlavesIndices, [], App.UI.SlaveList.makeNameDecorator(["emphasizedSlave", "pink"]), @@ -767,169 +800,150 @@ App.UI.SlaveList.stdFacilityPage = function(facility, showTransfersPage) { App.UI.SlaveList.penthousePage = function() { const ph = App.Entity.facilities.penthouse; - const listElementId = 'summarylist'; // for the untabbed mode only - - function span(text, cls, id) { - return `<span${cls ? ` class="${cls}"` : ''}${id ? ` id="${id}"` : ''}>${text}</span>`; - } function overviewTabContent() { - let r = ''; - const thisArcology = V.arcologies[0]; + const fragment = document.createDocumentFragment(); + const A = V.arcologies[0]; + let slaveWrapper = document.createElement("div"); // first is a div so we have no space between slave and buttons if (V.HeadGirl) { /** @type {App.Entity.SlaveState} */ const HG = V.HeadGirl; - r += `${span(SlaveFullName(HG), "emphasizedSlave pink")} is serving as your Head Girl`; - if (thisArcology.FSEgyptianRevivalistLaw === 1) { - r += ' and Consort'; + slaveWrapper.append(App.UI.DOM.makeElement("span", SlaveFullName(HG), "slave-name"), + " is serving as your Head Girl"); + if (A.FSEgyptianRevivalistLaw === 1) { + slaveWrapper.append(" and Consort"); } - r += `. <strong> ${span(App.UI.passageLink("Manage Head Girl", "HG Select"), null, "manageHG")}</strong> ${span("[H]", "cyan")}`; - r += App.UI.SlaveList.render.listMarkup([App.Utils.slaveIndexForId(HG.ID)], [], - App.UI.SlaveList.SlaveInteract.penthouseInteract); + slaveWrapper.append(". "); + const link = App.UI.DOM.makeElement("span", App.UI.DOM.passageLink("Manage Head Girl", "HG Select"), "major-link"); + link.id = "manageHG"; + slaveWrapper.append(link, " ", App.UI.DOM.makeElement("span", "[H]", "hotkey")); + slaveWrapper.append(App.UI.SlaveList.render.listDOM([App.Utils.slaveIndexForId(HG.ID)], [], + App.UI.SlaveList.SlaveInteract.penthouseInteract)); } else { if (V.slaves.length > 1) { - r += `You have ${span("not", "red")} selected a Head Girl`; - if (thisArcology.FSEgyptianRevivalistLaw === 1) { - r += ' and Consort'; + slaveWrapper.append("You have ", App.UI.DOM.makeElement("span", "not", "warning"), " selected a Head Girl"); + if (A.FSEgyptianRevivalistLaw === 1) { + slaveWrapper.append(" and Consort"); + } + slaveWrapper.append(". ", App.UI.DOM.makeElement("span", App.UI.DOM.passageLink("Select One", "HG Select"), "major-link"), + " ", App.UI.DOM.makeElement("span", "[H]", "hotkey")); + slaveWrapper.id = "manageHG"; + if (V.slavePanelStyle === 2) { + slaveWrapper.classList.add("slaveSummary", "card"); } - r += `. <strong>${span(App.UI.passageLink("Select One", "HG Select"), null, "manageHG")}</strong> ${span("[H]", "cyan")}`; } else { - r += '<em>You do not have enough slaves to keep a Head Girl</em>'; + slaveWrapper.append("You do not have enough slaves to keep a Head Girl"); + slaveWrapper.classList.add("note"); } } - r += '<br>'; + fragment.append(slaveWrapper); + slaveWrapper = document.createElement("p"); if (V.Recruiter) { /** @type {App.Entity.SlaveState} */ const RC = V.Recruiter; - const p = getPronouns(RC); - r += `${span(SlaveFullName(RC), "emphasizedSlave pink")} is working `; + const {he} = getPronouns(RC); + slaveWrapper.append(App.UI.DOM.makeElement("span", SlaveFullName(RC), "slave-name"), + " is working"); if (V.recruiterTarget !== "other arcologies") { - r += 'to recruit girls'; + slaveWrapper.append(" to recruit girls"); } else { - r += 'as a Sexual Ambassador'; - if (thisArcology.influenceTarget === -1) { - r += ', but ' + span(p.object + ' has no target to influence', "red"); + slaveWrapper.append(" as a Sexual Ambassador"); + if (A.influenceTarget === -1) { + slaveWrapper.append(", but ", App.UI.DOM.makeElement("span", `${he} has no target to influence.`, "warning")); } else { - const targetName = V.arcologies.find(a => a.direction === thisArcology.influenceTarget).name; - r += ' to ' + targetName; + const targetName = V.arcologies.find(a => a.direction === A.influenceTarget).name; + slaveWrapper.append(` to ${targetName}.`); } } - r += `${span('. <strong>' + App.UI.passageLink("Manage Recruiter", "Recruiter Select") + '</strong>', null, "manageRecruiter")} ${span("[U]", "cyan")}`; - r += App.UI.SlaveList.render.listMarkup([App.Utils.slaveIndexForId(RC.ID)], [], - App.UI.SlaveList.SlaveInteract.penthouseInteract); + slaveWrapper.append(". "); + const link = App.UI.DOM.makeElement("span", App.UI.DOM.passageLink("Manage Recruiter", "Recruiter Select"), "major-link"); + link.id = "manageRecruiter"; + slaveWrapper.append(link, " ", App.UI.DOM.makeElement("span", "[U]", "hotkey")); + slaveWrapper.append(App.UI.SlaveList.render.listDOM([App.Utils.slaveIndexForId(RC.ID)], [], + App.UI.SlaveList.SlaveInteract.penthouseInteract)); } else { - r += `You have ${span("not", "red")} selected a Recruiter. `; - r += `${span('<strong>' + App.UI.passageLink("Select one", "Recruiter Select") + '</strong>', null, "manageRecruiter")} ${span("[U]", "cyan")}`; + slaveWrapper.append("You have ", App.UI.DOM.makeElement("span", "not", "warning"), " selected a Recruiter. ", + App.UI.DOM.makeElement("span", App.UI.DOM.passageLink("Select one", "Recruiter Select"), "major-link"), + " ", App.UI.DOM.makeElement("span", "[U]", "hotkey")); + slaveWrapper.id = "manageRecruiter"; + if (V.slavePanelStyle === 2) { + slaveWrapper.classList.add("slaveSummary", "card"); + } } + fragment.append(slaveWrapper); if (V.dojo) { - r += '<br>'; + slaveWrapper = document.createElement("p"); /** @type {App.Entity.SlaveState} */ const BG = V.Bodyguard; if (BG) { - r += `${span(SlaveFullName(BG), "emphasizedSlave pink")} is serving as your bodyguard. `; - r += span(`<strong>${App.UI.passageLink("Manage Bodyguard", "BG Select")}</strong> `, null, "manageBG") + - span("[B]", "cyan"); - r += App.UI.SlaveList.render.listMarkup([App.Utils.slaveIndexForId(BG.ID)], [], - App.UI.SlaveList.SlaveInteract.penthouseInteract); + slaveWrapper.append(App.UI.DOM.makeElement("span", SlaveFullName(BG), "slave-name"), + " is serving as your bodyguard. "); + const link = App.UI.DOM.makeElement("span", App.UI.DOM.passageLink("Manage Bodyguard", "BG Select"), "major-link"); + link.id = "manageBG"; + slaveWrapper.append(link, " ", App.UI.DOM.makeElement("span", "[B]", "hotkey")); + slaveWrapper.append(App.UI.SlaveList.render.listDOM([App.Utils.slaveIndexForId(BG.ID)], [], + App.UI.SlaveList.SlaveInteract.penthouseInteract)); + slaveWrapper.append(App.MainView.useGuard()); } else { - r += `You have ${span("not", "red")} selected a Bodyguard. `; - r += span(`<strong>${App.UI.passageLink("Select one", "BG Select")}</strong> `, null, "manageBG") + - span("[B]", "cyan"); - } - - /* Start Italic event text */ - if (BG && BG.assignment === "guard you") { - const p = getPronouns(BG); - V.i = App.Utils.slaveIndexForId(BG.ID); - const interactLinkSetters = `$activeSlave = $slaves[${V.i}], $nextButton = "Back", $nextLink = "AS Dump", $returnTo = "Main"`; - r += `<br><span class='scene-intro'>${App.Interact.guardPose(BG)}</span>`; - let useHimLinks = []; - useHimLinks.push(App.UI.passageLink(`Use ${p.his} mouth`, "FLips", interactLinkSetters)); - useHimLinks.push(App.UI.passageLink(`Play with ${p.his} tits`, "FBoobs", interactLinkSetters)); - if (canDoVaginal(BG)) { - useHimLinks.push(App.UI.passageLink(`Fuck ${p.him}`, "FVagina", interactLinkSetters)); - if (canDoAnal(BG)) { - useHimLinks.push(App.UI.passageLink(`Use ${p.his} holes`, "FButt", interactLinkSetters)); - } - if (BG.belly >= 300000) { - useHimLinks.push(App.UI.passageLink(`Fuck ${p.him} over ${p.his} belly`, "FBellyFuck", interactLinkSetters)); - } - } - /* check */ - if (canPenetrate(BG)) { - useHimLinks.push(App.UI.passageLink(`Ride ${p.him}`, "FDick", interactLinkSetters)); - } - if (canDoAnal(BG)) { - useHimLinks.push(App.UI.passageLink(`Fuck ${p.his} ass`, "FAnus", interactLinkSetters)); + slaveWrapper.append("You have ", App.UI.DOM.makeElement("span", "not", "warning"), " selected a Bodyguard. ", + App.UI.DOM.makeElement("span", App.UI.DOM.passageLink("Select one", "BG Select"), "major-link"), + " ", App.UI.DOM.makeElement("span", "[B]", "hotkey")); + slaveWrapper.id = "manageBG"; + if (V.slavePanelStyle === 2) { + slaveWrapper.classList.add("slaveSummary", "card"); } - useHimLinks.push(App.UI.passageLink(`Abuse ${p.him}`, "Gameover", '$gameover ="idiot ball"')); - - r += `<br> ${useHimLinks.join(' | ')}`; - /* End Italic event text */ } - r += "<br/>"; + + fragment.append(slaveWrapper); } - return r; + return fragment; } /** * @param {string} job - * @returns {{n: number, text: string}} + * @returns {{n: number, dom: DocumentFragment}} */ function _slavesForJob(job) { const employeesIndices = job === 'all' ? ph.employeesIndices() : ph.job(job).employeesIndices(); - if (employeesIndices.length === 0) { return {n: 0, text: ''}; } + if (employeesIndices.length === 0) { + return {n: 0, dom: document.createDocumentFragment()}; + } SlaveSort.indices(employeesIndices); - return { - n: employeesIndices.length, - text: App.UI.SlaveList.render.listMarkup(employeesIndices, [], App.UI.SlaveList.SlaveInteract.penthouseInteract) - }; - } - /** - * Displays job filter links, whose action are generated by the callback - * @param {assignmentFilterGenerateCallback} callback - * @returns {string} - */ - function _jobFilter(callback) { - const jd = App.Data.Facilities.penthouse.jobs; - let links = []; - links.push(`<<link "All">>${callback('all')}<</link>>`); - // seems like SC2 does not process data-setter when data-passage is not set - for (const jn in jd) { - links.push(`<<link "${capFirstChar(jd[jn].position)}">>${callback(jn)}<</link>>`); + if (V.fucktoyInteractionsPosition === 1 && job === "fucktoy") { + const fragment = document.createDocumentFragment(); + for (const i of employeesIndices) { + fragment.append(App.UI.SlaveList.render.listDOM([i], [], App.UI.SlaveList.SlaveInteract.penthouseInteract)); + fragment.append(App.MainView.useFucktoy(V.slaves[i])); + } + return { + n: employeesIndices.length, + dom: fragment + }; } - return links.join(' | '); + return { + n: employeesIndices.length, + dom: App.UI.SlaveList.render.listDOM(employeesIndices, [], App.UI.SlaveList.SlaveInteract.penthouseInteract) + }; } - function _updateList(job) { - State.temporary.mainPageUpdate.job = job; - const e = document.getElementById(listElementId); - e.innerHTML = ''; - const employeesIndices = job === 'all' ? ph.employeesIndices() : ph.job(job).employeesIndices(); - if (employeesIndices.length === 0) { - return; - } - SlaveSort.indices(employeesIndices); - e.appendChild(App.UI.SlaveList.render.listDOM(employeesIndices, [], App.UI.SlaveList.SlaveInteract.penthouseInteract)); - } /** * @typedef tabDesc * @property {string} tabName * @property {string} caption - * @property {string} content + * @property {Node} content */ /** * @param {string} tabName * @param {string} caption - * @param {string} content + * @param {Node} content * @returns {tabDesc} */ function makeTabDesc(tabName, caption, content) { @@ -942,111 +956,131 @@ App.UI.SlaveList.penthousePage = function() { /** * Displays encyclopedia entries for occupations at the top of the tab, if enabled - * @returns {string} + * @returns {HTMLSpanElement} */ function encycTips(jn) { - let r =`<span class="note">`; + const span = document.createElement("span"); + span.classList.add("note"); if (V.showTipsFromEncy) { switch (jn) { case "rest": - r += `<<encyclopediaEntryRest>>`; + span.append(App.Encyclopedia.Entries.rest()); break; case "chooseOwn": break; /* no entry written for choose own */ case "fucktoy": - r += `<<encyclopediaEntryFucktoy>>`; + span.append(App.Encyclopedia.Entries.fucktoy()); break; case "classes": - r += `<<encyclopediaEntryAttendingClasses>>`; + span.append(App.Encyclopedia.Entries.attendingClasses()); break; case "houseServant": - r += `<<encyclopediaEntryServitude>>`; + span.append(App.Encyclopedia.Entries.servitude()); break; case "whore": - r += `<<encyclopediaEntryWhoring>>`; + span.append(App.Encyclopedia.Entries.whoring()); break; case "publicServant": - r += `<<encyclopediaEntryPublicService>>`; + span.append(App.Encyclopedia.Entries.publicService()); break; case "subordinateSlave": - r += `<<encyclopediaEntrySexualServitude>>`; + span.append(App.Encyclopedia.Entries.sexualServitude()); break; case "cow": - r += `<<encyclopediaEntryMilking>>`; + span.append(App.Encyclopedia.Entries.milking()); break; case "gloryhole": - r += `<<encyclopediaEntryGloryHole>>`; + span.append(App.Encyclopedia.Entries.gloryHole()); break; case "confinement": - r += `<<encyclopediaEntryConfinement>>`; + span.append(App.Encyclopedia.Entries.confinement()); break; default: - r += `missing tip for this tab`; + span.append(App.UI.DOM.makeElement("span", "missing tip for this tab", "error")); break; } } - return r += `</span>`; + return span; } - let r = ''; + function allTab() { + const penthouseSlavesIndices = ph.employeesIndices(); + SlaveSort.indices(penthouseSlavesIndices); + return makeTabDesc('all', `All${V.useSlaveSummaryTabs > 0 ? ` (${penthouseSlavesIndices.length})` : ""}`, + App.UI.SlaveList.render.listDOM(penthouseSlavesIndices, [], App.UI.SlaveList.SlaveInteract.penthouseInteract)); + } + + let fragment = document.createDocumentFragment(); if (V.positionMainLinks >= 0) { - r += '<center>' + App.UI.View.MainLinks() + '</center><br>'; + fragment.append(App.UI.DOM.makeElement("div", App.UI.View.mainLinks(), "center")); } if (V.sortSlavesMain) { - r += '<br>' + this.sortingLinks("Main") + '<br>'; + fragment.append(App.UI.SlaveList.sortingLinksDOM("Main")); } - if (V.useSlaveSummaryTabs) { - /** @type {tabDesc[]} */ - let tabs = []; + /** @type {tabDesc[]} */ + let tabs = []; - // Overview tab - if (V.useSlaveSummaryOverviewTab) { - tabs.push(makeTabDesc('overview', 'Overview', overviewTabContent())); - } + // Overview tab + if (V.useSlaveSummaryOverviewTab) { + tabs.push(makeTabDesc('overview', "Special Roles", overviewTabContent())); + } - // tabs for each assignment - for (const jn of ph.jobsNames) { - const slaves = _slavesForJob(jn); - if (slaves.n > 0) { - tabs.push(makeTabDesc(jn, `${ph.desc.jobs[jn].position} (${slaves.n})`, encycTips(jn) + slaves.text)); - } - } + if (V.useSlaveSummaryTabs === 0) { + tabs.push(allTab()); + } - // now generate the "All" tab - const penthouseSlavesIndices = ph.employeesIndices(); - SlaveSort.indices(penthouseSlavesIndices); - tabs.push(makeTabDesc('all', `All (${penthouseSlavesIndices.length})`, - this.render.listMarkup(penthouseSlavesIndices, [], App.UI.SlaveList.SlaveInteract.penthouseInteract))); + // tabs for each assignment + for (const jn of ph.jobsNames) { + const slaves = _slavesForJob(jn); + if (slaves.n > 0) { + tabs.push(makeTabDesc(jn, `${ph.desc.jobs[jn].position}${V.useSlaveSummaryTabs > 0 ? ` (${slaves.n})` : ""}`, App.UI.DOM.combineNodes(encycTips(jn), slaves.dom))); + } else if (V.useSlaveSummaryTabs === 0) { + tabs.push(makeTabDesc(jn, ph.desc.jobs[jn].position, encycTips(jn))); + } + } + if (V.useSlaveSummaryTabs > 0) { + tabs.push(allTab()); + } - r += '<div class="tab">'; + const div = document.createElement("div"); + div.classList.add("tabbar"); + if (V.useSlaveSummaryTabs === 0) { + const links = []; for (const tab of tabs) { - r += App.UI.tabbar.tabButton(tab.tabName, tab.caption); + links.push(App.UI.tabbar.tabButtonDOM(tab.tabName, tab.caption, true)); } - r += '</div>'; - + div.append(App.UI.DOM.arrayToList(links, " | ", " | ")); + } else { for (const tab of tabs) { - r += App.UI.tabbar.makeTab(tab.tabName, tab.content); + const button = App.UI.tabbar.tabButtonDOM(tab.tabName, tab.caption); + if (V.useSlaveSummaryTabs === 2) { + button.classList.add("card"); + } + div.append(button); } - } else { - State.temporary.mainPageUpdate = { - job: State.temporary.mainPageUpdate ? State.temporary.mainPageUpdate.job : 'all', - update: _updateList - }; - - $(document).one(':passagedisplay', () => { _updateList(State.temporary.mainPageUpdate.job); }); - r += `<div>${_jobFilter(s => `<<run _mainPageUpdate.update("${s}")>>`)} <div id=${listElementId}></div></div>`; + } + fragment.append(div); + + for (const tab of tabs) { + const div = App.UI.tabbar.makeTabDOM(tab.tabName, tab.content); + if (V.useSlaveSummaryTabs === 0) { + div.classList.add("noFade"); + } else if (V.useSlaveSummaryTabs === 2) { + div.classList.add("card"); + } + fragment.append(div); } if (V.positionMainLinks <= 0) { - r += '<br><center>' + App.UI.View.MainLinks() + '</center>'; + fragment.append(App.UI.DOM.makeElement("div", App.UI.View.mainLinks(), "center")); } App.UI.tabbar.handlePreSelectedTab(); - return r; + return fragment; }; /** diff --git a/src/js/utilsDOM.js b/src/js/utilsDOM.js index 67f70fb1ec862bef704507e3312cc0340b297940..e087b7c3730b08681221f1ee14bd496366acd918 100644 --- a/src/js/utilsDOM.js +++ b/src/js/utilsDOM.js @@ -247,6 +247,46 @@ App.UI.DOM.colorInput = function(defaultValue, onEnter) { return input; }; +/** + * @param {Node} node + * @param {string} uniqueID - should be unique in the whole passage + * @param {string} [tag] + * @returns {string} + */ +App.UI.DOM.includeDOM = function(node, uniqueID, tag = "span") { + $(document).one(':passagedisplay', () => { $(`#inclDOM${uniqueID}`).append(node); }); + + return `<${tag} id='inclDOM${uniqueID}'></${tag}>`; +}; + +/** + * Concats an array of DOM nodes or strings into a human readable list. + * + * @param {Array<Node|string>} content + * @param {string} [delimiter] + * @param {string} [lastDelimiter] + * @returns {Node|string} + */ +App.UI.DOM.arrayToList = function(content, delimiter = ", ", lastDelimiter = " and ") { + if (content.length === 0) { + return "none"; + } + if (this.length === 1) { + return content[0]; + } + const fragment = document.createDocumentFragment(); + const last = content.pop(); + for (let i = 0; i < content.length; i++) { + fragment.append(content[i]); + if (i < content.length - 1) { + fragment.append(delimiter); + } + } + content.push(last); // don't leave the array modified + fragment.append(lastDelimiter, last); + return fragment; +}; + /** * @param {string} text * @returns {HTMLElement} diff --git a/src/js/utilsFC.js b/src/js/utilsFC.js index 4c24b30c45cb81a6f48a4b67dd749ef35faa641c..8e368ddc3bf3d08551656bf06d62bba81e4704d3 100644 --- a/src/js/utilsFC.js +++ b/src/js/utilsFC.js @@ -2861,3 +2861,23 @@ window.generateSlaveID = function() { } return V.IDNumber++; }; + +window.ASDump = function() { + if ((typeof V.activeSlave === undefined) || (V.activeSlave === 0)) { + return `<span class="red">ERROR:</span> AS Dump, activeSlave invalid, returnTo is 'V.returnTo', previous passage was '${previous()}'. Please report this. `; + } else { + let SL = V.slaves.length; + let ID = V.activeSlave.ID; + if (V.i >= 0 && V.i < SL && V.slaves[V.i].ID === ID) { /* shortcut if V.i is already pointing to this slave */ + V.slaves[V.i] = V.activeSlave; + } else { + V.i = V.slaveIndices[ID]; // find V.i if exists + if (typeof V.i === undefined) { /* not found, so new slave */ + newSlave(V.activeSlave); + } else { + V.slaves[V.i] = V.activeSlave; + } + } + clearSummaryCache(V.activeSlave); + } +}; diff --git a/src/js/utilsSC.js b/src/js/utilsSC.js index 0750f1ffeae7d7b18fae4b2d91d08dd24c327d8a..5e1e5008faf948cbb7dfed1f6c0bb62c6a2ee708 100644 --- a/src/js/utilsSC.js +++ b/src/js/utilsSC.js @@ -147,7 +147,9 @@ App.UI.tabbar = function() { return { openTab: openTab, tabButton: tabButton, + tabButtonDOM: tabButtonDOM, makeTab: makeTab, + makeTabDOM: makeTabDOM, handlePreSelectedTab: handlePreSelectedTab, tabChoiceVarName: tabChoiceVarName }; @@ -176,6 +178,34 @@ App.UI.tabbar = function() { return `<button class="tablinks" onclick="App.UI.tabbar.openTab(event, '${name}')" id="tab ${name}">${text}</button>`; } + /** + * @param {string} name + * @param {string} text + * @param {boolean} [plainLink] + * @returns {HTMLButtonElement|HTMLAnchorElement} + */ + function tabButtonDOM(name, text, plainLink = false) { + if (plainLink) { + const link = document.createElement("a"); + link.classList.add("tablinks", "pure"); + link.id = `tab ${name}`; + link.textContent = text; + link.addEventListener('click', event => { + openTab(event, name); + }); + return link; + } else { + const button = document.createElement("button"); + button.classList.add("tablinks"); + button.id = `tab ${name}`; + button.textContent = text; + button.addEventListener('click', event => { + openTab(event, name); + }); + return button; + } + } + /** * @param {string} name * @param {string} content @@ -185,20 +215,41 @@ App.UI.tabbar = function() { return `<div id="${name}" class="tabcontent"><div class="content">${content}</div></div>`; } + /** + * @param {string} name + * @param {Node} content + * @returns {HTMLDivElement} + */ + function makeTabDOM(name, content) { + const outerDiv = document.createElement("div"); + outerDiv.id = name; + outerDiv.classList.add("tabcontent"); + const innerDiv = document.createElement("div"); + innerDiv.classList.add("content"); + innerDiv.append(content); + outerDiv.append(innerDiv); + return outerDiv; + } + function handlePreSelectedTab(defaultTab = "assign", immidiate = false) { let selectedTab = State.variables.tabChoice[tabChoiceVarName()]; - if (!selectedTab) { selectedTab = defaultTab; } + if (!selectedTab) { + selectedTab = defaultTab; + } + function selectTab() { let tabBtn = document.getElementById(`tab ${selectedTab}`); if (!tabBtn) { tabBtn = document.getElementsByClassName('tablinks').item(0); } - if (tabBtn) { tabBtn.click(); } + if (tabBtn) { + tabBtn.click(); + } } if (immidiate) { selectTab(); } else { - $(document).one(':passagedisplay', selectTab); + $(document).one(':passageend', selectTab); } } diff --git a/src/js/wombJS.js b/src/js/wombJS.js index 7deafe8bff514725589d8c470236e22de733e9e3..8e36eddced977b7255e6993b1c9d6adf713b2de9 100644 --- a/src/js/wombJS.js +++ b/src/js/wombJS.js @@ -891,9 +891,7 @@ window.WombGetLittersData = function(actor) { }; window.BCReserveInit = function() { - let SV = State.variables; - - SV.slaves.forEach(function(slave) { + V.slaves.forEach(function(slave) { slave.womb.forEach(function(ft) { if (typeof ft.reserve !== 'string') { ft.reserve = ""; @@ -910,12 +908,12 @@ window.BCReserveInit = function() { }); }); - SV.PC.womb.forEach(function(ft) { + V.PC.womb.forEach(function(ft) { if (typeof ft.reserve !== 'string') { ft.reserve = ""; } if (typeof ft.motherID !== 'number') { - ft.motherID = SV.PC.ID; + ft.motherID = V.PC.ID; } if (typeof ft.realAge !== 'number') { // setting missing chronological age ft.realAge = ft.age; diff --git a/src/npc/acquisition.tw b/src/npc/acquisition.tw index 28c146729dccf70cad52765a3f428c8d7de52b34..1ee89d8d51523be72bf93696c396c7d2bf68f0ee 100644 --- a/src/npc/acquisition.tw +++ b/src/npc/acquisition.tw @@ -203,6 +203,8 @@ <<set $rivalSet = 1>> <<set $arcologies[_bestProsperityIndex].rival = 1>> <</if>> +<<set $targetAge = $minimumSlaveAge>> +<<set $targetAgeNursery = $minimumSlaveAge>> You've done it. <br><br> diff --git a/src/personalAssistant/assistant.js b/src/personalAssistant/assistant.js index 2d1d7e269b58ec5ca411ad4d8864cd1318716d1b..dbe3c99bd22e76149e0f99a79114e2dd7a5f4d3a 100644 --- a/src/personalAssistant/assistant.js +++ b/src/personalAssistant/assistant.js @@ -48,9 +48,9 @@ window.assistant = (function() { } function pronouns() { - let o = {} + let o = {}; if (V.assistant.personality === 0 || V.assistant.appearance === "normal") { - o.main = {pronoun: App.Data.Pronouns.Kind.ai}; + o.main = o.market = {pronoun: App.Data.Pronouns.Kind.ai}; } else { if (V.assistant.appearance === "incubus" && V.diversePronouns > 0) { o.main = {pronoun: App.Data.Pronouns.Kind.male}; @@ -87,4 +87,4 @@ window.assistant = (function() { delete V.assistant.options; } } -})(); \ No newline at end of file +})(); diff --git a/src/pregmod/breedingTest.tw b/src/pregmod/breedingTest.tw index a5d83622774a765200c85fb8d360f0d0e19e8f03..8eb2a76d8af3716b7e104b7c40b8ab9ece538a33 100644 --- a/src/pregmod/breedingTest.tw +++ b/src/pregmod/breedingTest.tw @@ -1,7 +1,6 @@ :: BreedingTest [nobr] -<<set $nextButton = "Back">> -<<set $nextLink = "Slave Interact">> +<<set $nextButton = "Confirm changes", $nextLink = "AS Dump", $returnTo = "Slave Interact">> <<UpdateStandards>> <<BreedingStandards>> diff --git a/src/pregmod/newChildIntro.tw b/src/pregmod/newChildIntro.tw index cfb1917caea79307c0a683789951c950c2c93689..923a1d9f05e23d86f2744359f8dd4ffb6acaacbc 100644 --- a/src/pregmod/newChildIntro.tw +++ b/src/pregmod/newChildIntro.tw @@ -1180,8 +1180,7 @@ You slowly strip down, gauging $his reactions to your show, until you are fully <</link>> <</if>> -<<set $toSearch = $activeSlave.hStyle>> -<<if ($toSearch.indexOf("shaved") == -1)>> +<<if ($activeSlave.hStyle.indexOf("shaved") == -1)>> <br><<link "Shave $his hair">> <<set $activeSlave.devotion -= 25>> <<set $activeSlave.hStyle = "shaved">> diff --git a/src/pregmod/saClothes.tw b/src/pregmod/saClothes.tw index 7d7485b4fcd9b27746c33175277dd78db0ea7910..753c70d78704d633796ab2bd3f95d3ee363062a1 100644 --- a/src/pregmod/saClothes.tw +++ b/src/pregmod/saClothes.tw @@ -519,7 +519,7 @@ <<if $slaves[$i].belly > 10000>> $His pregnancy support band takes some weight off $his back, but it does little beyond that. <</if>> - <<elseif setup.fakeBellies.includes($bellyAccessory)>> + <<elseif setup.fakeBellies.includes($slaves[$i].bellyAccessory)>> <<if $slaves[$i].weight > 130>> $He has trouble keeping $his fake belly strapped around $his huge gut, forcing it to be removed to prevent damage. <<set $slaves[$i].bellyAccessory = "none">> diff --git a/src/pregmod/seFCTVinstall.tw b/src/pregmod/seFCTVinstall.tw index ee92f954f3dd6ba04ddbf0b0688785bf17d0f662..fd94f788c5abc9fa6aff3eb4de9de7a6b528f95b 100644 --- a/src/pregmod/seFCTVinstall.tw +++ b/src/pregmod/seFCTVinstall.tw @@ -1,7 +1,6 @@ :: SE FCTV Install [nobr] <<set $nextButton = "Continue", $nextLink = "Scheduled Event", $returnTo = "Scheduled Event", $showEncyclopedia = 1, $encyclopedia = "FCTV", $receiverAvailable = 1>> -<<set $showOne = 0, $showTwo = 0, $showThree = 0, $showFour = 0, $showFive = 0, $showSix = 0, $showSeven = 0, $showEight = 0, $showNine = 0, $showTen = 0, $showEleven = 0, $showTwelve = 0, $showThirteen = 0, $showFourteen = 0, $randShow = 0, $lastShow = -1>> You've been sitting in your office into the early afternoon going over bothersome lease documents that need your approval. When you take a break to look out the window, $assistant.name speaks up. "<<= properTitle()>>, you have received an approval welcome packet from 8HGG Inc. in regards to Free Cities TV. It seems that they've determined that $arcologies[0].name is now sufficiently developed enough to warrant a FCTV-Citizen connection. All the details and contracts necessary are included in the packet. From there, a receiver will need to be built onto $arcologies[0].name in order to access FCTV." <br><br> diff --git a/src/pregmod/seFCTVwatch.tw b/src/pregmod/seFCTVwatch.tw index b694d865c09aa4d42ed54323598304bd7cccd357..56c351f1e75826ceb93b9d788160148860a58911 100644 --- a/src/pregmod/seFCTVwatch.tw +++ b/src/pregmod/seFCTVwatch.tw @@ -1,24 +1,7 @@ :: SE FCTV Watch [nobr] <<set $nextButton = "Continue", $nextLink = "Scheduled Event", $returnTo = "Scheduled Event", $showEncyclopedia = 1, $encyclopedia = "FCTV", $randShow = "", $FCTVshow = 0>> -<<if ndef $showEleven>> - <<set $showEleven = 0>> -<</if>> -<<if ndef $showTwelve>> /* Milkanon's channel */ - <<set $showTwelve = 0>> -<</if>> -<<if ndef $showThirteen>> /* Channel13's work */ - <<set $showThirteen = 0>> -<</if>> -<<if ndef $showFourteen>> /* anon's story channel */ - <<set $showFourteen = 0>> -<</if>> -<<if ndef $showFifteen>> /* the pirate channel */ - <<set $showFifteen = 0>> -<</if>> -<<if ndef $showSixteen>> /* Ages of Slavery channel */ - <<set $showSixteen = 0>> -<</if>> + Tired after a long day, you tell <<if $Concubine != 0>>@@.pink;$Concubine.slaveName@@<<else>>$assistant.name<</if>> to turn on the TV and <<if $cheatMode == 1 || $debugMode == 1 || $FCTVremote > 0>> diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw index 9a4e7f1d940c03719df48a55f1e112b867601ac9..b3ce049aef68a0ddcb2c3ceb1d719d0fa5702155 100644 --- a/src/pregmod/widgets/pregmodWidgets.tw +++ b/src/pregmod/widgets/pregmodWidgets.tw @@ -996,42 +996,3 @@ $activeSlave.slaveName is up for review: <<set $AgeTrainingLowerBoundPC = 3, $AgeTrainingUpperBoundPC = 5, $AgeEffectOnTrainerPricingPC = 1.08, $AgeEffectOnTrainerEffectivenessPC = 1.08>> <</switch>> <</widget>> - -<<widget "HeroSlavesCleanup">> -<<run $heroSlaves.forEach(function(s) { - /* Nationalities, races, surnames random fill */ - if(!s.nationality) { - /* Check for a pre-set race and if the nationality fits, else regenerate */ - if(s.race && setup.filterRacesLowercase.includes(s.race)) { - raceToNationality(s); - } else { - s.nationality = hashChoice($nationalities); - } - } - if(!s.race || !setup.filterRacesLowercase.includes(s.race)) { - nationalityToRace(s); - } - if(!s.birthSurname && s.birthSurname !== "") { - s.birthSurname = (setup.surnamePoolSelector[s.nationality + "." + s.race] - || setup.surnamePoolSelector[s.nationality] - || setup.whiteAmericanSlaveSurnames).random(); - } - if(!s.birthName && s.birthName !== "") { - s.birthName = (setup.namePoolSelector[s.nationality + "." + s.race] - || setup.namePoolSelector[s.nationality] - || setup.whiteAmericanSlaveNames).random(); - } - generatePronouns(s); - if(s.geneMods == undefined) { - s.geneMods = {NCS: 0, rapidCellGrowth: 0}; - } else { - if(s.geneMods.NCS == undefined) { - s.geneMods.NCS = 0; - } - if(s.geneMods.rapidCellGrowth == undefined) { - s.geneMods.rapidCellGrowth = 0; - } - } - /*WombInit(s);*/ -})>> -<</widget>> diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw deleted file mode 100644 index eb0992455e723b6be7c2f455ffb23e6c3af3e3df..0000000000000000000000000000000000000000 --- a/src/uncategorized/BackwardsCompatibility.tw +++ /dev/null @@ -1,3750 +0,0 @@ -:: Backwards Compatibility [nobr] - -/* no-usedOnce disabling checking for only used once instances in this file */ -<<set $nextButton = "Continue", $nextLink = "Main", $returnTo = "Main">> - -<<if $releaseID == 1021 || $releaseID == 1020 || $releaseID == 1019 || $releaseID == 2022>> - <<set $releaseID = 1022>> -<</if>> - -<<if $releaseID < 1055>> - <<if $disableLisping == 0>> - <<set $disableLisping = 1>> - <<else>> - <<set $disableLisping = 0>> - <</if>> -<</if>> - -<<if Array.isArray($nationalities)>> - <<set $nationalities = weightedArray2HashMap($nationalities)>> -<</if>> - -<<if def $brothelSlaves>> - <<unset $brothelSlaves>> -<</if>> -<<if def $clubSlaves>> - <<unset $clubSlaves>> -<</if>> -<<if def $arcadeSlaves>> - <<unset $arcadeSlaves>> -<</if>> -<<if def $dairySlaves>> - <<unset $dairySlaves>> -<</if>> -<<if def $servantsQuartersSlaves>> - <<unset $servantsQuartersSlaves>> -<</if>> -<<if def $masterSuiteSlaves>> - <<unset $masterSuiteSlaves>> -<</if>> -<<if def $HGSuiteSlaves>> - <<unset $HGSuiteSlaves>> -<</if>> -<<if def $farmyardSlaves>> - <<unset $farmyardSlaves>> -<</if>> -<<if def $cellblockSlaves>> - <<unset $cellblockSlaves>> -<</if>> -<<if def $schoolroomSlaves>> - <<unset $schoolroomSlaves>> -<</if>> -<<if def $spaSlaves>> - <<unset $spaSlaves>> -<</if>> -<<if ndef $spaSpots>> - <<set $spaSpots = 0>> -<</if>> -<<if def $nurserySlaves>> - <<unset $nurserySlaves>> -<</if>> - -<<if def $hostageCost>> - <<unset $hostageCost>> -<</if>> - -<<if def $youngCareers>> - <<unset $youngCareers, $educatedCareers, $uneducatedCareers, $gratefulCareers, $menialCareers, $entertainmentCareers, $whoreCareers, $HGCareers, $madamCareers, $DJCareers, $bodyguardCareers, $wardenessCareers, $nurseCareers, $attendantCareers, $matronCareers, $milkmaidCareers, $farmerCareers, $stewardessCareers, $schoolteacherCareers>> - - <<unset $whiteNationalities, $asianNationalities, $latinaNationalities, $middleeasternNationalities, $blackNationalities, $indoaryanNationalities, $pacificislanderNationalities, $malayNationalities, $amerindianNationalities, $southerneuropeanNationalities, $semiticNationalities>> - - <<unset $whiteAmericanSlaveNames, $africanAmericanSlaveNames, $asianAmericanSlaveNames, $latinaSlaveNames, $russianSlaveNames, $egyptianSlaveNames, $brazilianSlaveNames, $chineseSlaveNames, $koreanSlaveNames, $indianSlaveNames, $indonesianSlaveNames, $bangladeshiSlaveNames, $japaneseSlaveNames, $nigerianSlaveNames, $pakistaniSlaveNames, $mexicanSlaveNames, $filipinaSlaveNames, $ethiopianSlaveNames, $germanSlaveNames, $saudiSlaveNames, $turkishSlaveNames, $colombianSlaveNames, $argentinianSlaveNames, $vietnameseSlaveNames, $iranianSlaveNames, $congoleseSlaveNames, $frenchSlaveNames, $thaiSlaveNames, $britishSlaveNames, $italianSlaveNames, $spanishSlaveNames, $kenyanSlaveNames, $ukrainianSlaveNames, $canadianSlaveNames, $peruvianSlaveNames, $venezuelanSlaveNames, $irishSlaveNames, $icelandicSlaveNames, $finnishSlaveNames, $newZealanderSlaveNames, $polishSlaveNames, $greekSlaveNames, $israeliSlaveNames, $armenianSlaveNames, $moroccanSlaveNames, $romanianSlaveNames, $swedishSlaveNames, $lithuanianSlaveNames, $bolivianSlaveNames, $haitianSlaveNames, $cubanSlaveNames, $whiteSouthAfricanSlaveNames, $blackSouthAfricanSlaveNames, $chileanSlaveNames, $belgianSlaveNames, $danishSlaveNames, $norwegianSlaveNames, $hungarianSlaveNames, $estonianSlaveNames, $slovakSlaveNames, $kazakhSlaveNames, $zimbabweanSlaveNames, $ugandanSlaveNames, $tanzanianSlaveNames, $dutchSlaveNames, $austrianSlaveNames, $swissSlaveNames, $puertoRicanSlaveNames, $czechSlaveNames, $portugueseSlaveNames, $jamaicanSlaveNames, $malaysianSlaveNames, $guatemalanSlaveNames, $ghananSlaveNames, $serbianSlaveNames, $australianSlaveNames, $burmeseSlaveNames, $algerianSlaveNames, $sudaneseSlaveNames, $iraqiSlaveNames, $uzbekSlaveNames, $nepaleseSlaveNames, $afghanSlaveNames, $yemeniSlaveNames, $lebaneseSlaveNames, $tunisianSlaveNames, $emiratiSlaveNames, $libyanSlaveNames, $jordanianSlaveNames, $omaniSlaveNames, $malianSlaveNames, $sammarineseSlaveNames, $marshalleseSlaveNames, $syrianSlaveNames, $bermudianSlaveNames, $uruguayanSlaveNames, $monegasqueSlaveNames, $montenegrinSlaveNames, $cambodianSlaveNames, $cameroonianSlaveNames, $gaboneseSlaveNames, $djiboutianSlaveNames, $greenlandicSlaveNames, $tuvaluanSlaveNames, $zambianSlaveNames, $albanianSlaveNames, $bruneianSlaveNames, $singaporeanSlaveNames>> - - <<unset $cowSlaveNames, $chattelReligionistSlaveNames, $romanSlaveNames, $aztecSlaveNames, $ancientEgyptianSlaveNames, $edoSlaveNames>> - - <<unset $ArcologyNamesSupremacistWhite, $ArcologyNamesSupremacistAsian, $ArcologyNamesSupremacistLatina, $ArcologyNamesSupremacistMiddleEastern, $ArcologyNamesSupremacistBlack, $ArcologyNamesSupremacistIndoAryan, $ArcologyNamesSupremacistPacificIslander, $ArcologyNamesSupremacistMalay, $ArcologyNamesSupremacistAmerindian, $ArcologyNamesSupremacistSouthernEuropean, $ArcologyNamesSupremacistSemitic, $ArcologyNamesSupremacistMixedRace>> - - <<unset $ArcologyNamesSubjugationistWhite, $ArcologyNamesSubjugationistAsian, $ArcologyNamesSubjugationistLatina, $ArcologyNamesSubjugationistMiddleEastern, $ArcologyNamesSubjugationistBlack, $ArcologyNamesSubjugationistIndoAryan, $ArcologyNamesSubjugationistPacificIslander, $ArcologyNamesSubjugationistMalay, $ArcologyNamesSubjugationistAmerindian, $ArcologyNamesSubjugationistSouthernEuropean, $ArcologyNamesSubjugationistSemitic, $ArcologyNamesSubjugationistMixedRace>> - - <<unset $ArcologyNamesGenderRadicalist, $ArcologyNamesGenderFundamentalist, $ArcologyNamesPaternalist, $ArcologyNamesDegradationist, $ArcologyNamesBodyPurist, $ArcologyNamesTransformationFetishist, $ArcologyNamesYouthPreferentialist, $ArcologyNamesMaturityPreferentialist, $ArcologyNamesSlimnessEnthusiast, $ArcologyNamesAssetExpansionist, $ArcologyNamesPastoralist, $ArcologyNamesPhysicalIdealist, $ArcologyNamesChattelReligionist, $ArcologyNamesRomanRevivalist, $ArcologyNamesAztecRevivalist, $ArcologyNamesEgyptianRevivalist, $ArcologyNamesEdoRevivalist, $ArcologyNamesArabianRevivalist, $ArcologyNamesChineseRevivalist>> - - /* pregmod-exclusive variables below */ - <<unset $veryYoungCareers, $recruiterCareers>> - <<unset $northamericaNationalities, $southamericaNationalities, $europeNationalities, $asiaNationalities, $middleeastNationalities, $africaNationalities, $australiaNationalities>> - <<unset $belarusianSlaveNames, $dominicanSlaveNames, $scottishSlaveNames>> - <<unset $ArcologyNamesEugenics, $ArcologyNamesRepopulationist, $ArcologyNamesHedonisticDecadence>> - <<unset $drugs, $harshCollars, $shoes, $bellyAccessories, $vaginalAccessories, $dickAccessories, $buttplugs>> -<</if>> - -<<if def $Flag>> - <<unset $Flag>> -<</if>> - -<<if typeof $brandTarget == "string">> - <<set $brandTarget = {primary: $brandTarget, secondary: "buttock", local: "buttock"}>> -<<elseif typeof $brandTarget != "object">> - <<set $brandTarget = {primary: "buttock", secondary: "buttock", local: "buttock"}>> -<</if>> - -<<if typeof $brandDesign == "string">> - <<set $brandDesign = {primary: $brandDesign, official: $brandDesign, local: $brandDesign}>> -<<elseif typeof $brandDesign != "object">> - <<set $brandDesign = {primary: "your initials", official: "your initials", local: "your initials"}>> -<</if>> - -<<if ndef $brandDesign.official>> - <<set $brandDesign.official = "your personal symbol">> -<</if>> - -<<if ndef $scarTarget>> - <<set $scarTarget = {primary: "left cheek", secondary: "left cheek", local: "left cheek"}>> -<</if>> -<<if ndef $scarDesign>> - <<set $scarDesign = {primary: "generic", local: "generic"}>> -<</if>> - -<<if def $servantMilkersJobs>> - <<unset $servantMilkersJobs>> -<</if>> - -<<if def $fakeBellies>> - <<unset $fakeBellies>> -<</if>> - -<<if def $badWords>> - <<unset $badWords>> -<</if>> - -<<if def $badNames>> - <<unset $badNames>> -<</if>> - -<<if (def $origin) || (def $origins)>> - <<unset $origin, $origins>> -<</if>> - -<<if (def $hare1) || (def $hareSpeed1)>> - <<unset $hare1, $hare2, $hare3, $hareSpeed, $hareSpeed1, $hareSpeed2, $hareSpeed3, $origin1, $origin2, $origin3, $LurcherSpeed>> -<</if>> - -<<if def $basenationalities>> - <<unset $basenationalities>> -<</if>> - -<<if (ndef $marrying.length) || (ndef $marrying)>> - <<set $marrying = []>> -<</if>> -<<if (ndef $weddingPlanned) || (ndef $marrying) || (ndef $marrying.length) || ($marrying.length < 1)>> - <<set $weddingPlanned = 0>> -<</if>> - -<<if def $weddingSlaveID>> - <<unset $weddingSlaveID>> - <<set $weddingPlanned = 0>> -<</if>> - -<<if ndef $reminders>> - <<set $reminders = []>> -<<elseif !Array.isArray($reminders)>> - <<set _r = $reminders, $reminders = []>> - <<for _i = 0; _i < _r.entries.length; _i++>> - <<run App.Reminders.add(_r.entries[_i], $week + Number(_r.weeks[_i]))>> - <</for>> - <<for _i = 0; _i < _r.overdue.length; _i++>> - <<set _s = _r.overdue[_i].split(" ")>> - <<run _s.splice(_s.length-5, 5)>> - <<set _s = _s.join(" ")>> - <<run App.Reminders.add(_s, $week - 1)>> - <</for>> -<</if>> - -<<if $releaseID < 1057>> - <<if ndef $PC.name>> - <<if def $PCName>> - <<set $PC.name = $PCName>> - <<unset $PCName>> - <</if>> - <</if>> - <<if ndef $PC.surname>> - <<set $PC.surname = 0>> - <</if>> - <<if ndef $PC.faceShape>> - <<set $PC.faceShape = "normal">> - <</if>> -<</if>> -<<if ndef $bodyguardTrains>> - <<set $bodyguardTrains = 1>> -<</if>> -<<if ndef $recruiterIOUs>> - <<set $recruiterIOUs = 0>> -<</if>> -<<if ndef $summaryStats>> - <<set $summaryStats = 0>> -<</if>> -<<if ndef $verticalizeArcologyLinks>> - <<set $verticalizeArcologyLinks = 0>> -<</if>> -<<if ndef $positionMainLinks>> - <<set $positionMainLinks = -1>> -<</if>> -<<if ndef $seeImages>> - <<set $seeImages = 0>> -<</if>> -<<if ndef $imageChoice>> - <<set $imageChoice = 0>> -<</if>> -<<if ndef $seeMainFetishes>> - <<set $seeMainFetishes = 0>> -<</if>> -<<if ndef $seeSummaryImages>> - <<set $seeSummaryImages = 1>> -<</if>> -<<if ndef $seeReportImages>> - <<set $seeReportImages = 1>> -<</if>> -<<if ndef $universalRulesBirthing>> - <<set $universalRulesBirthing = 0>> -<</if>> -<<if ndef $HGSeverity>> - <<set $HGSeverity = 0>> -<</if>> -<<if def $recruiters>> - <<unset $recruiters>> -<</if>> -<<if ndef $fixedNationality>> - <<set $fixedNationality = 0>> -<</if>> -<<if ndef $fixedRace>> - <<set $fixedRace = 0>> -<</if>> -<<if ndef $RaidingMercenaries>> - <<set $RaidingMercenaries = 0>> -<</if>> -<<if ndef $raided>> - <<set $raided = 0>> -<</if>> -<<if ndef $slaveOrphanageTotal>> - <<set $slaveOrphanageTotal = 0>> -<</if>> -<<if ndef $citizenOrphanageTotal>> - <<set $citizenOrphanageTotal = 0>> -<</if>> -<<if ndef $privateOrphanageTotal>> - <<set $privateOrphanageTotal = 0>> -<</if>> -<<if ndef $peacekeepers>> - <<set $peacekeepers = 0>> -<</if>> -<<if def $modestClothes>> - <<unset $modestClothes>> -<</if>> -<<if ndef $completedOrgans>> - <<set $completedOrgans = []>> -<</if>> -<<if def $eventSlaves>> - <<unset $eventSlaves>> -<</if>> -<<if def $place>> - <<unset $place>> -<</if>> -<<if (def $assayedSlave) || (def $assayedSlaveAvailable) || def $assayType>> - <<unset $assayedSlave, $assayedSlaveAvailable, $assayType>> -<</if>> -<<if (def $RERepressedAnalVirginSub) || (def $REBoobCollisionSub) || (def $REIfYouEnjoyItSub) || (def $RESadisticDescriptionSub) || def $REShowerForceSub>> - <<unset $RERepressedAnalVirginSub, $REBoobCollisionSub, $REIfYouEnjoyItSub, $RESadisticDescriptionSub, $REShowerForceSub>> -<</if>> -<<if (def $unmodded) || (def $modded) || (def $XX) || (def $XY) || (def $old) || (def $young) || (def $pregYes) || (def $pregNo) || (def $implanted) || (def $slimPass) || (def $slim) || def $stacked>> - <<unset $unmodded, $modded, $XX, $XY, $old, $young, $pregYes, $pregNo, $implanted, $slimPass, $slim, $stacked>> -<</if>> -<<if (def $recruiterMother) || def $recruiterSister>> - <<unset $recruiterMother, $recruiterSister>> -<</if>> -<<if def $relations>> - <<unset $relations>> -<</if>> -<<if def $milfSlave>> - <<unset $milfSlave>> -<</if>> -<<if def $vignettes>> - <<unset $vignettes>> -<</if>> -<<if def $piercingLocation>> - <<unset $piercingLocation>> -<</if>> -<<if (def $target1) || (def $target2) || def $target3>> - <<unset $target1, $target2, $target3>> -<</if>> -<<if (def $targetEscape1) || (def $targetEscape2) || def $targetEscape3>> - <<unset $targetEscape1, $targetEscape2, $targetEscape3>> -<</if>> -<<if (def $oralCount) || (def $vaginalCount) || def $analCount>> - <<unset $oralCount, $vaginalCount, $analCount>> -<</if>> -<<if (def $fighterOne) || def $fighterTwo>> - <<unset $fighterOne, $fighterTwo>> -<</if>> -<<if (def $fighterOneDeadliness) || def $fighterTwoDeadliness>> - <<unset $fighterOneDeadliness, $fighterTwoDeadliness>> -<</if>> -<<if def $adopted>> - <<unset $adopted>> -<</if>> -<<if def $fetishChangeChance>> - <<unset $fetishChangeChance>> -<</if>> -<<if (def $titles) || (def $schoolsPresent) || (def $schoolsPerfected) || def $schoolTitle>> - <<unset $titles, $schoolsPresent, $schoolsPerfected, $schoolTitle>> -<</if>> -<<if def $appraiserGender>> - <<unset $appraiserGender>> -<</if>> -<<if (def $assetDirection) || def $assetAffected>> - <<unset $assetDirection, $assetAffected>> -<</if>> -<<if def $rents>> - <<unset $rents>> -<</if>> -<<if ndef $rent>> - <<set $rent = {}>> -<</if>> -<<if ndef $rentDefaults>> - <<set $rentDefaults = {}>> -<</if>> -<<if def $LCRent>> - <<set $rent.lowerClass = $LCRent>> - <<unset $LCRent>> -<</if>> -<<if def $MCRent>> - <<set $rent.middleClass = $MCRent>> - <<unset $MCRent>> -<</if>> -<<if def $UCRent>> - <<set $rent.upperClass = $UCRent>> - <<unset $UCRent>> -<</if>> -<<if def $TCRent>> - <<set $rent.topClass = $TCRent>> - <<unset $TCRent>> -<</if>> -<<if def $space>> - <<unset $space>> -<</if>> -<<if def $vaginaTotal>> - <<unset $vaginaTotal>> -<</if>> -<<set $enduringTrust = Number($enduringTrust) || 0>> -<<set $enduringDevotion = Number($enduringDevotion) || 0>> -<<set $averageTrust = Number($averageTrust) || 0>> -<<set $averageDevotion = Number($averageDevotion) || 0>> -<<if def $limbsComplete>> - <<unset $limbsComplete>> -<</if>> -<<if def $minimumChildAge>> - <<unset $minimumChildAge>> -<</if>> -<<if def $customValue>> - <<unset $customValue>> -<</if>> -<<if ndef $tabChoice>> - <<set $tabChoice = {Main: "all"}>> -<</if>> - -/* pregmod stuff */ - -<<if $releaseID < 1057>> - <<if ndef $PC.actualAge>> - <<if $PC.age === 1>> - <<set $PC.actualAge = 20>> - <<elseif $PC.age === 3>> - <<set $PC.actualAge = 50>> - <<else>> - <<set $PC.actualAge = 35>> - <</if>> - <</if>> - <<if ndef $PC.markings>> - <<set $PC.markings = "none">> - <</if>> - <<if ndef $PC.pronoun>> - <<run generatePlayerPronouns($PC)>> - <</if>> - <<if ndef $PC.pregKnown>> - <<if $PC.preg > 0>> - <<set $PC.pregKnown = 1>> - <<else>> - <<set $PC.pregKnown = 0>> - <</if>> - <</if>> - <<if ndef $PC.pregWeek>> - <<if $PC.preg > 0>> - <<set $PC.pregWeek = $PC.preg>> - <<else>> - <<set $PC.pregWeek = 0>> - <</if>> - <</if>> - <<if ndef $PC.pregType>> - <<if $PC.preg > 0>> - <<set $PC.pregType = 1>> - <<else>> - <<set $PC.pregType = 0>> - <</if>> - <</if>> - <<if ndef $PC.belly>> - <<if $PC.preg > 0>> - <<set $PC.belly = getPregBellySize($PC)>> - <<else>> - <<set $PC.belly = 0>> - <</if>> - <</if>> - <<if ndef $PC.skin>> - <<set $PC.skin = "light">> - <</if>> - <<if ndef $PC.origSkin>> - <<set $PC.origSkin = $PC.skin>> - <</if>> - <<if ndef $PC.eyeColor>> - <<set $PC.eyeColor = "blue">> - <</if>> - <<if ndef $PC.origEye>> - <<set $PC.origEye = $PC.eyeColor>> - <</if>> - <<if ndef $PC.pupil>> - <<if $PC.eyeColor == "catlike">> - <<set $PC.pupil = "catlike">> - <<set $PC.eyeColor = "blue">> - <<elseif $PC.eyeColor == "serpent-like">> - <<set $PC.pupil = "serpent-like">> - <<set $PC.eyeColor = "blue">> - <<elseif $PC.eyeColor == "devilish">> - <<set $PC.pupil = "devilish">> - <<set $PC.eyeColor = "blue">> - <<elseif $PC.eyeColor == "demonic">> - <<set $PC.pupil = "demonic">> - <<set $PC.eyeColor = "blue">> - <<elseif $PC.eyeColor == "hypnotic">> - <<set $PC.pupil = "hypnotic">> - <<set $PC.eyeColor = "blue">> - <<elseif $PC.eyeColor == "heart-shaped">> - <<set $PC.pupil = "heart-shaped">> - <<set $PC.eyeColor = "blue">> - <<elseif $PC.eyeColor == "wide-eyed">> - <<set $PC.pupil = "wide-eyed">> - <<set $PC.eyeColor = "blue">> - <<elseif $PC.eyeColor == "almond-shaped">> - <<set $PC.pupil = "almond-shaped">> - <<set $PC.eyeColor = "blue">> - <<elseif $PC.eyeColor == "bright">> - <<set $PC.pupil = "bright">> - <<set $PC.eyeColor = "blue">> - <<elseif $PC.eyeColor == "teary">> - <<set $PC.pupil = "teary">> - <<set $PC.eyeColor = "blue">> - <<elseif $PC.eyeColor == "vacant">> - <<set $PC.pupil = "vacant">> - <<set $PC.eyeColor = "blue">> - <<else>> - <<set $PC.pupil = "circular">> - <</if>> - <</if>> - <<if ndef $PC.sclerae>> - <<set $PC.sclerae = "white">> - <</if>> - <<if ndef $PC.race>> - <<set $PC.race = "white">> - <</if>> - <<if ndef $PC.origRace>> - <<set $PC.origRace = $PC.race>> - <</if>> - <<if ndef $PC.hColor>> - <<set $PC.hColor = "blonde">> - <</if>> - <<if ndef $PC.origHColor>> - <<set $PC.origHColor = $PC.hColor>> - <</if>> - <<if ndef $PC.nationality>> - <<set $PC.nationality = "Stateless">> - <</if>> - <<if $PC.boobsBonus == -0.5>> - <<set $PC.boobsBonus = -1>> - <</if>> - <<if ndef $PC.sclerae>> - <<set $PC.sclerae = "white">> - <</if>> - <<if ndef $PC.fetish>> - <<set $PC.fetish = "none">> - <</if>> - <<if ndef $PC.behavioralFlaw>> - <<set $PC.behavioralFlaw = "none">> - <</if>> - <<if ndef $PC.behavioralQuirk>> - <<set $PC.behavioralQuirk = "none">> - <</if>> - <<if ndef $PC.sexualFlaw>> - <<set $PC.sexualFlaw = "none">> - <</if>> - <<if ndef $PC.sexualQuirk>> - <<set $PC.sexualQuirk = "none">> - <</if>> - <<if ndef $PC.pubicHStyle>> - <<set $PC.pubicHStyle = "hairless">> - <</if>> - <<if ndef $PC.underArmHStyle>> - <<set $PC.underArmHStyle = "hairless">> - <</if>> - <<if ndef $PC.eggType>> - <<set $PC.eggType = "human">> - <</if>> - <<if ndef $PC.ballType>> - <<set $PC.ballType = "human">> - <</if>> - <<if ndef $PC.geneticQuirks>> - <<set $PC.geneticQuirks = {macromastia: 0, gigantomastia: 0, fertility: 0, hyperFertility: 0, superfetation: 0, gigantism: 0, dwarfism: 0, pFace: 0, uFace: 0, albinism: 0, heterochromia: 0, rearLipedema: 0, wellHung: 1, wGain: 0, wLoss: 0, mGain: 0, mLoss: 0, androgyny: 0, girlsOnly: 0}>> - <<if $PC.birthMaster > 0>> - <<set $PC.geneticQuirks.fertility = 2>> - <<elseif $PC.career == "servant">> - <<set $PC.geneticQuirks.fertility = 1>> - <</if>> - <<else>> - <<if ndef $PC.geneticQuirks.heterochromia>> - <<set $PC.geneticQuirks.heterochromia = 0>> - <</if>> - <<if ndef $PC.geneticQuirks.girlsOnly>> - <<set $PC.geneticQuirks.girlsOnly = 0>> - <</if>> - <<if ndef $PC.geneticQuirks.mGain>> - <<set $PC.geneticQuirks.mGain = 0>> - <</if>> - <<if ndef $PC.geneticQuirks.mLoss>> - <<set $PC.geneticQuirks.mLoss = 0>> - <</if>> - <</if>> - <<if $releaseID < 1032>> - <<if $PC.pregSource == -1>> - <<set $PC.pregSource = -6>> - <<elseif $PC.pregSource == -2>> - <<set $PC.pregSource = -5>> - <<elseif $PC.pregSource == -6>> - <<set $PC.pregSource = -1>> - <<elseif $PC.pregSource == -5>> - <<set $PC.pregSource = -2>> - <</if>> - <</if>> - <<if ndef $PC.genes>> - <<if $PC.title == 1>> - <<set $PC.genes = "XY">> - <<else>> - <<set $PC.genes = "XX">> - <</if>> - <</if>> - - /* player object converter */ - <<set _newPC = basePlayer()>> - <<set _newPC.slaveName = $PC.name>> - <<set _newPC.slaveSurname = $PC.surname>> - <<set _newPC.birthName = $PC.name>> - <<if $PC.slaveSurname>> - <<set _newPC.birthSurname = $PC.surname>> - <<else>> - <<set _newPC.birthSurname = "">> - <</if>> - <<set _newPC.title = $PC.title>> - <<set _newPC.genes = $PC.genes>> - <<set _newPC.career = $PC.career>> - <<set _newPC.rumor = $PC.rumor>> - <<set _newPC.birthWeek = $PC.birthWeek>> - <<set _newPC.refreshment = $PC.refreshment>> - <<set _newPC.refreshmentType = $PC.refreshmentType>> - <<set _newPC.actualAge = $PC.actualAge>> - <<set _newPC.physicalAge = $PC.physicalAge>> - <<set _newPC.visualAge = $PC.visualAge>> - <<set _newPC.ovaryAge = $PC.ovaryAge>> - <<set _newPC.ageImplant = $PC.ageImplant>> - <<set _newPC.nationality = $PC.nationality>> - <<set _newPC.race = $PC.race>> - <<set _newPC.origRace = $PC.origRace>> - <<set _newPC.skin = $PC.skin>> - <<set _newPC.origSkin = $PC.origSkin>> - <<set _newPC.markings = $PC.markings>> - <<set _newPC.hColor = $PC.hColor>> - <<set _newPC.origHColor = $PC.origHColor>> - <<set _newPC.origEye = $PC.origEye>> /* needed for compatibility currently */ - <<set _newPC.eye.origColor = $PC.origEye>> - <<set _newPC.eye.left.iris = $PC.eyeColor>> - <<set _newPC.eye.left.pupil = $PC.pupil>> - <<set _newPC.eye.left.sclera = $PC.sclerae>> - <<set _newPC.eye.right.iris = $PC.eyeColor>> - <<set _newPC.eye.right.pupil = $PC.pupil>> - <<set _newPC.eye.right.sclera = $PC.sclerae>> - <<set _newPC.faceShape = $PC.faceShape>> - <<set _newPC.skill.trading = $PC.trading>> - <<set _newPC.skill.warfare = $PC.warfare>> - <<set _newPC.skill.hacking = $PC.hacking>> - <<set _newPC.skill.slaving = $PC.slaving>> - <<set _newPC.skill.engineering = $PC.engineering>> - <<set _newPC.skill.medicine = $PC.medicine>> - <<set _newPC.skill.cumTap = $PC.cumTap>> - <<set _newPC.father = $PC.father>> - <<set _newPC.mother = $PC.mother>> - <<set _newPC.sisters = $PC.sisters>> - <<set _newPC.daughters = $PC.daughters>> - <<set _newPC.counter.birthsTotal = $PC.births>> - <<set _newPC.counter.birthElite = $PC.birthElite>> - <<set _newPC.counter.birthMaster = $PC.birthMaster>> - <<set _newPC.counter.birthDegenerate = $PC.birthDegenerate>> - <<set _newPC.counter.birthClient = $PC.birthClient>> - <<set _newPC.counter.birthArcOwner = $PC.birthArcOwner>> - <<set _newPC.counter.birthCitizen = $PC.birthCitizen>> - <<set _newPC.counter.birthFutaSis = $PC.birthFutaSis>> - <<set _newPC.counter.birthSelf = $PC.birthSelf>> - <<set _newPC.counter.birthLab = $PC.birthLab>> - <<set _newPC.counter.birthOther = $PC.birthOther>> - <<if def $PC.laborCount>> - <<set _newPC.counter.laborCount = $PC.laborCount>> - <</if>> - <<set _newPC.counter.slavesFathered = $PC.slavesFathered>> - <<set _newPC.counter.slavesKnockedUp = $PC.slavesKnockedUp>> - <<set _newPC.sexualEnergy = $PC.sexualEnergy>> - <<set _newPC.staminaPills = $PC.staminaPills>> - <<set _newPC.preg = $PC.preg>> - <<set _newPC.pregType = $PC.pregType>> - <<set _newPC.pregWeek = $PC.pregWeek>> - <<set _newPC.pregKnown = $PC.pregKnown>> - <<set _newPC.fertKnown = $PC.fertKnown>> - <<set _newPC.fertPeak = $PC.fertPeak>> - <<set _newPC.fertDrugs = $PC.fertDrugs>> - <<set _newPC.forcedFertDrugs = $PC.forcedFertDrugs>> - <<set _newPC.belly = $PC.belly>> - <<set _newPC.bellyPreg = $PC.bellyPreg>> - <<set _newPC.pregSource = $PC.pregSource>> - <<set _newPC.pregMood = $PC.pregMood>> - <<set _newPC.labor = $PC.labor>> - <<set _newPC.degeneracy = $PC.degeneracy>> - <<set _newPC.pubicHStyle = $PC.pubicHStyle>> - <<set _newPC.underArmHStyle = $PC.underArmHStyle>> - <<if $PC.dick == 1>> - <<set _newPC.dick = 4>> - <<set _newPC.prostate = 1>> - <<if $PC.ballsImplant == 4 || $PC.balls == 4>> - <<set _newPC.balls = 30>> - <<set _newPC.scrotum = 7>> - <<elseif $PC.ballsImplant == 3 || $PC.balls == 3>> - <<set _newPC.balls = 14>> - <<set _newPC.scrotum = 6>> - <<elseif $PC.ballsImplant == 2 || $PC.balls == 2>> - <<set _newPC.balls = 9>> - <<set _newPC.scrotum = 5>> - <<elseif $PC.ballsImplant == 1 || $PC.balls == 1>> - <<set _newPC.balls = 5>> - <<set _newPC.scrotum = 4>> - <<else>> - <<set _newPC.balls = 3>> - <<set _newPC.scrotum = 3>> - <</if>> - <<if $PC.ballsImplant > 0>> - <<set _newPC.ballsImplant = _newPC.balls-3>> - <</if>> - <<else>> - <<set _newPC.dick = 0>> - <<set _newPC.prostate = 0>> - <<set _newPC.balls = 0>> - <<set _newPC.scrotum = 0>> - <</if>> - <<set _newPC.newVag = $PC.newVag>> - <<if $PC.vagina == 1>> - <<set _newPC.ovaries = 1>> - <<set _newPC.vaginaLube = 1>> - <<if $PC.newVag == 1>> - <<set _newPC.vagina = 1>> - <<elseif $PC.career == "escort" || $PC.birthsTotal >= 10 || $PC.career == "servant">> - <<set _newPC.vagina = 4>> - <<elseif $PC.birthsTotal > 2>> - <<set _newPC.vagina = 3>> - <<elseif $PC.career == "gang" || $PC.career == "celebrity" || $PC.career == "wealth" || $PC.birthsTotal > 0>> - <<set _newPC.vagina = 2>> - <<else>> - <<set _newPC.vagina = 1>> - <</if>> - <</if>> - <<if $PC.boobs == 1>> - <<if $PC.boobsBonus == -3>> - <<set _newPC.boobs = 400>> - <<elseif $PC.boobsBonus == -2>> - <<set _newPC.boobs = 500>> - <<elseif $PC.boobsBonus == -1>> - <<set _newPC.boobs = 700>> - <<elseif $PC.boobsBonus == 1>> - <<set _newPC.boobs = 1100>> - <<elseif $PC.boobsBonus == 2>> - <<set _newPC.boobs = 1300>> - <<elseif $PC.boobsBonus == 3>> - <<set _newPC.boobs = 1500>> - <<else>> - <<set _newPC.boobs = 900>> - <</if>> - <<elseif $PC.genes == "XX">> - <<set _newPC.boobs = 200>> - <<else>> - <<set _newPC.boobs = 100>> - <</if>> - <<if $PC.boobsImplant == 1>> - <<set _newPC.boobsImplant = _newPC.boobs-900>> - <</if>> - <<set _newPC.lactation = $PC.lactation>> - <<set _newPC.lactationDuration = $PC.lactationDuration>> - <<set _newPC.genes = $PC.genes>> - <<if $PC.butt == 3>> - <<set _newPC.butt = 5>> - <<elseif $PC.butt == 2>> - <<set _newPC.butt = 4>> - <<elseif $PC.butt == 1>> - <<set _newPC.butt = 3>> - <<else>> - <<set _newPC.butt = 2>> - <</if>> - <<if $PC.buttImplant == 1>> - <<set _newPC.buttImplant = _newPC.butt-2>> - <</if>> - <<set _newPC.reservedChildren = $PC.reservedChildren>> - <<set _newPC.reservedChildrenNursery = $PC.reservedChildrenNursery>> - <<set _newPC.geneticQuirks = clone($PC.geneticQuirks)>> - <<if $arcologies[0].FSPhysicalIdealist != "unset">> - <<set _newPC.muscles = 100>> - <<elseif $PC.title == 1>> - <<set _newPC.muscles = 50>> - <<else>> - <<set _newPC.muscles = 30>> - <</if>> - <<if $PC.title == 0>> - <<set _newPC.hLength = 15>> - <<set _newPC.waist = -20>> - <<set _newPC.voice = 2>> - <<set _newPC.shoulders = -1>> - <<set _newPC.hips = 1>> - <</if>> - <<if $PC.career == "escort">> - <<set _newPC.anus = 1>> - <<set _newPC.clothes = "a slutty outfit">> - <<set _newPC.intelligenceImplant = 15>> - <<elseif $PC.career == "servant">> - <<set _newPC.clothes = "a nice maid outfit">> - <<set _newPC.intelligenceImplant = 0>> - <</if>> - <<if def $PCWounded>> - <<set _newPC.majorInjury = $PCWounded>> - <<unset $PCWounded>> - <</if>> - <<if def $girls>> - <<if $girls == 1>> - <<set _newPC.rules.living = "spare">> - <<elseif $girls == 2>> - <<set _newPC.rules.living = "normal">> - <<else>> - <<set _newPC.rules.living = "luxurious">> - <</if>> - <<unset $girls>> - <</if>> - <<if def $playerGetsMilked>> - <<if $playerGetsMilked == 2>> - <<set $PC.rules.lactation = "sell">> - <<elseif $playerGetsMilked == 1>> - <<set $PC.rules.lactation = "maintain">> - <</if>> - <<unset $playerGetsMilked>> - <</if>> - - <<set WombInit(_newPC)>> - - <<set $PC = clone(_newPC)>> - Standardizing player object... Done!<br> -<</if>> - -<<run PCDatatypeCleanup()>> - -<<run BCReserveInit()>> - -<<if ndef $universalRulesImmobileSlavesMaintainMuscles>> - <<set $universalRulesImmobileSlavesMaintainMuscles = 0>> -<</if>> -<<if ndef $universalRulesChildrenBecomeBreeders>> - <<set $universalRulesChildrenBecomeBreeders = 0>> -<</if>> -<<if ndef $surnamesForbidden>> - <<set $surnamesForbidden = 0>> -<</if>> -<<if ndef $FSNamePref>> - <<set $FSNamePref = 0>> -<</if>> -<<if ndef $meshImplants>> - <<set $meshImplants = 0>> -<</if>> -<<if ndef $BasicWeightSMR>> - <<set $BasicWeightSMR = 0>> -<</if>> -<<if def $BasicTallSMR>> - <<unset $BasicTallSMR>> - <<set $BasicHeightSMR = 1>> -<</if>> -<<if def $BasicShortSMR>> - <<unset $BasicShortSMR>> - <<set $BasicHeightSMR = -1>> -<</if>> -<<if ndef $BasicHeightSMR>> - <<set $BasicHeightSMR = 0>> -<</if>> -<<if ndef $AdvancedHeightSMR>> - <<set $AdvancedHeightSMR = 0>> -<</if>> -<<if ndef $toysBoughtDildos>> - <<set $toysBoughtDildos = 0>> -<</if>> -<<if ndef $toysBoughtGags>> - <<set $toysBoughtGags = 0>> -<</if>> -<<if ndef $toysBoughtVaginalAttachments>> - <<set $toysBoughtVaginalAttachments = 0>> -<</if>> -<<if ndef $toysBoughtButtPlugs>> - <<set $toysBoughtButtPlugs = 0>> -<</if>> -<<if ndef $toysBoughtButtPlugTails>> - <<set $toysBoughtButtPlugTails = 0>> -<</if>> -<<if ndef $toysBoughtSmartVibes>> - <<set $toysBoughtSmartVibes = 0>> -<</if>> -<<if ndef $buckets>> - <<set $buckets = 0>> -<</if>> -<<if ndef $menstruation>> - <<set $menstruation = 0>> -<</if>> -<<if ndef $FCTVenable>> - <<set $FCTVenable = 1>> -<</if>> -<<if ndef $FCTVreceiver>> - <<set $FCTVreceiver = 0>> -<</if>> -<<if ndef $receiverAvailable>> - <<set $receiverAvailable = 0>> -<</if>> -<<if ndef $FCTVshow>> - <<set $FCTVshow = 0>> -<</if>> -<<if ndef $FCTVremote>> - <<set $FCTVremote = 0>> -<</if>> -<<if ndef $FCTVrate>> - <<set $FCTVrate = 2>> -<</if>> -<<if ndef $FCTVcount>> - <<set $FCTVcount = 0>> -<</if>> -<<if ndef $lastShow>> - <<set $lastShow = -1>> -<</if>> -<<if ndef $purchasedSagBGone>> - <<set $purchasedSagBGone = 0>> -<</if>> -<<if ndef $FCNNstation>> - <<set $FCNNstation = 0>> -<</if>> -<<if ndef $breederOrphanageTotal>> - <<set $breederOrphanageTotal = 0>> -<</if>> -<<if ndef $newDescriptions>> - <<set $newDescriptions = 0>> -<</if>> -<<if ndef $specialSlavesPriceOverride>> - <<set $specialSlavesPriceOverride = 0>> -<</if>> -<<if ndef $pregAccessibility>> - <<set $pregAccessibility = 0>> -<</if>> -<<if ndef $dickAccessibility>> - <<set $dickAccessibility = 0>> -<</if>> -<<if ndef $ballsAccessibility>> - <<set $ballsAccessibility = 0>> -<</if>> -<<if ndef $buttAccessibility>> - <<set $buttAccessibility = 0>> -<</if>> -<<if ndef $loliGrow>> - <<set $loliGrow = 0>> -<</if>> -<<if ndef $ageMode>> - <<set $ageMode = 0>> -<</if>> -<<if ndef $enema>> - <<set $enema = 0>> -<</if>> -<<if ndef $medicalEnema>> - <<set $medicalEnema = 0>> -<</if>> -<<if ndef $dairyPiping>> - <<set $dairyPiping = 0>> -<</if>> -<<if ndef $inflatedSlavesMilk>> - <<set $inflatedSlavesMilk = 0>> -<</if>> -<<if ndef $inflatedSlavesCum>> - <<set $inflatedSlavesCum = 0>> -<</if>> -<<if ndef $milkPipeline>> - <<set $milkPipeline = 0>> -<</if>> -<<if ndef $cumPipeline>> - <<set $cumPipeline = 0>> -<</if>> -<<if ndef $wcPiping>> - <<set $wcPiping = 0>> -<</if>> -<<if ndef $burstee>> - <<set $burstee = 0>> -<</if>> -<<if ndef $slaveDeath>> - <<set $slaveDeath = 0>> -<</if>> -<<if ndef $playerBred>> - <<set $playerBred = 0>> -<</if>> -<<if ndef $propOutcome>> - <<set $propOutcome = 0>> -<</if>> -<<if ndef $EliteSires>> - <<set $EliteSires = ["crazy", "futa", "moves", "preggo", "quick", "virgin"]>> -<</if>> -<<if ndef $startingPoint>> - <<set $startingPoint = -1>> -<</if>> -<<if ndef $raped>> - <<set $raped = -1>> -<</if>> -<<if ndef $familyTesting>> - <<set $familyTesting = 0>> -<</if>> -<<if ndef $children>> - <<set $children = []>> -<</if>> -<<if ndef $missingParentID>> - <<set $missingParentID = -10000>> -<</if>> -<<if def $startingSlaveRelative>> - <<unset $startingSlaveRelative>> -<</if>> -<<if ndef $mom>> - <<set $mom = 0>> -<</if>> -<<if def $animalParts>> - <<unset $animalParts = 0>> -<</if>> -<<if def $showBestiality>> - <<unset $showBestiality>> -<</if>> -<<if ndef $seeBestiality>> - <<set $seeBestiality = 0>> -<</if>> -<<if ndef $seePee>> - <<set $seePee = 1>> -<</if>> -<<if ndef $seeIncest>> - <<set $seeIncest = 1>> -<</if>> -<<if ndef $extremeUnderage>> - <<set $extremeUnderage = 0>> -<</if>> -<<if ndef $inbreeding>> - <<set $inbreeding = 1>> -<</if>> -<<if ndef $originOveride>> - <<set $originOveride = 0>> -<</if>> -<<if ndef $playerAging>> - <<set $playerAging = 2>> -<</if>> -<<if ndef $pregSpeedControl>> - <<set $pregSpeedControl = 0>> -<</if>> -<<if ndef $playerSurgery>> - <<set $playerSurgery = 0>> -<</if>> -<<if ndef $bodyswapAnnounced>> - <<set $bodyswapAnnounced = 0>> -<</if>> -<<if ndef $allowFamilyTitles>> - <<set $allowFamilyTitles = 0>> -<</if>> -<<if ndef $randShow>> - <<set $randShow = 0>> -<</if>> -<<if ndef $genePool>> - <<set $genePool = []>> -<</if>> -<<if ndef $useSummaryCache>> - <<set $useSummaryCache = true>> -<</if>> -<<if ndef $seeHyperPreg>> - <<set $seeHyperPreg = 0>> -<</if>> -<<if ndef $seePreg>> - <<set $seePreg = 1>> -<</if>> -<<if ndef $adamPrinciple>> - <<set $adamPrinciple = 0>> -<</if>> -<<if ndef $seeDicksAffectsPregnancy>> - <<set $seeDicksAffectsPregnancy = 1>> -<</if>> -<<if ndef $dangerousPregnancy>> - <<set $dangerousPregnancy = 1>> -<</if>> -<<if def $dangerousPregancy>> - <<unset $dangerousPregancy>> -<</if>> -<<if ndef $retainCareer>> - <<set $retainCareer = 1>> -<</if>> -<<if ndef $freshPC>> - <<set $freshPC = 0>> -<</if>> -<<if ndef $killChoice>> - <<set $killChoice = -1>> -<</if>> -<<if ndef $schoolroomRemodelBimbo>> - <<set $schoolroomRemodelBimbo = 0>> -<</if>> -<<if ndef $incubator>> - <<set $incubator = 0>> -<</if>> -<<if ndef $incubatorSlaves>> - <<set $incubatorSlaves = 0>> -<</if>> -<<if ndef $incubatorOrgans>> - <<set $incubatorOrgans = []>> -<</if>> -<<if ndef $incubatorOldID>> - <<set $incubatorOldID = 0>> -<</if>> -<<if ndef $incubatorUpgradeSpeed>> - <<set $incubatorUpgradeSpeed = 5>> -<</if>> -<<if ndef $incubatorUpgradeWeight>> - <<set $incubatorUpgradeWeight = 0>> -<</if>> -<<if ndef $incubatorUpgradeMuscles>> - <<set $incubatorUpgradeMuscles = 0>> -<</if>> -<<if ndef $incubatorUpgradeReproduction>> - <<set $incubatorUpgradeReproduction = 0>> -<</if>> -<<if ndef $incubatorUpgradeGrowthStims>> - <<set $incubatorUpgradeGrowthStims = 0>> -<</if>> -<<if ndef $incubatorUpgradeOrgans>> - <<set $incubatorUpgradeOrgans = 0>> -<</if>> -<<if ndef $incubatorImprintSetting>> - <<set $incubatorImprintSetting = 0>> -<</if>> -<<if ndef $incubatorWeightSetting>> - <<set $incubatorWeightSetting = 0>> -<</if>> -<<if ndef $incubatorMusclesSetting>> - <<set $incubatorMusclesSetting = 0>> -<</if>> -<<if ndef $incubatorReproductionSetting>> - <<set $incubatorReproductionSetting = 0>> -<</if>> -<<if ndef $incubatorGrowthStimsSetting>> - <<set $incubatorGrowthStimsSetting = 0>> -<</if>> -<<if ndef $reservedChildren>> - <<set $reservedChildren = 0>> -<</if>> -<<if ndef $tanks>> - <<set $tanks = []>> -<</if>> -/% Nursery Subsection %/ -<<if ndef $nursery>> - <<set $nursery = 0>> -<</if>> -<<if ndef $nIDNumber>> - <<set $nIDNumber = 1>> -<</if>> -<<if ndef $nurseryNannies>> - <<set $nurseryNannies = 0>> -<</if>> -<<if ndef $nurseryBabies>> - <<set $nurseryBabies = 0>> -<</if>> -<<if ndef $Matron>> - <<set $Matron = 0>> -<</if>> -<<if ndef $activeChild>> - <<set $activeChild = 0>> -<</if>> -<<if ndef $nannyInfluence>> - <<set $nannyInfluence = 0>> -<</if>> -<<if ndef $MatronInfluence>> - <<set $MatronInfluence = 0>> -<</if>> -<<if ndef $nurseryWeight>> - <<set $nurseryWeight = 0>> -<</if>> -<<if ndef $nurseryMuscles>> - <<set $nurseryMuscles = 0>> -<</if>> -<<if ndef $nurseryHormones>> - <<set $nurseryHormones = 0>> -<</if>> -<<if ndef $nurseryOrgans>> - <<set $nurseryOrgans = 0>> -<</if>> -<<if ndef $nurseryImprintSetting>> - <<set $nurseryImprintSetting = 0>> -<</if>> -<<if ndef $nurseryWeightSetting>> - <<set $nurseryWeightSetting = 0>> -<</if>> -<<if ndef $nurseryMusclesSetting>> - <<set $nurseryMusclesSetting = 0>> -<</if>> -<<if ndef $nurseryHormonesSetting>> - <<set $nurseryHormonesSetting = 0>> -<</if>> -<<if ndef $nurseryGrowthStimsSetting>> - <<set $nurseryGrowthStimsSetting = 0>> -<</if>> -<<if ndef $reservedChildrenNursery>> - <<set $reservedChildrenNursery = 0>> -<</if>> -<<if ndef $cribs>> - <<set $cribs = []>> -<</if>> -<<if ndef $cribsFreed>> - <<set $cribsFreed = []>> -<</if>> -<<if ndef $childSex>> - <<set $childSex = 0>> -<</if>> -<<if ndef $childProtectionAct>> - <<set $childProtectionAct = 1>> -<</if>> - -/% Farmyard Subsection %/ -<<if ndef $Farmer>> - <<set $Farmer = 0>> -<</if>> -<<if ndef $farmyard>> - <<set $farmyard = 0>> -<</if>> -<<if ndef $farmyardShowgirls>> - <<set $farmyardShowgirls = []>> -<</if>> -<<if ndef $farmyardFarmers>> - <<set $farmyardFarmers = []>> -<</if>> -<<if ndef $farmMenials>> - <<set $farmMenials = 0>> -<</if>> -<<if ndef $farmMenialsSpace>> - <<set $farmMenialsSpace = 0>> -<</if>> -<<if ndef $farmyardUpgrade>> - <<set $farmyardUpgrade = {pump: 0, fertilizer: 0, hydroponics: 0, machinery: 0, seeds: 0, lab: 0}>> -<</if>> -<<if def $farmyardUpgradeList>> - <<unset $farmyardUpgradeList = []>> -<</if>> -<<if ndef $farmyardCrops>> - <<set $farmyardCrops = 0>> -<</if>> -<<if ndef $farmyardKennels>> - <<set $farmyardKennels = 0>> -<</if>> -<<if ndef $farmyardStable>> - <<set $farmyardStable = 0>> -<</if>> -<<if ndef $farmyardCages>> - <<set $farmyardCages = 0>> -<</if>> -<<if ndef $farmyardLab>> - <<set $farmyardLab = 0>> -<</if>> -<<if ndef $farmyardLabUpgrades>> - <<set $farmyardLabUpgrades = {animalOvaries: 0, animalTesticles: 0, animalMpreg: 0}>> -<</if>> -<<if ndef $animalsBought>> - <<set $animalsBought = {}>> -<</if>> -<<set _animalsBought = ["canines", "hooved", "felines", "labradorRetrievers", "germanShepherds", "goldenRetrievers", "frenchBulldogs", "bulldogs", "beagles", "poodles", "rottweilers", "yorkshireTerriers", "siberianHuskies", "horses", "bulls", "pigs", "siameses", "persians", "maineCoons", "ragdolls", "bengals", "abbysinians", "birmans", "orientalShorthairs", "sphynxes", "russianBlues", "wolves", "foxes", "jackals", "dingos", "zebras", "cougars", "jaguars", "pumas", "lynx", "leopards", "lions", "tigers"]>> -<<run _animalsBought.forEach(function(species) { $animalsBought[species] = $animalsBought[species] || 0 ; })>> -<<if ndef $canines>> - <<set $canines = []>> -<</if>> -<<if ndef $hooved>> - <<set $hooved = []>> -<</if>> -<<if ndef $felines>> - <<set $felines = []>> -<</if>> -<<if def $boughtCanines>> - <<unset $boughtCanines>> -<</if>> -<<if def $boughtFelines>> - <<unset $boughtFelines>> -<</if>> -<<if def $defaultCanine>> - <<unset $defaultCanine = "wolf">> -<</if>> -<<if def $defaultHooved>> - <<unset $defaultHooved = "horse">> -<</if>> -<<if def $defaultFeline>> - <<unset $defaultFeline = "cougar">> -<</if>> -<<if def $defaultCaninePlural>> - <<unset $defaultCaninePlural = "wolves">> -<</if>> -<<if def $defaultHoovedPlural>> - <<unset $defaultHoovedPlural = "horses">> -<</if>> -<<if def $defaultFelinePlural>> - <<unset $defaultFelinePlural = "cougars">> -<</if>> -<<if ndef $activeCanine>> - <<set $activeCanine = 0>> -<</if>> -<<if ndef $activeHooved>> - <<set $activeHooved = 0>> -<</if>> -<<if ndef $activeFeline>> - <<set $activeFeline = 0>> -<</if>> -<<if def $boughtWolves>> - <<unset $boughtWolves>> -<</if>> -<<if def $boughtFoxes>> - <<unset $boughtFoxes>> -<</if>> -<<if def $boughtJackals>> - <<unset $boughtJackals>> -<</if>> -<<if def $boughtDingos>> - <<unset $boughtDingos>> -<</if>> -<<if def $boughtCougars>> - <<unset $boughtCougars>> -<</if>> -<<if def $boughtJaguars>> - <<unset $boughtJaguars>> -<</if>> -<<if def $boughtPumas>> - <<unset $boughtPumas>> -<</if>> -<<if def $boughtLynx>> - <<unset $boughtLynx>> -<</if>> -<<if def $boughtLeopards>> - <<unset $boughtLeopards>> -<</if>> -<<if def $boughtLions>> - <<unset $boughtLions>> -<</if>> -<<if def $boughtTigers>> - <<unset $boughtTigers>> -<</if>> - -<<if ndef $legendaryWombID>> - <<set $legendaryWombID = 0>> -<</if>> -<<if ndef $FSCreditCount>> - <<set $FSCreditCount = 5>> -<</if>> -<<if def $FSCreditCountString>> - <<unset $FSCreditCountString>> -<</if>> -<<if ndef $FSGotRepCredits>> - <<if $FSGotRepCreditSix == 1>> - <<set $FSGotRepCredits = 7>> - <<elseif $FSGotRepCreditFive == 1>> - <<set $FSGotRepCredits = 6>> - <<elseif $FSGotRepCreditFour == 1>> - <<set $FSGotRepCredits = 5>> - <<elseif $FSGotRepCreditThree == 1>> - <<set $FSGotRepCredits = 4>> - <<elseif $FSGotRepCreditTwo == 1>> - <<set $FSGotRepCredits = 3>> - <<elseif $FSGotRepCreditOne == 1>> - <<set $FSGotRepCredits = 2>> - <<elseif $FSAnnounced == 1>> - <<set $FSGotRepCredits = 1>> - <<else>> - <<set $FSGotRepCredits = 0>> - <</if>> -<</if>> -<<if def $FSGotRepCreditSix>> - <<unset $FSGotRepCreditSix>> -<</if>> -<<if def $FSGotRepCreditFive>> - <<unset $FSGotRepCreditFive>> -<</if>> -<<if def $FSGotRepCreditFour>> - <<unset $FSGotRepCreditFour>> -<</if>> -<<if def $FSGotRepCreditThree>> - <<unset $FSGotRepCreditThree>> -<</if>> -<<if def $FSGotRepCreditTwo>> - <<unset $FSGotRepCreditTwo>> -<</if>> -<<if def $FSGotRepCreditOne>> - <<unset $FSGotRepCreditOne>> -<</if>> -<<if ndef $makeDicks>> - <<set $makeDicks = 0>> -<</if>> -<<if ndef $showEconomicDetails>> - <<set $showEconomicDetails = 0>> -<</if>> -<<if def $assignFilter>> - <<unset $assignFilter>> -<</if>> -<<if ndef $personalAttention>> - <<set $personalAttention = "sex">> -<</if>> -<<if def $trainingRegimen>> - <<if typeof $personalAttention == "number">> - <<set $personalAttention = [{ID: $personalAttention, trainingRegimen: $trainingRegimen}]>> - <</if>> - <<unset $trainingRegimen, $personalAttentionChanged>> -<</if>> - -<<if ndef $huskSlaveOrdered>> - <<set $huskSlaveOrdered = 0>> -<</if>> -<<if ndef $huskSlave>> - <<set $huskSlave = new App.Entity.CustomSlaveOrder()>> -<</if>> -<<run App.Update.CustomSlaveOrder($huskSlave)>> -<<run App.Update.CustomSlaveOrder($customSlave)>> - -<<if ndef $pedo_mode>> - <<set $pedo_mode = 0>> -<</if>> -<<if ndef $one_time_age_overrides_pedo_mode>> - <<set $one_time_age_overrides_pedo_mode = 0>> -<</if>> -<<if ndef $minimumSlaveAge>> - <<set $minimumSlaveAge = 16>> -<</if>> -<<if ndef $fertilityAge>> - <<set $fertilityAge = 13>> -<</if>> -<<if ndef $potencyAge>> - <<set $potencyAge = 13>> -<</if>> -<<if ndef $activeSlaveOneTimeMinAge>> - <<set $activeSlaveOneTimeMinAge = 0>> -<</if>> -<<if ndef $activeSlaveOneTimeMaxAge>> - <<set $activeSlaveOneTimeMaxAge = 999>> -<</if>> -<<if ndef $oneTimeDisableDisability>> - <<set $oneTimeDisableDisability = 0>> -<</if>> -<<if ndef $AgePenalty>> - <<set $AgePenalty = 1>> -<</if>> -<<if ndef $precociousPuberty>> - <<set $precociousPuberty = 0>> -<</if>> -<<if ndef $targetAge>> - <<set $targetAge = $minimumSlaveAge>> -<</if>> -<<if ndef $disableLisping>> - <<set $disableLisping = 0>> -<</if>> -<<if ndef $cheatModeM>> - <<set $cheatModeM = 1>> -<</if>> -<<if ndef $experimental>> - <<set $experimental = { - nursery: 0, - food: 0, - animalOvaries: 0, - dinnerParty: 0 - }>> -<</if>> -<<if ndef $MercenariesMessageSent>> - <<set $MercenariesMessageSent = 0>> -<</if>> -<<if ndef $SpecialForcesMessageSent>> - <<set $SpecialForcesMessageSent = 0>> -<</if>> -<<if ndef $BodyguardHasSucessfullyRecivedSignal>> - <<set $BodyguardHasSucessfullyRecivedSignal = 0>> -<</if>> -<<if ndef $finalChoice>> - <<set $finalChoice = "none">> -<</if>> -<<if ndef $eliteTotal>> - <<set $eliteTotal = 12>> -<</if>> -<<if ndef $eliteDead>> - <<set $eliteDead = 0>> -<</if>> -<<if ndef $eliteVegetable>> - <<set $eliteVegetable = 0>> -<</if>> -<<if ndef $eliteFate>> - <<set $eliteFate = 0>> -<</if>> -<<if ndef $eliteFail>> - <<set $eliteFail = 0>> -<</if>> -<<if ndef $eliteFailTimer>> - <<set $eliteFailTimer = 0>> -<</if>> -<<if ndef $failedElite>> - <<set $failedElite = 0>> -<</if>> -<<if ndef $eugenicsFullControl>> - <<set $eugenicsFullControl = 0>> -<</if>> -<<if ndef $merchantFSWares>> - <<set $merchantFSWares = ["AssetExpansionistResearch", "GenderRadicalistResearch", "HedonisticDecadenceResearch", "SlaveProfessionalismResearch", "SlimnessEnthusiastResearch", "TransformationFetishistResearch", "YouthPreferentialistResearch"]>> -<<elseif $merchantFSWares.length == 0>> - <<set $merchantFSWares.push("AssetExpansionistResearch")>> - <<set $merchantFSWares.push("GenderRadicalistResearch")>> - <<set $merchantFSWares.push("HedonisticDecadenceResearch")>> - <<set $merchantFSWares.push("SlaveProfessionalismResearch")>> - <<set $merchantFSWares.push("SlimnessEnthusiastResearch")>> - <<set $merchantFSWares.push("TransformationFetishistResearch")>> - <<set $merchantFSWares.push("YouthPreferentialistResearch")>> -<</if>> -<<if ndef $merchantIllegalWares>> - <<set $merchantIllegalWares = ["asexualReproduction", "childhoodFertilityInducedNCS", "PGHack", "RapidCellGrowthFormula", "sympatheticOvaries", "UterineRestraintMesh"]>> -<<elseif $merchantIllegalWares.length == 0>> - <<set $merchantIllegalWares.push("childhoodFertilityInducedNCS")>> - <<set $merchantIllegalWares.push("UterineRestraintMesh")>> - <<set $merchantIllegalWares.push("RapidCellGrowthFormula")>> - <<set $merchantIllegalWares.push("PGHack")>> - <<set $merchantIllegalWares.push("sympatheticOvaries")>> - <<set $merchantIllegalWares.push("asexualReproduction")>> -<</if>> -<<if ndef $arcologies[0].childhoodFertilityInducedNCSResearch>> - <<set $arcologies[0].childhoodFertilityInducedNCSResearch = 0>> -<</if>> -<<if $arcologies[0].childFertilityInducedNCSResearch>> - <<unset $arcologies[0].childFertilityInducedNCSResearch>> -<</if>> -<<if ndef $UterineRestraintMesh>> - <<set $UterineRestraintMesh = 0>> -<</if>> -<<if ndef $RapidCellGrowthFormula>> - <<set $RapidCellGrowthFormula = 0>> -<</if>> -<<if ndef $PGHack>> - <<set $PGHack = 0>> -<</if>> -<<if ndef $adamPrinciple>> - <<set $adamPrinciple = 0>> -<</if>> -<<if ndef $showInches || $showInches === 0>> - <<set $showInches = 1>> -<</if>> -<<if ndef $showNumbers>> - <<set $showNumbers = 2>> -<</if>> -<<if ndef $showNumbersMax>> - <<set $showNumbersMax = 20>> -<</if>> -<<if def $showWardrobe>> - <<unset $showWardrobe>> -<</if>> -<<if def $showMainClothing>> - <<unset $showMainClothing>> -<</if>> -<<if ndef $surnameOrder>> - <<set $surnameOrder = 0>> -<</if>> -<<if ndef $prisonCircuit>> - <<set $prisonCircuit = ["low tier criminals", "gangs and smugglers", "white collar", "military prison"]>> - <<set $prisonCircuitIndex = random(0,$prisonCircuit.length-1)>> -<</if>> -<<if $captureUpgradeRace === "">> - <<set $generalUpgradeBreaking = "unselected">> - <<set $generalUpgradeWeight = "unselected">> - <<set $generalUpgradeMuscle = "unselected">> - <<set $entrapmentUpgradeDevotionOne = "unselected">> - <<set $entrapmentUpgradeDevotionTwo = "unselected">> - <<set $entrapmentUpgradeIntelligence = "unselected">> - <<set $captureUpgradeGender = "unselected">> - <<set $surgicalUpgradeGenitalia = "unselected">> - <<set $captureUpgradeAge = "unselected">> - <<set $captureUpgradeRace = "unselected">> - <<set $trainingUpgradeAccent = "unselected">> - <<set $trainingUpgradeEducation = "unselected">> - <<set $trainingUpgradeSexEd = "unselected">> - <<set $surgicalUpgradeCosmetics = "unselected">> - <<set $surgicalUpgradeImplants = "unselected">> - <<set $drugUpgradeHormones = "unselected">> - <<set $drugUpgradeInjectionOne = "unselected">> - <<set $drugUpgradeInjectionTwo = "unselected">> -<</if>> -<<if ndef $traitorType>> - <<set $traitorType = "standard">> -<</if>> - -<<= App.SF.BC()>> - -<<if ndef $useSlaveSummaryTabs>> - <<set $useSlaveSummaryTabs = 0>> -<</if>> -<<if ndef $useSlaveSummaryOverviewTab>> - <<set $useSlaveSummaryOverviewTab = 0>> -<</if>> -<<if ndef $useSlaveListInPageJSNavigation>> - <<set $useSlaveListInPageJSNavigation = 0>> -<</if>> - -<<if ndef $arcologies[0].FSAztecRevivalist>> - <<for _bci = 0; _bci < $arcologies.length; _bci++>> - <<set $arcologies[_bci].FSAztecRevivalist = "unset", $arcologies[_bci].FSAztecRevivalistDecoration = 0>> - <</for>> - <<set $arcologies[0].FSAztecRevivalistLaw = 0, $arcologies[0].FSAztecRevivalistSMR = 0>> -<</if>> -<<if ndef $arcologies[0].FSHedonisticDecadence>> - <<for _bci = 0; _bci < $arcologies.length; _bci++>> - <<set $arcologies[_bci].FSHedonisticDecadence = "unset", $arcologies[_bci].FSHedonisticDecadenceDecoration = 0>> - <</for>> - <<set $arcologies[0].FSHedonisticDecadenceLaw = 0, $arcologies[0].FSHedonisticDecadenceLaw2 = 0, $arcologies[0].FSHedonisticDecadenceSMR = 0, $arcologies[0].FSHedonisticDecadenceResearch = 0>> -<</if>> -<<if ndef $arcologies[0].FSHedonisticDecadenceDietResearch>> - <<set $arcologies[0].FSHedonisticDecadenceDietResearch = 0>> -<</if>> -<<if ndef $arcologies[0].FSPhysicalIdealistStrongFat>> - <<set $arcologies[0].FSPhysicalIdealistStrongFat = 0>> -<</if>> -<<if ndef $arcologies[0].FSHedonisticDecadenceStrongFat>> - <<set $arcologies[0].FSHedonisticDecadenceStrongFat = 0>> -<</if>> -<<if ndef $arcologies[0].FSIntellectualDependency>> - <<for _bci = 0; _bci < $arcologies.length; _bci++>> - <<set $arcologies[_bci].FSIntellectualDependency = "unset", $arcologies[_bci].FSIntellectualDependencyDecoration = 0>> - <</for>> - <<set $arcologies[0].FSIntellectualDependencyLaw = 0, $arcologies[0].FSIntellectualDependencyLawBeauty = 0, $arcologies[0].FSIntellectualDependencySMR = 0, $arcologies[0].FSIntellectualDependencyResearch = 0>> -<</if>> -<<if ndef $arcologies[0].FSSlaveProfessionalism>> - <<for _bci = 0; _bci < $arcologies.length; _bci++>> - <<set $arcologies[_bci].FSSlaveProfessionalism = "unset", $arcologies[_bci].FSSlaveProfessionalismDecoration = 0>> - <</for>> - <<set $arcologies[0].FSSlaveProfessionalismLaw = 0, $arcologies[0].FSSlaveProfessionalismSMR = 0, $arcologies[0].FSSlaveProfessionalismResearch = 0>> -<</if>> -<<if ndef $arcologies[0].FSPetiteAdmiration>> - <<for _bci = 0; _bci < $arcologies.length; _bci++>> - <<set $arcologies[_bci].FSPetiteAdmiration = "unset", $arcologies[_bci].FSPetiteAdmirationDecoration = 0>> - <</for>> - <<set $arcologies[0].FSPetiteAdmirationLaw = 0, $arcologies[0].FSPetiteAdmirationLaw2 = 0, $arcologies[0].FSPetiteAdmirationSMR = 0, $arcologies[0].FSPetiteAdmirationResearch = 0>> -<</if>> -<<if ndef $arcologies[0].FSStatuesqueGlorification>> - <<for _bci = 0; _bci < $arcologies.length; _bci++>> - <<set $arcologies[_bci].FSStatuesqueGlorification = "unset", $arcologies[_bci].FSStatuesqueGlorificationDecoration = 0>> - <</for>> - <<set $arcologies[0].FSStatuesqueGlorificationLaw = 0, $arcologies[0].FSStatuesqueGlorificationLaw2 = 0, $arcologies[0].FSStatuesqueGlorificationSMR = 0, $arcologies[0].FSStatuesqueGlorificationResearch = 0>> -<</if>> -<<if ndef $arcologies[0].FSCummunism>> - <<for _bci = 0; _bci < $arcologies.length; _bci++>> - <<set $arcologies[_bci].FSCummunism = "unset", $arcologies[_bci].FSCummunismDecoration = 0>> - <</for>> - <<set $arcologies[0].FSCummunismResearch = 0>> -<</if>> -<<if ndef $arcologies[0].FSIncestFetishist>> - <<for _bci = 0; _bci < $arcologies.length; _bci++>> - <<set $arcologies[_bci].FSIncestFetishist = "unset", $arcologies[_bci].FSIncestFetishistDecoration = 0>> - <</for>> - <<set $arcologies[0].FSIncestFetishistResearch = 0>> -<</if>> -<<for _bci = 0; _bci < $arcologies.length; _bci++>> - <<if $arcologies[_bci].FSHedonisticDecadence == 0>> - <<set $arcologies[_bci].FSHedonisticDecadence = "unset", $arcologies[_bci].FSHedonisticDecadenceDecoration = 0>> - <</if>> -<</for>> -<<if ndef $arcologies[0].FSPhysicalIdealistLaw>> - <<set $arcologies[0].FSPhysicalIdealistLaw = 0>> -<</if>> - -<<if ndef $FSPromenade>> - <<set $FSPromenade = {Subjugationist: 0, Supremacist: 0, GenderRadicalist: 0, GenderFundamentalist: 0, Paternalist: 0, Degradationist: 0, BodyPurist: 0, TransformationFetishist: 0, YouthPreferentialist: 0, MaturityPreferentialist: 0, SlimnessEnthusiast: 0, AssetExpansionist: 0, Pastoralist: 0, PhysicalIdealist: 0, ChattelReligionist: 0, RomanRevivalist: 0, AztecRevivalist: 0, EgyptianRevivalist: 0, EdoRevivalist: 0, ArabianRevivalist: 0, ChineseRevivalist: 0, Repopulationist: 0, Eugenics: 0, Hedonism: 0, IntellectualDependency: 0, SlaveProfessionalism: 0, PetiteAdmiration: 0, StatuesqueGlorification: 0}>> -<</if>> - -<<if ndef $arcologyUpgrade>> - <<set $arcologyUpgrade = {drones: 0, hydro: 0, apron: 0, grid: 0, spire: 0}>> - <<set $arcologyUpgrade.drones = ($AProsperityCap > 60) ? 1 : 0>> - <<set $arcologyUpgrade.hydro = ($AProsperityCap > 80) ? 1 : 0>> - <<set $arcologyUpgrade.apron = ($AProsperityCap > 100) ? 1 : 0>> - <<set $arcologyUpgrade.grid = ($AProsperityCap > 120) ? 1 : 0>> - <<set $arcologyUpgrade.spire = ($AProsperityCap > 240) ? 1 : 0>> -<</if>> - -<<if def $AMenials>> - <<set $ASlaves += Math.trunc($AMenials / 2)>> - <<unset $AMenials>> -<</if>> - -<<if def $helots>> - <<set $menials = $helots>> - <<unset $helots>> -<</if>> -<<if def $TradeShowHelots>> - <<set $TradeShowMenials = $TradeShowHelots>> - <<unset $TradeShowHelots>> -<</if>> - -<<if ndef $seeBuilding>> - <<set $seeBuilding = $seeArcology>> -<</if>> - -<<if def $year>> - <<unset $year>> -<</if>> -<<if def $day>> - <<unset $day>> -<</if>> -<<if def $month>> - <<unset $month>> -<</if>> - -<<if ndef $arcologies>> - <<set $arcologies = []>> - <<set $arcologies[0] = {name: "Arcology X-", direction: 0, government: 1, honeymoon: 0, prosperity: 50, FSSupremacist: "unset", FSSupremacistRace: 0, FSSubjugationist: "unset", FSSubjugationistRace: 0, FSGenderRadicalist: "unset", FSGenderFundamentalist: "unset", FSPaternalist: "unset", FSDegradationist: "unset", FSBodyPurist: "unset", FSTransformationFetishist: "unset", FSYouthPreferentialist: "unset", FSMaturityPreferentialist: "unset", FSSlimnessEnthusiast: "unset", FSAssetExpansionist: "unset", FSPastoralist: "unset", FSPhysicalIdealist: "unset", FSChattelReligionist: "unset", FSRomanRevivalist: "unset", FSEgyptianRevivalist: "unset", FSEdoRevivalist: "unset", FSArabianRevivalist: "unset", FSChineseRevivalist: "unset", FSNull: "unset", FSRepopulationFocus: "unset", FSRestart: "unset", FSHedonisticDecadence: "unset", FSIntellectualDependency: "unset", FSSlaveProfessionalism: "unset", FSPetiteAdmiration: "unset", FSStatuesqueGlorification: "unset", embargo: 1, embargoTarget: -1, influenceTarget: -1, influenceBonus: 0, rival: 0}>> -<</if>> - -<<if def $arcologyName>> - <<set $arcologies[0].name = $arcologyName>> - <<unset $arcologyName>> -<<elseif ndef $arcologies[0].name>> - <<set $arcologies[0].name = "Arcology X-4">> -<</if>> - -<<if ndef $arcologies[0].ownership>> - <<set $arcologies[0].ownership = 50>> -<</if>> -<<if ndef $arcologies[0].minority>> - <<set $arcologies[0].minority = 20>> -<</if>> -<<if ndef $arcologies[0].embargo>> - <<set $arcologies[0].embargo = 1>> -<</if>> -<<if ndef $arcologies[0].embargoTarget>> - <<set $arcologies[0].embargoTarget = -1>> -<</if>> -<<if ndef $arcologies[0].hackingEconomic>> - <<set $arcologies[0].hackingEconomic = 1>> -<</if>> -<<if ndef $arcologies[0].hackingEconomicTarget>> - <<set $arcologies[0].hackingEconomicTarget = -1>> -<</if>> -<<if ndef $arcologies[0].hackingReputationTarget>> - <<set $arcologies[0].hackingReputationTarget = -1>> -<</if>> -<<if ndef $arcologies[0].hackingReputation>> - <<set $arcologies[0].hackingReputation = 1>> -<</if>> -<<if ndef $arcologies[0].influenceTarget>> - <<set $arcologies[0].influenceTarget = -1>> -<</if>> -<<if ndef $arcologies[0].influenceBonus>> - <<set $arcologies[0].influenceBonus = -1>> -<</if>> -<<if ndef $arcologies[0].CyberEconomic>> - <<set $arcologies[0].CyberEconomic = 1>> -<</if>> -<<if ndef $arcologies[0].CyberEconomicTarget>> - <<set $arcologies[0].CyberEconomicTarget = -1>> -<</if>> -<<if ndef $arcologies[0].CyberReputation>> - <<set $arcologies[0].CyberReputation = 1>> -<</if>> -<<if ndef $arcologies[0].CyberReputationTarget>> - <<set $arcologies[0].CyberReputationTarget = -1>> -<</if>> -<<if ndef $arcologies[0].rival>> - <<set $arcologies[0].rival = 0>> -<</if>> -<<if ndef $arcologies[0].FSNull>> - <<set $arcologies[0].FSNull = "unset">> -<</if>> -<<if ndef $arcologies[0].FSRepopulationFocus>> - <<set $arcologies[0].FSRepopulationFocus = "unset">> -<</if>> -<<if ndef $arcologies[0].FSRepopulationFocusPregPolicy>> - <<set $arcologies[0].FSRepopulationFocusPregPolicy = 0>> -<</if>> -<<if ndef $arcologies[0].FSRepopulationFocusMilfPolicy>> - <<set $arcologies[0].FSRepopulationFocusMilfPolicy = 0>> -<</if>> -<<if ndef $arcologies[0].FSRepopulationFocusInterest>> - <<set $arcologies[0].FSRepopulationFocusInterest = 0>> -<</if>> -<<if ndef $arcologies[0].FSRestart>> - <<set $arcologies[0].FSRestart = "unset">> -<</if>> -<<if ndef $arcologies[0].FSEugenicsChastityPolicy>> - <<set $arcologies[0].FSEugenicsChastityPolicy = 0>> -<</if>> -<<if ndef $arcologies[0].FSEugenicsSterilizationPolicy>> - <<set $arcologies[0].FSEugenicsSterilizationPolicy = 0>> -<</if>> -<<if ndef $arcologies[0].FSEugenicsInterest>> - <<set $arcologies[0].FSEugenicsInterest = 0>> -<</if>> -<<if ndef $arcologies[0].PCminority>> - <<set $arcologies[0].PCminority = 0>> -<</if>> -<<if ndef $arcologies[0].demandFactor>> - <<set $arcologies[0].demandFactor = 250>> -<</if>> -<<if ndef $arcologies[0].leaderID>> - <<set $arcologies[0].leaderID = 0>> -<</if>> - -<<if (def $FSSupremacist) && $FSSupremacist != "unset">> - <<set $arcologies[0].FSSupremacist = $FSSupremacist>> - <<set $arcologies[0].FSSupremacistRace = $FSSupremacistRace>> - <<unset $FSSupremacist>> - <<unset $FSSupremacistRace>> -<<elseif ndef $arcologies[0].FSSupremacist>> - <<set $arcologies[0].FSSupremacist = "unset">> -<</if>> -<<if (def $FSSupremacistLawME) && $FSSupremacistLawME != 0>> - <<set $arcologies[0].FSSupremacistLawME = $FSSupremacistLawME>> - <<unset $FSSupremacistLawME>> -<<elseif ndef $arcologies[0].FSSupremacistLawME>> - <<set $arcologies[0].FSSupremacistLawME = 0>> -<</if>> -<<if $arcologies[0].FSSupremacistRace == "middle">> - <<set $arcologies[0].FSSupremacistRace = "middle eastern">> -<<elseif $arcologies[0].FSSupremacistRace == "pacific">> - <<set $arcologies[0].FSSupremacistRace = "pacific islander">> -<<elseif $arcologies[0].FSSupremacistRace == "southern">> - <<set $arcologies[0].FSSupremacistRace = "southern european">> -<<elseif $arcologies[0].FSSupremacistRace == "mixed">> - <<set $arcologies[0].FSSupremacistRace = "mixed race">> -<</if>> - -<<if (def $FSSubjugationist) && $FSSubjugationist != "unset">> - <<set $arcologies[0].FSSubjugationist = $FSSubjugationist>> - <<set $arcologies[0].FSSubjugationistRace = $FSSubjugationistRace>> - <<unset $FSSubjugationist>> - <<unset $FSSubjugationistRace>> -<<elseif ndef $arcologies[0].FSSubjugationist>> - <<set $arcologies[0].FSSubjugationist = "unset">> -<</if>> -<<if (def $FSSubjugationistLawME) && $FSSubjugationistLawME != 0>> - <<set $arcologies[0].FSSubjugationistLawME = $FSSubjugationistLawME>> - <<unset $FSSubjugationistLawME>> -<<elseif ndef $arcologies[0].FSSubjugationistLawME>> - <<set $arcologies[0].FSSubjugationistLawME = 0>> -<</if>> -<<if $arcologies[0].FSSubjugationistRace == "middle">> - <<set $arcologies[0].FSSubjugationistRace = "middle eastern">> -<<elseif $arcologies[0].FSSubjugationistRace == "pacific">> - <<set $arcologies[0].FSSubjugationistRace = "pacific islander">> -<<elseif $arcologies[0].FSSubjugationistRace == "southern">> - <<set $arcologies[0].FSSubjugationistRace = "southern european">> -<<elseif $arcologies[0].FSSubjugationistRace == "mixed">> - <<set $arcologies[0].FSSubjugationistRace = "mixed race">> -<</if>> - -<<if (def $FSDegradationist) && $FSDegradationist != "unset">> - <<set $arcologies[0].FSDegradationist = $FSDegradationist>> - <<unset $FSDegradationist>> -<<elseif ndef $arcologies[0].FSDegradationist>> - <<set $arcologies[0].FSDegradationist = "unset">> -<</if>> - -<<if (def $FSDegradationistLaw) && $FSDegradationistLaw != 0>> - <<set $arcologies[0].FSDegradationistLaw = $FSDegradationistLaw>> - <<unset $FSDegradationistLaw>> -<<elseif ndef $arcologies[0].FSDegradationistLaw>> - <<set $arcologies[0].FSDegradationistLaw = 0>> -<</if>> - -<<if (def $FSPaternalist) && $FSPaternalist != "unset">> - <<set $arcologies[0].FSPaternalist = $FSPaternalist>> - <<unset $FSPaternalist>> -<<elseif ndef $arcologies[0].FSPaternalist>> - <<set $arcologies[0].FSPaternalist = "unset">> -<</if>> - -<<if (def $FSPaternalistLaw) && $FSPaternalistLaw != 0>> - <<set $arcologies[0].FSPaternalistLaw = $FSPaternalistLaw>> - <<unset $FSPaternalistLaw>> -<<elseif ndef $arcologies[0].FSPaternalistLaw>> - <<set $arcologies[0].FSPaternalistLaw = 0>> -<</if>> - -<<if (def $FSGenderFundamentalist) && $FSGenderFundamentalist != "unset">> - <<set $arcologies[0].FSGenderFundamentalist = $FSGenderFundamentalist>> - <<unset $FSGenderFundamentalist>> -<<elseif ndef $arcologies[0].FSGenderFundamentalist>> - <<set $arcologies[0].FSGenderFundamentalist = "unset">> -<</if>> - -<<if (def $FSGenderFundamentalistSMR) && $FSGenderFundamentalistSMR != 0>> - <<set $arcologies[0].FSGenderFundamentalistSMR = $FSGenderFundamentalistSMR>> - <<unset $FSGenderFundamentalistSMR>> -<<elseif ndef $arcologies[0].FSGenderFundamentalistSMR>> - <<set $arcologies[0].FSGenderFundamentalistSMR = 0>> -<</if>> -<<if def $arcologies[0].FSGenderFundamentalistLaw>> - <<run delete $arcologies[0].FSGenderFundamentalistLaw>> -<</if>> - -<<if (def $FSGenderRadicalist) && $FSGenderRadicalist != "unset">> - <<set $arcologies[0].FSGenderRadicalist = $FSGenderRadicalist>> - <<unset $FSGenderRadicalist>> -<<elseif ndef $arcologies[0].FSGenderRadicalist>> - <<set $arcologies[0].FSGenderRadicalist = "unset">> -<</if>> -<<if def $FSGenderRadicalistLaw>> - <<unset $FSGenderRadicalistLaw>> -<</if>> -<<if ndef $arcologies[0].FSGenderRadicalistLawBeauty>> - <<set $arcologies[0].FSGenderRadicalistLawBeauty = 0>> -<</if>> -<<if ndef $arcologies[0].FSGenderRadicalistLawFuta>> - <<set $arcologies[0].FSGenderRadicalistLawFuta = 0>> -<</if>> -<<if def $arcologies[0].FSGenderRadicalistLawDicks>> - <<run delete $arcologies[0].FSGenderRadicalistLawDicks>> -<</if>> -<<if def $arcologies[0].FSGenderRadicalistSMR>> - <<run delete $arcologies[0].FSGenderRadicalistSMR>> -<</if>> - -<<if (def $FSBodyPurist) && $FSBodyPurist != "unset">> - <<set $arcologies[0].FSBodyPurist = $FSBodyPurist>> - <<unset $FSBodyPurist>> -<<elseif ndef $arcologies[0].FSBodyPurist>> - <<set $arcologies[0].FSBodyPurist = "unset">> -<</if>> - -<<if (def $FSBodyPuristLaw) && $FSBodyPuristLaw != 0>> - <<set $arcologies[0].FSBodyPuristLaw = $FSBodyPuristLaw>> - <<unset $FSBodyPuristLaw>> -<<elseif ndef $arcologies[0].FSBodyPuristLaw>> - <<set $arcologies[0].FSBodyPuristLaw = 0>> -<</if>> - -<<if (def $FSPhysicalIdealist) && $FSPhysicalIdealist != "unset">> - <<set $arcologies[0].FSPhysicalIdealist = $FSPhysicalIdealist>> - <<unset $FSPhysicalIdealist>> -<<elseif ndef $arcologies[0].FSPhysicalIdealist>> - <<set $arcologies[0].FSPhysicalIdealist = "unset">> -<</if>> - -<<if (def $FSPhysicalIdealistSMR) && $FSPhysicalIdealistSMR != 0>> - <<set $arcologies[0].FSPhysicalIdealistSMR = $FSPhysicalIdealistSMR>> - <<unset $FSPhysicalIdealistSMR>> -<<elseif ndef $arcologies[0].FSPhysicalIdealistSMR>> - <<set $arcologies[0].FSPhysicalIdealistSMR = 0>> -<</if>> - -<<if (def $FSTransformationFetishist) && $FSTransformationFetishist != "unset">> - <<set $arcologies[0].FSTransformationFetishist = $FSTransformationFetishist>> - <<unset $FSTransformationFetishist>> -<<elseif ndef $arcologies[0].FSTransformationFetishist>> - <<set $arcologies[0].FSTransformationFetishist = "unset">> -<</if>> - -<<if (def $FSTransformationFetishistSMR) && $FSTransformationFetishistSMR != 0>> - <<set $arcologies[0].FSTransformationFetishistSMR = $FSTransformationFetishistSMR>> - <<unset $FSTransformationFetishistSMR>> -<<elseif ndef $arcologies[0].FSTransformationFetishistSMR>> - <<set $arcologies[0].FSTransformationFetishistSMR = 0>> -<</if>> -<<if def $arcologies[0].FSTransformationFetishistLaw>> - <<run delete $arcologies[0].FSTransformationFetishistLaw>> -<</if>> - -<<if (def $FSAssetExpansionist) && $FSAssetExpansionist != "unset">> - <<set $arcologies[0].FSAssetExpansionist = $FSAssetExpansionist>> - <<unset $FSAssetExpansionist>> -<<elseif ndef $arcologies[0].FSAssetExpansionist>> - <<set $arcologies[0].FSAssetExpansionist = "unset">> -<</if>> - -<<if (def $FSAssetExpansionistSMR) && $FSAssetExpansionistSMR != 0>> - <<set $arcologies[0].FSAssetExpansionistSMR = $FSAssetExpansionistSMR>> - <<unset $FSAssetExpansionistSMR>> -<<elseif ndef $arcologies[0].FSAssetExpansionistSMR>> - <<set $arcologies[0].FSAssetExpansionistSMR = 0>> -<</if>> -<<if def $arcologies[0].FSAssetExpansionistLaw>> - <<run delete $arcologies[0].FSAssetExpansionistLaw>> -<</if>> - -<<if (def $FSSlimnessEnthusiast) && $FSSlimnessEnthusiast != "unset">> - <<set $arcologies[0].FSSlimnessEnthusiast = $FSSlimnessEnthusiast>> - <<unset $FSSlimnessEnthusiast>> -<<elseif ndef $arcologies[0].FSSlimnessEnthusiast>> - <<set $arcologies[0].FSSlimnessEnthusiast = "unset">> -<</if>> - -<<if (def $FSSlimnessEnthusiastSMR) && $FSSlimnessEnthusiastSMR != 0>> - <<set $arcologies[0].FSSlimnessEnthusiastSMR = $FSSlimnessEnthusiastSMR>> - <<unset $FSSlimnessEnthusiastSMR>> -<<elseif ndef $arcologies[0].FSSlimnessEnthusiastSMR>> - <<set $arcologies[0].FSSlimnessEnthusiastSMR = 0>> -<</if>> - -<<if (def $FSMaturityPreferentialist) && $FSMaturityPreferentialist != "unset">> - <<set $arcologies[0].FSMaturityPreferentialist = $FSMaturityPreferentialist>> - <<unset $FSMaturityPreferentialist>> -<<elseif ndef $arcologies[0].FSMaturityPreferentialist>> - <<set $arcologies[0].FSMaturityPreferentialist = "unset">> -<</if>> - -<<if (def $FSMaturityPreferentialistLaw) && $FSMaturityPreferentialistLaw != 0>> - <<set $arcologies[0].FSMaturityPreferentialistLaw = $FSMaturityPreferentialistLaw>> - <<unset $FSMaturityPreferentialistLaw>> -<<elseif ndef $arcologies[0].FSMaturityPreferentialistLaw>> - <<set $arcologies[0].FSMaturityPreferentialistLaw = 0>> -<</if>> - -<<if (def $FSYouthPreferentialist) && $FSYouthPreferentialist != "unset">> - <<set $arcologies[0].FSYouthPreferentialist = $FSYouthPreferentialist>> - <<unset $FSYouthPreferentialist>> -<<elseif ndef $arcologies[0].FSYouthPreferentialist>> - <<set $arcologies[0].FSYouthPreferentialist = "unset">> -<</if>> - -<<if (def $FSYouthPreferentialistLaw) && $FSYouthPreferentialistLaw != 0>> - <<set $arcologies[0].FSYouthPreferentialistLaw = $FSYouthPreferentialistLaw>> - <<unset $FSYouthPreferentialistLaw>> -<<elseif ndef $arcologies[0].FSYouthPreferentialistLaw>> - <<set $arcologies[0].FSYouthPreferentialistLaw = 0>> -<</if>> - -<<if (def $FSPastoralist) && $FSPastoralist != "unset">> - <<set $arcologies[0].FSPastoralist = $FSPastoralist>> - <<unset $FSPastoralist>> -<<elseif ndef $arcologies[0].FSPastoralist>> - <<set $arcologies[0].FSPastoralist = "unset">> -<</if>> - -<<if (def $FSPastoralistLaw) && $FSPastoralistLaw != 0>> - <<set $arcologies[0].FSPastoralistLaw = $FSPastoralistLaw>> - <<unset $FSPastoralistLaw>> -<<elseif ndef $arcologies[0].FSPastoralistLaw>> - <<set $arcologies[0].FSPastoralistLaw = 0>> -<</if>> - -<<if (def $FSChattelReligionist) && $FSChattelReligionist != "unset">> - <<set $arcologies[0].FSChattelReligionist = $FSChattelReligionist>> - <<unset $FSChattelReligionist>> -<<elseif ndef $arcologies[0].FSChattelReligionist>> - <<set $arcologies[0].FSChattelReligionist = "unset">> -<</if>> - -<<if (def $FSChattelReligionistLaw) && $FSChattelReligionistLaw != 0>> - <<set $arcologies[0].FSChattelReligionistLaw = $FSChattelReligionistLaw>> - <<unset $FSChattelReligionistLaw>> -<<elseif ndef $arcologies[0].FSChattelReligionistLaw>> - <<set $arcologies[0].FSChattelReligionistLaw = 0>> -<</if>> - -<<if (def $FSRomanRevivalist) && $FSRomanRevivalist != "unset">> - <<set $arcologies[0].FSRomanRevivalist = $FSRomanRevivalist>> - <<unset $FSRomanRevivalist>> -<<elseif ndef $arcologies[0].FSRomanRevivalist>> - <<set $arcologies[0].FSRomanRevivalist = "unset">> -<</if>> - -<<if (def $FSRomanRevivalistLaw) && $FSRomanRevivalistLaw != 0>> - <<set $arcologies[0].FSRomanRevivalistLaw = $FSRomanRevivalistLaw>> - <<unset $FSRomanRevivalistLaw>> -<<elseif ndef $arcologies[0].FSRomanRevivalistLaw>> - <<set $arcologies[0].FSRomanRevivalistLaw = 0>> -<</if>> - -<<if (def $FSEgyptianRevivalist) && $FSEgyptianRevivalist != "unset">> - <<set $arcologies[0].FSEgyptianRevivalist = $FSEgyptianRevivalist>> - <<unset $FSEgyptianRevivalist>> -<<elseif ndef $arcologies[0].FSEgyptianRevivalist>> - <<set $arcologies[0].FSEgyptianRevivalist = "unset">> -<</if>> - -<<if (def $FSEgyptianRevivalistLaw) && $FSEgyptianRevivalistLaw != 0>> - <<set $arcologies[0].FSEgyptianRevivalistLaw = $FSEgyptianRevivalistLaw>> - <<unset $FSEgyptianRevivalistLaw>> -<<elseif ndef $arcologies[0].FSEgyptianRevivalistLaw>> - <<set $arcologies[0].FSEgyptianRevivalistLaw = 0>> -<</if>> - -<<if ndef $arcologies[0].FSEgyptianRevivalistIncestPolicy>> - <<set $arcologies[0].FSEgyptianRevivalistIncestPolicy = 0>> -<</if>> -<<if ndef $arcologies[0].FSEgyptianRevivalistInterest>> - <<set $arcologies[0].FSEgyptianRevivalistInterest = 0>> -<</if>> - -<<if (def $FSEdoRevivalist) && $FSEdoRevivalist != "unset">> - <<set $arcologies[0].FSEdoRevivalist = $FSEdoRevivalist>> - <<unset $FSEdoRevivalist>> -<<elseif ndef $arcologies[0].FSEdoRevivalist>> - <<set $arcologies[0].FSEdoRevivalist = "unset">> -<</if>> - -<<if (def $FSEdoRevivalistLaw) && $FSEdoRevivalistLaw != 0>> - <<set $arcologies[0].FSEdoRevivalistLaw = $FSEdoRevivalistLaw>> - <<unset $FSEdoRevivalistLaw>> -<<elseif ndef $arcologies[0].FSEdoRevivalistLaw>> - <<set $arcologies[0].FSEdoRevivalistLaw = 0>> -<</if>> - -<<if (def $FSArabianRevivalist) && $FSArabianRevivalist != "unset">> - <<set $arcologies[0].FSArabianRevivalist = $FSArabianRevivalist>> - <<unset $FSArabianRevivalist>> -<<elseif ndef $arcologies[0].FSArabianRevivalist>> - <<set $arcologies[0].FSArabianRevivalist = "unset">> -<</if>> - -<<if (def $FSArabianRevivalistLaw) && $FSArabianRevivalistLaw != 0>> - <<set $arcologies[0].FSArabianRevivalistLaw = $FSArabianRevivalistLaw>> - <<unset $FSArabianRevivalistLaw>> -<<elseif ndef $arcologies[0].FSArabianRevivalistLaw>> - <<set $arcologies[0].FSArabianRevivalistLaw = 0>> -<</if>> - -<<if (def $FSChineseRevivalist) && $FSChineseRevivalist != "unset">> - <<set $arcologies[0].FSChineseRevivalist = $FSChineseRevivalist>> - <<unset $FSChineseRevivalist>> -<<elseif ndef $arcologies[0].FSChineseRevivalist>> - <<set $arcologies[0].FSChineseRevivalist = "unset">> -<</if>> - -<<if (def $FSChineseRevivalistLaw) && $FSChineseRevivalistLaw != 0>> - <<set $arcologies[0].FSChineseRevivalistLaw = $FSChineseRevivalistLaw>> - <<unset $FSChineseRevivalistLaw>> -<<elseif ndef $arcologies[0].FSChineseRevivalistLaw>> - <<set $arcologies[0].FSChineseRevivalistLaw = 0>> -<</if>> - -<<if def $arcologies[0].FSNullLaw>> - <<run delete $arcologies[0].FSNullLaw>> -<</if>> - -<<silently>> -<<include "MOD_Edit FS Cheat Datatype Cleanup">> -<<include "MOD_Edit Neighbor Arcology Cheat Datatype Cleanup">> -<</silently>> - -Setting missing global variables: - -<<if typeof $assistant == "number">> - <<run assistant.BC()>> -<<else>> - <<run assistant.object()>> -<</if>> - -<<if ndef $CulturalOpenness>> - <<set $CulturalOpenness = 0>> -<</if>> - -<<if ndef $displayAssignments>> - <<set $displayAssignments = 1>> -<</if>> - -<<if ndef $universalRulesImpregnation>> - <<set $universalRulesImpregnation = "none">> -<</if>> - -<<if ndef $abbreviateNationality>> - <<set $abbreviateNationality = 0>> -<</if>> - -<<if ndef $language>> - <<set $language = "English">> -<</if>> - -<<if ndef $terrain>> - <<set $terrain = "rural">> -<</if>> - -<<if ndef $nicaeaAnnounceable>> - <<set $nicaeaAnnounceable = 0>> -<</if>> -<<if ndef $nicaeaAnnounced>> - <<set $nicaeaAnnounced = 0>> -<</if>> -<<if ndef $nicaeaPreparation>> - <<set $nicaeaPreparation = 0>> -<</if>> -<<if ndef $nicaeaInvolvement>> - <<set $nicaeaInvolvement = -1>> -<</if>> -<<if ndef $nicaeaPower>> - <<set $nicaeaPower = 0>> -<</if>> -<<if ndef $nicaeaHeld>> - <<set $nicaeaHeld = 0>> -<</if>> - -<<if ndef $REFeminizationCheckinIDs>> - <<set $REFeminizationCheckinIDs = []>> -<</if>> -<<if ndef $REMILFCheckinIDs>> - <<set $REMILFCheckinIDs = []>> -<</if>> -<<if ndef $REOrientationCheckinIDs>> - <<set $REOrientationCheckinIDs = []>> -<</if>> -<<if ndef $REUglyCheckinIDs>> - <<set $REUglyCheckinIDs = []>> -<</if>> -<<if ndef $REButtholeCheckinIDs>> - <<set $REButtholeCheckinIDs = []>> -<</if>> -<<if ndef $REFutaSisterCheckinIDs>> - <<set $REFutaSisterCheckinIDs = []>> -<</if>> -<<if ndef $REReductionCheckinIDs>> - <<set $REReductionCheckinIDs = []>> -<</if>> -<<if def $RERelationshipSlave>> - <<unset $RERelationshipSlave>> -<</if>> -<<if ndef $dormitory>> - <<set $dormitory = 20>> -<</if>> -<<if ndef $dormitoryPopulation>> - <<set $dormitoryPopulation = 0>> -<</if>> -<<if ndef $rooms>> - <<set $rooms = 5>> -<</if>> -<<if ndef $roomsPopulation>> - <<set $roomsPopulation = 0>> -<</if>> - -<<if ndef $universalHGImpregnateMasterSuiteToggle>> - <<set $universalHGImpregnateMasterSuiteToggle = 0>> -<</if>> - -<<run FacilityDatatypeCleanup()>> - -<<if ndef $fighterIDs>> - <<set $fighterIDs = []>> -<</if>> -<<if ndef $pitVirginities>> - <<set $pitVirginities = 0>> -<</if>> -<<if ndef $pitBG>> - <<set $pitBG = 0>> -<</if>> -<<if ndef $slaveFightingBG>> - <<set $slaveFightingBG = 0>> -<</if>> -<<if ndef $pitAnimal>> - <<set $pitAnimal = 0>> -<</if>> -<<if ndef $pitAnimalType>> - <<set $pitAnimalType = 0>> -<</if>> - -<<if ndef $verboseDescriptions>> - <<set $verboseDescriptions = 0>> -<</if>> -<<if ndef $clothesBoughtBunny>> - <<set $clothesBoughtBunny = 0>> -<</if>> -<<if ndef $clothesBoughtConservative>> - <<set $clothesBoughtConservative = 0>> -<</if>> -<<if ndef $clothesBoughtChains>> - <<set $clothesBoughtChains = 0>> -<</if>> -<<if ndef $clothesBoughtWestern>> - <<set $clothesBoughtWestern = 0>> -<</if>> -<<if ndef $clothesBoughtOil>> - <<set $clothesBoughtOil = 0>> -<</if>> -<<if ndef $clothesBoughtHabit>> - <<set $clothesBoughtHabit = 0>> -<</if>> -<<if ndef $clothesBoughtToga>> - <<set $clothesBoughtToga = 0>> -<</if>> -<<if ndef $clothesBoughtKimono>> - <<set $clothesBoughtKimono = 0>> -<</if>> -<<if ndef $clothesBoughtHarem>> - <<set $clothesBoughtHarem = 0>> -<</if>> -<<if ndef $clothesBoughtQipao>> - <<set $clothesBoughtQipao = 0>> -<</if>> -<<if ndef $clothesBoughtEgypt>> - <<set $clothesBoughtEgypt = 0>> -<</if>> -<<if ndef $clothesBoughtBimbo>> - <<set $clothesBoughtBimbo = 0>> -<</if>> -<<if ndef $clothesBoughtCourtesan>> - <<set $clothesBoughtCourtesan = 0>> -<</if>> -<<if ndef $shoesBoughtHeels>> - <<set $shoesBoughtHeels = 0>> -<</if>> -<<if ndef $clothesBoughtPetite>> - <<set $clothesBoughtPetite = 0>> -<</if>> -<<if ndef $clothesBoughtMilitary>> - <<set $clothesBoughtMilitary = 0>> -<</if>> -<<if ndef $clothesBoughtCultural>> - <<set $clothesBoughtCultural = 0>> -<</if>> -<<if ndef $clothesBoughtMiddleEastern>> - <<set $clothesBoughtMiddleEastern = 0>> -<</if>> -<<if ndef $clothesBoughtPol>> - <<set $clothesBoughtPol = 0>> -<</if>> -<<if ndef $clothesBoughtCostume>> - <<set $clothesBoughtCostume = 0>> -<</if>> -<<if ndef $clothesBoughtPantsu>> - <<set $clothesBoughtPantsu = 0>> -<</if>> -<<if ndef $clothesBoughtCareer>> - <<set $clothesBoughtCareer = 0>> -<</if>> -<<if ndef $clothesBoughtDresses>> - <<set $clothesBoughtDresses = 0>> -<</if>> -<<if ndef $clothesBoughtBodysuits>> - <<set $clothesBoughtBodysuits = 0>> -<</if>> -<<if ndef $clothesBoughtCasual>> - <<set $clothesBoughtCasual = 0>> -<</if>> -<<if ndef $clothesBoughtUnderwear>> - <<set $clothesBoughtUnderwear = 0>> -<</if>> -<<if ndef $clothesBoughtSports>> - <<set $clothesBoughtSports = 0>> -<</if>> -<<if ndef $clothesBoughtPony>> - <<set $clothesBoughtPony = 0>> -<</if>> -<<if ndef $clothesBoughtSwimwear>> - <<set $clothesBoughtSwimwear = 0>> -<</if>> -<<if ndef $clothesBoughtMaternityDress>> - <<set $clothesBoughtMaternityDress = 0>> -<</if>> -<<if ndef $clothesBoughtMaternityLingerie>> - <<set $clothesBoughtMaternityLingerie = 0>> -<</if>> -<<if ndef $clothesBoughtLazyClothes>> - <<set $clothesBoughtLazyClothes = 0>> -<</if>> -<<if ndef $buckets>> - <<set $buckets = 0>> -<</if>> - -<<if ndef $universalRulesRest>> - <<set $universalRulesRest = 0>> -<</if>> -<<if ndef $universalRulesNewSlavesRA>> - <<set $universalRulesNewSlavesRA = 1>> -<</if>> - -<<if ndef $hormoneUpgradeMood>> - <<set $hormoneUpgradeMood = 0>> -<</if>> -<<if ndef $hormoneUpgradeShrinkage>> - <<set $hormoneUpgradeShrinkage = 0>> -<</if>> -<<if ndef $hormoneUpgradePower>> - <<set $hormoneUpgradePower = 0>> -<</if>> - -<<if ndef $schoolSuggestion>> - <<set $schoolSuggestion = 0>> -<</if>> - -<<if ndef $prostheticsUpgrade>> - <<set $prostheticsUpgrade = 0>> -<</if>> -<<if ndef $dispensaryUpgrade>> - <<set $dispensaryUpgrade = 0>> -<</if>> -<<if ndef $growthStim>> - <<set $growthStim = 0>> -<</if>> -<<if ndef $pubertyLength>> - <<set $pubertyLength = 5>> -<</if>> -<<if ndef $maxGrowthAge>> - <<set $maxGrowthAge = 24>> -<</if>> -<<if ndef $ImplantProductionUpgrade>> - <<set $ImplantProductionUpgrade = 0>> -<</if>> -<<if ndef $geneticMappingUpgrade>> - <<set $geneticMappingUpgrade = 0>> -<</if>> -<<if ndef $pregnancyMonitoringUpgrade>> - <<set $pregnancyMonitoringUpgrade = 0>> -<</if>> -<<if ndef $permaPregImplant>> - <<set $permaPregImplant = 0>> -<</if>> -<<if ndef $pubertyHormones>> - <<set $pubertyHormones = 0>> -<</if>> -<<if ndef $dietXXY>> - <<set $dietXXY = 0>> -<</if>> -<<if ndef $dietCleanse>> - <<set $dietCleanse = 0>> -<</if>> -<<if ndef $dietFertility>> - <<set $dietFertility = 0>> -<</if>> -<<if ndef $cumProDiet>> - <<set $cumProDiet = 0>> -<</if>> -<<if ndef $aphrodisiacUpgradeRefine>> - <<set $aphrodisiacUpgradeRefine = 0>> -<</if>> -<<if ndef $healthyDrugsUpgrade>> - <<set $healthyDrugsUpgrade = 0>> -<</if>> -<<if ndef $reproductionFormula>> - <<set $reproductionFormula = 0>> -<</if>> -<<if ndef $superFertilityDrugs>> - <<set $superFertilityDrugs = 0>> -<</if>> -<<if ndef $bellyImplants>> - <<set $bellyImplants = 0>> -<</if>> -<<if ndef $cervixImplants>> - <<set $cervixImplants = 0>> -<</if>> -<<if ndef $prostateImplants>> - <<set $prostateImplants = 0>> -<</if>> -<<if ndef $sympatheticOvaries>> - <<set $sympatheticOvaries = 0>> -<</if>> -<<if ndef $fertilityImplant>> - <<set $fertilityImplant = 0>> -<</if>> -<<if ndef $asexualReproduction>> - <<set $asexualReproduction = 0>> -<</if>> -<<if ndef $shelterSlaveGeneratedWeek || $shelterSlaveGeneratedWeek > $week>> - <<set $shelterSlaveGeneratedWeek = 0>> -<</if>> -<<if ndef $goodImageCampaign>> - <<set $goodImageCampaign = 0>> -<</if>> -<<if ndef $sexualOpeness>> - <<set $sexualOpeness = 0>> -<</if>> -<<if ndef $youngerOvaries>> - <<set $youngerOvaries = 0>> -<</if>> -<<if ndef $animalOvaries>> - <<set $animalOvaries = 0>> -<</if>> -<<if ndef $animalTesticles>> - <<set $animalTesticles = 0>> -<</if>> -<<if ndef $animalMpreg>> - <<set $animalMpreg = 0>> -<</if>> -<<if ndef $cloningSystem>> - <<set $cloningSystem = 0>> -<</if>> -<<if ndef $geneticFlawLibrary>> - <<set $geneticFlawLibrary = 0>> -<</if>> - -<<if ndef $pregInventor>> - <<set $pregInventor = 0>> -<</if>> -<<if ndef $pregInventorID>> - <<set $pregInventorID = 0>> -<</if>> -<<if ndef $pregInventions>> - <<set $pregInventions = 0>> -<</if>> -<<if ndef $traitorWeeks>> - <<set $traitorWeeks = 0>> -<</if>> -<<if def $taitorWeeks>> - <<set $traitorWeeks = $taitorWeeks>> - <<unset $taitorWeeks>> -<</if>> -<<if ndef $rivalGender>> - <<if ($rivalOwner > 0)>> - <<if random(0,99) <= $seeDicks>> - <<set $rivalGender = 2>> - <<else>> - <<set $rivalGender = 1>> - <</if>> - <<else>> - <<set $rivalGender = 0>> - <</if>> -<</if>> -<<if ndef $realRoyalties>> - <<set $realRoyalties = 0>> -<</if>> - -/* Job Fulfillment Center */ -<<if ndef $JFCOrder>> - <<set $JFCOrder = 0>> -<</if>> -<<if ndef $Role>> - <<set $Role = "">> -<</if>> - -<<if ndef $trinkets>> - <<set $trinkets = []>> - - <<if $PC.career == "wealth">> - <<set $trinkets.push("a collection of diplomas from expensive schools")>> - <<elseif $PC.career == "capitalist">> - <<set $trinkets.push("a framed low denomination piece of paper money from your native country")>> - <<elseif $PC.career == "mercenary">> - <<set $trinkets.push("a battered old assault rifle")>> - <<elseif $PC.career == "slaver">> - <<set $trinkets.push("a framed picture of a slave with her sale price scrawled across the bottom")>> - <<elseif $PC.career == "engineer">> - <<set $trinkets.push("an artist's impression of an early arcology design")>> - <<elseif $PC.career == "medicine">> - <<set $trinkets.push("a framed postsurgical x-ray")>> - <<elseif $PC.career == "celebrity">> - <<set $trinkets.push("a framed copy of the first news story featuring yourself")>> - <<elseif $PC.career == "arcology owner">> - <<set $trinkets.push("a miniature model of your first arcology")>> - <<elseif $PC.career == "escort">> - <<set $trinkets.push("a copy of the first porno you starred in")>> - <<elseif $PC.career == "servant">> - <<set $trinkets.push("a framed picture of your late Master")>> - <<elseif $PC.career == "gang">> - <<set $trinkets.push("your favorite handgun, whose sight has instilled fear in many")>> - <<elseif $PC.career == "BlackHat">> - <<set $trinkets.push("a news clipping of your first successful live hack")>> - <</if>> -<</if>> - -<<if ndef $TSS>> - <<set $TSS = {schoolUpgrade: 0, schoolPresent: 0, schoolProsperity: 0, subsidize: 0, schoolAnnexed: 0, studentsBought: 0, schoolSale: 0}>> -<</if>> -<<if ndef $GRI>> - <<set $GRI = {schoolUpgrade: 0, schoolPresent: 0, schoolProsperity: 0, subsidize: 0, schoolAnnexed: 0, studentsBought: 0, schoolSale: 0}>> -<</if>> -<<if ndef $SCP>> - <<set $SCP = {schoolUpgrade: 0, schoolPresent: 0, schoolProsperity: 0, subsidize: 0, schoolAnnexed: 0, studentsBought: 0, schoolSale: 0}>> -<</if>> -<<if ndef $LDE>> - <<set $LDE = {schoolUpgrade: 0, schoolPresent: 0, schoolProsperity: 0, subsidize: 0, schoolAnnexed: 0, studentsBought: 0, schoolSale: 0}>> -<</if>> -<<if ndef $TGA>> - <<set $TGA = {schoolUpgrade: 0, schoolPresent: 0, schoolProsperity: 0, subsidize: 0, schoolAnnexed: 0, studentsBought: 0, schoolSale: 0}>> -<</if>> -<<if ndef $TCR>> - <<set $TCR = {schoolUpgrade: 0, schoolPresent: 0, schoolProsperity: 0, subsidize: 0, schoolAnnexed: 0, studentsBought: 0, schoolSale: 0}>> -<</if>> -<<if ndef $TFS>> - <<set $TFS = {schoolUpgrade: 0, schoolPresent: 0, schoolProsperity: 0, subsidize: 0, schoolAnnexed: 0, studentsBought: 0, schoolSale: 0, compromiseWeek: 0, farmUpgrade: 0}>> -<</if>> -<<if ndef $TFS.compromiseWeek>> - <<set $TFS.compromiseWeek = 0>> -<</if>> -<<if ndef $HA>> - <<set $HA = {schoolUpgrade: 0, schoolPresent: 0, schoolProsperity: 0, subsidize: 0, schoolAnnexed: 0, studentsBought: 0, schoolSale: 0}>> -<</if>> -<<if ndef $NUL>> - <<set $NUL = {schoolUpgrade: 0, schoolPresent: 0, schoolProsperity: 0, subsidize: 0, schoolAnnexed: 0, studentsBought: 0, schoolSale: 0}>> -<</if>> - -<<if ndef $birthee>> - <<set $birthee = 0>> -<</if>> - -<<if ndef $alwaysSubsidizeRep>> - <<set $alwaysSubsidizeRep = 0>> -<</if>> -<<if ndef $alwaysSubsidizeGrowth>> - <<set $alwaysSubsidizeGrowth = 0>> -<</if>> -<<if ndef $ProImmigrationCash>> - <<set $ProImmigrationCash = 0>> -<</if>> -<<if ndef $ProImmigrationRep>> - <<set $ProImmigrationRep = 0>> -<</if>> -<<if ndef $AntiImmigrationCash>> - <<set $AntiImmigrationCash = 0>> -<</if>> -<<if ndef $AntiImmigrationRep>> - <<set $AntiImmigrationRep = 0>> -<</if>> -<<if ndef $ProEnslavementCash>> - <<set $ProEnslavementCash = 0>> -<</if>> -<<if ndef $ProEnslavementRep>> - <<set $ProEnslavementRep = 0>> -<</if>> -<<if ndef $AntiEnslavementCash>> - <<set $AntiEnslavementCash = 0>> -<</if>> -<<if ndef $AntiEnslavementRep>> - <<set $AntiEnslavementRep = 0>> -<</if>> -<<if ndef $BasicSMR>> - <<set $BasicSMR = 1>> -<</if>> -<<if ndef $HealthInspectionSMR>> - <<set $HealthInspectionSMR = 0>> -<</if>> -<<if ndef $EducationSMR>> - <<set $EducationSMR = 0>> -<</if>> -<<if ndef $FrigiditySMR>> - <<set $FrigiditySMR = 0>> -<</if>> -<<if ndef $BasicBeautySMR>> - <<set $BasicBeautySMR = 0>> -<</if>> -<<if ndef $QualityBeautySMR>> - <<set $QualityBeautySMR = 0>> -<</if>> -<<if ndef $BasicWeightSMR>> - <<set $BasicWeightSMR = 0>> -<</if>> -<<if ndef $BasicIntelligenceSMR>> - <<set $BasicIntelligenceSMR = 0>> -<</if>> -<<if ndef $QualityIntelligenceSMR>> - <<set $QualityIntelligenceSMR = 0>> -<</if>> -<<if ndef $BasicHeightSMR>> - <<set $BasicHeightSMR = 0>> -<</if>> -<<if ndef $AdvancedHeightSMR>> - <<set $AdvancedHeightSMR = 0>> -<</if>> -<<if ndef $IntelligenceEugenicsSMR>> - <<set $IntelligenceEugenicsSMR = 0>> -<</if>> -<<if ndef $HeightEugenicsSMR>> - <<set $HeightEugenicsSMR = 0>> -<</if>> -<<if ndef $FaceEugenicsSMR>> - <<set $FaceEugenicsSMR = 0>> -<</if>> -<<if ndef $HonestySMR>> - <<set $HonestySMR = 0>> -<</if>> -<<if ndef $ProRefugees>> - <<set $ProRefugees = 0>> -<</if>> -<<if ndef $ProRecruitment>> - <<set $ProRecruitment = 0>> -<</if>> -<<if ndef $OralEncouragement>> - <<set $OralEncouragement = 0>> -<</if>> -<<if ndef $VaginalEncouragement>> - <<set $VaginalEncouragement = 0>> -<</if>> -<<if ndef $AnalEncouragement>> - <<set $AnalEncouragement = 0>> -<</if>> -<<if ndef $OralDiscouragement>> - <<set $OralDiscouragement = 0>> -<</if>> -<<if ndef $VaginalDiscouragement>> - <<set $VaginalDiscouragement = 0>> -<</if>> -<<if ndef $AnalDiscouragement>> - <<set $AnalDiscouragement = 0>> -<</if>> -<<if ndef $CashForRep>> - <<set $CashForRep = 0>> -<</if>> -<<if ndef $RepForCash>> - <<set $RepForCash = 0>> -<</if>> -<<if ndef $Cash4Babies>> - <<set $Cash4Babies = 0>> -<</if>> -<<if ndef $PAPublic>> - <<set $PAPublic = 0>> -<</if>> -<<if ndef $CoursingAssociation>> - <<set $CoursingAssociation = 0>> -<</if>> -<<if ndef $Lurcher>> - <<set $Lurcher = 0>> -<</if>> -<<if ndef $coursed>> - <<set $coursed = 0>> -<</if>> -<<if ndef $MixedMarriage>> - <<set $MixedMarriage = 0>> -<</if>> - -<<if ndef $expiree>> - <<set $expiree = 0>> -<</if>> -<<if ndef $retiree>> -<<set $retiree = 0>> - <</if>> -<<if ndef $retirementAge>> - <<set $retirementAge = 45>> -<</if>> -<<if ndef $customRetirementAge>> - <<set $customRetirementAge = 45>> -<</if>> -<<if ndef $customMenialRetirementAge>> - <<set $customMenialRetirementAge = 65>> -<</if>> -<<if ndef $retirementCum>> - <<set $retirementCum = 500000>> -<</if>> -<<if ndef $CustomRetirementAgePolicy>> - <<set $CustomRetirementAgePolicy = 0>> -<</if>> -<<if ndef $PhysicalRetirementAgePolicy>> - <<set $PhysicalRetirementAgePolicy = 0>> -<</if>> -<<if ndef $CumMilestoneRetirement>> - <<set $CumMilestoneRetirement = 0>> -<</if>> -<<if ndef $BioreactorRetirement>> - <<set $BioreactorRetirement = 0>> -<</if>> -<<if ndef $ArcadeRetirement>> - <<set $ArcadeRetirement = 0>> -<</if>> -<<if ndef $CitizenRetirement>> - <<set $CitizenRetirement = 0>> -<</if>> -<<if ndef $citizenRetirementMenials>> - <<set $citizenRetirementMenials = 0>> -<</if>> -<<if ndef $citizenRetirementTrigger>> - <<set $citizenRetirementTrigger = $CitizenRetirementTrigger || 0>> - <<unset $CitizenRetirementTrigger>> -<</if>> -<<if ndef $FSSupLawTrigger>> - <<set $FSSupLawTrigger = 0>> -<</if>> -<<if ndef $FSSubLawTrigger>> - <<set $FSSubLawTrigger = 0>> -<</if>> -<<if ndef $FSSlaveProfLawTrigger>> - <<set $FSSlaveProfLawTrigger = 0>> -<</if>> -<<if def $manuallyRetired>> - <<unset $manuallyRetired>> -<</if>> - -<<if ndef $justiceEvents>> - <<set $justiceEvents = ["indenture deal", "majority deal", "slave deal", "slave training", "virginity deal"]>> -<</if>> - -<<if (($ver.startsWith("0.6") && !$ver.startsWith("10.6")) || ($ver.startsWith("0.7")) || ($ver.startsWith("0.8")) || ($ver == "0.9"))>> - <<if $seeDicks == 2>> - <<set $seeDicks = 100>> - <<elseif $seeDicks == 1>> - <<set $seeDicks = 25>> - <</if>> -<</if>> -<<set $seeDicks = Math.clamp($seeDicks, 0, 100)>> - -<<if ndef $PC.ID>> - <<set $PC.ID = -1>> -<</if>> -<<if ndef $PC.counter.oral>> - <<set $PC.counter.oral = 0>> -<</if>> -<<if ndef $PC.counter.vaginal>> - <<set $PC.counter.vaginal = 0>> -<</if>> -<<if ndef $PC.counter.anal>> - <<set $PC.counter.anal = 0>> -<</if>> -<<if ndef $PC.counter.mammary>> - <<set $PC.counter.mammary = 0>> -<</if>> -<<if ndef $PC.counter.penetrative>> - <<set $PC.counter.penetrative = 0>> -<</if>> - -<<if !($ver.startsWith("0.10"))>> - <<if $PC.refreshment == "cigar">> - <<set $PC.refreshmentType = 0>> - <<else>> - <<set $PC.refreshmentType = 1>> - <</if>> -<</if>> -<<set WombInit($PC)>> - -<<if ndef $pornStars>> - <<set $studioFeed = 0>> - <<set $PCSlutContacts = 1>> - - /* create but don't populate (that happens later) */ - <<set $pornStars = {}>> -<</if>> - -/* migrate to new genre-driven pornstar object */ -<<if typeof $pornStars === "number">> - <<set _oldPornStars = $pornStars>> - - <<set $pornStars = {}>> - <<set $pornStars.general = { p1count: _oldPornStars, p3ID: $pornStarID }>> - <<set $pornStars.fuckdoll = { p1count: $pornStarFuckdolls, p3ID: $pornStarFuckdollID }>> - <<set $pornStars.rape = { p1count: $pornStarRapees, p3ID: $pornStarRapeID }>> - <<set $pornStars.preggo = { p1count: $pornStarPreggos, p3ID: $pornStarPreggoID }>> - <<set $pornStars.BBW = { p1count: $pornStarBBWs, p3ID: $pornStarBBWID }>> - <<set $pornStars.gainer = { p1count: $pornStarGainers, p3ID: $pornStarGainerID }>> - <<set $pornStars.stud = { p1count: $pornStarStuds, p3ID: $pornStarStudID }>> - <<set $pornStars.loli = { p1count: $pornStarLolis, p3ID: $pornStarLoliID }>> - <<set $pornStars.deepThroat = { p1count: $pornStarDeepThroats, p3ID: $pornStarDeepThroatID }>> - <<set $pornStars.struggleFuck = { p1count: $pornStarStruggleFucks, p3ID: $pornStarStruggleFuckID }>> - <<set $pornStars.painal = { p1count: $pornStarPainals, p3ID: $pornStarPainalID }>> - <<set $pornStars.tease = { p1count: $pornStarTeases, p3ID: $pornStarTeaseID }>> - <<set $pornStars.romantic = { p1count: $pornStarRomantics, p3ID: $pornStarRomanticID }>> - <<set $pornStars.pervert = { p1count: $pornStarPerverts, p3ID: $pornStarPervertID }>> - <<set $pornStars.caring = { p1count: $pornStarCarings, p3ID: $pornStarCaringID }>> - <<set $pornStars.unflinching = { p1count: $pornStarUnflinchings, p3ID: $pornStarUnflinchingID }>> - <<set $pornStars.sizeQueen = { p1count: $pornStarSizeQueens, p3ID: $pornStarSizeQueenID }>> - <<set $pornStars.neglectful = { p1count: $pornStarNeglectfuls, p3ID: $pornStarNeglectfulID }>> - <<set $pornStars.cumAddict = { p1count: $pornStarCumAddicts, p3ID: $pornStarCumAddictID }>> - <<set $pornStars.analAddict = { p1count: $pornStarAnalAddicts, p3ID: $pornStarAnalAddictID }>> - <<set $pornStars.attentionWhore = { p1count: $pornStarAttentionWhores, p3ID: $pornStarAttentionWhoreID }>> - <<set $pornStars.breastGrowth = { p1count: $pornStarBreastGrowths, p3ID: $pornStarBreastGrowthID }>> - <<set $pornStars.abusive = { p1count: $pornStarAbusives, p3ID: $pornStarAbusiveID }>> - <<set $pornStars.malicious = { p1count: $pornStarMalicious, p3ID: $pornStarMaliciousID }>> - <<set $pornStars.selfHating = { p1count: $pornStarSelfHatings, p3ID: $pornStarSelfHatingID }>> - <<set $pornStars.breeder = { p1count: $pornStarBreeders, p3ID: $pornStarBreederID }>> - <<set $pornStars.sub = { p1count: $pornStarSubs, p3ID: $pornStarSubID }>> - <<set $pornStars.cumSlut = { p1count: $pornStarCumSluts, p3ID: $pornStarCumSlutID }>> - <<set $pornStars.anal = { p1count: $pornStarAnals, p3ID: $pornStarAnalID }>> - <<set $pornStars.humiliation = { p1count: $pornStarHumiliations, p3ID: $pornStarHumiliationID }>> - <<set $pornStars.boobs = { p1count: $pornStarBoobs, p3ID: $pornStarBoobsID }>> - <<set $pornStars.dom = { p1count: $pornStarDoms, p3ID: $pornStarDomID }>> - <<set $pornStars.sadist = { p1count: $pornStarSadists, p3ID: $pornStarSadistID }>> - <<set $pornStars.masochist = { p1count: $pornStarMasochists, p3ID: $pornStarMasochistID }>> - <<set $pornStars.pregnancy = { p1count: $pornStarPregnancySluts, p3ID: $pornStarPregnancyID }>> - - /* Reset all the old porn type counts */ - <<unset $pornStarFuckdolls>> - <<unset $pornStarRapees>> - <<unset $pornStarPreggos>> - <<unset $pornStarBBWs>> - <<unset $pornStarGainers>> - <<unset $pornStarStuds>> - <<unset $pornStarLolis>> - <<unset $pornStarDeepThroats>> - <<unset $pornStarStruggleFucks>> - <<unset $pornStarPainals>> - <<unset $pornStarTeases>> - <<unset $pornStarRomantics>> - <<unset $pornStarPerverts>> - <<unset $pornStarCarings>> - <<unset $pornStarUnflinchings>> - <<unset $pornStarSizeQueens>> - <<unset $pornStarNeglectfuls>> - <<unset $pornStarCumAddicts>> - <<unset $pornStarAnalAddicts>> - <<unset $pornStarAttentionWhores>> - <<unset $pornStarBreastGrowths>> - <<unset $pornStarAbusives>> - <<unset $pornStarMalicious>> - <<unset $pornStarSelfHatings>> - <<unset $pornStarBreeders>> - <<unset $pornStarSubs>> - <<unset $pornStarCumSluts>> - <<unset $pornStarAnals>> - <<unset $pornStarHumiliations>> - <<unset $pornStarBoobs>> - <<unset $pornStarDoms>> - <<unset $pornStarSadists>> - <<unset $pornStarMasochists>> - <<unset $pornStarPregnancySluts>> - - /* Reset old level 3 prestige variables */ - <<unset $pornStarID>> - <<unset $pornStarFuckdollID>> - <<unset $pornStarRapeID>> - <<unset $pornStarPreggoID>> - <<unset $pornStarBBWID>> - <<unset $pornStarGainerID>> - <<unset $pornStarStudID>> - <<unset $pornStarLoliID>> - <<unset $pornStarDeepThroatID>> - <<unset $pornStarStruggleFuckID>> - <<unset $pornStarPainalID>> - <<unset $pornStarTeaseID>> - <<unset $pornStarRomanticID>> - <<unset $pornStarPervertID>> - <<unset $pornStarCaringID>> - <<unset $pornStarUnflinchingID>> - <<unset $pornStarSizeQueenID>> - <<unset $pornStarNeglectfulID>> - <<unset $pornStarCumAddictID>> - <<unset $pornStarAnalAddictID>> - <<unset $pornStarAttentionWhoreID>> - <<unset $pornStarBreastGrowthID>> - <<unset $pornStarAbusiveID>> - <<unset $pornStarMaliciousID>> - <<unset $pornStarSelfHatingID>> - <<unset $pornStarBreederID>> - <<unset $pornStarSubID>> - <<unset $pornStarCumSlutID>> - <<unset $pornStarAnalID>> - <<unset $pornStarHumiliationID>> - <<unset $pornStarBoobsID>> - <<unset $pornStarDomID>> - <<unset $pornStarSadistID>> - <<unset $pornStarMasochistID>> - <<unset $pornStarPregnancyID>> - -<</if>> - -/* make sure that any new genres get added correctly (and populate $pornStars for very old games) */ -<<for _genre range App.Porn.getAllGenres()>> - <<if ndef $pornStars[_genre.fameVar]>> - <<set $pornStars[_genre.fameVar] = { p1count: 0, p3ID: 0 }>> - <</if>> -<</for>> - -<<if $PCSlutContacts == 0>> - <<set $PCSlutContacts = 1>> -<</if>> - -<<if ndef $seeVectorArtHighlights>> - <<set $seeVectorArtHighlights = 1>> -<</if>> -<<if ndef $seeFaces>> - <<set $seeFaces = 1>> -<</if>> -<<if ndef $seeAvatar>> - <<set $seeAvatar = 1>> -<</if>> -<<if ndef $seeHeight>> - <<set $seeHeight = 0>> -<</if>> - -/* Economy Mod */ -<<if $economy == 0.5>> - <<set $economy = 200>> -<<elseif $economy == 1>> - <<set $economy = 100>> -<<elseif $economy == 1.5>> - <<set $economy = 67>> -<</if>> -/*<<if ndef $baseDifficulty>> - <<if $economy > 125>> - <<set $baseDifficulty = 1>> - <<elseif $economy > 100>> - <<set $baseDifficulty = 2>> - <<elseif $economy > 80>> - <<set $baseDifficulty = 3>> - <<elseif $economy > 67>> - <<set $baseDifficulty = 4>> - <<else>> - <<set $baseDifficulty = 5>> - <</if>> -<</if>> */ -<<if ndef $NPCSlaves>> - <<set $NPCSlaves = $ASlaves, - $ASlaves += $menials + $fuckdolls + $menialBioreactors>> -<</if>> -<<if (def $ACitizenLimit) || def $ASlaveLimit>> - <<unset $ACitizenLimit, $ASlaveLimit>> -<</if>> -<<if (def $welfare) || (def $slaveDemandU) || def $slaveDemandT|| (def $slaveProductivity) || (def $enslaveChance) || def $slaveExpiration>> - <<unset $welfare, $slaveDemandU, $slaveDemandT, $slaveProductivity, $enslaveChance, $slaveExpiration>> -<</if>> - -/*Corporation variables added*/ -<<if ndef $vanillaShareSplit>> - <<set $vanillaShareSplit = 1>> -<</if>> -<<if ndef $corpCashDividend>> - <<set $corpCashDividend = 0>> -<</if>> -<<if ndef $corpDiv>> - <<set $corpDiv = 0>> -<</if>> -<<if def $corpExpand>> - <<unset $corpExpand>> -<</if>> -<<if ndef $corpExpandToken>> - <<set $corpExpandToken = 0>> -<</if>> -<<if $corpExpandToken > 1>> - <<set $corpExpandToken = 1>> -<</if>> -<<if ndef $corpSpec>> - <<set $corpSpec = 0>> -<</if>> -<<if ndef $corpSpecToken>> - <<set $corpSpecToken = 0>> -<</if>> -<<if ndef $corpDivExtra>> - <<set $corpDivExtra = 0>> -<</if>> -<<if ndef $corpDivLegal>> - <<set $corpDivLegal = 0>> -<</if>> -<<if ndef $corpDivBreak>> - <<set $corpDivBreak = 0>> -<</if>> -<<if ndef $corpDivSurgery>> - <<set $corpDivSurgery = 0>> -<</if>> -<<if ndef $corpDivTrain>> - <<set $corpDivTrain = 0>> -<</if>> -<<if ndef $corpDivArcade>> - <<set $corpDivArcade = 0>> -<</if>> -<<if ndef $corpDivMenial>> - <<set $corpDivMenial = 0>> -<</if>> -<<if ndef $corpDivDairy>> - <<set $corpDivDairy = 0>> -<</if>> -<<if ndef $corpDivWhore>> - <<set $corpDivWhore = 0>> -<</if>> -<<if ndef $corpDivExtraDev>> - <<set $corpDivExtraDev = 0>> -<</if>> -<<if ndef $corpDivLegalDev>> - <<set $corpDivLegalDev = 0>> -<</if>> -<<if ndef $corpDivBreakDev>> - <<set $corpDivBreakDev = 0>> -<</if>> -<<if ndef $corpDivSurgeryDev>> - <<set $corpDivSurgeryDev = 0>> -<</if>> -<<if ndef $corpDivTrainDev>> - <<set $corpDivTrainDev = 0>> -<</if>> -<<if ndef $corpDivArcadeDev>> - <<set $corpDivArcadeDev = 0>> -<</if>> -<<if ndef $corpDivMenialDev>> - <<set $corpDivMenialDev = 0>> -<</if>> -<<if ndef $corpDivDairyDev>> - <<set $corpDivDairyDev = 0>> -<</if>> -<<if ndef $corpDivWhoreDev>> - <<set $corpDivWhoreDev = 0>> -<</if>> -<<if ndef $corpSpecRaces>> - <<set $corpSpecRaces = []>> -<</if>> -<<if def $corpEasy>> - <<unset $corpEasy>> -<</if>> -<<set $dividendTimer = $dividendTimer || 13>> -<<if ndef $corpEcon>> - <<set $corpEcon = 0>> -<</if>> - -/*Removing the old Corp from save*/ -<<if ndef $newCorp>> - <<set $newCorp = 1>> - <<set $corpIncorporated = 0>> - <<run cashX(Math.min(Math.trunc(($corpValue / ($publicShares + $personalShares)) * $personalShares), 1000000), "stocksTraded")>> /*Paying the player for his old corporation, so they can get the new one started with haste. It should perhaps have a message going with it*/ - <<set $mercenariesHelpCorp = 0>> - <<set $corpMarket = 0>> - <<unset $corpPeopleEnslaved, $slaveAssets, $slaveAssetPrice, $corpProfit, $corpCash, $corpValue, $sharePrice, $oldSharePrice, $personalShares, $publicShares, $generalAssetPrice, $generalAssets, $entrapmentAssets, $entrapmentAssetPrice, $captureAssets, $captureAssetPrice, $trainingAssets, $trainingAssetPrice, $surgicalAssets, $surgicalAssetPrice, $drugAssets, $drugAssetPrice, $generalUpgradeBreaking, $generalUpgradeWeight, $generalUpgradeMuscle, $entrapmentUpgradeDevotionOne, $entrapmentUpgradeDevotionTwo, $entrapmentUpgradeIntelligence, $captureUpgradeGender, $surgicalUpgradeGenitalia, $captureUpgradeAge, $captureUpgradeRace, $trainingUpgradeAccent, $trainingUpgradeEducation, $trainingUpgradeSexEd, $surgicalUpgradeCosmetics, $surgicalUpgradeImplants, $drugUpgradeHormones, $drugUpgradeInjectionOne, $drugUpgradeInjectionTwo>> - <<if def $sectors>> - <<for _i = 0; _i < $sectors.length; _i++>> - <<if $sectors[_i].type == "CorporateMarket">><<set $sectors[_i].type = "Markets">><<break>><</if>> - <</for>> - <</if>> -<</if>> - -/*Slave services and goods variables*/ -<<if ndef $publicFuckdolls>> - <<set $publicFuckdolls = 0>> -<</if>> -<<if def $lowerClassSexDemand>> - <<unset $lowerClassSexDemand>> -<</if>> -<<if ndef $classSatisfied>> - <<set $classSatisfied = {}>> -<</if>> -<<if def $lowerClassSatisfied>> - <<set $classSatisfied.lowerClass = $lowerClassSatisfied>> - <<unset $lowerClassSatisfied>> -<</if>> -<<if def $middleClassSexDemand>> - <<unset $middleClassSexDemand>> -<</if>> -<<if def $upperClassSexDemand>> - <<unset $upperClassSexDemand>> -<</if>> -<<if def $topClassSexDemand>> - <<unset $topClassSexDemand>> -<</if>> -<<if ndef $sexSubsidies>> - <<set $sexSubsidies = {}>> -<</if>> -<<if def $sexSubsidiesLC>> - <<set $sexSubsidies.lowerClass = $sexSubsidiesLC>> - <<unset $sexSubsidiesLC>> -<</if>> -<<if ndef $sexSupplyBarriers>> - <<set $sexSupplyBarriers = {}>> -<</if>> -<<if def $sexSupplyBarriersLC>> - <<set $sexSupplyBarriers.lowerClass = $sexSupplyBarriersLC>> - <<unset $sexSupplyBarriersLC>> -<</if>> -<<if ndef $arcadePrice>> - <<set $arcadePrice = 2>> -<</if>> -<<if ndef $clubSlaveSexAmount>> - <<set $clubSlaveSexAmount = 0>> -<</if>> - -<<if ndef $food>> - <<set $food = 50000>> -<</if>> -<<if ndef $foodLastWeek>> - <<set $foodLastWeek = 0>> -<</if>> -<<if ndef $foodTotal>> - <<set $foodTotal = 0>> -<</if>> -<<if ndef $foodProduced>> - <<set $foodProduced = 0>> -<</if>> -<<if ndef $foodStored>> - <<set $foodStored = 0>> -<</if>> -<<if ndef $foodCost>> - <<set $foodCost = 25>> -<</if>> -<<if ndef $foodMarket>> - <<set $foodMarket = 0>> -<</if>> -<<if ndef $foodRate>> - <<set $foodRate = {slave: 2, lower: 1.8, middle: 2, upper: 2.2, top: 2.4}>> -<</if>> -<<if ndef $foodConsumption>> - <<set $foodConsumption = (($lowerClass*$foodRate.lower) + ($middleClass*$foodRate.middle) + ($upperClass*$foodRate.upper) + ($topClass*$foodRate.top))>> /* total amount food consumed per week */ -<</if>> -<<if ndef $revealFoodEffects>> - <<set $revealFoodEffects = 0>> -<</if>> -<<if ndef $rations>> - <<set $rations = 0>> -<</if>> -<<if def $slaveRate>> - <<unset $slaveRate>> -<</if>> -<<if def $lowerRate>> - <<unset $lowerRate>> -<</if>> -<<if def $middleRate>> - <<unset $middleRate>> -<</if>> -<<if def $upperRate>> - <<unset $upperRate>> -<</if>> -<<if def $topRate>> - <<unset $topRate>> -<</if>> - -<<if ndef $lastWeeksCashIncome>> - <<setupLastWeeksCash>> -<</if>> -<<if ndef $lastWeeksRepIncome>> - <<setupLastWeeksRep>> -<</if>> - -<<run EconomyDatatypeCleanup()>> -<<run ArcologyDatatypeCleanup()>> - -Done! - -<br><br> -Setting missing slave variables: -/* Adding a new variable? Consider putting it in datatypeCleanupJS.tw instead of here */ -<<for _bci = 0; _bci < $slaves.length; _bci++>> - <<set _Slave = $slaves[_bci]>> - - <<if typeof _Slave != "object">> - <<set $slaves.deleteAt(_bci), _bci-->> - <<continue>> - <</if>> - - <<run App.Update.Slave(_Slave)>> - - <<set $slaves[_bci] = _Slave>> -<</for>> - -<br> Checking and fixing slave records... -<<for _Slave range $slaves>> - <<run App.Entity.Utils.SlaveDataSchemeCleanup(_Slave)>> - <<run SlaveDatatypeCleanup(_Slave)>> - <<set _leaderIdx = $leaders.findIndex(function(s) { return s.ID === _Slave.ID; })>> - <<if _leaderIdx !== -1>> - <<set $leaders[_leaderIdx] = _Slave>> - <</if>> -<</for>> -<<if $hostage !== 0>> - <<run App.Update.Slave($hostage)>> - <<run App.Entity.Utils.SlaveDataSchemeCleanup($hostage)>> - <<run SlaveDatatypeCleanup($hostage)>> -<</if>> -<<if def $slaveAfterRA>> - <<run App.Update.Slave($slaveAfterRA)>> - <<run App.Entity.Utils.SlaveDataSchemeCleanup($slaveAfterRA)>> - <<run SlaveDatatypeCleanup($slaveAfterRA)>> -<</if>> -<<if $boomerangSlave !== 0>> - <<run App.Update.Slave($boomerangSlave)>> - <<run App.Entity.Utils.SlaveDataSchemeCleanup($boomerangSlave)>> - <<run SlaveDatatypeCleanup($boomerangSlave)>> -<</if>> -<<if $traitor !== 0>> - <<run App.Update.Slave($traitor)>> - <<run App.Entity.Utils.SlaveDataSchemeCleanup($traitor)>> - <<run SlaveDatatypeCleanup($traitor)>> -<</if>> -<<if ndef $assignmentRecords>> - <<set $assignmentRecords = {}>> -<</if>> - -Done<br> - -<<if $tanks.length > 0>> - Checking and fixing records for incubator tanks... - <<for _Slave range $tanks>> - <<run App.Update.Slave(_Slave)>> - <<run App.Entity.Utils.SlaveDataSchemeCleanup(_Slave)>> - <<run SlaveDatatypeCleanup(_Slave, true)>> /* pass second argument as true so that slaveAgeDatatypeCleanup is not run */ - <</for>> - Done<br> -<</if>> - -<<if $cribs.length > 0>> - Checking and fixing records for nursery cribs... - <<for _Child range $cribs>> - <<if _Child.actualAge < 3>> - <<run App.Facilities.Nursery.InfantDatatypeCleanup(_Child)>> - <<else>> - <<run App.Entity.Utils.SlaveDataSchemeCleanup(_Child, true)>> - <<run App.Facilities.Nursery.ChildDatatypeCleanup(_Child)>> - <</if>> - <</for>> - <<set $cribsIndices = App.Facilities.Nursery.cribsToIndices()>> - Done<br> -<</if>> - -<<if $heroSlaves.length > 0>> - Checking and fixing special slave records... - <<for _Slave range $heroSlaves>> - <<run App.Entity.Utils.SlaveDataSchemeCleanup(_Slave)>> - /% No SlaveDatatypeCleanup() call as hero slaves are not SlaveState objects %/ - <</for>> - Done<br> -<</if>> - -<<if $releaseID === 1043>> - <<run $slaves.forEach(s => { s.skill.whoring = s.skill.whore/2; })>> - <<run $tanks.forEach(s => { s.skill.whoring = s.skill.whore/2; })>> - <<run $cribs.forEach(s => { s.skill.whoring = s.skill.whore/2; })>> - <<run $heroSlaves.forEach(hs => { - if (hs.hasOwnProperty("skill") && hs.skill.hasOwnProperty("whore")) { - hs.skill.whoring = hs.skill.whore; - delete hs.skill.whore; - } - });>> -<</if>> - - -<<set $slavesOriginal = []>> /* not used by pregmod */ - -Updating gene pool records: -<<for _bci = 0; _bci < $genePool.length; _bci++>> - <<set _Slave = $genePool[_bci]>> - - <<run App.Update.Slave(_Slave)>> - - <<if $genePool.map(function(s) { return s.ID; }).count(_Slave.ID) > 1>> /* first check for duplicate IDs, keep the first entry and delete the others */ - <<for _bci2 = _bci + 1; _bci2 < $genePool.length; _bci2++>> - <<if $genePool[_bci2].ID == _Slave.ID>> - <<set $genePool.deleteAt(_bci2), _bci2-->> - <</if>> - <</for>> - <</if>> - <<set _dontDeleteMe = 0>> - <<if def $slaveIndices[_Slave.ID]>> /* are we still in the $slaves array? */ - <<set _dontDeleteMe = 1>> - <</if>> - <<if $traitor != 0>> - <<if isImpregnatedBy($traitor, _Slave) || $traitor.ID == _Slave.ID>> /* did we impregnate the traitor, or are we the traitor? */ - <<set _dontDeleteMe = 1>> - <</if>> - <</if>> - <<if $boomerangSlave != 0>> - <<if isImpregnatedBy($boomerangSlave, _Slave) || $boomerangSlave.ID == _Slave.ID>> /* did we impregnate the boomerang, or are we the boomerang? */ - <<set _dontDeleteMe = 1>> - <</if>> - <</if>> - <<if isImpregnatedBy($PC, _Slave)>> /* did we impregnate the PC */ - <<set _dontDeleteMe = 1>> - <</if>> - <<if _dontDeleteMe == 0>> /* avoid going through this loop if possible */ - <<for _bci2 = 0; _bci2 < $slaves.length; _bci2++>> - <<if isImpregnatedBy($slaves[_bci2], _Slave)>> /* have we impregnated a slave on the slaves array? */ - <<set _dontDeleteMe = 1>> - <<break>> - <</if>> - <</for>> - <</if>> - <<if _dontDeleteMe == 0>> - <<set $genePool.deleteAt(_bci), _bci-->> - <<continue>> - <</if>> - - <<if ndef _Slave.origSkin>><<set _Slave.origSkin = _Slave.skin>><</if>> - <<if ndef _Slave.origRace>><<set _Slave.origRace = _Slave.race>><</if>> - - <<if $releaseID < 1059>> - <<if ndef _Slave.eyesImplant>> - <<set _Slave.eyesImplant = 0>> - <</if>> - <<if _Slave.origEye == "implant">> - <<set _Slave.eyesImplant = 1>> - <<set _oldEyes = $genePool.find(function(s) { return s.ID = _Slave.ID; })>> - <<set _Slave.origEye = _oldEyes.origEye>> - <</if>> - <<if _Slave.origEye == "none">> - <<set _Slave.eyes = -3>> - <<set _oldEyes = $genePool.find(function(s) { return s.ID = _Slave.ID; })>> - <<set _Slave.origEye = _oldEyes.origEye>> - <</if>> - <<if _Slave.eyeColor == "empty">> - <<set _Slave.eyeColor = _Slave.origEye>> - <<set _Slave.eyes = -4>> - <</if>> - <</if>> - - <<if ndef _Slave.custom>> <<set _Slave.custom = {}>> <</if>> - <<set _Slave.custom.tattoo = _Slave.customTat || "">> - <<set _Slave.custom.label = _Slave.custom.label || "">> - <<set _Slave.custom.desc = _Slave.custom.desc || "">> - <<set _Slave.custom.title = _Slave.custom.title || "">> - <<set _Slave.custom.titleLisp = _Slave.custom.titleLisp || "">> - <<set _Slave.custom.hairVector = _Slave.custom.hairVector || 0>> - <<set _Slave.custom.image = _Slave.custom.image || null>> - - <<run App.Entity.Utils.GenePoolRecordCleanup(_Slave)>> - <<set $genePool[_bci] = _Slave>> - -<</for>> - -<<if $nurseryNannies > 0>> - <<for _bci = 0; _bci < $cribs.length; _bci++>> - <<run App.Update.Slave($cribs[_bci])>> - <<set _nurseryChild = $cribs[_bci]>> - <</for>> -<</if>> - -<<set $AgeEffectOnTrainerPricingPC = 1>> -<<set $AgeEffectOnTrainerEffectivenessPC = 1>> -<<set $AgeTrainingUpperBoundPC = 14>> -<<set $AgeTrainingLowerBoundPC = 12>> -<<set $IsInPrimePC = 3>> -<<set $IsPastPrimePC = 5000>> - -<<HeroSlavesCleanup>> -<<run $heroSlaves.forEach(function(s) {if (s.pregType > 0 && Array.isArray(s.womb)) delete s.womb;})>> -<<set $activeSlave = BaseSlave()>> -<<set $baseHeroSlave = clone($activeSlave)>> -Done<br> - -Updating Rules Assistant data... -<<set $defaultRules = $defaultRules.map(rule => App.Entity.Utils.RARuleDatatypeCleanup(rule))>> -Done<br> - -/* Sec Exp */ -<<= App.SecExp.Check.general()>> -<<if $secExpEnabled == 1>> - <br> <<include "SecExpBackwardCompatibility">> -<</if>> - -<<if ndef $masteredXP>> - <<set $masteredXP = 200>> -<</if>> - -<<if $clubAdsSpending > 0 && $club == 0>> - <<set $clubAdsSpending = 0>> -<</if>> -<<if $brothelAdsSpending > 0 && $brothel == 0>> - <<set $brothelAdsSpending = 0>> -<</if>> - -<<if ndef $missingTable>> - <<set $missingTable = {}>> -<</if>> -<<if ndef $showMissingSlaves>> - <<set $showMissingSlaves = false>> -<</if>> -<<if ndef $showMissingSlavesSD>> - <<set $showMissingSlavesSD = false>> -<</if>> - -<<if ndef $postSexCleanUp>> - <<set $postSexCleanUp = 1>> -<</if>> - -<<if def $individualCosts>> - <<unset $individualCosts>> -<</if>> -<<if def $sissy>> - <<unset $sissy>> -<</if>> -<<if ((ndef $DefaultBirthDestination) || ($DefaultBirthDestination === "") || ($DefaultBirthDestination == "anywhere"))>> - <<set $DefaultBirthDestination = "individually decided fates">> -<</if>> -<<if ndef $abbreviateHormoneBalance>> - <<set $abbreviateHormoneBalance = 2>> -<</if>> -<<if def $skillIncrease>> - <<unset $skillIncrease>> -<</if>> - -<<if $releaseID < 1043>> - <<for _rule range $defaultRules>> - <<if _rule.condition.excludeSpecialSlaves>> - <<set _rule.condition.specialSlaves = 0>> - <<else>> - <<set _rule.condition.specialSlaves = -1>> - <</if>> - <<run delete _rule.condition.excludeSpecialSlaves>> - <</for>> -<</if>> - -<<if $releaseID < 1045>> -/* unify cybermod & vanilla */ -/* limbs */ -<<if def $limbs>> - <<set $adjustProsthetics = []>> - <<for _l range $limbs>> - <<switch _l.type>> - <<case "simple">> - <<set $adjustProsthetics.push({id: "basicL", workLeft: _l.weeksToCompletion * 10, slaveID: _l.ID})>> - <<case "sex">> - <<set $adjustProsthetics.push({id: "sexL", workLeft: _l.weeksToCompletion * 10, slaveID: _l.ID})>> - <<case "beauty">> - <<set $adjustProsthetics.push({id: "beautyL", workLeft: _l.weeksToCompletion * 10, slaveID: _l.ID})>> - <<case "combat">> - <<set $adjustProsthetics.push({id: "combatL", workLeft: _l.weeksToCompletion * 10, slaveID: _l.ID})>> - <<case "cyber">> - <<set $adjustProsthetics.push({id: "cyberneticL", workLeft: _l.weeksToCompletion * 10, slaveID: _l.ID})>> - <</switch>> - <</for>> - <<unset $limbs>> -<</if>> -<<if def $limbsCompleted>> - <<set $adjustProstheticsCompleted = $limbsCompleted>> - <<unset $limbsCompleted>> -<</if>> - -/* lab */ -<<if ndef $researchLab>> - <<set $researchLab = { - aiModule: 1, - tasks: [], - maxSpace: 0, - hired: 0, - menials: 0, - }>> -<</if>> -<<if ndef $researchLab.level>> - <<set $researchLab.level = 0>> - <<if def $researchLab.built>> - <<if $researchLab.built == "true">> - <<set $researchLab.level = 1>> - <<if $prostheticsUpgrade == 0>> - <<set $prostheticsUpgrade = 1>> - <</if>> - <</if>> - <<run delete $researchLab.built>> - <</if>> -<</if>> -<<if ndef $researchLab.speed>> - <<set $researchLab.speed = (($researchLab.hired * 3) + $researchLab.menials) * $researchLab.aiModule>> -<</if>> -<<if ndef $researchLab.tasks>> - <<set $researchLab.tasks = []>> -<</if>> -<<if def $researchLab.research>> - <<if $researchLab.research != "none">> - <<switch $researchLab.research>> - <<case "Basic prosthetics interface">> - <<set _id = "interfaceP1">> - <<case "Advanced prosthetics interface">> - <<set _id = "interfaceP2">> - <<case "Basic prosthetic limbs">> - <<set _id = "basicL">> - <<case "Advanced sex limbs">> - <<set _id = "sexL">> - <<case "Advanced beauty limbs">> - <<set _id = "beautyL">> - <<case "Advanced combat limbs">> - <<set _id = "combatL">> - <<case "Cybernetic limbs">> - <<set _id = "cyberneticL">> - <<case "Ocular implants">> - <<set _id = "ocular">> - <<case "Cochlear implants">> - <<set _id = "cochlear">> - <<case "Electrolarynx">> - <<set _id = "electrolarynx">> - <</switch>> - <<set $researchLab.tasks.push({type: "research", id: _id, workLeft: $researchLab.productionTime})>> - <</if>> - <<run delete $researchLab.research>> -<</if>> -<<if def $researchLab.manufacture>> - <<if $researchLab.manufacture != "none">> - <<switch $researchLab.manufacture>> - <<case "Basic prosthetics interface">> - <<set _id = "interfaceP1">> - <<case "Advanced prosthetics interface">> - <<set _id = "interfaceP2">> - <<case "Basic prosthetic limbs">> - <<set _id = "basicL">> - <<case "Advanced sex limbs">> - <<set _id = "sexL">> - <<case "Advanced beauty limbs">> - <<set _id = "beautyL">> - <<case "Advanced combat limbs">> - <<set _id = "combatL">> - <<case "Cybernetic limbs">> - <<set _id = "cyberneticL">> - <<case "Ocular implants">> - <<set _id = "ocular">> - <<case "Cochlear implants">> - <<set _id = "cochlear">> - <<case "Electrolarynx">> - <<set _id = "electrolarynx">> - <</switch>> - <<set $researchLab.tasks.push({type: "craft", id: _id, workLeft: $researchLab.productionTime})>> - <</if>> - <<run delete $researchLab.manufacture>> -<</if>> -<<if def $researchLab.productionTime>> - <<run delete $researchLab.productionTime>> -<</if>> - -/* stockpile */ -<<if ndef $prosthetics>> - <<if ndef $stockpile>> - <<set $prosthetics = {}>> - <<run setup.prostheticIDs.forEach(function(id) { - $prosthetics[id] = {amount: 0, research: 0}; - })>> - <<else>> - <<if ndef $stockpile.cochlearImplant>> - <<set $stockpile.cochlearImplant = 0>> - <</if>> - <<if ndef $stockpile.electrolarynx>> - <<set $stockpile.electrolarynx = 0>> - <</if>> - <<if ndef $stockpile.interfacePTail>> - <<set $stockpile.interfacePTail = 0>> - <</if>> - <<if ndef $stockpile.modPTail>> - <<set $stockpile.modPTail = 0>> - <</if>> - <<if ndef $stockpile.warPTail>> - <<set $stockpile.warPTail = 0>> - <</if>> - <<if ndef $stockpile.sexPTail>> - <<set $stockpile.sexPTail = 0>> - <</if>> - <<set $prosthetics = { - interfaceP1: {amount: $stockpile.basicPLimbInterface, research: $researchLab.basicPLimbInterface}, - interfaceP2: {amount: $stockpile.advPLimbInterface, research: $researchLab.advPLimbInterface}, - basicL: {amount: $stockpile.basicPLimb, research: $researchLab.basicPLimb}, - sexL: {amount: $stockpile.advSexPLimb, research: $researchLab.advSexPLimb}, - beautyL: {amount: $stockpile.advGracePLimb, research: $researchLab.advGracePLimb}, - combatL: {amount: $stockpile.advCombatPLimb, research: $researchLab.advCombatPLimb}, - cyberneticL: {amount: $stockpile.cyberneticPLimb, research: $researchLab.cyberneticPLimb}, - ocular: {amount: $stockpile.ocularImplant, research: $researchLab.ocularImplant}, - cochlear: {amount: $stockpile.cochlearImplant, research: $researchLab.cochlearImplant}, - electrolarynx: {amount: $stockpile.electrolarynx, research: $researchLab.electrolarynx}, - interfaceTail: {amount: $stockpile.interfacePTail, research: 0}, - modT: {amount: $stockpile.modPTail, research: 0}, - combatT: {amount: $stockpile.warPTail, research: 0}, - sexT: {amount: $stockpile.sexPTail, research: 0}, - erectile: {amount: $stockpile.erectileImplant, research: $researchLab.erectileImplant} - }>> - <<run delete $stockpile>> - <<run delete $researchLab.basicPLimbInterface>> - <<run delete $researchLab.advPLimbInterface>> - <<run delete $researchLab.basicPLimb>> - <<run delete $researchLab.advSexPLimb>> - <<run delete $researchLab.advGracePLimb>> - <<run delete $researchLab.advCombatPLimb>> - <<run delete $researchLab.cyberneticPLimb>> - <<run delete $researchLab.ocularImplant>> - <<run delete $researchLab.cochlearImplant>> - <<run delete $researchLab.electrolarynx>> - <<run delete $researchLab.erectileImplant>> - <</if>> -<</if>> -<<if def $cyberMod>> - <<unset $cyberMod>> -<</if>> -/* unify cybermod & vanilla finished*/ - -<<if def $buyArcologyDirection>> - <<run delete $buyArcologyDirection>> -<</if>> -<<if def $sellArcologyDirection>> - <<run delete $sellArcologyDirection>> -<</if>> -<<if def $transaction>> - <<run delete $transaction>> -<</if>> - -<<unset $SlaveSummaryFiler>> -<</if>> /* release 1044 */ - -<<if $releaseID < 1047>> - <<if $loliGrow > 0>> - <<set $loliGrow = 1>> - <<else>> - <<set $loliGrow = 0>> - <</if>> -<</if>> - -<<if def $activeArcology>> - <<unset $activeArcology>> -<</if>> - -<<set $HackingSkillMultiplier = upgradeMultiplier('hacking')>> -<<set $upgradeMultiplierArcology = upgradeMultiplier('engineering')>> -<<set $upgradeMultiplierMedicine = upgradeMultiplier('medicine')>> -<<set $upgradeMultiplierTrade = upgradeMultiplier('trading')>> - -<<if ndef $sideBarOptions>> - <<set $sideBarOptions = {compact:1, Cash:1, Upkeep:1, SexSlaveCount:1, roomPop:1, Rep:1, GSP:1, Authority:1, Security:1, Crime:1}>> -<</if>> -<<if ndef $sideBarOptions.roomPop>> - <<set $sideBarOptions.roomPop = 1>> -<</if>> -<<if ndef $sideBarOptions.compact>> <<set $sideBarOptions.compact = 1>> <</if>> - -<<set $JobIDArray = resetJobIDArray()>> - -<<if $arcologies[0].FSSubjugationist !== "unset" && !Number.isFinite($arcologies[0].FSSubjugationist)>> - <<set $arcologies[0].FSSubjugationist = 10>> - <br>Fixed NaN FS value for FSSubjugationist -<</if>> -<<if $arcologies[0].FSGenderRadicalist !== "unset" && !Number.isFinite($arcologies[0].FSGenderRadicalist)>> - <<set $arcologies[0].FSGenderRadicalist = 10>> - <br>Fixed NaN FS value for FSGenderRadicalist -<</if>> -<<if $arcologies[0].FSRestart !== "unset" && !Number.isFinite($arcologies[0].FSRestart)>> - <<set $arcologies[0].FSRestart = 10>> - <br>Fixed NaN FS value for FSRestart -<</if>> -<<if $arcologies[0].FSRepopulationFocus !== "unset" && !Number.isFinite($arcologies[0].FSRepopulationFocus)>> - <<set $arcologies[0].FSRepopulationFocus = 10>> - <br>Fixed NaN FS value for FSRepopulationFocus -<</if>> -<<if $arcologies[0].FSSupremacist !== "unset" && !Number.isFinite($arcologies[0].FSSupremacist)>> - <<set $arcologies[0].FSSupremacist = 10>> - <br>Fixed NaN FS value for FSSupremacist -<</if>> -<<if $arcologies[0].FSBodyPurist !== "unset" && !Number.isFinite($arcologies[0].FSBodyPurist)>> - <<set $arcologies[0].FSBodyPurist = 10>> - <br>Fixed NaN FS value for FSBodyPurist -<</if>> -<<if $arcologies[0].FSPaternalist !== "unset" && !Number.isFinite($arcologies[0].FSPaternalist)>> - <<set $arcologies[0].FSPaternalist = 10>> - <br>Fixed NaN FS value for FSPaternalist -<</if>> -<<if $arcologies[0].FSSlimnessEnthusiast !== "unset" && !Number.isFinite($arcologies[0].FSSlimnessEnthusiast)>> - <<set $arcologies[0].FSSlimnessEnthusiast = 10>> - <br>Fixed NaN FS value for FSSlimnessEnthusiast -<</if>> -<<if $arcologies[0].FSGenderFundamentalist !== "unset" && !Number.isFinite($arcologies[0].FSGenderFundamentalist)>> - <<set $arcologies[0].FSGenderFundamentalist = 10>> - <br>Fixed NaN FS value for FSGenderFundamentalist -<</if>> -<<if $arcologies[0].FSMaturityPreferentialist !== "unset" && !Number.isFinite($arcologies[0].FSMaturityPreferentialist)>> - <<set $arcologies[0].FSMaturityPreferentialist = 10>> - <br>Fixed NaN FS value for FSMaturityPreferentialist -<</if>> -<<if $arcologies[0].FSYouthPreferentialist !== "unset" && !Number.isFinite($arcologies[0].FSYouthPreferentialist)>> - <<set $arcologies[0].FSYouthPreferentialist = 10>> - <br>Fixed NaN FS value for FSYouthPreferentialist -<</if>> -<<if $arcologies[0].FSTransformationFetishist !== "unset" && !Number.isFinite($arcologies[0].FSTransformationFetishist)>> - <<set $arcologies[0].FSTransformationFetishist = 10>> - <br>Fixed NaN FS value for FSTransformationFetishist -<</if>> -<<if $arcologies[0].FSHedonisticDecadence !== "unset" && !Number.isFinite($arcologies[0].FSHedonisticDecadence)>> - <<set $arcologies[0].FSHedonisticDecadence = 10>> - <br>Fixed NaN FS value for FSHedonisticDecadence -<</if>> -<<if $arcologies[0].FSPhysicalIdealist !== "unset" && !Number.isFinite($arcologies[0].FSPhysicalIdealist)>> - <<set $arcologies[0].FSPhysicalIdealist = 10>> - <br>Fixed NaN FS value for FSPhysicalIdealist -<</if>> -<<if $arcologies[0].FSPastoralist !== "unset" && !Number.isFinite($arcologies[0].FSPastoralist)>> - <<set $arcologies[0].FSPastoralist = 10>> - <br>Fixed NaN FS value for FSPastoralist -<</if>> -<<if $arcologies[0].FSAssetExpansionist !== "unset" && !Number.isFinite($arcologies[0].FSAssetExpansionist)>> - <<set $arcologies[0].FSAssetExpansionist = 10>> - <br>Fixed NaN FS value for FSAssetExpansionist -<</if>> -<<if $arcologies[0].FSDegradationist !== "unset" && !Number.isFinite($arcologies[0].FSDegradationist)>> - <<set $arcologies[0].FSDegradationist = 10>> - <br>Fixed NaN FS value for FSDegradationist -<</if>> -<<if $arcologies[0].FSRomanRevivalist !== "unset" && !Number.isFinite($arcologies[0].FSRomanRevivalist)>> - <<set $arcologies[0].FSRomanRevivalist = 10>> - <br>Fixed NaN FS value for FSRomanRevivalist -<</if>> -<<if $arcologies[0].FSChattelReligionist !== "unset" && !Number.isFinite($arcologies[0].FSChattelReligionist)>> - <<set $arcologies[0].FSChattelReligionist = 10>> - <br>Fixed NaN FS value for FSChattelReligionist -<</if>> -<<if $arcologies[0].FSChineseRevivalist !== "unset" && !Number.isFinite($arcologies[0].FSChineseRevivalist)>> - <<set $arcologies[0].FSChineseRevivalist = 10>> - <br>Fixed NaN FS value for FSChineseRevivalist -<</if>> -<<if $arcologies[0].FSArabianRevivalist !== "unset" && !Number.isFinite($arcologies[0].FSArabianRevivalist)>> - <<set $arcologies[0].FSArabianRevivalist = 10>> - <br>Fixed NaN FS value for FSArabianRevivalist -<</if>> -<<if $arcologies[0].FSEdoRevivalist !== "unset" && !Number.isFinite($arcologies[0].FSEdoRevivalist)>> - <<set $arcologies[0].FSEdoRevivalist = 10>> - <br>Fixed NaN FS value for FSEdoRevivalist -<</if>> -<<if $arcologies[0].FSEgyptianRevivalist !== "unset" && !Number.isFinite($arcologies[0].FSEgyptianRevivalist)>> - <<set $arcologies[0].FSEgyptianRevivalist = 10>> - <br>Fixed NaN FS value for FSEgyptianRevivalist -<</if>> -<<if $arcologies[0].FSAztecRevivalist !== "unset" && !Number.isFinite($arcologies[0].FSAztecRevivalist)>> - <<set $arcologies[0].FSAztecRevivalist = 10>> - <br>Fixed NaN FS value for FSAztecRevivalist -<</if>> -<<if $arcologies[0].FSIntellectualDependency !== "unset" && !Number.isFinite($arcologies[0].FSIntellectualDependency)>> - <<set $arcologies[0].FSIntellectualDependency = 10>> - <br>Fixed NaN FS value for FSIntellectualDependency -<</if>> -<<if $arcologies[0].FSSlaveProfessionalism !== "unset" && !Number.isFinite($arcologies[0].FSSlaveProfessionalism)>> - <<set $arcologies[0].FSSlaveProfessionalism = 10>> - <br>Fixed NaN FS value for FSSlaveProfessionalism -<</if>> -<<if $arcologies[0].FSPetiteAdmiration !== "unset" && !Number.isFinite($arcologies[0].FSPetiteAdmiration)>> - <<set $arcologies[0].FSPetiteAdmiration = 10>> - <br>Fixed NaN FS value for FSPetiteAdmiration -<</if>> -<<if $arcologies[0].FSStatuesqueGlorification !== "unset" && !Number.isFinite($arcologies[0].FSStatuesqueGlorification)>> - <<set $arcologies[0].FSStatuesqueGlorification = 10>> - <br>Fixed NaN FS value for FSStatuesqueGlorification -<</if>> -<<run App.Corporate.Backcompat() >> - -<<if $sortSlavesBy === "income" || $sortSlavesBy === "lastWeeksCashIncome">> - <<set $sortSlavesBy = "weeklyIncome">> -<</if>> - -<<if ndef $tooltipsEnabled>> - <<set $tooltipsEnabled = 0>> -<</if>> - -<<set _newOrgans = []>> -<<run $organs.forEach(o => { - if (o.type === "eyes") { - _newOrgans.push({type: "leftEye", weeksToCompletion: o.weeksToCompletion, ID: o.ID}); - _newOrgans.push({type: "rightEye", weeksToCompletion: o.weeksToCompletion, ID: o.ID}); - } else { - _newOrgans.push(o); - } -})>> -<<set $organs = _newOrgans>> - -<<set _newOrgans = []>> -<<run $completedOrgans.forEach(o => { - if (o.type === "eyes") { - _newOrgans.push({type: "leftEye", ID: o.ID}); - _newOrgans.push({type: "rightEye", ID: o.ID}); - } else { - _newOrgans.push(o); - } -})>> -<<set $completedOrgans = _newOrgans>> - -<<if def $organsCompleted>> - <<unset $organsCompleted>> -<</if>> - -<<if ($PC.customTitle == "")>> - <<set $PC.customTitle = undefined, $PC.customTitleLisp = undefined>> -<</if>> - -<<if ndef $building>> - <<if def $sectors>> - <<run App.Update.sectorsToBuilding()>> - <<else>> - <<set $building = App.Arcology.defaultBuilding()>> - <</if>> -<</if>> - -/* leave this at the bottom of BC */ -<<if $releaseID < App.Version.release>> - <<set $releaseID = App.Version.release>> -<</if>> -/* reset NaNArray after BC is run */ -<<set $NaNArray = findNaN()>> diff --git a/src/uncategorized/RECI.tw b/src/uncategorized/RECI.tw index 4be22e1e7f749bb80a7865c7c7fccc676df63b25..22f7189c9d550d7b7a59eb5a34dd8e0fc0fefa02 100644 --- a/src/uncategorized/RECI.tw +++ b/src/uncategorized/RECI.tw @@ -77,11 +77,11 @@ <</for>> <<if (skinToneLevel($activeSlave.skin) < 10)>> - <<set $skinDesc = "pink">> + <<set _skinDesc = "pink">> <<elseif (skinToneLevel($activeSlave.skin) > 20)>> - <<set $skinDesc = "dark brown">> + <<set _skinDesc = "dark brown">> <<else>> - <<set $skinDesc = "brown">> + <<set _skinDesc = "brown">> <</if>> The slave bathrooms are designed to completely eliminate privacy. There are few partitions, and those are glass. Your better-behaved slaves have all long since lost any hesitation about performing their ablutions nude. As you pass through the area, you notice <<EventNameLink>> checking out $his own anus in the bathroom mirror. <br><br> @@ -93,7 +93,7 @@ There's no other way to describe what $he's doing: the $desc has $his back to th <<else>> got $his hips cocked to spread $his sleek butt and <</if>> -reveal $his backdoor. Your slaves are trained to check themselves daily, but $he seems fascinated. As you pause to watch, $he begins to clench and relax $his <<if $activeSlave.anus > 2>>loose<<else>>cute<</if>> hole, <<if ($activeSlave.analArea - $activeSlave.anus) > 1>> lewdly flexing<<else>>alternately puckering and relaxing<</if>> the $skinDesc skin around it. $He giggles self-consciously at the sight, and then relaxes all the way, causing $his asspussy to open into a <<if $activeSlave.anus > 2>><<if $PC.dick != 0>>cock<<else>>dildo<</if>>-hungry<<else>>slight<</if>> gape. $He notices you out of the corner of $his eye and +reveal $his backdoor. Your slaves are trained to check themselves daily, but $he seems fascinated. As you pause to watch, $he begins to clench and relax $his <<if $activeSlave.anus > 2>>loose<<else>>cute<</if>> hole, <<if ($activeSlave.analArea - $activeSlave.anus) > 1>> lewdly flexing<<else>>alternately puckering and relaxing<</if>> the _skinDesc skin around it. $He giggles self-consciously at the sight, and then relaxes all the way, causing $his asspussy to open into a <<if $activeSlave.anus > 2>><<if $PC.dick != 0>>cock<<else>>dildo<</if>>-hungry<<else>>slight<</if>> gape. $He notices you out of the corner of $his eye and <<if $activeSlave.butt > 6>> releases $his grip on $his heavy buttocks to turn and greet you, letting them clap gently together and conceal $his asshole again. <<elseif $activeSlave.butt > 3>> @@ -111,7 +111,7 @@ reveal $his backdoor. Your slaves are trained to check themselves daily, but $he cocks $his hips again and starts blatantly winking $his anus for you<<if hasAnyArms($activeSlave)>>, using $his hand<<if hasBothArms($activeSlave)>>s<</if>> to <<if $activeSlave.nipples != "fuckable">>tweak<<else>>finger<</if>> $his nipples<</if>>. <</if>> <<if $activeSlave.analArea > 3>> - The huge area of $skinDesc anus around $his actual hole certainly draws the eye towards its center, though the way $he's using $his sphincter as a come-on does enhance the effect. + The huge area of _skinDesc anus around $his actual hole certainly draws the eye towards its center, though the way $he's using $his sphincter as a come-on does enhance the effect. <</if>> <<if ($activeSlave.fetish == "buttslut") && ($activeSlave.fetishKnown == 1)>> "Plea<<s>>e, <<Master>>," $he begins to beg. "I can't wait to feel <<if $PC.dick != 0>>your cock<<else>>you<</if>> in<<s>>ide me." diff --git a/src/uncategorized/arcmgmt.tw b/src/uncategorized/arcmgmt.tw index 590f069749ede3135875b8fd24446b12f77ec39b..5595f0200ba1f28fd460cc89c1710c4069079a29 100644 --- a/src/uncategorized/arcmgmt.tw +++ b/src/uncategorized/arcmgmt.tw @@ -799,14 +799,14 @@ $menialBioreactors -= _expirationBR>> <<if $arcologies[0].honeymoon > 0>> <<set _honeymoon = 10 * $arcologies[0].honeymoon>> <</if>> -<<set $oldVisitors = $visitors, +<<set _oldVisitors = $visitors, $visitors = Math.trunc((($arcologies[0].prosperity + _FSScore * 5 + _honeymoon) * _transportHub * _terrain * _crime) * ($localEcon / 100))>> <<if $visitors < 50>> <<set $visitors = normalRandInt(50, 2)>> <</if>> <<if isNaN($visitors)>> <br>@@.red;Visitors is NaN, report this issue!@@ - <<set $visitors = $oldVisitors>> + <<set $visitors = _oldVisitors>> <</if>> <br>@@.green;<<print $visitors>> traders and tourists@@ visited your arcology this week. diff --git a/src/uncategorized/bodyModification.tw b/src/uncategorized/bodyModification.tw index 0179e15edb236fa6604755f88b7236cfe129a1e9..e95de3007c2c47c3d52529a19cbffac8bd7c9ecc 100644 --- a/src/uncategorized/bodyModification.tw +++ b/src/uncategorized/bodyModification.tw @@ -1,6 +1,6 @@ :: Body Modification [nobr] -<<set $nextButton = "Back", $nextLink = "Slave Interact">> +<<set $nextButton = "Confirm changes", $nextLink = "AS Dump", $returnTo = "Slave Interact">> <<run clearSummaryCache($activeSlave)>> <<setLocalPronouns $activeSlave>> <<run Enunciate($activeSlave)>> diff --git a/src/uncategorized/costsBudget.tw b/src/uncategorized/costsBudget.tw index 3c231ffa4636ebf284f713b9885d507ba34df0ae..feedbdd88c77442f8ce6c298fcf887ad1223d740 100644 --- a/src/uncategorized/costsBudget.tw +++ b/src/uncategorized/costsBudget.tw @@ -428,6 +428,6 @@ for (var i = 0; i < State.variables.lastWeeksCashIncome.length; i++){ <<if $lastWeeksCashErrors !== "Errors: ">> <<link "Reset">> <<set $lastWeeksCashErrors = "Errors: ">> - <</link>> - <<print cashFormatColor($lastWeeksCashErrors)>> + <</link>><br> + @@.red;<<print $lastWeeksCashErrors>>@@ <</if>> diff --git a/src/uncategorized/costsWidgets.tw b/src/uncategorized/costsWidgets.tw index 5aeede15d969b3803cb5fd8354bcaedd77d4bdb8..5b69bd2fa6c132cb49c48e662134f34ac6c0190a 100644 --- a/src/uncategorized/costsWidgets.tw +++ b/src/uncategorized/costsWidgets.tw @@ -143,176 +143,3 @@ </div> <</if>> <</widget>> - -<<widget "setupLastWeeksCash">> -/* Feel free to add categories. Just make sure to display them in costsBudget.tw as well! */ -<<set $lastWeeksCashIncome = { -/* Slave Jobs */ -whore: 0, -whoreBrothel: 0, -rest: 0, -houseServant: 0, -confined: 0, -publicServant: 0, -classes: 0, -milked: 0, -milkedDairy: 0, -extraMilk: 0, /*milk from slaves doing other things*/ -gloryhole: 0, -gloryholeArcade: 0, -porn: 0, - -recruiter: 0, - - -/* Slaves in general */ -fuckdolls: 0, -menialTrades: 0, -menialBioreactors: 0, - -slaveTransfer: 0, -fuckdollsTransfer: 0, -menialTransfer: 0, -menialBioreactorsTransfer: 0, -babyTransfer: 0, -menialRetirement: 0, - -slaveMod: 0, -slaveSurgery: 0, -slaveUpkeep: 0, -birth: 0, - -/*Buildings*/ -lab: 0, -brothel: 0, -brothelAds: 0, -club: 0, -clubAds: 0, -arcade: 0, -dairy: 0, -servantsQuarters: 0, -masterSuite: 0, -school: 0, -spa: 0, -clinic: 0, -cellblock: 0, -incubator: 0, -nursery: 0, -farmyard: 0, -pit: 0, - -environment: 0, -weather: 0, - -mercenaries: 0, -peacekeepers: 0, -specialForces: 0, -securityExpansion: 0, - - -citizenOrphanage: 0, -privateOrphanage: 0, - -capEx: 0, -futureSocieties: 0, -schoolBacking: 0, -policies: 0, -edicts: 0, - -/*Personal Finance*/ -personalBusiness: 0, -personalLivingExpenses: 0, -PCtraining: 0, -PCmedical: 0, -PCskills: 0, -stocksTraded: 0, /*trading*/ -stocks: 0, /*share growth*/ -fines: 0, -event: 0, /* poker night etc. Try to file things elsewhere if you can. */ -war: 0, - -rents: 0, - -cheating: 0, -total: 0 - -}>> - -<<set $lastWeeksCashExpenses = clone($lastWeeksCashIncome)>> -<<set $lastWeeksCashProfits = clone($lastWeeksCashIncome)>> - -<</widget>> - - -<<widget "setupLastWeeksRep">> -/* Feel free to add categories. Just make sure to display them in costsBudget.tw as well! */ -<<set $lastWeeksRepIncome = { -/*Slave Jobs*/ -fucktoy: 0, -publicServant: 0, -gloryholeArcade: 0, -gloryhole: 0, - -concubine: 0, -headGirl: 0, -bodyguard: 0, -recruiter: 0, - -/*Slaves in general*/ -fuckdolls: 0, -slaveTransfer: 0, -babyTransfer: 0, -birth: 0, -retirement: 0, -slavesViewOfPC: 0, -prestigiousSlave: 0, -vignette: 0, -porn: 0, - -/*Buildings*/ -arcade: 0, -brothel: 0, -club: 0, -publicServantClub: 0, -clubAds: 0, -pit: 0, -servantsQuarters: 0, -spa: 0, - -architecture: 0, - -/*Policies*/ -capEx: 0, -futureSocieties: 0, -policies: 0, -edicts: 0, -war: 0, -food: 0, - -/*Forces */ -peacekeepers: 0, -specialForces: 0, -securityExpansion: 0, - -/*Personal Finance*/ -personalBusiness: 0, -PCappearance: 0, -PCactions: 0, /* actions involving your body: becoming pregnant, etc. */ -PCRelationships: 0, -SlaveRelationships: 0, -event: 0, /*poker night etc. Try to file things elsewhere if you can.*/ -war: 0, - -/*special*/ -multiplier: 0, -overflow: 0, -cheating: 0, - -total: 0 - -}>> - -<<set $lastWeeksRepExpenses = clone($lastWeeksRepIncome)>> -<<set $lastWeeksRepProfits = clone($lastWeeksRepIncome)>> - -<</widget>> diff --git a/src/uncategorized/economics.tw b/src/uncategorized/economics.tw index 14f1dd5142ce54431475302423c87091296a3173..513b2d7f14a2745a57bf63f66aa5e83bd55d6cf7 100644 --- a/src/uncategorized/economics.tw +++ b/src/uncategorized/economics.tw @@ -55,7 +55,7 @@ <<else>> <body> -<div class="tab"> +<div class="tabbar"> <button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'Arcologies')" id="defaultOpen">Arcologies</button> <button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'Management')">Arcology Management</button> <<if $FSAnnounced > 0>> diff --git a/src/uncategorized/endWeek.tw b/src/uncategorized/endWeek.tw index 1bfc864e39a9f7a0a3d259e2dfc5e047905e0bec..cf6757fce58808b1c90b21a4d7d9b55d6edbd21a 100644 --- a/src/uncategorized/endWeek.tw +++ b/src/uncategorized/endWeek.tw @@ -2,8 +2,8 @@ <<set State.expired.length = 0>> -<<setupLastWeeksCash>> -<<setupLastWeeksRep>> +<<run setupLastWeeksCash()>> +<<run setupLastWeeksRep()>> <<set $gingering = 0, $oralUseWeight = 5, $vaginalUseWeight = 5, $analUseWeight = 5, $mammaryUseWeight = 1, $penetrativeUseWeight = 1, $inflatedSlavesMilk = 0, $inflatedSlavesCum = 0, $subSlaves = 0>> diff --git a/src/uncategorized/futureSociety.tw b/src/uncategorized/futureSociety.tw index 10451f259c24538c7b5caa3d6521f25f49bcb0dd..556d17cd2410f25d397ce74663600b7e5477cd43 100644 --- a/src/uncategorized/futureSociety.tw +++ b/src/uncategorized/futureSociety.tw @@ -626,10 +626,10 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<link "Rename your obedient slaves according to Paternalist custom">> <<for $i = 0; $i < $slaves.length; $i++>> <<if ($slaves[$i].devotion > 20) || (($slaves[$i].devotion >= -20) && ($slaves[$i].trust < -20))>> - <<set $toSearch = $slaves[$i].slaveName>> - <<if ($toSearch.indexOf("Miss") == -1)>> - <<if ($toSearch.indexOf("Ms.") == -1)>> - <<if ($toSearch.indexOf("Mrs.") == -1)>> + <<set _toSearch = $slaves[$i].slaveName>> + <<if (_toSearch.indexOf("Miss") == -1)>> + <<if (_toSearch.indexOf("Ms.") == -1)>> + <<if (_toSearch.indexOf("Mrs.") == -1)>> <<if ($slaves[$i].relationship > 4)>> /* <<for $j = 0; $j < $slaves.length; $j++>> diff --git a/src/uncategorized/initRules.tw b/src/uncategorized/initRules.tw index 6c38817e0aa0a4160d23a8d03ec92c8849d76c62..bf4b5a1d76aa497178465653052c1dbfb4ae8f8d 100644 --- a/src/uncategorized/initRules.tw +++ b/src/uncategorized/initRules.tw @@ -1,7 +1,6 @@ :: Init Rules <<silently>> -<<set $defaultRules = []>> <<set _activeRule = emptyDefaultRule()>> <<set _activeRule.name = "Obedient Slaves">> diff --git a/src/uncategorized/main.tw b/src/uncategorized/main.tw index 0168d323adc7b328eaf4cc9e2565747021db66ca..7476f23d292984d5fdf40cceb149c5af0eac7ecc 100644 --- a/src/uncategorized/main.tw +++ b/src/uncategorized/main.tw @@ -59,98 +59,7 @@ [[Hide|Main][$seeDesk = 0]] <</if>> -<span id="reminder"></span> -<<script>> - $(document).one(':passagedisplay', () => { - $('#reminder').append( - App.Reminders.list({maxFuture: 5, link: true}) - ); - }); -<</script>> - -<<if $seeFCNN === 1>> - <div id="fcnn" class="main-fcnn"></div> - <<script>> - $(document).one(':passageend', () => { - $('#fcnn').append( - App.MainView.fcnn(), - App.UI.DOM.passageLink("Hide", passage(), () => {V.seeFCNN = 0;}) - ); - }); - <</script>> -<</if>> - -<<if ($seeDesk == 1) && ($seeFCNN == 0)>><br><</if>> - -__''MAIN MENU''__ //[[Summary Options]]// -<<if $rulesAssistantMain != 0>> - | //<span id="RAButton"><<link "Rules Assistant Options" "Rules Assistant">><</link>></span>// @@.cyan;[R]@@ - <<if $rulesAssistantAuto != 1>> - | //<<link "Apply Rules Assistant at week end" "Main">><<set $rulesAssistantAuto = 1>><</link>>// - <<else>> - | //<<link "Stop applying Rules Assistant at week end" "Main">><<set $rulesAssistantAuto = 0>><</link>>// - <</if>> - | //<<if DefaultRulesError()>>@@.yellow; WARNING: One or more rules' custom conditions has errors! @@<</if>><<link "Re-apply Rules Assistant now (this will only check slaves in the Penthouse)" "Main">><<for _i = 0;_i < _SL;_i++>><<if assignmentVisible($slaves[_i]) && $slaves[_i].useRulesAssistant == 1>><<= DefaultRules($slaves[_i])>><</if>><</for>><</link>>// -<</if>> - -<<print App.UI.SlaveList.penthousePage()>> - -<<if $useSlaveSummaryTabs === 0>> /*Display traditionally, without tabs*/ - -<<set _j = "Back", _k = "AS Dump", _l = "Main">> -<<for $i = 0; $i < _SL; $i++>> -<<capture $i>> -<<if ($slaves[$i].assignment == "please you")>> - <<setLocalPronouns $slaves[$i]>> - <br> - //<<= App.Interact.ToyChest($slaves[$i])>>// - //In the coming week you plan to concentrate on - <<if $slaves[$i].fuckdoll == 0>> - <<if $slaves[$i].toyHole != "all her holes">> - $his $slaves[$i].toyHole, but for now:// - <<else>> - all of $his holes equally, but for now:// - <</if>> - <br> [["Use "+$his+" mouth"|FLips][$activeSlave = $slaves[$i], $nextButton = _j, $nextLink = _k, $returnTo = _l]] | [["Play with "+$his+" tits"|FBoobs][$activeSlave = $slaves[$i], $nextButton = _j, $nextLink = _k, $returnTo = _l]] - <<if canDoVaginal($slaves[$i])>> - | [["Fuck "+$him|FVagina][$activeSlave = $slaves[$i], $nextButton = _j, $nextLink = _k, $returnTo = _l]] - <<if canDoAnal($slaves[$i])>> - | [["Use "+$his+" holes"|FButt][$activeSlave = $slaves[$i], $nextButton = _j, $nextLink = _k, $returnTo = _l]] - <</if>> - <</if>> - <<if canDoAnal($slaves[$i])>> - | [["Fuck "+$his+" ass"|FAnus][$activeSlave = $slaves[$i], $nextButton = _j, $nextLink = _k, $returnTo = _l]] - <</if>> - <<if canDoVaginal($slaves[$i]) || canDoAnal($slaves[$i])>> - <<if $slaves[$i].belly >= 300000>> - | [["Fuck "+$him+" over "+$his+" belly"|FBellyFuck][$activeSlave = $slaves[$i], $nextButton = _j, $nextLink = _k, $returnTo = _l]] - <</if>> - <</if>> - /*check*/ - <<if canPenetrate($slaves[$i])>> - | [["Ride "+$him|FDick][$activeSlave = $slaves[$i],$nextButton = _j,$nextLink = _k,$returnTo = _l]] - <</if>> - | [["Abuse "+$him|FAbuse][$activeSlave = $slaves[$i],$nextButton = _j,$nextLink = _k,$returnTo = _l]] - <<else>> - <<if $slaves[$i].toyHole != "all her holes">> - $his $slaves[$i].toyHole. - <<else>> - all of $his holes. - <</if>> - <</if>> -<</if>> -<</capture>> -<</for>> -<</if>> - -<span id="BG"></span> -<<script>> - $(document).one(':passageend', () => { - $('#BG').append( - App.MainView.useGuard(), - ); - }); -<</script>> +<<print App.MainView.full()>> <<set $activeSlave = $slaves.random()>> <<if $activeSlave && ($activeSlave.assignment != "please you") && ($activeSlave.assignment != "guard you")>> diff --git a/src/uncategorized/newGamePlus.tw b/src/uncategorized/newGamePlus.tw index 7d042a64219b2b0f02049ba593764c8e466edd07..d396386253eb87c2fe67df02d001cb5a568454ad 100644 --- a/src/uncategorized/newGamePlus.tw +++ b/src/uncategorized/newGamePlus.tw @@ -6,8 +6,8 @@ <<if ndef $slavesToImportMax>><<set $slavesToImportMax = 5>><</if>> <<silently>><<include "Backwards Compatibility">><</silently>> <<set _fee = 50000+($slavesToImportMax*10000)>> -<<setupLastWeeksCash>> -<<setupLastWeeksRep>> +<<run setupLastWeeksCash()>> +<<run setupLastWeeksRep()>> You have decided to start over and will be able to take a few things with you: a few slaves, a small fraction of your current reserves of money, and possibly even your experience as an arcology owner, which will give you a very powerful career background. Many of your other customizations and settings will be carried over as the defaults for your new game, but can be revised freely. diff --git a/src/uncategorized/newSlaveIntro.tw b/src/uncategorized/newSlaveIntro.tw index 95985e80fc454625a4d194d63e79d75926efb290..fc72395e59ec7a6298090f9ad37d1a1737970e51 100644 --- a/src/uncategorized/newSlaveIntro.tw +++ b/src/uncategorized/newSlaveIntro.tw @@ -1089,8 +1089,7 @@ The legalities completed, <span class='slave-name'><<= SlaveFullName($activeSlav <br> <<default>> <<if $activeSlave.origin>> - <<set $toSearch = $activeSlave.origin>> - <<if ($toSearch.includes("enslavement for the attempted rape of a free"))>> + <<if ($activeSlave.origin.includes("enslavement for the attempted rape of a free"))>> //and since $he tried to rape you...// <br> <<link "Show $him how a professional does it">> @@ -1155,8 +1154,7 @@ The legalities completed, <span class='slave-name'><<= SlaveFullName($activeSlav <</if>> -<<set $toSearch = $activeSlave.hStyle>> -<<if ($toSearch.indexOf("shaved") == -1)>> +<<if ($activeSlave.hStyle.indexOf("shaved") == -1)>> <br> <<link "Shave $his hair">> <<replace "#introResult">> diff --git a/src/uncategorized/nextWeek.tw b/src/uncategorized/nextWeek.tw index 62e78c4cdbf36345293438ffd33b29acbabb3f98..2652c2a9703df7c7557ed3ee6c5e0f588cf222e3 100644 --- a/src/uncategorized/nextWeek.tw +++ b/src/uncategorized/nextWeek.tw @@ -292,35 +292,35 @@ <<set _seed = random(1,10)>> <<if $week < 25>> <<if _seed > 4>> - <<set $weatherToday = $niceWeather.random()>> + <<set $weatherToday = App.Data.weather.nice.random()>> <<else>> - <<set $weatherToday = $lightWeather.random()>> + <<set $weatherToday = App.Data.weather.light.random()>> <</if>> <<elseif $week < 50>> <<if _seed > 4>> - <<set $weatherToday = $niceWeather.random()>> + <<set $weatherToday = App.Data.weather.nice.random()>> <<elseif _seed > 2>> - <<set $weatherToday = $lightWeather.random()>> + <<set $weatherToday = App.Data.weather.light.random()>> <<else>> - <<set $weatherToday = $heavyWeather.random()>> + <<set $weatherToday = App.Data.weather.heavy.random()>> <</if>> <<elseif $week < 75>> <<if _seed > 6>> - <<set $weatherToday = $niceWeather.random()>> + <<set $weatherToday = App.Data.weather.nice.random()>> <<elseif _seed > 3>> - <<set $weatherToday = $lightWeather.random()>> + <<set $weatherToday = App.Data.weather.light.random()>> <<else>> - <<set $weatherToday = $heavyWeather.random()>> + <<set $weatherToday = App.Data.weather.heavy.random()>> <</if>> <<else>> <<if _seed > 8>> - <<set $weatherToday = $niceWeather.random()>> + <<set $weatherToday = App.Data.weather.nice.random()>> <<elseif _seed > 6>> - <<set $weatherToday = $lightWeather.random()>> + <<set $weatherToday = App.Data.weather.light.random()>> <<elseif _seed > 2>> - <<set $weatherToday = $heavyWeather.random()>> + <<set $weatherToday = App.Data.weather.heavy.random()>> <<else>> - <<set $weatherToday = $extremeWeather.random()>> + <<set $weatherToday = App.Data.weather.extreme.random()>> <</if>> <</if>> @@ -342,7 +342,7 @@ <<set $boobsID = -1, $boobsInterestTargetID = -1, $buttslutID = -1, $buttslutInterestTargetID = -1, $cumslutID = -1, $cumslutInterestTargetID = -1, $humiliationID = -1, $humiliationInterestTargetID = -1, $sadistID = -1, $sadistInterestTargetID = -1, $masochistID = -1, $masochistInterestTargetID = -1, $domID = -1, $dominantInterestTargetID = -1, $subID = -1, $submissiveInterestTargetID = -1>> /% Other arrays %/ -<<set $events = [], $RESSevent = [], $RESSTRevent = [], $RETSevent = [], $RECIevent = [], $RecETSevent = [], $REFIevent = [], $REFSevent = [], $PESSevent = [], $PETSevent = [], $FSAcquisitionEvents = [], $FSNonconformistEvents = [], $REAnalCowgirlSubIDs = [], $REButtholeCheckinIDs = [], $recruit = [], $RETasteTestSubIDs = [], $devotedSlaves = [], $rebelSlaves = [], $REBoobCollisionSubIDs = [], $REIfYouEnjoyItSubIDs = [], $RESadisticDescriptionSubIDs = [], $REShowerForceSubIDs = [], $RESimpleAssaultIDs = [], $RECockmilkInterceptionIDs = [], $REInterslaveBeggingIDs = [], $bedSlaves = [], $qualifiedFS = [], $eligibleSlaves = [], $slavesInLine = []>> +<<set $events = [], $RESSevent = [], $RESSTRevent = [], $RETSevent = [], $RECIevent = [], $RecETSevent = [], $REFIevent = [], $REFSevent = [], $PESSevent = [], $PETSevent = [], $FSAcquisitionEvents = [], $FSNonconformistEvents = [], $REAnalCowgirlSubIDs = [], $REButtholeCheckinIDs = [], $recruit = [], $RETasteTestSubIDs = [], $devotedSlaves = [], $rebelSlaves = [], $REBoobCollisionSubIDs = [], $REIfYouEnjoyItSubIDs = [], $RESadisticDescriptionSubIDs = [], $REShowerForceSubIDs = [], $RESimpleAssaultIDs = [], $RECockmilkInterceptionIDs = [], $REInterslaveBeggingIDs = [], $bedSlaves = [], $eligibleSlaves = [], $slavesInLine = []>> /% Slave Objects using 0 instead of null. Second most memory eaten up. %/ <<set $activeSlave = 0, $eventSlave = 0, $slaveWithoutBonuses = 0, $subSlave = 0, $milkTap = 0, $relation = 0, $relative = 0, $relative2 = 0>> @@ -351,16 +351,11 @@ <<set $beforeGingering = null>> /% Strings Memory varies. %/ -<<set $analSkinDesc = "", $bellyAccessory = "", $buyer = "", $desc = "", $event = "", $goto = "", $malefactor = "", $oldName = "", $oldSurname = "", $skinDesc = "", $k = "">> +<<set $buyer = "", $desc = "", $event = "", $goto = "", $malefactor = "", $oldName = "", $oldSurname = "", $k = "">> /% Done with zeroing out, what should be for the most part Temps %/ <<run clearSummaryCache()>> -/*HACKY EVENT WORKAROUNDS*/ -<<if $eventID != -1>> - <<set $slaves[$eventID].devotion -= 50, $eventID = -1>> -<</if>> - <<if $autosave != 0>> <<script>>Save.autosave.save("Week Start Autosave")<</script>> <</if>> diff --git a/src/uncategorized/nonRandomEvent.tw b/src/uncategorized/nonRandomEvent.tw index 71d6335e10664faa06dce7691734d19c00d11158..03e15d6c1b64a4472ead706b4802e34792adf4e1 100644 --- a/src/uncategorized/nonRandomEvent.tw +++ b/src/uncategorized/nonRandomEvent.tw @@ -5,8 +5,7 @@ <<if $plot>> <<set _effectiveWeek = $week-$nationHate>> -<<set $toSearch = $arcologies[0].name>> -<<if (_effectiveWeek == 4) && ($toSearch.indexOf("Arcology ") != -1)>> +<<if (_effectiveWeek == 4) && ($arcologies[0].name.indexOf("Arcology ") != -1)>> <<set $Event = "arcology naming">> <<goto "Generic Plot Events">> <<elseif (_effectiveWeek >= 5 && $receiverAvailable == 0)>> diff --git a/src/uncategorized/options.tw b/src/uncategorized/options.tw index d23f707e2f72d9d31d9ebfba40b1b7e52c0c656e..d9dba38057003972c4e9f2d5a1b54728dbcae58b 100644 --- a/src/uncategorized/options.tw +++ b/src/uncategorized/options.tw @@ -223,6 +223,7 @@ This save was created using FC version $ver build $releaseID. Main menu slave tabs are <<option 1 "Enabled">> <<option 0 "Disabled">> + <<option 2 "Cardstyle">> <</options>> <<options $useSlaveListInPageJSNavigation>> @@ -231,14 +232,23 @@ This save was created using FC version $ver build $releaseID. <<option 0 "Disabled">> <</options>> - <<if $useSlaveSummaryTabs > 0>> - <br> - <<options $useSlaveSummaryOverviewTab>> - Condense special slaves into an overview tab - <<option 1 "Enabled">> - <<option 0 "Disabled">> - <</options>> - <</if>> + <<options $useSlaveSummaryOverviewTab>> + Condense special slaves into their own tab + <<option 1 "Enabled">> + <<option 0 "Disabled">> + <</options>> + + <<options $fucktoyInteractionsPosition>> + Interactions with your fucktoys are + <<option 1 "next to them">> + <<option 0 "at page bottom">> + <</options>> + + <<options $lineSeparations "Summary Options">> + Line separations are + <<option 1 "Shown">> + <<option 0 "Hidden">> + <</options>> <div class="subHeading"> ''Sidebar'' diff --git a/src/uncategorized/peConcubineInterview.tw b/src/uncategorized/peConcubineInterview.tw index 69b7be680d7f513db89c7406862412967b9b7a58..63c6d1269daa325afcf928c0950f6680dea54992 100644 --- a/src/uncategorized/peConcubineInterview.tw +++ b/src/uncategorized/peConcubineInterview.tw @@ -1,6 +1,6 @@ :: PE concubine interview [nobr] -<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "RIE Eligibility Check", $activeSlave = $Concubine, $oldRep = $rep>> +<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "RIE Eligibility Check", $activeSlave = $Concubine, _oldRep = $rep>> <<run Enunciate($activeSlave)>> <<setLocalPronouns $activeSlave>> <<set _belly = bellyAdjective($activeSlave)>> @@ -430,10 +430,10 @@ You receive an official communication from a popular talk show e-hosted in one o <</if>> <br> At the conclusion, the host - <<if $rep - $oldRep > 200>> + <<if $rep - _oldRep > 200>> seems @@.green;impressed@@ and says sincerely, <<run repX(500, "concubine", $activeSlave)>> - <<elseif $rep - $oldRep < 0>> + <<elseif $rep - _oldRep < 0>> seems @@.red;unimpressed@@ and says mockingly, <<run repX(-100, "concubine", $activeSlave)>> <<else>> diff --git a/src/uncategorized/pePitFight.tw b/src/uncategorized/pePitFight.tw index f17e29dc1408b72e07181fed47538084ab48cd05..2c193e06d3834bfc2e148601f0f12a5613d20b97 100644 --- a/src/uncategorized/pePitFight.tw +++ b/src/uncategorized/pePitFight.tw @@ -5,7 +5,7 @@ <<set $activeSlave = $Bodyguard>> <<setLocalPronouns $activeSlave>> -<<set $deadliness = Deadliness($activeSlave)>> +<<set _deadliness = Deadliness($activeSlave)>> <<set $PPit = 0>> @@ -151,11 +151,11 @@ Across the ring, $his opponent's owner nods civilly to you and examines $activeS <</if>> -<<if $deadliness > 5>> +<<if _deadliness > 5>> $activeSlave.slaveName seems supremely confident, even eager to please you. -<<elseif $deadliness > 3>> +<<elseif _deadliness > 3>> $activeSlave.slaveName seems nervous, but steels $himself to fight for you. -<<elseif $deadliness > 1>> +<<elseif _deadliness > 1>> $activeSlave.slaveName seems terrified, and barely controls $himself. <<else>> $activeSlave.slaveName is obviously terrified, and might flee if there were a way out of the pit. @@ -189,20 +189,20 @@ The umpire announces gravely that the fight is to the death and rings a bell. <br><br> -<<if $deadliness > (_opponent + 1)>> +<<if _deadliness > (_opponent + 1)>> $activeSlave.slaveName senses that $he is greatly superior, and decides to make a quick end before $his opponent can try something foolish. $He feints high and stabs low; $his enemy just manages to parry the low stab, but is so much weaker that $activeSlave.slaveName simply overpowers _himU, so that _heU falls onto _hisU back with the force of the clash. $activeSlave.slaveName takes one step forward and runs $his sword through the prostrate slave's heart. This victory has @@.green;won you some renown@@ and @@.yellowgreen;a sum of money@@ from each of the spectators. <<run repX(500, "pit", $activeSlave)>> <<run cashX(5000, "pit", $activeSlave)>> <<set $activeSlave.counter.pitKills += 1>> <<set $pitKillsTotal += 1>> -<<elseif $deadliness > (_opponent)>> +<<elseif _deadliness > (_opponent)>> The combat is long and exhausting. $activeSlave.slaveName and $his opponent are closely matched in terms of skill, so neither takes foolish risks and a protracted, bloody fight results as both slaves take horrible but non-life-threatening cuts. Finally, $activeSlave.slaveName's superior physical condition wins out and $his opponent falls from exhaustion and blood loss. $activeSlave.slaveName stumbles over to open _hisU throat. This victory has @@.green;won you some renown@@ and @@.yellowgreen;a sum of money@@ from each of the spectators, though $activeSlave.slaveName is @@.red;badly hurt.@@ <<run repX(500, "pit", $activeSlave)>> <<run cashX(5000, "pit", $activeSlave)>> <<set $activeSlave.health.condition = -50>> <<set $activeSlave.counter.pitKills += 1>> <<set $pitKillsTotal += 1>> -<<elseif $deadliness > (_opponent-1)>> +<<elseif _deadliness > (_opponent-1)>> The combat is long and exhausting. $activeSlave.slaveName and $his opponent are closely matched in terms of skill, so neither takes foolish risks and a protracted, bloody fight results as both slaves take horrible but non-life-threatening cuts. Finally, $activeSlave.slaveName's inferior physical condition fails $him and $he falls from exhaustion and blood loss. As $he slumps $he catches your eye with a look of apology. $His opponent stumbles over to open $his throat. $activeSlave.slaveName @@.red;has been killed.@@ <<run healthDamage($activeSlave, 1000)>> <<else>> diff --git a/src/uncategorized/persBusiness.tw b/src/uncategorized/persBusiness.tw index 8763178ad221fcc32fd1bb99255772ac013fff22..8f57105528d97458885050785867dd8afe197f97 100644 --- a/src/uncategorized/persBusiness.tw +++ b/src/uncategorized/persBusiness.tw @@ -118,95 +118,95 @@ <<elseif ($personalAttention == "proclamation")>> /* handled after this if chain */ <<elseif ($personalAttention == "smuggling")>> - <<set $qualifiedFS = []>> + <<set _qualifiedFS = []>> <<if $arcologies[0].FSDegradationistDecoration >= 80>> - <<set $qualifiedFS.push("degradationist")>> + <<set _qualifiedFS.push("degradationist")>> <</if>> <<if $arcologies[0].FSPaternalistDecoration >= 80>> - <<set $qualifiedFS.push("paternalist")>> + <<set _qualifiedFS.push("paternalist")>> <</if>> <<if $arcologies[0].FSHedonisticDecadenceDecoration >= 80>> - <<set $qualifiedFS.push("hedonistic")>> + <<set _qualifiedFS.push("hedonistic")>> <</if>> <<if $arcologies[0].FSSlaveProfessionalismLaw == 1>> - <<set $qualifiedFS.push("professionalism")>> + <<set _qualifiedFS.push("professionalism")>> <</if>> <<if $arcologies[0].FSIntellectualDependencyLaw == 1>> - <<set $qualifiedFS.push("dependency")>> + <<set _qualifiedFS.push("dependency")>> <</if>> <<if $arcologies[0].FSPetiteAdmiration >= 80>> - <<set $qualifiedFS.push("petite")>> + <<set _qualifiedFS.push("petite")>> <</if>> <<if $arcologies[0].FSStatuesqueGlorification >= 80>> - <<set $qualifiedFS.push("statuesque")>> + <<set _qualifiedFS.push("statuesque")>> <</if>> <<if $arcologies[0].FSPastoralistDecoration >= 80 && $arcologies[0].FSPastoralistLaw == 1>> - <<set $qualifiedFS.push("pastoralist")>> + <<set _qualifiedFS.push("pastoralist")>> <</if>> <<if $arcologies[0].FSSupremacistDecoration >= 80>> - <<set $qualifiedFS.push("supremacist")>> + <<set _qualifiedFS.push("supremacist")>> <</if>> <<if $arcologies[0].FSBodyPuristDecoration >= 80>> - <<set $qualifiedFS.push("body purist")>> + <<set _qualifiedFS.push("body purist")>> <</if>> <<if $arcologies[0].FSRestartDecoration >= 80>> - <<set $qualifiedFS.push("eugenics")>> + <<set _qualifiedFS.push("eugenics")>> <</if>> <<if $arcologies[0].FSRepopulationFocusDecoration >= 80>> - <<set $qualifiedFS.push("repopulation")>> + <<set _qualifiedFS.push("repopulation")>> <</if>> <<if $arcologies[0].FSGenderFundamentalistDecoration >= 80>> - <<set $qualifiedFS.push("fundamentalist")>> + <<set _qualifiedFS.push("fundamentalist")>> <</if>> <<if $arcologies[0].FSSubjugationistDecoration >= 80>> - <<set $qualifiedFS.push("subjugationist")>> + <<set _qualifiedFS.push("subjugationist")>> <</if>> <<if $arcologies[0].FSGenderRadicalistResearch == 1>> - <<set $qualifiedFS.push("radicalist")>> + <<set _qualifiedFS.push("radicalist")>> <</if>> <<if $arcologies[0].FSTransformationFetishistResearch == 1>> - <<set $qualifiedFS.push("transformation")>> + <<set _qualifiedFS.push("transformation")>> <</if>> <<if $arcologies[0].FSYouthPreferentialistDecoration >= 80>> - <<set $qualifiedFS.push("youth")>> + <<set _qualifiedFS.push("youth")>> <</if>> <<if $arcologies[0].FSMaturityPreferentialistDecoration >= 80>> - <<set $qualifiedFS.push("maturity")>> + <<set _qualifiedFS.push("maturity")>> <</if>> <<if $arcologies[0].FSSlimnessEnthusiastDecoration >= 80>> - <<set $qualifiedFS.push("slimness")>> + <<set _qualifiedFS.push("slimness")>> <</if>> <<if $arcologies[0].FSAssetExpansionistResearch == 1>> - <<set $qualifiedFS.push("expansionist")>> + <<set _qualifiedFS.push("expansionist")>> <</if>> <<if $arcologies[0].FSPhysicalIdealistDecoration >= 80>> - <<set $qualifiedFS.push("idealist")>> + <<set _qualifiedFS.push("idealist")>> <</if>> <<if $arcologies[0].FSChattelReligionistLaw == 1>> - <<set $qualifiedFS.push("religion")>> + <<set _qualifiedFS.push("religion")>> <</if>> <<if $arcologies[0].FSRomanRevivalistLaw == 1>> - <<set $qualifiedFS.push("roman law")>> + <<set _qualifiedFS.push("roman law")>> <<elseif $arcologies[0].FSRomanRevivalistDecoration >= 80>> - <<set $qualifiedFS.push("roman")>> + <<set _qualifiedFS.push("roman")>> <<elseif $arcologies[0].FSEgyptianRevivalistDecoration >= 80>> - <<set $qualifiedFS.push("egyptian")>> + <<set _qualifiedFS.push("egyptian")>> <<elseif $arcologies[0].FSAztecRevivalistLaw == 1>> - <<set $qualifiedFS.push("aztec law")>> + <<set _qualifiedFS.push("aztec law")>> <<elseif $arcologies[0].FSAztecRevivalistDecoration >= 80>> - <<set $qualifiedFS.push("aztec")>> + <<set _qualifiedFS.push("aztec")>> <<elseif $arcologies[0].FSArabianRevivalistLaw == 1>> - <<set $qualifiedFS.push("arabian law")>> + <<set _qualifiedFS.push("arabian law")>> <<elseif $arcologies[0].FSArabianRevivalistDecoration >= 80>> - <<set $qualifiedFS.push("arabian")>> + <<set _qualifiedFS.push("arabian")>> <<elseif $arcologies[0].FSEdoRevivalistLaw == 1>> - <<set $qualifiedFS.push("edo law")>> + <<set _qualifiedFS.push("edo law")>> <<elseif $arcologies[0].FSEdoRevivalistDecoration >= 80>> - <<set $qualifiedFS.push("edo")>> + <<set _qualifiedFS.push("edo")>> <<elseif $arcologies[0].FSChineseRevivalistLaw == 1>> - <<set $qualifiedFS.push("chinese law")>> + <<set _qualifiedFS.push("chinese law")>> <<elseif $arcologies[0].FSChineseRevivalistDecoration >= 80>> - <<set $qualifiedFS.push("chinese")>> + <<set _qualifiedFS.push("chinese")>> <</if>> <<set _caught = 0>> <<if $rep >= 18000>> /* prestigious */ @@ -216,7 +216,7 @@ <<else>> <<set _income = random(1500,2000)>> <</if>> - <<switch $qualifiedFS.random()>> + <<switch _qualifiedFS.random()>> <<case "eugenics">> <<set _income += random(2500,4000)>> <<if $eugenicsFullControl != 1>> diff --git a/src/uncategorized/personalAttentionSelect.tw b/src/uncategorized/personalAttentionSelect.tw index 4d41d4afee44c912667d8c8b4aab34b172a12074..05f1689433798fa60c2fb79f9e5bb0046b4300ac 100644 --- a/src/uncategorized/personalAttentionSelect.tw +++ b/src/uncategorized/personalAttentionSelect.tw @@ -13,9 +13,9 @@ <<if $PC.skill.warfare > 25>> <br>[[Survey your arcology's defenses in person|Main][$personalAttention = "defensive survey"]] <</if>> -<<if $PC.skill.engineering > 25>> +<<if $PC.skill.engineering > 25>> <br> <<if ($arcologies[0].prosperity + 1 * (1 + Math.ceil($PC.skill.engineering/100))) < $AProsperityCap>> - <br>[[Contribute to a local development project|Main][$personalAttention = "development project"]] + [[Contribute to a local development project|Main][$personalAttention = "development project"]] <<else>> contributing to a local development project @@.yellow;would be futile.@@ <</if>> @@ -362,4 +362,4 @@ <<= App.UI.SlaveList.slaveSelectionList( s => assignmentVisible(s) && s.fuckdoll === 0, s => App.UI.DOM.link(SlaveFullName(s), (id) => {App.UI.selectSlaveForPersonalAttention(id); }, s.ID) - )>> \ No newline at end of file + )>> diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw index dd4804cf31744ff66b8f7ca70b67990a8c78796f..2b07f23227b2be8349786d65dd3ed0567737200c 100644 --- a/src/uncategorized/randomNonindividualEvent.tw +++ b/src/uncategorized/randomNonindividualEvent.tw @@ -30,10 +30,9 @@ <<if $nicknamesAllowed == 1>> <<if $eventSlave.assignment != "be confined in the arcade">> - <<set $toSearch = $eventSlave.slaveName.toLowerCase()>> - <<if ($toSearch.indexOf("'") == -1)>> - <<if ($week-$eventSlave.weekAcquired >= 4)>> - <<if ($eventSlave.devotion >= -20)>> + <<if ($eventSlave.slaveName.indexOf("'") == -1)>> + <<if ($week-$eventSlave.weekAcquired >= 4)>> + <<if ($eventSlave.devotion >= -20)>> <<set $events.push("RE nickname")>> <<set $events.push("RE nickname")>> <<set $events.push("RE nickname")>> @@ -778,7 +777,7 @@ <<set $events.push("RE relative recruiter")>> <<set $recruiterSlave = $recruiterSlave.ID>> <<break>> - <<else>> /* no matching slave object in the slavesOriginal array -- bug? */ + <<else>> /* no matching slave object in the array -- bug? */ <<set $i = $slaveIndices[$recruiterSlave.ID]>> <<set $slaves[$i].canRecruit = 0>> <<set $recruiterSlave = -1>> diff --git a/src/uncategorized/reNickname.tw b/src/uncategorized/reNickname.tw index 98f1a4ad9774a395617ec44e8e1840e2aa59cce5..9335e3222a83ad02fc282f2f431c3d7905cd12a6 100644 --- a/src/uncategorized/reNickname.tw +++ b/src/uncategorized/reNickname.tw @@ -1256,8 +1256,7 @@ <br><br> <span id="result"> -<<set $toSearch = $activeSlave.slaveName.toLowerCase()>> -<<if ($toSearch.indexOf("'") == -1)>> +<<if ($activeSlave.slaveName.indexOf("'") == -1)>> <<link "Encourage use of the nickname">> <<EventNameDelink $activeSlave>> <<replace "#result">> diff --git a/src/uncategorized/reRelativeRecruiter.tw b/src/uncategorized/reRelativeRecruiter.tw index c3dde76f2b81b2e903e147e390497668916e26c8..2cb84d57e71c0310ee5c9392e7f49a6da644257f 100644 --- a/src/uncategorized/reRelativeRecruiter.tw +++ b/src/uncategorized/reRelativeRecruiter.tw @@ -20,10 +20,6 @@ /* 000-250-006 */ </span> -<<if ndef $newRelativeRecruitID>> - <<set $newRelativeRecruitID = 1100000>> -<</if>> - <<run Enunciate($eventSlave)>> <<setLocalPronouns $eventSlave>> @@ -80,7 +76,7 @@ <<set _recruitedType.push("twin")>> <</if>> -<<set $activeSlave.ID = $newRelativeRecruitID>> +<<set $activeSlave.ID = generateSlaveID()>> <<if _recruitedType.length == 0>> <<set $eventSlave.canRecruit = 0>> @@ -488,8 +484,6 @@ <<if _familyName>><<set $activeSlave.slaveSurname = _familyName>><</if>> <<set $activeSlave.birthSurname = _familyBirthSurname>> -<<set $newRelativeRecruitID++>> - <<run generatePronouns($activeSlave)>> <<setLocalPronouns $activeSlave 2>> <<setSpokenLocalPronouns $eventSlave $activeSlave>> diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw index 3126bfcded6b239cec7802591340d942421e9541..be168122e34a5464d8c6e19976188ff7d00c0247 100644 --- a/src/uncategorized/remoteSurgery.tw +++ b/src/uncategorized/remoteSurgery.tw @@ -6,7 +6,7 @@ } </style> -<<set $nextButton = "Back", $nextLink = "Slave Interact">> +<<set $nextButton = "Confirm changes", $nextLink = "AS Dump", $returnTo = "Slave Interact">> <<set $surgeryType = 0, $showEncyclopedia = 1, $encyclopedia = "The Remote Surgery">> <<set _belly = bellyAdjective($activeSlave)>> diff --git a/src/uncategorized/repBudget.tw b/src/uncategorized/repBudget.tw index 5868ab27f68060bfc697f8dcf75880f3b4e77eb2..d8d58f71416037b99d65cb8af0639ccb590c1b46 100644 --- a/src/uncategorized/repBudget.tw +++ b/src/uncategorized/repBudget.tw @@ -233,6 +233,6 @@ for (var i = 0; i < State.variables.lastWeeksRepIncome.length; i++){ <<if $lastWeeksRepErrors !== "Errors: ">> <<link "Reset">> <<set $lastWeeksRepErrors = "Errors: ">> - <</link>> + <</link>><br> @@.red;<<print $lastWeeksRepErrors>>@@ <</if>> diff --git a/src/uncategorized/saGuardsYou.tw b/src/uncategorized/saGuardsYou.tw index 30db404a8a6da854b5a913f10b802f585ea8efcb..094e5322f049c7091fc50082c01b7125855c07f5 100644 --- a/src/uncategorized/saGuardsYou.tw +++ b/src/uncategorized/saGuardsYou.tw @@ -6,7 +6,7 @@ carries arms in your defense. <<set $slaves[$i].rules.living = "luxurious">> <</if>> -<<set $deadliness = Deadliness($slaves[$i])>> +<<set _deadliness = Deadliness($slaves[$i])>> <<if $slaves[$i].skill.combat > 0>> $His combat skills greatly increase $his deadliness. @@ -163,19 +163,19 @@ carries arms in your defense. <</if>> $His constant presence is -<<if $deadliness > 6>> +<<if _deadliness > 6>> extremely intimidating, @@.green;adding much to your reputation.@@ <<if $slaves[$i].career == "an arcology owner">> You've made a one-time rival arcology owner into a deadly and loyal protector, a feat of slaveownership that's @@.green;internationally famous.@@ - <<run repX($deadliness*50, "bodyguard", $slaves[$i])>> + <<run repX(_deadliness*50, "bodyguard", $slaves[$i])>> <</if>> -<<elseif $deadliness > 3>> +<<elseif _deadliness > 3>> intimidating, @@.green;adding to your reputation.@@ <<else>> hardly intimidating, @@.yellow;barely adding to your reputation.@@ <</if>> -<<run repX($deadliness*50, "bodyguard", $slaves[$i])>> +<<run repX(_deadliness*50, "bodyguard", $slaves[$i])>> Being continually trusted with your life @@.hotpink;increases $his devotion to you@@ and encourages $him to @@.mediumaquamarine;trust you in turn.@@ <<set $slaves[$i].devotion += 2>> diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw index c0d0e39fb5db64e60d166db36bc51a505f9d6608..3d41045f0333db2ead5414dea8ad205e79d3521b 100644 --- a/src/uncategorized/saLongTermEffects.tw +++ b/src/uncategorized/saLongTermEffects.tw @@ -1,8 +1,8 @@ :: SA long term effects [nobr] <<set _fetishChangeChance = fetishChangeChance($slaves[$i])>> -<<set $bellyAccessory = $slaves[$i].bellyAccessory>> -<<if $bellyAccessory == "a support band">> +<<set _bellyAccessory = $slaves[$i].bellyAccessory>> +<<if _bellyAccessory == "a support band">> <<set _bellyBand = 2>> <<else>> <<set _bellyBand = 1>> @@ -1399,7 +1399,7 @@ <<elseif $slaves[$i].bellyImplant >= 60000>> $His paraphilia is satisfied by $his overfilled belly implant. <<set _para = 1>> - <<elseif setup.fakeBellies.includes($bellyAccessory)>> + <<elseif setup.fakeBellies.includes(_bellyAccessory)>> $He @@.mediumorchid;loathes@@ being forced to carry a fake pregnancy. <<set _para = -1>> <<set $slaves[$i].devotion -= 3>> @@ -4202,7 +4202,7 @@ $His areolae darken with $his progressing pregnancy. <</if>> <<elseif $slaves[$i].bellyPreg >= 1500>> - <<if setup.fakeBellies.includes($bellyAccessory)>> + <<if setup.fakeBellies.includes(_bellyAccessory)>> $His growing pregnancy renders $his fake belly moot. <<set $slaves[$i].bellyAccessory = "none">> <</if>> @@ -4550,7 +4550,7 @@ <<include "SA inflation">> - <<if setup.fakeBellies.includes($bellyAccessory)>> + <<if setup.fakeBellies.includes(_bellyAccessory)>> $He has trouble keeping $himself full of <<switch $slaves[$i].inflationType>> <<case "cum" "food" "milk" "urine" "water">> @@ -4853,7 +4853,7 @@ <</if>> <</if>> <<elseif $slaves[$i].bellyImplant >= 1500>> - <<if setup.fakeBellies.includes($bellyAccessory)>> + <<if setup.fakeBellies.includes(_bellyAccessory)>> $His implant rounded belly renders $his fake one moot. <<set $slaves[$i].bellyAccessory = "none">> <</if>> @@ -5411,7 +5411,7 @@ <<elseif $slaves[$i].pregWeek < 0>> Society is @@.green;pleased@@ by $slaves[$i].slaveName's recent birth. <<= FutureSocieties.ChangePorn("RepopulationFocus", 2)>> - <<elseif setup.fakeBellies.includes($bellyAccessory)>> + <<elseif setup.fakeBellies.includes(_bellyAccessory)>> Society is @@.green;placated@@ by $slaves[$i].slaveName's fake belly. <<run repX(0.01*$FSSingleSlaveRep, "futureSocieties", $slaves[$i])>> <<elseif $arcologies[0].FSSubjugationist != "unset" && ($slaves[$i].race == $arcologies[0].FSSubjugationistRace)>> @@ -5966,24 +5966,21 @@ <<if $slaves[$i].fuckdoll == 0>> <<if $slaves[$i].fetish != "mindbroken">> - <<if typeof $slaves[$i].origin == "string">> - <<set $toSearch = $slaves[$i].origin>> - <<if $toSearch.indexOf("Slave Shelter") != -1>> - <<if ["serve in the club", "serve the public", "whore", "work in the brothel"].includes($slaves[$i].assignment)>> - <<if ($slaves[$i].trust > 20) && ($slaves[$i].health.condition > 40)>> - <<if $arcologies[0].FSPaternalist != "unset">> - Society @@.green;strongly approves@@ of how you've brought a shelter $girl health and happiness. - <<= FutureSocieties.ChangePorn("Paternalist", 2)>> - <<switch $slaves[$i].assignment>> - <<case "work in the brothel">><<run getSlaveStatisticData($slaves[$i], $facility.brothel).rep += 2*$FSSingleSlaveRep*($arcologies[0].FSPaternalist/$FSLockinLevel)>> - <</switch>> - <<elseif $arcologies[0].FSDegradationist == "unset">> - The public knows $he's a shelter $girl you took in, and is @@.green;touched@@ that $he now seems happy and healthy. - <<run repX(10, "futureSocieties", $slaves[$i])>> - <<switch $slaves[$i].assignment>> - <<case "work in the brothel">><<run getSlaveStatisticData($slaves[$i], $facility.brothel).rep += 10>> - <</switch>> - <</if>> + <<if isShelterSlave($slaves[$i])>> + <<if ["serve in the club", "serve the public", "whore", "work in the brothel"].includes($slaves[$i].assignment)>> + <<if ($slaves[$i].trust > 20) && ($slaves[$i].health.condition > 40)>> + <<if $arcologies[0].FSPaternalist != "unset">> + Society @@.green;strongly approves@@ of how you've brought a shelter $girl health and happiness. + <<= FutureSocieties.ChangePorn("Paternalist", 2)>> + <<switch $slaves[$i].assignment>> + <<case "work in the brothel">><<run getSlaveStatisticData($slaves[$i], $facility.brothel).rep += 2*$FSSingleSlaveRep*($arcologies[0].FSPaternalist/$FSLockinLevel)>> + <</switch>> + <<elseif $arcologies[0].FSDegradationist == "unset">> + The public knows $he's a shelter $girl you took in, and is @@.green;touched@@ that $he now seems happy and healthy. + <<run repX(10, "futureSocieties", $slaves[$i])>> + <<switch $slaves[$i].assignment>> + <<case "work in the brothel">><<run getSlaveStatisticData($slaves[$i], $facility.brothel).rep += 10>> + <</switch>> <</if>> <</if>> <</if>> diff --git a/src/uncategorized/saRecruitGirls.tw b/src/uncategorized/saRecruitGirls.tw index 70e1fce44d86e1b4889b1c5d746b3113609a2e67..59419b94c3052c66343ba778822f032cac895c56 100644 --- a/src/uncategorized/saRecruitGirls.tw +++ b/src/uncategorized/saRecruitGirls.tw @@ -1,6 +1,6 @@ :: SA recruit girls [nobr] -<<set $bellyAccessory = $slaves[$i].bellyAccessory>> +<<set _bellyAccessory = $slaves[$i].bellyAccessory>> /* Note on target sum: HG and Recruiter are the initial 2 counted (no facility req'd), while HGSuite counts the HG's girl, other facilities count associated leader */ <<if $recruiterIdleRule == "number">> @@ -399,7 +399,7 @@ $He does $his best to convince them that being your slave whore will be safer and healthier than streetwalking. <</if>> <<elseif $recruiterTarget == "expectant mothers">> /* now you can ginger too */ - <<if (($Recruiter.belly >= 1500 || setup.fakeBellies.includes($bellyAccessory) && $Recruiter.weight < 130) || $Recruiter.belly >= 100000)>> + <<if (($Recruiter.belly >= 1500 || setup.fakeBellies.includes(_bellyAccessory) && $Recruiter.weight < 130) || $Recruiter.belly >= 100000)>> <<if $Recruiter.preg > $Recruiter.pregData.normalBirth/8>> Since $he's visibly pregnant $himself, $he speaks with authority when $he says that Free Cities medicine can keep them and their pregnancies safe and healthy. <<else>> @@ -544,7 +544,7 @@ <<set _seed += 1>> <</if>> <<else>> - <<if $slaves[$i].balls < 1 && ($slaves[$i].bellPreg >= 1500 || setup.fakeBellies.includes($bellyAccessory))>> + <<if $slaves[$i].balls < 1 && ($slaves[$i].bellPreg >= 1500 || setup.fakeBellies.includes(_bellyAccessory))>> <<if $slaves[$i].bellPreg >= 1500>> <<set _seed += 4>> <<else>> @@ -888,7 +888,7 @@ <<if $arcologies[0].FSRestart == "unset">> <<if $slaves[$i].bellyPreg >= 1500>> $He unashamedly live streams an obstetric health check in the nude, promising to broadcast similar footage right up until, and during, the birth. - <<elseif setup.fakeBellies.includes($bellyAccessory)>> + <<elseif setup.fakeBellies.includes(_bellyAccessory)>> With some discreet editing, $he uploads fake ultrasounds to match $his plastic pregnancy, bringing a little more attention to your fertility campaigns. <<else>> $He posts plenty of snapshots of gravid mothers-to-be. But with no belly bump of $his own to feature, the impact is no different from any preggo porn already floating around the net. diff --git a/src/uncategorized/salon.tw b/src/uncategorized/salon.tw index 534dbbdd384997c53d22f5a38e415616050a04f2..287194ee5d0ceca9d3822b786d41f73767fee914 100644 --- a/src/uncategorized/salon.tw +++ b/src/uncategorized/salon.tw @@ -1,6 +1,6 @@ :: Salon [nobr] -<<set $nextButton = "Back", $nextLink = "Slave Interact">> +<<set $nextButton = "Confirm changes", $nextLink = "AS Dump", $returnTo = "Slave Interact">> <<set $showEncyclopedia = 1>><<set $encyclopedia = "The Auto Salon">> <<if $showInches == 2>> diff --git a/src/uncategorized/seRetirement.tw b/src/uncategorized/seRetirement.tw index 8a3f643ad5c5df783b0ba2dcda56da76a4edf19f..332901687204206d68c45e99e48495636aba5076 100644 --- a/src/uncategorized/seRetirement.tw +++ b/src/uncategorized/seRetirement.tw @@ -82,16 +82,16 @@ $He's certainly going to have some adjustments to make. <</if>> <<if $activeSlave.prestigeDesc == 0>> - <<set $toSearch = "">> + <<set _toSearch = "">> <<else>> - <<set $toSearch = $activeSlave.prestigeDesc>> + <<set _toSearch = $activeSlave.prestigeDesc>> <</if>> <<if $activeSlave.porn.prestigeDesc == 0>> - <<set $toSearchAlt = "">> + <<set _toSearchAlt = "">> <<else>> - <<set $toSearchAlt = $activeSlave.porn.prestigeDesc>> + <<set _toSearchAlt = $activeSlave.porn.prestigeDesc>> <</if>> -<<if ($toSearch.indexOf("Head Girl") != -1) || ($HeadGirl.ID == $activeSlave.ID)>> +<<if (_toSearch.indexOf("Head Girl") != -1) || ($HeadGirl.ID == $activeSlave.ID)>> <br><br> $He has a reputation from $his long service as your Head Girl. To $his bemusement, and considerable satisfaction, $he has multiple job offers from slaving operations without even having to circulate $his resume. <<if $activeSlave.fetish == "sadist">> @@ -101,7 +101,7 @@ $He's certainly going to have some adjustments to make. <<else>> $His annuity means that $he doesn't have to work, but $he's inclined to do so. $His skills command reasonable wages in the slave training field, and between those prospects and $his annuity, $he stands to become wealthy. <</if>> -<<elseif ($toSearchAlt.indexOf("is world famous for") != -1)>> +<<elseif (_toSearchAlt.indexOf("is world famous for") != -1)>> <br><br> <<set _pornFame = $activeSlave.porn.prestigeDesc>> <<set _pornFame = _pornFame.replace("$He is world famous for $his career in slave pornography. Millions are intimately familiar with", "enjoy")>> diff --git a/src/uncategorized/slaveAssignmentsReport.tw b/src/uncategorized/slaveAssignmentsReport.tw index db320ebf475fb1c50d704d28b09c8f6838be4618..ad1631c7a1d06936fa2aa8a9059c61f178154bc0 100644 --- a/src/uncategorized/slaveAssignmentsReport.tw +++ b/src/uncategorized/slaveAssignmentsReport.tw @@ -820,7 +820,7 @@ $sexDemandResult.topClass = Math.trunc((($NPCSexSupply.topClass + $slaveJobValue <</if>> <</if>> -<<if $slaves[$i].origin && $slaves[$i].origin.includes("Slave Shelter")>> +<<if isShelterSlave($slaves[$i])>> <<set $shelterGirlsIDs.push($slaves[$i].ID)>> <</if>> diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw index 520d65f20a6875bbb7473b8f66e71de0463b3bce..5a3e3bb8c407bd21b778caedc8754b511d8916f5 100644 --- a/src/uncategorized/slaveInteract.tw +++ b/src/uncategorized/slaveInteract.tw @@ -1,9 +1,10 @@ :: Slave Interact [nobr] -<<set $nextButton = "Confirm changes", $nextLink = "AS Dump", $returnTo = "Main">> +<<set $nextButton = "Confirm changes", $nextLink = "Main">> <<set _SL = $slaves.length, _CL = $canines.length, _HL = $hooved.length, _FL = $felines.length>> -<<setLocalPronouns $activeSlave>> -<<run Enunciate($activeSlave)>> +<<set _i = $slaveIndices[$activeSlave.ID]>> +<<setLocalPronouns $slaves[_i]>> +<<run Enunciate($slaves[_i])>> <style> .active { background-color: grey; @@ -13,8 +14,8 @@ <<run App.UI.tabbar.handlePreSelectedTab($tabChoice.slaveInteract)>> -<<if !assignmentVisible($activeSlave)>> - <<switch $activeSlave.assignment>> +<<if !assignmentVisible($slaves[_i])>> + <<switch $slaves[_i].assignment>> <<case "work in the brothel" "be the Madam">> <<set $returnTo = "Brothel">> <<case "be confined in the arcade">> @@ -45,11 +46,11 @@ <</if>> <<set $encyclopedia = either("Costs Summary", "Disease in the Free Cities", "Drugs and Their Effects", "From Rebellious to Devoted", "Gender", "Independent Slaves", "Modern Anal", "Nymphomania", "Slave Couture")>> -<<if $activeSlave.dick > 0>> +<<if $slaves[_i].dick > 0>> <<set $showEncyclopedia = 1, $encyclopedia = "Gender">> <</if>> -<<run App.UI.SlaveInteract.placeInLine($activeSlave)>> +<<run App.UI.SlaveInteract.placeInLine($slaves[_i])>> <p align="center"> <<if $cheatMode == 1>> @@ -66,7 +67,7 @@ </span> <span class='slave-name'> - $activeSlave.slaveName + $slaves[_i].slaveName </span> <span id="nextSlave" style="font-weight:bold"> @@ -78,21 +79,21 @@ </p> <button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'Description')" id="tab Description">Description</button> <button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'Location')" id="tab Location">Location</button> -<button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'Appearance'), App.UI.Wardrobe.refreshAll(V.activeSlave)" id="tab Appearance">Appearance</button> +<button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'Appearance'), App.UI.Wardrobe.refreshAll(getSlave(V.activeSlave.ID))" id="tab Appearance">Appearance</button> <button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'PhysicalRegimen')" id="tab PhysicalRegimen">Physical Regimen</button> <button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'Rules')" id="tab Rules">Rules</button> <button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'Financial')" id="tab Financial">Financial</button> -<button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'Customize'), App.UI.SlaveInteract.custom(V.activeSlave)" id="tab Customize">Customize</button> +<button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'Customize'), App.UI.SlaveInteract.custom(getSlave(V.activeSlave.ID))" id="tab Customize">Customize</button> <<if $familyTesting == 1>> - <button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'FamilyTab'), renderFamilyTree(V.slaves, V.activeSlave.ID)" id="tab FamilyTab">Family</button> + <button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'FamilyTab'), renderFamilyTree(V.slaves, getSlave(V.activeSlave.ID).ID)" id="tab FamilyTab">Family</button> <</if>> <div id="artFrame"> <<if $seeImages == 1 && $eventDescription != 1>> <<if $imageChoice == 1>> - <div class="imageRef lrgVector"><div class="mask"> </div><<= SlaveArt($activeSlave, 3, 0)>></div> + <div class="imageRef lrgVector"><div class="mask"> </div><<= SlaveArt($slaves[_i], 3, 0)>></div> <<else>> - <div class="imageRef lrgRender"><div class="mask"> </div><<= SlaveArt($activeSlave, 3, 0)>></div> + <div class="imageRef lrgRender"><div class="mask"> </div><<= SlaveArt($slaves[_i], 3, 0)>></div> <</if>> <</if>> </div> @@ -138,20 +139,20 @@ <div class="content"> <p> Take slave to another room: - [[Auto salon|Salon][$degradation = 0,$primaryHairColor = "",$secondaryHairColor = "",$primaryEarColor = "",$secondaryEarColor = "",$primaryTailColor = "",$secondaryTailColor = "",$artificialEyeColor = "",$artificialEyeShape = "",$artificialEyeFill = "",$tattooChoice = "",$piercingLevel = ""]] - | [[Body mod studio|Body Modification][$degradation = 0, $tattooChoice = undefined]] - | [[Remote surgery|Remote Surgery][$degradation = 0]] - <<if $prostheticsUpgrade > 0>>| [[Configure cybernetics|Prosthetics Configuration][$prostheticsConfig = "main"]]<</if>> + [[Auto salon|Salon][$activeSlave = $slaves[_i], $degradation = 0,$primaryHairColor = "",$secondaryHairColor = "",$primaryEarColor = "",$secondaryEarColor = "",$primaryTailColor = "",$secondaryTailColor = "",$artificialEyeColor = "",$artificialEyeShape = "",$artificialEyeFill = "",$tattooChoice = "",$piercingLevel = ""]] + | [[Body mod studio|Body Modification][$activeSlave = $slaves[_i], $degradation = 0, $tattooChoice = undefined]] + | [[Remote surgery|Remote Surgery][$activeSlave = $slaves[_i], $degradation = 0]] + <<if $prostheticsUpgrade > 0>>| [[Configure cybernetics|Prosthetics Configuration][$activeSlave = $slaves[_i], $prostheticsConfig = "main"]]<</if>> <div id="miniscene"></div> <span id="useSlave"></span> <script> - App.UI.SlaveInteract.useSlaveDisplay(V.activeSlave) + App.UI.SlaveInteract.useSlaveDisplay(getSlave(V.activeSlave.ID)); </script> </p> <p> - <<switch $activeSlave.assignment>> + <<switch $slaves[_i].assignment>> <<case "recover from surgery">> //$He is recovering from surgery this week// <<case "guard you">> @@ -187,7 +188,7 @@ /* CAN BE REASSIGNED */ <span id="assignmentLinks"></span> - <script>App.UI.SlaveInteract.assignmentBlock("assignmentLinks", V.activeSlave)</script> + <script>App.UI.SlaveInteract.assignmentBlock("assignmentLinks", getSlave(V.activeSlave.ID))</script> <<set _numFacilities = $brothel+$club+$dairy+$farmyard+$servantsQuarters+$masterSuite+$spa+$nursery+$clinic+$schoolroom+$cellblock+$arcade+$HGSuite>> @@ -196,17 +197,17 @@ <</if>> /* closes _numFacilities */ <div id="fucktoypref"></div> - <script>App.UI.SlaveInteract.fucktoyPref(V.activeSlave)</script> + <script>App.UI.SlaveInteract.fucktoyPref(getSlave(V.activeSlave.ID))</script> <</switch>> /* END CAN BE REASSIGNED */ - <<if $activeSlave.assignment == "whore" || $activeSlave.assignment == "work in the brothel">> - <br>Whoring Target: <strong><span id="whoreClass"><<if !$activeSlave.whoreClass>>auto<<elseif $activeSlave.whoreClass == 1>>the lower class<<elseif $activeSlave.whoreClass == 2>>the middle class<<elseif $activeSlave.whoreClass == 3>>the upper class<<elseif $activeSlave.whoreClass == 4>>millionaires<<else>>THERE HAS BEEN AN ERROR<</if>></span></strong>. //This is the highest class they are allowed to service, when eligible// - <<link "Auto">><<set $activeSlave.whoreClass = 0>><<replace "#whoreClass">>auto<</replace>><</link>> | - <<link "Lower Class">><<set $activeSlave.whoreClass = 1>><<replace "#whoreClass">>the lower class<</replace>><</link>> | - <<link "Middle Class">><<set $activeSlave.whoreClass = 2>><<replace "#whoreClass">>the middle class<</replace>><</link>> | - <<link "Upper Class">><<set $activeSlave.whoreClass = 3>><<replace "#whoreClass">>the upper class<</replace>><</link>> | - <<link "Millionaires">><<set $activeSlave.whoreClass = 4>><<replace "#whoreClass">>millionaires<</replace>><</link>> + <<if $slaves[_i].assignment == "whore" || $slaves[_i].assignment == "work in the brothel">> + <br>Whoring Target: <strong><span id="whoreClass"><<if !$slaves[_i].whoreClass>>auto<<elseif $slaves[_i].whoreClass == 1>>the lower class<<elseif $slaves[_i].whoreClass == 2>>the middle class<<elseif $slaves[_i].whoreClass == 3>>the upper class<<elseif $slaves[_i].whoreClass == 4>>millionaires<<else>>THERE HAS BEEN AN ERROR<</if>></span></strong>. //This is the highest class they are allowed to service, when eligible// + <<link "Auto">><<set $slaves[_i].whoreClass = 0>><<replace "#whoreClass">>auto<</replace>><</link>> | + <<link "Lower Class">><<set $slaves[_i].whoreClass = 1>><<replace "#whoreClass">>the lower class<</replace>><</link>> | + <<link "Middle Class">><<set $slaves[_i].whoreClass = 2>><<replace "#whoreClass">>the middle class<</replace>><</link>> | + <<link "Upper Class">><<set $slaves[_i].whoreClass = 3>><<replace "#whoreClass">>the upper class<</replace>><</link>> | + <<link "Millionaires">><<set $slaves[_i].whoreClass = 4>><<replace "#whoreClass">>millionaires<</replace>><</link>> <</if>> </p> </div> @@ -218,52 +219,52 @@ <h3>Appearance</h3> <span id="clothes"></span> - /*<script>App.UI.Wardrobe.clothes(V.activeSlave)</script>*/ + /*<script>App.UI.Wardrobe.clothes(getSlave(V.activeSlave.ID))</script>*/ - <<if $activeSlave.fuckdoll == 0>> + <<if $slaves[_i].fuckdoll == 0>> <span id="collar"></span> - /*<script>App.UI.Wardrobe.collar(V.activeSlave)</script>*/ + /*<script>App.UI.Wardrobe.collar(getSlave(V.activeSlave.ID))</script>*/ <span id="armAccessory"></span> - /*<script>App.UI.Wardrobe.armAccessory(V.activeSlave)</script>*/ + /*<script>App.UI.Wardrobe.armAccessory(getSlave(V.activeSlave.ID))</script>*/ - <<if hasAnyLegs($activeSlave)>> + <<if hasAnyLegs($slaves[_i])>> <span id="shoes"></span> - /*<script>App.UI.Wardrobe.shoes(V.activeSlave)</script>*/ + /*<script>App.UI.Wardrobe.shoes(getSlave(V.activeSlave.ID))</script>*/ <span id="legAccessory"></span> - /*<script>App.UI.Wardrobe.legAccessory(V.activeSlave)</script>*/ + /*<script>App.UI.Wardrobe.legAccessory(getSlave(V.activeSlave.ID))</script>*/ <</if>> <span id="bellyAccessory"></span> - /*<script>App.UI.Wardrobe.bellyAccessory(V.activeSlave)</script>*/ + /*<script>App.UI.Wardrobe.bellyAccessory(getSlave(V.activeSlave.ID))</script>*/ <span id="buttplug"></span> - /*<script>App.UI.Wardrobe.buttplug(V.activeSlave)</script>*/ + /*<script>App.UI.Wardrobe.buttplug(getSlave(V.activeSlave.ID))</script>*/ - <<if isItemAccessible("tail") && $activeSlave.buttplug != "none">> + <<if isItemAccessible("tail") && $slaves[_i].buttplug != "none">> <span id="buttplugAttachment"></span> - /*<script>App.UI.Wardrobe.buttplugAttachment(V.activeSlave)</script>*/ + /*<script>App.UI.Wardrobe.buttplugAttachment(getSlave(V.activeSlave.ID))</script>*/ <</if>> - <<if $activeSlave.vagina > -1>> + <<if $slaves[_i].vagina > -1>> <span id="vaginalAccessory"></span> - /*<script>App.UI.Wardrobe.vaginalAccessory(V.activeSlave)</script>*/ + /*<script>App.UI.Wardrobe.vaginalAccessory(getSlave(V.activeSlave.ID))</script>*/ <span id="vaginalAttachment"></span> - /*<script>App.UI.Wardrobe.vaginalAttachment(V.activeSlave)</script>*/ + /*<script>App.UI.Wardrobe.vaginalAttachment(getSlave(V.activeSlave.ID))</script>*/ <</if>> - <<if $activeSlave.dick > 0>> + <<if $slaves[_i].dick > 0>> <span id="dickAccessory"></span> - /*<script>App.UI.Wardrobe.dickAccessory(V.activeSlave)</script>*/ + /*<script>App.UI.Wardrobe.dickAccessory(getSlave(V.activeSlave.ID))</script>*/ <</if>> <span id="chastity"></span> - /*<script>App.UI.Wardrobe.chastity(V.activeSlave)</script>*/ + /*<script>App.UI.Wardrobe.chastity(getSlave(V.activeSlave.ID))</script>*/ <h3>Shopping</h3> <span id="shopping"></span> - <script>App.UI.Wardrobe.shopping(V.activeSlave)</script> + <script>App.UI.Wardrobe.shopping(getSlave(V.activeSlave.ID))</script> <</if>> /* CLOSES FUCKDOLL CHECK */ </p> @@ -274,102 +275,102 @@ <div class="content"> <h3>Physical Regimen</h3> <span id="drugs"></span> - <script>App.UI.SlaveInteract.drugs(V.activeSlave)</script> + <script>App.UI.SlaveInteract.drugs(getSlave(V.activeSlave.ID))</script> <span id="curatives"></span> - <script>App.UI.SlaveInteract.curatives(V.activeSlave)</script> + <script>App.UI.SlaveInteract.curatives(getSlave(V.activeSlave.ID))</script> <span id="aphrodisiacs"></span> - <script>App.UI.SlaveInteract.aphrodisiacs(V.activeSlave)</script> + <script>App.UI.SlaveInteract.aphrodisiacs(getSlave(V.activeSlave.ID))</script> <span id="fertilityblock"></span> - <script>App.UI.SlaveInteract.fertility(V.activeSlave)</script> + <script>App.UI.SlaveInteract.fertility(getSlave(V.activeSlave.ID))</script> <span id="incubator"></span> - <script>App.UI.SlaveInteract.incubator(V.activeSlave)</script> + <script>App.UI.SlaveInteract.incubator(getSlave(V.activeSlave.ID))</script> <span id="nursery"></span> - <script>App.UI.SlaveInteract.nursery(V.activeSlave)</script> + <script>App.UI.SlaveInteract.nursery(getSlave(V.activeSlave.ID))</script> <<if $propOutcome == 1 && $arcologies[0].FSRestart != "unset">> - <<if $activeSlave.breedingMark == 0 && $activeSlave.fuckdoll == 0 && $activeSlave.eggType == "human" && isFertile($activeSlave) && $activeSlave.preg == 0>> + <<if $slaves[_i].breedingMark == 0 && $slaves[_i].fuckdoll == 0 && $slaves[_i].eggType == "human" && isFertile($slaves[_i]) && $slaves[_i].preg == 0>> <br> [[Breeder Eligibility Exam|BreedingTest]] <</if>> <</if>> <span id="bloating"></span> - <script>App.UI.SlaveInteract.bloating(V.activeSlave)</script> + <script>App.UI.SlaveInteract.bloating(getSlave(V.activeSlave.ID))</script> Hormones: <strong><span id="hormones"> - <<if $activeSlave.hormones == -2>>intensive male<<elseif $activeSlave.hormones == -1>>male<<elseif $activeSlave.hormones == 2>>intensive female<<elseif $activeSlave.hormones == 1>>female<<else>>none<</if>></span></strong>. - <<if $activeSlave.indentureRestrictions < 2>> - <<link "Intensive Female">><<set $activeSlave.hormones = 2>><<replace "#hormones">>intensive female<</replace>><</link>> | + <<if $slaves[_i].hormones == -2>>intensive male<<elseif $slaves[_i].hormones == -1>>male<<elseif $slaves[_i].hormones == 2>>intensive female<<elseif $slaves[_i].hormones == 1>>female<<else>>none<</if>></span></strong>. + <<if $slaves[_i].indentureRestrictions < 2>> + <<link "Intensive Female">><<set $slaves[_i].hormones = 2>><<replace "#hormones">>intensive female<</replace>><</link>> | <</if>> - <<link "Female">><<set $activeSlave.hormones = 1>><<replace "#hormones">>female<</replace>><</link>> | - <<link "None">><<set $activeSlave.hormones = 0>><<replace "#hormones">>none<</replace>><</link>> | - <<link "Male">><<set $activeSlave.hormones = -1>><<replace "#hormones">>male<</replace>><</link>> | - <<if $activeSlave.indentureRestrictions < 2>> - <<link "Intensive Male">><<set $activeSlave.hormones = -2>><<replace "#hormones">>intensive male<</replace>><</link>> + <<link "Female">><<set $slaves[_i].hormones = 1>><<replace "#hormones">>female<</replace>><</link>> | + <<link "None">><<set $slaves[_i].hormones = 0>><<replace "#hormones">>none<</replace>><</link>> | + <<link "Male">><<set $slaves[_i].hormones = -1>><<replace "#hormones">>male<</replace>><</link>> | + <<if $slaves[_i].indentureRestrictions < 2>> + <<link "Intensive Male">><<set $slaves[_i].hormones = -2>><<replace "#hormones">>intensive male<</replace>><</link>> <</if>> - <br>Diet: <strong><span id="diet">$activeSlave.diet</span></strong>. - <<link "Healthy">><<set $activeSlave.diet = "healthy">><<replace "#diet">>$activeSlave.diet<</replace>><</link>> - <<if ($activeSlave.health.condition < 90 || $activeSlave.chem >= 10) && ($dietCleanse == 1)>> - | <<link "Cleanse">><<set $activeSlave.diet = "cleansing">><<replace "#diet">>$activeSlave.diet<</replace>><</link>> + <br>Diet: <strong><span id="diet">$slaves[_i].diet</span></strong>. + <<link "Healthy">><<set $slaves[_i].diet = "healthy">><<replace "#diet">>$slaves[_i].diet<</replace>><</link>> + <<if ($slaves[_i].health.condition < 90 || $slaves[_i].chem >= 10) && ($dietCleanse == 1)>> + | <<link "Cleanse">><<set $slaves[_i].diet = "cleansing">><<replace "#diet">>$slaves[_i].diet<</replace>><</link>> <<elseif ($dietCleanse == 1)>> | //$He is already healthy// <</if>> - <<if ($activeSlave.balls > 0) && ($cumProDiet == 1)>> - | <<link "Cum production">><<set $activeSlave.diet = "cum production">><<replace "#diet">>$activeSlave.diet<</replace>><</link>> + <<if ($slaves[_i].balls > 0) && ($cumProDiet == 1)>> + | <<link "Cum production">><<set $slaves[_i].diet = "cum production">><<replace "#diet">>$slaves[_i].diet<</replace>><</link>> <</if>> - <<if isFertile($activeSlave) && $activeSlave.preg == 0 && ($dietFertility == 1)>> - | <<link "Fertility">><<set $activeSlave.diet = "fertility">><<replace "#diet">>$activeSlave.diet<</replace>><</link>> + <<if isFertile($slaves[_i]) && $slaves[_i].preg == 0 && ($dietFertility == 1)>> + | <<link "Fertility">><<set $slaves[_i].diet = "fertility">><<replace "#diet">>$slaves[_i].diet<</replace>><</link>> <</if>> - <<if ($activeSlave.weight >= -95)>> - | <<link "Lose weight">><<set $activeSlave.diet = "restricted">><<replace "#diet">>$activeSlave.diet<</replace>><</link>> + <<if ($slaves[_i].weight >= -95)>> + | <<link "Lose weight">><<set $slaves[_i].diet = "restricted">><<replace "#diet">>$slaves[_i].diet<</replace>><</link>> <<else>> | //$He is already underweight// <</if>> - <<if $activeSlave.weight <= 200>> - | <<link "Fatten">><<set $activeSlave.diet = "fattening">><<replace "#diet">>$activeSlave.diet<</replace>><</link>> + <<if $slaves[_i].weight <= 200>> + | <<link "Fatten">><<set $slaves[_i].diet = "fattening">><<replace "#diet">>$slaves[_i].diet<</replace>><</link>> <<else>> | //$He is already extremely overweight// <</if>> <<if $feeder == 1>> - | <<link "Estrogen enriched">><<set $activeSlave.diet = "XX">><<replace "#diet">>$activeSlave.diet<</replace>><</link>> - | <<link "Testosterone enriched">><<set $activeSlave.diet = "XY">><<replace "#diet">>$activeSlave.diet<</replace>><</link>> - <<if $dietXXY == 1 && $activeSlave.balls > 0 && ($activeSlave.ovaries == 1 || $activeSlave.mpreg == 1)>> - | <<link "Herm hormone blend">><<set $activeSlave.diet = "XXY">><<replace "#diet">>$activeSlave.diet<</replace>><</link>> + | <<link "Estrogen enriched">><<set $slaves[_i].diet = "XX">><<replace "#diet">>$slaves[_i].diet<</replace>><</link>> + | <<link "Testosterone enriched">><<set $slaves[_i].diet = "XY">><<replace "#diet">>$slaves[_i].diet<</replace>><</link>> + <<if $dietXXY == 1 && $slaves[_i].balls > 0 && ($slaves[_i].ovaries == 1 || $slaves[_i].mpreg == 1)>> + | <<link "Herm hormone blend">><<set $slaves[_i].diet = "XXY">><<replace "#diet">>$slaves[_i].diet<</replace>><</link>> <</if>> <</if>> - <<if ($activeSlave.muscles <= 95) && !isAmputee($activeSlave)>> - | <<link "Build muscle">><<set $activeSlave.diet = "muscle building">><<replace "#diet">>$activeSlave.diet<</replace>><</link>> - <<elseif !isAmputee($activeSlave)>> + <<if ($slaves[_i].muscles <= 95) && !isAmputee($slaves[_i])>> + | <<link "Build muscle">><<set $slaves[_i].diet = "muscle building">><<replace "#diet">>$slaves[_i].diet<</replace>><</link>> + <<elseif !isAmputee($slaves[_i])>> | //$He is maintaining $his enormous musculature// <<else>> | //$He has no limbs and thus can't effectively build muscle// <</if>> - <<if ($activeSlave.muscles > 5 || $activeSlave.fuckdoll == 0) && canWalk($activeSlave)>> - | <<link "Slim down">><<set $activeSlave.diet = "slimming">><<replace "#diet">>$activeSlave.diet<</replace>><</link>> - <<elseif !canWalk($activeSlave)>> + <<if ($slaves[_i].muscles > 5 || $slaves[_i].fuckdoll == 0) && canWalk($slaves[_i])>> + | <<link "Slim down">><<set $slaves[_i].diet = "slimming">><<replace "#diet">>$slaves[_i].diet<</replace>><</link>> + <<elseif !canWalk($slaves[_i])>> | //$He can't move and thus can't trim down// - <<elseif $activeSlave.fuckdoll > 0>> + <<elseif $slaves[_i].fuckdoll > 0>> | //$He has no muscles left to lose// <</if>> - <br>Diet Base: <strong><span id="dietBase"><<if $activeSlave.dietCum == 2>>cum based<<elseif ($activeSlave.dietCum == 1) && ($activeSlave.dietMilk == 0)>>cum added<<elseif ($activeSlave.dietCum == 1) && ($activeSlave.dietMilk == 1)>>cum and milk added<<elseif ($activeSlave.dietMilk == 1) && ($activeSlave.dietCum == 0)>>milk added<<elseif ($activeSlave.dietMilk == 2)>>milk based<<elseif ($activeSlave.dietCum == 0) && ($activeSlave.dietMilk == 0)>>normal<<else>>THERE HAS BEEN AN ERROR<</if>></span></strong>. - <<link "Normal">><<set $activeSlave.dietCum = 0>><<set $activeSlave.dietMilk = 0>><<replace "#dietBase">>normal<</replace>><</link>> | - <<link "Cum added">><<set $activeSlave.dietCum = 1>><<set $activeSlave.dietMilk = 0>><<replace "#dietBase">>cum added<</replace>><</link>> | - <<link "Milk added">><<set $activeSlave.dietCum = 0>><<set $activeSlave.dietMilk = 1>><<replace "#dietBase">>milk added<</replace>><</link>> | - <<link "Cum & milk added">><<set $activeSlave.dietCum = 1>><<set $activeSlave.dietMilk = 1>><<replace "#dietBase">>cum & milk added<</replace>><</link>> | - <<link "Cum based">><<set $activeSlave.dietCum = 2>><<set $activeSlave.dietMilk = 0>><<replace "#dietBase">>cum based<</replace>><</link>> | - <<link "Milk based">><<set $activeSlave.dietCum = 0>><<set $activeSlave.dietMilk = 2>><<replace "#dietBase">>milk based<</replace>><</link>> + <br>Diet Base: <strong><span id="dietBase"><<if $slaves[_i].dietCum == 2>>cum based<<elseif ($slaves[_i].dietCum == 1) && ($slaves[_i].dietMilk == 0)>>cum added<<elseif ($slaves[_i].dietCum == 1) && ($slaves[_i].dietMilk == 1)>>cum and milk added<<elseif ($slaves[_i].dietMilk == 1) && ($slaves[_i].dietCum == 0)>>milk added<<elseif ($slaves[_i].dietMilk == 2)>>milk based<<elseif ($slaves[_i].dietCum == 0) && ($slaves[_i].dietMilk == 0)>>normal<<else>>THERE HAS BEEN AN ERROR<</if>></span></strong>. + <<link "Normal">><<set $slaves[_i].dietCum = 0>><<set $slaves[_i].dietMilk = 0>><<replace "#dietBase">>normal<</replace>><</link>> | + <<link "Cum added">><<set $slaves[_i].dietCum = 1>><<set $slaves[_i].dietMilk = 0>><<replace "#dietBase">>cum added<</replace>><</link>> | + <<link "Milk added">><<set $slaves[_i].dietCum = 0>><<set $slaves[_i].dietMilk = 1>><<replace "#dietBase">>milk added<</replace>><</link>> | + <<link "Cum & milk added">><<set $slaves[_i].dietCum = 1>><<set $slaves[_i].dietMilk = 1>><<replace "#dietBase">>cum & milk added<</replace>><</link>> | + <<link "Cum based">><<set $slaves[_i].dietCum = 2>><<set $slaves[_i].dietMilk = 0>><<replace "#dietBase">>cum based<</replace>><</link>> | + <<link "Milk based">><<set $slaves[_i].dietCum = 0>><<set $slaves[_i].dietMilk = 2>><<replace "#dietBase">>milk based<</replace>><</link>> <<if $arcologies[0].FSHedonisticDecadenceResearch == 1>> - <br>Solid Slave Food Access: <strong><span id="snacks"><<if $activeSlave.onDiet == 0>>Free to stuff $himself.<<else>>On a strict diet.<</if>></span></strong> - <<link "No access">><<set $activeSlave.onDiet = 1>><<replace "#snacks">>On a strict diet.<</replace>><</link>> | - <<link "Full access">><<set $activeSlave.onDiet = 0>><<replace "#snacks">>Free to stuff $himself.<</replace>><</link>> + <br>Solid Slave Food Access: <strong><span id="snacks"><<if $slaves[_i].onDiet == 0>>Free to stuff $himself.<<else>>On a strict diet.<</if>></span></strong> + <<link "No access">><<set $slaves[_i].onDiet = 1>><<replace "#snacks">>On a strict diet.<</replace>><</link>> | + <<link "Full access">><<set $slaves[_i].onDiet = 0>><<replace "#snacks">>Free to stuff $himself.<</replace>><</link>> <</if>> </div> </div> @@ -378,164 +379,164 @@ <div class="content"> <p> <<if $universalRulesImpregnation == "HG" && $seePreg != 0>> - <<if $activeSlave.HGExclude == 0>> - Will be bred by the Head Girl when fertile. <<link "Exempt $him" "Slave Interact">><<set $activeSlave.HGExclude = 1>><</link>> + <<if $slaves[_i].HGExclude == 0>> + Will be bred by the Head Girl when fertile. <<link "Exempt $him" "Slave Interact">><<set $slaves[_i].HGExclude = 1>><</link>> <<else>> - Will not be bred by the Head Girl when fertile. <<link "Include $him" "Slave Interact">><<set $activeSlave.HGExclude = 0>><</link>> + Will not be bred by the Head Girl when fertile. <<link "Include $him" "Slave Interact">><<set $slaves[_i].HGExclude = 0>><</link>> <</if>> <</if>> </p> <p> - <<if $activeSlave.useRulesAssistant == 0>> + <<if $slaves[_i].useRulesAssistant == 0>> <span class="gray"> ''Not subject'' to the Rules Assistant. </span> <<link "Include $him" "Slave Interact">> - <<set $activeSlave.useRulesAssistant = 1>> + <<set $slaves[_i].useRulesAssistant = 1>> <</link>> <<else>> __Rules Assistant:__ [[Rules Assistant Options|Rules Assistant]] - <<if (def $activeSlave.currentRules) && ($activeSlave.currentRules.length > 0)>> + <<if (def $slaves[_i].currentRules) && ($slaves[_i].currentRules.length > 0)>> <ul style="margin:0"> - <<= $defaultRules.filter(x => ruleApplied($activeSlave, x)).map(x => `<li>Rule "${x.name}" applied</li>`).join(" ") >> + <<= $defaultRules.filter(x => ruleApplied($slaves[_i], x)).map(x => `<li>Rule "${x.name}" applied</li>`).join(" ") >> </ul> <<else>> | <</if>> <span style="font-style:italic"> <<link "Apply rules">> - <<run DefaultRules($activeSlave)>> + <<run DefaultRules($slaves[_i])>> <<goto "Slave Interact">> <</link>> </span> | <<link "Exempt $him" "Slave Interact">> - <<set $activeSlave.useRulesAssistant = 0>> + <<set $slaves[_i].useRulesAssistant = 0>> <</link>> <</if>> </p> - <<if $activeSlave.fuckdoll > 0>> + <<if $slaves[_i].fuckdoll > 0>> //Rules have little meaning for living sex toys// <<else>> <<set _visibleSlaves = $slaves.filter(s => assignmentVisible(s) && (s.assignment != "be your Head Girl" || $HGSuite != 1) && (s.assignment != "guard you" || $dojo <= 1)), $dormitoryPopulation = _visibleSlaves.filter(s => s.rules.living != "luxurious").length, $roomsPopulation = _visibleSlaves.length - $dormitoryPopulation - _visibleSlaves.filter(s => s.rules.living == "luxurious" && s.relationship >= 4).length * 0.5>> - Living standard: ''<span id="livingRules">$activeSlave.rules.living</span>.'' - <<if setup.facilityCareers.includes($activeSlave.assignment)>> + Living standard: ''<span id="livingRules">$slaves[_i].rules.living</span>.'' + <<if setup.facilityCareers.includes($slaves[_i].assignment)>> //$His living conditions are managed by $his assignment.// - <<elseif ($activeSlave.assignment == "be your Head Girl") && ($HGSuite == 1)>> + <<elseif ($slaves[_i].assignment == "be your Head Girl") && ($HGSuite == 1)>> //$He has $his own little luxurious room in the penthouse with everything $he needs to be a proper Head Girl.// - <<elseif ($activeSlave.assignment == "guard you") && ($dojo > 1)>> + <<elseif ($slaves[_i].assignment == "guard you") && ($dojo > 1)>> //$He has a comfortable room in the armory to call $his own.// <<else>> - <<link "Spare">><<set $activeSlave.rules.living = "spare">><<replace "#livingRules">>$activeSlave.rules.living<</replace>><</link>> | - <<link "Normal">><<set $activeSlave.rules.living = "normal">><<replace "#livingRules">>$activeSlave.rules.living<</replace>><</link>> | - <<if $roomsPopulation <= $rooms-0.5>><<link "Luxurious">><<set $activeSlave.rules.living = "luxurious">><<replace "#livingRules">>$activeSlave.rules.living<</replace>><</link>><<else>>//No luxurious rooms available//<</if>> + <<link "Spare">><<set $slaves[_i].rules.living = "spare">><<replace "#livingRules">>$slaves[_i].rules.living<</replace>><</link>> | + <<link "Normal">><<set $slaves[_i].rules.living = "normal">><<replace "#livingRules">>$slaves[_i].rules.living<</replace>><</link>> | + <<if $roomsPopulation <= $rooms-0.5>><<link "Luxurious">><<set $slaves[_i].rules.living = "luxurious">><<replace "#livingRules">>$slaves[_i].rules.living<</replace>><</link>><<else>>//No luxurious rooms available//<</if>> <</if>> - <br>Typical punishment: ''<span id="standardPunishment">$activeSlave.rules.punishment</span>.'' - <<link "Confinement">><<set $activeSlave.rules.punishment = "confinement">><<replace "#standardPunishment">>$activeSlave.rules.punishment<</replace>><</link>> | - <<link "Whipping">><<set $activeSlave.rules.punishment = "whipping">><<replace "#standardPunishment">>$activeSlave.rules.punishment<</replace>><</link>> | - <<link "Chastity">><<set $activeSlave.rules.punishment = "chastity">><<replace "#standardPunishment">>$activeSlave.rules.punishment<</replace>><</link>> | - <<link "Situational">><<set $activeSlave.rules.punishment = "situational">><<replace "#standardPunishment">>$activeSlave.rules.punishment<</replace>><</link>> - <br>Typical reward: ''<span id="standardReward">$activeSlave.rules.reward</span>.'' - <<link "Relaxation">><<set $activeSlave.rules.reward = "relaxation">><<replace "#standardReward">>$activeSlave.rules.reward<</replace>><</link>> | - <<link "Drugs">><<set $activeSlave.rules.reward = "drugs">><<replace "#standardReward">>$activeSlave.rules.reward<</replace>><</link>> | - <<link "Orgasm">><<set $activeSlave.rules.reward = "orgasm">><<replace "#standardReward">>$activeSlave.rules.reward<</replace>><</link>> | - <<link "Situational">><<set $activeSlave.rules.reward = "situational">><<replace "#standardReward">>$activeSlave.rules.reward<</replace>><</link>> - - <<if setup.facilityHeads.includes($activeSlave.assignment)>> - <<if $activeSlave.lactation != 2>> - <br>Lactation maintenance for facility heads: ''<span id="lactationRules">$activeSlave.rules.lactation</span>.'' - <<link "Left alone">><<set $activeSlave.rules.lactation = "none">><<replace "#lactationRules">>$activeSlave.rules.lactation<</replace>><</link>> | - <<if $activeSlave.lactation == 0>> - <<link "Induce lactation">><<set $activeSlave.rules.lactation = "induce">><<replace "#lactationRules">>$activeSlave.rules.lactation<</replace>><</link>> + <br>Typical punishment: ''<span id="standardPunishment">$slaves[_i].rules.punishment</span>.'' + <<link "Confinement">><<set $slaves[_i].rules.punishment = "confinement">><<replace "#standardPunishment">>$slaves[_i].rules.punishment<</replace>><</link>> | + <<link "Whipping">><<set $slaves[_i].rules.punishment = "whipping">><<replace "#standardPunishment">>$slaves[_i].rules.punishment<</replace>><</link>> | + <<link "Chastity">><<set $slaves[_i].rules.punishment = "chastity">><<replace "#standardPunishment">>$slaves[_i].rules.punishment<</replace>><</link>> | + <<link "Situational">><<set $slaves[_i].rules.punishment = "situational">><<replace "#standardPunishment">>$slaves[_i].rules.punishment<</replace>><</link>> + <br>Typical reward: ''<span id="standardReward">$slaves[_i].rules.reward</span>.'' + <<link "Relaxation">><<set $slaves[_i].rules.reward = "relaxation">><<replace "#standardReward">>$slaves[_i].rules.reward<</replace>><</link>> | + <<link "Drugs">><<set $slaves[_i].rules.reward = "drugs">><<replace "#standardReward">>$slaves[_i].rules.reward<</replace>><</link>> | + <<link "Orgasm">><<set $slaves[_i].rules.reward = "orgasm">><<replace "#standardReward">>$slaves[_i].rules.reward<</replace>><</link>> | + <<link "Situational">><<set $slaves[_i].rules.reward = "situational">><<replace "#standardReward">>$slaves[_i].rules.reward<</replace>><</link>> + + <<if setup.facilityHeads.includes($slaves[_i].assignment)>> + <<if $slaves[_i].lactation != 2>> + <br>Lactation maintenance for facility heads: ''<span id="lactationRules">$slaves[_i].rules.lactation</span>.'' + <<link "Left alone">><<set $slaves[_i].rules.lactation = "none">><<replace "#lactationRules">>$slaves[_i].rules.lactation<</replace>><</link>> | + <<if $slaves[_i].lactation == 0>> + <<link "Induce lactation">><<set $slaves[_i].rules.lactation = "induce">><<replace "#lactationRules">>$slaves[_i].rules.lactation<</replace>><</link>> <<else>> - <<link "Maintain lactation">><<set $activeSlave.rules.lactation = "maintain">><<replace "#lactationRules">>$activeSlave.rules.lactation<</replace>><</link>> + <<link "Maintain lactation">><<set $slaves[_i].rules.lactation = "maintain">><<replace "#lactationRules">>$slaves[_i].rules.lactation<</replace>><</link>> <</if>> <</if>> <</if>> <br><br>Non-assignment orgasm rules: <div style="text-indent:2em"> - Masturbation is ''<span id="relMasturbation"><<if $activeSlave.rules.release.masturbation === 1>>allowed<<else>>forbidden<</if>></span>.'' - <<link "Allow">><<set $activeSlave.rules.release.masturbation = 1>><<replace "#relMasturbation">>allowed<</replace>><</link>> | - <<link "Forbid">><<set $activeSlave.rules.release.masturbation = 0>><<replace "#relMasturbation">>forbidden<</replace>><</link>> + Masturbation is ''<span id="relMasturbation"><<if $slaves[_i].rules.release.masturbation === 1>>allowed<<else>>forbidden<</if>></span>.'' + <<link "Allow">><<set $slaves[_i].rules.release.masturbation = 1>><<replace "#relMasturbation">>allowed<</replace>><</link>> | + <<link "Forbid">><<set $slaves[_i].rules.release.masturbation = 0>><<replace "#relMasturbation">>forbidden<</replace>><</link>> </div> <div style="text-indent:2em"> - Sex with romantic partner is ''<span id="relPartner"><<if $activeSlave.rules.release.partner === 1>>allowed<<else>>forbidden<</if>></span>.'' - <<link "Allow">><<set $activeSlave.rules.release.partner = 1>><<replace "#relPartner">>allowed<</replace>><</link>> | - <<link "Forbid">><<set $activeSlave.rules.release.partner = 0>><<replace "#relPartner">>forbidden<</replace>><</link>> + Sex with romantic partner is ''<span id="relPartner"><<if $slaves[_i].rules.release.partner === 1>>allowed<<else>>forbidden<</if>></span>.'' + <<link "Allow">><<set $slaves[_i].rules.release.partner = 1>><<replace "#relPartner">>allowed<</replace>><</link>> | + <<link "Forbid">><<set $slaves[_i].rules.release.partner = 0>><<replace "#relPartner">>forbidden<</replace>><</link>> </div> <<if $seeIncest == 1>> <div style="text-indent:2em"> - Sex with close family is ''<span id="relFamily"><<if $activeSlave.rules.release.family === 1>>allowed<<else>>forbidden<</if>></span>.'' - <<link "Allow">><<set $activeSlave.rules.release.family = 1>><<replace "#relFamily">>allowed<</replace>><</link>> | - <<link "Forbid">><<set $activeSlave.rules.release.family = 0>><<replace "#relFamily">>forbidden<</replace>><</link>> + Sex with close family is ''<span id="relFamily"><<if $slaves[_i].rules.release.family === 1>>allowed<<else>>forbidden<</if>></span>.'' + <<link "Allow">><<set $slaves[_i].rules.release.family = 1>><<replace "#relFamily">>allowed<</replace>><</link>> | + <<link "Forbid">><<set $slaves[_i].rules.release.family = 0>><<replace "#relFamily">>forbidden<</replace>><</link>> </div> <</if>> <div style="text-indent:2em"> - Sex with other slaves is ''<span id="relSlaves"><<if $activeSlave.rules.release.slaves === 1>>allowed<<else>>forbidden<</if>></span>.'' - <<link "Allow">><<set $activeSlave.rules.release.slaves = 1>><<replace "#relSlaves">>allowed<</replace>><</link>> | - <<link "Forbid">><<set $activeSlave.rules.release.slaves = 0>><<replace "#relSlaves">>forbidden<</replace>><</link>> + Sex with other slaves is ''<span id="relSlaves"><<if $slaves[_i].rules.release.slaves === 1>>allowed<<else>>forbidden<</if>></span>.'' + <<link "Allow">><<set $slaves[_i].rules.release.slaves = 1>><<replace "#relSlaves">>allowed<</replace>><</link>> | + <<link "Forbid">><<set $slaves[_i].rules.release.slaves = 0>><<replace "#relSlaves">>forbidden<</replace>><</link>> </div> <div style="text-indent:2em"> - Routine sex with <<= properMaster()>> is ''<span id="relMaster"><<if $activeSlave.rules.release.master === 1>>granted<<else>>denied<</if>></span>.'' - <<link "Grant">><<set $activeSlave.rules.release.master = 1>><<replace "#relMaster">>granted<</replace>><</link>> | - <<link "Deny">><<set $activeSlave.rules.release.master = 0>><<replace "#relMaster">>denied<</replace>><</link>> + Routine sex with <<= properMaster()>> is ''<span id="relMaster"><<if $slaves[_i].rules.release.master === 1>>granted<<else>>denied<</if>></span>.'' + <<link "Grant">><<set $slaves[_i].rules.release.master = 1>><<replace "#relMaster">>granted<</replace>><</link>> | + <<link "Deny">><<set $slaves[_i].rules.release.master = 0>><<replace "#relMaster">>denied<</replace>><</link>> </div> <</if>> - <<if $activeSlave.clitPiercing == 3 || $activeSlave.vaginalAccessory == "smart bullet vibrator">> + <<if $slaves[_i].clitPiercing == 3 || $slaves[_i].vaginalAccessory == "smart bullet vibrator">> <div> - <<if $activeSlave.clitPiercing == 3>> - <<if $activeSlave.dick < 1>> - $His smart clit piercing <<if $activeSlave.vaginalAccessory == "smart bullet vibrator">>and smart bullet vibrator are<<else>>is<</if>> set to + <<if $slaves[_i].clitPiercing == 3>> + <<if $slaves[_i].dick < 1>> + $His smart clit piercing <<if $slaves[_i].vaginalAccessory == "smart bullet vibrator">>and smart bullet vibrator are<<else>>is<</if>> set to <<else>> - $His smart frenulum piercing <<if $activeSlave.vaginalAccessory == "smart bullet vibrator">>and smart bullet vibrator are<<else>>is<</if>> set to + $His smart frenulum piercing <<if $slaves[_i].vaginalAccessory == "smart bullet vibrator">>and smart bullet vibrator are<<else>>is<</if>> set to <</if>> <<else>> $His smart bullet vibe is set to <</if>> - <strong><span id="setting">$activeSlave.clitSetting</span></strong>. - <<link "Vanilla">><<set $activeSlave.clitSetting = "vanilla">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>> - | <<link "Oral">><<set $activeSlave.clitSetting = "oral">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>> - | <<link "Anal">><<set $activeSlave.clitSetting = "anal">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>> - | <<link "Boobs">><<set $activeSlave.clitSetting = "boobs">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>> - | <<link "Sub">><<set $activeSlave.clitSetting = "submissive">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>> - | <<link "Dom">><<set $activeSlave.clitSetting = "dom">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>> - | <<link "Humiliation">><<set $activeSlave.clitSetting = "humiliation">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>> + <strong><span id="setting">$slaves[_i].clitSetting</span></strong>. + <<link "Vanilla">><<set $slaves[_i].clitSetting = "vanilla">><<replace "#setting">>$slaves[_i].clitSetting<</replace>><</link>> + | <<link "Oral">><<set $slaves[_i].clitSetting = "oral">><<replace "#setting">>$slaves[_i].clitSetting<</replace>><</link>> + | <<link "Anal">><<set $slaves[_i].clitSetting = "anal">><<replace "#setting">>$slaves[_i].clitSetting<</replace>><</link>> + | <<link "Boobs">><<set $slaves[_i].clitSetting = "boobs">><<replace "#setting">>$slaves[_i].clitSetting<</replace>><</link>> + | <<link "Sub">><<set $slaves[_i].clitSetting = "submissive">><<replace "#setting">>$slaves[_i].clitSetting<</replace>><</link>> + | <<link "Dom">><<set $slaves[_i].clitSetting = "dom">><<replace "#setting">>$slaves[_i].clitSetting<</replace>><</link>> + | <<link "Humiliation">><<set $slaves[_i].clitSetting = "humiliation">><<replace "#setting">>$slaves[_i].clitSetting<</replace>><</link>> <<if $seePreg != 0>> - | <<link "Preg">><<set $activeSlave.clitSetting = "pregnancy">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>> + | <<link "Preg">><<set $slaves[_i].clitSetting = "pregnancy">><<replace "#setting">>$slaves[_i].clitSetting<</replace>><</link>> <</if>> - | <<link "Pain">><<set $activeSlave.clitSetting = "masochist">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>> - | <<link "Sadism">><<set $activeSlave.clitSetting = "sadist">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>> - | <<link "Men">><<set $activeSlave.clitSetting = "men">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>> - | <<link "Anti-men">><<set $activeSlave.clitSetting = "anti-men">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>> - | <<link "Women">><<set $activeSlave.clitSetting = "women">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>> - | <<link "Anti-women">><<set $activeSlave.clitSetting = "anti-women">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>> - | <<link "All sex">><<set $activeSlave.clitSetting = "all">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>> - | <<link "No sex">><<set $activeSlave.clitSetting = "none">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>> + | <<link "Pain">><<set $slaves[_i].clitSetting = "masochist">><<replace "#setting">>$slaves[_i].clitSetting<</replace>><</link>> + | <<link "Sadism">><<set $slaves[_i].clitSetting = "sadist">><<replace "#setting">>$slaves[_i].clitSetting<</replace>><</link>> + | <<link "Men">><<set $slaves[_i].clitSetting = "men">><<replace "#setting">>$slaves[_i].clitSetting<</replace>><</link>> + | <<link "Anti-men">><<set $slaves[_i].clitSetting = "anti-men">><<replace "#setting">>$slaves[_i].clitSetting<</replace>><</link>> + | <<link "Women">><<set $slaves[_i].clitSetting = "women">><<replace "#setting">>$slaves[_i].clitSetting<</replace>><</link>> + | <<link "Anti-women">><<set $slaves[_i].clitSetting = "anti-women">><<replace "#setting">>$slaves[_i].clitSetting<</replace>><</link>> + | <<link "All sex">><<set $slaves[_i].clitSetting = "all">><<replace "#setting">>$slaves[_i].clitSetting<</replace>><</link>> + | <<link "No sex">><<set $slaves[_i].clitSetting = "none">><<replace "#setting">>$slaves[_i].clitSetting<</replace>><</link>> </div> <</if>> - <<if $activeSlave.voice != 0>> - <br>Speech rules: ''<span id="speechRules">$activeSlave.rules.speech</span>.'' - <<link "Restrictive">><<set $activeSlave.rules.speech = "restrictive">><<replace "#speechRules">>$activeSlave.rules.speech<</replace>><</link>> | - <<link "Permissive">><<set $activeSlave.rules.speech = "permissive">><<replace "#speechRules">>$activeSlave.rules.speech<</replace>><</link>> - <<if $activeSlave.accent > 0 && $activeSlave.accent < 4>>| <<link "Accent elimination">><<set $activeSlave.rules.speech = "accent elimination">><<replace "#speechRules">>$activeSlave.rules.speech<</replace>><</link>> - <<elseif $activeSlave.accent > 3>>| <<link "Language lessons">><<set $activeSlave.rules.speech = "language lessons">><<replace "#speechRules">>$activeSlave.rules.speech<</replace>><</link>> + <<if $slaves[_i].voice != 0>> + <br>Speech rules: ''<span id="speechRules">$slaves[_i].rules.speech</span>.'' + <<link "Restrictive">><<set $slaves[_i].rules.speech = "restrictive">><<replace "#speechRules">>$slaves[_i].rules.speech<</replace>><</link>> | + <<link "Permissive">><<set $slaves[_i].rules.speech = "permissive">><<replace "#speechRules">>$slaves[_i].rules.speech<</replace>><</link>> + <<if $slaves[_i].accent > 0 && $slaves[_i].accent < 4>>| <<link "Accent elimination">><<set $slaves[_i].rules.speech = "accent elimination">><<replace "#speechRules">>$slaves[_i].rules.speech<</replace>><</link>> + <<elseif $slaves[_i].accent > 3>>| <<link "Language lessons">><<set $slaves[_i].rules.speech = "language lessons">><<replace "#speechRules">>$slaves[_i].rules.speech<</replace>><</link>> <</if>> <</if>> <br> - Relationship rules: ''<span id="relationshipRules">$activeSlave.rules.relationship</span>.'' - <<link "Restrictive">><<set $activeSlave.rules.relationship = "restrictive">><<replace "#relationshipRules">>$activeSlave.rules.relationship<</replace>><</link>> | - <<link "Just friends">><<set $activeSlave.rules.relationship = "just friends">><<replace "#relationshipRules">>$activeSlave.rules.relationship<</replace>><</link>> | - <<link "Permissive">><<set $activeSlave.rules.relationship = "permissive">><<replace "#relationshipRules">>$activeSlave.rules.relationship<</replace>><</link>> + Relationship rules: ''<span id="relationshipRules">$slaves[_i].rules.relationship</span>.'' + <<link "Restrictive">><<set $slaves[_i].rules.relationship = "restrictive">><<replace "#relationshipRules">>$slaves[_i].rules.relationship<</replace>><</link>> | + <<link "Just friends">><<set $slaves[_i].rules.relationship = "just friends">><<replace "#relationshipRules">>$slaves[_i].rules.relationship<</replace>><</link>> | + <<link "Permissive">><<set $slaves[_i].rules.relationship = "permissive">><<replace "#relationshipRules">>$slaves[_i].rules.relationship<</replace>><</link>> </div> </div> @@ -544,26 +545,26 @@ <<if $studio == 1>> <h3>Media</h3> - <<if $activeSlave.porn.prestige == 3>> - //$He is so prestigious in the realm of $activeSlave.porn.fameType porn that $his fame is self-sustaining.// - <<elseif $activeSlave.porn.feed == 0>> - The media hub is not releasing highlights of $his sex life. [[Release|Slave Interact][$activeSlave.porn.feed = 1]] + <<if $slaves[_i].porn.prestige == 3>> + //$He is so prestigious in the realm of $slaves[_i].porn.fameType porn that $his fame is self-sustaining.// + <<elseif $slaves[_i].porn.feed == 0>> + The media hub is not releasing highlights of $his sex life. [[Release|Slave Interact][$slaves[_i].porn.feed = 1]] <<else>> - The media hub is releasing highlights of $his sex life <<if $activeSlave.porn.spending < 500>>to those who can find it<<elseif $activeSlave.porn.spending < 2500>>on several websites<<elseif $activeSlave.porn.spending > 5000>>through your old distributor<<else>>on many websites<</if>>. - <<if $activeSlave.porn.spending == 0>> - [[Halt|Slave Interact][$activeSlave.porn.feed = 0, $activeSlave.porn.focus = "none"]] | - [[Publicize|Slave Interact][$activeSlave.porn.spending += 1000]] + The media hub is releasing highlights of $his sex life <<if $slaves[_i].porn.spending < 500>>to those who can find it<<elseif $slaves[_i].porn.spending < 2500>>on several websites<<elseif $slaves[_i].porn.spending > 5000>>through your old distributor<<else>>on many websites<</if>>. + <<if $slaves[_i].porn.spending == 0>> + [[Halt|Slave Interact][$slaves[_i].porn.feed = 0, $slaves[_i].porn.focus = "none"]] | + [[Publicize|Slave Interact][$slaves[_i].porn.spending += 1000]] //Will cost <<print cashFormat(1000)>> weekly.// <<else>> - <<textbox "_newPornSpending" $activeSlave.porn.spending>> weekly is spent to publicize them. [[Save changes|Slave Interact][$activeSlave.porn.spending = Number(_newPornSpending) || 0]] | - [[Halt|Slave Interact][$activeSlave.porn.feed = 0, $activeSlave.porn.spending = 0, $activeSlave.porn.focus = "none", $PCSlutContacts = 1]] | - <<if $activeSlave.porn.spending < 5000>> - [[Increase|Slave Interact][$activeSlave.porn.spending += 1000]] | + <<textbox "_newPornSpending" $slaves[_i].porn.spending>> weekly is spent to publicize them. [[Save changes|Slave Interact][$slaves[_i].porn.spending = Number(_newPornSpending) || 0]] | + [[Halt|Slave Interact][$slaves[_i].porn.feed = 0, $slaves[_i].porn.spending = 0, $slaves[_i].porn.focus = "none", $PCSlutContacts = 1]] | + <<if $slaves[_i].porn.spending < 5000>> + [[Increase|Slave Interact][$slaves[_i].porn.spending += 1000]] | <</if>> - [[Decrease|Slave Interact][$activeSlave.porn.spending -= 1000]] - <<if $activeSlave.porn.spending > 5000>><<set _warn = 1>><</if>> - <<set $activeSlave.porn.spending = Number($activeSlave.porn.spending) || 0>> - <<set $activeSlave.porn.spending = Math.clamp(Math.ceil($activeSlave.porn.spending/1000)*1000, 0, 5000)>> + [[Decrease|Slave Interact][$slaves[_i].porn.spending -= 1000]] + <<if $slaves[_i].porn.spending > 5000>><<set _warn = 1>><</if>> + <<set $slaves[_i].porn.spending = Number($slaves[_i].porn.spending) || 0>> + <<set $slaves[_i].porn.spending = Math.clamp(Math.ceil($slaves[_i].porn.spending/1000)*1000, 0, 5000)>> <<if _warn>><br>//Spending more than <<print cashFormat(5000)>> weekly will have no effect.//<</if>> <<if $PC.career == "escort">> <br> @@ -580,18 +581,18 @@ <<if $studioFeed == 1>> <br> - <<if $activeSlave.porn.viewerCount < 100>> + <<if $slaves[_i].porn.viewerCount < 100>> $He lacks the fame in porn needed to discern what $his feed is getting tagged as. <<else>> - <<if $activeSlave.porn.prestige > 0>> - $He is known for $activeSlave.porn.fameType porn<<if $activeSlave.porn.prestige > 1>> and viewers have grown to expect it from $him<</if>>. + <<if $slaves[_i].porn.prestige > 0>> + $He is known for $slaves[_i].porn.fameType porn<<if $slaves[_i].porn.prestige > 1>> and viewers have grown to expect it from $him<</if>>. <</if>> - <<if $activeSlave.porn.focus == "none">> + <<if $slaves[_i].porn.focus == "none">> You are allowing $his viewers to guide the direction of $his content. <<else>> - You are focusing attention on the $activeSlave.porn.focus aspect of $his content. + You are focusing attention on the $slaves[_i].porn.focus aspect of $his content. <</if>> - <<= App.Porn.genreChoiceLinks("Slave Interact", $activeSlave)>> | [[No focus|Slave Interact][$activeSlave.porn.focus = "none"]] + <<= App.Porn.genreChoiceLinks("Slave Interact", $slaves[_i])>> | [[No focus|Slave Interact][$slaves[_i].porn.focus = "none"]] <</if>> <</if>> <</if>> @@ -599,7 +600,7 @@ <h3>Financial</h3> <p> - <<SlaveExpenses $activeSlave>> + <<SlaveExpenses $slaves[_i]>> </p> <p> @@ -610,14 +611,14 @@ <</if>> <<if (_SL > 1)>> - <<if $activeSlave.origin == "You bought $him from a body dump, completely broken." && ($week-$activeSlave.weekAcquired <= 8)>> + <<if $slaves[_i].origin == "You bought $him from a body dump, completely broken." && ($week-$slaves[_i].weekAcquired <= 8)>> //A discarded slave must be kept for at least two months to ensure health before being sold.// | - <<elseif $activeSlave.accent > 3>> + <<elseif $slaves[_i].accent > 3>> //$His lack of language and basic life skills is a red sign to most slave appraisers. $He must not act like a child to be sold without raising suspicion.// | <<else>> - <<link "Sell $him" "Sell Slave">><<run cashX(-500, "personalBusiness", $activeSlave)>><</link>> //Listing $him for sale will cost <<print cashFormat(500)>>// | - <<if ($seeAge != 0) && ($activeSlave.indenture < 1)>> - <<link "Retire $him" "SE retirement">><<set $retiree = $activeSlave.ID, $retired = 1>><</link>> | + <<link "Sell $him" "Sell Slave">><<run cashX(-500, "personalBusiness", $slaves[_i])>><</link>> //Listing $him for sale will cost <<print cashFormat(500)>>// | + <<if ($seeAge != 0) && ($slaves[_i].indenture < 1)>> + <<link "Retire $him" "SE retirement">><<set $retiree = $slaves[_i].ID, $retired = 1>><</link>> | <</if>> <</if>> <<link "Discard $him" "Discard Confirm">><</link>> @@ -639,7 +640,7 @@ <div id="Customize" class="tabcontent"> <div class="content"> <span id="custom"></span> - <script>App.UI.SlaveInteract.custom (V.activeSlave)</script> + <script>App.UI.SlaveInteract.custom(getSlave(V.activeSlave.ID))</script> /*<<include "Add custom descriptors">>*/ </div> diff --git a/src/uncategorized/slaveMarkets.tw b/src/uncategorized/slaveMarkets.tw index 8aa8fd387d2bf7e62e6acd7563bc8c8482ae5523..219e66cc40a73d5316a0b1c80cad05cd5f092fa7 100644 --- a/src/uncategorized/slaveMarkets.tw +++ b/src/uncategorized/slaveMarkets.tw @@ -141,7 +141,7 @@ You visit the slave markets off the arcology plaza. It's always preferable to ex You're in the area of the slave market that specializes in slaves from within the Free City, viewing slaves from ''<<print "$arcologies[$numArcology].name">>''. Some were trained there, specifically for sale, while others are simply being sold. <<set _opinion = arcologyOpinion($arcologies[0], $arcologies[$numArcology])>> <<if _opinion != 0>> - <<set _slaveCost -= Math.trunc(_slaveCost*$opinion*0.05)>> + <<set _slaveCost -= Math.trunc(_slaveCost*_opinion*0.05)>> <<if _opinion > 2>> Your cultural ties with '' $arcologies[$numArcology].name'' helps keep the price reasonable. <<elseif _opinion < -2>> diff --git a/src/uncategorized/slaveSold.tw b/src/uncategorized/slaveSold.tw index fb0d0139d4f1b3daa26c636554a9daf9a860fe62..82413da028bc353304a9bb8c7a39526d32a9b297 100644 --- a/src/uncategorized/slaveSold.tw +++ b/src/uncategorized/slaveSold.tw @@ -1256,11 +1256,8 @@ <</switch>> -<<if $activeSlave.origin != 0>> - <<set $toSearch = $activeSlave.origin>> - <<if $toSearch.indexOf("Slave Shelter") != -1>> - <<set $shelterAbuse += 1>> - <</if>> +<<if isShelterSlave($activeSlave)>> + <<set $shelterAbuse += 1>> <</if>> <<= removeActiveSlave() >> diff --git a/src/uncategorized/summaryOptions.tw b/src/uncategorized/summaryOptions.tw index 29632ae7eca187b1974d204b45badd67182cb9c3..cec8d828caf092903dde74efcf241c0f3000e1fd 100644 --- a/src/uncategorized/summaryOptions.tw +++ b/src/uncategorized/summaryOptions.tw @@ -63,10 +63,11 @@ Sample summary: App.UI.SlaveList.SlaveInteract.stdInteract )>> -<<options $lineSeparations "Summary Options">> - Line separations are - <<option 1 "Shown">> - <<option 0 "Hidden">> +<<options $slavePanelStyle "Summary Options">> + Panel style is + <<option 0 "None">> + <<option 1 "Line Seperators">> + <<option 2 "Card">> <</options>> <<options $abbreviateDevotion "Summary Options">> diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw index 8c85c9b2e0b9a136d286adcb0d945224c8ff4c10..f6ba5f14ac44b7a92a6cd13b524235db0bbcfd15 100644 --- a/src/utility/descriptionWidgetsFlesh.tw +++ b/src/utility/descriptionWidgetsFlesh.tw @@ -1419,60 +1419,60 @@ $He's got a <<widget "AnusDescription">> <<if (skinToneLevel($activeSlave.skin) < 13)>> - <<set $skinDesc = "pink">> + <<set _skinDesc = "pink">> <<elseif ($activeSlave.anusTat == "bleached")>> - <<set $skinDesc = $activeSlave.skin>> + <<set _skinDesc = $activeSlave.skin>> <<elseif (skinToneLevel($activeSlave.skin) > 19)>> - <<set $skinDesc = "dark">> + <<set _skinDesc = "dark">> <<else>> - <<set $skinDesc = "darker">> + <<set _skinDesc = "darker">> <</if>> -<<set $analSkinDesc = either("crinkled", "puckered", "puffy")>> +<<set _analSkinDesc = either("crinkled", "puckered", "puffy")>> <<if $activeSlave.anus == 0>> $He is an @@.lime;anal virgin;@@ $his asshole is fresh and tight. <<elseif $activeSlave.anus == 1>> <<set _ass = either("anal opening", "anus", "asshole", "butthole")>> $His _ass is <<set _ass = either("nice and", "very")>>_ass tight, <<if $activeSlave.analArea-$activeSlave.anus > 3>> - but it's surrounded by a massive oval of $analSkinDesc $skinDesc skin that runs from $his tailbone all the way down to the <<if $activeSlave.vagina > -1>>bottom of $his pussy<<else>>base of $his cock<</if>>. + but it's surrounded by a massive oval of _analSkinDesc _skinDesc skin that runs from $his tailbone all the way down to the <<if $activeSlave.vagina > -1>>bottom of $his pussy<<else>>base of $his cock<</if>>. <<elseif $activeSlave.analArea-$activeSlave.anus > 2>> - but it's surrounded by an oval of $analSkinDesc $skinDesc skin that occupies $his entire <<set _ass = either("asscrack", "buttcrack")>>_ass. + but it's surrounded by an oval of _analSkinDesc _skinDesc skin that occupies $his entire <<set _ass = either("asscrack", "buttcrack")>>_ass. <<elseif $activeSlave.analArea-$activeSlave.anus > 1>> - but it's surrounded by a big ring of $analSkinDesc $skinDesc skin. + but it's surrounded by a big ring of _analSkinDesc _skinDesc skin. <<elseif $activeSlave.analArea-$activeSlave.anus > 0>> - and it's surrounded by a cute <<set _ass = either("pucker", "ring", "rosebud")>>_ass of $skinDesc skin. + and it's surrounded by a cute <<set _ass = either("pucker", "ring", "rosebud")>>_ass of _skinDesc skin. <<else>> - and the $skinDesc skin around it is stretched smooth, since it's been deflowered only recently. + and the _skinDesc skin around it is stretched smooth, since it's been deflowered only recently. <</if>> <<elseif $activeSlave.anus == 2>> <<set _ass = either("anal opening", "anus", "asshole", "asspussy", "butthole")>> $His _ass is <<if $activeSlave.analArea-$activeSlave.anus > 1>>only <</if>><<set _ass = either("relaxed", "loose", "accommodating")>>_ass, <<if $activeSlave.analArea-$activeSlave.anus > 2>> - but it's surrounded by a massive oval of $analSkinDesc $skinDesc skin that runs from $his tailbone all the way down to the <<if $activeSlave.vagina > -1>>bottom of $his pussy<<else>>base of $his cock<</if>>. + but it's surrounded by a massive oval of _analSkinDesc _skinDesc skin that runs from $his tailbone all the way down to the <<if $activeSlave.vagina > -1>>bottom of $his pussy<<else>>base of $his cock<</if>>. <<elseif $activeSlave.analArea-$activeSlave.anus > 1>> - but it's surrounded by an oval of $analSkinDesc $skinDesc skin that occupies $his entire <<set _ass = either("asscrack", "buttcrack")>>_ass. + but it's surrounded by an oval of _analSkinDesc _skinDesc skin that occupies $his entire <<set _ass = either("asscrack", "buttcrack")>>_ass. <<elseif $activeSlave.analArea-$activeSlave.anus > 0>> - and it's surrounded by a big ring of $analSkinDesc $skinDesc skin. + and it's surrounded by a big ring of _analSkinDesc _skinDesc skin. <<else>> - and the $skinDesc skin around it is stretched smooth, suggesting it's getting used to being this way. + and the _skinDesc skin around it is stretched smooth, suggesting it's getting used to being this way. <</if>> <<elseif $activeSlave.anus == 3>> <<set _ass = either("anal opening", "anus", "asshole", "asspussy", "butthole")>> $His _ass is a <<set _ass = either("lewd", "loose", "relaxed", "welcoming")>>_ass slit, <<if $activeSlave.analArea-$activeSlave.anus > 1>> - and it's surrounded by a massive oval of $analSkinDesc $skinDesc skin that runs from $his tailbone all the way down to the <<if $activeSlave.vagina > -1>>bottom of $his pussy<<else>>base of $his cock<</if>>. + and it's surrounded by a massive oval of _analSkinDesc _skinDesc skin that runs from $his tailbone all the way down to the <<if $activeSlave.vagina > -1>>bottom of $his pussy<<else>>base of $his cock<</if>>. <<elseif $activeSlave.analArea-$activeSlave.anus > 0>> - and it's surrounded by an oval of $analSkinDesc $skinDesc skin that occupies $his entire <<set _ass = either("asscrack", "buttcrack")>>_ass. + and it's surrounded by an oval of _analSkinDesc _skinDesc skin that occupies $his entire <<set _ass = either("asscrack", "buttcrack")>>_ass. <<else>> - and the $skinDesc skin around it is stretched smooth, suggesting $he's getting used to having such a cock-hungry rear fuckhole. + and the _skinDesc skin around it is stretched smooth, suggesting $he's getting used to having such a cock-hungry rear fuckhole. <</if>> <<else>> <<set _ass = either("anal opening", "anal slit", "anus", "asshole", "asspussy", "butthole")>> $His _ass is a <<set _ass = either("loose", "open", "permanent", "relaxed")>>_ass gape, <<if $activeSlave.analArea-$activeSlave.anus > 0>> - and it's surrounded by a massive oval of $skinDesc skin that runs from $his tailbone all the way down to the <<if $activeSlave.vagina > -1>>bottom of $his pussy<<else>>base of $his cock<</if>>. + and it's surrounded by a massive oval of _skinDesc skin that runs from $his tailbone all the way down to the <<if $activeSlave.vagina > -1>>bottom of $his pussy<<else>>base of $his cock<</if>>. <<else>> - and the $skinDesc skin around it is stretched smooth, suggesting $he's only recently had $his ass ruined. + and the _skinDesc skin around it is stretched smooth, suggesting $he's only recently had $his ass ruined. <</if>> <</if>> @@ -4611,7 +4611,6 @@ $He has <<widget "BellyDescription">> -<<set $bellyAccessory = $activeSlave.bellyAccessory>> <<if $activeSlave.belly >= 30000>> <<if ($activeSlave.belly >= 400000+($activeSlave.muscles*2000) && $activeSlave.physicalAge >= 18)>> <<set _heavyBelly = 1>> @@ -15647,7 +15646,7 @@ $He has <</if>> /* closes show clothing */ <<if $activeSlave.fuckdoll == 0>> - <<if setup.fakeBellies.includes($bellyAccessory)>> + <<if setup.fakeBellies.includes($activeSlave.bellyAccessory)>> <<switch $activeSlave.bellyAccessory>> <<case "a huge empathy belly">> $He is wearing a carefully sculpted silicone belly modeled after a full-term pregnant woman carrying twins. diff --git a/src/utility/descriptionWidgetsPiercings.tw b/src/utility/descriptionWidgetsPiercings.tw index 91e83e21e8682b7fbfb53cfe8e40ff4e42a04d49..75f27373d8a8be60c4f47dc7ee7da7b0efcbdd57 100644 --- a/src/utility/descriptionWidgetsPiercings.tw +++ b/src/utility/descriptionWidgetsPiercings.tw @@ -239,7 +239,7 @@ <<widget "navelPiercingDescription">> <<if $activeSlave.fuckdoll == 0>> - <<if setup.fakeBellies.includes($bellyAccessory)>> + <<if setup.fakeBellies.includes($activeSlave.bellyAccessory)>> <<if $activeSlave.navelPiercing == 1>> $His fake navel bears a simple stud. <<elseif $activeSlave.navelPiercing == 2>>