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;
}