diff --git a/devNotes/Useful JS Function Documentation.txt b/devNotes/Useful JS Function Documentation.txt index 06d325187a677293272555411e1658f36a0c7d9d..db3ada5e282b592249d9a2b0d26d3e7240bc68c3 100644 --- a/devNotes/Useful JS Function Documentation.txt +++ b/devNotes/Useful JS Function Documentation.txt @@ -182,33 +182,35 @@ UtilJS [script] line 157 of the previously listed file, '...totaling @@.yellowgreen;<<print cashFormat(_SFIncome)>>@@' if $formatNumbers > 0 'totaling @@.yellowgreen;¤1,500,000@@' else 'totaling @@.yellowgreen;¤1500000@@' - isFloat() - Checks if value is float. + isFloat() - Checks if value is float. - isInt() - Checks if value is an integer. + isInt() - Checks if value is an integer. - numberWithCommas() - Currently unused. + numberWithCommas() - Currently unused. - jsRandom() - JS equivalent of sugarcube's random(). + jsRandom() - JS equivalent of sugarcube's random(). - jsRandomMany() - JS equivalent of sugarcube's randomMany(). + jsRandomMany() - JS equivalent of sugarcube's randomMany(). - jsEither() - This function wants an array - which explains why it works like array.random(). Give it one or you'll face a NaN. JS equivalent of sugarcube's either() and array.random(). + jsEither() - This function wants an array - which explains why it works like array.random(). Give it one or you'll face a NaN. JS equivalent of sugarcube's either() and array.random(). - deepCopy() - This function is alternative to clone - usage needed if nested objects present. Slower but result is separate object tree, not with reference to source object. + deepCopy() - This function is alternative to clone - usage needed if nested objects present. Slower but result is separate object tree, not with reference to source object. - hashChoice() - hashes provided input. + hashChoice() - hashes provided input. - hashSum() - totals provided input and then hashes. + hashSum() - totals provided input and then hashes. - arr2obj() - Converts an array to an object. e.g. line 250 of :: init Nationalities [silently] - <<set $nationalities = arr2obj(setup.baseNationalities)>> + arr2obj() - Converts an array to an object. e.g. line 250 of :: init Nationalities [silently] + <<set $nationalities = arr2obj(setup.baseNationalities)>> - hashPush() //Note really sure where input is being pushed to. + hashPush() //Note really sure where input is being pushed to. - weightedArray2HashMap() + weightedArray2HashMap() - between(a, low, high) - outputs the value down the middle of two inputs e.g. - between($trees, 1, 3) returns $trees = 2 + between(a, low, high) - outputs the value down the middle of two inputs e.g. + between($trees, 1, 3) returns $trees = 2 + + def() - Returns whether the input is defined, similar to sugarcube's def. Core Slave Functions: diff --git a/devTools/FC.d.ts b/devTools/FC.d.ts index 11e6183b2c1279fdd5b98073730d96011e78de4e..eb7ac658dbd241587293bbdc19858b57ad70f37c 100644 --- a/devTools/FC.d.ts +++ b/devTools/FC.d.ts @@ -186,6 +186,8 @@ declare namespace App { removeLabel: string; skinColor: string; inflationType: string; + brandTarget: string; + brandDesign: string; } class Rule { diff --git a/devTools/sugarcube.d.ts b/devTools/sugarcube.d.ts index 92a0d063ab9e2c1485d77c38018edd1610b91a74..1239e18b202abb406ce70b66c0a7b258a28b4f3a 100644 --- a/devTools/sugarcube.d.ts +++ b/devTools/sugarcube.d.ts @@ -1435,7 +1435,7 @@ declare global { * @param passageNames The title(s) of the passage(s) to search for. May be a list or an array of passages. * @since 2.7.0 * @example - * <if hasVisited("Bar")>>…has been to the Bar…<</if>> + * <<if hasVisited("Bar")>>…has been to the Bar…<</if>> * <<if not hasVisited("Bar")>>…has never been to the Bar…<</if>> * <<if hasVisited("Bar", "Café")>>…has been to both the Bar and Café<</if>> * <<if not hasVisited("Bar", "Café")>>…has never been to either the Bar, Café, or both…<</if>> diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt index 8f71264643e034e118b73f2ce0ca58874ab8257f..737dc61e8debaab43203f1d5555d5604df965cd4 100644 --- a/slave variables documentation - Pregmod.txt +++ b/slave variables documentation - Pregmod.txt @@ -2802,6 +2802,7 @@ may accept strings, use at own risk "tail" "fox tail" "cat tail" +"cow tail" intelligence: diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js index 97ac65b22ba62b7cf8a8c187e3d2704ca1e7de47..5f4be65ad078a7cdf316f6755e53f6b618c5a547 100644 --- a/src/002-config/fc-version.js +++ b/src/002-config/fc-version.js @@ -1,7 +1,7 @@ App.Version = { base: "0.10.7", pmod: "2.4.X", - release: 1046, + release: 1047, }; /* Use release as save version */ diff --git a/src/003-assets/CSS/RAoptions.css b/src/003-assets/CSS/RAoptions.css new file mode 100644 index 0000000000000000000000000000000000000000..b09c1b289e9c576a1b43248e0857cf64a7bb5400 --- /dev/null +++ b/src/003-assets/CSS/RAoptions.css @@ -0,0 +1,48 @@ +.ra-onoffswitch { + display: inline-block; + position: relative; width: 4em; + vertical-align: middle; + -webkit-user-select:none; -moz-user-select:none; -ms-user-select: none; +} +.ra-onoffswitch-checkbox { + display: none; +} +.ra-onoffswitch-label { + display: block; overflow: hidden; cursor: pointer; + border: 2px solid #999999; border-radius: 2px; +} +.ra-onoffswitch-inner { + display: block; width: 200%; margin-left: -100%; + transition: margin 0.3s ease-in 0s; +} +.ra-onoffswitch-inner:before, .ra-onoffswitch-inner:after { + display: block; float: left; width: 50%; height: 3.5ex; padding: 0; line-height: 3.5ex; + font-size: x-small; color: white; font-family: FreeSans, sans-serif; font-weight: bold; + box-sizing: border-box; +} +.ra-onoffswitch-inner:before { + content: "ON"; + padding-left: 7px; + background-color: #111111; color: #FFFFFF; +} +.ra-onoffswitch-inner:after { + content: "OFF"; + padding-right: 7px; + background-color: #111111; color: #D9D9D9; + text-align: right; +} +.ra-onoffswitch-switch { + display: block; width: 1.5em; margin: 1px; + background: #8A8A8A; + position: absolute; top: 0; bottom: 0; + right: 2.1em; + border: 2px solid #414141; border-radius: 2px; + transition: all 0.3s ease-in 0s; +} +.ra-onoffswitch-checkbox:checked + .ra-onoffswitch-label .ra-onoffswitch-inner { + margin-left: 0; +} +.ra-onoffswitch-checkbox:checked + .ra-onoffswitch-label .ra-onoffswitch-switch { + right: 0px; + background-color: #2D80E0; +} diff --git a/src/SecExp/propagandaHub.tw b/src/SecExp/propagandaHub.tw index d54051f59bfaef9b4eaa4c5e5586e61877716abd..f0db26bfea20fb315d1a6834467c78bdc38f34ec 100644 --- a/src/SecExp/propagandaHub.tw +++ b/src/SecExp/propagandaHub.tw @@ -6,7 +6,7 @@ <<set _HistoryDiscount = 1>> <</if>> -<<set $nextButton = "Back", $nextLink = "Manage Arcology", $returnTo = "Manage Arcology">> +<<set $nextButton = "Back", $nextLink = "Manage Penthouse", $returnTo = "Manage Penthouse">> Propaganda Hub <hr> diff --git a/src/SecExp/riotControlCenter.tw b/src/SecExp/riotControlCenter.tw index 9899cd6a2a5e868593f577b39671594a33b0436a..412872248833d2af03ea4a2b1071a05ada269a0d 100644 --- a/src/SecExp/riotControlCenter.tw +++ b/src/SecExp/riotControlCenter.tw @@ -1,6 +1,6 @@ :: riotControlCenter [nobr] -<<set $nextButton = "Back", $nextLink = "Manage Arcology", $returnTo = "Manage Arcology">> +<<set $nextButton = "Back", $nextLink = "Manage Penthouse", $returnTo = "Manage Penthouse">> Riot Control Center <hr> diff --git a/src/SecExp/secBarracks.tw b/src/SecExp/secBarracks.tw index 6ab4d6fa7795ba1885fdb09d427513874837cf1e..d08bc017185fa438023bf6ffb8d2a71ec9878d12 100644 --- a/src/SecExp/secBarracks.tw +++ b/src/SecExp/secBarracks.tw @@ -1,6 +1,6 @@ :: secBarracks [nobr] -<<set $nextButton = "Back", $nextLink = "Manage Arcology", $returnTo = "Manage Arcology">> +<<set $nextButton = "Back", $nextLink = "Manage Penthouse", $returnTo = "Manage Penthouse">> The Barracks <hr> diff --git a/src/SecExp/securityHQ.tw b/src/SecExp/securityHQ.tw index 288e898e1af2c34dc78c2373c7cdd228e8f2540d..3eada329baf60b07120a95e8f5217b8cc8528b1d 100644 --- a/src/SecExp/securityHQ.tw +++ b/src/SecExp/securityHQ.tw @@ -6,7 +6,7 @@ <<set _HistoryDiscount = 1>> <</if>> -<<set $nextButton = "Back", $nextLink = "Manage Arcology", $returnTo = "Manage Arcology">> +<<set $nextButton = "Back", $nextLink = "Manage Penthouse", $returnTo = "Manage Penthouse">> Security Headquarters <hr> diff --git a/src/SpecialForce/Firebase.tw b/src/SpecialForce/Firebase.tw index 3678f797b85fbaa16672e171f501b01af9992ae4..6bb61d65d9275354f25b2d49ef47ff12e45de7ea 100644 --- a/src/SpecialForce/Firebase.tw +++ b/src/SpecialForce/Firebase.tw @@ -10,7 +10,7 @@ <<set _EnvCash2 = 500,_EnvCash3 = 250,_EnvCash4 = 150,_EnvProsp = 5>> <<case 2>> <<set _EnvCash2 = 550,_EnvCash3 = 300,_EnvCash4 = 200,_EnvProsp = 7>> - <</switch>> <<set $nextButton = "Back to Main",$nextLink = "Main",$returnTo = "Firebase">> + <</switch>> <<set $nextButton = "Back to Manage Penthouse",$nextLink = "Manage Penthouse",$returnTo = "Firebase">> <<if $cheatMode > 0>> [[Cheat edit|CheatEdit][]] <br> <</if>> The firebase of $arcologies[0].name's <<textbox "$SF.Lower" $SF.Lower "Firebase">> is located in the lower levels, occupying unneeded warehouse space. It is not accessible to the general citizenry, but your personal elevator has express service to it. As you step off, two soldiers in combat armor manning the entry checkpoint tense before recognizing their Marshal and stepping aside with a sharp salute.<br> @@ -45,22 +45,22 @@ <<if $SF.UC.Lock < 1>> <br> <<switch $SF.UC.Assign>> <<case 0>> - <br>No soldiers are working undercover. [[Full time assignment|Firebase][$SF.UC.Lock = 1]] + <br>No soldiers are working undercover, which would primarly advance your cultural goals. [[Full time assignment|Firebase][$SF.UC.Lock = 1]] <br>[[Reassign soldiers|Firebase][$SF.UC.Assign = -1]] <<case 1>> - <br>A small section of soldiers are working undercover. [[Full time assignment|Firebase][$SF.UC.Lock = 1]] + <br>A small section of soldiers are working undercover, which will primarly advance your cultural goals. [[Full time assignment|Firebase][$SF.UC.Lock = 1]] <br>[[Reassign soldiers|Firebase][$SF.UC.Assign = -1]] <<case 2>> - <br>A large section of soldiers are working undercover. [[Full time assignment|Firebase][$SF.UC.Lock = 1]] + <br>A large section of soldiers are working undercover, which will primarly advance your cultural goals. [[Full time assignment|Firebase][$SF.UC.Lock = 1]] <br>[[Reassign soldiers|Firebase][$SF.UC.Assign = -1]] <<default>> - <br>Would you like to assign soldiers to undercover duty? + <br>Would you like to assign soldiers to undercover duty, which will primarly advance your cultural goals? <br>[[Do not assign soldiers to work undercover|Firebase][$SF.UC.Assign = 0]] <br>[[Assign a small section of soldiers to work undercover|Firebase][$SF.UC.Assign = 1]] <br>[[Assign a large section of soldiers to work undercover|Firebase][$SF.UC.Assign = 2]] <</switch>> <<else>> - <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. [[Re-allocate the units|Firebase][$SF.UC.Lock = 0]] + <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 primarly advance your cultural goals. [[Re-allocate the units|Firebase][$SF.UC.Lock = 0]] <</if>> <<if $SF.Squad.Firebase > 5 && $secExp > 0 && $SFSupportLevel >= 4 && $maxUnits === 16 && $readiness <= 10>> diff --git a/src/SpecialForce/SpecialForce.js b/src/SpecialForce/SpecialForce.js index 38d04553b3879acf3d41f6af6fbf98bdff7b4446..60e96edd529e64f483b7938706d5d5e5694971ca 100644 --- a/src/SpecialForce/SpecialForce.js +++ b/src/SpecialForce/SpecialForce.js @@ -2602,17 +2602,25 @@ App.SF.AAR = function(endWeekCall = 1) { r += ` ${V.SF.Caps} managed to recruit ${FNG} new soldiers this week, and your reputation has <span class='green'>increased through the improvement of trade security</span>.`; r += `<br>//Your instructions to ${App.SF.SFC()}://`; - r += `<br> Deployment focus: `; // The below lines are indented to increase readability. + r += `<br> Deployment focus: `; r += `<span id="focus"> <<if $SF.Target == "recruit">>''Recruiting and Training''<<elseif $SF.Target == "secure">>''Securing Trade Routes''<<else>>''Raiding and Slaving''<</if>></span>. `; - r += `<<link "Recruit and Train">> <<set $SF.Target="recruit">> <<replace "#focus">>''Recruiting and Training''<</replace>> <</link>> | <<link "Secure Trade Routes">> <<set $SF.Target="secure">> <<replace "#focus">>''Securing Trade Routes''<</replace>> <</link>> | <<link "Raiding and Slaving">> <<set $SF.Target="raiding">> <<replace "#focus">>''Raiding and Slaving''<</replace>> <</link>>`; + r += `<br> <<link "Recruit and Train">> <<set $SF.Target = "recruit">> <<replace "#focus">>''Recruiting and Training''<</replace>> <</link>> //Increases the amount of FNG's at the cost of revenue.//`; + r+= `<br> <<link "Secure Trade Routes">> <<set $SF.Target = "secure">> <<replace "#focus">>''Securing Trade Routes''<</replace>> <</link>> //Increases trade and reputation at the cost of revenue.//`; + r += `<br> <<link "Raiding and Slaving">> <<set $SF.Target = "raiding">> <<replace "#focus">>''Raiding and Slaving''<</replace>> <</link>> //Increases revenue at the cost of less FNG's and increased force depravity.//`; - r += `<br> Rules of Engagement: `; // The below lines are indented to increase readability. + r += `<br> Rules of Engagement: `; r += `<span id="roe"> <<if $SF.ROE === "hold">>''Hold Fire''<<elseif $SF.ROE === "limited">>''Limited Fire''<<else>>''Free Fire''<</if>></span>. `; - r += `<<link "Hold Fire">> <<set $SF.ROE="hold">> <<replace "#roe">>''Hold Fire''<</replace>> <</link>> | <<link "Limited Fire">> <<set $SF.ROE="limited">> <<replace "#roe">>''Limited Fire''<</replace>> <</link>> | <<link "Free Fire">> <<set $SF.ROE="free">> <<replace "#roe">>''Free Fire''<</replace>> <</link>>`; + r += `<br> <<link "Hold Fire">> <<set $SF.ROE = "hold">> <<replace "#roe">>''Hold Fire''<</replace>> <</link>> //Reduces force depravity.//`; + r += `<br> <<link "Limited Fire">> <<set $SF.ROE = "limited">> <<replace "#roe">>''Limited Fire''<</replace>> <</link>> //Does not adjust force depravity.//`; + r += `<br> <<link "Free Fire">> <<set $SF.ROE = "free">> <<replace "#roe">>''Free Fire''<</replace>> <</link>> //Increases force depravity.//`; - r += `<br> Accountability: `; // The below lines are indented to increase readability. + r += `<br> Accountability: `; r += `<span id="accountability"> <<if $SF.Regs === "strict">>''Strict Accountability''<<elseif $SF.Regs === "some">>''Some Accountability''<<else>>''No Accountability''<</if>></span>. `; - r += `<<link "Strict Accountability">> <<set $SF.Regs="strict">> <<replace "#accountability">>''Strict Accountability''<</replace>> <</link>> | <<link "Some Accountability">> <<set $SF.Regs="some">> <<replace "#accountability">>''Some Accountability''<</replace>> <</link>> | <<link "No Accountability">> <<set $SF.Regs="none">> <<replace "#accountability">>''No Accountability''<</replace>> <</link>>`; + r += `<br> <<link "Strict Accountability">> <<set $SF.Regs = "strict">> <<replace "#accountability">>''Strict Accountability''<</replace>> <</link>> //Reduces force depravity.//`; + r += `<br> <<link "Some Accountability">> <<set $SF.Regs = "some">> <<replace "#accountability">>''Some Accountability''<</replace>> <</link>> //Does not adjust force depravity.//`; + r += `<br> <<link "No Accountability">> <<set $SF.Regs = "none">> <<replace "#accountability">>''No Accountability''<</replace>> <</link>> //Increases force depravity.//`; + + r += `<br><br>Force depravity effects trade.`; if (V.SF.MercCon.CanAttend === 1) { V.SF.MercCon.Income = 0; @@ -2649,7 +2657,7 @@ App.SF.AAR = function(endWeekCall = 1) { App.SF.Count = function() { const V = State.variables, T = State.temporary, - C = Math.clamp, // sure that's correct? + C = Math.clamp, // sure that's correct? // Yes it works as inteded. S = V.SF.Squad, E = V.economy; T.FU = 10; diff --git a/src/gui/Encyclopedia/encyclopedia.tw b/src/gui/Encyclopedia/encyclopedia.tw index 75b2004a3701ba54ab46c0731074701a7378a041..e072eb49a633331cfe8a48ce026e1967aec4a934 100644 --- a/src/gui/Encyclopedia/encyclopedia.tw +++ b/src/gui/Encyclopedia/encyclopedia.tw @@ -2588,10 +2588,10 @@ LORE: INTERVIEWS <br>''anonNeo'' for spellchecking. <br>''kopareigns'' for countless text and bug fixes. Also large swathes of code improvements. <br>''Utopia'' for dirty dealings gang leader focus and updates to it. - <br>''hexall90'' for height growth drugs, incubator organ farm support and detailing, the dispensary cleanup, the joint Eugenics bad end rework, the Hippolyta Academy, and the Security Expansion Mod. + <br>''hexall90'' for height growth drugs, incubator organ farm support and detailing, the dispensary cleanup, the joint Eugenics bad end rework with ''SFanon (blank)'', the Hippolyta Academy, and the Security Expansion Mod. <br>''sensei'' for coding in support for commas and an excellent family tree rework. <br>''laziestman'' for sexy spats. - <br>''SFanon (blank)'' for SF related work, passive player skill gain, fulfillment order, player into summary rewrite, updating and re-organizing the in-game wiki in addition to the joint Eugenics bad end rework. + <br>''SFanon (blank)'' for SF related work, passive player skill gain, fulfillment order, player into summary rewrite, general fixes, storyCaption overhaulling, updating and re-organizing the in-game wiki in addition to the joint Eugenics bad end rework with ''hexall90''. <br>''anon'' for extending FCGudder's economy reports to the other facilities. <br>''MilkAnon'' for his contributions to FCTV and the FC world in general. <br>''valen102938'' for dealing with vector art, both creating new art and utilizing unused art. diff --git a/src/init/setupVars.tw b/src/init/setupVars.tw index 81cee16436a9ff6f6c3ec87343f200a625fc82e6..d5fc23a3e08f2694919a6c01e32b0a45409e2b86 100644 --- a/src/init/setupVars.tw +++ b/src/init/setupVars.tw @@ -57,6 +57,7 @@ equine: {type: "equine", normalOvaMin:1, normalOvaMax: 1, normalBirth: 48, minLi <<set setup.filterRacesLowercase = ["amerindian", "asian", "black", "indo-aryan", "latina", "malay", "middle eastern", "mixed race", "pacific islander", "semitic", "southern european", "white"]>> <<set setup.filterRegions = ["Africa", "Asia", "Australia", "Europe", "Middle East", "North America", "South America"]>> <<set setup.naturalSkins = ["pure white", "ivory", "white", "extremely pale", "very pale", "pale", "extremely fair", "very fair", "fair", "light", "light olive", "tan", "olive", "bronze", "dark olive", "dark", "light beige", "beige", "dark beige", "light brown", "brown", "dark brown", "black", "ebony", "pure black"]>> +<<set setup.dyedSkins = ["camouflage patterned", "dyed blue", "dyed gray", "dyed green", "dyed pink", "dyed red", "tiger striped"]>> /* START Custom Nationalities region filter */ /* Not currently weighted, but will accept weights */ @@ -1315,6 +1316,8 @@ equine: {type: "equine", normalOvaMin:1, normalOvaMax: 1, normalBirth: 48, minLi <<set setup.chineseRevivalistSlaveSurnames = ["Ai", "Ali", "An", "Ao", "Ba", "Bai", "Baili", "Ban", "Bao", "Bei", "Ben", "Bi", "Bian", "Bie", "Bing", "Bo", "Bu", "Cai", "Cang", "Cao", "Ce", "Cen", "Chai", "Chang", "Chanyu", "Chao", "Che", "Chen", "Cheng", "Chi", "Chong", "Chu", "Chunyu", "Cong", "Cui", "Da", "Dai", "Dang", "Deng", "Di", "Diao", "Ding", "Diwu", "Dong", "Dongfang", "Dongguo", "Dongmen", "Dou", "Du", "Duan", "Duangan", "Duanmu", "Dugu", "E", "Fa", "Fan", "Fang", "Fei", "Feng", "Fu", "Gan", "Gang", "Gao", "Ge", "Geng", "Gong", "Gongliang", "Gongsun", "Gongxi", "Gongyang", "Gongye", "Gou", "Gu", "Guan", "Guang", "Guangqiu", "Guanqiu", "Gui", "Guliang", "Guo", "Ha", "Hai", "Han", "Hang", "Hao", "He", "Helian", "Heng", "Hong", "Hou", "Hu", "Hua", "Huai", "Huan", "Huang", "Huangfu", "Hui", "Huo", "Huyan", "Ji", "Jia", "Jiagu", "Jian", "Jiang", "Jiao", "Jie", "Jin", "Jing", "Ju", "Juqu", "Kan", "Kang", "Ke", "Kong", "Kou", "Ku", "Kuai", "Kuang", "Kui", "Kun", "L", "Lai", "Lan", "Lang", "Lao", "Lei", "Leng", "Li", "Lian", "Liang", "Liangqiu", "Liao", "Lin", "Ling", "Linghu", "Liu", "Lo", "Long", "Lou", "Lqiu", "Lu", "Lü", "Luan", "Luo", "Ma", "Man", "Mao", "Mei", "Meng", "Mi", "Mian", "Miao", "Min", "Ming", "Mo", "Moqi", "Mou", "Mu", "Murong", "Na", "Nai", "Nan", "Nangong", "Nanmen", "Ni", "Nian", "Nie", "Ning", "Niu", "Nong", "Ou", "Ouyang", "Pan", "Pang", "Pei", "Peng", "Pi", "Ping", "Pu", "Puyang", "Qi", "Qian", "Qiang", "Qiao", "Qidiao", "Qifu", "Qiguan", "Qin", "Qing", "Qiu", "Qu", "Quan", "Que", "Ran", "Rangsi", "Rao", "Ren", "Rong", "Ru", "Ruan", "Rui", "Ruo", "Sang", "Sha", "Shan", "Shang", "Shangguan", "Shao", "She", "Shen", "Sheng", "Shentu", "Shi", "Shou", "Shu", "Shuai", "Shuang", "Shui", "Shun", "Si", "Sikong", "Sikou", "Sima", "Sishi", "Situ", "Song", "Su", "Sui", "Sun", "Suo", "Suruo", "Tai", "Taishi", "Taishu", "Tan", "Tang", "Tantai", "Tao", "Teng", "Tian", "Tie", "Tong", "Tou", "Tu", "Tufa", "Tuoba", "Wai", "Wan", "Wang", "Wanyan", "Wei", "Weisheng", "Wen", "Weng", "Wenren", "Wo", "Wu", "Wuma", "Xi", "Xia", "Xiahou", "Xian", "Xiang", "Xianyu", "Xiao", "Xie", "Ximen", "Xin", "Xing", "Xiong", "Xu", "Xuan", "Xuanyuan", "Xue", "Xun", "Yan", "Yang", "Yangshe", "Yao", "Ye", "Yelü", "Yi", "Yin", "Ying", "Yong", "You", "Yu", "Yuan", "Yuchi", "Yue", "Yuezheng", "Yun", "Yuwen", "Zai", "Zaifu", "Zan", "Zang", "Zeng", "Zha", "Zhai", "Zhan", "Zhang", "Zhangsun", "Zhao", "Zhen", "Zheng", "Zhi", "Zhong", "Zhonghang", "Zhongli", "Zhongsun", "Zhou", "Zhu", "Zhuang", "Zhuansun", "Zhuge", "Zhuo", "Zi", "Ziju", "Zong", "Zongzheng", "Zou", "Zu", "Zuo", "Zuoqiu"]>> +<<set setup.bimboSlaveNames = ["Candy", "Cindy"]>> + /* Name pool selector based on nationality and race. Use as follows, given some slave _slave: <<set _namePool = (setup.namePoolSelector[_slave.nationality + "." + _slave.race] || setup.namePoolSelector[_slave.nationality] || setup.whiteAmericanSlaveNames)>> @@ -2008,7 +2011,7 @@ Then pick _namePool.random(), or display those names as possible choices, or do "Roman Revivalist": setup.romanMaleSurnames }>> -<<set setup.FutureSocieties = ["FSArabianRevivalist", "FSAssetExpansionist", "FSAztecRevivalist", "FSBodyPurist", "FSChattelReligionist", "FSChineseRevivalist", "FSDegradationist", "FSEdoRevivalist", "FSEgyptianRevivalist", "FSGenderFundamentalist", "FSGenderRadicalist", "FSHedonisticDecadence", "FSMaturityPreferentialist", "FSNull", "FSPastoralist", "FSPaternalist", "FSPhysicalIdealist", "FSRepopulationFocus", "FSRestart", "FSRomanRevivalist", "FSSlimnessEnthusiast", "FSSubjugationist", "FSSupremacist", "FSTransformationFetishist", "FSYouthPreferentialist", "FSIntellectualDependency", "FSSlaveProfessionalism", "FSPetiteAdmiration", "FSStatuesqueGlorification"]>> +<<set setup.FutureSocieties = ["FSArabianRevivalist", "FSAssetExpansionist", "FSAztecRevivalist", "FSBodyPurist", "FSChattelReligionist", "FSChineseRevivalist", "FSDegradationist", "FSEdoRevivalist", "FSEgyptianRevivalist", "FSGenderFundamentalist", "FSGenderRadicalist", "FSHedonisticDecadence", "FSIntellectualDependency", "FSMaturityPreferentialist", "FSNull", "FSPastoralist", "FSPaternalist", "FSPetiteAdmiration", "FSPhysicalIdealist", "FSRepopulationFocus", "FSRestart", "FSRomanRevivalist", "FSSlaveProfessionalism", "FSSlimnessEnthusiast", "FSStatuesqueGlorification", "FSSubjugationist", "FSSupremacist", "FSTransformationFetishist", "FSYouthPreferentialist"]>> <<set setup.ArcologyNamesSupremacistAmerindian = ["Akilineq", "Amerindia", "Aquadoctan", "Cahokia", "Caral", "Chicora", "Cowee", "Cusco", "Dugiluyi", "Five Nations", "Gran Chaco", "Indigenismo", "Isunigu", "Moundville", "Norumbega", "Onaquaga", "Onondaga Lake", "Paititi", "Porcupine", "Pueblo de Taos", "Quito", "Red Power", "Saguenay", "Shackamaxon", "Tamoanchan", "The Confederated Tribes", "Werowocomoco"]>> <<set setup.ArcologyNamesSupremacistAsian = ["Asiatic Empire", "Ciimnuai", "Eastern Sun", "Greater Asia", "Jade Empire", "Jade Library", "Kalapa", "Mahoroba", "Pan-Asia", "Penglai", "Shambhala", "Shangri-La", "Sinosphere", "The Celestial Temple", "The Orient", "Tian", "Yangtze", "Yellow River", "Zhonghua Minzu"]>> @@ -2062,10 +2065,9 @@ Then pick _namePool.random(), or display those names as possible choices, or do <<set setup.ArcologyNamesCummunism = ["Arscrotzka", "Crusty Cummies", "Cumbria", "Cuming Inlet", "Cummins", "Cummunist Russwhore", "Cumstantine", "Cumstantinople", "Da Cumrade", "Erection Fluid", "Free Slave Central", "Jizzakh", "Jizzebel", "Jizzington upon Wank", "Mother Cumtry", "Semen Supreme", "Semenyih", "Sperm Atrium", "Sperm Banks", "Spermato Zoo", "Wankara"]>> <<set setup.ArcologyNamesIncestFetishist = ["All in the Family", "Blood Relations", "Consanguinity", "East Westermarck", "Electra Complex", "Familial Embrace", "Family Fortunes", "Family Ties", "Heredity", "Incestia", "Incestral Home", "Jocasta Complex", "Kinship", "Oedipal City", "Oedipus Complex", "Oeditropolis", "Pure Blood", "Sib City", "Snokhachestvo", "Tenth Abomination", "Unlash of Clans", "Wincest"]>> <<set setup.ArcologyNamesIntellectualDependency = ["Followers of Bacchus", "Fun and Games", "Bimbo Land", "Promiscuous", "Pretty in Pink"]>> -<<set setup.ArcologyNamesSlaveProfessionalism = ["Followers of Minerva"]>> -<<set setup.ArcologyNamesPetiteAdmiration = [""]>> -<<set setup.ArcologyNamesStatuesqueGlorification = ["Height is Right", "Tall Trees", "The Bean Stalk"]>> -<<set setup.bimboSlaveNames = ["Candy", "Cindy"]>> +<<set setup.ArcologyNamesSlaveProfessionalism = ["Followers of Minerva", "Intellectua"]>> +<<set setup.ArcologyNamesPetiteAdmiration = ["Petite Pride", "The Short Stack"]>> +<<set setup.ArcologyNamesStatuesqueGlorification = ["Height Is Right", "Tall Trees", "The Bean Stalk"]>> <<set setup.badWords = ["anus", "ass", "bitch", "boob", "butt", "cock", "crap", "cum", "cunny", "cunt", "dick", "fuck", "jizz", "junk", "piss", "prick", "pussy", "shit", "slave", "slut", "tit", "trash", "whore"]>> @@ -2137,7 +2139,8 @@ Then pick _namePool.random(), or display those names as possible choices, or do {name: "None", value: "none"}, {name: "Tail", value: "tail", rs: "buyTails"}, {name: "Fox tail", value: "fox tail", rs: "buyTails"}, - {name: "Cat tail", value: "cat tail", rs: "buyTails"}]>> + {name: "Cat tail", value: "cat tail", rs: "buyTails"}, + {name: "Cow tail", value: "cow tail", rs: "buyTails"}]>> <<set setup.facilityCareers = ["be confined in the arcade", "be confined in the cellblock", "be the Attendant", "be the DJ", "be the Farmer", "be the Madam", "be the Matron", "be the Milkmaid", "be the Nurse", "be the Schoolteacher", "be the Stewardess", "be the Wardeness", "be your Concubine", "get treatment in the clinic", "learn in the schoolroom", "live with your Head Girl", "rest in the spa", "serve in the club", "serve in the master suite", "work as a farmhand", "work as a nanny", "work as a servant", "work in the brothel", "work in the dairy"]>> diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw index dbdbcf65d100d1dbcc6783c13ca46f28fc044d20..d5efa04608f692c69af72d8011405e09f8e9c405 100644 --- a/src/init/storyInit.tw +++ b/src/init/storyInit.tw @@ -374,7 +374,7 @@ You should have received a copy of the GNU General Public License along with thi <<set $potencyAge = 13>> <<set $AgePenalty = 1>> <<set $precociousPuberty = 0>> - <<set $loliGrow = 1>> + <<set $loliGrow = 0>> <<set $retirementAge = 45>> <<set $customRetirementAge = 45>> @@ -1022,8 +1022,6 @@ You should have received a copy of the GNU General Public License along with thi <<set $brandTarget = {primary: "buttock", secondary: "buttock", local: "buttock"}>> <<set $brandDesign = {primary: "your initials", local: "your initials"}>> -<<set $dyedSkin = ["camouflage patterned", "dyed blue", "dyed gray", "dyed green", "dyed pink", "dyed red", "tiger striped"]>> - <<set $oralTotal = 0>> <<set $vaginalTotal = 0>> <<set $analTotal = 0>> @@ -1514,6 +1512,7 @@ You should have received a copy of the GNU General Public License along with thi <<set $postSexCleanUp = 1>> +<<set $sideBarOptions = {Cash:1, Upkeep:1, SexSlaveCount:1, Rep:1, GSP:1, Authority:1, Security:1, Crime:1}>> <<set $DefaultBirthDestination = "individually decided fates">> <<set $abbreviateHormoneBalance = 2>> diff --git a/src/interaction/prothesticLab.tw b/src/interaction/prothesticLab.tw index 19f0395ff3ed83b9d7f566b8ecf36ef88bd8c98d..3eae836a64384884cedcf2b6aa95c6420f775f68 100644 --- a/src/interaction/prothesticLab.tw +++ b/src/interaction/prothesticLab.tw @@ -1,6 +1,6 @@ :: Prosthetic Lab [nobr] -<<set $nextButton = "Back", $nextLink = "Main">> +<<set $nextButton = "Back", $nextLink = "Manage Penthouse">> <<set $researchLab.speed = (($researchLab.hired * 3) + $researchLab.menials) * $researchLab.aiModule>> diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js index 6be91a867373c9a90a2bafdbf7559654daf810ed..4bfa944f57820701eab0bab1d5b45608197c83cc 100644 --- a/src/js/DefaultRules.js +++ b/src/js/DefaultRules.js @@ -2905,15 +2905,15 @@ window.DefaultRules = (function() { /** * @param {App.Entity.SlaveState} slave - * @param {object} rule + * @param {App.RA.RuleSetters} rule */ function ProcessLabel(slave, rule) { - if (rule.label !== null && !slave.custom.label.includes(`[${rule.label}]`)) { - slave.custom.label = `${slave.custom.label }[${ rule.label }]`; + if (rule.label !== null && rule.label !== '' && !slave.custom.label.includes(`[${rule.label}]`)) { + slave.custom.label = `${slave.custom.label}[${rule.label}]`; r += `<br>${slave.slaveName} has been tagged as ${rule.label}`; } - if (rule.removeLabel !== null && slave.custom.label.includes(`[${rule.removeLabel}]`)) { + if (rule.removeLabel !== null && rule.removeLabel !== '' && slave.custom.label.includes(`[${rule.removeLabel}]`)) { slave.custom.label = slave.custom.label.replace(`[${rule.removeLabel}]`, ""); r += `<br>${slave.slaveName}'s tag [${rule.removeLabel}] is removed.`; } diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js index 1df8d1515decba29d98e3f4b61e2d9e0087d59b3..8bc0569bc62397035dc3afa5ad40d8eba285391a 100644 --- a/src/js/SlaveState.js +++ b/src/js/SlaveState.js @@ -1789,6 +1789,7 @@ App.Entity.SlaveState = class SlaveState { * * "tail" * * "fox tail" * * "cat tail" + * * "cow tail" */ this.buttplugAttachment = "none"; /** diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js index d23b9c0807e145a8e92e0a66fad7c9911bb33b60..1da0b6d9ea36550b2f8765ca78012a6d72c784f6 100644 --- a/src/js/datatypeCleanupJS.js +++ b/src/js/datatypeCleanupJS.js @@ -1764,24 +1764,30 @@ window.FacilityDatatypeCleanup = (function() { function FacilityIDArrayCleanup() { function helperFunction(facilityIDArray) { if (!Array.isArray(facilityIDArray)) { - facilityIDArray = []; + return []; } else if (typeof facilityIDArray[0] === "object") { - facilityIDArray = facilityIDArray.map(a => a.ID); + return facilityIDArray.map(a => a.ID); + } else { + const si = V.slaveIndices; + return facilityIDArray.filter(id => si.hasOwnProperty(id)); } } - helperFunction(V.BrothiIDs); - helperFunction(V.DairyiIDs); - helperFunction(V.ClubiIDs); - helperFunction(V.ServQiIDs); - helperFunction(V.SchlRiIDs); - helperFunction(V.SpaiIDs); - helperFunction(V.CliniciIDs); - helperFunction(V.ArcadeiIDs); - helperFunction(V.CellBiIDs); - helperFunction(V.MastSiIDs); - helperFunction(V.HGSuiteiIDs); - helperFunction(V.NurseryiIDs); - helperFunction(V.FarmyardiIDs); + + V.slaveIndices = slaves2indices(); + + V.BrothiIDs = helperFunction(V.BrothiIDs); + V.DairyiIDs = helperFunction(V.DairyiIDs); + V.ClubiIDs = helperFunction(V.ClubiIDs); + V.ServQiIDs = helperFunction(V.ServQiIDs); + V.SchlRiIDs = helperFunction(V.SchlRiIDs); + V.SpaiIDs = helperFunction(V.SpaiIDs); + V.CliniciIDs = helperFunction(V.CliniciIDs); + V.ArcadeiIDs = helperFunction(V.ArcadeiIDs); + V.CellBiIDs = helperFunction(V.CellBiIDs); + V.MastSiIDs = helperFunction(V.MastSiIDs); + V.HGSuiteiIDs = helperFunction(V.HGSuiteiIDs); + V.NurseryiIDs = helperFunction(V.NurseryiIDs); + V.FarmyardiIDs = helperFunction(V.FarmyardiIDs); } function FacilityNameCleanup() { @@ -2178,6 +2184,7 @@ App.Entity.Utils.validateRules = function() { try { testObject(rule.set, "set"); } catch (e) { + // eslint-disable-next-line no-console console.error(`Error in rule ${rule.name}: ${e}`); } } diff --git a/src/js/futureSocietyJS.js b/src/js/futureSocietyJS.js index db9b215b112286b2da03160bdb42e532e8a46ad4..099541196f2055fa31c7045048204b4dcb7814ba 100644 --- a/src/js/futureSocietyJS.js +++ b/src/js/futureSocietyJS.js @@ -24,7 +24,11 @@ window.FutureSocieties = (function() { ChineseRevivalist: "FSChineseRevivalist", AztecRevivalist: "FSAztecRevivalist", RepopulationFocus: "FSRepopulationFocus", - Eugenics: "FSRestart" + Eugenics: "FSRestart", + IntellectualDependency: "FSIntellectualDependency", + SlaveProfessionalism: "FSSlaveProfessionalism", + PetiteAdmiration: "FSPetiteAdmiration", + StatuesqueGlorification: "FSStatuesqueGlorification" }; const SocietyList = Object.keys(FSString2Property).map(key => FSString2Property[key]); // This returns an array containing the values of FSString2Property. E.g. "FSSupremacist" and "FSSubjugationist" @@ -107,6 +111,21 @@ window.FutureSocieties = (function() { V.propOutcome = 0; V.failedElite = 0; break; + case "FSIntellectualDependency": + arcology.FSIntellectualDependencyLaw = 0; + arcology.FSIntellectualDependencyLawBeauty = 0; + arcology.FSIntellectualDependencySMR = 0; + break; + case "FSPetiteAdmiration": + arcology.FSPetiteAdmirationLaw = 0; + arcology.FSPetiteAdmirationLaw2 = 0; + arcology.FSPetiteAdmirationSMR = 0; + break; + case "FSStatuesqueGlorification": + arcology.FSStatuesqueGlorificationLaw = 0; + arcology.FSStatuesqueGlorificationLaw2 = 0; + arcology.FSStatuesqueGlorificationSMR = 0; + break; case "FSNull": break; default: // all others have one law and one SMR diff --git a/src/js/generateGenetics.js b/src/js/generateGenetics.js index 70c0d244d72ff7f1a27416a45d177313f154464d..b93f711697172ecf44f8f234d8b7fb845124daa2 100644 --- a/src/js/generateGenetics.js +++ b/src/js/generateGenetics.js @@ -1700,10 +1700,49 @@ window.generateChild = function(mother, ova, destination) { child.mother = genes.mother; child.father = genes.father; child.nationality = genes.nationality; - child.skin = genes.skin; - child.origSkin = child.skin; child.race = genes.race; child.origRace = child.race; + child.geneticQuirks = clone(genes.geneticQuirks); + if (child.geneticQuirks.albinism === 2) { + child.albinismOverride = { + skin: genes.skin, + eyeColor: genes.eyeColor, + hColor: genes.hColor + }; + child.hColor = "white"; + child.eyeColor = "red"; + switch (child.race) { + case "black": + case "indo-aryan": + case "malay": + case "pacific islander": + case "amerindian": + child.skin = "very fair"; + break; + case "latina": + child.skin = "extremely fair"; + break; + case "asian": + case "middle eastern": + case "semitic": + case "southern european": + case "white": + child.skin = "pure white"; + break; + default: + child.skin = "pure white"; + } + } else { + child.skin = genes.skin; + child.eyeColor = genes.eyeColor; + child.hColor = genes.hColor; + } + child.origSkin = child.skin; + child.origEye = child.eyeColor; + child.origHColor = child.hColor; + child.pubicHColor = child.hColor; + child.underArmHColor = child.hColor; + child.eyebrowHColor = child.hColor; child.intelligence = genes.intelligence; if (mother.prematureBirth > 0) { if (child.intelligence >= -90) { @@ -1712,20 +1751,12 @@ window.generateChild = function(mother, ova, destination) { child.premature = 1; } child.face = genes.face; - child.eyeColor = genes.eyeColor; - child.origEye = child.eyeColor; - child.hColor = genes.hColor; - child.origHColor = child.hColor; child.underArmHStyle = genes.underArmHStyle; child.pubicHStyle = genes.pubicHStyle; child.markings = genes.markings; child.sexualFlaw = genes.sexualFlaw; child.behavioralFlaw = genes.behavioralFlaw; child.fetish = genes.fetish; - child.geneticQuirks = clone(genes.geneticQuirks); - child.pubicHColor = child.hColor; - child.underArmHColor = child.hColor; - child.eyebrowHColor = child.hColor; child.birthWeek = 0; child.energy = 0; child.anus = 0; diff --git a/src/js/itemAvailability.js b/src/js/itemAvailability.js index 1db914510422fa913a09e94845e3ebfc28b6493b..7fc1eef370af462abe325250f5fc1230130ab837 100644 --- a/src/js/itemAvailability.js +++ b/src/js/itemAvailability.js @@ -153,6 +153,7 @@ window.isItemAccessible = function(string) { case "long, huge plug": return (V.toysBoughtButtPlugs === 1); case "tail": + case "cow tail": case "cat tail": case "fox tail": return (V.toysBoughtButtPlugTails === 1); diff --git a/src/js/pregJS.js b/src/js/pregJS.js index 167587a6b475149173c1d12b14811315b970d3ce..d202352f10eb3866985dab94f685516f8bdd582b 100644 --- a/src/js/pregJS.js +++ b/src/js/pregJS.js @@ -386,22 +386,23 @@ window.setPregType = function(actor) { let ftvol = FetusGetPrediction(actor, actor.pregData.normalBirth); let cmvol = ftvol * actor.womb.length; let maxvol = actor.pregAdaptation*2000; - if (State.variables.seeHyperPreg == 0) - maxvol /= 10; //without hyperpreg enabled it's limited to be roughly ten times smaller. + if (State.variables.seeHyperPreg === 0) { + maxvol /= 10; // without hyperpreg enabled it's limited to be roughly ten times smaller. + } let freevol = maxvol - cmvol; let coeff = ((maxvol/actor.womb.length) / (freevol/ftvol)) / 2; // more divide to 2 is to balance for ensured 1 ova even if overlimit. - //console.log("ftvol:", ftvol, " cmvol:", cmvol, " maxvol:", maxvol, " freevol:", freevol, " coeff:", coeff); - if (ovum > coeff) + // console.log("ftvol:", ftvol, " cmvol:", cmvol, " maxvol:", maxvol, " freevol:", freevol, " coeff:", coeff); + if (ovum > coeff) { ovum = coeff; + } /* for future, if mounthly cycle will be a thing to implement, this will be useful. if (ovum < 0) ovum = jsRandom(coeff/fertilityStack, 1); */ - if (ovum < 1) - ovum = 1; + if (ovum < 1) { ovum = 1; } } - return Math.ceil(ovum);; + return Math.ceil(ovum); }; /* diff --git a/src/js/rulesAssistant.js b/src/js/rulesAssistant.js index 5ff2a48f841b0c1eb33e814fdb207a11cc0ce7ef..1acbfec10fdc93acc11e07227a17b0fa683646ab 100644 --- a/src/js/rulesAssistant.js +++ b/src/js/rulesAssistant.js @@ -329,6 +329,7 @@ App.RA.newRule = function() { legsTat: null, backTat: null, stampTat: null, + brandDesign: null, curatives: null, livingRules: null, relationshipRules: null, diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js index 2ae21c926de09cad2bcbc422eac10bbbc6980dcc..caef5a7ec8f548ac6b40ea165c036111f6c3f0ce 100644 --- a/src/js/rulesAssistantOptions.js +++ b/src/js/rulesAssistantOptions.js @@ -169,6 +169,7 @@ window.rulesAssistantOptions = (function() { } } + // list of clickable elements // has a short explanation (the prefix) and a value display // value display can optionally be an editable text input field @@ -177,16 +178,19 @@ window.rulesAssistantOptions = (function() { /** * * @param {string} prefix - * @param {Array} [data] - * @param {boolean} [allowNullValue] - * @param {boolean} [editor] + * @param {Array} [data=[]] + * @param {boolean} [allowNullValue=true] + * @param {boolean} [editor=false] + * @param {boolean} [capitalizeShortcuts] * @param {...any} args */ - constructor(prefix, data = [], allowNullValue = true, editor = false, ...args) { + constructor(prefix, data = [], allowNullValue = true, editor = false, capitalizeShortcuts = false, ...args) { super(`${prefix}: `, editor, ...args); this.selectedItem = null; /** @protected */ this._allowNullValue = allowNullValue; + /** @private */ + this._capitalizeShortcuts = capitalizeShortcuts; if (allowNullValue) { this.appendChild(new ListItem("No default setting", null)); } @@ -227,7 +231,7 @@ window.rulesAssistantOptions = (function() { } } - getData(what) { + getData() { return (this.value.tagName === "INPUT" ? this.parse(this.value.value) : this.selectedItem.data); } @@ -247,7 +251,11 @@ window.rulesAssistantOptions = (function() { * @returns {ListItem} */ _createListItem(display, data) { - return new ListItem(display, data); + if (this._capitalizeShortcuts) { + return new ListItem(capFirstChar(display), data); + } else { + return new ListItem(display, data); + } } } @@ -281,18 +289,61 @@ window.rulesAssistantOptions = (function() { } } - /** - * Automatically capitalizes shortcut labels - */ - class EditorWithShortcutsCapitalized extends EditorWithShortcuts { - _createListItem(display, data) { - return super._createListItem(capFirstChar(display), data); + class ListSelector extends Element { + constructor(prefix, data = [], allowNullValue = true) { + super(`${prefix}: `, data, allowNullValue); + } + + render(prefix, data, allowNullValue) { + const elem = document.createElement("div"); + const label = document.createElement("span"); + label.innerHTML = prefix; + this.value = document.createElement("select"); + elem.appendChild(label); + elem.appendChild(this.value); + elem.classList.add("rajs-list"); + // now add options + if (allowNullValue) { + let nullOpt = document.createElement("option"); + nullOpt.value = null; + nullOpt.text = "No default setting"; + this.value.appendChild(nullOpt); + } + for (const dr of data) { + const dv = Array.isArray(dr) && dr.length > 1 ? [dr[1], dr[0]] : [dr, dr]; + let opt = document.createElement("option"); + opt.value = dv[0]; + opt.text = dv[1]; + this.value.appendChild(opt); + } + this.value.onchange = () => { + this.inputEdited(); + }; + return elem; + } + + getData() { + return this.value.value; + } + + setValue(what) { + this.value.value = what; + } + + inputEdited() { + this.propagateChange(); + } + + propagateChange() { + if (this.onchange instanceof Function) { + this.onchange(this.getData()); + } } } class List extends EditorWithShortcuts { - constructor(prefix, data = [], allowNullValue = true, textinput = false) { - super(prefix, data, allowNullValue, textinput); + constructor(prefix, data = [], allowNullValue = true, textinput = false, capitalizeShortcuts = true) { + super(prefix, data, allowNullValue, textinput, capitalizeShortcuts); this.values = new Map(); if (allowNullValue) { this.values.set(null, "no default setting"); @@ -321,7 +372,7 @@ window.rulesAssistantOptions = (function() { return res; } - getData(what) { + getData() { return this.selectedValue; } @@ -335,16 +386,98 @@ window.rulesAssistantOptions = (function() { } } - /** - * Automatically capitalizes shortcut labels - */ - class ListCapitalized extends List { - _createListItem(display, data) { - return super._createListItem(capFirstChar(display), data !== undefined ? data : display); + class StringEditor extends EditorWithShortcuts { + constructor(prefix, data = [], allowNullValue = true, capitalizeShortcuts = true) { + super(prefix, data, allowNullValue, true, capitalizeShortcuts); + } + + createEditor() { + let res = document.createElement("input"); + res.setAttribute("type", "text"); + res.classList.add("rajs-value"); // + // call the variable binding when the input field is no longer being edited, and when the enter key is pressed + res.onblur = () => { + this.inputEdited(); + }; + res.onkeypress = (e) => { + if (returnP(e)) { this.inputEdited(); } + }; + return res; + } + + getData() { + return this.value.value; + } + + setValue(what) { + this.value.value = what; } } - class NumberRange extends EditorWithShortcutsCapitalized { + class BooleanSwitch extends Element { + /** + * @param {string} prefix + * @param {Array} values values for "false" and "true" + */ + constructor(prefix, values = [false, true]) { + super(prefix); + + /** @private */ + this.values_ = { + false: values[0], + true: values[1] + }; + } + + render(prefix) { + const elem = document.createElement("div"); + const label = document.createElement("span"); + label.innerHTML = `${prefix}: `; + let switchContainer = document.createElement("div"); + switchContainer.className = "ra-onoffswitch"; + this.checkBox_ = document.createElement("input"); + this.checkBox_.type = "checkbox"; + this.checkBox_.className = "ra-onoffswitch-checkbox"; + this.checkBox_.id = `ra-option-${prefix}`; + let switchLabel = document.createElement("label"); + switchLabel.className = "ra-onoffswitch-label"; + switchLabel.htmlFor = this.checkBox_.id; + let innerSpan = document.createElement("span"); + innerSpan.className = "ra-onoffswitch-inner"; + let switchSpan = document.createElement("span"); + switchSpan.className = "ra-onoffswitch-switch"; + switchLabel.appendChild(innerSpan); + switchLabel.appendChild(switchSpan); + elem.appendChild(label); + switchContainer.appendChild(this.checkBox_); + switchContainer.appendChild(switchLabel); + elem.appendChild(switchContainer); + elem.classList.add("rajs-list"); + + this.checkBox_.onchange = () => { this.inputEdited();} + return elem; + } + + getData() { + return this.values_[this.checkBox_.checked]; + } + + setValue(what) { + this.checkBox_.checked = this.values_[true] === what; + } + + inputEdited() { + this.propagateChange(); + } + + propagateChange() { + if (this.onchange instanceof Function) { + this.onchange(this.getData()); + } + } + } + + class NumberRange extends EditorWithShortcuts { /** * @param {string} prefix * @param {Array} [data=[]] @@ -354,7 +487,7 @@ window.rulesAssistantOptions = (function() { * @param {boolean} [spinBox=false] */ constructor(prefix, data = [], allowNullValue = true, min = 0, max = 100, spinBox = false) { - super(prefix, data, allowNullValue, spinBox, min, max); + super(prefix, data, allowNullValue, spinBox, true, min, max); } createEditor(min, max) { @@ -382,7 +515,7 @@ window.rulesAssistantOptions = (function() { this.inputEdited(); }; this.numEditor.onkeypress = (e) => { - if (returnP(e)) this.inputEdited(); + if (returnP(e)) { this.inputEdited(); } }; const res = document.createElement("span"); @@ -407,7 +540,7 @@ window.rulesAssistantOptions = (function() { } } - getData(what) { + getData() { const v = this.parse(this.numEditor.value); return v === null ? null : App.RA.makeTarget(this.opSelector.value, v); } @@ -1015,14 +1148,14 @@ window.rulesAssistantOptions = (function() { } } - class SpecialInclusion extends ListCapitalized { + class SpecialInclusion extends List { constructor() { const items = [ ["include", -1], ["exclude", 0], ["only", 1] ]; - super("Special slaves", items); + super("Special slaves", items, true, false, true); this.setValue(current_rule.condition.specialSlaves); this.onchange = (value) => current_rule.condition.specialSlaves = value; } @@ -1457,7 +1590,7 @@ window.rulesAssistantOptions = (function() { } } - class ShoeList extends List { + class ShoeList extends ListSelector { constructor() { super("Shoes", setup.shoes.map(i => [i.name, i.value])); this.setValue(current_rule.set.shoes); @@ -1465,7 +1598,7 @@ window.rulesAssistantOptions = (function() { } } - class CorsetList extends List { + class CorsetList extends ListSelector { constructor() { const bellies = []; setup.bellyAccessories.forEach(acc => { @@ -1483,32 +1616,32 @@ window.rulesAssistantOptions = (function() { } } - class LeggingsList extends ListCapitalized { + class LeggingsList extends ListSelector { constructor() { const items = [ ["none"], ["short stockings"], ["long stockings"], ]; - super("Leg accessory", items); + super("Leg accessory", items, true, false, true); this.setValue(current_rule.set.legAccessory); this.onchange = (value) => current_rule.set.legAccessory = value; } } - class VagChastityList extends ListCapitalized { + class VagChastityList extends List { constructor() { const chaste = [ ["none", 0], ["chastity", 1], ]; - super("Vaginal chastity", chaste); + super("Vaginal chastity", chaste, true, false, true); this.setValue(current_rule.set.chastityVagina); this.onchange = (value) => current_rule.set.chastityVagina = value; } } - class VagAccVirginsList extends List { + class VagAccVirginsList extends ListSelector { constructor() { const accs = []; setup.vaginalAccessories.forEach(acc => { @@ -1524,7 +1657,7 @@ window.rulesAssistantOptions = (function() { } } - class VagAccAVirginsList extends List { + class VagAccAVirginsList extends ListSelector { constructor() { const accs = []; setup.vaginalAccessories.forEach(acc => { @@ -1540,7 +1673,7 @@ window.rulesAssistantOptions = (function() { } } - class VagAccOtherList extends List { + class VagAccOtherList extends ListSelector { constructor() { const accs = []; setup.vaginalAccessories.forEach(acc => { @@ -1556,7 +1689,7 @@ window.rulesAssistantOptions = (function() { } } - class VaginalAttachmentsList extends List { + class VaginalAttachmentsList extends ListSelector { constructor() { const accs = []; setup.vaginalAttachments.forEach(acc => { @@ -1572,19 +1705,19 @@ window.rulesAssistantOptions = (function() { } } - class DickChastityList extends ListCapitalized { + class DickChastityList extends List { constructor() { const items = [ ["none", 0], ["chastity cage", 1], ]; - super("Penile chastity", items); + super("Penile chastity", items, true, false, true); this.setValue(current_rule.set.chastityPenis); this.onchange = (value) => current_rule.set.chastityPenis = value; } } - class DickAccVirginsList extends List { + class DickAccVirginsList extends ListSelector { constructor() { super("Dick accessories for anal virgins", setup.dickAccessories.map(i => [i.name, i.value])); this.setValue(current_rule.set.aVirginDickAccessory); @@ -1592,7 +1725,7 @@ window.rulesAssistantOptions = (function() { } } - class DickAccOtherList extends List { + class DickAccOtherList extends ListSelector { constructor() { super("Dick accessories for other slaves", setup.dickAccessories.map(i => [i.name, i.value])); this.setValue(current_rule.set.dickAccessory); @@ -1600,19 +1733,19 @@ window.rulesAssistantOptions = (function() { } } - class AnalChastityList extends ListCapitalized { + class AnalChastityList extends List { constructor() { const items = [ ["none", 0], ["chastity", 1], ]; - super("Anal chastity", items); + super("Anal chastity", items, true, false, true); this.setValue(current_rule.set.chastityAnus); this.onchange = (value) => current_rule.set.chastityAnus = value; } } - class ButtplugsVirginsList extends List { + class ButtplugsVirginsList extends ListSelector { constructor() { const accs = []; setup.buttplugs.forEach(acc => { @@ -1628,7 +1761,7 @@ window.rulesAssistantOptions = (function() { } } - class ButtplugsOtherList extends List { + class ButtplugsOtherList extends ListSelector { constructor() { const accs = []; setup.buttplugs.forEach(acc => { @@ -1644,7 +1777,7 @@ window.rulesAssistantOptions = (function() { } } - class ButtplugAttachmentsList extends List { + class ButtplugAttachmentsList extends ListSelector { constructor() { const accs = []; setup.buttplugAttachments.forEach(acc => { @@ -1660,7 +1793,7 @@ window.rulesAssistantOptions = (function() { } } - class ImplantVolumeList extends ListCapitalized { + class ImplantVolumeList extends ListSelector { constructor() { const pairs = [ ["no changes", -1], @@ -1682,37 +1815,25 @@ window.rulesAssistantOptions = (function() { } } - class AutosurgerySwitch extends ListCapitalized { + class AutosurgerySwitch extends BooleanSwitch { constructor() { - const pairs = [ - ["on", 1], - ["off", 0], - ]; - super("Assistant-applied implants (Autosurgery global switch)", pairs, false); + super("Assistant-applied implants (Autosurgery global switch)", [0, 1]); this.setValue(current_rule.set.autoSurgery); this.onchange = (value) => current_rule.set.autoSurgery = value; } } - class IntensiveGrowthSwitch extends ListCapitalized { + class IntensiveGrowthSwitch extends BooleanSwitch { constructor() { - const pairs = [ - ["no", 0], - ["yes", 1], - ]; - super("Use intensive growth drugs for healthy slaves", pairs, false); + super("Use intensive growth drugs for healthy slaves", [0, 1]); this.setValue(current_rule.set.growth.intensity); this.onchange = (value) => current_rule.set.growth.intensity = value; } } - class HyperGrowthSwitch extends ListCapitalized { + class HyperGrowthSwitch extends BooleanSwitch { constructor() { - const pairs = [ - ["no", 0], - ["yes", 1], - ]; - super("Use hyper growth drugs", pairs, false); + super("Use hyper growth drugs", [0, 1]); this.setValue(current_rule.set.hyper_drugs); this.onchange = (value) => current_rule.set.hyper_drugs = value; } @@ -1877,20 +1998,20 @@ window.rulesAssistantOptions = (function() { } } - class CurrativesList extends ListCapitalized { + class CurrativesList extends ListSelector { constructor() { const pairs = [ ["none", 0], ["preventatives", 1], ["curatives", 2], ]; - super("Health drugs", pairs); + super("Health drugs", pairs, true, false, true); this.setValue(current_rule.set.curatives); this.onchange = (value) => current_rule.set.curatives = value; } } - class AphrodisiacList extends ListCapitalized { + class AphrodisiacList extends ListSelector { constructor() { const pairs = [ ["none", 0], @@ -1904,19 +2025,19 @@ window.rulesAssistantOptions = (function() { } } - class ContraceptiveList extends ListCapitalized { + class ContraceptiveList extends List { constructor() { const drugs = [ ["contraceptives", true], ["fertile", false], ]; - super("Contraceptives for fertile slaves", drugs); + super("Contraceptives for fertile slaves", drugs, true, false, true); this.setValue(current_rule.set.preg); this.onchange = (value) => current_rule.set.preg = value; } } - class AbortionList extends ListCapitalized { + class AbortionList extends ListSelector { constructor() { const pairs = [ ["abort all", "all"], @@ -1931,7 +2052,7 @@ window.rulesAssistantOptions = (function() { } } - class PregDrugsList extends ListCapitalized { + class PregDrugsList extends ListSelector { constructor() { const pairs = [ ["none"], @@ -1946,7 +2067,7 @@ window.rulesAssistantOptions = (function() { } } - class FemaleHormonesList extends List { + class FemaleHormonesList extends ListSelector { constructor() { const pairs = [ ["Intensive Female", 2], @@ -1961,7 +2082,7 @@ window.rulesAssistantOptions = (function() { } } - class GeldingHormonesList extends List { + class GeldingHormonesList extends ListSelector { constructor() { const pairs = [ ["Intensive Female", 2], @@ -1976,7 +2097,7 @@ window.rulesAssistantOptions = (function() { } } - class ShemaleHormonesList extends List { + class ShemaleHormonesList extends ListSelector { constructor() { const pairs = [ ["Intensive Female", 2], @@ -1991,7 +2112,7 @@ window.rulesAssistantOptions = (function() { } } - class OtherDrugsList extends ListCapitalized { + class OtherDrugsList extends ListSelector { constructor() { const drugs = [ ["none"], @@ -2051,7 +2172,7 @@ window.rulesAssistantOptions = (function() { } } - class EnemaList extends ListCapitalized { + class EnemaList extends ListSelector { constructor() { const enemas = [ ["none"], @@ -2070,7 +2191,7 @@ window.rulesAssistantOptions = (function() { } } - class DietList extends ListCapitalized { + class DietList extends ListSelector { constructor() { const diets = [ ["Healthy diet", "healthy"], @@ -2098,19 +2219,15 @@ window.rulesAssistantOptions = (function() { diets.push(["cum production"]); } - super("Slave diets", diets, true, true); + super("Slave diets", diets); this.setValue(current_rule.set.diet); this.onchange = (value) => current_rule.set.diet = value; } } - class DietGrowthList extends ListCapitalized { + class DietGrowthList extends BooleanSwitch { constructor() { - const pairs = [ - ["on", 1], - ["off", 0] - ]; - super("Diet support for growth drugs", pairs, false); + super("Diet support for growth drugs", [0, 1]); this.setValue(current_rule.set.dietGrowthSupport); this.onchange = (value) => current_rule.set.dietGrowthSupport = value; } @@ -2142,13 +2259,13 @@ window.rulesAssistantOptions = (function() { } } - class DietSolidFoodList extends ListCapitalized { + class DietSolidFoodList extends List { constructor() { const pairs = [ ["permitted", 0], ["forbidden", 1], ]; - super("Solid food access", pairs); + super("Solid food access", pairs, true, false, true); this.setValue(current_rule.set.onDiet); this.onchange = (value) => current_rule.set.onDiet = value; } @@ -2169,7 +2286,7 @@ window.rulesAssistantOptions = (function() { } } - class BraceList extends ListCapitalized { + class BraceList extends ListSelector { constructor() { const pairs = [ ["none"], @@ -2182,7 +2299,7 @@ window.rulesAssistantOptions = (function() { } } - class LivingStandardList extends ListCapitalized { + class LivingStandardList extends ListSelector { constructor() { const pairs = [ ["luxurious"], @@ -2195,7 +2312,7 @@ window.rulesAssistantOptions = (function() { } } - class PunishmentList extends ListCapitalized { + class PunishmentList extends ListSelector { constructor() { const pairs = [ ["confinement"], @@ -2209,7 +2326,7 @@ window.rulesAssistantOptions = (function() { } } - class RewardList extends ListCapitalized { + class RewardList extends ListSelector { constructor() { const pairs = [ ["relaxation"], @@ -2223,7 +2340,7 @@ window.rulesAssistantOptions = (function() { } } - class ReleaseList extends ListCapitalized { + class ReleaseList extends ListSelector { constructor() { const pairs = [ ["permissive"], @@ -2238,7 +2355,7 @@ window.rulesAssistantOptions = (function() { } } - class ToyHoleList extends ListCapitalized { + class ToyHoleList extends ListSelector { constructor() { const pairs = [ ["all her holes"], @@ -2254,7 +2371,7 @@ window.rulesAssistantOptions = (function() { } } - class SmartFetishList extends ListCapitalized { + class SmartFetishList extends ListSelector { constructor() { const pairs = [ ["vanilla"], @@ -2274,7 +2391,7 @@ window.rulesAssistantOptions = (function() { } } - class SmartXYAttractionList extends ListCapitalized { + class SmartXYAttractionList extends ListSelector { constructor() { const pairs = [ ["passionate", 100], @@ -2288,7 +2405,7 @@ window.rulesAssistantOptions = (function() { } } - class SmartXXAttractionList extends ListCapitalized { + class SmartXXAttractionList extends ListSelector { constructor() { const pairs = [ ["passionate", 100], @@ -2302,7 +2419,7 @@ window.rulesAssistantOptions = (function() { } } - class SmartEnergyList extends ListCapitalized { + class SmartEnergyList extends ListSelector { constructor() { const pairs = [ ["nympho", 100], @@ -2318,45 +2435,45 @@ window.rulesAssistantOptions = (function() { } } - class SpeechList extends ListCapitalized { + class SpeechList extends List { constructor() { const pairs = [ ["permissive"], ["suppress accents", "accent elimination"], ["restrictive"] ]; - super("Speech rules", pairs); + super("Speech rules", pairs, true, false, true); this.setValue(current_rule.set.speechRules); this.onchange = (value) => current_rule.set.speechRules = value; } } - class RelationshipList extends ListCapitalized { + class RelationshipList extends List { constructor() { const pairs = [ ["permissive"], ["just friends"], ["restrictive"] ]; - super("Relationship rules", pairs); + super("Relationship rules", pairs, true, false, true); this.setValue(current_rule.set.relationshipRules); this.onchange = (value) => current_rule.set.relationshipRules = value; } } - class PornBroadcastStatus extends ListCapitalized { + class PornBroadcastStatus extends List { constructor() { const pairs = [ ["disabled", 0], ["enabled", 1] ]; - super("Porn Broadcasting Status", pairs); + super("Porn Broadcasting Status", pairs, true, false, true); this.setValue(current_rule.set.pornFeed); this.onchange = (value) => current_rule.set.pornFeed = value; } } - class PornList extends ListCapitalized { + class PornList extends ListSelector { constructor() { const pairs = [ /* ["No broadcasting", -1], **This has changed, it would now use .pornFeed** */ @@ -2373,7 +2490,7 @@ window.rulesAssistantOptions = (function() { } } - class EyewearList extends ListCapitalized { + class EyewearList extends ListSelector { constructor() { const pairs = [ ["none"], @@ -2478,7 +2595,7 @@ window.rulesAssistantOptions = (function() { } } - class EarwearList extends ListCapitalized { + class EarwearList extends ListSelector { constructor() { const pairs = [ ["none"], @@ -2486,13 +2603,13 @@ window.rulesAssistantOptions = (function() { ["muffle with ear plugs"], ["deafen with ear plugs"] ]; - super("Earwear", pairs); + super("Earwear", pairs, true, false, true); this.setValue(current_rule.set.earwear); this.onchange = (value) => current_rule.set.earwear = value; } } - class MakeupList extends ListCapitalized { + class MakeupList extends ListSelector { constructor() { const pairs = [ ["makeup-free", 0], @@ -2507,7 +2624,7 @@ window.rulesAssistantOptions = (function() { } } - class NailsList extends ListCapitalized { + class NailsList extends ListSelector { constructor() { const pairs = [ ["clipped", 0], @@ -2527,7 +2644,7 @@ window.rulesAssistantOptions = (function() { } } - class HairLengthList extends ListCapitalized { + class HairLengthList extends ListSelector { constructor() { const pairs = [ ["very short", 5], @@ -2537,25 +2654,25 @@ window.rulesAssistantOptions = (function() { ["very long", 100], ["floor length", 150] ]; - super("Hair length", pairs); + super("Hair length", pairs, true, false, true); this.setValue(current_rule.set.hLength); this.onchange = (value) => current_rule.set.hLength = value; } } - class HaircutsList extends ListCapitalized { + class HaircutsList extends ListSelector { constructor() { const pairs = [ ["maintain hair length", 1], ["do not maintain hair length", 0] ]; - super("Hair length maintenance", pairs); + super("Hair length maintenance", pairs, true, false, true); this.setValue(current_rule.set.haircuts); this.onchange = (value) => current_rule.set.haircuts = value; } } - class HairColorList extends ListCapitalized { + class HairColorList extends ListSelector { constructor() { const pairs = [ ["blonde"], @@ -2598,7 +2715,7 @@ window.rulesAssistantOptions = (function() { } } - class HairStyleList extends ListCapitalized { + class HairStyleList extends ListSelector { constructor() { const pairs = [ ["neat"], @@ -2627,7 +2744,7 @@ window.rulesAssistantOptions = (function() { } } - class EyebrowColorList extends ListCapitalized { + class EyebrowColorList extends ListSelector { constructor() { const pairs = [ ["blonde"], @@ -2670,7 +2787,7 @@ window.rulesAssistantOptions = (function() { } } - class EyebrowStyleList extends ListCapitalized { + class EyebrowStyleList extends ListSelector { constructor() { const pairs = [ ["shaved"], @@ -2690,7 +2807,7 @@ window.rulesAssistantOptions = (function() { } } - class EyebrowFullnessList extends ListCapitalized { + class EyebrowFullnessList extends ListSelector { constructor() { const pairs = [ ["pencil-thin"], @@ -2707,20 +2824,20 @@ window.rulesAssistantOptions = (function() { } } - class MarkingsList extends ListCapitalized { + class MarkingsList extends ListSelector { constructor() { const pairs = [ ["remove beauty marks"], ["remove birthmarks"], ["remove both"] ]; - super("Facial markings", pairs); + super("Facial markings", pairs, true, false, true); this.setValue(current_rule.set.markings); this.onchange = (value) => current_rule.set.markings = value; } } - class PubicHairColorList extends ListCapitalized { + class PubicHairColorList extends ListSelector { constructor() { const pairs = [ ["blonde"], @@ -2763,7 +2880,7 @@ window.rulesAssistantOptions = (function() { } } - class PubicHairStyleList extends ListCapitalized { + class PubicHairStyleList extends ListSelector { constructor() { const pairs = [ ["waxed"], @@ -2779,7 +2896,7 @@ window.rulesAssistantOptions = (function() { } } - class ArmpitHairColorList extends ListCapitalized { + class ArmpitHairColorList extends ListSelector { constructor() { const pairs = [ ["blonde"], @@ -2822,7 +2939,7 @@ window.rulesAssistantOptions = (function() { } } - class ArmpitHairStyleList extends ListCapitalized { + class ArmpitHairStyleList extends ListSelector { constructor() { const pairs = [ ["waxed"], @@ -2848,7 +2965,7 @@ window.rulesAssistantOptions = (function() { return res; } - class EarPiercingList extends ListCapitalized { + class EarPiercingList extends ListSelector { constructor() { super("Ear piercings", piercingTypes()); this.setValue(current_rule.set.earPiercing); @@ -2856,7 +2973,7 @@ window.rulesAssistantOptions = (function() { } } - class NosePiercingList extends ListCapitalized { + class NosePiercingList extends ListSelector { constructor() { super("Nasal piercings", piercingTypes()); this.setValue(current_rule.set.nosePiercing); @@ -2864,7 +2981,7 @@ window.rulesAssistantOptions = (function() { } } - class EyebrowPiercingList extends ListCapitalized { + class EyebrowPiercingList extends ListSelector { constructor() { super("Eyebrow piercings", piercingTypes()); this.setValue(current_rule.set.eyebrowPiercing); @@ -2872,7 +2989,7 @@ window.rulesAssistantOptions = (function() { } } - class NavelPiercingList extends ListCapitalized { + class NavelPiercingList extends ListSelector { constructor() { super("Navel piercings", piercingTypes()); this.setValue(current_rule.set.navelPiercing); @@ -2880,7 +2997,7 @@ window.rulesAssistantOptions = (function() { } } - class NipplePiercingList extends ListCapitalized { + class NipplePiercingList extends ListSelector { constructor() { super("Nipple piercings", piercingTypes()); this.setValue(current_rule.set.nipplesPiercing); @@ -2888,19 +3005,19 @@ window.rulesAssistantOptions = (function() { } } - class AreolaPiercingList extends ListCapitalized { + class AreolaPiercingList extends ListSelector { constructor() { const pairs = [ ["none", 0], ["studded", 1] ]; - super("Areola studs", pairs); + super("Areola studs", pairs, true, false, true); this.setValue(current_rule.set.areolaePiercing); this.onchange = (value) => current_rule.set.areolaePiercing = value; } } - class LipPiercingList extends ListCapitalized { + class LipPiercingList extends ListSelector { constructor() { super("Lip piercings", piercingTypes()); this.setValue(current_rule.set.lipsPiercing); @@ -2908,7 +3025,7 @@ window.rulesAssistantOptions = (function() { } } - class TonguePiercingList extends ListCapitalized { + class TonguePiercingList extends ListSelector { constructor() { super("Tongue piercing", piercingTypes()); this.setValue(current_rule.set.tonguePiercing); @@ -2916,7 +3033,7 @@ window.rulesAssistantOptions = (function() { } } - class ClitPiercingList extends ListCapitalized { + class ClitPiercingList extends ListSelector { constructor() { super("Clit piercing", piercingTypes(true)); this.setValue(current_rule.set.clitPiercing); @@ -2924,7 +3041,7 @@ window.rulesAssistantOptions = (function() { } } - class LabiaPiercingList extends ListCapitalized { + class LabiaPiercingList extends ListSelector { constructor() { super("Pussylips piercings", piercingTypes()); this.setValue(current_rule.set.vaginaPiercing); @@ -2932,7 +3049,7 @@ window.rulesAssistantOptions = (function() { } } - class ShaftPiercingList extends ListCapitalized { + class ShaftPiercingList extends ListSelector { constructor() { super("Shaft piercings", piercingTypes()); this.setValue(current_rule.set.dickPiercing); @@ -2940,7 +3057,7 @@ window.rulesAssistantOptions = (function() { } } - class PerineumPiercingList extends ListCapitalized { + class PerineumPiercingList extends ListSelector { constructor() { super("Perianal piercings", piercingTypes()); this.setValue(current_rule.set.anusPiercing); @@ -2948,25 +3065,21 @@ window.rulesAssistantOptions = (function() { } } - class CorsetPiercingList extends ListCapitalized { + class CorsetPiercingList extends ListSelector { constructor() { const pairs = [ ["none", 0], ["applied", 1] ]; - super("Corset piercings", pairs); + super("Corset piercings", pairs, true, false, true); this.setValue(current_rule.set.corsetPiercing); this.onchange = (value) => current_rule.set.corsetPiercing = value; } } - class AutoBrandingList extends ListCapitalized { + class AutoBrandingList extends BooleanSwitch { constructor() { - const pairs = [ - ["on", 1], - ["off", 0], - ]; - super("Automatic branding", pairs, false); + super("Automatic branding", [0, 1]); this.setValue(current_rule.set.autoBrand); this.onchange = (value) => current_rule.set.autoBrand = value; } @@ -3096,7 +3209,7 @@ window.rulesAssistantOptions = (function() { } } - class BrandDesignList extends List { + class BrandDesignList extends StringEditor { constructor() { const items = [ ["Your slaving emblem", "your personal symbol"], @@ -3214,7 +3327,7 @@ window.rulesAssistantOptions = (function() { items.push(["(FS) Imperial Seal", "a small image of your Imperial Seal"]); } - super("Your brand design is", items, true); + super("Your brand design is", items, true, true); this.setValue(current_rule.set.brandDesign); this.onchange = (value) => current_rule.set.brandDesign = value; } @@ -3239,7 +3352,7 @@ window.rulesAssistantOptions = (function() { ]; } - class FaceTattooList extends ListCapitalized { + class FaceTattooList extends ListSelector { constructor() { super("Facial tattoos", commonTattoos()); this.setValue(current_rule.set.lipsTat); @@ -3247,7 +3360,7 @@ window.rulesAssistantOptions = (function() { } } - class ShoulderTattooList extends ListCapitalized { + class ShoulderTattooList extends ListSelector { constructor() { super("Shoulder tattoos", commonTattoos()); this.setValue(current_rule.set.shouldersTat); @@ -3255,7 +3368,7 @@ window.rulesAssistantOptions = (function() { } } - class ChestTattooList extends ListCapitalized { + class ChestTattooList extends ListSelector { constructor() { super("Chest tattoos", commonTattoos()); this.setValue(current_rule.set.boobsTat); @@ -3263,7 +3376,7 @@ window.rulesAssistantOptions = (function() { } } - class ArmTattooList extends ListCapitalized { + class ArmTattooList extends ListSelector { constructor() { super("Arm tattoos", commonTattoos()); this.setValue(current_rule.set.armsTat); @@ -3271,7 +3384,7 @@ window.rulesAssistantOptions = (function() { } } - class UpperBackTattooList extends ListCapitalized { + class UpperBackTattooList extends ListSelector { constructor() { super("Upper back tattoos", commonTattoos()); this.setValue(current_rule.set.backTat); @@ -3279,7 +3392,7 @@ window.rulesAssistantOptions = (function() { } } - class LowerBackTattooList extends ListCapitalized { + class LowerBackTattooList extends ListSelector { constructor() { super("Lower back tattoos", commonTattoos()); this.setValue(current_rule.set.stampTat); @@ -3287,7 +3400,7 @@ window.rulesAssistantOptions = (function() { } } - class AbdomenTattooList extends ListCapitalized { + class AbdomenTattooList extends ListSelector { constructor() { super("Abdomen tattoos", commonTattoos()); this.setValue(current_rule.set.vaginaTat); @@ -3295,7 +3408,7 @@ window.rulesAssistantOptions = (function() { } } - class DickTattooList extends ListCapitalized { + class DickTattooList extends ListSelector { constructor() { super("Dick tattoos", commonTattoos()); this.setValue(current_rule.set.dickTat); @@ -3303,7 +3416,7 @@ window.rulesAssistantOptions = (function() { } } - class ButtockTattooList extends ListCapitalized { + class ButtockTattooList extends ListSelector { constructor() { super("Buttock tattoos:", commonTattoos()); this.setValue(current_rule.set.buttTat); @@ -3311,7 +3424,7 @@ window.rulesAssistantOptions = (function() { } } - class AnalTattooList extends ListCapitalized { + class AnalTattooList extends ListSelector { constructor() { super("Anal tattoo or bleaching", commonTattoos().concat([['bleached']])); this.setValue(current_rule.set.anusTat); @@ -3319,7 +3432,7 @@ window.rulesAssistantOptions = (function() { } } - class LegTattooList extends ListCapitalized { + class LegTattooList extends ListSelector { constructor() { super("Leg tattoos", commonTattoos()); this.setValue(current_rule.set.legsTat); @@ -3327,98 +3440,98 @@ window.rulesAssistantOptions = (function() { } } - class VisionSurgeryList extends ListCapitalized { + class VisionSurgeryList extends List { constructor() { const items = [ ["fixed", 1], ["blurred", -1], ]; - super("Vision correction", items); + super("Vision correction", items, true, false, true); this.setValue(current_rule.set.surgery.eyes); this.onchange = (value) => current_rule.set.surgery.eyes = value; } } - class HearingSurgeryList extends ListCapitalized { + class HearingSurgeryList extends List { constructor() { const items = [ ["fixed", 0], ["muffled", -1], ]; - super("Hearing correction", items); + super("Hearing correction", items, true, false, true); this.setValue(current_rule.set.surgery.hears); this.onchange = (value) => current_rule.set.surgery.hears = value; } } - class SmellSurgeryList extends ListCapitalized { + class SmellSurgeryList extends List { constructor() { const items = [ ["fixed", 0], ["disabled", -1], ]; - super("Olfactory correction", items); + super("Olfactory correction", items, true, false, true); this.setValue(current_rule.set.surgery.smells); this.onchange = (value) => current_rule.set.surgery.smells = value; } } - class TasteSurgeryList extends ListCapitalized { + class TasteSurgeryList extends List { constructor() { const items = [ ["fixed", 0], ["disabled", -1], ]; - super("Gustatory correction", items); + super("Gustatory correction", items, true, false, true); this.setValue(current_rule.set.surgery.tastes); this.onchange = (value) => current_rule.set.surgery.tastes = value; } } - class LactationSurgeryList extends ListCapitalized { + class LactationSurgeryList extends List { constructor() { const items = [ ["implanted", 1], ["removed", 0], ]; - super("Lactation drug implants", items); + super("Lactation drug implants", items, true, false, true); this.setValue(current_rule.set.surgery.lactation); this.onchange = (value) => current_rule.set.surgery.lactation = value; } } - class SemenSurgeryList extends ListCapitalized { + class SemenSurgeryList extends List { constructor() { const items = [ ["implanted", 1], ["removed", 0], ]; - super("Prostate production enhancing drug implants", items); + super("Prostate production enhancing drug implants", items, true, false, true); this.setValue(current_rule.set.surgery.prostate); this.onchange = (value) => current_rule.set.surgery.prostate = value; } } - class VasectomyList extends ListCapitalized { + class VasectomyList extends List { constructor() { const items = [ ["apply vasectomy", true], ["undo vasectomy", false], ]; - super("Apply or undo vasectomy for slaves with testicles", items); + super("Apply or undo vasectomy for slaves with testicles", items, true, false, true); this.setValue(current_rule.set.surgery.vasectomy); this.onchange = (value) => current_rule.set.surgery.vasectomy = value; } } - class CosmeticSurgeryList extends ListCapitalized { + class CosmeticSurgeryList extends ListSelector { constructor() { const items = [ ["none", 0], ["subtle", 1], ["invasive", 2], ]; - super("Cosmetic Surgery", items); + super("Cosmetic Surgery", items, true, false, true); this.setValue(current_rule.set.surgery.cosmetic); this.onchange = (value) => current_rule.set.surgery.cosmetic = value; } @@ -3470,55 +3583,55 @@ window.rulesAssistantOptions = (function() { } } - class TighteningSurgeryList extends ListCapitalized { + class TighteningSurgeryList extends List { constructor() { const items = [ ["tightening", 1], ["virginity restoration", 2], ]; - super("Orifice Tightening", items); + super("Orifice Tightening", items, true, false, true); this.setValue(current_rule.set.surgery.holes); this.onchange = (value) => current_rule.set.surgery.holes = value; } } - class TummyTuckSurgeryList extends ListCapitalized { + class TummyTuckSurgeryList extends List { constructor() { const items = [ ["tuck", 1], ]; - super("Tummy Tuck", items); + super("Tummy Tuck", items, true, false, true); this.setValue(current_rule.set.surgery.tummy); this.onchange = (value) => current_rule.set.surgery.tummy = value; } } - class BodyHairSurgeryList extends ListCapitalized { + class BodyHairSurgeryList extends List { constructor() { const items = [ ["keep", 1], ["removal", 2], ]; - super("Body Hair", items); + super("Body Hair", items, true, false, true); this.setValue(current_rule.set.surgery.bodyhair); this.onchange = (value) => current_rule.set.surgery.bodyhair = value; } } - class HairSurgeryList extends ListCapitalized { + class HairSurgeryList extends List { constructor() { const items = [ ["keep", 1], ["removal", 2], ]; - super("Hair", items); + super("Hair", items, true, false, true); this.setValue(current_rule.set.surgery.hair); this.onchange = (value) => current_rule.set.surgery.hair = value; } } - class AutomaticAssignmentList extends List { + class AutomaticAssignmentList extends ListSelector { constructor() { const items = [ ["Rest", "rest"], @@ -3577,19 +3690,19 @@ window.rulesAssistantOptions = (function() { } } - class BellyImplantList extends ListCapitalized { + class BellyImplantList extends List { constructor() { const items = [ ["install", "install"], ["remove", "remove"], ]; - super("Belly implant", items); + super("Belly implant", items, true, false, true); this.setValue(current_rule.set.surgery.bellyImplant); this.onchange = (value) => current_rule.set.surgery.bellyImplant = value; } } - class LabelList extends List { + class LabelList extends StringEditor { constructor() { super("Custom label", [], true, true); this.setValue(current_rule.set.label); @@ -3597,7 +3710,7 @@ window.rulesAssistantOptions = (function() { } } - class LabelRemoveList extends List { + class LabelRemoveList extends StringEditor { constructor() { super("Remove custom label", [], true, true); this.setValue(current_rule.set.removeLabel); @@ -3605,7 +3718,7 @@ window.rulesAssistantOptions = (function() { } } - class SkinColorList extends List { + class SkinColorList extends ListSelector { constructor() { const items = [ ["natural"], diff --git a/src/js/slaveStatsChecker.js b/src/js/slaveStatsChecker.js index 4cbc7c259ba1166b5e23dc95c6b2f32d920b92ea..e2cc4af5707a469f16bb3455fb7053919dc0f4c2 100644 --- a/src/js/slaveStatsChecker.js +++ b/src/js/slaveStatsChecker.js @@ -377,7 +377,7 @@ window.canAchieveErection = function(slave) { return false; } else if (slave.dick < 11 && slave.drugs === "priapism agents") { return true; - } else if (slave.dick > 7) { + } else if (slave.dick > 6) { return false; } else if (slave.aphrodisiacs > 1 || (slave.inflationType === "aphrodisiac" && slave.inflation >= 2)) { return true; diff --git a/src/js/slaveSummaryWidgets.js b/src/js/slaveSummaryWidgets.js index fc7b9b93127b7f25fbf31be61a0e6206eb953988..4b26f4072f400b3affa64a49a5844ce4e0bf43c1 100644 --- a/src/js/slaveSummaryWidgets.js +++ b/src/js/slaveSummaryWidgets.js @@ -4920,6 +4920,10 @@ window.SlaveSummaryUncached = (function() { case "fox tail": r += `Attached fox tail. `; break; + + case "cow tail": + r += `Attached cow tail. `; + break; } } diff --git a/src/js/utilJS.js b/src/js/utilJS.js index 5fc53521e290470fe762e04bdf62d3b86668536f..e3c55587afe30d6d4d093d1c7c64e6387d4008cc 100644 --- a/src/js/utilJS.js +++ b/src/js/utilJS.js @@ -542,13 +542,12 @@ window.Height = (function() { }; /** - * FIXME: JSdoc syntax error * Helper method - table lookup for nationality/race combinations - * @param {object} table // I think + * @param {object} table * @param {string|Object} nationality * @param {string} race * @param {undefined} [def] - * @returns {object} // I think + * @returns {object} */ const nationalityMeanHeight = function(table, nationality, race, def) { return table[`${nationality}.${race}`] || table[nationality] || table[`.${race}`] || table[""] || def; @@ -862,8 +861,7 @@ window.Intelligence = (function() { }; /** - * FIXME: JSdoc syntax error - * @param {boolean} settings // no idea for this one + * @param {boolean} settings * @returns {object} */ const _randomIntelligence = function(settings) { @@ -1056,21 +1054,6 @@ window.num = function(x) { return [chunk, scale].filter(isTruthy).join(" "); } - /** - * @param {number} s - * @returns {string} - */ - function commaNum(s) { - if (!s) { - return "0"; - } - if (State.variables.formatNumbers !== 1) { - return s.toString(); - } else { - return s.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); - } - } - if (V.showNumbers === 2) { return commaNum(x); } else { @@ -1097,12 +1080,29 @@ window.num = function(x) { } }; +/** + * Returns numbers with comma, e.g. 10000 as "10,000", according to the player's settings + * @param {number} s + * @returns {string} + */ +window.commaNum = function(s) { + // Separated from num because some places in code (like long lists, tables) should never have numbers spelled out, but still benefit from commas + if (!s) { + return "0"; + } + if (State.variables.formatNumbers !== 1) { + return s.toString(); + } else { + return s.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); + } +}; + /** * Returns the number of weeks in a years / months / weeks format * @param {number} weeks * @returns {string} */ -window.yrsMosWks = function(weeks) { +window.years = function(weeks) { let r = ``, years, @@ -1143,21 +1143,21 @@ window.yrsMosWks = function(weeks) { return r; }; +/** + * Returns whether x is undefined + * @param {any} x + * @returns {boolean} + */ +window.def = function(x) { + return typeof x !== "undefined"; +}; + /** * @param {number} s * @returns {string} */ window.cashFormat = function(s) { - if (!s) { - s = 0; - } else { - s = Math.trunc(s); - } - if (s > 0) { - return `¤${num(s)}`; - } else { - return `¤${s.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")}`; - } + return `¤${commaNum(s)}`; }; /** @@ -1169,11 +1169,11 @@ window.repFormat = function(s) { /* if (!s) { s = 0; }*/ if (V.cheatMode === 1 || V.debugMode === 1) { if (s > 0) { - return `<span class="green">${num(Math.round(s * 100) / 100)} rep</span>`; + return `<span class="green">${commaNum(Math.round(s * 100) / 100)} rep</span>`; } else if (s < 0) { - return `<span class="red">${num(Math.round(s * 100) / 100)} rep</span>`; + return `<span class="red">${commaNum(Math.round(s * 100) / 100)} rep</span>`; } else { - return `${num(Math.round(s * 100) / 100)} rep`; + return `${commaNum(Math.round(s * 100) / 100)} rep`; } } else { /* In order to calculate just how much any one category matters so we can show a "fuzzy" symbolic value to the player, we need to know how "busy" reputation was this week. To calculate this, I ADD income to expenses. Why? 100 - 100 and 10000 - 10000 BOTH are 0, but a +50 event matters a lot more in the first case than the second. I exclude overflow from the calculation because it's not a "real" expense for our purposes, and divide by half just to make percentages a bit easier. */ @@ -2676,14 +2676,6 @@ window.upgradeMultiplierTrade = function() { } }; -window.jsNdef = function(input) { - return typeof input === "undefined"; -}; - -window.jsDef = function(input) { - return typeof input !== "undefined"; -}; - /** * Return a career at random that would be suitable for the given slave. * Currently only considers their age diff --git a/src/neighbor/arcologyOpinion.js b/src/neighbor/arcologyOpinion.js index 20289808a202882b0b232e24154c7ff05cfefcec..7bf1ef3da3e3f5cccc1918299bf4738999a45a96 100644 --- a/src/neighbor/arcologyOpinion.js +++ b/src/neighbor/arcologyOpinion.js @@ -173,6 +173,40 @@ window.arcologyOpinion = function(activeArcology, targetArcology) { opinion -= targetArcology.FSPhysicalIdealist; } } + if (activeArcology.FSIntellectualDependency !== "unset") { + if (targetArcology.FSIntellectualDependency !== "unset") { + opinion += activeArcology.FSIntellectualDependency; + opinion += targetArcology.FSIntellectualDependency; + } else if (targetArcology.FSSlaveProfessionalism !== "unset") { + opinion -= activeArcology.FSIntellectualDependency; + opinion -= targetArcology.FSSlaveProfessionalism; + } + } else if (activeArcology.FSSlaveProfessionalism !== "unset") { + if (targetArcology.FSSlaveProfessionalism !== "unset") { + opinion += activeArcology.FSSlaveProfessionalism; + opinion += targetArcology.FSSlaveProfessionalism; + } else if (targetArcology.FSIntellectualDependency !== "unset") { + opinion -= activeArcology.FSSlaveProfessionalism; + opinion -= targetArcology.FSIntellectualDependency; + } + } + if (activeArcology.FSPetiteAdmiration !== "unset") { + if (targetArcology.FSPetiteAdmiration !== "unset") { + opinion += activeArcology.FSPetiteAdmiration; + opinion += targetArcology.FSPetiteAdmiration; + } else if (targetArcology.FSStatuesqueGlorification !== "unset") { + opinion -= activeArcology.FSPetiteAdmiration; + opinion -= targetArcology.FSStatuesqueGlorification; + } + } else if (activeArcology.FSStatuesqueGlorification !== "unset") { + if (targetArcology.FSStatuesqueGlorification !== "unset") { + opinion += activeArcology.FSStatuesqueGlorification; + opinion += targetArcology.FSStatuesqueGlorification; + } else if (targetArcology.FSPetiteAdmiration !== "unset") { + opinion -= activeArcology.FSStatuesqueGlorification; + opinion -= targetArcology.FSPetiteAdmiration; + } + } if (activeArcology.FSChattelReligionist !== "unset") { if (targetArcology.FSChattelReligionist !== "unset") { opinion += activeArcology.FSChattelReligionist; diff --git a/src/npc/descriptions/fButt.tw b/src/npc/descriptions/fButt.tw index 45c8f27112f37a13f8704815788d4ef58f9548de..312cfaba827eca35ccf74ca5df4dffa0d4fba411 100644 --- a/src/npc/descriptions/fButt.tw +++ b/src/npc/descriptions/fButt.tw @@ -99,7 +99,7 @@ You call $him over so you can <<set $activeSlave.anus++>> <<= VCheck.Anal()>> <<elseif $activeSlave.devotion < -20>> - <<if ($PC.dick == 0)>>You don a cruelly large strap-on, and you do it so $he can see it. <</if>>$He tries to refuse you, so you throw $his across the back of the couch next to your desk with $his <<if $seeRace == 1>>$activeSlave.race <</if>>ass in the air. You finger $his anus <<if ($activeSlave.vagina != -1)>>while fucking $his pussy<<elseif ($activeSlave.amp != 1)>>while frotting $his thighs<</if>> for a bit and then switch to $his now-ready anus. $He sobs as you penetrate $his rectum. + <<if ($PC.dick == 0)>>You don a cruelly large strap-on, and you do it so $he can see it. <</if>>$He tries to refuse you, so you throw $him across the back of the couch next to your desk with $his <<if $seeRace == 1>>$activeSlave.race <</if>>ass in the air. You finger $his anus <<if ($activeSlave.vagina != -1)>>while fucking $his pussy<<elseif ($activeSlave.amp != 1)>>while frotting $his thighs<</if>> for a bit and then switch to $his now-ready anus. $He sobs as you penetrate $his rectum. <<if ($activeSlave.dick != 0) && canAchieveErection($activeSlave)>> <<if $activeSlave.prostate == 0>> $He lacks a prostate, denying $him any real pleasure. $His dick stays flaccid as you rape $him. diff --git a/src/npc/fAbuse.tw b/src/npc/fAbuse.tw index 09e08c2941003d32e991e30d8b81c5a7281e328f..8d50a912ddd73296498268600aa5d379a6016afd 100644 --- a/src/npc/fAbuse.tw +++ b/src/npc/fAbuse.tw @@ -340,7 +340,7 @@ from your victim. <</if>> <</if>> -<<if ($dyedSkin.indexOf($activeSlave.skin) != -1)>> +<<if (!setup.dyedSkins.includes($activeSlave.skin))>> $His dyed<<if $seeRace == 1>>, $activeSlave.race<</if>> ass barely shows the spanking. <<elseif (skinToneLevel($activeSlave) < 5)>> $His $activeSlave.skin<<if $seeRace == 1>>, $activeSlave.race<</if>> ass shows the spanking extremely well. diff --git a/src/npc/fFeelings.tw b/src/npc/fFeelings.tw index 205b0ccc9164b72813cd50cc4b4cc16f93b46db4..5788a8742a62e53a9dcb9e2d9500cf42ec93f71a 100644 --- a/src/npc/fFeelings.tw +++ b/src/npc/fFeelings.tw @@ -1350,7 +1350,7 @@ My favorite part of my body i<<s>> <</if>> <<if $arcologies[0].FSPetiteAdmiration >= 10>> <<if !heightPass($activeSlave)>> - <<if FSPetiteAdmirationLaw == 0>> + <<if $arcologies[0].FSPetiteAdmirationLaw == 0>> I know I <<s>>tand out in a bad way from all the other <<s>>lave<<s>> thank<<s>> to my height, but I'll do my be<<s>>t to put it to good u<<s>>e for my better<<s>>. <<else>> I know I'm too tall to be con<<s>>idered hot here, but I <<s>>wear I'll try even harder to keep up. @@ -1361,7 +1361,7 @@ My favorite part of my body i<<s>> <</if>> <<if $arcologies[0].FSStatuesqueGlorification >= 10>> <<if !heightPass($activeSlave)>> - <<if FSPetiteAdmirationLaw == 0>> + <<if $arcologies[0].FSStatuesqueGlorificationLaw == 0>> I know I'm too <<sh>>ort to be paid any attention to, but I'll still try my harde<<s>>t to keep up with my better<<s>>. <<else>> I know I'm too <<sh>>ort to be con<<s>>idered attractive here, but I <<s>>wear I'll do my be<<s>>t to mea<<s>>ure up. diff --git a/src/player/actions/fEmbrace.tw b/src/player/actions/fEmbrace.tw index 697a0c310d567902e47abc43b019c8d495cbf4f4..ae0d5ca3eb36103002405bc36f74c3a28eedc14a 100644 --- a/src/player/actions/fEmbrace.tw +++ b/src/player/actions/fEmbrace.tw @@ -47,7 +47,7 @@ You tell $activeSlave.slaveName to $He pauses, obviously considering whether to resist, but eventually decides to save $his strength to fight more onerous orders, and gives in. Once $he's close, you take a moment to gaze deeply into $his <<= App.Desc.eyeColor($activeSlave)>> eyes. $He stares back, but after a few moments $he loses the contest of wills and looks down. <</if>> -You walk around $him and put your hands around $his abdomen,<<if ($activeSlave.amp != 1)>> to gently pull $him close towards you<<else>> moving close towards $him on your desk<</if>> and then wrap your arms around $his shoulders.<<if ($activeSlave.amp != 1)>> When you press your hips against $hers,<<else>> You use your arms to prop $him up against you,<</if>> <<if ($activeSlave.trust > 20)>>letting $him lean while taking the weight of $his against you<<else>>$he tries to lean away from you, pushing against your arms<</if>>. You lovingly squeeze $him in your long, cradling embrace. +You walk around $him and put your hands around $his abdomen,<<if ($activeSlave.amp != 1)>> to gently pull $him close towards you<<else>> moving close towards $him on your desk<</if>> and then wrap your arms around $his shoulders.<<if ($activeSlave.amp != 1)>> When you press your hips against $hers,<<else>> You use your arms to prop $him up against you,<</if>> <<if ($activeSlave.trust > 20)>>letting $him lean while taking the weight of $him against you<<else>>$he tries to lean away from you, pushing against your arms<</if>>. You lovingly squeeze $him in your long, cradling embrace. <<if ($activeSlave.boobs < 2600)>> <<if ($activeSlave.nipples == "huge")>> diff --git a/src/pregmod/electiveSurgery.tw b/src/pregmod/electiveSurgery.tw index 54699042d0bd7fe0c0bfe9c832ae61e2787ec82b..4734cfda33e7740c34149e4b6eb8328dcf7d2a0c 100644 --- a/src/pregmod/electiveSurgery.tw +++ b/src/pregmod/electiveSurgery.tw @@ -1,9 +1,15 @@ :: Elective Surgery [nobr] -You arrive at your favorite plastic surgeon for your appointment to find them as busy as ever, but you find yourself quickly hurried into an exam room by their cute assistant. She wastes no time in hurrying you into her office, stripping you down, measuring you and making sure you are healthy enough for surgery, all the while not so subtly running her hands across every part of you. "So, what can I help you with?" +<<if $seeDicks == 100>> + <<setNonlocalPronouns 100>> +<<else>> + <<setNonlocalPronouns 0>> +<</if>> + +You arrive at your favorite plastic surgeon for your appointment to find them as busy as ever, but you find yourself quickly hurried into an exam room by their cute assistant. _HeU wastes no time in hurrying you into _hisU office, stripping you down, measuring you and making sure you are healthy enough for surgery, all the while not so subtly running _hisU hands across every part of you. "So, what can I help you with?" <br><br> -"You sure you want to mess with that lovely face?" she teases, caressing your cheek. "@@.yellowgreen;<<print cashFormat(5000)>>.@@ Also wouldn't recommend changing your eyes, face shape or skin color; some security systems get real uppity over things like that. Though I s'pose race and hair can fall under that as well, but hey, we don't handle racial surgery and this isn't a hair salon, so nothing to worry about, right? Yes, I'm certain your systems will recognize you after we finish working on you — give us some credit." +"You sure you want to mess with that lovely face?" _heU teases, caressing your cheek. "@@.yellowgreen;<<print cashFormat(5000)>>.@@ Also wouldn't recommend changing your eyes, face shape or skin color; some security systems get real uppity over things like that. Though I s'pose race and hair can fall under that as well, but hey, we don't handle racial surgery and this isn't a hair salon, so nothing to worry about, right? Yes, I'm certain your systems will recognize you after we finish working on you — give us some credit." <br> You're @@.orange;$PC.actualAge years old.@@ <<if $PC.actualAge >= 65>> @@ -53,7 +59,7 @@ You're @@.orange;$PC.actualAge years old.@@ <</if>> <br><br> -"Your skin is beautiful as is, but we can change it if you want." She says, pulling a large tanning bed like cart out of a closet. "@@.yellowgreen;<<print cashFormat(2000)>>.@@ This thing just came out of testing. I assure you it doesn't cause cancer anymore! But still, mind your security systems. We won't be held accountable if you get arrested for trying to enter your penthouse." She looks a little worrisome, "Now, there are some side effects, and we will have to keep you under special care for a few days. It's similar to a severe sunburn, across your entire body, all of it, even down there. Now don't give me that look, we have special ointments to soothe the pain and have a little fun with." She tosses you a wink alongside a hesitant giggle. "Now all your typical skin tones are preprogrammed into it, and with a couple button presses... There! I unlocked the option for custom hues. Now this thing is going to recolor your skin pigment permanently, so you might want to take it seriously. It'll all be on you if I choke with laughter<<if $PC.dick == 1>> sucking on your big polka-dotted cock<<else>> going down on your polka-dotted pussy<</if>>!" +"Your skin is beautiful as is, but we can change it if you want," _heU says, pulling a large tanning bed-like cart out of a closet. "@@.yellowgreen;<<print cashFormat(2000)>>.@@ This thing just came out of testing. I assure you it doesn't cause cancer anymore! But still, mind your security systems. We won't be held accountable if you get arrested for trying to enter your penthouse." _HeU looks a little worrisome, "Now, there are some side effects, and we will have to keep you under special care for a few days. It's similar to a severe sunburn, across your entire body, all of it, even down there. Now don't give me that look, we have special ointments to soothe the pain and have a little fun with." _HeU tosses you a wink alongside a hesitant giggle. "Now all your typical skin tones are preprogrammed into it, and with a couple button presses... There! I unlocked the option for custom hues. Now this thing is going to recolor your skin pigment permanently, so you might want to take it seriously. It'll all be on you if I choke with laughter<<if $PC.dick == 1>> sucking on your big polka-dotted cock<<else>> going down on your polka-dotted pussy<</if>>!" <br> You have @@.orange;$PC.skin skin.@@<<if $PC.skin != $PC.origSkin>> Your original skin tone was $PC.origSkin.<</if>> <br> @@ -138,7 +144,7 @@ You have @@.orange;$PC.skin skin.@@<<if $PC.skin != $PC.origSkin>> Your original [[Custom Color|PC Skin Workaround][cashX(forceNeg(2000), "PCmedical"), $surgeryType = "skinTone"]] -<br><br>"Maybe some breast work? I assure you they are lovely." She says as she brushes the back of your head with her own pair. "@@.yellowgreen;<<print cashFormat(5000)>>@@ for a reduction, @@.yellowgreen;<<print cashFormat(10000)>>@@ for implants, that includes size ups, and @@.yellowgreen;<<print cashFormat(15000)>>@@ for additional breast tissue. That last one might as well be real!<<if $PC.boobsBonus <= 0>> With a little work, we can even remove a small amount of fat from your breasts to bring your cup size down without damaging their inner workings. Though we'll have to build them up some before we can stick reasonable implants into you.<</if>>"<br> +<br><br>"Maybe some breast work? I assure you they are lovely," _heU says as _heU brushes the back of your head with _hisU own pair. "@@.yellowgreen;<<print cashFormat(5000)>>@@ for a reduction, @@.yellowgreen;<<print cashFormat(10000)>>@@ for implants, that includes size ups, and @@.yellowgreen;<<print cashFormat(15000)>>@@ for additional breast tissue. That last one might as well be real!<<if $PC.boobsBonus <= 0>> With a little work, we can even remove a small amount of fat from your breasts to bring your cup size down without damaging their inner workings. Though we'll have to build them up some before we can stick reasonable implants into you.<</if>>"<br> <<if $PC.boobsBonus > 2>> <<if $PC.boobsImplant == 1>> You have a @@.orange;pair of round H-cup breasts;@@ they are very obviously implants. @@ -184,82 +190,82 @@ You have @@.orange;$PC.skin skin.@@<<if $PC.skin != $PC.origSkin>> Your original <</if>> <<if $PC.belly >= 100 && $PC.preg > 3>> - <br><br>She darts for your middle. + <br><br>_HeU darts for your middle. <<if $PC.belly >= 120000>> - "My god! What happened to you? You might now want to hit the fertility drugs so hard next time. Then again, I don't think you'll see us complaining when you come in for a tummy tuck to get everything back where it used to be." She says with a wink as she uses both hands to massage your + "My god! What happened to you? You might now want to hit the fertility drugs so hard next time. Then again, I don't think you'll see us complaining when you come in for a tummy tuck to get everything back where it used to be," _heU says with a wink as _heU uses both hands to massage your <<if $PC.preg > 40>>overdue octuplet-bursting belly, enjoying the kicks from your child<<if $PC.pregType > 1>>ren<</if>> within. "If you go into labor, we have everything you'll need, so don't worry." <<else>>over-crowded belly. <</if>> <br> <<elseif $PC.belly >= 110000>> - "My god! What happened to you? You might now want to hit the fertility drugs so hard next time. Then again, I don't think you'll see us complaining when you come in for a tummy tuck to get everything back where it used to be." She says with a wink as she uses both hands to massage your + "My god! What happened to you? You might now want to hit the fertility drugs so hard next time. Then again, I don't think you'll see us complaining when you come in for a tummy tuck to get everything back where it used to be," _heU says with a wink as _heU uses both hands to massage your <<if $PC.preg > 40>>overdue septuplet-stuffed belly, enjoying the kicks from your child<<if $PC.pregType > 1>>ren<</if>> within. "If you go into labor, we have everything you'll need, so don't worry." <<else>>over-crowded belly. <</if>> <br> <<elseif $PC.belly >= 95000>> - Oh wow! It's like a party in there!" She says as she uses both hands to massage your + Oh wow! It's like a party in there!" _heU says as _heU uses both hands to massage your <<if $PC.preg > 40>>overdue sextuplet-stuffed belly, enjoying the kicks from your child<<if $PC.pregType > 1>>ren<</if>> within. "If you go into labor, we have everything you'll need, so don't worry." <<else>>crowded belly. <</if>> <br> <<elseif $PC.belly >= 80000>> - You must feel so full, like all the time. What's it feel like? Do they every calm down?" She says as she uses both hands to massage your + You must feel so full, like all the time. What's it feel like? Do they every calm down?" _heU says as _heU uses both hands to massage your <<if $PC.preg > 40>>overdue quadruplet-filled belly, enjoying the kicks from your child<<if $PC.pregType > 1>>ren<</if>> within. "If you go into labor, we have everything you'll need, so don't worry." <<else>>crowded belly. <</if>> <br> <<elseif $PC.belly >= 64000>> - Oh wow! You're immense! I almost can't wrap my arms around it!" She says as she uses both hands to massage your + Oh wow! You're immense! I almost can't wrap my arms around it!" _heU says as _heU uses both hands to massage your <<if $PC.preg > 40>>overdue quadruplet-filled belly, enjoying the kicks from your child<<if $PC.pregType > 1>>ren<</if>> within. "If you go into labor, we have everything you'll need, so don't worry." <<else>>crowded belly. <</if>> <br> <<elseif $PC.belly >= 48000>> - "Oh wow! You're gigantic! Are you sure you want to have surgery in this state? Things start to get complicated when you're this pregnant." She says as she uses both hands to massage your + "Oh wow! You're gigantic! Are you sure you want to have surgery in this state? Things start to get complicated when you're this pregnant," _heU says as _heU uses both hands to massage your <<if $PC.preg > 40>>overdue triplet-filled belly, enjoying the kicks from your child<<if $PC.pregType > 1>>ren<</if>> within. "If you go into labor, we have everything you'll need, so don't worry." <<else>>crowded belly. <</if>> <br> <<elseif $PC.belly >= 32000>> - "My word, are you sure you want to have surgery in this state? You're gigantic! Plus things start to get complicated when you're this pregnant." She says as she uses both hands to massage your + "My word, are you sure you want to have surgery in this state? You're gigantic! Plus things start to get complicated when you're this pregnant," _heU says as _heU uses both hands to massage your <<if $PC.preg > 40>>overdue twin-filled belly, enjoying the kicks from your child<<if $PC.pregType > 1>>ren<</if>> within. "If you go into labor, we have everything you'll need, so don't worry." <<else>>crowded belly. <</if>> <br> <<elseif $PC.belly >= 16000>> - "My word, are you sure you want to have surgery in this state? You're giant!" She says as she uses both hands to massage your + "My word, are you sure you want to have surgery in this state? You're giant!" _heU says as _heU uses both hands to massage your <<if $PC.preg > 40>>overdue belly, enjoying the kicks from your child<<if $PC.pregType > 1>>ren<</if>> within. "If you go into labor, we have everything you'll need, so don't worry." <<else>>belly, taking note of the extra occupants. <</if>> <br> <<elseif $PC.belly >= 14000>> - "Wow, are you going to be ok? That looks really heavy." She says as she uses both hands to grope your massive belly, paying extra attention to your navel. "Are you sure you don't want to take a seat?"<br> + "Wow, are you going to be ok? That looks really heavy," _heU says as _heU uses both hands to grope your massive belly, paying extra attention to your navel. "Are you sure you don't want to take a seat?"<br> <<elseif $PC.belly >= 12000>> - "You're huge! Look at that adorable navel!" She says as she uses both hands to grope your huge belly, paying extra attention to your navel.<br> + "You're huge! Look at that adorable navel!" _heU says as _heU uses both hands to grope your huge belly, paying extra attention to your navel.<br> <<elseif $PC.belly >= 10000>> - "Look how big you are!" she says as she uses both hands to grope your huge belly.<br> + "Look how big you are!" _heU says as _heU uses both hands to grope your huge belly.<br> <<elseif $PC.belly >= 7000>> - "You're getting so big!" she says as she uses both hands to massage your big pregnant belly.<br> + "You're getting so big!" _heU says as _heU uses both hands to massage your big pregnant belly.<br> <<elseif $PC.belly >= 5000>> - "You're getting so big!" she says as she uses both hands to massage your pregnant belly.<br> + "You're getting so big!" _heU says as _heU uses both hands to massage your pregnant belly.<br> <<elseif $PC.belly >= 3000>> - "Looks like fun!" she says as she uses both hands to rub your pregnant belly.<br> + "Looks like fun!" _heU says as _heU uses both hands to rub your pregnant belly.<br> <<elseif $PC.belly >= 1500>> - "Awwww, you're getting soo big!" she says as she rubs your pregnant belly.<br> + "Awwww, you're getting soo big!" _heU says as _heU rubs your pregnant belly.<br> <<elseif $PC.belly >= 500>> - "Awwww, you have a bun in the oven! That's so adorable; didn't think you the type." She says as she pats your rounded middle.<br> + "Awwww, you have a bun in the oven! That's so adorable; didn't think you the type," _heU says as _heU pats your rounded middle.<br> <<elseif $PC.belly >= 300>> - "Awwww, you have a bun in the oven! That's so adorable; didn't think you the type," she says as she rubs your slightly rounded middle.<br> + "Awwww, you have a bun in the oven! That's so adorable; didn't think you the type," _heU says as _heU rubs your slightly rounded middle.<br> <<elseif $PC.belly >= 100>> - "Awwww, you have a bun in the oven! That's so adorable; didn't think you the type." She says as she rubs your slightly swollen belly. No denying it now.<br> + "Awwww, you have a bun in the oven! That's so adorable; didn't think you the type," _heU says as _heU rubs your slightly swollen belly. No denying it now.<br> <</if>> <<elseif $PC.belly >= 100 && $PC.preg < 1>> - She pinches your belly. "How about a tummy tuck? We can smooth this right out, cheaply too, @@.yellowgreen;<<print cashFormat(500)>>.@@" She lets your saggy middle flop back to its usual drooping state. + _HeU pinches your belly. "How about a tummy tuck? We can smooth this right out, cheaply too, @@.yellowgreen;<<print cashFormat(500)>>.@@" _HeU lets your saggy middle flop back to its usual drooping state. [[Firm up your stomach|PC Surgery Degradation][$PC.belly = 0, cashX(forceNeg(500), "PCmedical"), $surgeryType = "tummyTuck"]] <</if>> -<br><br>"How about a new butt?" She says as she wiggles her own at you. "Same prices as the breasts."<br> +<br><br>"How about a new butt?" _heU says as _heU wiggles _hisU own at you. "Same prices as the breasts."<br> <<if $PC.butt > 2>> <<if $PC.buttImplant == 1>> You have an @@.orange;enormous, round, hard butt;@@ it is very obviously a pair of huge implants. @@ -290,11 +296,11 @@ You have @@.orange;$PC.skin skin.@@<<if $PC.skin != $PC.origSkin>> Your original <</if>> <<if $PC.dick == 1>> - <br><br>"We could add gel around your testes to make your balls look bigger. Would also dampen any impacts to them as well, if that is anything to consider." She says, running a finger down the length of your shaft. "@@.yellowgreen;<<print cashFormat(7500)>>@@ for draining and @@.yellowgreen;<<print cashFormat(15000)>>@@ for filling, it's not the most simple procedure, you know? Anyway, they'll be very obvious, if that turns you on." + <br><br>"We could add gel around your testes to make your balls look bigger. Would also dampen any impacts to them as well, if that is anything to consider," _heU says, running a finger down the length of your shaft. "@@.yellowgreen;<<print cashFormat(7500)>>@@ for draining and @@.yellowgreen;<<print cashFormat(15000)>>@@ for filling, it's not the most simple procedure, you know? Anyway, they'll be very obvious, if that turns you on." <<if $AGrowth == 2>> - She takes another look at you before offering another option. "Of course, if you want bigger balls in a <i>functional</i> sense, we can do that too. The doctor's research in advanced targeted growth hormones has shown promising results in slaves, and he's been able to use them successfully on a few citizen patients so far. A direct injection of hormone gel, and your testes and prostate will grow on their own. Unlike the cosmetic gel, there's no reversing this treatment. It's expensive too, for the high quality drugs you want; @@.yellowgreen;<<print cashFormat(15000)>>@@ for one round of therapy. It'll cost @@.yellowgreen;<<print cashFormat(20000)>>@@ if you want hormone treatment and a gel adjustment at the same time.<br> + _HeU takes another look at you before offering another option. "Of course, if you want bigger balls in a <i>functional</i> sense, we can do that too. The doctor's research in advanced targeted growth hormones has shown promising results in slaves, and he's been able to use them successfully on a few citizen patients so far. A direct injection of hormone gel, and your testes and prostate will grow on their own. Unlike the cosmetic gel, there's no reversing this treatment. It's expensive too, for the high quality drugs you want; @@.yellowgreen;<<print cashFormat(15000)>>@@ for one round of therapy. It'll cost @@.yellowgreen;<<print cashFormat(20000)>>@@ if you want hormone treatment and a gel adjustment at the same time.<br> <<else>> - She takes another look at you before continuing. "Of course, you seem like the type that might want bigger balls in a <i>functional</i> sense. The doctor's been working on a treatment using advanced targeted growth hormones, but it isn't quite ready yet. Might be something to keep in mind before you decide on a gel injection."<br> + _HeU takes another look at you before continuing. "Of course, you seem like the type that might want bigger balls in a <i>functional</i> sense. The doctor's been working on a treatment using advanced targeted growth hormones, but it isn't quite ready yet. Might be something to keep in mind before you decide on a gel injection."<br> <</if>> <<if $PC.balls > 2 && $PC.ballsImplant > 3>> You have a @@.orange;monstrous, massive pair of balls@@ roughly the size of small watermelons; it's impossible to sit normally, so you've had to buy special chairs, you've given up on wearing pants, and they're so obvious that people probably assume they're fake, but every slave you fuck gets a distended belly from all the cum you pump into them, and you love it. @@ -347,7 +353,7 @@ You have @@.orange;$PC.skin skin.@@<<if $PC.skin != $PC.origSkin>> Your original <<if $PC.vagina == 1 && $PC.newVag == 0 && ($PC.births > 2 || $PC.career == "servant" || $PC.career == "escort")>> <br><br> - "Looking a little loose down there, I can fix that for you. Get you nice and tight again. Oh, and our pussies are guaranteed to not lose their tightness or your money back! @@.yellowgreen;<<print cashFormat(15000)>>@@ for a brand new vagina." + "Looking a little loose down there; I can fix that for you. Get you nice and tight again. Oh, and our pussies are guaranteed to not lose their tightness, or your money back! @@.yellowgreen;<<print cashFormat(15000)>>@@ for a brand new vagina." <br> [[Get a tighter vagina|PC Surgery Degradation][$PC.newVag = 1, cashX(forceNeg(15000), "PCmedical"), $surgeryType = "tightPussy"]] <</if>> @@ -362,7 +368,7 @@ You have @@.orange;$PC.skin skin.@@<<if $PC.skin != $PC.origSkin>> Your original "Now, if what you are looking for is sex reassignment surgery, that's going to be more complicated. Personally I think you are fine the way you are, but if you insist on paying me, I won't say no to it. We'll need to take a DNA sample to clone the required organs, and that will take some time to complete, so tell me early if this is what you really want. I've had a few patients seeking a working set of both sexes, so if that gets you off, it is an option. As for prices, @@.yellowgreen;<<print cashFormat(50000)>>@@ for a sex swap, @@.yellowgreen;<<print cashFormat(150000)>>@@ to be a fully functional herm, oh and @@.red;breasts are not included unless you undergo a full body remodeling.@@ You'll have to set up another appointment for that, however. Oh, and I guess @@.yellowgreen;<<print cashFormat(25000)>>@@ is fair for having a sex organ removed, if you have both. It's a very invasive procedure, as we will be near completely remodeling your body. I assure you, we do such fantastic work that no one will know you weren't naturally born that way! Oh, and due to the extent of the surgery, we will not perform the procedure if you are pregnant; please clean yourself out before you arrive." <br> <<if $PC.preg > 0>> - She pokes your belly. "You're pregnant. What did I tell you?" + _HeU pokes your belly. "You're pregnant. What did I tell you?" <<else>> <<if $PC.dick == 1 && $PC.vagina == 1>> You have working @@.orange;male and female reproductive organs@@ and a @@.orange;<<if $PC.title > 0>>masculine<<else>>feminine<</if>> appearance.@@ "We'll store some of your sperm for you, should you decide to lose your maleness, and have it shipped to your arcology. Who you decide to use it on, well... That's up to you!" diff --git a/src/pregmod/fSlaveSlaveDickConsummate.tw b/src/pregmod/fSlaveSlaveDickConsummate.tw index 0f48af406a3d5e6689a35899bd9216a4b12e79b1..738549855f8a6edb9fb049309aa57965bb18d103 100644 --- a/src/pregmod/fSlaveSlaveDickConsummate.tw +++ b/src/pregmod/fSlaveSlaveDickConsummate.tw @@ -48,11 +48,11 @@ You take a look at the bound cock toy. <<if ($activeSlave.amp == 1)>> $His limbless torso lies on the bed, ready for $slaverapistx.slaveName. <<elseif tooBigBelly($activeSlave)>> - $His huge belly will limit the possible positions for $slaverapistx.slaveName to take $him. + $His huge belly will limit the number of possible positions for $slaverapistx.slaveName to take $him in. <<elseif tooBigBreasts($activeSlave)>> The weight of $his tits pins $him helplessly in place. <<elseif tooBigButt($activeSlave)>> - $His huge ass pushes $his pelvis further up, making it look as if $he's trying to fuck air. + $His huge ass pushes $his pelvis further up, making it look as if $he's trying to fuck the air. <<elseif tooBigDick($activeSlave)>> $His huge cock is clearly going to be a challenge. <<elseif tooBigBalls($activeSlave)>> diff --git a/src/pregmod/fSlaveSlaveVagConsummate.tw b/src/pregmod/fSlaveSlaveVagConsummate.tw index 840f46edf0dac7307e445b4fddd5ac73f3d4e8c8..aa741a4e22ba9f629d7ac91cbf122764035c1e11 100644 --- a/src/pregmod/fSlaveSlaveVagConsummate.tw +++ b/src/pregmod/fSlaveSlaveVagConsummate.tw @@ -183,7 +183,7 @@ Next, you see to $activeSlave.slaveName. <<elseif tooBigButt($activeSlave)>> You set $him up for $slaverapistx.slaveName, face-down so the weight of $his giant ass pins $him helplessly in place and gives $slaverapistx.slaveName a lovely cushion to thrust against. <<elseif tooBigDick($activeSlave)>> - You set $him up for $slaverapistx.slaveName, face up so $he is pinned under the weight of $his giant cock. + You set $him up for $slaverapistx.slaveName, face-up so $he is pinned under the weight of $his giant cock. <<elseif tooBigBalls($activeSlave)>> You set $him up for $slaverapistx.slaveName, face-down so the weight of $his giant balls anchor $him helplessly in place. <<elseif $activeSlave.devotion < -20>> diff --git a/src/pregmod/managePersonalAffairs.tw b/src/pregmod/managePersonalAffairs.tw index 80a589b3a40767b9a26baaae8a829a12a023d5a8..87ccd5ef4323b50020dd5fff2319a80c6f0cd05a 100644 --- a/src/pregmod/managePersonalAffairs.tw +++ b/src/pregmod/managePersonalAffairs.tw @@ -605,13 +605,8 @@ __Drugs__ You are not on any stamina enhancers. [[More stamina means more sex|Manage Personal Affairs][$PC.staminaPills = 1]] <</if>> -<br><br> -__Other Personal Business__ -<<if $rep >= 10000>> - <br> [[Visit the Black Market|The Black Market]] -<<elseif $rep > 7500>> - <br> You lack the reputation to be invited to the underground Black Market. -<</if>> +/*<br><br> +__Other Personal Business__*/ <<if $propOutcome == 1 && $arcologies[0].FSRestart != "unset">> <br><br> diff --git a/src/pregmod/newChildIntro.tw b/src/pregmod/newChildIntro.tw index 7c166cfde088fe90a15e7376474f0a08916a64b4..0f19f69654a0124b344627f83c869cb87829a308 100644 --- a/src/pregmod/newChildIntro.tw +++ b/src/pregmod/newChildIntro.tw @@ -7,7 +7,7 @@ /* use the secondary location if the primary brand target won't work for this slave */ <<set _brandTarget = $brandTarget.primary>> -<<if (!$activeSlave.dick && $brandTarget.primary == "penis") +<<if ($activeSlave.dick == 0 && $brandTarget.primary == "penis") || ($activeSlave.earShape != "none" && $brandTarget.primary == "ear") || ($activeSlave.amp != 0 && ($brandTarget.primary == "thigh" || $brandTarget.primary == "calve" || $brandTarget.primary == "ankle" || $brandTarget.primary == "foot")) || ($activeSlave.balls == 0 && $activeSlave.scrotum == 0 && $brandTarget.primary == "testicle")>> @@ -948,7 +948,7 @@ You slowly strip down, gauging $his reactions to your show, until you are fully <<if $PC.preg >= 24>> <br><<link "Permit $him to explore your pregnancy">> <<replace "#result">> - You beckon the curious $girl to your weighty pregnancy and as $he approaches push it directly into $his <<if $activeSlave.height > 175>>stomach<<elseif $activeSlave.height < 155>>face<<else>>chest<</if>> until $he has no choice but to wrap $his arms around it. $He happily runs $his hands across your belly, cooing with delight at the tautness and warmth. $He jumps back with a gasp the first time $he is met with a kick from within you, but @@.hotpink;giggles pleasantly@@ as you help $him back to $his feet. $He spends a lot of time comparing your belly to $his own; $he might not be a pregnancy fetishist, but it seems likely $he may become one. + You beckon the curious $girl to your weighty pregnancy and, as $he approaches, push it directly into $his <<if $activeSlave.height > 175>>stomach<<elseif $activeSlave.height < 155>>face<<else>>chest<</if>> until $he has no choice but to wrap $his arms around it. $He happily runs $his hands across your belly, cooing with delight at the tautness and warmth. $He jumps back with a gasp the first time $he is met with a kick from within you, but @@.hotpink;giggles pleasantly@@ as you help $him back to $his feet. $He spends a lot of time comparing your belly to $his own; $he might not be a pregnancy fetishist, but it seems likely $he may become one. <<set $activeSlave.devotion += 5>> <<if random(1,100) > 40 && $activeSlave.fetish == "none">> <<set $activeSlave.fetish = "pregnancy">> @@ -959,7 +959,7 @@ You slowly strip down, gauging $his reactions to your show, until you are fully <<if $PC.pregMood == 2>> <br><<link "Teach $him how to satisfy a pregnant _womanP">> <<replace "#result">> - You beckon the curious $girl to your weighty pregnancy and as $he approaches push it directly into $his <<if $activeSlave.height > 175>>stomach<<elseif $activeSlave.height < 155>>face<<else>>chest<</if>> knocking $him to the ground. <<if canPenetrate($activeSlave)>>A simple stroke is all it takes to get $him hard, so you quickly mount and begin riding $him. $He @@.hotpink;happily@@ runs $his hands across the underside of your belly as $he gets into the rhythm of thrusting up into you. After an unsatisfyingly short amount of time, $he cums deep in you<<else>>You quickly mount $his face and force $him to eat you out. $He @@.hotpink;happily@@ runs $his hands across the underside your belly as $he gets into the rhythm of penetrating you. It doesn't take long for the poor $girl to be out of breath and panicking<</if>>. Sighing, you pull the spent $girl upright so $he can fondle your belly and hopefully recover enough for a second go. $He spends a lot of time comparing your belly to $his own, $he might not be a pregnancy fetishist, but it seems likely $he may become one. + You beckon the curious $girl to your weighty pregnancy and, as $he approaches, push it directly into $his <<if $activeSlave.height > 175>>stomach<<elseif $activeSlave.height < 155>>face<<else>>chest<</if>> knocking $him to the ground. <<if canPenetrate($activeSlave)>>A simple stroke is all it takes to get $him hard, so you quickly mount and begin riding $him. $He @@.hotpink;happily@@ runs $his hands across the underside of your belly as $he gets into the rhythm of thrusting up into you. After an unsatisfyingly short amount of time, $he cums deep in you<<else>>You quickly mount $his face and force $him to eat you out. $He @@.hotpink;happily@@ runs $his hands across the underside your belly as $he gets into the rhythm of penetrating you. It doesn't take long for the poor $girl to be out of breath and panicking<</if>>. Sighing, you pull the spent $girl upright so $he can fondle your belly and hopefully recover enough for a second go. $He spends a lot of time comparing your belly to $his own, $he might not be a pregnancy fetishist, but it seems likely $he may become one. <<set $activeSlave.devotion += 5>> <<if canPenetrate($activeSlave)>> <<set $activeSlave.counter.penetrative++, $penetrativeTotal++>> @@ -975,7 +975,7 @@ You slowly strip down, gauging $his reactions to your show, until you are fully <<elseif $PC.pregMood == 1>> <br><<link "Nurse $him">> <<replace "#result">> - You beckon the curious $girl to your weighty pregnancy and as $he approaches push it directly into $his <<if $activeSlave.height > 175>>stomach<<elseif $activeSlave.height < 155>>face<<else>>chest<</if>> until $he has no choice but to wrap $his arms around it. $He happily runs $his hands across your belly, cooing with delight at the tautness and warmth. $He jumps back with a gasp the first time $he is met with a kick from within you, but @@.hotpink;giggles pleasantly@@ as you help $him back to $his feet and pull $him into an embrace, guiding $him to the couch. You tweak one of your nipples, encouraging your milk to flow and enticing <<if $activeSlave.mother == -1>>your daughter to suckle from $his mother<<else>>the $girl to suckle from your aching breasts<</if>>. $He eagerly complies, drinking deeply as you stroke $his head.<<if canPenetrate($activeSlave)>> Before long, you feel something hard prodding your leg; it seems someone is getting turned on by all this. As you shift $him to your other breast, you reach down and begin stroking $his erection. You can feel $his gulps become erratic as $his cock begins throbbing in your grip. $He moans lewdly as $he cums, but makes sure not to miss a single drop of your milk in the process.<</if>> Once $he drains you of your supply, you @@.mediumaquamarine;cuddle up to $him@@ and allow $him to caress your body. $He spends a lot of time comparing your belly to $his own, $he might not be a pregnancy fetishist, but it seems likely $he may become one. + You beckon the curious $girl to your weighty pregnancy and, as $he approaches, push it directly into $his <<if $activeSlave.height > 175>>stomach<<elseif $activeSlave.height < 155>>face<<else>>chest<</if>> until $he has no choice but to wrap $his arms around it. $He happily runs $his hands across your belly, cooing with delight at the tautness and warmth. $He jumps back with a gasp the first time $he is met with a kick from within you, but @@.hotpink;giggles pleasantly@@ as you help $him back to $his feet and pull $him into an embrace, guiding $him to the couch. You tweak one of your nipples, encouraging your milk to flow and enticing <<if $activeSlave.mother == -1>>your daughter to suckle from $his mother<<else>>the $girl to suckle from your aching breasts<</if>>. $He eagerly complies, drinking deeply as you stroke $his head.<<if canPenetrate($activeSlave)>> Before long, you feel something hard prodding your leg; it seems someone is getting turned on by all this. As you shift $him to your other breast, you reach down and begin stroking $his erection. You can feel $his gulps become erratic as $his cock begins throbbing in your grip. $He moans lewdly as $he cums, but makes sure not to miss a single drop of your milk in the process.<</if>> Once $he drains you of your supply, you @@.mediumaquamarine;cuddle up to $him@@ and allow $him to caress your body. $He spends a lot of time comparing your belly to $his own, $he might not be a pregnancy fetishist, but it seems likely $he may become one. <<set $activeSlave.devotion += 15, $activeSlave.trust += 15>> <<if random(1,100) > 40 && $activeSlave.fetish == "none">> <<set $activeSlave.fetish = "pregnancy">> diff --git a/src/pregmod/pcSurgeryDegradation.tw b/src/pregmod/pcSurgeryDegradation.tw new file mode 100644 index 0000000000000000000000000000000000000000..4e26c5f8c37f1d3b824c0b7aafafe45ce5b3a60d --- /dev/null +++ b/src/pregmod/pcSurgeryDegradation.tw @@ -0,0 +1,258 @@ +:: PC Surgery Degradation [nobr] + +<<set $nextButton = "Continue", $nextLink = "Manage Personal Affairs">> +<<if $seeDicks == 100>> + <<setNonlocalPronouns 100>> +<<else>> + <<setNonlocalPronouns 0>> +<</if>> + +<<switch $surgeryType>> + +<<case "skinTone">> + After a few hours, you awaken in the recovery wing to find every <<if $showInches == 2>>inch<<else>>centimeter<</if>> of your body burning; though from what you did manage to see, you are, in fact, $PC.skin now. <<if !["pure white", "ivory", "white", "extremely pale", "very pale", "pale", "extremely fair", "very fair", "fair", "light", "light olive", "tan", "olive", "bronze", "dark olive", "dark", "light beige", "beige", "dark beige", "light brown", "brown", "dark brown", "black", "ebony", "pure black"].includes($PC.skin)>>The surgeon's assistant immediately covers _hisU mouth to hide _hisU giggle a the sight of you<<else>>The surgeon's assistant carefully seats _himselfU besides you with a large drum of cream<</if>>. "This stuff is specially formulated to soothe burns like this and should have you feeling much better after a few applications.<<if $PC.dick == 1>> Now please, try not to get hard while I apply this. It will hurt like hell.<</if>>" _HeU spends the next half hour gingerly applying the cream across every <<if $showInches == 2>>inch<<else>>centimeter<</if>> of your body. _HisU touch is so soft, it is hard to not get aroused, and as your body tenses, a wave of pain washes over you. "Calm down, and take a few applications first. Though I forgot to tell you, your erogenous zones were especially affected and will need plenty of extra attention." _HeU winks at you. You doubt the validity of that claim but understand exactly what _heU means by it. The next few days will be very enjoyable, but for now, you opt to stay perfectly still and will the cream to work faster. + +<<case "restoreFace">> + After a few hours, you awaken in the recovery wing with a face both sore and somewhat numb. <<if $PC.belly >= 10000 || $PC.boobsBonus == 3>>Struggling to sit<<else>>Sitting<</if>> up, you catch sight of yourself in the mirror-covered wall across from your bed. Your face is back to the way it was before you had it altered (not counting any additional years added to it) and looking just as good as you remember. You attempt to smile at yourself, only to find your face doesn't want to comply; guess the drugs haven't completely worn off yet. You lie back down to sleep off the rest of the anesthesia before returning to your arcology. + +<<case "ageDown">> + After a few hours, you awaken in the recovery wing with a face both sore and somewhat numb. Sitting up, you catch sight of yourself in the mirror-covered wall across from your bed. An oddly familiar face is staring back at you; it takes you a moment to register in your groggy state that it isn't your past self but rather the result of the age reduction surgery. You attempt to smile at yourself, only to find your face doesn't want to comply; guess the drugs haven't completely worn off yet. You lie back down to sleep off the rest of the anesthesia before returning to your arcology. + <<PCAgeImplantAdjustmentDown>> + +<<case "ageUp">> + After a few hours, you awaken in the recovery wing with a face both sore and somewhat numb. Sitting up, you catch sight of yourself in the mirror-covered wall across from your bed. An oddly familiar face is staring back at you; it takes you a moment to register in your groggy state that you are in fact looking at the result of the age increasing surgery. You attempt to smile at yourself, only to find your face doesn't want to comply; guess the drugs haven't completely worn off yet. You lie back down to sleep off the rest of the anesthesia before returning to your arcology. + <<PCAgeImplantAdjustmentUp>> + +<<case "breastReductionImplant">> + After a few hours, you awaken in the recovery wing with a sore chest. <<if $PC.belly >= 10000>>Struggling to sit<<else>>Sitting<</if>> up, you immediately notice how much lighter your breasts are. Pulling the covers off yourself, you observe your implant free boobs in the mirror-covered wall across from your bed. "So do you like them?", asks the surgeon's assistant, seating _himselfU behind you and wrapping _hisU hands around to your natural breasts. "We made sure to tighten them up a bit, get rid of that sag from not having the silicone pouch in them anymore." _HeU begins groping your breasts, feeling for any oddities. "I know you're still a little sore, but bear with it." _HeU moves on to your nipples and begins teasing them. <<if $PC.lactation > 0>>_HeU lets out a surprised squeak when a gush of milk escapes your breasts and a moan escapes your lips. "<<if $PC.pregKnown == 1>>Should have expected that with the pregnancy and all.<<else>>You did recently have a child didn't you? Or have you just been enjoying your nipples too much?<</if>> Either way, this is a good thing. Your breasts work."<</if>> You can't help but moan under your building arousal as _heU massages and teases your breasts. "Enjoying yourself are we? Let me finish you off." _HeU sneaks a hand down to your <<if $PC.dick == 1>>stiff prick and begins stroking its length, quickly bringing you to orgasm and relieving you of your built up tension.<<else>>stiff clit and begins teasing it as well, quickly bringing you to orgasm and relieving you of your built up tension.<</if>> _HeU states, while licking _hisU fingers, "I always did enjoy the way you taste. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + +<<case "breastShrinkage">> + After a few hours, you awaken in the recovery wing with a sore chest. <<if $PC.belly >= 10000>>Struggling to sit<<else>>Sitting<</if>> up, you immediately notice how much lighter your breasts are. Pulling the covers off yourself, you observe your smaller <<if $PC.boobsBonus == 2>>G-cup<<elseif $PC.boobsBonus == 1>>F-cup<<elseif $PC.boobsBonus == -1>>D-cup<<elseif $PC.boobsBonus == -2>>C-cup<<elseif $PC.boobsBonus == -3>>B-cup<<else>>DD-cup<</if>> boobs in the mirror-covered wall across from your bed. "So do you like them?", asks the surgeon's assistant, seating _himselfU behind you and wrapping _hisU hands around to your shrunken breasts. "We made sure to tighten them up a bit, get rid of that sagginess from weight and the mass removed." _HeU begins groping your breasts, feeling for any oddities. "I know you're still a little sore, but bear with it." _HeU moves on to your nipples and begins teasing them. <<if $PC.lactation > 0>>_HeU lets out a surprised squeak when a gush of milk escapes your breasts and a moan escapes your lips. "<<if $PC.pregKnown == 1>>Should have expected that with the pregnancy and all.<<else>>You did recently have a child didn't you? Or have you just been enjoying your nipples too much?<</if>> Either way, this is a good thing. Your breasts work."<</if>> You can't help but moan under your building arousal as _heU massages and teases your breasts. "Enjoying yourself are we? Let me finish you off." _HeU sneaks a hand down to your <<if $PC.dick == 1>>stiff prick and begins stroking its length, quickly bringing you to orgasm and relieving you of your built up tension.<<else>>stiff clit and begins teasing it as well, quickly bringing you to orgasm and relieving you of your built up tension.<</if>> _HeU states, while licking _hisU fingers, "I always did enjoy the way you taste. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + +<<case "breastEnlargementImplant">> + After a few hours, you awaken in the recovery wing with a sore chest. <<if $PC.belly >= 10000 || $PC.boobsBonus == 3>>Struggling to sit<<else>>Sitting<</if>> up, you immediately notice how much heavier your breasts are. Pulling the covers off yourself, you observe your new, round <<if $PC.boobsBonus == 2>>G-cup<<elseif $PC.boobsBonus == 1>>F-cup<<else>>H-cup<</if>> boobs in the mirror-covered wall across from your bed. "So do you like them?", asks the surgeon's assistant, seating _himselfU behind you and wrapping _hisU hands around to your heaving breasts. "We did everything we could to keep them looking natural, <<if $PC.boobsBonus == 2>>but you can definitely tell<<elseif $PC.boobsBonus == 1>>and I say we did a pretty good job<<else>>but the implants were way too big for that<</if>>." _HeU begins groping your breasts, feeling the implant within for any oddities. "I know you're still a little sore, but bear with it." _HeU moves on to your nipples and begins teasing them. <<if $PC.lactation > 0>>_HeU lets out a surprised squeak when a gush of milk escapes your breasts and a moan escapes your lips. "<<if $PC.pregKnown == 1>>Should have expected that with the pregnancy and all.<<else>>You did recently have a child didn't you? Or have you just been enjoying your nipples too much?<</if>> Either way, this is a good thing. Your breasts work."<</if>> You can't help but moan under your building arousal as _heU massages and teases your implant laden breasts. "Enjoying yourself are we? Let me finish you off." _HeU sneaks a hand down to your <<if $PC.dick == 1>>stiff prick and begins stroking its length, quickly bringing you to orgasm and relieving you of your built up tension.<<else>>stiff clit and begins teasing it as well, quickly bringing you to orgasm and relieving you of your built up tension.<</if>> _HeU states, while licking _hisU fingers, "I always did enjoy the way you taste. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + +<<case "breastEnlargement">> + After a few hours, you awaken in the recovery wing with a sore chest. <<if $PC.belly >= 10000 || $PC.boobsBonus == 3>>Struggling to sit<<else>>Sitting<</if>> up, you immediately notice how much heavier your breasts are. Pulling the covers off yourself, you observe your new, soft <<if $PC.boobsBonus == 3>>H-cup<<elseif $PC.boobsBonus == 2>>G-cup<<elseif $PC.boobsBonus == 1>>F-cup<<elseif $PC.boobsBonus == -1>>D-cup<<elseif $PC.boobsBonus == -2>>C-cup<<elseif $PC.boobsBonus == -3>>B-cup<<else>>DD-cup<</if>> boobs in the mirror-covered wall across from your bed. "So do you like them?", asks the surgeon's assistant, seating _himselfU behind you and wrapping _hisU hands around to your heaving breasts. "We did everything we could to keep them perky, <<if $PC.boobsBonus == 3>>quite a feat given their size<<else>>not that hard given your natural perk<</if>>." _HeU begins groping your breasts, feeling the added mass for any oddities. "I know you're still a little sore, but bear with it." _HeU moves on to your nipples and begins teasing them. <<if $PC.lactation > 0>>_HeU lets out a surprised squeak when a gush of milk escapes your breasts and a moan escapes your lips. "<<if $PC.pregKnown == 1>>Should have expected that with the pregnancy and all.<<else>>You did recently have a child didn't you? Or have you just been enjoying your nipples too much?<</if>> Either way, this is a good thing. Your breasts work."<</if>> You can't help but moan under your building arousal as _heU massages and teases your fat tits. "Enjoying yourself are we? Let me finish you off." _HeU sneaks a hand down to your <<if $PC.dick == 1>>stiff prick and begins stroking its length, quickly bringing you to orgasm and relieving you of your built up tension.<<else>>stiff clit and begins teasing it as well, quickly bringing you to orgasm and relieving you of your built up tension.<</if>> _HeU states, while licking _hisU fingers, "I always did enjoy the way you taste. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + +<<case "flatChest">> + After a few hours, you awaken in the recovery wing with a sore chest. <<if $PC.belly >= 10000>>Struggling to sit<<else>>Sitting<</if>> up, you immediately notice the absence of the usual weight on your chest. Pulling the covers off yourself, you observe your flat chest in the mirror-covered wall across from your bed. "So do you like it?", asks the surgeon's assistant, seating _himselfU behind you and wrapping _hisU hands around to your chest. "I honestly couldn't live without my pair." _HeU begins groping your chest, feeling for any oddities. "I know you're still a little sore, but bear with it." _HeU moves on to your nipples and begins teasing them. <<if $PC.lactation > 0>>_HeU lets out a surprised squeak when a gush of milk escapes your tits and a moan escapes your lips. "<<if $PC.pregKnown == 1>>Should have expected that with the pregnancy and all.<<else>>You did recently have a child didn't you? Or have you just been enjoying your nipples too much?<</if>> Either way, this is a good thing. Your breasts still work, but it's still strange coming from such a flat chest."<</if>> You can't help but moan under your building arousal as _heU massages and teases your nipples. "Enjoying yourself are we? Let me finish you off." _HeU sneaks a hand down to your <<if $PC.dick == 1>>stiff prick and begins stroking its length, quickly bringing you to orgasm and relieving you of your built up tension.<<else>>stiff clit and begins teasing it as well, quickly bringing you to orgasm and relieving you of your built up tension.<</if>> _HeU states, while licking _hisU fingers, "I always did enjoy the way you taste. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + +<<case "breasts">> + After a few hours, you awaken in the recovery wing with a sore chest. <<if $PC.belly >= 10000 || $PC.boobsBonus == 3>>Struggling to sit<<else>>Sitting<</if>> up, you immediately notice a new weight on your chest. Pulling the covers off yourself, you observe your new, soft C-cup boobs in the mirror-covered wall across from your bed. "So do you like them?", asks the surgeon's assistant, seating _himselfU behind you and wrapping _hisU hands around to your heaving breasts. "With these, you should be able to compete with any girls around you." _HeU begins groping your breasts, feeling the added mass for any oddities. "I know you're still a little sore, but bear with it." _HeU moves on to your nipples and begins teasing them. <<if $PC.lactation > 0>>_HeU lets out a surprised squeak when a gush of milk escapes your breasts and a moan escapes your lips. "<<if $PC.pregKnown == 1>>Should have expected that with the pregnancy and all.<<else>>You did recently have a child didn't you? Or have you just been enjoying your nipples too much?<</if>> Either way, this is a good thing. Your breasts work."<</if>> You can't help but moan under your building arousal as _heU massages and teases your new tits. "Enjoying yourself are we? Let me finish you off." _HeU sneaks a hand down to your <<if $PC.dick == 1>>stiff prick and begins stroking its length, quickly bringing you to orgasm and relieving you of your built up tension.<<else>>stiff clit and begins teasing it as well, quickly bringing you to orgasm and relieving you of your built up tension.<</if>> _HeU states, while licking _hisU fingers, "I always did enjoy the way you taste. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + +<<case "buttReductionImplant">> + After a few hours, you awaken in the recovery wing, face-down in a bed made to accommodate as person with your body type, with a sore ass. You push yourself up and look at the mass under the cover behind you that is your rear, taking note of how much smaller it is now than when you arrived. "So do you like it?", asks the surgeon's assistant, seating _himselfU beside you and bringing _hisU hands to your butt. "Size isn't everything in an ass, shape is important too." _HeU begins groping your bottom, feeling around for any oddities. "I know you're still a little sore, but bear with it. There, everything feels good, now rest up and you'll be set! Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Groggy, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + +<<case "buttShrinkage">> + After a few hours, you awaken in the recovery wing, face-down in a bed made to accommodate a person with your body type, with a sore ass. You push yourself up and look at the mass under the cover behind you that is your rear, taking note of how much smaller it is now than when you arrived. "So do you like it?", asks the surgeon's assistant, seating _himselfU beside you and bringing _hisU hands to your butt. "Size isn't everything in an ass, shape is important too, though I think you've got a good balance. We didn't need to do much reshaping." _HeU begins groping your bottom, feeling around for any oddities. "I know you're still a little sore, but bear with it. There, everything feels good, now rest up and you'll be set! Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Groggy, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + +<<case "buttEnlargementImplant">> + After a few hours, you awaken in the recovery wing, face-down in a bed made to accommodate a person with your body type, with a sore ass. You push yourself up and look at the mass under the cover behind you that is your rear, taking note of how much bigger it is now than when you arrived. "So do you like it?", asks the surgeon's assistant, seating _himselfU beside you and bringing _hisU hands to your <<if $PC.butt == 3>>enormous<<elseif $PC.butt == 2>>huge<<else>>big<</if>> rounded butt. "Size isn't everything in an ass, shape is important too, though I think you've got a good balance. We didn't need to do much reshaping when we put in the implant." _HeU begins groping your bottom, feeling the silicone filled implant for any oddities. "I know you're still a little sore, but bear with it. There, everything feels good, now rest up and you'll be set! Though you may need some help righting yourself until you get used to its added weight. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Groggy, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + +<<case "buttEnlargement">> + After a few hours, you awaken in the recovery wing, face-down in a bed made to accommodate a person with your body type, with a sore ass. You push yourself up and look at the mass under the cover behind you that is your rear, taking note of how much bigger it is now than when you arrived. "So do you like it?", asks the surgeon's assistant, seating _himselfU beside you and bringing _hisU hands to your <<if $PC.butt == 3>>enormous<<elseif $PC.butt == 2>>huge<<else>>big<</if>> soft butt. "Size isn't everything in an ass, shape is important too, though I think you've got a good balance. We didn't need to do much reshaping when we added the fat." _HeU begins groping your bottom, feeling around for any oddities. "So soft... I know you're still a little sore, but bear with it. There, everything feels good, now rest up and you'll be set! Though you may need some help righting yourself until you get used to its added weight. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Groggy, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + +<<case "ballEnlargement">> + After a few hours, you awaken in the recovery wing with a distinct soreness <<if $PC.ballsImplant > 2>>and the sense that something massive is pushing your legs apart<<elseif $PC.ballsImplant == 2>>and tight feeling between your legs<<else>>between your legs<</if>>. You pull the covers off of yourself to catch sight of the result of the surgery and + <<if $PC.boobsBonus == 3 && $PC.belly >= 10000>> + find that not only can you barely see around your breasts, but any attempts to do so are immediately thwarted by your big, pregnant belly. You settle for a position peaking over your tits but around your middle to view the mirror-covered wall across from your bed. Your balls are much bigger than you expected them to be after the surgery. + <<elseif $PC.boobsBonus == 3>> + find that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your balls are much bigger than you expected them to be after the surgery. + <<elseif $PC.belly >= 10000>> + find that your big, pregnant belly makes it impossible to get a good look at your crotch so you settle for peaking around it at the mirror-covered wall across from your bed. Your balls are much bigger than you expected them to be after the surgery. + <<else>> + find your balls are much bigger than you expected them to be. + <</if>> + "So, what do you think of them?", asks the surgeon's assistant, seating _himselfU beside you and placing a hand upon your <<if $PC.ballsImplant > 3>>watermelon-sized<<elseif $PC.ballsImplant == 3>>cantaloupe-sized<<elseif $PC.ballsImplant == 2>>softball-like<<else>>large<</if>> testicles. "Nice and heavy, you should feel them with every move you make." _HeU begins groping your scrotum, feeling around for any oddities in the gel. "I know you're still a little sore, but bear with it. Enjoying the massage are you?" _heU asks, poking at the tip of your erection with _hisU free hand. "Why don't we find out if they are working properly?" _HeU leans over your dick<<if $PC.belly >= 5000>>, _hisU face brushing the underside of your pregnancy,<</if>> + <<if $PC.balls > 1>> and licks up the rivulet of precum running down its length. "As good as always." Taking your dick to the hilt, _heU begins earnestly sucking you off while fondling your overfilled balls. The new sensation quickly overwhelms your control and you release your massive load deep in _hisU throat. Like a good assistant, _heU gulps down the gushing fluid until _heU takes you deep enough for it to pour down _hisU throat directly. "Shame just adding gel doesn't mean more cum." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + <<else>> and licks the bead of precum building on its end. "As good as always." Taking your dick to the hilt, _heU begins earnestly sucking you off while fondling your overfilled balls. The new sensation quickly overwhelms your control and you release your load deep in _hisU throat. Like a good assistant, _heU diligently swallows it down, making sure not a drop is missed. "Shame just adding gel doesn't mean more cum." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology.<</if>> + +<<case "ballShrinkage">> + After a few hours, you awaken in the recovery wing with a distinct soreness <<if $PC.ballsImplant == 2>>and tight feeling between your legs<<else>>between your legs<</if>>. You pull the covers off of yourself to catch sight of the result of the surgery and + <<if $PC.boobsBonus == 3 && $PC.belly >= 10000>> + find that not only can you barely see around your breasts, but any attempts to do so are immediately thwarted by your big, pregnant belly. You settle for a position peaking over your tits but around your middle to view the mirror-covered wall across from your bed. Your balls are now closer to the typical size one would expect. + <<elseif $PC.boobsBonus == 3>> + find that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your balls are now closer to the typical size one would expect. + <<elseif $PC.belly >= 10000>> + find that your big, pregnant belly makes it impossible to get a good look at your crotch so you settle for peaking around it at the mirror-covered wall across from your bed. Your balls are now closer to the typical size one would expect. + <<else>> + find your balls are now closer to the typical size one would expect. + <</if>> + "So, what do you think of them?", asks the surgeon's assistant, seating _himselfU beside you and placing a hand upon your <<if $PC.ballsImplant == 2>>softball-like<<elseif $PC.ballsImplant == 2>>large<<else>>normal<</if>> testicles. "Starting to feel lighter?" _HeU begins groping your scrotum, feeling around for any oddities. "I know you're still a little sore, but bear with it. Enjoying the massage are you?" _heU asks, poking at the tip of your erection with _hisU free hand. "Why don't we find out if they are still working properly?" _HeU leans over your dick<<if $PC.belly >= 5000>>, _hisU face brushing the underside of your pregnancy,<</if>> and licks the bead of precum building on its end. "As good as always." Taking your dick to the hilt, _heU begins earnestly sucking you off while fondling your loosened balls. The new sensation quickly overwhelms your control and you release your load deep in _hisU throat. Like a good assistant, _heU diligently swallows it down, making sure not a drop is missed. "Shame just can't just suck the gel out of them. That would be too much fun!" Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + +<<case "ballEnlargementHorm">> + After a few hours, you awaken in the recovery wing with a distinct soreness <<if $PC.ballsImplant > 2>>and the sense that something massive is pushing your legs apart<<elseif $PC.ballsImplant == 2>>and tight feeling between your legs<<else>>between your legs<</if>>. You pull the covers off of yourself to catch sight of the result of the surgery and + <<if $PC.boobsBonus == 3 && $PC.belly >= 10000>> + find that not only can you barely see around your breasts, but any attempts to do so are immediately thwarted by your big, pregnant belly. You settle for a position peaking over your tits but around your middle to view the mirror-covered wall across from your bed. Your balls are much bigger than you expected them to be after the surgery. + <<elseif $PC.boobsBonus == 3>> + find that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your balls are much bigger than you expected them to be after the surgery. + <<elseif $PC.belly >= 10000>> + find that your big, pregnant belly makes it impossible to get a good look at your crotch so you settle for peaking around it at the mirror-covered wall across from your bed. Your balls are much bigger than you expected them to be after the surgery. + <<else>> + find your balls are much bigger than you expected them to be. + <</if>> + "So, what do you think of them?", asks the surgeon's assistant, seating _himselfU beside you and placing a hand upon your <<if $PC.ballsImplant > 3>>watermelon-sized<<elseif $PC.ballsImplant == 3>>cantaloupe-sized<<elseif $PC.ballsImplant == 2>>softball-like<<else>>large<</if>> testicles. "Nice and heavy, they'll be making more cum than ever before." _HeU begins groping your scrotum, feeling around for any oddities in the testicles. "I know you're still a little sore from all that growth, but please bear with it." After a few minutes of gentle massage _heU looks up at you. "Enjoying the massage are you?" _heU asks, poking at the tip of your erection with _hisU free hand. "Why don't we find out if they are working properly?" _HeU leans over your dick<<if $PC.belly >= 5000>>, _hisU face brushing the underside of your pregnancy,<</if>> + <<if $PC.balls > 1>> and licks up the rivulet of precum running down its length. "As good as always." Taking your dick to the hilt, _heU begins earnestly sucking you off while fondling your overfilled balls. The new sensation quickly overwhelms your control and you release your massive load deep in _hisU throat. Like a good assistant, _heU struggles to gulp down the torrent of fluid until _heU takes you deep enough for it to pour down _hisU throat directly. "Now this is the kind of size enhancement I can get behind, not that gel that does nothing for making juicy cum." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + <<else>> and licks the droplets of precum running down its length. "As good as always." Taking your dick to the hilt, _heU begins earnestly sucking you off while fondling your overfilled balls. The new sensation quickly overwhelms your control and you release a surprisingly large load deep in _hisU throat. Like a good assistant, _heU gulps down the gushing fluid, making sure _heU doesn't spill a drop. "Now this is the kind of size enhancement I can get behind, not that gel that does nothing for making juicy cum." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology.<</if>> + +<<case "ballShrinkageHorm">> + After a few hours, you awaken in the recovery wing with a distinct soreness <<if $PC.ballsImplant > 2>>and the sense that something massive is pushing your legs apart<<elseif $PC.ballsImplant == 2>>and tight feeling between your legs<<else>>between your legs<</if>>. You pull the covers off of yourself to catch sight of the result of the surgery and + <<if $PC.boobsBonus == 3 && $PC.belly >= 10000>> + find that not only can you barely see around your breasts, but any attempts to do so are immediately thwarted by your big, pregnant belly. You settle for a position peaking over your tits but around your middle to view the mirror-covered wall across from your bed. Your balls are now closer to the typical size one would expect. + <<elseif $PC.boobsBonus == 3>> + find that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your balls are now closer to the typical size one would expect. + <<elseif $PC.belly >= 10000>> + find that your big, pregnant belly makes it impossible to get a good look at your crotch so you settle for peaking around it at the mirror-covered wall across from your bed. Your balls are now closer to the typical size one would expect. + <<else>> + find your balls are now closer to the typical size one would expect. + <</if>> + "So, what do you think of them?", asks the surgeon's assistant, seating _himselfU beside you and placing a hand upon your <<if $PC.ballsImplant == 3>>cantaloupe-sized<<elseif $PC.ballsImplant == 2>>softball-like<<else>>large<</if>> testicles. "Still nice and heavy, I wonder if they'll start making more cum without that gel in the way?" _HeU begins groping your scrotum, feeling around for any oddities in the testicles. "I know you're still a little sore from removing that gel, but please bear with it." After a few minutes of gentle massage _heU looks up at you. "Enjoying the massage are you?" _heU asks, poking at the tip of your erection with _hisU free hand. "Why don't we find out if they are working properly?" _HeU leans over your dick<<if $PC.belly >= 5000>>, _hisU face brushing the underside of your pregnancy,<</if>> + <<if $PC.balls > 1>> and licks up the rivulet of precum running down its length. "As good as always." Taking your dick to the hilt, _heU begins earnestly sucking you off while fondling your slightly emptier sack. The new sensation quickly overwhelms your control and you release your massive load deep in _hisU throat. Like a good assistant, _heU struggles to gulp down the torrent of fluid until _heU takes you deep enough for it to pour down _hisU throat directly. "You know, I think getting rid of that gel did boost your production a little." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + <<else>> and licks the droplets of precum running down its length. "As good as always." Taking your dick to the hilt, _heU begins earnestly sucking you off while fondling your slightly emptier sack. The new sensation quickly overwhelms your control and you release a large load deep in _hisU throat. Like a good assistant, _heU gulps down the gushing fluid, making sure _heU doesn't spill a drop. "You know, I think getting rid of that gel did boost your production a little." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology.<</if>> + +<<case "ballBigShrinkage">> + After a few hours, you awaken in the recovery wing with a distinct soreness and tight feeling between your legs. You pull the covers off of yourself to catch sight of the result of the surgery and + <<if $PC.boobsBonus == 3 && $PC.belly >= 10000>> + find that not only can you barely see around your breasts, but any attempts to do so are immediately thwarted by your big, pregnant belly. You settle for a position peaking over your tits but around your middle to view the mirror-covered wall across from your bed. Your balls are now closer to the typical size one would expect. + <<elseif $PC.boobsBonus == 3>> + find that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your balls are now closer to the typical size one would expect. + <<elseif $PC.belly >= 10000>> + find that your big, pregnant belly makes it impossible to get a good look at your crotch so you settle for peaking around it at the mirror-covered wall across from your bed. Your balls are now closer to the typical size one would expect. + <<else>> + find your balls have had a dramatic size adjustment. + <</if>> + "So, what do you think of them?", asks the surgeon's assistant, seating _himselfU beside you and placing a hand upon your <<if $PC.ballsImplant == 2>>softball-like<<else>>large<</if>> testicles. "Starting to feel lighter?" _HeU begins groping your scrotum, feeling around for any oddities. "I know you're still a little sore after removing so much gel on top of the testicle growth." After a few minutes of gentle massage _heU looks up at you. "Enjoying the massage are you?" _heU asks, poking at the tip of your erection with _hisU free hand. "Why don't we find out if those hormones are working properly?" _HeU leans over your dick<<if $PC.belly >= 5000>>, _hisU face brushing the underside of your pregnancy,<</if>> and licks up the droplets of precum running down its length. "As good as always." Taking your dick to the hilt, _heU begins earnestly sucking you off while fondling your loosened balls. The new sensation quickly overwhelms your control and you release a surprisingly large load deep in _hisU throat. Like a good assistant, _heU gulps down the gushing fluid, making sure _heU doesn't spill a drop. "Their new size might not be what you were hoping for, but they're sure producing a lot of yummy cum now!" Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + +<<case "tightPussy">> + After a few hours, you awaken in the recovery wing with a distinct soreness between your legs. You pull the covers off of yourself to catch sight of the result of the surgery and + <<if $PC.boobsBonus == 3 && $PC.belly >= 10000>> + find that not only can you barely see around your breasts, but any attempts to do so are immediately thwarted by your big, pregnant belly. You settle for a position peaking over your tits but around your middle to view the mirror-covered wall across from your bed. Your pussy isn't gaping, so that's a good sign. You can't tell much more until you get a good feel of it. + <<elseif $PC.boobsBonus == 3>> + find that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your pussy isn't gaping, so that's a good sign. You can't tell much more until you get a good feel of it. + <<elseif $PC.belly >= 10000>> + find that your big, pregnant belly makes it impossible to get a good look at your crotch so you settle for peaking around it at the mirror-covered wall across from your bed. Your pussy isn't gaping, so that's a good sign. You can't tell much more until you get a good feel of it. + <<else>> + find your pussy is much tighter than it was. No hymen though, so you can't pass as a virgin. + <</if>> + "So, do you like it? Does it feel any tighter?", asks the surgeon's assistant, seating _himselfU beside you and tracing your labia with a finger. "Feel anything? Or do we need to take this a little further?" _HeU begins fingering your new pussy, feeling around for any oddities and teasing you at the same time. "I know you're still a little sore, but bear with it. Plus, I know it must feel good. + <<if $PC.dick == 1>> + See? He agrees with me," _heU says, poking at the tip of your erection with _hisU free hand. "Shall we see if it's working right?" _HeU circles around till _heU is between your legs and <<if $PC.belly >= 10000>>disappears behind the curvature of your pregnancy<<else>>disappears between your thighs<</if>>. You feel <<if $PC.ballsImplant > 1>>_himU lift your engorged sack and leave it resting atop _hisU head<<else>>_hisU head brush against your sack<</if>> as _heU brings _hisU mouth to your cunt and begins to enthusiastically eat you out. _HeU is quite good at _hisU job and quickly brings you to climax; your neglected dick spraying cum across your belly. _HeU rises from your crotch to lick up your wayward cum. "I always did like the taste of you. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you settle back down to sleep off the rest of the anesthesia before returning to your arcology. + <<else>> + See? Your cute little clit agrees with me," _heU says, poking at the tip of your peeking clit with _hisU free hand. "Shall we see if it's working right?" _HeU circles around till _heU is between your legs and <<if $PC.belly >= 10000>>disappears behind the curvature of your pregnancy<<else>>disappears between your thighs<</if>>. You feel face brush your inner legs as _heU brings _hisU mouth to your cunt and begins to enthusiastically eat you out. _HeU is quite good at _hisU job and quickly brings you to climax; your new pussy squirting girlcum across _hisU face. _HeU rises from your crotch and licks _hisU lips. "I always did like the taste of you. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you settle back down to sleep off the rest of the anesthesia before returning to your arcology. + <</if>> + +<<case "herm2female">> + After a few hours, you awaken in the recovery wing with a distinct soreness between your legs. You pull the covers off of yourself to catch sight of the result of the surgery and + <<if $PC.boobsBonus == 3>> + find that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your penis is gone, leaving you with just a vagina. Given the soreness in your lower belly, your prostate and other male reproductive organs have been removed as well. You can't tell much more until you get a good feel of it. + <<else>> + find your penis and testicles removed, leaving you with just a vagina. Given the soreness in your lower belly, your prostate and other male reproductive organs have been removed as well. + <</if>> + "So, how do you feel?", asks the surgeon's assistant, seating _himselfU beside you and resting a hand on your pubic mound, making you wince in discomfort. "I'd take it easy for a few days, your body is going to take some time to get used to not having a penis anymore and to recover. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Exhausted from the procedure, you settle back down to sleep off the rest of the anesthesia before returning to your arcology. + +<<case "herm2male">> + After a few hours, you awaken in the recovery wing with a distinct soreness between your legs. You pull the covers off of yourself to catch sight of the result of the surgery and + <<if $PC.boobsBonus == 3>> + find that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your pussy is gone, leaving you with just a cock and balls. Given the soreness in your lower belly, your womb and ovaries are gone too. You can't tell much more until you get a good feel of it. + <<else>> + find your pussy is gone, leaving you with just a cock and balls. Given the soreness in your lower belly, your womb and ovaries are gone too. + <</if>> + "So, how do you feel?", asks the surgeon's assistant, seating _himselfU beside you and resting a hand on your pubic mound, making you wince in discomfort. "I'd take it easy for a few days, your body is going to take some time to recover from surgery. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Exhausted from the procedure, you settle back down to sleep off the rest of the anesthesia before returning to your arcology. + +<<case "herm2truefemale">> + After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and pain practically all over your body. You pull the covers off of yourself to catch sight of the result of the surgery and + <<if $PC.boobsBonus == 3>> + find that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your penis is gone, leaving you with just a vagina. Given the soreness in your lower belly, your prostate and other male reproductive organs have been removed as well. You can't tell much more until you get a good feel of it. Your body has also undergone large-scale reconstructive surgery; it is unlikely anyone will recognize you as a man anymore. + <<else>> + find your penis and testicles removed, leaving you with just a vagina. Given the soreness in your lower belly, your prostate and other male reproductive organs have been removed as well. You can't tell much more until you get a good feel of it, but you're too sore to try. Your body has also undergone large-scale reconstructive surgery; it is unlikely anyone will recognize you as a man anymore. + <</if>> + "So, how do you feel?", asks the surgeon's assistant, seating _himselfU beside you. "I'd take it easy for the rest of the week, your body is going to take some time to get used to not having a penis anymore and to recover from all the changes. But if it makes you feel any better, you certainly are a lovely woman. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Exhausted from the procedure, you settle back down to recover for the rest of your stay. + +<<case "herm2truemale">> + After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and pain practically all over your body. You pull the covers off of yourself to catch sight of the result of the surgery and find your pussy is gone, leaving you with just a cock and balls. Given the soreness in your lower belly, your womb and ovaries are gone too. You can't tell much more until you get a good feel of it, but you're too sore to try. Your body has also undergone large-scale reconstructive surgery; it is unlikely anyone will recognize you a woman anymore. "So, how do you feel?", asks the surgeon's assistant, seating _himselfU beside you. "I'd take it easy for the rest of the week, your body is going to take some time to recover from all the changes. But if it makes you feel any better, you certainly are a handsome man. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Exhausted from the procedure, you settle back down to recover for the rest of your stay. + +<<case "male2female">> + After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and in your lower belly. You pull the covers off of yourself to catch sight of the result of the surgery and find + <<if $PC.boobsBonus == 3>> + that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your dick is gone, along with the rest of your male reproductive organs, leaving you with a pussy, a new fertile set of ovaries and a fresh womb. You can't tell much more until you get a good feel of it, but you're too sore to try. + <<else>> + your dick is gone, along with the rest of your male reproductive organs, leaving you with a pussy, a new fertile set of ovaries and a fresh womb. You can't tell much more until you get a good feel of it, but you're too sore to try. + <</if>> + "So, how do you feel?", asks the surgeon's assistant, seating _himselfU beside you and placing a hand on your belly. "I'd take it easy for the rest of the week, your body is going to take some time to recover from all the changes. Now, this might be uncomfortable, but it would be best to check if your new parts are functioning correctly." _HeU circles around until _heU is between your legs and disappears between your thighs. You feel face brush your inner legs as _heU brings _hisU mouth to your fresh pussy and begins to enthusiastically eat you out. _HeU is quite good at _hisU job and quickly brings you to climax; your new vagina squirting girlcum across _hisU face. _HeU rises from your crotch and licks _hisU lips. "Your new taste is good too. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around. Oh! And before you leave, we'll write a prescription for some birth control for you. You don't have to use it, but it'll be there for you." Exhausted from the procedure, you settle back down to recover for the rest of your stay. + +<<case "male2herm">> + After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and in your lower belly. You pull the covers off of yourself to catch sight of the result of the surgery and find + <<if $PC.boobsBonus == 3>> + that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. You see<<if $PC.ballsImplant < 1>> your new pussy peeking from under your testicles<<else>> that your balls are big enough to completely obscure your new pussy<</if>>. Your lower belly is slightly larger too, likely from your new womb. You can't tell much more until you get a good feel of it, but you're too sore to try. + <<else>> + <<if $PC.ballsImplant < 1>>your new pussy peeking from under your testicles<<else>>that your balls are big enough to completely obscure your new pussy<</if>>. Your lower belly is slightly larger too, likely from your new womb. You can't tell much more until you get a good feel of it, but you're too sore to try. + <</if>> + "So, how do you feel?", asks the surgeon's assistant, seating _himselfU beside you and placing a hand on your belly. "I'd take it easy for the rest of the week, your body is going to take some time to recover from all the changes. Now, this might be uncomfortable, but it would be best to check if your new parts are functioning correctly." _HeU circles around until _heU is between your legs and disappears between your thighs. You feel <<if $PC.ballsImplant > 1>>_himU lift your engorged sack and leave it resting atop _hisU head<<else>>_hisU head brush against your sack<</if>> as _heU brings _hisU mouth to your fresh pussy and begins to enthusiastically eat you out. _HeU is quite good at _hisU job and quickly brings you to climax; your new vagina squirting girlcum across _hisU face and your neglected dick spraying cum across your belly. _HeU rises from your crotch to lick up your wayward cum. "I always did like the taste of you and your new flavor is good too. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around. Oh! And before you leave, we'll write a prescription for some birth control for you. You don't have to use it, but it'll be there for you. Just try not to mix your two halves, unless you want to watch your middle steadily swell with your own child." Exhausted from the procedure, you settle back down to recover for the rest of your stay. + +<<case "male2truefemale">> + After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and pain practically all over your body. You pull the covers off of yourself to catch sight of the result of the surgery and find + <<if $PC.boobsBonus == 3>> + that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your dick is gone, along with the rest of your male reproductive organs, leaving you with a pussy, a new fertile set of ovaries and a fresh womb. You can't tell much more until you get a good feel of it, but you're too sore to try. Your body has also undergone large-scale reconstructive surgery; it is unlikely anyone will recognize you as a man anymore. + <<else>> + your dick is gone, along with the rest of your male reproductive organs, leaving you with a pussy, a new fertile set of ovaries and a fresh womb. You can't tell much more until you get a good feel of it, but you're too sore to try.<<if $PC.boobs == 0>> You do take a moment to fondle your new C-cup breasts though; they feel nice.<</if>> Your body has also undergone large-scale reconstructive surgery; it is unlikely anyone will recognize you as a man anymore. + <</if>> + "So, how do you feel?", asks the surgeon's assistant, seating _himselfU beside you and placing a hand on your belly. "I'd take it easy for the rest of the week, your body is going to take some time to recover from all the changes. Now, this might be uncomfortable, but it would be best to check if your new parts are functioning correctly." _HeU circles around until _heU is between your legs and disappears between your thighs. You feel face brush your inner legs as _heU brings _hisU mouth to your fresh pussy and begins to enthusiastically eat you out. _HeU is quite good at _hisU job and quickly brings you to climax; your new vagina squirting girlcum across _hisU face. _HeU rises from your crotch and licks _hisU lips. "Your new taste is good too. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around. Oh! And before you leave, we'll write a prescription for some birth control for you. You don't have to use it, but it'll be there for you." Exhausted from the procedure, you settle back down to play with your tits and recover for the rest of your stay. + <<if $PC.boobs == 0>><<set $PC.boobs = 1, $PC.boobsBonus = -2>><</if>> + +<<case "male2hermfemale">> + After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and in your lower belly. You pull the covers off of yourself to catch sight of the result of the surgery and find + <<if $PC.boobsBonus == 3>> + that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. You see<<if $PC.ballsImplant < 1>> your new pussy peeking from under your testicles<<else>> that your balls are big enough to completely obscure your new pussy<</if>>. Your lower belly is slightly larger too, likely from your new womb. You can't tell much more until you get a good feel of it, but you're too sore to try. Your body has also undergone large-scale reconstructive surgery; it is unlikely anyone will recognize you as a man anymore. + <<else>> + <<if $PC.ballsImplant < 1>>your new pussy peeking from under your testicles<<else>>that your balls are big enough to completely obscure your new pussy<</if>>. Your lower belly is slightly larger too, likely from your new womb. You can't tell much more until you get a good feel of it, but you're too sore to try.<<if $PC.boobs == 0>> You do take a moment to fondle your new C-cup breasts though; they feel nice.<</if>> Your body has also undergone large-scale reconstructive surgery; it is unlikely anyone will recognize you as a man anymore. + <</if>> + "So, how do you feel?", asks the surgeon's assistant, seating _himselfU beside you and placing a hand on your belly. "I'd take it easy for the rest of the week, your body is going to take some time to recover from all the changes. Now, this might be uncomfortable, but it would be best to check if your new parts are functioning correctly." _HeU circles around until _heU is between your legs and disappears between your thighs. You feel <<if $PC.ballsImplant > 1>>_himU lift your engorged sack and leave it resting atop _hisU head<<else>>_hisU head brush against your sack<</if>> as _heU brings _hisU mouth to your fresh pussy and begins to enthusiastically eat you out. _HeU is quite good at _hisU job and quickly brings you to climax; your new vagina squirting girlcum across _hisU face and your neglected dick spraying cum across your belly. _HeU rises from your crotch to lick up your wayward cum. "I always did like the taste of you and your new flavor is good too. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around. Oh! And before you leave, we'll write a prescription for some birth control for you. You don't have to use it, but it'll be there for you. Just try not to mix your two halves, unless you want to watch your middle steadily swell with your own child." Exhausted from the procedure, you settle back down to play with your tits and recover for the rest of your stay. + <<if $PC.boobs == 0>><<set $PC.boobs = 1, $PC.boobsBonus = -2>><</if>> + +<<case "female2male">> + After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and in your lower belly. You pull the covers off of yourself to catch sight of the result of the surgery and find + <<if $PC.boobsBonus == 3>> + that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your pussy is gone, replaced with a cock and balls. Given the soreness in your lower belly, your womb and ovaries are gone too. You can't tell much more until you get a good feel of it, but you're too sore to try. + <<else>> + your pussy is gone, replaced with a cock and balls. Given the soreness in your lower belly, your womb and ovaries are gone too. You can't tell much more until you get a good feel of it, but you're too sore to try. + <</if>> + "So, how do you feel?", asks the surgeon's assistant, seating _himselfU beside you and placing a hand on your belly. "I'd take it easy for the rest of the week, your body is going to take some time to recover from all the changes. Now, this might be uncomfortable, but it would be best to check if your new parts are functioning correctly," _heU states, teasing your penis. A lewd moan escapes your lips as you are overcome by the sensation. _HeU leans over your dick and licks the bead of precum building on its end. "Tasty." Taking your dick to the hilt, _heU begins earnestly sucking you off while fondling your sensitive balls. Within moments you release your first load deep in _hisU throat. Like a good assistant, _heU diligently swallows it down, making sure not a drop is missed. "While I liked the taste of your pussy, this is nice too. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Exhausted from the procedure, you settle back down to recover for the rest of your stay. + +<<case "female2herm">> + After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and in your lower belly. You pull the covers off of yourself to catch sight of the result of the surgery and find + <<if $PC.boobsBonus == 3>> + that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. You see your new cock and balls, as well as the bottom of your pussy, just barely peeking out from under them. Your lower belly pain is likely caused by the addition of a prostrate and other organs. You can't tell much more until you get a good feel of it, but you're too sore to try, though your new dick disagrees as it grows erect. + <<else>> + your new cock and balls, as well as the bottom of your pussy, just barely peeking out from under them. Your lower belly pain is likely caused by the addition of a prostrate and other organs. You can't tell much more until you get a good feel of it, but you're too sore to try, though your new dick disagrees as it grows erect. + <</if>> + "So, how do you feel?", asks the surgeon's assistant, seating _himselfU beside you and placing a hand on your belly. "I'd take it easy for the rest of the week, your body is going to take some time to recover from all the changes. Now, this might be uncomfortable, but it would be best to check if your new parts are functioning correctly." _HeU wraps a hand around your throbbing shaft. "But you seem eager to experience ejaculation." _HeU leans over your dick and licks the bead of precum building on its end. "Tasty." Taking your dick to the hilt, _heU begins earnestly sucking you off while fondling your sensitive balls. Within moments you release your first load deep in _hisU throat. Like a good assistant, _heU diligently swallows it down, making sure not a drop is missed. "Not bad, though I'm sorry I couldn't pay more attention to your moist pussy. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Exhausted from the procedure, you settle back down to recover for the rest of your stay. + +<<case "female2truemale">> + After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and in your lower belly. You pull the covers off of yourself to catch sight of the result of the surgery and find your pussy is gone, replaced with a cock and balls. Given the soreness in your lower belly, your womb and ovaries are gone too. You can't tell much more until you get a good feel of it, but you're too sore to try. Your body has also undergone large-scale reconstructive surgery; it is unlikely anyone will recognize you a woman anymore. "So, how do you feel?", asks the surgeon's assistant, seating _himselfU beside you and placing a hand on your belly. "I'd take it easy for the rest of the week, your body is going to take some time to recover from all the changes. Now, this might be uncomfortable, but it would be best to check if your new parts are functioning correctly," _heU states, teasing your penis. A lewd moan escapes your lips as you are overcome by the sensation. _HeU leans over your dick and licks the bead of precum building on its end. "Tasty." Taking your dick to the hilt, _heU begins earnestly sucking you off while fondling your sensitive balls. Within moments you release your first load deep in _hisU throat. Like a good assistant, _heU diligently swallows it down, making sure not a drop is missed. "While I liked the taste of your pussy, this is nice too. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Exhausted from the procedure, you settle back down to recover for the rest of your stay. + +<<case "female2hermmale">> + After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and in your lower belly. You pull the covers off of yourself to catch sight of the result of the surgery and find your new cock and balls, as well as the bottom of your pussy, just barely peeking out from under them. Your lower belly pain is likely caused by the addition of a prostrate and other organs. Your body has also undergone large-scale reconstructive surgery; it is unlikely anyone will recognize you a woman anymore. You can't tell much more until you get a good feel of it, but you're too sore to try, though your new dick disagrees as it grows erect. "So, how do you feel?", asks the surgeon's assistant, seating _himselfU beside you and placing a hand on your belly. "I'd take it easy for the rest of the week, your body is going to take some time to recover from all the changes. Now, this might be uncomfortable, but it would be best to check if your new parts are functioning correctly." _HeU wraps a hand around your throbbing shaft. "But you seem eager to experience ejaculation." _HeU leans over your dick and licks the bead of precum building on its end. "Tasty." Taking your dick to the hilt, _heU begins earnestly sucking you off while fondling your sensitive balls. Within moments you release your first load deep in _hisU throat. Like a good assistant, _heU diligently swallows it down, making sure not a drop is missed. "Not bad, though I'm sorry I couldn't pay more attention to your pussy. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Exhausted from the procedure, you settle back down to recover for the rest of your stay. + +<<case "tummyTuck">> + After a few hours, you awaken in the recovery wing with a lingering soreness to your stomach. You pull the covers off of yourself to catch sight of the result of the surgery and + <<if $PC.boobsBonus == 3>> + find that your enormous breasts make it difficult to get a good look. Spreading them apart, you find your belly has been restored almost perfectly to the way it was prior to your pregnancy. + <<else>> + find your belly has been restored almost perfectly to the way it was prior to your pregnancy. + <</if>> + "So, good enough to show off?", asks the surgeon's assistant, seating _himselfU beside you and tracing your navel with a finger. "It was a very simple procedure, so you're free to go whenever," _heU says, a crestfallen tone in _hisU voice. + +<<case "ovulationRestart">> + After a few hours, you awaken in the recovery wing with a distinct soreness in your lower belly. You pull the covers off of yourself to catch sight of the result of the surgery and find + <<if $PC.boobsBonus == 3>> + find that your enormous breasts make it difficult to get a good look. Spreading them apart, you find nothing but a pair of small, stitched incisions over your ovaries. + <<else>> + find nothing but a pair of small, stitched incisions over your ovaries. + <</if>> + "Everything went well", says the surgeon's assistant, seating _himselfU beside you and tracing your labia with a finger. "Now we won't know if they are functional until you have your first period. Funny hearing that again, right? Anyway, everything is hooked up so I'm sure you'll find out in a few weeks. So, how about a little warm up to get you ready?" _HeU circles around till _heU is between your legs and disappears between your thighs. You feel face brush your inner legs as _heU brings _hisU mouth to your cunt and begins to enthusiastically eat you out. _HeU is quite good at _hisU job and quickly brings you to climax; your pussy squirting girlcum across _hisU face. _HeU rises from your crotch and licks _hisU lips. "As much as I'd like to really check your fertility, I lack the proper 'instruments' to do so and, well, I doubt you'd want me to be the father of your next child..." _HeU faces the floor before turning back to you. "Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you settle back down to sleep off the rest of the anesthesia before returning to your arcology. + +<<default>> + You have surgery. This is a WIP, if you can't tell. + +<</switch>> \ No newline at end of file diff --git a/src/pregmod/pcSurgeryDegredation.tw b/src/pregmod/pcSurgeryDegredation.tw deleted file mode 100644 index aba352b342033f006db713277733d63d6d4c124c..0000000000000000000000000000000000000000 --- a/src/pregmod/pcSurgeryDegredation.tw +++ /dev/null @@ -1,253 +0,0 @@ -:: PC Surgery Degradation [nobr] - -<<set $nextButton = "Continue", $nextLink = "Manage Personal Affairs">> - -<<switch $surgeryType>> - -<<case "skinTone">> - After a few hours, you awaken in the recovery wing to find every <<if $showInches == 2>>inch<<else>>centimeter<</if>> of your body burning; though from what you did manage to see, you are, in fact, $PC.skin now. <<if !["pure white", "ivory", "white", "extremely pale", "very pale", "pale", "extremely fair", "very fair", "fair", "light", "light olive", "tan", "olive", "bronze", "dark olive", "dark", "light beige", "beige", "dark beige", "light brown", "brown", "dark brown", "black", "ebony", "pure black"].includes($PC.skin)>>The surgeon's assistant immediately covers her mouth to hide her giggle a the sight of you<<else>>The surgeon's assistant carefully seats herself besides you with a large drum of cream<</if>>. "This stuff is specially formulated to soothe burns like this and should have you feeling much better after a few applications.<<if $PC.dick == 1>> Now please, try not to get hard while I apply this. It will hurt like hell.<</if>>" She spends the next half hour gingerly applying the cream across every <<if $showInches == 2>>inch<<else>>centimeter<</if>> of your body. Her touch is so soft, it is hard to not get aroused, and as your body tenses, a wave of pain washes over you. "Calm down, and take a few applications first. Though I forgot to tell you, your erogenous zones were especially affected and will need plenty of extra attention." She winks at you. You doubt the validity of that claim but understand exactly what she means by it. The next few days will be very enjoyable, but for now, you opt to stay perfectly still and will the cream to work faster. - -<<case "restoreFace">> - After a few hours, you awaken in the recovery wing with a face both sore and somewhat numb. <<if $PC.belly >= 10000 || $PC.boobsBonus == 3>>Struggling to sit<<else>>Sitting<</if>> up, you catch sight of yourself in the mirror-covered wall across from your bed. Your face is back to the way it was before you had it altered (not counting any additional years added to it) and looking just as good as you remember. You attempt to smile at yourself, only to find your face doesn't want to comply; guess the drugs haven't completely worn off yet. You lie back down to sleep off the rest of the anesthesia before returning to your arcology. - -<<case "ageDown">> - After a few hours, you awaken in the recovery wing with a face both sore and somewhat numb. Sitting up, you catch sight of yourself in the mirror-covered wall across from your bed. An oddly familiar face is staring back at you; it takes you a moment to register in your groggy state that it isn't your past self but rather the result of the age reduction surgery. You attempt to smile at yourself, only to find your face doesn't want to comply; guess the drugs haven't completely worn off yet. You lie back down to sleep off the rest of the anesthesia before returning to your arcology. - <<PCAgeImplantAdjustmentDown>> - -<<case "ageUp">> - After a few hours, you awaken in the recovery wing with a face both sore and somewhat numb. Sitting up, you catch sight of yourself in the mirror-covered wall across from your bed. An oddly familiar face is staring back at you; it takes you a moment to register in your groggy state that you are in fact looking at the result of the age increasing surgery. You attempt to smile at yourself, only to find your face doesn't want to comply; guess the drugs haven't completely worn off yet. You lie back down to sleep off the rest of the anesthesia before returning to your arcology. - <<PCAgeImplantAdjustmentUp>> - -<<case "breastReductionImplant">> - After a few hours, you awaken in the recovery wing with a sore chest. <<if $PC.belly >= 10000>>Struggling to sit<<else>>Sitting<</if>> up, you immediately notice how much lighter your breasts are. Pulling the covers off yourself, you observe your implant free boobs in the mirror-covered wall across from your bed. "So do you like them?", asks the surgeon's assistant, seating herself behind you and wrapping her hands around to your natural breasts. "We made sure to tighten them up a bit, get rid of that sag from not having the silicone pouch in them anymore." She begins groping your breasts, feeling for any oddities. "I know you're still a little sore, but bear with it." She moves on to your nipples and begins teasing them. <<if $PC.lactation > 0>>She lets out a surprised squeak when a gush of milk escapes your breasts and a moan escapes your lips. "<<if $PC.pregKnown == 1>>Should have expected that with the pregnancy and all.<<else>>You did recently have a child didn't you? Or have you just been enjoying your nipples too much?<</if>> Either way, this is a good thing. Your breasts work."<</if>> You can't help but moan under your building arousal as she massages and teases your breasts. "Enjoying yourself are we? Let me finish you off." She sneaks a hand down to your <<if $PC.dick == 1>>stiff prick and begins stroking its length, quickly bringing you to orgasm and relieving you of your built up tension.<<else>>stiff clit and begins teasing it as well, quickly bringing you to orgasm and relieving you of your built up tension.<</if>> She states, while licking her fingers, "I always did enjoy the way you taste. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. - -<<case "breastShrinkage">> - After a few hours, you awaken in the recovery wing with a sore chest. <<if $PC.belly >= 10000>>Struggling to sit<<else>>Sitting<</if>> up, you immediately notice how much lighter your breasts are. Pulling the covers off yourself, you observe your smaller <<if $PC.boobsBonus == 2>>G-cup<<elseif $PC.boobsBonus == 1>>F-cup<<elseif $PC.boobsBonus == -1>>D-cup<<elseif $PC.boobsBonus == -2>>C-cup<<elseif $PC.boobsBonus == -3>>B-cup<<else>>DD-cup<</if>> boobs in the mirror-covered wall across from your bed. "So do you like them?", asks the surgeon's assistant, seating herself behind you and wrapping her hands around to your shrunken breasts. "We made sure to tighten them up a bit, get rid of that sagginess from weight and the mass removed." She begins groping your breasts, feeling for any oddities. "I know you're still a little sore, but bear with it." She moves on to your nipples and begins teasing them. <<if $PC.lactation > 0>>She lets out a surprised squeak when a gush of milk escapes your breasts and a moan escapes your lips. "<<if $PC.pregKnown == 1>>Should have expected that with the pregnancy and all.<<else>>You did recently have a child didn't you? Or have you just been enjoying your nipples too much?<</if>> Either way, this is a good thing. Your breasts work."<</if>> You can't help but moan under your building arousal as she massages and teases your breasts. "Enjoying yourself are we? Let me finish you off." She sneaks a hand down to your <<if $PC.dick == 1>>stiff prick and begins stroking its length, quickly bringing you to orgasm and relieving you of your built up tension.<<else>>stiff clit and begins teasing it as well, quickly bringing you to orgasm and relieving you of your built up tension.<</if>> She states, while licking her fingers, "I always did enjoy the way you taste. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. - -<<case "breastEnlargementImplant">> - After a few hours, you awaken in the recovery wing with a sore chest. <<if $PC.belly >= 10000 || $PC.boobsBonus == 3>>Struggling to sit<<else>>Sitting<</if>> up, you immediately notice how much heavier your breasts are. Pulling the covers off yourself, you observe your new, round <<if $PC.boobsBonus == 2>>G-cup<<elseif $PC.boobsBonus == 1>>F-cup<<else>>H-cup<</if>> boobs in the mirror-covered wall across from your bed. "So do you like them?", asks the surgeon's assistant, seating herself behind you and wrapping her hands around to your heaving breasts. "We did everything we could to keep them looking natural, <<if $PC.boobsBonus == 2>>but you can definitely tell<<elseif $PC.boobsBonus == 1>>and I say we did a pretty good job<<else>>but the implants were way too big for that<</if>>." She begins groping your breasts, feeling the implant within for any oddities. "I know you're still a little sore, but bear with it." She moves on to your nipples and begins teasing them. <<if $PC.lactation > 0>>She lets out a surprised squeak when a gush of milk escapes your breasts and a moan escapes your lips. "<<if $PC.pregKnown == 1>>Should have expected that with the pregnancy and all.<<else>>You did recently have a child didn't you? Or have you just been enjoying your nipples too much?<</if>> Either way, this is a good thing. Your breasts work."<</if>> You can't help but moan under your building arousal as she massages and teases your implant laden breasts. "Enjoying yourself are we? Let me finish you off." She sneaks a hand down to your <<if $PC.dick == 1>>stiff prick and begins stroking its length, quickly bringing you to orgasm and relieving you of your built up tension.<<else>>stiff clit and begins teasing it as well, quickly bringing you to orgasm and relieving you of your built up tension.<</if>> She states, while licking her fingers, "I always did enjoy the way you taste. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. - -<<case "breastEnlargement">> - After a few hours, you awaken in the recovery wing with a sore chest. <<if $PC.belly >= 10000 || $PC.boobsBonus == 3>>Struggling to sit<<else>>Sitting<</if>> up, you immediately notice how much heavier your breasts are. Pulling the covers off yourself, you observe your new, soft <<if $PC.boobsBonus == 3>>H-cup<<elseif $PC.boobsBonus == 2>>G-cup<<elseif $PC.boobsBonus == 1>>F-cup<<elseif $PC.boobsBonus == -1>>D-cup<<elseif $PC.boobsBonus == -2>>C-cup<<elseif $PC.boobsBonus == -3>>B-cup<<else>>DD-cup<</if>> boobs in the mirror-covered wall across from your bed. "So do you like them?", asks the surgeon's assistant, seating herself behind you and wrapping her hands around to your heaving breasts. "We did everything we could to keep them perky, <<if $PC.boobsBonus == 3>>quite a feat given their size<<else>>not that hard given your natural perk<</if>>." She begins groping your breasts, feeling the added mass for any oddities. "I know you're still a little sore, but bear with it." She moves on to your nipples and begins teasing them. <<if $PC.lactation > 0>>She lets out a surprised squeak when a gush of milk escapes your breasts and a moan escapes your lips. "<<if $PC.pregKnown == 1>>Should have expected that with the pregnancy and all.<<else>>You did recently have a child didn't you? Or have you just been enjoying your nipples too much?<</if>> Either way, this is a good thing. Your breasts work."<</if>> You can't help but moan under your building arousal as she massages and teases your fat tits. "Enjoying yourself are we? Let me finish you off." She sneaks a hand down to your <<if $PC.dick == 1>>stiff prick and begins stroking its length, quickly bringing you to orgasm and relieving you of your built up tension.<<else>>stiff clit and begins teasing it as well, quickly bringing you to orgasm and relieving you of your built up tension.<</if>> She states, while licking her fingers, "I always did enjoy the way you taste. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. - -<<case "flatChest">> - After a few hours, you awaken in the recovery wing with a sore chest. <<if $PC.belly >= 10000>>Struggling to sit<<else>>Sitting<</if>> up, you immediately notice the absence of the usual weight on your chest. Pulling the covers off yourself, you observe your flat chest in the mirror-covered wall across from your bed. "So do you like it?", asks the surgeon's assistant, seating herself behind you and wrapping her hands around to your chest. "I honestly couldn't live without my pair." She begins groping your chest, feeling for any oddities. "I know you're still a little sore, but bear with it." She moves on to your nipples and begins teasing them. <<if $PC.lactation > 0>>She lets out a surprised squeak when a gush of milk escapes your tits and a moan escapes your lips. "<<if $PC.pregKnown == 1>>Should have expected that with the pregnancy and all.<<else>>You did recently have a child didn't you? Or have you just been enjoying your nipples too much?<</if>> Either way, this is a good thing. Your breasts still work, but it's still strange coming from such a flat chest."<</if>> You can't help but moan under your building arousal as she massages and teases your nipples. "Enjoying yourself are we? Let me finish you off." She sneaks a hand down to your <<if $PC.dick == 1>>stiff prick and begins stroking its length, quickly bringing you to orgasm and relieving you of your built up tension.<<else>>stiff clit and begins teasing it as well, quickly bringing you to orgasm and relieving you of your built up tension.<</if>> She states, while licking her fingers, "I always did enjoy the way you taste. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. - -<<case "breasts">> - After a few hours, you awaken in the recovery wing with a sore chest. <<if $PC.belly >= 10000 || $PC.boobsBonus == 3>>Struggling to sit<<else>>Sitting<</if>> up, you immediately notice a new weight on your chest. Pulling the covers off yourself, you observe your new, soft C-cup boobs in the mirror-covered wall across from your bed. "So do you like them?", asks the surgeon's assistant, seating herself behind you and wrapping her hands around to your heaving breasts. "With these, you should be able to compete with any girls around you." She begins groping your breasts, feeling the added mass for any oddities. "I know you're still a little sore, but bear with it." She moves on to your nipples and begins teasing them. <<if $PC.lactation > 0>>She lets out a surprised squeak when a gush of milk escapes your breasts and a moan escapes your lips. "<<if $PC.pregKnown == 1>>Should have expected that with the pregnancy and all.<<else>>You did recently have a child didn't you? Or have you just been enjoying your nipples too much?<</if>> Either way, this is a good thing. Your breasts work."<</if>> You can't help but moan under your building arousal as she massages and teases your new tits. "Enjoying yourself are we? Let me finish you off." She sneaks a hand down to your <<if $PC.dick == 1>>stiff prick and begins stroking its length, quickly bringing you to orgasm and relieving you of your built up tension.<<else>>stiff clit and begins teasing it as well, quickly bringing you to orgasm and relieving you of your built up tension.<</if>> She states, while licking her fingers, "I always did enjoy the way you taste. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. - -<<case "buttReductionImplant">> - After a few hours, you awaken in the recovery wing, face-down in a bed made to accommodate as person with your body type, with a sore ass. You push yourself up and look at the mass under the cover behind you that is your rear, taking note of how much smaller it is now than when you arrived. "So do you like it?", asks the surgeon's assistant, seating herself beside you and bringing her hands to your butt. "Size isn't everything in an ass, shape is important too." She begins groping your bottom, feeling around for any oddities. "I know you're still a little sore, but bear with it. There, everything feels good, now rest up and you'll be set! Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Groggy, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. - -<<case "buttShrinkage">> - After a few hours, you awaken in the recovery wing, face-down in a bed made to accommodate a person with your body type, with a sore ass. You push yourself up and look at the mass under the cover behind you that is your rear, taking note of how much smaller it is now than when you arrived. "So do you like it?", asks the surgeon's assistant, seating herself beside you and bringing her hands to your butt. "Size isn't everything in an ass, shape is important too, though I think you've got a good balance. We didn't need to do much reshaping." She begins groping your bottom, feeling around for any oddities. "I know you're still a little sore, but bear with it. There, everything feels good, now rest up and you'll be set! Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Groggy, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. - -<<case "buttEnlargementImplant">> - After a few hours, you awaken in the recovery wing, face-down in a bed made to accommodate a person with your body type, with a sore ass. You push yourself up and look at the mass under the cover behind you that is your rear, taking note of how much bigger it is now than when you arrived. "So do you like it?", asks the surgeon's assistant, seating herself beside you and bringing her hands to your <<if $PC.butt == 3>>enormous<<elseif $PC.butt == 2>>huge<<else>>big<</if>> rounded butt. "Size isn't everything in an ass, shape is important too, though I think you've got a good balance. We didn't need to do much reshaping when we put in the implant." She begins groping your bottom, feeling the silicone filled implant for any oddities. "I know you're still a little sore, but bear with it. There, everything feels good, now rest up and you'll be set! Though you may need some help righting yourself until you get used to its added weight. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Groggy, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. - -<<case "buttEnlargement">> - After a few hours, you awaken in the recovery wing, face-down in a bed made to accommodate a person with your body type, with a sore ass. You push yourself up and look at the mass under the cover behind you that is your rear, taking note of how much bigger it is now than when you arrived. "So do you like it?", asks the surgeon's assistant, seating herself beside you and bringing her hands to your <<if $PC.butt == 3>>enormous<<elseif $PC.butt == 2>>huge<<else>>big<</if>> soft butt. "Size isn't everything in an ass, shape is important too, though I think you've got a good balance. We didn't need to do much reshaping when we added the fat." She begins groping your bottom, feeling around for any oddities. "So soft... I know you're still a little sore, but bear with it. There, everything feels good, now rest up and you'll be set! Though you may need some help righting yourself until you get used to its added weight. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Groggy, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. - -<<case "ballEnlargement">> - After a few hours, you awaken in the recovery wing with a distinct soreness <<if $PC.ballsImplant > 2>>and the sense that something massive is pushing your legs apart<<elseif $PC.ballsImplant == 2>>and tight feeling between your legs<<else>>between your legs<</if>>. You pull the covers off of yourself to catch sight of the result of the surgery and - <<if $PC.boobsBonus == 3 && $PC.belly >= 10000>> - find that not only can you barely see around your breasts, but any attempts to do so are immediately thwarted by your big, pregnant belly. You settle for a position peaking over your tits but around your middle to view the mirror-covered wall across from your bed. Your balls are much bigger than you expected them to be after the surgery. - <<elseif $PC.boobsBonus == 3>> - find that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your balls are much bigger than you expected them to be after the surgery. - <<elseif $PC.belly >= 10000>> - find that your big, pregnant belly makes it impossible to get a good look at your crotch so you settle for peaking around it at the mirror-covered wall across from your bed. Your balls are much bigger than you expected them to be after the surgery. - <<else>> - find your balls are much bigger than you expected them to be. - <</if>> - "So, what do you think of them?", asks the surgeon's assistant, seating herself beside you and placing a hand upon your <<if $PC.ballsImplant > 3>>watermelon-sized<<elseif $PC.ballsImplant == 3>>cantaloupe-sized<<elseif $PC.ballsImplant == 2>>softball-like<<else>>large<</if>> testicles. "Nice and heavy, you should feel them with every move you make." She begins groping your scrotum, feeling around for any oddities in the gel. "I know you're still a little sore, but bear with it. Enjoying the massage are you?" She asks, poking at the tip of your erection with her free hand. "Why don't we find out if they are working properly?" She leans over your dick<<if $PC.belly >= 5000>>, her face brushing the underside of your pregnancy,<</if>> - <<if $PC.balls > 1>> and licks up the rivulet of precum running down its length. "As good as always." Taking your dick to the hilt, she begins earnestly sucking you off while fondling your overfilled balls. The new sensation quickly overwhelms your control and you release your massive load deep in her throat. Like a good assistant, she gulps down the gushing fluid until she takes you deep enough for it to pour down her throat directly. "Shame just adding gel doesn't mean more cum." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. - <<else>> and licks the bead of precum building on its end. "As good as always." Taking your dick to the hilt, she begins earnestly sucking you off while fondling your overfilled balls. The new sensation quickly overwhelms your control and you release your load deep in her throat. Like a good assistant, she diligently swallows it down, making sure not a drop is missed. "Shame just adding gel doesn't mean more cum." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology.<</if>> - -<<case "ballShrinkage">> - After a few hours, you awaken in the recovery wing with a distinct soreness <<if $PC.ballsImplant == 2>>and tight feeling between your legs<<else>>between your legs<</if>>. You pull the covers off of yourself to catch sight of the result of the surgery and - <<if $PC.boobsBonus == 3 && $PC.belly >= 10000>> - find that not only can you barely see around your breasts, but any attempts to do so are immediately thwarted by your big, pregnant belly. You settle for a position peaking over your tits but around your middle to view the mirror-covered wall across from your bed. Your balls are now closer to the typical size one would expect. - <<elseif $PC.boobsBonus == 3>> - find that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your balls are now closer to the typical size one would expect. - <<elseif $PC.belly >= 10000>> - find that your big, pregnant belly makes it impossible to get a good look at your crotch so you settle for peaking around it at the mirror-covered wall across from your bed. Your balls are now closer to the typical size one would expect. - <<else>> - find your balls are now closer to the typical size one would expect. - <</if>> - "So, what do you think of them?", asks the surgeon's assistant, seating herself beside you and placing a hand upon your <<if $PC.ballsImplant == 2>>softball-like<<elseif $PC.ballsImplant == 2>>large<<else>>normal<</if>> testicles. "Starting to feel lighter?" She begins groping your scrotum, feeling around for any oddities. "I know you're still a little sore, but bear with it. Enjoying the massage are you?" She asks, poking at the tip of your erection with her free hand. "Why don't we find out if they are still working properly?" She leans over your dick<<if $PC.belly >= 5000>>, her face brushing the underside of your pregnancy,<</if>> and licks the bead of precum building on its end. "As good as always." Taking your dick to the hilt, she begins earnestly sucking you off while fondling your loosened balls. The new sensation quickly overwhelms your control and you release your load deep in her throat. Like a good assistant, she diligently swallows it down, making sure not a drop is missed. "Shame just can't just suck the gel out of them. That would be too much fun!" Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. - -<<case "ballEnlargementHorm">> - After a few hours, you awaken in the recovery wing with a distinct soreness <<if $PC.ballsImplant > 2>>and the sense that something massive is pushing your legs apart<<elseif $PC.ballsImplant == 2>>and tight feeling between your legs<<else>>between your legs<</if>>. You pull the covers off of yourself to catch sight of the result of the surgery and - <<if $PC.boobsBonus == 3 && $PC.belly >= 10000>> - find that not only can you barely see around your breasts, but any attempts to do so are immediately thwarted by your big, pregnant belly. You settle for a position peaking over your tits but around your middle to view the mirror-covered wall across from your bed. Your balls are much bigger than you expected them to be after the surgery. - <<elseif $PC.boobsBonus == 3>> - find that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your balls are much bigger than you expected them to be after the surgery. - <<elseif $PC.belly >= 10000>> - find that your big, pregnant belly makes it impossible to get a good look at your crotch so you settle for peaking around it at the mirror-covered wall across from your bed. Your balls are much bigger than you expected them to be after the surgery. - <<else>> - find your balls are much bigger than you expected them to be. - <</if>> - "So, what do you think of them?", asks the surgeon's assistant, seating herself beside you and placing a hand upon your <<if $PC.ballsImplant > 3>>watermelon-sized<<elseif $PC.ballsImplant == 3>>cantaloupe-sized<<elseif $PC.ballsImplant == 2>>softball-like<<else>>large<</if>> testicles. "Nice and heavy, they'll be making more cum than ever before." She begins groping your scrotum, feeling around for any oddities in the testicles. "I know you're still a little sore from all that growth, but please bear with it." After a few minutes of gentle massage she looks up at you. "Enjoying the massage are you?" She asks, poking at the tip of your erection with her free hand. "Why don't we find out if they are working properly?" She leans over your dick<<if $PC.belly >= 5000>>, her face brushing the underside of your pregnancy,<</if>> - <<if $PC.balls > 1>> and licks up the rivulet of precum running down its length. "As good as always." Taking your dick to the hilt, she begins earnestly sucking you off while fondling your overfilled balls. The new sensation quickly overwhelms your control and you release your massive load deep in her throat. Like a good assistant, she struggles to gulp down the torrent of fluid until she takes you deep enough for it to pour down her throat directly. "Now this is the kind of size enhancement I can get behind, not that gel that does nothing for making juicy cum." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. - <<else>> and licks the droplets of precum running down its length. "As good as always." Taking your dick to the hilt, she begins earnestly sucking you off while fondling your overfilled balls. The new sensation quickly overwhelms your control and you release a surprisingly large load deep in her throat. Like a good assistant, she gulps down the gushing fluid, making sure she doesn't spill a drop. "Now this is the kind of size enhancement I can get behind, not that gel that does nothing for making juicy cum." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology.<</if>> - -<<case "ballShrinkageHorm">> - After a few hours, you awaken in the recovery wing with a distinct soreness <<if $PC.ballsImplant > 2>>and the sense that something massive is pushing your legs apart<<elseif $PC.ballsImplant == 2>>and tight feeling between your legs<<else>>between your legs<</if>>. You pull the covers off of yourself to catch sight of the result of the surgery and - <<if $PC.boobsBonus == 3 && $PC.belly >= 10000>> - find that not only can you barely see around your breasts, but any attempts to do so are immediately thwarted by your big, pregnant belly. You settle for a position peaking over your tits but around your middle to view the mirror-covered wall across from your bed. Your balls are now closer to the typical size one would expect. - <<elseif $PC.boobsBonus == 3>> - find that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your balls are now closer to the typical size one would expect. - <<elseif $PC.belly >= 10000>> - find that your big, pregnant belly makes it impossible to get a good look at your crotch so you settle for peaking around it at the mirror-covered wall across from your bed. Your balls are now closer to the typical size one would expect. - <<else>> - find your balls are now closer to the typical size one would expect. - <</if>> - "So, what do you think of them?", asks the surgeon's assistant, seating herself beside you and placing a hand upon your <<if $PC.ballsImplant == 3>>cantaloupe-sized<<elseif $PC.ballsImplant == 2>>softball-like<<else>>large<</if>> testicles. "Still nice and heavy, I wonder if they'll start making more cum without that gel in the way?" She begins groping your scrotum, feeling around for any oddities in the testicles. "I know you're still a little sore from removing that gel, but please bear with it." After a few minutes of gentle massage she looks up at you. "Enjoying the massage are you?" She asks, poking at the tip of your erection with her free hand. "Why don't we find out if they are working properly?" She leans over your dick<<if $PC.belly >= 5000>>, her face brushing the underside of your pregnancy,<</if>> - <<if $PC.balls > 1>> and licks up the rivulet of precum running down its length. "As good as always." Taking your dick to the hilt, she begins earnestly sucking you off while fondling your slightly emptier sack. The new sensation quickly overwhelms your control and you release your massive load deep in her throat. Like a good assistant, she struggles to gulp down the torrent of fluid until she takes you deep enough for it to pour down her throat directly. "You know, I think getting rid of that gel did boost your production a little." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. - <<else>> and licks the droplets of precum running down its length. "As good as always." Taking your dick to the hilt, she begins earnestly sucking you off while fondling your slightly emptier sack. The new sensation quickly overwhelms your control and you release a large load deep in her throat. Like a good assistant, she gulps down the gushing fluid, making sure she doesn't spill a drop. "You know, I think getting rid of that gel did boost your production a little." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology.<</if>> - -<<case "ballBigShrinkage">> - After a few hours, you awaken in the recovery wing with a distinct soreness and tight feeling between your legs. You pull the covers off of yourself to catch sight of the result of the surgery and - <<if $PC.boobsBonus == 3 && $PC.belly >= 10000>> - find that not only can you barely see around your breasts, but any attempts to do so are immediately thwarted by your big, pregnant belly. You settle for a position peaking over your tits but around your middle to view the mirror-covered wall across from your bed. Your balls are now closer to the typical size one would expect. - <<elseif $PC.boobsBonus == 3>> - find that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your balls are now closer to the typical size one would expect. - <<elseif $PC.belly >= 10000>> - find that your big, pregnant belly makes it impossible to get a good look at your crotch so you settle for peaking around it at the mirror-covered wall across from your bed. Your balls are now closer to the typical size one would expect. - <<else>> - find your balls have had a dramatic size adjustment. - <</if>> - "So, what do you think of them?", asks the surgeon's assistant, seating herself beside you and placing a hand upon your <<if $PC.ballsImplant == 2>>softball-like<<else>>large<</if>> testicles. "Starting to feel lighter?" She begins groping your scrotum, feeling around for any oddities. "I know you're still a little sore after removing so much gel on top of the testicle growth." After a few minutes of gentle massage she looks up at you. "Enjoying the massage are you?" She asks, poking at the tip of your erection with her free hand. "Why don't we find out if those hormones are working properly?" She leans over your dick<<if $PC.belly >= 5000>>, her face brushing the underside of your pregnancy,<</if>> and licks up the droplets of precum running down its length. "As good as always." Taking your dick to the hilt, she begins earnestly sucking you off while fondling your loosened balls. The new sensation quickly overwhelms your control and you release a surprisingly large load deep in her throat. Like a good assistant, she gulps down the gushing fluid, making sure she doesn't spill a drop. "Their new size might not be what you were hoping for, but they're sure producing a lot of yummy cum now!" Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. - -<<case "tightPussy">> - After a few hours, you awaken in the recovery wing with a distinct soreness between your legs. You pull the covers off of yourself to catch sight of the result of the surgery and - <<if $PC.boobsBonus == 3 && $PC.belly >= 10000>> - find that not only can you barely see around your breasts, but any attempts to do so are immediately thwarted by your big, pregnant belly. You settle for a position peaking over your tits but around your middle to view the mirror-covered wall across from your bed. Your pussy isn't gaping, so that's a good sign. You can't tell much more until you get a good feel of it. - <<elseif $PC.boobsBonus == 3>> - find that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your pussy isn't gaping, so that's a good sign. You can't tell much more until you get a good feel of it. - <<elseif $PC.belly >= 10000>> - find that your big, pregnant belly makes it impossible to get a good look at your crotch so you settle for peaking around it at the mirror-covered wall across from your bed. Your pussy isn't gaping, so that's a good sign. You can't tell much more until you get a good feel of it. - <<else>> - find your pussy is much tighter than it was. No hymen though, so you can't pass as a virgin. - <</if>> - "So, do you like it? Does it feel any tighter?", asks the surgeon's assistant, seating herself beside you and tracing your labia with a finger. "Feel anything? Or do we need to take this a little further?" She begins fingering your new pussy, feeling around for any oddities and teasing you at the same time. "I know you're still a little sore, but bear with it. Plus, I know it must feel good. - <<if $PC.dick == 1>> - See? He agrees with me." She says, poking at the tip of your erection with her free hand. "Shall we see if it's working right?" She circles around till she is between your legs and <<if $PC.belly >= 10000>>disappears behind the curvature of your pregnancy<<else>>disappears between your thighs<</if>>. You feel <<if $PC.ballsImplant > 1>>her lift your engorged sack and leave it resting atop her head<<else>>her head brush against your sack<</if>> as she brings her mouth to your cunt and begins to enthusiastically eat you out. She is quite good at her job and quickly brings you to climax; your neglected dick spraying cum across your belly. She raises from your crotch to lick up your wayward cum. "I always did like the taste of you. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you settle back down to sleep off the rest of the anesthesia before returning to your arcology. - <<else>> - See? Your cute little clit agrees with me." She says, poking at the tip of your peeking clit with her free hand. "Shall we see if it's working right?" She circles around till she is between your legs and <<if $PC.belly >= 10000>>disappears behind the curvature of your pregnancy<<else>>disappears between your thighs<</if>>. You feel face brush your inner legs as she brings her mouth to your cunt and begins to enthusiastically eat you out. She is quite good at her job and quickly brings you to climax; your new pussy squirting girl cum across her face. She raises from your crotch and licks her lips. "I always did like the taste of you. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you settle back down to sleep off the rest of the anesthesia before returning to your arcology. - <</if>> - -<<case "herm2female">> - After a few hours, you awaken in the recovery wing with a distinct soreness between your legs. You pull the covers off of yourself to catch sight of the result of the surgery and - <<if $PC.boobsBonus == 3>> - find that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your penis is gone, leaving you with just a vagina. Given the soreness in your lower belly, your prostate and other male reproductive organs have been removed as well. You can't tell much more until you get a good feel of it. - <<else>> - find your penis and testicles removed, leaving you with just a vagina. Given the soreness in your lower belly, your prostate and other male reproductive organs have been removed as well. - <</if>> - "So, how do you feel?", asks the surgeon's assistant, seating herself beside you and resting a hand on your pubic mound, making you wince in discomfort. "I'd take it easy for a few days, your body is going to take some time to get used to not having a penis anymore and to recover. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Exhausted from the procedure, you settle back down to sleep off the rest of the anesthesia before returning to your arcology. - -<<case "herm2male">> - After a few hours, you awaken in the recovery wing with a distinct soreness between your legs. You pull the covers off of yourself to catch sight of the result of the surgery and - <<if $PC.boobsBonus == 3>> - find that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your pussy is gone, leaving you with just a cock and balls. Given the soreness in your lower belly, your womb and ovaries are gone too. You can't tell much more until you get a good feel of it. - <<else>> - find your pussy is gone, leaving you with just a cock and balls. Given the soreness in your lower belly, your womb and ovaries are gone too. - <</if>> - "So, how do you feel?", asks the surgeon's assistant, seating herself beside you and resting a hand on your pubic mound, making you wince in discomfort. "I'd take it easy for a few days, your body is going to take some time to recover from surgery. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Exhausted from the procedure, you settle back down to sleep off the rest of the anesthesia before returning to your arcology. - -<<case "herm2truefemale">> - After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and pain practically all over your body. You pull the covers off of yourself to catch sight of the result of the surgery and - <<if $PC.boobsBonus == 3>> - find that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your penis is gone, leaving you with just a vagina. Given the soreness in your lower belly, your prostate and other male reproductive organs have been removed as well. You can't tell much more until you get a good feel of it. Your body has also undergone large-scale reconstructive surgery; it is unlikely anyone will recognize you as a man anymore. - <<else>> - find your penis and testicles removed, leaving you with just a vagina. Given the soreness in your lower belly, your prostate and other male reproductive organs have been removed as well. You can't tell much more until you get a good feel of it, but you're too sore to try. Your body has also undergone large-scale reconstructive surgery; it is unlikely anyone will recognize you as a man anymore. - <</if>> - "So, how do you feel?", asks the surgeon's assistant, seating herself beside you. "I'd take it easy for the rest of the week, your body is going to take some time to get used to not having a penis anymore and to recover from all the changes. But if it makes you feel any better, you certainly are a lovely woman. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Exhausted from the procedure, you settle back down to recover for the rest of your stay. - -<<case "herm2truemale">> - After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and pain practically all over your body. You pull the covers off of yourself to catch sight of the result of the surgery and find your pussy is gone, leaving you with just a cock and balls. Given the soreness in your lower belly, your womb and ovaries are gone too. You can't tell much more until you get a good feel of it, but you're too sore to try. Your body has also undergone large-scale reconstructive surgery; it is unlikely anyone will recognize you a woman anymore. "So, how do you feel?", asks the surgeon's assistant, seating herself beside you. "I'd take it easy for the rest of the week, your body is going to take some time to recover from all the changes. But if it makes you feel any better, you certainly are a handsome man. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Exhausted from the procedure, you settle back down to recover for the rest of your stay. - -<<case "male2female">> - After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and in your lower belly. You pull the covers off of yourself to catch sight of the result of the surgery and find - <<if $PC.boobsBonus == 3>> - that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your dick is gone, along with the rest of your male reproductive organs, leaving you with a pussy, a new fertile set of ovaries and a fresh womb. You can't tell much more until you get a good feel of it, but you're too sore to try. - <<else>> - your dick is gone, along with the rest of your male reproductive organs, leaving you with a pussy, a new fertile set of ovaries and a fresh womb. You can't tell much more until you get a good feel of it, but you're too sore to try. - <</if>> - "So, how do you feel?", asks the surgeon's assistant, seating herself beside you and placing a hand on your belly. "I'd take it easy for the rest of the week, your body is going to take some time to recover from all the changes. Now, this might be uncomfortable, but it would be best to check if your new parts are functioning correctly." She circles around until she is between your legs and disappears between your thighs. You feel face brush your inner legs as she brings her mouth to your fresh pussy and begins to enthusiastically eat you out. She is quite good at her job and quickly brings you to climax; your new vagina squirting girl cum across her face. She raises from your crotch and licks her lips. "Your new taste is good too. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around. Oh! And before you leave, we'll write a prescription for some birth control for you. You don't have to use it, but it'll be there for you." Exhausted from the procedure, you settle back down to recover for the rest of your stay. - -<<case "male2herm">> - After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and in your lower belly. You pull the covers off of yourself to catch sight of the result of the surgery and find - <<if $PC.boobsBonus == 3>> - that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. You see<<if $PC.ballsImplant < 1>> your new pussy peeking from under your testicles<<else>> that your balls are big enough to completely obscure your new pussy<</if>>. Your lower belly is slightly larger too, likely from your new womb. You can't tell much more until you get a good feel of it, but you're too sore to try. - <<else>> - <<if $PC.ballsImplant < 1>>your new pussy peeking from under your testicles<<else>>that your balls are big enough to completely obscure your new pussy<</if>>. Your lower belly is slightly larger too, likely from your new womb. You can't tell much more until you get a good feel of it, but you're too sore to try. - <</if>> - "So, how do you feel?", asks the surgeon's assistant, seating herself beside you and placing a hand on your belly. "I'd take it easy for the rest of the week, your body is going to take some time to recover from all the changes. Now, this might be uncomfortable, but it would be best to check if your new parts are functioning correctly." She circles around until she is between your legs and disappears between your thighs. You feel <<if $PC.ballsImplant > 1>>her lift your engorged sack and leave it resting atop her head<<else>>her head brush against your sack<</if>> as she brings her mouth to your fresh pussy and begins to enthusiastically eat you out. She is quite good at her job and quickly brings you to climax; your new vagina squirting girl cum across her face and your neglected dick spraying cum across your belly. She raises from your crotch to lick up your wayward cum. "I always did like the taste of you and your new flavor is good too. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around. Oh! And before you leave, we'll write a prescription for some birth control for you. You don't have to use it, but it'll be there for you. Just try not to mix your two halves, unless you want to watch your middle steadily swell with your own child." Exhausted from the procedure, you settle back down to recover for the rest of your stay. - -<<case "male2truefemale">> - After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and pain practically all over your body. You pull the covers off of yourself to catch sight of the result of the surgery and find - <<if $PC.boobsBonus == 3>> - that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your dick is gone, along with the rest of your male reproductive organs, leaving you with a pussy, a new fertile set of ovaries and a fresh womb. You can't tell much more until you get a good feel of it, but you're too sore to try. Your body has also undergone large-scale reconstructive surgery; it is unlikely anyone will recognize you as a man anymore. - <<else>> - your dick is gone, along with the rest of your male reproductive organs, leaving you with a pussy, a new fertile set of ovaries and a fresh womb. You can't tell much more until you get a good feel of it, but you're too sore to try.<<if $PC.boobs == 0>> You do take a moment to fondle your new C-cup breasts though; they feel nice.<</if>> Your body has also undergone large-scale reconstructive surgery; it is unlikely anyone will recognize you as a man anymore. - <</if>> - "So, how do you feel?", asks the surgeon's assistant, seating herself beside you and placing a hand on your belly. "I'd take it easy for the rest of the week, your body is going to take some time to recover from all the changes. Now, this might be uncomfortable, but it would be best to check if your new parts are functioning correctly." She circles around until she is between your legs and disappears between your thighs. You feel face brush your inner legs as she brings her mouth to your fresh pussy and begins to enthusiastically eat you out. She is quite good at her job and quickly brings you to climax; your new vagina squirting girl cum across her face. She raises from your crotch and licks her lips. "Your new taste is good too. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around. Oh! And before you leave, we'll write a prescription for some birth control for you. You don't have to use it, but it'll be there for you." Exhausted from the procedure, you settle back down to play with your tits and recover for the rest of your stay. - <<if $PC.boobs == 0>><<set $PC.boobs = 1, $PC.boobsBonus = -2>><</if>> - -<<case "male2hermfemale">> - After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and in your lower belly. You pull the covers off of yourself to catch sight of the result of the surgery and find - <<if $PC.boobsBonus == 3>> - that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. You see<<if $PC.ballsImplant < 1>> your new pussy peeking from under your testicles<<else>> that your balls are big enough to completely obscure your new pussy<</if>>. Your lower belly is slightly larger too, likely from your new womb. You can't tell much more until you get a good feel of it, but you're too sore to try. Your body has also undergone large-scale reconstructive surgery; it is unlikely anyone will recognize you as a man anymore. - <<else>> - <<if $PC.ballsImplant < 1>>your new pussy peeking from under your testicles<<else>>that your balls are big enough to completely obscure your new pussy<</if>>. Your lower belly is slightly larger too, likely from your new womb. You can't tell much more until you get a good feel of it, but you're too sore to try.<<if $PC.boobs == 0>> You do take a moment to fondle your new C-cup breasts though; they feel nice.<</if>> Your body has also undergone large-scale reconstructive surgery; it is unlikely anyone will recognize you as a man anymore. - <</if>> - "So, how do you feel?", asks the surgeon's assistant, seating herself beside you and placing a hand on your belly. "I'd take it easy for the rest of the week, your body is going to take some time to recover from all the changes. Now, this might be uncomfortable, but it would be best to check if your new parts are functioning correctly." She circles around until she is between your legs and disappears between your thighs. You feel <<if $PC.ballsImplant > 1>>her lift your engorged sack and leave it resting atop her head<<else>>her head brush against your sack<</if>> as she brings her mouth to your fresh pussy and begins to enthusiastically eat you out. She is quite good at her job and quickly brings you to climax; your new vagina squirting girl cum across her face and your neglected dick spraying cum across your belly. She raises from your crotch to lick up your wayward cum. "I always did like the taste of you and your new flavor is good too. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around. Oh! And before you leave, we'll write a prescription for some birth control for you. You don't have to use it, but it'll be there for you. Just try not to mix your two halves, unless you want to watch your middle steadily swell with your own child." Exhausted from the procedure, you settle back down to play with your tits and recover for the rest of your stay. - <<if $PC.boobs == 0>><<set $PC.boobs = 1, $PC.boobsBonus = -2>><</if>> - -<<case "female2male">> - After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and in your lower belly. You pull the covers off of yourself to catch sight of the result of the surgery and find - <<if $PC.boobsBonus == 3>> - that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. Your pussy is gone, replaced with a cock and balls. Given the soreness in your lower belly, your womb and ovaries are gone too. You can't tell much more until you get a good feel of it, but you're too sore to try. - <<else>> - your pussy is gone, replaced with a cock and balls. Given the soreness in your lower belly, your womb and ovaries are gone too. You can't tell much more until you get a good feel of it, but you're too sore to try. - <</if>> - "So, how do you feel?", asks the surgeon's assistant, seating herself beside you and placing a hand on your belly. "I'd take it easy for the rest of the week, your body is going to take some time to recover from all the changes. Now, this might be uncomfortable, but it would be best to check if your new parts are functioning correctly." She states, teasing your penis. A lewd moan escapes your lips as you are overcome by the sensation. She leans over your dick and licks the bead of precum building on its end. "Tasty." Taking your dick to the hilt, she begins earnestly sucking you off while fondling your sensitive balls. Within moments you release your first load deep in her throat. Like a good assistant, she diligently swallows it down, making sure not a drop is missed. "While I liked the taste of your pussy, this is nice too. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Exhausted from the procedure, you settle back down to recover for the rest of your stay. - -<<case "female2herm">> - After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and in your lower belly. You pull the covers off of yourself to catch sight of the result of the surgery and find - <<if $PC.boobsBonus == 3>> - that your enormous breasts make it difficult to get a good look so you settle for the mirror-covered wall across from your bed. You see your new cock and balls, as well as the bottom of your pussy, just barely peeking out from under them. Your lower belly pain is likely caused by the addition of a prostrate and other organs. You can't tell much more until you get a good feel of it, but you're too sore to try, though your new dick disagrees as it grows erect. - <<else>> - your new cock and balls, as well as the bottom of your pussy, just barely peeking out from under them. Your lower belly pain is likely caused by the addition of a prostrate and other organs. You can't tell much more until you get a good feel of it, but you're too sore to try, though your new dick disagrees as it grows erect. - <</if>> - "So, how do you feel?", asks the surgeon's assistant, seating herself beside you and placing a hand on your belly. "I'd take it easy for the rest of the week, your body is going to take some time to recover from all the changes. Now, this might be uncomfortable, but it would be best to check if your new parts are functioning correctly." She wraps a hand around your throbbing shaft. "But you seem eager to experience ejaculation." She leans over your dick and licks the bead of precum building on its end. "Tasty." Taking your dick to the hilt, she begins earnestly sucking you off while fondling your sensitive balls. Within moments you release your first load deep in her throat. Like a good assistant, she diligently swallows it down, making sure not a drop is missed. "Not bad, though I'm sorry I couldn't pay more attention to your moist pussy. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Exhausted from the procedure, you settle back down to recover for the rest of your stay. - -<<case "female2truemale">> - After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and in your lower belly. You pull the covers off of yourself to catch sight of the result of the surgery and find your pussy is gone, replaced with a cock and balls. Given the soreness in your lower belly, your womb and ovaries are gone too. You can't tell much more until you get a good feel of it, but you're too sore to try. Your body has also undergone large-scale reconstructive surgery; it is unlikely anyone will recognize you a woman anymore. "So, how do you feel?", asks the surgeon's assistant, seating herself beside you and placing a hand on your belly. "I'd take it easy for the rest of the week, your body is going to take some time to recover from all the changes. Now, this might be uncomfortable, but it would be best to check if your new parts are functioning correctly." She states, teasing your penis. A lewd moan escapes your lips as you are overcome by the sensation. She leans over your dick and licks the bead of precum building on its end. "Tasty." Taking your dick to the hilt, she begins earnestly sucking you off while fondling your sensitive balls. Within moments you release your first load deep in her throat. Like a good assistant, she diligently swallows it down, making sure not a drop is missed. "While I liked the taste of your pussy, this is nice too. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Exhausted from the procedure, you settle back down to recover for the rest of your stay. - -<<case "female2hermmale">> - After a few hours, you awaken in the recovery wing with a distinct soreness between your legs and in your lower belly. You pull the covers off of yourself to catch sight of the result of the surgery and find your new cock and balls, as well as the bottom of your pussy, just barely peeking out from under them. Your lower belly pain is likely caused by the addition of a prostrate and other organs. Your body has also undergone large-scale reconstructive surgery; it is unlikely anyone will recognize you a woman anymore. You can't tell much more until you get a good feel of it, but you're too sore to try, though your new dick disagrees as it grows erect. "So, how do you feel?", asks the surgeon's assistant, seating herself beside you and placing a hand on your belly. "I'd take it easy for the rest of the week, your body is going to take some time to recover from all the changes. Now, this might be uncomfortable, but it would be best to check if your new parts are functioning correctly." She wraps a hand around your throbbing shaft. "But you seem eager to experience ejaculation." She leans over your dick and licks the bead of precum building on its end. "Tasty." Taking your dick to the hilt, she begins earnestly sucking you off while fondling your sensitive balls. Within moments you release your first load deep in her throat. Like a good assistant, she diligently swallows it down, making sure not a drop is missed. "Not bad, though I'm sorry I couldn't pay more attention to your pussy. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Exhausted from the procedure, you settle back down to recover for the rest of your stay. - -<<case "tummyTuck">> - After a few hours, you awaken in the recovery wing with a lingering soreness to your stomach. You pull the covers off of yourself to catch sight of the result of the surgery and - <<if $PC.boobsBonus == 3>> - find that your enormous breasts make it difficult to get a good look. Spreading them apart, you find your belly has been restored almost perfectly to the way it was prior to your pregnancy. - <<else>> - find your belly has been restored almost perfectly to the way it was prior to your pregnancy. - <</if>> - "So, good enough to show off?", asks the surgeon's assistant, seating herself beside you and tracing your navel with a finger. "It was a very simple procedure, so you're free to go whenever." She says, a crestfallen tone in her voice. - -<<case "ovulationRestart">> - After a few hours, you awaken in the recovery wing with a distinct soreness in your lower belly. You pull the covers off of yourself to catch sight of the result of the surgery and find - <<if $PC.boobsBonus == 3>> - find that your enormous breasts make it difficult to get a good look. Spreading them apart, you find nothing but a pair of small, stitched incisions over your ovaries. - <<else>> - find nothing but a pair of small, stitched incisions over your ovaries. - <</if>> - "Everything went well", says the surgeon's assistant, seating herself beside you and tracing your labia with a finger. "Now we won't know if they are functional until you have your first period. Funny hearing that again, right? Anyway, everything is hooked up so I'm sure you'll find out in a few weeks. So, how about a little warm up to get you ready?" She circles around till she is between your legs and disappears between your thighs. You feel face brush your inner legs as she brings her mouth to your cunt and begins to enthusiastically eat you out. She is quite good at her job and quickly brings you to climax; your pussy squirting girl cum across her face. She raises from your crotch and licks her lips. "As much as I'd like to really check your fertility, I lack the proper 'instruments' to do so and, well, I doubt you'd want me to be the father of your next child..." She faces the floor before turning back to you. "Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you settle back down to sleep off the rest of the anesthesia before returning to your arcology. - -<<default>> - You have surgery. This is a WIP, if you can't tell. - -<</switch>> \ No newline at end of file diff --git a/src/pregmod/saClothes.tw b/src/pregmod/saClothes.tw index 335f87c904c055266dfb97d2cd87bbf2881ad9bd..10d5e08d49a1497c82833cdac2527bc82d627ff6 100644 --- a/src/pregmod/saClothes.tw +++ b/src/pregmod/saClothes.tw @@ -836,7 +836,7 @@ <<if ($slaves[$i].buttplug != "none")>> <<if ($slaves[$i].buttplug == "plug") || ($slaves[$i].buttplug == "long plug")>> - <<if ["tail", "cat tail", "fox tail"].includes($slaves[$i].buttplugAttachment)>> + <<if ["tail", "cat tail", "fox tail", "cow tail"].includes($slaves[$i].buttplugAttachment)>> <<if $slaves[$i].fuckdoll == 0 && $slaves[$i].fetish != "mindbroken">> <<if $slaves[$i].anus < 1>> Constantly wearing a tail plug in $his virgin butthole @@.lime;stretches it out@@ and @@.gold;is a constant degrading reminder of $his submission.@@ @@ -874,7 +874,7 @@ <</if>> <</if>> <<elseif ($slaves[$i].buttplug == "large plug") || ($slaves[$i].buttplug == "long, large plug")>> - <<if ["tail", "cat tail", "fox tail"].includes($slaves[$i].buttplugAttachment)>> + <<if ["tail", "cat tail", "fox tail", "cow tail"].includes($slaves[$i].buttplugAttachment)>> <<if $slaves[$i].fuckdoll == 0 && $slaves[$i].fetish != "mindbroken">> <<if ($slaves[$i].anus < 2)>> The uncomfortable tailed plug in $his asshole @@ -940,7 +940,7 @@ <</if>> <</if>> <<elseif ($slaves[$i].buttplug == "huge plug") || ($slaves[$i].buttplug == "long, huge plug")>> - <<if ["tail", "cat tail", "fox tail"].includes($slaves[$i].buttplugAttachment)>> + <<if ["tail", "cat tail", "fox tail", "cow tail"].includes($slaves[$i].buttplugAttachment)>> <<if ($slaves[$i].anus < 4)>> <<if $slaves[$i].fuckdoll == 0 && $slaves[$i].fetish != "mindbroken">> <<if ($slaves[$i].sexualQuirk == "size queen")>> @@ -995,7 +995,7 @@ <</if>> <</if>> <<if $slaves[$i].fuckdoll == 0 && $slaves[$i].fetish != "mindbroken">> - <<if ["tail", "cat tail", "fox tail"].includes($slaves[$i].buttplugAttachment)>> + <<if ["tail", "cat tail", "fox tail", "cow tail"].includes($slaves[$i].buttplugAttachment)>> <<if ($slaves[$i].fetish == "humiliation") && ($slaves[$i].fetishKnown == 0)>> $He shows a surprising lack of resistance to the routine of having a tail inserted in $his ass each morning; $he seems to @@.lightcoral;naturally enjoy the humiliation.@@ <<set $slaves[$i].fetishKnown = 1>> diff --git a/src/pregmod/slaveAgeIntro.tw b/src/pregmod/slaveAgeIntro.tw index 14263347057ad2b08b2da66df20a77c94808bb8b..53f70838707fc6a98182af1e5d45f139495780d5 100644 --- a/src/pregmod/slaveAgeIntro.tw +++ b/src/pregmod/slaveAgeIntro.tw @@ -7,4 +7,4 @@ Do you want to see content involving girls younger than 18 in this game? [[No.|PC Body Intro][$minimumSlaveAge = 18, $pedo_mode = 0]] //All slaves will be at least 18 years old, and slavery of children will be illegal in the Free Cities.// <br>Yes, I wish to see girls as young as <<textbox "$minimumSlaveAge" $minimumSlaveAge "PC Body Intro">> [[Continue|PC Body Intro][$pedo_mode = 0]] <br>[[I just want lots of lolis.|PC Body Intro][$minimumSlaveAge = 3, $pedo_mode = 1]] //Nearly all randomly generated slaves will be under the age of 18, although custom slaves and slaves related to specific events may be older.// -<br>[[I wish to see them grow up and become fertile.|PC Body Intro][$minimumSlaveAge = 3, $pedo_mode = 0, $precociousPuberty = 1, $loliGrow = 0, $fertilityAge = 10, $potencyAge = 12, $seeAge = 1]] //Preset. Slaves' age will be random from minimal possible age. They can be made fertile younger than normal puberty age (10) in some cases, and grow up naturally.// +<br>[[I wish to see them grow up and become fertile.|PC Body Intro][$minimumSlaveAge = 3, $pedo_mode = 0, $precociousPuberty = 1, $loliGrow = 1, $fertilityAge = 10, $potencyAge = 12, $seeAge = 1]] //Preset. Slaves' age will be random from minimal possible age. They can be made fertile younger than normal puberty age (10) in some cases, and grow up naturally.// diff --git a/src/pregmod/widgets/seBirthWidgets.tw b/src/pregmod/widgets/seBirthWidgets.tw index 61a11745810d5ad6852f06fee1dff77118b12ed3..43788931301243f759ceeaf75cf249b240b7689a 100644 --- a/src/pregmod/widgets/seBirthWidgets.tw +++ b/src/pregmod/widgets/seBirthWidgets.tw @@ -208,40 +208,24 @@ <<if $slaves[$i].broodmother == 0 || $slaves[$i].broodmotherCountDown == 1>> <<if $slaves[$i].assignment != "work in the dairy">> <<if $universalRulesCSec == 1>> - <<Birth>> - <<else>> <<if $slaves[$i].amp != 1>> /* amps are always carried in time */ - <<if (random(1,20) > $suddenBirth) || ($universalRulesBirthing == 1)>> /* did she make it to her birthing area? */ Feeling childbirth approaching, <<if !canWalk($slaves[$i])>>$slaves[$i].slaveName is helped<<else>>$slaves[$i].slaveName makes $his way<</if>> to $his prepared birthing area. - <<Birth>> - <<else>> /* did not make it to birthing area */ - <<if (($birthDamage > 15 && random(1,100) > 50) || ($birthDamage > 20)) && ($slaves[$i].assignment != "be the Nurse" || $slaves[$i].assignment != "get treatment in the clinic")>> - <<DeadlyBirth>> - <<else>> - <<SuddenBirth>> - <</if>> /* closes deadly birth */ - <</if>> /* closes reg birth */ - <<else>> /* made it to birthing area */ With childbirth approaching, $slaves[$i].slaveName is carried to $his prepared birthing area. - <<AmpBirth>> - <</if>> /* close amp birth */ - <</if>> /* close always c-sec */ - <<else>> <br> <<if $dairyRestraintsSetting > 1 && $slaves[$i].career == "a bioreactor">> @@ -262,9 +246,7 @@ <</if>> <</if>> <</if>> /* close cow birth */ - <<else>> - <<if $slaves[$i].amp == 1>> With childbirth approaching, $slaves[$i].slaveName is carried to $his prepared birthing area. <<AmpBirth>> @@ -273,9 +255,7 @@ <<else>> <<HyperBroodmotherBirth>> <</if>> - <</if>> /* close broodmother birth */ - <<else>> /* Fuckdoll birth */ <<if $universalRulesCSec == 1>> <<set $csec = 1>> diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw index 2c6d17e4ab4d54631b556222b69392a1af65b28d..dd50b5ec9e7ddcf9b5452fd2ab65e3027e503a80 100644 --- a/src/uncategorized/BackwardsCompatibility.tw +++ b/src/uncategorized/BackwardsCompatibility.tw @@ -548,7 +548,7 @@ <<set $buttAccessibility = 0>> <</if>> <<if ndef $loliGrow>> - <<set $loliGrow = 1>> + <<set $loliGrow = 0>> <</if>> <<if ndef $ageMode>> <<set $ageMode = 0>> @@ -589,9 +589,6 @@ <<if ndef $EliteSires>> <<set $EliteSires = ["crazy", "futa", "moves", "preggo", "quick", "virgin"]>> <</if>> -<<if ndef $dyedSkin>> - <<set $dyedSkin = ["camouflage patterned", "dyed blue", "dyed gray", "dyed green", "dyed pink", "dyed red", "tiger striped"]>> -<</if>> <<if ndef $startingPoint>> <<set $startingPoint = -1>> <</if>> @@ -3445,10 +3442,14 @@ Setting missing slave variables: <<set $leaders[_leaderIdx] = _Slave>> <</if>> <</for>> -<<run App.Entity.Utils.SlaveDataSchemeCleanup($hostage)>> -<<run SlaveDatatypeCleanup($hostage)>> -<<run App.Entity.Utils.SlaveDataSchemeCleanup($slaveAfterRA)>> -<<run SlaveDatatypeCleanup($slaveAfterRA)>> +<<if $hostage !== 0>> + <<run App.Entity.Utils.SlaveDataSchemeCleanup($hostage)>> + <<run SlaveDatatypeCleanup($hostage)>> +<</if>> +<<if def $slaveAfterRA>> + <<run App.Entity.Utils.SlaveDataSchemeCleanup($slaveAfterRA)>> + <<run SlaveDatatypeCleanup($slaveAfterRA)>> +<</if>> Done<br> <<if $tanks.length > 0>> @@ -3888,6 +3889,14 @@ Done<br> <<unset $SlaveSummaryFiler>> <</if>> /* release 1044 */ +<<if $releaseID < 1047>> + <<if $loliGrow > 0>> + <<set $loliGrow = 1>> + <<else>> + <<set $loliGrow = 0>> + <</if>> +<</if>> + <<if $releaseID < App.Version.release>> <<set $releaseID = App.Version.release>> <</if>> @@ -3901,6 +3910,10 @@ Done<br> <<set $upgradeMultiplierMedicine = upgradeMultiplierMedicine()>> <<set $upgradeMultiplierTrade = upgradeMultiplierTrade()>> +<<if ndef $sideBarOptions>> + <<set $sideBarOptions = {Cash:1, Upkeep:1, SexSlaveCount:1, Rep:1, GSP:1, Authority:1, Security:1, Crime:1}>> +<</if>> + <<set $JobIDArray = resetJobIDArray()>> /* reset NaNArray after BC is run */ diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index ca05801b4955fa5d93959c6448140ca71ba5a8be..b9f7a40831381491d514bbfdd7829d071819dd80 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -5258,7 +5258,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He <<if $activeSlave.vagina == -2>> <br><<link "Surgically alter $his gender">> <<replace "#result2">> - You ask $him if $he enjoyed the last time $he used $his dick and if it was worth crossing you, because it will not happen again. Restrained as $he is, the most $he can do is cry and beg. Once $he comes to after the surgery, $he faces $his new body; @@.mediumorchid;$he's now a shemale@@ and $he's @@.gold;the only one to blame@@ for $his @@.red;suffering.@@ You waste no time in shoving $his against the wall and forcing your <<if $PC.dick == 1>>dick<<else>>strap-on<</if>> into $his virgin pussy. You use $him until you are satisfied and toss $him to the floor to think about $his new life. Every other rebellious slave is @@.gold;horrified by the example.@@ + You ask $him if $he enjoyed the last time $he used $his dick and if it was worth crossing you, because it will not happen again. Restrained as $he is, the most $he can do is cry and beg. Once $he comes to after the surgery, $he faces $his new body; @@.mediumorchid;$he's now a shemale@@ and $he's @@.gold;the only one to blame@@ for $his @@.red;suffering.@@ You waste no time in shoving $him against the wall and forcing your <<if $PC.dick == 1>>dick<<else>>strap-on<</if>> into $his virgin pussy. You use $him until you are satisfied and toss $him to the floor to think about $his new life. Every other rebellious slave is @@.gold;horrified by the example.@@ <<set $activeSlave.trust -= 30, $activeSlave.devotion -= 25, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.balls = 0, $activeSlave.scrotum = 0, $activeSlave.prostate = 0, $activeSlave.dickAccessory = "none", $activeSlave.vagina = 1, $activeSlave.chastityPenis = 0>> <<= VCheck.Vaginal()>> <<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 15; } })>> @@ -5328,7 +5328,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He <<if $activeSlave.vagina == -2>> <br><<link "Surgically alter $his gender">> <<replace "#result2">> - You ask $him if $he enjoyed the last time $he used $his dick and if it was worth crossing you, because it will not happen again. Restrained as $he is, the most $he can do is cry and beg. Once $he comes to after the surgery, $he faces $his new body; @@.mediumorchid;$he's now a shemale@@ and $he's @@.gold;the only one to blame@@ for $his @@.red;suffering.@@ You waste no time in shoving $his against the wall and forcing your <<if $PC.dick == 1>>dick<<else>>strap-on<</if>> into $his virgin pussy. You use $him until you are satisfied and toss $him to the floor to think about $his new life. Every other rebellious slave is @@.gold;horrified by the example.@@ + You ask $him if $he enjoyed the last time $he used $his dick and if it was worth crossing you, because it will not happen again. Restrained as $he is, the most $he can do is cry and beg. Once $he comes to after the surgery, $he faces $his new body; @@.mediumorchid;$he's now a shemale@@ and $he's @@.gold;the only one to blame@@ for $his @@.red;suffering.@@ You waste no time in shoving $him against the wall and forcing your <<if $PC.dick == 1>>dick<<else>>strap-on<</if>> into $his virgin pussy. You use $him until you are satisfied and toss $him to the floor to think about $his new life. Every other rebellious slave is @@.gold;horrified by the example.@@ <<set $activeSlave.trust -= 30, $activeSlave.devotion -= 25, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.balls = 0, $activeSlave.scrotum = 0, $activeSlave.prostate = 0, $activeSlave.dickAccessory = "none", $activeSlave.vagina = 1, $activeSlave.chastityPenis = 0>> <<= VCheck.Vaginal()>> <<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 15; } })>> @@ -9786,7 +9786,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He seed fill $his cramped womb and start to backflow. <</if>> <<elseif $PC.balls == 2>> - seed pumping into $his until $his womb is stuffed with cum. + seed pumping into $him until $his womb is stuffed with cum. <<elseif $PC.balls == 1>> seed pouring into $him. <<else>> @@ -18942,7 +18942,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He <<else>> You <</if>> - tear the clothes off $him. You force yourself in between $his legs as $he struggles to get $his breath back, and $he gets another good look at the formidable dick that's about to be slammed inside $his<<if $activeSlave.belly >= 5000>> before it disappears beneath $his <<if $activeSlave.bellyPreg >= 3000>>pregnant<<else>>_belly<</if>> belly<</if>>. $His eyes go wide with fear, and you enhance the effect by smacking yourself against + tear the clothes off $him. You force yourself in between $his legs as $he struggles to get $his breath back, and $he gets another good look at the formidable dick that's about to be slammed inside $him<<if $activeSlave.belly >= 5000>> before it disappears beneath $his <<if $activeSlave.bellyPreg >= 3000>>pregnant<<else>>_belly<</if>> belly<</if>>. $His eyes go wide with fear, and you enhance the effect by smacking yourself against <<if canDoVaginal($activeSlave)>> $his <<if $activeSlave.vagina == 0>> diff --git a/src/uncategorized/bodyModification.tw b/src/uncategorized/bodyModification.tw index 342414409d44f409e86b65608e0dbf4bbe74976d..5d38d1389899dc1290a55e29825301f53790f274 100644 --- a/src/uncategorized/bodyModification.tw +++ b/src/uncategorized/bodyModification.tw @@ -845,7 +845,7 @@ Custom Tats: <<if $activeSlave.buttTat == 0>> <br> - Give $him a custom butt tattoo (lower back tattoo): <<textbox "$activeSlave.buttTat" $activeSlave.buttTat "Slave Interact">> + Give $him a custom butt tattoo: <<textbox "$activeSlave.buttTat" $activeSlave.buttTat "Slave Interact">> <</if>> <<if $activeSlave.dickTat == 0 && $activeSlave.dick != 0>> @@ -860,7 +860,7 @@ Custom Tats: <<if $activeSlave.anusTat == 0>> <br> - Give $him a custom anus tattoo (lower back tattoo): <<textbox "$activeSlave.anusTat" $activeSlave.anusTat "Slave Interact">> + Give $him a custom anus tattoo: <<textbox "$activeSlave.anusTat" $activeSlave.anusTat "Slave Interact">> <</if>> <<if $activeSlave.legsTat == 0 && $activeSlave.amp != 1>> @@ -929,8 +929,14 @@ Use ''$brandDesign.local'' or choose another brand: <<if ($arcologies[0].FSSubjugationist != "unset") && ($activeSlave.race == $arcologies[0].FSSubjugationistRace)>> | //FS// [[Racial Slur|Body Modification][$brandDesign.local = "a racial slur"]] <</if>> +<<if ($arcologies[0].FSIntellectualDependency != "unset")>> + | //FS// [[Scores|Body Modification][$brandDesign.local = "how much sex $he needs per day"]] +<</if>> +<<if ($arcologies[0].FSSlaveProfessionalism != "unset")>> + | //FS// [[Scores|Body Modification][$brandDesign.local = "$his average slave aptitude test scores"]] +<</if>> <<if ($arcologies[0].FSRepopulationFocus != "unset")>> - | //FS// [[Birth Count|Body Modification][$brandDesign.local = "the number of children "+$he+" has birthed"]] + | //FS// [[Birth Count|Body Modification][$brandDesign.local = "the number of children $he has birthed"]] <</if>> <<if ($arcologies[0].FSGenderRadicalist != "unset") || ($arcologies[0].FSGenderFundamentalist != "unset")>> | //FS// [[Gender Symbol|Body Modification][$brandDesign.local = "a gender symbol"]] @@ -956,8 +962,12 @@ Use ''$brandDesign.local'' or choose another brand: <<if ($arcologies[0].FSSlimnessEnthusiast != "unset")>> | //FS// [[Breast Floor|Body Modification][$brandDesign.local = "$his absolute minimum breast size"]] <</if>> +<<if ($arcologies[0].FSPetiteAdmiration != "unset") || ($arcologies[0].FSStatuesqueGlorification != "unset")>> + | //FS// [[Current height|Body Modification][$brandDesign.local = "$his current height"]] +<</if>> <<if ($arcologies[0].FSAssetExpansionist != "unset")>> - | //FS// [[Breast Ceiling|Body Modification][$brandDesign.local = "$his absolute maximum breast size"]] <</if>> + | //FS// [[Breast Ceiling|Body Modification][$brandDesign.local = "$his absolute maximum breast size"]] +<</if>> <<if ($arcologies[0].FSHedonisticDecadence != "unset")>> | //FS// [[Weight Record|Body Modification][$brandDesign.local = "$his highest weigh-in"]] <</if>> @@ -1020,7 +1030,7 @@ Choose a site for branding: /* Arms*/ | [[Shoulders|Body Modification][$brandTarget.local = "shoulder"]] -<<if $activeSlave.amp == 0>> +<<if $activeSlave.amp == 0 && $activeSlave.missingArms != 3>> | [[Arm, upper|Body Modification][$brandTarget.local = "upper arm"]] | [[Arm, lower|Body Modification][$brandTarget.local = "lower arm"]] | [[Wrists|Body Modification][$brandTarget.local = "wrist"]] @@ -1029,7 +1039,7 @@ Choose a site for branding: /* Legs */ | [[Buttocks|Body Modification][$brandTarget.local = "buttock"]] -<<if $activeSlave.amp == 0>> +<<if $activeSlave.amp == 0 && $activeSlave.missingLegs != 3>> | [[Thighs|Body Modification][$brandTarget.local = "thigh"]] | [[Calves|Body Modification][$brandTarget.local = "calf"]] | [[Ankles|Body Modification][$brandTarget.local = "ankle"]] diff --git a/src/uncategorized/buildingWidgets.tw b/src/uncategorized/buildingWidgets.tw index 8d9161280b8b3d1d3116ba7637981e6dda4afae4..f8c7b5211eedfd38e699a436d319b84e22ea07d6 100644 --- a/src/uncategorized/buildingWidgets.tw +++ b/src/uncategorized/buildingWidgets.tw @@ -206,7 +206,7 @@ if(!Macro.has('sectorblock')) { <<set $price = 1000*Math.trunc($arcologies[0].prosperity*(1+($arcologies[0].demandFactor/100)))>> Selling this sector would relinquish a 4% interest in $arcologies[0].name. Such an interest is worth <<print cashFormat($price)>>. <<if $arcologies[0].ownership >= 4>> - [[Sell|Main][cashX($price, "capEx"), $arcologies[0].ownership -= 4, $arcologies[0].demandFactor += 40, $sectors[$AS].ownership = 0]] + [[Sell|Main][cashX($price, "capEx"), $arcologies[0].ownership -= 4, $arcologies[0].demandFactor -= 20, $sectors[$AS].ownership = 0]] <</if>> <</widget>> diff --git a/src/uncategorized/buySlaves.tw b/src/uncategorized/buySlaves.tw index d006c95f96f0e97d8a8cacc52e198c0df3256c59..6489b748fcbdaa4351a7b0efcd68f329b9d18481 100644 --- a/src/uncategorized/buySlaves.tw +++ b/src/uncategorized/buySlaves.tw @@ -91,17 +91,17 @@ Slave supply is <</if>> <<if ($cheatMode) && ($cheatModeM)>> <span id="menialSupplyFactor"> - @@.yellowgreen;Slave Supply@@ - | <<print $menialSupplyFactor>> + @@.yellowgreen;Slave Supply@@ + | <<print $menialSupplyFactor>> </span> <<set _TmenialSupplyFactor = $menialSupplyFactor>> <<textbox "_TmenialSupplyFactor" _TmenialSupplyFactor>> <<link "Apply">> - <<set $menialSupplyFactor = Math.clamp(Math.trunc(Number(_TmenialSupplyFactor)),-50000,50000) || $menialSupplyFactor, $cheater = 1>> - <<replace "#menialSupplyFactor">> - @@.yellowgreen; Slave Supply@@ - | <<print $menialSupplyFactor>> - <</replace>> + <<set $menialSupplyFactor = Math.clamp(Math.trunc(Number(_TmenialSupplyFactor)),-50000,50000) || $menialSupplyFactor, $cheater = 1>> + <<replace "#menialSupplyFactor">> + @@.yellowgreen; Slave Supply@@ + | <<print $menialSupplyFactor>> + <</replace>> <</link>> <</if>> @@ -120,18 +120,18 @@ Slave supply is <br>[[The Flesh Heap|Slave Markets][$slaveMarket = "heap", $slavesSeen += 1]] | //Broken and discarded slaves. Near useless, but cheap. No longer does bulk orders after complaints.// <<if $bodyswapAnnounced == 1>> -<br>[[Order a custom husk slave from the Flesh Heap|Husk Slave]] | //Will need to be used on arrival.// + <br>[[Order a custom husk slave from the Flesh Heap|Husk Slave]] | //Will need to be used on arrival.// <</if>> <<if ($rep > 500)>> -<br>[[Kidnappers' Market|Slave Markets][$slaveMarket = "kidnappers", $slavesSeen += 1]] | -<<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = "kidnappers", $introType = "bulk", $numSlaves = 5]] | -<</if>> -<<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = "kidnappers", $introType = "bulk", $numSlaves = 10]] | -<</if>> -//Slaves will tend to be low quality and resistant.// + <br>[[Kidnappers' Market|Slave Markets][$slaveMarket = "kidnappers", $slavesSeen += 1]] | + <<if $cash > _minimumFive>> + [[(x5)|Bulk Slave Generate][$slaveMarket = "kidnappers", $introType = "bulk", $numSlaves = 5]] | + <</if>> + <<if $cash > _minimumTen>> + [[(x10)|Bulk Slave Generate][$slaveMarket = "kidnappers", $introType = "bulk", $numSlaves = 10]] | + <</if>> + //Slaves will tend to be low quality and resistant.// <</if>> <br>''Neighboring Arcologies:'' //The arcology's prosperity and culture will affect slaves who have lived there.// @@ -289,7 +289,6 @@ Slave supply is [[(x10)|Bulk Slave Generate][$slaveMarket = "HA", $introType = "bulk", $numSlaves = 10]] | <</if>> //High quality slaves of powerful physique and refined skills.//<<if $HA.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> - <</if>> <<if ($seeDicks != 0)>> <br> [[L'École des Enculées][$slavesSeen += 1]] | @@ -431,22 +430,22 @@ The market price of menials is <<print cashFormat(_menialPrice)>>. <<if $menials >= 1>> <<if _optionsBreak>>|<</if>> [[Sell|Buy Slaves][$menials-=1,$menialDemandFactor-=1,cashX(_menialPrice, "menialTransfer")]] -<<if $menials >= 10>> - [[(x10)|Buy Slaves][$menials-=10,$menialDemandFactor-=10,cashX(((menialSlaveCost(-10))*10), "menialTransfer")]] -<<if $menials >= 100>> - [[(x100)|Buy Slaves][$menials-=100,$menialDemandFactor-=100,cashX(((menialSlaveCost(-100))*100), "menialTransfer")]] -<</if>> -<</if>> -[[(all)|Buy Slaves][cashX(($menials*(menialSlaveCost(-$menials))), "menialTransfer"),$menialDemandFactor-=$menials,$menials = 0]] + <<if $menials >= 10>> + [[(x10)|Buy Slaves][$menials-=10,$menialDemandFactor-=10,cashX(((menialSlaveCost(-10))*10), "menialTransfer")]] + <<if $menials >= 100>> + [[(x100)|Buy Slaves][$menials-=100,$menialDemandFactor-=100,cashX(((menialSlaveCost(-100))*100), "menialTransfer")]] + <</if>> + <</if>> + [[(all)|Buy Slaves][cashX(($menials*(menialSlaveCost(-$menials))), "menialTransfer"),$menialDemandFactor-=$menials,$menials = 0]] <<if $arcologies[0].FSPaternalist == "unset">> <<if $arcadeUpgradeFuckdolls > 0>> <<set _fconvertCost = 100>> <br> [[Convert to Fuckdoll|Buy Slaves][$menials-=1,$fuckdolls+=1,cashX(forceNeg(_fconvertCost), "menialTransfer")]] <<if $menials >= 10>> [[(x10)|Buy Slaves][$menials-=10,$fuckdolls+=10,cashX(forceNeg(10*(_fconvertCost)), "menialTransfer")]] - <<if $menials >= 100>> - [[(x100)|Buy Slaves][$menials-=100,$fuckdolls+=100,cashX(forceNeg(100*(_fconvertCost)), "menialTransfer")]] - <</if>> + <<if $menials >= 100>> + [[(x100)|Buy Slaves][$menials-=100,$fuckdolls+=100,cashX(forceNeg(100*(_fconvertCost)), "menialTransfer")]] + <</if>> <</if>> [[(all)|Buy Slaves][$fuckdolls+=$menials,cashX(forceNeg((_fconvertCost)*($menials)), "menialTransfer"),$menials=0]] //Conversion costs <<print cashFormat(_fconvertCost)>> each// @@ -455,9 +454,9 @@ The market price of menials is <<print cashFormat(_menialPrice)>>. <br> [[Convert to Bioreactor|Buy Slaves][$menials-=1,$menialBioreactors+=1,cashX(-100, "menialTransfer")]] <<if $menials >= 10>> [[(x10)|Buy Slaves][$menials-=10,$menialBioreactors+=10,cashX(-1000, "menialTransfer")]] - <<if $menials >= 100>> - [[(x100)|Buy Slaves][$menials-=100,$menialBioreactors+=100,cashX(-10000, "menialTransfer")]] - <</if>> + <<if $menials >= 100>> + [[(x100)|Buy Slaves][$menials-=100,$menialBioreactors+=100,cashX(-10000, "menialTransfer")]] + <</if>> <</if>> [[(all)|Buy Slaves][$menialBioreactors+=$menials,cashX(forceNeg(500*$menials), "menialTransfer"),$menials=0]] //Conversion costs <<print cashFormat(500)>> each// @@ -473,35 +472,35 @@ The market price of menials is <<print cashFormat(_menialPrice)>>. <br>You do not own any standard Fuckdolls. <</if>> <<if ($fuckdolls > 0) || ($arcologies[0].FSPaternalist == "unset")>> -The market price of standard Fuckdolls is <<print cashFormat(_menialPrice)>>. -<<set _optionsBreak = 0>> -<<if _bulkMax > 0>> -<<if $arcologies[0].FSPaternalist == "unset" && $cash > _menialPrice>> - [[Buy|Buy Slaves][$fuckdolls+=1,$menialSupplyFactor-=1,cashX(forceNeg(_menialPrice), "fuckdollsTransfer")]] - <<if $cash > menialSlaveCost(10)*10>> - [[(x10)|Buy Slaves][$fuckdolls+=10,$menialSupplyFactor-=10,cashX(forceNeg(menialSlaveCost(10)*10), "fuckdollsTransfer")]] + The market price of standard Fuckdolls is <<print cashFormat(_menialPrice)>>. + <<set _optionsBreak = 0>> + <<if _bulkMax > 0>> + <<if $arcologies[0].FSPaternalist == "unset" && $cash > _menialPrice>> + [[Buy|Buy Slaves][$fuckdolls+=1,$menialSupplyFactor-=1,cashX(forceNeg(_menialPrice), "fuckdollsTransfer")]] + <<if $cash > menialSlaveCost(10)*10>> + [[(x10)|Buy Slaves][$fuckdolls+=10,$menialSupplyFactor-=10,cashX(forceNeg(menialSlaveCost(10)*10), "fuckdollsTransfer")]] + <</if>> + <<if $cash > menialSlaveCost(100)*100>> + [[(x100)|Buy Slaves][$fuckdolls+=100,$menialSupplyFactor-=100,cashX(forceNeg(menialSlaveCost(100)*100), "fuckdollsTransfer")]] + <</if>> + <<if $cash > ((_menialPrice+1)*2)>> + [[(max)|Buy Slaves][$fuckdolls+=Math.trunc(Math.clamp($cash/_menialPrice,0,_bulkMax)),$menialSupplyFactor-=Math.trunc(Math.clamp($cash/_menialPrice,0,_bulkMax)),cashX(forceNeg(Math.trunc(Math.clamp($cash/_menialPrice,0,_bulkMax))*_menialPrice), "fuckdollsTransfer")]] + <</if>> + //Bulk transactions may require offering a premium.// + <<set _optionsBreak = 1>> + <</if>> <</if>> - <<if $cash > menialSlaveCost(100)*100>> - [[(x100)|Buy Slaves][$fuckdolls+=100,$menialSupplyFactor-=100,cashX(forceNeg(menialSlaveCost(100)*100), "fuckdollsTransfer")]] + <<if $fuckdolls >= 1>> + <<if _optionsBreak>>|<</if>> + [[Sell|Buy Slaves][$fuckdolls-=1,$menialDemandFactor-=1,cashX(_menialPrice, "fuckdollsTransfer")]] + <<if $fuckdolls >= 10>> + [[(x10)|Buy Slaves][$fuckdolls-=10,$menialDemandFactor-=10,cashX((menialSlaveCost(-10)*10), "fuckdollsTransfer")]] + <<if $fuckdolls >= 100>> + [[(x100)|Buy Slaves][$fuckdolls-=100,$menialDemandFactor-=100,cashX((menialSlaveCost(-100)*100), "fuckdollsTransfer")]] + <</if>> <</if>> - <<if $cash > ((_menialPrice+1)*2)>> - [[(max)|Buy Slaves][$fuckdolls+=Math.trunc(Math.clamp($cash/_menialPrice,0,_bulkMax)),$menialSupplyFactor-=Math.trunc(Math.clamp($cash/_menialPrice,0,_bulkMax)),cashX(forceNeg(Math.trunc(Math.clamp($cash/_menialPrice,0,_bulkMax))*_menialPrice), "fuckdollsTransfer")]] + [[(all)|Buy Slaves][cashX($fuckdolls*(menialSlaveCost(-$fuckdolls), "fuckdollsTransfer")),$menialDemandFactor-=$fuckdolls,$fuckdolls = 0]] <</if>> - //Bulk transactions may require offering a premium.// - <<set _optionsBreak = 1>> -<</if>> -<</if>> -<<if $fuckdolls >= 1>> - <<if _optionsBreak>>|<</if>> - [[Sell|Buy Slaves][$fuckdolls-=1,$menialDemandFactor-=1,cashX(_menialPrice, "fuckdollsTransfer")]] -<<if $fuckdolls >= 10>> - [[(x10)|Buy Slaves][$fuckdolls-=10,$menialDemandFactor-=10,cashX((menialSlaveCost(-10)*10), "fuckdollsTransfer")]] -<<if $fuckdolls >= 100>> - [[(x100)|Buy Slaves][$fuckdolls-=100,$menialDemandFactor-=100,cashX((menialSlaveCost(-100)*100), "fuckdollsTransfer")]] -<</if>> -<</if>> -[[(all)|Buy Slaves][cashX($fuckdolls*(menialSlaveCost(-$fuckdolls), "fuckdollsTransfer")),$menialDemandFactor-=$fuckdolls,$fuckdolls = 0]] -<</if>> <</if>> <<if $menialBioreactors > 1>> @@ -512,34 +511,34 @@ The market price of standard Fuckdolls is <<print cashFormat(_menialPrice)>>. <br>You do not own any standard bioreactors. <</if>> <<if ($menialBioreactors > 0) || ($arcologies[0].FSPaternalist == "unset")>> -The market price of standard bioreactors is <<print cashFormat((_menialPrice-100))>>. -<<set _optionsBreak = 0>> -<<if _bulkMax > 0>> -<<if $arcologies[0].FSPaternalist == "unset" && $cash > _menialPrice+100>> - [[Buy|Buy Slaves][$menialBioreactors+=1,$menialSupplyFactor-=1,cashX(forceNeg(_menialPrice+100), "menialBioreactors")]] - <<if $cash > (menialSlaveCost(10)-100)*10>> - [[(x10)|Buy Slaves][$menialBioreactors+=10,$menialSupplyFactor-=10,cashX(forceNeg((menialSlaveCost(10)-100)*10), "menialBioreactors")]] - <</if>> - <<if $cash > (menialSlaveCost(100)-100)*100>> - [[(x100)|Buy Slaves][$menialBioreactors+=100,$menialSupplyFactor-=100,cashX(forceNeg((menialSlaveCost(100)-100)*100), "menialBioreactors")]] + The market price of standard bioreactors is <<print cashFormat((_menialPrice-100))>>. + <<set _optionsBreak = 0>> + <<if _bulkMax > 0>> + <<if $arcologies[0].FSPaternalist == "unset" && $cash > _menialPrice+100>> + [[Buy|Buy Slaves][$menialBioreactors+=1,$menialSupplyFactor-=1,cashX(forceNeg(_menialPrice+100), "menialBioreactors")]] + <<if $cash > (menialSlaveCost(10)-100)*10>> + [[(x10)|Buy Slaves][$menialBioreactors+=10,$menialSupplyFactor-=10,cashX(forceNeg((menialSlaveCost(10)-100)*10), "menialBioreactors")]] + <</if>> + <<if $cash > (menialSlaveCost(100)-100)*100>> + [[(x100)|Buy Slaves][$menialBioreactors+=100,$menialSupplyFactor-=100,cashX(forceNeg((menialSlaveCost(100)-100)*100), "menialBioreactors")]] + <</if>> + <<if $cash > (_menialPrice-99)*2>> + <<set _bioreactorBulkPremium = Math.trunc(1+ Math.clamp($cash/(_menialPrice-99),0,_bulkMax)/400)>> + [[(max)|Buy Slaves][$menialBioreactors+=Math.trunc(Math.clamp($cash/(_menialPrice-99+_bioreactorBulkPremium),0,_bulkMax)),$menialSupplyFactor-=Math.trunc(Math.clamp($cash/(_menialPrice-99+_bioreactorBulkPremium),0,_bulkMax)),cashX(forceNeg(Math.trunc(Math.clamp($cash/(_menialPrice-99+_bioreactorBulkPremium),0,_bulkMax))*(_menialPrice-99+_bioreactorBulkPremium)), "menialBioreactors")]] + <</if>> + //Bulk transactions may require offering a premium.// + <<set _optionsBreak = 1>> + <</if>> <</if>> - <<if $cash > (_menialPrice-99)*2>> - <<set _bioreactorBulkPremium = Math.trunc(1+ Math.clamp($cash/(_menialPrice-99),0,_bulkMax)/400)>> - [[(max)|Buy Slaves][$menialBioreactors+=Math.trunc(Math.clamp($cash/(_menialPrice-99+_bioreactorBulkPremium),0,_bulkMax)),$menialSupplyFactor-=Math.trunc(Math.clamp($cash/(_menialPrice-99+_bioreactorBulkPremium),0,_bulkMax)),cashX(forceNeg(Math.trunc(Math.clamp($cash/(_menialPrice-99+_bioreactorBulkPremium),0,_bulkMax))*(_menialPrice-99+_bioreactorBulkPremium)), "menialBioreactors")]] + <<if $menialBioreactors >= 1>> + <<if _optionsBreak>>|<</if>> + [[Sell|Buy Slaves][$menialBioreactors-=1,$menialDemandFactor-=1,cashX((_menialPrice-100), "menialBioreactors")]] + <<if $menialBioreactors >= 10>> + [[(x10)|Buy Slaves][$menialBioreactors-=10,$menialDemandFactor-=10,cashX(((menialSlaveCost(-10)-100)*10), "menialBioreactors")]] + <<if $menialBioreactors >= 100>> + [[(x100)|Buy Slaves][$menialBioreactors-=100,$menialDemandFactor-=100,cashX(((menialSlaveCost(-100)-100)*100), "menialBioreactors")]] + <</if>> + <</if>> + [[(all)|Buy Slaves][cashX(($menialBioreactors*(menialSlaveCost(-$menialBioreactors)-100)), "menialBioreactors"),$menialDemandFactor-=$menialBioreactors,$menialBioreactors = 0]] <</if>> - //Bulk transactions may require offering a premium.// - <<set _optionsBreak = 1>> -<</if>> -<</if>> -<<if $menialBioreactors >= 1>> - <<if _optionsBreak>>|<</if>> - [[Sell|Buy Slaves][$menialBioreactors-=1,$menialDemandFactor-=1,cashX((_menialPrice-100), "menialBioreactors")]] -<<if $menialBioreactors >= 10>> - [[(x10)|Buy Slaves][$menialBioreactors-=10,$menialDemandFactor-=10,cashX(((menialSlaveCost(-10)-100)*10), "menialBioreactors")]] -<<if $menialBioreactors >= 100>> - [[(x100)|Buy Slaves][$menialBioreactors-=100,$menialDemandFactor-=100,cashX(((menialSlaveCost(-100)-100)*100), "menialBioreactors")]] -<</if>> -<</if>> -[[(all)|Buy Slaves][cashX(($menialBioreactors*(menialSlaveCost(-$menialBioreactors)-100)), "menialBioreactors"),$menialDemandFactor-=$menialBioreactors,$menialBioreactors = 0]] -<</if>> <</if>> diff --git a/src/uncategorized/fsDevelopments.tw b/src/uncategorized/fsDevelopments.tw index c11d0e860b302238a95a02f3e3db4d7e5b493bb8..9a32541d5bbe549480e37a236e1a59a368aed664 100644 --- a/src/uncategorized/fsDevelopments.tw +++ b/src/uncategorized/fsDevelopments.tw @@ -95,7 +95,7 @@ /* Spending, terrain, rep effects */ <<set _broadProgress = 0>> <<if $SF.Toggle && $SF.Active >= 1 && $SF.UC.Assign > 0 && $SF.UC.num > 0>> - Assigning a <<if $SF.UC.Assign === 1>>small<<else>>large<</if>> portion of $SF.Lower to undercover work helps forward your goals for your arcology's future. + Assigning a <<if $SF.UC.Assign === 1>>small<<else>>large<</if>> portion of $SF.Lower to undercover work helps to advance your cultural goals. <<set _broadProgress += $SF.UC.num/100>> <br> <</if>> <<if $FSSpending > 1>> diff --git a/src/uncategorized/main.tw b/src/uncategorized/main.tw index 2a77be60d671d8fe1f36755cfa8c5b0b2c6f8456..189226f8c0e713896e19c89c58620ad1f90b6c0e 100644 --- a/src/uncategorized/main.tw +++ b/src/uncategorized/main.tw @@ -1,13 +1,15 @@ :: Main [nobr] -<<if $releaseID >= 1000 || $ver.includes("0.9") || $ver.includes("0.8") || $ver.includes("0.7") || $ver.includes("0.6")>> - <<if $releaseID >= 1046>> +<<if $releaseID >= 1000 || ["0.9", "0.8", "0.7", "0.6"].includes($ver)>> + <<if $releaseID >= 1047>> + <<elseif $releaseID < 1047 && ndef $sideBarOptions>> + ''@@.red;INCOMPATIBILITY WARNING:@@'' your saved game was created using version $ver build $releaseID. Due to major changes to the side bar, you must run [[backwards compatibility|Backwards Compatibility]]. <<elseif $releaseID < 1046>> - ''@@.red;INCOMPATIBILITY WARNING:@@'' your saved game was created using version $ver build $releaseID. Due to a major changes to the Rules Assistant data scheme, you must run [[backwards compatibility|Backwards Compatibility]]. + ''@@.red;INCOMPATIBILITY WARNING:@@'' your saved game was created using version $ver build $releaseID. Due to major changes to the Rules Assistant data scheme, you must run [[backwards compatibility|Backwards Compatibility]]. <<elseif $releaseID < 1031>> ''@@.red;INCOMPATIBILITY WARNING:@@'' your saved game was created using version $ver build $releaseID. Due to a major overhaul to intelligence and education, it is advisable to run backwards compatibility. <<elseif $releaseID >= 1022 && ndef $SF>> - ''@@.red;INCOMPATIBILITY WARNING:@@'' your saved game was created using version $ver build $releaseID. Due to a major changes to the Security Force Mod, you must run backwards compatibility. + ''@@.red;INCOMPATIBILITY WARNING:@@'' your saved game was created using version $ver build $releaseID. Due to major changes to the Security Force Mod, you must run backwards compatibility. <<elseif $releaseID >= 1022>> <<elseif $releaseID >= 1019>> ''@@.red;INCOMPATIBILITY WARNING:@@'' your saved game was created using version $ver build $releaseID. Due to a major change to nationality weighting, you must run backwards compatibility. diff --git a/src/uncategorized/newSlaveIntro.tw b/src/uncategorized/newSlaveIntro.tw index 2cb5c881cf8c99e41685706b0dfe4083d37fc76c..15439cfd5a92e46af9d9ea54024aa7406f5fcdfe 100644 --- a/src/uncategorized/newSlaveIntro.tw +++ b/src/uncategorized/newSlaveIntro.tw @@ -1251,7 +1251,6 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' << <<link "Implant $him with slow release lactation drugs">> <<replace "#introResult">> You <<if $activeSlave.devotion > 20>> guide the compliant $desc <<else>>have the $desc restrained and brought<</if>> to the remote surgery. The procedure is quick and @@.red;minimally invasive@@<<set $activeSlave.health -= 10>>. Once the process is complete and the anesthesia subsides $he begins to feel a rising pressure within $his <<if $activeSlave.boobs > 2000 >>gigantic udders<<elseif $activeSlave.boobs > 900>>plentiful bosom<<elseif $activeSlave.boobs > 400>>healthy breasts<<else>>small breasts<</if>>. You then <<if $activeSlave.devotion > 20>>instruct $him to rest<<else>>have $him restrained<</if>> beside your desk until further notice. After a few hours $his increasing discomfort becomes obvious, and white droplets begin to appear across $his nipples and areola. - <<if $activeSlave.devotion > 20>> <<if $activeSlave.fetish == "boobs">> <<if $activeSlave.fetishKnown == 0>> @@ -1669,59 +1668,59 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' << <</replace>> <</link>> <<if $PC.preg >= 28>> - <<if $PC.pregMood == 2 && canPenetrate($activeSlave)>> - | - <<link "$He has a dick and you need it">> - <<replace "#introResult">> - You aggressively approach $activeSlave.slaveName, forcing your pregnancy directly into $his <<if $activeSlave.height > 175>>stomach<<elseif $activeSlave.height < 155>>face<<else>>chest<</if>> until $he has no choice but to be pushed to the ground. You quickly straddle $his face, forcing your oozing cunt over $his mouth as you eagerly stroke $his cock to full length. - <<if $activeSlave.fetish == "pregnancy">> - $He groans with disappointment as your pregnant pussy leaves $his reach, though $his displeasure is short lived as you greedily take $his entire dick into your aching snatch. You ride $him mercilessly, frequently smacking $him with your heavy belly. $He loves every minute of it, especially when $he feels your body tense up as $he lets loose $his load deep into you. Where most slaves would be begging for mercy, $he @@.hotpink;eagerly complies@@ as you adjust yourself and begin round two. You don't know what came over you, but when you wake up, you find $he's resting peacefully under your gravid mass. <<if $activeSlave.fetishKnown == 0>>It seems $he likes @@.green;being a pregnant _womanP's plaything.@@<<set $activeSlave.fetishKnown = 1>><<else>>You knew $he had a pregnancy fetish and the look on $his face confirms it.<</if>> A kick from within startles you from your thoughts; it would appear your child<<if $PC.pregType > 1>>ren<</if>> agree<<if $PC.pregType == 1>>s<</if>> that you'll have to have another ride sometime. - <<set $activeSlave.devotion += 15>> - <<else>> - $He coughs as your pregnant pussy vacates $his face, though $his relief is short lived as you greedily slam yourself down onto $his waiting dick. You ride $him mercilessly, frequently smacking $him with your heavy belly. $He hates every minute of it, choosing to alternate between begging you to stop and just openly weeping. You cum hard as you watch the look on $his face as $he unwillingly cums deep inside you. $He cries out in protest as you continue raping $him, but you don't care. All that matters is your satisfaction. This continues until you pass out from orgasmic exhaustion with $him still inside you. You are eventually awoken by $his desperate struggle to escape from beneath your gravid mass; $he quickly regrets $his choices as you remount $him for one last go. $He now @@.hotpink;better understands $his place as a toy@@ and is @@.gold;terrified@@ of your insatiable lust. - <<set $activeSlave.devotion += 5, $activeSlave.trust -= 15>> - <</if>> - <<set $activeSlave.counter.penetrative += 5, $penetrativeTotal += 5>> - <<set $activeSlave.counter.oral++, $oralTotal++>> - <</replace>> - <</link>> - <<elseif $PC.pregMood == 1 && $PC.lactation > 0>> - | - <<link "Take $him to your breast">> - <<replace "#introResult">> - You calmly approach $activeSlave.slaveName, pulling $him into a soothing embrace against your - <<if $PC.boobsBonus > 2>> - enormous<<if $PC.boobsImplant == 1>>, fake<</if>>, milk laden breasts. - <<elseif $PC.boobsBonus == 2>> - huge<<if $PC.boobsImplant == 1>>, fake<</if>>, milk laden breasts. - <<elseif $PC.boobsBonus == 1>> - large<<if $PC.boobsImplant == 1>>, fake<</if>>, milk laden breasts. - <<elseif $PC.boobsBonus == -1>> - milk laden breasts. - <<elseif $PC.boobsBonus == -2>> - small, milk laden breasts. - <<elseif $PC.boobsBonus == -3>> - tiny, milk laden breasts. - <<elseif $PC.boobs == 1>> - big, milk laden breasts. - <<else>> - milk swollen chest. - <</if>> - $He tries to squirm away from the moist spot growing under $his cheek, but you reveal your nipple and carefully direct $his mouth over it. - <<if $activeSlave.fetish == "pregnancy">> - Slowly $he begins to suckle from your swollen breast. You gently brush $his head as you try to hold back your pleasure, a wasted effort as a hand sneaks its way to your <<if $PC.dick == 1>>growing erection and enthusiastically begins pumping away. You clutch your pervy $girl closer to you as $he caresses your pregnancy with one hand and gets you off with the other<<else>>wet pussy and enthusiastically begins rubbing your clit. You clutch your pervy $girl closer to you as $he caresses your pregnancy with one hand and gets you off with the other<</if>>. Before long you find yourself bucking your hips with lust, a queue for you to release $him from your nipple so $he may slide down your gravid dome of a belly to finish you off. Happy to serve $his pregnant <<= WrittenMaster($activeSlave)>>, $he returns to your chest, happy to relieve you of the pressure building in your neglected breast. <<if $activeSlave.fetishKnown == 0>>Judging by that show, @@.green;$he savors getting to be with a pregnant _womanP.@@<<set $activeSlave.fetishKnown = 1>><<else>>You knew $he had a pregnancy fetish and $his eagerness to serve a pregnant _womanP proves that.<</if>> A kick from within startles you from your thoughts; as you reach to soothe your child<<if $PC.pregType > 1>>ren<</if>>, you find your new slave @@.mediumaquamarine;already doting on them.@@ $He's already starting to @@.hotpink;show understanding of $his place.@@ - <<set $activeSlave.devotion += 15, $activeSlave.trust += 15>> - <<elseif $activeSlave.fetish == "boobs">> - Eagerly $he begins to suckle from your swollen breast. You gently brush $his head as you try to hold back your pleasure, a wasted effort as a hand sneaks its way to your neglected breast. $He massages it, careful not to encourage your lactation too much, as $he greedily sucks you dry. $He wastes no time in swapping to your other nipple, shifting $his ministrations to the one the just left. By the time your reserves are tapped out, both you and $he are quite content. You permit $him to rest against your chest for a little before you send $him on $his way. <<if $activeSlave.fetishKnown == 0>>Judging by $his enthusiasm, @@.green;$he savors getting $his mouth close to a pair of boobs.@@<<set $activeSlave.fetishKnown = 1>><<else>>You knew $he had a breast fetishist and $his eagerness to lighten a lactating _womanP proves that.<</if>> A kick from within startles you from your thoughts; you pat your gravid middle, reassuring your child<<if $PC.pregType > 1>>ren<</if>> that you'll make sure to save some milk for them. $He's already starting to @@.hotpink;show understanding of $his place@@ and even @@.mediumaquamarine;beginning to build trust@@ with you. - <<set $activeSlave.devotion += 15, $activeSlave.trust += 15>> - <<else>> - Reluctantly $he begins to suckle from your swollen breast. You gently brush $his head as you try to hold back your pleasure, but it is too much. As $he drinks deeper, you begin moaning with relief. At first $he tenses at <<if canHear($activeSlave)>>the sound<<else>>your body's shuddering<</if>>, fearing punishment, but soon realizes you have no intent on @@.mediumaquamarine;harming $him.@@ $He allows you to dote over $him as if $he were your child, carefully moving to your other breast once the first runs dry. As $he drinks, $he begins to massage your taut middle, $his touch soft and gentle. When you both finish, you push $him to $his feet and send $him on $his way. @@.hotpink;$He stays and offers a hand to help you to your feet.@@ You are surprised by this display; it might be obedience, but $he also may view you in your gravid state as someone weak. As $he helps you back to your desk, $he shoulders all of your weight. It would appear $he is putting you first, for now. - <<set $activeSlave.devotion += 5, $activeSlave.trust += 5>> - <</if>> - <<set $PC.lactationDuration = 2>> - <</replace>> - <</link>> - <</if>> + <<if $PC.pregMood == 2 && canPenetrate($activeSlave)>> + | + <<link "$He has a dick and you need it">> + <<replace "#introResult">> + You aggressively approach $activeSlave.slaveName, forcing your pregnancy directly into $his <<if $activeSlave.height > 175>>stomach<<elseif $activeSlave.height < 155>>face<<else>>chest<</if>> until $he has no choice but to be pushed to the ground. You quickly straddle $his face, forcing your oozing cunt over $his mouth as you eagerly stroke $his cock to full length. + <<if $activeSlave.fetish == "pregnancy">> + $He groans with disappointment as your pregnant pussy leaves $his reach, though $his displeasure is short lived as you greedily take $his entire dick into your aching snatch. You ride $him mercilessly, frequently smacking $him with your heavy belly. $He loves every minute of it, especially when $he feels your body tense up as $he lets loose $his load deep into you. Where most slaves would be begging for mercy, $he @@.hotpink;eagerly complies@@ as you adjust yourself and begin round two. You don't know what came over you, but when you wake up, you find $he's resting peacefully under your gravid mass. <<if $activeSlave.fetishKnown == 0>>It seems $he likes @@.green;being a pregnant _womanP's plaything.@@<<set $activeSlave.fetishKnown = 1>><<else>>You knew $he had a pregnancy fetish and the look on $his face confirms it.<</if>> A kick from within startles you from your thoughts; it would appear your child<<if $PC.pregType > 1>>ren<</if>> agree<<if $PC.pregType == 1>>s<</if>> that you'll have to have another ride sometime. + <<set $activeSlave.devotion += 15>> + <<else>> + $He coughs as your pregnant pussy vacates $his face, though $his relief is short lived as you greedily slam yourself down onto $his waiting dick. You ride $him mercilessly, frequently smacking $him with your heavy belly. $He hates every minute of it, choosing to alternate between begging you to stop and just openly weeping. You cum hard as you watch the look on $his face as $he unwillingly cums deep inside you. $He cries out in protest as you continue raping $him, but you don't care. All that matters is your satisfaction. This continues until you pass out from orgasmic exhaustion with $him still inside you. You are eventually awoken by $his desperate struggle to escape from beneath your gravid mass; $he quickly regrets $his choices as you remount $him for one last go. $He now @@.hotpink;better understands $his place as a toy@@ and is @@.gold;terrified@@ of your insatiable lust. + <<set $activeSlave.devotion += 5, $activeSlave.trust -= 15>> + <</if>> + <<set $activeSlave.counter.penetrative += 5, $penetrativeTotal += 5>> + <<set $activeSlave.counter.oral++, $oralTotal++>> + <</replace>> + <</link>> + <<elseif $PC.pregMood == 1 && $PC.lactation > 0>> + | + <<link "Take $him to your breast">> + <<replace "#introResult">> + You calmly approach $activeSlave.slaveName, pulling $him into a soothing embrace against your + <<if $PC.boobsBonus > 2>> + enormous<<if $PC.boobsImplant == 1>>, fake<</if>>, milk laden breasts. + <<elseif $PC.boobsBonus == 2>> + huge<<if $PC.boobsImplant == 1>>, fake<</if>>, milk laden breasts. + <<elseif $PC.boobsBonus == 1>> + large<<if $PC.boobsImplant == 1>>, fake<</if>>, milk laden breasts. + <<elseif $PC.boobsBonus == -1>> + milk laden breasts. + <<elseif $PC.boobsBonus == -2>> + small, milk laden breasts. + <<elseif $PC.boobsBonus == -3>> + tiny, milk laden breasts. + <<elseif $PC.boobs == 1>> + big, milk laden breasts. + <<else>> + milk swollen chest. + <</if>> + $He tries to squirm away from the moist spot growing under $his cheek, but you reveal your nipple and carefully direct $his mouth over it. + <<if $activeSlave.fetish == "pregnancy">> + Slowly $he begins to suckle from your swollen breast. You gently brush $his head as you try to hold back your pleasure — a wasted effort, as a hand sneaks its way to your <<if $PC.dick == 1>>growing erection and enthusiastically begins pumping away<<else>>wet pussy and enthusiastically begins rubbing your clit<</if>>. You clutch your pervy $girl closer to you as $he caresses your pregnancy with one hand and gets you off with the other. Before long you find yourself bucking your hips with lust, a queue for you to release $him from your nipple so $he may slide down your gravid dome of a belly to finish you off. Happy to serve $his pregnant <<= WrittenMaster($activeSlave)>>, $he returns to your chest, happy to relieve you of the pressure building in your neglected breast. <<if $activeSlave.fetishKnown == 0>>Judging by that show, @@.green;$he savors getting to be with a pregnant _womanP.@@<<set $activeSlave.fetishKnown = 1>><<else>>You knew $he had a pregnancy fetish and $his eagerness to serve a pregnant _womanP proves that.<</if>> A kick from within startles you from your thoughts; as you reach to soothe your child<<if $PC.pregType > 1>>ren<</if>>, you find your new slave @@.mediumaquamarine;already doting on them.@@ $He's already starting to @@.hotpink;show understanding of $his place.@@ + <<set $activeSlave.devotion += 15, $activeSlave.trust += 15>> + <<elseif $activeSlave.fetish == "boobs">> + Eagerly $he begins to suckle from your swollen breast. You gently brush $his head as you try to hold back your pleasure — a wasted effort, as a hand sneaks its way to your neglected breast. $He massages it, careful not to encourage your lactation too much, as $he greedily sucks you dry. $He wastes no time in swapping to your other nipple, shifting $his ministrations to the one the just left. By the time your reserves are tapped out, both you and $he are quite content. You permit $him to rest against your chest for a little before you send $him on $his way. <<if $activeSlave.fetishKnown == 0>>Judging by $his enthusiasm, @@.green;$he savors getting $his mouth close to a pair of boobs.@@<<set $activeSlave.fetishKnown = 1>><<else>>You knew $he had a breast fetishist and $his eagerness to lighten a lactating _womanP proves that.<</if>> A kick from within startles you from your thoughts; you pat your gravid middle, reassuring your child<<if $PC.pregType > 1>>ren<</if>> that you'll make sure to save some milk for them. $He's already starting to @@.hotpink;show understanding of $his place@@ and even @@.mediumaquamarine;beginning to build trust@@ with you. + <<set $activeSlave.devotion += 15, $activeSlave.trust += 15>> + <<else>> + Reluctantly $he begins to suckle from your swollen breast. You gently brush $his head as you try to hold back your pleasure, but it is too much. As $he drinks deeper, you begin moaning with relief. At first $he tenses at <<if canHear($activeSlave)>>the sound<<else>>your body's shuddering<</if>>, fearing punishment, but soon realizes you have no intent on @@.mediumaquamarine;harming $him.@@ $He allows you to dote over $him as if $he were <<if $activeSlave.father == -1 || $activeSlave.mother == -1>>a<<else>>your<</if>> child, carefully moving to your other breast once the first runs dry. As $he drinks, $he begins to massage your taut middle, $his touch soft and gentle. When you both finish, you push $him to $his feet and send $him on $his way. @@.hotpink;$He stays and offers a hand to help you to your feet.@@ You are surprised by this display; it might be obedience, but $he also may view you in your gravid state as someone weak. As $he helps you back to your desk, $he shoulders all of your weight. It would appear $he is putting you first, for now. + <<set $activeSlave.devotion += 5, $activeSlave.trust += 5>> + <</if>> + <<set $PC.lactationDuration = 2>> + <</replace>> + <</link>> + <</if>> <</if>> <</if>> @@ -1741,7 +1740,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' << <</link>> <</if>> -<<if ($activeSlave.accent >= 3) && ($activeSlave.anus < 2) && ($activeSlave.intelligence+$activeSlave.intelligenceImplant <= 50) && ($activeSlave.devotion < 10) && ($activeSlave.amp != 1) && (canSee($activeSlave))>> +<<if ($activeSlave.accent >= 3) && ($activeSlave.anus < 2) && ($activeSlave.intelligence+$activeSlave.intelligenceImplant <= 50) && ($activeSlave.devotion < 10) && (canSee($activeSlave))>> <br> <<link "Force understanding of $his situation past the language barrier">> <<replace "#introResult">> @@ -1852,34 +1851,34 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' << <<if ($activeSlave.anus != 0)>> -<<if ($activeSlave.vagina > 0)>> - <br> - <<link "Use a machine on $his holes">> - <<replace "#introResult">> - $He's not a virgin anywhere, so you'll have to go more extreme to provide a properly introductory level of sexual torture equivalent to defloration. You tie your new slave down on hands and knees and bring a fuckmachine up from storage. It fits over $him as $he whimpers down there on all fours, and you adjust the pistons so that the tip of a dildo rests inside each of $his holes. You add lube when necessary, <<if $assistant == 0>>but the rest of the day is monotonous machine rape for $him.<<else>>but for $him the rest of the day is machine rape controlled by your sultry-voiced personal assistant program. Your assistant is an exquisite sexual torturer, ensuring that the experience is never damaging and always overwhelming. $He keeps up a steady stream of degrading verbal abuse while $he works.<</if>> Any resistance to you is @@.mediumorchid;worn down@@ and replaced with a germ of @@.gold;fear.@@ @@.lime;The slave's holes are nicely stretched.@@ - <<set $activeSlave.devotion -= 5>> - <<set $activeSlave.trust -= 10>> - <<set $activeSlave.counter.vaginal += 1>> - <<set $vaginalTotal += 1>> - <<set $activeSlave.counter.anal += 1>> - <<set $analTotal += 1>> - <<set $activeSlave.anus += 1>> - <<set $activeSlave.vagina += 1>> - <</replace>> - <</link>> -<<elseif ($activeSlave.vagina == -1)>> - <br> - <<link "Use a machine on $his asshole">> - <<replace "#introResult">> - $He's not an anal virgin, so you'll have to go more extreme to provide an introductory level of sexual torture equivalent to defloration. You tie your new slave down on hands and knees and bring a fuckmachine up from storage. It fits over $him as $he whimpers down there on all fours, and you adjust the pistons so that the tip of a dildo rests inside $his asshole. You add lube when necessary, <<if $assistant == 0>>but the rest of the day is monotonous machine rape for $him.<<else>>but for $him the rest of the day is machine rape controlled by your sultry-voiced personal assistant program. Your assistant is an exquisite sexual torturer, ensuring that the experience is never damaging and always overwhelming. $He keeps up a steady stream of degrading verbal abuse while $he works.<</if>> Any resistance to you is @@.mediumorchid;worn down@@ and replaced with a germ of @@.gold;fear.@@ @@.lime;The slave's asshole is nicely stretched.@@ /*Written and coded by Boney M*/ - <<set $activeSlave.devotion -= 5>> - <<set $activeSlave.trust -= 10>> - <<set $activeSlave.counter.anal += 1>> - <<set $analTotal += 1>> - <<set $activeSlave.anus += 1>> - <</replace>> - <</link>> -<</if>> + <<if ($activeSlave.vagina > 0)>> + <br> + <<link "Use a machine on $his holes">> + <<replace "#introResult">> + $He's not a virgin anywhere, so you'll have to go more extreme to provide a properly introductory level of sexual torture equivalent to defloration. You tie your new slave down on hands and knees and bring a fuckmachine up from storage. It fits over $him as $he whimpers down there on all fours, and you adjust the pistons so that the tip of a dildo rests inside each of $his holes. You add lube when necessary, <<if $assistant == 0>>but the rest of the day is monotonous machine rape for $him.<<else>>but for $him the rest of the day is machine rape controlled by your sultry-voiced personal assistant program. Your assistant is an exquisite sexual torturer, ensuring that the experience is never damaging and always overwhelming. $He keeps up a steady stream of degrading verbal abuse while $he works.<</if>> Any resistance to you is @@.mediumorchid;worn down@@ and replaced with a germ of @@.gold;fear.@@ @@.lime;The slave's holes are nicely stretched.@@ + <<set $activeSlave.devotion -= 5>> + <<set $activeSlave.trust -= 10>> + <<set $activeSlave.counter.vaginal += 1>> + <<set $vaginalTotal += 1>> + <<set $activeSlave.counter.anal += 1>> + <<set $analTotal += 1>> + <<set $activeSlave.anus += 1>> + <<set $activeSlave.vagina += 1>> + <</replace>> + <</link>> + <<elseif ($activeSlave.vagina == -1)>> + <br> + <<link "Use a machine on $his asshole">> + <<replace "#introResult">> + $He's not an anal virgin, so you'll have to go more extreme to provide an introductory level of sexual torture equivalent to defloration. You tie your new slave down on hands and knees and bring a fuckmachine up from storage. It fits over $him as $he whimpers down there on all fours, and you adjust the pistons so that the tip of a dildo rests inside $his asshole. You add lube when necessary, <<if $assistant == 0>>but the rest of the day is monotonous machine rape for $him.<<else>>but for $him the rest of the day is machine rape controlled by your sultry-voiced personal assistant program. Your assistant is an exquisite sexual torturer, ensuring that the experience is never damaging and always overwhelming. $He keeps up a steady stream of degrading verbal abuse while $he works.<</if>> Any resistance to you is @@.mediumorchid;worn down@@ and replaced with a germ of @@.gold;fear.@@ @@.lime;The slave's asshole is nicely stretched.@@ /*Written and coded by Boney M*/ + <<set $activeSlave.devotion -= 5>> + <<set $activeSlave.trust -= 10>> + <<set $activeSlave.counter.anal += 1>> + <<set $analTotal += 1>> + <<set $activeSlave.anus += 1>> + <</replace>> + <</link>> + <</if>> <</if>> diff --git a/src/uncategorized/nextWeek.tw b/src/uncategorized/nextWeek.tw index d8fbda4e88e76c3f95dbb2649177fefcd5f7c3ab..d4b6f964df1729836c27419eb02ca4fe44cd1129 100644 --- a/src/uncategorized/nextWeek.tw +++ b/src/uncategorized/nextWeek.tw @@ -130,7 +130,7 @@ <<if $slaves[_i].broodmother == 1>> <<set $slaves[_i].ovaryAge += .2>> <</if>> - <<if $slaves[_i].physicalAge <= 18 && $loliGrow == 0>> + <<if $slaves[_i].physicalAge <= 18 && $loliGrow > 0>> <<run physicalDevelopment($slaves[_i])>> <</if>> <</if>> diff --git a/src/uncategorized/options.tw b/src/uncategorized/options.tw index 8cdd90162df571f7e49ee778a23d647518520450..8c70d641803dc98adf6b0840484baa78ada26953 100644 --- a/src/uncategorized/options.tw +++ b/src/uncategorized/options.tw @@ -64,7 +64,7 @@ This save was created using FC version $ver build $releaseID. <br> <<link "flip lighting">><<run flipColors(setup.lightColorMap)>><<goto "Options">><</link>> -<br> +<br><br> ''IMAGES'' <br> Image display @@ -607,6 +607,65 @@ Genetics array test: <<link "Run Test">><<goto "test genetics">><</link>><<if $cheatMode == 1>> | [[Edit Genetics]]<<else>> | @@.gray;Edit Genetics@@ (Enable cheat mode)<</if>> <br><<link "Reset RA Rules">><<include "Init Rules">><<goto "Rules Assistant">><</link>> +<br><br> +''SIDE BAR'' +<br>Cash is +<<if $sideBarOptions.Cash < 1>> + @@.red;HIDDEN.@@ //[[Show|Options][$sideBarOptions.Cash = 1]]// +<<else>> + @@.cyan;SHOWN.@@ //[[Hide|Options][$sideBarOptions.Cash = 0]]// +<</if>> + +<br>Upkeep is +<<if $sideBarOptions.Upkeep < 1>> + @@.red;HIDDEN.@@ //[[Show|Options][$sideBarOptions.Upkeep = 1]]// +<<else>> + @@.cyan;SHOWN.@@ //[[Hide|Options][$sideBarOptions.Upkeep = 0]]// +<</if>> + +<br>Sex slave count is +<<if $sideBarOptions.SexSlaveCount < 1>> + @@.red;HIDDEN.@@ //[[Show|Options][$sideBarOptions.SexSlaveCount = 1]]// +<<else>> + @@.cyan;SHOWN.@@ //[[Hide|Options][$sideBarOptions.SexSlaveCount = 0]]// +<</if>> + +<br>Rep is +<<if $sideBarOptions.Rep < 1>> + @@.red;HIDDEN.@@ //[[Show|Options][$sideBarOptions.Rep = 1]]// +<<else>> + @@.cyan;SHOWN.@@ //[[Hide|Options][$sideBarOptions.Rep = 0]]// +<</if>> + +<br>GSP is +<<if $sideBarOptions.GSP < 1>> + @@.red;HIDDEN.@@ //[[Show|Options][$sideBarOptions.GSP = 1]]// +<<else>> + @@.cyan;SHOWN.@@ //[[Hide|Options][$sideBarOptions.GSP = 0]]// +<</if>> + +<<if $secExp == 1>> + <br>Authority is + <<if $sideBarOptions.Authority < 1>> + @@.red;HIDDEN.@@ //[[Show|Options][$sideBarOptions.Authority = 1]]// + <<else>> + @@.cyan;SHOWN.@@ //[[Hide|Options][$sideBarOptions.Authority = 0]]// + <</if>> + + <br>Security is + <<if $sideBarOptions.Security < 1>> + @@.red;HIDDEN.@@ //[[Show|Options][$sideBarOptions.Security = 1]]// + <<else>> + @@.cyan;SHOWN.@@ //[[Hide|Options][$sideBarOptions.Security = 0]]// + <</if>> + + <br>Crime is + <<if $sideBarOptions.Crime < 1>> + @@.red;HIDDEN.@@ //[[Show|Options][$sideBarOptions.Crime = 1]]// + <<else>> + @@.cyan;SHOWN.@@ //[[Hide|Options][$sideBarOptions.Crime = 0]]// + <</if>> +<</if>> /* <br><br> [[Enable backwards compatibility|Backwards Compatibility]] diff --git a/src/uncategorized/pCoupAttempt.tw b/src/uncategorized/pCoupAttempt.tw index 74cd2245d1c4e21fac9a16542f161db8177c3c77..6bad47386419095b208d63d72c1f5adab0f503af 100644 --- a/src/uncategorized/pCoupAttempt.tw +++ b/src/uncategorized/pCoupAttempt.tw @@ -29,7 +29,7 @@ <<if $seeAge == 1>> <<set $traitor.physicalAge += 1, $traitor.actualAge += 1, $traitor.visualAge += 1>> <<set $traitor.ovaryAge += either(.8, .9, .9, 1, 1, 1, 1.1)>> - <<if $traitor.physicalAge <= 18 && $loliGrow == 0>> + <<if $traitor.physicalAge <= 18 && $loliGrow > 0>> <<run physicalDevelopment($traitor)>> <</if>> <</if>> diff --git a/src/uncategorized/pTraitorMessage.tw b/src/uncategorized/pTraitorMessage.tw index d47d8e6dae6d3776235a254829474dc986414b9f..12ca31636d10617ab914430d93c85b15ad6c51ee 100644 --- a/src/uncategorized/pTraitorMessage.tw +++ b/src/uncategorized/pTraitorMessage.tw @@ -52,7 +52,7 @@ <<if $seeAge == 1>> <<set $traitor.physicalAge += 1, $traitor.actualAge += 1, $traitor.visualAge += 1>> <<set $traitor.ovaryAge += either(.8, .9, .9, 1, 1, 1, 1.1)>> - <<if $traitor.physicalAge <= 18 && $loliGrow == 0>> + <<if $traitor.physicalAge <= 18 && $loliGrow > 0>> <<run physicalDevelopment($traitor)>> <</if>> <</if>> diff --git a/src/uncategorized/reBoomerang.tw b/src/uncategorized/reBoomerang.tw index c2bb1ab31ec1d8e91ed618a0d4af4b0a0c6cf278..22d269eb2d408ef137aa9bdc0e8be75b1b8d3298 100644 --- a/src/uncategorized/reBoomerang.tw +++ b/src/uncategorized/reBoomerang.tw @@ -69,7 +69,7 @@ brings up the relevant feeds. There's a naked body crumpled pathetically against <<if $seeAge == 1>> <<set $activeSlave.physicalAge += 1, $activeSlave.actualAge += 1, $activeSlave.visualAge += 1>> <<set $activeSlave.ovaryAge += either(.8, .9, .9, 1, 1, 1, 1.1)>> - <<if $activeSlave.physicalAge <= 18 && $loliGrow == 0>> + <<if $activeSlave.physicalAge <= 18 && $loliGrow > 0>> <<run physicalDevelopment($activeSlave)>> <</if>> <</if>> diff --git a/src/uncategorized/reRecruit.tw b/src/uncategorized/reRecruit.tw index cd7b497d7ee6f68b7e1a8c47cad7e3a8ff19333a..b9a73a65ebd9c3f44bf5d290c763589a104488c8 100644 --- a/src/uncategorized/reRecruit.tw +++ b/src/uncategorized/reRecruit.tw @@ -2780,7 +2780,7 @@ He explains that one of his servant <<= $girl>>s was impregnated by his fool of <</if>> <<if $recruit == "wandering homeless">> <br><<link "A quick fuck couldn't hurt">> - <<run cashX(forceNeg(-1), "personalBusiness")>> + <<run cashX(forceNeg(1), "personalBusiness")>> <<replace "#result">> You take $him up on $his offer, <<if $PC.dick == 1>> diff --git a/src/uncategorized/saHormoneEffects.tw b/src/uncategorized/saHormoneEffects.tw index 95c5a7ec0dd268eaf7ad13241185d12e5a21afea..68da75ad134622e3945ec555e1ea934dcfaecb01 100644 --- a/src/uncategorized/saHormoneEffects.tw +++ b/src/uncategorized/saHormoneEffects.tw @@ -75,7 +75,7 @@ <<set _rearQuirk = $slaves[$i].geneticQuirks.rearLipedema == 2 ? 2 : 0>> <<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>> -<<if $slaves[$i].physicalAge >= 18 || $loliGrow == 1 || $slaves[$i].geneMods.NCS == 1>> +<<if $slaves[$i].physicalAge >= 18 || $loliGrow == 0 || $slaves[$i].geneMods.NCS == 1>> <<if Math.abs($slaves[$i].hormoneBalance) >= 50>> <<if $slaves[$i].hormoneBalance >= 350>> diff --git a/src/uncategorized/salon.tw b/src/uncategorized/salon.tw index 3ccd26ad087775173aa537abc2a7842a1b476b6f..12a20cebe4d9b443bed028233f483fb473741f39 100644 --- a/src/uncategorized/salon.tw +++ b/src/uncategorized/salon.tw @@ -610,13 +610,13 @@ Apply makeup: <br><br> $His skin is $activeSlave.skin. -<<if ($dyedSkin.indexOf($activeSlave.skin) != -1)>> +<<if (setup.dyedSkins.includes($activeSlave.skin))>> [[Remove coloring|Salon][$activeSlave.skin = $activeSlave.origSkin,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]] <<elseif (($activeSlave.skin == "sun tanned") || ($activeSlave.skin == "spray tanned"))>> [[Remove tanning|Salon][$activeSlave.skin = $activeSlave.origSkin,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]] <</if>> -<<if ($dyedSkin.indexOf($activeSlave.skin) == -1)>> +<<if (!setup.dyedSkins.includes($activeSlave.skin))>> <br> <<if ($activeSlave.skin == "sun tanned" || $activeSlave.skin == "spray tanned")>> $His skin tanning must be removed before any advanced procedure to change $his skin color. diff --git a/src/uncategorized/slaveAssignmentsReport.tw b/src/uncategorized/slaveAssignmentsReport.tw index 5d6aa59b3770b37c9d1919f3cca56dabee247403..716adaa057be4dbeca2f447098e52fa25d41a305 100644 --- a/src/uncategorized/slaveAssignmentsReport.tw +++ b/src/uncategorized/slaveAssignmentsReport.tw @@ -43,7 +43,7 @@ $slaveJobValues = slaveJobValues()>> <<if _arcadeDemandDeg > 20000 || $arcologies[0].FSDegradationist > 50>> <<set _degradationistPenalty = ((_arcadeDemandDeg - $slaveJobValues.arcade) / _arcadeDemandDeg), $arcologies[0].FSDegradationist -= Math.trunc(5 * _degradationistPenalty)>> - <<run repX(-100 * _degradationistPenalty, "futureSocieties")>> + <<run repX(forceNeg(100 * _degradationistPenalty), "futureSocieties")>> <<if _degradationistPenalty > 0.5>> <<set $arcadeDemandDegResult = 1>> <<else>> diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw index 41fe41c83c7e08d975e86cdbe0d5d0da77778b10..3d45af3fdfbceff8fd48d61c36435355c8ac8552 100644 --- a/src/uncategorized/slaveInteract.tw +++ b/src/uncategorized/slaveInteract.tw @@ -908,6 +908,7 @@ | <<link "Tail">><<set $activeSlave.buttplugAttachment = "tail">><<replace "#buttplugAttach">>$activeSlave.buttplugAttachment<</replace>><</link>> | <<link "Cat tail">><<set $activeSlave.buttplugAttachment = "cat tail">><<replace "#buttplugAttach">>$activeSlave.buttplugAttachment<</replace>><</link>> | <<link "Fox tail">><<set $activeSlave.buttplugAttachment = "fox tail">><<replace "#buttplugAttach">>$activeSlave.buttplugAttachment<</replace>><</link>> + | <<link "Cow tail">><<set $activeSlave.buttplugAttachment = "cow tail">><<replace "#buttplugAttach">>$activeSlave.buttplugAttachment<</replace>><</link>> <</if>> <</if>> @@ -1225,7 +1226,7 @@ Aphrodisiacs: <span id="aphrodisiacs"><strong><<if $activeSlave.aphrodisiacs > 1 <<if $activeSlave.broodmotherOnHold != 1>> [[Turn off implant|Slave Interact][$activeSlave.broodmotherOnHold = 1, $activeSlave.broodmotherCountDown = 38-WombMinPreg($activeSlave)]] <</if>> - <<if ($activeSlave.broodmotherOnHold != 1) && ($activeSlave.preg >= 37)>> + <<if ($activeSlave.broodmotherOnHold != 1) && ($activeSlave.preg >= 36)>> | <</if>> <<if ($activeSlave.preg >= 37)>> diff --git a/src/uncategorized/storyCaption.tw b/src/uncategorized/storyCaption.tw index deaae9c1ef8631f6d8628542503631e6c71d294b..ffb0fc0b318d7f58089c1639b8eb76024ba62358 100644 --- a/src/uncategorized/storyCaption.tw +++ b/src/uncategorized/storyCaption.tw @@ -68,55 +68,54 @@ <<else>> <span id="nextButton"></span> <</if>> - <br><br> - <<set $cash = Math.trunc($cash)>> - <span id="cash"> - <<if $cash > 0>> - @@.yellowgreen;Cash@@ - <<else>> - __@@.red;Cash@@__ - <</if>> - | <<print cashFormat($cash)>> - </span> - <br> - <<if _Pass == "Main">> - <<set _TCash2 = ($cash-$cashLastWeek)>> - <span id="oldcash"> - <<if _TCash2 < 0>> - (@@.red;<<print cashFormat(_TCash2)>>@@ + <<if $sideBarOptions.Cash > 0>> <br><br> + <<set $cash = Math.trunc($cash)>> + <span id="cash"> + <<if $cash > 0>> + @@.yellowgreen;Cash@@ <<else>> - (@@.yellowgreen;+<<print cashFormat(_TCash2)>>@@ + __@@.red;Cash@@__ <</if>> + | <<print cashFormat($cash)>> </span> - since last week) - <<if ($cheatMode) && ($cheatModeM)>> - <<set _TCash1 = $cash>> - <<textbox "$cash" $cash>> - <<link "Apply">> - <<set $cash = Math.trunc(Number($cash) || _TCash1), $cheater = 1>> - <<replace "#cash">> - <<if $cash > 0>> - @@.yellowgreen;Cash@@ - <<else>> - __@@.red;Cash@@__ - <</if>> - | <<print cashFormat($cash)>> - <</replace>> + <<if _Pass == "Main">> <br> <<set _TCash2 = ($cash-$cashLastWeek)>> - <<replace "#oldcash">> + <span id="oldcash"> <<if _TCash2 < 0>> (@@.red;<<print cashFormat(_TCash2)>>@@ <<else>> (@@.yellowgreen;+<<print cashFormat(_TCash2)>>@@ <</if>> - <</replace>> + </span> since last week) - <</link>> + <<if ($cheatMode) && ($cheatModeM)>> + <<set _TCash1 = $cash>> + <<textbox "$cash" $cash>> + <<link "Apply">> + <<set $cash = Math.trunc(Number($cash) || _TCash1), $cheater = 1>> + <<replace "#cash">> + <<if $cash > 0>> + @@.yellowgreen;Cash@@ + <<else>> + __@@.red;Cash@@__ + <</if>> + | <<print cashFormat($cash)>> + <</replace>> + <<set _TCash2 = ($cash-$cashLastWeek)>> + <<replace "#oldcash">> + <<if _TCash2 < 0>> + (@@.red;<<print cashFormat(_TCash2)>>@@ + <<else>> + (@@.yellowgreen;+<<print cashFormat(_TCash2)>>@@ + <</if>> + <</replace>> + since last week) + <</link>> + <</if>> <</if>> - <br> - <<if $foodMarket > 0>> + <<if $foodMarket > 0>> <br> <<set $food = Math.trunc($food)>> <<set $foodConsumption = (($lowerClass*$lowerRate) + ($middleClass*$middleRate) + ($upperClass*$upperRate) + ($topClass*$topRate))>> <span id="food"> @@ -132,7 +131,6 @@ </span> <br> - <<set _TFood2 = ($food-$foodLastWeek)>> <span id="oldfood"> <<if _TFood2 < 0>> @@ -170,9 +168,8 @@ since last week) <</link>> <</if>> - <br> <</if>> - [[Upkeep|Costs Budget]] | + <<if $sideBarOptions.Upkeep > 0>> <br>[[Upkeep|Costs Budget]] | <</if>> <<else>> <<if $foodMarket > 0>> <<set $food = Math.trunc($food)>> @@ -185,89 +182,45 @@ | <<print massFormat($food)>> </span> <</if>> - Upkeep | - <</if>><<print cashFormat($costs)>> - <br><br>@@.pink;Total Sex Slaves@@ | <<print _SL>> - <br>@@.pink;Penthouse Beds@@ | - <<if $dormitoryPopulation+$roomsPopulation > ($dormitory+$rooms)>>@@.red;<<print $dormitoryPopulation+$roomsPopulation>>@@<<else>><<print $dormitoryPopulation+$roomsPopulation>><</if>>/<<print ($dormitory+$rooms)>> - <br>@@.pink;Dormitory Beds@@ | <<if $dormitoryPopulation > $dormitory>>@@.red;<<print $dormitoryPopulation>>@@<<else>><<print $dormitoryPopulation>><</if>>/<<print $dormitory>> - <br>@@.pink;Luxury Rooms@@ | <<if $roomsPopulation > $rooms>>@@.red;<<print $roomsPopulation>>@@<<else>><<print $roomsPopulation>><</if>>/<<print $rooms>> - <br>@@.yellowgreen;GSP@@ | - <<print Math.trunc(0.1*$arcologies[0].prosperity)>>m - <<if $arcologies[0].ownership >= $arcologies[0].minority>> - <<if $arcologies[0].ownership >= $arcologies[0].minority+5>> - <<if $arcologies[0].ownership < 100>> - <<if $assistantPower >= 1>> (@@.yellowgreen;<<print $arcologies[0].ownership>>%@@:<<print $arcologies[0].minority>>%) <<else>> (@@.yellowgreen;<<print $arcologies[0].ownership>>%@@) <</if>> - <<else>> (<<print $arcologies[0].ownership>>%) - <</if>> - <<else>> - <<if $assistantPower >= 1>> (@@.yellow;<<print $arcologies[0].ownership>>%@@:<<print $arcologies[0].minority>>%) <<else>> (@@.yellow;<<print $arcologies[0].ownership>>%@@) <</if>> - <</if>> - <<else>> - <<if $assistantPower >= 1>> (@@.red;<<print $arcologies[0].ownership>>%@@:<<print $arcologies[0].minority>>%) <<else>> (@@.red;<<print $arcologies[0].ownership>>%@@) <</if>> + <<if $sideBarOptions.Upkeep > 0>> <br>Upkeep | <</if>> <</if>> - <<if _Pass == "Main">> - <br>[[Rep|Rep Budget]] | - <<else>> - <br>@@.green;Rep@@ | + <<if $sideBarOptions.Upkeep > 0>> <<print cashFormat($costs)>> <</if>> + + <<if $sideBarOptions.SexSlaveCount > 0>> + <br>@@.pink;Total Sex Slaves@@ | <<print _SL>> <</if>> - <span id="rep"> - <<if $rep > 19000>> - @@color:rgb(0,145,0);worshipped@@ - <<elseif $rep > 18000>> - @@color:rgb(0,150,0);great@@ - <<elseif $rep > 17000>> - @@color:rgb(0,155,0);exalted@@ - <<elseif $rep > 16000>> - @@color:rgb(0,160,0);illustrious@@ - <<elseif $rep > 15000>> - @@color:rgb(0,165,0);prestigious@@ - <<elseif $rep > 14000>> - @@color:rgb(0,170,0);renowned@@ - <<elseif $rep > 13000>> - @@color:rgb(0,175,0);famed@@ - <<elseif $rep > 12000>> - @@color:rgb(0,180,0);celebrated@@ - <<elseif $rep > 11000>> - @@color:rgb(0,185,0);honored@@ - <<elseif $rep > 10000>> - @@color:rgb(0,190,0);acclaimed@@ - <<elseif $rep > 9000>> - @@color:rgb(0,195,0);eminent@@ - <<elseif $rep > 8250>> - @@color:rgb(0,200,0);prominent@@ - <<elseif $rep > 7000>> - @@color:rgb(0,205,0);distinguished@@ - <<elseif $rep > 6750>> - @@color:rgb(0,210,0);admired@@ - <<elseif $rep > 6000>> - @@color:rgb(0,215,0);esteemed@@ - <<elseif $rep > 5250>> - @@color:rgb(0,220,0);respected@@ - <<elseif $rep > 4500>> - @@color:rgb(0,225,0);known@@ - <<elseif $rep > 3750>> - @@color:rgb(0,230,0);recognized@@ - <<elseif $rep > 3000>> - @@color:rgb(0,235,0);rumored@@ - <<elseif $rep > 2250>> - @@color:rgb(0,240,0);envied@@ - <<elseif $rep > 1500>> - @@color:rgb(0,245,0);resented@@ - <<elseif $rep > 750>> - @@color:rgb(0,250,0);disliked@@ - <<else>> - @@color:rgb(0,255,0);unknown@@ + <<if _Pass === "Manage Penthouse">> + @@.pink;Penthouse Beds@@ | + <<if $dormitoryPopulation+$roomsPopulation > ($dormitory+$rooms)>>@@.red;<<print $dormitoryPopulation+$roomsPopulation>>@@<<else>><<print $dormitoryPopulation+$roomsPopulation>><</if>>/<<print ($dormitory+$rooms)>> + <br>@@.pink;Dormitory Beds@@ | <<if $dormitoryPopulation > $dormitory>>@@.red;<<print $dormitoryPopulation>>@@<<else>><<print $dormitoryPopulation>><</if>>/<<print $dormitory>> + <br>@@.pink;Luxury Rooms@@ | <<if $roomsPopulation > $rooms>>@@.red;<<print $roomsPopulation>>@@<<else>><<print $roomsPopulation>><</if>>/<<print $rooms>> <</if>> - (<<print num($rep)>>) - </span> - <<if (_Pass == "Main")>> - <<if ($cheatMode) && ($cheatModeM)>> - <<set _TRep = $rep>> - <<textbox "$rep" $rep>> - <<link "Apply">> - <<set $rep = Math.clamp(Math.trunc(Number($rep) || _TRep), 0, 20000), $cheater = 1>> - <<replace "#rep">> + + <<if _Pass !== "Manage Penthouse" || _Pass === "Main">> + <<if $sideBarOptions.GSP > 0 && _Pass !== "Neighbor Interact">> + <br>@@.yellowgreen;GSP@@ | + <<print Math.trunc(0.1*$arcologies[0].prosperity)>>m + <<if $arcologies[0].ownership >= $arcologies[0].minority>> + <<if $arcologies[0].ownership >= $arcologies[0].minority+5>> + <<if $arcologies[0].ownership < 100>> + <<if $assistantPower >= 1>> (@@.yellowgreen;<<print $arcologies[0].ownership>>%@@:<<print $arcologies[0].minority>>%) <<else>> (@@.yellowgreen;<<print $arcologies[0].ownership>>%@@) <</if>> + <<else>> (<<print $arcologies[0].ownership>>%) + <</if>> + <<else>> + <<if $assistantPower >= 1>> (@@.yellow;<<print $arcologies[0].ownership>>%@@:<<print $arcologies[0].minority>>%) <<else>> (@@.yellow;<<print $arcologies[0].ownership>>%@@) <</if>> + <</if>> + <<else>> + <<if $assistantPower >= 1>> (@@.red;<<print $arcologies[0].ownership>>%@@:<<print $arcologies[0].minority>>%) <<else>> (@@.red;<<print $arcologies[0].ownership>>%@@) <</if>> + <</if>> + <</if>> + + <<if $sideBarOptions.Rep > 0>> + <<if _Pass === "Main">> + <br>[[Rep|Rep Budget]] | + <<else>> + <br>@@.green;Rep@@ | + <</if>> + <span id="rep"> <<if $rep > 19000>> @@color:rgb(0,145,0);worshipped@@ <<elseif $rep > 18000>> @@ -315,150 +268,205 @@ <<else>> @@color:rgb(0,255,0);unknown@@ <</if>> - <<print num($rep)>> - <</replace>> - <</link>> - <</if>> - <</if>> - <<if $secExp == 1>> - <br>@@.darkviolet;Auth@@ | - <<set $authority = Math.clamp(Math.trunc($authority), 0, 20000)>> - <span id="auth"> - <<if $authority > 19500>> - @@color:rgb(148, 0, 211);divine will@@ - <<elseif $authority > 19000>> - @@color:rgb(148, 0, 211);sovereign@@ - <<elseif $authority > 18000>> - @@color:rgb(148, 0, 211);monarch@@ - <<elseif $authority > 17000>> - @@color:rgb(148, 0, 211);tyrant@@ - <<elseif $authority > 15000>> - @@color:rgb(148, 0, 211);dictator@@ - <<elseif $authority > 14000>> - @@color:rgb(148, 0, 211);prince@@ - <<elseif $authority > 13000>> - @@color:rgb(183, 0, 211);master@@ - <<elseif $authority > 12000>> - @@color:rgb(183, 0, 211);leader@@ - <<elseif $authority > 11000>> - @@color:rgb(183, 0, 211);director@@ - <<elseif $authority > 10000>> - @@color:rgb(183, 0, 211);overseer@@ - <<elseif $authority > 9000>> - @@color:rgb(183, 0, 211);chief@@ - <<elseif $authority > 8000>> - @@color:rgb(183, 0, 211);manager@@ - <<elseif $authority > 7000>> - @@color:rgb(211,0,204);principal@@ - <<elseif $authority > 6000>> - @@color:rgb(211,0,204);auxiliary@@ - <<elseif $authority > 5000>> - @@color:rgb(211,0,204);subordinate@@ - <<elseif $authority > 4000>> - @@color:rgb(211,0,204);follower@@ - <<elseif $authority > 3000>> - @@color:rgb(211,0,204);powerless@@ - <<elseif $authority > 2000>> - @@color:rgb(211,0,204);toothless@@ - <<elseif $authority > 1000>> - @@color:rgb(211,0,204);mostly harmless@@ - <<else>> - @@color:rgb(211,0,204);harmless@@ - <</if>> - (<<print num($authority)>>) - </span> - <<if (_Pass == "Main")>> - <<if ($cheatMode) && ($cheatModeM)>> - <<set _TAuth = $authority>> - <<textbox "$authority" $authority>> - <<link "Apply">> - <<set $authority = Math.clamp(Math.trunc(Number($authority) || _TAuth), 0, 20000), $cheater = 1>> - <<replace "#auth">> - <<if $authority > 19500>> - @@color:rgb(148, 0, 211);divine will@@ - <<elseif $authority > 19000>> - @@color:rgb(148, 0, 211);sovereign@@ - <<elseif $authority > 18000>> - @@color:rgb(148, 0, 211);monarch@@ - <<elseif $authority > 17000>> - @@color:rgb(148, 0, 211);tyrant@@ - <<elseif $authority > 15000>> - @@color:rgb(148, 0, 211);dictator@@ - <<elseif $authority > 14000>> - @@color:rgb(148, 0, 211);prince@@ - <<elseif $authority > 13000>> - @@color:rgb(183, 0, 211);master@@ - <<elseif $authority > 12000>> - @@color:rgb(183, 0, 211);leader@@ - <<elseif $authority > 11000>> - @@color:rgb(183, 0, 211);director@@ - <<elseif $authority > 10000>> - @@color:rgb(183, 0, 211);overseer@@ - <<elseif $authority > 9000>> - @@color:rgb(183, 0, 211);chief@@ - <<elseif $authority > 8000>> - @@color:rgb(183, 0, 211);manager@@ - <<elseif $authority > 7000>> - @@color:rgb(211,0,204);principal@@ - <<elseif $authority > 6000>> - @@color:rgb(211,0,204);auxiliary@@ - <<elseif $authority > 5000>> - @@color:rgb(211,0,204);subordinate@@ - <<elseif $authority > 4000>> - @@color:rgb(211,0,204);follower@@ - <<elseif $authority > 3000>> - @@color:rgb(211,0,204);powerless@@ - <<elseif $authority > 2000>> - @@color:rgb(211,0,204);toothless@@ - <<elseif $authority > 1000>> - @@color:rgb(211,0,204);mostly harmless@@ - <<else>> - @@color:rgb(211,0,204);harmless@@ - <</if>> + (<<print num($rep)>>) + </span> + <<if (_Pass == "Main")>> + <<if ($cheatMode) && ($cheatModeM)>> + <<set _TRep = $rep>> + <<textbox "$rep" $rep>> + <<link "Apply">> + <<set $rep = Math.clamp(Math.trunc(Number($rep) || _TRep), 0, 20000), $cheater = 1>> + <<replace "#rep">> + <<if $rep > 19000>> + @@color:rgb(0,145,0);worshipped@@ + <<elseif $rep > 18000>> + @@color:rgb(0,150,0);great@@ + <<elseif $rep > 17000>> + @@color:rgb(0,155,0);exalted@@ + <<elseif $rep > 16000>> + @@color:rgb(0,160,0);illustrious@@ + <<elseif $rep > 15000>> + @@color:rgb(0,165,0);prestigious@@ + <<elseif $rep > 14000>> + @@color:rgb(0,170,0);renowned@@ + <<elseif $rep > 13000>> + @@color:rgb(0,175,0);famed@@ + <<elseif $rep > 12000>> + @@color:rgb(0,180,0);celebrated@@ + <<elseif $rep > 11000>> + @@color:rgb(0,185,0);honored@@ + <<elseif $rep > 10000>> + @@color:rgb(0,190,0);acclaimed@@ + <<elseif $rep > 9000>> + @@color:rgb(0,195,0);eminent@@ + <<elseif $rep > 8250>> + @@color:rgb(0,200,0);prominent@@ + <<elseif $rep > 7000>> + @@color:rgb(0,205,0);distinguished@@ + <<elseif $rep > 6750>> + @@color:rgb(0,210,0);admired@@ + <<elseif $rep > 6000>> + @@color:rgb(0,215,0);esteemed@@ + <<elseif $rep > 5250>> + @@color:rgb(0,220,0);respected@@ + <<elseif $rep > 4500>> + @@color:rgb(0,225,0);known@@ + <<elseif $rep > 3750>> + @@color:rgb(0,230,0);recognized@@ + <<elseif $rep > 3000>> + @@color:rgb(0,235,0);rumored@@ + <<elseif $rep > 2250>> + @@color:rgb(0,240,0);envied@@ + <<elseif $rep > 1500>> + @@color:rgb(0,245,0);resented@@ + <<elseif $rep > 750>> + @@color:rgb(0,250,0);disliked@@ + <<else>> + @@color:rgb(0,255,0);unknown@@ + <</if>> + <<print num($rep)>> <</replace>> - <</link>> + <</link>> + <</if>> <</if>> <</if>> - <span id="sec"> - <br>@@.deepskyblue;Security@@ | @@.deepskyblue;<<print Math.trunc($security)>>%@@ - </span> - <<if (_Pass == "Main")>> - <<if ($cheatMode) && ($cheatModeM)>> - <<set _TSec = $security>> - <<textbox "$security" $security>> - <<link "Apply">> - <<set $security = Math.clamp(Math.trunc(Number($security) || _TSec), 0, 100), $cheater = 1>> - <<replace "#sec">> - <br>@@.deepskyblue;Security@@ | <<print Math.trunc($security)>>% - <</replace>> - <</link>> + + <<if $secExp == 1 && ( $sideBarOptions.Authority > 0 || $sideBarOptions.Security > 0 || $sideBarOptions.Crime > 0)>> + <<if $sideBarOptions.Authority > 0>> + <br>@@.darkviolet;Auth@@ | + <<set $authority = Math.clamp(Math.trunc($authority), 0, 20000)>> + <span id="auth"> + <<if $authority > 19500>> + @@color:rgb(148, 0, 211);divine will@@ + <<elseif $authority > 19000>> + @@color:rgb(148, 0, 211);sovereign@@ + <<elseif $authority > 18000>> + @@color:rgb(148, 0, 211);monarch@@ + <<elseif $authority > 17000>> + @@color:rgb(148, 0, 211);tyrant@@ + <<elseif $authority > 15000>> + @@color:rgb(148, 0, 211);dictator@@ + <<elseif $authority > 14000>> + @@color:rgb(148, 0, 211);prince@@ + <<elseif $authority > 13000>> + @@color:rgb(183, 0, 211);master@@ + <<elseif $authority > 12000>> + @@color:rgb(183, 0, 211);leader@@ + <<elseif $authority > 11000>> + @@color:rgb(183, 0, 211);director@@ + <<elseif $authority > 10000>> + @@color:rgb(183, 0, 211);overseer@@ + <<elseif $authority > 9000>> + @@color:rgb(183, 0, 211);chief@@ + <<elseif $authority > 8000>> + @@color:rgb(183, 0, 211);manager@@ + <<elseif $authority > 7000>> + @@color:rgb(211,0,204);principal@@ + <<elseif $authority > 6000>> + @@color:rgb(211,0,204);auxiliary@@ + <<elseif $authority > 5000>> + @@color:rgb(211,0,204);subordinate@@ + <<elseif $authority > 4000>> + @@color:rgb(211,0,204);follower@@ + <<elseif $authority > 3000>> + @@color:rgb(211,0,204);powerless@@ + <<elseif $authority > 2000>> + @@color:rgb(211,0,204);toothless@@ + <<elseif $authority > 1000>> + @@color:rgb(211,0,204);mostly harmless@@ + <<else>> + @@color:rgb(211,0,204);harmless@@ + <</if>> + (<<print num($authority)>>) + </span> + <<if (_Pass == "Main")>> + <<if ($cheatMode) && ($cheatModeM)>> + <<set _TAuth = $authority>> + <<textbox "$authority" $authority>> + <<link "Apply">> + <<set $authority = Math.clamp(Math.trunc(Number($authority) || _TAuth), 0, 20000), $cheater = 1>> + <<replace "#auth">> + <<if $authority > 19500>> + @@color:rgb(148, 0, 211);divine will@@ + <<elseif $authority > 19000>> + @@color:rgb(148, 0, 211);sovereign@@ + <<elseif $authority > 18000>> + @@color:rgb(148, 0, 211);monarch@@ + <<elseif $authority > 17000>> + @@color:rgb(148, 0, 211);tyrant@@ + <<elseif $authority > 15000>> + @@color:rgb(148, 0, 211);dictator@@ + <<elseif $authority > 14000>> + @@color:rgb(148, 0, 211);prince@@ + <<elseif $authority > 13000>> + @@color:rgb(183, 0, 211);master@@ + <<elseif $authority > 12000>> + @@color:rgb(183, 0, 211);leader@@ + <<elseif $authority > 11000>> + @@color:rgb(183, 0, 211);director@@ + <<elseif $authority > 10000>> + @@color:rgb(183, 0, 211);overseer@@ + <<elseif $authority > 9000>> + @@color:rgb(183, 0, 211);chief@@ + <<elseif $authority > 8000>> + @@color:rgb(183, 0, 211);manager@@ + <<elseif $authority > 7000>> + @@color:rgb(211,0,204);principal@@ + <<elseif $authority > 6000>> + @@color:rgb(211,0,204);auxiliary@@ + <<elseif $authority > 5000>> + @@color:rgb(211,0,204);subordinate@@ + <<elseif $authority > 4000>> + @@color:rgb(211,0,204);follower@@ + <<elseif $authority > 3000>> + @@color:rgb(211,0,204);powerless@@ + <<elseif $authority > 2000>> + @@color:rgb(211,0,204);toothless@@ + <<elseif $authority > 1000>> + @@color:rgb(211,0,204);mostly harmless@@ + <<else>> + @@color:rgb(211,0,204);harmless@@ + <</if>> + <</replace>> + <</link>> + <</if>> + <</if>> <</if>> - <</if>> - <span id="crime"> - <br>@@.orangered;Crime@@ | @@.orangered;<<print Math.trunc($crime)>>%@@ - </span> - <<if (_Pass == "Main")>> - <<if ($cheatMode) && ($cheatModeM)>> - <<set _TCrime = $crime>> - <<textbox "$crime" $crime>> - <<link "Apply">> - <<set $crime = Math.clamp(Math.trunc(Number($crime) || _TCrime), 0, 100), $cheater = 1>> - <<replace "#crime">> - <br>@@.orangered;Crime@@ | <<print Math.trunc($crime)>>% - <</replace>> - <</link>> + <<if $sideBarOptions.Security >0>> + <span id="sec"> + <br>@@.deepskyblue;Security@@ | @@.deepskyblue;<<print Math.trunc($security)>>%@@ + </span> + <<if (_Pass == "Main")>> + <<if ($cheatMode) && ($cheatModeM)>> + <<set _TSec = $security>> + <<textbox "$security" $security>> + <<link "Apply">> + <<set $security = Math.clamp(Math.trunc(Number($security) || _TSec), 0, 100), $cheater = 1>> + <<replace "#sec">> + <br>@@.deepskyblue;Security@@ | <<print Math.trunc($security)>>% + <</replace>> + <</link>> + <</if>> + <</if>> + <</if>> + <<if $sideBarOptions.Crime > 0>> + <span id="crime"> + <br>@@.orangered;Crime@@ | @@.orangered;<<print Math.trunc($crime)>>%@@ + </span> + <<if (_Pass == "Main")>> + <<if ($cheatMode) && ($cheatModeM)>> + <<set _TCrime = $crime>> + <<textbox "$crime" $crime>> + <<link "Apply">> + <<set $crime = Math.clamp(Math.trunc(Number($crime) || _TCrime), 0, 100), $cheater = 1>> + <<replace "#crime">> + <br>@@.orangered;Crime@@ | <<print Math.trunc($crime)>>% + <</replace>> + <</link>> + <</if>> + <</if>> <</if>> - <br> - <</if>> - <</if>> - - <<if (_Pass == "Main")>> - <br><span id="policyButton"><<link [[Policies]]>><<set $nextButton = "Back", $nextLink = "Manage Corporation">><</link>></span> @@.cyan;[Y]@@ - <br><span id="URButton"><<link [[Universal Rules]]>><</link>></span> @@.cyan;[V]@@ - <<if $FSAnnounced>> - <br><span id="FSButton"><<link [[Future Societies|Future Society]]>><<set $nextButton = "Back", $nextLink = "Main">><</link>></span> @@.cyan;[F]@@ <<if ($FSCredits > 0) || ($FSReminder)>>@@.yellow;[!]@@<</if>> <</if>> - <br><span id="PAOButton"><<link [[Personal Assistant|Personal assistant options]]>><</link>></span> @@.cyan;[T]@@ <</if>> <<if $nextButton !== "Continue" && $nextButton !== " ">> @@ -473,9 +481,9 @@ <br> <<link "Manage Penthouse" "Manage Penthouse">> <</link>> @@.cyan;[P]@@ <</if>> </span> - <span id="managePerson"> + <span id="managePerson"> <<if _Pass !== "Manage Personal Affairs">> - <br> <<link "Manage Personal Affairs" "Manage Personal Affairs">> <</link>> @@.cyan;[X]@@ + <br><<link "Manage Personal Affairs" "Manage Personal Affairs">> <</link>> @@.cyan;[X]@@ <</if>> </span> <<if $corpAnnounced == 1 && _Pass !== "Manage Corporation">> @@ -483,10 +491,14 @@ <<if ($corpSpecToken > 0) && ($corpSpecTimer == 0)>>@@.yellow;[!]@@<</if>> </span> <</if>> - <</if>> - <<if (_Pass == "Main") && $newModelUI === 0>> <br> + <<if (_Pass === "Main") && $newModelUI === 1>> + <<if $FSAnnounced>> + <br><span id="FSButton"><<link [[Future Societies|Future Society]]>><<set $nextButton = "Back", $nextLink = "Main">><</link>></span> @@.cyan;[F]@@ <<if ($FSCredits > 0) || ($FSReminder)>>@@.yellow;[!]@@<</if>> + <</if>> + <br><span id="PAOButton"><<link [[Personal Assistant|Personal assistant options]]>><</link>></span> @@.cyan;[T]@@ + <<elseif (_Pass === "Main") && $newModelUI === 0>> <<if ($HGSuite)>> <br> <<link "$HGSuiteNameCaps""Head Girl Suite">><</link>> <<if $abbreviateSidebar == 2>> @@ -619,71 +631,88 @@ <</if>> <br> <</if>> - <<elseif _Pass == "Wardrobe Use">> - <br> <<link [[Wardrobe (shopping)|Wardrobe]]>><</link>> - <<elseif _Pass == "Options">> - <br><br> [[Summary Options]] - <br> [[Description Options]] - <<elseif _Pass == "Manage Arcology">> <br> - <span id="Security"> - <<if $arcologies.length > 1>> - <br>[[Diplomacy|Neighbor Interact]] - <</if>> - <<if $secExp == 1>> - <br><span id="edictButton"><<link [[Edicts|edicts]]>><<set $nextButton = "Back", $nextLink = "Main">><</link>></span> @@.cyan;[D]@@ - <</if>> - <<if $secExp > 0 || $SF.Toggle && $SF.Active >= 1>> <br> - <<link "Manage Security">> <<replace "#Security">> <br> - <<if $SF.Toggle && $SF.Active >= 1>> - <br><span id="SFMButton"> <<link "$SF.Caps's firebase""Firebase">><</link>> </span> @@.cyan;[Z]@@ - <</if>> - <<if $secExp == 1>> - <<if $propHub == 1>> - <br><span id="propHub"><<link "Manage PR">><<set $nextButton = "Back", $nextLink = _Pass>><<goto "propagandaHub">><</link>></span> @@.cyan;[Shift+H]@@ - <</if>> - <<if $secHQ == 1>> - <br><span id="securityHQ"><<link "Manage Security">><<set $nextButton = "Back", $nextLink = _Pass>><<goto "securityHQ">><</link>></span> @@.cyan;[Shift+S]@@ - <</if>> - <<if $secBarracks == 1>> - <br><span id="secBarracks"><<link "Manage Military">><<set $nextButton = "Back", $nextLink = _Pass>><<goto "secBarracks">><</link>></span> @@.cyan;[Shift+A]@@ + <</if>> + + <<if _Pass == "Wardrobe Use">> + <br> <<link [[Wardrobe (shopping)|Wardrobe]]>><</link>> + <<elseif _Pass === "Manage Arcology">> + <br><br> + <span id="policyButton"> + <<link [[Policies]]>> + <<set $nextButton = "Back", $nextLink = "Manage Arcology">> + <</link>> + </span> @@.cyan;[Y]@@ + <<if $secExp == 1>> + <br><span id="edictButton"><<link [[Edicts|edicts]]>><<set $nextButton = "Back", $nextLink = "Manage Arcology">><</link>></span> @@.cyan;[D]@@ + <</if>> + <<if $arcologies.length > 1>> + <br>[[Diplomacy|Neighbor Interact]] + <</if>> + <<elseif _Pass === "Manage Penthouse">> + <span id="Security"> + <br> + <span id="URButton"><<link [[Universal Rules]]>><</link>></span> @@.cyan;[V]@@ + <<if $geneticMappingUpgrade>> <br>[[Gene Lab|Gene Lab]]<</if>> + <<if $dispensary>> <br>[[Pharmaceutical Fabricator|Dispensary]]<</if>> + <<if $organFarmUpgrade>> <br>[[Organ Farm|Organ Farm]]<</if>> + <<if $ImplantProductionUpgrade>> <br>[[Implant Manufactory|Implant Manufactory]]<</if>> + <<if $researchLab.level > 0>> <br>[[Prosthetic Lab|Prosthetic Lab]]<</if>> + <br> + + <br> <<link [[Wardrobe]]>><</link>> + <<if $rep >= 10000>> + <br> [[Black Market|The Black Market]] + <<elseif $rep > 7500>> + <br> You lack the reputation to be invited to the underground Black Market. + <</if>> + <<if $secExp > 0 || $SF.Toggle && $SF.Active >= 1>> <br> + <<link "Manage Security">> <<replace "#Security">> <br> + <<if $SF.Toggle && $SF.Active >= 1>> + <br><span id="SFMButton"> <<link "$SF.Caps's firebase""Firebase">><</link>> </span> @@.cyan;[Z]@@ <</if>> - <<if $riotCenter == 1>> - <br><span id="riotCenter"><<link "Manage Rebels">><<set $nextButton = "Back", $nextLink = _Pass>><<goto "riotControlCenter">><</link>></span> @@.cyan;[Shift+R]@@ + <<if $secExp == 1>> + <<if $propHub == 1>> + <br><span id="propHub"><<link "Manage PR">><<set $nextButton = "Back", $nextLink = _Pass>><<goto "propagandaHub">><</link>></span> @@.cyan;[Shift+H]@@ + <</if>> + <<if $secHQ == 1>> + <br><span id="securityHQ"><<link "Manage Security">><<set $nextButton = "Back", $nextLink = _Pass>><<goto "securityHQ">><</link>></span> @@.cyan;[Shift+S]@@ + <</if>> + <<if $secBarracks == 1>> + <br><span id="secBarracks"><<link "Manage Military">><<set $nextButton = "Back", $nextLink = _Pass>><<goto "secBarracks">><</link>></span> @@.cyan;[Shift+A]@@ + <</if>> + <<if $riotCenter == 1>> + <br><span id="riotCenter"><<link "Manage Rebels">><<set $nextButton = "Back", $nextLink = _Pass>><<goto "riotControlCenter">><</link>></span> @@.cyan;[Shift+R]@@ + <</if>> <</if>> - <</if>> - <</replace>> <</link>> - <</if>> - </span> - <<elseif _Pass == "Manage Penthouse">> - <br> <br> <<link [[Wardrobe]]>><</link>> - <<if $dispensary>> <br>[[Pharmaceutical Fabricator|Dispensary]]<</if>> - <<if $organFarmUpgrade>> <br>[[Organ Farm|Organ Farm]]<</if>> - <<if $ImplantProductionUpgrade>> <br>[[Implant Manufactory|Implant Manufactory]]<</if>> - <<if $geneticMappingUpgrade>> <br>[[Gene Lab|Gene Lab]]<</if>> - <<elseif ["Dispensary", "Organ Farm", "Implant Manufactory", "Gene Lab", "Prosthetics Config"].includes(_Pass)>> - <br> - <<if $dispensary && _Pass !== "Dispensary">> <br>[[Pharmaceutical Fabricator|Dispensary]]<</if>> - <<if $organFarmUpgrade && _Pass !== "Organ Farm">> <br>[[Organ Farm|Organ Farm]]<</if>> - <<if $ImplantProductionUpgrade && _Pass !== "Implant Manufactory">> <br>[[Implant Manufactory|Implant Manufactory]]<</if>> - <<if $geneticMappingUpgrade && _Pass !== "Gene Lab">> <br>[[Gene Lab|Gene Lab]]<</if>> - <<if $prostheticsUpgrade && _Pass !== "Prosthetic Lab">> <br>[[Prosthetic Lab|Prosthetic Lab]]<</if>> - <<elseif _Pass == "Manage Personal Affairs">> - <br> <<if $rep >= 10000>> <br>[[Black Market|The Black Market]]<</if>> - <<elseif _Pass == "Rules Assistant">> - <br><<link [[Rules Assistant Summary]]>><</link>> - <<elseif ["propagandaHub", "securityHQ", "secBarracks", "riotControlCenter"].includes(_Pass)>> - <br> - <<if $propHub > 0 && _Pass !== "propagandaHub">> - <br><span id="propHub"><<link "Manage PR">><<set $nextButton = "Back", $nextLink = _Pass>><<goto "propagandaHub">><</link>></span> @@.cyan;[Shift+H]@@ - <</if>> - <<if $secHQ > 0 && _Pass !== "securityHQ">> - <br><span id="securityHQ"><<link "Manage Security">><<set $nextButton = "Back", $nextLink = _Pass>><<goto "securityHQ">><</link>></span> @@.cyan;[Shift+S]@@ - <</if>> - <<if $secBarracks > 0 && _Pass !== "secBarracks">> - <br><span id="secBarracks"><<link "Manage Military">><<set $nextButton = "Back", $nextLink = _Pass>><<goto "secBarracks">><</link>></span> @@.cyan;[Shift+A]@@ - <</if>> - <<if $riotCenter > 0 && _Pass !== "riotControlCenter">> - <br><span id="riotCenter"><<link "Manage Rebels">><<set $nextButton = "Back", $nextLink = _Pass>><<goto "riotControlCenter">><</link>></span> @@.cyan;[Shift+R]@@ + <</replace>> <</link>> + <</if>> + </span> + <<elseif ["Dispensary", "Organ Farm", "Implant Manufactory", "Gene Lab", "Prosthetics Config"].includes(_Pass)>> + <br> + <<if $dispensary && _Pass !== "Dispensary">> <br>[[Pharmaceutical Fabricator|Dispensary]]<</if>> + <<if $organFarmUpgrade && _Pass !== "Organ Farm">> <br>[[Organ Farm|Organ Farm]]<</if>> + <<if $ImplantProductionUpgrade && _Pass !== "Implant Manufactory">> <br>[[Implant Manufactory|Implant Manufactory]]<</if>> + <<if $geneticMappingUpgrade && _Pass !== "Gene Lab">> <br>[[Gene Lab|Gene Lab]]<</if>> + <<if $prostheticsUpgrade && _Pass !== "Prosthetic Lab">> <br>[[Prosthetic Lab|Prosthetic Lab]]<</if>> + <<elseif _Pass == "Rules Assistant">> + <br><<link [[Rules Assistant Summary]]>><</link>> + <<elseif ["Firebase", "propagandaHub", "securityHQ", "secBarracks", "riotControlCenter"].includes(_Pass)>> + <br> + <<if $SF.Toggle && $SF.Active >= 1 && _Pass !== "Firebase">> + <br><span id="SFMButton"> <<link "$SF.Caps's firebase""Firebase">><</link>> </span> @@.cyan;[Z]@@ + <</if>> + <<if $propHub > 0 && _Pass !== "propagandaHub">> + <br><span id="propHub"><<link "Manage PR">><<set $nextButton = "Back", $nextLink = _Pass>><<goto "propagandaHub">><</link>></span> @@.cyan;[Shift+H]@@ + <</if>> + <<if $secHQ > 0 && _Pass !== "securityHQ">> + <br><span id="securityHQ"><<link "Manage Security">><<set $nextButton = "Back", $nextLink = _Pass>><<goto "securityHQ">><</link>></span> @@.cyan;[Shift+S]@@ + <</if>> + <<if $secBarracks > 0 && _Pass !== "secBarracks">> + <br><span id="secBarracks"><<link "Manage Military">><<set $nextButton = "Back", $nextLink = _Pass>><<goto "secBarracks">><</link>></span> @@.cyan;[Shift+A]@@ + <</if>> + <<if $riotCenter > 0 && _Pass !== "riotControlCenter">> + <br><span id="riotCenter"><<link "Manage Rebels">><<set $nextButton = "Back", $nextLink = _Pass>><<goto "riotControlCenter">><</link>></span> @@.cyan;[Shift+R]@@ + <</if>> <</if>> <</if>> <</if>> @@ -697,8 +726,9 @@ <<goto "Options">> <</link>> </span> @@.cyan;[O]@@ - <<elseif _Pass === "Summary Options" || _Pass === "Description Options">> + <<else>> <<if _Pass !== "Summary Options">> <<link "Summary Options" "Summary Options">> <</link>> <</if>> + <<if _Pass === "Options">> <br> <</if>> <<if _Pass !== "Description Options">> <<link "Description Options" "Description Options">> <</link>> <</if>> <</if>> <</if>> diff --git a/src/uncategorized/universalRules.tw b/src/uncategorized/universalRules.tw index b8bb48698e73f09e0389bacf5c6bfd244a04482d..66d61d13a645fb5acb0752f2576de4b782c2b1ba 100644 --- a/src/uncategorized/universalRules.tw +++ b/src/uncategorized/universalRules.tw @@ -1,7 +1,7 @@ :: Universal Rules [nobr] <<set $nextButton = "Back">> -<<set $nextLink = "Main">> +<<set $nextLink = "Manage Penthouse">> ''Permissions for slaves'' <br> @@ -158,11 +158,11 @@ Use ''$brandDesign.primary'' or choose another brand: <<if ($arcologies[0].FSSubjugationist != "unset") && ($activeSlave.race == $arcologies[0].FSSubjugationistRace)>> | //FS// [[Racial Slur|Universal Rules][$brandDesign.primary = "a racial slur"]] <</if>> <<if ($arcologies[0].FSRepopulationFocus != "unset")>> -| //FS// [[Birth Count|Universal Rules][$brandDesign.primary = "the number of children "+$he+" has birthed"]] <</if>> +| //FS// [[Birth Count|Universal Rules][$brandDesign.primary = "the number of children $he has birthed"]] <</if>> <<if ($arcologies[0].FSGenderRadicalist != "unset") || ($arcologies[0].FSGenderFundamentalist != "unset")>> | //FS// [[Gender Symbol|Universal Rules][$brandDesign.primary = "a gender symbol"]] <</if>> <<if ($arcologies[0].FSPaternalist != "unset")>> -| //FS// [[Personal Symbol|Universal Rules][$brandDesign.primary = $his+" own personal symbol"]] <</if>> +| //FS// [[Personal Symbol|Universal Rules][$brandDesign.primary = "$his own personal symbol"]] <</if>> <<if ($arcologies[0].FSDegradationist != "unset")>> | //FS// [[Chain Symbol|Universal Rules][$brandDesign.primary = "a chain symbol"]] <</if>> <<if ($arcologies[0].FSBodyPurist != "unset")>> @@ -170,21 +170,21 @@ Use ''$brandDesign.primary'' or choose another brand: <<if ($arcologies[0].FSTransformationFetishist != "unset")>> | //FS// [[Scalpel|Universal Rules][$brandDesign.primary = "a scalpel"]] <</if>> <<if ($arcologies[0].FSYouthPreferentialist != "unset")>> -| //FS// [[Virginity Status|Universal Rules][$brandDesign.primary = $his+" virginity status"]] <</if>> +| //FS// [[Virginity Status|Universal Rules][$brandDesign.primary = "$his virginity status"]] <</if>> <<if ($arcologies[0].FSMaturityPreferentialist != "unset")>> -| //FS// [[Sexual Skill Info|Universal Rules][$brandDesign.primary = $his+" sexual skills"]] <</if>> +| //FS// [[Sexual Skill Info|Universal Rules][$brandDesign.primary = "$his sexual skills"]] <</if>> <<if ($arcologies[0].FSSlimnessEnthusiast != "unset")>> -| //FS// [[Breast Floor|Universal Rules][$brandDesign.primary = $his+" absolute minimum breast size"]] <</if>> +| //FS// [[Breast Floor|Universal Rules][$brandDesign.primary = "$his absolute minimum breast size"]] <</if>> <<if ($arcologies[0].FSAssetExpansionist != "unset")>> -| //FS// [[Breast Ceiling|Universal Rules][$brandDesign.primary = $his+" absolute maximum breast size"]] <</if>> +| //FS// [[Breast Ceiling|Universal Rules][$brandDesign.primary = "$his absolute maximum breast size"]] <</if>> <<if ($arcologies[0].FSHedonisticDecadence != "unset")>> -| //FS// [[Weight Record|Universal Rules][$brandDesign.primary = $his+" highest weigh-in"]] <</if>> +| //FS// [[Weight Record|Universal Rules][$brandDesign.primary = "$his highest weigh-in"]] <</if>> <<if ($arcologies[0].FSHedonisticDecadence != "unset") && $PC.refreshmentType == 2>> | //FS// [[Favorite Food|Universal Rules][$brandDesign.primary = "a big helping of "+$PC.refreshment]] <</if>> <<if ($arcologies[0].FSPastoralist != "unset")>> -| //FS// [[Product Quality|Universal Rules][$brandDesign.primary = $his+" body product quality"]] <</if>> +| //FS// [[Product Quality|Universal Rules][$brandDesign.primary = "$his body product quality"]] <</if>> <<if ($arcologies[0].FSPhysicalIdealist != "unset")>> -| //FS// [[Deadlift Info|Universal Rules][$brandDesign.primary = $his+" deadlift record"]] <</if>> +| //FS// [[Deadlift Info|Universal Rules][$brandDesign.primary = "$his deadlift record"]] <</if>> <<if ($arcologies[0].FSChattelReligionist != "unset")>> | //FS// [[Religious Symbol|Universal Rules][$brandDesign.primary = "a religious symbol"]] <</if>> <<if ($arcologies[0].FSRomanRevivalist != "unset")>> diff --git a/src/uncategorized/wardrobeUse.tw b/src/uncategorized/wardrobeUse.tw index 5e6801141864704c4554c67b0b37959b6827c5dc..9c4b5beb2377ef7cf4fd7780ee66522578d83047 100644 --- a/src/uncategorized/wardrobeUse.tw +++ b/src/uncategorized/wardrobeUse.tw @@ -522,6 +522,7 @@ Anal accessory: ''$activeSlave.buttplug.'' <<option "none" "None">> <<option "tail" "Tail">> <<option "cat tail" "Cat tail">> + <<option "cow tail" "Cow tail">> <<option "fox tail" "Fox tail">> <</options>> <</if>> diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw index 8f591d5e20f29600cab692323240142933e8a1d3..64cfd2281c3beef0815b6fd678839f5175393235 100644 --- a/src/utility/descriptionWidgetsFlesh.tw +++ b/src/utility/descriptionWidgetsFlesh.tw @@ -16834,7 +16834,7 @@ $His womb contains <<= num(_slaveWD.litters.length)>> separate pregnancies; <</if>> <<case "torpedo-shaped">> <<if $activeSlave.boobs > 12000>> - They are naturally torpedo-shaped, which can be seen in the way they stick out more than a <<if $showInches == 2>>yard<<else>>meter<</if>> in front of $his when $he sits up. + They are naturally torpedo-shaped, which can be seen in the way they stick out more than a <<if $showInches == 2>>yard<<else>>meter<</if>> in front of $him when $he sits up. <<elseif $activeSlave.boobs > 5000>> They're huge promontories of soft flesh. Their natural torpedo shape remains to a certain extent, $his swaying breasts reaching an incredibly long way out from $his chest. <<elseif $activeSlave.boobs > 2500>> @@ -16850,7 +16850,7 @@ $His womb contains <<= num(_slaveWD.litters.length)>> separate pregnancies; <</if>> <<case "wide-set">> <<if $activeSlave.boobs > 12000>> - They are naturally wide-set, which can be seen in the way they stick out more than a <<if $showInches == 2>>yard<<else>>meter<</if>> to either side of $his when $he's face-down. + They are naturally wide-set, which can be seen in the way they stick out more than a <<if $showInches == 2>>yard<<else>>meter<</if>> to either side of $him when $he's face-down. <<elseif $activeSlave.boobs > 5000>> They're huge pillows of soft flesh whose natural wide-set shape somehow keeps them from touching despite their mass. <<elseif $activeSlave.boobs > 2500>> diff --git a/src/utility/descriptionWidgetsStyle.tw b/src/utility/descriptionWidgetsStyle.tw index 1579e75087a4b391f976488e106532fc9afd1478..73b8c2c74dcf664e6bd968b7923f43fd4681410b 100644 --- a/src/utility/descriptionWidgetsStyle.tw +++ b/src/utility/descriptionWidgetsStyle.tw @@ -5847,6 +5847,8 @@ $His A tail protrudes from the back of the plug and dangles from $his rear. <<elseif $activeSlave.buttplugAttachment == "fox tail">> A bushy $activeSlave.hColor tail with a white tip protrudes from the back of the plug and dangles from $his rear. + <<elseif $activeSlave.buttplugAttachment == "cow tail">> + A slim, spotted tail with a cute tuft at its tip protudes from the back of the plug and dangles from $his rear. <<elseif $activeSlave.buttplugAttachment == "cat tail">> A tail protrudes from the back of the plug and springs upwards from $his rear. <</if>> @@ -5862,6 +5864,8 @@ $His A tail protrudes from the back of the plug and dangles from $his rear. <<elseif $activeSlave.buttplugAttachment == "fox tail">> A bushy $activeSlave.hColor tail with a white tip protrudes from the back of the plug and dangles from $his rear. + <<elseif $activeSlave.buttplugAttachment == "cow tail">> + A slim, spotted tail with a cute tuft at its tip protudes from the back of the plug and dangles from $his rear. <<elseif $activeSlave.buttplugAttachment == "cat tail">> A tail protrudes from the back of the plug and springs upwards from $his rear. <</if>> @@ -5879,6 +5883,8 @@ $His $He swings the tail from side to side with every shift of $his rear. <<elseif $activeSlave.buttplugAttachment == "fox tail">> $He swings the bushy $activeSlave.hColor tail from side to side with every shift of $his rear. + <<elseif $activeSlave.buttplugAttachment == "cow tail">> + $He swings the spotted tail from side to side with every shift of $his rear. <<elseif $activeSlave.buttplugAttachment == "cat tail">> $He bounces the tail from side to side with every shift of $his rear. <</if>> @@ -5896,6 +5902,8 @@ $His $He swings the tail from side to side with every shift of $his rear. <<elseif $activeSlave.buttplugAttachment == "fox tail">> $He swings the bushy $activeSlave.hColor tail from side to side with every shift of $his rear. + <<elseif $activeSlave.buttplugAttachment == "cow tail">> + $He swings the spotted tail from side to side with every shift of $his rear. <<elseif $activeSlave.buttplugAttachment == "cat tail">> $He bounces the tail from side to side with every shift of $his rear. <</if>> @@ -5916,6 +5924,8 @@ $His $He sways the tail back and forth with every ginger movement of $his rear. <<elseif $activeSlave.buttplugAttachment == "fox tail">> $He sways the bushy $activeSlave.hColor tail back and forth with every ginger movement of $his rear. + <<elseif $activeSlave.buttplugAttachment == "cow tail">> + $He sways the spotted tail back and forth with every ginger movement of $his rear. <<elseif $activeSlave.buttplugAttachment == "cat tail">> $He jiggles the tail back and forth with every ginger movement of $his rear. <</if>> @@ -5936,6 +5946,8 @@ $His $He sways the tail back and forth with every ginger movement of $his rear. <<elseif $activeSlave.buttplugAttachment == "fox tail">> $He sways the bushy $activeSlave.hColor tail back and forth with every ginger movement of $his rear. + <<elseif $activeSlave.buttplugAttachment == "cow tail">> + $He sways the spotted tail back and forth with every ginger movement of $his rear. <<elseif $activeSlave.buttplugAttachment == "cat tail">> $He jiggles the tail back and forth with every ginger movement of $his rear. <</if>> diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw index 19f6040dd43ed77d9cb9361c0bbc8a8614d61327..32a57878dc9f91a06257eb4168b50055ef37dd8f 100644 --- a/src/utility/miscWidgets.tw +++ b/src/utility/miscWidgets.tw @@ -329,7 +329,7 @@ Call as <<SlaveInteractFertility>> <<if $activeSlave.broodmotherOnHold != 1>> [[Turn off implant|Slave Interact][$activeSlave.broodmotherOnHold = 1, $activeSlave.broodmotherCountDown = 38-WombMinPreg($activeSlave)]] <</if>> - <<if ($activeSlave.broodmotherOnHold != 1) && ($activeSlave.preg >= 37)>> + <<if ($activeSlave.broodmotherOnHold != 1) && ($activeSlave.preg >= 36)>> | <</if>> <<if ($activeSlave.preg > 37)>>