From 5249fbd3bb2d3c4ab010cd05bf08958c4167ac46 Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Tue, 12 May 2020 15:29:11 +0200 Subject: [PATCH] convert starting girls to new options system --- src/npc/startingGirls/startingGirls.tw | 1622 +++++++++--------------- 1 file changed, 572 insertions(+), 1050 deletions(-) diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw index 8c9aca49dbc..e605307ccf6 100644 --- a/src/npc/startingGirls/startingGirls.tw +++ b/src/npc/startingGirls/startingGirls.tw @@ -384,1145 +384,667 @@ <div id="Overview" class="tabcontent"> <div class="content"> - <<options $activeSlave.devotion>> - ''Devotion:'' - <<optionlt -95 -100 "Utterly hateful">> - @@.darkviolet;Utterly hateful.@@ - <<optionlt -50 -70 "Hateful">> - @@.darkviolet;Hateful.@@ - <<optionlt -20 -35 "Resistant">> - @@.mediumorchid;Resistant.@@ - <<optionlte 20 0 "Ambivalent">> - @@.yellow;Ambivalent.@@ - <<optionlte 50 35 "Accepting">> - @@.hotpink;Accepting.@@ - <<optionlte 95 70 "Devoted">> - @@.deeppink;Devoted.@@ - <<optiondefault 100 "Worshipful">> - @@.magenta;Worshipful.@@ - <<option>> - <<textbox2 "$activeSlave.devotion" $activeSlave.devotion "Starting Girls">> - <<comment>> - <<if $activeSlave.devotion > 20>> - <span class="red" style="font-style: italic"> - Starting slaves incur - <<if $activeSlave.devotion > 50>> - a severe cost penalty at very high - <<else>> - an additional cost penalty at high - <</if>> - levels of devotion. This slave's - <<if $activeSlave.actualAge >= 25>> - <<if $activeSlave.actualAge > 35>>advanced <</if>> - age decreases the penalty. - <<else>> - young age requires paying the full penalty. - <</if>> - </span> + <<set _options = new App.UI.OptionsGroup()>> + + <<set _option = _options.addOption("Devotion", "devotion", $activeSlave).showTextBox() + .addRange(-100, -95, "<", "Utterly hateful") + .addRange(-70, -50, "<", "Hateful") + .addRange(-35, -20, "<", "Resistant") + .addRange(0, 20, "<", "Ambivalent") + .addRange(35, 50, "<", "Accepting") + .addRange(70, 95, "<", "Devoted") + .addRange(100, 95, ">=", "Worshipful")>> + <<if $activeSlave.devotion > 20>> + <<set _comment = "Starting slaves incur">> + <<if $activeSlave.devotion > 50>> + <<run _comment += " severe cost penalty at very high">> + <<else>> + <<run _comment += " an additional cost penalty at high">> <</if>> - <</options>> - - <<options $activeSlave.trust>> - ''Trust:'' - <<optionlt -95 -100 "Abjectly terrified">> - @@.goldenrod;Abjectly terrified.@@ - <<optionlt -50 -70 "Terrified">> - @@.goldenrod;Terrified.@@ - <<optionlt -20 -35 "Frightened">> - @@.gold;Frightened.@@ - <<optionlte 20 0 "Fearful">> - @@.yellow;Fearful.@@ - <<optionlte 50 35 "Careful">> - @@.mediumaquamarine;Careful.@@ - <<optionlte 95 70 "Trusting">> - @@.mediumseagreen;Trusting.@@ - <<optiondefault 100 "Absolute trust">> - @@.seagreen;Absolute trust.@@ - <<option>> - <<textbox2 "$activeSlave.trust" $activeSlave.trust "Starting Girls">> - <</options>> - - <<if $activeSlave.indenture == -1>> - <<options $activeSlave.indenture>> - ''Legal status:'' - <<option -1 "Slave" "$activeSlave.indentureRestrictions = 0">> - Slave. - <<optiondefault 52 "Indentured Servant" "$activeSlave.indentureRestrictions = 0">> - <</options>> - <<else>> - <<options $activeSlave.indenture>> - ''Legal status:'' Indentured servant - <<option -1 "Slave" "$activeSlave.indentureRestrictions = 0">> - <<optiondefault 52 "Indentured Servant" "$activeSlave.indentureRestrictions = 0">> - <<option>> - with <<textbox2 "$activeSlave.indenture" $activeSlave.indenture "Starting Girls">> weeks remaining. - <</options>> - - <<options $activeSlave.indentureRestrictions>> - ''Indenture restrictions:'' - <<option 0 "None">> - None. - <<option 1 "Protective">> - Protective. - <<option 2 "Restrictive">> - Restrictive. - <</options>> + <<run _comment += " levels of devotion. This slave's">> + <<if $activeSlave.actualAge >= 25>> + <<if $activeSlave.actualAge > 35>>advanced <</if>> + <<run _comment += " age decreases the penalty.">> + <<else>> + <<run _comment += " young age requires paying the full penalty.">> + <</if>> + <<run _option.addComment(`<span class=warning>${_comment}</span>`)>> <</if>> - <<options $activeSlave.actualAge>> - ''Age:'' - <<option>> - <<textbox2 "$activeSlave.actualAge" $activeSlave.actualAge "Starting Girls" "SlaveDatatypeCleanup($activeSlave)">> - <<option>> - [[Resync characteristics to age|Starting Girls][resyncSlaveToAge($activeSlave)]] | - [[Resync only height to age|Starting Girls][$activeSlave.height = Height.random($activeSlave)]] - <<comment>> - (It is recommended to resync if you change age significantly) - <</options>> - - <<options $activeSlave.birthWeek>> - ''Birth week:'' - <<option>> - <<textbox2 "$activeSlave.birthWeek" $activeSlave.birthWeek "Starting Girls">> - <</options>> - - <<options $activeSlave.genes>> - ''Genes:'' - <<option "XX" "XX" "$activeSlave.dick = 0, $activeSlave.balls = 0, $activeSlave.clit = 0, $activeSlave.pubertyXY = 0, $activeSlave.pubertyAgeXY = $potencyAge, $activeSlave.pubertyXX = ($activeSlave.pubertyAgeXX < $activeSlave.actualAge ? 1 : 0), $activeSlave.vagina = Math.max(0, $activeSlave.vagina), $activeSlave.boobs = Math.max(500, $activeSlave.boobs), $activeSlave.balls = 0, $activeSlave.scrotum = 0, $activeSlave.prostate = 0, $activeSlave.shoulders = either(-2,-1,0), $activeSlave.hips = either(-2,-1,0)">> - @@.yellow;XX@@ (Female) - <<option "XY" "XY" "$activeSlave.dick = 3, $activeSlave.vagina = -1, WombFlush($activeSlave), $activeSlave.belly = 0, $activeSlave.bellyPreg = 0, $activeSlave.pubertyXY = ($activeSlave.pubertyAgeXY < $activeSlave.actualAge ? 1 : 0), $activeSlave.pubertyXX = 0, $activeSlave.pubertyAgeXX = $fertilityAge, $activeSlave.ovaries = 0, $activeSlave.boobs = 0, $activeSlave.balls = 3, $activeSlave.scrotum = 3, $activeSlave.prostate = 1, $activeSlave.shoulders = either(0,1,2), $activeSlave.hips = either(0,1,2)">> - @@.yellow;XY@@ (Male) - <</options>> - - <<options $activeSlave.health.condition>> - ''Condition:'' - <<optionlt -20 -40 "Unhealthy">> - @@.red;Unhealthy.@@ - <<optionlt 20 0 "Healthy">> - @@.yellow;Healthy.@@ - <<optionlt 60 40 "Very healthy">> - @@.green;Very healthy.@@ - <<optiondefault 80 "Extremely healthy">> - @@.green;Extremely healthy.@@ - <</options>> - - <<options $activeSlave.prestige>> - ''Prestige:'' - <<option 0 "None">> - None. - <<option 1 "Locally known">> - @@.green;Locally known.@@ - <<option 2 "Regionally famous">> - @@.green;Regionally famous.@@ - <<option 3 "World renowned">> - @@.green;World renowned.@@ - <<comment>> - <<if $activeSlave.prestige>> - <span class="red" style="font-style: italic"> - Starting slaves incur an extreme cost penalty for prestige. This slave's - <<if $activeSlave.actualAge >= 25>> - <<if $activeSlave.actualAge > 35>>advanced <</if>> - age decreases the penalty. - <<else>> - young age requires paying the full penalty. - <</if>> - </span> + <<run _options.addOption("Trust", "trust", $activeSlave).showTextBox() + .addRange(-100, -95, "<", "Abjectly terrified") + .addRange(-70, -50, "<", "Terrified") + .addRange(-35, -20, "<", "Frightened") + .addRange(0, 20, "<", "Fearful") + .addRange(35, 50, "<", "Careful") + .addRange(70, 95, "<", "Trusting") + .addRange(100, 95, ">=", "Absolute trust")>> + + <<run _options.addOption("Legal status", "indenture", $activeSlave) + .addValue("Slave", -1, () => V.activeSlave.indentureRestrictions = 0) + .addRange(52, 0, ">=", "Indentured Servant")>> + <<if $activeSlave.indenture > -1>> + <<run _options.addOption("Remaining weeeks", "indenture", $activeSlave).showTextBox()>> + + <<run _options.addOption("Indenture restrictions", "indentureRestrictions", $activeSlave) + .addValueList([["None", 0], ["Protective", 1], ["Restrictive", 2]])>> + <</if>> + + <<run _options.addOption("Age", "actualAge", $activeSlave).showTextBox() + .customButton("Resync characteristics to age", () => resyncSlaveToAge(V.activeSlave)) + .customButton("Resync only height to age", () => V.activeSlave.height = Height.random(V.activeSlave)) + .addComment("It is recommended to resync if you change age significantly")>> + + <<run _options.addOption("Birth week", "birthWeek", $activeSlave).showTextBox()>> + + <<run _options.addOption("Genes", "genes", $activeSlave) + .addValue("XX (Female)", "XX", () => { + V.activeSlave.dick = 0; + V.activeSlave.balls = 0; + V.activeSlave.clit = 0; + V.activeSlave.pubertyXY = 0; + V.activeSlave.pubertyAgeXY = V.potencyAge; + V.activeSlave.pubertyXX = (V.activeSlave.pubertyAgeXX < V.activeSlave.actualAge ? 1 : 0); + V.activeSlave.vagina = Math.max(0, V.activeSlave.vagina); + V.activeSlave.boobs = Math.max(500, V.activeSlave.boobs); + V.activeSlave.balls = 0; + V.activeSlave.scrotum = 0; + V.activeSlave.prostate = 0; + V.activeSlave.shoulders = either(-2,-1,0); + V.activeSlave.hips = either(-2,-1,0); + }).addValue("XY (Male)", "XY", () => { + V.activeSlave.dick = 3; + V.activeSlave.vagina = -1; + WombFlush(V.activeSlave); + V.activeSlave.belly = 0; + V.activeSlave.bellyPreg = 0; + V.activeSlave.pubertyXY = (V.activeSlave.pubertyAgeXY < V.activeSlave.actualAge ? 1 : 0); + V.activeSlave.pubertyXX = 0; + V.activeSlave.pubertyAgeXX = V.fertilityAge; + V.activeSlave.ovaries = 0; + V.activeSlave.boobs = 0; + V.activeSlave.balls = 3; + V.activeSlave.scrotum = 3; + V.activeSlave.prostate = 1; + V.activeSlave.shoulders = either(0,1,2); + V.activeSlave.hips = either(0,1,2); + })>> + + <<run _options.addOption("Condition", "condition", $activeSlave.health) + .addValueList([["Unhealthy", -40], ["Healthy", 0], ["Very healthy", 40], ["Extremely healthy", 80]])>> + + <<set _option = _options.addOption("Prestige", "prestige", $activeSlave) + .addValueList([["None", 0], ["Locally known", 1], ["Regionally famous", 2], ["World renowned", 3]])>> + <<if $activeSlave.prestige > 0>> + <<set _comment = "Starting slaves incur an extreme cost penalty for prestige. This slave's">> + <<if $activeSlave.actualAge >= 25>> + <<if $activeSlave.actualAge > 35>> + <<set _comment += " advanced">> <</if>> - <</options>> + <<set _comment += " age decreases the penalty.">> + <<else>> + <<set _comment += " young age requires paying the full penalty.">> + <</if>> + <<run _option.addComment(`<span class=warning>${_comment}</span>`)>> + <</if>> + + <<run _options.addOption("$His nationality is", "nationality", $activeSlave).showTextBox()>> - <<options>> - $His nationality is $activeSlave.nationality. - <<option>> - <<textbox2 "$activeSlave.nationality" $activeSlave.nationality "Starting Girls">> - <</options>> <<if $seeRace == 1>> - <<options $activeSlave.race>> - ''Ethnicity:'' $activeSlave.race - <<option "white" "White">> - <<option "black" "Black">> - <<option "latina" "Latina">> - <<option "asian" "Asian">> - <<option "middle eastern" "Middle Eastern">> - <<option "amerindian" "Amerindian">> - <<option "southern european" "Southern European">> - <<option "semitic" "Semitic">> - <<option "malay" "Malay">> - <<option "indo-aryan" "Indo-Aryan">> - <<option "pacific islander" "Pacific Islander">> - <<option "mixed race" "Mixed Race">> - <<option>> - <<textbox2 "$activeSlave.race" $activeSlave.race "Starting Girls">> - <</options>> + <<run _options.addOption("$His ethnicity is", "nationality", $activeSlave).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"]])>> <</if>> - <<options $activeSlave.origSkin>> - ''Skin color:'' $activeSlave.origSkin - <<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 "$activeSlave.origSkin" $activeSlave.origSkin "Starting Girls">> - <</options>> - - <<options $activeSlave.intelligence>> - ''Intelligence:'' - <<optionlt -95 -100 "Moronic">>@@.orangered;Moronic.@@ - <<optionlt -50 -60 "Very stupid">>@@.orangered;Very stupid.@@ - <<optionlt -15 -30 "Stupid">>@@.orangered;Stupid.@@ - <<optionlt 15 0 "Average">>Average. - <<optionlte 50 30 "Smart">>@@.deepskyblue;Smart.@@ - <<optionlte 95 60 "Very smart">>@@.deepskyblue;Very smart.@@ - <<optiondefault 100 "Brilliant">>@@.deepskyblue;Brilliant.@@ - <</options>> - - <<options $activeSlave.intelligenceImplant>> - ''Education:'' - <<optionlt 15 0 "Uneducated">> Uneducated. - <<optionlt 30 15 "Educated">> @@.deepskyblue;Educated.@@ - <<optiondefault 30 "Well educated">> @@.deepskyblue;Well educated.@@ - <</options>> + <<run _options.addOption("$His skin color is", "origSkin", $activeSlave).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"]])>> + + <<run _options.addOption("Intelligence", "intelligence", $activeSlave) + .addValueList([["Moronic", -100], ["Very stupid", -60], ["Stupid", -30], ["Average", 0], ["Smart", 30], ["Very smart", 60], ["Brilliant", 100]])>> + + <<run _options.addOption("Education", "intelligenceImplant", $activeSlave) + .addValueList([["Uneducated", 0], ["Educated", 15], ["Well educated", 30]])>> + <<print App.UI.DOM.includeDOM(_options.render())>> </div> </div> <div id="Physical" class="tabcontent"> <div class="content"> - <<options $activeSlave.height>> - ''Height:'' <<= heightToEitherUnit($activeSlave.height)>> - <<optionlt 150 145 "Petite">> - Petite. - <<optionlt 160 155 "Short">> - Short. - <<optionlt 170 165 "Average">> - Average. - <<optionlt 185 180 "Tall">> - Tall. - <<optiondefault 190 "Very tall">> - Very tall. - <<option>> - <<textbox2 "$activeSlave.height" $activeSlave.height "Starting Girls">>cm - <<comment>> - <<link `"Average height for a " + $activeSlave.actualAge + " year old is " + Math.round(Height.mean($activeSlave)) + "cm. Apply."`>> - <<= resyncSlaveHight($activeSlave)>> <<goto "Starting Girls">> - <</link>> - <<if $cheatMode == 1>> | [[Make dwarf|Starting Girls][$activeSlave.height = Height.random($activeSlave, {limitMult: [-4, -1], spread: 0.15})]] <</if>> - <<if $cheatMode == 1>> | [[Make giant|Starting Girls][$activeSlave.height = Height.random($activeSlave, {limitMult: [3, 10], spread: 0.15})]] <</if>> - <</options>> - - <<options $activeSlave.weight>> - ''Weight:'' - <<optionlt -95 -100 "Emaciated">> - @@.red;Emaciated.@@ - <<optionlt -30 -50 "Skinny">> - @@.red;Skinny.@@ - <<optionlt -10 -20 "Thin">> - Thin. - <<optionlte 10 0 "Average">> - Average. - <<optionlte 30 20 "Plush">> - Plush. - <<optionlte 95 50 "Chubby">> - @@.red;Chubby.@@ - <<optionlte 130 100 "Fat">> - @@.red;Fat.@@ - <<optionlte 160 140 "Obese">> - @@.red;Obese.@@ - <<optionlte 190 180 "Super obese">> - @@.red;Super obese.@@ - <<optiondefault 200 "Dangerously obese">> - @@.red;Dangerously obese.@@ - <</options>> - - <<options $activeSlave.muscles>> - ''Muscles:'' - <<optionlt -96 -100 "Frail">> - Frail. - <<optionlt -51 -66 "Very weak">> - Very weak. - <<optionlt -6 -41 "Weak">> - Weak. - <<optionlt 5 0 "Normal">> - Normal. - <<optionlt 30 20 "Toned">> - Toned. - <<optionlt 50 40 "Well built">> - Well built. - <<optionlt 95 65 "Quite muscular">> - Quite muscular. - <<optiondefault 100 "Ripped">> - Ripped. - <</options>> - - <<options $activeSlave.waist>> - ''Waist:'' - <<optionlt -95 -100 "Absurd">> - Absurd. - <<optionlt -40 -55 "Hourglass">> - Hourglass. - <<optionlt -15 -25 "Feminine">> - Feminine. - <<optionlte 10 0 "Average">> - Average. - <<optionlte 40 15 "Unattractive">> - Unattractive. - <<optionlte 95 55 "Ugly">> - Ugly. - <<optiondefault 100 "Masculine">> - Masculine. - <</options>> - - <<if $seeDicks != 0>> - <<options $activeSlave.faceShape>> - ''Facial appearance:'' $activeSlave.faceShape - <<option "normal" "Normal">> - <<option "masculine" "Masculine">> - <<option "androgynous" "Androgynous">> - <<option "cute" "Cute">> - <<option "sensual" "Sensual">> - <<option "exotic" "Exotic">> - <</options>> - <<else>> - <<options $activeSlave.faceShape>> - ''Facial appearance:'' $activeSlave.faceShape - <<option "normal" "Normal">> - <<option "androgynous" "Androgynous">> - <<option "cute" "Cute">> - <<option "sensual" "Sensual">> - <<option "exotic" "Exotic">> - <</options>> + <<set _options = new App.UI.OptionsGroup()>> + + <<run _options.addOption("Height: <<= heightToEitherUnit($activeSlave.height)>>", "height", $activeSlave).showTextBox("cm") + .addRange(145, 150, "<", "Petite") + .addRange(155, 160, "<", "Short") + .addRange(165, 170, "<", "Average") + .addRange(180, 185, "<", "Tall") + .addRange(190, 185, ">=", "Very tall")>> + <<set _option = _options.addOption(`Average height for a ${$activeSlave.actualAge} year old """is ${heightToEitherUnit(Math.round(Height.mean(V.activeSlave)))}"""`) + .customButton("Make average", () => resyncSlaveHight($activeSlave))>> + <<if $cheatMode === 1>> + <<run _option.customButton("Make dwarf", () => V.activeSlave.height = Height.random(V.activeSlave, {limitMult: [-4, -1], spread: 0.15})) + .customButton("Make giant", () => V.activeSlave.height = Height.random(V.activeSlave, {limitMult: [3, 10], spread: 0.15}))>> <</if>> - <<options $activeSlave.face>> - ''Facial attractiveness:'' - <<optionlt -95 -100 "Very ugly">> Very ugly. - <<optionlt -40 -55 "Ugly">> Ugly. - <<optionlt -10 -15 "Unattractive">> Unattractive. - <<optionlte 10 0 "Average">> Average. - <<optionlte 40 15 "Attractive">> Attractive. - <<optionlte 95 55 "Beautiful">> Beautiful. - <<optiondefault 100 "Very beautiful">> Very beautiful. - <</options>> - + <<run _options.addOption("Weight", "weight", $activeSlave) + .addRange(-100, -95, "<", "Emaciated") + .addRange(-50, -30, "<", "Skinny") + .addRange(-20, -10, "<", "Thin") + .addRange(0, 10, "<", "Average") + .addRange(20, 30, "<", "Plush") + .addRange(50, 95, "<", "Chubby") + .addRange(100, 130, "<", "Fat") + .addRange(140, 160, "<", "Obese") + .addRange(180, 190, "<", "Super obese") + .addRange(200, 190, ">=", "Dangerously obese")>> + + <<run _options.addOption("Muscles", "muscles", $activeSlave) + .addRange(-100, -96, "<", "Frail") + .addRange(-66, -51, "<", "Very weak") + .addRange(-41, -6, "<", "Weak") + .addRange(0, 5, "<", "Normal") + .addRange(20, 30, "<", "Toned") + .addRange(40, 50, "<", "Well built") + .addRange(65, 95, "<", "Quite muscular") + .addRange(100, 95, ">=", "Ripped")>> + + <<run _options.addOption("Waist", "waist", $activeSlave) + .addRange(-100, -95, "<", " Absurd") + .addRange(-55, -40, "<", "Hourglass") + .addRange(-25, -15, "<", "Feminine") + .addRange(0, 10, "<", "Average") + .addRange(15, 40, "<", "Unattractive") + .addRange(55, 95, "<", "Ugly") + .addRange(100, 10, ">=", "Masculine")>> + + <<set _option = _options.addOption("Facial appearance", "faceShape", $activeSlave) + .addValue("Normal", "normal")>> + <<if $seeDicks !== 0>> + <<run _option.addValue("Masculine", "masculine")>> + <</if>> + <<run _option.addValueList([["Androgynous", "androgynous"], ["Cute", "cute"], ["Sensual", "sensual"], ["Exotic", "exotic"]])>> + + <<run _options.addOption("Facial attractiveness", "face", $activeSlave) + .addRange(-100, -95, "<", "Very ugly") + .addRange(-55, -40, "<", "Ugly") + .addRange(-15, -10, "<", "Unattractive") + .addRange(0, 10, "<", "Average") + .addRange(15, 40, "<", "Attractive") + .addRange(55, 95, "<", "Beautiful") + .addRange(100, 95, ">=", "Very beautiful")>> + + <<set _option = _options.addOption("Lips", "lips", $activeSlave) + .addRange(5, 10, "<", "Thin") + .addRange(15, 20, "<", "Normal") + .addRange(25, 40, "<", "Pretty") + .addRange(55, 70, "<", "Plush")>> <<if $seeExtreme == 1>> - <<options $activeSlave.lips>> - ''Lips:'' - <<optionlte 10 5 "Thin">> Thin. - <<optionlte 20 15 "Normal">> Normal. - <<optionlte 40 25 "Pretty">> Pretty. - <<optionlte 70 55 "Plush">> Plush. - <<optionlte 95 85 "Huge">> Huge. - <<optiondefault 100 "Facepussy">> Facepussy. - <</options>> + <<run _option.addRange(85, 95, "<", "Huge") + .addRange(100, 95, ">=", "Facepussy")>> <<else>> - <<options $activeSlave.lips>> - ''Lips:'' - <<optionlte 10 5 "Thin">> Thin. - <<optionlte 20 15 "Normal">> Normal. - <<optionlte 40 25 "Pretty">> Pretty. - <<optionlte 70 55 "Plush">> Plush. - <<optionlte 95 85 "Huge">> Huge. - <</options>> + <<run _option.addRange(85, 70, ">=", "Huge")>> <</if>> - <<options $activeSlave.voice>> - ''Voice:'' - <<option 0 "Mute">> - Mute. - <<option 1 "Deep">> - Deep. - <<option 2 "Normal">> - Normal. - <<option 3 "High">> - High. - <</options>> - - <<if $activeSlave.voice != 0>> - <<options $activeSlave.accent>> - ''$language:'' - <<option 0 "Unaccented">> - Unaccented. - <<option 1 `"Pretty " + aNational($activeSlave.nationality) + " accent"`>> - Pretty <<print aNational($activeSlave.nationality)>> accent. - <<option 2 `"Thick " + aNational($activeSlave.nationality) + " accent"`>> - Thick <<print aNational($activeSlave.nationality)>> accent. - <<optiondefault 3 "Not fluent">> - Not fluent. - <</options>> + <<run _options.addOption("Voice", "voice", $activeSlave) + .addValueList([["Mute", 0], ["Deep", 1], ["Normal", 2], ["High", 3]])>> + + <<if $activeSlave.voice !== 0>> + <<run _options.addOption("$language", "accent", $activeSlave) + .addValueList([["Unaccented", 0], [`Pretty ${aNational($activeSlave.nationality)} accent`, 1], + [`Thick ${aNational($activeSlave.nationality)} accent`, 2], ["Not fluent", 3]])>> <</if>> + <<set _option = _options.addOption("Teeth", "teeth", $activeSlave) + .addValueList([["Croooked", "crooked"], ["Gapped", "gapped"], ["Braces", "straightening braces"]])>> <<if $activeSlave.physicalAge >= 12>> <<if $activeSlave.teeth == "baby" || $activeSlave.teeth == "mixed">> <<set $activeSlave.teeth = "normal">> <</if>> - <<options $activeSlave.teeth>> - ''Teeth:'' $activeSlave.teeth - <<option "crooked" "Crooked">> - <<option "gapped" "Gapped">> - <<option "straightening braces" "Braces">> - <<optiondefault "normal" "Straight">> - <</options>> + <<run _option.addValue("Straight", "normal")>> <<elseif $activeSlave.physicalAge >= 6>> <<if $activeSlave.teeth == "baby" || $activeSlave.teeth == "normal" || $activeSlave.teeth == "">> <<set $activeSlave.teeth = "mixed">> <</if>> - <<options $activeSlave.teeth>> - ''Teeth:'' $activeSlave.teeth - <<option "crooked" "Crooked">> - <<option "gapped" "Gapped">> - <<option "straightening braces" "Braces">> - <<option "mixed" "Mixed adult & child">> - <</options>> + <<run _option.addValue("Mixed adult & child", "mixed")>> <<else>> <<if $activeSlave.teeth == "mixed" || $activeSlave.teeth == "normal" || $activeSlave.teeth == "">> <<set $activeSlave.teeth = "mixed">> <</if>> - <<options $activeSlave.teeth>> - ''Teeth:'' $activeSlave.teeth - <<option "crooked" "Crooked">> - <<option "gapped" "Gapped">> - <<option "straightening braces" "Braces">> - <<option "baby" "Baby">> - <</options>> + <<run _option.addValue("Baby", "baby")>> <</if>> - <<options $activeSlave.boobs>> - ''Breasts:'' - <<optionlte 200 200 "Flat">> Flat (AA-cup). - <<optionlte 300 300 "Small">> Small (A-cup). - <<optionlte 400 400 "Medium">> Medium (B-cup). - <<optionlte 500 500 "Healthy">> Healthy (C-cup). - <<optionlte 800 800 "Large">> Large (DD-cup). - <<optionlte 1200 1200 "Very Large">> Very Large (G-cup). - <<optionlte 2050 2050 "Huge">> Huge (K-cup). - <<optionlte 3950 3950 "Massive">> Massive (Q-cup). - <<optionlte 6000 6000 "Monstrous">> Monstrous. - <<optiondefault 8000 "Science experiment">> Science Experiment. - <<option>> - <<textbox2 "$activeSlave.boobs" $activeSlave.boobs "Starting Girls">> CCs - <</options>> - - <<options $activeSlave.lactation>> - ''Lactation:'' - <<option 2 "Artificial" "$activeSlave.lactationDuration = 2">> Artificial. - <<option 1 "Natural" "$activeSlave.lactationDuration = 2">> Natural. - <<option 0 "None" "$activeSlave.lactationDuration = 0">> None. - <</options>> - - <<options $activeSlave.nipples>> - ''Nipples:'' $activeSlave.nipples - <<option "tiny" "Tiny">> - <<option "cute" "Cute">> - <<option "puffy" "Puffy">> - <<option "inverted" "Inverted">> - <<option "huge" "Huge">> - <</options>> - - <<options $activeSlave.areolae>> - ''Areolae:'' - <<option 0 "Normal">> Normal. - <<option 1 "Large">> Large. - <<option 2 "Wide">> Wide. - <<option 3 "Huge">> Huge. - <<option 4 "Massive">> Massive. - <</options>> - - <<options $activeSlave.shoulders>> - ''Shoulders:'' - <<option -2 "Very narrow">> Very narrow. - <<option -1 "Narrow">> Narrow. - <<option 0 "Feminine">> Feminine. - <<option 1 "Broad">> Broad. - <<option 2 "Very broad">> Very broad. - <</options>> - - <<options $activeSlave.hips>> - ''Hips:'' - <<option -2 "Very narrow">> Very narrow. - <<option -1 "Narrow">> Narrow. - <<option 0 "Normal">> Normal. - <<option 1 "Broad">> Broad. - <<option 2 "Very broad">> Very broad. - <</options>> - - <<options $activeSlave.butt>> - ''Butt:'' - <<option 0 "Flat">> Flat. - <<option 1 "Small">> Small. - <<option 2 "Plump">> Plump. - <<option 3 "Big">> Big. - <<option 4 "Huge">> Huge. - <<option 5 "Enormous">> Enormous. - <<option 6 "Gigantic">> Gigantic. - <<optiondefault 7 "Massive">> Massive. - <</options>> - - <<options $activeSlave.anus>> - ''Anus:'' - <<option 0 "Virgin">> @@.lime;Virgin.@@ - <<option 1 "Normal">> Normal. - <<option 2 "Veteran">> Veteran. - <<optiondefault 3 "Gaping">> Gaping. - <</options>> - - <<options $activeSlave.vagina>> - ''Vagina:'' - <<option -1 "No vagina" "$activeSlave.preg = 0, WombFlush($activeSlave), $activeSlave.belly = 0, $activeSlave.bellyPreg = 0, $activeSlave.pubertyXX = 0,$activeSlave.pubertyAgeXX = $fertilityAge, $activeSlave.ovaries = 0">> //No vagina//. - <<option 0 "Virgin" "$activeSlave.preg = -1, $activeSlave.belly = 0, $activeSlave.bellyPreg = 0, $activeSlave.ovaries = 1">> @@.lime;Virgin.@@ - <<option 1 "Normal" "$activeSlave.preg = -1, $activeSlave.belly = 0, $activeSlave.bellyPreg = 0, $activeSlave.ovaries = 1">> Normal. - <<option 2 "Veteran" "$activeSlave.preg = -1, $activeSlave.belly = 0, $activeSlave.bellyPreg = 0, $activeSlave.ovaries = 1">> Veteran. - <<optiondefault 3 "Gaping" "$activeSlave.preg = -1, $activeSlave.belly = 0, $activeSlave.bellyPreg = 0, $activeSlave.ovaries = 1">> Gaping. - <</options>> - + <<run _options.addOption("Breasts", "boobs", $activeSlave).showTextBox("CCs") + .addRange(200, 200, "<=", "Flat (AA-cup)") + .addRange(300, 300, "<=", "Small (A-cup)") + .addRange(400, 400, "<=", "Medium (B-cup)") + .addRange(500, 500, "<=", "Healthy (C-cup)") + .addRange(800, 800, "<=", "Large (DD-cup)") + .addRange(1200, 1200, "<=", "Very Large (G-cup)") + .addRange(2050, 2050, "<=", "Huge (K-cup)") + .addRange(3950, 3950, "<=", "Massive (Q-cup)") + .addRange(6000, 6000, "<=", "Monstrous") + .addRange(8000, 6000, ">", "Science Experiment")>> + + <<run _options.addOption("Lactation", "lactation", $activeSlave) + .addValue("Artificial", 2, () => V.activeSlave.lactationDuration = 2) + .addValue("Natural", 1, () => V.activeSlave.lactationDuration = 2) + .addValue("None", 0)>> + + <<run _options.addOption("Nipples", "nipples", $activeSlave) + .addValueList([["Tiny", "tiny"], ["Cute", "cute"], ["Puffy", "puffy"], ["Inverted", "inverted"], ["Huge", "huge"]])>> + + <<run _options.addOption("Areolae", "areolae", $activeSlave) + .addValueList([["Normal", 0], ["Large", 1], ["Wide", 2], ["Huge", 3], ["Massive", 4]])>> + + <<run _options.addOption("Shoulders", "shoulders", $activeSlave) + .addValueList([["Very narrow", -2], ["Narrow", -1], ["Feminine", 0], ["Broad", 1], ["Very broad", 2]])>> + + <<run _options.addOption("Hips", "hips", $activeSlave) + .addValueList([["Very narrow", -2], ["Narrow", -1], ["Normal", 0], ["Broad", 1], ["Very broad", 2]])>> + + <<run _options.addOption("Butt", "butt", $activeSlave) + .addValueList([["Flat", 0], ["Small", 1], ["Plumb", 2], ["Big", 3], ["Huge", 4], ["Enormous", 5], ["Gigantic", 6], ["Massive", 7]])>> + + <<run _options.addOption("Anus", "anus", $activeSlave) + .addValueList([["Virgin", 0], ["Normal", 1], ["Veteran", 2], ["Gaping", 3]])>> + + <<run _options.addOption("Vagina", "vagina", $activeSlave) + .addValue("No vagina", -1, () => { + V.activeSlave.preg = 0; + WombFlush(V.activeSlave); + V.activeSlave.belly = 0; + V.activeSlave.bellyPreg = 0; + V.activeSlave.pubertyXX = 0; + V.activeSlave.pubertyAgeXX = V.fertilityAge; + V.activeSlave.ovaries = 0; + }).addValue("Virgin", 0, () => { + V.activeSlave.preg = -1; + V.activeSlave.belly = 0; + V.activeSlave.bellyPreg = 0; + V.activeSlave.ovaries = 1 + }).addValue("Normal", 1, () => { + V.activeSlave.preg = -1; + V.activeSlave.belly = 0; + V.activeSlave.bellyPreg = 0; + V.activeSlave.ovaries = 1 + }).addValue("Veteran", 2, () => { + V.activeSlave.preg = -1; + V.activeSlave.belly = 0; + V.activeSlave.bellyPreg = 0; + V.activeSlave.ovaries = 1 + }).addValue("Gaping", 3, () => { + V.activeSlave.preg = -1; + V.activeSlave.belly = 0; + V.activeSlave.bellyPreg = 0; + V.activeSlave.ovaries = 1 + })>> + <<if $activeSlave.vagina > -1>> - <<if $activeSlave.dick == 0>> - <<options $activeSlave.clit>> - ''Clit:'' - <<option 0 "Normal">> Normal. - <<option 1 "Large">> Large. - <<optiondefault 2 "Huge">> Huge. - <</options>> + <<if $activeSlave.dick === 0>> + <<run _options.addOption("Clit", "clit", $activeSlave) + .addValueList([["Normal", 0], ["Large", 1], ["Huge", 2]])>> <</if>> - <<options $activeSlave.labia>> - ''Labia:'' - <<option 0 "Normal">> Normal. - <<option 1 "Large">> Large. - <<optiondefault 2 "Huge">> Huge. - <</options>> - <<options $activeSlave.vaginaLube>> - ''Vaginal wetness:'' - <<option 0 "Dry">> Dry. - <<option 1 "Normal">> Normal. - <<optiondefault 2 "Excessive">> Excessive. - <</options>> - - <<if $seePreg != 0>> + + <<run _options.addOption("Labia", "labia", $activeSlave) + .addValueList([["Normal", 0], ["Large", 1], ["Huge", 2]])>> + + <<run _options.addOption("Vaginal wetness", "vaginaLube", $activeSlave) + .addValueList([["Dry", 0], ["Normal", 1], ["Excessive", 2]])>> + + <<if $seePreg !== 0>> /* This is only shown if slave has vagina */ - <<options $activeSlave.pubertyXX>> - ''Puberty:'' - <<option 0 "Prepubescent" "$activeSlave.pubertyAgeXX = $fertilityAge, $activeSlave.belly = 0, $activeSlave.bellyPreg = 0, WombFlush($activeSlave)">> Prepubescent. - <<option 1 "Postpubescent">> Postpubescent. - <</options>> - - <<options $activeSlave.pubertyAgeXX>> - ''Age of puberty:'' - <<option>> - <<textbox2 "$activeSlave.pubertyAgeXX" $activeSlave.pubertyAgeXX "Starting Girls">> - <</options>> - - <<if $seeHyperPreg == 1 && $cheatMode == 1 && $activeSlave.pubertyXX == 1>> - <<options $activeSlave.preg>> - ''Pregnancy:'' - <<option 43 "Bursting at the seams" "$activeSlave.pregType = 150,$activeSlave.pregWeek = 43,$activeSlave.pregKnown = 1,$activeSlave.belly = 2700000,$activeSlave.bellyPreg = 2700000,$activeSlave.pubertyXX = 1">>Bursting at the seams - (Extreme hyper pregnancy!). - <<optiongt 40 42 "Completely Filled" "$activeSlave.pregType = 8,$activeSlave.pregWeek = 42,$activeSlave.pregKnown = 1,$activeSlave.belly = 120000,$activeSlave.bellyPreg = 120000,$activeSlave.pubertyXX = 1">> Completely Filled. - <<optiongt 39 40 "Ready to drop" "$activeSlave.pregType = 1,$activeSlave.pregWeek = 40,$activeSlave.pregKnown = 1,$activeSlave.belly = 15000,$activeSlave.bellyPreg = 15000,$activeSlave.pubertyXX = 1">> Ready to drop. - <<optiongt 30 34 "Advanced" "$activeSlave.pregType = 1,$activeSlave.pregWeek = 34,$activeSlave.pregKnown = 1,$activeSlave.belly = 10000,$activeSlave.bellyPreg = 10000,$activeSlave.pubertyXX = 1">> Advanced. - <<optiongt 20 27 "Showing" "$activeSlave.pregType = 1,$activeSlave.pregWeek = 27,$activeSlave.pregKnown = 1,$activeSlave.belly = 5000,$activeSlave.bellyPreg = 5000,$activeSlave.pubertyXX = 1">> Showing. - <<optiongt 10 12 "Early" "$activeSlave.pregType = 1,$activeSlave.pregWeek = 12,$activeSlave.pregKnown = 1,$activeSlave.belly = 100,$activeSlave.bellyPreg = 100,$activeSlave.pubertyXX = 1">> Early. - <<optiongt -2 0 "None" "$activeSlave.pregType = 0,$activeSlave.belly = 0,$activeSlave.bellyPreg = 0,$activeSlave.pregSource = 0,$activeSlave.pregWeek = 0,$activeSlave.pregKnown = 0">> None. - <<optiondefault -2 "Barren" "$activeSlave.pregType = 0,$activeSlave.belly = 0,$activeSlave.bellyPreg = 0,$activeSlave.pregSource = 0,$activeSlave.pregWeek = 0,$activeSlave.pregKnown = 0">>Barren. - <</options>> - <<elseif $activeSlave.pubertyXX == 1>> - <<options $activeSlave.preg>> - ''Pregnancy:'' - <<optiongt 40 42 "Completely Filled" "$activeSlave.pregType = 8,$activeSlave.pregWeek = 42,$activeSlave.pregKnown = 1,$activeSlave.belly = 120000,$activeSlave.bellyPreg = 120000,$activeSlave.pubertyXX = 1">> Completely Filled. - <<optiongt 39 40 "Ready to drop" "$activeSlave.pregType = 1,$activeSlave.pregWeek = 40,$activeSlave.pregKnown = 1,$activeSlave.belly = 15000,$activeSlave.bellyPreg = 15000,$activeSlave.pubertyXX = 1">> Ready to drop. - <<optiongt 30 34 "Advanced" "$activeSlave.pregType = 1,$activeSlave.pregWeek = 34,$activeSlave.pregKnown = 1,$activeSlave.belly = 10000,$activeSlave.bellyPreg = 10000,$activeSlave.pubertyXX = 1">> Advanced. - <<optiongt 20 27 "Showing" "$activeSlave.pregType = 1,$activeSlave.pregWeek = 27,$activeSlave.pregKnown = 1,$activeSlave.belly = 5000,$activeSlave.bellyPreg = 5000,$activeSlave.pubertyXX = 1">> Showing. - <<optiongt 10 12 "Early" "$activeSlave.pregType = 1,$activeSlave.pregWeek = 12,$activeSlave.pregKnown = 1,$activeSlave.belly = 100,$activeSlave.bellyPreg = 100,$activeSlave.pubertyXX = 1">> Early. - <<optiongt -2 0 "None" "$activeSlave.pregType = 0,$activeSlave.belly = 0,$activeSlave.bellyPreg = 0,$activeSlave.pregSource = 0,$activeSlave.pregWeek = 0,$activeSlave.pregKnown = 0">> None. - <<optiondefault -2 "Barren" "$activeSlave.pregType = 0,$activeSlave.belly = 0,$activeSlave.bellyPreg = 0,$activeSlave.pregSource = 0,$activeSlave.pregWeek = 0,$activeSlave.pregKnown = 0">>Barren. - <</options>> + <<run _options.addOption("Puberty", "pubertyXX", $activeSlave) + .addValue("Prepubescent", 0, () => { + V.activeSlave.pubertyAgeXX = V.fertilityAge; + V.activeSlave.belly = 0; + V.activeSlave.bellyPreg = 0; + WombFlush(V.activeSlave) + }).addValue("Postpubescent", 1)>> + + <<run _options.addOption("Age of puberty", "pubertyAgeXX", $activeSlave).showTextBox()>> + + <<if $activeSlave.pubertyXX === 1>> + <<set _option = _options.addOption("Age of puberty", "preg", $activeSlave)>> + <<if $seeHyperPreg === 1 && $cheatMode === 1>> + <<run _option.addValue("Bursting at the seams", 43, () => { + V.activeSlave.pregType = 150; + V.activeSlave.pregWeek = 43; + V.activeSlave.pregKnown = 1; + V.activeSlave.belly = 2700000; + V.activeSlave.bellyPreg = 2700000; + V.activeSlave.pubertyXX = 1; + })>> + <<if $activeSlave.preg === 43>> + <<run _option.addComment("Extreme hyper pregnancy!")>> + <</if>> + <</if>> + <<run _option.addValue("Completely Filled", 42, () => { + V.activeSlave.pregType = 8; + V.activeSlave.pregWeek = 42; + V.activeSlave.pregKnown = 1; + V.activeSlave.belly = 120000; + V.activeSlave.bellyPreg = 120000; + V.activeSlave.pubertyXX = 1; + }).addValue("Ready to drop", 40, () => { + V.activeSlave.pregType = 1; + V.activeSlave.pregWeek = 40; + V.activeSlave.pregKnown = 1; + V.activeSlave.belly = 15000; + V.activeSlave.bellyPreg = 15000; + V.activeSlave.pubertyXX = 1; + }).addValue("Advanced", 34, () => { + V.activeSlave.pregType = 1; + V.activeSlave.pregWeek = 34; + V.activeSlave.pregKnown = 1; + V.activeSlave.belly = 10000; + V.activeSlave.bellyPreg = 10000; + V.activeSlave.pubertyXX = 1; + }).addValue("Showing", 27, () => { + V.activeSlave.pregType = 1; + V.activeSlave.pregWeek = 27; + V.activeSlave.pregKnown = 1; + V.activeSlave.belly = 5000; + V.activeSlave.bellyPreg = 5000; + V.activeSlave.pubertyXX = 1; + }).addValue("Early", 12, () => { + V.activeSlave.pregType = 1; + V.activeSlave.pregWeek = 12; + V.activeSlave.pregKnown = 1; + V.activeSlave.belly = 100; + V.activeSlave.bellyPreg = 100; + V.activeSlave.pubertyXX = 1; + }).addValue("None", 0, () => { + V.activeSlave.pregType = 0; + V.activeSlave.belly = 0; + V.activeSlave.bellyPreg = 0; + V.activeSlave.pregSource = 0; + V.activeSlave.pregWeek = 0; + V.activeSlave.pregKnown = 0; + }).addValue("Barren", -2, () => { + V.activeSlave.pregType = 0; + V.activeSlave.belly = 0; + V.activeSlave.bellyPreg = 0; + V.activeSlave.pregSource = 0; + V.activeSlave.pregWeek = 0; + V.activeSlave.pregKnown = 0; + })>> <</if>> + <<if $PC.dick > 0 && $activeSlave.preg > 0>> - <<options $activeSlave.pregSource>> - ''Father of child:'' - <<option -1 "My child">> Carrying my child. - <<option 0 "Other">> Not me. - <</options>> + <<run _options.addOption("Father of child", "pregSource", $activeSlave) + .addValueList([["My child", -1], ["Not me", 0]])>> <</if>> <</if>> <</if>> - <<if $seeDicks != 0 || $makeDicks == 1>> - <<options $activeSlave.dick>> - ''Penis:'' - <<option 0 "None" "$activeSlave.balls = 0,$activeSlave.clit = 0,$activeSlave.pubertyXY = 0,$activeSlave.pubertyAgeXY = $potencyAge">> None. - <<option 1 "Tiny" "$activeSlave.clit = 0">> Tiny. - <<option 2 "Small" "$activeSlave.clit = 0">> Small. - <<option 3 "Normal" "$activeSlave.clit = 0">> Normal. - <<option 4 "Large" "$activeSlave.clit = 0">> Large. - <<optiondefault 5 "Massive" "$activeSlave.clit = 0">> Massive. - <</options>> + <<if $seeDicks !== 0 || $makeDicks === 1>> + <<run _options.addOption("Penis", "dick", $activeSlave) + .addValue("None", 0, () => { + V.activeSlave.balls = 0; + V.activeSlave.pubertyXY = 0; + V.activeSlave.pubertyAgeXY = V.potencyAge; + }).addValue("Tiny", 1, () => {V.activeSlave.clit = 0}) + .addValue("Small", 2, () => {V.activeSlave.clit = 0}) + .addValue("Normal", 3, () => {V.activeSlave.clit = 0}) + .addValue("Large", 4, () => {V.activeSlave.clit = 0}) + .addValue("Massive", 5, () => {V.activeSlave.clit = 0})>> <<if $activeSlave.dick > 0>> - <<if $seeCircumcision == 1>> - <<options $activeSlave.foreskin>> - ''Foreskin:'' - <<option 0 "Circumcised">> Circumcised. - <<option 1 "Tiny">> Tiny. - <<option 2 "Small">> Small. - <<option 3 "Normal">> Normal. - <<option 4 "Large">> Large. - <<optiondefault 5 "Massive">> Massive. - <</options>> - <<else>> - <<if $activeSlave.foreskin == 0>><<set $activeSlave.foreskin = 3>><</if>> - <<options $activeSlave.foreskin>> - ''Foreskin:'' - <<option 1 "Tiny">> Tiny. - <<option 2 "Small">> Small. - <<option 3 "Normal">> Normal. - <<option 4 "Large">> Large. - <<optiondefault 5 "Massive">> Massive. - <</options>> + <<set _option = _options.addOption("Foreskin", "foreskin", $activeSlave)>> + <<if $seeCircumcision === 1>> + <<run _option.addValue("Circumcised", 0)>> + <<elseif $activeSlave.foreskin === 0>> + <<set $activeSlave.foreskin = 3>> <</if>> + <<run _option.addValueList([["Tiny", 1], ["Small", 2], ["Normal", 3], ["Large", 4], ["Massive", 5]])>> <</if>> - <<options $activeSlave.balls>> - ''Testicles:'' - <<option 0 "None" "$activeSlave.pubertyXY = 0,$activeSlave.pubertyAgeXY = $potencyAge, $activeSlave.scrotum=0">> No testicles. - <<option 1 "Vestigial">> Vestigial. - <<option 2 "Small">> Small. - <<option 3 "Normal">> Normal. - <<option 4 "Large">> Large. - <<optiondefault 5 "Massive">> Massive. - <</options>> - - <<options $activeSlave.pubertyAgeXY>> - ''Age of Male Puberty:'' - <<option>> - <<textbox2 "$activeSlave.pubertyAgeXY" $activeSlave.pubertyAgeXY "Starting Girls">> - <</options>> + <<run _options.addOption("Testicles", "balls", $activeSlave) + .addValue("None", 0, () => { + V.activeSlave.pubertyXY = 0; + V.activeSlave.pubertyAgeXY = V.potencyAge; + V.activeSlave.scrotum = 0; + }).addValueList([["Vestigial", 1], ["Small", 2], ["Normal", 3], ["Large", 4], ["Massive", 5]])>> + + <<run _options.addOption("Age of Male Puberty", "pubertyAgeXY", $activeSlave).showTextBox()>> + <<if $activeSlave.balls > 0>> - <<options $activeSlave.scrotum>> - ''Ballsack:'' - <<option 0 "None">> None. - <<option 1 "Tiny">> Tiny. - <<option 2 "Small">> Small. - <<option 3 "Normal">> Normal. - <<option 4 "Large">> Large. - <<optiondefault 5 "Massive">> Massive. - <</options>> - - <<options $activeSlave.pubertyXY>> - ''Male Puberty:'' - <<option 0 "Prepubescent" "$activeSlave.pubertyAgeXY = $potencyAge">> Prepubescent. - <<option 1 "Postpubescent">> Postpubescent. - <</options>> + <<run _options.addOption("Ballsack", "scrotum", $activeSlave) + .addValueList([["None", 0], ["Tiny", 1], ["Small", 2], ["Normal", 3], ["Large", 4], ["Massive", 5]])>> + + <<run _options.addOption("Male Puberty", "pubertyXY", $activeSlave) + .addValue("Prepubescent", 0, () => {V.activeSlave.pubertyAgeXY = V.potencyAge}) + .addValue("Postpubescent", 1)>> <</if>> <</if>> - <<options $activeSlave.prostate>> - ''Prostate:'' - <<option 0 "No prostate">> No prostate. - <<option 1 "Has a prostate">> Has a prostate. - <</options>> + <<run _options.addOption("Prostate", "prostate", $activeSlave) + .addValueList([["No prostate", 0], ["Has a prostate", 1]])>> - <<if $seeExtreme == 1>> - <<options $activeSlave.eye.left.vision>> - ''Left eye:'' - <<option 0 "Blind">> Blind - <<option 1 "Nearsighted">> Nearsighted - <<optiondefault 2 "Normal">> Normal - <</options>> - <<options $activeSlave.eye.right.vision>> - ''Right eye:'' - <<option 0 "Blind">> Blind - <<option 1 "Nearsighted">> Nearsighted - <<optiondefault 2 "Normal">> Normal - <</options>> + <<set _optionLeft = _options.addOption("Left eye", "vision", $activeSlave.eye.left)>> + <<set _optionRight = _options.addOption("Right eye", "vision", $activeSlave.eye.right)>> + <<if $seeExtreme === 1>> + <<run _optionLeft.addValue("Blind", 0), _optionRight.addValue("Blind", 0)>> <<else>> - <<options $activeSlave.eye.left.vision>> - ''Left eye:'' - <<option 1 "Nearsighted">> Nearsighted - <<optiondefault 2 "Normal">> Normal - <</options>> - <<options $activeSlave.eye.right.vision>> - ''Right eye:'' - <<option 1 "Nearsighted">> Nearsighted - <<optiondefault 2 "Normal">> Normal - <</options>> + <<if $activeSlave.eye.left.vision === 0>> + <<set $activeSlave.eye.left.vision = 2>> + <</if>> + <<if $activeSlave.eye.right.vision === 0>> + <<set $activeSlave.eye.right.vision = 2>> + <</if>> <</if>> + <<run _optionLeft.addValueList([["Nearsighted", 1], ["Normal", 2]]), _optionRight.addValueList([["Nearsighted", 1], ["Normal", 2]])>> + <<set _option = _options.addOption("Hearing", "hears", $activeSlave)>> <<if $seeExtreme == 1>> - <<options $activeSlave.hears>> - ''Hearing:'' - <<option -2 "Deaf">> Deaf - <<option -1 "Hard of hearing">> Hard of hearing - <<optiondefault 0 "Normal">> Normal - <</options>> - <<else>> - <<options $activeSlave.hears>> - ''Hearing:'' - <<option -1 "Hard of hearing">> Hard of hearing - <<optiondefault 0 "Normal">> Normal - <</options>> + <<run _option.addValue("Deaf", -2)>> + <<elseif $activeSlave.hears === 0>> + <<set $activeSlave.hears = 2>> <</if>> + <<run _option.addValueList([["Hard of hearing", -1], ["Normal", 0]])>> <<if $seeExtreme == 1>> - <<options $activeSlave.smells>> - ''Smell ability:'' - <<option 0 "Normal">> Normal - <<option -1 "None">> Unable to smell - <</options>> - - <<options $activeSlave.tastes>> - ''Taste ability:'' - <<option 0 "Normal">> Normal - <<option -1 "None">> Unable to taste - <</options>> - <</if>> - - <<if $seeExtreme == 1>> - /* TODO rewrite this so it looks like the rest (if possible expand options macro) */ - <p style="text-align: center;"> - <div> - Left arm: - <span id = "ampLA"> - <<if hasLeftArm($activeSlave)>>Yes - <<else>>No - <</if>> - </span> - <<link "Remove">> - <<set $activeSlave.arm.left = null>> - <<replace #ampLA>> - No - <</replace>> - <</link>> - <<link "Add">> - <<set $activeSlave.arm.left = new App.Entity.LimbState()>> - <<replace #ampLA>> - Yes - <</replace>> - <</link>> - </div> - - <div> - Right arm: - <span id = "ampRA"> - <<if hasRightArm($activeSlave)>>Yes - <<else>>No - <</if>> - </span> - <<link "Remove">> - <<set $activeSlave.arm.right = null>> - <<replace #ampRA>> - No - <</replace>> - <</link>> - <<link "Add">> - <<set $activeSlave.arm.right = new App.Entity.LimbState()>> - <<replace #ampRA>> - Yes - <</replace>> - <</link>> - </div> - - <div> - Left leg: - <span id = "ampLL"> - <<if hasLeftLeg($activeSlave)>>Yes - <<else>>No - <</if>> - </span> - <<link "Remove">> - <<set $activeSlave.leg.left = null>> - <<replace #ampLL>> - No - <</replace>> - <</link>> - <<link "Add">> - <<set $activeSlave.leg.left = new App.Entity.LimbState()>> - <<replace #ampLL>> - Yes - <</replace>> - <</link>> - </div> - - <div> - Right leg: - <span id = "ampRL"> - <<if hasRightLeg($activeSlave)>>Yes - <<else>>No - <</if>> - </span> - <<link "Remove">> - <<set $activeSlave.leg.right = null>> - <<replace #ampRL>> - No - <</replace>> - <</link>> - <<link "Add">> - <<set $activeSlave.leg.right = new App.Entity.LimbState()>> - <<replace #ampRL>> - Yes - <</replace>> - <</link>> - </div> - </p> + <<run _options.addOption("Smell ability", "smells", $activeSlave) + .addValueList([["Normal", 0], ["None", -1]])>> + + <<run _options.addOption("Taste ability", "tastes", $activeSlave) + .addValueList([["Normal", 0], ["None", -1]])>> + + <<set _LA = hasLeftArm($activeSlave)>> + <<run _options.addOption("Left arm", "LA", State.temporary) + .addValue("Healthy", true, () => V.activeSlave.arm.left = new App.Entity.LimbState()) + .addValue("Amputated", false, () => V.activeSlave.arm.left = null)>> + + <<set _RA = hasRightArm($activeSlave)>> + <<run _options.addOption("Right arm", "RA", State.temporary) + .addValue("Healthy", true, () => V.activeSlave.arm.right = new App.Entity.LimbState()) + .addValue("Amputated", false, () => V.activeSlave.arm.right = null)>> + + <<set _LL = hasLeftLeg($activeSlave)>> + <<run _options.addOption("Left leg", "LL", State.temporary) + .addValue("Healthy", true, () => V.activeSlave.leg.left = new App.Entity.LimbState()) + .addValue("Amputated", false, () => V.activeSlave.leg.left = null)>> + + <<set _RL = hasRightLeg($activeSlave)>> + <<run _options.addOption("Right leg", "RL", State.temporary) + .addValue("Healthy", true, () => V.activeSlave.leg.right = new App.Entity.LimbState()) + .addValue("Amputated", false, () => V.activeSlave.leg.right = null)>> <</if>> + <<print App.UI.DOM.includeDOM(_options.render())>> </div> </div> <div id="Mental" class="tabcontent"> - <div class="content"> - <<if $activeSlave.fetishKnown == 0>> - <<options $activeSlave.fetishKnown>> - ''Fetish:'' - <<option 0 "Unknown">> - //Not known.// - <<option 1 "Known">> - <</options>> + + <<set _options = new App.UI.OptionsGroup()>> + <<if $activeSlave.fetishKnown === 0>> + <<run _options.addOption("Fetish", "fetishKnown", $activeSlave) + .addValueList([["Unknown", 0], ["Known", 1]])>> <<else>> - <<if $seeExtreme != 1>> - <<options $activeSlave.fetish>> - ''Fetish:'' - <<if $activeSlave.fetish == "none">> - @@.pink;$activeSlave.fetish.@@ - <<else>> - @@.lightcoral;$activeSlave.fetish.@@ - <</if>> - <<option "" "Unknown" "$activeSlave.fetish=either('boobs', 'buttslut', 'cumslut', 'dom', 'humiliation', 'masochist', 'none', 'none', 'none', 'none', 'none', 'none', 'none', 'none', 'none', 'none', 'pregnancy', 'sadist', 'submissive'),$activeSlave.fetishKnown=0">> - <<option "none" "None">> - <<option "submissive" "Sub">> - <<option "dom" "Dom">> - <<option "cumslut" "Cumslut">> - <<option "humiliation" "Humiliation">> - <<option "buttslut" "Buttslut">> - <<option "boobs" "Breasts">> - <<option "pregnancy" "Pregnancy">> - <<option "sadist" "Sadism">> - <<option "masochist" "Masochism">> - <</options>> - <<else>> - <<options $activeSlave.fetish>> - ''Fetish:'' - <<if $activeSlave.fetish == "none">> - @@.pink;$activeSlave.fetish.@@ - <<else>> - @@.lightcoral;$activeSlave.fetish.@@ - <</if>> - <<option "" "Unknown" "$activeSlave.fetish=either('boobs', 'buttslut', 'cumslut', 'dom', 'humiliation', 'masochist', 'none', 'none', 'none', 'none', 'none', 'none', 'none', 'none', 'none', 'none', 'pregnancy', 'sadist', 'submissive'),$activeSlave.fetishKnown=0">> - <<option "none" "None">> - <<option "submissive" "Sub">> - <<option "dom" "Dom">> - <<option "cumslut" "Cumslut">> - <<option "humiliation" "Humiliation">> - <<option "buttslut" "Buttslut">> - <<option "boobs" "Breasts">> - <<option "pregnancy" "Pregnancy">> - <<option "sadist" "Sadism">> - <<option "masochist" "Masochism">> - <<option "mindbroken" "Mindbroken" "$activeSlave.sexualFlaw = 'none', $activeSlave.behavioralFlaw = 'none', $activeSlave.sexualQuirk = 'none', $activeSlave.sexualFlaw = 'none'">> - <</options>> + <<set _option = _options.addOption("Fetish", "fetish", $activeSlave) + .addValue("Unknown", "", () => { + V.activeSlave.fetish = either("boobs", "buttslut", "cumslut", "dom", "humiliation", "masochist", "pregnancy", "sadist", + "submissive", "none", "none", "none", "none", "none", "none", "none", "none", "none", "none"); + V.activeSlave.fetishKnown = 0 + }).addValueList([["None", "none"], ["Sub", "submissive"], ["Dom", "dom"], ["Cumslut", "cumslut"], ["Humilation", "humilation"], + ["Buttslut", "buttslut"], ["Breasts", "breasts"], ["Pregnancy", "pregnancy"], ["Sadism", "sadism"], ["Masochism", "masochism"]])>> + <<if $seeExtreme === 1>> + <<run _option.addValue("Mindbroken", "mindbroken", () => { + V.activeSlave.fetishStrength = 10; + V.activeSlave.sexualFlaw = "none"; + V.activeSlave.sexualQuirk = "none"; + V.activeSlave.behavioralFlaw = "none"; + V.activeSlave.behavioralQuirk = "none"; + })>> + <</if>> + + <<if $activeSlave.fetish !== "none" && $activeSlave.fetish !== "mindbroken">> + <<run _options.addOption("Fetish strength", "fetishStrength", $activeSlave) + .addRange(15, 30, "<=", "Very Low") + .addRange(45, 60, "<=", "Low") + .addRange(75, 85, "<=", "Normal") + .addRange(90, 95, "<=", "High") + .addRange(100, 95, ">", "Extremely High")>> <</if>> - /* fetish is known */ - <<if $activeSlave.fetish != "none">> - <<options $activeSlave.fetishStrength>> - ''Fetish strength:'' $activeSlave.fetishStrength - <<if $activeSlave.fetishStrength > 95>> - @@.lightcoral;Extremely High.@@ - <<elseif $activeSlave.fetishStrength > 85>> - @@.lightcoral;High.@@ - <<elseif $activeSlave.fetishStrength > 60>> - @@.hotpink;Normal.@@ - <<elseif $activeSlave.fetishStrength > 30>> - @@.pink;Low.@@ - <<else>> - @@.pink;Very Low.@@ - <</if>> - <<option>> - <<if $activeSlave.fetishStrength >= 5>> - [[Decrease|Starting Girls][$activeSlave.fetishStrength -= 5]] - <<if $activeSlave.fetishStrength <= 95>> - | - <</if>> - <</if>> - <<option>> - <<if $activeSlave.fetishStrength <= 95>> - [[Increase|Starting Girls][$activeSlave.fetishStrength += 5]] - <</if>> - <</options>> - <</if>> /* Fetish != "none" */ - <</if>> /* fetishKnown */ - - <<if $activeSlave.attrKnown == 0>> - <<options $activeSlave.attrKnown>> - ''Sexuality:'' - <<option 0 "Unknown">> - //Not known.// - <<option 1 "Known">> - <</options>> - <<else>> - <<options $activeSlave.attrXY>> - ''Sexuality:'' - <<if $activeSlave.attrXY <= 5>> - @@.red;Disgusted by men,@@ - <<elseif $activeSlave.attrXY <= 15>> - @@.red;Turned off by men,@@ - <<elseif $activeSlave.attrXY <= 35>> - @@.red;Not attracted to men,@@ - <<elseif $activeSlave.attrXY <= 65>> - Indifferent to men, - <<elseif $activeSlave.attrXY <= 85>> - @@.green;Attracted to men,@@ - <<elseif $activeSlave.attrXY <= 95>> - @@.green;Aroused by men,@@ - <<else>> - @@.green;Passionate about men,@@ - <</if>> - <<if $activeSlave.attrXX <= 5>> - @@.red;disgusted by women.@@ - <<elseif $activeSlave.attrXX <= 15>> - @@.red;turned off by women.@@ - <<elseif $activeSlave.attrXX <= 35>> - @@.red;not attracted to women.@@ - <<elseif $activeSlave.attrXX <= 65>> - indifferent to women. - <<elseif $activeSlave.attrXX <= 85>> - @@.green;attracted to women.@@ - <<elseif $activeSlave.attrXX <= 95>> - @@.green;aroused by women.@@ - <<else>> - @@.green;passionate about women.@@ - <</if>> - <<option "" "Unknown" "$activeSlave.attrXX = random(0,100), $activeSlave.attrXY = random(0,100), $activeSlave.energy = random(1,90), $activeSlave.attrKnown = 0">> - <<option>> - XY (male) attraction: - <<if $activeSlave.attrXY > 0>> - [[Decrease|Starting Girls][$activeSlave.attrXY = Math.clamp($activeSlave.attrXY-10, 0, 100)]] - <<if $activeSlave.attrXY < 100>> - | - <</if>> - <</if>> - <<option>> - <<if $activeSlave.attrXY < 100>> - [[Increase|Starting Girls][$activeSlave.attrXY = Math.clamp($activeSlave.attrXY+10, 0, 100)]] - <</if>> - <<option>> - XX (female) attraction: - <<if $activeSlave.attrXX > 0>> - [[Decrease|Starting Girls][$activeSlave.attrXX = Math.clamp($activeSlave.attrXX-10, 0, 100)]] - <<if $activeSlave.attrXX < 100>> - | - <</if>> - <</if>> - <<option>> - <<if $activeSlave.attrXX < 100>> - [[Increase|Starting Girls][$activeSlave.attrXX = Math.clamp($activeSlave.attrXX+10, 0, 100)]] - <</if>> - <</options>> - - <<options $activeSlave.energy>> - ''Sex drive:'' - <<optionlte 20 5 "Frigid">>@@.red;Frigid.@@ - <<optionlte 40 25 "Poor">>@@.red;Poor@@ - <<optionlte 60 45 "Average">>@@.yellow;Average@@ - <<optionlte 80 65 "Powerful">>@@.green;Powerful@@ - <<optionlte 99 85 "Sex addict">>@@.green;Sex addict@@ - <<optiondefault 100 "Nympho">>@@.green;Nympho!@@ - <</options>> <</if>> - <<options $activeSlave.behavioralFlaw>> - ''Behavioral Flaw:'' - <<if $activeSlave.behavioralFlaw == "none">> - //$activeSlave.behavioralFlaw.// - <<else>> - @@.red;$activeSlave.behavioralFlaw.@@ - <</if>> - <<option "none" "None">> - <<option "arrogant" "Arrogant">> - <<option "bitchy" "Bitchy">> - <<option "odd" "Odd">> - <<option "hates men" "Men">> - <<option "hates women" "Women">> - <<option "anorexic" "Anorexic">> - <<option "gluttonous" "Gluttonous">> - <<option "devout" "Devout">> - <<option "liberated" "Liberated">> - <</options>> - - <<options $activeSlave.behavioralQuirk>> - ''Behavioral Quirk:'' - <<if $activeSlave.behavioralQuirk == "none">> - //$activeSlave.behavioralQuirk.// - <<else>> - @@.green;$activeSlave.behavioralQuirk.@@ - <</if>> - <<option "none" "None" >> - <<option "confident" "Confident" >> - <<option "cutting" "Cutting" >> - <<option "funny" "Funny" >> - <<option "adores men" "Men" >> - <<option "adores women" "Women" >> - <<option "insecure" "Insecure" >> - <<option "fitness" "Fitness" >> - <<option "sinful" "Sinful" >> - <<option "advocate" "Advocate" >> - <</options>> - - <<options $activeSlave.sexualFlaw>> - ''Sexual Flaw:'' - <<if $activeSlave.sexualFlaw == "none">> - //$activeSlave.sexualFlaw.// - <<else>> - @@.red;$activeSlave.sexualFlaw.@@ - <</if>> - <<option "none" "None">> - <<option "hates oral" "Oral">> - <<option "hates anal" "Anal">> - <<option "hates penetration" "Penetration">> - <<option "repressed" "Repressed">> - <<option "shamefast" "Shamefast">> - <<option "apathetic" "Apathetic">> - <<option "crude" "Crude">> - <<option "judgemental" "Judgemental">> - <<option "idealistic" "Sexually idealistic">> - <</options>> - - <<options $activeSlave.sexualQuirk>> - ''Sexual Quirk:'' - <<if $activeSlave.sexualQuirk == "none">> - //$activeSlave.sexualQuirk.// - <<else>> - @@.green;$activeSlave.sexualQuirk.@@ - <</if>> - <<option "none" "None">> - <<option "gagfuck queen" "Oral">> - <<option "painal queen" "Anal">> - <<option "strugglefuck queen" "Penetration">> - <<option "perverted" "Perverted">> - <<option "tease" "Tease">> - <<option "caring" "Caring">> - <<option "unflinching" "Unflinching">> - <<option "size queen" "Size queen">> - <<option "romantic" "Romantic">> - <</options>> + <<run _options.addOption("Sexuality", "attrKnown", $activeSlave) + .addValue("Unknown", 0).addValue("Known", 1, () => { + V.activeSlave.attrXX = random(0, 100); + V.activeSlave.attrXY = random(0, 100); + V.activeSlave.energy = random(1, 90); + })>> + <<if $activeSlave.attrKnown === 1>> + <<run _options.addOption("Attraction to men", "attrXY", $activeSlave) + .addRange(0, 5, "<=", "Disgusted").off() + .addRange(10, 15, "<=", "Turned off").off() + .addRange(25, 35, "<=", "Not attracted").off() + .addRange(50, 65, "<=", "Indifferent").neutral() + .addRange(75, 85, "<=", "Attracted").on() + .addRange(90, 95, "<=", "Aroused").on() + .addRange(100, 95, ">", "Passionate").on()>> + <<run _options.addOption("Attraction to women", "attrXX", $activeSlave) + .addRange(0, 5, "<=", "Disgusted").off() + .addRange(10, 15, "<=", "Turned off").off() + .addRange(25, 35, "<=", "Not attracted").off() + .addRange(50, 65, "<=", "Indifferent").neutral() + .addRange(75, 85, "<=", "Attracted").on() + .addRange(90, 95, "<=", "Aroused").on() + .addRange(100, 95, ">", "Passionate").on()>> + + <<run _options.addOption("Sex drive", "energy", $activeSlave) + .addRange(5, 10, "<=", "Frigid").off() + .addRange(25, 40, "<=", "Poor").off() + .addRange(45, 60, "<=", "Average").neutral() + .addRange(65, 80, "<=", "Powerful").on() + .addRange(85, 99, "<=", "Sex addict").on() + .addRange(100, 99, ">", "Nympho").on()>> + <</if>> + <<if $activeSlave.fetish !== "mindbroken">> + <<run _options.addOption("Behavioral Flaw", "behavioralFlaw", $activeSlave) + .addValueList([["None", "none"], ["Arrogant", "arrogant"], ["Bitchy", "bitchy"], ["Odd", "odd"], ["Hates Men", "hates men"], + ["Hates Women", "hates women"], ["Anorexic", "anorexic"], ["Gluttonous", "gluttonous"], ["Devout", "devout"], + ["Liberated", "liberated"]])>> + + <<run _options.addOption("Behavioral Quirk", "behavioralQuirk", $activeSlave) + .addValueList([["None", "none"], ["Confident", "confident"], ["Cutting", "cutting"], ["Funny", "funny"], + ["Adores Men", "adores men"], ["Adores Women", "adores women"], ["Insecure", "insecure"], ["Fitness", "fitness"], + ["Sinful", "sinful"], ["Advocate", "advocate"]])>> + + <<run _options.addOption("Sexual Flaw", "sexualFlaw", $activeSlave) + .addValueList([["None", "none"], ["Hates Oral", "hates oral"], ["Hates Anal", "hates anal"], + ["Hates Penetration", "hates penetration"], ["Repressed", "repressed"], ["Shamefast", "shamefast"], ["Apathetic", "apathetic"], + ["Crude", "crude"], ["Judgemental", "judgemental"], ["Sexually idealistic", "idealistic"]])>> + + <<run _options.addOption("Sexual Quirk", "sexualQuirk", $activeSlave) + .addValueList([["None", "none"], ["Oral", "gagfuck queen"], ["Anal", "painal queen"], ["Penetration", "strugglefuck queen"], + ["Perverted", "perverted"], ["Tease", "tease"], ["Caring", "caring"], ["Unflinching", "unflinching"], ["Size queen", "size queen"], + ["Romantic", "romantic"]])>> + <</if>> + + <<print App.UI.DOM.includeDOM(_options.render())>> </div> </div> <div id="Skills" class="tabcontent"> <div class="content"> + <<set _options = new App.UI.OptionsGroup()>> + + <<run _options.addOption("Oral sex", "oral", $activeSlave.skill) + .addRange(0, 10, "<=", "Unskilled") + .addRange(15, 30, "<=", "Basic") + .addRange(35, 60, "<=", "Skilled") + .addRange(65, 60, ">", "Expert")>> - <<options $activeSlave.skill.oral>> - ''Oral sex:'' - <<optionlte 10 0 "Unskilled">> Unskilled. - <<optionlte 30 15 "Basic">> @@.cyan;Basic.@@ - <<optionlte 60 35 "Skilled">> @@.cyan;Skilled.@@ - <<optiondefault 65 "Expert">> @@.cyan;Expert.@@ - <</options>> - - <<if $activeSlave.anus == 0>> - <<options>> - ''Anal sex:'' - <<option>> - //Anal virgins cannot be given anal skills// - <</options>> + <<set _option = _options.addOption("Anal sex", "anal", $activeSlave.skill)>> + <<if $activeSlave.anus === 0>> + <<run _option.addComment("Anal virgins cannot be given anal skills.")>> <<else>> - <<options $activeSlave.skill.anal>> - ''Anal sex:'' - <<optionlte 10 0 "Unskilled">> Unskilled. - <<optionlte 30 15 "Basic">> @@.cyan;Basic.@@ - <<optionlte 60 35 "Skilled">> @@.cyan;Skilled.@@ - <<optiondefault 65 "Expert">> @@.cyan;Expert.@@ - <</options>> + <<run _option.addRange(0, 10, "<=", "Unskilled") + .addRange(15, 30, "<=", "Basic") + .addRange(35, 60, "<=", "Skilled") + .addRange(65, 60, ">", "Expert")>> <</if>> - <<if $activeSlave.vagina == 0>> - <<options>> - ''Vaginal sex:'' - <<option>> - //Virgins cannot be given vaginal skills// - <</options>> - <<elseif $activeSlave.vagina == -1>> - <<options>> - ''Vaginal sex:'' - <<option>> - //Must have a vagina to have vaginal skills// - <</options>> + <<set _option = _options.addOption("Vaginal sex", "vaginal", $activeSlave.skill)>> + <<if $activeSlave.vagina === 0>> + <<run _option.addComment("Virgins cannot be given anal skills.")>> + <<elseif $activeSlave.vagina === -1>> + <<run _option.addComment("Must have a vagina to have vaginal skills.")>> <<else>> - <<options $activeSlave.skill.vaginal>> - ''Vaginal sex:'' - <<optionlte 10 0 "Unskilled">> Unskilled. - <<optionlte 30 15 "Basic">> @@.cyan;Basic.@@ - <<optionlte 60 35 "Skilled">> @@.cyan;Skilled.@@ - <<optiondefault 65 "Expert">> @@.cyan;Expert.@@ - <</options>> + <<run _option.addRange(0, 10, "<=", "Unskilled") + .addRange(15, 30, "<=", "Basic") + .addRange(35, 60, "<=", "Skilled") + .addRange(65, 60, ">", "Expert")>> <</if>> - <<options $activeSlave.skill.whoring>> - ''Prostitution:'' - <<optionlte 10 0 "Unskilled">> Unskilled. - <<optionlte 30 15 "Basic">> @@.cyan;Basic.@@ - <<optionlte 60 35 "Skilled">> @@.cyan;Skilled.@@ - <<optiondefault 65 "Expert">> @@.cyan;Expert.@@ - <</options>> - - <<options $activeSlave.skill.entertainment>> - ''Entertainment:'' - <<optionlte 10 0 "Unskilled">> Unskilled. - <<optionlte 30 15 "Basic">> @@.cyan;Basic.@@ - <<optionlte 60 35 "Skilled">> @@.cyan;Skilled.@@ - <<optiondefault 65 "Expert">> @@.cyan;Expert.@@ - <</options>> - - <<options $activeSlave.skill.combat>> - ''Combat:'' - <<option 0 "Unskilled">> Unskilled - <<option 1 "Skilled">> @@.cyan;Skilled.@@ - <</options>> - - <<if $activeSlave.skill.whoring+$activeSlave.skill.entertainment+$activeSlave.skill.vaginal+$activeSlave.skill.anal+$activeSlave.skill.oral+($activeSlave.skill.combat*100) > 200>> - <<options>> - <<option>> - <span class="red" style="font-style: italic"> - Starting slaves incur - <<if $activeSlave.skill.whoring+$activeSlave.skill.entertainment+$activeSlave.skill.vaginal+$activeSlave.skill.anal+$activeSlave.skill.oral+($activeSlave.skill.combat*100) > 400>> - a severe cost penalty at for being highly - <<else>> - an additional cost penalty for being - <</if>> - skilled. This slave's - <<if $activeSlave.actualAge >= 25>> - <<if $activeSlave.actualAge > 35>> - advanced - <</if>> - age decreases the penalty - <<else>> - young age requires paying the full penalty - <</if>>. - </span> - <</options>> + <<run _options.addOption("Prostitution", "whoring", $activeSlave.skill) + .addRange(0, 10, "<=", "Unskilled") + .addRange(15, 30, "<=", "Basic") + .addRange(35, 60, "<=", "Skilled") + .addRange(65, 60, ">", "Expert")>> + + <<run _options.addOption("Entertainment", "entertainment", $activeSlave.skill) + .addRange(0, 10, "<=", "Unskilled") + .addRange(15, 30, "<=", "Basic") + .addRange(35, 60, "<=", "Skilled") + .addRange(65, 60, ">", "Expert")>> + + <<run _options.addOption("Combat", "combat", $activeSlave.skill) + .addValueList([["Unskilled", 0], ["Skilled", 1]])>> + + <<set _totalSkill = $activeSlave.skill.whoring + $activeSlave.skill.entertainment + $activeSlave.skill.vaginal + + $activeSlave.skill.anal + $activeSlave.skill.oral + ($activeSlave.skill.combat * 100)>> + <<if _totalSkill > 200>> + <<set _comment = "Starting slaves incur">> + <<if _totalSkill > 400>> + <<set _comment += " a severe cost penalty for being highly">> + <<else>> + <<set _comment += " an additional cost penalty for being">> + <</if>> + <<set _comment += " skilled. This slave's">> + <<if $activeSlave.actualAge >= 25>> + <<if $activeSlave.actualAge > 35>> + <<set _comment += " advanced">> + <</if>> + <<set _comment += " age decreases the penalty.">> + <<else>> + <<set _comment += " young age requires paying the full penalty.">> + <</if>> + <<run _options.addOption("").addComment(`<span class="warning">${_comment}</span>`)>> <</if>> + <<print App.UI.DOM.includeDOM(_options.render())>> </div> </div> -- GitLab