diff --git a/js/003-data/startingGirlsData.js b/js/003-data/startingGirlsData.js index 5af7cb18d04f3431ebb94cebf9417a19a6c6feef..2a647269195e884a98b2473c189b428c78b24ad4 100644 --- a/js/003-data/startingGirlsData.js +++ b/js/003-data/startingGirlsData.js @@ -92,5 +92,11 @@ App.Data.StartingGirls = { {name: "Powerful", value: 65, max: 80, style: "on"}, {name: "Sex addict", value: 85, max: 99, style: "on"}, {name: "Nympho", value: 100, max: 999, style: "on"} + ], + skill: [ + {name: "Unskilled", value: 0, max: 10}, + {name: "Basic", value: 15, max: 30}, + {name: "Skilled", value: 35, max: 60}, + {name: "Expert", value: 65, max: 999} ] }; diff --git a/src/npc/startingGirls/startingGirls.js b/src/npc/startingGirls/startingGirls.js index 44c4dcc99b928394d0ee30b97943a425fff78218..540ea67aa15730fed446fb184449e960ed07e8a6 100644 --- a/src/npc/startingGirls/startingGirls.js +++ b/src/npc/startingGirls/startingGirls.js @@ -41,6 +41,11 @@ App.StartingGirls.generate = function(params) { slave.attrXY = mapValue(slave.attrXY, App.Data.StartingGirls.attr); slave.attrXX = mapValue(slave.attrXY, App.Data.StartingGirls.attr); slave.energy = mapValue(slave.energy, App.Data.StartingGirls.energy); + slave.skill.oral = mapValue(slave.skill.oral, App.Data.StartingGirls.skill); + slave.skill.anal = mapValue(slave.skill.anal, App.Data.StartingGirls.skill); + slave.skill.vaginal = mapValue(slave.skill.vaginal, App.Data.StartingGirls.skill); + slave.skill.whoring = mapValue(slave.skill.whoring, App.Data.StartingGirls.skill); + slave.skill.entertainment = mapValue(slave.skill.entertainment, App.Data.StartingGirls.skill); return slave; }; @@ -1364,3 +1369,67 @@ App.StartingGirls.mental = function(slave) { return el; }; + +/** + * @param {App.Entity.SlaveState}slave + * @returns {HTMLDivElement} + */ +App.StartingGirls.skills = function(slave) { + const options = new App.UI.OptionsGroup(); + + App.StartingGirls.addSet( + options.addOption("Oral sex", "oral", slave.skill), + App.Data.StartingGirls.skill); + + let option = options.addOption("Anal sex", "anal", slave.skill); + + if (slave.anus === 0) { + option.addComment("Anal virgins cannot be given anal skills."); + } else { + App.StartingGirls.addSet(option, App.Data.StartingGirls.skill); + } + + option = options.addOption("Vaginal sex", "vaginal", slave.skill); + if (slave.vagina === 0) { + option.addComment("Virgins cannot be given anal skills."); + } else if (slave.vagina === -1) { + option.addComment("Must have a vagina to have vaginal skills."); + } else { + App.StartingGirls.addSet(option, App.Data.StartingGirls.skill); + } + + App.StartingGirls.addSet( + options.addOption("Prostitution", "whoring", slave.skill), + App.Data.StartingGirls.skill); + App.StartingGirls.addSet( + options.addOption("Entertainment", "entertainment", slave.skill), + App.Data.StartingGirls.skill); + + options.addOption("Combat", "combat", slave.skill) + .addValueList([["Unskilled", 0], ["Skilled", 1]]); + + // skill warning + const totalSkill = slave.skill.whoring + slave.skill.entertainment + slave.skill.vaginal + + slave.skill.anal + slave.skill.oral + (slave.skill.combat * 100); + + if (totalSkill > 200) { + let comment = ["Starting slaves incur"]; + if (totalSkill > 400) { + comment.push("a severe cost penalty for being highly"); + } else { + comment.push("an additional cost penalty for being"); + } + comment.push("skilled. This slave's"); + if (slave.actualAge >= 25) { + if (slave.actualAge > 35) { + comment.push("advanced"); + } + comment.push("age decreases the penalty."); + } else { + comment.push("young age requires paying the full penalty."); + } + options.addComment(`<span class="warning">${comment.join(" ")}</span>`); + } + + return options.render(); +}; diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw index 6dc4e30a17bbc6c267dfbcebb163fd38ab8faefa..2e8f5704c14d297f37b4421f5da994398d8793d6 100644 --- a/src/npc/startingGirls/startingGirls.tw +++ b/src/npc/startingGirls/startingGirls.tw @@ -236,73 +236,7 @@ <div id="Skills" class="tab-content"> <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")>> - - <<set _option = _options.addOption("Anal sex", "anal", $activeSlave.skill)>> - <<if $activeSlave.anus === 0>> - <<run _option.addComment("Anal virgins cannot be given anal skills.")>> - <<else>> - <<run _option.addRange(0, 10, "<=", "Unskilled") - .addRange(15, 30, "<=", "Basic") - .addRange(35, 60, "<=", "Skilled") - .addRange(65, 60, ">", "Expert")>> - <</if>> - - <<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>> - <<run _option.addRange(0, 10, "<=", "Unskilled") - .addRange(15, 30, "<=", "Basic") - .addRange(35, 60, "<=", "Skilled") - .addRange(65, 60, ">", "Expert")>> - <</if>> - - <<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>> - - <<includeDOM _options.render()>> + <<includeDOM App.StartingGirls.skills($activeSlave)>> </div> </div>