added zeni and reworking identity

This commit is contained in:
Vlyan
2020-12-16 10:36:12 +01:00
parent 0c99a65e57
commit 48356701b2
4 changed files with 171 additions and 106 deletions

View File

@@ -6,7 +6,7 @@ L5R5E.paths = {
}; };
L5R5E.stances = ["earth", "air", "water", "fire", "void"]; 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 // Map SkillId - CategoryId
L5R5E.skills = new Map(); L5R5E.skills = new Map();

View File

@@ -2,6 +2,7 @@ import { L5R5E } from "../l5r5e-config.js";
/** /**
* L5R Twenty Questions form * L5R Twenty Questions form
*
* @extends {FormApplication} * @extends {FormApplication}
*/ */
export class TwentyQuestionsDialog extends FormApplication { export class TwentyQuestionsDialog extends FormApplication {
@@ -10,6 +11,11 @@ export class TwentyQuestionsDialog extends FormApplication {
*/ */
actor = null; actor = null;
/**
* Current form datas
*/
datas = {};
/** /**
* Assign the default options * Assign the default options
* @override * @override
@@ -19,7 +25,7 @@ export class TwentyQuestionsDialog extends FormApplication {
id: "l5r5e-twenty-questions-dialog", id: "l5r5e-twenty-questions-dialog",
classes: ["l5r5e", "twenty-questions-dialog"], classes: ["l5r5e", "twenty-questions-dialog"],
template: CONFIG.L5r5e.paths.templates + "sheets/twenty-questions-dialog.html", 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, width: 600,
height: 600, height: 600,
resizable: true, resizable: true,
@@ -32,6 +38,7 @@ export class TwentyQuestionsDialog extends FormApplication {
constructor(options = null, actor = null) { constructor(options = null, actor = null) {
super(options); super(options);
this.actor = actor; this.actor = actor;
this.datas = this._initFormDatas(actor);
} }
/** /**
@@ -44,8 +51,8 @@ export class TwentyQuestionsDialog extends FormApplication {
...super.getData(options), ...super.getData(options),
elementsList: this._getElements(), elementsList: this._getElements(),
skillsList: this._getSkills(), skillsList: this._getSkills(),
featsList: CONFIG.L5r5e.feats, featsList: CONFIG.L5r5e.techniques,
actor: this.actor.data.data, datas: this.datas,
}; };
} }
@@ -86,63 +93,75 @@ export class TwentyQuestionsDialog extends FormApplication {
*/ */
async _updateObject(event, formData) { async _updateObject(event, formData) {
// this.actor // 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; actorDatas.social = {
actorTmp.social.status = formData.step1_social_status; ...actorDatas.social,
actorTmp.identity.family = formData.step2_family; status: formData.step1_social_status,
// actorTmp = formData.step2_wealth; glory: formData.step2_social_glory,
actorTmp.social.glory = formData.step2_social_glory; honor: formData.step3_social_honor,
actorTmp.identity.school = formData.step3_school; giri: formData.step5_social_giri,
actorTmp.identity.roles = formData.step3_roles; ninjo: formData.step6_social_ninjo,
// actorTmp = formData.step3_feat_kata; };
// actorTmp = formData.step3_feat_kiho;
// actorTmp = formData.step3_feat_invocations; actorDatas.techniques = {
// actorTmp = formData.step3_feat_rituals; kata: !!formData.step3_feat_kata,
// actorTmp = formData.step3_feat_shuji; kiho: formData.step3_feat_kiho,
// actorTmp = formData.step3_feat_maho; invocation: !!formData.step3_feat_invocation,
// actorTmp = formData.step3_feat_ninjutsu; ritual: !!formData.step3_feat_ritual,
// actorTmp = formData.step3_feats; shuji: !!formData.step3_feat_shuji,
// actorTmp = formData.step3_school_ability; maho: !!formData.step3_feat_maho,
// actorTmp = formData.step3_equipment; ninjutsu: !!formData.step3_feat_ninjutsu,
actorTmp.social.honor = formData.step3_social_honor; };
// actorTmp = formData.step4_stand_out;
actorTmp.social.giri = formData.step5_social_giri; // actorDatas = formData.step3_feats;
actorTmp.social.ninjo = formData.step6_social_ninjo; // actorDatas = formData.step3_school_ability;
// actorTmp = formData.step7_clan_relations; // actorDatas = formData.step3_equipment;
// actorTmp = formData.step7_social_add_glory; // actorDatas = formData.step4_stand_out;
// actorTmp = formData.step8_bushido; // actorDatas = formData.step7_clan_relations;
// actorTmp = formData.step8_social_add_honor; // actorDatas = formData.step7_social_add_glory;
// actorTmp = formData.step9_success; // actorDatas = formData.step8_bushido;
// actorTmp = formData.step9_distinction; // actorDatas = formData.step8_social_add_honor;
// actorTmp = formData.step10_difficulty; // actorDatas = formData.step9_success;
// actorTmp = formData.step10_adversity; // actorDatas = formData.step9_distinction;
// actorTmp = formData.step11_calms; // actorDatas = formData.step10_difficulty;
// actorTmp = formData.step11_passion; // actorDatas = formData.step10_adversity;
// actorTmp = formData.step12_worries; // actorDatas = formData.step11_calms;
// actorTmp = formData.step12_failure; // actorDatas = formData.step11_passion;
// actorTmp = formData.step13_most_learn; // actorDatas = formData.step12_worries;
// actorTmp = formData.step13_disadvantage; // actorDatas = formData.step12_failure;
// actorTmp = formData.step13_advantage; // actorDatas = formData.step13_most_learn;
// actorTmp = formData.step14_first_sight; // actorDatas = formData.step13_disadvantage;
// actorTmp = formData.step14_special_features; // actorDatas = formData.step13_advantage;
// actorTmp = formData.step15_stress; // actorDatas = formData.step14_first_sight;
// actorTmp = formData.step16_relations; // actorDatas = formData.step14_special_features;
// actorTmp = formData.step16_item; // actorDatas = formData.step15_stress;
// actorTmp = formData.step17_parents_pov; // actorDatas = formData.step16_relations;
// actorTmp = formData.step18_heritage_name; // actorDatas = formData.step16_item;
// actorTmp = formData.step18_heritage_1; // actorDatas = formData.step17_parents_pov;
// actorTmp = formData.step18_heritage_2; // actorDatas = formData.step18_heritage_name;
actorTmp.name = actorTmp.identity.family + " " + formData.step19_firstname; // actorDatas = formData.step18_heritage_1;
// actorTmp = formData.step20_death; // actorDatas = formData.step18_heritage_2;
// actorDatas = formData.step20_death;
const rings = this._filterRingOrSkills(formData.rings); const rings = this._filterRingOrSkills(formData.rings);
const skills = this._filterRingOrSkills(formData.skills); const skills = this._filterRingOrSkills(formData.skills);
console.log(actorDatas);
// TODO // TODO
console.log(rings, skills, actorTmp, formData); console.log(rings, skills, formData, actorDatas, this.actor);
// return this.close(); // return this.close();
} }
@@ -190,4 +209,38 @@ export class TwentyQuestionsDialog extends FormApplication {
}); });
return skills; 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") || "",
};
}
} }

View File

@@ -2,12 +2,14 @@
"Actor": { "Actor": {
"types": ["character", "npc"], "types": ["character", "npc"],
"templates": { "templates": {
"identity": {
"identity": { "identity": {
"clan": "", "clan": "",
"family": "", "family": "",
"school": "", "school": "",
"school_rank": 0, "school_rank": 0,
"roles": "" "roles": ""
}
}, },
"rings": { "rings": {
"rings": { "rings": {
@@ -83,16 +85,28 @@
"xp_total": 0, "xp_total": 0,
"xp_spent": 0, "xp_spent": 0,
"xp_saved": 0 "xp_saved": 0
},
"techniques": {
"techniques": {
"kata": false,
"kiho": false,
"invocation": false,
"ritual": false,
"shuji": false,
"maho": false,
"ninjutsu": false
}
} }
}, },
"character": { "character": {
"templates": ["identity", "rings", "social", "skills", "conflict", "xp"], "templates": ["identity", "rings", "social", "skills", "techniques", "conflict", "xp"],
"zeni": 0,
"notes": "", "notes": "",
"feats": [] "feats": [],
"twenty_questions": {}
}, },
"npc": { "npc": {
"templates": ["rings", "social", "conflict"], "templates": ["rings", "social", "conflict"],
"name": "",
"type": "minion", "type": "minion",
"attitude": "", "attitude": "",
"notes": "", "notes": "",

View File

@@ -13,7 +13,7 @@
<h2>{{localize 'l5r5e.twenty_questions.part1.title'}}</h2> <h2>{{localize 'l5r5e.twenty_questions.part1.title'}}</h2>
<div> <div>
1. A quel clan appartient votre personnage ? (p. 41) 1. A quel clan appartient votre personnage ? (p. 41)
<input type="text" name="step1_clan" value="{{actor.identity.clan}}"> <input type="text" name="step1_clan" value="{{datas.step1_clan}}">
<div> <div>
Augmentation d'Anneau (1) Augmentation d'Anneau (1)
@@ -42,13 +42,13 @@
<div> <div>
<label> <label>
Statut Statut
<input type="number" name="step1_social_status" min="0" max="100" value="{{actor.social.status}}"> <input type="number" name="step1_social_status" min="0" max="100" value="{{datas.step1_social_status}}" data-dtype="Number" placeholder="0">
</label> </label>
</div> </div>
</div> </div>
<div> <div>
2. A quelle famille appartient votre personnage ? (p. 49) 2. A quelle famille appartient votre personnage ? (p. 49)
<input type="text" name="step2_family" value="{{actor.identity.family}}"> <input type="text" name="step2_family" value="{{datas.step2_family}}">
<div> <div>
Augmentation d'Anneau (1) Augmentation d'Anneau (1)
@@ -86,15 +86,14 @@
<div> <div>
<label> <label>
Fortune de départ : Fortune de départ :
<input type="text" name="step2_wealth"> <input type="text" name="step2_wealth" value="{{datas.step2_wealth}}" data-dtype="Number" placeholder="0">
<!-- TODO add to template.json -->
</label> </label>
</div> </div>
<div> <div>
<label> <label>
Gloire Gloire
<input type="number" name="step2_social_glory" min="0" max="100" value="{{actor.social.glory}}"> <input type="number" name="step2_social_glory" min="0" max="100" value="{{datas.step2_social_glory}}" data-dtype="Number" placeholder="0">
</label> </label>
</div> </div>
</div> </div>
@@ -106,12 +105,12 @@
<label> <label>
École École
<input type="text" name="step3_school" value="{{actor.identity.school}}"> <input type="text" name="step3_school" value="{{datas.step3_school}}">
</label> </label>
<label> <label>
Rôles Rôles
<input type="text" name="step3_roles" value="{{actor.identity.roles}}"> <input type="text" name="step3_roles" value="{{datas.step3_roles}}">
</label> </label>
<div> <div>
@@ -190,35 +189,34 @@
{{#each featsList as |feat|}} {{#each featsList as |feat|}}
<label><input type="checkbox" name="step3_feat_{{feat}}">{{localizeFeat feat}}</label> <label><input type="checkbox" name="step3_feat_{{feat}}">{{localizeFeat feat}}</label>
{{/each}} {{/each}}
<label>
</div> </div>
<div> <div>
Techniques de départ (2-5) Techniques de départ (2-5)
<textarea name="step3_feats"></textarea> <textarea name="step3_feats">{{datas.step3_feats}}</textarea>
<!-- TODO Drag n drop feats--> <!-- TODO Drag n drop feats-->
</div> </div>
<div> <div>
Capacité d'école Capacité d'école
<textarea name="step3_school_ability"></textarea> <textarea name="step3_school_ability">{{datas.step3_school_ability}}</textarea>
</div> </div>
<div> <div>
Équipement de départ Équipement de départ
<textarea name="step3_equipment"></textarea> <textarea name="step3_equipment">{{datas.step3_equipment}}</textarea>
</div> </div>
</div> </div>
<div> <div>
<label> <label>
Honneur Honneur
<input type="number" name="step3_social_honor" min="0" max="100" value="{{actor.social.honor}}"> <input type="number" name="step3_social_honor" min="0" max="100" value="{{datas.step3_social_honor}}" data-dtype="Number" placeholder="0">
</label> </label>
</div> </div>
<div> <div>
4. De quelle manière votre personnage se démarque-t-il au sein de son école ? (p. 88) 4. De quelle manière votre personnage se démarque-t-il au sein de son école ? (p. 88)
<textarea name="step4_stand_out"></textarea> <textarea name="step4_stand_out">{{datas.step4_stand_out}}</textarea>
Augmentation d'Anneau (1) Augmentation d'Anneau (1)
<select name="rings"> <select name="rings">
@@ -234,16 +232,16 @@
<div> <div>
5. Qui est le seigneur de votre personnage et quel est le devoir de votre personnage envers lui ? (p. 88) 5. Qui est le seigneur de votre personnage et quel est le devoir de votre personnage envers lui ? (p. 88)
Choisissez un giri: Choisissez un giri:
<textarea name="step5_social_giri">{{actor.social.giri}}</textarea> <textarea name="step5_social_giri">{{datas.step5_social_giri}}</textarea>
</div> </div>
<div> <div>
6. Que désire votre personnage, et en quoi ce désir risque-t-il de lempêcher daccomplir son devoir ? (p. 90) 6. Que désire votre personnage, et en quoi ce désir risque-t-il de lempêcher daccomplir son devoir ? (p. 90)
Choisissez un ninjō: Choisissez un ninjō:
<textarea name="step6_social_ninjo">{{actor.social.ninjo}}</textarea> <textarea name="step6_social_ninjo">{{datas.step6_social_ninjo}}</textarea>
</div> </div>
<div> <div>
7. Quelle relation votre personnage entretient-il avec son clan ? (p. 91) 7. Quelle relation votre personnage entretient-il avec son clan ? (p. 91)
<textarea name="step7_clan_relations"></textarea> <textarea name="step7_clan_relations">{{datas.step7_clan_relations}}</textarea>
<div> <div>
Augmentation de compétence (1) Augmentation de compétence (1)
@@ -262,13 +260,13 @@
<label> <label>
Augmentation de la gloire (+5) Augmentation de la gloire (+5)
<input type="number" name="step7_social_add_glory" value="0"> <input type="number" name="step7_social_add_glory" value="{{datas.step7_social_add_glory}}" data-dtype="Number" placeholder="0">
</label> </label>
</div> </div>
</div> </div>
<div> <div>
8. Que pense votre personnage du bushido ? (p. 91) 8. Que pense votre personnage du bushido ? (p. 91)
<textarea name="step8_bushido"></textarea> <textarea name="step8_bushido">{{datas.step8_bushido}}</textarea>
<div> <div>
Augmentation de compétence (1) Augmentation de compétence (1)
@@ -286,8 +284,8 @@
OU OU
<label> <label>
Augmentation de l'honneur Augmentation de l'honneur (+10)
<input type="number" name="step8_social_add_honor" value="0"> <input type="number" name="step8_social_add_honor" value="{{datas.step8_social_add_honor}}" data-dtype="Number" placeholder="0">
</label> </label>
</div> </div>
</div> </div>
@@ -296,35 +294,35 @@
<h2>{{localize 'l5r5e.twenty_questions.part4.title'}}</h2> <h2>{{localize 'l5r5e.twenty_questions.part4.title'}}</h2>
<div> <div>
9. Quelle est à ce jour la plus belle réussite de votre personnage ? (p. 92) 9. Quelle est à ce jour la plus belle réussite de votre personnage ? (p. 92)
<textarea name="step9_success"></textarea> <textarea name="step9_success">{{datas.step9_success}}</textarea>
Aptitude (1) Aptitude (1)
<textarea name="step9_distinction"></textarea> <textarea name="step9_distinction">{{datas.step9_distinction}}</textarea>
</div> </div>
<div> <div>
10. Quel est le frein principal dans la vie de votre personnage ? (p. 92) 10. Quel est le frein principal dans la vie de votre personnage ? (p. 92)
<textarea name="step10_difficulty"></textarea> <textarea name="step10_difficulty">{{datas.step10_difficulty}}</textarea>
Coup du sort (1) Coup du sort (1)
<textarea name="step10_adversity"></textarea> <textarea name="step10_adversity">{{datas.step10_adversity}}</textarea>
</div> </div>
<div> <div>
11. Quelle activité apaise le plus votre personnage ? (p. 93) 11. Quelle activité apaise le plus votre personnage ? (p. 93)
<textarea name="step11_calms"></textarea> <textarea name="step11_calms">{{datas.step11_calms}}</textarea>
Passion (1) Passion (1)
<textarea name="step11_passion"></textarea> <textarea name="step11_passion">{{datas.step11_passion}}</textarea>
</div> </div>
<div> <div>
12. Quelle inquiétude, crainte ou manie tracasse le plus votre personnage ? (p. 93) 12. Quelle inquiétude, crainte ou manie tracasse le plus votre personnage ? (p. 93)
<textarea name="step12_worries"></textarea> <textarea name="step12_worries">{{datas.step12_worries}}</textarea>
Défaillance (1) Défaillance (1)
<textarea name="step12_failure"></textarea> <textarea name="step12_failure">{{datas.step12_failure}}</textarea>
</div> </div>
<div> <div>
13. De qui votre personnage a-t-il le plus appris au cours de sa vie ? (p. 93) 13. De qui votre personnage a-t-il le plus appris au cours de sa vie ? (p. 93)
<textarea name="step13_most_learn"></textarea> <textarea name="step13_most_learn">{{datas.step13_most_learn}}</textarea>
<div> <div>
Augmentation de compétence (1) Augmentation de compétence (1)
@@ -340,12 +338,12 @@
</select> </select>
Désavantage (1) Désavantage (1)
<textarea name="step13_disadvantage"></textarea> <textarea name="step13_disadvantage">{{datas.step13_disadvantage}}</textarea>
</div> </div>
<div> <div>
OU OU
Avantage (1) Avantage (1)
<textarea name="step13_advantage"></textarea> <textarea name="step13_advantage">{{datas.step13_advantage}}</textarea>
</div> </div>
</div> </div>
@@ -353,29 +351,29 @@
<h2>{{localize 'l5r5e.twenty_questions.part5.title'}}</h2> <h2>{{localize 'l5r5e.twenty_questions.part5.title'}}</h2>
<div> <div>
14. Que remarque-t-on en premier chez votre personnage ? (p. 93) 14. Que remarque-t-on en premier chez votre personnage ? (p. 93)
<textarea name="step14_first_sight"></textarea> <textarea name="step14_first_sight">{{datas.step14_first_sight}}</textarea>
Particularités Particularités
<textarea name="step14_special_features"></textarea> <textarea name="step14_special_features">{{datas.step14_special_features}}</textarea>
</div> </div>
<div> <div>
15. Comment votre personnage réagit-il aux situations stressantes ? (p. 94) 15. Comment votre personnage réagit-il aux situations stressantes ? (p. 94)
<textarea name="step15_stress"></textarea> <textarea name="step15_stress">{{datas.step15_stress}}</textarea>
</div> </div>
<div> <div>
16. Quelles relations votre personnage entretient-il avec des familles, des organisations, des traditions et des 16. Quelles relations votre personnage entretient-il avec des familles, des organisations, des traditions et des
clans différents ? (p. 94) clans différents ? (p. 94)
<textarea name="step16_relations"></textarea> <textarea name="step16_relations">{{datas.step16_relations}}</textarea>
Objet (Rareté inférieur ou égale à 7) Objet (Rareté inférieur ou égale à 7)
<textarea name="step16_item"></textarea> <textarea name="step16_item">{{datas.step16_item}}</textarea>
</div> </div>
<h2>{{localize 'l5r5e.twenty_questions.part6.title'}}</h2> <h2>{{localize 'l5r5e.twenty_questions.part6.title'}}</h2>
<div> <div>
17. Comment les parents de votre personnage le décriraient-ils ? (p. 95) 17. Comment les parents de votre personnage le décriraient-ils ? (p. 95)
<textarea name="step17_parents_pov"></textarea> <textarea name="step17_parents_pov">{{datas.step17_parents_pov}}</textarea>
Augmentation de compétence (1) Augmentation de compétence (1)
<select name="skills"> <select name="skills">
@@ -391,31 +389,31 @@
</div> </div>
<div> <div>
18. En lhonneur de qui votre personnage a-t-il été prénommé ? (p. 95) 18. En lhonneur de qui votre personnage a-t-il été prénommé ? (p. 95)
<textarea name="step18_heritage_name"></textarea> <textarea name="step18_heritage_name">{{datas.step18_heritage_name}}</textarea>
<label> <label>
Résultat du 1er D10 [[/r 1d10]] Résultat du 1er D10 [[/r 1d10]]
<input type="number" name="step18_heritage_1"> <input type="number" name="step18_heritage_1" value="{{datas.step18_heritage_1}}" data-dtype="Number">
</label> </label>
<label> <label>
Résultat du 2eme D10 [[/r 1d10]] Résultat du 2eme D10 [[/r 1d10]]
<input type="number" name="step18_heritage_2"> <input type="number" name="step18_heritage_2" value="{{datas.step18_heritage_2}}" data-dtype="Number">
</label> </label>
</div> </div>
<div> <div>
19. Quel est le prénom de votre personnage ? (p. 95) 19. Quel est le prénom de votre personnage ? (p. 95)
<textarea name="step19_firstname"></textarea> <textarea name="step19_firstname">{{datas.step19_firstname}}</textarea>
</div> </div>
<h2>{{localize 'l5r5e.twenty_questions.part7.title'}}</h2> <h2>{{localize 'l5r5e.twenty_questions.part7.title'}}</h2>
<div> <div>
20. Comment envisagez-vous la mort de votre personnage ? (p. 95) 20. Comment envisagez-vous la mort de votre personnage ? (p. 95)
<textarea name="step20_death"></textarea> <textarea name="step20_death">{{datas.step20_death}}</textarea>
</div> </div>
<div class="form-group"> <div class="form-group">
<button name="roll" type="submit"> <button name="submit" type="submit">
Générer un nouveau personnage <i class='fas fa-arrow-circle-right'></i> Générer un nouveau personnage <i class='fas fa-arrow-circle-right'></i>
</button> </button>
</div> </div>