diff --git a/system/scripts/l5r5e-config.js b/system/scripts/l5r5e-config.js index ad43716..050f36a 100644 --- a/system/scripts/l5r5e-config.js +++ b/system/scripts/l5r5e-config.js @@ -6,7 +6,7 @@ L5R5E.paths = { }; L5R5E.stances = ["earth", "air", "water", "fire", "void"]; -L5R5E.feats = ["kata", "kiho", "invocation", "ritual", "shuji", "maho", "ninjutsu"]; +L5R5E.techniques = ["kata", "kiho", "invocation", "ritual", "shuji", "maho", "ninjutsu"]; // Map SkillId - CategoryId L5R5E.skills = new Map(); diff --git a/system/scripts/sheets/twenty-questions-dialog.js b/system/scripts/sheets/twenty-questions-dialog.js index 625f847..36a1aac 100644 --- a/system/scripts/sheets/twenty-questions-dialog.js +++ b/system/scripts/sheets/twenty-questions-dialog.js @@ -2,6 +2,7 @@ import { L5R5E } from "../l5r5e-config.js"; /** * L5R Twenty Questions form + * * @extends {FormApplication} */ export class TwentyQuestionsDialog extends FormApplication { @@ -10,6 +11,11 @@ export class TwentyQuestionsDialog extends FormApplication { */ actor = null; + /** + * Current form datas + */ + datas = {}; + /** * Assign the default options * @override @@ -19,7 +25,7 @@ export class TwentyQuestionsDialog extends FormApplication { id: "l5r5e-twenty-questions-dialog", classes: ["l5r5e", "twenty-questions-dialog"], template: CONFIG.L5r5e.paths.templates + "sheets/twenty-questions-dialog.html", - title: "L5R Twenty Questions", // TODO Localize + title: game.i18n.localize("l5r5e.twenty_questions.title"), width: 600, height: 600, resizable: true, @@ -32,6 +38,7 @@ export class TwentyQuestionsDialog extends FormApplication { constructor(options = null, actor = null) { super(options); this.actor = actor; + this.datas = this._initFormDatas(actor); } /** @@ -44,8 +51,8 @@ export class TwentyQuestionsDialog extends FormApplication { ...super.getData(options), elementsList: this._getElements(), skillsList: this._getSkills(), - featsList: CONFIG.L5r5e.feats, - actor: this.actor.data.data, + featsList: CONFIG.L5r5e.techniques, + datas: this.datas, }; } @@ -86,63 +93,75 @@ export class TwentyQuestionsDialog extends FormApplication { */ async _updateObject(event, formData) { // this.actor - const actorTmp = this.actor.data.data; //.clone(); + const actorDatas = this.actor.data.data; + //this.actor.data.twenty_questions = formData; // TODO a tester - console.log(actorTmp); + actorDatas.name = (formData.step2_family + " " + formData.step19_firstname).trim(); + actorDatas.zeni = formData.step2_wealth; + actorDatas.identity = { + ...actorDatas.identity, + clan: formData.step1_clan, + family: formData.step2_family, + school: formData.step3_school, + roles: formData.step3_roles, + }; - actorTmp.identity.clan = formData.step1_clan; - actorTmp.social.status = formData.step1_social_status; - actorTmp.identity.family = formData.step2_family; - // actorTmp = formData.step2_wealth; - actorTmp.social.glory = formData.step2_social_glory; - actorTmp.identity.school = formData.step3_school; - actorTmp.identity.roles = formData.step3_roles; - // actorTmp = formData.step3_feat_kata; - // actorTmp = formData.step3_feat_kiho; - // actorTmp = formData.step3_feat_invocations; - // actorTmp = formData.step3_feat_rituals; - // actorTmp = formData.step3_feat_shuji; - // actorTmp = formData.step3_feat_maho; - // actorTmp = formData.step3_feat_ninjutsu; - // actorTmp = formData.step3_feats; - // actorTmp = formData.step3_school_ability; - // actorTmp = formData.step3_equipment; - actorTmp.social.honor = formData.step3_social_honor; - // actorTmp = formData.step4_stand_out; - actorTmp.social.giri = formData.step5_social_giri; - actorTmp.social.ninjo = formData.step6_social_ninjo; - // actorTmp = formData.step7_clan_relations; - // actorTmp = formData.step7_social_add_glory; - // actorTmp = formData.step8_bushido; - // actorTmp = formData.step8_social_add_honor; - // actorTmp = formData.step9_success; - // actorTmp = formData.step9_distinction; - // actorTmp = formData.step10_difficulty; - // actorTmp = formData.step10_adversity; - // actorTmp = formData.step11_calms; - // actorTmp = formData.step11_passion; - // actorTmp = formData.step12_worries; - // actorTmp = formData.step12_failure; - // actorTmp = formData.step13_most_learn; - // actorTmp = formData.step13_disadvantage; - // actorTmp = formData.step13_advantage; - // actorTmp = formData.step14_first_sight; - // actorTmp = formData.step14_special_features; - // actorTmp = formData.step15_stress; - // actorTmp = formData.step16_relations; - // actorTmp = formData.step16_item; - // actorTmp = formData.step17_parents_pov; - // actorTmp = formData.step18_heritage_name; - // actorTmp = formData.step18_heritage_1; - // actorTmp = formData.step18_heritage_2; - actorTmp.name = actorTmp.identity.family + " " + formData.step19_firstname; - // actorTmp = formData.step20_death; + actorDatas.social = { + ...actorDatas.social, + status: formData.step1_social_status, + glory: formData.step2_social_glory, + honor: formData.step3_social_honor, + giri: formData.step5_social_giri, + ninjo: formData.step6_social_ninjo, + }; + + actorDatas.techniques = { + kata: !!formData.step3_feat_kata, + kiho: formData.step3_feat_kiho, + invocation: !!formData.step3_feat_invocation, + ritual: !!formData.step3_feat_ritual, + shuji: !!formData.step3_feat_shuji, + maho: !!formData.step3_feat_maho, + ninjutsu: !!formData.step3_feat_ninjutsu, + }; + + // actorDatas = formData.step3_feats; + // actorDatas = formData.step3_school_ability; + // actorDatas = formData.step3_equipment; + // actorDatas = formData.step4_stand_out; + // actorDatas = formData.step7_clan_relations; + // actorDatas = formData.step7_social_add_glory; + // actorDatas = formData.step8_bushido; + // actorDatas = formData.step8_social_add_honor; + // actorDatas = formData.step9_success; + // actorDatas = formData.step9_distinction; + // actorDatas = formData.step10_difficulty; + // actorDatas = formData.step10_adversity; + // actorDatas = formData.step11_calms; + // actorDatas = formData.step11_passion; + // actorDatas = formData.step12_worries; + // actorDatas = formData.step12_failure; + // actorDatas = formData.step13_most_learn; + // actorDatas = formData.step13_disadvantage; + // actorDatas = formData.step13_advantage; + // actorDatas = formData.step14_first_sight; + // actorDatas = formData.step14_special_features; + // actorDatas = formData.step15_stress; + // actorDatas = formData.step16_relations; + // actorDatas = formData.step16_item; + // actorDatas = formData.step17_parents_pov; + // actorDatas = formData.step18_heritage_name; + // actorDatas = formData.step18_heritage_1; + // actorDatas = formData.step18_heritage_2; + // actorDatas = formData.step20_death; const rings = this._filterRingOrSkills(formData.rings); const skills = this._filterRingOrSkills(formData.skills); + console.log(actorDatas); + // TODO - console.log(rings, skills, actorTmp, formData); + console.log(rings, skills, formData, actorDatas, this.actor); // return this.close(); } @@ -190,4 +209,38 @@ export class TwentyQuestionsDialog extends FormApplication { }); return skills; } + + /** + * Initialize form array + * @private + */ + _initFormDatas(actor) { + const actorDatas = actor.data.data; + + // already 20q struct ? + if (actorDatas.twenty_questions?.step1_clan) { + return actorDatas.twenty_questions; + } + + // If not fill some values + return { + step1_clan: actorDatas.identity.clan, + step1_social_status: actorDatas.social.status, + step2_family: actorDatas.identity.family, + step2_social_glory: actorDatas.social.glory, + step3_school: actorDatas.identity.school, + step3_roles: actorDatas.identity.roles, + step3_feat_kata: actorDatas.techniques.kata, + step3_feat_kiho: actorDatas.techniques.kiho, + step3_feat_invocations: actorDatas.techniques.invocation, + step3_feat_rituals: actorDatas.techniques.ritual, + step3_feat_shuji: actorDatas.techniques.shuji, + step3_feat_maho: actorDatas.techniques.maho, + step3_feat_ninjutsu: actorDatas.techniques.ninjutsu, + step3_social_honor: actorDatas.social.honor, + step5_social_giri: actorDatas.social.giri, + step6_social_ninjo: actorDatas.social.ninjo, + step19_firstname: actor.data.name.replace(/^(?:\w+\s+)?(.+)$/gi, "$1") || "", + }; + } } diff --git a/system/template.json b/system/template.json index 1ac731c..81526ae 100644 --- a/system/template.json +++ b/system/template.json @@ -3,11 +3,13 @@ "types": ["character", "npc"], "templates": { "identity": { - "clan": "", - "family": "", - "school": "", - "school_rank": 0, - "roles": "" + "identity": { + "clan": "", + "family": "", + "school": "", + "school_rank": 0, + "roles": "" + } }, "rings": { "rings": { @@ -83,16 +85,28 @@ "xp_total": 0, "xp_spent": 0, "xp_saved": 0 + }, + "techniques": { + "techniques": { + "kata": false, + "kiho": false, + "invocation": false, + "ritual": false, + "shuji": false, + "maho": false, + "ninjutsu": false + } } }, "character": { - "templates": ["identity", "rings", "social", "skills", "conflict", "xp"], + "templates": ["identity", "rings", "social", "skills", "techniques", "conflict", "xp"], + "zeni": 0, "notes": "", - "feats": [] + "feats": [], + "twenty_questions": {} }, "npc": { "templates": ["rings", "social", "conflict"], - "name": "", "type": "minion", "attitude": "", "notes": "", diff --git a/system/templates/sheets/twenty-questions-dialog.html b/system/templates/sheets/twenty-questions-dialog.html index 75dce35..745eea0 100644 --- a/system/templates/sheets/twenty-questions-dialog.html +++ b/system/templates/sheets/twenty-questions-dialog.html @@ -13,7 +13,7 @@

{{localize 'l5r5e.twenty_questions.part1.title'}}

1. A quel clan appartient votre personnage ? (p. 41) - +
Augmentation d'Anneau (1) @@ -42,13 +42,13 @@
2. A quelle famille appartient votre personnage ? (p. 49) - +
Augmentation d'Anneau (1) @@ -86,15 +86,14 @@
@@ -106,12 +105,12 @@
@@ -190,35 +189,34 @@ {{#each featsList as |feat|}} {{/each}} -
Techniques de départ (2-5) - +
Capacité d'école - +
Équipement de départ - +
4. De quelle manière votre personnage se démarque-t-il au sein de son école ? (p. 88) - + Augmentation d'Anneau (1) +
6. Que désire votre personnage, et en quoi ce désir risque-t-il de l’empêcher d’accomplir son devoir ? (p. 90) Choisissez un ninjō: - +
7. Quelle relation votre personnage entretient-il avec son clan ? (p. 91) - +
Augmentation de compétence (1) @@ -262,13 +260,13 @@
8. Que pense votre personnage du bushido ? (p. 91) - +
Augmentation de compétence (1) @@ -286,8 +284,8 @@ OU
@@ -296,35 +294,35 @@

{{localize 'l5r5e.twenty_questions.part4.title'}}

9. Quelle est à ce jour la plus belle réussite de votre personnage ? (p. 92) - + Aptitude (1) - +
10. Quel est le frein principal dans la vie de votre personnage ? (p. 92) - + Coup du sort (1) - +
11. Quelle activité apaise le plus votre personnage ? (p. 93) - + Passion (1) - +
12. Quelle inquiétude, crainte ou manie tracasse le plus votre personnage ? (p. 93) - + Défaillance (1) - +
13. De qui votre personnage a-t-il le plus appris au cours de sa vie ? (p. 93) - +
Augmentation de compétence (1) @@ -340,12 +338,12 @@ Désavantage (1) - +
OU Avantage (1) - +
@@ -353,29 +351,29 @@

{{localize 'l5r5e.twenty_questions.part5.title'}}

14. Que remarque-t-on en premier chez votre personnage ? (p. 93) - + Particularités - +
15. Comment votre personnage réagit-il aux situations stressantes ? (p. 94) - +
16. Quelles relations votre personnage entretient-il avec des familles, des organisations, des traditions et des clans différents ? (p. 94) - + Objet (Rareté inférieur ou égale à 7) - +

{{localize 'l5r5e.twenty_questions.part6.title'}}

17. Comment les parents de votre personnage le décriraient-ils ? (p. 95) - + Augmentation de compétence (1) +
19. Quel est le prénom de votre personnage ? (p. 95) - +

{{localize 'l5r5e.twenty_questions.part7.title'}}

20. Comment envisagez-vous la mort de votre personnage ? (p. 95) - +
-