diff --git a/src/npc/startingGirls/startingGirls.js b/src/npc/startingGirls/startingGirls.js index 7fe5ba3ca10c6e3d82d2c2796356df626908ee3b..f1e8e9e7e2c70b4e79b9cd5c936576fb924ec9fc 100644 --- a/src/npc/startingGirls/startingGirls.js +++ b/src/npc/startingGirls/startingGirls.js @@ -622,6 +622,9 @@ App.StartingGirls.physical = function(slave) { const options = new App.UI.OptionsGroup(); let option; + options.addOption("Condition", "condition", slave.health) + .addValueList([["Unhealthy", -40], ["Healthy", 0], ["Very healthy", 40], ["Extremely healthy", 80]]); + options.addOption(`Height: ${heightToEitherUnit(slave.height)}`, "height", slave).showTextBox("cm") .addRange(145, 150, "<", "Petite") .addRange(155, 160, "<", "Short") @@ -1114,43 +1117,6 @@ App.StartingGirls.profile = function(slave) { options.addOption("Births", "birthsTotal", slave.counter).showTextBox().addComment(`How many times ${he} has already given birth, not necessarily while owned by you.`); - option = options.addOption("Devotion", "devotion", slave).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 (slave.devotion > 20) { - r = []; - r.push("Starting slaves incur"); - if (slave.devotion > 50) { - r.push("severe cost penalty at very high"); - } else { - r.push("an additional cost penalty at high"); - } - r.push("levels of devotion. This slave's"); - if (slave.actualAge >= 25) { - if (slave.actualAge > 35) { - r.push("advanced"); - } - r.push("age decreases the penalty."); - } else { - r.push("young age requires paying the full penalty."); - } - option.addComment(`<span class=warning>${r.join(" ")}</span>`); - } - - options.addOption("Trust", "trust", slave).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"); - options.addOption("Legal status", "indenture", slave) .addValue("Slave", -1, () => slave.indentureRestrictions = 0) .addRange(52, 0, ">=", "Indentured Servant"); @@ -1201,9 +1167,6 @@ App.StartingGirls.profile = function(slave) { slave.hips = either(0, 1, 2); }); - options.addOption("Condition", "condition", slave.health) - .addValueList([["Unhealthy", -40], ["Healthy", 0], ["Very healthy", 40], ["Extremely healthy", 80]]); - option = options.addOption("Prestige", "prestige", slave) .addValueList([["None", 0], ["Locally known", 1], ["Regionally famous", 2], ["World renowned", 3]]); if (slave.prestige > 0) { @@ -1232,12 +1195,149 @@ App.StartingGirls.profile = function(slave) { ["Amerindian", "amerindian"], ["Pacific Islander", "pacific islander"], ["Malay", "malay"], ["Mixed Race", "mixed race"]]); } + el.append(options.render()); + return el; +}; + +App.StartingGirls.mental = function(slave) { + const el = new DocumentFragment(); + const options = new App.UI.OptionsGroup(); + let option; + let r; + options.addOption("Intelligence", "intelligence", slave) .addValueList([["Moronic", -100], ["Very stupid", -60], ["Stupid", -30], ["Average", 0], ["Smart", 30], ["Very smart", 60], ["Brilliant", 100]]); options.addOption("Education", "intelligenceImplant", slave) .addValueList([["Uneducated", 0], ["Educated", 15], ["Well educated", 30]]); + option = options.addOption("Devotion", "devotion", slave).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 (slave.devotion > 20) { + r = []; + r.push("Starting slaves incur"); + if (slave.devotion > 50) { + r.push("severe cost penalty at very high"); + } else { + r.push("an additional cost penalty at high"); + } + r.push("levels of devotion. This slave's"); + if (slave.actualAge >= 25) { + if (slave.actualAge > 35) { + r.push("advanced"); + } + r.push("age decreases the penalty."); + } else { + r.push("young age requires paying the full penalty."); + } + option.addComment(`<span class=warning>${r.join(" ")}</span>`); + } + + options.addOption("Trust", "trust", slave).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"); + + + + if (slave.fetishKnown === 0) { + options.addOption("Fetish", "fetishKnown", slave) + .addValueList([["Unknown", 0], ["Known", 1]]); + } else { + option = options.addOption("Fetish", "fetish", slave) + .addValue("Unknown", "", () => { + slave.fetish = either("boobs", "buttslut", "cumslut", "dom", "humiliation", "masochist", "pregnancy", "sadist", + "submissive", "none", "none", "none", "none", "none", "none", "none", "none", "none", "none"); + slave.fetishKnown = 0; + }).addValueList([["None", "none"], ["Sub", "submissive"], ["Dom", "dom"], ["Cumslut", "cumslut"], ["Humiliation", "humiliation"], + ["Buttslut", "buttslut"], ["Breasts", "boobs"], ["Pregnancy", "pregnancy"], ["Sadism", "sadist"], ["Masochism", "masochist"]]); + if (V.seeExtreme === 1) { + option.addValue("Mindbroken", "mindbroken", () => { + slave.fetishStrength = 10; + slave.sexualFlaw = "none"; + slave.sexualQuirk = "none"; + slave.behavioralFlaw = "none"; + slave.behavioralQuirk = "none"; + }); + } + + if (slave.fetish !== "none" && slave.fetish !== "mindbroken") { + options.addOption("Fetish strength", "fetishStrength", slave) + .addRange(15, 30, "<=", "Very Low") + .addRange(45, 60, "<=", "Low") + .addRange(75, 85, "<=", "Normal") + .addRange(90, 95, "<=", "High") + .addRange(100, 95, ">", "Extremely High"); + } + } + + options.addOption("Sexuality", "attrKnown", slave) + .addValue("Known", 1, () => { + slave.attrXX = random(0, 100); + slave.attrXY = random(0, 100); + slave.energy = random(1, 90); + }).on() + .addValue("Unknown", 0).off(); + if (slave.attrKnown === 1) { + options.addOption("Attraction to men", "attrXY", slave) + .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(); + options.addOption("Attraction to women", "attrXX", slave) + .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(); + + options.addOption("Sex drive", "energy", slave) + .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 (slave.fetish !== "mindbroken") { + options.addOption("Behavioral Flaw", "behavioralFlaw", slave) + .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"]]); + + options.addOption("Behavioral Quirk", "behavioralQuirk", slave) + .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"]]); + + options.addOption("Sexual Flaw", "sexualFlaw", slave) + .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"]]); + + options.addOption("Sexual Quirk", "sexualQuirk", slave) + .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"]]); + } + el.append(options.render()); + return el; }; diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw index 164d9fd53fd929ddc7891c98c437af3167eb8223..6dc4e30a17bbc6c267dfbcebb163fd38ab8faefa 100644 --- a/src/npc/startingGirls/startingGirls.tw +++ b/src/npc/startingGirls/startingGirls.tw @@ -230,95 +230,7 @@ <div id="Mental" class="tab-content"> <div class="content"> - - <<set _options = new App.UI.OptionsGroup()>> - <<if $activeSlave.fetishKnown === 0>> - <<run _options.addOption("Fetish", "fetishKnown", $activeSlave) - .addValueList([["Unknown", 0], ["Known", 1]])>> - <<else>> - <<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"], ["Humiliation", "humiliation"], - ["Buttslut", "buttslut"], ["Breasts", "boobs"], ["Pregnancy", "pregnancy"], ["Sadism", "sadist"], ["Masochism", "masochist"]])>> - <<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>> - <</if>> - - <<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>> - - <<includeDOM _options.render()>> + <<includeDOM App.StartingGirls.mental($activeSlave)>> </div> </div>