From 0d3ac2ce83a57f29d3f30150cfb5ad4af8756b9a Mon Sep 17 00:00:00 2001 From: Vlyan Date: Fri, 25 Feb 2022 10:17:28 +0100 Subject: [PATCH] npc gen : added children --- system/lang/en-en.json | 1 + system/lang/es-es.json | 1 + system/lang/fr-fr.json | 1 + system/scripts/actors/character-generator.js | 48 +++++++++++++++++++- system/styles/scss/ui.scss | 4 -- 5 files changed, 49 insertions(+), 6 deletions(-) diff --git a/system/lang/en-en.json b/system/lang/en-en.json index 0f7cc36..11c511c 100644 --- a/system/lang/en-en.json +++ b/system/lang/en-en.json @@ -249,6 +249,7 @@ "intrigue": "Intrigue" }, "age": "Age", + "children": "Children", "marital_status": { "title": "Marital Status", "partner": "Partner", diff --git a/system/lang/es-es.json b/system/lang/es-es.json index d832e57..e32d185 100644 --- a/system/lang/es-es.json +++ b/system/lang/es-es.json @@ -249,6 +249,7 @@ "intrigue": "Intriga" }, "age": "Age", + "children": "Children", "marital_status": { "title": "Marital Status", "partner": "Partner", diff --git a/system/lang/fr-fr.json b/system/lang/fr-fr.json index b76a86a..4c678ec 100644 --- a/system/lang/fr-fr.json +++ b/system/lang/fr-fr.json @@ -249,6 +249,7 @@ "intrigue": "Intrigue" }, "age": "Age", + "children": "Enfants", "marital_status": { "title": "État civil", "partner": "Partenaire", diff --git a/system/scripts/actors/character-generator.js b/system/scripts/actors/character-generator.js index 47c2b06..2ca0093 100644 --- a/system/scripts/actors/character-generator.js +++ b/system/scripts/actors/character-generator.js @@ -2,6 +2,11 @@ * L5R Character generator base object */ export class CharacterGenerator { + /** + * Base age (minimal) + */ + static baseAge = 15; + /** * Payload Object */ @@ -10,7 +15,7 @@ export class CharacterGenerator { clan: "random", family: "", gender: "male", - age: 15, + age: CharacterGenerator.baseAge, maritalStatus: "", }; @@ -145,7 +150,10 @@ export class CharacterGenerator { * @return {number} */ static genAge(avgRingsValue) { - return CharacterGenerator._randomInt(15, avgRingsValue * 10 + 15); + return CharacterGenerator._randomInt( + CharacterGenerator.baseAge, + avgRingsValue * 10 + CharacterGenerator.baseAge + ); } /** @@ -193,6 +201,36 @@ export class CharacterGenerator { return partner; } + /** + * Generate children + * @param {number} age Current npc age + * @param {string} clan Current npc clan + * @return {Promise} + */ + static async genChildren(age, clan) { + const childs = []; + + let ageLoop = Math.max(0, age - CharacterGenerator.baseAge - 1); + while (ageLoop > 0) { + const childAge = CharacterGenerator._randomInt(1, ageLoop); + + if (Math.random() > 0.66) { + const childIsFemale = Math.random() > 0.5; + const childName = await CharacterGenerator.getRandomizedFirstname(childIsFemale, clan); + + childs.push( + `${childName} (${childAge}, ${game.i18n.localize( + "l5r5e.social.gender." + (childIsFemale ? "female" : "male") + )})` + ); + } + + ageLoop -= childAge + 1; + } + + return childs; + } + /** * Generate Honor, Glory and Status values * @param {number} age @@ -615,6 +653,12 @@ export class CharacterGenerator { "l5r5e.social.gender." + (partner.female ? "female" : "male") )})` + "

"; + + // Childs + const childs = await CharacterGenerator.genChildren(Math.min(this.data.age, partner.age), this.data.clan); + if (childs.length > 0) { + actorDatas.notes += `

${game.i18n.localize("l5r5e.social.children")}: ${childs.join(", ")}

`; + } } } diff --git a/system/styles/scss/ui.scss b/system/styles/scss/ui.scss index dbab3c6..622a9d2 100644 --- a/system/styles/scss/ui.scss +++ b/system/styles/scss/ui.scss @@ -919,7 +919,6 @@ button { } .autocomplete-wrapper { - /*the container must be positioned relative:*/ position: relative; display: inline-block; @@ -929,7 +928,6 @@ button { border-bottom: none; border-top: none; z-index: 99; - /*position the autocomplete items to be the same width as the container:*/ top: 100%; left: 0; right: 0; @@ -942,11 +940,9 @@ button { text-align: left; } .autocomplete-items div:hover { - /*when hovering an item:*/ background-color: #e9e9e9; } .autocomplete-active { - /*when navigating through the items using the arrow keys:*/ background-color: DodgerBlue !important; color: #ffffff; }