diff --git a/src/cheats/PCCheatMenu.tw b/src/cheats/PCCheatMenu.tw index 2080a5037f90d368b9981ac8519bc4fec0223a5d..8b5cddb2caee8a0f822c829ce6890d6d58e622ea 100644 --- a/src/cheats/PCCheatMenu.tw +++ b/src/cheats/PCCheatMenu.tw @@ -1,338 +1,14 @@ :: PCCheatMenu [nobr] <<set $nextButton = "Apply", $nextLink = "PCCheatMenuCheatDatatypeCleanup", $encyclopedia = "Design Your Master">> -<<set $tempSlave = clone($PC)>> -''Cheat Editing Player Character'' <<link "[Cancel]" "Manage Personal Affairs">><<unset $tempSlave, $customEvalCode>><</link>> +''Cheat Editing Player Character'' +<<link "[Cancel]" "Manage Personal Affairs">> + <<unset $tempSlave, $customEvalCode>> + <<set $PC = clone($backupSlave)>> +<</link>> -<br><br> - -Title: ''<<if $tempSlave.title == 1>>Master<<else>>Mistress<</if>>'' -<br><<radiobutton "$tempSlave.title" 1>> Master - <<radiobutton "$tempSlave.title" 0>> Mistress -<br> -Sex: ''$tempSlave.genes'' -<br><<radiobutton "$tempSlave.genes" "XY">> XY - <<radiobutton "$tempSlave.genes" "XX">> XX -<br>''Name'': <<textbox "$tempSlave.slaveName" $tempSlave.slaveName>> -<br>''Birth Name'': <<textbox "$tempSlave.birthName" $tempSlave.birthName>> -<br>''Surname'': <<textbox "$tempSlave.slaveSurname" $tempSlave.slaveSurname>> -<br>''Birth Surname'': <<textbox "$tempSlave.birthSurname" $tempSlave.birthSurname>> -<br>''Custom Title'': <<textbox "$tempSlave.custom.title" $tempSlave.custom.title>> - -<br>Nationality: ''$tempSlave.nationality''. -<<textbox "$tempSlave.nationality" $tempSlave.nationality>> - -<br>Career: ''$tempSlave.career''. -<br><<radiobutton "$tempSlave.career" "wealth">> Wealth - <<radiobutton "$tempSlave.career" "capitalist">> Capitalist - <<radiobutton "$tempSlave.career" "mercenary">> Mercenary - <<radiobutton "$tempSlave.career" "slaver">> Slaver - <<radiobutton "$tempSlave.career" "engineer">> Engineer - <<radiobutton "$tempSlave.career" "medicine">> Medicine - <<radiobutton "$tempSlave.career" "celebrity">> Celebrity - <<radiobutton "$tempSlave.career" "escort">> Escort - <<radiobutton "$tempSlave.career" "servant">> Servant - <<radiobutton "$tempSlave.career" "gang">> Gang - <<radiobutton "$tempSlave.career" "BlackHat">> BlackHat - -<br>Method of acquiring the arcology: ''$tempSlave.rumor''. -<br><<radiobutton "$tempSlave.rumor" "wealth">> Wealth - <<radiobutton "$tempSlave.rumor" "diligence">> Diligence - <<radiobutton "$tempSlave.rumor" "force">> Force - <<radiobutton "$tempSlave.rumor" "social engineering">> Social Engineering - <<radiobutton "$tempSlave.rumor" "luck">> Luck - -<br>Preferred refreshment: <<textbox "$tempSlave.refreshment" $tempSlave.refreshment>> -<br><<radiobutton "$tempSlave.refreshment" "cigar">> Cigar - <<radiobutton "$tempSlave.refreshment" "whiskey">> Whiskey - -<br>Preferred method of consumption: <<print App.Data.player.refreshmentType[$tempSlave.refreshmentType]>> -<br> -<<for _i = 0; _i < App.Data.player.refreshmentType.length; _i++>> - <<radiobutton "$tempSlave.refreshmentType" _i>> <<print App.Data.player.refreshmentType[_i]>> -<</for>> -<br> - -<br>''Skin'': <<textbox "$tempSlave.skin" $tempSlave.skin>> -<br>''Genetic Skin'': <<textbox "$tempSlave.origSkin" $tempSlave.origSkin>> -<br>''Race'': <<textbox "$tempSlave.race" $tempSlave.race>> -<br>''Genetic Race'': <<textbox "$tempSlave.origRace" $tempSlave.origRace>> -<br>''Eye Color'': <<textbox "$tempSlave.eye.right.iris" $tempSlave.eye.right.iris>> -<br>''Genetic Eye Color'': <<textbox "$tempSlave.eye.origColor" $tempSlave.eye.origColor>> -<br>''Pupil Shape'': <<textbox "$tempSlave.eye.right.pupil" $tempSlave.eye.right.pupil>> -<br>''Sclera Color'': <<textbox "$tempSlave.eye.right.sclera" $tempSlave.eye.right.sclera>> -<br>''Hair Color'': <<textbox "$tempSlave.hColor" $tempSlave.hColor>> -<br>''Genetic Hair Color'': <<textbox "$tempSlave.origHColor" $tempSlave.origHColor>> -<br> -<br>''Boobs'': <<textbox "$tempSlave.boobs" $tempSlave.boobs>> //100: masculine chest (if title = 1) or flat chested (if title = 0)(WIP), 300+: A cup, 400+: B cup, 500+: C cup, 650+: D cup, 800+: DD cup, 1000+: F cup, 1200+: G cup, 1400+: H cup// -<br>''Boobs Implant'': <<textbox "$tempSlave.boobsImplant" $tempSlave.boobsImplant>> //do you have breast implants - size in CCs// -<br>''Lactation'': <<textbox "$tempSlave.lactation" $tempSlave.lactation>> //are you lactating - 0: no, 1: yes// -<br> -<br>''Butt Size'': <<textbox "$tempSlave.butt" $tempSlave.butt>> //2: normal, 3: big, 4: huge, 5: enormous// -<br>''Butt Implant'': <<textbox "$tempSlave.buttImplant" $tempSlave.buttImplant>> //do you have butt implants - 0: no, 1+: yes// -<br> -<br>''Vagina'': <<textbox "$tempSlave.vagina" $tempSlave.vagina>> -<br>''New Vagina'': <<textbox "$tempSlave.newVag" $tempSlave.newVag>> //0: no, 1: yes// -<br> -<br>''Dick'': <<textbox "$tempSlave.dick" $tempSlave.dick>> -<br>''Balls Size'': <<textbox "$tempSlave.balls" $tempSlave.balls>> //3: normal, 5: big, 9: huge, 14: enormous, 30: monstrous// -<br>''Balls Implant'': <<textbox "$tempSlave.ballsImplant" $tempSlave.ballsImplant>> //0: none, 1+ yes// - -<br><br> -__Age__ -<br>''Actual Age'': <<textbox "$tempSlave.actualAge" $tempSlave.actualAge>> -<br>''Physical Age'': <<textbox "$tempSlave.physicalAge" $tempSlave.physicalAge>> -<br>''Visual Age'': <<textbox "$tempSlave.visualAge" $tempSlave.visualAge>> -<br>''Ovary Age'': <<textbox "$tempSlave.ovaryAge" $tempSlave.ovaryAge>> -<br>''Age Implant'': <<textbox "$tempSlave.ageImplant" $tempSlave.ageImplant>> //0: no surgery, 1: age altering surgery// -<br>''Player Aging'': <<textbox "$playerAging" $playerAging>> //0: no aging, 1: no aging, but birthdays, 2: aging// - -<br><br> -__Pregnancy__ -<br>''Pregnancy Length'': <<textbox "$tempSlave.preg" $tempSlave.preg>> //how far along your pregnancy is (pregMood kicks in at 24+ weeks) - -2: infertile, -1: contraceptives, 0: not pregnant, 1 - 42: pregnant, 43+: giving birth// -<br>''Fetus Count'': <<textbox "$tempSlave.pregType" $tempSlave.pregType>> //how many you're having (1-8)// -<br>''PregSource'': <<textbox "$tempSlave.pregSource" $tempSlave.pregSource>> //who knocked you up - 0: unknown, -1: self-impreg, -2: citizen, -3: former Master, -4: male arc owner, -5: client, -6: Societal Elite, -7: designer baby, -9: Futanari Sister// -<br>''PregMood'': <<textbox "$tempSlave.pregMood" $tempSlave.pregMood>> //how you act when heavily pregnant - 0: no change, 1: submissive and motherly, 2: aggressive and dominant// - -<br><br> -''Skills:'' -<br> -<br>Trading: -''<<if $tempSlave.skill.trading >= 100>> - You are a master at economics and trading. -<<elseif $tempSlave.skill.trading >= 80>> - You are an expert at economics and trading. -<<elseif $tempSlave.skill.trading >= 60>> - You are skilled in economics and trading. -<<elseif $tempSlave.skill.trading >= 40>> - You know some things about economics and trading. -<<elseif $tempSlave.skill.trading >= 20>> - You are a beginner in economics. -<<elseif $tempSlave.skill.trading >= 0>> - You know only the basics of trading. -<<elseif $tempSlave.skill.trading >= -20>> - You know how to haggle a little. -<<elseif $tempSlave.skill.trading >= -40>> - You know how to shop around. -<<elseif $tempSlave.skill.trading >= -60>> - You know not to pay sticker price. -<<elseif $tempSlave.skill.trading >= -80>> - People always give you discounts, but you never save any money. -<<else>> - They said it was a bear market, so where are the bears? -<</if>>'' -<br> -<<radiobutton "$tempSlave.skill.trading" 100>> Economics master -<<radiobutton "$tempSlave.skill.trading" 90>> Economics expert -<<radiobutton "$tempSlave.skill.trading" 70>> Skilled in economics -<<radiobutton "$tempSlave.skill.trading" 50>> Amateur economist -<<radiobutton "$tempSlave.skill.trading" 30>> Economics beginner -<<radiobutton "$tempSlave.skill.trading" 0>> Basic trader -<<radiobutton "$tempSlave.skill.trading" -10>> Haggler -<<radiobutton "$tempSlave.skill.trading" -30>> Shopper -<<radiobutton "$tempSlave.skill.trading" -50>> Weak saver -<<radiobutton "$tempSlave.skill.trading" -70>> Money sieve -<<radiobutton "$tempSlave.skill.trading" -90>> What's a trading? -<br> -<br>Warfare: -''<<if $tempSlave.skill.warfare >= 100>> - You are a master of warfare. -<<elseif $tempSlave.skill.warfare >= 80>> - You are an expert at tactics and strategy. -<<elseif $tempSlave.skill.warfare >= 60>> - You are skilled in combat. -<<elseif $tempSlave.skill.warfare >= 40>> - You know some things about combat. -<<elseif $tempSlave.skill.warfare >= 20>> - You are a beginner in tactics and strategy. -<<elseif $tempSlave.skill.warfare >= 0>> - You know only the basics of fighting. -<<elseif $tempSlave.skill.warfare >= -20>> - You know how to hold a gun. -<<elseif $tempSlave.skill.warfare >= -40>> - You know how to stab with a knife. -<<elseif $tempSlave.skill.warfare >= -60>> - Go for the throat? -<<elseif $tempSlave.skill.warfare >= -80>> - Just kick them in the balls, right? -<<else>> - People like you are usually the first raped in a war. -<</if>>'' -<br> -<<radiobutton "$tempSlave.skill.warfare" 100>> Warfare master -<<radiobutton "$tempSlave.skill.warfare" 90>> Warfare expert -<<radiobutton "$tempSlave.skill.warfare" 70>> Skilled in warfare -<<radiobutton "$tempSlave.skill.warfare" 50>> Amateur combatant -<<radiobutton "$tempSlave.skill.warfare" 30>> Combat beginner -<<radiobutton "$tempSlave.skill.warfare" 0>> Basic fighter -<<radiobutton "$tempSlave.skill.warfare" -10>> Gun haver -<<radiobutton "$tempSlave.skill.warfare" -30>> Knife holder -<<radiobutton "$tempSlave.skill.warfare" -50>> Throat puncher -<<radiobutton "$tempSlave.skill.warfare" -70>> Groin kicker? -<<radiobutton "$tempSlave.skill.warfare" -90>> Most likely to be raped -<br> -<br>Slaving: -''<<if $tempSlave.skill.slaving >= 100>> - You are a master slaver. -<<elseif $tempSlave.skill.slaving >= 80>> - You are an expert at enslaving. -<<elseif $tempSlave.skill.slaving >= 60>> - You are skilled in slaving. -<<elseif $tempSlave.skill.slaving >= 40>> - You know some things about getting slaves. -<<elseif $tempSlave.skill.slaving >= 20>> - You are a beginner in slaving. -<<elseif $tempSlave.skill.slaving >= 0>> - You know only the basics of slaving. -<<elseif $tempSlave.skill.slaving >= -20>> - You know how to avoid becoming a slave. -<<elseif $tempSlave.skill.slaving >= -40>> - You know to read contracts before you sign them. -<<elseif $tempSlave.skill.slaving >= -60>> - You know to be careful. -<<elseif $tempSlave.skill.slaving >= -80>> - You know better than to trust anyone. -<<else>> - It would be easy to enslave you. -<</if>>'' -<br> -<<radiobutton "$tempSlave.skill.slaving" 100>> Master slaver -<<radiobutton "$tempSlave.skill.slaving" 90>> Expert slaver -<<radiobutton "$tempSlave.skill.slaving" 70>> Skilled in slaving -<<radiobutton "$tempSlave.skill.slaving" 50>> Amateur slaver -<<radiobutton "$tempSlave.skill.slaving" 30>> Slaving beginner -<<radiobutton "$tempSlave.skill.slaving" 0>> Basic slaver -<<radiobutton "$tempSlave.skill.slaving" -10>> Can't make me a slave -<<radiobutton "$tempSlave.skill.slaving" -30>> Can read contracts -<<radiobutton "$tempSlave.skill.slaving" -50>> Careful now -<<radiobutton "$tempSlave.skill.slaving" -70>> Don't trust that guy -<<radiobutton "$tempSlave.skill.slaving" -90>> Potential slave -<br> -<br>Engineering: -''<<if $tempSlave.skill.engineering >= 100>> - You are a master engineer. -<<elseif $tempSlave.skill.engineering >= 80>> - You are an expert at engineering. -<<elseif $tempSlave.skill.engineering >= 60>> - You are skilled in engineering. -<<elseif $tempSlave.skill.engineering >= 40>> - You know some things about engineering. -<<elseif $tempSlave.skill.engineering >= 20>> - You are a beginner in engineering. -<<elseif $tempSlave.skill.engineering >= 0>> - You know only the basics of engineering. -<<elseif $tempSlave.skill.engineering >= -20>> - You can build a gingerbread house that doesn't collapse. -<<elseif $tempSlave.skill.engineering >= -40>> - You can tie a tight knot, does that count? -<<elseif $tempSlave.skill.engineering >= -60>> - Glue is your friend; lots of it. -<<elseif $tempSlave.skill.engineering >= -80>> - You know better than to even try to build something. -<<else>> - You can cook; that's sort of like building something, right? -<</if>>'' -<br> -<<radiobutton "$tempSlave.skill.engineering" 100>> Master engineer -<<radiobutton "$tempSlave.skill.engineering" 90>> Expert engineer -<<radiobutton "$tempSlave.skill.engineering" 70>> Skilled in engineering -<<radiobutton "$tempSlave.skill.engineering" 50>> Amateur engineer -<<radiobutton "$tempSlave.skill.engineering" 30>> Engineering beginner -<<radiobutton "$tempSlave.skill.engineering" 0>> Basic engineer -<<radiobutton "$tempSlave.skill.engineering" -10>> Gingerbread house -<<radiobutton "$tempSlave.skill.engineering" -30>> Knot tyer -<<radiobutton "$tempSlave.skill.engineering" -50>> You can use glue -<<radiobutton "$tempSlave.skill.engineering" -70>> You aren't handy -<<radiobutton "$tempSlave.skill.engineering" -90>> My hovercraft is full of eels -<br> -<br>Medicine: -''<<if $tempSlave.skill.medicine >= 100>> - You are a master surgeon. -<<elseif $tempSlave.skill.medicine >= 80>> - You are an expert at medicine and surgery. -<<elseif $tempSlave.skill.medicine >= 60>> - You are skilled in surgery. -<<elseif $tempSlave.skill.medicine >= 40>> - You know some things about medicine. -<<elseif $tempSlave.skill.medicine >= 20>> - You are a beginner in medicine. -<<elseif $tempSlave.skill.medicine >= 0>> - You know the basics of treating injuries. -<<elseif $tempSlave.skill.medicine >= -20>> - You can stop a wound from getting infected. -<<elseif $tempSlave.skill.medicine >= -40>> - Gauze is your friend. Just keep wrapping. -<<elseif $tempSlave.skill.medicine >= -60>> - You know how to apply a band-aid. -<<elseif $tempSlave.skill.medicine >= -80>> - Cure-alls are wonderful. Why aren't they sold in stores, though? -<<else>> - Alcohol makes pain go away, right? -<</if>>'' -<br> -<<radiobutton "$tempSlave.skill.medicine" 100>> Master surgeon -<<radiobutton "$tempSlave.skill.medicine" 90>> Expert surgeon -<<radiobutton "$tempSlave.skill.medicine" 70>> Skilled in medicine -<<radiobutton "$tempSlave.skill.medicine" 50>> Amateur surgeon -<<radiobutton "$tempSlave.skill.medicine" 30>> Medical beginner -<<radiobutton "$tempSlave.skill.medicine" 0>> Basic medic -<<radiobutton "$tempSlave.skill.medicine" -10>> Can treat wounds -<<radiobutton "$tempSlave.skill.medicine" -30>> First-aid kit user -<<radiobutton "$tempSlave.skill.medicine" -50>> Band-aid applier -<<radiobutton "$tempSlave.skill.medicine" -70>> MEDIC! -<<radiobutton "$tempSlave.skill.medicine" -90>> Give me another beer -<br> -<br>Hacking: -''<<if $tempSlave.skill.hacking >= 100>> - You are a master of hacking. -<<elseif $tempSlave.skill.hacking >= 80>> - You are an expert at hacking. -<<elseif $tempSlave.skill.hacking >= 60>> - You are skilled in hacking. -<<elseif $tempSlave.skill.hacking >= 40>> - You know some things about hacking. -<<elseif $tempSlave.skill.hacking >= 20>> - You are a beginner in hacking. -<<elseif $tempSlave.skill.hacking >= 0>> - You know only the basics of hacking. -<<elseif $tempSlave.skill.hacking >= -20>> - You know how to click a mouse. -<<elseif $tempSlave.skill.hacking >= -40>> - Enter does something? -<<elseif $tempSlave.skill.hacking >= -60>> - Where is the "any" key? -<<elseif $tempSlave.skill.hacking >= -80>> - You can push the power button, good job. -<<else>> - This black box thingy is magical. -<</if>>'' -<br> -<<radiobutton "$tempSlave.skill.hacking" 100>> Master hacker -<<radiobutton "$tempSlave.skill.hacking" 90>> Expert hacker -<<radiobutton "$tempSlave.skill.hacking" 70>> Skilled hacker -<<radiobutton "$tempSlave.skill.hacking" 50>> Amateur hacker -<<radiobutton "$tempSlave.skill.hacking" 30>> Hacking beginner -<<radiobutton "$tempSlave.skill.hacking" 0>> Basic hacker -<<radiobutton "$tempSlave.skill.hacking" -10>> Mouse clicker -<<radiobutton "$tempSlave.skill.hacking" -30>> You can press Enter -<<radiobutton "$tempSlave.skill.hacking" -50>> Where's the "any" key? -<<radiobutton "$tempSlave.skill.hacking" -70>> Main screen turn on? -<<radiobutton "$tempSlave.skill.hacking" -90>> Ooh, cool glowy thingy! - -<br> -<br>Your mother ID: -<<textbox "$tempSlave.mother" $tempSlave.mother>> -<br>Your father ID: -<<textbox "$tempSlave.father" $tempSlave.father>> - -<br> -<br>''Sexual Energy'': <<textbox "$tempSlave.sexualEnergy" $tempSlave.sexualEnergy>> -<br>''Cum Tap'': <<textbox "$tempSlave.skill.cumTap" $tempSlave.skill.cumTap>> -<br>''Stored Cum'': <<textbox "$tempSlave.counter.storedCum" $tempSlave.counter.storedCum>> -<br>''Fertility Drugs'': <<textbox "$tempSlave.fertDrugs" $tempSlave.fertDrugs>> //0: no, 1: yes// -<br>''Forced Fertility Drugs'': <<textbox "$tempSlave.forcedFertDrugs" $tempSlave.forcedFertDrugs>> //time left in body system// -<br>''Stamina Pills'': <<textbox "$tempSlave.staminaPills" $tempSlave.staminaPills>> //0: no, 1: yes// +<<includeDOM App.UI.Player.design()>> <br><br>Custom Cheat: <br><<textarea "$customEvalCode" "">> diff --git a/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw b/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw index 2d5b64ae8023dbb82b5c4f71e859cf27500d56de..46c8957c0af46ff4ddff3f5de80ff90374072133 100644 --- a/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw +++ b/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw @@ -1,80 +1,17 @@ :: PCCheatMenuCheatDatatypeCleanup [nobr] <<set $nextButton = "Continue", $nextLink = "Manage Personal Affairs">> -/* Cancel Option Check */ -<<if $tempSlave == "unset">> - <<unset $tempSlave>> - <<goto "Manage Personal Affairs">> -<</if>> <<if $customEvalCode>> <<if $customEvalCode.charAt(0) != "(" || $nextLink == ")">> /* second condition is only there for sanityCheck */ <<set $customEvalCode = "(" + $customEvalCode + ")">> <</if>> <<if typeof eval($customEvalCode) === "function">> - <<run (eval($customEvalCode))($tempSlave)>> + <<run (eval($customEvalCode))($PC)>> <</if>> <</if>> -<<unset $customEvalCode>> - -<<set $tempSlave.preg = Number($tempSlave.preg) || 0>> -<<set $tempSlave.pregSource = Number($tempSlave.pregSource) || 0>> -<<set $tempSlave.pregType = Number($tempSlave.pregType) || 0>> -<<set WombInit($tempSlave)>> /* just to make sure */ -<<set $tempSlave.womb.length = 0>> /* simple way to delete all fetuses */ -<<set WombImpregnate($tempSlave, $tempSlave.pregType, $tempSlave.pregSource, $tempSlave.preg)>> /* recreates fetuses */ -<<if $tempSlave.preg > 0>> - <<set $tempSlave.belly = WombGetVolume($tempSlave)>> - <<set $tempSlave.pregWeek = $tempSlave.preg>> -<<else>> - <<set $tempSlave.belly = 0>> - <<set $tempSlave.pregWeek = 0>> -<</if>> +<<unset $customEvalCode, $backupSlave>> -<<if $tempSlave.boobs < 300>> - <<set $tempSlave.boobs = 100>> - <<set $tempSlave.boobsImplant = 0>> -<</if>> -<<if $tempSlave.boobsImplant > $tempSlave.boobs>> - <<set $tempSlave.boobsImplant = $tempSlave.boobs>> -<</if>> -<<if $tempSlave.butt < 2>> - <<set $tempSlave.butt = 2>> - <<set $tempSlave.buttImplant = 0>> -<</if>> -<<if $tempSlave.buttImplant > $tempSlave.butt>> - <<set $tempSlave.buttImplant = $tempSlave.butt>> -<</if>> -<<if $tempSlave.dick == 0>> - <<set $tempSlave.balls = 0>> - <<set $tempSlave.ballsImplant = 0>> - <<set $tempSlave.scrotum = 0>> - <<set $tempSlave.prostate = 0>> -<</if>> -<<if $tempSlave.ballsImplant > $tempSlave.balls>> - <<set $tempSlave.ballsImplant = $tempSlave.balls>> -<</if>> -<<if $tempSlave.vagina == -1>> - <<set $tempSlave.newVag = 0>> - <<set $tempSlave.ovaries = 0>> - <<set $tempSlave.vaginaLube = 0>> -<</if>> -<<if $tempSlave.lactation > 0 && $tempSlave.lactationDuration == 0>> - <<set $tempSlave.lactationDuration = 2>> -<<elseif $tempSlave.lactation == 0 && $tempSlave.lactationDuration > 0>> - <<set $tempSlave.lactationDuration = 0>> -<</if>> -<<set $tempSlave.eye.left.iris = $tempSlave.eye.right.iris>> -<<set $tempSlave.eye.left.pupil = $tempSlave.eye.right.pupil>> -<<set $tempSlave.eye.left.sclera = $tempSlave.eye.right.sclera>> +<<run App.Entity.Utils.PCCheatCleanup()>> You perform the dark rituals, pray to the dark gods, and sell your soul for the power to reshape your body and life at will. What a cheater! - -<<set $PC = clone($tempSlave)>> -<<run ibc.recalculate_coeff_id(-1)>> -<<run PCDatatypeCleanup()>> -<<set $upgradeMultiplierArcology = upgradeMultiplier('engineering')>> -<<set $upgradeMultiplierMedicine = upgradeMultiplier('medicine')>> -<<set $upgradeMultiplierTrade = upgradeMultiplier('trading')>> -<<set $HackingSkillMultiplier = upgradeMultiplier('hacking')>> -<<unset $tempSlave>> diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js index 4b5f082552b82abc20fbb4ac0c4e709a31eb6067..89659896077c38ff0ae7ff92c64300cd63c95a55 100644 --- a/src/data/backwardsCompatibility/datatypeCleanup.js +++ b/src/data/backwardsCompatibility/datatypeCleanup.js @@ -2479,3 +2479,60 @@ App.Update.neighborArcologyCheatDatatypeCleanup = function() { V.arcologies[_i].rival = Number(V.arcologies[_i].rival) || 0; } }; + +App.Entity.Utils.PCCheatCleanup = function() { + V.PC.preg = Number(V.PC.preg) || 0; + V.PC.pregSource = Number(V.PC.pregSource) || 0; + V.PC.pregType = Number(V.PC.pregType) || 0; + WombInit(V.PC); // just to make sure + V.PC.womb.length = 0; // simple way to delete all fetuses + WombImpregnate(V.PC, V.PC.pregType, V.PC.pregSource, V.PC.preg);// recreates fetuses + if (V.PC.preg > 0) { + V.PC.belly = WombGetVolume(V.PC); + V.PC.pregWeek = V.PC.preg; + } else { + V.PC.belly = 0; + V.PC.pregWeek = 0; + } + + if (V.PC.boobs < 300) { + V.PC.boobs = 100; + V.PC.boobsImplant = 0; + } + if (V.PC.boobsImplant > V.PC.boobs) { + V.PC.boobsImplant = V.PC.boobs; + } + if (V.PC.butt < 2) { + V.PC.butt = 2; + V.PC.buttImplant = 0; + } + if (V.PC.buttImplant > V.PC.butt) { + V.PC.buttImplant = V.PC.butt; + } + if (V.PC.dick === 0) { + V.PC.balls = 0; + V.PC.ballsImplant = 0; + V.PC.scrotum = 0; + V.PC.prostate = 0; + } + if (V.PC.ballsImplant > V.PC.balls) { + V.PC.ballsImplant = V.PC.balls; + } + if (V.PC.vagina === -1) { + V.PC.newVag = 0; + V.PC.ovaries = 0; + V.PC.vaginaLube = 0; + } + if (V.PC.lactation > 0 && V.PC.lactationDuration === 0) { + V.PC.lactationDuration = 2; + } else if (V.PC.lactation === 0 && V.PC.lactationDuration > 0) { + V.PC.lactationDuration = 0; + } + + ibc.recalculate_coeff_id(-1); + PCDatatypeCleanup(); + V.upgradeMultiplierArcology = upgradeMultiplier('engineering'); + V.upgradeMultiplierMedicine = upgradeMultiplier('medicine'); + V.upgradeMultiplierTrade = upgradeMultiplier('trading'); + V.HackingSkillMultiplier = upgradeMultiplier('hacking'); +}; diff --git a/src/events/intro/introSummary.js b/src/events/intro/introSummary.js index 8a091bfd4e8c52090a230a82d7847982b0f6778b..ca397aefc6761114a304decd765d5684140b09d0 100644 --- a/src/events/intro/introSummary.js +++ b/src/events/intro/introSummary.js @@ -45,7 +45,7 @@ App.Intro.summary = function() { { title: "Player Character", id: "player", - get node() { return playerContent(); } + get node() { return App.UI.Player.design(); } }, { title: "UI", @@ -605,434 +605,6 @@ App.Intro.summary = function() { return el; } - function playerContent() { - const el = new DocumentFragment(); - let options = new App.UI.OptionsGroup(); - let option; - let r; - let linkArray; - - if (V.freshPC === 1 || V.saveImported === 0) { - options.addOption("You are a", "title", V.PC) - .addValue("Masculine Master", 1, () => V.PC.genes = "XY").addValue("Feminine Mistress", 0, () => V.PC.genes = "XX"); - - App.Intro.PCNames(options); - - V.PC.physicalAge = V.PC.actualAge; - V.PC.visualAge = V.PC.actualAge; - options.addOption("You are", "actualAge", V.PC).showTextBox() - .addRange(25, 35, "<", "Surprisingly young").addRange(40, 50, "<", "Entering middle age") - .addRange(55, 65, "<", "Well into middle age").addRange(70, 65, ">=", "Old"); - - options.addOption(`Your birthday was <strong>${V.PC.birthWeek}</strong> weeks ago.`, "birthWeek", V.PC).showTextBox(); - - options.addOption("Player aging is", "playerAging") - .addValue("Enabled", 2).on().addValue("Celebrate birthdays, but don't age.", 1).neutral().addValue("Disabled", 0).off() - .addComment("This option cannot be changed during the game."); - - if (V.PC.customTitle) { - options.addOption("Custom title", "customTitle", V.PC).showTextBox() - .addValue("Reset to default", "", () => { delete V.PC.customTitle; delete V.PC.customTitleLisp; }); - - options.addOption("Lisped custom title", "customTitleLisp", V.PC).showTextBox() - .addComment('If using a custom title, select Master or Mistress to set the gender of your title. Make sure to replace your "s"s with "th"s to have working lisps in your lisped title.'); - } else { - options.addOption("Custom title", "customTitle", V.PC) - .addValue("Set custom title", "Master", () => V.PC.customTitleLisp = 'Mather'); - } - - App.Intro.pcAppearance(options); - - options.addOption("Your face is", "faceShape", V.PC) - .addValueList([ - ["Normal", "normal"], - ["Androgynous", "androgynous"], - ["Masculine", "masculine"], - ["Cute", "cute"], - ["Sensual", "sensual"], - ["Exotic", "exotic"] - ]); - - App.Intro.refreshmentChoice(options); - - option = options.addOption("Before you came to the Free Cities, you were a", "career", V.PC); - if (V.PC.career === "arcology owner") { - option.addValue("Arcology owner", "arcology owner"); - } else { - option.addValueList([ - ["Member of the idle wealthy", "wealth"], - ["Business leader", "capitalist"], - ["Mercenary", "mercenary"], - ["Slaver", "slaver"], - ["Engineer", "engineer"], - ["Doctor", "medicine"], - ["Hacker", "BlackHat"], - ["Minor celebrity", "celebrity"], - ["Escort", "escort"], - ["Servant", "servant"], - ["Gang leader", "gang"]] - ); - if (V.secExpEnabled > 0) { - switch (V.PC.career) { - case "capitalist": - option.addComment(`<div><span class="yellowgreen">The propaganda hub's upgrades will be cheaper.</span></div>`); - break; - case "mercenary": - option.addComment(`<div><span class="green">Easier to maintain security</span> and <span class="yellowgreen">the security HQ's upgrades will be cheaper.</span></div>`); - break; - case "slaver": - option.addComment(`<div><span class="green">Easier to maintain authority</span> and <span class="yellowgreen">the security HQ's upgrades will be cheaper.</span></div>`); - break; - case "engineer": - option.addComment(`<div><span class="yellowgreen">construction and upgrade of facilities will be cheaper.</span></div>`); - break; - case "medicine": - option.addComment(`<div><span class="yellowgreen">Drug upgrades will be cheaper.</span></div>`); - break; - case "celebrity": - option.addComment(`<div><span class="yellowgreen">The propaganda hub's upgrades will be cheaper.</span></div>`); - break; - case "escort": - option.addComment(`<div><span class="red">Harder to maintain authority.</span></div>`); - break; - case "servant": - option.addComment(`<div><span class="red">Harder to maintain authority.</span></div>`); - break; - case "gang": - option.addComment(`<div><span class="green">Easier to maintain authority</span> and <span class="yellowgreen">the security HQ's upgrades will be cheaper.</span></div>`); - break; - case "BlackHat": - option.addComment(`<div><span class="red">Harder to maintain authority.</span></div>`); - break; - default: - option.addComment(`<div><span class="red">Harder to maintain authority,</span> but <span class="yellowgreen">the propaganda hub's upgrades will be cheaper.</span></div>`); - } - } - } - - options.addOption("It is rumored that you acquired your arcology through", "rumor", V.PC) - .addValueList([ - ["Wealth", "wealth"], - ["Hard work", "diligence"], - ["Force", "force"], - ["Social engineering", "social engineering"], - ["Blind luck", "luck"] - ]); - - el.append(options.render()); - - App.UI.DOM.appendNewElement("h2", el, "Sexuality"); - options = new App.UI.OptionsGroup(); - - if (V.PC.vagina !== -1 && V.PC.dick !== 0) { - State.temporary.vaginaPenis = 2; - } else if (V.PC.vagina !== -1) { - State.temporary.vaginaPenis = 1; - } else { - State.temporary.vaginaPenis = 0; - } - - option = options.addOption("You have a", "vaginaPenis", State.temporary) - .addValue("Penis", 0, () => { - V.PC.preg = 0; - V.PC.pregType = 0; - V.PC.dick = 4; - V.PC.balls = 3; - V.PC.scrotum = 3; - V.PC.prostate = 1; - V.PC.vagina = -1; - V.PC.ovaries = 0; - }).addValue("Vagina", 1, () => { - V.PC.dick = 0; - V.PC.balls = 0; - V.PC.scrotum = 0; - V.PC.prostate = 0; - V.PC.vagina = 1; - V.PC.ovaries = 1; - }).addValue("Penis and Vagina", 2, () => { - V.PC.dick = 4; - V.PC.balls = 3; - V.PC.scrotum = 3; - V.PC.prostate = 1; - V.PC.vagina = 1; - V.PC.ovaries = 1; - }); - if (State.temporary.vaginaPenis === 0) { - option.addComment("Standard sex scenes; easiest reputation maintenance."); - } else if (State.temporary.vaginaPenis === 1) { - option.addComment("Sex scene variations; most difficult reputation maintenance."); - } else { - option.addComment("Sex scene variations; more difficult reputation maintenance; some unique opportunities, especially with breasts."); - } - - if (V.PC.vagina !== -1) { - option = options.addOption("You are", "preg", V.PC) - .addValue("Taking contraceptives", -1, () => { V.PC.pregType = 0; V.PC.labor = 0; }) - .addValue("Not taking contraceptives", 0, () => { V.PC.pregType = 0; V.PC.labor = 0; }) - .addRange(16, 37, "<=", "Pregnant").addCallback(() => { V.PC.pregType = 1; V.PC.labor = 0; }) - .addRange(40, 42, "<=", "Ready to drop").addCallback(() => { V.PC.pregType = 1; V.PC.labor = 0; }) - .addRange(43, 42, ">", "Ready to drop with octuplets").addCallback(() => { V.PC.pregType = 8; V.PC.labor = 1; }); - if (V.PC.preg === -1) { - option.addComment("You can't get pregnant, however there will be a slight increase to living expenses."); - } - - if (V.PC.counter.birthsTotal > 0) { - options.addOption("").addComment(`You have given birth to <strong>${V.PC.counter.birthsTotal}</strong> babies.`); - } - - option = options.addOption("Hormone effects", "pregMood", V.PC) - .addValueList([ - ["None", 0], - ["Caring and motherly", 1], - ["Aggressive and domineering", 2] - ]); - if (V.PC.pregMood === 1) { - option.addComment("Sex scene alterations; slaves will trust you more, but may try to take advantage of your mercy."); - } else if (V.PC.pregMood === 2) { - option.addComment("Sex scene alterations; slaves will fear you more, but will become more submissive to you."); - } - } - - if (V.PC.title === 1 && V.PC.boobs <= 100) { - option = options.addOption("Your chest is", "boobs", V.PC).addValue("Manly", 100, () => V.PC.boobsImplant = 0); - } else { - option = options.addOption("Your breasts are", "boobs", V.PC).addValue("Flat", 100, () => V.PC.boobsImplant = 0); - } - option.addValueList([ - ["C-cups", 500], - ["DD-cups", 900], - ["F-cups", 1100], - ["G-cups", 1300] - ]); - - if (V.PC.boobs >= 500) { - options.addOption("Your breasts are", "boobsImplant", V.PC) - .addValueList([ - ["All natural", 0], - ["Fake", 400] - ]); - } - - el.append(options.render()); - } else { - r = []; - r.push(`You are a`); - if (V.PC.title === 1) { - r.push(`masculine <strong>Master</strong>`); - } else { - r.push(`feminine ''Mistress'`); - } - r.push(`and everyone that matters calls you ${PlayerName()}.`); - - r.push(`You are ${V.PC.actualAge} years old which is`); - if (V.PC.actualAge >= 65) { - r.push(`<strong>old</strong>.`); - } else if (V.PC.actualAge >= 50) { - r.push(`<strong>well into middle age</strong>.`); - } else if (V.PC.actualAge >= 35) { - r.push(`<strong>entering middle age</strong>.`); - } else { - r.push(`<strong>surprisingly young</strong>.`); - } - App.Events.addNode(el, r, "p"); - - r = []; - - r.push(`You are a ${V.PC.nationality} ${V.PC.race} with`); - if (V.PC.markings === "heavily freckled") { - r.push(`heavily freckled`); - } else if (V.PC.markings === "freckles") { - r.push(`lightly freckled`); - } else { - r.push(`clear`); - } - r.push(`${V.PC.skin} skin, ${V.PC.hColor} hair and ${App.Desc.eyesColor(V.PC)}. You have a ${V.PC.faceShape} face.`); - App.Events.addNode(el, r, "p"); - options = new App.UI.OptionsGroup(); - options.addOption("Player aging is", "playerAging") - .addValue("Enabled", 2).on().addValue("Celebrate birthdays, but don't age.", 1).neutral().addValue("Disabled", 0).off() - .addComment("This option cannot be changed during the game."); - - if (V.PC.customTitle) { - options.addOption("Custom title", "customTitle", V.PC).showTextBox() - .addValue("Reset to default", "", () => { delete V.PC.customTitle; delete V.PC.customTitleLisp; }); - - options.addOption("Lisped custom title", "customTitleLisp", V.PC).showTextBox() - .addComment('If using a custom title, select Master or Mistress to set the gender of your title. Make sure to replace your "s"s with "th"s to have working lisps in your lisped title.'); - } else { - options.addOption("Custom title", "customTitle", V.PC) - .addValue("Set custom title", "Master", () => V.PC.customTitleLisp = 'Mather'); - } - - App.Intro.refreshmentChoice(options); - - el.append(options.render()); - - r = []; - switch (V.PC.career) { - case "wealth": - r.push(`Prior to being an arcology owner, you were a member of the idle wealthy.`); - break; - case "capitalist": - r.push(`Prior to being an arcology owner, you were a business leader.`); - break; - case "mercenary": - r.push(`Prior to being an arcology owner, you were a mercenary.`); - break; - case "slaver": - r.push(`Prior to being an arcology owner, you were a slaver.`); - break; - case "engineer": - r.push(`Prior to being an arcology owner, you were an engineer.`); - break; - case "medicine": - r.push(`Prior to being an arcology owner, you were a surgeon.`); - break; - case "celebrity": - r.push(`Prior to being an arcology owner, you were a minor celebrity.`); - break; - case "BlackHat": - r.push(`Prior to being an arcology owner, you specialized in cracking databases and making mockeries of cyber security.`); - break; - case "arcology owner": - r.push(`Being an arcology owner defines your life now.`); - break; - case "escort": - r.push(`Prior to being an arcology owner, you knew how to survive off your looks and body.`); - break; - case "servant": - r.push(`Prior to being an arcology owner, you served a well-off`); - if (V.PC.counter.birthMaster >= 2) { - r.push(`master and bore him several children.`); - } else { - r.push(`master.`); - } - break; - case "gang": - r.push(`Prior to being an arcology owner, you were the leader of a ruthless gang.`); - break; - } - - r.push(`Word in the arcology is you acquired it through`); - switch (V.PC.rumor) { - case "wealth": - r.push(`a rather ridiculous amount of money.`); - break; - case "diligence": - r.push(`sheer effort.`); - break; - case "force": - r.push(`brutal force.`); - break; - case "social engineering": - r.push(`clever social manipulation.`); - break; - case "luck": - r.push(`blind luck.`); - break; - } - App.Events.addNode(el, r, "p"); - - r = []; - r.push(`You have a`); - if (V.PC.vagina !== -1 && V.PC.dick !== 0) { - r.push(`penis and vagina`); - } else if (V.PC.dick !== 0) { - r.push(`penis.`); - } else if (V.PC.vagina !== -1) { - r.push(`vagina`); - } - if (V.PC.vagina !== -1) { - r.push(`and are`); - if (V.PC.pregWeek < 0) { - r.push(`recovering from your last pregnancy.`); - } else if (V.PC.preg === -2) { - r.push(`infertile.`); - } else if (V.PC.preg === -1) { - r.push(`taking contraceptives.`); - } else if (V.PC.preg === 0) { - r.push(`fertile.`); - } else if (V.PC.preg > 37) { - r.push(`extremely pregnant.`); - } else if (V.PC.preg > 0) { - r.push(`pregnant.`); - } - - linkArray = []; - if (V.PC.preg > 20 || V.PC.counter.birthsTotal > 0) { - if (V.PC.pregMood === 1) { - r.push(`You tend to be caring and motherly when you're pregnant.`); - linkArray.push(noChange(), aggressive()); - } else if (V.PC.pregMood === 0) { - r.push(`Pregnancy doesn't really affect your mood.`); - linkArray.push(motherly(), aggressive()); - } else { - r.push(`You tend to be very demanding and aggressive when you're pregnant.`); - linkArray.push(noChange(), motherly()); - } - } else { - if (V.PC.pregMood === 1) { - r.push(`You tend to be caring and motherly when you're hormonal.`); - linkArray.push(noChange(), aggressive()); - } else if (V.PC.pregMood === 0) { - r.push(`Your mood isn't tied to your hormones.`); - linkArray.push(motherly(), aggressive()); - } else { - r.push(`You tend to be very demanding and aggressive when you're hormonal.`); - linkArray.push(noChange(), motherly()); - } - } - - r.push(App.UI.DOM.generateLinksStrip(linkArray)); - if (V.PC.counter.birthsTotal > 0) { - r.push(`You have given birth to ${V.PC.counter.birthsTotal} babies.`); - } - } - - if (V.PC.boobs >= 300) { - r.push(`You have a`); - if (V.PC.title > 0) { - r.push(`masculine`); - } else { - r.push(`feminine`); - } - r.push(`body with`); - if (V.PC.boobs >= 1400) { - r.push(`giant${(V.PC.boobsImplant !== 0) ? `, fake` : ``} cow tits.`); - } else if (V.PC.boobs >= 1200) { - r.push(`huge`); - if (V.PC.boobsImplant !== 0) { - r.push(`fake`); - } - r.push(`breasts.`); - } else if (V.PC.boobs >= 1000) { - r.push(`big`); - if (V.PC.boobsImplant !== 0) { - r.push(`fake`); - } - r.push(`breasts.`); - } else if (V.PC.boobs >= 800) { - r.push(`noticeable breasts.`); - } else if (V.PC.boobs >= 650) { - r.push(`unremarkable breasts.`); - } else if (V.PC.boobs >= 500) { - r.push(`average breasts.`); - } else { - r.push(`small breasts.`); - } - } else { - if (V.PC.title > 0) { - r.push(`You have a manly chest.`); - } else { - r.push(`You are flat as a board.`); - } - } - App.Events.addNode(el, r, "p"); - } - - return el; - } - function interfaceContent() { const el = new DocumentFragment(); let options = new App.UI.OptionsGroup(); @@ -1060,31 +632,4 @@ App.Intro.summary = function() { el.append(App.UI.artOptions()); return el; } - - function noChange() { - return App.UI.DOM.link( - "Change to no change", - () => { V.PC.pregMood = 0; }, - [], - "Intro Summary" - ); - } - - function motherly() { - return App.UI.DOM.link( - "Change to motherly", - () => { V.PC.pregMood = 1; }, - [], - "Intro Summary" - ); - } - - function aggressive() { - return App.UI.DOM.link( - "Change to aggressive", - () => { V.PC.pregMood = 2; }, - [], - "Intro Summary" - ); - } }; diff --git a/src/events/intro/pcAppearance.js b/src/events/intro/pcAppearance.js index 74f7d86f2799b8caabb11ee1700a72063f46982a..9468771f11d8d28f54d940a53e64aed7166bc039 100644 --- a/src/events/intro/pcAppearance.js +++ b/src/events/intro/pcAppearance.js @@ -1,4 +1,6 @@ -App.Intro.pcAppearance = function(options) { +App.UI.Player = {}; + +App.UI.Player.appearance = function(options) { options.addOption("Your nationality is", "nationality", V.PC).showTextBox() .addValueList(Object.keys(App.Data.SlaveSummary.short.nationality)) .addComment("For best result capitalize it."); @@ -6,24 +8,39 @@ App.Intro.pcAppearance = function(options) { options.addOption("Your race is", "race", V.PC).showTextBox() .addValueList(Array.from(setup.filterRaces, (k => [k, k.toLowerCase()]))); + if (V.cheatMode) { + options.addOption("Your race is", "origRace", V.PC).showTextBox() + .addValueList(Array.from(setup.filterRaces, (k => [k, k.toLowerCase()]))); + } + options.addOption("Your skin tone is", "skin", V.PC).showTextBox() .addValueList(makeAList(setup.naturalSkins)); + if (V.cheatMode) { + options.addOption("Your genetic skin tone is", "origSkin", V.PC).showTextBox() + .addValueList(makeAList(setup.naturalSkins)); + } + options.addOption("Your body", "markings", V.PC) .addValueList([["Is clear of blemishes", "none"], ["Has light freckling", "freckles"], ["Has heavy freckling", "heavily freckled"]]); - options.addOption("Your eyes are", "origColor", V.PC.eye).showTextBox() + options.addOption("Your genetic eye color is", "origColor", V.PC.eye).showTextBox() .addValueList(makeAList(App.Medicine.Modification.eyeColor.map(color => color.value))); - options.addOption("Your hair is", "hColor", V.PC).showTextBox() - .addValueList(makeAList(App.Medicine.Modification.Color.Primary.map(color => color.value))); + if (V.cheatMode) { + options.addOption("Your original hair is", "origHColor", V.PC).showTextBox() + .addValueList(makeAList(App.Medicine.Modification.Color.Primary.map(color => color.value))); + } else { + options.addOption("Your hair is", "hColor", V.PC).showTextBox() + .addValueList(makeAList(App.Medicine.Modification.Color.Primary.map(color => color.value))); + } function makeAList(iterable) { return Array.from(iterable, (k => [capFirstChar(k), k])); } }; -App.Intro.refreshmentChoice = function(options) { +App.UI.Player.refreshmentChoice = function(options) { options.addOption("Your preferred refreshment is", "refreshment", V.PC).showTextBox() .addValue("Cigars", "cigar", () => { V.PC.refreshmentType = 0; }) .addValue("Whiskey", "whiskey", () => { V.PC.refreshmentType = 1; }); @@ -42,18 +59,820 @@ App.Intro.refreshmentChoice = function(options) { option.addComment(comment); }; -App.Intro.PCNames = function(options) { - let option; +App.UI.Player.names = function(options) { options.addOption(`Everyone calls you <b>${PlayerName()}.</b>`); options.addOption("Your given name is", "slaveName", V.PC).showTextBox(); + if (V.cheatMode) { + options.addOption("Birth Name", "birthName", V.PC).showTextBox(); + } + if (V.PC.slaveSurname === 0) { - option = options.addOption("And no surname", "slaveSurname", V.PC) + options.addOption("And no surname", "slaveSurname", V.PC) .addValue("Add a surname", "Anon") .addComment("Surnames cannot be changed during the game outside of special circumstances."); } else { - option = options.addOption("And your surname is", "slaveSurname", V.PC).showTextBox() + options.addOption("And your surname is", "slaveSurname", V.PC).showTextBox() .addValue("Go by a single name", 0) .addComment("Surnames cannot be changed during the game outside of special circumstances."); + if (V.cheatMode) { + options.addOption("Birth Surname", "birthSurname", V.PC).showTextBox(); + } + } +}; + +App.UI.Player.design = function() { + const el = new DocumentFragment(); + let options = new App.UI.OptionsGroup(); + let option; + let r; + let linkArray; + const allowEdits = (V.freshPC === 1 || V.saveImported === 0 || V.cheatMode); + + // Title / age + if (allowEdits) { + options.addOption("You are a", "title", V.PC) + .addValue("Masculine Master", 1, () => V.PC.genes = "XY").addValue("Feminine Mistress", 0, () => V.PC.genes = "XX"); + + App.UI.Player.names(options); + + V.PC.physicalAge = V.PC.actualAge; + V.PC.visualAge = V.PC.actualAge; + if (V.cheatMode) { + options.addOption("Actual Age", "actualAge", V.PC).showTextBox(); + options.addOption("Physical Age", "physicalAge", V.PC).showTextBox(); + options.addOption("Visual Age", "visualAge", V.PC).showTextBox(); + options.addOption("Ovary Age", "ovaryAge", V.PC).showTextBox(); + options.addOption("Age Implant", "ageImplant", V.PC).addValue("Age altering surgery", 1).on().addValue("No surgery", 0).off(); + } else { + options.addOption("You are", "actualAge", V.PC).showTextBox() + .addRange(25, 35, "<", "Surprisingly young").addRange(40, 50, "<", "Entering middle age") + .addRange(55, 65, "<", "Well into middle age").addRange(70, 65, ">=", "Old"); + + options.addOption(`Your birthday was <strong>${V.PC.birthWeek}</strong> weeks ago.`, "birthWeek", V.PC).showTextBox(); + } + } else { + r = []; + r.push(`You are a`); + if (V.PC.title === 1) { + r.push(`masculine <strong>Master</strong>`); + } else { + r.push(`feminine ''Mistress'`); + } + r.push(`and everyone that matters calls you ${PlayerName()}.`); + + r.push(`You are ${V.PC.actualAge} years old which is`); + if (V.PC.actualAge >= 65) { + r.push(`<strong>old</strong>.`); + } else if (V.PC.actualAge >= 50) { + r.push(`<strong>well into middle age</strong>.`); + } else if (V.PC.actualAge >= 35) { + r.push(`<strong>entering middle age</strong>.`); + } else { + r.push(`<strong>surprisingly young</strong>.`); + } + App.Events.addNode(el, r, "p"); + } + + option = options.addOption("Player aging is", "playerAging") + .addValue("Enabled", 2).on().addValue("Celebrate birthdays, but don't age.", 1).neutral().addValue("Disabled", 0).off(); + if (!V.cheatMode) { + option.addComment("This option cannot be changed during the game."); + } + + if (V.PC.customTitle) { + options.addOption("Custom title", "customTitle", V.PC).showTextBox() + .addValue("Reset to default", "", () => { delete V.PC.customTitle; delete V.PC.customTitleLisp; }); + + options.addOption("Lisped custom title", "customTitleLisp", V.PC).showTextBox() + .addComment('If using a custom title, select Master or Mistress to set the gender of your title. Make sure to replace your "s"s with "th"s to have working lisps in your lisped title.'); + } else { + options.addOption("Custom title", "customTitle", V.PC) + .addValue("Set custom title", "Master", () => V.PC.customTitleLisp = 'Mather'); + } + + // Appearance + if (allowEdits) { + App.UI.Player.appearance(options); + + options.addOption("Your face is", "faceShape", V.PC) + .addValueList([ + ["Normal", "normal"], + ["Androgynous", "androgynous"], + ["Masculine", "masculine"], + ["Cute", "cute"], + ["Sensual", "sensual"], + ["Exotic", "exotic"] + ]); + } else { + r = []; + + r.push(`You are a ${V.PC.nationality} ${V.PC.race} with`); + if (V.PC.markings === "heavily freckled") { + r.push(`heavily freckled`); + } else if (V.PC.markings === "freckles") { + r.push(`lightly freckled`); + } else { + r.push(`clear`); + } + r.push(`${V.PC.skin} skin, ${V.PC.hColor} hair and ${App.Desc.eyesColor(V.PC)}. You have a ${V.PC.faceShape} face.`); + App.Events.addNode(el, r, "p"); + } + + // Refresh + App.UI.Player.refreshmentChoice(options); + + // History + if (allowEdits) { + option = options.addOption("Before you came to the Free Cities, you were a", "career", V.PC); + if (V.PC.career === "arcology owner") { + option.addValue("Arcology owner", "arcology owner"); + } else { + option.addValueList([ + ["Member of the idle wealthy", "wealth"], + ["Business leader", "capitalist"], + ["Mercenary", "mercenary"], + ["Slaver", "slaver"], + ["Engineer", "engineer"], + ["Doctor", "medicine"], + ["Hacker", "BlackHat"], + ["Minor celebrity", "celebrity"], + ["Escort", "escort"], + ["Servant", "servant"], + ["Gang leader", "gang"]] + ); + if (V.secExpEnabled > 0) { + switch (V.PC.career) { + case "capitalist": + option.addComment(`<div><span class="yellowgreen">The propaganda hub's upgrades will be cheaper.</span></div>`); + break; + case "mercenary": + option.addComment(`<div><span class="green">Easier to maintain security</span> and <span class="yellowgreen">the security HQ's upgrades will be cheaper.</span></div>`); + break; + case "slaver": + option.addComment(`<div><span class="green">Easier to maintain authority</span> and <span class="yellowgreen">the security HQ's upgrades will be cheaper.</span></div>`); + break; + case "engineer": + option.addComment(`<div><span class="yellowgreen">construction and upgrade of facilities will be cheaper.</span></div>`); + break; + case "medicine": + option.addComment(`<div><span class="yellowgreen">Drug upgrades will be cheaper.</span></div>`); + break; + case "celebrity": + option.addComment(`<div><span class="yellowgreen">The propaganda hub's upgrades will be cheaper.</span></div>`); + break; + case "escort": + option.addComment(`<div><span class="red">Harder to maintain authority.</span></div>`); + break; + case "servant": + option.addComment(`<div><span class="red">Harder to maintain authority.</span></div>`); + break; + case "gang": + option.addComment(`<div><span class="green">Easier to maintain authority</span> and <span class="yellowgreen">the security HQ's upgrades will be cheaper.</span></div>`); + break; + case "BlackHat": + option.addComment(`<div><span class="red">Harder to maintain authority.</span></div>`); + break; + default: + option.addComment(`<div><span class="red">Harder to maintain authority,</span> but <span class="yellowgreen">the propaganda hub's upgrades will be cheaper.</span></div>`); + } + } + } + + options.addOption("It is rumored that you acquired your arcology through", "rumor", V.PC) + .addValueList([ + ["Wealth", "wealth"], + ["Hard work", "diligence"], + ["Force", "force"], + ["Social engineering", "social engineering"], + ["Blind luck", "luck"] + ]); + + el.append(options.render()); + } else { + r = []; + switch (V.PC.career) { + case "wealth": + r.push(`Prior to being an arcology owner, you were a member of the idle wealthy.`); + break; + case "capitalist": + r.push(`Prior to being an arcology owner, you were a business leader.`); + break; + case "mercenary": + r.push(`Prior to being an arcology owner, you were a mercenary.`); + break; + case "slaver": + r.push(`Prior to being an arcology owner, you were a slaver.`); + break; + case "engineer": + r.push(`Prior to being an arcology owner, you were an engineer.`); + break; + case "medicine": + r.push(`Prior to being an arcology owner, you were a surgeon.`); + break; + case "celebrity": + r.push(`Prior to being an arcology owner, you were a minor celebrity.`); + break; + case "BlackHat": + r.push(`Prior to being an arcology owner, you specialized in cracking databases and making mockeries of cyber security.`); + break; + case "arcology owner": + r.push(`Being an arcology owner defines your life now.`); + break; + case "escort": + r.push(`Prior to being an arcology owner, you knew how to survive off your looks and body.`); + break; + case "servant": + r.push(`Prior to being an arcology owner, you served a well-off`); + if (V.PC.counter.birthMaster >= 2) { + r.push(`master and bore him several children.`); + } else { + r.push(`master.`); + } + break; + case "gang": + r.push(`Prior to being an arcology owner, you were the leader of a ruthless gang.`); + break; + } + + r.push(`Word in the arcology is you acquired it through`); + switch (V.PC.rumor) { + case "wealth": + r.push(`a rather ridiculous amount of money.`); + break; + case "diligence": + r.push(`sheer effort.`); + break; + case "force": + r.push(`brutal force.`); + break; + case "social engineering": + r.push(`clever social manipulation.`); + break; + case "luck": + r.push(`blind luck.`); + break; + } + App.Events.addNode(el, r, "p"); + } + + // Sexuality + App.UI.DOM.appendNewElement("h2", el, "Sexuality"); + + if (allowEdits) { + options = new App.UI.OptionsGroup(); + + if (V.PC.vagina !== -1 && V.PC.dick !== 0) { + State.temporary.vaginaPenis = 2; + } else if (V.PC.vagina !== -1) { + State.temporary.vaginaPenis = 1; + } else { + State.temporary.vaginaPenis = 0; + } + + option = options.addOption("You have a", "vaginaPenis", State.temporary) + .addValue("Penis", 0, () => { + V.PC.preg = 0; + V.PC.pregType = 0; + V.PC.dick = 4; + V.PC.balls = 3; + V.PC.scrotum = 3; + V.PC.prostate = 1; + V.PC.vagina = -1; + V.PC.ovaries = 0; + }).addValue("Vagina", 1, () => { + V.PC.dick = 0; + V.PC.balls = 0; + V.PC.scrotum = 0; + V.PC.prostate = 0; + V.PC.vagina = 1; + V.PC.ovaries = 1; + }).addValue("Penis and Vagina", 2, () => { + V.PC.dick = 4; + V.PC.balls = 3; + V.PC.scrotum = 3; + V.PC.prostate = 1; + V.PC.vagina = 1; + V.PC.ovaries = 1; + }); + if (State.temporary.vaginaPenis === 0) { + option.addComment("Standard sex scenes; easiest reputation maintenance."); + } else if (State.temporary.vaginaPenis === 1) { + option.addComment("Sex scene variations; most difficult reputation maintenance."); + } else { + option.addComment("Sex scene variations; more difficult reputation maintenance; some unique opportunities, especially with breasts."); + } + + if (V.cheatMode) { + options.addOption("Vagina", "vagina", V.PC).showTextBox(); + options.addOption("New vagina", "newVag", V.PC).showTextBox(); + options.addOption("Dick", "dick", V.PC).showTextBox(); + options.addOption("Balls", "balls", V.PC).addValueList([ + ["Normal", 3], + ["Big", 5], + ["Huge", 9], + ["Monstrous", 30] + ]) + .showTextBox(); + options.addOption("Balls implant", "ballsImplant", V.PC).showTextBox(); + } + + if (V.PC.vagina !== -1) { + option = options.addOption("You are", "preg", V.PC) + .addValue("Taking contraceptives", -1, () => { V.PC.pregType = 0; V.PC.labor = 0; }) + .addValue("Not taking contraceptives", 0, () => { V.PC.pregType = 0; V.PC.labor = 0; }) + .addRange(16, 37, "<=", "Pregnant").addCallback(() => { V.PC.pregType = 1; V.PC.labor = 0; }) + .addRange(40, 42, "<=", "Ready to drop").addCallback(() => { V.PC.pregType = 1; V.PC.labor = 0; }) + .addRange(43, 42, ">", "Ready to drop with octuplets").addCallback(() => { V.PC.pregType = 8; V.PC.labor = 1; }); + if (V.cheatMode) { + option.showTextBox(); + option.addComment(`how far along your pregnancy is (pregMood kicks in at 24+ weeks) - -2: infertile, -1: contraceptives, 0: not pregnant, 1 - 42: pregnant, 43+: giving birth`); + } + if (V.PC.preg === -1) { + option.addComment("You can't get pregnant, however there will be a slight increase to living expenses."); + } + + if (V.PC.counter.birthsTotal > 0) { + options.addOption("").addComment(`You have given birth to <strong>${V.PC.counter.birthsTotal}</strong> babies.`); + } + + option = options.addOption("Hormone effects", "pregMood", V.PC) + .addValueList([ + ["None", 0], + ["Caring and motherly", 1], + ["Aggressive and domineering", 2] + ]); + if (V.PC.pregMood === 1) { + option.addComment("Sex scene alterations; slaves will trust you more, but may try to take advantage of your mercy."); + } else if (V.PC.pregMood === 2) { + option.addComment("Sex scene alterations; slaves will fear you more, but will become more submissive to you."); + } + + if (V.cheatMode) { + option = options.addOption("Fetus Count", "pregType", V.PC).showTextBox().addComment(`how many you're having (1-8)`); + option = options.addOption("Pregnancy Source", "pregSource", V.PC) + .addValueList([ + ["Unknown", 0], + ["Self-impregnation", -1], + ["Citizen", -2], + ["Former Master", -3], + ["Male arc owner", -4], + ["Client", -5], + ["Societal Elite", -6], + ["Designer baby", -7], + ["Futanari Sister", -9], + ]) + .showTextBox(); + } + } + + if (V.PC.title === 1 && V.PC.boobs <= 100) { + option = options.addOption("Your chest is", "boobs", V.PC).addValue("Manly", 100, () => V.PC.boobsImplant = 0); + } else { + option = options.addOption("Your breasts are", "boobs", V.PC).addValue("Flat", 100, () => V.PC.boobsImplant = 0); + } + option.addValueList([ + ["C-cups", 500], + ["DD-cups", 900], + ["F-cups", 1100], + ["G-cups", 1300] + ]); + option.showTextBox("CCs"); + + if (V.PC.boobs >= 500) { + options.addOption("Your breasts are", "boobsImplant", V.PC) + .addValueList([ + ["All natural", 0], + ["Fake", 400] + ]) + .showTextBox("CCs"); + } + + if (V.cheatMode) { + if (V.PC.boobs >= 500) { + options.addOption("Your breasts are", "lactation", V.PC) + .addValueList([ + ["Lactating", 1], + ["Not Lactating", 0] + ]); + } + } + + options.addOption("Your butt size", "butt", V.PC) + .addValueList([ + ["Normal", 2], + ["Big", 3], + ["Huge", 4], + ["Enormous", 5], + ]) + .showTextBox(); + + options.addOption("Your butt is", "buttImplant", V.PC) + .addValueList([ + ["All natural", 0], + ["Fake", 1] + ]) + .showTextBox("CCs"); + + + options.addOption("You are genetically", "genes", V.PC) + .addValue("XY").addValue("XX"); + + el.append(options.render()); + } else { + r = []; + r.push(`You have a`); + if (V.PC.vagina !== -1 && V.PC.dick !== 0) { + r.push(`penis and vagina`); + } else if (V.PC.dick !== 0) { + r.push(`penis.`); + } else if (V.PC.vagina !== -1) { + r.push(`vagina`); + } + if (V.PC.vagina !== -1) { + r.push(`and are`); + if (V.PC.pregWeek < 0) { + r.push(`recovering from your last pregnancy.`); + } else if (V.PC.preg === -2) { + r.push(`infertile.`); + } else if (V.PC.preg === -1) { + r.push(`taking contraceptives.`); + } else if (V.PC.preg === 0) { + r.push(`fertile.`); + } else if (V.PC.preg > 37) { + r.push(`extremely pregnant.`); + } else if (V.PC.preg > 0) { + r.push(`pregnant.`); + } + + linkArray = []; + if (V.PC.preg > 20 || V.PC.counter.birthsTotal > 0) { + if (V.PC.pregMood === 1) { + r.push(`You tend to be caring and motherly when you're pregnant.`); + linkArray.push(noChange(), aggressive()); + } else if (V.PC.pregMood === 0) { + r.push(`Pregnancy doesn't really affect your mood.`); + linkArray.push(motherly(), aggressive()); + } else { + r.push(`You tend to be very demanding and aggressive when you're pregnant.`); + linkArray.push(noChange(), motherly()); + } + } else { + if (V.PC.pregMood === 1) { + r.push(`You tend to be caring and motherly when you're hormonal.`); + linkArray.push(noChange(), aggressive()); + } else if (V.PC.pregMood === 0) { + r.push(`Your mood isn't tied to your hormones.`); + linkArray.push(motherly(), aggressive()); + } else { + r.push(`You tend to be very demanding and aggressive when you're hormonal.`); + linkArray.push(noChange(), motherly()); + } + } + + r.push(App.UI.DOM.generateLinksStrip(linkArray)); + if (V.PC.counter.birthsTotal > 0) { + r.push(`You have given birth to ${V.PC.counter.birthsTotal} babies.`); + } + } + + if (V.PC.boobs >= 300) { + r.push(`You have a`); + if (V.PC.title > 0) { + r.push(`masculine`); + } else { + r.push(`feminine`); + } + r.push(`body with`); + if (V.PC.boobs >= 1400) { + r.push(`giant${(V.PC.boobsImplant !== 0) ? `, fake` : ``} cow tits.`); + } else if (V.PC.boobs >= 1200) { + r.push(`huge`); + if (V.PC.boobsImplant !== 0) { + r.push(`fake`); + } + r.push(`breasts.`); + } else if (V.PC.boobs >= 1000) { + r.push(`big`); + if (V.PC.boobsImplant !== 0) { + r.push(`fake`); + } + r.push(`breasts.`); + } else if (V.PC.boobs >= 800) { + r.push(`noticeable breasts.`); + } else if (V.PC.boobs >= 650) { + r.push(`unremarkable breasts.`); + } else if (V.PC.boobs >= 500) { + r.push(`average breasts.`); + } else { + r.push(`small breasts.`); + } + } else { + if (V.PC.title > 0) { + r.push(`You have a manly chest.`); + } else { + r.push(`You are flat as a board.`); + } + } + App.Events.addNode(el, r, "p"); + } + + + if (V.cheatMode) { + // Skills + App.UI.DOM.appendNewElement("h2", el, "Skills"); + options = new App.UI.OptionsGroup(); + options.addOption(`Trading: ${tradingDescription()}`, "trading", V.PC.skill).addValueList([ + ["Economics master", 100], + ["Economics expert", 90], + ["Skilled in economics", 70], + ["Amateur economist", 50], + ["Economics beginner", 30], + ["Basic trader", 0], + ["Haggler", -10], + ["Shopper", -30], + ["Weak saver", -50], + ["Money sieve", -70], + ["What's a trading?", -90], + ]).showTextBox(); + + options.addOption(`Warfare: ${warfareDescription()}`, "warfare", V.PC.skill).addValueList([ + ["Warfare master", 100], + ["Warfare expert", 90], + ["Skilled in warfare", 70], + ["Amateur combatant", 50], + ["Combat beginner", 30], + ["Basic fighter", 0], + ["Gun haver", -10], + ["Knife holder", -30], + ["Throat puncher", -50], + ["Groin kicker?", -70], + ["Most likely to be raped", -90] + ]).showTextBox(); + + options.addOption(`Slaving: ${slavingDescription()}`, "slaving", V.PC.skill).addValueList([ + ["Master slaver", 100], + ["Expert slaver", 90], + ["Skilled in slaving", 70], + ["Amateur slaver", 50], + ["Slaving beginner", 30], + ["Basic slaver", 0], + ["Can't make me a slave", -10], + ["Can read contracts", -30], + ["Careful now", -50], + ["Don't trust that guy", -70], + ["Potential slave", -90] + ]).showTextBox(); + + options.addOption(`Engineering: ${engineeringDescription()}`, "engineering", V.PC.skill).addValueList([ + ["Master engineer", 100], + ["Expert engineer", 90], + ["Skilled in engineering", 70], + ["Amateur engineer", 50], + ["Engineering beginner", 30], + ["Basic engineer", 0], + ["Gingerbread house", -10], + ["Knot tyer", -30], + ["You can use glue", -50], + ["You aren't handy", -70], + ["My hovercraft is full of eels", -90] + ]).showTextBox(); + + options.addOption(`Medicine: ${medicineDescription()}`, "medicine", V.PC.skill).addValueList([ + ["Master surgeon", 100], + ["Expert surgeon", 90], + ["Skilled in medicine", 70], + ["Amateur surgeon", 50], + ["Medical beginner", 30], + ["Basic medic", 0], + ["Can treat wounds", -10], + ["First-aid kit user", -30], + ["Band-aid applier", -50], + ["MEDIC!", -70], + ["Give me another beer", -90] + ]).showTextBox(); + + options.addOption(`Hacking: ${hackingDescription()}`, "hacking", V.PC.skill).addValueList([ + ["Master hacker", 100], + ["Expert hacker", 90], + ["Skilled hacker", 70], + ["Amateur hacker", 50], + ["Hacking beginner", 30], + ["Basic hacker", 0], + ["Mouse clicker", -10], + ["You can press Enter", -30], + [`Where's the "any" key?`, -50], + ["Main screen turn on?", -70], + ["Ooh, cool glowy thingy!", -90] + ]).showTextBox(); + + el.append(options.render()); + + // Family + App.UI.DOM.appendNewElement("h2", el, "Family"); + options = new App.UI.OptionsGroup(); + options.addOption(`Your mother ID`, "mother", V.PC).showTextBox(); + options.addOption(`Your father ID`, "father", V.PC).showTextBox(); + el.append(options.render()); + + // Potential + App.UI.DOM.appendNewElement("h2", el, "Misc"); + options = new App.UI.OptionsGroup(); + options.addOption(`Sexual Energy`, "sexualEnergy", V.PC).showTextBox(); + options.addOption(`Cum Tap`, "cumTap", V.PC.skill).showTextBox(); + options.addOption(`Stored Cum`, "storedCum", V.PC.counter).showTextBox(); + options.addOption(`Fertility Drugs`, "fertDrugs", V.PC) + .addValue("Yes", 1).on() + .addValue("No", 0).off(); + options.addOption(`Forced Fertility Drugs`, "forcedFertDrugs", V.PC).showTextBox(); + options.addOption(`Stamina Pills`, "staminaPills", V.PC) + .addValue("Yes", 1).on() + .addValue("No", 0).off(); + el.append(options.render()); + } + + return el; + + function noChange() { + return App.UI.DOM.link( + "Change to no change", + () => { V.PC.pregMood = 0; }, + [], + "Intro Summary" + ); + } + + function motherly() { + return App.UI.DOM.link( + "Change to motherly", + () => { V.PC.pregMood = 1; }, + [], + "Intro Summary" + ); + } + + function aggressive() { + return App.UI.DOM.link( + "Change to aggressive", + () => { V.PC.pregMood = 2; }, + [], + "Intro Summary" + ); + } + + function tradingDescription() { + if (V.PC.skill.trading >= 100) { + return `You are a master at economics and trading.`; + } else if (V.PC.skill.trading >= 80) { + return `You are an expert at economics and trading.`; + } else if (V.PC.skill.trading >= 60) { + return `You are skilled in economics and trading.`; + } else if (V.PC.skill.trading >= 40) { + return `You know some things about economics and trading.`; + } else if (V.PC.skill.trading >= 20) { + return `You are a beginner in economics.`; + } else if (V.PC.skill.trading >= 0) { + return `You know only the basics of trading.`; + } else if (V.PC.skill.trading >= -20) { + return `You know how to haggle a little.`; + } else if (V.PC.skill.trading >= -40) { + return `You know how to shop around.`; + } else if (V.PC.skill.trading >= -60) { + return `You know not to pay sticker price.`; + } else if (V.PC.skill.trading >= -80) { + return `People always give you discounts, but you never save any money.`; + } else { + return `They said it was a bear market, so where are the bears?`; + } + } + + function warfareDescription() { + if (V.PC.skill.warfare >= 100) { + return `You are a master of warfare.`; + } else if (V.PC.skill.warfare >= 80) { + return `You are an expert at tactics and strategy.`; + } else if (V.PC.skill.warfare >= 60) { + return `You are skilled in combat.`; + } else if (V.PC.skill.warfare >= 40) { + return `You know some things about combat.`; + } else if (V.PC.skill.warfare >= 20) { + return `You are a beginner in tactics and strategy.`; + } else if (V.PC.skill.warfare >= 0) { + return `You know only the basics of fighting.`; + } else if (V.PC.skill.warfare >= -20) { + return `You know how to hold a gun.`; + } else if (V.PC.skill.warfare >= -40) { + return `You know how to stab with a knife.`; + } else if (V.PC.skill.warfare >= -60) { + return `Go for the throat?`; + } else if (V.PC.skill.warfare >= -80) { + return `Just kick them in the balls, right?`; + } else { + return `People like you are usually the first raped in a war.`; + } + } + + function slavingDescription() { + if (V.PC.skill.slaving >= 100) { + return `You are a master slaver.`; + } else if (V.PC.skill.slaving >= 80) { + return `You are an expert at enslaving.`; + } else if (V.PC.skill.slaving >= 60) { + return `You are skilled in slaving.`; + } else if (V.PC.skill.slaving >= 40) { + return `You know some things about getting slaves.`; + } else if (V.PC.skill.slaving >= 20) { + return `You are a beginner in slaving.`; + } else if (V.PC.skill.slaving >= 0) { + return `You know only the basics of slaving.`; + } else if (V.PC.skill.slaving >= -20) { + return `You know how to avoid becoming a slave.`; + } else if (V.PC.skill.slaving >= -40) { + return `You know to read contracts before you sign them.`; + } else if (V.PC.skill.slaving >= -60) { + return `You know to be careful.`; + } else if (V.PC.skill.slaving >= -80) { + return `You know better than to trust anyone.`; + } else { + return `It would be easy to enslave you.`; + } + } + + function engineeringDescription() { + if (V.PC.skill.engineering >= 100) { + return `You are a master engineer.`; + } else if (V.PC.skill.engineering >= 80) { + return `You are an expert at engineering.`; + } else if (V.PC.skill.engineering >= 60) { + return `You are skilled in engineering.`; + } else if (V.PC.skill.engineering >= 40) { + return `You know some things about engineering.`; + } else if (V.PC.skill.engineering >= 20) { + return `You are a beginner in engineering.`; + } else if (V.PC.skill.engineering >= 0) { + return `You know only the basics of engineering.`; + } else if (V.PC.skill.engineering >= -20) { + return `You can build a gingerbread house that doesn't collapse.`; + } else if (V.PC.skill.engineering >= -40) { + return `You can tie a tight knot, does that count?`; + } else if (V.PC.skill.engineering >= -60) { + return `Glue is your friend; lots of it.`; + } else if (V.PC.skill.engineering >= -80) { + return `You know better than to even try to build something.`; + } else { + return `You can cook; that's sort of like building something, right?`; + } + } + + function medicineDescription() { + if (V.PC.skill.medicine >= 100) { + return `You are a master surgeon.`; + } else if (V.PC.skill.medicine >= 80) { + return `You are an expert at medicine and surgery.`; + } else if (V.PC.skill.medicine >= 60) { + return `You are skilled in surgery.`; + } else if (V.PC.skill.medicine >= 40) { + return `You know some things about medicine.`; + } else if (V.PC.skill.medicine >= 20) { + return `You are a beginner in medicine.`; + } else if (V.PC.skill.medicine >= 0) { + return `You know the basics of treating injuries.`; + } else if (V.PC.skill.medicine >= -20) { + return `You can stop a wound from getting infected.`; + } else if (V.PC.skill.medicine >= -40) { + return `Gauze is your friend. Just keep wrapping.`; + } else if (V.PC.skill.medicine >= -60) { + return `You know how to apply a band-aid.`; + } else if (V.PC.skill.medicine >= -80) { + return `Cure-alls are wonderful. Why aren't they sold in stores, though?`; + } else { + return `Alcohol makes pain go away, right?`; + } + } + + function hackingDescription() { + if (V.PC.skill.hacking >= 100) { + return `You are a master of hacking.`; + } else if (V.PC.skill.hacking >= 80) { + return `You are an expert at hacking.`; + } else if (V.PC.skill.hacking >= 60) { + return `You are skilled in hacking.`; + } else if (V.PC.skill.hacking >= 40) { + return `You know some things about hacking.`; + } else if (V.PC.skill.hacking >= 20) { + return `You are a beginner in hacking.`; + } else if (V.PC.skill.hacking >= 0) { + return `You know only the basics of hacking.`; + } else if (V.PC.skill.hacking >= -20) { + return `You know how to click a mouse.`; + } else if (V.PC.skill.hacking >= -40) { + return `Enter does something?`; + } else if (V.PC.skill.hacking >= -60) { + return `Where is the "any" key?`; + } else if (V.PC.skill.hacking >= -80) { + return `You can push the power button, good job.`; + } else { + return `This black box thingy is magical.`; + } } }; diff --git a/src/events/intro/pcAppearanceIntro.tw b/src/events/intro/pcAppearanceIntro.tw index 3c9e22e1a7c2e1dad0f27aeb1c15faaf32ce1c61..3854ab1ddaba89663f214985123f95b35b00ad02 100644 --- a/src/events/intro/pcAppearanceIntro.tw +++ b/src/events/intro/pcAppearanceIntro.tw @@ -7,7 +7,7 @@ </div> </p> <<set _options = new App.UI.OptionsGroup()>> -<<run App.Intro.pcAppearance(_options)>> +<<run App.UI.Player.appearance(_options)>> <<includeDOM _options.render()>> <p> diff --git a/src/events/intro/pcBodyIntro.js b/src/events/intro/pcBodyIntro.js index 9be66507771b9aa167c32bd44fc1ecf4bba2b646..f22df55907db368a7b9cf8cda7ceb257ba3a63f5 100644 --- a/src/events/intro/pcBodyIntro.js +++ b/src/events/intro/pcBodyIntro.js @@ -150,8 +150,8 @@ App.Intro.PCBodyIntro = function() { App.UI.DOM.appendNewElement("div", el, `What is your name and alternate indulgence?`, ["intro", "question"]); - App.Intro.PCNames(options); - App.Intro.refreshmentChoice(options); + App.UI.Player.names(options); + App.UI.Player.refreshmentChoice(options); el.append(options.render()); diff --git a/src/pregmod/managePersonalAffairs.tw b/src/pregmod/managePersonalAffairs.tw index 91c652644efba7938f41f55555e20a6acfaae30f..fb27d0d6a64b42d2849a66064f2f1098474d4c3f 100644 --- a/src/pregmod/managePersonalAffairs.tw +++ b/src/pregmod/managePersonalAffairs.tw @@ -5,7 +5,7 @@ <<set _ML = $marrying.length>> <<if $cheatMode == 1>> - <div class="cheat-menu">[[Cheat Edit Player|PCCheatMenu][$cheater = 1]]</div> + <div class="cheat-menu">[[Cheat Edit Player|PCCheatMenu][$cheater = 1, $backupSlave = clone($PC)]]</div> <</if>> <h1>Personal Affairs</h1>