diff --git a/src/js/utilsMisc.js b/src/js/utilsMisc.js index e8495d7557c8ef787408879ce3ff2a89430e24e6..1fa4666e0700f9aebd8bbb18dbb45601c9690d03 100644 --- a/src/js/utilsMisc.js +++ b/src/js/utilsMisc.js @@ -80,8 +80,8 @@ App.Utils.alphabetizeIterable = function(iterable) { let aTitle = a.toLowerCase(); let bTitle = b.toLowerCase(); - aTitle = removeArticles(aTitle); - bTitle = removeArticles(bTitle); + aTitle = App.Utils.removeArticles(aTitle); + bTitle = App.Utils.removeArticles(bTitle); if (aTitle > bTitle) { return 1; @@ -90,18 +90,23 @@ App.Utils.alphabetizeIterable = function(iterable) { return -1; } return 0; - }; + }; - function removeArticles(str) { - const words = str.split(" "); - if (words.length <= 1) { - return str; - } - if ( words[0] === 'a' || words[0] === 'the' || words[0] === 'an' ) { - return words.splice(1).join(" "); - } - return str; - } const clonedArray = (Array.from(iterable)); return clonedArray.sort(compare); }; + +/** + * @param {string} str + * @returns {string} + */ +App.Utils.removeArticles = function(str) { + const words = str.split(" "); + if (words.length <= 1) { + return str; + } + if (words[0] === "a" || words[0] === "the" || words[0] === "an") { + return words.splice(1).join(" "); + } + return str; +}; diff --git a/src/npc/startingGirls/startingGirls.js b/src/npc/startingGirls/startingGirls.js index 07907b46c97f4b6ff67dc48efefb636de75f8e80..a2915de8eaa8d71a102bc56e758a225a3612d1be 100644 --- a/src/npc/startingGirls/startingGirls.js +++ b/src/npc/startingGirls/startingGirls.js @@ -1098,40 +1098,49 @@ App.StartingGirls.profile = function(slave) { options.addOption("Slave surname", "slaveSurname", slave).showTextBox(); option = options.addOption("Career", "career", slave).showTextBox(); + /** + * @type {Array<string>} + */ let careers; let text; - if (V.AgePenalty === 1) { - if (slave.actualAge < 16) { - text = "Very young careers"; - careers = App.Data.Careers.General.veryYoung; - } else if (slave.actualAge <= 24) { - text = "Young careers"; - careers = App.Utils.alphabetizeIterable(App.Data.Careers.General.young); - } else if (slave.intelligenceImplant >= 15) { - text = "Educated careers"; - careers = App.Utils.alphabetizeIterable(App.Data.Careers.General.educated); - } else { - text = "Uneducated careers"; - careers = App.Utils.alphabetizeIterable(App.Data.Careers.General.uneducated); - } + if (slave.actualAge < 16) { + text = "Very young careers"; + careers = App.Data.Careers.General.veryYoung; } else { - if (slave.actualAge < 16) { - text = "Very young careers"; - careers = App.Utils.alphabetizeIterable(App.Data.Careers.General.veryYoung); - } else if (slave.intelligenceImplant >= 15) { - text = "Educated careers"; - careers = App.Utils.alphabetizeIterable(App.Data.Careers.General.educated); - } else if (slave.actualAge <= 24) { - text = "Young careers"; - careers = App.Utils.alphabetizeIterable(App.Data.Careers.General.young); + if (V.AgePenalty === 1) { + if (slave.actualAge <= 24) { + text = "Young careers"; + careers = App.Data.Careers.General.young; + } else if (slave.intelligenceImplant >= 15) { + text = "Educated careers"; + careers = App.Data.Careers.General.educated; + } else { + text = "Uneducated careers"; + careers = App.Data.Careers.General.uneducated; + } } else { - text = "Uneducated careers"; - careers = App.Utils.alphabetizeIterable(App.Data.Careers.General.uneducated); + if (slave.intelligenceImplant >= 15) { + text = "Educated careers"; + careers = App.Data.Careers.General.educated; + } else if (slave.actualAge <= 24) { + text = "Young careers"; + careers = App.Data.Careers.General.young; + } else { + text = "Uneducated careers"; + careers = App.Data.Careers.General.uneducated; + } } } + + const niceCareers = new Map(); for (const career of careers) { - option.addValue(capFirstChar(career), career); + const nice = capFirstChar(App.Utils.removeArticles(career)); + niceCareers.set(nice, career); } + for (const career of [...niceCareers.keys()].sort()) { + option.addValue(career, niceCareers.get(career)); + } + option.addComment(text).pulldown(); const indenture = {active: slave.indenture > -1};