diff --git a/Changelog.txt b/Changelog.txt index 986c9fcc64406364fc60d62e49bfcac74551d003..c6f0b45dff890a690e86f2d198209ffffe679460 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -2637,7 +2637,7 @@ Pregmod 387 -tweaked saGuardsYou to actually count facility heads the BG has trained when it comes to counting successors - -your BG nows considers servants and your harem in her count + -your BG now considers servants and your harem in her count -a race now no longer can be both superior and inferior -slaves can now die of age as young as 50 should they be in bad condition, conversely, healthy slaves live longer -reordered full royal court enslavement to circumvent a possible ghost in the machine situation diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js index cc0f366c19880557c60a7640e5ceafa297b9f0bc..96b6eb3eea9a36e2ae6e8bdb1de2e9848a52e8df 100644 --- a/js/003-data/gameVariableData.js +++ b/js/003-data/gameVariableData.js @@ -379,44 +379,6 @@ App.Data.resetOnNGPlus = { 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, - lowerRequirements: 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, @@ -435,7 +397,6 @@ App.Data.resetOnNGPlus = { weapManu: 0, weapProductivity: 1, weapLab: 1, - baseUpgradeTime: 10, weapUpgrades: [], currentUpgrade: {}, droneUpgrades: {}, @@ -533,12 +494,17 @@ App.Data.resetOnNGPlus = { mercUnits: [], /* SFanon additions */ - SFSupportLevel: 0, SFGear: 0, SavedLeader: 0, SavedSFI: 0, sectionInFirebase: 0, + militiaFounded: 0, + recruitVolunteers: 0, + conscription: 0, + militaryService: 0, + militarizedSociety: 0, + /* base vars */ SecExp: {}, PCvictories: 0, @@ -1148,6 +1114,7 @@ App.Data.resetOnNGPlus = { hostageAnnounced: 0, hostageRescued: 0, hostageGiveIn: 0, + hostageWife: 0, rivalSet: 0, rivalryFS: 0, rivalryFSAdopted: 0, @@ -1467,7 +1434,16 @@ App.Data.resetOnNGPlus = { ("...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..."), + ("...claiming that even tourists to the Free Cities were at risk of sexual enslavement..."), ], + + murderAttemptWeek: 80, + illegalDeals: { + military: 0, trade: 0, /* { week: number, company: string } */ + menialDrug: 0, + slave: 0 /* { type: string, company: string */ + }, + tempEventToggle: 0, }; App.Data.ignoreGameStateVariables = [ diff --git a/js/003-data/miscData.js b/js/003-data/miscData.js index 09ae3b3e51ce252dad576fd62e02c3f581fbdafa..53940a11848e2f1907ce608b94dedb0f5bfba076 100644 --- a/js/003-data/miscData.js +++ b/js/003-data/miscData.js @@ -1940,228 +1940,228 @@ App.Data.misc = { name: "Maternity lingerie", value: "attractive lingerie for a pregnant woman", fs: "FSRepopulationFocus", - get rs() { return V.boughtItem.clothing.maternityLingerie; } + get rs() { return V.boughtItem.clothing.maternityLingerie === 1; } }, { name: "Bunny outfit", value: "a bunny outfit", fs: "FSGenderFundamentalist", - get rs() { return V.boughtItem.clothing.bunny; } + get rs() { return V.boughtItem.clothing.bunny === 1; } }, { name: "Body oil", value: "body oil", fs: "FSPhysicalIdealist", - get rs() { return V.boughtItem.clothing.oil; } + get rs() { return V.boughtItem.clothing.oil === 1; } }, { name: "Chattel habit", value: "a chattel habit", fs: "FSChattelReligionist", - get rs() { return V.boughtItem.clothing.habit; } + get rs() { return V.boughtItem.clothing.habit === 1; } }, { name: "Conservative clothing", value: "conservative clothing", fs: "FSPaternalist", - get rs() { return V.boughtItem.conservative; } + get rs() { return V.boughtItem.clothing.conservative === 1; } }, { name: "Harem gauze", value: "harem gauze", fs: "FSArabianRevivalist", - get rs() { return V.boughtItem.harem; } + get rs() { return V.boughtItem.clothing.harem === 1; } }, { name: "Huipil", value: "a huipil", fs: "FSAztecRevivalist", - get rs() { return V.boughtItem.huipil; } + get rs() { return V.boughtItem.clothing.huipil === 1; } }, { name: "Kimono", value: "a kimono", fs: "FSEdoRevivalist", - get rs() { return (V.boughtItem.kimono || V.continent === "Japan"); } + get rs() { return (V.boughtItem.clothing.kimono === 1 || V.continent === "Japan"); } }, { name: "Maternity dress", value: "a maternity dress", fs: "FSRepopulationFocus", - get rs() { return V.boughtItem.maternityDress; } + get rs() { return V.boughtItem.clothing.maternityDress === 1; } }, { name: "Qipao (slutty)", value: "a slutty qipao", fs: "FSChineseRevivalist", - get rs() { return V.boughtItem.qipao; } + get rs() { return V.boughtItem.clothing.qipao === 1; } }, { name: "Qipao (long)", value: "a long qipao", fs: "FSChineseRevivalist", - get rs() { return V.boughtItem.clothing.cultural; } + get rs() { return V.boughtItem.clothing.cultural === 1; } }, { name: "Stretch pants and a crop-top", value: "stretch pants and a crop-top", fs: "FSHedonisticDecadence", - get rs() { return V.boughtItem.clothing.lazyClothes; } + get rs() { return V.boughtItem.clothing.lazyClothes === 1; } }, { name: "Toga", value: "a toga", fs: "FSRomanRevivalist", - get rs() { return V.boughtItem.toga; } + get rs() { return V.boughtItem.clothing.toga === 1; } }, { name: "Western clothing", value: "Western clothing", fs: "FSPastoralist", - get rs() { return V.boughtItem.clothing.western; } + get rs() { return V.boughtItem.clothing.western === 1; } }, { name: "Courtesan dress", value: "a courtesan dress", fs: "FSSlaveProfessionalism", - get rs() { return V.boughtItem.clothing.courtesan; } + get rs() { return V.boughtItem.clothing.courtesan === 1; } }, { name: "Bimbo outfit", value: "a bimbo outfit", fs: "FSIntellectualDependency", - get rs() { return V.boughtItem.clothing.bimbo; } + get rs() { return V.boughtItem.clothing.bimbo === 1; } }, { name: "Petite admi outfit", value: "petite admi outfit", fs: "FSPetiteAdmiration", - get rs() { return V.boughtItem.clothing.petite; } - }, - {name: "Battlearmor", value: "battlearmor", get rs() { return V.boughtItem.clothing.military; }}, - {name: "Military uniform", value: "a military uniform", get rs() { return V.boughtItem.clothing.military; }}, - {name: "Red Army uniform", value: "a red army uniform", get rs() { return V.boughtItem.clothing.military; }}, - {name: "Battledress", value: "battledress", get rs() { return V.boughtItem.clothing.military; }}, - {name: "Biyelgee costume", value: "a biyelgee costume", get rs() { return V.boughtItem.clothing.cultural; }}, - {name: "Dirndl", value: "a dirndl", get rs() { return V.boughtItem.clothing.cultural; }}, - {name: "Lederhosen", value: "lederhosen", get rs() { return V.boughtItem.clothing.cultural; }}, - {name: "Mounty outfit", value: "a mounty outfit", get rs() { return V.boughtItem.clothing.cultural; }}, - {name: "Hanbok", value: "a hanbok", get rs() { return V.boughtItem.clothing.cultural; }}, + get rs() { return V.boughtItem.clothing.petite === 1; } + }, + {name: "Battlearmor", value: "battlearmor", get rs() { return V.boughtItem.clothing.military === 1; }}, + {name: "Military uniform", value: "a military uniform", get rs() { return V.boughtItem.clothing.military === 1; }}, + {name: "Red Army uniform", value: "a red army uniform", get rs() { return V.boughtItem.clothing.military === 1; }}, + {name: "Battledress", value: "battledress", get rs() { return V.boughtItem.clothing.military === 1; }}, + {name: "Biyelgee costume", value: "a biyelgee costume", get rs() { return V.boughtItem.clothing.cultural === 1; }}, + {name: "Dirndl", value: "a dirndl", get rs() { return V.boughtItem.clothing.cultural === 1; }}, + {name: "Lederhosen", value: "lederhosen", get rs() { return V.boughtItem.clothing.cultural === 1; }}, + {name: "Mounty outfit", value: "a mounty outfit", get rs() { return V.boughtItem.clothing.cultural === 1; }}, + {name: "Hanbok", value: "a hanbok", get rs() { return V.boughtItem.clothing.cultural === 1; }}, { name: "Burqa", value: "a burqa", - get rs() { return V.boughtItem.clothing.middleEastern || V.continent === "the Middle East"; } + get rs() { return V.boughtItem.clothing.middleEastern === 1 || V.continent === "the Middle East"; } }, { name: "Niqab and abaya", value: "a niqab and abaya", - get rs() { return V.boughtItem.clothing.middleEastern || V.continent === "the Middle East"; } + get rs() { return V.boughtItem.clothing.middleEastern === 1 || V.continent === "the Middle East"; } }, { name: "Hijab and blouse", value: "a hijab and blouse", - get rs() { return V.boughtItem.clothing.conservative || V.continent === "the Middle East"; } + get rs() { return (V.boughtItem.clothing.conservative || V.continent === "the Middle East"); } }, { name: "Burkini", value: "a burkini", - get rs() { return V.boughtItem.clothing.swimwear && (V.boughtItem.clothing.swimwear || V.continent === "the Middle East"); } + get rs() { return V.boughtItem.clothing.swimwear === 1 && (V.boughtItem.clothing.swimwear || V.continent === "the Middle East"); } }, - {name: "Santa dress", value: "a Santa dress", get rs() { return V.boughtItem.clothing.costume; }}, + {name: "Santa dress", value: "a Santa dress", get rs() { return V.boughtItem.clothing.costume === 1; }}, - {name: "Klan robe", value: "a klan robe", get rs() { return V.boughtItem.clothing.pol; }}, - {name: "Slutty klan robe", value: "a slutty klan robe", get rs() { return V.boughtItem.clothing.pol; }}, - {name: "Schutzstaffel uniform", value: "a schutzstaffel uniform", get rs() { return V.boughtItem.clothing.pol; }}, - {name: "Slutty schutzstaffel uniform", value: "a slutty schutzstaffel uniform", get rs() { return V.boughtItem.clothing.pol; }}, + {name: "Klan robe", value: "a klan robe", get rs() { return V.boughtItem.clothing.pol === 1; }}, + {name: "Slutty klan robe", value: "a slutty klan robe", get rs() { return V.boughtItem.clothing.pol === 1; }}, + {name: "Schutzstaffel uniform", value: "a schutzstaffel uniform", get rs() { return V.boughtItem.clothing.pol === 1; }}, + {name: "Slutty schutzstaffel uniform", value: "a slutty schutzstaffel uniform", get rs() { return V.boughtItem.clothing.pol === 1; }}, - {name: "Nice business attire", value: "nice business attire", get rs() { return V.boughtItem.clothing.career; }}, - {name: "Nurse (nice)", value: "a nice nurse outfit", get rs() { return V.boughtItem.clothing.career; }}, - {name: "Police uniform", value: "a police uniform", get rs() { return V.boughtItem.clothing.career; }}, + {name: "Nice business attire", value: "nice business attire", get rs() { return V.boughtItem.clothing.career === 1; }}, + {name: "Nurse (nice)", value: "a nice nurse outfit", get rs() { return V.boughtItem.clothing.career === 1; }}, + {name: "Police uniform", value: "a police uniform", get rs() { return V.boughtItem.clothing.career === 1; }}, { name: "Maid (nice)", value: "a nice maid outfit", - get rs() { return V.boughtItem.clothing.career || V.PC.career === "servant"; } - }, - - {name: "Ballgown", value: "a ball gown", get rs() { return V.boughtItem.clothing.dresses; }}, - {name: "Gothic lolita dress", value: "a gothic lolita dress", get rs() { return V.boughtItem.clothing.dresses; }}, - - {name: "Cybersuit", value: "a cybersuit", get rs() { return V.boughtItem.clothing.bodysuits; }}, - {name: "Latex catsuit", value: "a latex catsuit", get rs() { return V.boughtItem.clothing.bodysuits; }}, - - {name: "Button-up shirt and panties", value: "a button-up shirt and panties", get rs() { return V.boughtItem.clothing.casual; }}, - {name: "Button-up shirt", value: "a button-up shirt", get rs() { return V.boughtItem.clothing.casual; }}, - {name: "Cutoffs", value: "cutoffs", get rs() { return V.boughtItem.clothing.casual; }}, - {name: "Jeans", value: "jeans", get rs() { return V.boughtItem.clothing.casual; }}, - {name: "Leather pants and a tube top", value: "leather pants and a tube top", get rs() { return V.boughtItem.clothing.casual; }}, - {name: "Leather pants", value: "leather pants", get rs() { return V.boughtItem.clothing.casual; }}, - {name: "Oversized t-shirt", value: "an oversized t-shirt", get rs() { return V.boughtItem.clothing.casual; }}, - {name: "Sweater and cutoffs", value: "a sweater and cutoffs", get rs() { return V.boughtItem.clothing.casual; }}, - {name: "Sweater and panties", value: "a sweater and panties", get rs() { return V.boughtItem.clothing.casual; }}, - {name: "Sweater", value: "a sweater", get rs() { return V.boughtItem.clothing.casual; }}, - {name: "T-shirt and jeans", value: "a t-shirt and jeans", get rs() { return V.boughtItem.clothing.casual; }}, - {name: "T-shirt and panties", value: "a t-shirt and panties", get rs() { return V.boughtItem.clothing.casual; }}, - {name: "T-shirt", value: "a t-shirt", get rs() { return V.boughtItem.clothing.casual; }}, - {name: "Tank-top and panties", value: "a tank-top and panties", get rs() { return V.boughtItem.clothing.casual; }}, - {name: "Tank-top", value: "a tank-top", get rs() { return V.boughtItem.clothing.casual; }}, - {name: "Tube top", value: "a tube top", get rs() { return V.boughtItem.clothing.casual; }}, - - {name: "Boyshorts", value: "boyshorts", get rs() { return V.boughtItem.clothing.underwear; }}, - {name: "Bra", value: "a bra", get rs() { return V.boughtItem.clothing.underwear; }}, - {name: "Kitty lingerie", value: "kitty lingerie", get rs() { return V.boughtItem.clothing.underwear; }}, - {name: "Panties and pasties", value: "panties and pasties", get rs() { return V.boughtItem.clothing.underwear; }}, - {name: "Skimpy loincloth", value: "a skimpy loincloth", get rs() { return V.boughtItem.clothing.underwear; }}, - {name: "Thong", value: "a thong", get rs() { return V.boughtItem.clothing.underwear; }}, - {name: "Pasties", value: "pasties", get rs() { return V.boughtItem.clothing.underwear; }}, + get rs() { return V.boughtItem.clothing.career === 1 || V.PC.career === "servant"; } + }, + + {name: "Ballgown", value: "a ball gown", get rs() { return V.boughtItem.clothing.dresses === 1; }}, + {name: "Gothic lolita dress", value: "a gothic lolita dress", get rs() { return V.boughtItem.clothing.dresses === 1; }}, + + {name: "Cybersuit", value: "a cybersuit", get rs() { return V.boughtItem.clothing.bodysuits === 1; }}, + {name: "Latex catsuit", value: "a latex catsuit", get rs() { return V.boughtItem.clothing.bodysuits === 1; }}, + + {name: "Button-up shirt and panties", value: "a button-up shirt and panties", get rs() { return V.boughtItem.clothing.casual === 1; }}, + {name: "Button-up shirt", value: "a button-up shirt", get rs() { return V.boughtItem.clothing.casual === 1; }}, + {name: "Cutoffs", value: "cutoffs", get rs() { return V.boughtItem.clothing.casual === 1; }}, + {name: "Jeans", value: "jeans", get rs() { return V.boughtItem.clothing.casual === 1; }}, + {name: "Leather pants and a tube top", value: "leather pants and a tube top", get rs() { return V.boughtItem.clothing.casual === 1; }}, + {name: "Leather pants", value: "leather pants", get rs() { return V.boughtItem.clothing.casual === 1; }}, + {name: "Oversized t-shirt", value: "an oversized t-shirt", get rs() { return V.boughtItem.clothing.casual === 1; }}, + {name: "Sweater and cutoffs", value: "a sweater and cutoffs", get rs() { return V.boughtItem.clothing.casual === 1; }}, + {name: "Sweater and panties", value: "a sweater and panties", get rs() { return V.boughtItem.clothing.casual === 1; }}, + {name: "Sweater", value: "a sweater", get rs() { return V.boughtItem.clothing.casual === 1; }}, + {name: "T-shirt and jeans", value: "a t-shirt and jeans", get rs() { return V.boughtItem.clothing.casual === 1; }}, + {name: "T-shirt and panties", value: "a t-shirt and panties", get rs() { return V.boughtItem.clothing.casual === 1; }}, + {name: "T-shirt", value: "a t-shirt", get rs() { return V.boughtItem.clothing.casual === 1; }}, + {name: "Tank-top and panties", value: "a tank-top and panties", get rs() { return V.boughtItem.clothing.casual === 1; }}, + {name: "Tank-top", value: "a tank-top", get rs() { return V.boughtItem.clothing.casual === 1; }}, + {name: "Tube top", value: "a tube top", get rs() { return V.boughtItem.clothing.casual === 1; }}, + + {name: "Boyshorts", value: "boyshorts", get rs() { return V.boughtItem.clothing.underwear === 1; }}, + {name: "Bra", value: "a bra", get rs() { return V.boughtItem.clothing.underwear === 1; }}, + {name: "Kitty lingerie", value: "kitty lingerie", get rs() { return V.boughtItem.clothing.underwear === 1; }}, + {name: "Panties and pasties", value: "panties and pasties", get rs() { return V.boughtItem.clothing.underwear === 1; }}, + {name: "Skimpy loincloth", value: "a skimpy loincloth", get rs() { return V.boughtItem.clothing.underwear === 1; }}, + {name: "Thong", value: "a thong", get rs() { return V.boughtItem.clothing.underwear === 1; }}, + {name: "Pasties", value: "pasties", get rs() { return V.boughtItem.clothing.underwear === 1; }}, { name: "Leather pants and pasties", value: "leather pants and pasties", - get rs() { return V.boughtItem.clothing.underwear && V.boughtItem.clothing.casual; } + get rs() { return V.boughtItem.clothing.underwear === 1 && V.boughtItem.clothing.casual; } }, { name: "T-shirt and thong", value: "a t-shirt and thong", - get rs() { return V.boughtItem.clothing.underwear && V.boughtItem.clothing.casual; } + get rs() { return V.boughtItem.clothing.underwear === 1 && V.boughtItem.clothing.casual; } }, { name: "Tube top and thong", value: "a tube top and thong", - get rs() { return V.boughtItem.clothing.underwear && V.boughtItem.clothing.casual; } + get rs() { return V.boughtItem.clothing.underwear === 1 && V.boughtItem.clothing.casual; } }, { name: "Oversized t-shirt and boyshorts", value: "an oversized t-shirt and boyshorts", - get rs() { return V.boughtItem.clothing.underwear && V.boughtItem.clothing.casual; } + get rs() { return V.boughtItem.clothing.underwear === 1 && V.boughtItem.clothing.casual; } }, - {name: "Sport shorts and a sports bra", value: "sport shorts and a sports bra", get rs() { return V.boughtItem.clothing.sports; }}, - {name: "Sport shorts", value: "sport shorts", get rs() { return V.boughtItem.clothing.sports; }}, - {name: "Sports bra", value: "a sports bra", get rs() { return V.boughtItem.clothing.sports; }}, + {name: "Sport shorts and a sports bra", value: "sport shorts and a sports bra", get rs() { return V.boughtItem.clothing.sports === 1; }}, + {name: "Sport shorts", value: "sport shorts", get rs() { return V.boughtItem.clothing.sports === 1; }}, + {name: "Sports bra", value: "a sports bra", get rs() { return V.boughtItem.clothing.sports === 1; }}, { name: "Sport shorts and a t-shirt", value: "sport shorts and a t-shirt", - get rs() { return V.boughtItem.clothing.sports && V.boughtItem.clothing.casual; } + get rs() { return V.boughtItem.clothing.sports === 1 && V.boughtItem.clothing.casual; } }, - {name: "Pony outfit (nice)", value: "a nice pony outfit", get rs() { return V.boughtItem.clothing.pony; }}, - {name: "Pony outfit (slutty)", value: "a slutty pony outfit", get rs() { return V.boughtItem.clothing.pony; }}, + {name: "Pony outfit (nice)", value: "a nice pony outfit", get rs() { return V.boughtItem.clothing.pony === 1; }}, + {name: "Pony outfit (slutty)", value: "a slutty pony outfit", get rs() { return V.boughtItem.clothing.pony === 1; }}, - {name: "Monokini", value: "a monokini", get rs() { return V.boughtItem.clothing.swimwear; }}, - {name: "One-piece swimsuit", value: "a one-piece swimsuit", get rs() { return V.boughtItem.clothing.swimwear; }}, + {name: "Monokini", value: "a monokini", get rs() { return V.boughtItem.clothing.swimwear === 1; }}, + {name: "One-piece swimsuit", value: "a one-piece swimsuit", get rs() { return V.boughtItem.clothing.swimwear === 1; }}, { name: "Striped bra", value: "a striped bra", - get rs() { return V.boughtItem.clothing.pantsu || V.continent === "Japan"; } + get rs() { return V.boughtItem.clothing.pantsu === 1 || V.continent === "Japan"; } }, { name: "Striped panties", value: "striped panties", - get rs() { return V.boughtItem.clothing.pantsu || V.continent === "Japan"; } + get rs() { return V.boughtItem.clothing.pantsu === 1 || V.continent === "Japan"; } }, { name: "Striped underwear", value: "striped underwear", - get rs() { return V.boughtItem.clothing.pantsu || V.continent === "Japan"; } + get rs() { return V.boughtItem.clothing.pantsu === 1 || V.continent === "Japan"; } }, // "Normal" things: @@ -2197,7 +2197,7 @@ App.Data.misc = { name: "Chains", value: "chains", fs: "FSDegradationist", - get rs() { return V.boughtItem.clothing.chains; } + get rs() { return V.boughtItem.clothing.chains === 1; } }, {name: "Go naked", value: "no clothing"}, {name: "Penitent nun", value: "a penitent nuns habit"}, @@ -2219,27 +2219,27 @@ App.Data.misc = { name: "Bowtie collar", value: "bowtie", fs: "FSGenderFundamentalist", - get rs() { return V.boughtItem.clothing.bunny; } + get rs() { return V.boughtItem.clothing.bunny === 1; } }, { name: "Neck tie", value: "neck tie", fs: "FSPaternalist", - get rs() { return V.boughtItem.clothing.conservative; } + get rs() { return V.boughtItem.clothing.conservative === 1; } }, { name: "Ancient Egyptian", value: "ancient Egyptian", fs: "FSEgyptianRevivalist", - get rs() { return V.boughtItem.clothing.egypt; } + get rs() { return V.boughtItem.clothing.egypt === 1; } }, ], harshCollars: [ {name: "Tight steel", value: "tight steel"}, - {name: "Cruel retirement counter", value: "cruel retirement counter", get rs() { return V.seeAge; }}, + {name: "Cruel retirement counter", value: "cruel retirement counter", get rs() { return V.seeAge === 1; }}, {name: "Uncomfortable leather", value: "uncomfortable leather"}, - {name: "Pregnancy biometrics", value: "preg biometrics", get rs() { return V.seeAge; }}, + {name: "Pregnancy biometrics", value: "preg biometrics", get rs() { return V.seeAge === 1; }}, {name: "Shock punishment", value: "shock punishment"}, {name: "Neck corset", value: "neck corset"}, ], @@ -2256,7 +2256,7 @@ App.Data.misc = { { name: "Massive dildo gag", value: "massive dildo gag", - get rs() { return V.boughtItem.toys.gags; } + get rs() { return V.boughtItem.toys.gags === 1; } }, {name: "Dildo gag", value: "dildo gag"}, ], @@ -2272,19 +2272,19 @@ App.Data.misc = { name: "Platforms", value: "platform shoes", fs: "FSStatuesqueGlorification", - get rs() { return (V.boughtItem.shoes.heels); } + get rs() { return (V.boughtItem.shoes.heels === 1); } }, { name: "Platform heels", value: "platform heels", fs: "FSStatuesqueGlorification", - get rs() { return (V.boughtItem.shoes.heels); } + get rs() { return (V.boughtItem.shoes.heels === 1); } }, { name: "Painfully extreme platform heels", value: "extreme platform heels", fs: "FSStatuesqueGlorification", - get rs() { return (V.boughtItem.shoes.heels); } + get rs() { return (V.boughtItem.shoes.heels === 1); } } ], @@ -2297,25 +2297,25 @@ App.Data.misc = { name: "1st Trimester belly", value: "a small empathy belly", fs: "FSRepopulationFocus", - get rs() { return V.boughtItem.clothing.belly; } + get rs() { return V.boughtItem.clothing.belly === 1; } }, { name: "2nd Trimester belly", value: "a medium empathy belly", fs: "FSRepopulationFocus", - get rs() { return V.boughtItem.clothing.belly; } + get rs() { return V.boughtItem.clothing.belly === 1; } }, { name: "3rd Trimester belly", value: "a large empathy belly", fs: "FSRepopulationFocus", - get rs() { return V.boughtItem.clothing.belly; } + get rs() { return V.boughtItem.clothing.belly === 1; } }, { name: "3rd Trimester twins belly", value: "a huge empathy belly", fs: "FSRepopulationFocus", - get rs() { return V.boughtItem.clothing.belly; } + get rs() { return V.boughtItem.clothing.belly === 1; } } ], @@ -2330,7 +2330,7 @@ App.Data.misc = { { name: "Smart bullet vibrator", value: "smart bullet vibrator", - get rs() { return V.boughtItem.toys.smartVibes; } + get rs() { return V.boughtItem.toys.smartVibes === 1; } }, { name: "Dildo", @@ -2339,7 +2339,7 @@ App.Data.misc = { { name: "Long dildo", value: "long dildo", - get rs() { return V.boughtItem.toys.dildos; } + get rs() { return V.boughtItem.toys.dildos === 1; } }, { name: "Large dildo", @@ -2348,16 +2348,16 @@ App.Data.misc = { { name: "Long, large dildo", value: "long, large dildo", - get rs() { return V.boughtItem.toys.dildos; } + get rs() { return V.boughtItem.toys.dildos === 1; } }, { name: "Huge dildo", - get rs() { return V.boughtItem.toys.dildos; } + get rs() { return V.boughtItem.toys.dildos === 1; } }, { name: "Long, huge dildo", value: "long, huge dildo", - get rs() { return V.boughtItem.toys.dildos; } + get rs() { return V.boughtItem.toys.dildos === 1; } } ], @@ -2378,7 +2378,7 @@ App.Data.misc = { { name: "Smart bullet vibrator", value: "smart bullet vibrator", - get rs() { return V.boughtItem.toys.smartVibes; } + get rs() { return V.boughtItem.toys.smartVibes === 1; } } ], @@ -2393,7 +2393,7 @@ App.Data.misc = { { name: "Long plug", value: "long plug", - get rs() { return V.boughtItem.toys.buttPlugs; } + get rs() { return V.boughtItem.toys.buttPlugs === 1; } }, { name: "Large plug", @@ -2402,7 +2402,7 @@ App.Data.misc = { { name: "Long, large plug", value: "long, large plug", - get rs() { return V.boughtItem.toys.buttPlugs; } + get rs() { return V.boughtItem.toys.buttPlugs === 1; } }, { name: "Huge plug", @@ -2411,16 +2411,16 @@ App.Data.misc = { { name: "Long, huge plug", value: "long, huge plug", - get rs() { return V.boughtItem.toys.buttPlugs; } + get rs() { return V.boughtItem.toys.buttPlugs === 1; } } ], buttplugAttachments: [ {name: "None", value: "none"}, - {name: "Tail", value: "tail", get rs() { return V.boughtItem.toys.buttPlugTails; }}, - {name: "Fox tail", value: "fox tail", get rs() { return V.boughtItem.toys.buttPlugTails; }}, - {name: "Cat tail", value: "cat tail", get rs() { return V.boughtItem.toys.buttPlugTails; }}, - {name: "Cow tail", value: "cow tail", get rs() { return V.boughtItem.toys.buttPlugTails; }} + {name: "Tail", value: "tail", get rs() { return V.boughtItem.toys.buttPlugTails === 1; }}, + {name: "Fox tail", value: "fox tail", get rs() { return V.boughtItem.toys.buttPlugTails === 1; }}, + {name: "Cat tail", value: "cat tail", get rs() { return V.boughtItem.toys.buttPlugTails === 1; }}, + {name: "Cow tail", value: "cow tail", get rs() { return V.boughtItem.toys.buttPlugTails === 1; }} ], chastityDevices: [ diff --git a/js/003-data/slaveMods.js b/js/003-data/slaveMods.js index b5d8e78164b5f2378e5cb699a66c5dbab78dfc3a..fa46443c69a254b80d419702babfd509f527eb31 100644 --- a/js/003-data/slaveMods.js +++ b/js/003-data/slaveMods.js @@ -385,14 +385,12 @@ App.Medicine.Modification.hairStyles = { { title: "Apply hair growth stimulating treatment", hLength: 0, - requirements: function(slave) { return (slave.hLength === 1); } + requirements: slave => !slave.bald }, { title: "Apply extensions", onApplication: function(slave) { slave.hLength += 10; }, - requirements: function(slave) { return (!slave.hLength === 1 && slave.hLength < 150); } + requirements: slave => !slave.bald && slave.hLength < 150 }, ] }; - - diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js index 95cd3cd2c4a875207b4b8766fddecf6c242b3418..ef7d1d27de844046fdaeb7d134a578e600e49ca3 100644 --- a/src/002-config/fc-version.js +++ b/src/002-config/fc-version.js @@ -2,5 +2,5 @@ App.Version = { base: "0.10.7.1", // The vanilla version the mod is based off of, this should never be changed. pmod: "3.6.2", commitHash: null, - release: 1083 + release: 1085 }; diff --git a/src/002-config/mousetrapConfig.js b/src/002-config/mousetrapConfig.js index c4cb6d42a4f62d533527eed93af1a96652318c55..6d67333edcc39aac898a9a580d3738981d230c3d 100644 --- a/src/002-config/mousetrapConfig.js +++ b/src/002-config/mousetrapConfig.js @@ -297,7 +297,7 @@ App.UI.Hotkeys.add("nextChild", { App.UI.Hotkeys.add("walkpast", { callback: function() { $("#walkpast a.macro-link").trigger("click"); - }, combinations: ["f"] + }, combinations: [] }); App.UI.Hotkeys.add("HG Select", { callback: function() { diff --git a/src/Mods/SecExp/attackOptions.tw b/src/Mods/SecExp/attackOptions.tw index 747dc74f7dbb43fff01f2c86ebb2872dfb9666d8..834fe91da6c6413dfc2137cde09d5ba4cc7a4440 100644 --- a/src/Mods/SecExp/attackOptions.tw +++ b/src/Mods/SecExp/attackOptions.tw @@ -11,12 +11,7 @@ <<includeDOM _options.render()>> <br> - -<<if $majorBattle == 0>> - <strong>Attack Imminent</strong> -<<else>> - <strong>Major Attack Imminent</strong> -<</if>> +<strong> <<if $majorBattle == 1>>Major<</if>> Attack Imminent</strong> <hr> <<if $majorBattle == 0>> <<if $battlesCount > 0>> @@ -28,8 +23,7 @@ <<else>> Some of your citizens saw the disorganized horde of raiders coming towards the city and quickly reported it. To such jackals your arcology surely looks like an appetizing morsel. <</if>> - <br> - Raiders are roaming gangs of bandits, preying on the vulnerable supply lines of Free Cities and old world nations. They are rarely equipped with decent armaments and even more rarely have any formal military training, but they make up for that with high mobility and numbers. + <br>Raiders are roaming gangs of bandits, preying on the vulnerable supply lines of Free Cities and old world nations. They are rarely equipped with decent armaments and even more rarely have any formal military training, but they make up for that with high mobility and numbers. <<elseif $attackType == "free city">> <<if App.SecExp.battle.recon() >= 1>> A menacing column of slavers and hired mercenaries is coming to your city. Another free city is ready to use their best tools to hit a dangerous competitor where it hurts. @@ -37,8 +31,7 @@ <<else>> Some of your citizens saw the menacing column of slavers and hired mercenaries and rushed to your office to bring the grim news. Another free city is ready to use their best tools to bring down a dangerous competitor. <</if>> - <br> - Free City expeditions are usually composed of mercenaries hired to take down sensible supplies or infrastructure in order to damage the enemies of their contractor. They have on average good equipment and training, together with decent mobility, making them a formidable force. Their biggest weakness however is their relatively low numbers. + <br>Free City expeditions are usually composed of mercenaries hired to take down sensible supplies or infrastructure in order to damage the enemies of their contractor. They have on average good equipment and training, together with decent mobility, making them a formidable force. Their biggest weakness however is their relatively low numbers. <<elseif $attackType == "freedom fighters">> <<if App.SecExp.battle.recon() >= 1>> A dangerous looking army of guerrillas is gathering just outside the arcology. Fanatics and idealists armed with dead men's words and hope, set on erasing your fledgling empire. @@ -46,8 +39,7 @@ <<else>> Some of your citizens saw the dangerous looking army of guerrillas is gathering just outside the arcology. Fanatics and idealists armed with dead men's words and hope, set on erasing your fledgling empire. <</if>> - <br> - Freedom Fighters are groups of individuals fighting to rid the planet of "evils" such as the Free Cities and their way of life. Lacking the strength to assault one directly they fight guerrilla style slowly starving to death their enemies. They are rarely well equipped, but with good training and mobility they are not a threat that can be taken lightly. + <br>Freedom Fighters are groups of individuals fighting to rid the planet of "evils" such as the Free Cities and their way of life. Lacking the strength to assault one directly they fight guerrilla style slowly starving to death their enemies. They are rarely well equipped, but with good training and mobility they are not a threat that can be taken lightly. <<elseif $attackType == "old world">> <<if App.SecExp.battle.recon() >= 1>> A disciplined yet dusty, scruffy old world army is approaching the confines of your arcology. There's nothing better than a good war to unite the electorate and your arcology is just the perfect target. @@ -55,8 +47,7 @@ <<else>> Some of your citizens saw the disciplined yet dusty, scruffy old world army is approaching the confines of your arcology. There's nothing better than a good war to unite the electorate and your arcology is just the perfect target. <</if>> - <br> - Old world expeditions are usually sent to secure resources and trade routes for their nation or, more often, to provide their citizens with a bogeyman to be scared of. They are usually decently equipped and trained, which together with their generous numbers make them a tough nut to crack. However, they often lack in mobility. + <br>Old world expeditions are usually sent to secure resources and trade routes for their nation or, more often, to provide their citizens with a bogeyman to be scared of. They are usually decently equipped and trained, which together with their generous numbers make them a tough nut to crack. However, they often lack in mobility. <</if>> <<else>> Your assistant interrupted your rest to bring the grim news. You quickly rush to your console, where you can see one of the convoys supplying your arcology has been attacked and looted. It seems a group of desperate looking bandits decided it was a good idea to steal from you. @@ -67,8 +58,6 @@ The ominous message dominates the screens of your office, and <<print $assistant.name>> quickly gathers all information available to prepare for the major battle ahead. <<else>> Your assistant interrupted your rest to bring the grim news. You quickly rush to your console, where you can see the satellite images coming in of the force about to crash against your arcology. It's not the first time your armies fought for the survival of your empire, but this time it seems it will be a fight for life or death. - <br> - <br> <</if>> <<if $attackType == "raiders">> <<if App.SecExp.battle.recon() >= 1>> @@ -77,8 +66,7 @@ <<else>> Some of your citizens saw the massive, disorganized horde of raiders coming towards the city and quickly reported it. It seems a warlord of the wastelands amassed enough men to try and obtain a slice of territory of his own; if he's not defeated there won't be a tomorrow for the arcology. <</if>> - <br> - Raiders are roaming gangs of bandits, preying on the vulnerable supply lines of Free Cities and old world nations. They are rarely equipped with decent armaments and even more rarely have any formal military training, but they make up for that with high mobility and numbers. + <br>Raiders are roaming gangs of bandits, preying on the vulnerable supply lines of Free Cities and old world nations. They are rarely equipped with decent armaments and even more rarely have any formal military training, but they make up for that with high mobility and numbers. <<elseif $attackType == "free city">> <<if App.SecExp.battle.recon() >= 1>> A massive, menacing column of slavers and hired mercenaries is coming to your city. The quantity of money invested in this assault is staggering; it seems you made some very powerful enemies. If they're not defeated your story will end this day. @@ -86,8 +74,7 @@ <<else>> Some of your citizens saw the massive, menacing column of slavers and hired mercenaries and rushed to your office to bring the grim news. The quantity of money invested in this assault is staggering; it seems you made some very powerful enemies. If they're not defeated your story will end this day. <</if>> - <br> - Free City expeditions are usually composed of mercenaries hired to take down sensible supplies or infrastructure in order to damage the enemies of their contractor. They have, on average, good equipment and training, together with decent mobility, making them a formidable force. Their biggest weakness, however, is their relatively low numbers. + <br>Free City expeditions are usually composed of mercenaries hired to take down sensible supplies or infrastructure in order to damage the enemies of their contractor. They have, on average, good equipment and training, together with decent mobility, making them a formidable force. Their biggest weakness, however, is their relatively low numbers. <<elseif $attackType == "freedom fighters">> <<if App.SecExp.battle.recon() >= 1>> A massive, dangerous army of guerrillas is gathering just outside the arcology. A huge ocean of fanatics and idealists armed with dead men's words and hope, set on erasing your fledgling empire once and for all. And this time they won't stop until your body is burnt to a crisp. @@ -95,8 +82,7 @@ <<else>> Some of your citizens saw the massive, dangerous army of guerrillas is gathering just outside the arcology. A huge ocean of fanatics and idealists armed with dead men's words and hope, set on erasing your fledgling empire once and for all. And this time they won't stop until your body is burnt to a crisp. <</if>> - <br> - Freedom Fighters are groups of individuals fighting to rid the planet of "evils" such as the Free Cities and their way of life. Lacking the strength to assault one directly, they fight guerrilla style, slowly starving to death their enemies. They are rarely well equipped, but with good training and mobility they are not a threat that can be taken lightly. + <br>Freedom Fighters are groups of individuals fighting to rid the planet of "evils" such as the Free Cities and their way of life. Lacking the strength to assault one directly, they fight guerrilla style, slowly starving to death their enemies. They are rarely well equipped, but with good training and mobility they are not a threat that can be taken lightly. <<elseif $attackType == "old world">> <<if App.SecExp.battle.recon() >= 1>> A massive, disciplined old world army is approaching the confines of your arcology. It seems one of the nations of the old world is determined to put your arcology to rest once and for all or die trying. @@ -104,16 +90,13 @@ <<else>> Some of your citizens saw the massive, disciplined old world army is approaching the confines of your arcology. It seems one of the nations of the old world is determined to put your arcology to rest once and for all or die trying. <</if>> - <br> - Old world expeditions are usually sent to secure resources and trade routes for their nation or, more often, to provide their citizens with a bogeyman to be scared of. They are usually decently equipped and trained, which together with their generous numbers make them a tough nut to crack. However, they often lack in mobility. + <br>Old world expeditions are usually sent to secure resources and trade routes for their nation or, more often, to provide their citizens with a bogeyman to be scared of. They are usually decently equipped and trained, which together with their generous numbers make them a tough nut to crack. However, they often lack in mobility. <</if>> <</if>> -<br><br> -__Recon__: +<br><br>__Recon__: <<set _estimatedMen = normalRandInt($attackTroops, $attackTroops * (4 - App.SecExp.battle.recon()) * 0.05)>> <<set _expectedEquip = normalRandInt($attackEquip, (4 - App.SecExp.battle.recon()) * 0.25)>> -<br> -It seems your troops and your adversary will fight +<br>It seems your troops and your adversary will fight <<if $battleTerrain == "rural">> in <strong>the rural land</strong> surrounding the free city. <<elseif $battleTerrain == "urban">> @@ -155,10 +138,12 @@ approximately <strong><<print _estimatedMen>> men</strong> are coming, they seem <strong>extremely well armed</strong> with excellent small arms and specialized teams with heavy duty infantry support weapons. Heavy presence of armored military vehicles, artillery pieces and even some attack helicopters. <</if>> -<hr> -__Battle Plan__: -<br> - +<hr>__Battle Plan__:<br> +<<set _leaderFound = 1>> +<<if $leadingTroops === "bodyguard" && $BodyguardID === 0 || $leadingTroops === "headGirl" && $HeadGirlID === 0>> + @@red;Chosen leader $leadingTroops can not be found be found, please select another.@@ + <<set _leaderFound = 0>> +<</if>> <<switch $leadingTroops>> <<case "PC">> <<set _leader = "Personally">> @@ -178,188 +163,143 @@ __Battle Plan__: /* leader assignment */ <span id="leader"><strong><<print _leader>></strong></span> lead your troops. - <br> - <<link "Personally join the battle">> - <<set $leadingTroops = "PC">> - <<set _leader = "Personally">> +<br> +<<link "Personally join the battle">> + <<set $leadingTroops = "PC">> + <<set _leader = "Personally">> + <<replace "#leader">><strong><<print _leader>></strong><</replace>> +<</link>> +| +<<link "Let $assistant.name lead the troops">> + <<set $leadingTroops = "assistant">> + <<set _leader = "$assistant.name will">> + <<replace "#leader">><strong><<print _leader>></strong><</replace>> +<</link>> +<<if $BodyguardID != 0 && $SecExp.edicts.defense.slavesOfficers == 1>> + | + <<link "Let your bodyguard lead your troops">> + <<set $leadingTroops = "bodyguard">> + <<set _leader = "_S.Bodyguard.slaveName will">> + <<replace "#leader">><strong><<print _leader>></strong><</replace>> + <</link>> +<</if>> +<<if $HeadGirlID != 0 && $SecExp.edicts.defense.slavesOfficers == 1>> + | + <<link "Let your Head Girl lead your troops">> + <<set $leadingTroops = "headGirl">> + <<set _leader = "_S.HeadGirl.slaveName will">> + <<replace "#leader">><strong><<print _leader>></strong><</replace>> + <</link>> +<</if>> +<<if $militiaFounded == 1>> + | + <<link "Let the citizens' militia officers lead the troops">> + <<set $leadingTroops = "citizen">> + <<set _leader = "The citizens' militia commander will">> + <<replace "#leader">><strong><<print _leader>></strong><</replace>> + <</link>> +<</if>> +<<if $mercenaries > 0>> + | + <<link "Let the mercenary officers lead the troops">> + <<set $leadingTroops = "mercenary">> + <<set _leader = "The mercenary commander will">> <<replace "#leader">><strong><<print _leader>></strong><</replace>> <</link>> +<</if>> +<<if $SF.Toggle && $SF.Active >= 1 && $SF.MercCon.CanAttend === -2>> | - <<link "Let $assistant.name lead the troops">> - <<set $leadingTroops = "assistant">> - <<set _leader = "$assistant.name will">> + <<link "Let The Colonel lead the troops">> + <<set $leadingTroops = "colonel">> + <<set _leader = App.SF.Caps() +"'s Colonel will">> <<replace "#leader">><strong><<print _leader>></strong><</replace>> <</link>> - <<if $BodyguardID != 0 && $slavesOfficers == 1>> - | - <<link "Let your bodyguard lead your troops">> - <<set $leadingTroops = "bodyguard">> - <<set _leader = "_S.Bodyguard.slaveName will">> - <<replace "#leader">><strong><<print _leader>></strong><</replace>> +<</if>> +<br>For this battle you choose to follow <span id="tactic"><strong><<print $chosenTactic>></strong></span> tactics.<br> +<button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'defensiveTactics')" id="tab defensive tactics">Defensive tactics</button> +<button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'offensiveTactics')" id="tab offensiveTactics">Offensive Tactics</button> + +<div id="defensiveTactics" class="tabcontent"> + <div class="content"> + <<link "Bait and Bleed">> + <<set $chosenTactic = "Bait and Bleed">> + <<replace "#tactic">><strong><<print $chosenTactic>></strong><</replace>> <</link>> - <</if>> - <<if $HeadGirlID != 0 && $slavesOfficers == 1>> - | - <<link "Let your Head Girl lead your troops">> - <<set $leadingTroops = "headGirl">> - <<set _leader = "_S.HeadGirl.slaveName will">> - <<replace "#leader">><strong><<print _leader>></strong><</replace>> + <br> //Combines bait and switch tactics with guerrilla style assaults, with the objective of slowly bleed the enemy.// + <br> + <<link "Guerrilla">> + <<set $chosenTactic = "Guerrilla">> + <<replace "#tactic">><strong><<print $chosenTactic>></strong><</replace>> <</link>> - <</if>> - <<if $militiaFounded == 1>> - | - <<link "Let the citizens' militia officers lead the troops">> - <<set $leadingTroops = "citizen">> - <<set _leader = "The citizens' militia commander will">> - <<replace "#leader">><strong><<print _leader>></strong><</replace>> + <br> //Involves using terrain knowledge and small fast attacks to hinder and weaken the enemy.// + <br> + <<link "Choke Points">> + <<set $chosenTactic = "Choke Points">> + <<replace "#tactic">><strong><<print $chosenTactic>></strong><</replace>> <</link>> - <</if>> - <<if $mercenaries > 0>> - | - <<link "Let the mercenary officers lead the troops">> - <<set $leadingTroops = "mercenary">> - <<set _leader = "The mercenary commander will">> - <<replace "#leader">><strong><<print _leader>></strong><</replace>> + <br> //Involves using terrain knowledge and strong fortifications in order to stop the enemy on its track.// + <br> + <<link "Interior Lines">> + <<set $chosenTactic = "Interior Lines">> + <<replace "#tactic">><strong><<print $chosenTactic>></strong><</replace>> <</link>> - <</if>> - <<if $SF.Toggle && $SF.Active >= 1 && $SF.MercCon.CanAttend === -2>> - | - <<link "Let The Colonel lead the troops">> - <<set $leadingTroops = "colonel">> - <<set _leader = App.SF.Caps() +"'s Colonel will">> - <<replace "#leader">><strong><<print _leader>></strong><</replace>> + <br> //Involves exploiting a defender's shorter logistics lines and redeployment times in order to keep the enemy pressured.// + <br> + <<link "Pincer Maneuver">> + <<set $chosenTactic = "Pincer Maneuver">> + <<replace "#tactic">><strong><<print $chosenTactic>></strong><</replace>> <</link>> - <</if>> - -/* troop deployment */ -<br><br> -<<if App.SecExp.battle.deployableUnits() > 0>> - With your current readiness level you can send an additional <strong><<print App.SecExp.battle.deployableUnits()>></strong> units. -<</if>> -<<set _mL = $militiaUnits.length>> -<<set _sL = $slaveUnits.length>> -<<set _meL = $mercUnits.length>> - -<<run App.UI.tabbar.handlePreSelectedTab($tabChoice.Options)>> - -<<if App.SecExp.battle.deployableUnits() > 0>> <br> - <<if $secBots.active == 1 && $secBots.isDeployed == 0 && $secBots.troops > 0>> - <br> <<= App.SecExp.getUnit("Bots").describe()>> <br> - <<link "Deploy the unit" "attackOptions">> - <<set $secBots.isDeployed = 1, $saveValid = 0>> + <br> //Involves letting the enemy push back the center in order to envelop their formation.// + <br> + <<link "Defense In Depth">> + <<set $chosenTactic = "Defense In Depth">> + <<replace "#tactic">><strong><<print $chosenTactic>></strong><</replace>> <</link>> - <br><br> - <</if>> - - <<if $militiaUnits.length > 0 && App.SecExp.battle.deployableUnits() > 0>> - <button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'militia')" id="tab militia">Militia: ($militiaUnits.length)</button> - <</if>> - <<if $slaveUnits.length > 0 && App.SecExp.battle.deployableUnits() > 0>> - <button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'slaves')" id="tab slaves">Slaves: ($slaveUnits.length)</button> - <</if>> - <<if $mercUnits.length > 0 && App.SecExp.battle.deployableUnits() > 0>> - <button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'mercs')" id="tab mercs">Mercs: ($mercUnits.length)</button> - <</if>> - - <div id="militia" class="tabcontent"> - <div class="content"> - <<for _i = 0; _i < _mL; _i++>> - <<capture _i>> - <<if $militiaUnits[_i].active == 1 && $militiaUnits[_i].isDeployed == 0 && $militiaUnits[_i].troops > 0>> - <<= App.SecExp.getUnit("Militia", _i).describe()>> - <br> - <<link "Deploy the unit" "attackOptions">> - <<set $militiaUnits[_i].isDeployed = 1, $saveValid = 0>> - <</link>> - <br> - <</if>> - <</capture>> - <</for>> - </div> + <br> //Involves letting the enemy gain terrain to gain tactical superiority by alternating between delaying actions and small counterattacks.// </div> +</div> - <div id="slaves" class="tabcontent"> - <div class="content"> - <<for _i = 0; _i < _sL; _i++>> - <<capture _i>> - <<if $slaveUnits[_i].active == 1 && $slaveUnits[_i].isDeployed == 0 && $slaveUnits[_i].troops > 0>> - <<= App.SecExp.getUnit("Slaves", _i).describe()>> - <br> - <<link "Deploy the unit" "attackOptions">> - <<set $slaveUnits[_i].isDeployed = 1, $saveValid = 0>> - <</link>> - <br> - <</if>> - <</capture>> - <</for>> - </div> +<div id="offensiveTactics" class="tabcontent"> + <div class="content"> + <<link "Blitzkrieg">> + <<set $chosenTactic = "Blitzkrieg">> + <<replace "#tactic">><strong><<print $chosenTactic>></strong><</replace>> + <</link>> + <br> //Involves breaking the front of the enemy with a fast armored force concentrated into a small area.// + <br> + <<link "Human Wave">> + <<set $chosenTactic = "Human Wave">> + <<replace "#tactic">><strong><<print $chosenTactic>></strong><</replace>> + <</link>> + <br> //Involves assaulting the enemy with large numbers of infantry to overwhelm their lines.// </div> +</div> - <div id="mercs" class="tabcontent"> - <div class="content"> - <<for _i = 0; _i < _meL; _i++>> - <<capture _i>> - <<if $mercUnits[_i].active == 1 && $mercUnits[_i].isDeployed == 0 && $mercUnits[_i].troops > 0>> - <<= App.SecExp.getUnit("Mercs", _i).describe()>> - <br> - <<link "Deploy the unit" "attackOptions">> - <<set $mercUnits[_i].isDeployed = 1, $saveValid = 0>> - <</link>> - <br> - <</if>> - <</capture>> - <</for>> - </div> - </div> +<<if _leaderFound === 1>> + <br> + <<if App.SecExp.conflict.deployedUnits() > 0>> + <<link "Send your orders" "attackHandler">> + <<set $battleResult = 4>> /* sets $battleResult value outside accepted range to avoid evaluation problems */ + <<set $foughtThisWeek = 1>> + <</link>> + <<else>> + You need at least a unit in your roster to proceed to battle. + <</if>> + <br> + <<link "Surrender" "attackReport">> + <<set $battleResult = -1>> + <<set $foughtThisWeek = 1>> + <</link>> + <br> + + <<set $bribeCost = App.SecExp.battle.bribeCost()>> + <<link "Attempt to bribe" "attackHandler">> + <<set $battleResult = 1>> + <<set $foughtThisWeek = 1>> + <</link>> + <br> //Will cost around <<print cashFormat(Math.round($bribeCost * (1 + either(-1,1) * random(2) * 0.1)))>> (estimate).// <<else>> - <strong>Unit roster full.</strong> -<</if>> - -<<if App.SecExp.conflict.deployedUnits() > 0>> <br> - <<if App.SecExp.conflict.deployedUnits('bots')>> - <<= App.SecExp.getUnit("Bots").describe()>> - <br> - <<link "Remove the unit" "attackOptions">> - <<set $secBots.isDeployed = 0, $saveValid = 0>> - <</link>> - <br> - <</if>> - <<for _i = 0; _i < _mL; _i++>> - <<capture _i>> - <<if $militiaUnits[_i].isDeployed == 1>> - <<= App.SecExp.getUnit("Militia", _i).describe()>> - <br> - <<link "Remove the unit" "attackOptions">> - <<set $militiaUnits[_i].isDeployed = 0, $saveValid = 0>> - <</link>> - <br> - <</if>> - <</capture>> - <</for>> - <<for _i = 0; _i < _sL; _i++>> - <<capture _i>> - <<if $slaveUnits[_i].isDeployed == 1>> - <<= App.SecExp.getUnit("Slaves", _i).describe()>> - <br> - <<link "Remove the unit" "attackOptions">> - <<set $slaveUnits[_i].isDeployed = 0, $saveValid = 0>> - <</link>> - <br> - <</if>> - <</capture>> - <</for>> - <<for _i = 0; _i < _meL; _i++>> - <<capture _i>> - <<if $mercUnits[_i].isDeployed == 1>> - <<= App.SecExp.getUnit("Mercs", _i).describe()>> - <br> - <<link "Remove the unit" "attackOptions">> - <<set $mercUnits[_i].isDeployed = 0, $saveValid = 0>> - <</link>> - <br> - <</if>> - <</capture>> - <</for>> + Your leader needs to be present to proceed. <</if>> <<if $SF.Toggle && $SF.Active >= 1 && $majorBattle>> <br> @@ -370,6 +310,7 @@ __Battle Plan__: <<includeDOM _options.render()>> <</if>> +<br> <<if $lastSelection.length > 0>> <br> <<link "Restore saved roster" "attackOptions">> <<for _i = 0; _i < $lastSelection.length; _i++>> @@ -456,92 +397,102 @@ __Battle Plan__: <<else>> Clear saved roster <</if>> + +<br><br> /* troop deployment */ +<<if App.SecExp.battle.deployableUnits() > 0>> + With your current readiness level you can send an additional <strong><<print App.SecExp.battle.deployableUnits()>></strong> units. +<</if>> <<replenishAllUnits>> +<<set _mL = $militiaUnits.length>> +<<set _sL = $slaveUnits.length>> +<<set _meL = $mercUnits.length>> -<br><br> -/* tactics */ -For this battle you choose to follow <span id="tactic"><strong><<print $chosenTactic>></strong></span> tactics. -<br> -<button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'defensiveTactics')" id="tab defensive tactics">Defensive tactics</button> -<button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'offensiveTactics')" id="tab offensiveTactics">Offensive Tactics</button> +<<run App.UI.tabbar.handlePreSelectedTab($tabChoice.Options)>> -<div id="defensiveTactics" class="tabcontent"> - <div class="content"> - <<link "Bait and Bleed">> - <<set $chosenTactic = "Bait and Bleed">> - <<replace "#tactic">><strong><<print $chosenTactic>></strong><</replace>> - <</link>> - <br> //Combines bait and switch tactics with guerrilla style assaults, with the objective of slowly bleed the enemy.// - <br> - <<link "Guerrilla">> - <<set $chosenTactic = "Guerrilla">> - <<replace "#tactic">><strong><<print $chosenTactic>></strong><</replace>> - <</link>> - <br> //Involves using terrain knowledge and small fast attacks to hinder and weaken the enemy.// - <br> - <<link "Choke Points">> - <<set $chosenTactic = "Choke Points">> - <<replace "#tactic">><strong><<print $chosenTactic>></strong><</replace>> - <</link>> - <br> //Involves using terrain knowledge and strong fortifications in order to stop the enemy on its track.// - <br> - <<link "Interior Lines">> - <<set $chosenTactic = "Interior Lines">> - <<replace "#tactic">><strong><<print $chosenTactic>></strong><</replace>> - <</link>> - <br> //Involves exploiting a defender's shorter logistics lines and redeployment times in order to keep the enemy pressured.// - <br> - <<link "Pincer Maneuver">> - <<set $chosenTactic = "Pincer Maneuver">> - <<replace "#tactic">><strong><<print $chosenTactic>></strong><</replace>> +<<if App.SecExp.battle.deployableUnits() === 0>> <strong>Unit roster full.</strong> <</if>> +<<if $secBots.active == 1 && $secBots.troops > 0>> + <<= App.SecExp.getUnit("Bots").describe()>> <br> + <<if $secBots.isDeployed == 0 && App.SecExp.battle.deployableUnits() > 0>> + <<link "Deploy the unit" "attackOptions">> + <<set $secBots.isDeployed = 1, $saveValid = 0>> <</link>> - <br> //Involves letting the enemy push back the center in order to envelop their formation.// - <br> - <<link "Defense In Depth">> - <<set $chosenTactic = "Defense In Depth">> - <<replace "#tactic">><strong><<print $chosenTactic>></strong><</replace>> + <<else>> + <<link "Remove the unit" "attackOptions">> + <<set $secBots.isDeployed = 0, $saveValid = 0>> <</link>> - <br> //Involves letting the enemy gain terrain to gain tactical superiority by alternating between delaying actions and small counterattacks.// + <</if>> + <br><br> +<</if>> +<<if $militiaUnits.length > 0>> + <button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'militia')" id="tab militia">Militia: ($militiaUnits.length)</button> +<</if>> +<<if $slaveUnits.length > 0>> + <button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'slaves')" id="tab slaves">Slaves: ($slaveUnits.length)</button> +<</if>> +<<if $mercUnits.length > 0>> + <button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'mercs')" id="tab mercs">Mercs: ($mercUnits.length)</button> +<</if>> + +<div id="militia" class="tabcontent"> + <div class="content"> + <<for _i = 0; _i < _mL; _i++>> + <<capture _i>> + <<if $militiaUnits[_i].active == 1 && $militiaUnits[_i].troops > 0>> + <<= App.SecExp.getUnit("Militia", _i).describe()>> <br> + <<if $militiaUnits[_i].isDeployed == 0 && App.SecExp.battle.deployableUnits() > 0>> + <<link "Deploy the unit" "attackOptions">> + <<set $militiaUnits[_i].isDeployed = 1, $saveValid = 0>> + <</link>> + <<else>> + <<link "Remove the unit" "attackOptions">> + <<set $militiaUnits[_i].isDeployed = 0, $saveValid = 0>> + <</link>> + <</if>> + <br> + <</if>> + <</capture>> + <</for>> </div> </div> - -<div id="offensiveTactics" class="tabcontent"> +<div id="slaves" class="tabcontent"> <div class="content"> - <<link "Blitzkrieg">> - <<set $chosenTactic = "Blitzkrieg">> - <<replace "#tactic">><strong><<print $chosenTactic>></strong><</replace>> - <</link>> - <br> //Involves breaking the front of the enemy with a fast armored force concentrated into a small area.// - <br> - <<link "Human Wave">> - <<set $chosenTactic = "Human Wave">> - <<replace "#tactic">><strong><<print $chosenTactic>></strong><</replace>> - <</link>> - <br> //Involves assaulting the enemy with large numbers of infantry to overwhelm their lines.// + <<for _i = 0; _i < _sL; _i++>> + <<capture _i>> + <<if $slaveUnits[_i].active == 1 && $slaveUnits[_i].troops > 0>> + <<= App.SecExp.getUnit("Slaves", _i).describe()>> <br> + <<if $slaveUnits[_i].isDeployed == 0 && App.SecExp.battle.deployableUnits() > 0>> + <<link "Deploy the unit" "attackOptions">> + <<set $slaveUnits[_i].isDeployed = 1, $saveValid = 0>> + <</link>> + <<else>> + <<link "Remove the unit" "attackOptions">> + <<set $slaveUnits[_i].isDeployed = 0, $saveValid = 0>> + <</link>> + <</if>> + <br> + <</if>> + <</capture>> + <</for>> </div> </div> - -<br> -<<if App.SecExp.conflict.deployedUnits() > 0>> - <<link "Send your orders" "attackHandler">> - <<set $battleResult = 4>> /* sets $battleResult value outside accepted range to avoid evaluation problems */ - <<set $foughtThisWeek = 1>> - <</link>> -<<else>> - You need at least a unit in your roster to proceed to battle. -<</if>> -<br> -<<link "Surrender" "attackReport">> - <<set $battleResult = -1>> - <<set $foughtThisWeek = 1>> -<</link>> -<br> - -<<set $bribeCost = App.SecExp.battle.bribeCost()>> - -/* calculates bribe cost */ -<<link "Attempt to bribe" "attackHandler">> - <<set $battleResult = 1>> - <<set $foughtThisWeek = 1>> -<</link>> -<br> //Will cost around <<print cashFormat(Math.round($bribeCost * (1 + either(-1,1) * random(2) * 0.1)))>> (estimate).// +<div id="mercs" class="tabcontent"> + <div class="content"> + <<for _i = 0; _i < _meL; _i++>> + <<capture _i>> + <<if $mercUnits[_i].active == 1 && $mercUnits[_i].troops > 0>> + <<= App.SecExp.getUnit("Mercs", _i).describe()>> <br> + <<if $mercUnits[_i].isDeployed == 0 && App.SecExp.battle.deployableUnits() > 0>> + <<link "Deploy the unit" "attackOptions">> + <<set $mercUnits[_i].isDeployed = 1, $saveValid = 0>> + <</link>> + <<else>> + <<link "Remove the unit" "attackOptions">> + <<set $mercUnits[_i].isDeployed = 0, $saveValid = 0>> + <</link>> + <</if>> + <br> + <</if>> + <</capture>> + <</for>> + </div> +</div> \ No newline at end of file diff --git a/src/Mods/SecExp/attackReport.tw b/src/Mods/SecExp/attackReport.tw index 9d7c3568b09decad3164b39edbca55cb929c4b90..b6195f5eeffe217844839efd74529e7cd5e6d882 100644 --- a/src/Mods/SecExp/attackReport.tw +++ b/src/Mods/SecExp/attackReport.tw @@ -348,7 +348,7 @@ @@.yellowgreen;wealth worthy of the mightiest warlord.@@ <<set _loot += 20000 * _majorBattleMod>> <</if>> - <<if $mercSoldierPrivilege == 1 && App.SecExp.conflict.deployedUnits('mercs') >= 1>> + <<if $SecExp.edicts.defense.privilege.mercSoldier == 1 && App.SecExp.conflict.deployedUnits('mercs') >= 1>> Part of the loot is distributed to your mercenaries. <<set _captives = Math.trunc(_captives * 0.6)>> <<set _loot = Math.trunc(_loot * 0.6)>> @@ -458,7 +458,7 @@ @@.yellowgreen;a great amount of cash.@@ <<set _loot += 10000 * _majorBattleMod>> <</if>> - <<if $mercSoldierPrivilege == 1 && App.SecExp.conflict.deployedUnits('mercs') >= 1>> + <<if $SecExp.edicts.defense.privilege.mercSoldier == 1 && App.SecExp.conflict.deployedUnits('mercs') >= 1>> Part of the loot is distributed to your mercenaries. <<set _loot = Math.trunc(_loot * 0.6)>> <</if>> diff --git a/src/Mods/SecExp/buildings/riotControlCenter.tw b/src/Mods/SecExp/buildings/riotControlCenter.tw index 0a911347ae58092e021f3e32097594c68ca76d02..2a87241665bb848442715999c02bf92c9e0c7751 100644 --- a/src/Mods/SecExp/buildings/riotControlCenter.tw +++ b/src/Mods/SecExp/buildings/riotControlCenter.tw @@ -203,7 +203,7 @@ The riot control center opens its guarded doors to you. The great chamber inside <</if>> <<if $SF.Toggle && $SF.Active >= 1>> - <<if $SFSupportLevel >= 4 && !$SFGear && $SF.Squad.Armoury >= 8>> <<set _Env = App.SF.env()>> + <<if $SecExp.edicts.SFSupportLevel >= 4 && !$SFGear && $SF.Squad.Armoury >= 8>> <<set _Env = App.SF.env()>> <br> <<link "Give the riot unit access to the combat armor suits of $SF.Lower.""riotControlCenter">> <<set $SFGear = 1,cashX(forceNeg(Math.ceil(500000*_Env*(1.15+($SF.Squad.Armoury/10)))), "capEx")>> <</link>> //Costs <<print cashFormat(Math.ceil(500000*_Env*(1.15+($SF.Squad.Armoury/10))))>> <<else>> diff --git a/src/Mods/SecExp/buildings/transportHub.tw b/src/Mods/SecExp/buildings/transportHub.tw index 6c6bddcf0fcbe02c9dbadd80bbbb2f3aa8b120b7..e23ee48ac11d2242bc3f3187b40d650361c95212 100644 --- a/src/Mods/SecExp/buildings/transportHub.tw +++ b/src/Mods/SecExp/buildings/transportHub.tw @@ -6,9 +6,9 @@ <hr> You quickly reach the transport hub, where a constant stream of vehicles, people and goods greets you. Part of the structure is dedicated to air travel and the other is mainly occupied by <<if $terrain != "oceanic" && $terrain != "marine">>the rail station.<<else>> the docks.<</if>> -<<if $limitImmigration == 1 || $policies.immigrationRep == -1>> +<<if $SecExp.edicts.limitImmigration == 1 || $policies.immigrationRep == -1>> Due to your strict policies concerning immigration, very few new citizens arrive in the transport hub. -<<elseif $openBorders == 1 || $policies.immigrationCash == 1>> +<<elseif $SecExp.edicts.openBorders == 1 || $policies.immigrationCash == 1>> Due to your liberal policies concerning immigration, the transport hub is filled with a flow of new citizens. <</if>> diff --git a/src/Mods/SecExp/buildings/weaponsManufacturing.tw b/src/Mods/SecExp/buildings/weaponsManufacturing.tw index 88d199698a713210dd6c74c98d756332bfbedc2b..04adfbd931184a0fa7d454bb5e477d6c2af80f5c 100644 --- a/src/Mods/SecExp/buildings/weaponsManufacturing.tw +++ b/src/Mods/SecExp/buildings/weaponsManufacturing.tw @@ -1,6 +1,6 @@ :: weaponsManufacturing [nobr] -<<set $nextButton = "Back", $nextLink = "Main">> +<<set $nextButton = "Back", $nextLink = "Main", _baseUpgradeTime = 10>> This sector of the arcology has been dedicated to weapons manufacturing. These factories supply <<if $militiaUnits.length > 0>> your militia and<</if>> @@ -104,8 +104,8 @@ You own <<print num($menials)>> free menial slaves. This manufacturing complex c <<run cashX(forceNeg(10000 * $weapProductivity), "capEx")>> <<set $weapProductivity++>> <<if $currentUpgrade.time > 0>> - <<set _percentComplete = $currentUpgrade.time / ($baseUpgradeTime / ($weapProductivity - 1))>> - <<set _newTime = Math.ceil(_percentComplete * $baseUpgradeTime / $weapProductivity)>> + <<set _percentComplete = $currentUpgrade.time / (_baseUpgradeTime / ($weapProductivity - 1))>> + <<set _newTime = Math.ceil(_percentComplete * _baseUpgradeTime / $weapProductivity)>> <<set $currentUpgrade.time = _newTime>> <</if>> <<goto "weaponsManufacturing">> @@ -189,7 +189,7 @@ __Markets__: <</link>> <</if>> <br><br> -<<set _time = Math.ceil($baseUpgradeTime / $weapProductivity)>> +<<set _time = Math.ceil(_baseUpgradeTime / $weapProductivity)>> Upgrades: With our current industrial and research capabilities upgrades will be finished in _time weeks. @@ -248,7 +248,7 @@ With our current industrial and research capabilities upgrades will be finished You have fully upgraded your human troops. <<elseif $humanUpgrade.attack >= 2 || $humanUpgrade.hp >= 2 || $humanUpgrade.morale >= 20 || $humanUpgrade.defense >= 2>> You have fully upgraded your human troops. - <<if $SF.Toggle && $SF.Active >= 1 && ($humanUpgrade.attack < 4 || $humanUpgrade.hp < 4 || $humanUpgrade.morale < 40 || $humanUpgrade.defense < 4) && (($SFSupportLevel >= 2 && $SF.Squad.Firebase >= 7) || ($SFSupportLevel >= 4 && $SF.Squad.Drugs >= 8) || ($SFSupportLevel >= 5))>> + <<if $SF.Toggle && $SF.Active >= 1 && ($humanUpgrade.attack < 4 || $humanUpgrade.hp < 4 || $humanUpgrade.morale < 40 || $humanUpgrade.defense < 4) && (($SecExp.edicts.SFSupportLevel >= 2 && $SF.Squad.Firebase >= 7) || ($SecExp.edicts.SFSupportLevel >= 4 && $SF.Squad.Drugs >= 8) || ($SecExp.edicts.SFSupportLevel >= 5))>> With support from $SF.Lower, however, we may be able to further upgrade our troops. <</if>> <<elseif $weapLab < 3>> @@ -338,7 +338,7 @@ With our current industrial and research capabilities upgrades will be finished <br>//Will take _time weeks, cost <<print cashFormat(120000*$HackingSkillMultiplier)>> and will increase the base hp and morale values of human troops.// <</if>> <<if $SF.Toggle && $SF.Active >= 1>> <br> - <<if !$completedUpgrades.includes(6) && $weapLab >= 2 && $SFSupportLevel >= 2 && $SF.Squad.Firebase >= 7>> + <<if !$completedUpgrades.includes(6) && $weapLab >= 2 && $SecExp.edicts.SFSupportLevel >= 2 && $SF.Squad.Firebase >= 7>> <br> <<link "Develop combined training regimens with $SF.Lower">> <<set $currentUpgrade = { @@ -351,7 +351,7 @@ With our current industrial and research capabilities upgrades will be finished <</link>> <br>//Will take _time weeks, and will increase the base attack and defense values of human troops.// <</if>> - <<if !$completedUpgrades.includes(7) && $weapLab >= 2 && $SFSupportLevel >= 4 && $SF.Squad.Drugs >= 8>> + <<if !$completedUpgrades.includes(7) && $weapLab >= 2 && $SecExp.edicts.SFSupportLevel >= 4 && $SF.Squad.Drugs >= 8>> <br> <<link "Develop a variant of the stimulant cocktail that $SF.Lower created">> <<set $currentUpgrade = { @@ -365,7 +365,7 @@ With our current industrial and research capabilities upgrades will be finished <</link>> <br>//Will take _time weeks, cost <<print cashFormat(300000)>> and will increase the base morale and hp values of human troops.// <</if>> - <<if !$completedUpgrades.includes(8) && $weapLab >= 3 && $SFSupportLevel >= 5>> + <<if !$completedUpgrades.includes(8) && $weapLab >= 3 && $SecExp.edicts.SFSupportLevel >= 5>> <br> <<link "Create a mesh network based off the custom network of $SF.Lower">> <<set $currentUpgrade = { diff --git a/src/Mods/SecExp/edicts.tw b/src/Mods/SecExp/edicts.tw index 418a62da1b8231114181e0f4245e0285cad58766..b02a9d74928e28298b782922124a1fcb88565f27 100644 --- a/src/Mods/SecExp/edicts.tw +++ b/src/Mods/SecExp/edicts.tw @@ -5,116 +5,116 @@ <div class="center"> ''__Active Edicts__'' </div> -<<if $alternativeRents == 1>> +<<if $SecExp.edicts.alternativeRents == 1>> <br>''Alternative rent payment:'' you are allowing citizens to pay for their rents in menial slaves rather than cash. - [[Repeal|edicts][$alternativeRents = 0]] + [[Repeal|edicts][$SecExp.edicts.alternativeRents = 0]] <</if>> -<<if $enslavementRights == 1>> +<<if $SecExp.edicts.enslavementRights == 1>> <br>''Enslavement rights:'' you are the only authority able to declare a person enslaved or not. - [[Repeal|edicts][$enslavementRights = 0]] + [[Repeal|edicts][$SecExp.edicts.enslavementRights = 0]] <</if>> -<<if $sellData == 1>> +<<if $SecExp.edicts.sellData == 1>> <br>''Private Data marketization:'' you are selling private citizens' data to the best bidder. - [[Repeal|edicts][$sellData = 0]] + [[Repeal|edicts][$SecExp.edicts.sellData = 0]] <</if>> -<<if $propCampaignBoost == 1>> +<<if $SecExp.edicts.propCampaignBoost == 1>> <br>''Obligatory educational material:'' you are forcing residents to read curated educational material about the arcology. - [[Repeal|edicts][$propCampaignBoost = 0]] + [[Repeal|edicts][$SecExp.edicts.propCampaignBoost = 0]] <</if>> -<<if $tradeLegalAid == 1>> +<<if $SecExp.edicts.tradeLegalAid == 1>> <br>''Legal aid for new businesses:'' New businesses can rely on your help for legal expenses and issues. - [[Repeal|edicts][$tradeLegalAid = 0]] + [[Repeal|edicts][$SecExp.edicts.tradeLegalAid = 0]] <</if>> -<<if $taxTrade == 1>> +<<if $SecExp.edicts.taxTrade == 1>> <br>''Trade tariffs:'' all goods transitioning in your arcology have to pay a transition fee. - [[Repeal|edicts][$taxTrade = 0]] + [[Repeal|edicts][$SecExp.edicts.taxTrade = 0]] <</if>> -<<if $slaveWatch == 1>> +<<if $SecExp.edicts.slaveWatch == 1>> <br>''@@.lime;Slave mistreatment watch:@@'' slaves are able access a special security service in case of mistreatment. - [[Repeal|edicts][$slaveWatch = 0]] + [[Repeal|edicts][$SecExp.edicts.slaveWatch = 0]] <</if>> -<<if $subsidyChurch == 1>> +<<if $SecExp.edicts.subsidyChurch == 1>> <br>''@@.lime;Religious activities subsidy:@@'' you are providing economic support to religious activities following the official dogma. - [[Repeal|edicts][$subsidyChurch = 0]] + [[Repeal|edicts][$SecExp.edicts.subsidyChurch = 0]] <</if>> -<<if $SF.Toggle && $SF.Active >= 1 && $SFSupportLevel > 0>> +<<if $SF.Toggle && $SF.Active >= 1 && $SecExp.edicts.SFSupportLevel > 0>> <br><br>__Special Force:__ - <<if $SFSupportLevel === 1>> + <<if $SecExp.edicts.SFSupportLevel === 1>> <br>''Equipment provision:'' <<= App.SF.Caps()>> is providing the security HQ with advanced equipment, boosting its efficiency. - [[Repeal|edicts][$SFSupportLevel--]] - <<elseif $SFSupportLevel === 2>> + [[Repeal|edicts][$SecExp.edicts.SFSupportLevel--]] + <<elseif $SecExp.edicts.SFSupportLevel === 2>> <br>''Personnel training:'' <<= App.SF.Caps()>> is currently providing advanced equipment and training to security HQ personnel. - [[Repeal|edicts][$SFSupportLevel--]] - <<elseif $SFSupportLevel === 3>> + [[Repeal|edicts][$SecExp.edicts.SFSupportLevel--]] + <<elseif $SecExp.edicts.SFSupportLevel === 3>> <br>''Troops detachment:'' <<= App.SF.Caps()>> has currently transferred troops to the security department HQ in addition to providing advanced equipment and training to security HQ personnel. - [[Repeal|edicts][$SFSupportLevel--]] - <<elseif $SFSupportLevel === 4>> + [[Repeal|edicts][$SecExp.edicts.SFSupportLevel--]] + <<elseif $SecExp.edicts.SFSupportLevel === 4>> <br>''Full support:'' <<= App.SF.Caps()>> is currently providing its full support to the security department, while transferring troops to the security department HQ in addition to providing advanced equipment and training to security HQ personnel. - [[Repeal|edicts][$SFSupportLevel--]] - <<elseif $SFSupportLevel === 5>> + [[Repeal|edicts][$SecExp.edicts.SFSupportLevel--]] + <<elseif $SecExp.edicts.SFSupportLevel === 5>> <br>''Network assistance:'' <<= App.SF.Caps()>> is currently assisting with a local install of its custom network full support and has transferred troops to the security department HQ in addition to providing advanced equipment and training to security HQ personnel. - [[Repeal|edicts][$SFSupportLevel--]] + [[Repeal|edicts][$SecExp.edicts.SFSupportLevel--]] <</if>> <</if>> -<<if $limitImmigration == 1 || $openBorders == 1>> +<<if $SecExp.edicts.limitImmigration == 1 || $SecExp.edicts.openBorders == 1>> <br><br>__Immigration:__ - <<if $limitImmigration == 1>> + <<if $SecExp.edicts.limitImmigration == 1>> <br>''Immigration limits:'' you put strict limits to the amount of people the arcology can accept each week. - [[Repeal|edicts][$limitImmigration = 0]] + [[Repeal|edicts][$SecExp.edicts.limitImmigration = 0]] <</if>> - <<if $openBorders == 1>> + <<if $SecExp.edicts.openBorders == 1>> <br>''Open borders:'' you have lowered considerably the requirements to become citizens. - [[Repeal|edicts][$openBorders = 0]] + [[Repeal|edicts][$SecExp.edicts.openBorders = 0]] <</if>> <</if>> <br><br>__Weapons:__ -<<if $weaponsLaw == 0>> +<<if $SecExp.edicts.weaponsLaw == 0>> <br>''Forbid weapons inside the arcology:'' residents are forbidden to buy, sell and keep weaponry while within the arcology. - [[Repeal|edicts][$weaponsLaw = 3]] -<<elseif $weaponsLaw == 2>> + [[Repeal|edicts][$SecExp.edicts.weaponsLaw = 3]] +<<elseif $SecExp.edicts.weaponsLaw == 2>> <br>''Heavy weaponry forbidden:'' residents are allowed to buy, sell and keep weapons within the arcology as long as they are non-heavy, non-explosive. - [[Repeal|edicts][$weaponsLaw = 3]] -<<elseif $weaponsLaw == 1>> + [[Repeal|edicts][$SecExp.edicts.weaponsLaw = 3]] +<<elseif $SecExp.edicts.weaponsLaw == 1>> <br>''Heavily restricted weaponry:'' residents are allowed to buy, sell and keep weapons within the arcology as long as they are non-automatic, non-high caliber. - [[Repeal|edicts][$weaponsLaw = 3]] + [[Repeal|edicts][$SecExp.edicts.weaponsLaw = 3]] <<else>> <br>''All weapons allowed:'' residents are allowed to buy, sell and keep all kind of weapons in the arcology. <</if>> <<if $battlesCount > 0 || $rebellionsCount > 0>> <br><br>__Defense Force:__ - <<if $soldierWages == 0>> + <<if $SecExp.edicts.defense.soldierWages == 0>> <br>''Low wages for soldiers:'' wages for soldiers are set to a low level compared to market standards. - [[Repeal|edicts][$soldierWages = 1]] - <<elseif $soldierWages == 1>> + [[Repeal|edicts][$SecExp.edicts.defense.soldierWages = 1]] + <<elseif $SecExp.edicts.defense.soldierWages == 1>> <br>''Average wages for soldiers:'' wages for soldiers are set to the market standards. <<else>> <br>''High wages for soldiers:'' wages for soldiers are set to a high level compared to market standards. - [[Repeal|edicts][$soldierWages = 1]] + [[Repeal|edicts][$SecExp.edicts.defense.soldierWages = 1]] <</if>> - <<if $slavesOfficers == 1>> + <<if $SecExp.edicts.defense.slavesOfficers == 1>> <br>''Slave Officers:'' your trusted slaves are allowed to lead the defense forces of the arcology. - [[Repeal|edicts][$slavesOfficers = 0]] + [[Repeal|edicts][$SecExp.edicts.defense.slavesOfficers = 0]] <</if>> <<if $mercenaries > 0>> - <<if $discountMercenaries == 1>> + <<if $SecExp.edicts.defense.discountMercenaries == 1>> <br>''Mercenary subsidy:'' mercenaries willing to immigrate in your arcology will be offered a discount on rent. - [[Repeal|edicts][$discountMercenaries = 0]] + [[Repeal|edicts][$SecExp.edicts.defense.discountMercenaries = 0]] <</if>> <</if>> @@ -132,87 +132,87 @@ [[Repeal|edicts][$militarizedSociety = 0, $recruitVolunteers = 1]] <</if>> - <<if $militaryExemption == 1>> + <<if $SecExp.edicts.defense.militaryExemption == 1>> <br>''Military exemption:'' you allow citizens to avoid military duty by paying a weekly fee. - [[Repeal|edicts][$militaryExemption = 0]] + [[Repeal|edicts][$SecExp.edicts.defense.militaryExemption = 0]] <</if>> - <<if $lowerRequirements == 1>> + <<if $SecExp.edicts.defense.lowerRequirements == 1>> <br>''@@.lime;Revised minimum requirements:@@'' you allow citizens outside the normally accepted range to join the militia. - [[Repeal|edicts][$lowerRequirements = 0]] + [[Repeal|edicts][$SecExp.edicts.defense.lowerRequirements = 0]] <</if>> - <<if $noSubhumansInArmy == 1>> + <<if $SecExp.edicts.defense.noSubhumansInArmy == 1>> <br>''@@.lime;No subhumans in the militia:@@'' it is forbidden for subhumans to join the militia. - [[Repeal|edicts][$noSubhumansInArmy = 0]] + [[Repeal|edicts][$SecExp.edicts.defense.noSubhumansInArmy = 0]] <</if>> - <<if $pregExemption == 1>> + <<if $SecExp.edicts.defense.pregExemption == 1>> <br>''@@.lime;Military exemption for pregnancies:@@'' pregnant citizens are allowed, and encouraged, to avoid military service. - [[Repeal|edicts][$pregExemption = 0]] + [[Repeal|edicts][$SecExp.edicts.defense.pregExemption = 0]] <</if>> <</if>> - <<if $militiaSoldierPrivilege == 1>> + <<if $SecExp.edicts.defense.privilege.militiaSoldier == 1>> <br>''Special militia privileges:'' citizens joining the militia are exempt from rent payment. - [[Repeal|edicts][$militiaSoldierPrivilege = 0]] + [[Repeal|edicts][$SecExp.edicts.defense.privilege.militiaSoldier = 0]] <</if>> - <<if $slaveSoldierPrivilege == 1>> + <<if $SecExp.edicts.defense.privilege.slaveSoldier == 1>> <br>''Special slaves privileges:'' Slaves into the army are allowed to have material possessions. - [[Repeal|edicts][$slaveSoldierPrivilege = 0]] + [[Repeal|edicts][$SecExp.edicts.defense.privilege.slaveSoldier = 0]] <</if>> - <<if $mercSoldierPrivilege == 1>> + <<if $SecExp.edicts.defense.privilege.mercSoldier == 1>> <br>''Special mercenary privileges:'' Mercenaries under contract can claim part of the loot gained from battles. - [[Repeal|edicts][$mercSoldierPrivilege = 0]] + [[Repeal|edicts][$SecExp.edicts.defense.privilege.mercSoldier = 0]] <</if>> - <<if $martialSchool == 1>> + <<if $SecExp.edicts.defense.martialSchool == 1>> <br>''@@.lime;Slave martial schools:@@'' specialized schools are training slaves in martial arts and bodyguarding. - [[Repeal|edicts][$martialSchool = 0]] + [[Repeal|edicts][$SecExp.edicts.defense.martialSchool = 0]] <</if>> - <<if $eliteOfficers == 1>> + <<if $SecExp.edicts.defense.eliteOfficers == 1>> <br>''@@.lime;Elite officers:@@'' officers are exclusively recruited from the elite of society. - [[Repeal|edicts][$eliteOfficers = 0]] + [[Repeal|edicts][$SecExp.edicts.defense.eliteOfficers = 0]] <</if>> - <<if $liveTargets == 1>> + <<if $SecExp.edicts.defense.liveTargets == 1>> <br>''@@.lime;Live targets drills:@@'' disobedient slaves are used as live targets at shooting ranges. - [[Repeal|edicts][$liveTargets = 0]] + [[Repeal|edicts][$SecExp.edicts.defense.liveTargets = 0]] <</if>> <</if>> <<if $FSAnnounced>> - <<if $legionTradition == 1>> + <<if $SecExp.edicts.defense.legionTradition == 1>> <br>''@@.lime;Legionaries traditions:@@'' you are funding specialized training for your recruits following the Roman tradition of professional armies. - [[Repeal|edicts][$legionTradition = 0]] + [[Repeal|edicts][$SecExp.edicts.defense.legionTradition = 0]] <</if>> - <<if $pharaonTradition == 1>> + <<if $SecExp.edicts.defense.pharaonTradition == 1>> <br>''@@.lime;Pharaonic traditions:@@'' you are funding specialized training for your recruits to turn them into an army worthy of a pharaon. - [[Repeal|edicts][$pharaonTradition = 0]] + [[Repeal|edicts][$SecExp.edicts.defense.pharaonTradition = 0]] <</if>> - <<if $eagleWarriors == 1>> + <<if $SecExp.edicts.defense.eagleWarriors == 1>> <br>''@@.lime;Eagle warriors traditions:@@'' you are funding specialized training for your mercenaries following the Aztec tradition of elite warriors. - [[Repeal|edicts][$eagleWarriors = 0]] + [[Repeal|edicts][$SecExp.edicts.defense.eagleWarriors = 0]] <</if>> - <<if $ronin == 1>> + <<if $SecExp.edicts.defense.ronin == 1>> <br>''@@.lime;Ronin traditions:@@'' you are funding specialized training for your mercenaries following the Japanese tradition of elite errant samurai. - [[Repeal|edicts][$ronin = 0]] + [[Repeal|edicts][$SecExp.edicts.defense.ronin = 0]] <</if>> - <<if $mamluks == 1>> + <<if $SecExp.edicts.defense.mamluks == 1>> <br>''@@.lime;Mamluks traditions:@@'' you are funding specialized training for your slaves following the Arabian tradition of mamluks slave soldiers. - [[Repeal|edicts][$mamluks = 0]] + [[Repeal|edicts][$SecExp.edicts.defense.mamluks = 0]] <</if>> - <<if $sunTzu == 1>> + <<if $SecExp.edicts.defense.sunTzu == 1>> <br>''@@.lime;Sun Tzu Teachings:@@'' you are funding specialized training for your units and officers to follow the teachings of the "Art of War". - [[Repeal|edicts][$sunTzu = 0]] + [[Repeal|edicts][$SecExp.edicts.defense.sunTzu = 0]] <</if>> <</if>> @@ -224,30 +224,30 @@ ''__Available Edicts__'' <br>//Passing any edict will cost <<print cashFormat(5000)>> and some authority. More edicts will become available as the arcology develops.// </div> -<<if $alternativeRents == 0>> +<<if $SecExp.edicts.alternativeRents == 0>> <br>''Alternative rent payment:'' allow citizens to pay for their rents in menial slaves rather than cash, if so they wish. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$alternativeRents = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.alternativeRents = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> <br> //Will decrease rents, but will supply a small amount of menial slaves each week.// <</if>> -<<if $enslavementRights == 0>> +<<if $SecExp.edicts.enslavementRights == 0>> <br>''Enslavement rights:'' the arcology owner will be the only authority able to declare a person enslaved or not. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$enslavementRights = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.enslavementRights = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> <br> //Will provide cash each week. The higher the flux of citizens to slaves the higher the income. Will cost a small amount of authority each week.// <</if>> -<<if $sellData == 0 && ($secUpgrades.nanoCams == 1 || $secUpgrades.cyberBots == 1 || $secUpgrades.eyeScan == 1 || $secUpgrades.cryptoAnalyzer == 1 || $crimeUpgrades.autoTrial == 1 || $crimeUpgrades.autoArchive == 1 || $crimeUpgrades.worldProfiler == 1 || $crimeUpgrades.advForensic == 1)>> +<<if $SecExp.edicts.sellData == 0 && ($secUpgrades.nanoCams == 1 || $secUpgrades.cyberBots == 1 || $secUpgrades.eyeScan == 1 || $secUpgrades.cryptoAnalyzer == 1 || $crimeUpgrades.autoTrial == 1 || $crimeUpgrades.autoArchive == 1 || $crimeUpgrades.worldProfiler == 1 || $crimeUpgrades.advForensic == 1)>> <br>''Private Data marketization:'' allow the selling of private citizens' data. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$sellData = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.sellData = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -255,10 +255,10 @@ <</if>> <<if $SecExp.buildings.propHub.active == 1>> - <<if $propCampaignBoost == 0>> + <<if $SecExp.edicts.propCampaignBoost == 0>> <br>''Obligatory educational material:'' force residents to read curated educational material about the arcology. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$propCampaignBoost = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.propCampaignBoost = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -267,19 +267,19 @@ <</if>> <<if $transportHub == 1>> - <<if $tradeLegalAid == 0>> + <<if $SecExp.edicts.tradeLegalAid == 0>> <br>''Legal aid for new businesses:'' Support new businesses in the arcology by helping them cover legal costs and issues. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$tradeLegalAid = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.tradeLegalAid = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> <br> //Will increase trade, but will incur upkeep costs.// <</if>> - <<if $taxTrade == 0>> + <<if $SecExp.edicts.taxTrade == 0>> <br>''Trade tariffs:'' all goods transitioning in your arcology will have to pay a transition fee. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$taxTrade = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.taxTrade = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -288,10 +288,10 @@ <</if>> <<if $arcologies[0].FSPaternalist != "unset">> - <<if $slaveWatch == 0>> + <<if $SecExp.edicts.slaveWatch == 0>> <br>''@@.lime;Slave mistreatment watch:@@'' slaves will be able access a special security service in case of mistreatment. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$slaveWatch = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.slaveWatch = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -300,10 +300,10 @@ <</if>> <<if $arcologies[0].FSChattelReligionist >= 40>> - <<if $subsidyChurch == 0>> + <<if $SecExp.edicts.subsidyChurch == 0>> <br>''@@.lime;Religious activities subsidy:@@'' will provide economic support to religious activities following the official dogma. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$subsidyChurch = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.subsidyChurch = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -311,44 +311,44 @@ <</if>> <</if>> -<<if $SF.Toggle && $SF.Active >= 1 && $SFSupportLevel < 5>> +<<if $SF.Toggle && $SF.Active >= 1 && $SecExp.edicts.SFSupportLevel < 5>> <br><br>__Special Force:__ - <<if !$SFSupportLevel && App.SecExp.Check.reqMenials() > 5>> + <<if !$SecExp.edicts.SFSupportLevel && App.SecExp.Check.reqMenials() > 5>> <br>''Equipment provision:'' <<= App.SF.Caps()>> will provide the security HQ with advanced equipment. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$SFSupportLevel++, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.SFSupportLevel++, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> <br> //Will lower the amount of personnel necessary to man the security HQ by 5, but will incur upkeep costs.// - <<elseif $SFSupportLevel && $SF.Squad.Firebase >= 4 && App.SecExp.Check.reqMenials() > 5>> + <<elseif $SecExp.edicts.SFSupportLevel && $SF.Squad.Firebase >= 4 && App.SecExp.Check.reqMenials() > 5>> <br>''Personnel training:'' <<= App.SF.Caps()>> will provide the security HQ personnel with advanced training. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$SFSupportLevel++, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.SFSupportLevel++, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> <br> //Will lower the amount of personnel necessary to man the security HQ by a further 5, but will incur additional upkeep costs.// - <<elseif $SFSupportLevel === 2 && $SF.Squad.Firebase >= 6 && App.SecExp.Check.reqMenials() > 5>> + <<elseif $SecExp.edicts.SFSupportLevel === 2 && $SF.Squad.Firebase >= 6 && App.SecExp.Check.reqMenials() > 5>> <br>''Troops detachment:'' <<= App.SF.Caps()>> will provide troops to the security department. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$SFSupportLevel++, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.SFSupportLevel++, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> <br> //Will lower the amount of personnel necessary to man the security HQ by a further 5, but will incur additional upkeep costs.// - <<elseif $SFSupportLevel === 3 && $SF.Squad.Firebase >= 6 && App.SecExp.Check.reqMenials() > 5>> + <<elseif $SecExp.edicts.SFSupportLevel === 3 && $SF.Squad.Firebase >= 6 && App.SecExp.Check.reqMenials() > 5>> <br>''Full Support:'' <<= App.SF.Caps()>> will give the security department its full support. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$SFSupportLevel++, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.SFSupportLevel++, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> <br> //Will lower the amount of personnel necessary to man the security HQ by a further 5, but will incur additional upkeep costs.// - <<elseif $SFSupportLevel === 4 && $SF.Squad.Firebase === 10 && App.SecExp.Check.reqMenials() > 5>> + <<elseif $SecExp.edicts.SFSupportLevel === 4 && $SF.Squad.Firebase === 10 && App.SecExp.Check.reqMenials() > 5>> <br>''Network assistance:'' <<= App.SF.Caps()>> will assist the security department with installing a local version of their custom network. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$SFSupportLevel++, cashX(-50000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.SFSupportLevel++, cashX(-50000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -358,20 +358,20 @@ <br><br>__Immigration:__ -<<if $limitImmigration == 0>> +<<if $SecExp.edicts.limitImmigration == 0>> <br>''Immigration limits:'' institute limits to the amount of people the arcology will accept each week. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$openBorders = 0, $limitImmigration = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.openBorders = 0, $SecExp.edicts.limitImmigration = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> <br> //Will lower the amount of people immigrating into the arcology and enhance security.// <</if>> -<<if $openBorders == 0>> +<<if $SecExp.edicts.openBorders == 0>> <br>''Open borders:'' considerably lower requirements to become citizens. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$openBorders = 1, $limitImmigration = 0, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.openBorders = 1, $SecExp.edicts.limitImmigration = 0, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -379,48 +379,48 @@ <</if>> <br><br>__Weapons:__ -<<if $weaponsLaw == 3>> +<<if $SecExp.edicts.weaponsLaw == 3>> <br>''Heavy weaponry forbidden:'' set the range of weapons allowed within the arcology to non-heavy, non-explosive. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$weaponsLaw = 2, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.weaponsLaw = 2, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> <br> //Will slightly increase prosperity, but will cost a small amount of authority each week and will leave rebellions decently armed.// -<<elseif $weaponsLaw == 2>> +<<elseif $SecExp.edicts.weaponsLaw == 2>> <br>''All weapons allowed:'' allow residents of the arcology to buy, sell and keep weaponry of any kind within the arcology. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$weaponsLaw = 3, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.weaponsLaw = 3, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> <br> //Will slightly increase prosperity and provide a small weekly amount of reputation, but rebellions will be very well armed.// <br>''Heavily restricted weaponry:'' set the range of weapons allowed within the arcology to non-automatic, non-high caliber. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$weaponsLaw = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.weaponsLaw = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> <br> //Will cost some authority each week, but rebellions will be poorly armed.// -<<elseif $weaponsLaw == 1>> +<<elseif $SecExp.edicts.weaponsLaw == 1>> <br>''Heavy weaponry forbidden:'' set the range of weapons allowed within the arcology to non-heavy, non-explosive. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$weaponsLaw = 2, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.weaponsLaw = 2, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> <br> //Will slightly increase prosperity, but will cost a small amount of authority each week and will leave rebellions decently armed.// <br>''Forbid weapons inside the arcology:'' forbid residents to buy, sell and keep weaponry while within the arcology. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$weaponsLaw = 0, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.weaponsLaw = 0, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> <br> //Will cost a moderate amount of authority each week, but rebellions will be very poorly armed.// -<<elseif $weaponsLaw == 0>> +<<elseif $SecExp.edicts.weaponsLaw == 0>> <br>''Heavily restricted weaponry:'' set the range of weapons allowed within the arcology to non-automatic, non-high caliber. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$weaponsLaw = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.weaponsLaw = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -430,25 +430,25 @@ <<if $battlesCount > 0 || $rebellionsCount > 0 || $mercenaries > 0>> <br><br>__Defense Force__: - <<if $soldierWages == 0>> + <<if $SecExp.edicts.defense.soldierWages == 0>> <br>''Average wages for soldiers:'' will set the wages paid to the soldiers of the arcology to an average amount. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$soldierWages += 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.soldierWages += 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> <br> //Will raise all units upkeep and push loyalty to average levels.// - <<elseif $soldierWages == 1>> + <<elseif $SecExp.edicts.defense.soldierWages == 1>> <br>''Low wages for soldiers:'' will set the wages paid to the soldiers of the arcology to a low amount. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$soldierWages -= 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.soldierWages -= 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> <br> //Will lower all units upkeep and push loyalty to low levels.// <br>''High wages for soldiers:'' will set the wages paid to the soldiers of the arcology to a high amount. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$soldierWages += 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.soldierWages += 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -456,17 +456,17 @@ <<else>> <br>''Average wages for soldiers:'' will set the wages paid to the soldiers of the arcology to an average amount. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$soldierWages -= 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.soldierWages -= 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> <br> //Will lower all units upkeep and push loyalty to average levels.// <</if>> - <<if $slavesOfficers == 0>> + <<if $SecExp.edicts.defense.slavesOfficers == 0>> <br>''Slave Officers:'' allow your trusted slaves to lead the defense forces of the arcology. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$slavesOfficers = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.slavesOfficers = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -474,10 +474,10 @@ <</if>> <<if $mercenaries > 0>> - <<if $discountMercenaries == 0>> + <<if $SecExp.edicts.defense.discountMercenaries == 0>> <br>''Mercenary subsidy:'' mercenaries willing to immigrate in your arcology will be offered a discount on rent. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$discountMercenaries = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.discountMercenaries = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -533,10 +533,10 @@ <br> //Will very quickly replenish militia manpower and will cap at 20% of the total citizens population, but has an extremely high authority cost// <</if>> - <<if $militaryExemption == 0 && ($conscription == 1 || $militaryService == 1 || $militarizedSociety == 1)>> + <<if $SecExp.edicts.defense.militaryExemption == 0 && ($conscription == 1 || $militaryService == 1 || $militarizedSociety == 1)>> <br>''Military exemption:'' allow citizens to avoid military duty by paying a weekly fee. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$militaryExemption = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.militaryExemption = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -544,10 +544,10 @@ <</if>> <<if $arcologies[0].FSHedonisticDecadence >= 40>> - <<if $lowerRequirements == 0>> + <<if $SecExp.edicts.defense.lowerRequirements == 0>> <br>''@@.lime;Revised minimum requirements:@@'' will allow citizens outside the normally accepted range to join the militia. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$lowerRequirements = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.lowerRequirements = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -556,10 +556,10 @@ <</if>> <<if $arcologies[0].FSSubjugationist >= 40>> - <<if $noSubhumansInArmy == 0>> + <<if $SecExp.edicts.defense.noSubhumansInArmy == 0>> <br>''@@.lime;No subhumans in the militia:@@'' prevent subhumans from joining the militia. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$noSubhumansInArmy = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.noSubhumansInArmy = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -568,10 +568,10 @@ <</if>> <<if $arcologies[0].FSRepopulationFocus >= 40 && ($conscription == 1 || $militaryService == 1 || $militarizedSociety == 1)>> - <<if $pregExemption == 0>> + <<if $SecExp.edicts.defense.pregExemption == 0>> <br>''@@.lime;Military exemption for pregnancies:@@'' pregnant citizens will be allowed, and encouraged, to avoid military service. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$pregExemption = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.pregExemption = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -580,30 +580,30 @@ <</if>> <</if>> - <<if $militiaSoldierPrivilege == 0 && $militiaFounded == 1>> + <<if $SecExp.edicts.defense.privilege.militiaSoldier == 0 && $militiaFounded == 1>> <br>''Special militia privileges'' will allow citizens joining the militia to avoid paying rent. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$militiaSoldierPrivilege = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.privilege.militiaSoldier = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> <br> //Will increase the loyalty of militia units, but will decrease rents.// <</if>> - <<if $slaveSoldierPrivilege == 0>> + <<if $SecExp.edicts.defense.privilege.slaveSoldier == 0>> <br>''Special slaves privileges'' will allow slaves drafted into the army to be able to have material possessions. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$slaveSoldierPrivilege = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.privilege.slaveSoldier = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> <br> //Will increase the loyalty of slave units, but will cost authority each week.// <</if>> - <<if $mercSoldierPrivilege == 0 && $mercenaries > 0>> + <<if $SecExp.edicts.defense.privilege.mercSoldier == 0 && $mercenaries > 0>> <br>''Special mercenary privileges'' will allow mercenaries under contract to claim part of the loot gained from battles. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$mercSoldierPrivilege = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.privilege.mercSoldier = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -611,10 +611,10 @@ <</if>> <<if $arcologies[0].FSPhysicalIdealist >= 40>> - <<if $martialSchool == 0>> + <<if $SecExp.edicts.defense.martialSchool == 0>> <br>''@@.lime;Slave martial schools:@@'' specialized schools will be set up to train slaves in martial arts and bodyguarding. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$martialSchool = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.martialSchool = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -623,10 +623,10 @@ <</if>> <<if $arcologies[0].FSRestart >= 40>> - <<if $eliteOfficers == 0>> + <<if $SecExp.edicts.defense.eliteOfficers == 0>> <br>''@@.lime;Elite officers:@@'' officers will be exclusively recruited from the elite of society. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$eliteOfficers = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.eliteOfficers = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -635,10 +635,10 @@ <</if>> <<if $arcologies[0].FSDegradationist >= 40>> - <<if $liveTargets == 0>> + <<if $SecExp.edicts.defense.liveTargets == 0>> <br>''@@.lime;Live targets drills:@@'' disobedient slaves will be used as live targets at shooting ranges. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$liveTargets = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.liveTargets = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -650,10 +650,10 @@ <<if $FSAnnounced>> <br><br>__Future Societies:__ <<if $arcologies[0].FSRomanRevivalist >= 40 && $militiaFounded == 1>> - <<if $legionTradition == 0>> + <<if $SecExp.edicts.defense.legionTradition == 0>> <br>''@@.lime;Legionaries traditions:@@'' Fund specialized training for your recruits to turn them into the professional of Roman tradition. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$legionTradition = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.legionTradition = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -662,10 +662,10 @@ <</if>> <<if $arcologies[0].FSEgyptianRevivalist >= 40 && $militiaFounded == 1>> - <<if $pharaonTradition == 0>> + <<if $SecExp.edicts.defense.pharaonTradition == 0>> <br>''@@.lime;Pharaonic traditions:@@'' Fund specialized training for your recruits to turn them into an army worthy of a pharaoh. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$pharaonTradition = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.pharaonTradition = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -674,10 +674,10 @@ <</if>> <<if $arcologies[0].FSAztecRevivalist >= 40 && $mercenaries > 0>> - <<if $eagleWarriors == 0>> + <<if $SecExp.edicts.defense.eagleWarriors == 0>> <br>''@@.lime;Eagle warriors traditions:@@'' Fund specialized training for your mercenaries to turn them into the elite units of Aztec tradition. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$eagleWarriors = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.eagleWarriors = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -686,10 +686,10 @@ <</if>> <<if $arcologies[0].FSEdoRevivalist >= 40 && $mercenaries > 0>> - <<if $ronin == 0>> + <<if $SecExp.edicts.defense.ronin == 0>> <br>''@@.lime;Ronin traditions:@@'' Fund specialized training for your mercenaries to turn them into the errant samurai of Japanese tradition. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$ronin = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.ronin = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -698,10 +698,10 @@ <</if>> <<if $arcologies[0].FSArabianRevivalist >= 40>> - <<if $mamluks == 0>> + <<if $SecExp.edicts.defense.mamluks == 0>> <br>''@@.lime;Mamluks traditions:@@'' Fund specialized training for your slaves to turn them into the mamluks slave soldiers of Arabian tradition. <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$mamluks = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.mamluks = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> @@ -710,10 +710,10 @@ <</if>> <<if $arcologies[0].FSChineseRevivalist >= 40>> - <<if $sunTzu == 0>> + <<if $SecExp.edicts.defense.sunTzu == 0>> <br>''@@.lime;Sun Tzu Teachings:@@'' Fund specialized training for your units and officers to conform your army to the teachings of the "Art of War". <<if $SecExp.core.authority >= 1000>> - [[Implement|edicts][$sunTzu = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] + [[Implement|edicts][$SecExp.edicts.defense.sunTzu = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]] <<else>> <br>//Not enough Authority.// <</if>> diff --git a/src/Mods/SecExp/js/Unit.js b/src/Mods/SecExp/js/Unit.js index db2a025f91ae807fd2866e8c0530c9a38bba5dab..2eedd7203ea99d7c5725ce05430f8a3ffd83fabb 100644 --- a/src/Mods/SecExp/js/Unit.js +++ b/src/Mods/SecExp/js/Unit.js @@ -126,7 +126,7 @@ App.SecExp.getEdictUpgradeVal = (function() { function getNetEffect(unitType, stat) { let retval = 0; for (const [key, val] of data[unitType]) { - if (V[key] > 0 && val[stat]) { + if (V.SecExp.edicts.defense[key] > 0 && val[stat]) { retval += val[stat]; } } diff --git a/src/Mods/SecExp/js/secExp.js b/src/Mods/SecExp/js/secExp.js index 67defdae1fa91fa53edc3d464493094c751bcb80..0294c568c4866a1368225a526076707bb0cd2c42 100644 --- a/src/Mods/SecExp/js/secExp.js +++ b/src/Mods/SecExp/js/secExp.js @@ -2,6 +2,61 @@ globalThis.SecExpBase = function() { return new App.SecExp.SecurityExpansionState(); }; +App.SecExp.generalInit = function(){ + if (V.secExpEnabled === 0) { + return; + } + + Object.assign(V.SecExp, { + edicts: { + alternativeRents: 0, + enslavementRights: 0, + sellData: 0, + propCampaignBoost: 0, + tradeLegalAid: 0, + taxTrade: 0, + slaveWatch: 0, + subsidyChurch: 0, + SFSupportLevel: 0, + limitImmigration: 0, + openBorders: 0, + weaponsLaw: 3, + defense: { + soldierWages: 1, + slavesOfficers: 0, + discountMercenaries: 0, + /* + militiaFounded: 0, + recruitVolunteers: 0, + conscription: 0, + militaryService: 0, + militarizedSociety: 0, + */ + militaryExemption: 0, + noSubhumansInArmy: 0, + pregExemption: 0, + liveTargets: 0, + privilege: { + militiaSoldier: 0, + slaveSoldier: 0, + mercSoldier: 0, + }, + // Soldiers + martialSchool: 0, + eliteOfficers: 0, + lowerRequirements: 0, + // FS soldiers + legionTradition: 0, + eagleWarriors: 0, + ronin: 0, + sunTzu: 0, + mamluks: 0, + pharaonTradition: 0, + } + }, + }); +}; + App.SecExp.upkeep = (function() { return { edictsCash, @@ -15,15 +70,21 @@ App.SecExp.upkeep = (function() { */ function edictsCash() { let value = 0; - const vars = ['slaveWatch', 'subsidyChurch', 'martialSchool', - 'legionTradition', 'pharaonTradition', 'eagleWarriors', 'ronin', - 'mamluks', 'sunTzu', 'tradeLegalAid', 'propCampaignBoost']; - for(let i = 0; i < vars.length; i++) { - if (jsDef(V[vars[i]]) && V[vars[i]] > 0) { - value += 1000; - } - } - return value; + if (V.SecExp.edicts.slaveWatch) { value++; } + if (V.SecExp.edicts.subsidyChurch) { value++; } + if (V.SecExp.edicts.tradeLegalAid) { value++; } + if (V.SecExp.edicts.propCampaignBoost) { value++; } + + if (V.SecExp.edicts.defense.martialSchool) { value++; } + + if (V.SecExp.edicts.defense.legionTradition) { value++; } + if (V.SecExp.edicts.defense.pharaonTradition) { value++; } + if (V.SecExp.edicts.defense.eagleWarriors) { value++; } + if (V.SecExp.edicts.defense.ronin) { value++; } + if (V.SecExp.edicts.defense.mamluks) { value++; } + if (V.SecExp.edicts.defense.sunTzu) { value++; } + + return value*1000; } /** Upkeep cost of edicts, in authority @@ -31,23 +92,23 @@ App.SecExp.upkeep = (function() { */ function edictsAuth() { let value = 0; - if (V.enslavementRights > 0) { + if (V.SecExp.edicts.enslavementRights > 0) { value += 10; } - if (V.sellData === 1) { + if (V.SecExp.edicts.sellData === 1) { value += 10; } - if (V.slaveSoldierPrivilege === 1) { + if (V.SecExp.edicts.defense.privilege.slaveSoldier === 1) { value += 10; } - if (V.weaponsLaw === 0) { + if (V.SecExp.edicts.weaponsLaw === 0) { value += 30; - } else if (V.weaponsLaw === 1) { + } else if (V.SecExp.edicts.weaponsLaw === 1) { value += 20; - } else if (V.weaponsLaw === 2) { + } else if (V.SecExp.edicts.weaponsLaw === 2) { value += 10; } - if (V.slavesOfficers === 1) { + if (V.SecExp.edicts.defense.slavesOfficers === 1) { value += 10; } return value; @@ -58,19 +119,19 @@ App.SecExp.upkeep = (function() { */ function SF() { let value = 0; - if (V.SFSupportLevel >= 1) { + if (V.SecExp.edicts.SFSupportLevel >= 1) { value += 1000; } - if (V.SFSupportLevel >= 2) { + if (V.SecExp.edicts.SFSupportLevel >= 2) { value += 2000; } - if (V.SFSupportLevel >= 3) { + if (V.SecExp.edicts.SFSupportLevel >= 3) { value += 3000; } - if (V.SFSupportLevel >= 4) { + if (V.SecExp.edicts.SFSupportLevel >= 4) { value += 3000; } - if (V.SFSupportLevel >= 5) { + if (V.SecExp.edicts.SFSupportLevel >= 5) { value += 4000; } return value; @@ -106,7 +167,7 @@ App.SecExp.upkeep = (function() { for(let i = 0; i < buildingUgradePool.length; i++) { value += upgrade*buildingUgradePool[i]; } - if (V.SFSupportLevel >= 5) { + if (V.SecExp.edicts.SFSupportLevel >= 5) { value += 1000; } } @@ -456,8 +517,8 @@ App.SecExp.Check = (function() { if(V.readinessUpgrades.earlyWarn === 1) { Req += 10; } - if(V.SFSupportLevel >= 1) { - Req -= 5 * V.SFSupportLevel; + if(V.SecExp.edicts.SFSupportLevel >= 1) { + Req -= 5 * V.SecExp.edicts.SFSupportLevel; } if(V.secUpgrades.coldstorage >= 1) { Req -= 10 * V.secUpgrades.coldstorage; diff --git a/src/Mods/SecExp/js/secExpBC.js b/src/Mods/SecExp/js/secExpBC.js index 6429660a351f0716cb8bdd35cfdc717863f1e4df..aa8147d4051cd008bb3454d2bccbc92363f0c380 100644 --- a/src/Mods/SecExp/js/secExpBC.js +++ b/src/Mods/SecExp/js/secExpBC.js @@ -10,12 +10,15 @@ App.SecExp.generalBC = function (){ V.secExpEnabled = 0; } V.SecExp = V.SecExp || SecExpBase(); + V.SecExp.settings = V.SecExp.settings || {}; delete V.SecExp.settings.show; delete V.SecExp.army; if (V.secExpEnabled > 0) { + checkEdicts(); + Object.assign(V.secBots, { active: V.secBots.active || V.arcologyUpgrade.drones > 0 ? 1 : 0, ID: -1, @@ -240,4 +243,54 @@ App.SecExp.generalBC = function (){ if (jsDef(V.SecExp.core)) { delete V.SecExp.core.crimeCap; } + function checkEdicts() { + // Edicts + V.SecExp.edicts = V.SecExp.edicts || {}; + V.SecExp.edicts.alternativeRents = V.SecExp.edicts.alternativeRents || V.alternativeRents || 0; + V.SecExp.edicts.enslavementRights = V.SecExp.edicts.enslavementRights || V.enslavementRights || 0; + V.SecExp.edicts.sellData = V.SecExp.edicts.sellData || V.sellData || 0; + V.SecExp.edicts.propCampaignBoost = V.SecExp.edicts.propCampaignBoost || V.propCampaignBoost || 0; + V.SecExp.edicts.tradeLegalAid = V.SecExp.edicts.tradeLegalAid || V.tradeLegalAid || 0; + V.SecExp.edicts.taxTrade = V.SecExp.edicts.taxTrade || V.taxTrade || 0; + V.SecExp.edicts.slaveWatch = V.SecExp.edicts.slaveWatch || V.slaveWatch || 0; + V.SecExp.edicts.subsidyChurch = V.SecExp.edicts.subsidyChurch || V.subsidyChurch || 0; + V.SecExp.edicts.SFSupportLevel = V.SecExp.edicts.SFSupportLevel || V.SFSupportLevel || 0; + V.SecExp.edicts.limitImmigration = V.SecExp.edicts.limitImmigration || V.limitImmigration || 0; + V.SecExp.edicts.openBorders = V.SecExp.edicts.openBorders || V.openBorders || 0; + V.SecExp.edicts.weaponsLaw = V.SecExp.edicts.weaponsLaw || V.weaponsLaw || 3; + + V.SecExp.edicts.defense = V.SecExp.edicts.defense || {}; + V.SecExp.edicts.defense.soldierWages = V.SecExp.edicts.defense.soldierWages || V.soldierWages || 1; + V.SecExp.edicts.defense.slavesOfficers = V.SecExp.edicts.defense.slavesOfficers || V.slavesOfficers || 0; + V.SecExp.edicts.defense.discountMercenaries = V.SecExp.edicts.defense.discountMercenaries || V.discountMercenaries || 0; + /* + V.militiaFounded = V.militiaFounded || V.militiaFounded || 0; + V.recruitVolunteers = V.recruitVolunteers || V.recruitVolunteers || 0; + V.conscription = V.conscription || V.conscription || 0; + V.militaryService = V.militaryService || V.militaryService || 0; + V.militarizedSociety = V.militarizedSociety || V.militarizedSociety || 0; + */ + V.SecExp.edicts.defense.militaryExemption = V.SecExp.edicts.defense.militaryExemption || V.militaryExemption || 0; + V.SecExp.edicts.defense.noSubhumansInArmy = V.SecExp.edicts.defense.noSubhumansInArmy || V.noSubhumansInArmy || 0; + V.SecExp.edicts.defense.pregExemption = V.SecExp.edicts.defense.pregExemption || V.pregExemption || 0; + V.SecExp.edicts.defense.liveTargets = V.SecExp.edicts.defense.liveTargets || V.liveTargets || 0; + V.SecExp.edicts.defense.pregExemption = V.SecExp.edicts.defense.pregExemption || V.pregExemption || 0; + + // Units + V.SecExp.edicts.defense.martialSchool = V.SecExp.edicts.defense.martialSchool || V.martialSchool || 0; + V.SecExp.edicts.defense.eliteOfficers = V.SecExp.edicts.defense.eliteOfficers || V.eliteOfficers || 0; + V.SecExp.edicts.defense.lowerRequirements = V.SecExp.edicts.defense.lowerRequirements || V.lowerRequirements|| V.lowerRquirements || 0; + V.SecExp.edicts.defense.legionTradition = V.SecExp.edicts.defense.legionTradition || V.legionTradition || 0; + V.SecExp.edicts.defense.eagleWarriors = V.SecExp.edicts.defense.eagleWarriors || V.eagleWarriors || 0; + V.SecExp.edicts.defense.ronin = V.SecExp.edicts.defense.ronin || V.ronin || 0; + V.SecExp.edicts.defense.sunTzu = V.SecExp.edicts.defense.sunTzu || V.sunTzu || 0; + V.SecExp.edicts.defense.mamluks = V.SecExp.edicts.defense.mamluks || V.mamluks || 0; + V.SecExp.edicts.defense.pharaonTradition = V.SecExp.edicts.defense.pharaonTradition || V.pharaonTradition || 0; + + // Priv + V.SecExp.edicts.defense.privilege = V.SecExp.edicts.defense.privilege || {}; + V.SecExp.edicts.defense.privilege.militiaSoldier = V.SecExp.edicts.defense.privilege.militiaSoldier || V.militiaSoldier || 0; + V.SecExp.edicts.defense.privilege.slaveSoldier = V.SecExp.edicts.defense.privilege.slaveSoldier || V.slaveSoldier || 0; + V.SecExp.edicts.defense.privilege.mercSoldier = V.SecExp.edicts.defense.privilege.mercSoldier || V.mercSoldier || 0; + } }; diff --git a/src/Mods/SecExp/rebellionGenerator.tw b/src/Mods/SecExp/rebellionGenerator.tw index 9fce42c4b92fd5fca715e3f9301994541c381da8..78a0737f3220dfd41533cb7943cf46fffe6b4933 100644 --- a/src/Mods/SecExp/rebellionGenerator.tw +++ b/src/Mods/SecExp/rebellionGenerator.tw @@ -348,7 +348,7 @@ <</if>> <</if>> <</for>> - <<set $attackEquip = Math.clamp($weaponsLaw + random(-2,1),0,4)>> + <<set $attackEquip = Math.clamp($SecExp.edicts.weaponsLaw + random(-2,1),0,4)>> <<elseif $citizenRebellion == 1>> <<set $engageRule = 0>> <<set $lastRebellionWeeks = 0>> @@ -406,7 +406,7 @@ <</if>> <</if>> <</for>> - <<set $attackEquip = Math.clamp($weaponsLaw + random(-1,1),0,4)>> + <<set $attackEquip = Math.clamp($SecExp.edicts.weaponsLaw + random(-1,1),0,4)>> <<else>> <<set $lastRebellionWeeks++>> <</if>> \ No newline at end of file diff --git a/src/Mods/SecExp/securityReport.tw b/src/Mods/SecExp/securityReport.tw index 5022cc0a57f85835f9c0f019016b97e034584ca4..67d97ae6b24ea916c65a1e847d070e9761993642 100644 --- a/src/Mods/SecExp/securityReport.tw +++ b/src/Mods/SecExp/securityReport.tw @@ -189,17 +189,17 @@ <</if>> <<if $SF.Toggle && $SF.Active >= 1>> - <<if $SFSupportLevel >= 3>> + <<if $SecExp.edicts.SFSupportLevel >= 3>> The two squads of $SF.Lower assigned to the Security HQ provide an essential help to the security department. <</if>> - <<if $SFSupportLevel >= 2>> + <<if $SecExp.edicts.SFSupportLevel >= 2>> The training officers of $SF.Lower assigned to the Security HQ improve its effectiveness. <</if>> - <<if $SFSupportLevel >= 1>> + <<if $SecExp.edicts.SFSupportLevel >= 1>> Providing your Security Department with equipment from $SF.Lower slightly boosts the security of your arcology. <</if>> - <<if $SFSupportLevel >= 1>> - <<set _secGrowth *= 1+($SFSupportLevel/10)>> + <<if $SecExp.edicts.SFSupportLevel >= 1>> + <<set _secGrowth *= 1+($SecExp.edicts.SFSupportLevel/10)>> <</if>> <</if>> @@ -361,7 +361,7 @@ Due to the deterioration of the old world countries, organized crime focuses mor <<if $SecExp.buildings.propHub.active > 0>> <<if $SecExp.buildings.propHub.campaign >= 1 && $SecExp.buildings.propHub.focus == "recruitment">> <<if $SecExp.buildings.propHub.recruiterOffice === 0 || $RecruiterID == 0>> - <<if $propCampaignBoost == 1>> + <<if $SecExp.edicts.propCampaignBoost == 1>> <<set _recruitsMultiplier *= 1.1>> <<else>> <<set _recruitsMultiplier *= 1.05>> @@ -369,7 +369,7 @@ Due to the deterioration of the old world countries, organized crime focuses mor <<elseif $SecExp.buildings.propHub.recruiterOffice > 0 && $RecruiterID > 0>> <<setLocalPronouns _S.Recruiter>> <span class='slave-name'><<= SlaveFullName(_S.Recruiter)>></span> is able to further boost your militia recruitment campaign from $his PR hub office. - <<if $propCampaignBoost == 1>> + <<if $SecExp.edicts.propCampaignBoost == 1>> <<set _recruitsMultiplier *= 1.2 + ((_S.Recruiter.intelligence+_S.Recruiter.intelligenceImplant)/650)>> <<else>> <<set _recruitsMultiplier *= 1.15 + ((_S.Recruiter.intelligence+_S.Recruiter.intelligenceImplant)/650)>> @@ -388,67 +388,67 @@ Due to the deterioration of the old world countries, organized crime focuses mor Many citizens feel it is their duty to fight for you, boosting volunteer enrollment. <<set _recruitLimit += 0.0025>> <</if>> - <<if $lowerRequirements == 1>> + <<if $SecExp.edicts.defense.lowerRequirements == 1>> Your lax physical requirements to enter the militia allows for a greater number of citizens to join. <<set _recruitLimit += 0.0025>> <</if>> <<elseif $conscription == 1>> Adult citizens are required to join the militia for a period of time. <<set _recruitLimit = 0.05>> - <<if $militaryExemption == 1>> + <<if $SecExp.edicts.defense.militaryExemption == 1>> Some citizens prefer to contribute to the arcology's defense through financial support rather than military service, making you @@.yellowgreen;a small sum.@@ <<set _recruitLimit -= 0.005>> <<run cashX(250, "securityExpansion")>> <</if>> - <<if $lowerRequirements == 1>> + <<if $SecExp.edicts.defense.lowerRequirements == 1>> Your lax physical requirements to enter the militia allows for a greater number of citizens to join. <<set _recruitLimit += 0.005>> <</if>> - <<if $noSubhumansInArmy == 1>> + <<if $SecExp.edicts.defense.noSubhumansInArmy == 1>> Guaranteeing the purity of your armed forces comes with a small loss of potential recruits. <<set _recruitLimit -= 0.005>> <</if>> - <<if $pregExemption == 1>> + <<if $SecExp.edicts.defense.pregExemption == 1>> Many pregnant citizens prefer to avoid military service not to endanger themselves and their children. <<set _recruitLimit -= 0.005>> <</if>> <<elseif $militaryService == 1>> Adult citizens are required to register and serve in the militia whenever necessary. <<set _recruitLimit = 0.1>> - <<if $militaryExemption == 1>> + <<if $SecExp.edicts.defense.militaryExemption == 1>> Some citizens prefer to contribute to the arcology's defense through financial support rather than military service, making you @@.yellowgreen;a small sum.@@ <<set _recruitLimit -= 0.01>> <<run cashX(250, "securityExpansion")>> <</if>> - <<if $lowerRequirements == 1>> + <<if $SecExp.edicts.defense.lowerRequirements == 1>> Your lax physical requirements to enter the militia allows for a greater number of citizens to join. <<set _recruitLimit += 0.01>> <</if>> - <<if $noSubhumansInArmy == 1>> + <<if $SecExp.edicts.defense.noSubhumansInArmy == 1>> Guaranteeing the purity of your armed forces comes with a small loss of potential recruits. <<set _recruitLimit -= 0.01>> <</if>> - <<if $pregExemption == 1>> + <<if $SecExp.edicts.defense.pregExemption == 1>> Many pregnant citizens prefer to avoid military service not to endanger themselves and their children. <<set _recruitLimit -= 0.01>> <</if>> <<elseif $militarizedSociety == 1>> Every citizen is required to train and participate in the military activities of the arcology. <<set _recruitLimit = 0.2>> - <<if $militaryExemption == 1>> + <<if $SecExp.edicts.defense.militaryExemption == 1>> Some citizens prefer to contribute to the arcology's defense through financial support rather than military service, making you @@.yellowgreen;a small sum.@@ <<set _recruitLimit -= 0.02>> <<run cashX(250, "securityExpansion")>> <</if>> - <<if $lowerRequirements == 1>> + <<if $SecExp.edicts.defense.lowerRequirements == 1>> Your lax physical requirements to enter the militia allows for a greater number of citizens to join. <<set _recruitLimit += 0.02>> <</if>> - <<if $noSubhumansInArmy == 1>> + <<if $SecExp.edicts.defense.noSubhumansInArmy == 1>> Guaranteeing the purity of your armed forces comes with a small loss of potential recruits. <<set _recruitLimit -= 0.02>> <</if>> - <<if $pregExemption == 1>> + <<if $SecExp.edicts.defense.pregExemption == 1>> Many pregnant citizens prefer to avoid military service not to endanger themselves and their children. <<set _recruitLimit -= 0.02>> <</if>> @@ -507,7 +507,7 @@ Due to the deterioration of the old world countries, organized crime focuses mor Having a powerful special force attracts a lot of mercenaries, hopeful that they may be able to fight along side it. <<set _newMercs += random(1,Math.round(_size/10))>> <</if>> - <<if $discountMercenaries > 0>> + <<if $SecExp.edicts.defense.discountMercenaries > 0>> More mercenaries are attracted to your arcology as a result of the reduced rent. <<set _newMercs += random(2,4)>> <</if>> @@ -539,17 +539,17 @@ Due to the deterioration of the old world countries, organized crime focuses mor The commissars attached to the unit carefully monitor the officers and grunts for signs of insubordination. <<set _loyaltyChange += 2 * $slaveUnits[_i].commissars>> <</if>> - <<if $soldierWages == 2>> + <<if $SecExp.edicts.defense.soldierWages == 2>> The slaves greatly appreciate the generous wage given to them for their service as soldiers. Occasions to earn money for a slave are scarce after all. <<set _loyaltyChange += random(5,10)>> - <<elseif $soldierWages == 1>> + <<elseif $SecExp.edicts.defense.soldierWages == 1>> The slaves appreciate the wage given to them for their service as soldiers, despite it being just adequate. Occasions to earn money for a slave are scarce after all. <<set _loyaltyChange += random(-5,5)>> <<else>> The slaves do not appreciate the low wage given to them for their service as soldiers, but occasions to earn money for a slave are scarce, so they're not too affected by it. <<set _loyaltyChange -= random(5,10)>> <</if>> - <<if $slaveSoldierPrivilege == 1>> + <<if $SecExp.edicts.defense.privilege.slaveSoldier == 1>> Allowing them to hold material possessions earns you their devotion and loyalty. <<set _loyaltyChange += random(1,2)>> <</if>> @@ -579,17 +579,17 @@ Due to the deterioration of the old world countries, organized crime focuses mor The commissars attached to the unit carefully monitor the officers and grunts for signs of insubordination. <<set _loyaltyChange += 2 * $militiaUnits[_i].commissars>> <</if>> - <<if $soldierWages == 2>> + <<if $SecExp.edicts.defense.soldierWages == 2>> The soldiers greatly appreciate the generous wage given to them for their service. They are proud to defend their homes while making a small fortune out of it. <<set _loyaltyChange += random(5,10)>> - <<elseif $soldierWages == 1>> + <<elseif $SecExp.edicts.defense.soldierWages == 1>> The soldiers appreciate the wage given to them for their service, despite it being just adequate. They are proud to defend their homes, though at the cost of possible financial gains. <<set _loyaltyChange += random(-5,5)>> <<else>> The soldiers do not appreciate the low wage given to them for their service. Their sense of duty keeps them proud of their role as defenders of the arcology, but many do feel its financial weight. <<set _loyaltyChange -= random(5,10)>> <</if>> - <<if $militiaSoldierPrivilege == 1>> + <<if $SecExp.edicts.defense.privilege.militiaSoldier == 1>> Allowing them to avoid rent payment for their military service earns you their happiness and loyalty. <<set _loyaltyChange += random(1,2)>> <</if>> @@ -619,17 +619,17 @@ Due to the deterioration of the old world countries, organized crime focuses mor The commissars attached to the unit carefully monitor the officers and grunts for signs of insubordination. <<set _loyaltyChange += 2 * $mercUnits[_i].commissars>> <</if>> - <<if $soldierWages == 2>> + <<if $SecExp.edicts.defense.soldierWages == 2>> The mercenaries greatly appreciate the generous wage given to them for their service. After all coin is the fastest way to reach their hearts. <<set _loyaltyChange += random(5,10)>> - <<elseif $soldierWages == 1>> + <<elseif $SecExp.edicts.defense.soldierWages == 1>> The mercenaries do not appreciate the barely adequate wage given to them for their service. Still their professionalism keeps them determined to finish their contract. <<set _loyaltyChange += random(-5,5)>> <<else>> The mercenaries do not appreciate the low wage given to them for their service. Their skill would be better served by a better contract and this world does not lack demand for guns for hire. <<set _loyaltyChange -= random(5,10)>> <</if>> - <<if $mercSoldierPrivilege == 1>> + <<if $SecExp.edicts.defense.privilege.mercSoldier == 1>> Allowing them to keep part of the loot gained from your enemies earns you their trust and loyalty. <<set _loyaltyChange += random(1,2)>> <</if>> diff --git a/src/Mods/SecExp/seeUnit.tw b/src/Mods/SecExp/seeUnit.tw index 882eb5e5987638a43c70c33677209683af559c0e..bd9769539bb0916bc37b44d90f6c5b43af821caf 100644 --- a/src/Mods/SecExp/seeUnit.tw +++ b/src/Mods/SecExp/seeUnit.tw @@ -25,7 +25,7 @@ <</link>> Invest in the development of more refined controls for your drones to increase the maximum number of drones in the unit. <br>//Costs <<print cashFormat(5000)>> per upgrade and each will increase the max by 10// - <<elseif $SF.Toggle && $SF.Active >= 1 && $secBots.maxTroops < 100 && $SFSupportLevel >= 1>> + <<elseif $SF.Toggle && $SF.Active >= 1 && $secBots.maxTroops < 100 && $SecExp.edicts.SFSupportLevel >= 1>> <br> <<link "Refine the drone network with $SF.Lower assistance" "seeUnit">> <<set $secBots.maxTroops += 10>> @@ -33,7 +33,7 @@ <</link>> Utilize the technological developments made by $SF.Lower to further improve the control matrix of the security drones. <br>//Costs <<print cashFormat(5000 + 10 * $secBotsUpgradeCost * $secBots.equip)>> and will increase the max by 10// - <<elseif $SF.Toggle && $SF.Active >= 1 && $SFSupportLevel < 1>> + <<elseif $SF.Toggle && $SF.Active >= 1 && $SecExp.edicts.SFSupportLevel < 1>> There's little left to improve in the matrix. However support from $SF.Lower might give some more room from improvement. <<else>> There's little left to improve in the matrix. Your control systems are at top capacity and won't be able to handle a bigger drone unit. diff --git a/src/Mods/SecExp/tradeReport.tw b/src/Mods/SecExp/tradeReport.tw index c27ede3daa09ae66db50ebf184ff50794148325f..fbea6a04a071f18644dc8de2967c4f97bf1507ce 100644 --- a/src/Mods/SecExp/tradeReport.tw +++ b/src/Mods/SecExp/tradeReport.tw @@ -62,12 +62,12 @@ <<set _tradeChange += 2>> <</if>> -<<if $tradeLegalAid == 1>> +<<if $SecExp.edicts.tradeLegalAid == 1>> Your support in legal matters for new businesses helps improve the economic dynamicity of your arcology, boosting commercial activities. <<set _tradeChange += 1>> <</if>> -<<if $taxTrade == 1>> +<<if $SecExp.edicts.taxTrade == 1>> The fees imposed on transitioning goods do little to earn you the favor of the companies making use of your arcology. <<set _tradeChange -= 1>> <</if>> diff --git a/src/Mods/SpecialForce/Firebase.tw b/src/Mods/SpecialForce/Firebase.tw index 65715dedda260b36cca9b39fd58329d65a044ad7..b3304a0f61fbfd4d2c9d9a2cc18a73a2753a582f 100644 --- a/src/Mods/SpecialForce/Firebase.tw +++ b/src/Mods/SpecialForce/Firebase.tw @@ -96,7 +96,7 @@ <br> <<if $SF.UC.Assign < 1>>''Zero''<<elseif $SF.UC.Assign < 2>>A ''small'' section<<else>>A ''large'' section<</if>> of the special force is assigned to undercover work, which will primarily advance your cultural goals while also slightly boosting your reputation. [[Re-allocate the units|Firebase][$SF.UC.Lock = 0]] <</if>> - <<if $SF.Squad.Firebase > 5 && $secExpEnabled > 0 && $SFSupportLevel >= 4 && App.SecExp.battle.maxUnits() === 18 && App.SecExp.battle.deploySpeed() <= 10>> + <<if $SF.Squad.Firebase > 5 && $secExpEnabled > 0 && $SecExp.edicts.SFSupportLevel >= 4 && App.SecExp.battle.maxUnits() === 18 && App.SecExp.battle.deploySpeed() <= 10>> <br><br>[[Provide the security force with their own section.|Firebase][$sectionInFirebase = 1, cashX(forceNeg(Math.ceil((750000*(1.15+(_size/1000))*(1.15+($SF.Squad.Firebase/10)))*_Env)), "specialForcesCap")]] @@.red;<<print cashFormat(Math.ceil((750000*(1.15+(_size/1000))*(1.15+($SF.Squad.Firebase/10)))*_Env))>>@@ <</if>> diff --git a/src/Mods/SpecialForce/SpecialForce.js b/src/Mods/SpecialForce/SpecialForce.js index 8d6ac223485053b3c72a7424b7966dc44e45a58c..98c495ea23ea1514d4ff826b688cca98e9f9eed6 100644 --- a/src/Mods/SpecialForce/SpecialForce.js +++ b/src/Mods/SpecialForce/SpecialForce.js @@ -2177,21 +2177,21 @@ App.SF.AAR = function(endWeekCall = 1) { FNG += S.Firebase; Trade += 0.5 * S.Firebase; Multiplier.unit += 7.5 * S.Firebase + 2 * Math.pow(S.Firebase, 2) * cost.a; - incomeAdd += (5000 * S.Firebase)/ S.Firebase - 1; + incomeAdd += (5000 * S.Firebase)/ Math.max(S.Firebase - 1, 1); upkeep += (95 * 10 + S.Firebase) * cost.b; } if (S.Armoury > 0) { FNG += 2 * S.Armoury; Trade += 0.25 * S.Armoury; Multiplier.unit += 7.5 * S.Armoury + 2 * Math.pow(S.Armoury, 2) * cost.a; - incomeAdd += (3000 * S.Armoury)/S.Armoury - 1; + incomeAdd += (3000 * S.Armoury)/Math.max(S.Armoury - 1, 1); upkeep += (55 * S.Armoury) * cost.b; } if (S.Drugs > 0) { FNG += S.Drugs; Trade += 0.25 * S.Drugs; Multiplier.unit += 7.5 * S.Drugs + 2 * Math.pow(S.Drugs, 2) * cost.a; - incomeAdd += (3000 * S.Drugs)/S.Drugs - 1; + incomeAdd += (3000 * S.Drugs)/Math.max(S.Drugs - 1, 1); upkeep += (35 * S.Drugs) * cost.b; } if (S.Firebase >= 1) { @@ -2361,14 +2361,14 @@ App.SF.AAR = function(endWeekCall = 1) { } } - income += incomeAdd + (1 + Multiplier.troop / N0) * (1 + Multiplier.unit / N0) * (1 + Multiplier.action / N0) * (1 + Multiplier.depravity / N0); + income += (1 + Multiplier.troop / N0) * (1 + Multiplier.unit / N0) * (1 + Multiplier.action / N0) * (1 + Multiplier.depravity / N0); upkeep += 30000 + (25000 * 1 / N1); if (V.SF.Target === "raiding") { income *= 1.25; } else if (V.SF.Target === "secure") { income *= 1.05; } else { // When recruiting, upkeep is lowered, effect dependent on amount of soldiers. At max capacity, multiplier back to 1. - upkeep *= 0.75 + (V.SF.ArmySize/100); + upkeep *= 0.75 + (V.SF.ArmySize/10000); } if (between(V.economy, 33, 100)) { @@ -2380,11 +2380,11 @@ App.SF.AAR = function(endWeekCall = 1) { } if (endWeekCall > 0) { V.SF.ArmySize += FNG; } - income = Math.ceil(income); + income = Math.ceil(income + incomeAdd); upkeep = Math.ceil(upkeep); profit = income - upkeep; if (V.debugMode > 0 && endWeekCall > 0) { - r += `<br>income:${num(income)}, upkeep:${num(upkeep)}, profit:${num(profit)}, troop:${num((0.09+Multiplier.troop/N0).toFixed(2))}, unit:${num((0.09+Multiplier.unit/N0).toFixed(2))}, action:${num((0.09+Multiplier.action/N0).toFixed(2))}, depravity:${num((0.09+Multiplier.depravity/N0).toFixed(2))}`; + r += `<br>income:${num(income)}, upkeep:${num(upkeep)}, profit:${num(profit)}, troop:${num((0.09+Multiplier.troop/N0).toFixed(2))}, unit:${num((0.09+Multiplier.unit/N0).toFixed(2))}, action:${num((0.09+Multiplier.action/N0).toFixed(2))}, depravity:${num((0.09+Multiplier.depravity/N0).toFixed(2))}, N0: ${N0} N1: ${N1}`; } if (endWeekCall > 0) { diff --git a/src/cheats/mod_EditArcologyCheat.tw b/src/cheats/mod_EditArcologyCheat.tw index b1eec155dd20cc655db78d447918412781498bec..2e87694c9437134646852fb3c13d22264b8becdb 100644 --- a/src/cheats/mod_EditArcologyCheat.tw +++ b/src/cheats/mod_EditArcologyCheat.tw @@ -202,7 +202,7 @@ Custom: <<textbox "$language" $language "MOD_Edit Arcology Cheat">> <br>TSS Failed: ''$TSS.schoolAnnexed'' | <<radiobutton "$TSS.schoolAnnexed" 0>> 0 | <<radiobutton "$TSS.schoolAnnexed" 1>> 1 (Failed) - + <br>TUO Upgrades: ''$TUO.schoolUpgrade'' | <<radiobutton "$TUO.schoolUpgrade" 0>> 0 | <<radiobutton "$TUO.schoolUpgrade" 1>> 1 diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js index 67157f97e26f952833fd50c817716e003b879341..5d39d3c5b0494a40e0327a4bbfb85dbb4ef95b0e 100644 --- a/src/data/backwardsCompatibility/backwardsCompatibility.js +++ b/src/data/backwardsCompatibility/backwardsCompatibility.js @@ -1200,11 +1200,6 @@ App.Update.globalVariables = function(node) { EconomyDatatypeCleanup(); ArcologyDatatypeCleanup(); - // Misspelled variable names - { - V.lowerRequirements = V.lowerRequirements || V.lowerRquirements || 0; - } - // Job Fulfillment Center (JFC) V.JFC.order = V.JFC.order || V.JFCOrder || 0; V.JFC.role = V.JFC.role || V.Role || ""; @@ -1264,6 +1259,7 @@ App.Update.globalVariables = function(node) { V.boughtItem.toys.vaginalAttachments = V.boughtItem.toys.vaginalAttachments || V.toysBoughtVaginalAttachments || 0; V.boughtItem.toys.buttPlugs = V.boughtItem.toys.buttPlugs || V.toysBoughtButtPlugs || 0; V.boughtItem.toys.buttPlugTails = V.boughtItem.toys.buttPlugTails || V.toysBoughtButtPlugTails || 0; + node.append(`Done!`); }; diff --git a/src/data/newGamePlus.js b/src/data/newGamePlus.js index bc771401033f017391fc9c69d2c3dc11f1b9476f..8d65a18363af980ff37cd8f50a9a66ec0021a613 100644 --- a/src/data/newGamePlus.js +++ b/src/data/newGamePlus.js @@ -95,7 +95,7 @@ App.Data.NewGamePlus = (function() { s.mother -= NGPOffset; if (!(s.mother in newTable) && needed.indexOf(s.mother + NGPOffset) === -1) needed.push(s.mother + NGPOffset); - } + } if (s.father in missingTable) { s.father -= NGPOffset; if (!(s.father in newTable) && needed.indexOf(s.father + NGPOffset) === -1) diff --git a/src/endWeek/clinicReport.js b/src/endWeek/clinicReport.js index 85476812c7c4730ddb038e70391c51eae757acf9..d238016c83e466694c904af421fe1764ccf0a9ae 100644 --- a/src/endWeek/clinicReport.js +++ b/src/endWeek/clinicReport.js @@ -379,7 +379,7 @@ App.EndWeek.clinicReport = function() { } $(slaveEntry).append(`<span class='slave-name'>${SlaveFullName(slave)}</span> `); if (slave.choosesOwnAssignment === 2) { - $(slaveEntry).append(App.UI.DOM.renderPassage("SA chooses own job")); + $(slaveEntry).append(App.SlaveAssignment.choosesOwnJob(slave)); } else { $(slaveEntry).append(`is receiving treatment in ${V.clinicName}.`); } @@ -389,7 +389,7 @@ App.EndWeek.clinicReport = function() { $(slaveEntry).append(App.SlaveAssignment.standardSlaveReport(slave, false)); } else { // discard return values silently - App.UI.DOM.renderPassage("SA chooses own job"); + App.SlaveAssignment.choosesOwnJob(slave); App.SlaveAssignment.rest(slave); App.SlaveAssignment.standardSlaveReport(slave, true); } diff --git a/src/endWeek/reports/nurseryReport.js b/src/endWeek/reports/nurseryReport.js index 1276bcf73bb66ad74ab1c4189c9d9068a7b1b690..a365777f6b1a643f0105a02c9830d937e700a8f5 100644 --- a/src/endWeek/reports/nurseryReport.js +++ b/src/endWeek/reports/nurseryReport.js @@ -219,7 +219,7 @@ App.Facilities.Nursery.nurseryReport = function nurseryReport() { $(slaveEntry).append(`<span class="slave-name">${SlaveFullName(slave)}</span> `); if (slave.choosesOwnAssignment === 2) { - $(slaveEntry).append(App.UI.DOM.renderPassage("SA chooses own job")); + $(slaveEntry).append(App.SlaveAssignment.choosesOwnJob(slave)); } else { $(slaveEntry).append(`is working out of ${V.nurseryName}.`); } diff --git a/src/endWeek/saChoosesOwnJob.js b/src/endWeek/saChoosesOwnJob.js new file mode 100644 index 0000000000000000000000000000000000000000..88d92960c58d6ea1f81c0855351a694c8f7e5ba0 --- /dev/null +++ b/src/endWeek/saChoosesOwnJob.js @@ -0,0 +1,591 @@ +App.SlaveAssignment.choosesOwnJob = (function() { + "use strict"; + + let r; + + // eslint-disable-next-line no-unused-vars + let he, him, his, hers, himself, girl, loli, He, His; + + let clinicL; + let schoolL; + let servQL; + let nurseryL; + let brothelL; + let clubL; + let masterSL; + let spaL; + let dairyL; + let arcology; + + return saChoosesOwnJob; + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ + function saChoosesOwnJob(slave) { + r = []; + + clinicL = App.Entity.facilities.clinic.employeesIDs().size; + schoolL = App.Entity.facilities.schoolroom.employeesIDs().size; + servQL = App.Entity.facilities.servantsQuarters.employeesIDs().size; + nurseryL = App.Entity.facilities.nursery.employeesIDs().size; + brothelL = App.Entity.facilities.brothel.employeesIDs().size; + clubL = App.Entity.facilities.club.employeesIDs().size; + masterSL = App.Entity.facilities.masterSuite.employeesIDs().size; + spaL = App.Entity.facilities.spa.employeesIDs().size; + dairyL = App.Entity.facilities.dairy.employeesIDs().size; + + arcology = V.arcologies[0]; + + ({ + // eslint-disable-next-line no-unused-vars + he, him, his, hers, himself, girl, He, His, loli + } = getPronouns(slave)); + + if (slave.choosesOwnAssignment === 0 || slave.fuckdoll > 0 || slave.fetish === "mindbroken") { + // nothing to do + } else if (slave.choosesOwnAssignment === 2) { + // second pass happens visibly during weekly report for the location where this slave decided to go (or stay) + // display text but don't change assignment (already done) + r.push(slave.choosesOwnAssignmentText); + slave.choosesOwnAssignmentText = ""; + slave.choosesOwnAssignment = 1; + // continue cycle for next week + } else { + // first pass happens silently before all reports: give stats bonus, construct decision string for display during second pass, actually change assignment + slave.devotion++; + slave.trust++; + slave.choosesOwnAssignmentText = jobSelection(slave); + } + + return r.join(" "); + } + + /** + * @param {App.Entity.SlaveState} slave + * + */ + function jobSelection(slave) { + let choice = []; + + choice.push(`was assigned to ${slave.assignment}. ${He} ${canSee(slave) ? "watches" : "observes"} your other slaves to decide what to do, <span class="devotion inc">happy</span> to be permitted a choice and a little more <span class="trust inc">confident</span> than if you had just given ${him} orders. The ${SlaveTitle(slave)}`); + + if (slave.devotion <= 20 && slave.trust >= -20) { + if (slave.relationship === -3 && slave.devotion < -20) { + choice.push(`is reluctantly married to you, and ${he} thinks of all the ways ${he} <span class="devotion dec">can take advantage of this,</span>`); + if (V.universalRulesAssignsSelfFacility === 1 && V.spa > spaL) { + choice.push(`so ${he} heads straight to ${V.spaName} to relax.`); + choice.push(assignJob(slave, "rest in the spa")); + } else { + choice.push(`so ${he} cheerfully decides to lounge about the penthouse.`); + choice.push(removeJob(slave, slave.assignment)); + } + } else { + choice.push(`decides to rest, taking advantage of your permission to <span class="devotion dec">remain indolent.</span>`); + choice.push(removeJob(slave, slave.assignment)); + } + slave.devotion -= 5; + } else if (slave.health.illness > 1) { + if (V.universalRulesAssignsSelfFacility === 1 && V.clinic > clinicL) { + choice.push(`is ill, so ${he} decides to get treatment at${V.clinicName}.`); + choice.push(assignJob(slave, "get treatment in the clinic")); + } else { + choice.push(`is ill, so ${he} decides to rest.`); + choice.push(removeJob(slave, slave.assignment)); + } + } else if (slave.health.condition < 20) { + if (V.universalRulesAssignsSelfFacility === 1 && V.spa > spaL) { + choice.push(`is unhealthy, so ${he} decides to get recover at ${V.spaName}.`); + choice.push(assignJob(slave, "rest in the spa")); + } else { + choice.push(`is unhealthy, so ${he} decides to rest.`); + choice.push(removeJob(slave, slave.assignment)); + } + } else if (slave.health.tired > 45) { + if (V.universalRulesAssignsSelfFacility === 1 && V.spa > spaL) { + choice.push(`is tired, so ${he} decides to recover at ${V.spaName}.`); + choice.push(assignJob(slave, "rest in the spa")); + } else { + choice.push(`is tired, so ${he} decides to rest.`); + choice.push(removeJob(slave, slave.assignment)); + } + } else if (slave.boobsMilk > 0) { + choice.push(`rushes to get milked since ${his} breasts have become painfully engorged.`); + choice.push(assignJob(slave, "get milked")); + } else if (slave.intelligenceImplant < 15 && slave.intelligence > 10 && (arcology.FSPaternalist > 20 || arcology.FSSlaveProfessionalism > 20) && arcology.FSGenderFundamentalistLawBimbo !== 1 ) { + if (V.universalRulesAssignsSelfFacility === 1 && V.schoolroom > schoolL) { + choice.push(`is uneducated, so ${he} sits ${himself} down in ${V.schoolroomName}.`); + choice.push(assignJob(slave, "learn in the schoolroom")); + } else { + choice.push(`is uneducated, so ${he} sits ${himself} down to learn.`); + choice.push(assignJob(slave, "take classes")); + } + } else if ((S.Attendant && V.universalRulesAssignsSelfFacility === 1) && (slave.devotion < 45 || slave.trust < 45 || (slave.sexualFlaw !== "none" && !setup.paraphiliaList.includes(slave.sexualFlaw)) || slave.behavioralFlaw !== "none")) { + choice.push(`could use some counseling, so ${he} decides to visit ${V.spaName}.`); + choice.push(assignJob(slave, "rest in the spa")); + } else if (slave.devotion <= 50 && canWalk(slave) && canSee(slave)) { + if (V.universalRulesAssignsSelfFacility === 1 && V.servantsQuarters > servQL) { + choice.push(`is obedient but not devoted, so ${he} decides to work from ${V.servantsQuartersName} since it's the least sexually demanding job available.`); + choice.push(assignJob(slave, "work as a servant")); + } else { + choice.push(`is obedient but not devoted, so ${he} decides to work as a servant since it's the least sexually demanding job available.`); + choice.push(assignJob(slave, "be a servant")); + } + } else if (V.universalRulesAssignsSelfFacility === 1 && slave.devotion > 50 && canWalk(slave) && canSee(slave) && V.nurseryNannies > nurseryL && (V.cribs.findIndex((c) => (c.mother === slave.ID || c.father === slave.ID)))) { + if (V.cribs.findIndex((c) => (c.mother === slave.ID || c.father === slave.ID))) { + choice.push(`wants to look after ${his} child, so ${he} decides to work in ${V.nurseryName}.`); + choice.push(assignJob(slave, "work as a nanny")); + } else { // motherly sexualQuirk + choice.push(`enjoys taking care of children, so ${he} decides to work in ${V.nurseryName}.`); + choice.push(assignJob(slave, "work as a nanny")); + } + } else if (slave.relationship === -1) { + choice.push(`relies on promiscuity to fulfill ${his} emotional needs,`); + if (V.cash < 10000) { + choice.push(`and doesn't mind being a whore, so ${he} prostitutes ${himself}`); + if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) { + choice.push(`in ${V.brothelName}.`); + choice.push(assignJob(slave, "work in the brothel")); + } else { + choice.push(`on the streets.`); + choice.push(assignJob(slave, "whore")); + } + } else { + choice.push(`so ${he} eagerly decides to slut around`); + if (V.universalRulesAssignsSelfFacility === 1 && V.club > clubL) { + choice.push(`in ${V.clubName}.`); + choice.push(assignJob(slave, "serve in the club")); + } else { + choice.push(`on the streets.`); + choice.push(assignJob(slave, "serve the public")); + } + slave.sexAmount = 10; + } + } else if (slave.relationship === -2) { + choice.push(`is emotionally bonded to you,`); + if (slave.behavioralQuirk === "insecure") { + choice.push(`but insecure, so ${he} decides to make you money by prostituting ${himself}`); + if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) { + choice.push(`in ${V.brothelName}.`); + choice.push(assignJob(slave, "work in the brothel")); + } else { + choice.push(`on the streets.`); + choice.push(assignJob(slave, "whore")); + } + slave.sexAmount = 10; + } else if (slave.behavioralQuirk === "advocate") { + choice.push(`and an advocate for slavery, so ${he} decides to burnish your reputation by slutting it up`); + if (V.universalRulesAssignsSelfFacility === 1 && V.club > clubL) { + choice.push(`in ${V.clubName}.`); + choice.push(assignJob(slave, "serve in the club")); + } else { + choice.push(`on the streets.`); + choice.push(assignJob(slave, "serve the public")); + } + slave.sexAmount = 10; + } else if (slave.energy > 60) { + choice.push(`and ${he} thinks of little but sex with you,`); + if (V.universalRulesAssignsSelfFacility === 1 && V.masterSuite > masterSL) { + choice.push(`so ${he} heads straight to ${V.masterSuiteName}.`); + choice.push(assignJob(slave, "serve in the master suite")); + } else { + choice.push(`so ${he} cheerfully designates ${himself} one of your fucktoys.`); + choice.push(assignJob(slave, "please you")); + } + } else if (canSee(slave) && canWalk(slave)) { + choice.push(`so ${he} decides to work`); + if (V.universalRulesAssignsSelfFacility === 1 && V.servantsQuarters > servQL) { + choice.push(`from ${V.servantsQuartersName} to make your penthouse as clean and homelike as possible.`); + choice.push(assignJob(slave, "work as a servant")); + } else { + choice.push(`as a servant to make your penthouse as clean and homelike as possible.`); + choice.push(assignJob(slave, "be a servant")); + } + } else { + choice.push(`but unable to do much on ${his} own,`); + if (V.universalRulesAssignsSelfFacility === 1 && V.masterSuite > masterSL) { + choice.push(`so ${he} heads straight to ${V.masterSuiteName} to await your caress.`); + choice.push(assignJob(slave, "serve in the master suite")); + } else { + choice.push(`so ${he} cheerfully designates ${himself} one of your fucktoys to be close to you.`); + choice.push(assignJob(slave, "please you")); + } + } + } else if (slave.relationship === -3) { + if (slave.devotion+slave.trust >= 175) { + choice.push(`is happily married to you,`); + } else if (slave.devotion < -20) { + choice.push(`is forcibly married to you,`); + } else { + choice.push(`is married to you,`); + } + if (slave.devotion > 50) { + if (slave.energy > 60) { + choice.push(`and ${he} thinks of little but sex with you,`); + if (V.universalRulesAssignsSelfFacility === 1 && V.masterSuite > masterSL) { + choice.push(`so ${he} heads straight to ${V.masterSuiteName}.`); + choice.push(assignJob(slave, "serve in the master suite")); + } else { + choice.push(`so ${he} cheerfully designates ${himself} one of your fucktoys.`); + choice.push(assignJob(slave, "please you")); + } + } else if (canSee(slave) && canWalk(slave)) { + choice.push(`so ${he} decides to work`); + if (V.universalRulesAssignsSelfFacility === 1 && V.servantsQuarters > servQL) { + choice.push(`from ${V.servantsQuartersName} to make your penthouse as clean and homelike as possible.`); + choice.push(assignJob(slave, "work as a servant")); + } else { + choice.push(`as a servant to make your penthouse as clean and homelike as possible.`); + choice.push(assignJob(slave, "be a servant")); + } + } else { + choice.push(`but unable to do much on ${his} own`); + if (V.universalRulesAssignsSelfFacility === 1 && V.masterSuite > masterSL) { + choice.push(`so ${he} heads straight to ${V.masterSuiteName} to await your caress.`); + choice.push(assignJob(slave, "serve in the master suite")); + } else { + choice.push(`so ${he} cheerfully designates ${himself} one of your fucktoys to be close to you.`); + choice.push(assignJob(slave, "please you")); + } + } + } else if (slave.devotion < -20) { + choice.push(`and ${he} is scared of you, so ${he} chooses to work as a servant so that ${he} may serve you without "serving" you.`); + choice.push(assignJob(slave, "be a servant")); + } else { + if (slave.energy > 60) { + choice.push(`and ${he} thinks of little but sex,`); + if (V.universalRulesAssignsSelfFacility === 1 && V.masterSuite > masterSL) { + choice.push(`so ${he} heads straight to ${V.masterSuiteName}.`); + choice.push(assignJob(slave, "serve in the master suite")); + } else { + choice.push(`so ${he} cheerfully designates ${himself} one of your fucktoys.`); + choice.push(assignJob(slave, "please you")); + } + } else if (canSee(slave) && canWalk(slave)) { + choice.push(`so ${he} decides to work`); + if (V.universalRulesAssignsSelfFacility === 1 && V.servantsQuarters > servQL) { + choice.push(`from ${V.servantsQuartersName} to make your penthouse as clean and homelike as possible.`); + choice.push(assignJob(slave, "work as a servant")); + } else { + choice.push(`as a servant to make your penthouse as clean and homelike as possible.`); + choice.push(assignJob(slave, "be a servant")); + } + } else { + choice.push(`but unable to do much on ${his} own, so ${he} designates ${himself} one of your fucktoys to get more intimate with you.`); + choice.push(assignJob(slave, "please you")); + } + } + } else if (slave.fetishKnown === 1 || jsRandom(1, 100) > 5) { // Yes, this segways into other things than fetish. PM - I added a 5% chance for her to not think of something just for flavor. + if (slave.fetish === "submissive" && canWalk(slave) && canSee(slave)) { + if (V.universalRulesAssignsSelfFacility === 1 && V.servantsQuarters > servQL) { + choice.push(`thinks ${he} belongs at the bottom of the penthouse hierarchy, so ${he} goes to live in ${V.servantsQuartersName}.`); + choice.push(assignJob(slave, "work as a servant")); + } else { + choice.push(`thinks ${he} belongs at the bottom of the penthouse hierarchy, so ${he} decides ${he} should be a servant.`); + choice.push(assignJob(slave, "be a servant")); + } + } else if (slave.fetish === "dom" || slave.fetish === "sadist") { + if (V.universalRulesAssignsSelfFacility === 1 && V.club > clubL) { + choice.push(`is self-confident, so ${he} decides to work in ${V.clubName}.`); + choice.push(assignJob(slave, "serve in the club")); + } else { + choice.push(`is self-confident, so ${he} decides to work as a public servant.`); + choice.push(assignJob(slave, "serve the public")); + } + slave.sexAmount = 10; + } else if (slave.fetish === "masochist") { + if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) { + choice.push(`enjoys abuse, so ${he} hurries down to ${V.brothelName}.`); + choice.push(assignJob(slave, "work in the brothel")); + } else { + choice.push(`enjoys abuse, so ${he} decides to become a whore.`); + choice.push(assignJob(slave, "whore")); + } + slave.sexAmount = 10; + } else if (slave.fetish === "cumslut") { + if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) { + choice.push(`hurries down to ${V.brothelName} to suck cocks.`); + choice.push(assignJob(slave, "work in the brothel")); + } else { + choice.push(`decides to become a whore, mostly to suck cock.`); + choice.push(assignJob(slave, "whore")); + } + slave.sexAmount = 10; + } else if (slave.fetish === "humiliation") { + if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) { + choice.push(`decides to work in ${V.brothelName}, since it's even more embarrassing to be a whore than a club slut.`); + choice.push(assignJob(slave, "work in the brothel")); + } else { + choice.push(`decides to whore, since it's even more embarrassing to be a whore than to be a public servant.`); + choice.push(assignJob(slave, "whore")); + } + slave.sexAmount = 10; + } else if (slave.fetish === "buttslut") { + if (slave.balls > 0 && slave.prostate > 0 && V.universalRulesAssignsSelfFacility === 1 && V.dairyRestraintsSetting < 2 && V.dairyStimulatorsSetting > 0 && V.dairy > dairyL) { + choice.push(`chooses confinement in ${V.dairyName}, since all ${he} will be expected to do is produce cum by orgasming to buttsex.`); + choice.push(assignJob(slave, "work in the dairy")); + } else if (canDoAnal(slave)){ + if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) { + choice.push(`decides to work in ${V.brothelName}, since whores get buttfucked more than anyone else.`); + choice.push(assignJob(slave, "work in the brothel")); + } else { + choice.push(`decides to whore, since whores get buttfucked more than anyone else.`); + choice.push(assignJob(slave, "whore")); + } + slave.sexAmount = 10; + } else { + if (V.universalRulesAssignsSelfFacility === 1 && V.club > clubL) { + choice.push(`decides to shake ${his} money maker in ${V.clubName}.`); + choice.push(assignJob(slave, "serve in the club")); + } else { + choice.push(`decides to shake ${his} money maker on the streets.`); + choice.push(assignJob(slave, "serve the public")); + } + slave.sexAmount = 10; + } + } else if (slave.fetish === "pregnancy") { + if (V.PC.dick > 0 && isFertile(slave)) { + if (V.universalRulesAssignsSelfFacility === 1 && V.masterSuite > masterSL) { + choice.push(`decides to serve you in ${V.masterSuiteName}, hoping that you'll get ${him} pregnant.`); + choice.push(assignJob(slave, "serve in the master suite")); + } else { + choice.push(`decides to be your fucktoy, hoping that you'll get ${him} pregnant.`); + choice.push(assignJob(slave, "please you")); + } + } else if (V.universalRulesAssignsSelfFacility === 1 && V.dairyPregSetting > 0 && V.dairy > dairyL && isFertile(slave)) { + if (V.dairyPregSetting > 1) { + choice.push(`eagerly rushes to ${V.dairyName} in the hopes that ${his} fertile womb will be packed full of children.`); + choice.push(assignJob(slave, "work in the dairy")); + } else { + choice.push(`rushes to ${V.dairyName} in the hopes that ${his} fertile womb will be rented out.`); + choice.push(assignJob(slave, "work in the dairy")); + } + } else if (slave.bellyPreg >= 1500) { + if (arcology.FSRepopulationFocus > 20) { + if (V.cash < 10000) { + if (V.brothel > brothelL && V.universalRulesAssignsSelfFacility === 1) { + choice.push(`heads to ${V.brothelName} since ${he} wants to set an example for any unimpregnated girls.`); + choice.push(assignJob(slave, "work in the brothel")); + } else { + choice.push(`heads to the streets to lavish in the attention given to pregnant prostitutes.`); + choice.push(assignJob(slave, "whore")); + } + } else { + if (V.club > clubL && V.universalRulesAssignsSelfFacility === 1) { + choice.push(`heads to ${V.clubName} to show off ${his} growing middle and lavish in the public's attention.`); + choice.push(assignJob(slave, "serve in the club")); + } else { + choice.push(`heads to the streets to contribute to the number of visibly pregnant women around.`); + choice.push(assignJob(slave, "serve the public")); + } + } + slave.sexAmount = 10; + } else if (V.masterSuite > masterSL && V.universalRulesAssignsSelfFacility === 1) { + choice.push(`heads straight to ${V.masterSuiteName} to share the intimacy of ${his} pregnant body with you.`); + choice.push(assignJob(slave, "serve in the master suite")); + } else { + choice.push(`decides to be your fucktoy to share the intimacy of ${his} pregnant body with you.`); + choice.push(assignJob(slave, "please you")); + } + } else if (slave.pregKnown === 1) { + if (V.masterSuite > masterSL && V.universalRulesAssignsSelfFacility === 1) { + choice.push(`heads straight to ${V.masterSuiteName} so you may watch for the day that ${he} finally starts to show.`); + choice.push(assignJob(slave, "serve in the master suite")); + } else { + choice.push(`decides to be your fucktoy so you may enjoy watching ${him} begin showing.`); + choice.push(assignJob(slave, "please you")); + } + } else if (canGetPregnant(slave)) { + if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) { + choice.push(`can't indulge ${his} pregnancy fetish without getting dicked, so ${he} heads down to ${V.brothelName} to do just that.`); + choice.push(assignJob(slave, "work in the brothel")); + } else { + choice.push(`can't indulge ${his} pregnancy fetish without getting dicked, so ${he} decides to be a whore to get seeded.`); + choice.push(assignJob(slave, "whore")); + } + slave.sexAmount = 10; + } else if (slave.lactation > 0) { + if (V.universalRulesAssignsSelfFacility === 1 && V.dairyRestraintsSetting < 2 && V.dairy > dairyL) { + choice.push(`heads down to ${V.dairyName} to be around other lactating girls.`); + choice.push(assignJob(slave, "work in the dairy")); + } else { + choice.push(`decides to get milked, since ${he} is already lactating.`); + choice.push(assignJob(slave, "get milked")); + } + } else { + if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) { + choice.push(`can't indulge ${his} fetish by getting pregnant ${himself}, so ${he} just heads down to ${V.brothelName}.`); + choice.push(assignJob(slave, "work in the brothel")); + } else { + choice.push(`can't indulge ${his} fetish by getting pregnant ${himself}, so ${he} glumly decides to be a whore.`); + choice.push(assignJob(slave, "whore")); + } + slave.sexAmount = 10; + } + } else if (slave.fetish === "boobs") { + if (slave.lactation > 0) { + if (V.universalRulesAssignsSelfFacility === 1 && V.dairyRestraintsSetting < 2 && V.dairy > dairyL) { + choice.push(`heads down to ${V.dairyName} for all the attention that'll be lavished on ${his} nipples.`); + choice.push(assignJob(slave, "work in the dairy")); + } else { + choice.push(`decides to get milked, since ${he} loves getting off to it.`); + choice.push(assignJob(slave, "get milked")); + } + } else if (V.universalRulesAssignsSelfFacility === 1 && V.club > clubL) { + choice.push(`decides to work in ${V.clubName} so ${he} can show off ${his} bare breasts.`); + choice.push(assignJob(slave, "serve in the club")); + slave.sexAmount = 10; + } else { + choice.push(`decides to work as a public servant so ${he} can show off ${his} bare breasts.`); + choice.push(assignJob(slave, "serve the public")); + slave.sexAmount = 10; + } + } else if (slave.attrXX > 85) { + if (V.universalRulesAssignsSelfFacility === 1 && V.club > clubL) { + choice.push(`decides to work in ${V.clubName} so ${he} can hit on hot girls.`); + choice.push(assignJob(slave, "serve in the club")); + } else { + choice.push(`decides to work as a public servant so ${he} can hit on hot girls.`); + choice.push(assignJob(slave, "serve the public")); + } + slave.sexAmount = 10; + } else if (slave.attrXY > 85) { + if (V.universalRulesAssignsSelfFacility === 1 && V.club > clubL) { + choice.push(`decides to work in ${V.clubName} so ${he} can hit on cute boys.`); + choice.push(assignJob(slave, "serve in the club")); + } else { + choice.push(`decides to work as a public servant so ${he} can hit on cute boys.`); + choice.push(assignJob(slave, "serve the public")); + } + slave.sexAmount = 10; + } else if (slave.energy > 95) { + if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) { + choice.push(`decides to help those of your slaves who mind taking dick all day by working in ${V.brothelName}.`); + choice.push(assignJob(slave, "work in the brothel")); + } else { + choice.push(`decides to help those of your slaves who mind taking dick all day by working as a whore.`); + choice.push(assignJob(slave, "whore")); + } + slave.sexAmount = 10; + } else if (arcology.FSChattelReligionist > 0) { + if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) { + choice.push(`slave.choosesOwnAssignmentText += " is a pure and faithful slave, so ${he} sells ${his} body in the holy brothel.`); + choice.push(assignJob(slave, "work in the brothel")); + } else { + choice.push(`slave.choosesOwnAssignmentText += " is a pure and faithful slave, so ${he} sells ${his} body as a holy prostitute.`); + choice.push(assignJob(slave, "whore")); + } + slave.sexAmount = 10; + } else if (arcology.FSEgyptianRevivalist > 0) { + if (V.universalRulesAssignsSelfFacility === 1 && V.masterSuite > masterSL) { + choice.push(`is a devoted slave, so ${he} immediately joins your harem.`); + choice.push(assignJob(slave, "serve in the master suite")); + } else { + choice.push(`is a devoted slave, so ${he} immediately joins your harem.`); + choice.push(assignJob(slave, "please you")); + } + } else if (arcology.FSRomanRevivalist > 0) { + if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) { + choice.push(`is a devoted slave, so ${he} decides ${he} can best serve the state by raising money for the treasury, by selling ${his} body in ${V.brothelName}.`); + choice.push(assignJob(slave, "work in the brothel")); + } else { + choice.push(`is a devoted slave, so ${he} decides ${he} can best serve the state by raising money for the treasury, by selling ${his} body as a prostitute.`); + choice.push(assignJob(slave, "whore")); + } + slave.sexAmount = 10; + } else if (arcology.FSAztecRevivalist > 0) { + if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) { + choice.push(`is a devoted slave, so ${he} decides ${he} can best serve the empire by serving at the fertility temple.`); + choice.push(assignJob(slave, "work in the brothel")); + } else { + choice.push(`is a devoted slave, so ${he} decides ${he} can best serve the empire by offering ${himself} to the public.`); + choice.push(assignJob(slave, "serve the public")); + } + slave.sexAmount = 10; + } else if (arcology.FSPaternalist > 0) { + if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) { + choice.push(`decides to work in ${V.brothelName}, a respectable position for a slave in this enlightened arcology.`); + choice.push(assignJob(slave, "work in the brothel")); + } else { + choice.push(`decides to be a whore, a respectable position for a slave in this enlightened arcology.`); + choice.push(assignJob(slave, "whore")); + } + slave.sexAmount = 10; + } else if (arcology.FSPastoralist > 0) { + if (slave.lactation > 0) { + if (V.universalRulesAssignsSelfFacility === 1 && V.dairyRestraintsSetting < 2 && V.dairy > dairyL) { + choice.push(`hurries to join your herd of dairy cows.`); + choice.push(assignJob(slave, "work in the dairy")); + } else { + choice.push(`hurries to join your herd of cows.`); + choice.push(assignJob(slave, "get milked")); + } + } else { + if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) { + choice.push(`decides to work in ${V.brothelName} to help raise money to get more girls lactating properly.`); + choice.push(assignJob(slave, "work in the brothel")); + } else { + choice.push(`decides to prostitute ${himself} to help raise money to get more girls lactating properly.`); + choice.push(assignJob(slave, "whore")); + } + slave.sexAmount = 10; + } + } else if (arcology.FSHedonisticDecadence > 0) { + if (V.universalRulesAssignsSelfFacility === 1 && V.spa > spaL && (slave.trust < 60 || slave.devotion <= 60)) { + choice.push(`could use a break, so ${he} heads to take a dip in the spa.`); + choice.push(assignJob(slave, "rest in the spa")); + } else { + choice.push(`could use a meal and a nap, so ${he} grabs a cup of food and heads to bed.`); + choice.push(removeJob(slave, slave.assignment)); + } + } else { + if (slave.skill.whoring > slave.skill.entertainment) { + if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) { + choice.push(`decides to work in ${V.brothelName}, since ${he} thinks ${himself} a better whore than a public slut.`); + choice.push(assignJob(slave, "work in the brothel")); + } else { + choice.push(`decides to whore, since ${he} thinks ${himself} a better whore than a public slut.`); + choice.push(assignJob(slave, "whore")); + } + slave.sexAmount = 10; + } else if (slave.skill.entertainment > slave.skill.whoring) { + if (V.universalRulesAssignsSelfFacility === 1 && V.club > clubL) { + choice.push(`decides to be a club ${girl}, since ${he} thinks ${himself} a better public slut than a whore.`); + choice.push(assignJob(slave, "serve in the club")); + } else { + choice.push(`decides to serve the public, since ${he} thinks ${himself} a better public slut than a whore.`); + choice.push(assignJob(slave, "serve the public")); + } + slave.sexAmount = 10; + } else { + if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) { + choice.push(`decides to join ${his} sisters and work in ${V.brothelName}.`); + choice.push(assignJob(slave, "work in the brothel")); + } else { + choice.push(`decides to prostitute ${himself} to help you upgrade ${arcology.name} and improve everyone's life.`); + choice.push(assignJob(slave, "whore")); + } + slave.sexAmount = 10; + } + } + } else { + if (V.universalRulesAssignsSelfFacility === 1 && V.club > clubL) { + choice.push(`decides to be a club ${girl}, since partying is better than sitting around and failing to think of a job to do.`); + choice.push(assignJob(slave, "serve in the club")); + slave.sexAmount = 10; + } else if (canWalk(slave) && canSee(slave)) { + choice.push(`decides to tidy up the penthouse a little while ${he} thinks.`); + choice.push(assignJob(slave, "be a servant")); + } else { + choice.push(`stays in bed, unable to come up with anything.`); + choice.push(removeJob(slave, slave.assignment)); + } + } + + slave.choosesOwnAssignment = 2; + // ready for second pass + + return choice.join(" "); + } +})(); diff --git a/src/endWeek/saGetMilked.js b/src/endWeek/saGetMilked.js index 0679e1ea546d1de289c14f736479a137963fab13..215b73f0eae65bcae0d2b1039a14526e01f53e7a 100644 --- a/src/endWeek/saGetMilked.js +++ b/src/endWeek/saGetMilked.js @@ -590,7 +590,7 @@ App.SlaveAssignment.getMilked = (function() { if (slave.assignment === Job.DAIRY) { if (V.dairyStimulatorsUpgrade !== 1) { if (V.MilkmaidID !== 0) { - if (S.Milkmaid.dick > 4 && canAchieveErection(S.Milkmaid)) { + if (S.Milkmaid.dick > 4 && canPenetrate(S.Milkmaid)) { const milkmaidPronouns = getPronouns(S.Milkmaid); r += ` ${S.Milkmaid.slaveName} sometimes stands in for the machines, which is a polite way of saying ${milkmaidPronouns.he} sometimes fucks ${slave.slaveName}'s ass to help ${him} cum.`; } diff --git a/src/endWeek/saTakeClasses.js b/src/endWeek/saTakeClasses.js index 883255687e4da001988ab1b5d818def9d577dfbb..109cb7c35515c5e3842a08e0815d463d9d5c468a 100644 --- a/src/endWeek/saTakeClasses.js +++ b/src/endWeek/saTakeClasses.js @@ -396,14 +396,14 @@ App.SlaveAssignment.takeClasses = (function() { r += ` ${He} makes some progress `; if (slave.intelligenceImplant < 0) { r += `in correcting ${his} thought processes.`; - slave.intelligenceImplant -= Math.max(1, learning); + slave.intelligenceImplant += Math.max(1, learning); if (slave.intelligenceImplant >= 0) { slave.intelligenceImplant = 0; r += ` ${His} disastrous education has been undone, and for most purposes ${he} has become <span class="intelligent">more intelligent.</span>`; } } else if (slave.intelligenceImplant < 15) { r += `towards a basic education.`; - slave.intelligenceImplant -= Math.max(1, learning); + slave.intelligenceImplant += Math.max(1, learning); if (slave.intelligenceImplant >= 15) { slave.intelligenceImplant = 15; r += ` ${He} has completed ${his} basic courses, and for most purposes ${he} has become <span class="intelligent">more intelligent.</span>`; @@ -420,7 +420,7 @@ App.SlaveAssignment.takeClasses = (function() { r += ` ${He} makes some progress `; if (slave.intelligenceImplant < 0) { r += `in correcting ${his} thought processes.`; - slave.intelligenceImplant -= Math.max(1, learning); + slave.intelligenceImplant += Math.max(1, learning); if (slave.intelligenceImplant >= 0) { slave.intelligenceImplant = 0; r += ` ${His} disastrous education has been undone, and for most purposes ${he} has become <span class="intelligent">more intelligent.</span>`; @@ -434,6 +434,7 @@ App.SlaveAssignment.takeClasses = (function() { } } } + slave.intelligenceImplant = Math.clamp(slave.intelligenceImplant, -15, 30); } /** diff --git a/src/endWeek/saWhore.js b/src/endWeek/saWhore.js index c1023af381a80d51b3ccb479e8ac55903e7cbd53..35c566e26f2eb2bbe123fbced19389aab6bdcce5 100644 --- a/src/endWeek/saWhore.js +++ b/src/endWeek/saWhore.js @@ -99,7 +99,7 @@ App.SlaveAssignment.whore = (function() { } else { customers = "ERROR"; FuckResult = "ERROR"; - console.log("Error in effectiveWhoreClass for " + slave.slaveName + ", expected 1-4, got: ", slave.effectiveWhoreClass, "whoreClass:", slave.whoreClass, slave); + console.log("Error in effectiveWhoreClass for " + slave.slaveName + ", expected 1-4, got: ", slave.effectiveWhoreClass, "whoreClass:", slave.whoreClass, slave.assignment, slave); } } diff --git a/src/endWeek/schoolroomReport.js b/src/endWeek/schoolroomReport.js index 64b308be40d011742e981e82050323fcf46f875d..5a98eff826c44d82787978f1af915e1d459a4f76 100644 --- a/src/endWeek/schoolroomReport.js +++ b/src/endWeek/schoolroomReport.js @@ -215,7 +215,7 @@ App.EndWeek.schoolroomReport = function() { } $(slaveEntry).append(`<span class='slave-name'>${slave.slaveName}</span> `); if (slave.choosesOwnAssignment === 2) { - $(slaveEntry).append(App.UI.DOM.renderPassage("SA chooses own job")); + $(slaveEntry).append(App.SlaveAssignment.choosesOwnJob(slave)); } else { $(slaveEntry).append(`is studying in ${V.schoolroomName}.`); } @@ -224,7 +224,7 @@ App.EndWeek.schoolroomReport = function() { $(slaveEntry).append(App.SlaveAssignment.standardSlaveReport(slave, false)); } else { // discard return values silently - App.UI.DOM.renderPassage("SA chooses own job"); + App.SlaveAssignment.choosesOwnJob(slave); App.SlaveAssignment.takeClasses(slave); App.SlaveAssignment.standardSlaveReport(slave, true); } diff --git a/src/endWeek/servantsQuartersReport.js b/src/endWeek/servantsQuartersReport.js index ef6eb5b6959cbd6621c50554225deff9a5dd32f7..c5facef9e5595a5436e317fe474ea238e1e7fedb 100644 --- a/src/endWeek/servantsQuartersReport.js +++ b/src/endWeek/servantsQuartersReport.js @@ -289,7 +289,7 @@ App.EndWeek.servantsQuartersReport = function() { } $(slaveEntry).append(`<span class='slave-name'>${SlaveFullName(slave)}</span> `); if (slave.choosesOwnAssignment === 2) { - $(slaveEntry).append(App.UI.DOM.renderPassage("SA chooses own job")); + $(slaveEntry).append(App.SlaveAssignment.choosesOwnJob(slave)); } else { $(slaveEntry).append(`is working out of ${V.servantsQuartersName}.`); } @@ -304,7 +304,7 @@ App.EndWeek.servantsQuartersReport = function() { $(slaveEntry).append(App.SlaveAssignment.standardSlaveReport(slave, false)); } else { // discard return values silently - App.UI.DOM.renderPassage("SA chooses own job"); + App.SlaveAssignment.choosesOwnJob(slave); App.SlaveAssignment.servant(slave, stewardessBonus); if ((V.servantMilkers === 1) && (slave.lactation > 0)) { App.SlaveAssignment.getMilked(slave); diff --git a/src/endWeek/slaveAssignmentReport.js b/src/endWeek/slaveAssignmentReport.js index d0773fe07451d9d8e9e7858924bb4bb91ddfb208..ad99dff32444c793dea9a1e25573547ec9541072 100644 --- a/src/endWeek/slaveAssignmentReport.js +++ b/src/endWeek/slaveAssignmentReport.js @@ -23,7 +23,7 @@ App.EndWeek.slaveAssignmentReport = function() { V.slaves[i].health.tired = 0; if (V.slaves[i].choosesOwnAssignment === 1) { V.i = i; - App.UI.DOM.renderPassage("SA chooses own job"); + App.SlaveAssignment.choosesOwnJob(V.slaves[i]); } } diff --git a/src/events/RESS/obedientBitchy.js b/src/events/RESS/obedientBitchy.js index 0160fea00722763a3cf6946f1456587863eb6e55..556716dd4b764f2acc9ce283e4197b056f7a09b4 100644 --- a/src/events/RESS/obedientBitchy.js +++ b/src/events/RESS/obedientBitchy.js @@ -38,7 +38,7 @@ App.Events.RESSObedientBitchy = class RESSObedientBitchy extends App.Events.Base if (canStand(eventSlave)) { t.push(`another slave.`); } else { - t.push(`${her} aide.`); + t.push(`${his} aide.`); } t.push(`Anger flashes in the businesswoman's eyes.`); diff --git a/src/events/scheduled/maMilitaryDeal.tw b/src/events/scheduled/maMilitaryDeal.tw new file mode 100644 index 0000000000000000000000000000000000000000..333b90ab8056f99aaac181e400605d010c925ee2 --- /dev/null +++ b/src/events/scheduled/maMilitaryDeal.tw @@ -0,0 +1,3 @@ +:: MA Military Deal [nobr] + +<<includeDOM App.Events.murderAttemptFollowup("military", V.illegalDeals.military.company)>> diff --git a/src/events/scheduled/maSlaveTrade.tw b/src/events/scheduled/maSlaveTrade.tw new file mode 100644 index 0000000000000000000000000000000000000000..52f33b6ca7d7a568c15c8a6b93094dd1a5ceecdd --- /dev/null +++ b/src/events/scheduled/maSlaveTrade.tw @@ -0,0 +1,3 @@ +:: MA Slave Trade [nobr] + +<<includeDOM App.Events.murderAttemptFollowup("slave", V.illegalDeals.slave.company, V.illegalDeals.slave.type)>> diff --git a/src/events/scheduled/maTradeDeal.tw b/src/events/scheduled/maTradeDeal.tw new file mode 100644 index 0000000000000000000000000000000000000000..13330ba7cb5eec9557fcb4d6d5610dde8c401ad7 --- /dev/null +++ b/src/events/scheduled/maTradeDeal.tw @@ -0,0 +1,3 @@ +:: MA Trade Deal [nobr] + +<<includeDOM App.Events.murderAttemptFollowup("trade", V.illegalDeals.trade.company)>> diff --git a/src/events/scheduled/murderAttempt.js b/src/events/scheduled/murderAttempt.js new file mode 100644 index 0000000000000000000000000000000000000000..6589e302425aa01ae213484f4fd079a76b9f0dc9 --- /dev/null +++ b/src/events/scheduled/murderAttempt.js @@ -0,0 +1,479 @@ +App.Events.murderAttempt = function() { + // setup next time, 2-4 months + V.murderAttemptWeek += 8 + Math.floor(Math.random() * 8); + // disable Continue + V.nextButton = " "; + const nextPassage = "Random Nonindividual Event"; + const perceptiveCareers = ["mercenary", "gang"]; + // event unique + const variation = jsEither(["trade", "slave", "drug", "military"]); + let isSincere = Math.random() > 0.6; + // actual deals can only trigger once + if (isSincere) { + switch (variation) { + case "trade": + isSincere = V.illegalDeals.trade === 0; + break; + case "slave": + isSincere = V.illegalDeals.slave === 0; + break; + case "drug": + isSincere = V.illegalDeals.menialDrug === 0; + break; + case "military": + isSincere = V.illegalDeals.military === 0; + break; + } + } + const companyName = "RealTec"; // TODO generate name + const {he, his, him, woman: man, himself} = getPronouns(V.arcologies[0].FSGenderRadicalist === "unset" + ? {pronoun: App.Data.Pronouns.Kind.male} : {pronoun: App.Data.Pronouns.Kind.female}); + + const documentFragment = document.createDocumentFragment(); + intro(documentFragment); + return documentFragment; + + function intro(fragment) { + const r = []; + r.push("As every day you are going through the messages your personal assistant flagged as relevant from the mass you get every day."); + r.push("One is a request by a company called \"" + companyName + "\" for a personal meeting to propose some kind of"); + switch (variation) { + case "trade": + r.push("business venture."); + break; + case "slave": + r.push("unique slave trade."); + break; + case "drug": + r.push("deal for a new drug."); + break; + case "military": + r.push("military endeavour."); + break; + } + r.push("Despite being incredibly vague about the details of said business venture they have references from multiple reputable businesses in the"); + switch (variation) { + case "trade": + r.push("trading"); + break; + case "slave": + r.push("arcology"); + break; + case "drug": + r.push("medical"); + break; + case "military": + r.push("military"); + break; + } + r.push("and slavery sectors, many of which are known for dealing in not so legal business regularly, making the vague details seem more like making sure not to leave any possible proofs of illegal ventures behind."); + App.Events.addParagraph(fragment, r); + + let yesText, noText; + switch (variation) { + case "trade": + yesText = "New business is"; + noText = "profitable business venture"; + break; + case "slave": + yesText = "Unique slaves are"; + noText = "special slave"; + break; + case "drug": + yesText = "Special drugs you cannot buy are"; + noText = "new drug"; + break; + case "military": + yesText = "A profitable use for your mercenary troops is"; + noText = "profitable military venture"; + break; + } + App.Events.addResponses(fragment, [ + new App.Events.Result(`${yesText} always good, invite them to a private meeting.`, invite), + new App.Events.Result(`You are not going to waste your time on something as vague as a "${noText}".`, endEvent) + ], "invite"); + } + + function invite() { + const fragment = document.createDocumentFragment(); + + let r = []; + r.push("Your assistant makes a meeting a few days later in your personal office, despite those meetings usually being conducted in a more neutral, albeit less secure location, but", + companyName, "insisted on meeting in your office."); + if (["capitalist", "mercenary", "slaver", "engineer"].includes(V.PC.career)) { + r.push("You should prepare for anything."); + } else { + r.push("Less time wasted in case nothing comes out of it."); + } + App.Events.addParagraph(fragment, r); + + r = []; + r.push("At the time of the meeting a", man, + "arrives at your penthouse and is brought to your office by one of your slaves, while you watch him on your PC screen. The", + man, "is distinctively average looking, as if you took all business man that did their job well, but did not overachieve, and created the perfect average of it. Someone looking this average is certainly anything but average."); + App.Events.addParagraph(fragment, r); + + r = []; + r.push("Once", he, "arrives at your office you settle down after a short greeting and", he, "starts"); + switch (variation) { + case "trade": + case "military": + r.push("showing you the plans they have."); + break; + case "slave": + r.push("explaining the uniqueness of their slaves."); + break; + case "drug": + r.push("showing you the effects of their new drug."); + } + + if (S.Bodyguard) { + r.push("Before getting anywhere though", he, "interrupts", himself, + "looking at your bodyguard. \"I'm sorry, this is meant only for your ears, can you please send your bodyguard outside?\""); + App.Events.addParagraph(fragment, r); + + const {she: sheBG} = getPronouns(S.Bodyguard); + + App.Events.addResponses(fragment, [ + new App.Events.Result("\"No one gives me commands in my own office. You can leave now.\"", endEvent), + new App.Events.Result(`"${S.Bodyguard.slaveName} IS my ears, ${sheBG} stays."`, bgStaysRoute), + new App.Events.Result(`"This better be worth it." Order ${S.Bodyguard.slaveName} to leave.`, bgLeavesRoute) + ], "bodyguard"); + } else { + noSlaveRoute(fragment, r, false); + } + + return fragment; + } + + /** + * @param {DocumentFragment} fragment + * @param {Array<string>} paragraphStart + * @param {boolean} slaveLeft only relevant for murder attempt + */ + function noSlaveRoute(fragment, paragraphStart, slaveLeft) { + if (isSincere) { + sincereProposal(fragment, paragraphStart); + } else { + paragraphStart.push("For the next few hours", he, + "talks in circles, doing grand gestures here and there but without actually saying anything of substance to the point where you start getting bored until"); + if (perceptiveCareers.includes(V.PC.career)) { + paragraphStart.push("during one of his wide gestures you notice", he, "dropped something in your drink. When you confront", him, "about it", he, "draws a weapon and shoots you before you have a chance to react."); + if (slaveLeft && canWalk(S.Bodyguard)) { + paragraphStart.push("When your bodyguard storms in it is already too late and your murderer being dead too will not make you alive again."); + } else { + paragraphStart.push("Before", he, "can leave the building your security detains", him, ", but this won't help you anymore."); + } + App.Events.addParagraph(fragment, paragraphStart); + gameOver(fragment); + } else { + poisoned(fragment, paragraphStart); + } + } + } + + function bgStaysRoute(){ + const fragment = document.createDocumentFragment(); + + if (isSincere) { + let r = []; + r.push("\"Very good\"", he, "smiles. Seeing your confused look,", he, + "says \"We are not interested in dealing with someone who isn't in control of their own affairs.\" Seems like you just passed a test."); + App.Events.addParagraph(fragment, r); + r = []; + r.push("After this, he continues explaining."); + sincereProposal(fragment, r); + } else { + let r = []; + r.push("\"If you say so\", ", he, + "continues and starts explaining the plans anew, sometimes with great gestures, without ever getting to the point and you start to get bored"); + if (S.Bodyguard.intelligence + S.Bodyguard.intelligenceImplant + 30 * S.Bodyguard.skill.combat > 40 + && canSee(S.Bodyguard)) { + r.push("until", he, "does on of", his, "grand gestures again and", + S.Bodyguard.slaveName, canWalk(S.Bodyguard) ? "jumps forward" : "starts"); + if (perceptiveCareers.includes(V.PC.career)) { + r.push(r.pop() + ", just a moment faster than you,"); + } + r.push("and asks the man what", he, "just put in your drink."); + bgDefense(fragment, r); + } else if (perceptiveCareers.includes(V.PC.career)) { + r.push("until", he, "does on of", his, "grand gestures again, during which you notice", he, + "put something in your drink and you confront", him, "about what", he, "just did."); + bgDefense(fragment, r); + } else { + r.push(r.pop() + ". After a while"); + poisoned(fragment, r); + } + } + return fragment; + } + + function bgDefense(fragment, paragraphStart) { + const {her: herBG, she: sheBG} = getPronouns(S.Bodyguard); + + paragraphStart.push("Before you can react to anything the", man, "draws a weapon and"); + if (hasAnyArms(S.Bodyguard) && canSee(S.Bodyguard)) { + paragraphStart.push(paragraphStart.pop() + ","); + if (Deadliness(S.Bodyguard) > 4) { + paragraphStart.push("just a moment faster,", S.Bodyguard.slaveName, "draws", herBG, "own, shooting", him, + "in the shoulder. Screaming of pain, ", he, "drops", his, "weapon and", S.Bodyguard.slaveName, + "swiftly moves to secure", him); + App.Events.addParagraph(fragment, paragraphStart); + let r = []; + r.push("After the initial shock is over you are about to start interrogating", him, "about who send", + him + ", but all of a sudden", he, "starts convulsing and a few moments later", he, + "is dead. Seems like they care a lot about not being tracked down. And indeed, all the already sparse information about", + companyName, "is gone and any leads you might have had are useless. You task your assistant to continue searching for the one behind this, but you don't expect anything to come out of it. Someone wanting you dead is no surprise to you and without any idea as to why there are thousands of small groups and individuals who want arcology owners, your kind of owner or maybe just you personally dead."); + App.Events.addParagraph(fragment, r); + continueButton(fragment); + } else { + paragraphStart.push("just a moment too slow,", S.Bodyguard.slaveName, "draws", herBG, "own, shooting", him, + "in the chest, but at that point you already have a bullet in your heart. Seeing you fall down", sheBG, "sets", herBG, "weapon to automatic, puts it under", herBG, "chin and presses the trigger."); + App.Events.addParagraph(fragment, paragraphStart); + gameOver(fragment); + } + } else { + paragraphStart.push("shoots you. Having a bodyguard who cannot actually defend you might not have been the best choice in retrospect."); + paragraphStart.push("You being dead", S.Bodyguard, "knows", sheBG, "has to follow you. Being unable to shoot a weapon means"); + if (canWalk(S.Bodyguard)) { + paragraphStart.push("all that is left to", herBG, "is trying to hit the corner of your table hard enough with", herBG, "head. By the time your slaves come in the corner is bloody red and your bodyguard is lying next to you with large wound on", herBG, "head."); + } else { + paragraphStart.push(sheBG, "has to do so with other means but when your other slaves come in all", sheBG, "was able to do are some minor cuts and bruises. After watching for a while one of your slaves finally ends it."); + } + App.Events.addParagraph(fragment, paragraphStart); + gameOver(fragment); + } + } + + function bgLeavesRoute(){ + const fragment = document.createDocumentFragment(); + if (isSincere) { + let r = []; + r.push("After your bodyguard leaves,", he, + "looks at you for a while, before saying, \"I don't believe you are ready to do business with us.\" When you question why,", + he, "answers \"If you can't trust your bodyguard with sensitive information, you clearly have bigger problems too worry about than our small proposal.\" before leaving your office without waiting for a guide to lead", + him, "outside."); + App.Events.addParagraph(fragment, r); + continueButton(fragment); + } else { + let r = []; + r.push("\"Thank you.\" he continues."); + noSlaveRoute(fragment, r, true); + } + return fragment; + } + + function poisoned(fragment, paragraphStart){ + let r = paragraphStart; + r.push(he, "starts packing up and tells you to call", him, + "if you are interested. You certainly will not, if you wanted to hear someone talk for hours without saying anything you would watch old world politicians."); + App.Events.addParagraph(fragment, r); + r = []; + r.push("Several hours later you start too feel unwell and a few minutes after you drop dead. Later autopsy reveals you were poisoned."); + App.Events.addParagraph(fragment, r); + gameOver(fragment); + } + + function sincereProposal(fragment, paragraphStart) { + const options = []; + switch (variation) { + case "trade": + paragraphStart.push(companyName, "is planning a trade deal with an old world corporation that wants to expand into the Free Cities, but with the added twist of effectively robbing them during this. Their problem is that they need something to show them and your arcology would ideal for this. Your role would be simple, just following a short script before leaving both sides to negotiate. If everything goes well your share could be in the six digit realm, but in case something goes wrong your reputation could be severely damaged."); + options.push( + new App.Events.Result("A chance to get this amount of money doesn't come by every day. Of course you take this opportunity.", accept()), + new App.Events.Result("The potential winnings are not in proportion to the risk. You will not be a part of their plans.", refused) + ); + break; + case "slave": + paragraphStart.push(companyName, + "is dealing in a special kind of enslavement. Instead of searching for buyers for the slaves they already have, they instead first search for buyers and enslave those the buyer wants to buy. And while you can at many companies pre order slaves with certain traits,", + companyName, + "enslaves the exact individuals you want, fabricating debt or even kidnapping until they own their target."); + if (V.cash >= 50000) { + options.push(new App.Events.Result( + "Enslaving that annoying guy from high school might be petty, but it will be worth it nonetheless.", + accept("school"), "Costs ¤50.000")); + } + if (V.cash >= 250000) { + options.push(new App.Events.Result( + "There is a rising star in the music industry who would fit perfectly in your stable.", + accept("star"), "Costs ¤250.000")); + } + options.push(new App.Events.Result(`There is no one you ${options.length > 0 ? "want to" : "can"} enslave right now.`, refused)); + break; + case "drug": + paragraphStart.push(companyName, "has developed a new performance enhancing drug that can greatly enhance one's productivity. It does however come with serious drawbacks making it unusable for sex slaves, but it could immensely enhance the performance of your menial slaves."); + if (V.cash >= 100000) { + options.push(new App.Events.Result("Making more money from your menials is always good. Buy the drug.", accept(), "Costs ¤100.000")); + } else { + options.push(new App.Events.Result(null, null, "You don't have the cash required to buy the drug.")); + } + options.push( + new App.Events.Result("With the few menials you have you will not recoup the costs for the drug anytime soon.", refused) + ); + break; + case "military": + paragraphStart.push(companyName, "is part of an endeavor to carve out a Free Cities colony in the old world. While being too far way to influence your local political climate it is certainly a new milestone in the Free Cities dominance over the old world. Your mercenaries are known to be veterans in fighting on old world territory and you supply them with state-of-the-art equipment, so it is only natural for them to ask you to borrow your mercenaries for this operation. Shipping your mercenaries around the globe would be a big operation, but all participants who don't get part of the colony itself will receive a large monetary compensation."); + options.push( + new App.Events.Result("This is a worthy endeavor. Of course you will help out.", accept()), + new App.Events.Result("Military operations tend to be a net loss most of the time. You will watch with interest but that's it.", refused) + ); + } + App.Events.addParagraph(fragment, paragraphStart); + App.Events.addResponses(fragment, options, "deal"); + } + + /** + * @param {string} [argument] + * @returns {function(): DocumentFragment} + */ + function accept(argument) { + return function() { + const r = []; + switch (variation) { + case "trade": + r.push("You discuss the details of the operation before", he, "leaves. You will have a guest soon."); + V.illegalDeals.trade = {week: V.week + 2, company: companyName}; + break; + case "slave": + r.push("You tell", him, "your target and he nods. \"A great idea. It should take no longer than a few weeks.\""); + V.illegalDeals.slave = {type: argument, company: companyName}; + break; + case "drug": + r.push("The drug will be delivered within the week."); + V.illegalDeals.menialDrug = 1; + break; + case "military": + r.push("You order your mercenaries to prepare and a few days later they start to leave, leaving enough man behind to keep your arcology secure. You do not expect to hear much in the next few months, military operations of this size simply take time."); + V.illegalDeals.military = {week: V.week + 16, company: companyName}; + break; + } + const fragment = document.createDocumentFragment(); + App.Events.addParagraph(fragment, r); + continueButton(fragment); + return fragment; + }; + } + + function refused() { + // TODO flavor text + return endEvent(); + } + + /* End event functions */ + + function gameOver(fragment) { + App.Events.addParagraph(fragment, ["<span class='bold'>GAME OVER</span>"]); + V.ui = "start"; + UIBar.update(); + } + + function endEvent() { + Engine.play(nextPassage); + return []; + } + + function continueButton(fragment) { + fragment.append(App.UI.DOM.passageLink("Continue", nextPassage)); + V.nextButton = "Continue"; + V.nextLink = nextPassage; + UIBar.update(); + } +}; + +/** + * @param {string} variation + * @param {string} companyName + * @param {string} [type] only required when variation = "slave" + * @returns {DocumentFragment} + */ +App.Events.murderAttemptFollowup = function(variation, companyName, type) { + V.nextButton = "Continue"; + V.nextLink = "Random Nonindividual Event"; + + const fragment = document.createDocumentFragment(); + switch (variation) { + case "trade": + App.Events.addParagraph(fragment, tradeDeal()); + break; + case "slave": + App.Events.addParagraph(fragment, slaveDeal(type)); + break; + case "military": + App.Events.addParagraph(fragment, militaryDeal()); + break; + } + + return fragment; + + function tradeDeal() { + V.illegalDeals.trade = -1; + let r = []; + r.push("Today you are receiving the delegation of the old world company wanting to buy into the lucrative Free Cities market. After showing them around your logistic centers and the cleaner industry areas you leave them alone with the delegation from", + companyName + "."); + if (Math.random() > 0.05) { + r.push("The next day you receive a transaction of", cashFormatColor(270000) + "."); + cashX(270000, "event"); + } else { + r.push("A few hours later you receive a message that tricking the old world company in giving them money for nothing didn't quite work out as hoped. And truly, the next day your uncompetitive behavior is all over the media. This inflicts <span class='reputation dec'>lasting harm on your reputation</span> and <span class='red'>severely damages your economy</span> since your arcology is not seen as a reliable place to conduct business anymore."); + repX(-20000, "event"); + V.enduringRep *= 0.5; + V.arcologies[0].prosperity *= 0.7; + } + return r; + } + + function slaveDeal(type) { + V.illegalDeals.slave = -1; + let slave; + let relation; + if (type === "school") { + slave = GenerateNewSlave(null, { + minAge: V.PC.actualAge - 1, + maxAge: V.PC.actualAge + 1, + mature: 0, + ageOverridesPedoMode: 1, + nationality: V.PC.nationality, + race: V.PC.race // Same school does not imply same race, but with PC nationality defaulting to + // Stateless it's better than nothing. + }); + slave.origin = "You were on the same school and seeing $her as your slave fills you with endless satisfaction"; + slave.behavioralFlaw = "arrogant"; + relation = "your former schoolmate"; + } else if (type === "star") { + slave = GenerateNewSlave(null); + slave.origin = "You bought $her enslavement in an illegal deal."; + slave.skill.entertainment = 60; + slave.face = 96 + Math.floor(Math.random() * 5); // Math.random() is always < 1, so range is 0<=x<=4 + slave.intelligence = Math.abs(slave.intelligence); // never dumb, but no guarantee on smart + slave.weight = Math.clamp(slave.weight, -30, 30); + slave.career = "an actress"; + slave.prestige = 2; + slave.prestigeDesc = "$He was once a rising star in the music business, but was illegally enslaved on your command."; + relation = "the former rising star"; + } + V.activeSlave = slave; + console.log(V.activeSlave); + let r = []; + r.push("Today", relation, "whose enslavement you bought arrives at your penthouse."); + r.push(App.UI.DOM.renderPassage("New Slave Intro")); + return r; + } + + function militaryDeal() { + V.illegalDeals.military = -1; + let r = []; + if (Math.random() > 0.1) { + r.push("After several months of fighting the Free Cities colony in the old world is finally established. While small scale fighting will continue likely for years to come local Free Cities can easily do this, so external forces, like your own mercenaries, are starting to withdraw. For your participation you get", + cashFormatColor(1000000), "and 500 menial slaves."); + cashX(1000000, "event"); + V.menial += 500; + } else { + r.push("Despite great efforts the coalition of Free Cities trying to establish a colony in the old world finally announces the projects failure. Whether the reason is that the old world military still has enough power left to stop the establishment of a colony or simple mismanagement by the leading Free Cities is a topic for debate, but the fact remains that months were waisted on a fruitless war. Luckily you didn't invest too much so the cost for failure is a meager", + cashFormatColor(40000, true), "and some <span class='reputation dec'>reputation loss.</span>"); + cashX(-40000, "event"); + repX(-(V.rep / 8), "event"); + } + return r; + } +}; diff --git a/src/events/scheduled/murderAttempt.tw b/src/events/scheduled/murderAttempt.tw new file mode 100644 index 0000000000000000000000000000000000000000..a8a8449322fbff70adad70040ae7d2ca67dce630 --- /dev/null +++ b/src/events/scheduled/murderAttempt.tw @@ -0,0 +1,3 @@ +:: Murder Attempt [nobr] + +<<includeDOM App.Events.murderAttempt()>> diff --git a/src/facilities/farmyard/reports/farmyardReport.js b/src/facilities/farmyard/reports/farmyardReport.js index a04e9b8132e1c28f10ea3b6012cc38ea023054fd..63ee5047bedad2ad0db79b4d8c8371bb54a1cef4 100644 --- a/src/facilities/farmyard/reports/farmyardReport.js +++ b/src/facilities/farmyard/reports/farmyardReport.js @@ -374,7 +374,7 @@ App.Facilities.Farmyard.farmyardReport = function farmyardReport() { $(slaveEntry).append(`<span class="slave-name">${SlaveFullName(slave)}</span> `); if (slave.choosesOwnAssignment === 2) { - $(slaveEntry).append(App.UI.DOM.renderPassage("SA chooses own job")); + $(slaveEntry).append(App.SlaveAssignment.choosesOwnJob(slave)); } else { $(slaveEntry).append(`is working out of ${V.farmyardName}.`); } diff --git a/src/gui/options/options.tw b/src/gui/options/options.tw index 8a642e8a0059a78f6730e7fde9c27ccec89d15d7..ffbeac3eb3930d080d1ed43fd5bb528b8e055cb0 100644 --- a/src/gui/options/options.tw +++ b/src/gui/options/options.tw @@ -738,5 +738,8 @@ .addComment("This will enable a controversial but very broken event. Warning: Snuff, cannibalism.")>> <</if>> + <<run _options.addOption("New event", "tempEventToggle") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + <<includeDOM _options.render()>> </div> diff --git a/src/gui/storyCaptionWidgets.tw b/src/gui/storyCaptionWidgets.tw index 3242e2b91f508d773fa094bc13b6f1a8f560b3f0..ce839f41640d134d11dbf77287039fbf8f4a8cc3 100644 --- a/src/gui/storyCaptionWidgets.tw +++ b/src/gui/storyCaptionWidgets.tw @@ -7,7 +7,7 @@ <<if _Pass != "End Week">> <<if _Pass == "Main">> <strong> - <div id="endWeekButton"> + <div id="endWeekButton"> <<link "END WEEK">> <<run endWeek()>> <</link>> @@ -24,7 +24,7 @@ <<if $nextButton != " ">> <<link "$nextButton">> <<goto $nextLink>> - <</link>> + <</link>> <span class="hotkey"> <<print App.UI.Hotkeys.hotkeys("nextLink")>> </span> diff --git a/src/interaction/slaveInteract.js b/src/interaction/slaveInteract.js index a8fb52dce161e7868aee84aab161726fc6809f15..721535348bc1ae9056fc549f46777eca137386da 100644 --- a/src/interaction/slaveInteract.js +++ b/src/interaction/slaveInteract.js @@ -2668,14 +2668,18 @@ App.UI.SlaveInteract.custom = (function() { slaveNameNode.appendChild(label); - result.appendChild(App.UI.DOM.link( - ` Restore ${his} birth name`, - () => { - slave.slaveName = slave.birthName; - updateName(slave, {oldName:oldName, oldSurname:oldSurname}); - }, - false, - )); + if (slave.slaveName === slave.birthName) { + result.append(` ${He} has ${his} birth name`); + } else { + result.appendChild(App.UI.DOM.link( + ` Restore ${his} birth name`, + () => { + slave.slaveName = slave.birthName; + updateName(slave, {oldName:oldName, oldSurname:oldSurname}); + }, + false, + )); + } if (V.arcologies[0].FSPastoralist !== "unset") { if (slave.lactation > 0) { @@ -2746,14 +2750,18 @@ App.UI.SlaveInteract.custom = (function() { slaveSurnameNode.appendChild(label); - result.appendChild(App.UI.DOM.link( - ` Restore ${his} birth surname`, - () => { - slave.slaveSurname = slave.birthSurname; - updateName(slave, {oldName:oldName, oldSurname:oldSurname}); - }, - false, - )); + if (slave.slaveSurname === slave.birthSurname) { + result.append(` ${He} has ${his} birth surname`); + } else { + result.appendChild(App.UI.DOM.link( + ` Restore ${his} birth surname`, + () => { + slave.slaveSurname = slave.birthSurname; + updateName(slave, {oldName:oldName, oldSurname:oldSurname}); + }, + false, + )); + } if (slave.slaveSurname) { result.append(` | `); diff --git a/src/interaction/wardrobeUse.js b/src/interaction/wardrobeUse.js index ce542db95738e535cb35ce6be78517efdef3f2de..2203e7df071f580dba6758ab14120deaeeb32c32 100644 --- a/src/interaction/wardrobeUse.js +++ b/src/interaction/wardrobeUse.js @@ -660,7 +660,7 @@ App.UI.Wardrobe.vaginalAccessory = function(slave) { App.UI.Wardrobe.vaginalAttachment = function(slave) { if (slave.fuckdoll !== 0) { return; - } else if (slave.vaginalAccessory === "none") { + } else if (["none", "bullet vibrator", "smart bullet vibrator"].includes(slave.vaginalAccessory)) { return jQuery('#vaginalAttachment').empty(); } // App.Desc.vaginalAttachment(slave); diff --git a/src/js/economyJS.js b/src/js/economyJS.js index 262f8e25376bfbd77a031f4403dd6fe1137956cc..074594e69a210d70c30f6b1648ec21411bd29f50 100644 --- a/src/js/economyJS.js +++ b/src/js/economyJS.js @@ -624,9 +624,9 @@ globalThis.calculateCosts = (function() { secExpCost += App.SecExp.upkeep.edictsCash(); secExpCost += App.SecExp.upkeep.SF(); secExpCost += App.SecExp.upkeep.buildings(); - if (V.soldierWages === 0) { + if (V.SecExp.edicts.defense.soldierWages === 0) { soldierMod = 1; - } else if (V.soldierWages === 1) { + } else if (V.SecExp.edicts.defense.soldierWages === 1) { soldierMod = 1.5; } else { soldierMod = 2; diff --git a/src/js/futureSocietyJS.js b/src/js/futureSocietyJS.js index 910a4041cfb047e2fda01ff47ef1fd299328a61b..944ec9fc0222d3caebdfffebe2d7ac52509a2498 100644 --- a/src/js/futureSocietyJS.js +++ b/src/js/futureSocietyJS.js @@ -297,12 +297,16 @@ globalThis.FutureSocieties = (function() { case "FSPaternalist": arcology[FSLaw] = 0; arcology[FSSMR] = 0; - V.slaveWatch = 0; + if (_.get(V.SecExp.edicts)) { + V.SecExp.edicts.slaveWatch = 0; + } break; case "FSDegradationist": arcology[FSLaw] = 0; arcology[FSSMR] = 0; - V.liveTargets = 0; + if (_.get(V.SecExp.edicts)) { + V.SecExp.edicts.defense.liveTargets = 0; + } break; case "FSGenderRadicalist": arcology.FSGenderRadicalistLawBeauty = 0; @@ -316,7 +320,9 @@ globalThis.FutureSocieties = (function() { case "FSSupremacist": arcology[FSLaw] = 0; arcology[FSSMR] = 0; - V.noSubhumansInArmy = 0; + if (_.get(V.SecExp.edicts)) { + V.SecExp.edicts.defense.noSubhumansInArmy = 0; + } break; case "FSTransformationFetishist": case "FSAssetExpansionist": @@ -326,7 +332,9 @@ globalThis.FutureSocieties = (function() { arcology.FSPhysicalIdealistLaw = 0; arcology.FSPhysicalIdealistSMR = 0; arcology.FSPhysicalIdealistStrongFat = 0; - V.martialSchool = 0; + if (_.get(V.SecExp.edicts)) { + V.SecExp.edicts.defense.martialSchool = 0; + } break; case "FSHedonisticDecadence": arcology.FSHedonisticDecadenceLaw = 0; @@ -338,18 +346,24 @@ globalThis.FutureSocieties = (function() { arcology.FSChattelReligionistLaw = 0; arcology.FSChattelReligionistSMR = 0; arcology.FSChattelReligionistCreed = 0; - V.subsidyChurch = 0; + if (_.get(V.SecExp.edicts)) { + V.SecExp.edicts.subsidyChurch = 0; + } break; case "FSRepopulationFocus": arcology[FSLaw] = 0; arcology[FSSMR] = 0; V.universalRulesChildrenBecomeBreeders = 0; - V.pregExemption = 0; + if (_.get(V.SecExp.edicts)) { + V.SecExp.edicts.defense.pregExemption = 0; + } break; case "FSRestart": arcology[FSLaw] = 0; arcology[FSSMR] = 0; - V.eliteOfficers = 0; + if (_.get(V.SecExp.edicts)) { + V.SecExp.edicts.defense.eliteOfficers = 0; + } V.propOutcome = 0; V.failedElite = 0; break; diff --git a/src/js/utilsFC.js b/src/js/utilsFC.js index cfa0bab20e893c0d6c5b0f187127f335bf6f503b..078f647039cbdfdafc67e166c1fe6c6e003a2f05 100644 --- a/src/js/utilsFC.js +++ b/src/js/utilsFC.js @@ -2935,9 +2935,9 @@ globalThis.penthouseCensus = function() { * @returns {App.Entity.SlaveState[]} array of slaves employed at the job or facility, sorted in accordance to user choice */ App.Utils.sortedEmployees = function(jobOrFacility) { - const emploees = jobOrFacility.employees(); - SlaveSort.slaves(emploees); - return emploees; + const employees = jobOrFacility.employees(); + SlaveSort.slaves(employees); + return employees; }; /** diff --git a/src/neighbor/neighborInteract.js b/src/neighbor/neighborInteract.js index 35fb26f3c9498660a6359871d568709d56b85fd1..6c86d886c0dbccf36a196c34f281dc541bebbb4e 100644 --- a/src/neighbor/neighborInteract.js +++ b/src/neighbor/neighborInteract.js @@ -289,7 +289,7 @@ App.Neighbor.Interact = (function() { } } - addAcquisitionBlock("FSRomanRevivalist", "a toga", "clothing", "togas", () => { V.boughtItem.toga = 1; }); + addAcquisitionBlock("FSRomanRevivalist", "a toga", "clothing", "togas", () => { V.boughtItem.clothing.toga = 1; }); addAcquisitionBlock("FSEdoRevivalist", "a kimono", "clothing", "kimonos", () => { V.boughtItem.clothing.kimono = 1; }); addAcquisitionBlock("FSArabianRevivalist", "harem gauze", "clothing", "silken harem garb", () => { V.boughtItem.clothing.harem = 1; }); addAcquisitionBlock("FSAztecRevivalist", "a huipil", "clothing", "huipils", () => { V.boughtItem.clothing.huipil = 1; }); diff --git a/src/npc/databases/dSlavesDatabase.js b/src/npc/databases/dSlavesDatabase.js index 9fe6b3e5c7f092181899a347e3a52c5eb6b346c0..02f590e2357e5d9d9a26b473bde7847f073ea162 100644 --- a/src/npc/databases/dSlavesDatabase.js +++ b/src/npc/databases/dSlavesDatabase.js @@ -425,7 +425,7 @@ App.Data.HeroSlaves.D = [ weight: -20, height: 152, race: "white", - markings: "freckled", + markings: "freckles", eye: {origColor: "blue"}, origHColor: "blonde", pubicHColor: "blonde", @@ -1248,9 +1248,9 @@ App.Data.HeroSlaves.D = [ skill: { vaginal: 100, oral: 100, - anal: 100 + anal: 100, + entertainment: 35, }, - entertainment: 35, intelligence: 20, intelligenceImplant: 30, attrXX: 80, @@ -1405,9 +1405,9 @@ App.Data.HeroSlaves.D = [ skill: { vaginal: 35, oral: 35, - anal: 35 + anal: 35, + combat: 1, }, - combat: 1, intelligence: -30, attrXY: 40, fetishKnown: 1, @@ -1595,7 +1595,7 @@ App.Data.HeroSlaves.D = [ devotion: 100, height: 190, nationality: "Irish", - markings: "freckled", + markings: "freckles", race: "white", eye: {origColor: "green"}, origHColor: "red", @@ -1872,7 +1872,7 @@ App.Data.HeroSlaves.D = [ health: {condition: 20}, devotion: 40, weight: 20, - reace: "white", + race: "white", origHColor: "black", pubicHColor: "black", origSkin: "light", @@ -1970,9 +1970,9 @@ App.Data.HeroSlaves.D = [ nosePiercing: 1, skill: { vaginal: 15, - oral: 15 + oral: 15, + anal: 100, }, - anal: 100, attrXX: 80, attrXY: 40, fetishKnown: 1 @@ -2217,7 +2217,7 @@ App.Data.HeroSlaves.D = [ devotion: -25, weight: 20, height: 157, - reace: "white", + race: "white", origSkin: "white", hLength: 60, hStyle: "neat", @@ -2420,9 +2420,9 @@ App.Data.HeroSlaves.D = [ ovaries: 1, skill: { vaginal: 15, - oral: 15 + oral: 15, + anal: 15, }, - anal: 15, intelligence: random(96, 100), intelligenceImplant: 30, attrXY: 40, @@ -2467,7 +2467,7 @@ App.Data.HeroSlaves.D = [ custom: {desc: "$He has a heart shaped face and many scars."}, faceShape: "cute", hips: 3, - markings: "beauty" + markings: "beauty mark" }, /* Fixed customdesc syntax, changed eye color, added piercings, increased waist -BoneyM*/ { @@ -2631,7 +2631,7 @@ App.Data.HeroSlaves.D = [ ovaries: 1, nosePiercing: 1, attrXY: 40, - fetish: "arrogant", + behavioralFlaw: "arrogant", fetishKnown: 1, sexualFlaw: "hates penetration" }, @@ -2844,9 +2844,9 @@ App.Data.HeroSlaves.D = [ vaginal: 35, oral: 35, anal: 35, - whoring: 15 + whoring: 15, + entertainment: 15, }, - entertainment: 15, clothes: "a slave gown", intelligence: 30, intelligenceImplant: 30, @@ -2893,7 +2893,7 @@ App.Data.HeroSlaves.D = [ attrXY: 40, fetishKnown: 1, behavioralFlaw: "bitchy", - sexualFlaw: "crude " + sexualFlaw: "crude" }, /* mischievous tease*/ /* Reduced height, added entertainskill, added bitchy, changed eyes -BoneyM*/ @@ -3235,7 +3235,7 @@ App.Data.HeroSlaves.D = [ vaginaLube: 1, clit: 2, clitPiercing: 2, - clitSetting: "lesbian", + clitSetting: "women", anus: 2, ovaries: 1, anusTat: "bleached", @@ -3349,9 +3349,9 @@ App.Data.HeroSlaves.D = [ vaginal: 35, oral: 100, anal: 100, - whoring: 15 + whoring: 15, + entertainment: 15, }, - entertainment: 15, clothes: "a comfortable bodysuit", collar: "pretty jewelry", shoes: "heels", @@ -3415,9 +3415,9 @@ App.Data.HeroSlaves.D = [ vaginal: 100, oral: 100, anal: 35, - whoring: 15 + whoring: 15, + entertainment: 15, }, - entertainment: 15, clothes: "a slutty outfit", intelligence: -30, attrXY: 40, @@ -3555,8 +3555,8 @@ App.Data.HeroSlaves.D = [ attrXX: 80, attrXY: 0, fetishKnown: 1, - behavioralFlaw: "bitchy", - sexualFlaw: "hates men", + behavioralFlaw: "hates men", + sexualFlaw: "crude", custom: {desc: "$He absolutely detests men."}, career: "a principal" }, @@ -3603,9 +3603,9 @@ App.Data.HeroSlaves.D = [ vaginal: 100, oral: 100, anal: 100, - whoring: 100 + whoring: 100, + entertainment: 35, }, - entertainment: 35, combat: 0, collar: "heavy gold", shoes: "flats", @@ -3649,9 +3649,9 @@ App.Data.HeroSlaves.D = [ vaginal: 100, oral: 100, anal: 100, - whoring: 100 + whoring: 100, + entertainment: 35, }, - entertainment: 35, collar: "heavy gold", shoes: "heels", intelligence: 96, @@ -3839,9 +3839,9 @@ App.Data.HeroSlaves.D = [ ovaries: 1, skill: { oral: 15, - anal: 15 + anal: 15, + whoring: 15, }, - whoring: 15, attrXY: 40, behavioralFlaw: "hates women", custom: {desc: "The pale skin within $his tan lines is lightly freckled."}, @@ -4651,7 +4651,6 @@ App.Data.HeroSlaves.Dextreme = [ fetish: "boobs", fetishStrength: 70, behavioralFlaw: "arrogant", - sexualFlaw: "hates men", custom: {desc: "$He has an identical twin sister named Kennerly, from whom $he hates to be parted. They're from the former United States."}, mother: -9999, father: -9998 @@ -4698,7 +4697,6 @@ App.Data.HeroSlaves.Dextreme = [ fetish: "boobs", fetishStrength: 70, behavioralFlaw: "arrogant", - sexualFlaw: "hates men", custom: {desc: "$He has an identical twin sister named Camille, from whom $he hates to be parted. They're from the former United States."}, mother: -9999, father: -9998 diff --git a/src/npc/databases/ddSlavesDatabase.js b/src/npc/databases/ddSlavesDatabase.js index 4659e96168274e491a8f9f0add374f102aede5e1..ae6f30bab726563420f4649ce0255dffae38ac94 100644 --- a/src/npc/databases/ddSlavesDatabase.js +++ b/src/npc/databases/ddSlavesDatabase.js @@ -528,7 +528,7 @@ App.Data.HeroSlaves.DD = [ devotion: 60, race: "white", nationality: "Irish", - markings: "freckled", + markings: "freckles", eye: {origColor: "blue"}, origHColor: "red", pubicHColor: "red", @@ -602,7 +602,7 @@ App.Data.HeroSlaves.DD = [ devotion: 100, nationality: "Irish", race: "white", - markings: "freckled", + markings: "freckles", eye: {origColor: "green"}, origHColor: "red", pubicHColor: "red", diff --git a/src/npc/databases/dfSlavesDatabase.js b/src/npc/databases/dfSlavesDatabase.js index 290c8c7cf435833dbe612ba371975bf81f86ccde..60e7cb94785699a3ee7b1587df2efe0d633789ee 100644 --- a/src/npc/databases/dfSlavesDatabase.js +++ b/src/npc/databases/dfSlavesDatabase.js @@ -127,7 +127,7 @@ App.Data.HeroSlaves.DF = [ teeth: "removable", clitPiercing: 2, lipsPiercing: 2, - counter: {PbirthsTotal: 1} + counter: {birthsTotal: 1} }, /* vibe nips, saliva implant*/ { diff --git a/src/npc/descriptions/crotch/vaginalAccessory.js b/src/npc/descriptions/crotch/vaginalAccessory.js index 129a41c0d7d6d40790f87e303c83cf715e3dfb0e..216cf5b6c0cf0a477bb35e28d57fe456c3d6a510 100644 --- a/src/npc/descriptions/crotch/vaginalAccessory.js +++ b/src/npc/descriptions/crotch/vaginalAccessory.js @@ -117,7 +117,7 @@ App.Desc.vaginalAttachment = function(slave) { // TODO: add descriptions for slaves with gaping+ vaginas break; default: - if (slave.vaginalAccessory !== "none") { + if (!(["none", "bullet vibrator", "smart bullet vibrator"].includes(slave.vaginalAccessory))) { r.push(`${His} current accessory is silent.`); } } diff --git a/src/npc/descriptions/descriptionWidgets.js b/src/npc/descriptions/descriptionWidgets.js index 291c36663b334ffc807481027440efa09d948fdf..36983303e74a8a710270a694744f508e84d26110 100644 --- a/src/npc/descriptions/descriptionWidgets.js +++ b/src/npc/descriptions/descriptionWidgets.js @@ -576,7 +576,7 @@ App.Desc.ageAndHealth = function(slave) { } } } - + if (slave.actualAge !== slave.physicalAge) { r += ` However, ${he} has the body of a ${num(slave.physicalAge)}-year-old; `; if (slave.physicalAge < 18 && slave.actualAge >= 18) { diff --git a/src/npc/descriptions/drugs.js b/src/npc/descriptions/drugs.js index 158effb501c72aa0c83a962deb57aee845e9fc1c..1f4a34e433f593dc0d8f44761f78532c9296f3ea 100644 --- a/src/npc/descriptions/drugs.js +++ b/src/npc/descriptions/drugs.js @@ -251,7 +251,7 @@ App.Desc.drugs = function(slave) { function aphrodisiacs() { const r = []; - if (slave.aphrodisiacs > 0 || slave.inflationType === "aphrodisiacs") { + if (slave.aphrodisiacs > 0 || slave.inflationType === "aphrodisiac") { if (slave.fetish === "mindbroken") { ignoredRule = 1; } else if (disobedience(slave) !== 0) { @@ -259,22 +259,22 @@ App.Desc.drugs = function(slave) { } else { ignoredRule = 0; } - if (slave.inflationType === "aphrodisiacs" || slave.aphrodisiacs > 1) { - if (slave.inflationType === "aphrodisiacs") { + if (slave.inflationType === "aphrodisiac" || slave.aphrodisiacs > 1) { + if (slave.inflationType === "aphrodisiac") { r.push(`${He}'s literally full of`); } else { r.push(`${He}'s swimming in`); } if (!hasAnyArms(slave)) { r.push(`aphrodisiacs, but is an amputee, so ${he} cannot touch ${himself}. ${He} writhes with extreme sexual frustration, desperately trying to relieve`); - if (slave.inflationType === "aphrodisiacs") { + if (slave.inflationType === "aphrodisiac") { r.push(`${himself}, but only managing to stir up the aphrodisiacs contained in ${his} gut, strengthening their effects even more.`); } else { r.push(`${himself}.`); } } else if (slave.rules.release.masturbation === 0 && slave.rules.release.master === 0 && ignoredRule === 0) { r.push(`aphrodisiacs, but is not permitted to touch ${him}self nor beg you for release. ${He} writhes with extreme sexual frustration, desperate to not break the rules in front of`); - if (slave.inflationType === "aphrodisiacs") { + if (slave.inflationType === "aphrodisiac") { r.push(`you, but only manages to stir up the aphrodisiacs contained in ${his} gut, further strengthening their effects on ${him}.`); } else { r.push(`you.`); @@ -312,7 +312,7 @@ App.Desc.drugs = function(slave) { } else { r.push(`viciously gropes, kneads and milks ${his} breasts, only stopping to occasionally focus on ${his} erect nipples.`); } - if (slave.inflationType === "aphrodisiacs") { + if (slave.inflationType === "aphrodisiac") { r.push(`${His} frantic attempts force ${his} distended middle to jiggle obscenely, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); } } else { @@ -354,7 +354,7 @@ App.Desc.drugs = function(slave) { } r.push(`to vigorously fuck ${his} favorite hole.`); } - if (slave.inflationType === "aphrodisiacs") { + if (slave.inflationType === "aphrodisiac") { r.push(`${His} frantic attempts force ${his} distended middle to jiggle obscenely, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); } } else { @@ -401,12 +401,12 @@ App.Desc.drugs = function(slave) { } r.push(`to fuck ${his} own ass.`); } - if (slave.inflationType === "aphrodisiacs") { + if (slave.inflationType === "aphrodisiac") { r.push(`${His} frantic attempts force ${his} distended middle to jiggle obscenely, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); } } else { r.push(`aphrodisiacs, but is wearing full chastity and cannot touch ${him}self. ${He} writhes with extreme sexual frustration, desperately trying to relieve`); - if (slave.inflationType === "aphrodisiacs") { + if (slave.inflationType === "aphrodisiac") { r.push(`${himself}, but only managing to stir up the aphrodisiacs contained in ${his} gut, strengthening their effects even more`); } else { r.push(`${himself}.`); @@ -489,7 +489,7 @@ App.Desc.drugs = function(slave) { } else { r.push(`${His} cock is painfully engorged.`); } - if (slave.inflationType === "aphrodisiacs") { + if (slave.inflationType === "aphrodisiac") { r.push(`${His} frantic masturbation forces ${his} distended middle to jiggle obscenely, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); } } @@ -565,12 +565,12 @@ App.Desc.drugs = function(slave) { } r.push(`to fuck ${his} own ass.`); } - if (slave.inflationType === "aphrodisiacs") { + if (slave.inflationType === "aphrodisiac") { r.push(`${His} frantic attempts force ${his} distended middle to jiggle obscenely, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); } } else { r.push(`aphrodisiacs, but is wearing a chastity belt and cannot touch ${him}self. ${He} writhes with extreme sexual frustration, desperately trying to relieve`); - if (slave.inflationType === "aphrodisiacs") { + if (slave.inflationType === "aphrodisiac") { r.push(`${himself}, but only managing to stir up the aphrodisiacs contained in ${his} gut, strengthening their effects even more.`); } else { r.push(`${himself}.`); @@ -665,12 +665,12 @@ App.Desc.drugs = function(slave) { } r.push(`to fuck ${his} own ass.`); } - if (slave.inflationType === "aphrodisiacs") { + if (slave.inflationType === "aphrodisiac") { r.push(`${His} frantic attempts force ${his} distended middle to jiggle obscenely, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); } } else { r.push(`aphrodisiacs, but is wearing a chastity cage and cannot touch ${him}self. ${He} writhes with extreme sexual frustration, desperately trying to relieve`); - if (slave.inflationType === "aphrodisiacs") { + if (slave.inflationType === "aphrodisiac") { r.push(`${himself}, but only managing to stir up the aphrodisiacs contained in ${his} gut, strengthening their effects even more`); } else { r.push(`${himself}.`); @@ -757,7 +757,7 @@ App.Desc.drugs = function(slave) { if (canDoAnal(slave)) { if (slave.anus === 0) { r.push(`plays with a nipple with one hand while furiously rubbing ${his} virgin anus and the sensitive perineum beneath it with the other, desperately trying to get ${him}self off.`); - if (slave.inflationType === "aphrodisiacs") { + if (slave.inflationType === "aphrodisiac") { r.push(`${His} frantic attempts force ${his} distended middle to jiggle obscenely, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); } } else { @@ -770,7 +770,7 @@ App.Desc.drugs = function(slave) { r.push(`a finger`); } r.push(`to fuck ${his} own ass.`); - if (slave.inflationType === "aphrodisiacs") { + if (slave.inflationType === "aphrodisiac") { r.push(`${His} frantic attempts force ${his} distended middle to jiggle obscenely, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); } } @@ -779,7 +779,7 @@ App.Desc.drugs = function(slave) { } else { r.push(`writhes with extreme sexual frustration, desperately trying to relieve ${him}self despite ${his} anal chastity.`); } - if (slave.inflationType === "aphrodisiacs") { + if (slave.inflationType === "aphrodisiac") { r.push(`${His} frantic attempts force ${his} distended middle to jiggle obscenely, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); } } else { diff --git a/src/npc/descriptions/style/collar.js b/src/npc/descriptions/style/collar.js index caa88b21c2b34786fda6eab635537120bf59ef2e..5e402075de9c26a19ff7d9c7ed062980bacc78f2 100644 --- a/src/npc/descriptions/style/collar.js +++ b/src/npc/descriptions/style/collar.js @@ -30,7 +30,7 @@ App.Desc.collar = function(slave) { if (slave.pregType === 1) { r.push(`"1 baby`); } else { - r.push(`${slave.pregType} babies`); + r.push(`"${slave.pregType} babies`); } r.push(`on board!"`); } else { diff --git a/src/npc/descriptions/womb/superfetation.js b/src/npc/descriptions/womb/superfetation.js index d03dced0f897bb02076e9d32c8cbad7a02297d89..f0046d6d431252593344b757cdad9c2382ac8d9e 100644 --- a/src/npc/descriptions/womb/superfetation.js +++ b/src/npc/descriptions/womb/superfetation.js @@ -77,7 +77,7 @@ App.Desc.superfetation = function(slave, {market, eventDescription} = {}) { } else { r.push(`one,`); } - r.push(`at ${slaveWD.litters[litCount]} week`); + r.push(`at ${slaveWD.litters[litCount]}`); if (slaveWD.litters[litCount] > 1) { r.push(`weeks`); } else { @@ -122,7 +122,7 @@ App.Desc.superfetation = function(slave, {market, eventDescription} = {}) { r.push(`${is} too young to tell the father of.`); } } else { - r.push(`the next set of ${num(countLitter)} at ${slaveWD.litters[litCount]} week`); + r.push(`the next set of ${num(countLitter)} at ${slaveWD.litters[litCount]}`); if (slaveWD.litters[litCount] > 1) { r.push(`weeks`); } else { diff --git a/src/npc/generate/generateMarketSlave.js b/src/npc/generate/generateMarketSlave.js index 1fd4b5a734329064f1e2b8c9d46a691b88095e69..048c48b543107bcf1f3fc2d2ecf7ccfddb8d4600 100644 --- a/src/npc/generate/generateMarketSlave.js +++ b/src/npc/generate/generateMarketSlave.js @@ -1385,7 +1385,7 @@ globalThis.generateMarketSlave = function(market = "kidnappers", numArcology = 1 slaveGen = jsEither([10, 20]); slave.lips += slaveGen; slave.lipsImplant += slaveGen; - slave.waist = Math.trunc(slave.waist, -100, 15); + slave.waist = Math.clamp(slave.waist, -100, 15); if (slave.face < 40) { slave.faceImplant = 20*jsRandom(0, 1); slave.face = Math.clamp(slave.face+slave.faceImplant, -100, 100); @@ -2220,8 +2220,8 @@ globalThis.generateMarketSlave = function(market = "kidnappers", numArcology = 1 if (V.TFS.schoolUpgrade === 1) { slave.sexualQuirk = "caring"; } - slave.sexualFlaw = jsEither(["hates women", "none"]); - slave.behavioralFlaw = jsEither(["arrogant", "none"]); + slave.sexualFlaw = "none"; + slave.behavioralFlaw = jsEither(["hates women", "arrogant", "none"]); slave.fetishStrength = 100; slave.fetishKnown = 0; slave.attrKnown = 0; diff --git a/src/npc/interaction/passage/fSlaveImpreg.tw b/src/npc/interaction/passage/fSlaveImpreg.tw index e81aeecbf96434e8e1bc6c62cf0954fde2b27012..526587a0cf12e34b0acec5e7735d9610de185025 100644 --- a/src/npc/interaction/passage/fSlaveImpreg.tw +++ b/src/npc/interaction/passage/fSlaveImpreg.tw @@ -27,15 +27,15 @@ <<if $inbreeding && _kinship[_eligibles[_i].ID] > 0>> <<set _thisKinship = _kinship[_eligibles[_i].ID]>> <<if _thisKinship >= 0.5>> - (Extreme + (Extreme <<elseif _thisKinship >= 0.25>> - (Major + (Major <<elseif _thisKinship >= 0.125>> - (Some + (Some <<elseif _thisKinship >= 0.0625>> - (Minor + (Minor <<else>> - (Slight + (Slight <</if>> inbreeding, CoI of <<print _thisKinship>>) <</if>> diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw index 09100d1bc8c080f12dd36ee8a908d9d3e8001e75..82121fac20af10ccbbad50e218629dc284d63627 100644 --- a/src/npc/startingGirls/startingGirls.tw +++ b/src/npc/startingGirls/startingGirls.tw @@ -1194,7 +1194,7 @@ <<goto "Commit Starting Girl">> <</link>> <span class="note"> - This will apply your @@.springgreen;career bonus@@ to her: + This will apply your @@.springgreen;career bonus@@ to $him: <<if $PC.career == "capitalist">> one free level of @@.cyan;prostitution skill.@@ <<elseif $PC.career == "mercenary">> diff --git a/src/pregmod/analyzePregnancy.tw b/src/pregmod/analyzePregnancy.tw index 4a64fa0b204d7bd692498668bd32186fe943dc0b..45c768136ca3594573150c83ae295661c9f8d45a 100644 --- a/src/pregmod/analyzePregnancy.tw +++ b/src/pregmod/analyzePregnancy.tw @@ -377,11 +377,11 @@ <<elseif getSlave($activeSlave.ID).pregWeek < 0>> /*special states*/ Subject is in the postpartem period. <<elseif getSlave($activeSlave.ID).ovaryAge >= 47 >> - $His infertility is due to menopausal ovaries. + $His infertility is due to menopausal ovaries. <<elseif getSlave($activeSlave.ID).ovaries === 0 && getSlave($activeSlave.ID).mpreg === 0>> - $His infertility is due to missing ovaries. + $His infertility is due to missing ovaries. <<elseif getSlave($activeSlave.ID).preg == -2>> /*special states*/ - $His infertility is due to sterilization; $his ovaries could still work. + $His infertility is due to sterilization; $his ovaries could still work. <<elseif getSlave($activeSlave.ID).preg == -1>> /*special states*/ Contreceptive agents detected in subject. <</if>> diff --git a/src/pregmod/eliteTakeOver.tw b/src/pregmod/eliteTakeOver.tw index 9cdc8a8314e91d2d1c2a5bf2dd8d39548ffee2db..21f3b5aa98a5bdc31a006b08ca9369252020d978 100644 --- a/src/pregmod/eliteTakeOver.tw +++ b/src/pregmod/eliteTakeOver.tw @@ -44,8 +44,7 @@ You look up from your desk as the locked door to your office unseals, and a doze <br> "You are no longer worthy of being a part of our society. You know you can't be allowed to spread any information. But we are not merciless; one of our members has taken an interest in having you as her pet. You may choose to lose your mind, and service her until she tires of you, or gamble for your life and serve her anyway. Now decide." <</if>> -<br> -<br> +<br><br> <<if _pregSurrender == 0>> <<set $finalChoice = "final stand">> The choice is simple — you will not be a slave. diff --git a/src/pregmod/theUtopianOrphanage.tw b/src/pregmod/theUtopianOrphanage.tw index ea9b894e75fdd5dd715e418272ed3ed1e0d3ea14..064e55fd31b18b3205a2c791e58eccbe81a0671d 100644 --- a/src/pregmod/theUtopianOrphanage.tw +++ b/src/pregmod/theUtopianOrphanage.tw @@ -8,8 +8,8 @@ <</if>> //The Utopian Orphanage is where all slaves dream of being raised. Its business model is to offer intelligent, well educated girls just past their majority. The girls are treated exceptionally well and have no sexual education or experience. - -<br><br>The Utopian Orphanage offers a fresh graduate for inspection. The interview takes place in the girl's private room, where she showcases her education and witts. +<br><br> +The Utopian Orphanage offers a fresh graduate for inspection. The interview takes place in the girl's private room, where she showcases her education and wits. <<set _marketResult = generateMarketSlave("TUO")>> <<set $activeSlave = _marketResult.slave>> @@ -22,7 +22,8 @@ <</if>> <<if $slavesSeen > $slaveMarketLimit>><<set _slaveCost += Math.trunc(_slaveCost*(($slavesSeen-$slaveMarketLimit)*0.1))>><</if>> -<br><br>The price is <<print cashFormat(_slaveCost)>>.<<if $slavesSeen > $slaveMarketLimit>> You have cast such a wide net for slaves this week that it is becoming more expensive to find more for sale. Your reputation helps determine your reach within the slave market.<</if>> +<br><br> +The price is <<print cashFormat(_slaveCost)>>.<<if $slavesSeen > $slaveMarketLimit>> You have cast such a wide net for slaves this week that it is becoming more expensive to find more for sale. Your reputation helps determine your reach within the slave market.<</if>> <<setLocalPronouns $activeSlave>> <<buyingFromSchoolControls $TUO "slave" "slaves">> diff --git a/src/pregmod/widgets/bodySwapReaction.tw b/src/pregmod/widgets/bodySwapReaction.tw index f31639af2f0d47012a95a55545ffb72c9fa9fb8b..0def925db931455880fd08c9d2ebcacdb4718906 100644 --- a/src/pregmod/widgets/bodySwapReaction.tw +++ b/src/pregmod/widgets/bodySwapReaction.tw @@ -2157,7 +2157,7 @@ Now you only have to wait for $him to wake up. <<case "tiny">> $He's a little depressed by @@.orange;how tiny they've become.@@ <<case "puffy">> - $He giggle a little at the sight of how @@.lime;puffy they are.@@ + $He giggles a little at the sight of how @@.lime;puffy they are.@@ <<case "huge">> $He gasps at the sight of the @@.lime;two towering protrusions@@ jutting out from $his breasts. <<case "partially inverted">> diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index 05f8840e89dbb494a83151d3a661d42537e25fd9..7797dc30398c96397b640c12533b8d93db685048 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -3398,7 +3398,7 @@ Eventually, $his duties satisfactorily completed, $he comes before your desk to As another long week draws to a close, <<= App.UI.slaveDescriptionDialog($activeSlave)>> happens to <<if $activeSlave.belly >= 10000>>waddle<<else>>walk<</if>> past your office toward bed. There's nothing inherently abnormal about $his actions, but you do notice as $he steps past the doorway that an expression of worry and concern adorns $his $activeSlave.skin face. When you call $him into your office, $his face visibly brightens up in an attempt to conceal $his obvious distress as $he comes before you. Notably, although $he stands still and patiently awaits further orders, you notice $he <<if canSee($activeSlave)>>never manages to meet your eyes<<else>>keeps $his sightless eyes downcast<</if>>. When you ask $him what's troubling $him, $his face plainly falls. <br><br> <<if $PC.mother != $activeSlave.ID && $PC.father != $activeSlave.ID>> - "<<Master>>, you're <<s>>o young," $he <<say>>s penitently before smiling shyly in an attempt to insert some levity into $his confession. "It'<<s>> ju<<s>>t that I'm old enough to be your mother, <<Master>>. It'<<s>> a little weird, i<<s>>n't it?" + "<<Master>>, you're <<s>>o young," $he <<say>>s penitently before smiling shyly in an attempt to insert some levity into $his confession. "It'<<s>> ju<<s>>t that I'm old enough to be your $mother, <<Master>>. It'<<s>> a little weird, i<<s>>n't it?" <<else>> "<<Master>>, you're <<s>>o <<if $PC.title == 1>>hand<<s>>ome<<else>>beautiful<</if>>," $he <<say>>s penitently before smiling shyly in an attempt to insert some levity into $his confession. "It'<<s>> ju<<s>>t that you've become <<s>>o attractive <<s>>in<<c>>e <<if $PC.mother == $activeSlave.ID>> @@ -7164,7 +7164,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h <<else>> hole gets <</if>> - <<if (canDoAnal($activeSlave) && $activeSlave.anus == 0) || (canDoVaginal($activeSlave) && activeSlave.vagina == 0)>> + <<if (canDoAnal($activeSlave) && $activeSlave.anus == 0) || (canDoVaginal($activeSlave) && $activeSlave.vagina == 0)>> well stretched. <<else>> @@.lime;well stretched.@@ diff --git a/src/uncategorized/REroyalblood.tw b/src/uncategorized/REroyalblood.tw index 24ab62403191e767c821aadebb293aa8494e06a8..87f444edb073ad7badfa77c137a09ffa2bdbe0f7 100644 --- a/src/uncategorized/REroyalblood.tw +++ b/src/uncategorized/REroyalblood.tw @@ -730,7 +730,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad <<if $seeDicks > 0>> prince and princess, clad in chains and bound face to face in a forced embrace, the Queen, who is resigned to _his3 fate, <<else>> - princess and her mother, clad in chains and bound face to face in a forced embrace, + princess and $his mother, clad in chains and bound face to face in a forced embrace, <</if>> and a gaggle of terrified court ladies. <br><br> @@ -830,7 +830,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad <<if $seeDicks > 0>> prince and princess, clad in chains and bound face to face in a forced embrace, the Queen, who is resigned to _his3 fate, <<else>> - princess and her mother, clad in chains and bound face to face in a forced embrace, + princess and $his mother, clad in chains and bound face to face in a forced embrace, <</if>> and a gaggle of terrified court ladies and as much loot as they could carry. <br><br> diff --git a/src/uncategorized/arcadeReport.tw b/src/uncategorized/arcadeReport.tw index 12a2ec97d1d6e9cdde525b8c29ef2d4cfde6e7de..4576559bd172e8ee1ab3d522ab37e04a2912476e 100644 --- a/src/uncategorized/arcadeReport.tw +++ b/src/uncategorized/arcadeReport.tw @@ -72,16 +72,14 @@ /* 000-250-006 */ <span class='slave-name'><<= SlaveFullName(_slave)>></span> <<if _slave.choosesOwnAssignment == 2>> - <<include "SA chooses own job">> + <<= App.SlaveAssignment.choosesOwnJob(_slave)>> <<else>> is confined in $arcadeName. <</if>> <br> $He <<= App.SlaveAssignment.workAGloryHole(_slave)>> <<else>> - <<silently>> - <<include "SA chooses own job">> - <<run App.SlaveAssignment.workAGloryHole(_slave)>> - <</silently>> + <<run App.SlaveAssignment.choosesOwnJob(_slave)>> + <<run App.SlaveAssignment.workAGloryHole(_slave)>> <</if>> <<if ($arcadeUpgradeCollectors > 0)>> <<if (_slave.vasectomy == 1)>> diff --git a/src/uncategorized/arcmgmt.tw b/src/uncategorized/arcmgmt.tw index 73809b0db86be7ea135603b95aa7b88764eece84..bd3f7c122436f4626633dac29fc5dcb279b9f729 100644 --- a/src/uncategorized/arcmgmt.tw +++ b/src/uncategorized/arcmgmt.tw @@ -1243,18 +1243,20 @@ _percTopClass = Math.trunc(($topClass / ($ACitizens + $ASlaves)) * 1000) / 10>> <<set _rentMultiplier *= 0.95>> Food vendors are offered subsidized rent and operating expenses to set up shop in your arcology. <</if>> -<<if $alternativeRents == 1>> /*A silly policy*/ - Your citizens are allowed to pay their rents in slaves rather than cash and a few financially challenged individuals make use of this. - <<set _rentMultiplier *= 0.95>> - <<set _movement = random(0,3), $menials += _movement, $NPCSlaves -= _movement>> -<</if>> -<<if $discountMercenaries == 1>> - Mercenaries willing to come to your arcology are given a discount on rent. - <<set _rentMultiplier *= 0.98>> -<</if>> -<<if $militiaSoldierPrivilege == 1>> - Citizens in the militia are exempt from rent payment. - <<set _rentMultiplier *= 0.98>> +<<if $secExpEnabled == 1>> + <<if $SecExp.edicts.alternativeRents == 1>> /*A silly policy*/ + Your citizens are allowed to pay their rents in slaves rather than cash and a few financially challenged individuals make use of this. + <<set _rentMultiplier *= 0.95>> + <<set _movement = random(0,3), $menials += _movement, $NPCSlaves -= _movement>> + <</if>> + <<if $SecExp.edicts.defense.discountMercenaries == 1>> + Mercenaries willing to come to your arcology are given a discount on rent. + <<set _rentMultiplier *= 0.98>> + <</if>> + <<if $SecExp.edicts.defense.privilege.militiaSoldier == 1>> + Citizens in the militia are exempt from rent payment. + <<set _rentMultiplier *= 0.98>> + <</if>> <</if>> <<if $arcologies[0].FSArabianRevivalistLaw == 1>> <<set _rentMultiplier *= 1.05>> @@ -1303,6 +1305,9 @@ You own <<if $arcologies[0].FSDegradationistLaw == 1>> <<set _menialEarnings -= 3 * $arcadePrice>> <</if>> + <<if $illegalDeals.menialDrug === 1>> + <<set Math.trunc(_menialEarnings *= 1.5)>> + <</if>> <<if $menials > 1>> <<print num($menials)>> menial slaves<<if ($menialBioreactors > 0) && ($fuckdolls == 0)>> and<<else>>,<</if>><<else>>one menial slave<<if ($menialBioreactors > 0) && ($fuckdolls == 0)>> and<<else>>,<</if>><</if>> <<run cashX(_menialEarnings, "menialTrades")>> <</if>> @@ -1346,6 +1351,9 @@ You own <<else>> costing you @@.red;<<print cashFormat(_menialEarnings + _bioreactorEarnings + _fuckdollsEarnings)>>@@ on account of your free Fuckdoll policy. <</if>> +<<if $illegalDeals.menialDrug === 1>> + Your menial slaves productivity is enhanced by using performance enhancing drugs. +<</if>> <</if>> <<set _AWeekGrowth = $AGrowth>> @@ -1535,10 +1543,10 @@ You own Your arcology's low security is an instability factor simply too dangerous to be ignored. Many businesses avoid your arcology because of this. <<set _AWeekGrowth-->> <</if>> - <<if $weaponsLaw == 3>> + <<if $SecExp.edicts.weaponsLaw == 3>> The free flow of weapons in your arcology has a positive impact on its economy. <<set _AWeekGrowth++>> - <<elseif $weaponsLaw == 2>> + <<elseif $SecExp.edicts.weaponsLaw == 2>> The fairly liberal flow of weapons in your arcology has a positive impact on its economy. <<set _AWeekGrowth++>> <</if>> diff --git a/src/uncategorized/brothelReport.tw b/src/uncategorized/brothelReport.tw index 53795cfe9091f1fa0108105f83b4350e0d7f50f6..a9240a9f865929f19896f5e2ef1bb872d2e20193 100644 --- a/src/uncategorized/brothelReport.tw +++ b/src/uncategorized/brothelReport.tw @@ -274,7 +274,7 @@ /* 000-250-006 */ <span class="slave-name"><<= SlaveFullName(_slave)>></span> <<if _slave.choosesOwnAssignment == 2>> - <<include "SA chooses own job">> + <<= App.SlaveAssignment.choosesOwnJob(_slave)>> <<else>> is working out of $brothelName. <</if>> @@ -290,7 +290,7 @@ <br><<include "SA devotion">> <<else>> <<silently>> - <<include "SA chooses own job">> + <<run App.SlaveAssignment.choosesOwnJob(_slave)>> <<run App.SlaveAssignment.whore(_slave)>> <<run App.SlaveAssignment.choosesOwnClothes(_slave)>> <<include "SA rules">> diff --git a/src/uncategorized/cellblockReport.tw b/src/uncategorized/cellblockReport.tw index 40f1671c561534c5e85a8bd6d662ae23e1442bc8..916daa994d7fad734afde3ad7f0ce5a399a10743 100644 --- a/src/uncategorized/cellblockReport.tw +++ b/src/uncategorized/cellblockReport.tw @@ -250,7 +250,7 @@ /* 000-250-006 */ <span class='slave-name'><<= SlaveFullName(_slave)>></span> <<if _slave.choosesOwnAssignment == 2>> - <<include "SA chooses own job">> + <<= App.SlaveAssignment.choosesOwnJob(_slave)>> <<else>> is confined in $cellblockName. <</if>> @@ -265,7 +265,7 @@ <br><<include "SA devotion">> <<else>> <<silently>> - <<include "SA chooses own job">> + <<run App.SlaveAssignment.choosesOwnJob(_slave)>> <<run App.SlaveAssignment.stayConfined(_slave)>> <<include "SA rules">> <<include "SA diet">> diff --git a/src/uncategorized/clubReport.tw b/src/uncategorized/clubReport.tw index 93b7460d7e30c43aca5bfdae1e0c560239e77cba..992cf4724f104c62b3a29c698343e97922f92d2b 100644 --- a/src/uncategorized/clubReport.tw +++ b/src/uncategorized/clubReport.tw @@ -185,7 +185,7 @@ /* 000-250-006 */ <span class='slave-name'><<= SlaveFullName(_slave)>></span> <<if _slave.choosesOwnAssignment == 2>> - <<include "SA chooses own job">> + <<= App.SlaveAssignment.choosesOwnJob(_slave)>> <<else>> is serving in $clubName. <</if>> @@ -201,7 +201,7 @@ <br><<include "SA devotion">> <<else>> <<silently>> - <<include "SA chooses own job">> + <<run App.SlaveAssignment.choosesOwnJob(_slave)>> <<run App.SlaveAssignment.serveThePublic(_slave)>> <<run App.SlaveAssignment.choosesOwnClothes(_slave)>> <<include "SA rules">> diff --git a/src/uncategorized/costsReport.tw b/src/uncategorized/costsReport.tw index e54e7a9403e50fa4793b6d575a4d54e33bf6b61f..29b2de64228254dea896aa36f62dd05ca35def60 100644 --- a/src/uncategorized/costsReport.tw +++ b/src/uncategorized/costsReport.tw @@ -239,9 +239,9 @@ $researchLab.level > 0>> <</if>> <</if>> - <<if $soldierWages == 0>> + <<if $SecExp.edicts.defense.soldierWages == 0>> <<set _soldierMod = 1>> - <<elseif $soldierWages == 1>> + <<elseif $SecExp.edicts.defense.soldierWages == 1>> <<set _soldierMod = 1.5>> <<else>> <<set _soldierMod = 2>> diff --git a/src/uncategorized/dairyReport.tw b/src/uncategorized/dairyReport.tw index a204ff92eb1979b930301ec36adf8bdd1739f440..daf5d900919b3e0d358362f21db08dc2079aa491 100644 --- a/src/uncategorized/dairyReport.tw +++ b/src/uncategorized/dairyReport.tw @@ -404,7 +404,7 @@ /* 000-250-006 */ <span class='slave-name'><<= SlaveFullName(_slave)>></span> <<if _slave.choosesOwnAssignment == 2>> - <<include "SA chooses own job">> + <<= App.SlaveAssignment.choosesOwnJob(_slave)>> <<else>> is serving as a cow in $dairyName. <</if>> @@ -419,7 +419,7 @@ <br><<include "SA devotion">> <<else>> <<silently>> - <<include "SA chooses own job">> + <<run App.SlaveAssignment.choosesOwnJob(_slave)>> <<run App.SlaveAssignment.getMilked(_slave)>> <<include "SA rules">> <<include "SA diet">> diff --git a/src/uncategorized/fsDevelopments.tw b/src/uncategorized/fsDevelopments.tw index 515cb05861115a09b5e5b7543d5f35c1f8f4d461..b677953eac82ff06f5f919aac5236da06d0e0509 100644 --- a/src/uncategorized/fsDevelopments.tw +++ b/src/uncategorized/fsDevelopments.tw @@ -77,7 +77,7 @@ <<if $SecExp.buildings.propHub.active > 0 && $SecExp.buildings.propHub.campaign >= 1 && $SecExp.buildings.propHub.focus == "social engineering">> Your propaganda campaign helps further your societal engineering efforts. <<if $SecExp.buildings.propHub.recruiterOffice == 0 || $RecruiterID == 0>> - <<if $propCampaignBoost == 1>> + <<if $SecExp.edicts.propCampaignBoost == 1>> <<set _broadProgress += 2>> <<else>> <<set _broadProgress += 1>> @@ -85,7 +85,7 @@ <<elseif $SecExp.buildings.propHub.recruiterOffice && $RecruiterID > 0>> <<setLocalPronouns _S.Recruiter>> <span class='slave-name'><<= SlaveFullName(_S.Recruiter)>></span> is able to further boost your societal engineering campaign from $his PR hub office. - <<if $propCampaignBoost == 1>> + <<if $SecExp.edicts.propCampaignBoost == 1>> <<set _broadProgress += $SecExp.buildings.propHub.campaign + Math.floor((_S.Recruiter.intelligence+_S.Recruiter.intelligenceImplant)/32)>> <<else>> <<set _broadProgress += 1 + Math.floor((_S.Recruiter.intelligence+_S.Recruiter.intelligenceImplant)/32)>> @@ -170,27 +170,27 @@ <</if>> <<if $secExpEnabled == 1>> - <<if $slaveWatch == 1>> + <<if $SecExp.edicts.slaveWatch == 1>> The Slave Mistreatment Watch helps many slaves, easing your citizens into the paternalist ideals it represents. <<= FutureSocieties.Change("Paternalist", 2)>> <</if>> - <<if $noSubhumansInArmy == 1>> + <<if $SecExp.edicts.defense.noSubhumansInArmy == 1>> Your army is free of subhumans, further cementing their lower status in the eyes of your citizens. <<= FutureSocieties.Change("Subjugationist", 2)>> <</if>> - <<if $pregExemption == 1>> + <<if $SecExp.edicts.defense.pregExemption == 1>> Pregnant citizens are allowed and encouraged to avoid military service, making their value evident to all citizens. <<= FutureSocieties.Change("RepopulationFocus", 2)>> <</if>> - <<if $eliteOfficers == 1>> + <<if $SecExp.edicts.defense.eliteOfficers == 1>> Purity in leadership is fundamental in your army, helping eugenics ideals spread in the populace. <<= FutureSocieties.Change("Eugenics", 2)>> <</if>> - <<if $liveTargets == 1>> + <<if $SecExp.edicts.defense.liveTargets == 1>> Disobedient slaves are used in shooting ranges and military drills as live targets, furthering degradationist ideals. <<= FutureSocieties.Change("Degradationist", 2)>> <</if>> diff --git a/src/uncategorized/masterSuiteReport.tw b/src/uncategorized/masterSuiteReport.tw index f12436ead030151aad747a046ef20a3a5c542e36..5e6c7a6038b2b647ae6d38b4ac06044d2bc835bd 100644 --- a/src/uncategorized/masterSuiteReport.tw +++ b/src/uncategorized/masterSuiteReport.tw @@ -169,7 +169,7 @@ <<else>> /* not Concubine */ <span class='slave-name'><<= SlaveFullName(_slave)>></span> <<if _slave.choosesOwnAssignment == 2>> - <<include "SA chooses own job">> + <<= App.SlaveAssignment.choosesOwnJob(_slave)>> <<else>> sees to your pleasure in $masterSuiteName. <</if>> @@ -378,7 +378,7 @@ <br><<include "SA devotion">> <<else>> <<silently>> - <<include "SA chooses own job">> + <<run App.SlaveAssignment.choosesOwnJob(_slave)>> <<run App.SlaveAssignment.pleaseYou(_slave)>> <<if $servantMilkers == 1 && _slave.lactation > 0 && _slave.fuckdoll == 0 && _slave.fetish != "mindbroken" && canMove(_slave) && _slave.intelligence+_slave.intelligenceImplant >= -90>> <<set $servantMilkersMultiplier = 0.25>> diff --git a/src/uncategorized/nonRandomEvent.tw b/src/uncategorized/nonRandomEvent.tw index 65e8e6899b2def5d9c7d5fb7eaa42410d0c6a74b..573fa262fc2a85d246ed8c94b5b329bfb6864258 100644 --- a/src/uncategorized/nonRandomEvent.tw +++ b/src/uncategorized/nonRandomEvent.tw @@ -181,6 +181,14 @@ <<goto "secExpSmilingMan">> <<elseif ($rivalOwner == 0) && ($seeFCNN == 1) && ($FCNNstation == 0) && ($week > 95) && ($cash > 200000) && ($rep > 7500)>> <<goto "SE FCNN Station">> +<<elseif _effectiveWeek >= $murderAttemptWeek && $tempEventToggle>> + <<goto "Murder Attempt">> +<<elseif $illegalDeals.slave !== 0>> + <<goto "MA Slave Trade">> +<<elseif $illegalDeals.trade !== 0 && _effectiveWeek >= $illegalDeals.trade.week>> + <<goto "MA Trade Deal">> +<<elseif $illegalDeals.military !== 0 && _effectiveWeek >= $illegalDeals.military.week>> + <<goto "MA Military Deal">> <<else>> <<if random(1,100) > _effectiveWeek+25>> <<goto "RIE Eligibility Check">> diff --git a/src/uncategorized/pHostageAcquisition.tw b/src/uncategorized/pHostageAcquisition.tw index ba3e187be64f981e85b12438cbab74c2a9b2695b..fd794612e3ed58381634c2683ccf46948b4ce80b 100644 --- a/src/uncategorized/pHostageAcquisition.tw +++ b/src/uncategorized/pHostageAcquisition.tw @@ -8,6 +8,12 @@ <<set $activeSlave.weekAcquired = $week>> <<run Enunciate($activeSlave)>> <<setLocalPronouns $activeSlave>> +<<setNonlocalPronouns $seeDicks>> + +<<if $hostageWife != 0>> + <<setLocalPronouns $hostageWife 2>> + <<setSpokenLocalPronouns getSlave($AS) $hostageWife>> +<</if>> <span id="artFrame"> /* 000-250-006 */ @@ -297,7 +303,7 @@ Your hired mercenaries are en route now with your precious cargo. <<case "Youth Preferentialism">> <<run setHealth($activeSlave, 60, $activeSlave.health.shortDamage, $activeSlave.health.longDamage)>> <<if $rivalryDuration <= 5>> - Upon seeing you, $activeSlave.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "Thi<<s>> old woman tried to make me her pet!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember. + Upon seeing you, $activeSlave.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "Thi<<s>> old _woman2 tried to make me <<his 2>> pet!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember. <<elseif $rivalryDuration <= 10>> Upon seeing you, $activeSlave.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "They made me make out with an old lady!" $He's exactly as you remember. <<elseif $rivalryDuration <= 15>> @@ -308,24 +314,24 @@ Your hired mercenaries are en route now with your precious cargo. <<else>> <<run setHealth($activeSlave, 80, $activeSlave.health.shortDamage, $activeSlave.health.longDamage)>> Your mercenaries radio you upon arrival. "This one's got quite some spunk in $him, you better ready yourself. We're coming in now." - Upon seeing you, $activeSlave.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "How fucking DARE you <<s>>plit me up from my MILFy wife! I <<s>>aw your arcology on the way in, and it'<<s>> <<S>>ICK. <<S>>o many young girl<<s>>, you're <<s>>ick, you hear me!? <<S>>I-" + Upon seeing you, $activeSlave.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "How fucking DARE you <<s>>plit me up from my MILFy <<wife 2>>! I <<s>>aw your arcology on the way in, and it'<<s>> <<S>>ICK. <<S>>o many young _girlU<<s>>, you're <<s>>ick, you hear me!? <<S>>I-" The mercenary captain quickly gags $him, "My apologies, I did warn you $he was a handful. Please be careful when you unbind $him, $he may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged $activeSlave.slaveName. $He looks the same as you remember, but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future, given $his hatred for young people. <</if>> <<case "Maturity Preferentialism">> <<run setHealth($activeSlave, 60, $activeSlave.health.shortDamage, $activeSlave.health.longDamage)>> <<if $rivalryDuration <= 5>> - Upon seeing you, $activeSlave.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "Thi<<s>> young girl kept mole<<s>>ting me!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember. + Upon seeing you, $activeSlave.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "Thi<<s>> young _girl2 kept mole<<s>>ting me!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember. <<elseif $rivalryDuration <= 10>> Upon seeing you, $activeSlave.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "They made me make out with <<s>>ome young harlot!" $He's exactly as you remember. <<elseif $rivalryDuration <= 15>> Upon seeing you, $activeSlave.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough $he asks "<<if $PC.visualAge < 35>>Were you alway<<s>> that attractive?<<else>>Can I hang out with the re<<s>>t of the young ladie<<s>>?<</if>>" While $he looks the same as you remember, $he certainly doesn't think the same anymore. <<elseif $rivalryDuration <= 20>> <<set $activeSlave.trust = 40>> - Upon seeing you, $activeSlave.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he quickly steps back. After several steps, $he says "<<if $PC.visualAge < 35>>You know, you're <<s>>oo young... I like that," with a wink.<<elseif $PC.visualAge >= 50>>Ew, you're <<s>>oo old. Keep your hand<<s>> off me!<<else>>Can you hook me up with a ni<<c>>e young girl?<</if>>". While $he looks the same as you remember, $he definitely doesn't think the same anymore. + Upon seeing you, $activeSlave.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he quickly steps back. After several steps, $he says "<<if $PC.visualAge < 35>>You know, you're <<s>>oo young... I like that," with a wink.<<elseif $PC.visualAge >= 50>>Ew, you're <<s>>oo old. Keep your hand<<s>> off me!<<else>>Can you hook me up with a ni<<c>>e young _girl2?<</if>>". While $he looks the same as you remember, $he definitely doesn't think the same anymore. <<else>> <<set $activeSlave.trust = 80>> Your mercenaries radio you upon arrival. "This one's got quite some spunk in $him, you better ready yourself. We're coming in now." - Upon seeing you, $activeSlave.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "How fucking DARE you <<s>>plit me up from my youthful wife! I <<s>>aw your arcology on the way in, and it'<<s>> <<S>>ICK. <<S>>o many old ladie<<s>>, you're <<s>>ick, you hear me!? <<S>>I-" + Upon seeing you, $activeSlave.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "How fucking DARE you <<s>>plit me up from my youthful <<wife 2>>! I <<s>>aw your arcology on the way in, and it'<<s>> <<S>>ICK. <<S>>o many old ladie<<s>>, you're <<s>>ick, you hear me!? <<S>>I-" The mercenary captain quickly gags $him, "My apologies, I did warn you $he was a handful. Please be careful when you unbind $him, $he may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged $activeSlave.slaveName. $He looks the same as you remember, but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future, given $his hatred for older people. <</if>> <<case "Slimness Enthusiasm">> @@ -499,7 +505,7 @@ Your hired mercenaries are en route now with your precious cargo. <<case "Petite Admiration">> <<run setHealth($activeSlave, 60, $activeSlave.health.shortDamage, $activeSlave.health.longDamage)>> <<if $rivalryDuration <= 5>> - Upon seeing you, $activeSlave.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "Thi<<s>> giant woman tried to make me her pet!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember. + Upon seeing you, $activeSlave.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "Thi<<s>> giant _woman2 tried to make me <<his 2>> pet!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember. <<elseif $rivalryDuration <= 10>> Upon seeing you, $activeSlave.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "They made me make out with a giant!" $He's exactly as you remember. <<elseif $rivalryDuration <= 15>> @@ -539,7 +545,7 @@ Your hired mercenaries are en route now with your precious cargo. <<else>> <<set $activeSlave.trust = 80>> Your mercenaries radio you upon arrival. "This one's got quite some spunk in $him, you better ready yourself. We're coming in now." - Upon seeing you, $activeSlave.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "How fucking DARE you <<s>>plit me up from my tiny wife! There wa<<s>> more love in her tiny body than in your entire arcology! To think that you fuck<<s>> pla<<c>>e everything on hei-" + Upon seeing you, $activeSlave.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "How fucking DARE you <<s>>plit me up from my tiny <<wife 2>>! There wa<<s>> more love in <<his 2>> tiny body than in your entire arcology! To think that you fuck<<s>> pla<<c>>e everything on hei-" The mercenary captain quickly gags $him, "My apologies, I did warn you $he was a handful. Please be careful when you unbind $him, $he may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged $activeSlave.slaveName. $He looks the same as you remember, but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future, given $his hatred for tall people. <</if>> <<default>> diff --git a/src/uncategorized/pRivalryActions.tw b/src/uncategorized/pRivalryActions.tw index d23f4cedb13381dee7af7152fd834ebe05d9d8dd..c3fe0b013050588288e0f5eca678bccbdca452ce 100644 --- a/src/uncategorized/pRivalryActions.tw +++ b/src/uncategorized/pRivalryActions.tw @@ -20,6 +20,10 @@ <<setAssistantPronouns>> <<setNonlocalPronouns $seeDicks>> +<<if $hostageWife != 0>> + <<setLocalPronouns $hostageWife 2>> +<</if>> + Your inter-arcology war with the arcology owner behind the Daughters of Liberty has dragged on for $rivalryDuration week<<if $rivalryDuration > 1>>s<</if>>. The tone of your arcology is a bit more somber than usual. You have enhanced security in place, and the populace has caught the mood. <<if $hostageAnnounced == 1>> @@ -72,7 +76,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.mammary += 50>> <<set $hostage.behavioralFlaw = "odd">> <<set $hostage.sexualFlaw = "hates penetration">> - undergoing a fertility screening, the video ends with the positive results. + undergoing a fertility screening; the video ends with the positive results. <<else>> <<set $hostage.trust -= 5>> <<set $hostage.devotion -= 5>> @@ -89,7 +93,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.mammary += 50>> <<set $hostage.behavioralFlaw = "odd">> <<set $hostage.sexualFlaw = "hates penetration">> - undergoing a fertility screening, the video ends with the positive results. + undergoing a fertility screening; the video ends with the positive results. <</if>> <<case "Gender Radicalism">> <<set $hostage.trust -= 5>> @@ -166,7 +170,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.anal += 1>> <<set $hostage.behavioralFlaw = "bitchy">> <<set $hostage.sexualFlaw = "idealistic">> - bound and offered to an older woman. + bound and offered to an older _woman2. <<case "Maturity Preferentialism">> <<set $hostage.trust -= 5>> <<set $hostage.devotion -= 5>> @@ -175,7 +179,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.anal += 1>> <<set $hostage.behavioralFlaw = "bitchy">> <<set $hostage.sexualFlaw = "idealistic">> - bound and offered to a young woman. + bound and offered to a young _woman2. <<case "Slimness Enthusiasm">> <<set $hostage.trust -= 5>> <<set $hostage.devotion -= 5>> @@ -266,7 +270,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.anal += 1>> <<set $hostage.behavioralFlaw = "liberated">> <<set $hostage.sexualFlaw = "idealistic">> - bound and offered to a towering woman. + bound and offered to a towering _woman2. <<case "Statuesque Glorification">> <<set $hostage.trust -= 5>> <<set $hostage.devotion -= 5>> @@ -275,7 +279,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.anal += 1>> <<set $hostage.behavioralFlaw = "liberated">> <<set $hostage.sexualFlaw = "judgemental">> - tied down and offered to a tiny woman. + tied down and offered to a tiny _woman2. <<default>> <<set $hostage.trust -= 5>> <<set $hostage.devotion -= 5>> @@ -842,7 +846,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.behavioralQuirk = "adores women">> <<set $hostage.sexualQuirk = "romantic">> <<set $hostage.fetishStrength = 65>> - beginning to fall in love with $his loving mother figure. + beginning to fall in love with $his loving _mother2 figure. <<case "Maturity Preferentialism">> <<set $hostage.trust -= 5>> <<set $hostage.devotion -= 5>> @@ -1518,7 +1522,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.boobs = 50000>> <<set $hostage.boobsImplant = 45000>> <<set $hostage.boobsImplantType = "hyper fillable">> - giving an interview. $He gushes over how great it feels being more silicone than $girl and how terrible it is that some people want to deny girls this pleasure. + giving an interview. $He gushes over how great it feels being more silicone than $girl and how terrible it is that some people want to deny <<= $girl>>s this pleasure. <<case "Transformation Fetishism">> <<set $hostage.counter.vaginal += 1>> giving an interview. $He gushes over how great it feels being implant free and how terrible some people are to force inhumane implants into their slaves. @@ -1526,24 +1530,24 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.oral += 20>> <<set $hostage.counter.vaginal += 20>> <<set $hostage.counter.anal += 20>> - giving an interview alongside $his older wife. $He gushes over how great it feels being in love and how, if some people had their way, $he'd have never gotten to experience this bliss. + giving an interview alongside $his older _wife2. $He gushes over how great it feels being in love and how, if some people had their way, $he'd have never gotten to experience this bliss. <<case "Maturity Preferentialism">> <<set $hostage.counter.oral += 20>> <<set $hostage.counter.vaginal += 20>> <<set $hostage.counter.anal += 20>> - giving an interview alongside $his young wife. $He gushes over how great it feels being in love and how, if some people had their way, $he'd have never gotten to experience this bliss. + giving an interview alongside $his young _wife2. $He gushes over how great it feels being in love and how, if some people had their way, $he'd have never gotten to experience this bliss. <<case "Slimness Enthusiasm">> <<set $hostage.boobs = 50000>> <<set $hostage.weight = 100>> <<set $hostage.butt = 9>> - giving an interview. $He gushes over how great it feels being more breast than $girl and how terrible it is that some people want to keep girls anorexic toothpicks. + giving an interview. $He gushes over how great it feels being more breast than $girl and how terrible it is that some people want to keep <<= $girl>>s anorexic toothpicks. <<case "Asset Expansionism">> <<set $hostage.counter.vaginal += 1>> - giving an interview. $He gushes over how great it feels being more thin and fit and how terrible it is that some people want to keep girls nothing more than bloated cows. + giving an interview. $He gushes over how great it feels being more thin and fit and how terrible it is that some people want to keep <<= $girl>>s nothing more than bloated cows. <<case "Pastoralism">> <<set $hostage.muscles = 100>> <<set $hostage.counter.vaginal += 1>> - giving an interview. $He gushes over how great it feels being a chiseled goddess and how terrible it is that some people want to keep girls as obese<<if $seePreg != 0>>, pregnant,<</if>> milky cows. + giving an interview. $He gushes over how great it feels being a chiseled goddess and how terrible it is that some people want to keep <<= $girl>>s as obese<<if $seePreg != 0>>, pregnant,<</if>> milky cows. <<case "Cummunism">> <<set $hostage.boobs = 24300>> <<set $hostage.weight = 100>> @@ -1600,7 +1604,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<case "Hedonistic Decadence">> <<set $hostage.muscles = 100>> <<set $hostage.counter.vaginal += 1>> - giving an interview. $He gushes over how great it feels being a chiseled goddess and how terrible it is that some people want to keep girls obese, slovenly wastes of flesh. + giving an interview. $He gushes over how great it feels being a chiseled goddess and how terrible it is that some people want to keep <<= $girl>>s obese, slovenly wastes of flesh. <<case "Chattel Religionism">> <<set $hostage.counter.vaginal += 1>> giving an interview. $He gushes over how great it is to experience all manners of class and culture, both physically and spiritually. @@ -1620,7 +1624,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.skill.anal = 100>> <<set $hostage.skill.vaginal = 100>> <<set $hostage.skill.whoring = 100>> - sealing a business deal for $his owner. Buy the end of the meeting, the client is thoroughly exhausted from $his skill 'negotiations' and eager to listen to the terms entrusted to $him. + sealing a business deal for $his owner. Buy the end of the meeting, the client is thoroughly exhausted from $his skilled 'negotiations' and eager to listen to the terms entrusted to $him. <<case "Slave Professionalism">> <<set $hostage.intelligenceImplant = 0>> <<set $hostage.intelligence = -100>> @@ -1642,12 +1646,12 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.oral += 40>> <<set $hostage.counter.vaginal += 20>> <<set $hostage.counter.anal += 20>> - giving an interview alongside $his twice $his size wife. $He gushes over how great it feels being in love and how, if some people had their way, $he'd have never gotten to experience this bliss. + giving an interview alongside $his twice $his size _wife2. $He gushes over how great it feels being in love and how, if some people had their way, $he'd have never gotten to experience this bliss. <<case "Statuesque Glorification">> <<set $hostage.counter.oral += 10>> <<set $hostage.counter.vaginal += 30>> <<set $hostage.counter.anal += 30>> - giving an interview alongside $his half $his size wife. $He gushes over how great it feels being in love and how, if some people had their way, $he'd have never gotten to experience this bliss. + giving an interview alongside $his half $his size _wife2. $He gushes over how great it feels being in love and how, if some people had their way, $he'd have never gotten to experience this bliss. <<default>> <<set $hostage.counter.vaginal += 1>> giving an interview. $He gushes over how great it is to experience all manners of class and culture, both physically and spiritually. @@ -1714,9 +1718,9 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.oral += 10>> <<set $hostage.counter.vaginal += 10>> <<set $hostage.counter.anal += 10>> - <<set _hostageAction.push("struggling to escape the grasp of a pair of $arcologies[0].FSSubjugationistRace girls.")>> - <<set _hostageAction.push("struggling to avoid giving an $arcologies[0].FSSubjugationistRace girl oral.")>> - <<set _hostageAction.push("screaming as $he gets fucked by an $arcologies[0].FSSubjugationistRace girl.")>> + <<set _hostageAction.push("struggling to escape the grasp of a pair of $arcologies[0].FSSubjugationistRace <<= _girlU>>s.")>> + <<set _hostageAction.push("struggling to avoid giving an $arcologies[0].FSSubjugationistRace _girlU oral.")>> + <<set _hostageAction.push("screaming as $he gets fucked by an $arcologies[0].FSSubjugationistRace _girlU.")>> <<elseif $rivalryDuration <= 10>> <<set $hostage.trust -= 5>> <<set $hostage.devotion -= 5>> @@ -1724,9 +1728,9 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.oral += 10>> <<set $hostage.counter.vaginal += 10>> <<set $hostage.counter.anal += 10>> - <<set _hostageAction.push("crying gently while a pair of $arcologies[0].FSSubjugationistRace girls fondle $him.")>> - <<set _hostageAction.push("reluctantly giving an $arcologies[0].FSSubjugationistRace girl oral.")>> - <<set _hostageAction.push("crying as $he gets fucked by an $arcologies[0].FSSubjugationistRace girl.")>> + <<set _hostageAction.push("crying gently while a pair of $arcologies[0].FSSubjugationistRace <<= _girlU>>s fondle $him.")>> + <<set _hostageAction.push("reluctantly giving an $arcologies[0].FSSubjugationistRace _girlU oral.")>> + <<set _hostageAction.push("crying as $he gets fucked by an $arcologies[0].FSSubjugationistRace _girlU.")>> <<elseif $rivalryDuration <= 15>> <<set $hostage.trust -= 5>> <<set $hostage.devotion -= 5>> @@ -1734,25 +1738,25 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.oral += 20>> <<set $hostage.counter.vaginal += 20>> <<set $hostage.counter.anal += 20>> - <<set _hostageAction.push("fooling around with a pair of $arcologies[0].FSSubjugationistRace girls.")>> - <<set _hostageAction.push("giving an $arcologies[0].FSSubjugationistRace girl oral.")>> - <<set _hostageAction.push("panting as $he gets fucked by an $arcologies[0].FSSubjugationistRace girl.")>> + <<set _hostageAction.push("fooling around with a pair of $arcologies[0].FSSubjugationistRace <<= _girlU>>s.")>> + <<set _hostageAction.push("giving an $arcologies[0].FSSubjugationistRace _girlU oral.")>> + <<set _hostageAction.push("panting as $he gets fucked by an $arcologies[0].FSSubjugationistRace _girlU.")>> <<elseif $rivalryDuration <= 20>> <<set $hostage.trust -= 5>> <<set $hostage.devotion -= 5>> <<set $hostage.counter.oral += 40>> <<set $hostage.counter.vaginal += 40>> <<set $hostage.counter.anal += 20>> - <<set _hostageAction.push("having a threesome with a pair of $arcologies[0].FSSubjugationistRace girls.")>> - <<set _hostageAction.push("eagerly giving an $arcologies[0].FSSubjugationistRace girl oral.")>> - <<set _hostageAction.push("moaning as $he gets fucked by an $arcologies[0].FSSubjugationistRace girl.")>> + <<set _hostageAction.push("having a threesome with a pair of $arcologies[0].FSSubjugationistRace <<= _girlU>>s.")>> + <<set _hostageAction.push("eagerly giving an $arcologies[0].FSSubjugationistRace _girlU oral.")>> + <<set _hostageAction.push("moaning as $he gets fucked by an $arcologies[0].FSSubjugationistRace _girlU.")>> <<else>> <<set $hostage.counter.oral += 50>> <<set $hostage.counter.vaginal += 50>> <<set $hostage.counter.anal += 50>> - <<set _hostageAction.push("making love to $his favorite two $arcologies[0].FSSubjugationistRace girls.")>> - <<set _hostageAction.push("enthusiastically giving an $arcologies[0].FSSubjugationistRace girl oral.")>> - <<set _hostageAction.push("enthusiastically wiggling $his rear as $he gets fucked by an $arcologies[0].FSSubjugationistRace girl.")>> + <<set _hostageAction.push("making love to $his favorite two $arcologies[0].FSSubjugationistRace <<= _girlU>>s.")>> + <<set _hostageAction.push("enthusiastically giving an $arcologies[0].FSSubjugationistRace _girlU oral.")>> + <<set _hostageAction.push("enthusiastically wiggling $his rear as $he gets fucked by an $arcologies[0].FSSubjugationistRace _girlU.")>> <</if>> <<case "Racial Supremacism">> <<if $rivalryDuration <= 5>> @@ -2002,7 +2006,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<if $seePreg != 0>> <<set _hostageAction.push("happily accompanying $his owner on their rounds around their arcology, $his hand resting on $his gently rounded stomach.")>> <<set _hostageAction.push("carefully getting $himself dressed to present a good appearance alongside $his owner, paying special attention to $his swollen midriff.")>> - <<set _hostageAction.push("")>> + <<set _hostageAction.push("happy with $his owner's arm around $his waist.")>> <<else>> <<set _hostageAction.push("happily accompanying $his owner on their rounds around their arcology, his arm around $his waist.")>> <<set _hostageAction.push("carefully getting $himself dressed to present a good appearance alongside $his owner.")>> @@ -2272,7 +2276,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.oral += 1>> <<set $hostage.counter.vaginal += 1>> <<set $hostage.counter.anal += 1>> - <<set _hostageAction.push("struggling to escape the grasp of a motherly woman.")>> + <<set _hostageAction.push("struggling to escape the grasp of a motherly _woman2.")>> <<set _hostageAction.push("hiding from $his MILF partner, sobbing quietly.")>> <<set _hostageAction.push("struggling to escape being mothered by $his older partner.")>> <<elseif $rivalryDuration <= 10>> @@ -2282,7 +2286,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.oral += 5>> <<set $hostage.counter.vaginal += 5>> <<set $hostage.counter.anal += 5>> - <<set _hostageAction.push("crying gently while a motherly woman fondles $him.")>> + <<set _hostageAction.push("crying gently while a <<= _mother2>>ly _woman2 fondles $him.")>> <<set _hostageAction.push("cringing as $he massages $his MILF partner's back.")>> <<set _hostageAction.push("cautiously tasting $his MILF partner's milk.")>> <<elseif $rivalryDuration <= 15>> @@ -2319,7 +2323,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.oral += 1>> <<set $hostage.counter.vaginal += 1>> <<set $hostage.counter.anal += 1>> - <<set _hostageAction.push("struggling to escape the grasp of an energetic young _womanU.")>> + <<set _hostageAction.push("struggling to escape the grasp of an energetic young _woman2.")>> <<set _hostageAction.push("shouting profanity at $his young partner.")>> <<set _hostageAction.push("rebuking $his young partner's advances.")>> <<elseif $rivalryDuration <= 10>> @@ -2329,7 +2333,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.oral += 5>> <<set $hostage.counter.vaginal += 5>> <<set $hostage.counter.anal += 5>> - <<set _hostageAction.push("crying gently while a young woman eagerly fondles $him.")>> + <<set _hostageAction.push("crying gently while a young _woman2 eagerly fondles $him.")>> <<set _hostageAction.push("shying away from $his young partner.")>> <<set _hostageAction.push("curiously fondling $his young partner's dick.")>> <<elseif $rivalryDuration <= 15>> @@ -2357,7 +2361,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.anal += 20>> <<set _hostageAction.push("basking in the afterglow, intertwined with $his favorite youth.")>> <<set _hostageAction.push("whispering something sexy into $his young lover's ear.")>> - <<set _hostageAction.push("giving $his energetic young lover a handjob while deeply kissing _himU.")>> + <<set _hostageAction.push("giving $his energetic young lover a handjob while deeply kissing _him2.")>> <</if>> <<case "Slimness Enthusiasm">> <<if $rivalryDuration <= 5>> @@ -3010,7 +3014,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.anal += 1>> <<set _hostageAction.push("struggling in vain as $he is carried around by $his towering partner.")>> <<set _hostageAction.push("crammed under a bed to escape $his much larger partner.")>> - <<set _hostageAction.push("struggling to pull $his head away from $his much larger parnter's crotch.")>> + <<set _hostageAction.push("struggling to pull $his head away from $his much larger partner's crotch.")>> <<elseif $rivalryDuration <= 10>> <<set $hostage.trust -= 5>> <<set $hostage.devotion -= 5>> @@ -3019,8 +3023,8 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.vaginal += 3>> <<set $hostage.counter.anal += 3>> <<set _hostageAction.push("crying to $himself in the arms of $his towering partner as $he is carried around one of the arcology's public spaces.")>> - <<set _hostageAction.push("cringing as $his much larger partner sits $him in _hisU lap and paws at $him.")>> - <<set _hostageAction.push("crying gently as $his much larger partner forces $his face to _hisU crotch.")>> + <<set _hostageAction.push("cringing as $his much larger partner sits $him in _his2 lap and paws at $him.")>> + <<set _hostageAction.push("crying gently as $his much larger partner forces $his face to _his2 crotch.")>> <<elseif $rivalryDuration <= 15>> <<set $hostage.trust -= 5>> <<set $hostage.devotion -= 5>> @@ -3029,7 +3033,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.vaginal += 7>> <<set $hostage.counter.anal += 7>> <<set _hostageAction.push("calmly letting $his towering partner carry $him around one of the arcology's public spaces.")>> - <<set _hostageAction.push("carefully sitting in $his much larger partner's lap and letting _himU fondle $his body.")>> + <<set _hostageAction.push("carefully sitting in $his much larger partner's lap and letting _him2 fondle $his body.")>> <<set _hostageAction.push("carefully putting $his mouth to use on $his much larger partner's crotch.")>> <<elseif $rivalryDuration <= 20>> <<set $hostage.trust -= 5>> @@ -3037,16 +3041,16 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.oral += 15>> <<set $hostage.counter.vaginal += 7>> <<set $hostage.counter.anal += 7>> - <<set _hostageAction.push("happily letting $his towering partner carry $him around one of the arcology's public spaces as $he fondles _hisU genitals.")>> - <<set _hostageAction.push("happily resting in $his much larger partner's lap as _heU pets $his head.")>> + <<set _hostageAction.push("happily letting $his towering partner carry $him around one of the arcology's public spaces as $he fondles _his2 genitals.")>> + <<set _hostageAction.push("happily resting in $his much larger partner's lap as _he2 pets $his head.")>> <<set _hostageAction.push("happily putting $his mouth to work on $his much larger partner's genitals.")>> <<else>> <<set $hostage.counter.oral += 30>> <<set $hostage.counter.vaginal += 15>> <<set $hostage.counter.anal += 15>> <<set _hostageAction.push("begging for $his towering partner to pick $him up and take $him for a walk'n'fuck.")>> - <<set _hostageAction.push("enjoying the feeling of $his much larger partner inside of $him as $he rests on _hisU lap.")>> - <<set _hostageAction.push("happily putting $his mouth to work on $his much larger partner's genitals as _heU returns the favor.")>> + <<set _hostageAction.push("enjoying the feeling of $his much larger partner inside of $him as $he rests on _his2 lap.")>> + <<set _hostageAction.push("happily putting $his mouth to work on $his much larger partner's genitals as _he2 returns the favor.")>> <</if>> <<case "Statuesque Glorification">> <<if $rivalryDuration <= 5>> @@ -3055,7 +3059,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.oral += 1>> <<set $hostage.counter.vaginal += 1>> <<set $hostage.counter.anal += 1>> - <<set _hostageAction.push("sitting on a table, out of reach of a shorter _womanU and swearing at _himU.")>> + <<set _hostageAction.push("sitting on a table, out of reach of a shorter _woman2 and swearing at _him2.")>> <<set _hostageAction.push("keeping $his smaller partner from reaching $him.")>> <<set _hostageAction.push("rebuking $his smaller partner's advances.")>> <<elseif $rivalryDuration <= 10>> @@ -3065,7 +3069,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.oral += 3>> <<set $hostage.counter.vaginal += 7>> <<set $hostage.counter.anal += 7>> - <<set _hostageAction.push("crying gently as a shorter _womenU eagerly fondles $him.")>> + <<set _hostageAction.push("crying gently as a shorter _woman2 eagerly fondles $him.")>> <<set _hostageAction.push("shying away from $his shorter partner.")>> <<set _hostageAction.push("curiously exploring $his shorter partner's body.")>> <<elseif $rivalryDuration <= 15>> @@ -3086,14 +3090,14 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty <<set $hostage.counter.anal += 13>> <<set _hostageAction.push("patting $his tiny lover's head.")>> <<set _hostageAction.push("resting $his head on $his tiny love's lap.")>> - <<set _hostageAction.push("helping support $his tiny lover so _heU can fuck $him properly.")>> + <<set _hostageAction.push("helping support $his tiny lover so _he2 can fuck $him properly.")>> <<else>> <<set $hostage.counter.oral += 15>> <<set $hostage.counter.vaginal += 25>> <<set $hostage.counter.anal += 25>> <<set _hostageAction.push("basking in the afterglow with $his tiny love seated in $his lap.")>> <<set _hostageAction.push("whispering something sexy into $his tiny lover's ear.")>> - <<set _hostageAction.push("hugging $his tiny lover tight as _heU fucks $him as deep as _heU can.")>> + <<set _hostageAction.push("hugging $his tiny lover tight as _he2 fucks $him as deep as _he2 can.")>> <</if>> <<default>> <<if $rivalryDuration <= 5>> @@ -3162,13 +3166,13 @@ You remind yourself that success in this conflict will not be defined by the tra <<link "Apply <<print cashFormat(10000)>> in standard corporate warfare">> <<if random(1,100) > 50>> <<replace "#result">> - Money is your infantry, your weapon, your ammunition in one. Last century, your soldiers would have died taking the enemy's positions. Today, your ¤ die @@.green;taking@@ _hisU holdings. Once more unto the breach. + Money is your infantry, your weapon, your ammunition in one. Last century, your soldiers would have died taking the enemy's positions. Today, your ¤ die @@.green;taking@@ _hisR holdings. Once more unto the breach. <<run cashX(-10000, "war")>> <<set $rivalryPower += 2>> <</replace>> <<else>> <<replace "#result">> - Money is your infantry, your weapon, your ammunition in one. Last century, your soldiers would have died before the enemy's machine guns. Today, your ¤ die @@.red;failing to take@@ _hisU holdings. Once more unto the breach. + Money is your infantry, your weapon, your ammunition in one. Last century, your soldiers would have died before the enemy's machine guns. Today, your ¤ die @@.red;failing to take@@ _hisR holdings. Once more unto the breach. <<run cashX(-10000, "war")>> <<set $rivalryPower += 1>> <</replace>> diff --git a/src/uncategorized/pRivalryHostage.tw b/src/uncategorized/pRivalryHostage.tw index abe2baf784f04813e7f4071f4f9a68c92116925d..f02aee2379fdba2b360534a35323f64808c5b77c 100644 --- a/src/uncategorized/pRivalryHostage.tw +++ b/src/uncategorized/pRivalryHostage.tw @@ -226,6 +226,12 @@ <<set $activeSlave.boobs = 1200>> <</switch>> +<<switch $rivalryFS>> +<<case "Maturity Preferentialism" "Petite Admiration" "Statuesque Glorification" "Youth Preferentialism">> + <<set $hostageWife = GenerateNewSlave("XX")>> + <<setLocalPronouns $hostageWife 2>> +<</switch>> + <span id="artFrame"> /* 000-250-006 */ <<if $seeImages == 1>> @@ -243,6 +249,7 @@ <<else>> <<set _heR = "she">> <</if>> +<<setNonlocalPronouns $seeDicks>> <<setLocalPronouns $activeSlave>> <<setPlayerPronouns>> @@ -279,7 +286,7 @@ but you do remember $him, and your rival knows it. This is obviously the best _h "Hello, <<= PlayerName()>>," your rival sneers. "Sorry to pull you away from <<switch $rivalryFS>> <<case "Racial Subjugationism">> - whipping some poor $arcologies[0].FSSubjugationistRace girl's back bloody, + whipping some poor $arcologies[0].FSSubjugationistRace _girlU's back bloody, <<case "Racial Supremacism">> blowing your $arcologies[0].FSSubjugationistRace girls, or whatever it is you do with your spare time, <<case "Gender Radicalism">> @@ -293,11 +300,11 @@ but you do remember $him, and your rival knows it. This is obviously the best _h <<case "Paternalism">> handholding time with your slaves, <<case "Degradationism">> - stitching your name into some poor girl's taint, or whatever it is you do with your spare time, + stitching your name into some poor _girlU's taint, or whatever it is you do with your spare time, <<case "Body Purism">> playing house with your perfect pure little angels, or whatever it is you do with your spare time, <<case "Transformation Fetishism">> - stuffing silicone up some poor girl's nostrils, + stuffing silicone up some poor _girlU's nostrils, <<case "Youth Preferentialism">> your horrible schoolgirl fantasy playtime, <<case "Maturity Preferentialism">> @@ -366,9 +373,9 @@ but look what I have here! I just acquired $him recently. Lovely, isn't $he? I k <<case "Transformation Fetishism">> $He's going to be my lover. I'll be sure to let $him know all about what you do to your slaves, and rest assured, I'll never treat $him that way. Isn't that right, <<= SlaveFullName($activeSlave)>>?" The slave nods uncertainly. <<case "Youth Preferentialism">> - I've set $him up with a nice motherly woman already. I believe they'll be a perfect match. Isn't that right, <<= SlaveFullName($activeSlave)>>?" The slave nods uncertainly. + I've set $him up with a nice motherly _woman2 already. I believe they'll be a perfect match. Isn't that right, <<= SlaveFullName($activeSlave)>>?" The slave nods uncertainly. <<case "Maturity Preferentialism">> - I've set $him up with a nice young girl already. I believe they'll be a perfect match. Isn't that right, <<= SlaveFullName($activeSlave)>>?" The slave nods uncertainly. + I've set $him up with a nice young _girl2 already. I believe they'll be a perfect match. Isn't that right, <<= SlaveFullName($activeSlave)>>?" The slave nods uncertainly. <<case "Slimness Enthusiasm">> I think I'll make $his IV line permanent. After all, $he's never going off breast growth hormones. I'd estimate $he shouldn't be able to walk within a month. Isn't that right, <<= SlaveFullName($activeSlave)>>?" The slave begins to sob. <<case "Asset Expansionism">> @@ -394,9 +401,9 @@ but look what I have here! I just acquired $him recently. Lovely, isn't $he? I k <<case "Slave Professionalism">> $He's going to become a moron<<if $activeSlave.intelligence < 0>>, though $he isn't exactly smart to begin with<</if>>. No time for higher thought when all $his brain power is caught up with how to satisfy $his raging libido. Isn't that right, <<= SlaveFullName($activeSlave)>>?" The slave begins to sob. <<case "Petite Admiration">> - I've set $him up with a particularly lovely giant. I believe they'll be a perfect match, even though $he's half her size. Isn't that right, <<= SlaveFullName($activeSlave)>>?" The slave nods uncertainly. + I've set $him up with a particularly lovely giant. I believe they'll be a perfect match, even though $he's half _his2 size. Isn't that right, <<= SlaveFullName($activeSlave)>>?" The slave nods uncertainly. <<case "Statuesque Glorification">> - I've set $him up with a lovely little dwarf already. I believe they'll be a perfect match, even though she's half $his size. Isn't that right, <<= SlaveFullName($activeSlave)>>?" The slave nods uncertainly. + I've set $him up with a lovely little dwarf already. I believe they'll be a perfect match, even though _he2's half $his size. Isn't that right, <<= SlaveFullName($activeSlave)>>?" The slave nods uncertainly. <<default>> $He's shaping up to be a good slave. I'm keeping $him informed of your <<if $rivalryFS != 0>>revisionist <</if>>nonsense, and what your slaves suffer because of it. Isn't that right, <<= SlaveFullName($activeSlave)>>?" The slave nods uncertainly. <</switch>> diff --git a/src/uncategorized/penthouseReport.tw b/src/uncategorized/penthouseReport.tw index ee0fb9e21b76ff76723f1a1122c2a87a3da79a94..f2817f9ac921d6d0fc0a45451ce244e737465e1c 100644 --- a/src/uncategorized/penthouseReport.tw +++ b/src/uncategorized/penthouseReport.tw @@ -8,7 +8,7 @@ <<if assignmentVisible($slaves[$i])>> <div><span class='slave-name'><<= SlaveFullName($slaves[$i])>></span> <<if $slaves[$i].choosesOwnAssignment == 2>> - <<include "SA chooses own job">> + <<= App.SlaveAssignment.choosesOwnJob($slaves[$i])>> $He <</if>> <<include "Full Report">> @@ -25,7 +25,7 @@ <<else>> <span class='slave-name'><<= SlaveFullName($slaves[$i])>></span> <<if $slaves[$i].choosesOwnAssignment == 2>> - <<include "SA chooses own job">> + <<= App.SlaveAssignment.choosesOwnJob($slaves[$i])>> $He <</if>> <<include "SA live with HG">> diff --git a/src/uncategorized/persBusiness.tw b/src/uncategorized/persBusiness.tw index 7bd43749694133292e3a651c4f35fe9421b7f3a6..2f2a0d510ae1e72ba7545b4d20b7858845442140 100644 --- a/src/uncategorized/persBusiness.tw +++ b/src/uncategorized/persBusiness.tw @@ -732,7 +732,7 @@ <<run cashX(random(10,20) * 1000, "personalBusiness")>> <</if>> - <<if $sellData == 1>> + <<if $SecExp.edicts.sellData == 1>> <<set _upgradeCount = 0>> <<if $secUpgrades.nanoCams == 1>> <<set _upgradeCount += 1>> @@ -803,12 +803,12 @@ <<set _price = Math.trunc(Math.clamp(random(1,2) + ($arcologies[0].prosperity / 15) - ($week / 30), 2, 8))>> <<set _factoryMod = Math.round(1 + ($weapProductivity + $weapLab) / 2 + ($weapMenials / 100))>> <<if $sellTo.citizen == 1>> - <<if $weaponsLaw == 3>> + <<if $SecExp.edicts.weaponsLaw == 3>> Your lax regulations regarding weapons allows your citizens to buy much of what you are capable of producing. <<set _income += Math.round(($ACitizens * 0.1) * _price * _factoryMod)>> - <<elseif $weaponsLaw >= 1>> + <<elseif $SecExp.edicts.weaponsLaw >= 1>> Your policies allow your citizen to buy your weaponry and they buy much of what you are capable of producing. - <<set _income += Math.round((($ACitizens * 0.1) * _price * _factoryMod) / (3 - $weaponsLaw))>> + <<set _income += Math.round((($ACitizens * 0.1) * _price * _factoryMod) / (3 - $SecExp.edicts.weaponsLaw))>> <<else>> Your policies do allow your citizen to buy weaponry, meaning all your income will come from exports. <</if>> @@ -838,7 +838,7 @@ <</if>> <</if>> - <<if $taxTrade == 1>> <<set _tradeTax = Math.ceil($SecExp.core.trade * random(80,120))>> + <<if $SecExp.edicts.taxTrade == 1>> <<set _tradeTax = Math.ceil($SecExp.core.trade * random(80,120))>> <br>Fees on transitioning goods this week made @@.yellowgreen;<<print cashFormat(_tradeTax)>>.@@ <<run cashX(Math.ceil(_tradeTax), "personalBusiness")>> <</if>> diff --git a/src/uncategorized/reFSAcquisition.tw b/src/uncategorized/reFSAcquisition.tw index 4dcdc870ac72fe72967da219dfa1bee958785fb3..c784a9478ab8e500832a80405132438e2c26fc7d 100644 --- a/src/uncategorized/reFSAcquisition.tw +++ b/src/uncategorized/reFSAcquisition.tw @@ -810,6 +810,7 @@ <<case "Asset Expansionist">> <<set _ContractCost = 1000>> +<<set $activeSlaveOneTimeMinAge = 16>> <<set $activeSlaveOneTimeMaxAge = 19>> <<set $oneTimeDisableDisability = 1>> <<set $activeSlave = GenerateNewSlave()>> @@ -1402,7 +1403,7 @@ This call is coming from a public kiosk, which is usually an indication that the You receive so many messages, as a noted titan of the new Free Cities world, that $assistant.name has to be quite draconian in culling them. _HeA lets only the most important through to you. One category of message that always gets through regardless of content, though, is requests for voluntary enslavement. As the new world takes shape, they've become less rare than they once were. <br><br> -The person placing the call is physically quite unusual, to the point of looking distinctly unnatural. $He has absolutely enormous tits, an ass to match, and is generally plush all over; yet despite being able to compete with the lushest mother in the curves department, $he appears to be very young. $He explains $himself quickly. "<<if $PC.title != 0>><<S>>ir<<else>>Ma'am<</if>>, I ju<<s>>t turned 19. Where I'm from, that mean<<s>> I'm very likely to be en<<s>>laved one way or another. <<S>>o, I've been taking off-market hormone<<s>> for a couple of year<<s>> to rai<<s>>e my<<s>>elf out of the gutter a<<s>> far a<<s>> who might take me. I hear life i<<s>> better if you're a valuable <<s>>lave." $He leans into the camera, displaying a solid acre of cleavage. "Can I be your valuable <<s>>lave?" +The person placing the call is physically quite unusual, to the point of looking distinctly unnatural. $He has absolutely enormous tits, an ass to match, and is generally plush all over; yet despite being able to compete with the lushest mother in the curves department, $he appears to be very young. $He explains $himself quickly. "<<if $PC.title != 0>><<S>>ir<<else>>Ma'am<</if>>, I ju<<s>>t turned <<= $activeSlave.actualAge>>. Where I'm from, that mean<<s>> I'm very likely to be en<<s>>laved one way or another. <<S>>o, I've been taking off-market hormone<<s>> for a couple of year<<s>> to rai<<s>>e my<<s>>elf out of the gutter a<<s>> far a<<s>> who might take me. I hear life i<<s>> better if you're a valuable <<s>>lave." $He leans into the camera, displaying a solid acre of cleavage. "Can I be your valuable <<s>>lave?" <<case "Asset Expansionist Two">> diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw index 66cece0c3f6c9af68874cd534ce07a8a6b3dcf2c..eb3fe0a164475faa05fc1e5a92034da34e1d33e9 100644 --- a/src/uncategorized/remoteSurgery.tw +++ b/src/uncategorized/remoteSurgery.tw @@ -2205,7 +2205,7 @@ [[Induced superfetation treatment|Surgery Degradation][getSlave($AS).geneticQuirks.superfetation = 2,cashX(forceNeg($surgeryCost*10), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),40), getSlave($AS).chem += 40,$surgeryType = "gene treatment"]] <span class="note">This will induce <span class="orange">superfetation</span> in $his genetic code</span> <</if>> </div> - + <div> <<if getSlave($AS).geneticQuirks.uterineHypersensitivity == 2>> [[Correct uterine hypersensitivity|Surgery Degradation][getSlave($AS).geneticQuirks.uterineHypersensitivity = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),40), getSlave($AS).chem += 100,$surgeryType = "gene treatment"]] diff --git a/src/uncategorized/reputation.tw b/src/uncategorized/reputation.tw index a3293606f3f0891bf54c09b4fbd85b67f7165d7f..bacbde3e9e5e88ce9c979edd26ac6c08ee7b9427 100644 --- a/src/uncategorized/reputation.tw +++ b/src/uncategorized/reputation.tw @@ -305,7 +305,7 @@ _enduringRep = $enduringRep>> <<run repX(100, "architecture")>> <</if>> - <<if $weaponsLaw == 3>> + <<if $SecExp.edicts.weaponsLaw == 3>> The absence of any kind of restriction on weaponry within your arcology is @@.green;welcomed by your citizens@@ as sign of your respect for the ideals the Free Cities stand for. <<run repX(20, "edicts")>> <</if>> diff --git a/src/uncategorized/saChoosesOwnJob.tw b/src/uncategorized/saChoosesOwnJob.tw deleted file mode 100644 index 1389233daddff5eb6ec8a2ae51bf2f4408cc2460..0000000000000000000000000000000000000000 --- a/src/uncategorized/saChoosesOwnJob.tw +++ /dev/null @@ -1,525 +0,0 @@ -:: SA chooses own job [nobr] - -<<set _clinicL = App.Entity.facilities.clinic.employeesIDs().size, _schoolL = App.Entity.facilities.schoolroom.employeesIDs().size, _servQL = App.Entity.facilities.servantsQuarters.employeesIDs().size, _nurseryL = App.Entity.facilities.nursery.employeesIDs().size, _brothelL = App.Entity.facilities.brothel.employeesIDs().size, _clubL = App.Entity.facilities.club.employeesIDs().size, _masterSL = App.Entity.facilities.masterSuite.employeesIDs().size, _spaL = App.Entity.facilities.spa.employeesIDs().size, _dairyL = App.Entity.facilities.dairy.employeesIDs().size>> - -<<setLocalPronouns $slaves[$i]>> - -<<if ($slaves[$i].choosesOwnAssignment == 0) || ($slaves[$i].fuckdoll > 0) || ($slaves[$i].fetish == "mindbroken")>> - /* nothing to do */ - -<<elseif ($slaves[$i].choosesOwnAssignment == 2)>> /* second pass happens visibly during weekly report for the location where this slave decided to go (or stay) */ - /* display text but don't change assignment (already done) */ - - <<set $desc = SlaveTitle($slaves[$i])>> - <<print $slaves[$i].choosesOwnAssignmentText>> - <<set $slaves[$i].choosesOwnAssignmentText = "", $slaves[$i].choosesOwnAssignment = 1>> /* continue cycle for next week */ - -<<else>> /* first pass happens silently before all reports: give stats bonus, construct decision string for display during second pass, actually change assignment */ - - <<set $slaves[$i].devotion++, $slaves[$i].trust++, $slaves[$i].choosesOwnAssignmentText = "was assigned to " + $slaves[$i].assignment + ". $He watches your other slaves to decide what to do, @@.hotpink;happy@@ to be permitted a choice and a little more @@.mediumaquamarine;confident@@ than if you had just given $him orders. The $desc">> - - <<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to rest, taking advantage of your permission to @@.mediumorchid;remain indolent@@.">> - <<= removeJob($slaves[$i], $slaves[$i].assignment)>> - <<set $slaves[$i].devotion -= 5>> - - <<elseif ($slaves[$i].health.illness > 1)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($clinic > _clinicL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " is ill, so $he decides to get treatment at $clinicName.">> - <<= assignJob($slaves[$i], "get treatment in the clinic")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " is ill, so $he decides to rest.">> - <<= removeJob($slaves[$i], $slaves[$i].assignment)>> - <</if>> - - <<elseif ($slaves[$i].health.condition < 20)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($spa > _spaL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " is unhealthy, so $he decides to get recover at $spaName.">> - <<= assignJob($slaves[$i], "rest in the spa")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " is unhealthy, so $he decides to rest.">> - <<= removeJob($slaves[$i], $slaves[$i].assignment)>> - <</if>> - - <<elseif ($slaves[$i].health.tired > 50)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($spa > _spaL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " is tired, so $he decides to get recover at $spaName.">> - <<= assignJob($slaves[$i], "rest in the spa")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " is tired, so $he decides to rest.">> - <<= removeJob($slaves[$i], $slaves[$i].assignment)>> - <</if>> - - <<elseif ($slaves[$i].boobsMilk > 0)>> - <<set $slaves[$i].choosesOwnAssignmentText += " rushes to get milked since $his breasts have become painfully engorged.">> - <<= assignJob($slaves[$i], "get milked")>> - - <<elseif ($slaves[$i].intelligenceImplant < 15)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($schoolroom > _schoolL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " is uneducated, so $he sits $himself down in $schoolroomName.">> - <<= assignJob($slaves[$i], "learn in the schoolroom")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " is uneducated, so $he sits $himself down to learn.">> - <<= assignJob($slaves[$i], "take classes")>> - <</if>> - - <<elseif (_S.Attendant) && ($universalRulesAssignsSelfFacility == 1) && (($slaves[$i].devotion < 45) || ($slaves[$i].trust < 45) || ($slaves[$i].sexualFlaw != "none") || ($slaves[$i].behavioralFlaw != "none"))>> - <<set $slaves[$i].choosesOwnAssignmentText += " could use some counseling, so $he decides to visit $spaName.">> - <<= assignJob($slaves[$i], "rest in the spa")>> - - <<elseif ($slaves[$i].devotion <= 50) && canWalk($slaves[$i]) && canSee($slaves[$i])>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($servantsQuarters > _servQL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " is obedient but not devoted, so $he decides to work from $servantsQuartersName since it's the least sexually demanding job available.">> - <<= assignJob($slaves[$i], "work as a servant")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " is obedient but not devoted, so $he decides to work as a servant since it's the least sexually demanding job available.">> - <<= assignJob($slaves[$i], "be a servant")>> - <</if>> - - <<elseif $universalRulesAssignsSelfFacility == 1 && $slaves[$i].devotion > 50 && canWalk($slaves[$i]) && canSee($slaves[$i]) && $nurseryNannies > _nurseryL>> - <<if $slaves[$i].daughters > 0 && $cribs.findIndex(function(c) { c.mother === $slaves[$i].ID})>> /* TODO: this may need another lookover */ - <<set $slaves[$i].choosesOwnAssignmentText += " wants to look after $his child, so $he decides to work in $nurseryName.">> - <<=assignJob($slaves[$i], "work as a nanny")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " enjoys taking care of children, so $he decides to work in $nurseryName.">> - <<= assignJob($slaves[$i], "work as a nanny")>> - <</if>> - - <<elseif ($slaves[$i].relationship == -1)>> - <<set $slaves[$i].choosesOwnAssignmentText += " relies on promiscuity to fulfill $his emotional needs,">> - <<if ($cash < 10000)>> - <<set $slaves[$i].choosesOwnAssignmentText += " and doesn't mind being a whore, so $he prostitutes $himself">> - <<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " in $brothelName.">> - <<= assignJob($slaves[$i], "work in the brothel")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " on the streets.">> - <<= assignJob($slaves[$i], "whore")>> - <</if>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " so $he eagerly decides to slut around">> - <<if ($universalRulesAssignsSelfFacility == 1) && ($club > _clubL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " in $clubName.">> - <<= assignJob($slaves[$i], "serve in the club")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " on the streets.">> - <<= assignJob($slaves[$i], "serve the public")>> - <</if>> - <<set $slaves[$i].sexAmount = 10>> - <</if>> - - <<elseif ($slaves[$i].relationship == -2)>> - <<set $slaves[$i].choosesOwnAssignmentText += " is emotionally bonded to you,">> - <<if ($slaves[$i].behavioralQuirk == "insecure")>> - <<set $slaves[$i].choosesOwnAssignmentText += " but insecure, so $he decides to make you money by prostituting $himself">> - <<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " in $brothelName.">> - <<= assignJob($slaves[$i], "work in the brothel")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " on the streets.">> - <<= assignJob($slaves[$i], "whore")>> - <</if>> - <<elseif ($slaves[$i].behavioralQuirk == "advocate")>> - <<set $slaves[$i].choosesOwnAssignmentText += " and an advocate for slavery, so $he decides to burnish your reputation by slutting it up">> - <<if ($universalRulesAssignsSelfFacility == 1) && ($club > _clubL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " in $clubName.">> - <<= assignJob($slaves[$i], "serve in the club")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " on the streets.">> - <<= assignJob($slaves[$i], "serve the public")>> - <</if>> - <<set $slaves[$i].sexAmount = 10>> - <<elseif ($slaves[$i].energy > 60)>> - <<set $slaves[$i].choosesOwnAssignmentText += " and $he thinks of little but sex with you,">> - <<if ($universalRulesAssignsSelfFacility == 1) && ($masterSuite > _masterSL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " so $he heads straight to $masterSuiteName.">> - <<= assignJob($slaves[$i], "serve in the master suite")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " so $he cheerfully designates $himself one of your fucktoys.">> - <<= assignJob($slaves[$i], "please you")>> - <</if>> - <<elseif canSee($slaves[$i]) && canWalk($slaves[$i])>> - <<set $slaves[$i].choosesOwnAssignmentText += " so $he decides to work">> - <<if ($universalRulesAssignsSelfFacility == 1) && ($servantsQuarters > _servQL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " from $servantsQuartersName">> - <<= assignJob($slaves[$i], "work as a servant")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " as a servant">> - <<= assignJob($slaves[$i], "be a servant")>> - <</if>> - <<set $slaves[$i].choosesOwnAssignmentText += " to make your penthouse as clean and homelike as possible.">> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " but unable to do much on $his own,">> - <<if ($universalRulesAssignsSelfFacility == 1) && ($masterSuite > _masterSL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " so $he heads straight to $masterSuiteName to await your caress.">> - <<= assignJob($slaves[$i], "serve in the master suite")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " so $he cheerfully designates $himself one of your fucktoys to be close to you.">> - <<= assignJob($slaves[$i], "please you")>> - <</if>> - <</if>> - - <<elseif ($slaves[$i].relationship == -3)>> - <<if $slaves[$i].devotion+$slaves[$i].trust >= 175>> - <<set $slaves[$i].choosesOwnAssignmentText += " is happily married to you,">> - <<elseif $slaves[$i].devotion < -20 && $slaves[$i].trust > 20>> - <<set $slaves[$i].choosesOwnAssignmentText += " is reluctantly married to you,">> - <<elseif $slaves[$i].devotion < -20>> - <<set $slaves[$i].choosesOwnAssignmentText += " is forcibly married to you,">> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " is married to you,">> - <</if>> - <<if $slaves[$i].devotion > 50>> - <<if ($slaves[$i].energy > 60)>> - <<set $slaves[$i].choosesOwnAssignmentText += " and $he thinks of little but sex with you,">> - <<if ($universalRulesAssignsSelfFacility == 1) && ($masterSuite > _masterSL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " so $he heads straight to $masterSuiteName.">> - <<= assignJob($slaves[$i], "serve in the master suite")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " so $he cheerfully designates $himself one of your fucktoys.">> - <<= assignJob($slaves[$i], "please you")>> - <</if>> - <<elseif canSee($slaves[$i]) && canWalk($slaves[$i])>> - <<set $slaves[$i].choosesOwnAssignmentText += " so $he decides to work">> - <<if ($universalRulesAssignsSelfFacility == 1) && ($servantsQuarters > _servQL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " from $servantsQuartersName">> - <<= assignJob($slaves[$i], "work as a servant")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " as a servant">> - <<= assignJob($slaves[$i], "be a servant")>> - <</if>> - <<set $slaves[$i].choosesOwnAssignmentText += " to make your penthouse as clean and homelike as possible.">> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " but unable to do much on $his own">> - <<if ($universalRulesAssignsSelfFacility == 1) && ($masterSuite > _masterSL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " so $he heads straight to $masterSuiteName to await your caress.">> - <<= assignJob($slaves[$i], "serve in the master suite")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " so $he cheerfully designates $himself one of your fucktoys to be close to you.">> - <<= assignJob($slaves[$i], "please you")>> - <</if>> - <</if>> - <<elseif $slaves[$i].devotion < -20 && $slaves[$i].trust > 20>> - <<set $slaves[$i].choosesOwnAssignmentText += " and $he thinks of all the ways $he can take advantage of this,">> - <<if ($universalRulesAssignsSelfFacility == 1) && ($spa > _spaL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " so $he heads straight to $spaName to relax.">> - <<= assignJob($slaves[$i], "rest in the spa")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " so $he cheerfully decides to lounge about the penthouse.">> - <<= assignJob($slaves[$i], "rest")>> - <</if>> - <<elseif $slaves[$i].devotion < -20>> - <<set $slaves[$i].choosesOwnAssignmentText += " and $he is scared of you, so $he chooses to work as a servant so that $he may serve you without "serving" you.">> - <<= assignJob($slaves[$i], "be a servant")>> - <<else>> - <<if ($slaves[$i].energy > 60)>> - <<set $slaves[$i].choosesOwnAssignmentText += " and $he thinks of little but sex,">> - <<if ($universalRulesAssignsSelfFacility == 1) && ($masterSuite > _masterSL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " so $he heads straight to $masterSuiteName.">> - <<= assignJob($slaves[$i], "serve in the master suite")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " so $he cheerfully designates $himself one of your fucktoys.">> - <<= assignJob($slaves[$i], "please you")>> - <</if>> - <<elseif canSee($slaves[$i]) && canWalk($slaves[$i])>> - <<set $slaves[$i].choosesOwnAssignmentText += " so $he decides to work">> - <<if ($universalRulesAssignsSelfFacility == 1) && ($servantsQuarters > _servQL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " from $servantsQuartersName">> - <<= assignJob($slaves[$i], "work as a servant")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " as a servant">> - <<= assignJob($slaves[$i], "be a servant")>> - <</if>> - <<set $slaves[$i].choosesOwnAssignmentText += " to make your penthouse as clean and homelike as possible.">> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " but unable to do much on $his own, so $he designates $himself one of your fucktoys to get more intimate with you.">> - <<= assignJob($slaves[$i], "please you")>> - <</if>> - <</if>> - - <<elseif ($slaves[$i].fetishKnown == 1)>> - <<if ($slaves[$i].fetish == "submissive") && canWalk($slaves[$i]) && canSee($slaves[$i])>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($servantsQuarters > _servQL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " thinks $he belongs at the bottom of the penthouse hierarchy, so $he goes to live in $servantsQuartersName.">> - <<= assignJob($slaves[$i], "work as a servant")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " thinks $he belongs at the bottom of the penthouse hierarchy, so $he decides $he should be a servant.">> - <<= assignJob($slaves[$i], "be a servant")>> - <</if>> - <<elseif ($slaves[$i].fetish == "dom") || ($slaves[$i].fetish == "sadist")>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($club > _clubL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " is self-confident, so $he decides to work in $clubName.">> - <<= assignJob($slaves[$i], "serve in the club")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " is self-confident, so $he decides to work as a public servant.">> - <<= assignJob($slaves[$i], "serve the public")>> - <</if>> - <<set $slaves[$i].sexAmount = 10>> - <<elseif ($slaves[$i].fetish == "masochist")>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " enjoys abuse, so $he hurries down to $brothelName.">> - <<= assignJob($slaves[$i], "work in the brothel")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " enjoys abuse, so $he decides to become a whore.">> - <<= assignJob($slaves[$i], "whore")>> - <</if>> - <<elseif ($slaves[$i].fetish == "cumslut")>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " hurries down to $brothelName to suck cocks.">> - <<= assignJob($slaves[$i], "work in the brothel")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to become a whore, mostly to suck cock.">> - <<= assignJob($slaves[$i], "whore")>> - <</if>> - <<elseif ($slaves[$i].fetish == "humiliation")>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to work in $brothelName, since it's even more embarrassing to be a whore than a club slut.">> - <<= assignJob($slaves[$i], "work in the brothel")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to whore, since it's even more embarrassing to be a whore than to be a public servant.">> - <<= assignJob($slaves[$i], "whore")>> - <</if>> - <<elseif ($slaves[$i].fetish == "buttslut")>> - <<if ($slaves[$i].balls > 0)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($dairyRestraintsSetting < 2) && ($dairy > _dairyL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " chooses confinement in $dairyName, since all $he will be expected to do is produce cum by orgasming to buttsex.">> - <<= assignJob($slaves[$i], "work in the dairy")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to get milked, since all $he will be expected to do is produce cum by orgasming to buttsex.">> - <<= assignJob($slaves[$i], "get milked")>> - <</if>> - <<else>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to work in $brothelName, since whores get buttfucked more than anyone else.">> - <<= assignJob($slaves[$i], "work in the brothel")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to whore, since whores get buttfucked more than anyone else.">> - <<= assignJob($slaves[$i], "whore")>> - <</if>> - <</if>> - <<elseif ($slaves[$i].fetish == "pregnancy")>> - <<if ($slaves[$i].lactation > 0)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($dairyRestraintsSetting < 2) && ($dairy > _dairyL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " heads down to $dairyName to be around other lactating girls.">> - <<= assignJob($slaves[$i], "work in the dairy")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to get milked, since $he is already lactating.">> - <<= assignJob($slaves[$i], "get milked")>> - <</if>> - <<elseif ($PC.dick != 0) && isFertile($slaves[$i])>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($masterSuite > _masterSL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to serve you in $masterSuiteName, hoping that you'll get $him pregnant.">> - <<= assignJob($slaves[$i], "serve in the master suite")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to be your fucktoy, hoping that you'll get $him pregnant.">> - <<= assignJob($slaves[$i], "please you")>> - <</if>> - <<elseif ($universalRulesAssignsSelfFacility == 1) && ($dairyPregSetting > 0) && ($dairy > _dairyL) && isFertile($slaves[$i])>> - <<if $dairyPregSetting > 1>> - <<set $slaves[$i].choosesOwnAssignmentText += " eagerly rushes to $dairyName in the hopes that $his fertile womb will be packed full of children.">> - <<= assignJob($slaves[$i], "work in the dairy")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " rushes to $dairyName in the hopes that $his fertile womb will be rented out.">> - <<= assignJob($slaves[$i], "work in the dairy")>> - <</if>> - <<elseif ($slaves[$i].bellyPreg >= 1500)>> - <<if $arcologies[0].FSRepopulationFocus > 20>> - <<if ($cash < 10000)>> - <<if $brothel > _brothelL && $universalRulesAssignsSelfFacility == 1>> - <<set $slaves[$i].choosesOwnAssignmentText += " heads to $brothelName since $he wants to set an example for any unimpregnated girls.">> - <<= assignJob($slaves[$i], "work in the brothel")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " heads to the streets to lavish in the attention given to pregnant prostitutes.">> - <<= assignJob($slaves[$i], "whore")>> - <</if>> - <<else>> - <<if $club > _clubL && $universalRulesAssignsSelfFacility == 1>> - <<set $slaves[$i].choosesOwnAssignmentText += " heads to $clubName to show off $his growing middle and lavish in the public's attention.">> - <<= assignJob($slaves[$i], "serve in the club")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " heads to the streets to contribute to the number of visibly pregnant women around.">> - <<= assignJob($slaves[$i], "serve the public")>> - <</if>> - <<set $slaves[$i].sexAmount = 10>> - <</if>> - <<elseif $masterSuite > _masterSL && $universalRulesAssignsSelfFacility == 1>> - <<set $slaves[$i].choosesOwnAssignmentText += " heads straight to $masterSuiteName to share the intimacy of $his pregnant body with you.">> - <<= assignJob($slaves[$i], "serve in the master suite")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to be your fucktoy to share the intimacy of $his pregnant body with you.">> - <<= assignJob($slaves[$i], "please you")>> - <</if>> - <<elseif ($slaves[$i].pregKnown == 1)>> - <<if $masterSuite > _masterSL && $universalRulesAssignsSelfFacility == 1>> - <<set $slaves[$i].choosesOwnAssignmentText += " heads straight to $masterSuiteName so you may watch for the day that $he finally starts to show.">> - <<= assignJob($slaves[$i], "serve in the master suite")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to be your fucktoy so you may enjoy watching $him begin showing.">> - <<= assignJob($slaves[$i], "please you")>> - <</if>> - <<else>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " can't indulge $his fetish by getting pregnant $himself, so $he just heads down to $brothelName.">> - <<= assignJob($slaves[$i], "work in the brothel")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " can't indulge $his fetish by getting pregnant $himself, so $he glumly decides to be a whore.">> - <<= assignJob($slaves[$i], "whore")>> - <</if>> - <</if>> - <<elseif ($slaves[$i].fetish == "boobs")>> - <<if ($slaves[$i].lactation > 0)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($dairyRestraintsSetting < 2) && ($dairy > _dairyL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " heads down to $dairyName for all the attention that'll be lavished on $his nipples.">> - <<= assignJob($slaves[$i], "work in the dairy")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to get milked, since $he loves getting off to it.">> - <<= assignJob($slaves[$i], "get milked")>> - <</if>> - <<else>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($club > _clubL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to work in $clubName so $he can show off $his bare breasts.">> - <<= assignJob($slaves[$i], "serve in the club")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to work as a public servant so $he can show off $his bare breasts.">> - <<= assignJob($slaves[$i], "serve the public")>> - <</if>> - <<set $slaves[$i].sexAmount = 10>> - <</if>> - <<elseif ($slaves[$i].attrXX > 85)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($club > _clubL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to work in $clubName so $he can hit on hot girls.">> - <<= assignJob($slaves[$i], "serve in the club")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to work as a public servant so $he can hit on hot girls.">> - <<= assignJob($slaves[$i], "serve the public")>> - <</if>> - <<set $slaves[$i].sexAmount = 10>> - <<elseif ($slaves[$i].attrXY > 85)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($club > _clubL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to work in $clubName so $he can hit on cute boys.">> - <<= assignJob($slaves[$i], "serve in the club")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to work as a public servant so $he can hit on cute boys.">> - <<= assignJob($slaves[$i], "serve the public")>> - <</if>> - <<set $slaves[$i].sexAmount = 10>> - <<elseif ($slaves[$i].energy > 95)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to help those of your slaves who mind taking dick all day by working in $brothelName.">> - <<= assignJob($slaves[$i], "work in the brothel")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to help those of your slaves who mind taking dick all day by working as a whore.">> - <<= assignJob($slaves[$i], "whore")>> - <</if>> - - <<elseif ($arcologies[0].FSChattelReligionist > 0)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " is a pure and faithful slave, so $he sells $his body in the holy brothel.">> - <<= assignJob($slaves[$i], "work in the brothel")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " is a pure and faithful slave, so $he sells $his body as a holy prostitute.">> - <<= assignJob($slaves[$i], "whore")>> - <</if>> - <<elseif ($arcologies[0].FSEgyptianRevivalist > 0)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($masterSuite > _masterSL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " is a devoted slave, so $he immediately joins your harem.">> - <<= assignJob($slaves[$i], "serve in the master suite")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " is a devoted slave, so $he immediately joins your harem.">> - <<= assignJob($slaves[$i], "please you")>> - <</if>> - <<elseif ($arcologies[0].FSRomanRevivalist > 0)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " is a devoted slave, so $he decides $he can best serve the state by raising money for the treasury, by selling $his body in $brothelName.">> - <<= assignJob($slaves[$i], "work in the brothel")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " is a devoted slave, so $he decides $he can best serve the state by raising money for the treasury, by selling $his body as a prostitute.">> - <<= assignJob($slaves[$i], "whore")>> - <</if>> - <<elseif ($arcologies[0].FSAztecRevivalist > 0)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " is a devoted slave, so $he decides $he can best serve the empire by serving at the fertility temple.">> - <<= assignJob($slaves[$i], "work in the brothel")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " is a devoted slave, so $he decides $he can best serve the empire by offering $himself to the public.">> - <<= assignJob($slaves[$i], "serve the public")>> - <<set $slaves[$i].sexAmount = 10>> - <</if>> - <<elseif ($arcologies[0].FSPaternalist > 0)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to work in $brothelName, a respectable position for a slave in this enlightened arcology.">> - <<= assignJob($slaves[$i], "work in the brothel")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to be a whore, a respectable position for a slave in this enlightened arcology.">> - <<= assignJob($slaves[$i], "whore")>> - <</if>> - <<elseif ($arcologies[0].FSPastoralist > 0)>> - <<if ($slaves[$i].lactation > 0)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($dairyRestraintsSetting < 2) && ($dairy > _dairyL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " hurries to join your herd of dairy cows.">> - <<= assignJob($slaves[$i], "work in the dairy")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " hurries to join your herd of cows.">> - <<= assignJob($slaves[$i], "get milked")>> - <</if>> - <<else>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to work in $brothelName to help raise money to get more girls lactating properly.">> - <<= assignJob($slaves[$i], "work in the brothel")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to prostitute $himself to help raise money to get more girls lactating properly.">> - <<= assignJob($slaves[$i], "whore")>> - <</if>> - <</if>> - <<elseif ($arcologies[0].FSHedonisticDecadence > 0)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($spa > _spaL) && (($slaves[$i].trust < 60) || ($slaves[$i].devotion <= 60))>> - <<set $slaves[$i].choosesOwnAssignmentText += " could use a break, so $he heads to take a dip in the spa.">> - <<= assignJob($slaves[$i], "rest in the spa")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " could use a meal and a nap, so $he grabs a cup of food and heads to bed.">> - <<= assignJob($slaves[$i], "rest")>> - <</if>> - <<else>> - <<if ($slaves[$i].skill.whoring > $slaves[$i].skill.entertainment)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to work in $brothelName, since $he thinks $himself a better whore than a public slut.">> - <<= assignJob($slaves[$i], "work in the brothel")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to whore, since $he thinks $himself a better whore than a public slut.">> - <<= assignJob($slaves[$i], "whore")>> - <</if>> - <<elseif ($slaves[$i].skill.entertainment > $slaves[$i].skill.whoring)>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($club > _clubL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to be a club $girl, since $he thinks $himself a better public slut than a whore.">> - <<= assignJob($slaves[$i], "serve in the club")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to serve the public, since $he thinks $himself a better public slut than a whore.">> - <<= assignJob($slaves[$i], "serve the public")>> - <</if>> - <<set $slaves[$i].sexAmount = 10>> - <<else>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to join $his sisters and work in $brothelName.">> - <<= assignJob($slaves[$i], "work in the brothel")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to prostitute $himself to help you upgrade $arcologies[0].name and improve everyone's life.">> - <<= assignJob($slaves[$i], "whore")>> - <</if>> - <</if>> - <</if>> - <<else>> - <<if ($universalRulesAssignsSelfFacility == 1) && ($club > _clubL)>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to be a club $girl, since partying is better than sitting around and failing to think of a job to do.">> - <<= assignJob($slaves[$i], "serve in the club")>> - <<elseif canWalk($slaves[$i]) && canSee($slaves[$i])>> - <<set $slaves[$i].choosesOwnAssignmentText += " decides to tidy up the penthouse a little while $he thinks.">> - <<= assignJob($slaves[$i], "be a servant")>> - <<else>> - <<set $slaves[$i].choosesOwnAssignmentText += " stays in bed, unable to come up with anything.">> - <<= removeJob($slaves[$i], $slaves[$i].assignment)>> - <</if>> - <</if>> - - <<set $slaves[$i].choosesOwnAssignment = 2>> /* ready for second pass */ - -<</if>> /* closes choosesOwnAssignment */ diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw index eaedcb3e88b91b2fa98f03f1b251e4c0835823a6..71b338fbc7fc210ec07f35483527b875583f2080 100644 --- a/src/uncategorized/saLongTermEffects.tw +++ b/src/uncategorized/saLongTermEffects.tw @@ -7668,7 +7668,7 @@ <<if $slaves[$i].geneticQuirks.uterineHypersensitivity == 2>> <<if $slaves[$i].vaginaLube < 2 && $slaves[$i].preg >= $slaves[$i].pregData.normalBirth * .75>> <<if $geneticMappingUpgrade >= 1>> - $His vagina begins to @@.lime;produce more sexual fluids@@ as the stimulation to $his hypersensetive uterus nears its climax. + $His vagina begins to @@.lime;produce more sexual fluids@@ as the stimulation to $his hypersensitive uterus nears its climax. <<else>> $His vagina oddly begins to @@.lime;produce more sexual fluids@@ in apparent preparation to $his upcoming birth. <</if>> diff --git a/src/uncategorized/saRules.tw b/src/uncategorized/saRules.tw index be87a0c0cecd73d8132238b7632c794a20dff4f5..f85ad7c653189e084325ce10f3d5a5b13d03f356 100644 --- a/src/uncategorized/saRules.tw +++ b/src/uncategorized/saRules.tw @@ -92,7 +92,7 @@ <<saRulesMasturbationDrugEffects>> <<else>> /* hasNonassignmentSex is true */ <<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>> - /* no family and no other slaves, so release must be coming from her partner */ + /* no family and no other slaves, so release comes from her partner */ finds frequent sexual release with $his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>,@@ which $he is @@.mediumaquamarine;thankful for.@@ <<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */ <<saRulesPartnerDrugEffects>> @@ -1738,7 +1738,7 @@ <</if>> <<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>> <<if ($slaves[$i].devotion < 80)>> - is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys, especially with her prisoners available to her, but @@.mediumaquamarine;trusts you know what's best for $him.@@ + is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys, especially with $his prisoners available to $him, but @@.mediumaquamarine;trusts you know what's best for $him.@@ <<set $slaves[$i].trust += 1, $slaves[$i].need = 0>> <<else>> @@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure diff --git a/src/uncategorized/scheduledEvent.tw b/src/uncategorized/scheduledEvent.tw index 651d0627a4d7899cdad441c3293699bf62f19d3d..700e70fe0edd976885be2437e66cba73a642c90b 100644 --- a/src/uncategorized/scheduledEvent.tw +++ b/src/uncategorized/scheduledEvent.tw @@ -48,6 +48,8 @@ <<set $fcnn.push("...claimed the sanctions constituted as an act of war...")>> <<set $fcnn.push("...nuclear weapons development program, drawing harsh criticism from international observers...")>> <<set $fcnn.push("...simply don't have the money to adequately respond to a natural disaster of this...")>> + <<set $fcnn.push("...representatives announced their withdrawal from the international organization...")>> + <<set $fcnn.push("...special report on the depopulation and abandonment of rural areas worldwide, as natural...")>> <<elseif $week == 50>> <<set $fcnn.push("...tested a thermonuclear device of some five megatons last night...")>> <<set $fcnn.push("...heavy fighting for the third week in the capital city of...")>> @@ -60,6 +62,7 @@ <<set $fcnn.push("...was assassinated in his home in the nation's capital, alongside his entire...")>> <<set $fcnn.push("...forces opened fire on crowds of protesters, killing and wounding...")>> <<set $fcnn.push("...declared the insurgency officially defeated, despite reports of widespread violence...")>> + <<set $fcnn.push("...suspended national elections until further notice, in a move that is seen as yet another authoritarian...")>> <<elseif $week == 70>> <<set $fcnn.push("...second low-order nuclear detonation in the city of...")>> <<set $fcnn.push("...total societal collapse induced by rising sea levels declared today in...")>> @@ -71,6 +74,7 @@ <<set $fcnn.push("...invasive plant growth epidemic contested by persistent droughts in eastern...")>> <<set $fcnn.push("...Daughters of Liberty claimed responsibility for the attack...")>> <<set $fcnn.push("...mass suicide of the cult members, who believed that current events were prophesied...")>> + <<set $fcnn.push("...genocide is a strong term, but there's simply no other way to describe...")>> <<elseif $week == 90>> <<set $fcnn.push("...have enslaved the entire legislature, their leader personally sexually assaulting...")>> <<set $fcnn.push("...confirmed that the arcologies were subject to a nuclear detonation, but...")>> @@ -79,6 +83,7 @@ <<set $fcnn.push("...deadliest in the nation's history, was allegedly committed by the Daughters of Liberty...")>> <<set $fcnn.push("...famine so devastating that confirmed reports of cannibalism are now...")>> <<set $fcnn.push("...dozens upon dozens of mass graves in what were once city parks...")>> + <<set $fcnn.push("...evidence of a planned slave uprising, executed all of their arcology's several thousand...")>> <</if>> <<if $secExpEnabled == 1>> diff --git a/src/uncategorized/sellSlave.tw b/src/uncategorized/sellSlave.tw index 0007e6b30a74a330ead71c95a2d5f4ee14e0c042..e2b4591cc95328920e58b5e12c95c073a220e694 100644 --- a/src/uncategorized/sellSlave.tw +++ b/src/uncategorized/sellSlave.tw @@ -754,7 +754,7 @@ __Bids Received__ <br>''<<print cashFormat(_Price)>>'' from a citizen who likes his slaves young and slender. <<set _NewOwner = 1>> <<elseif ($activeSlave.visualAge > 40) && ($activeSlave.weight > 10) && (random(1,100) > 80)>> - <br>''<<print cashFormat(_Price)>>'' from a citizen who likes her slaves mature and motherly. + <br>''<<print cashFormat(_Price)>>'' from a citizen who likes her slaves mature and <<= $mother>>ly. <<set _NewOwner = 1>> <<elseif ($activeSlave.dick > 3) && canAchieveErection($activeSlave) && (random(1,100) > 80)>> <br>''<<print cashFormat(_Price)>>'' from a citizen who likes fat cocks. diff --git a/src/uncategorized/spaReport.tw b/src/uncategorized/spaReport.tw index 146faf15411cb5ffc34f93957f60033962b5ce2f..9dba2e99fad0e656e978694ecb0d91afc9efa3ec 100644 --- a/src/uncategorized/spaReport.tw +++ b/src/uncategorized/spaReport.tw @@ -321,7 +321,7 @@ /* 000-250-006 */ <span class='slave-name'><<= SlaveFullName(_slave)>></span> <<if _slave.choosesOwnAssignment == 2>> - <<include "SA chooses own job">> + <<= App.SlaveAssignment.choosesOwnJob(_slave)>> <<else>> is resting in $spaName. <</if>> @@ -348,7 +348,7 @@ <br><<include "SA devotion">> <<else>> <<silently>> - <<include "SA chooses own job">> + <<run App.SlaveAssignment.choosesOwnJob(_slave)>> <<run App.SlaveAssignment.choosesOwnClothes(_slave)>> <<run App.SlaveAssignment.rest(_slave)>> <<include "SA rules">> diff --git a/src/uncategorized/subordinateTargeting.tw b/src/uncategorized/subordinateTargeting.tw index 7f9a8f115e9311fead3ccc60b7f63ff1158b773a..6ddfde0a20133d197a656b8601d3d8500153e1ce 100644 --- a/src/uncategorized/subordinateTargeting.tw +++ b/src/uncategorized/subordinateTargeting.tw @@ -37,5 +37,5 @@ (!isAmputee(State.variables.activeSlave) || !isAmputee(s)), (s) => App.UI.DOM.passageLink(SlaveFullName(s), 'Subordinate Targeting', () => { V.activeSlave.subTarget = s.ID; }), )>> - + <</if>> diff --git a/src/uncategorized/surgeryDegradation.tw b/src/uncategorized/surgeryDegradation.tw index 5d3d7c8ae1643e9348b168af56d57eae35995ad6..b8e424eed1696dcb6af98cb2448c6a75be6d5943 100644 --- a/src/uncategorized/surgeryDegradation.tw +++ b/src/uncategorized/surgeryDegradation.tw @@ -2654,7 +2654,7 @@ As the remote surgery's long recovery cycle completes, above $his crotch. <</if>> <<if hasAnyArms(getSlave($AS))>> - As $he reaches to scratch it, + As $he reaches to scratch it, <<elseif canSee(getSlave($AS))>> <<if $surgeryType != "restoreHairPubes">> When $he investigates, diff --git a/src/utility/birthWidgets.tw b/src/utility/birthWidgets.tw index 54aae58548f3b7c188bc2b51e3d979213511b64f..d28ab9b1a09aa9811404ba729cd81d66cbe72d04 100644 --- a/src/utility/birthWidgets.tw +++ b/src/utility/birthWidgets.tw @@ -25,7 +25,7 @@ <</if>> <<else>> <<if $clinic != 0>> - $He is lead to $clinicName since $he is likely to face complications with childbirth. $He is helped from $his clothes and into a comfortable hospital bed to relax until $he is ready. $He makes $himself comfortable and begins working on birthing $his bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, fully aware of $his watching helpers.<<if $slaves[$i].geneticQuirks.uterineHypersensitivity == 2>> $His body is so sensetive that even difficult birth is an intensly pleasurable experience for $him.<</if>> <<if $birthDamage > 10>><<set $csec = 1>><<run App.Medicine.Modification.addScar($slaves[$i], "belly", "c-section")>>After several hours of intense labor, $he is transferred to the surgery wing. Following an emergency c-section, $he is returned to the recovery wing to rest<<else>>After several hours,<<if $slaves[$i].geneticQuirks.uterineHypersensitivity != 1>> and a touch of morphine,<</if>> $he has successfully given birth<</if>>. $His child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and $he is left under observation to make sure $he recovers. + $He is lead to $clinicName since $he is likely to face complications with childbirth. $He is helped from $his clothes and into a comfortable hospital bed to relax until $he is ready. $He makes $himself comfortable and begins working on birthing $his bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, fully aware of $his watching helpers.<<if $slaves[$i].geneticQuirks.uterineHypersensitivity == 2>> $His body is so sensitive that even difficult birth is an intensly pleasurable experience for $him.<</if>> <<if $birthDamage > 10>><<set $csec = 1>><<run App.Medicine.Modification.addScar($slaves[$i], "belly", "c-section")>>After several hours of intense labor, $he is transferred to the surgery wing. Following an emergency c-section, $he is returned to the recovery wing to rest<<else>>After several hours,<<if $slaves[$i].geneticQuirks.uterineHypersensitivity != 1>> and a touch of morphine,<</if>> $he has successfully given birth<</if>>. $His child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and $he is left under observation to make sure $he recovers. <<else>> <<set $csec = 1>> <<run App.Medicine.Modification.addScar($slaves[$i], "belly", "c-section")>> @@ -406,7 +406,7 @@ <<if $birthDamage > 5>> <<set $csec = 1>> <<if $clinic != 0>> - $He is carried to $clinicName, since $he is likely to face complications with childbirth. $He is stripped from $his clothes and set up in a comfortable hospital bed to relax until $he is ready. $He wiggles $himself into a comfortable spot and begins working on birthing $his bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, fully aware of $his watching helpers.<<if $slaves[$i].geneticQuirks.uterineHypersensitivity == 2>> $His body is so sensetive that even difficult birth is an intensly pleasurable experience for $him.<</if>> <<if $birthDamage > 10>><<set $csec = 1>><<run App.Medicine.Modification.addScar($slaves[$i], "belly", "c-section")>>After several hours of intense labor, $he is transferred to the surgery wing. Following an emergency c-section, $he is returned to the recovery wing to rest<<else>>After several hours,<<if $slaves[$i].geneticQuirks.uterineHypersensitivity != 1>> and a touch of morphine,<</if>> $he has successfully given birth<</if>>. $His child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and $he is left under observation to make sure $he recovers. + $He is carried to $clinicName, since $he is likely to face complications with childbirth. $He is stripped from $his clothes and set up in a comfortable hospital bed to relax until $he is ready. $He wiggles $himself into a comfortable spot and begins working on birthing $his bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, fully aware of $his watching helpers.<<if $slaves[$i].geneticQuirks.uterineHypersensitivity == 2>> $His body is so sensitive that even difficult birth is an intensly pleasurable experience for $him.<</if>> <<if $birthDamage > 10>><<set $csec = 1>><<run App.Medicine.Modification.addScar($slaves[$i], "belly", "c-section")>>After several hours of intense labor, $he is transferred to the surgery wing. Following an emergency c-section, $he is returned to the recovery wing to rest<<else>>After several hours,<<if $slaves[$i].geneticQuirks.uterineHypersensitivity != 1>> and a touch of morphine,<</if>> $he has successfully given birth<</if>>. $His child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and $he is left under observation to make sure $he recovers. <<else>> <<set $csec = 1>> <<run App.Medicine.Modification.addScar($slaves[$i], "belly", "c-section")>>