diff --git a/src/005-passages/bcPassages.js b/src/005-passages/bcPassages.js index aeb5fcb9d46e656aedacb84e3b4c195433a87be5..c0a6509fdefe08acb4d54b207177d6e259fdd808 100644 --- a/src/005-passages/bcPassages.js +++ b/src/005-passages/bcPassages.js @@ -1,9 +1,9 @@ new App.DomPassage("Backwards Compatibility", () => { V.nextButton = "Continue"; - //if (["Options", "Backwards Compatibility"].includes(V.nextLink)) { + if (["Options", "Backwards Compatibility", "End Week"].includes(V.nextLink)) { V.nextLink = "Main"; - //} + } App.Update.setNonexistentProperties(V, App.Data.defaultGameStateVariables); // resetOnNGPlus contains half of the variables we need, but we use it politely here instead of forcing it so it diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js index 58ef13968743bb42285217d54a90524318c44c5e..ac1d4f3f4b57a554334ba376354015c635c293da 100644 --- a/src/data/backwardsCompatibility/backwardsCompatibility.js +++ b/src/data/backwardsCompatibility/backwardsCompatibility.js @@ -1850,7 +1850,7 @@ App.Update.human = (actor, slaveType, node=undefined) => { App.Update.deleteProperties(actor, [ "effectiveWhoreClass", "maxWhoreClass", "needCap", "milkOutput", "cumOutput", "curStillBirth", "lastWeeksCashExpenses", "slavesKnockedUp", "reservedChildren", "reservedChildrenNursery", - "fertDrugs", "staminaPills", "storedCum" + "fertDrugs", "staminaPills", "storedCum", "slavesFathered" ]); // ----------------------------------- automated beyond this point ----------------------------------- diff --git a/src/events/intro/pcAppearance.js b/src/events/intro/pcAppearance.js index 840a1a7f721a89c580db66c7380fe1006e8f2319..939606cd5443bd186a17e3c002efffc05419daed 100644 --- a/src/events/intro/pcAppearance.js +++ b/src/events/intro/pcAppearance.js @@ -324,12 +324,12 @@ App.UI.Player.appearance = function(options, summary = false) { ["Enormous", 3, () => V.PC.foreskin = 4] ]); options.addOption("Its hood is", "foreskin", V.PC) - .addValueList([ - ["Exposed by a circumcision", 0], - ["Covered by a hood", V.PC.clit + 1] - ]) - .showTextBox() - .addComment("Any value above 0 is uncircumcised. A hood that is too large can reduce pleasure, while no hood or one that is too small can lead to overstimulation."); + .addValueList([ + ["Exposed by a circumcision", 0], + ["Covered by a hood", V.PC.clit + 1] + ]) + .showTextBox() + .addComment("Any value above 0 is uncircumcised. A hood that is too large can reduce pleasure, while no hood or one that is too small can lead to overstimulation."); } if (V.PC.physicalAge <= 18) { options.addOption("You are", "vagina", V.PC) diff --git a/src/gui/options/options.js b/src/gui/options/options.js index 802e4fcb12d694d6f7c540b02e72e691744e7f82..7266279da1191ac9f33fd69df87300c20787c43b 100644 --- a/src/gui/options/options.js +++ b/src/gui/options/options.js @@ -1441,11 +1441,6 @@ App.UI.aiPromptingOptions = function(options) { ["Anime/Hentai", 2], ["Custom", 0] ]); - options.addOption("LoRA models are", "aiLoraPack") - .addValue("Enabled", true).on().addValue("Disabled", false).off(); - if (V.aiLoraPack) { - options.addCustom(App.UI.aiLoraList()); - } if (V.aiStyle === 0) { options.addOption("AI custom style positive prompt", "aiCustomStylePos").showTextBox({large: true, forceString: true}) .addComment("Include desired LoRA triggers (<code><lora:LowRA:0.5></code>) and general style prompts relevant to your chosen model ('<code>hand drawn, dark theme, black background</code>'), but no slave-specific prompts"); @@ -1456,6 +1451,11 @@ App.UI.aiPromptingOptions = function(options) { } else if (V.aiStyle === 2) { options.addComment("For best results, use an appropriately-trained hentai base model, such as Hassaku."); } + options.addOption("LoRA models are", "aiLoraPack") + .addValue("Enabled", true).on().addValue("Disabled", false).off(); + if (V.aiLoraPack) { + options.addCustom(App.UI.aiLoraList()); + } options.addOption("Nationality factor in prompt", "aiNationality") .addValue("Strong", 2).addValue("Weak", 1).on().addValue("Disabled", 0).off() .addComment("Helps differentiate between ethnicities that share a Free Cities race, like Japanese and Korean or Spanish and Greek. May cause flags/national colors to appear unexpectedly, and can have a negative impact on slaves that belong to a minority race for their nationality."); diff --git a/src/js/pronouns.js b/src/js/pronouns.js index 75a37b28ae536a7a15505546482314e02b79befd..6b9cbdef213d161a75d7594fe114b8a7fc02ba2f 100644 --- a/src/js/pronouns.js +++ b/src/js/pronouns.js @@ -126,7 +126,10 @@ globalThis.getSpokenPronouns = function(obj, spokenBy) { */ globalThis.getNonlocalPronouns = function(dickRatio) { /* a fake slave object, we need the .pronoun attribute only */ - const slave = {pronoun: App.Data.Pronouns.Kind.female}; + const slave = { + /** @type {App.Data.Pronouns.Kind} */ + pronoun: App.Data.Pronouns.Kind.female + }; /* Used for generic slaves, citizens, security, etc. */ if (V.diversePronouns === 1 && dickRatio > 0 && (dickRatio >= 100 || random(1, 100) <= dickRatio)) { slave.pronoun = App.Data.Pronouns.Kind.male; @@ -141,6 +144,7 @@ globalThis.getNonlocalPronouns = function(dickRatio) { * @returns {string} */ globalThis.pronounsForSlaveProp = function(slave, prop) { + if (!prop || prop.length === 0) { return prop; } // nothing to do const pronouns = getPronouns(slave); return prop.replace(/\$([A-Z]?[a-z]+)/g, (match, cap1) => pronouns[cap1] || match); };