diff --git a/src/events/intro/initNationalities.tw b/src/events/intro/initNationalities.tw index 59aa557138b76ed7df4cfc3d32821258e0e70928..17bfd75818a67e770360acf63e856ec8cfd2966b 100644 --- a/src/events/intro/initNationalities.tw +++ b/src/events/intro/initNationalities.tw @@ -82,6 +82,9 @@ /*Nationalities Setup*/ <<set $basenationalities = ["American", "Afghan", "Algerian","Argentinian", "Armenian", "Australian", "Austrian", "Bangladeshi", "Belarusian", "Belgian", "Bolivian", "Brazilian", "British", "Burmese", "Canadian", "Chilean", "Chinese", "Czech", "Colombian", "Congolese", "Cuban", "Danish", "Dominican", "Dutch", "Egyptian", "Emirati", "Estonian", "Ethiopian", "Filipina", "Finnish", "French", "German", "Ghanan", "Greek", "Guatemalan", "Haitian", "Hungarian", "Icelandic", "Indonesian", "Indian", "Iranian", "Iraqi", "Italian", "Irish", "Israeli", "Jamaican", "Japanese", "Jordanian", "Kazakh", "Kenyan", "Korean", "Lebanese", "Libyan", "Lithuanian", "Malaysian", "Malian", "Mexican", "Moroccan", "Nepalese", "a New Zealander", "Nigerian", "Norwegian", "Omani", "Pakistani", "Peruvian", "Polish", "Portuguese", "Puerto Rican", "Romanian", "Russian", "Saudi", "Scottish", "Serbian", "Slovak", "South African", "Spanish", "Sudanese", "Swedish", "Swiss", "Tanzanian", "Thai", "Tunisian", "Turkish", "Ugandan", "Ukrainian", "Uzbek", "Venezuelan", "Vietnamese", "Yemeni", "Zimbabwean"]>> + +<<unset $nationalitiescheck>> /* Removes unique nationalities array to avoid var bloat */ + <<if ndef $customVariety>> /* If non-custom variety, empties or defines $nationalities */ <<set $nationalities = []>> <</if>> diff --git a/src/gui/Encyclopedia/encyclopedia.tw b/src/gui/Encyclopedia/encyclopedia.tw index 3e5e23a3a26ccd50a2411074f94501ce5490c5ff..a6bb971d7c7159d0f649744ec66b5146984ace52 100644 --- a/src/gui/Encyclopedia/encyclopedia.tw +++ b/src/gui/Encyclopedia/encyclopedia.tw @@ -915,7 +915,7 @@ __I do not give credit without explicit permission to do so.__ If you have contr ''Wahn'' wrote numerous generic recruitment events. ''Pregmodder'' has modded extensively, including descriptive embellishments for pregnant slaves, Master Suite reporting, the Wardrobe, a pack of facility leader interactions, options for Personal Assistant appearances, birthing scenes, fake pregnancy accessories, many other preg mechanics, blind content, expanded chubby belly descriptions, several new surgeries, better descriptive support for different refreshments, and an expansion to the hostage corruption event chain. ''Lolimodder'' your loli expertise will be missed. -''pregmodfan'' for tremendous amounts of work with compilers, decompilers, etc. Single-handedly kicked this mod into its new git home. Also for ppmod, ramod, implmod, cfpmod and psmod (preg speed). +''pregmodfan'' for tremendous amounts of work with compilers, decompilers, etc. Single-handedly kicked this mod into its new git home. Contributed lots of bugfixes as well as fixed the RA considerably. Also for ppmod, ramod, implmod, cfpmod and psmod (preg speed). ''family mod anon'' for extending extended family mode. ''anon'' for lolimod content, new slave careers, new pubestyles, and general improvements. ''anon'' for considerable bugfixing, most notably that infernal reputation bug. @@ -932,6 +932,7 @@ __I do not give credit without explicit permission to do so.__ If you have contr ''anon'' for player family listing. ''anon'' for interchangable prosthetics, advanced facial surgeries, custom nationality distribution and corporation assets overhaul. ''anon'' for forcing dicks onto slavegirls. +''Unknown modder'' who did betterRA mod for old 0.9.5.4 version of original FC. ''brpregmodfan'' for Brazilian start and slave gen. ''Bane70'' optimized huge swaths of code with notable professionalism. ''Circle Tritagonist'' provided several new collars and outfits. diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw index 9793fced41871bbc51c346ca1c6007c27fbbcb45..04e4b34e62cc2422b49c75686339bc0eea9db38c 100644 --- a/src/init/storyInit.tw +++ b/src/init/storyInit.tw @@ -346,7 +346,7 @@ <<set $cheater = 0>> <<set $PCName to "Anonymous">> -<<set $PC to {title: 1, ID: -1, dick: 1, vagina: 0, preg: 0, pregSource: 0, pregMood: 0, labor: 0, births: 0, boobsBonus: 0, degeneracy: 0, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, career: "capitalist", rumor: "wealth", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), age: 2, sexualEnergy: 4, refreshment: "cigar", refreshmentType: 0, race: "white", skin: "white", eyeColor: "blue", hColor: "blonde", nationality: "Stateless", father: 0, mother: 0, sisters: 0, daughters: 0, birthElite: 0, birthMaster: 0, birthDegenerate: 0, birthClient: 0, birthOther: 0, birthArcOwner: 0, intelligence: 3, face: 3, actualAge: 35, physicalAge: 35, visualAge: 35, birthWeek: 0, boobsImplant: 0, butt: 0, buttImplant: 0, ballsImplant: 0, ageImplant: 0}>> +<<set $PC to {title: 1, ID: -1, dick: 1, vagina: 0, preg: 0, pregSource: 0, pregMood: 0, labor: 0, births: 0, boobsBonus: 0, degeneracy: 0, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, career: "capitalist", rumor: "wealth", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), age: 2, sexualEnergy: 4, refreshment: "cigar", refreshmentType: 0, race: "white", skin: "white", eyeColor: "blue", hColor: "blonde", nationality: "Stateless", father: 0, mother: 0, sisters: 0, daughters: 0, birthElite: 0, birthMaster: 0, birthDegenerate: 0, birthClient: 0, birthOther: 0, birthArcOwner: 0, intelligence: 3, face: 3, actualAge: 35, physicalAge: 35, visualAge: 35, birthWeek: 0, boobsImplant: 0, butt: 0, buttImplant: 0, ballsImplant: 0, ageImplant: 0, newVag: 0}>> <<set $cash = 10000>> <<set $normalizedEvents = 0>> <<set $autosave to 1>> @@ -440,7 +440,7 @@ <<else>> <<set $cheater to 0>> <<set $PCName to "Anonymous">> - <<set $PC to {title: 1, ID: -1, dick: 1, vagina: 0, preg: 0, pregSource: 0, pregMood: 0, labor: 0, births: 0, boobsBonus: 0, degeneracy: 0, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, career: "capitalist", rumor: "wealth", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), age: 2, sexualEnergy: 4, refreshment: "cigar", refreshmentType: 0, race: "white", skin: "white", eyeColor: "blue", hColor: "blonde", nationality: "Stateless", father: 0, mother: 0, sisters: 0, daughters: 0, birthElite: 0, birthMaster: 0, birthDegenerate: 0, birthClient: 0, birthOther: 0, birthArcOwner: 0, intelligence: 3, face: 3, actualAge: 35, physicalAge: 35, visualAge: 35, birthWeek: 0, boobsImplant: 0, butt: 0, buttImplant: 0, ballsImplant: 0, ageImplant: 0}>> + <<set $PC to {title: 1, ID: -1, dick: 1, vagina: 0, preg: 0, pregSource: 0, pregMood: 0, labor: 0, births: 0, boobsBonus: 0, degeneracy: 0, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, career: "capitalist", rumor: "wealth", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), age: 2, sexualEnergy: 4, refreshment: "cigar", refreshmentType: 0, race: "white", skin: "white", eyeColor: "blue", hColor: "blonde", nationality: "Stateless", father: 0, mother: 0, sisters: 0, daughters: 0, birthElite: 0, birthMaster: 0, birthDegenerate: 0, birthClient: 0, birthOther: 0, birthArcOwner: 0, intelligence: 3, face: 3, actualAge: 35, physicalAge: 35, visualAge: 35, birthWeek: 0, boobsImplant: 0, butt: 0, buttImplant: 0, ballsImplant: 0, ageImplant: 0, newVag: 0}>> <</if>> <</if>> @@ -1051,29 +1051,43 @@ DairyRestraintsSetting($dairyRestraintsSetting) <<set $schoolteacherCareers to ["a principal", "a teaching assistant", "a teacher", "a scientist", "a professor", "a private instructor", "a librarian", "a scholar"]>> -<<set $whiteNationalities = ["American", "Canadian", "Brazilian", "Argentinian", "Chilean", "Israeli", "South African", "Russian", "Ukrainian", "Irish", "Icelandic", "Finnish", "Swiss", "Danish", "Norwegian", "Austrian", "Slovak", "Dutch", "Belgian", "Czech", "Serbian", "Portuguese", "Hungarian", "Estonian", "Polish", "Lithuanian", "Romanian", "German", "French", "Italian", "British", "Australian", "a New Zealander", "Belarusian", "Scottish"]>> +<<set $whiteNationalities = ["American", "Argentinian", "Australian", "Austrian", "Belarusian", "Belgian", "Brazilian", "British", "Canadian", "Chilean", "Czech", "Danish", "Dutch", "Estonian", "Finnish", "French", "German", "Hungarian", "Icelandic", "Irish", "Israeli", "Italian", "Lithuanian", "Norwegian", "Polish", "Portuguese", "Romanian", "Russian", "Scottish", "Serbian", "Slovak", "South African", "Swiss", "Ukrainian", "a New Zealander"]>> -<<set $asianNationalities = ["American", "Saudi", "Chinese", "Korean", "Japanese", "Thai", "Vietnamese", "Indonesian", "Filipina", "Burmese", "Nepalese", "Uzbek", "Malaysian", "Kazakh", "Australian"]>> +<<set $asianNationalities = ["American", "Australian", "Burmese", "Chinese", "Filipina", "Indonesian", "Japanese", "Kazakh", "Korean", "Malaysian", "Nepalese", "Saudi", "Thai", "Uzbek", "Vietnamese"]>> -<<set $latinaNationalities = ["American", "Puerto Rican"Cuban", "Mexican", "Peruvian", "Venezuelan", "Bolivian", "Guatemalan", "Brazilian", "Argentinian", "Chilean", "Colombian"]>> +<<set $latinaNationalities = ["American", "Argentinian", "Bolivian", "Brazilian", "Chilean", "Colombian", "Cuban", "Guatemalan", "Mexican", "Peruvian", "Puerto Rican", "Venezuelan"]>> -<<set $middleEasternNationalities = ["American", "Egyptian", "Turkish", "Israeli", "Saudi", "Moroccan", "Ethiopian", "Afghan", "Algerian", "Libyan", "Tunisian", "Lebanese", "Jordanian", "Emirati", "Omani", "Malian", "Sudanese", "Yemeni", "Iraqi", "German", "Swedish", "French", "Italian"]>> +<<set $middleEasternNationalities = ["Afghan", "Algerian", "American", "Egyptian", "Emirati", "Ethiopian", "French", "German", "Iraqi", "Israeli", "Italian", "Jordanian", "Lebanese", "Libyan", "Malian", "Moroccan", "Omani", "Saudi", "Sudanese", "Swedish", "Tunisian", "Turkish", "Yemeni"]>> -<<set $blackNationalities = ["American"Cuban", "Haitian", "Jamaican", "Brazilian", "Egyptian", "Saudi", "Moroccan", "Nigerian", "Kenyan", "Zimbabwean", "Ugandan", "Tanzanian", "Ghanan", "Congolese", "Ethiopian", "South African", "Malian", "Sudanese", "Yemeni", "German", "Swedish", "French", "Australian", "Dominican"]>> +<<set $blackNationalities = ["American", "Australian", "Brazilian", "Congolese", "Cuban", "Dominican", "Egyptian", "Ethiopian", "French", "German", "Ghanan", "Haitian", "Jamaican", "Kenyan", "Malian", "Moroccan", "Nigerian", "Saudi", "South African", "Sudanese", "Swedish", "Tanzanian", "Ugandan", "Yemeni", "Zimbabwean"]>> -<<set $indoAryanNationalities = ["Iranian", "Armenian", "Burmese", "Nepalese", "Afghan", "Emirati", "Omani", "Indian", "Kazakh", "Pakistani", "Bangladeshi", "Slovak", "Hungarian", "Romanian", "British"]>> +<<set $indoaryanNationalities = ["Afghan", "Armenian", "Bangladeshi", "British", "Burmese", "Emirati", "Hungarian", "Indian", "Iranian", "Kazakh", "Nepalese", "Omani", "Pakistani", "Romanian", "Slovak"]>> -<<set $pacificIslanderNationalities = ["Indonesian", "Filipina", "a New Zealander"]>> +<<set $pacificislanderNationalities = ["Filipina", "Indonesian", "a New Zealander"]>> -<<set $malayNationalities = ["Thai", "Indonesian", "Filipina", "Malaysian"]>> +<<set $malayNationalities = ["Filipina", "Indonesian", "Malaysian", "Thai"]>> -<<set $amerindianNationalities = ["American", "Canadian", "Mexican", "Peruvian", "Bolivian", "Guatemalan", "Brazilian"]>> +<<set $amerindianNationalities = ["American", "Bolivian", "Brazilian", "Canadian", "Guatemalan", "Mexican", "Peruvian"]>> -<<set $southernEuropeanNationalities = ["French", "Italian", "Greek", "Spanish"]>> +<<set $southernEuropeanNationalities = ["French", "Greek", "Italian", "Spanish"]>> -<<set $semiticNationalities = ["Egyptian", "Turkish", "Iranian", "Armenian", "Israeli", "Tanzanian", "Ghanan", "Ethiopian", "Lebanese", "Jordanian", "Yemeni", "Iraqi", "Kazakh", "Pakistani", "Romanian", "Spanish"]>> +<<set $semiticNationalities = ["Armenian", "Egyptian", "Ethiopian", "Ghanan", "Iranian", "Iraqi", "Israeli", "Jordanian", "Kazakh", "Lebanese", "Pakistani", "Romanian", "Spanish", "Tanzanian", "Turkish", "Yemeni"]>> -<<set $whiteAmericanSlaveNames to ["Sophia", "Emma", "Olivia", "Ava", "Isabella", "Mia", "Zoe", "Lily", "Emily", "Madelyn", "Madison", "Chloe", "Charlotte", "Aubrey", "Avery", "Abigail", "Kaylee", "Layla", "Harper", "Ella", "Amelia", "Arianna", "Riley", "Aria", "Hailey", "Hannah", "Evelyn", "Addison", "Mackenzie", "Adalyn", "Ellie", "Brooklyn", "Nora", "Scarlett", "Grace", "Anna", "Isabelle", "Natalie", "Kaitlyn", "Lillian", "Sarah", "Audrey", "Elizabeth", "Leah", "Annabelle", "Kylie", "Mila", "Claire", "Victoria", "Maya", "Lila", "Elena", "Lucy", "Savannah", "Gabriella", "Callie", "Alaina", "Sophie", "Makayla", "Kennedy", "Sadie", "Skyler", "Allison", "Caroline", "Penelope", "Alyssa", "Peyton", "Samantha", "Liliana", "Bailey", "Maria", "Reagan", "Violet", "Eliana", "Adeline", "Eva", "Stella", "Keira", "Katherine", "Jessica", "Jennifer", "Amanda", "Ashley", "Sarah", "Stephanie", "Melissa", "Nicole", "Elizabeth", "Heather", "Tiffany", "Michelle", "Amber", "Megan", "Amy", "Rachel", "Kimberly", "Christina", "Lauren", "Crystal", "Brittany", "Rebecca", "Laura", "Danielle", "Emily", "Samantha", "Angela", "Erin", "Kelly", "Sara", "Lisa", "Katherine", "Andrea", "Jamie", "Mary", "Erica", "Courtney", "Kristen", "Shannon", "April", "Katie", "Lindsey", "Kristin", "Lindsay", "Christine", "Alicia", "Vanessa", "Maria", "Kathryn", "Allison", "Julie", "Anna", "Tara", "Kayla", "Natalie", "Victoria", "Monica", "Jacqueline", "Holly", "Kristina", "Patricia", "Cassandra", "Brandy", "Whitney", "Chelsea", "Brandi", "Catherine", "Cynthia", "Kathleen", "Veronica", "Leslie", "Natasha", "Krystal", "Stacy", "Diana", "Erika", "Dana", "Jenna", "Meghan", "Carrie", "Leah", "Melanie", "Brooke", "Karen", "Alexandra", "Valerie", "Caitlin", "Julia", "Alyssa", "Jasmine", "Hannah", "Stacey", "Brittney", "Susan", "Margaret", "Sandra", "Candice", "Latoya", "Bethany", "Misty"]>> +/* START Custom Nationalities region filter */ +<<set $northamericaNationalities = ["American", "Mexican", "Dominican", "Canadian", "Haitian", "Cuban", "Puerto Rican", "Jamaican"]>> + +<<set $southamericaNationalities = ["Argentinian", "Bolivian", "Brazilian", "Chilean", "Colombian", "Guatemalan", "Peruvian", "Venezuelan"]>> + +<<set $europeNationalities = ["Austrian", "Belarusian", "Belgian", "British", "Czech", "Danish", "Dutch", "Estonian", "Finnish", "French", "German", "Greek", "Hungarian", "Icelandic", "Irish", "Italian", "Lithuanian", "Norwegian", "Polish", "Portuguese", "Romanian", "Russian", "Scottish", "Serbian", "Slovak", "Spanish", "Swiss", "Ukrainian"]>> + +<<set $asiaNationalities = ["Bangladeshi", "Burmese", "Chinese", "Filipina", "Indian", "Indonesian", "Japanese", "Kazakh", "Korean", "Malaysian", "Nepalese", "Pakistani", "Thai", "Uzbek", "Vietnamese"]>> + +<<set $middleeastNationalities = ["Afghan", "Armenian", "Egyptian", "Emirati", "Iranian", "Iraqi", "Israeli", "Jordanian", "Lebanese", "Omani", "Saudi", "Turkish", "Yemeni"]>> + +<<set $africaNationalities = ["Algerian", "Congolese", "Ethiopian", "Ghanan", "Kenyan", "Libyan", "Malian", "Moroccan", "Nigerian", "South African", "Sudanese", "Tanzanian", "Tunisian", "Ugandan", "Zimbabwean"]>> + +<<set $australiaNationalities = ["Australian", "a New Zealander"]>> +/* END Custom Nationalities region filter */<<set $whiteAmericanSlaveNames to ["Sophia", "Emma", "Olivia", "Ava", "Isabella", "Mia", "Zoe", "Lily", "Emily", "Madelyn", "Madison", "Chloe", "Charlotte", "Aubrey", "Avery", "Abigail", "Kaylee", "Layla", "Harper", "Ella", "Amelia", "Arianna", "Riley", "Aria", "Hailey", "Hannah", "Evelyn", "Addison", "Mackenzie", "Adalyn", "Ellie", "Brooklyn", "Nora", "Scarlett", "Grace", "Anna", "Isabelle", "Natalie", "Kaitlyn", "Lillian", "Sarah", "Audrey", "Elizabeth", "Leah", "Annabelle", "Kylie", "Mila", "Claire", "Victoria", "Maya", "Lila", "Elena", "Lucy", "Savannah", "Gabriella", "Callie", "Alaina", "Sophie", "Makayla", "Kennedy", "Sadie", "Skyler", "Allison", "Caroline", "Penelope", "Alyssa", "Peyton", "Samantha", "Liliana", "Bailey", "Maria", "Reagan", "Violet", "Eliana", "Adeline", "Eva", "Stella", "Keira", "Katherine", "Jessica", "Jennifer", "Amanda", "Ashley", "Sarah", "Stephanie", "Melissa", "Nicole", "Elizabeth", "Heather", "Tiffany", "Michelle", "Amber", "Megan", "Amy", "Rachel", "Kimberly", "Christina", "Lauren", "Crystal", "Brittany", "Rebecca", "Laura", "Danielle", "Emily", "Samantha", "Angela", "Erin", "Kelly", "Sara", "Lisa", "Katherine", "Andrea", "Jamie", "Mary", "Erica", "Courtney", "Kristen", "Shannon", "April", "Katie", "Lindsey", "Kristin", "Lindsay", "Christine", "Alicia", "Vanessa", "Maria", "Kathryn", "Allison", "Julie", "Anna", "Tara", "Kayla", "Natalie", "Victoria", "Monica", "Jacqueline", "Holly", "Kristina", "Patricia", "Cassandra", "Brandy", "Whitney", "Chelsea", "Brandi", "Catherine", "Cynthia", "Kathleen", "Veronica", "Leslie", "Natasha", "Krystal", "Stacy", "Diana", "Erika", "Dana", "Jenna", "Meghan", "Carrie", "Leah", "Melanie", "Brooke", "Karen", "Alexandra", "Valerie", "Caitlin", "Julia", "Alyssa", "Jasmine", "Hannah", "Stacey", "Brittney", "Susan", "Margaret", "Sandra", "Candice", "Latoya", "Bethany", "Misty"]>> <<set $africanAmericanSlaveNames to ["Madison", "Kayla", "Makayla", "Nevaeh", "Jada", "Brianna", "Chloe", "Destiny", "Alyssa", "Gabrielle", "Imani", "Kimora", "Aaliyah", "Jayla", "Abigail", "Arianna", "Ava", "Fatoumata", "Jade", "London", "Savannah", "Victoria", "Aniyah", "Nyla", "Olivia", "Taylor", "Ashley", "Sarah", "Jasmine", "Laila", "Chelsea", "Heaven"]>> diff --git a/src/js/betterRA.tw b/src/js/betterRA.tw new file mode 100644 index 0000000000000000000000000000000000000000..18c6f084a28501a3e6443347ceda205108d805b9 --- /dev/null +++ b/src/js/betterRA.tw @@ -0,0 +1,318 @@ +:: BetterRA_JS [script] +//Imported to pregmod from unknown author added this to original FC at some point (0.9.5.4). I don't write this by myself (pregmodfan). + +// Implements a Top Down Operator Precedence parser, also know as a Pratt +// parser, after its "inventor", Vaughan Pratt. The one implemented here +// closely follows what's presented here, +// * http://javascript.crockford.com/tdop/tdop.html +// by Douglas Crockford. He uses that parser in JSLint. Other relevant +// resources on the interweb +// * http://effbot.org/zone/simple-top-down-parsing.htm +// * http://eli.thegreenplace.net/2010/01/02/top-down-operator-precedence-parsing +// * http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/ +// * https://higherlogics.blogspot.gr/2009/11/extensible-statically-typed-pratt.html +// * https://github.com/fholm/Vaughan +// included here mostly as bookmarks for potential future reference. +// +// With regards to the lexer, I mostly copied +// * http://eli.thegreenplace.net/2013/06/25/regex-based-lexical-analysis-in-python-and-javascript/ +// not without changes though. +// +// Other useful things, to complement my lacking JavaScript knowledge were +// * https://plainjs.com/javascript/utilities/merge-two-javascript-objects-19/ +// * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions +// Some I actually use, some I do not + + +function panic(index, msg) { + throw {index: index, message: msg}; +} + +function escapeRegExp(s){ + return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); +} + + +var Lexer = function(skipWhitespace) { + this.rules = []; + this.index = 0; + this.buffer = ""; + this.skipWhitespace = skipWhitespace ? /\S/ : null; +} + +Lexer.prototype.addRule = function(id, defn) { + var pattern = (defn && defn.pattern) || escapeRegExp(id); + this.rules.push({ + id: id, + pattern: new RegExp('^' + pattern) + }); +} + +Lexer.prototype.feed = function(buffer) { + this.buffer = buffer; + this.index = 0; +} + +Lexer.prototype.nextInterestingChar = function() { + if (this.skipWhitespace) { + var match = this.skipWhitespace.exec(this.buffer.substr(this.index)); + return match ? this.index + match.index + : this.buffer.length; + } + return this.index; +} + +Lexer.prototype.next = function() { + this.index = this.nextInterestingChar(); + + if (this.index >= this.buffer.length) + return { done: true }; + + for (var i = 0; i < this.rules.length; ++i) { + var rule = this.rules[i], + match = rule.pattern.exec(this.buffer.substr(this.index)); + if (match) { + var token = { + id: rule.id, + value: match[0], + index: this.index, + }; + this.index += token.value.length; + return { done: false, value: token }; + } + } + + panic(this.index, "illegal character"); +} + + + +var BaseSymbol = { + lbp: 0, + nud: function() { panic(this.index, "Undefined"); }, + led: function() { panic(this.index, "Missing operator"); } +}; + +var Parser = function(eofToken) { + this.lexer = new Lexer(true); + this.currentSymbol = null; + + this.eofToken = eofToken; + this.symbolTable = { + [this.eofToken]: Object.create(BaseSymbol, {id: {value: this.eofToken}}) + }; +} + +Parser.prototype.addSymbol = function(id, defn) { + var s = this.symbolTable[id]; + if (s) { + if (defn && defn.lbp !== undefined && defn.lbp >= s.lbp) s.lbp = defn.lbp; + if (defn && defn.nud !== undefined) s.nud = defn.nud; + if (defn && defn.led !== undefined) s.led = defn.led; + } else { + s = Object.create(BaseSymbol); + s.id = id; + if (defn && defn.lbp !== undefined) s.lbp = defn.lbp; + if (defn && defn.nud) s.nud = defn.nud; + if (defn && defn.led) s.led = defn.led; + this.symbolTable[id] = s; + this.lexer.addRule(id, defn); + } + return this; +} + +Parser.prototype.addInfix = function(id, lbp, callback) { + this.addSymbol(id, { + lbp: lbp, + led: function(p, left) { return callback(this, left, p.parse(lbp)); } + }); + return this; +} + +Parser.prototype.addInfixR = function(id, lbp, callback) { + this.addSymbol(id, { + lbp: lbp, + led: function(p, left) { return callback(this, left, p.parse(lbp-1)); } + }); + return this; +} + +Parser.prototype.addPrefix = function(id, callback) { + this.addSymbol(id, { + // FIXME: is the rbp (in parse) always 70? + nud: function (p) { return callback(p.parse(70)); } + }); + return this; +} + +Parser.prototype.advance = function(id) { + if (id && this.currentSymbol.id !== id) + panic(this.currentSymbol.index, "expected '" + id + "'"); + + var iter = this.lexer.next(), + token = iter.value; + if (iter.done) + token = { + id: this.eofToken, + value: "", + index: this.lexer.buffer.length + }; + + var symbol = this.symbolTable[iter.done ? this.eofToken : token.id]; + if (!symbol) + panic(token.index, "unknown token " + token.id); + + var newSymbol = Object.create(symbol); + newSymbol.value = token.value; + newSymbol.index = token.index; + return this.currentSymbol = newSymbol; +} + +Parser.prototype.parse = function(rbp) { + var symbol = this.currentSymbol; + this.advance(); + var left = symbol.nud(this); + + rbp = rbp || 0; + while (rbp < this.currentSymbol.lbp) { + symbol = this.currentSymbol; + this.advance(); + left = symbol.led(this, left); + } + return left; +} + +Parser.prototype.parseString = function(string) { + this.lexer.feed(string); + this.advance(); // "kickstart" the lexer + return this.parse(); +} + + + +var BaseExpression = { + check: function(env) { panic("Wrong!"); }, + eval: function(env) { panic("Do no know how to eval " + this); } +}; + +var DeferredEvalParserBuilder = function(eofToken) { + this.parser = new Parser(eofToken); +} + +DeferredEvalParserBuilder.prototype.addSymbol = function(id, extra) { + this.parser.addSymbol(id, extra); + return this; +} + +DeferredEvalParserBuilder.prototype.addInfix = function(id, lbp, func) { + this.parser.addInfix(id, lbp, function(symbol, left, right) { + var expr = Object.create(BaseExpression); + expr.first = left; + expr.second = right; + expr.eval = function(env) { + return func(this.first.eval(env), this.second.eval(env)); + }; + return expr; + }); + return this; +} + +DeferredEvalParserBuilder.prototype.addInfixR = function(id, lbp, func) { + this.parser.addInfixR(id, lbp, function(symbol, left, right) { + var expr = Object.create(BaseExpression); + expr.first = left; + expr.second = right; + expr.eval = function(env) { + return func(this.first.eval(env), this.second.eval(env)); + }; + return expr; + }); + return this; +} + +DeferredEvalParserBuilder.prototype.addPrefix = function(id, func) { + this.parser.addPrefix(id, function (symbol) { + var expr = Object.create(BaseExpression); + expr.val = symbol; + expr.eval = function(env) { return func(this.val.eval(env)); }; + return expr; + }); + return this; +} + + +var op = { + add: function(a, b) { return a + b; }, + sub: function(a, b) { return a - b; }, + mul: function(a, b) { return a * b; }, + div: function(a, b) { return a / b; }, + pow: function(a, b) { return Math.pow(a, b); }, // for completeness + + neg: function(a) { return -a; }, + + lt: function(a, b) { return a < b; }, + le: function(a, b) { return a <= b; }, + gt: function(a, b) { return a > b; }, + ge: function(a, b) { return a >= b; }, + eq: function(a, b) { return a === b; }, + neq: function(a, b) { return a !== b; }, + + not: function(a) { return !a; }, + or: function(a, b) { return a || b; }, + and: function(a, b) { return a && b; }, +}; + +var parserBuilder = new DeferredEvalParserBuilder('(end)') + .addSymbol('(int)', { + pattern: '\\d+', + nud: function() { + var expr = Object.create(BaseExpression); + expr.val = parseInt(this.value); + expr.eval = function() { return this.val; }; + return expr; + } + }) + .addSymbol('(name)', { + pattern: '[a-zA-Z]\\w*', + nud: function(p) { + var expr = Object.create(BaseExpression); + expr.name = this.value; + expr.eval = function(env) { return env[this.name]; }; + return expr; + } + }) + + .addInfix("+", 50, op.add) + .addInfix("-", 50, op.sub) + .addInfix("*", 60, op.mul) + .addInfix("/", 60, op.div) + .addInfixR("^", 70, op.pow) + + .addPrefix("-", op.neg) + + .addInfix("<=", 30, op.le) + .addInfix("<", 30, op.lt) + .addInfix(">=", 30, op.ge) + .addInfix(">", 30, op.gt) + .addInfix("!=", 30, op.neq) + .addInfix('=', 30, op.eq) + + .addPrefix("!", op.not) + .addInfix('||', 30, op.or) + .addInfix('&&', 30, op.and) + + .addSymbol(")") + .addSymbol("(", { + nud: function(p) { + var expr = p.parse(0); + p.advance(")"); + return expr; + } + }); + +window.parser = parserBuilder.parser; +window.parseAndEvaluate = function(text, env) { + var expr = parser.parseString(text); + return expr.eval(env); +} + diff --git a/src/js/storyJS.tw b/src/js/storyJS.tw index e7e6a886bda78ae3e4b6ecaee028bf1f3efc71b0..6bffdd43b5e0f0d7f24e7e4231c6bb17e43f22f1 100644 --- a/src/js/storyJS.tw +++ b/src/js/storyJS.tw @@ -1983,4 +1983,11 @@ window.ngUpdateGenePool = function(genePool) { result.ID += 1200000; return result; }); -} \ No newline at end of file +} + +window.toJson = function(obj) { + var jsontext = JSON.stringify(obj); + jsontext = jsontext.replace(/^{/,""); + jsontext = jsontext.replace(/}$/,""); + return jsontext; +}; \ No newline at end of file diff --git a/src/npc/acquisition.tw b/src/npc/acquisition.tw index f7dd670c73fc24a55445ae4188aeb05a56b90c18..ff1b4d1d1460e0826bbfdd7ac8f6689736f45cea 100644 --- a/src/npc/acquisition.tw +++ b/src/npc/acquisition.tw @@ -120,7 +120,7 @@ The previous owner seems to have left in something of a hurry. <<if ($targetArcology.type != "New")>> <<set $FSAnnounced to 1>> - <<set $FSCredits++>> + <<set $FSGotRepCreditOne = 1>> <</if>> <<set $heroSlaves to $heroSlaves.shuffle()>> diff --git a/src/pregmod/basenationalitiesControls.tw b/src/pregmod/basenationalitiesControls.tw new file mode 100644 index 0000000000000000000000000000000000000000..c6369692ff5696acbd76dedc97b19208208c9e79 --- /dev/null +++ b/src/pregmod/basenationalitiesControls.tw @@ -0,0 +1,139 @@ +:: Basenationalities Controls [nobr] + +<<if $nationalities.length < 1>> + //You cannot be a slave owner without a slave trade. Please add nationalities to continue.// +<<else>> + <<link "Confirm customization">> + <<unset $baseControlsFilter>> + <<if $customWA == 0>> + <<goto "Intro Summary">> + <<else>> + <<goto "Extreme Intro">> + <</if>> + <</link>> +<</if>> +<br> + +/* Generates cloned array of $nationalities, removing duplicates */ +<<set $nationalitiescheck = clone($nationalities)>> +<<for _i = 0; _i < $nationalitiescheck.length; _i++>> + <<set _nation to $nationalitiescheck[_i]>> + <<if $nationalitiescheck.count(_nation)>> + <<set $nationalitiescheck.delete(_nation),$nationalitiescheck.push(_nation),$nationalitiescheck.sort()>> + <</if>> +<</for>> + +/* Prints distribution of $nationalities, using $nationalitiescheck to render array */ +<<for _i = 0; _i < $nationalitiescheck.length; _i++>> + <<set _nation to $nationalitiescheck[_i]>> + <<print _nation>> @@color:orange;<<print (($nationalities.count(_nation)/$nationalities.length)*100).toFixed(2)>>%@@ +<<if _i < $nationalitiescheck.length-1>> | <</if>> +<</for>> +<br><br> + +/* Fine control tweaking of populations */ +Adjust slave populations: +<br style="clear:both" /><hr style="margin:0"> + +/* Filter controls */ +Filter by Race: +<<for _i = 0; _i < $filterRaces.length; _i++>> + <<set _race to $filterRaces[_i]>> + <<if $baseControlsFilter == _race.toLowerCase().replace(/[ -]/g, '')>> + <<print _race>> + <<else>> + <<print " + <<link _race>> + <<set $baseControlsFilter to $filterRaces[" + _i + "].toLowerCase().replace(/[ -]/g, '')>> + <<replace '#PopControl'>><<include 'Basenationalities Controls'>><</replace>> + <</link>> + ">> + <</if>> + <<if _i < $filterRaces.length-1>> + | + <</if>> +<</for>> +<br> +Filter by Region: +<<for _i = 0; _i < $filterRegions.length; _i++>> + <<set _region to $filterRegions[_i]>> + <<if $baseControlsFilter == _region.toLowerCase().replace(/[ -]/g, '')>> + <<print _region>> + <<else>> + <<print " + <<link _region>> + <<set $baseControlsFilter to $filterRegions[" + _i + "].toLowerCase().replace(/[ -]/g, '')>> + <<replace '#PopControl'>><<include 'Basenationalities Controls'>><</replace>> + <</link>> + ">> + <</if>> + <<if _i < $filterRegions.length-1>> + | + <</if>> +<</for>> +<br style="clear:both" /><hr style="margin:0"> + +/* Unfiltered pop controls */ +<<if $baseControlsFilter == "all">> + <<for _i = 0; _i < $basenationalities.length; _i++>> + <<set _nation to $basenationalities[_i]>> + <<print " + _nation + <<link '+'>> + <<set $nationalities.push($basenationalities[" + _i + "])>> + <<replace '#PopControl'>><<include 'Basenationalities Controls'>><</replace>> + <</link>> + ">> + <<if $nationalitiescheck.includes(_nation) > 0 >> + <<print " + <<link '–'>> + <<set $nationalities.deleteAt(($nationalities.indexOf($basenationalities[" + _i + "])))>> + <<replace '#PopControl'>><<include 'Basenationalities Controls'>><</replace>> + <</link>> + ">> + <</if>> + <<if $nationalities.count(_nation) > 1 >> + <<print " + <<link '0'>> + <<set $nationalities.delete($basenationalities[" + _i + "])>> + <<replace '#PopControl'>><<include 'Basenationalities Controls'>><</replace>> + <</link>> + ">> + <</if>> + <<if _i < $basenationalities.length-1>> + | + <</if>> + <</for>> +<<else>> +/* Filtered pop controls */ + <<set _controlsNationality = State.variables[$baseControlsFilter+'Nationalities']>> + <<for _i = 0; _i < _controlsNationality.length; _i++>> + <<set _nation to _controlsNationality[_i]>> + <<print " + _nation + <<link '+'>> + <<set $nationalities.push(_controlsNationality[" + _i + "])>> + <<replace '#PopControl'>><<include 'Basenationalities Controls'>><</replace>> + <</link>> + ">> + <<if $nationalitiescheck.includes(_nation) > 0 >> + <<print " + <<link '–'>> + <<set $nationalities.deleteAt(($nationalities.indexOf(_controlsNationality[" + _i + "])))>> + <<replace '#PopControl'>><<include 'Basenationalities Controls'>><</replace>> + <</link>> + ">> + <</if>> + <<if $nationalities.count(_nation) > 1 >> + <<print " + <<link '0'>> + <<set $nationalities.delete(_controlsNationality[" + _i + "])>> + <<replace '#PopControl'>><<include 'Basenationalities Controls'>><</replace>> + <</link>> + ">> + <</if>> + <<if _i < _controlsNationality.length-1>> + | + <</if>> + <</for>> +<</if>> \ No newline at end of file diff --git a/src/pregmod/customizeSlaveTrade.tw b/src/pregmod/customizeSlaveTrade.tw index 1e7c8eb0e985e0afcdfa59fe5c66afc0df6be16d..b5cc65a7abef01db9ab36a9bd16b667fb4b40ed5 100644 --- a/src/pregmod/customizeSlaveTrade.tw +++ b/src/pregmod/customizeSlaveTrade.tw @@ -1,10 +1,16 @@ :: Customize Slave Trade [nobr] +<<set $basenationalities = ["Afghan", "Algerian", "American", "Argentinian", "Armenian", "Australian", "Austrian", "Bangladeshi", "Belarusian", "Belgian", "Bolivian", "Brazilian", "British", "Burmese", "Canadian", "Chilean", "Chinese", "Colombian", "Congolese", "Cuban", "Czech", "Danish", "Dominican", "Dutch", "Egyptian", "Emirati", "Estonian", "Ethiopian", "Filipina", "Finnish", "French", "German", "Ghanan", "Greek", "Guatemalan", "Haitian", "Hungarian", "Icelandic", "Indian", "Indonesian", "Iranian", "Iraqi", "Irish", "Israeli", "Italian", "Jamaican", "Japanese", "Jordanian", "Kazakh", "Kenyan", "Korean", "Lebanese", "Libyan", "Lithuanian", "Malaysian", "Malian", "Mexican", "Moroccan", "Nepalese", "Nigerian", "Norwegian", "Omani", "Pakistani", "Peruvian", "Polish", "Portuguese", "Puerto Rican", "Romanian", "Russian", "Saudi", "Scottish", "Serbian", "Slovak", "South African", "Spanish", "Sudanese", "Swedish", "Swiss", "Tanzanian", "Thai", "Tunisian", "Turkish", "Ugandan", "Ukrainian", "Uzbek", "Venezuelan", "Vietnamese", "Yemeni", "Zimbabwean", "a New Zealander"]>> +<<set $filterRaces = ["Amerindian", "Asian", "Black", "Indo-Aryan", "Latina", "Malay", "Pacific Islander", "Semitic", "Southern European", "White"]>> +<<set $filterRegions = ["Africa", "Asia", "Australia", "Europe", "Middle East", "North America", "South America"]>> <<if ndef $nationalities>> <<set $nationalities = []>> <<else>> <<set $nationalities.sort()>> <</if>> +<<if ndef $baseControlsFilter>> + <<set $baseControlsFilter = "all">> +<</if>> <<if ndef $customWA>> <<set $customWA = 0>> <</if>> @@ -12,96 +18,33 @@ When civilization turned upon itself, some countries readily took to enslaving their own. Others were raided by their neighbors for their desirable, and profitable, citizens. Which nationalities were most affected by the booming slave trade, and thus, likely to appear in your local slave markets? <br><br> ''+ to increase pop. – to reduce pop. 0 to remove entirely'' +<br><br> +<span id="PopControl"><<include "Basenationalities Controls">></span> <br> -<<if $nationalities.length < 1>> -<br>//You cannot be a slave owner without a slave trade. Please add nationalities to continue.// -<<else>> -<br> -<<link "Confirm customization">> - <<if $customWA == 0>> - <<goto "Intro Summary">> - <<else>> - <<goto "Extreme Intro">> - <</if>> -<</link>> -<</if>> -<<set $basenationalities = ["American", "Afghan", "Algerian","Argentinian", "Armenian", "Australian", "Austrian", "Bangladeshi", "Belarusian", "Belgian", "Bolivian", "Brazilian", "British", "Burmese", "Canadian", "Chilean", "Chinese", "Czech", "Colombian", "Congolese", "Cuban", "Danish", "Dominican", "Dutch", "Egyptian", "Emirati", "Estonian", "Ethiopian", "Filipina", "Finnish", "French", "German", "Ghanan", "Greek", "Guatemalan", "Haitian", "Hungarian", "Icelandic", "Indonesian", "Indian", "Iranian", "Iraqi", "Italian", "Irish", "Israeli", "Jamaican", "Japanese", "Jordanian", "Kazakh", "Kenyan", "Korean", "Lebanese", "Libyan", "Lithuanian", "Malaysian", "Malian", "Mexican", "Moroccan", "Nepalese", "a New Zealander", "Nigerian", "Norwegian", "Omani", "Pakistani", "Peruvian", "Polish", "Portuguese", "Puerto Rican", "Romanian", "Russian", "Saudi", "Scottish", "Serbian", "Slovak", "South African", "Spanish", "Sudanese", "Swedish", "Swiss", "Tanzanian", "Thai", "Tunisian", "Turkish", "Ugandan", "Ukrainian", "Uzbek", "Venezuelan", "Vietnamese", "Yemeni", "Zimbabwean"].sort()>> -<br> -/* Generates cloned array of $nationalities, removing duplicates */ -<<set $nationalitiescheck = clone($nationalities)>> -<<for _i = 0; _i < $nationalitiescheck.length; _i++>> - <<set _nation to $nationalitiescheck[_i]>> - <<if $nationalitiescheck.count(_nation)>> - <<set $nationalitiescheck.delete(_nation),$nationalitiescheck.push(_nation),$nationalitiescheck.sort()>> - <</if>> -<</for>> - -/* Prints distribution of $nationalities, using $nationalitiescheck to render array */ -<<for _i = 0; _i < $nationalitiescheck.length; _i++>> -<<set _nation to $nationalitiescheck[_i]>> - <<print _nation>> @@color:orange;<<print (($nationalities.count(_nation)/$nationalities.length)*100).toFixed(2)>>%@@ -<<if _i < $nationalitiescheck.length-1>> | <</if>> -<</for>> - -<br> -Add: -<br> - -/* Fine control tweaking of populations */ -<<for _i = 0; _i < $basenationalities.length; _i++>> -<<set _nation to $basenationalities[_i]>> -<<print " -_nation - <<link '+'>> - <<set $nationalities.push($basenationalities[" + _i + "])>> - <<goto 'Customize Slave Trade'>> -<</link>> -">> -<<if $nationalitiescheck.includes(_nation) > 0 >> -<<print " - <<link '–'>> - <<set $nationalities.deleteAt(($nationalities.indexOf($basenationalities[" + _i + "])))>> - <<goto 'Customize Slave Trade'>> -<</link>> -">> -<</if>> -<<if $nationalities.count(_nation) > 1 >> -<<print " - <<link '0'>> - <<set $nationalities.delete($basenationalities[" + _i + "])>> - <<goto 'Customize Slave Trade'>> -<</link>> -">> -<</if>> -<<if _i < $basenationalities.length-1>> -| -<</if>> -<</for>> +[[Reset filters|passage()][$baseControlsFilter to "all"]] | [[Clear all nationalities|passage()][$nationalities = []]] <br style="clear:both" /><hr style="margin:0"> -<<link "Clear all nationalities">><<set $nationalities = []>><<goto 'Customize Slave Trade'>><</link>> -| -<<link "Global">><<PresetIntlStd>><<goto 'Customize Slave Trade'>><</link>> -| -<<link "Contemporary Europe">><<PresetEurope>><<goto 'Customize Slave Trade'>><</link>> -| -<<link "Contemporary East Asia">><<PresetEastAsia>><<goto 'Customize Slave Trade'>><</link>> -| -<<link "Contemporary US">><<PresetConUS>><<goto 'Customize Slave Trade'>><</link>> -| -<<link "Vanilla North America">><<PresetVanillaNA>><<goto 'Customize Slave Trade'>><</link>> -| -<<link "Vanilla South America">><<PresetVanillaSA>><<goto 'Customize Slave Trade'>><</link>> -| -<<link "Vanilla Middle East">><<PresetVanillaME>><<goto 'Customize Slave Trade'>><</link>> -| -<<link "Vanilla Africa">><<PresetVanillaAfrica>><<goto 'Customize Slave Trade'>><</link>> -| -<<link "Vanilla Asia">><<PresetVanillaAsia>><<goto 'Customize Slave Trade'>><</link>> -| -<<link "Vanilla Europe">><<PresetVanillaEU>><<goto 'Customize Slave Trade'>><</link>> -| -<<link "Vanilla Australia">><<PresetVanillaAU>><<goto 'Customize Slave Trade'>><</link>> -| -<<link "Brazil Mod">><<PresetBrazil>><<goto 'Customize Slave Trade'>><</link>> -| -<<link "Japan mod">><<PresetJapan>><<goto 'Customize Slave Trade'>><</link>> \ No newline at end of file +Vanilla presets: +<span id="vanilla-presets"></span> +<<script>> +var widgets = Story.widgets + .map(function(wp) { return wp.text.match(/<<widget\s+"NationalityPresetVanilla\S+"\s*>>/g); }) + .filter(function(ws) { return ws; }) + .reduce(function(arr, el) { return arr.concat(el); }, []) + .map(function(w) { return w.replace(/widget\s+"(.*)"\s*/, '$1'); }) + .filter(function(w) { return Macro.has(w.replace(/[<>]/g, '')); }) + .sort().join(' | '); +setTimeout(function() { new Wikifier(jQuery('#vanilla-presets'), widgets); }, 0); +<</script>> +<br> +Mod presets: +<span id="mod-presets"></span> +<<script>> +var widgets = Story.widgets + .map(function(wp) { return wp.text.match(/<<widget\s+"NationalityPresetMod\S+"\s*>>/g); }) + .filter(function(ws) { return ws; }) + .reduce(function(arr, el) { return arr.concat(el); }, []) + .map(function(w) { return w.replace(/widget\s+"(.*)"\s*/, '$1'); }) + .filter(function(w) { return Macro.has(w.replace(/[<>]/g, '')); }) + .sort().join(' | '); +setTimeout(function() { new Wikifier(jQuery('#mod-presets'), widgets); }, 0); +<</script>> \ No newline at end of file diff --git a/src/pregmod/electiveSurgery.tw b/src/pregmod/electiveSurgery.tw index 1bf7e33b22448703c73e0f090bf24e790dcbee22..e894e7027487bf4f5014c84f6e74d024c06a8223 100644 --- a/src/pregmod/electiveSurgery.tw +++ b/src/pregmod/electiveSurgery.tw @@ -1,95 +1,96 @@ :: Elective Surgery [nobr] -You arrive at your favorite plastic surgeon for your appointment to find them as busy as ever. She wastes no time in hurrying in into their 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?" +You arrive at your favorite plastic surgeon for your appointment to find them as busy as ever. 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?" <br><br> -"You sure you want to mess with that lovely face?" She teases, caressing your cheek. "<<print $surgeryCost*2>>¤." -You're $PC.actualAge old. +"You sure you want to mess with that lovely face?" She teases, caressing your cheek. "@@color:yellowgreen;¤5000@@. Also wouldn't recommend changing you eyes 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, I'm not good at 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 I finish working on you, give my work some credit." +<br> +You're @@color:orange;$PC.actualAge years old.@@ <<if $PC.actualAge >= 65>> <<if $PC.visualAge > $PC.actualAge>> - You've had surgery to make yourself look older. - <br>[[Undo Facial surgery|PC Surgery Degradation][$PC.faceImplant = 0,$cash -= $surgeryCost*2, $surgeryType to "restoreFace"]] + You've had surgery to make yourself @@color:lime;look older.@@ + <br>[[Undo Facial surgery|PC Surgery Degradation][$PC.faceImplant = 0,$cash -= 5000, $surgeryType to "restoreFace"]] <<elseif $PC.visualAge < $PC.actualAge>> - You've had surgery to make yourself look younger. - <br>[[Undo Facial surgery|PC Surgery Degradation][$PC.faceImplant = 0,$cash -= $surgeryCost*2, $surgeryType to "restoreFace"]] + You've had surgery to make yourself @@color:lime;look younger.@@ + <br>[[Undo Facial surgery|PC Surgery Degradation][$PC.faceImplant = 0,$cash -= 5000, $surgeryType to "restoreFace"]] <<else>> You could benefit from a face lift. - <br>[[Get a face lift|PC Surgery Degradation][$PC.faceImplant = 1,$cash -= $surgeryCost*2, $surgeryType to "ageDown"]] | [[Remodel your face to appear older|PC Surgery Degradation][$PC.faceImplant = 1,$cash -= $surgeryCost*2, $surgeryType to "ageUp"]] + <br>[[Get a face lift|PC Surgery Degradation][$PC.faceImplant = 1,$cash -= 5000, $surgeryType to "ageDown"]] | [[Remodel your face to appear older|PC Surgery Degradation][$PC.faceImplant = 1,$cash -= 5000, $surgeryType to "ageUp"]] <</if>> <<elseif $PC.actualAge >= 50>> <<if $PC.visualAge > $PC.actualAge>> - You've had surgery to make yourself look older. - <br>[[Undo Facial surgery|PC Surgery Degradation][$PC.faceImplant = 0,$cash -= $surgeryCost*2, $surgeryType to "restoreFace"]] + You've had surgery to make yourself @@color:lime;look older.@@ + <br>[[Undo Facial surgery|PC Surgery Degradation][$PC.faceImplant = 0, $cash -= 5000, $surgeryType to "restoreFace"]] <<elseif $PC.visualAge < $PC.actualAge>> - You've had surgery to make yourself look younger. - <br>[[Undo Facial surgery|PC Surgery Degradation][$PC.faceImplant = 0,$cash -= $surgeryCost*2, $surgeryType to "restoreFace"]] + You've had surgery to make yourself @@color:lime;look younger.@@ + <br>[[Undo Facial surgery|PC Surgery Degradation][$PC.faceImplant = 0, $cash -= 5000, $surgeryType to "restoreFace"]] <<else>> You could benefit from a face lift. - <br>[[Get a face lift|PC Surgery Degradation][$PC.faceImplant = 1,$cash -= $surgeryCost*2, $surgeryType to "ageDown"]] | [[Remodel your face to appear older|PC Surgery Degradation][$PC.faceImplant = 1,$cash -= $surgeryCost*2, $surgeryType to "ageUp"]] + <br>[[Get a face lift|PC Surgery Degradation][$PC.faceImplant = 1, $cash -= 5000, $surgeryType to "ageDown"]] | [[Remodel your face to appear older|PC Surgery Degradation][$PC.faceImplant = 1,$cash -= 5000, $surgeryType to "ageUp"]] <</if>> <<elseif $PC.actualAge >= 35>> <<if $PC.visualAge > $PC.actualAge>> - You've had surgery to make yourself look older. - <br>[[Undo Facial surgery|PC Surgery Degradation][$PC.faceImplant = 0,$cash -= $surgeryCost*2, $surgeryType to "restoreFace"]] + You've had surgery to make yourself @@color:lime;look older.@@ + <br>[[Undo Facial surgery|PC Surgery Degradation][$PC.faceImplant = 0, $cash -= 5000, $surgeryType to "restoreFace"]] <<elseif $PC.visualAge < $PC.actualAge>> - You've had surgery to make yourself look younger. - <br>[[Undo Facial surgery|PC Surgery Degradation][$PC.faceImplant = 0,$cash -= $surgeryCost*2, $surgeryType to "restoreFace"]] + You've had surgery to make yourself @@color:lime;look younger.@@ + <br>[[Undo Facial surgery|PC Surgery Degradation][$PC.faceImplant = 0, $cash -= 5000, $surgeryType to "restoreFace"]] <<else>> You could go for a face lift, though making yourself look older could be useful. - <br>[[Get a face lift|PC Surgery Degradation][$PC.faceImplant = 1,$cash -= $surgeryCost*2, $surgeryType to "ageDown"]] | [[Remodel your face to appear older|PC Surgery Degradation][$PC.faceImplant = 1,$cash -= $surgeryCost*2, $surgeryType to "ageUp"]] + <br>[[Get a face lift|PC Surgery Degradation][$PC.faceImplant = 1, $cash -= 5000, $surgeryType to "ageDown"]] | [[Remodel your face to appear older|PC Surgery Degradation][$PC.faceImplant = 1,$cash -= 5000, $surgeryType to "ageUp"]] <</if>> <<else>> <<if $PC.visualAge > $PC.actualAge>> - You've had surgery to make yourself look older. - <br>[[Undo Facial surgery|PC Surgery Degradation][$PC.faceImplant = 0,$cash -= $surgeryCost*2, $surgeryType to "restoreFace"]] + You've had surgery to make yourself @@color:lime;look older.@@ + <br>[[Undo Facial surgery|PC Surgery Degradation][$PC.faceImplant = 0,$cash -= 5000, $surgeryType to "restoreFace"]] <<elseif $PC.visualAge < $PC.actualAge>> - You've had surgery to make yourself look younger. - <br>[[Undo Facial surgery|PC Surgery Degradation][$PC.faceImplant = 0,$cash -= $surgeryCost*2, $surgeryType to "restoreFace"]] + You've had surgery to make yourself @@color:lime;look younger.@@ + <br>[[Undo Facial surgery|PC Surgery Degradation][$PC.faceImplant = 0,$cash -= 5000, $surgeryType to "restoreFace"]] <<else>> You could undergo facial surgery to make yourself look older, though you could also make yourself look even younger. - <br>[[Remodel your face to appear younger|PC Surgery Degradation][$PC.faceImplant = 1,$cash -= $surgeryCost*2, $surgeryType to "ageDown"]] | [[Remodel your face to appear older|PC Surgery Degradation][$PC.faceImplant = 1,$cash -= $surgeryCost*2, $surgeryType to "ageUp"]] + <br>[[Remodel your face to appear younger|PC Surgery Degradation][$PC.faceImplant = 1, $cash -= 5000, $surgeryType to "ageDown"]] | [[Remodel your face to appear older|PC Surgery Degradation][$PC.faceImplant = 1,$cash -= 5000, $surgeryType to "ageUp"]] <</if>> <</if>> -<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. "5000¤ for a reduction, 10000¤ for implants, that includes size ups, and 15000¤ for additional breast tissue. That last one might as well be real!"<br> +<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. "@@color:yellowgreen;¤5000@@ for a reduction, @@color:yellowgreen;¤10000@@ for implants, that includes size ups, and @@color:yellowgreen;¤15000@@ for additional breast tissue. That last one might as well be real!"<br> <<if $PC.boobsBonus > 0>> <<if $PC.boobsBonus > 2>> <<if $PC.boobsImplant == 1>> - You have a pair of round H-cup breasts; they are very obviously implants. + You have a @@color:orange;pair of round H-cup breasts;@@ they are very obviously implants. <br>//You are starting to experience back pain; any bigger and they might seriously impede your ability to run your arcology.// | [[Have your implants removed|PC Surgery Degradation][$PC.boobsBonus = 0, $PC.boobsImplant = 0, $cash -= 5000, $surgeryType to "breastReductionImplant"]] <<else>> - You have a heavy H-cup bust. They tend to sag a little when you free them from your top, though they have some perk to them. + You have a @@color:orange;heavy H-cup bust.@@ They tend to sag a little when you free them from your top, though they have some perk to them. <br>//You are starting to experience back pain; any bigger and they might seriously impede your ability to run your arcology.// | [[Have tissue removed|PC Surgery Degradation][$PC.boobsBonus = 2, $cash -= 5000, $surgeryType to "breastShrinkage"]] <</if>> <<elseif $PC.boobsBonus == 2>> <<if $PC.boobsImplant == 1>> - You have a pair of rounded G-cup breasts; they are a little too perky for their size to pass as natural. + You have a @@color:orange;pair of rounded G-cup breasts;@@ they are a little too perky for their size to pass as natural. <br>[[Have your implants removed|PC Surgery Degradation][$PC.boobsBonus = 0, $PC.boobsImplant = 0, $cash -= 5000, $surgeryType to "breastReductionImplant"]] | [[Get the next size up|PC Surgery Degradation][$PC.boobsBonus = 3, $cash -= 10000, $surgeryType to "breastEnlargementImplant"]] <<else>> - You have a huge G-cup bust. + You have a @@color:orange;huge G-cup bust.@@ <br>[[Add additional breast tissue|PC Surgery Degradation][$PC.boobsBonus = 3, $cash -= 15000, $surgeryType to "breastEnlargement"]] | [[Have tissue removed|PC Surgery Degradation][$PC.boobsBonus = 1, $cash -= 5000, $surgeryType to "breastShrinkage"]] <</if>> <<elseif $PC.boobsBonus == 1>> <<if $PC.boobsImplant == 1>> - You have a pair of perky F-cup breasts; you can barely tell they are implanted. + You have a @@color:orange;pair of perky F-cup breasts;@@ you can barely tell they are implanted. <br>[[Have your implants removed|PC Surgery Degradation][$PC.boobsBonus = 0, $PC.boobsImplant = 0, $cash -= 5000, $surgeryType to "breastReductionImplant"]] | [[Get the next size up|PC Surgery Degradation][$PC.boobsBonus = 2, $cash -= 10000, $surgeryType to "breastEnlargementImplant"]] <<else>> - You have a hefty F-cup bust. + You have a @@color:orange;hefty F-cup bust.@@ <br>[[Add additional breast tissue|PC Surgery Degradation][$PC.boobsBonus = 2, $cash -= 15000, $surgeryType to "breastEnlargement"]] | [[Have tissue removed|PC Surgery Degradation][$PC.boobsBonus = 0, $cash -= 5000, $surgeryType to "breastShrinkage"]] <</if>> <</if>> <<elseif $PC.boobs == 1>> - You have a big pair of DD breasts. + You have a @@color:orange;big pair of DD breasts.@@ <br>[[Get a pair of breast implants|PC Surgery Degradation][$PC.boobsBonus = 1, $PC.boobsImplant = 1, $cash -= 10000, $surgeryType to "breastEnlargementImplant"]] | [[Add additional breast tissue|PC Surgery Degradation][$PC.boobsBonus = 1, $cash -= 15000, $surgeryType to "breastEnlargement"]] | [[Have them removed|PC Surgery Degradation][$PC.boobs = 0, $cash -= 5000, $surgeryType to "flatChest"]] <<else>> - You have a masculine chest. At your request, breast tissue could be added until you have a healthy bust, though society is unlikely to approve. + You have a @@color:orange;masculine chest.@@ At your request, breast tissue could be added until you have a healthy bust, though society is unlikely to approve. <br>[[Get a pair of breasts|PC Surgery Degradation][$PC.boobs = 1, $cash -= 15000, $surgeryType to "breasts"]] <</if>> <<if $PC.preg >= 8>> -<br>She darts for your middle. +<br><br>She darts for your middle. <<if $PC.preg >= 42>> - "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 overdue belly, enjoying the kicks from your child winthin. "If you go into labor, we have everything you'll need, so don't worry."<br> + "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 overdue belly, enjoying the kicks from your child within. "If you go into labor, we have everything you'll need, so don't worry."<br> <<elseif $PC.preg >= 40>> "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> <<elseif $PC.preg >= 36>> @@ -109,43 +110,95 @@ You're $PC.actualAge old. <<elseif $PC.preg >= 8>> "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. Guess that confirms it.<br> <</if>> +<</if>> -<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?" She says as she wiggles her own at you. "Same prices as the breasts."<br> <<if $PC.butt > 2>> - <<if $PC.buttImplant == 3>> - You have an enormous, round, hard butt; it is very obviously a pair of huge implants. + <<if $PC.buttImplant == 1>> + You have an @@color:orange;enormous, round, hard butt;@@ it is very obviously a pair of huge implants. + <br>//You can barely squeeze your rear into your clothes and are starting to get stuck in chairs; any bigger and it might seriously impede your ability to run your arcology.// | [[Have your implants removed|PC Surgery Degradation][$PC.butt = 0, $PC.buttImplant = 0, $cash -= 5000, $surgeryType to "buttReductionImplant"]] <<else>> - You have an enormous, jiggly butt. - <br>[[Have fat removed|PC Surgery Degradation][$PC.butt = 2, $cash -= 5000, $surgeryType to "buttShrinkage"]] + You have an @@color:orange;enormous, jiggly butt.@@ + <br>//You can barely squeeze your rear into your clothes and are starting to get stuck in chairs; any bigger and it might seriously impede your ability to run your arcology.// | [[Have fat removed|PC Surgery Degradation][$PC.butt = 2, $cash -= 5000, $surgeryType to "buttShrinkage"]] <</if>> <<elseif $PC.butt == 2>> - <<if $PC.buttImplant == 2>> - You have a huge, round, firm butt; it's easily identifiable as fake. + <<if $PC.buttImplant == 1>> + You have a @@color:orange;huge, round, firm butt;@@ it's easily identifiable as fake. + <br>[[Have your implants removed|PC Surgery Degradation][$PC.butt = 0, $PC.buttImplant = 0, $cash -= 5000, $surgeryType to "buttReductionImplant"]] | [[Get the next size up|PC Surgery Degradation][$PC.butt = 3, $cash -= 10000, $surgeryType to "buttEnlargementImplant"]] <<else>> - You have a huge, soft butt. + You have a @@color:orange;huge, soft butt.@@ <br>[[Add additional fatty tissue|PC Surgery Degradation][$PC.butt = 3, $cash -= 15000, $surgeryType to "buttEnlargement"]] | [[Have fat removed|PC Surgery Degradation][$PC.butt = 1, $cash -= 5000, $surgeryType to "buttShrinkage"]] <</if>> <<elseif $PC.butt == 1>> <<if $PC.buttImplant == 1>> - You have a big firm butt; anyone that feels it can tell it's fake, but at a glance you can't tell otherwise. + You have a @@color:orange;big firm butt;@@ anyone that feels it can tell it's fake, but at a glance you can't tell otherwise. + <br>[[Have your implants removed|PC Surgery Degradation][$PC.butt = 0, $PC.buttImplant = 0, $cash -= 5000, $surgeryType to "buttReductionImplant"]] | [[Get the next size up|PC Surgery Degradation][$PC.butt = 2, $cash -= 10000, $surgeryType to "buttEnlargementImplant"]] <<else>> - You have a big butt. + You have a @@color:orange;big butt.@@ <br>[[Add additional fatty tissue|PC Surgery Degradation][$PC.butt = 2, $cash -= 15000, $surgeryType to "buttEnlargement"]] | [[Have fat removed|PC Surgery Degradation][$PC.butt = 0, $cash -= 5000, $surgeryType to "buttShrinkage"]] <</if>> <<else>> - You have a cute, but normal butt. At your request, fat could be added until you have a healthy rear; alternatively, a pair of implants could be inserted instead. + You have a @@color:orange;cute, but normal butt.@@ At your request, fat could be added until you have a healthy rear; alternatively, a pair of implants could be inserted instead. <br>[[Get a pair of butt implants|PC Surgery Degradation][$PC.butt = 1, $PC.buttImplant = 1, $cash -= 10000, $surgeryType to "buttEnlargementImplant"]] | [[Add additional fatty tissue|PC Surgery Degradation][$PC.butt = 1, $cash -= 15000, $surgeryType to "buttEnlargement"]] <</if>> <<if $PC.dick == 1>> -<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.<br> +<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. "@@color:yellowgreen;¤7500@@ for draining and @@color:yellowgreen;¤15000@@ for filling, it's not the most simple procudure, you know? Anyway, they'll be very obvious, if that turns you on."<br> <<if $PC.ballsImplant > 2>> - You have an enormous, heavy pair of balls roughly the size of cantaloupes; it's difficult to sit normally, your clothes barely fit, and everyone can tell they are fake, but every slave you fuck gets a distinct slap with each thrust and you love it. + You have an @@color:orange;enormous, heavy pair of balls@@ roughly the size of cantaloupes; it's difficult to sit normally, your clothes barely fit, and everyone can tell they are fake, but every slave you fuck gets a distinct slap with each thrust and you love it. + <br>//You're beginning to have trouble moving around and using furniture thanks to your oversized nuts, even bringing your legs together is a pain; any bigger and they might seriously impede your ability to run your arcology, or walk, for that matter.// | [[Have gel extracted|PC Surgery Degradation][$PC.ballsImplant = 2, $cash -= 7500, $surgeryType to "ballShrinkage"]] <<elseif $PC.ballsImplant == 2>> - You have a huge pair of balls roughly the size of softballs; they make quite a bulge in your clothes and dangle heavily any other time. + You have a @@color:orange;huge pair of balls@@ roughly the size of softballs; they make quite a bulge in your clothes and dangle heavily any other time. + <br>[[Have more gel added|PC Surgery Degradation][$PC.ballsImplant = 3, $cash -= 15000, $surgeryType to "ballEnlargement"]] | [[Have gel extracted|PC Surgery Degradation][$PC.ballsImplant = 1, $cash -= 7500, $surgeryType to "ballShrinkage"]] <<elseif $PC.ballsImplant == 1>> - You have a large pair of balls; you can certainly feel them as you move. + You have a @@color:orange;large pair of balls;@@ you can certainly feel them as you move. + <br>[[Have more gel added|PC Surgery Degradation][$PC.ballsImplant = 2, $cash -= 15000, $surgeryType to "ballEnlargement"]] | [[Have gel extracted|PC Surgery Degradation][$PC.ballsImplant = 0, $cash -= 7500, $surgeryType to "ballShrinkage"]] <<else>> - You have a normal, uneventful pair of balls. + You have a @@color:orange;normal, uneventful pair of balls.@@ + <br>[[Have the gel added|PC Surgery Degradation][$PC.ballsImplant = 1, $cash -= 15000, $surgeryType to "ballEnlargement"]] +<</if>> +<</if>> + +<<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! @@color:yellowgreen;¤15000@@ for a brand new vagina." +<br> +[[Get a tighter vagina|PC Surgery Degradation][$PC.newVag = 1, $cash -= 15000, $surgeryType to "tightPussy"]] +<</if>> + +<br><br> +"Now, if what you are looking for is sex reassignment surgery, that's going to be more complicated. Personally I tihnk 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, @@color:yellowgreen;¤50000@@ for a sex swap, @@color:yellowgreen;¤150000@@ to be a fully functional herm, oh and @@color: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 @@color:yellowgreen;¤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 noone 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?" +<<else>> +<<if $PC.dick == 1 && $PC.vagina == 1>> + You have working @@color:orange;male and female reproductive organs@@ and a @@color:orange;<<if $PC.title > 0>>masculine<<else>>feminine<</if>> appearance.@@ + <br> + [[Remove your male half|PC Surgery Degradation][$PC.ballsImplant = 0, $PC.dick = 0, $cash -= 25000, $surgeryType to "herm2female"]] | + [[Remove your female half|PC Surgery Degradation][$PC.vagina = 0, $PC.preg = 0, $cash -= 25000, $surgeryType to "herm2male"]] | + <<if $PC.title > 0>> + [[Remove your male half completely|PC Surgery Degradation][$PC.ballsImplant = 0, $PC.dick = 0, $PC.title = 0, $cash -= 25000, $surgeryType to "herm2truefemale"]] + <<else>> + [[Remove your female half completely|PC Surgery Degradation][$PC.vagina = 0, $PC.preg = 0, $PC.boobs = 0, $PC.boobsBonus = 0, $PC.boobsImplant = 0, $PC.title = 1, $cash -= 25000, $surgeryType to "herm2truemale"]] + <</if>> +<<elseif $PC.dick == 1>> + You have @@color:orange;male genitalia@@ and a @@color:orange;<<if $PC.title > 0>>masculine<<else>>feminine<</if>> appearance.@@ + <br> + [[Have your male organs replaced with female ones|PC Surgery Degradation][$PC.ballsImplant = 0, $PC.dick = 0, $PC.vagina = 1, $PC.newVag = 1, $cash -= 50000, $surgeryType to "male2female"]] | + [[Add a female reproductive tract|PC Surgery Degradation][$PC.vagina = 1, $PC.newVag = 1, $PC.preg = 0, $cash -= 150000, $surgeryType to "male2herm"]] | + <<if $PC.title > 0>> + [[Become a woman|PC Surgery Degradation][$PC.ballsImplant = 0, $PC.dick == 0, $PC.vagina = 1, $PC.newVag = 1, $PC.preg = 0, $PC.title = 0, $PC.boobs = 1, $cash -= 50000, $surgeryType to "male2truefemale"]] | + [[Become a hermaphrodite girl|PC Surgery Degradation][$PC.vagina = 1, $PC.newVag = 1, $PC.preg = 0, $PC.title = 0, $PC.boobs = 1, $cash -= 150000, $surgeryType to "male2hermfemale"]] + <</if>> +<<else>> + You have @@color:orange;female genitalia@@ and a @@color:orange;<<if $PC.title > 0>>masculine<<else>>feminine<</if>> appearance.@@ + <br> + [[Have your female organs replaced with male ones|PC Surgery Degradation][$PC.ballsImplant = 0, $PC.dick = 1, $PC.vagina = 0, $cash -= 50000, $surgeryType to "female2male"]] | + [[Add a male reproductive tract|PC Surgery Degradation][$PC.ballsImplant = 0, $PC.dick = 1, $cash -= 150000, $surgeryType to "female2herm"]] | + <<if $PC.title == 0>> + [[Become a man|PC Surgery Degradation][$PC.ballsImplant = 0, $PC.dick = 1, $PC.vagina = 0, $PC.preg = 0, $PC.title = 1, $PC.boobs = 0, $PC.boobsBonus = 0, $PC.boobsImplant = 0, $cash -= 50000, $surgeryType to "female2truemale"]] | + [[Become a hermaphrodite boy|PC Surgery Degradation][$PC.ballsImplant = 0, $PC.dick = 1, $PC.title = 1, $PC.boobs = 0, $PC.boobsBonus = 0, $PC.boobsImplant = 0, $cash -= 150000, $surgeryType to "female2hermmale"]] + <</if>> +<</if>> <</if>> -<</if>> \ No newline at end of file diff --git a/src/pregmod/managePersonalAffairs.tw b/src/pregmod/managePersonalAffairs.tw index 77ddb865f6625a92fb98dabe76984ff3cbaf5359..9ab8f0d889de0717d77cd538ded9ab40570c567a 100644 --- a/src/pregmod/managePersonalAffairs.tw +++ b/src/pregmod/managePersonalAffairs.tw @@ -6,53 +6,135 @@ You pause for a moment from your busy day to day life to return to <<if $masterSuite != 0>>$masterSuiteName<<else>>your room<</if>> to consider some things about yourself. <br>You take yourself in in a full length mirror. You are a <<print $PC.skin>> $PC.race <<if $PC.dick == 1 && $PC.vagina == 1>>futanari<<elseif $PC.dick == 1>>man<<else>>woman<</if>> with $PC.hColor hair and $PC.eyeColor eyes. <<if $PC.actualAge >= 65>> - You're $PC.actualAge and definitly feeling it.<<if $PC.visualAge > $PC.actualAge>> You've taken measures to look an older $PC.visualAge, though perhaps it might be time to undo it.<<elseif $PC.visualAge < $PC.actualAge>> You've taken measures to look a younger $PC.visualAge, now if only your body agreed with your looks.<</if>> + You're @@color:orange;$PC.actualAge@@ and definitly feeling it.<<if $PC.visualAge > $PC.actualAge>> You've taken measures to @@color:lime;look an older $PC.visualAge,@@ though perhaps it might be time to undo it.<<elseif $PC.visualAge < $PC.actualAge>> You've taken measures to @@color:lime;look a younger $PC.visualAge,@@ now if only your body agreed with your looks.<</if>> <<elseif $PC.actualAge >= 50>> - You're $PC.actualAge and starting to feel it.<<if $PC.visualAge > $PC.actualAge>> You've taken measures to look an older $PC.visualAge.<<elseif $PC.visualAge < $PC.actualAge>> You've taken measures to look a younger $PC.visualAge.<</if>> + You're @@color:orange;$PC.actualAge@@ and starting to feel it.<<if $PC.visualAge > $PC.actualAge>> You've taken measures to @@color:lime;look an older $PC.visualAge.@@<<elseif $PC.visualAge < $PC.actualAge>> You've taken measures to @@color:lime;look a younger $PC.visualAge.@@<</if>> <<elseif $PC.actualAge >= 35>> - You're $PC.actualAge and strong.<<if $PC.visualAge > $PC.actualAge>> You've taken measures to look an older $PC.visualAge and reap the respect that comes with it.<<elseif $PC.visualAge < $PC.actualAge>> You've taken measures to look a younger $PC.visualAge recapturing your youth.<</if>> + You're @@color:orange;$PC.actualAge@@ and strong.<<if $PC.visualAge > $PC.actualAge>> You've taken measures to @@color:lime;look an older $PC.visualAge@@ and reap the respect that comes with it.<<elseif $PC.visualAge < $PC.actualAge>> You've taken measures to @@color:lime;look a younger $PC.visualAge@@ recapturing your youth.<</if>> <<else>> - You're $PC.actualAge and full of vigor.<<if $PC.visualAge > $PC.actualAge>> You've taken measures to look an older $PC.visualAge and reap the respect that comes with it.<<elseif $PC.visualAge < $PC.actualAge>> You've taken measures to look a younger $PC.visualAge, even though society may find your looks uncomfortable.<</if>> + You're @@color:orange;$PC.actualAge@@ and full of vigor.<<if $PC.visualAge > $PC.actualAge>> You've taken measures to @@color:lime;look an older $PC.visualAge@@ and reap the respect that comes with it.<<elseif $PC.visualAge < $PC.actualAge>> You've taken measures to @@color:lime;look a younger $PC.visualAge,@@ even though society may find your looks uncomfortable.<</if>> <</if>> <<if ($playerAging != 0)>>Your birthday is <<if $PC.birthWeek is 51>>next week<<else>>in <<print 52-$PC.birthWeek>> weeks<</if>>.<</if>> -<<if $PC.boobsBonus > 0 || $PC.preg > 2>> - <<if $PC.boobsBonus > 0>> - <<if $PC.boobsBonus > 2>> - Your breasts feel enormous.<<if $PC.preg > 30 || $PC.births > 0>> Likely a side effect of your lactation.<</if>> - <<elseif $PC.boobsBonus == 2>> - Your breasts feel huge.<<if $PC.preg > 30 || $PC.births > 0>> Likely a side effect of your lactation.<</if>> - <<elseif $PC.boobsBonus == 1>> - Your breasts seem a little bigger.<<if $PC.preg > 30 || $PC.births > 0>> Likely a side effect of your lactation.<</if>> - <</if>> +Looking down; +<<if $PC.boobsBonus > 2>> + you have a @@color:orange;pair of H-cup breasts.@@ <<if $PC.boobsImplant == 1>>They are big, round, and obviously implants. They barely move when you fuck your slaves<<else>>They are all natural, heavy, and a bit saggy though they have some perk to them. Once they get going, it's hard to make them stop<</if>>.<<if $PC.preg > 30 || $PC.births > 0>> Your breasts feel even more enormous lately; likely a side effect of your lactation.<</if>> +<<elseif $PC.boobsBonus == 2>> + you have a @@color:orange;pair of G-cup breasts.@@ <<if $PC.boobsImplant == 1>>They are kind of rounded and much to perky for their size to pass as real. They have a bit of bounce to them as you fuck a slave<<else>>They are all natural and a little heavy. The bounce everywhere when you fuck your slaves.<</if>>.<<if $PC.preg > 30 || $PC.births > 0>> Your breasts feel even more huge lately; likely a side effect of your lactation.<</if>> +<<elseif $PC.boobsBonus == 1>> + you have a @@color:orange;pair of F-cup breasts.@@ <<if $PC.boobsImplant == 1>>They are nice, perky and not obviously implants. Though the way they move when you fuck a slave pins them as such<<else>>They are nice and perky, dispite their size. They bounce lewdly as you fuck your slaves.<</if>>.<<if $PC.preg > 30 || $PC.births > 0>> Your breasts feel bigger lately; likely a side effect of your lactation.<</if>> +<<elseif $PC.boobs == 1>> + you have a @@color:orange;healthy pair of DD breasts.@@<<if $PC.preg > 30 || $PC.births > 0>> Your breasts feel fuller lately; likely a side effect of your lactation.<</if>> +<<else>> + you have a @@color:orange;masculine chest.@@<<if $PC.preg > 30 || $PC.births > 0>> Your chest feels swollen; the beads of milk forming on your nipples tells you why.<</if>> +<</if>> +<<if $PC.preg >= 42>> + You don't know why you even bother getting out of bed; you are @@color:orange;overdue and ready to drop@@ at many time, making your life as arcology owner very difficult. You try to relax and enjoy your slaves, but you can only manage so much in this state. +<<elseif $PC.preg >= 40>> + You feel absolutely massive; your @@color:orange;full-term belly@@ makes your life as arcology owner very difficult. You try your best to not wander too far from your penthouse, not with labor and birth so close. +<<elseif $PC.preg >= 36>> + You can barely wrap your arms around your @@color:orange;huge pregnant belly,@@ and when you do, your popped navel reminds you your bun is almost ready. +<<elseif $PC.preg >= 32>> + Your @@color:orange;pregnancy has gotten quite huge,@@ none of your clothes fit it right. +<<elseif $PC.preg >= 28>> + Your @@color:orange;pregnant belly juts out annoyingly far,@@ just getting dressed is a pain now. +<<elseif $PC.preg >= 24>> + Half way there! Your @@color:orange;belly has gotten quite large with child;@@ it is beginning to get the way of sex and business. +<<elseif $PC.preg >= 20>> + Your @@color:orange;belly is now large enough that there is no hiding it.@@ +<<elseif $PC.preg >= 16>> + Your @@color:orange;belly is rounded by your early pregnancy.@@ +<<elseif $PC.preg >= 12>> + Your @@color:orange;lower belly is beginning to stick out,@@ you're definitely pregnant. +<<elseif $PC.preg >= 8>> + Your @@color:orange;belly is slightly swollen;@@ combined with your missed period, odds are you're pregnant. +<<elseif $PC.preg >= 3>> + Your @@color:red;period hasn't happened in some time,@@ you might be pregnant. +<</if>> +Beneath all that; +<<if $PC.dick == 1 && $PC.vagina == 1>> + an @@color:orange;above average penis@@ and a pair of + <<if $PC.ballsImplant > 2>> + @@color:orange;enormous, heavy balls@@ roughly the size of cantaloupes; it's difficult to sit normally, your clothes barely fit, and everyone can tell they are fake, but every slave you fuck gets a distinct slap with each thrust. They get in the way of nearly everything you do: sitting, walking, fucking; but they make life certainly intersting. + <<elseif $PC.ballsImplant == 2>> + @@color:orange;huge balls@@ roughly the size of softballs; they are pretty heavy, but make sex and day-to-day affairs interesting. + <<elseif $PC.ballsImplant == 1>> + @@color:orange;large balls;@@ you can certainly feel them as you move about. + <<else>> + @@color:orange;normal, uneventful balls.@@ + <</if>> + Tucked away beneath them; a + <<if $PC.newVag == 1>> + @@color:orange;tight vagina.@@ Your pussy is very resiliant, you shouldn't be able to stretch it out again. + <<elseif $PC.career == "escort">> + @@color:red;very loose vagina.@@ Years of whoring will do that to a girl. + <<elseif $PC.births >= 10>> + @@color:red;rather loose vagina,@@ stretched from your many children. + <<elseif $PC.career == "servant">> + @@color:red;rather loose vagina.@@ You master fucked you several times a day; him and his children have wreaked havoc upon your pussy. + <<elseif $PC.births > 2>> + @@color:orange;loose vagina,@@ stretched from your several children. + <<elseif $PC.career == "gang" || $PC.career == "celebrity" || $PC.career == "wealth">> + @@color:lime;reasonably tight vagina.@@ You've had some fun during your previous career. + <<elseif $PC.births > 0>> + @@color:lime;reasonably tight vagina.@@ It's handled childbirth well enough. + <<else>> + @@color:lime;tight vagina.@@ You're no virgin, but you've taken care of yourself. + <</if>> +<<elseif $PC.dick == 1>> + an @@color:orange;above average penis@@ and a pair of + <<if $PC.ballsImplant > 2>> + @@color:orange;enormous, heavy balls@@ roughly the size of cantaloupes; it's difficult to sit normally, your clothes barely fit, and everyone can tell they are fake, but every slave you fuck gets a distinct slap with each thrust. They get in the way of nearly everything you do: sitting, walking, fucking; but they make life certainly intersting. + <<elseif $PC.ballsImplant == 2>> + @@color:orange;huge balls@@ roughly the size of softballs; they are pretty heavy, but make sex and day-to-day affairs interesting. + <<elseif $PC.ballsImplant == 1>> + @@color:orange;large balls;@@ you can certainly feel them as you move about. + <<else>> + @@color:orange;normal, uneventful balls.@@ <</if>> - <<if $PC.preg >= 42>> - You don't know why you even bother getting out of bed; you are overdue and ready to drop at many time, making your life as arcology owner very difficult. You try to relax and enjoy your slaves, but you can only manage so much in this state. - <<elseif $PC.preg >= 40>> - You feel absolutely massive; your full-term belly makes your life as arcology owner very difficult. You try your best to not wander too far from your penthouse, not with labor and birth so close. - <<elseif $PC.preg >= 36>> - You can barely wrap your arms around your huge pregnant belly, and when you do, your popped navel reminds you your bun is almost ready. - <<elseif $PC.preg >= 32>> - Your pregnancy has gotten quite huge, none of your clothes fit it right. - <<elseif $PC.preg >= 28>> - Your pregnant belly juts out annoyingly far, just getting dressed is a pain now. - <<elseif $PC.preg >= 24>> - Half way there! Your belly has gotten quite large with child; it is beginning to get the way of sex and business. - <<elseif $PC.preg >= 20>> - Your belly is now large enough that there is no hiding it. - <<elseif $PC.preg >= 16>> - Your belly is rounded by your early pregnancy. - <<elseif $PC.preg >= 12>> - Your lower belly is beginning to stick out, you're definitely pregnant. - <<elseif $PC.preg >= 8>> - Your belly is slightly swollen; combined with your missed period, odds are you're pregnant. - <<elseif $PC.preg >= 3>> - Your period hasn't happened in some time, you might be pregnant. +<<else>> + a + <<if $PC.newVag == 1>> + @@color:orange;tight vagina.@@ Your pussy is very resiliant, you shouldn't be able to stretch it out again. + <<elseif $PC.career == "escort">> + @@color:red;very loose vagina.@@ Years of whoring will do that to a girl. + <<elseif $PC.births >= 10>> + @@color:red;rather loose vagina,@@ stretched from your many children. + <<elseif $PC.career == "servant">> + @@color:red;rather loose vagina.@@ You master fucked you several times a day; him and his children have wreaked havoc upon your pussy. + <<elseif $PC.births > 2>> + @@color:orange;loose vagina,@@ stretched from your several children. + <<elseif $PC.career == "gang" || $PC.career == "celebrity" || $PC.career == "wealth">> + @@color:lime;reasonably tight vagina.@@ You've had some fun during your previous career. + <<elseif $PC.births > 0>> + @@color:lime;reasonably tight vagina.@@ It's handled childbirth well enough. + <<else>> + @@color:lime;tight vagina.@@ You're no virgin, but you've taken care of yourself. + <</if>> +<</if>> +Around back; +<<if $PC.butt > 2>> + <<if $PC.buttImplant == 1>> + an @@color:orange;enormous, round, hard butt;@@ it is very obviously a pair of huge implants. They barely move at all when you walk or fuck, are difficult to cram into your clothing and you keep getting stuck in chairs, but you wouldn't have it any other way. + <<else>> + an @@color:orange;enormous, jiggly butt.@@ It is always wobbling for some reason or another. It really fills out your clothing and practically consumes anything you sit on. + <</if>> +<<elseif $PC.butt == 2>> + <<if $PC.buttImplant == 1>> + a @@color:orange;huge, round, firm butt;@@ it's easily identifiable as fake. + <<else>> + a @@color:orange;huge, soft butt.@@ It jiggles a lot as you move. + <</if>> +<<elseif $PC.butt == 1>> + <<if $PC.buttImplant == 1>> + a @@color:orange;big firm butt;@@ anyone that feels it can tell it's fake, but at a glance you can't tell otherwise. + <<else>> + a @@color:orange;big butt.@@ It jiggles a little as you walk. <</if>> <<else>> - You look the same as you always have. + a @@color:orange;sexy, but normal butt.@@ <</if>> -/*<br><<if $playerSurgery == 0>>[[Visit your plastic surgeon.|Elective Surgery][$playerSurgery = 4]]<<else>>Your favorite plastic surgeon is booked solid for the next $playerSurgery weeks.<</if>>*/ +<br><<if $playerSurgery == 0>>[[Visit your plastic surgeon.|Elective Surgery][$playerSurgery = 4]]<<else>>Your favorite plastic surgeon is booked solid for the next $playerSurgery weeks.<</if>> <br><br> diff --git a/src/pregmod/pcSurgeryDegredation.tw b/src/pregmod/pcSurgeryDegredation.tw new file mode 100644 index 0000000000000000000000000000000000000000..786587c17f89cafacd950c3d9a2c1804b7877bd0 --- /dev/null +++ b/src/pregmod/pcSurgeryDegredation.tw @@ -0,0 +1,11 @@ +:: PC Surgery Degradation [nobr] + +<<set $nextButton to "Continue">> +<<set $nextLink to "Manage Personal Affairs">> + +<<switch $surgeryType>> + +<<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/slaveTradePresetWidgets.tw b/src/pregmod/slaveTradePresetWidgets.tw index 8e279135498a1cb2ac69a10b997b7b886b4867f4..81e2fa790f654e1cfcf61935fa9c5415e72405cc 100644 --- a/src/pregmod/slaveTradePresetWidgets.tw +++ b/src/pregmod/slaveTradePresetWidgets.tw @@ -1,55 +1,55 @@ :: slave trade preset widgets [widget nobr] -/* To add presets, add <<widget "PresetName">> and call in customizeSlaveTrade as <<link Preset Name>><<PresetName>><</link>> */ +/* To add presets, add <<widget "NationalityPresetName">> and define it as [[Name|passage()][$nationalities = [nationalities go here]]] */ -<<widget "PresetIntlStd">> -<<set $nationalities = ["Afghan", "Afghan", "Algerian", "Algerian", "Algerian", "American", "American", "American", "American", "American", "Argentinian", "Argentinian", "Argentinian", "Armenian", "Armenian", "Australian", "Australian", "Austrian", "Austrian", "Bangladeshi", "Bangladeshi", "Bangladeshi", "Bangladeshi", "Belarusian", "Belarusian", "Belarusian", "Belarusian", "Belgian", "Belgian", "Bolivian", "Bolivian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "British", "British", "British", "Burmese", "Burmese", "Burmese", "Canadian", "Canadian", "Chilean", "Chilean", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Colombian", "Colombian", "Colombian", "Congolese", "Congolese", "Congolese", "Cuban", "Cuban", "Czech", "Czech", "Danish", "Danish", "Dominican", "Dominican", "Dominican", "Dominican", "Dutch", "Dutch", "Egyptian", "Egyptian", "Egyptian", "Emirati", "Emirati", "Estonian", "Estonian", "Ethiopian", "Ethiopian", "Ethiopian", "Filipina", "Filipina", "Filipina", "Finnish", "Finnish", "French", "French", "French", "German", "German", "German", "Ghanan", "Ghanan", "Greek", "Greek", "Guatemalan", "Guatemalan", "Haitian", "Haitian", "Hungarian", "Hungarian", "Icelandic", "Icelandic", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indonesian", "Indonesian", "Indonesian", "Indonesian", "Indonesian", "Iranian", "Iranian", "Iranian", "Iraqi", "Iraqi", "Irish", "Irish", "Israeli", "Israeli", "Italian", "Italian", "Italian", "Jamaican", "Jamaican", "Japanese", "Japanese", "Japanese", "Jordanian", "Jordanian", "Kazakh", "Kazakh", "Kenyan", "Kenyan", "Kenyan", "Korean", "Korean", "Korean", "Lebanese", "Lebanese", "Libyan", "Libyan", "Lithuanian", "Lithuanian", "Malaysian", "Malaysian", "Malaysian", "Malian", "Malian", "Mexican", "Mexican", "Mexican", "Mexican", "Moroccan", "Moroccan", "Nepalese", "Nepalese", "Nigerian", "Nigerian", "Nigerian", "Nigerian", "Norwegian", "Norwegian", "Omani", "Omani", "Pakistani", "Pakistani", "Pakistani", "Peruvian", "Peruvian", "Polish", "Polish", "Polish", "Portuguese", "Portuguese", "Puerto Rican", "Puerto Rican", "Romanian", "Romanian", "Russian", "Russian", "Russian", "Russian", "Saudi", "Saudi", "Scottish", "Scottish", "Serbian", "Serbian", "Slovak", "Slovak", "South African", "South African", "South African", "South African", "Spanish", "Spanish", "Spanish", "Sudanese", "Sudanese", "Sudanese", "Swedish", "Swedish", "Swiss", "Swiss", "Tanzanian", "Tanzanian", "Thai", "Thai", "Thai", "Tunisian", "Tunisian", "Turkish", "Turkish", "Turkish", "Ugandan", "Ugandan", "Ukrainian", "Ukrainian", "Ukrainian", "Uzbek", "Uzbek", "Venezuelan", "Venezuelan", "Venezuelan", "Vietnamese", "Vietnamese", "Vietnamese", "Yemeni", "Yemeni", "Zimbabwean", "Zimbabwean", "a New Zealander", "a New Zealander"]>> +<<widget "NationalityPresetVanillaGlobal">> +[[Vanilla Global|passage()] [$nationalities = ["Afghan", "Afghan", "Algerian", "Algerian", "Algerian", "American", "American", "American", "American", "American", "Argentinian", "Argentinian", "Argentinian", "Armenian", "Armenian", "Australian", "Australian", "Austrian", "Austrian", "Bangladeshi", "Bangladeshi", "Bangladeshi", "Bangladeshi", "Belarusian", "Belarusian", "Belarusian", "Belarusian", "Belgian", "Belgian", "Bolivian", "Bolivian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "British", "British", "British", "Burmese", "Burmese", "Burmese", "Canadian", "Canadian", "Chilean", "Chilean", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Colombian", "Colombian", "Colombian", "Congolese", "Congolese", "Congolese", "Cuban", "Cuban", "Czech", "Czech", "Danish", "Danish", "Dominican", "Dominican", "Dominican", "Dominican", "Dutch", "Dutch", "Egyptian", "Egyptian", "Egyptian", "Emirati", "Emirati", "Estonian", "Estonian", "Ethiopian", "Ethiopian", "Ethiopian", "Filipina", "Filipina", "Filipina", "Finnish", "Finnish", "French", "French", "French", "German", "German", "German", "Ghanan", "Ghanan", "Greek", "Greek", "Guatemalan", "Guatemalan", "Haitian", "Haitian", "Hungarian", "Hungarian", "Icelandic", "Icelandic", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indonesian", "Indonesian", "Indonesian", "Indonesian", "Indonesian", "Iranian", "Iranian", "Iranian", "Iraqi", "Iraqi", "Irish", "Irish", "Israeli", "Israeli", "Italian", "Italian", "Italian", "Jamaican", "Jamaican", "Japanese", "Japanese", "Japanese", "Jordanian", "Jordanian", "Kazakh", "Kazakh", "Kenyan", "Kenyan", "Kenyan", "Korean", "Korean", "Korean", "Lebanese", "Lebanese", "Libyan", "Libyan", "Lithuanian", "Lithuanian", "Malaysian", "Malaysian", "Malaysian", "Malian", "Malian", "Mexican", "Mexican", "Mexican", "Mexican", "Moroccan", "Moroccan", "Nepalese", "Nepalese", "Nigerian", "Nigerian", "Nigerian", "Nigerian", "Norwegian", "Norwegian", "Omani", "Omani", "Pakistani", "Pakistani", "Pakistani", "Peruvian", "Peruvian", "Polish", "Polish", "Polish", "Portuguese", "Portuguese", "Puerto Rican", "Puerto Rican", "Romanian", "Romanian", "Russian", "Russian", "Russian", "Russian", "Saudi", "Saudi", "Scottish", "Scottish", "Serbian", "Serbian", "Slovak", "Slovak", "South African", "South African", "South African", "South African", "Spanish", "Spanish", "Spanish", "Sudanese", "Sudanese", "Sudanese", "Swedish", "Swedish", "Swiss", "Swiss", "Tanzanian", "Tanzanian", "Thai", "Thai", "Thai", "Tunisian", "Tunisian", "Turkish", "Turkish", "Turkish", "Ugandan", "Ugandan", "Ukrainian", "Ukrainian", "Ukrainian", "Uzbek", "Uzbek", "Venezuelan", "Venezuelan", "Venezuelan", "Vietnamese", "Vietnamese", "Vietnamese", "Yemeni", "Yemeni", "Zimbabwean", "Zimbabwean", "a New Zealander", "a New Zealander"]]] <</widget>> -<<widget "PresetEurope">> -<<set $nationalities = ["Austrian", "Austrian", "Austrian", "Belgian", "Belgian", "Belgian", "Belgian", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "Danish", "Danish", "Dutch", "Dutch", "Dutch", "Dutch", "Dutch", "Dutch", "Finnish", "Finnish", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "Greek", "Greek", "Greek", "Greek", "Hungarian", "Hungarian", "Hungarian", "Irish", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Kazakh", "Kazakh", "Kazakh", "Kazakh", "Kazakh", "Lithuanian", "Norwegian", "Norwegian", "Polish", "Polish", "Polish", "Polish", "Polish", "Polish", "Polish", "Polish", "Polish", "Polish", "Polish", "Polish", "Polish", "Portuguese", "Portuguese", "Portuguese", "Romanian", "Romanian", "Romanian", "Romanian", "Romanian", "Romanian", "Romanian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Scottish", "Scottish", "Serbian", "Serbian", "Slovak", "Slovak", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Swedish", "Swedish", "Swedish", "Swiss", "Swiss", "Swiss", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian"]>> +<<widget "NationalityPresetVanillaNA">> +[[Vanilla North America|passage()] [$nationalities = ["American", "American", "American", "American", "American", "Canadian", "Mexican", "Mexican", "Dominican", "Dominican", "Haitian", "Cuban", "Puerto Rican", "Jamaican"]]] <</widget>> -<<widget "PresetEastAsia">> -<<set $nationalities = ["Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Japanese", "Japanese", "Korean"]>> +<<widget "NationalityPresetVanillaSA">> +[[Vanilla South America|passage()] [$nationalities = ["Brazilian", "Brazilian", "Brazilian", "Brazilian", "Argentinian", "Argentinian", "Colombian", "Colombian", "Peruvian", "Venezuelan", "Bolivian", "Chilean", "Guatemalan"]]] <</widget>> -<<widget "PresetConUS">> -<<set $nationalities = ["American", "American", "American", "American", "American", "American", "American", "American", "Canadian", "Mexican", "Mexican", "Mexican"]>> +<<widget "NationalityPresetVanillaME">> +[[Vanilla Middle East|passage()] [$nationalities = ["Egyptian", "Egyptian", "Egyptian", "Iranian", "Iranian", "Saudi", "Saudi", "Turkish", "Turkish", "Lebanese", "Emirati", "Jordanian", "Omani", "Israeli", "Armenian", "Iraqi", "Afghan", "Yemeni"]]] <</widget>> -<<widget "PresetVanillaNA">> -<<set $nationalities = ["American", "American", "American", "American", "American", "Canadian", "Mexican", "Mexican", "Dominican", "Dominican", "Haitian", "Cuban", "Puerto Rican", "Jamaican"]>> +<<widget "NationalityPresetVanillaAfrica">> +[[Vanilla Africa|passage()] [$nationalities = ["Nigerian", "Nigerian", "Nigerian", "South African", "South African", "South African", "Kenyan", "Kenyan", "Congolese", "Congolese", "Ethiopian", "Ethiopian", "Algerian", "Algerian", "Sudanese", "Sudanese", "Moroccan", "Ghanan", "Tunisian", "Malian", "Libyan", "Zimbabwean", "Tanzanian", "Ugandan"]]] <</widget>> -<<widget "PresetVanillaSA">> -<<set $nationalities = ["Brazilian", "Brazilian", "Brazilian", "Brazilian", "Argentinian", "Argentinian", "Colombian", "Colombian", "Peruvian", "Venezuelan", "Bolivian", "Chilean", "Guatemalan"]>> +<<widget "NationalityPresetVanillaAsia">> +[[Vanilla Asia|passage()] [$nationalities = ["Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indonesian", "Indonesian", "Indonesian", "Bangladeshi", "Bangladeshi", "Bangladeshi", "Thai", "Thai", "Vietnamese", "Vietnamese", "Korean", "Korean", "Pakistani", "Pakistani", "Filipina", "Filipina", "Japanese", "Japanese", "Burmese", "Burmese", "Malaysian", "Malaysian", "Uzbek", "Nepalese", "Kazakh"]]] <</widget>> -<<widget "PresetBrazil">> -<<set $nationalities = ["Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Argentinian", "Argentinian", "Colombian", "Colombian", "Peruvian", "Venezuelan", "Bolivian", "Chilean", "Guatemalan"]>> +<<widget "NationalityPresetVanillaEU">> +[[Vanilla Europe|passage()] [$nationalities = ["Russian", "Russian", "Russian", "Russian", "German", "German", "German", "Belarusian", "Belarusian", "Ukrainian", "Ukrainian", "French", "French", "Italian", "Italian", "Spanish", "Spanish", "British", "British", "Polish", "Polish", "Romanian", "Lithuanian", "Irish", "Scottish", "Icelandic", "Finnish", "Greek", "Belgian", "Danish", "Czech", "Serbian", "Slovak", "Norwegian", "Dutch", "Austrian", "Swiss", "Portuguese", "Hungarian", "Estonian"]]] <</widget>> -<<widget "PresetVanillaME">> -<<set $nationalities = ["Egyptian", "Egyptian", "Egyptian", "Iranian", "Iranian", "Saudi", "Saudi", "Turkish", "Turkish", "Lebanese", "Emirati", "Jordanian", "Omani", "Israeli", "Armenian", "Iraqi", "Afghan", "Yemeni"]>> +<<widget "NationalityPresetVanillaAU">> +[[Vanilla Australia|passage()] [$nationalities = ["Australian", "Australian", "Australian", "a New Zealander"]]] <</widget>> -<<widget "PresetVanillaAfrica">> -<<set $nationalities = ["Nigerian", "Nigerian", "Nigerian", "South African", "South African", "South African", "Kenyan", "Kenyan", "Congolese", "Congolese", "Ethiopian", "Ethiopian", "Algerian", "Algerian", "Sudanese", "Sudanese", "Moroccan", "Ghanan", "Tunisian", "Malian", "Libyan", "Zimbabwean", "Tanzanian", "Ugandan"]>> +<<widget "NationalityPresetModEurope">> +[[Europe|passage()] [$nationalities = ["Austrian", "Austrian", "Austrian", "Belgian", "Belgian", "Belgian", "Belgian", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "British", "Danish", "Danish", "Dutch", "Dutch", "Dutch", "Dutch", "Dutch", "Dutch", "Finnish", "Finnish", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "French", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "German", "Greek", "Greek", "Greek", "Greek", "Hungarian", "Hungarian", "Hungarian", "Irish", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Italian", "Kazakh", "Kazakh", "Kazakh", "Kazakh", "Kazakh", "Lithuanian", "Norwegian", "Norwegian", "Polish", "Polish", "Polish", "Polish", "Polish", "Polish", "Polish", "Polish", "Polish", "Polish", "Polish", "Polish", "Polish", "Portuguese", "Portuguese", "Portuguese", "Romanian", "Romanian", "Romanian", "Romanian", "Romanian", "Romanian", "Romanian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Russian", "Scottish", "Scottish", "Serbian", "Serbian", "Slovak", "Slovak", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Spanish", "Swedish", "Swedish", "Swedish", "Swiss", "Swiss", "Swiss", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Turkish", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian", "Ukrainian"]]] <</widget>> -<<widget "PresetVanillaAsia">> -<<set $nationalities = ["Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indonesian", "Indonesian", "Indonesian", "Bangladeshi", "Bangladeshi", "Bangladeshi", "Thai", "Thai", "Vietnamese", "Vietnamese", "Korean", "Korean", "Pakistani", "Pakistani", "Filipina", "Filipina", "Japanese", "Japanese", "Burmese", "Burmese", "Malaysian", "Malaysian", "Uzbek", "Nepalese", "Kazakh"]>> +<<widget "NationalityPresetModEastAsia">> +[[East Asia|passage()] [$nationalities = ["Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Japanese", "Japanese", "Korean"]]] <</widget>> -<<widget "PresetVanillaEU">> -<<set $nationalities = ["Russian", "Russian", "Russian", "Russian", "German", "German", "German", "Belarusian", "Belarusian", "Ukrainian", "Ukrainian", "French", "French", "Italian", "Italian", "Spanish", "Spanish", "British", "British", "Polish", "Polish", "Romanian", "Lithuanian", "Irish", "Scottish", "Icelandic", "Finnish", "Greek", "Belgian", "Danish", "Czech", "Serbian", "Slovak", "Norwegian", "Dutch", "Austrian", "Swiss", "Portuguese", "Hungarian", "Estonian"]>> +<<widget "NationalityPresetModUSA">> +[[USA|passage()] [$nationalities = ["American", "American", "American", "American", "American", "American", "American", "American", "Canadian", "Mexican", "Mexican", "Mexican"]]] <</widget>> -<<widget "PresetVanillaAU">> -<<set $nationalities = ["Australian", "Australian", "Australian", "a New Zealander"]>> +<<widget "NationalityPresetModJapan">> +[[Japan|passage()] [$nationalities = ["Japanese", "Japanese", "Japanese"]]] <</widget>> -<<widget "PresetJapan">> -<<set $nationalities = ["Japanese", "Japanese", "Japanese"]>> -<</widget>> \ No newline at end of file +<<widget "NationalityPresetModBrazil">> +[[Brazil|passage()] [$nationalities = ["Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Argentinian", "Argentinian", "Colombian", "Colombian", "Peruvian", "Venezuelan", "Bolivian", "Chilean", "Guatemalan"]]] +<</widget>> diff --git a/src/uncategorized/checkAutoRulesActivate.tw b/src/uncategorized/checkAutoRulesActivate.tw index 8b441789d5d8fa54e3e45b76b578cee0b1f777b7..66751631a6936fc344005e3d4b56bb4a587346d0 100644 --- a/src/uncategorized/checkAutoRulesActivate.tw +++ b/src/uncategorized/checkAutoRulesActivate.tw @@ -64,6 +64,18 @@ <</if>> <<switch _currentRule.activation>> +<<case "custom">> /* for betterRA */ + <<set _isActive to parseAndEvaluate(_currentRule.customActivationText, $activeSlave)>> + <<if _isActive>> + <<if !ruleApplied($activeSlave, _currentRule.ID)>> + <<set $activeSlave.currentRules.push(_currentRule.ID)>> + <br>Rule _rule (_currentRule.name) is now applying to $activeSlave.slaveName. + <</if>> + <<else>> + <<if ruleApplied($activeSlave, _currentRule.ID)>> + <<RARemoveRule>> + <</if>> + <</if>> <<case "always">> <<if !ruleApplied($activeSlave, _currentRule.ID)>> <<set $activeSlave.currentRules.push(_currentRule.ID)>> diff --git a/src/uncategorized/dairyReport.tw b/src/uncategorized/dairyReport.tw index 21cb95290a28516f65c6a09b8288df0f69ef6daf..a30c9ce1cb7a7cbf4bda4a04fe1935c9caf43951 100644 --- a/src/uncategorized/dairyReport.tw +++ b/src/uncategorized/dairyReport.tw @@ -286,7 +286,7 @@ <<if ($slaves[_i].balls > 0)>> <<if $arcologies[0].FSAssetExpansionistResearch == 1>> <<if ($slaves[_i].balls < 125)>> - <<set $slaves[$_i].balls += 1>> + <<set $slaves[_i].balls += 1>> <</if>> <<if ($slaves[_i].balls == 125)>> <<set _balltacular += 1>> @@ -586,7 +586,7 @@ <<else>> fills the _milkmaidImpregnated cows' cunts with her cum. <</if>> - <<set Tmult = (_milkmaidImpregnated * 10), $slaves[_MM].penetrativeCount += Tmult, $Milkmaid.penetrativeCount += Tmult, $penetrativeTotal += Tmult>> + <<set _Tmult = (_milkmaidImpregnated * 10), $slaves[_MM].penetrativeCount += _Tmult, $Milkmaid.penetrativeCount += _Tmult, $penetrativeTotal += _Tmult>> <</if>> <<if (_milkmaidFetish == 1)>> In her line of work, she touches more breasts than even you do. She lives in an atmosphere of quivering, heaving, milky breastflesh; of girls who shudder and moan when she touches their creamy nipples. She has @@color:lightcoral;become more of a breast girl.@@ @@ -596,7 +596,7 @@ <<if ($Milkmaid.muscles > 30)>> Her muscles help her handle the fattest or most reluctant cow. <</if>> - <<if (_MMMuscles = 1)>> + <<if (_MMMuscles == 1)>> Her constant handling of unruly or heavy cows forces her to @@color:lime;build muscle.@@ <<set $slaves[_MM].muscles += 1>> <</if>> diff --git a/src/uncategorized/economics.tw b/src/uncategorized/economics.tw index 06dbb49ceaf8ef744d130c61decf189b8edd1816..4a663096502425a101b53f8e4444a9d0c5ab533d 100644 --- a/src/uncategorized/economics.tw +++ b/src/uncategorized/economics.tw @@ -988,6 +988,24 @@ __Personal Notes__ <<elseif $PC.preg >= 8>> Your dress and apron feel tight around your middle. <</if>> +<<if $PC.ballsImplant > 2>> + Your dress and apron bulges with your enormous balls. +<<elseif $PC.ballsImplant == 2>> + Your dress hides your huge balls, but it does nothing to hide your altered gait. +<<elseif $PC.ballsImplant == 1>> + Your dress hides your big balls. +<</if>> +<<if $PC.butt > 2>> + <<if $PC.buttImplant == 1>> + You had to get your dress let out to contain your enormous rear. It can't hide how big and fake it is though. + <<else>> + You had to get your dress let out to contain your enormous rear. + <</if>> +<<elseif $PC.butt == 2>> + Your dress is starting to feel tight around your huge rear. +<<elseif $PC.butt == 1>> + Your dress is filled out by your big butt. +<</if>> <<elseif $PC.career == "escort">> <<if $PC.boobs == 1 && $PC.boobsBonus > 0>> <<if $PC.boobsBonus > 2>> @@ -1021,6 +1039,38 @@ __Personal Notes__ <<elseif $PC.preg >= 8>> When you look down, you can't help but notice your belly sticking out a little. <</if>> +<<if $PC.ballsImplant > 2>> + You've swapped up to a larger pair of slutty pants, specially designed with extra sack room. They draw the eye right to your bulge<<if $PC.preg >= 28>>; you can do without people thinking you are giving birth into your pants, though<</if>>. +<<elseif $PC.ballsImplant == 2>> + Your slutty pants are really tight around the groin, but they hold your huge balls in place quite nicely. +<<elseif $PC.ballsImplant == 1>> + Your slutty pants bulge more than ever with your big balls. +<</if>> +<<if $PC.dick == 1>> + <<if $PC.butt > 2>> + <<if $PC.buttImplant == 1>> + You had to get your slutty pants let out to contain your enormous rear. It still feels really tight, however, thanks to the implants. + <<else>> + You had to get your slutty pants let out to contain your enormous rear. It still overflows scandalously, however. + <</if>> + <<elseif $PC.butt == 2>> + Your huge rear spills out from the top of your slutty pants. + <<elseif $PC.butt == 1>> + Your slutty pants are strained by your big butt. + <</if>> +<<else>> + <<if $PC.butt > 2>> + <<if $PC.buttImplant == 1>> + Your ass has completely devoured your slutty shorts. You look like you are wearing a thong leaving your overly round cheeks to hang free. + <<else>> + Your ass has completely devoured your slutty shorts. You look like you are wearing a thong leaving your cheeks to jiggle freely. + <</if>> + <<elseif $PC.butt == 2>> + Your slutty shorts are are filled to bursting by your rear. Roughly half of your ass is actually in your bottoms, the rest is bulging out scandalously. + <<elseif $PC.butt == 1>> + Your slutty shorts are strained by your big butt. It spills out every gap it can. + <</if>> +<</if>> <<else>> <<if $PC.boobs == 1 && $PC.boobsBonus > 0>> <<if $PC.boobsBonus > 2>> @@ -1054,20 +1104,52 @@ __Personal Notes__ <<elseif $PC.preg >= 8>> Your top feels oddly tight around your middle. <</if>> +<<if $PC.ballsImplant > 2>> + You've had to get your suit pants retailored again to fit your enormous balls. It is obvious that the bulge in your pants is not your penis<<if $PC.preg >= 28>>; you've had several people rush to your aid under the mistaken belief that your child was crowing into your pants<</if>>. +<<elseif $PC.ballsImplant == 2>> + You've had to get your suit pants retailored to fit your huge balls. It gives you a strinking figure, though. +<<elseif $PC.ballsImplant == 1>> + Your suit pants bulge more than ever with your big balls. +<</if>> +<<if $PC.dick == 1>> + <<if $PC.butt > 2>> + <<if $PC.buttImplant == 1>> + You had to get your suit pants let out to contain your enormous rear. It does nothing to hide how big and round your asscheeks are, though. + <<else>> + You had to get your suit pants let out to contain your enormous rear. It can clearly be seen jiggling within them. + <</if>> + <<elseif $PC.butt == 2>> + Your huge rear threatens to tear apart your suit pants. You'll need to get them let out soon. + <<elseif $PC.butt == 1>> + Your suit pants are strained by your big butt. + <</if>> +<<else>> + <<if $PC.butt > 2>> + <<if $PC.buttImplant == 1>> + Your skirt covers your enormous butt but does nothing to hide its size and shape; you're beginning to show too much leg again, it might be time for a longer skirt. + <<else>> + Your skirt covers your enormous butt but does nothing to hide its size and fluidity; your rear is soft enough to fill out your skirt but not lift it up too far, it also translates every motion to the fabric, however. + <</if>> + <<elseif $PC.butt == 2>> + Your skirt covers your huge butt but does nothing to hide its size; in fact, you've had to start wearing a longer one to make up for the extra surface area. + <<elseif $PC.butt == 1>> + Your skirt covers your big butt but does nothing to hide its size. + <</if>> +<</if>> <</if>> -<<if $PC.boobs == 1>> +<<if $PC.boobs == 1 && $PC.boobsImplants == 0>> <<if $PC.preg == 31>> <<if $PC.boobsBonus == 0>> - Your breasts have grown larger to feed your coming child. Quick measurements show you've gained nearly two cup sizes over the course of your pregnancy. + Your breasts have grown larger to feed your coming child. Quick measurements show you've gone up a cup size over the course of your pregnancy. <<set $PC.boobsBonus++>> <<elseif $PC.boobsBonus == 1>> <<if random(1,100) > 75>> - Your already large breasts have grown even larger with your new pregnancy. Quick measurements show you've gained nearly another two cup sizes or so over the course of your pregnancy. + Your already large breasts have grown even larger with your new pregnancy. Quick measurements show you've gone up another cup size or so over the course of your pregnancy. <<set $PC.boobsBonus++>> <</if>> <<elseif $PC.boobsBonus == 2>> <<if random(1,100) > 90>> - Your already huge breasts have grown even more enormous with your new pregnancy. Quick measurements show you've gained roughly another two cup sizes over the course of your pregnancy. + Your already huge breasts have grown even more enormous with your new pregnancy. Quick measurements show you've gone up yet another a cup size over the course of your pregnancy. <<set $PC.boobsBonus++>> <</if>> <</if>> diff --git a/src/uncategorized/exportRule.tw b/src/uncategorized/exportRule.tw index d5e21c5de59c25a7499ff26eca0c9ef6012ff762..46ff48fade4251ac48a86c58118201ca70ed2b57 100644 --- a/src/uncategorized/exportRule.tw +++ b/src/uncategorized/exportRule.tw @@ -3,8 +3,10 @@ <<set $nextButton to "Continue">> <<set $nextLink to "Rules Assistant">> -//Copy the following block of code for importing// +//Copy the one of following blocks of code for importing later. Direct JSON method more automatical and guarantee to export ALL variables used in pregmod, but rely on browser JS process capability and may not work in some browsers. (Mostly old ones.)// <br><br> +__Default FC export method__: +<br> name: "$currentRule.name", activation: "$currentRule.activation", thresholdLower: <<if ndef $currentRule.thresholdLower or $currentRule.thresholdLower is "none">> "none", @@ -52,3 +54,8 @@ excludedSlaves: <<else>> $currentRule.excludedSlaves <</if>> +<br> +<br> __Direct JSON export__: <br> + +<<set _jsonText = toJson($currentRule)>> +_jsonText diff --git a/src/uncategorized/generateXXSlave.tw b/src/uncategorized/generateXXSlave.tw index 9fc4c6363caa024d20fcac9be59bdb8cc7a7bac1..aa44b038e065d07e10612e81858bd7d1af1f6dc9 100644 --- a/src/uncategorized/generateXXSlave.tw +++ b/src/uncategorized/generateXXSlave.tw @@ -167,6 +167,27 @@ <<set $activeSlave.nationality to $fixedNationality>> <</if>> <<NationalityToRace $activeSlave>> +/* Corporate slavegen with race selection */ +<<if passage() == "Slave Markets" && $slaveMarket == "corporate" && ($captureUpgradeRace != "unselected") && ($captureUpgradeRace != "none")>> + <<if $captureUpgradeRace == "mixed race">> + <<set $activeSlave.race to "mixed race">> + <<else>> + <<set _capUpgradeCheck = State.variables[$captureUpgradeRace.toLowerCase().replace(/[ -]/g, '')+'Nationalities']>> + <<set _capUpgradeNationalities = []>> + <<for _i = 0; _i < _capUpgradeCheck.length; _i++>> + <<set _capNation to _capUpgradeCheck[_i]>> + <<if $nationalities.includes(_capNation)>> + <<set _capUpgradeNationalities.push(_capNation)>> + <</if>> + <</for>> + <<if _capUpgradeNationalities.length > 0>> + <<set $activeSlave.nationality to _capUpgradeNationalities.random(), $activeSlave.race to $captureUpgradeRace>> + <<else>> + <<set $activeSlave.nationality to _capUpgradeCheck.random(), $activeSlave.race to $captureUpgradeRace>> + <</if>> + <</if>> +<</if>> +/*end Corporate slavegen with race selection */ <<NationalityToName $activeSlave>> <<NationalityToAccent $activeSlave>> diff --git a/src/uncategorized/generateXYSlave.tw b/src/uncategorized/generateXYSlave.tw index 224c0b5833dea8e508c0fc6cf034abc3173e9f2b..d3cdb20cdcad678509d0d8c0a4978c3f31fc6c58 100644 --- a/src/uncategorized/generateXYSlave.tw +++ b/src/uncategorized/generateXYSlave.tw @@ -174,6 +174,27 @@ <<set $activeSlave.nationality to $fixedNationality>> <</if>> <<NationalityToRace $activeSlave>> +/* Corporate slavegen with race selection */ +<<if passage() == "Slave Markets" && $slaveMarket == "corporate" && ($captureUpgradeRace != "unselected") && ($captureUpgradeRace != "none")>> + <<if $captureUpgradeRace == "mixed race">> + <<set $activeSlave.race to "mixed race">> + <<else>> + <<set _capUpgradeCheck = State.variables[$captureUpgradeRace.toLowerCase().replace(/[ -]/g, '')+'Nationalities']>> + <<set _capUpgradeNationalities = []>> + <<for _i = 0; _i < _capUpgradeCheck.length; _i++>> + <<set _capNation to _capUpgradeCheck[_i]>> + <<if $nationalities.includes(_capNation)>> + <<set _capUpgradeNationalities.push(_capNation)>> + <</if>> + <</for>> + <<if _capUpgradeNationalities.length > 0>> + <<set $activeSlave.nationality to _capUpgradeNationalities.random(), $activeSlave.race to $captureUpgradeRace>> + <<else>> + <<set $activeSlave.nationality to _capUpgradeCheck.random(), $activeSlave.race to $captureUpgradeRace>> + <</if>> + <</if>> +<</if>> +/* end Corporate slavegen with race selection */ <<NationalityToName $activeSlave>> <<NationalityToAccent $activeSlave>> diff --git a/src/uncategorized/main.tw b/src/uncategorized/main.tw index cf861a2c80294f854e83ffa485b77d396cf8f474..dd2fdf06600a46785fd65a2298c326970352cda3 100644 --- a/src/uncategorized/main.tw +++ b/src/uncategorized/main.tw @@ -79,6 +79,9 @@ <<if ndef $PC.ageImplant>> <<set $PC.ageImplant = 0>> <</if>> +<<if ndef $PC.newVag>> + <<set $PC.newVag = 0>> +<</if>> <<if ndef $playerSurgery>> <<set $playerSurgery = 0>> <</if>> diff --git a/src/uncategorized/officeDescription.tw b/src/uncategorized/officeDescription.tw index c831904632e11440ec0c99900c296466b0fdc50c..5a0061e6cc40cf66c751e2701f2da4eca203924d 100644 --- a/src/uncategorized/officeDescription.tw +++ b/src/uncategorized/officeDescription.tw @@ -126,40 +126,55 @@ There's a display case behind your desk, <</if>> A small mirror resides on your desk, facing you. +A $PC.visualAge year old face stares back at you. <<if ($playerAging != 0)>><<if $PC.birthWeek is 51>>You'll be turning <<print $PC.actualAge+1>> next week.<</if>><</if>> -<<if $PC.boobsBonus > 0 || $PC.preg > 2>> - <<if $PC.boobsBonus > 0>> - <<if $PC.boobsBonus > 2>> - <<elseif $PC.boobsBonus == 2>> - <<elseif $PC.boobsBonus == 1>> - Your breasts seem a little bigger.<<if $PC.preg > 20 || $PC.births > 0>> Likely a side effect of your lactation.<</if>> - <</if>> - <</if>> - <<if $PC.preg >= 42>> - You don't know why you even bother getting out of bed; you are overdue and ready to drop at many time, making your life as arcology owner very difficult. You try to relax and enjoy your slaves, but you can only manage so much in this state. - <<elseif $PC.preg >= 40>> - You feel absolutely massive; your full-term belly makes your life as arcology owner very difficult. You try your best to not wander too far from your penthouse, not with labor and birth so close. - <<elseif $PC.preg >= 36>> - You can barely wrap your arms around your huge pregnant belly, and when you do, your popped navel reminds you your bun is almost ready. - <<elseif $PC.preg >= 32>> - Your pregnancy has gotten quite huge, none of your clothes fit it right. - <<elseif $PC.preg >= 28>> - Your pregnant belly juts out annoyingly far, just getting dressed is a pain now. - <<elseif $PC.preg >= 24>> - Half way there! Your belly has gotten quite large with child; it is beginning to get the way of sex and business. - <<elseif $PC.preg >= 20>> - Your belly is now large enough that there is no hiding it. - <<elseif $PC.preg >= 16>> - Your belly is rounded by your early pregnancy. - <<elseif $PC.preg >= 12>> - Your lower belly is beginning to stick out, you're definitely pregnant. - <<elseif $PC.preg >= 8>> - Your belly is slightly swollen; combined with your missed period, odds are you're pregnant. - <<elseif $PC.preg >= 3>> - Your period hasn't happened in some time, you might be pregnant. - <</if>> +<<if $PC.boobsBonus > 2>> + Your breasts are enormous. <<if $PC.boobsImplant == 1>>They are big, round, and obviously implants. They insist on maintaining their shape no matter how you move<<else>>They are all natural, heavy, and a bit saggy though they retain some perk. Every single move you make sends ripples through your cleavage. You catch yourself watching them move in the mirror every so often<</if>>.<<if $PC.preg > 30 || $PC.births > 0>> Your breasts feel even more enormous lately; likely a side effect of your lactation, though you could do without the wetspots forming over your nipples.<</if>> +<<elseif $PC.boobsBonus == 2>> + Your breasts are huge. <<if $PC.boobsImplant == 1>>They are unaturally perky for their size. When you shake them, the barely move<<else>>They are all natural and a little heavy. They bounce lewdly when you shake them and take a little too long to calm down.<</if>>.<<if $PC.preg > 30 || $PC.births > 0>> Your breasts feel even more huge lately; likely a side effect of your lactation, though you could do without the wetspots forming over your nipples.<</if>> +<<elseif $PC.boobsBonus == 1>> + Your breasts are pretty big. <<if $PC.boobsImplant == 1>>They are nice, perky and not obviously implants. They jiggle only slightly when you shake them though<<else>>They are nice and perky, dispite their size. They bounce lewdly when you shake them<</if>>.<<if $PC.preg > 30 || $PC.births > 0>> Your breasts feel bigger lately; likely a side effect of your lactation, though you could do without the wetspots forming over your nipples.<</if>> +<<elseif $PC.boobs == 1>> + Your breasts are on the larger side of things<<if $PC.preg > 30 || $PC.births > 0>>, though you could do without the wetspots forming over your nipples<</if>>. <<else>> - You look the same as you always have. + Your chest is quite masculine@@<<if $PC.preg > 30 || $PC.births > 0>>, though the pair of wetspots forming over your nipples suggest otherwise<</if>>. +<</if>> +<<if $PC.preg >= 42>> + You don't know why you even bother getting out of bed; you are overdue and ready to drop at many time, making your life as arcology owner very difficult. You try to relax and enjoy your slaves, but you can only manage so much in this state. +<<elseif $PC.preg >= 40>> + You feel absolutely massive; your full-term belly makes your life as arcology owner very difficult. You try your best to not wander too far from your penthouse, not with labor and birth so close. +<<elseif $PC.preg >= 36>> + You can barely wrap your arms around your huge pregnant belly, and when you do, your popped navel reminds you your bun is almost ready. +<<elseif $PC.preg >= 32>> + Your pregnancy has gotten quite huge, none of your clothes fit it right. +<<elseif $PC.preg >= 28>> + Your pregnant belly juts out annoyingly far, just getting dressed is a pain now. +<<elseif $PC.preg >= 24>> + Half way there! Your belly has gotten quite large with child; it is beginning to get the way of sex and business. +<<elseif $PC.preg >= 20>> + Your belly is now large enough that there is no hiding it. +<<elseif $PC.preg >= 16>> + Your belly is rounded by your early pregnancy. +<<elseif $PC.preg >= 12>> + Your lower belly is beginning to stick out, you're definitely pregnant. +<<elseif $PC.preg >= 8>> + Your belly is slightly swollen; combined with your missed period, odds are you're pregnant. +<<elseif $PC.preg >= 3>> + Your period hasn't happened in some time, you might be pregnant. +<</if>> +<<if $PC.ballsImplant > 2>> + No matter how you sit, your enormous balls are never comfortable. +<<elseif $PC.ballsImplant == 2>> + You shift in your seat and spread your legs to give your huge balls room. +<<elseif $PC.ballsImplant == 1>> + You shift in your seat to make room for your big balls. +<</if>> +<<if $PC.butt > 2>> + Your enormous butt makes for an extremely comfortable seat. You hope the chair doesn't follow you when you stand up this time. +<<elseif $PC.butt == 2>> + Your huge butt makes for a very comfortable seat. +<<elseif $PC.butt == 1>> + Your big butt makes for a comfortable seat. <</if>> <</if>> diff --git a/src/uncategorized/rulesAssistant.tw b/src/uncategorized/rulesAssistant.tw index 066f622f02388463d71e5328bc4eb07eb6f2e443..d97d0bb0e9acfa4a606096d17d222022056f36f8 100644 --- a/src/uncategorized/rulesAssistant.tw +++ b/src/uncategorized/rulesAssistant.tw @@ -27,7 +27,7 @@ <<goto "Rules Assistant">> <</link>> </strong> - </span>  |  + </span> | @@color:cyan;[â†,Q] @@<span id="prevRule"> <strong> @@ -40,7 +40,7 @@ </strong> </span> <<else>> -[Shift+â†,Shift+Q] First  |  [â†,Q] Prev +[Shift+â†,Shift+Q] First | [â†,Q] Prev <</if>> ''Viewing Rule $r of $defaultRules.length'' <<if _r+1 < $defaultRules.length>> @@ -53,9 +53,9 @@ <<goto "Rules Assistant">> <</link>> </strong> - </span>@@color:cyan; [E,→]@@  |  + </span>@@color:cyan; [E,→]@@ | <<else>> -Next [E,→]  |  +Next [E,→] | <</if>> <<if $r != $defaultRules.length and $defaultRules[$defaultRules.length-1]>> @@ -242,6 +242,13 @@ __Rule $r Automatic Activation__ <<RAChangeApply>> <</link>> <</if>> +| +<<link "Custom">> + <<set $currentRule.activation to "custom">> + <<RAChangeActivation>> + <<RAChangeSave>> + <<RAChangeApply>> +<</link>> <br><br> @@ -2712,7 +2719,7 @@ Relationship rules: ''$currentRule.relationshipRules.'' <br> <<link "Add a new rule">> - <<set _activeRule to {aphrodisiacs: "no default setting", activation: "none", thresholdLower: 4, thresholdUpper: "none", eqLower: true, eqUpper: true, releaseRules: "no default setting", clitSetting: "no default setting", speechRules: "no default setting", clothes: "no default setting", fuckdoll: 0, choosesOwnClothes: 0, collar: "no default setting", shoes: "no default setting", virginAccessory: "no default setting", aVirginAccessory: "no default setting", vaginalAccessory: "no default setting", aVirginDickAccessory: "no default setting", dickAccessory: "no default setting", cSec: 0, bellyAccessory: "no default setting", aVirginButtplug: "no default setting", buttplug: "no default setting", markings: "none", eyeColor: "no default setting", makeup: "no default setting", nails: "no default setting", hColor: "no default setting", hLength: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", underArmHColor: "no default setting", underArmHStyle: "no default setting", nipplesPiercing: "no default setting", areolaePiercing: "no default setting", clitPiercing: "no default setting", vaginaLube: "no default setting", vaginaPiercing: "no default setting", analArea: 1, dickPiercing: "no default setting", anusPiercing: "no default setting", lipsPiercing: "no default setting", tonguePiercing: "no default setting", earPiercing: "no default setting", nosePiercing: "no default setting", eyebrowPiercing: "no default setting", navelPiercing: "no default setting", corsetPiercing: "no default setting", boobsTat: "no default setting", buttTat: "no default setting", vaginaTat: "no default setting", dickTat: "no default setting", lipsTat: "no default setting", anusTat: "no default setting", shouldersTat: "no default setting", armsTat: "no default setting", legsTat: "no default setting", backTat: "no default setting", stampTat: "no default setting", curatives: "no default setting", livingRules: "no default setting", relationshipRules: "no default setting", standardPunishment: "no default setting", standardReward: "no default setting", useRulesAssistant: 1, diet: "no default setting", dietCum: "no default setting", dietMilk: "no default setting", muscles: "no default setting", XY: "no default setting", XX: "no default setting", gelding: "no default setting", preg: "no default setting", growth: "no default setting", autoSurgery: 0, choosesOwnAssignment: 0, lactation: 0, autoBrand: 0, pornFameSpending: "no default setting", dietGrowthSupport: 0, eyewear: "no default setting", assignment: [], excludeAssignment: [], setAssignment: "none", facility: [], excludeFacility: [], assignFacility: "none", excludeSpecialSlaves: true, facilityRemove: false, removalAssignment: "rest", selectedSlaves: [], excludedSlaves: [], surgery: {lactation: "no default setting", cosmetic: 0, accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: 0} }>> + <<set _activeRule to {aphrodisiacs: "no default setting", activation: "none", thresholdLower: 4, thresholdUpper: "none", eqLower: true, eqUpper: true, releaseRules: "no default setting", clitSetting: "no default setting", speechRules: "no default setting", clothes: "no default setting", fuckdoll: 0, choosesOwnClothes: 0, collar: "no default setting", shoes: "no default setting", virginAccessory: "no default setting", aVirginAccessory: "no default setting", vaginalAccessory: "no default setting", aVirginDickAccessory: "no default setting", dickAccessory: "no default setting", cSec: 0, bellyAccessory: "no default setting", aVirginButtplug: "no default setting", buttplug: "no default setting", markings: "none", eyeColor: "no default setting", makeup: "no default setting", nails: "no default setting", hColor: "no default setting", hLength: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", underArmHColor: "no default setting", underArmHStyle: "no default setting", nipplesPiercing: "no default setting", areolaePiercing: "no default setting", clitPiercing: "no default setting", vaginaLube: "no default setting", vaginaPiercing: "no default setting", analArea: 1, dickPiercing: "no default setting", anusPiercing: "no default setting", lipsPiercing: "no default setting", tonguePiercing: "no default setting", earPiercing: "no default setting", nosePiercing: "no default setting", eyebrowPiercing: "no default setting", navelPiercing: "no default setting", corsetPiercing: "no default setting", boobsTat: "no default setting", buttTat: "no default setting", vaginaTat: "no default setting", dickTat: "no default setting", lipsTat: "no default setting", anusTat: "no default setting", shouldersTat: "no default setting", armsTat: "no default setting", legsTat: "no default setting", backTat: "no default setting", stampTat: "no default setting", curatives: "no default setting", livingRules: "no default setting", relationshipRules: "no default setting", standardPunishment: "no default setting", standardReward: "no default setting", useRulesAssistant: 1, diet: "no default setting", dietCum: "no default setting", dietMilk: "no default setting", muscles: "no default setting", XY: "no default setting", XX: "no default setting", gelding: "no default setting", preg: "no default setting", growth: "no default setting", autoSurgery: 0, choosesOwnAssignment: 0, lactation: 0, autoBrand: 0, pornFameSpending: "no default setting", dietGrowthSupport: 0, eyewear: "no default setting", assignment: [], excludeAssignment: [], setAssignment: "none", facility: [], excludeFacility: [], assignFacility: "none", excludeSpecialSlaves: true, facilityRemove: false, removalAssignment: "rest", selectedSlaves: [], excludedSlaves: [], surgery: {lactation: "no default setting", cosmetic: 0, accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: 0, underArmHColor: "no default setting", underArmHStyle: "no default setting"} }>> <<if ndef _r>> <<set _r to 0>> diff --git a/src/uncategorized/saDrugs.tw b/src/uncategorized/saDrugs.tw index a383620022c563b5503a00f32905c89261866631..2e45812b749bf956797f329f5cb9eff7b166b5a3 100644 --- a/src/uncategorized/saDrugs.tw +++ b/src/uncategorized/saDrugs.tw @@ -563,7 +563,7 @@ $pronounCap has been ready to give birth for some time now. Supressing birth for so long @@color:red;greatly affects $possessive health@@. $pronounCap may @@color:red;have trouble@@ giving birth to $possessive oversized child. <<elseif $slaves[$i].preg > 30>> <<set $slaves[$i].health -= 10>> - Labor supressing agents @@color:yellow;negatively affect $possessive health@@. + Labor supressing agents @@color:red;negatively affect $possessive health@@. <</if>> <</switch>> diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw index 3ede07bc6954407836e356862ec2e8c8140b3981..dc07a8a65b16fef4a43a275eb99b79e3ad7f21c1 100644 --- a/src/uncategorized/saLongTermEffects.tw +++ b/src/uncategorized/saLongTermEffects.tw @@ -3397,6 +3397,8 @@ and ($slaves[$i].clothes != "a slutty qipao") and ($slaves[$i].clothes != "restr <</switch>> <<if $slaves[$i].induce == 1>> Her child<<if $slaves[$i].pregType > 1>>ren visibly shift<<else>> visibly shifts<</if>> within her womb as they prepare to enter the world. She experiences several contractions, but not enough to deter her from her work. + <<elseif $slaves[$i].pregControl == "labor supressors">> + Her child<<if $slaves[$i].pregType > 1>>ren<</if>> are oddly calm; it is unlikely she will give birth soon, despite being overdue. <<elseif $slaves[$i].preg > 34 && $slaves[$i].pregType < 50>> She constantly beset by her squirming child<<if $slaves[$i].pregType > 1>>ren<</if>>. Given their liveliness, and how long she has been pregnant, it is likely that she will go into labor at any time now. <<elseif $slaves[$i].preg > 32 && $slaves[$i].pregType < 50>> diff --git a/src/uncategorized/servantsQuartersReport.tw b/src/uncategorized/servantsQuartersReport.tw index 68c28ab9daa357140d503827b474647636d794f8..6aa031339116a6b91da1da00bcef90b6a2d7ac5f 100644 --- a/src/uncategorized/servantsQuartersReport.tw +++ b/src/uncategorized/servantsQuartersReport.tw @@ -147,7 +147,7 @@ <<else>> she ensures the _stewardessImpregnated fertile servants are full of her cum at all times. <</if>> - <<set Tmult = (_stewardessImpregnated * 10), $slaves[_SWD].penetrativeCount += Tmult, $Stewardess.penetrativeCount += Tmult, $penetrativeTotal += Tmult>> + <<set _Tmult = (_stewardessImpregnated * 10), $slaves[_SWD].penetrativeCount += _Tmult, $Stewardess.penetrativeCount += _Tmult, $penetrativeTotal += _Tmult>> <</if>> <<if _stewardessFetish == 1>> She's allowed and even expected to use her charges for her own gratification, and sometimes they'll even instigate submissive sex with her just to ingratiate themselves. She becomes comfortable with the role of a @@color:lightcoral;sexual dominant.@@ diff --git a/src/uncategorized/slaveAssignmentsReport.tw b/src/uncategorized/slaveAssignmentsReport.tw index 51b3e81e281c6a30b007a3017c8c7b6eb61d9fc5..4000baede73b9be47dc3b41b974a4777067eaa37 100644 --- a/src/uncategorized/slaveAssignmentsReport.tw +++ b/src/uncategorized/slaveAssignmentsReport.tw @@ -309,6 +309,7 @@ <<if $slaves[_i].preg > 0>> <<if $slaves[_i].pregControl == "slow gestation">> <<set $slaves[_i].preg += 0.5>> + <<set $slaves[_i].preg = (Math.ceil($slaves[_i].preg*10)/10)>> /* trick to avoid precission lost error showed like week: 29.499999999999998*/ <<elseif $slaves[_i].pregControl == "speed up">> <<set $slaves[_i].preg += 2>> <<else>> diff --git a/src/utility/raWidgets.tw b/src/utility/raWidgets.tw index 71b98e55829944227728f5fc74363355ab4de1e6..573d4fe116a2cf479e72fc11d0aff17f1ed8e083 100644 --- a/src/utility/raWidgets.tw +++ b/src/utility/raWidgets.tw @@ -11,7 +11,13 @@ <<replace #activation>> __($currentRule.activation):__ <br> -<<if ($currentRule.activation != "none") && ($currentRule.activation != "always")>> +<<if $currentRule.activation == "custom" >> + <<textarea "$currentRule.customActivationText" $currentRule.customActivationText>> + <<link "Save activation">> + <<RAChangeSave>> + <<RAChangeApply>> + <</link>> +<<elseif ($currentRule.activation != "none") && ($currentRule.activation != "always")>> <span id="lower"> <<if ($currentRule.thresholdLower is "none")>> (no lower limit) @@ -119,6 +125,8 @@ When ''$currentRule.activation'' is <br>// Fetus count, rule can be applied only after week 10 of pregnancy. // <<case "belly implant volume">> <br>// Volume of belly implant in ccs. 0 - none. // +<<case "custom">> +<br>// Enter custom condition. // <</switch>> <</replace>> <</widget>>