diff --git a/src/events/intro/introSummary.tw b/src/events/intro/introSummary.tw index c9f61b17f7e5f7bfb9f5143d32e92870cb286d02..2140ef648506768ff44e43fc0e0389daa1706434 100644 --- a/src/events/intro/introSummary.tw +++ b/src/events/intro/introSummary.tw @@ -107,146 +107,78 @@ You may review your settings before clicking "Continue" to begin.<br> <div id="UI" class="tabcontent"> <div class="content"> - <<options $seeImages>> - Displaying images is currently: - <<option 1 "Enable">> - ''Enabled''. - <<option 0 "Disable">> - ''Disabled''. - <</options>> - - <<set _exampleSlave = BaseSlave()>> - <<if $seeImages == 1>> - <<options $imageChoice>> - Using - <<option 0 "Rendered">> - ''Rendered imagepack by Shokushu''. - <<option 1 "Vector — embedded">> - ''Vector art by NoX/Deepmurk — embedded''. - <br><span class="red">Git compiled only, no exceptions.</span> - <<option 2 "Vector — non-embedded">> - ''Vector art by NoX/Deepmurk — non-embedded''. - <<option 3 "Vector revamp">> - ''Vector art revamp''. - <br><span class="red">Git compiled only, no exceptions.</span> - <<comment>> - "Vector — embedded" is the most up to date and supports the most content. Ironically, revamp has not been touched in a long time. - <</options>> - <<if $imageChoice == 1>> - <div style="position:relative;width:200px;height:200px;margin:0 auto;"> - <<= SlaveArt(_exampleSlave, 0, 0)>> - </div> - <<options $seeFaces>> - Face art - <<option 1 "Enable">> - @@.cyan;ENABLED.@@ - <<option 0 "Disable">> - @@.red;DISABLED.@@ - <</options>> - - <<options $seeVectorArtHighlights>> - Highlights on shiny clothing - <<option 1 "Enable">> - @@.cyan;ENABLED.@@ - <<option 0 "Disable">> - @@.red;DISABLED.@@ - <</options>> - - <<options $seeHeight>> - Height scaling - <<option 2 "Enable for all images">> - @@.cyan;ENABLED@@ on all images. - <<option 1 "Enable only for small images">> - @@.yellow;ENABLED@@ on small images. - <<option 0 "Disable">> - @@.red;DISABLED.@@ - <</options>> - <<elseif $imageChoice == 2>> - <div style="position:relative;width:200px;height:200px;margin:0 auto;"> - <<= SlaveArt(_exampleSlave, 0, 0)>> - </div> - <<elseif $imageChoice == 3>> - <div style="position:relative;width:200px;height:200px;margin:0 auto;"> - <<= SlaveArt(_exampleSlave, 0, 0)>> - </div> - <<options $seeVectorArtHighlights>> - Highlights on shiny clothing - <<option 1 "Enable">> - @@.cyan;ENABLED.@@ - <<option 0 "Disable">> - @@.red;DISABLED.@@ - <</options>> - <<elseif $imageChoice == 0>> - <div style="width:200px; height:200px; margin: auto; position: relative;"> - You need to <a href="https://mega.nz/#!upoAlBaZ!EbZ5wCixxZxBhMN_ireJTXt0SIPOywO2JW9XzTIPhe0">download the image pack</a> - and put the 'renders' folder into the resources/ folder where this - html file is. - <img src="resources/renders/female big soft obedient.png" - title="Example image" alt="Failed to load image" - style="position:absolute;top:0;left:0;width:100%;background:#111;color:red;"> - </div> - <<options $seeMainFetishes>> - Slave summary fetish images - <<option 1 "Enable">> - ''enabled''. - <<option 0 "Disable">> - ''disabled''. - <</options>> - <</if>> + <<set _options = new App.UI.OptionsGroup()>> - <<options $seeAvatar>> - PA avatar images are - <<option 1 "Enable">> - ''enabled''. - <<option 0 "Disable">> - ''disabled''. - <</options>> + <<run _options.addOption("Help tooltips are", "tooltipsEnabled") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off() + .addComment("This is mostly for new players. @@.exampleTooltip.noteworthy;Colored text@@ can have tooltips.")>> - <<options $seeSummaryImages>> - Slave images in lists are - <<option 1 "Enable">> - ''enabled''. - <<option 0 "Disable">> - ''disabled''. - <</options>> + <<run _options.addOption("Accordion effects on weekly reports are", "useAccordion") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> - <<options $seeReportImages>> - Slave images in the weekly report are - <<option 1 "Enable">> - ''enabled''. - <<option 0 "Disable">> - ''disabled''. - <</options>> - <</if>> + <<run _options.addOption("Economic Tabs on weekly reports are", "useTabs") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + + <<print App.UI.DOM.includeDOM(_options.render())>> + + <h2>Images</h2> + <<set _options = new App.UI.OptionsGroup()>> + + <<run _options.addOption("Images are", "seeImages") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + + <<print App.UI.DOM.includeDOM(_options.render())>> + + <<if $seeImages > 0>> + <div class="imageRef" style="width:200px;height:200px;margin-left:50px;"> + <<= SlaveArt(BaseSlave(), 0, 0)>> + </div> - <<options $tooltipsEnabled>> - Help tooltips are - <<option 1 "Enable">> - @@.cyan;ENABLED.@@ - <<option 0 "Disable">> - @@.red;DISABLED.@@ - <<comment>> - This is mostly for new players. @@.exampleTooltip.noteworthy;Colored text@@ can have tooltips. - <</options>> - - /* Accordion 000-250-006 */ - <<options $useAccordion>> - Accordion effects on weekly reports are - <<option 1 "Enable">> - @@.cyan;ENABLED.@@ - <<option 0 "Disable">> - @@.red;DISABLED.@@ - <</options>> - /* Accordion 000-250-006 */ - - <<options $useTabs>> - Economic Tabs on weekly reports are - <<option 1 "Enable">> - @@.cyan;ENABLED.@@ - <<option 0 "Disable">> - @@.red;DISABLED.@@ - <</options>> + <<set _options = new App.UI.OptionsGroup()>> + <<run _options.addOption("", "imageChoice") + .addValueList([["Revamped embedded vector art", 3], ["Non-embedded vector art", 2], ["NoX/Deepmurk's vector art", 1], ["Shokushu's rendered imagepack", 0]])>> + + <<if $imageChoice === 1>> + <<run _options.addOption("").addComment('<span class="warning">Git compiled only, no exceptions.</span>')>> + + <<run _options.addOption("Face artwork is", "seeFaces") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + + <<run _options.addOption("Highlights on shiny clothing are", "seeVectorArtHighlights") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + + <<run _options.addOption("Height scaling", "seeHeight") + .addValue("All images", 2).on().addValue("Small images", 1).neutral().addValue("Disabled", 0).off()>> + + <<run _options.addOption("Clothing erection bulges are", "showClothingErection") + .addValue("Enabled", true).on().addValue("Disabled", false).off()>> + <<elseif $imageChoice === 0>> + <<run _options.addOption("").addComment(`You need """to""" + <a href="https://mega.nz/#!upoAlBaZ!EbZ5wCixxZxBhMN_ireJTXt0SIPOywO2JW9XzTIPhe0">download the image pack</a> + """and""" put the 'renders' folder into the resources/ folder where this html file is.` + )>> + + <<run _options.addOption("Slave summary fetish images are", "seeMainFetishes") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + <<elseif $imageChoice === 3>> + <<run _options.addOption("").addComment('<span class="warning">Git compiled only, no exceptions.</span>')>> + + <<run _options.addOption("Clothing erection bulges are", "showClothingErection") + .addValue("Enabled", true).on().addValue("Disabled", false).off()>> + <</if>> + + <<run _options.addOption("PA avatar art is", "seeAvatar") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + + <<run _options.addOption("Slave images in lists are", "seeSummaryImages") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + + <<run _options.addOption("Slave images in the weekly report are", "seeReportImages") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + + <<print App.UI.DOM.includeDOM(_options.render())>> + <</if>> </div> </div> @@ -448,641 +380,300 @@ You may review your settings before clicking "Continue" to begin.<br> <div id="slaves" class="tabcontent"> <div class="content"> - <<options $verboseDescriptions>> - <<option 1 "Enable">> - Your master suite ''will'' detail slave changes. - <<option 0 "Disable">> - Your master suite ''will not'' detail slave changes. - <</options>> - - <<options $newDescriptions>> - <<option 1 "Enable">> - Slaves ''will'' have alternate titles. - <<option 0 "Disable">> - Slaves ''will not'' have alternate titles. - <</options>> - - <<options $seeRace>> - <<option 1 "Enable mentions of race">> - Ethnicity will ''occasionally'' be mentioned. - <<option 0 "Disable most mentions of race">> - Ethnicity will ''almost never'' be mentioned. - <</options>> - - <<options $seeNationality>> - <<option 1 "Enable mentions of nationality">> - Nationality will ''occasionally'' be mentioned. - <<option 0 "Disable most mentions of nationality">> - Nationality will ''almost never'' be mentioned. - <</options>> - - <<options $realRoyalties>> - <<option 1 "Historical dynasties">> - When enslaving Royalty, they will have nationalities and surnames of the real royalties. - <<option 0 "Random dynasties">> - When enslaving Royalty, their nationalities and surnames will be random. - <</options>> - - <<options $allowMaleSlaveNames>> - <<option false "Only use female names">> - Slaves will ''always generate with female names''. - <<option true "Allow male names">> - Slaves ''can generate with male names''. - <<comment>> - This only affects slave generation and not your ability to name your slaves. - <</options>> - - <<options $surnameOrder>> - <<option 0 "Allow nationality name order">> - Order names ''based on country of origin''. - <<option 1 "Force name surname">> - Names will always be ''Name Surname''. - <<option 2 "Force surname name">> - Names will always be ''Surname Name''. - <</options>> - - <<options $limitFamilies>> - <<option 1 "Restrict family size">> - Vanilla emulation. - <<option 0 "Allow extended families">> - Extended family mode. - <<comment>> - Controls acquisition of additional relatives, by means other than birth, for slaves with families. - <</options>> - - <<options $showDistantRelatives>> - <<option 1 "Enable distant relatives">> - Distant relatives ''will'' be tracked. - <<option 0 "Disable distant relatives">> - Distant relatives ''will not'' be tracked. - <</options>> - - <<options $inbreeding>> - <<option 1 "Enable inbreeding damage">> - Successive breeding ''will'' result in sub-average slaves. - <<option 0 "Disable inbreeding damage">> - Successive breeding ''will not'' result in sub-average slaves. - <</options>> - - <<options $allowFamilyTitles>> - <<option 1 "Enable family titles">> - Your relatives ''will'' use family titles. - <<option 0 "Disable family titles">> - Your relatives ''will not'' use family titles. - <</options>> - - <<options $weightAffectsAssets>> - <<option 1 "Enable">> - Interactions between slaves' weight and asset size are ''enabled''. - <<option 0 "Disable">> - Interactions between slaves' weight and asset size are ''disabled''. - <</options>> - - <<options $curativeSideEffects>> - <<option 1 "Enable">> - Curative side effects are ''enabled''. - <<option 0 "Disable">> - Curative side effects are ''disabled''. - <</options>> - - /% Begin mod section: toggle whether slaves lisp. %/ - - <<options $disableLisping>> - <<option 0 "Enable Lisping">> - Lisping: ''slaves with fat lips or heavy oral piercings will lisp''. - <<option 1 "Disable Lisping">> - Lisping: ''slaves will not lisp''. - <</options>> - - /% End mod section: toggle whether slaves lisp. %/ - - <h2 align="center">Age</h2> - <<options $seeAge>> - <<option 1 "Enable aging">> - Slaves will ''age naturally.'' - <<option 2 "Semi aging">> - Slaves ''will'' celebrate birthdays, but ''not age.'' - <<option 0 "Disable aging">> - Slaves will ''not age,'' and not experience birthdays. - <<comment>> - This option cannot be changed during the game. - <</options>> - - <<options $pedo_mode>> - <<option 1 "Loli mode" "$minimumSlaveAge = 5">> - Nearly all randomly generated slaves will be under the age of 18, although custom slaves and slaves related to specific events may be older. - <<option 0 "Normal mode">> - Randomly generated slaves will generate normally. - <</options>> - - <<if $minimumSlaveAge < 3>> - <<set $minimumSlaveAge = 3>> - <<elseif $minimumSlaveAge < 18>> - /% OK %/ - <<else>> - /% Either out of range or not a number. %/ - <<set $minimumSlaveAge = 18>> - <</if>> - <<options>> - Girls appearing in the game will be no younger than: - <<option>> - <<textbox2 "$minimumSlaveAge" $minimumSlaveAge "Intro Summary">> - <</options>> - - <<options $extremeUnderage>> - <<option 1 "Allow">> - Molestation of slaves younger than $minimumSlaveAge is ''permitted''. - <<option 0 "Deny">> - Molestation of slaves younger than $minimumSlaveAge is ''forbidden''. - <</options>> - - <<if $retirementAge <= $minimumSlaveAge>> - <<set $retirementAge = $minimumSlaveAge+1>> - <<elseif $retirementAge <= 120>> - /% OK %/ - <<else>> - /% Either out of range or not a number. %/ - <<set $retirementAge = 45>> - <</if>> - <<options>> - Initial retirement age will be at: - <<option>> - <<textbox2 "$retirementAge" $retirementAge "Intro Summary">> - <<comment>> - May cause issues with New Game and initial slaves if set below 45. - <</options>> - - <<if $fertilityAge < 3>> - <<set $fertilityAge = 3>> - <<elseif $fertilityAge < 18>> - /% OK %/ - <<else>> - /% Either out of range or not a number. %/ - <<set $fertilityAge = 18>> - <</if>> - <<options>> - Girls will not be able to become pregnant if their age is under: - <<option>> - <<textbox2 "$fertilityAge" $fertilityAge "Intro Summary">> - <</options>> - - <<if $potencyAge < 3>> - <<set $potencyAge = 3>> - <<elseif $potencyAge < 18>> - /% OK %/ - <<else>> - /% Either out of range or not a number. %/ - <<set $potencyAge = 18>> - <</if>> - <<options>> - Girls will not be able to impregnate others if their age is under: - <<option>> - <<textbox2 "$potencyAge" $potencyAge "Intro Summary">> - <</options>> - - <<options $precociousPuberty>> - <<option 1 "Enable precocious puberty">> - Girls ''can'' experience precocious puberty. (Under certain conditions they can become pregnant or inseminate others younger then normal age - $fertilityAge, though they may also experience delayed puberty). - <<option 0 "Disable precocious puberty">> - Girls ''cannot'' experience precocious puberty. (Unable to become pregnant or inseminate others younger than normal puberty age - $fertilityAge). - <</options>> - - <<options $AgePenalty>> - <<option 1 "Enable age penalties">> - Girls ''will'' receive job and career penalties due to age. - <<option 0 "Disable age penalties">> - Girls ''will not'' receive job and career penalties due to age. - <</options>> - - <<options $loliGrow>> - <<option 1 "Enable Growth">> - Children ''will'' grow as they age. - <<option 0 "Disable Growth">> - Children ''will not'' grow as they age. - <</options>> + <<set _options = new App.UI.OptionsGroup()>> + + <<run _options.addOption("Master Suite report details such as slave changes are", "verboseDescriptions") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + + <<run _options.addOption("Slaves can have alternate titles", "newDescriptions") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + + <<run _options.addOption("Mention ethnicity", "seeRace") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + + <<run _options.addOption("Mention ethnicity", "seeNationality") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + + <<run _options.addOption("Dynasties of enslaved royalities are", "realRoyalties") + .addValueList([["Historical", 1], ["Random", 0]])>> + + <<run _options.addOption("New slaves may have male names", "allowMaleSlaveNames").addComment("This only affects slave generation and not your ability to name your slaves.") + .addValue("Enabled", true).on().addValue("Disabled", false).off()>> + + <<run _options.addOption("Schema for ordering slave names is", "surnameOrder") + .addValueList([["Country of origin", 0], ["Name Surname", 1], ["Surname Name", 2]])>> + + <<run _options.addOption("Family size", "limitFamilies").addComment("Controls acquisition of additional relatives, by means other than birth, for slaves with families.") + .addValue("Allow extended families", 0).on().addValue("Restrict family size (Vanilla Emulation)", 1).off()>> + + <<run _options.addOption("Tracking distant relatives is", "showDistantRelatives") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + + <<run _options.addOption("Successive breeding resulting in sub-average slaves is", "inbreeding") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + + <<run _options.addOption("Family titles for relatives", "allowFamilyTitles") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + + <<run _options.addOption("Slave assets affected by weight is", "weightAffectsAssets") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off() + .addComment("Diet will still affect asset size.")>> + + <<run _options.addOption("Curative side effects are", "curativeSideEffects") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + + <<run _options.addOption("Slaves with fat lips or heavy oral piercings may lisp", "disableLisping") + .addValue("Yes", 0).on().addValue("No", 1).off()>> + + <<print App.UI.DOM.includeDOM(_options.render())>> + + <h2>Age</h2> + <<set _options = new App.UI.OptionsGroup()>> + + <<run _options.addOption("Slave aging", "seeAge") + .addValue("Enabled", 1).on().addValue("Celebrate birthdays, but don't age.", 2).neutral().addValue("Disabled", 0).off()>> + + <<run _options.addOption("Slave age distribution", "pedo_mode").addComment("In loli mode most new slaves are under the age of 18. May not apply to custom slaves and slaves from specific events.") + .addValue("Loli mode", 1, () => V.minimumSlaveAge = 5).addValue("Normal mode", 0)>> + + <<set $minimumSlaveAge = Math.clamp($minimumSlaveAge, 3, 18)>> + <<run _options.addOption("Girls appearing in the game will be no younger than", "minimumSlaveAge").showTextBox()>> + + <<run _options.addOption("Molestation of slaves younger than $minimumSlaveAge is", "extremeUnderage") + .addValue("Permitted", 1).on().addValue("Forbidden", 0).off()>> + + <<set $retirementAge = Math.clamp($retirementAge, $minimumSlaveAge + 1, 120)>> + <<run _options.addOption("Initial retirement age will be at", "retirementAge") + .addComment("May cause issues with New Game and initial slaves if set below 45.").showTextBox()>> + + <<set $fertilityAge = Math.clamp($fertilityAge, 3, 18)>> + <<run _options.addOption("Girls will not be able to become pregnant if their age is under", "fertilityAge").showTextBox()>> + <<set $potencyAge = Math.clamp($potencyAge, 3, 18)>> + <<run _options.addOption("Girls will not be able to impregnate others if their age is under", "potencyAge").showTextBox()>> + + <<run _options.addOption("Precocious puberty is", "precociousPuberty").addComment("Under certain conditions they can become pregnant or inseminate others younger then normal age - $fertilityAge, though they may also experience delayed puberty.") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + + <<run _options.addOption("Age penalties are", "AgePenalty").addComment("Job and career penalties due to age.") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + + <<run _options.addOption("Children growing as they age is", "loliGrow") + .addValue("Enabled", 1).on().addValue("Disabled", 0).off()>> + + <<print App.UI.DOM.includeDOM(_options.render())>> </div> </div> <div id="PC" class="tabcontent"> <div class="content"> - <<if $freshPC == 1 || $saveImported == 0>> - <<if ndef $PCCreationSex>> - <<if $PC.title == 1>> - <<set $PCCreationSex = "masculine ''Master''">> - <<else>> - <<set $PCCreationSex = "feminine ''Mistress''">> - <</if>> - <</if>> - - <<options $PC.title>> - You are a $PCCreationSex. Change to: - <<option 1 "Masculine Master" "$PC.genes = 'XY', $PCCreationSex = \"masculine ''Master''\"">> - <<option 0 "Feminine Mistress" "$PC.genes = 'XX', $PCCreationSex = \"feminine ''Mistress''\"">> - <</options>> + <<set _options = new App.UI.OptionsGroup()>> - <div style="display:flex"> - <span style="flex:50%; text-align:right"> - Everyone calls you ''<<= PlayerName()>>.'' - </span> - <span style="flex:50%"> - </span> - </div> + <<if $freshPC == 1 || $saveImported == 0>> + <<run _options.addOption("You are a", "title", $PC) + .addValue("Masculine Master", 1, () => V.PC.genes = "XY").addValue("Feminine Mistress", 0, () => V.PC.genes = "XX")>> - <<options>> - With your given name as: - <<option>> - <<textbox2 "$PC.slaveName" $PC.slaveName>> - <</options>> + <<run _options.addOption("Everyone calls you ''<<= PlayerName()>>.''")>> + <<run _options.addOption("Your given name is", "slaveName", $PC).showTextBox()>> - <<if $PC.slaveSurname == 0>> - <<options $PC.slaveSurname>> - And no surname. - <<option "Anon" "Add a surname">> - <<comment>> - Surnames cannot be changed during the game outside of special circumstances. - <</options>> + <<if $PC.slaveSurname === 0>> + <<run _option = _options.addOption("And no surname", "slaveSurname", $PC) + .addValue("Add a surname", "Anon") + .addComment("Surnames cannot be changed during the game outside of special circumstances.")>> <<else>> - <<options $PC.slaveSurname>> - And your surname is: - <<option>> - <<textbox2 "$PC.slaveSurname" $PC.slaveSurname>> - <<option 0 "Go by a single name">> - <</options>> + <<run _option = _options.addOption("And your surname is", "slaveSurname", $PC).showTextBox() + .addValue("Go by a single name", 0) + .addComment("Surnames cannot be changed during the game outside of special circumstances.")>> <</if>> <<set $PC.physicalAge = $PC.actualAge, $PC.visualAge = $PC.actualAge>> - <<options>> - You are ''$PC.actualAge'' years old which is - <<if $PC.actualAge >= 65>> - ''old''. - <<elseif $PC.actualAge >= 50>> - ''well into middle age''. - <<elseif $PC.actualAge >= 35>> - ''entering middle age''. - <<else>> - ''surprisingly young''. - <</if>> - <<option>> - <<textbox2 "$PC.actualAge" $PC.actualAge "Intro Summary">> - <</options>> + <<run _options.addOption("You are", "actualAge", $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>> - Your birthday was ''$PC.birthWeek'' weeks ago. - <<option>> - <<textbox2 "$PC.birthWeek" $PC.birthWeek "Intro Summary">> - <</options>> + <<run _options.addOption("Your birthday was ''$PC.birthWeek'' weeks ago.", "birthWeek", $PC).showTextBox()>> - <<options $playerAging>> - <<option 2 "Enable aging">> - and you ''age naturally''. - <<option 1 "Semi aging">> - and you ''will'' celebrate birthdays, but ''not age''. - <<option 0 "Disable aging">> - and you will ''not age,'' nor experience birthdays. - <<comment>> - This option cannot be changed during the game - <</options>> + <<run _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 def $PC.customTitle>> - <<options>> - Your custom title is: - <<option>> - <<textbox2 "$PC.customTitle" $PC.customTitle "Intro Summary">> - <</options>> - - <<options>> - and when lisped it is: - <<option>> - <<textbox2 "$PC.customTitleLisp" $PC.customTitleLisp "Intro Summary">> - <<comment>> - 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. - <</options>> + <<run _options.addOption("Custom title", "customTitle", $PC).showTextBox() + .addValue("Reset to default", "", () => {delete $PC.customTitle; delete $PC.customTitleLisp;})>> + + <<run _options.addOption("Lisped custom title", "customTitleLisp", $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 $PC.customTitle>> - You have no custom title: - <<option "Master" "Set custom title" "$PC.customTitleLisp = 'Mather'">> - <<comment>> - 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. - <</options>> + <<run _options.addOption("Custom title", "customTitle", $PC) + .addValue("Set custom title", "Master", () => $PC.customTitleLisp = 'Mather')>> <</if>> - <<options>> - Your nationality is: - <<option>> - <<textbox2 "$PC.nationality" $PC.nationality "Intro Summary">> - <<comment>> - Capitalize it - <</options>> + <<run _options.addOption("Your nationality is", "nationality", $PC).showTextBox() + .addComment("For best result capitalize it.")>> - <<options $PC.race>> - Your race is: - <<option "white" "White">> - <<option "asian" "Asian">> - <<option "latina" "Latina">> - <<option "middle eastern" "Middle Eastern">> - <<option "black" "Black">> - <<option "semitic" "Semitic">> - <<option "southern european" "Southern European">> - <<option "indo-aryan" "Indo-Aryan">> - <<option "amerindian" "Amerindian">> - <<option "pacific islander" "Pacific Islander">> - <<option "malay" "Malay">> - <<option "mixed race" "Mixed Race">> - <<option>> - <<textbox2 "$PC.race" $PC.race "Intro Summary">> - <</options>> + <<run _options.addOption("Your race is", "race", $PC).showTextBox() + .addValueList([["White", "white"], ["Asian", "asian"], ["Latina", "latina"], ["Middle Eastern", "middle eastern"], + ["Black", "black"], ["Semetic", "semetic"], ["Southern European", "southern european"], ["Indo-Aryan", "indo-aryan"], + ["Amerindian", "amerindian"], ["Pacific Islander", "pacific islander"], ["Malay", "malay"], ["Mixed Race", "mixed race"]])>> - <<options $PC.skin>> - Your skin tone is: - <<option "pure white" "Pure White" >> - <<option "ivory" "Ivory" >> - <<option "white" "White" >> - <<option "extremely pale" "Extremely Pale" >> - <<option "very pale" "Very Pale" >> - <<option "pale" "Pale" >> - <<option "extremely fair" "Extremely Fair" >> - <<option "very fair" "Very Fair" >> - <<option "fair" "Fair" >> - <<option "light" "Light" >> - <<option "light olive" "Light Olive" >> - <<option "tan" "Tan" >> - <<option "olive" "Olive" >> - <<option "bronze" "Bronze" >> - <<option "dark olive" "Dark Olive" >> - <<option "dark" "Dark" >> - <<option "light beige" "Light Beige" >> - <<option "beige" "Beige" >> - <<option "dark beige" "Dark Beige" >> - <<option "light brown" "Light Brown" >> - <<option "brown" "Brown" >> - <<option "dark brown" "Dark Brown" >> - <<option "black" "Black" >> - <<option "ebony" "Ebony" >> - <<option "pure black" "Pure Black" >> - <<option>> - <<textbox2 "$PC.skin" $PC.skin "Intro Summary">> - <</options>> + <<run _options.addOption("Your skin tone is", "skin", $PC).showTextBox() + .addValueList([["Pure White", "pure white"], ["Ivory", "ivory"], ["White", "white"], ["Extremely Pale", "extremely pale"], + ["Very Pale", "very pale"], ["Pale", "pale"], ["Extremely Fair", "extremely fair"], ["Very Fair", "very fair"], + ["Fair", "fair"], ["Light", "light"], ["Light Olive", "light olive"], ["Tan", "tan"], ["Olive", "olive"], ["Bronze", "bronze"], + ["Dark Olive", "dark olive"], ["Dark", "dark"], ["Light Beige", "light beige"], ["Beige", "beige"], + ["Dark Beige", "dark beige"], ["Light Brown", "light brown"], ["Brown", "brown"], ["Dark Brown", "dark brown"], + ["Black", "black"], ["Ebony", "ebony"], ["Pure Black", "pure black"]])>> - <<options $PC.markings>> - <<option "none" "None">> - Your body ''is clear of blemishes''. - <<option "freckles" "Light">> - Your body ''has light freckling''. - <<option "heavily freckled" "Heavy">> - Your body ''has heavy freckling''. - <</options>> + <<run _options.addOption("Your body", "markings", $PC) + .addValueList([["Is clear of blemishes", "none"], ["Has light freckling", "freckles"], ["Has heavy freckling", "heavily freckled"]])>> - <<options>> - Your eyes are: - <<option>> - <<textbox2 "$PC.eye.origColor" $PC.eye.origColor "Intro Summary">> - <</options>> + <<run _options.addOption("Your eyes are", "origColor", $PC.eye).showTextBox()>> - <<options>> - Your hair is: - <<option>> - <<textbox2 "$PC.hColor" $PC.hColor "Intro Summary">> - <</options>> + <<run _options.addOption("Your hair is", "hColor", $PC).showTextBox()>> - <<options $PC.faceShape>> - <<option "normal" "Normal">> - Your face is ''normal''. - <<option "androgynous" "Androgynous">> - Your face is ''androgynous''. - <<option "masculine" "Masculine">> - Your face is ''masculine''. - <<option "cute" "Cute">> - Your face is ''cute''. - <<option "sensual" "Sensual">> - Your face is ''sensual''. - <<option "exotic" "Exotic">> - Your face is ''exotic''. - <</options>> + <<run _options.addOption("Your face is", "faceShape", $PC) + .addValueList([["Normal", "normal"], ["Androgynous", "androgynous"], ["Masculine", "masculine"], ["Cute", "cute"], ["Sensual", "sensual"], ["Exotic", "exotic"]])>> - <<options $PC.refreshment>> - Your preferred refreshment is: - <<option "cigar" "Cigars" "$PC.refreshmentType = 0">> - <<option "whiskey" "Whiskey" "$PC.refreshmentType = 1">> - <<option>> - <<textbox2 "$PC.refreshment" $PC.refreshment "Intro Summary">> - <</options>> + <<run _options.addOption("Your preferred refreshment is", "refreshment", $PC).showTextBox() + .addValue("Cigars", "cigar", () => {V.PC.refreshmentType = 0}) + .addValue("Whiskey", "whiskey", () => {V.PC.refreshmentType = 1})>> - <<options $PC.refreshmentType>> - Which you - <<option 0 "Smoke">> - smoke. - <<option 1 "Drink">> - drink. - <<option 2 "Eat">> - eat. - <<option 3 "Snort">> - snort. - <<option 4 "Inject">> - inject. - <<option 5 "Pop">> - pop. - <<option 6 "Orally Dissolve">> - orally dissolve. - <</options>> + <<set _option = _options.addOption("Which you", "refreshmentType", $PC) + .addValueList([["Smoke", 0], ["Drink", 1], ["Eat", 2], ["Snort", 3], ["Inject", 4], ["Pop", 5], ["Orally dissolve", 6]])>> - - <<if ($PC.refreshmentType == 0) && ($PC.refreshmentType != 0) >>//"Smoked" must fit into the following sentence: "I smoked a $PC.refreshment" to fit events properly - <<elseif $PC.refreshmentType == 5>>//"Popped" must fit into the following sentence: "I shook the bottle of $PC.refreshment" to fit events properly - <<elseif $PC.refreshmentType == 6>>//"Orally Dissolved" must fit into the following sentence: "I placed a tab of $PC.refreshment under my tongue" to fit events properly + <<if $PC.refreshmentType == 0>> + <<run _option.addComment('"Smoked" must fit into the following sentence: "I smoked a $PC.refreshment" to fit events properly.')>> + <<elseif $PC.refreshmentType == 5>> + <<run _option.addComment('"Popped" must fit into the following sentence: "I shook the bottle of $PC.refreshment" to fit events properly.')>> + <<elseif $PC.refreshmentType == 6>> + <<run _option.addComment('"Orally Dissolved" must fit into the following sentence: "I placed a tab of $PC.refreshment under my tongue" to fit events properly.')>> <</if>> - <<switch $PC.career>> - <<case "capitalist">> - <<set _PCCreationCareer = "a business leader">> - <<set _PCSecExpCareer = "@@.yellowgreen;The propaganda hub's upgrades will be cheaper.@@">> - <<case "mercenary">> - <<set _PCCreationCareer = "a mercenary">> - <<set _PCSecExpCareer = "@@.green;Easier to maintain security@@ and @@.yellowgreen;the security HQ's upgrades will be cheaper.@@">> - <<case "slaver">> - <<set _PCCreationCareer = "a slaver">> - <<set _PCSecExpCareer = "@@.green;Easier to maintain authority@@ and @@.yellowgreen;the security HQ's upgrades will be cheaper.@@">> - <<case "engineer">> - <<set _PCCreationCareer = "an engineer">> - <<set _PCSecExpCareer = "@@.yellowgreen;construction and upgrade of facilities will be cheaper.@@">> - <<case "medicine">> - <<set _PCCreationCareer = "a doctor">> - <<set _PCSecExpCareer = "@@.yellowgreen;Drug upgrades will be cheaper.@@">> - <<case "celebrity">> - <<set _PCCreationCareer = "a minor celebrity">> - <<set _PCSecExpCareer = "@@.yellowgreen;The propaganda hub's upgrades will be cheaper.@@">> - <<case "escort">> - <<set _PCCreationCareer = "an escort">> - <<set _PCSecExpCareer = "@@.red;Harder to maintain authority.@@">> - <<case "servant">> - <<set _PCCreationCareer = "a servant">> - <<set _PCSecExpCareer = "@@.red;Harder to maintain authority.@@">> - <<case "gang">> - <<set _PCCreationCareer = "a gang leader">> - <<set _PCSecExpCareer = "@@.green;Easier to maintain authority@@ and @@.yellowgreen;the security HQ's upgrades will be cheaper.@@">> - <<case "BlackHat">> - <<set _PCCreationCareer = "an incursion specialist">> - <<set _PCSecExpCareer = "@@.red;Harder to maintain authority.@@">> - <<default>> - <<set _PCCreationCareer = "a member of the idle wealthy">> - <<set _PCSecExpCareer = "@@.red;Harder to maintain authority,@@ but @@.yellowgreen;the propaganda hub's upgrades will be cheaper.@@">> - <</switch>> - + <<set _option = _options.addOption("Before you came to the Free Cities, you were a", "career", $PC)>> <<if $PC.career == "arcology owner">> - Before you came to the Free Cities, you were ''_PCCreationCareer''. + <<run _option.addValue("Arcology owner", "arcology owner")>> <<else>> - <<options $PC.career>> - Before you came to the Free Cities, you were ''_PCCreationCareer'': - <<option "wealth" "Member of the idle wealthy">> - <<option "capitalist" "Business leader">> - <<option "mercenary" "Mercenary">> - <<option "slaver" "Slaver">> - <<option "engineer" "Engineer">> - <<option "medicine" "Doctor">> - <<option "BlackHat" "Hacker">> - <<option "celebrity" "Minor celebrity">> - <<option "escort" "Escort">> - <<option "servant" "Servant">> - <<option "gang" "Gang leader">> - <</options>> + <<run _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 $secExpEnabled > 0>> - <div> - Security Expansion bonus: _PCSecExpCareer - </div> + <<switch $PC.career>> + <<case "capitalist">> + <<run _option.addComment("<div>@@.yellowgreen;The propaganda hub's upgrades will be cheaper.@@</div>")>> + <<case "mercenary">> + <<run _option.addComment("<div>@@.green;Easier to maintain security@@ and @@.yellowgreen;the security HQ's upgrades will be cheaper.@@</div>")>> + <<case "slaver">> + <<run _option.addComment("<div>@@.green;Easier to maintain authority@@ and @@.yellowgreen;the security HQ's upgrades will be cheaper.@@</div>")>> + <<case "engineer">> + <<run _option.addComment("<div>@@.yellowgreen;construction and upgrade of facilities will be cheaper.@@</div>")>> + <<case "medicine">> + <<run _option.addComment("<div>@@.yellowgreen;Drug upgrades will be cheaper.@@</div>")>> + <<case "celebrity">> + <<run _option.addComment("<div>@@.yellowgreen;The propaganda hub's upgrades will be cheaper.@@</div>")>> + <<case "escort">> + <<run _option.addComment("<div>@@.red;Harder to maintain authority.@@</div>")>> + <<case "servant">> + <<run _option.addComment("<div>@@.red;Harder to maintain authority.@@</div>")>> + <<case "gang">> + <<run _option.addComment("<div>@@.green;Easier to maintain authority@@ and @@.yellowgreen;the security HQ's upgrades will be cheaper.@@</div>")>> + <<case "BlackHat">> + <<run _option.addComment("<div>@@.red;Harder to maintain authority.@@</div>")>> + <<default>> + <<run _option.addComment("<div>@@.red;Harder to maintain authority,@@ but @@.yellowgreen;the propaganda hub's upgrades will be cheaper.@@</div>")>> + <</switch>> <</if>> <</if>> - <<options $PC.rumor>> - It is rumored that you acquired your arcology through ''$PC.rumor'': - <<option "wealth" "Wealth">> - <<option "diligence" "Hard work">> - <<option "force" "Force">> - <<option "social engineering" "Social engineering">> - <<option "luck" "Blind luck">> - <</options>> + <<run _options.addOption("It is rumored that you acquired your arcology through", "rumor", $PC) + .addValueList([["Wealth", "wealth"], ["Hard work", "diligence"], ["Force", "force"], ["Social engineering", "social engineering"], + ["Blind luck", "luck"]] + )>> - <<if $PC.vagina != -1 && $PC.dick != 0>> + <<print App.UI.DOM.includeDOM(_options.render())>> + + <h2>Sexuality</h2> + <<set _options = new App.UI.OptionsGroup()>> + + <<if $PC.vagina !== -1 && $PC.dick !== 0>> <<set _vagina_penis = 2>> - <<elseif $PC.vagina != -1>> + <<elseif $PC.vagina !== -1>> <<set _vagina_penis = 1>> <<else>> <<set _vagina_penis = 0>> <</if>> - <<options _vagina_penis>> - You have a - <<option 0 "Penis" "$PC.preg=0, $PC.pregType=0, $PC.dick=4, $PC.balls=3, $PC.scrotum=3, $PC.prostate=1, $PC.vagina=-1, $PC.ovaries=0">> - ''penis''. Standard sex scenes; easiest reputation maintenance. - <<option 1 "Vagina" "$PC.dick=0, $PC.balls=0, $PC.prostate=0, $PC.scrotum=0, $PC.vagina=1, $PC.ovaries=1">> - ''vagina''. Sex scene variations; most difficult reputation maintenance. - <<option 2 "Penis and Vagina" "$PC.dick=4, $PC.balls=3, $PC.scrotum=3, $PC.prostate=1, $PC.vagina=1, $PC.ovaries=1">> - ''penis and vagina''. Sex scene variations; more difficult reputation maintenance; some unique opportunities, especially with breasts. - <</options>> + <<set _option = _options.addOption("You have a", "vagina_penis", 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 _vagina_penis === 0>> + <<run _option.addComment("Standard sex scenes; easiest reputation maintenance.")>> + <<elseif _vagina_penis === 1>> + <<run _option.addComment("Sex scene variations; most difficult reputation maintenance.")>> + <<else>> + <<run _option.addComment("Sex scene variations; more difficult reputation maintenance; some unique opportunities, especially with breasts.")>> + <</if>> - <<if $PC.vagina != -1>> + <<if $PC.vagina !== -1>> + <<set _option = _options.addOption("You are", "preg", $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 $PC.preg == -1>> - <<options $PC.preg>> - You are taking contraceptives. You ''can't'' get pregnant, however there - will be a slight increase to living expenses. - <<option -1 "Taking contraceptives">> - <<option 0 "Do not take contraceptives">> - <</options>> - <<elseif $PC.preg == 0>> - <<options $PC.preg>> - You are ''not'' on contraceptives. You ''can'' get pregnant. - <<option -1 "Take contraceptives">> - <<option 0 "Not taking contraceptives">> - <<option 16 "Too late for that!" "$PC.pregType = 1">> - <</options>> - <<elseif $PC.preg > 42>> - <<options $PC.preg>> - You are ''<<print $PC.preg>> weeks pregnant with octuplets'' and your - water just broke. - <<option 0 "Not pregnant" "$PC.pregType = 0, $PC.labor = 0">> - <</options>> - <<elseif $PC.preg > 37>> - <<options $PC.preg>> - You are ''<<print $PC.preg>> weeks pregnant'' and going to go into labor soon. - <<option 0 "Not pregnant" "$PC.pregType = 0, $PC.labor = 0">> - <<option 43 "Stuffed to capacity" "$PC.pregType = 8, $PC.labor = 1">> - <</options>> - <<elseif $PC.preg > 0>> - <<options $PC.preg>> - You are ''<<print $PC.preg>> weeks pregnant'' so there is no need to - worry about contraceptives. - <<option 0 "Not pregnant" "$PC.pregType = 0">> - <<option 40 "Ready to drop">> - <<option 43 "Stuffed to capacity" "$PC.pregType = 8, $PC.labor = 1">> - <</options>> + <<run _option.addComment("You can't get pregnant, however there will be a slight increase to living expenses.")>> <</if>> <<if $PC.counter.birthsTotal > 0>> - <div> - You have given birth to ''$PC.counter.birthsTotal'' babies. - </div> + <<run _options.addOption("").addComment("You have given birth to ''$PC.counter.birthsTotal'' babies.")>> <</if>> - <<options $PC.pregMood>> - Your hormones - <<option 0 "Not affected">> - do not affect you. Vanilla setting. - <<option 1 "Caring and motherly">> - influence you to be ''caring and motherly''. Sex scene alterations; - slaves will trust you more, but may try to take advantage of your mercy. - <<option 2 "Aggressive and domineering">> - influence you to be ''aggressive and domineering''. Sex scene alterations; slaves will fear you more, but will become more submissive to you. - <</options>> + <<set _option = _options.addOption("Hormone effects", "pregMood", $PC) + .addValueList([["None", 0], ["Caring and motherly", 1], ["Aggressive and domineering", 2]])>> + <<if $PC.pregMood === 1>> + <<run _option.addComment("Sex scene alterations; slaves will trust you more, but may try to take advantage of your mercy.")>> + <<elseif $PC.pregMood === 2>> + <<run _option.addComment("Sex scene alterations; slaves will fear you more, but will become more submissive to you.")>> + <</if>> <</if>> - <<switch $PC.boobs>> - <<case 400>> - <<set _PCCreationBoobSize = "small B-cups">> - <<case 500>> - <<set _PCCreationBoobSize = "unnoticeable C-cups">> - <<case 700>> - <<set _PCCreationBoobSize = "unremarkable D-cups">> - <<case 1100>> - <<set _PCCreationBoobSize = "noticeable F-cups">> - <<case 1300>> - <<set _PCCreationBoobSize = "huge G-cups">> - <<case 1500>> - <<set _PCCreationBoobSize = "massive H-cups">> - <<default>> - <<set _PCCreationBoobSize = "average DD-cups">> - <</switch>> - - <<if $PC.boobsImplant>> - <<set _PCCreationBreast = "fake">> + <<if $PC.title === 1 && $PC.boobs <= 100>> + <<set _option = _options.addOption("Your chest is", "boobs", $PC).addValue("Manly", 100, () => V.PC.boobsImplant = 0)>> <<else>> - <<set _PCCreationBreast = "all natural">> + <<set _option = _options.addOption("Your breasts are", "boobs", $PC).addValue("Flat", 100, () => V.PC.boobsImplant = 0)>> <</if>> + <<run _option.addValueList([["C-cups", 500], ["DD-cups", 900], ["F-cups", 1100], ["G-cups", 1300]])>> - <<if $PC.boobs > 300>> - <<options $PC.boobs>> - Your breasts are ''_PCCreationBoobSize'' and ''_PCCreationBreast''. - <<option 500 "C-cup" "$PC.boobsImplant = 0">> - <<option 900 "DD-cup" "$PC.boobsImplant = 0">> - <<option 1100 "F-cup" "$PC.boobsImplant = 0">> - <<option 1300 "G-cup" "$PC.boobsImplant = 0">> - <<option 1300 "G-cup implants" "$PC.boobsImplant = 400">> - <<option 0 "Remove them" "$PC.boobs = 100, $PC.boobsImplant = 0">> - <</options>> - <<else>> - <<if $PC.title == 1>> - <<options $PC.boobs>> - Your chest is ''manly.'' - <<option 500 "Add breasts">> - <</options>> - <<else>> - <<options $PC.boobs>> - You are ''flat chested.'' - <<option 500 "Grow breasts">> - <</options>> - <</if>> + <<if $PC.boobs >= 500>> + <<run _options.addOption("Your breasts are", "boobsImplant", $PC) + .addValueList([["All natural", 0], ["Fake", 400]])>> <</if>> + + <<print App.UI.DOM.includeDOM(_options.render())>> <<else>> You are a diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw index b462ee675310983d835b3524983501636047904b..9c6edd7fbf3beb17f5eebe4606984e1fd5145c5f 100644 --- a/src/npc/startingGirls/startingGirls.tw +++ b/src/npc/startingGirls/startingGirls.tw @@ -1709,5 +1709,3 @@ </div> </div> - -<<unset $PCCreationSex>>