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.feats = ["kata", "kiho", "invocation", "ritual", "shuji", "maho", "ninjutsu"];
L5R5E.techniques = ["kata", "kiho", "invocation", "ritual", "shuji", "maho", "ninjutsu"];
// Map SkillId - CategoryId
L5R5E.skills = new Map();

View File

@@ -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") || "",
};
}
}

View File

@@ -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": "",

View File

@@ -13,7 +13,7 @@
<h2>{{localize 'l5r5e.twenty_questions.part1.title'}}</h2>
<div>
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>
Augmentation d'Anneau (1)
@@ -42,13 +42,13 @@
<div>
<label>
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>
</div>
</div>
<div>
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>
Augmentation d'Anneau (1)
@@ -86,15 +86,14 @@
<div>
<label>
Fortune de départ :
<input type="text" name="step2_wealth">
<!-- TODO add to template.json -->
<input type="text" name="step2_wealth" value="{{datas.step2_wealth}}" data-dtype="Number" placeholder="0">
</label>
</div>
<div>
<label>
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>
</div>
</div>
@@ -106,12 +105,12 @@
<label>
École
<input type="text" name="step3_school" value="{{actor.identity.school}}">
<input type="text" name="step3_school" value="{{datas.step3_school}}">
</label>
<label>
Rôles
<input type="text" name="step3_roles" value="{{actor.identity.roles}}">
<input type="text" name="step3_roles" value="{{datas.step3_roles}}">
</label>
<div>
@@ -190,35 +189,34 @@
{{#each featsList as |feat|}}
<label><input type="checkbox" name="step3_feat_{{feat}}">{{localizeFeat feat}}</label>
{{/each}}
<label>
</div>
<div>
Techniques de départ (2-5)
<textarea name="step3_feats"></textarea>
<textarea name="step3_feats">{{datas.step3_feats}}</textarea>
<!-- TODO Drag n drop feats-->
</div>
<div>
Capacité d'école
<textarea name="step3_school_ability"></textarea>
<textarea name="step3_school_ability">{{datas.step3_school_ability}}</textarea>
</div>
<div>
Équipement de départ
<textarea name="step3_equipment"></textarea>
<textarea name="step3_equipment">{{datas.step3_equipment}}</textarea>
</div>
</div>
<div>
<label>
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>
</div>
<div>
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)
<select name="rings">
@@ -234,16 +232,16 @@
<div>
5. Qui est le seigneur de votre personnage et quel est le devoir de votre personnage envers lui ? (p. 88)
Choisissez un giri:
<textarea name="step5_social_giri">{{actor.social.giri}}</textarea>
<textarea name="step5_social_giri">{{datas.step5_social_giri}}</textarea>
</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)
Choisissez un ninjō:
<textarea name="step6_social_ninjo">{{actor.social.ninjo}}</textarea>
<textarea name="step6_social_ninjo">{{datas.step6_social_ninjo}}</textarea>
</div>
<div>
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>
Augmentation de compétence (1)
@@ -262,13 +260,13 @@
<label>
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>
</div>
</div>
<div>
8. Que pense votre personnage du bushido ? (p. 91)
<textarea name="step8_bushido"></textarea>
<textarea name="step8_bushido">{{datas.step8_bushido}}</textarea>
<div>
Augmentation de compétence (1)
@@ -286,8 +284,8 @@
OU
<label>
Augmentation de l'honneur
<input type="number" name="step8_social_add_honor" value="0">
Augmentation de l'honneur (+10)
<input type="number" name="step8_social_add_honor" value="{{datas.step8_social_add_honor}}" data-dtype="Number" placeholder="0">
</label>
</div>
</div>
@@ -296,35 +294,35 @@
<h2>{{localize 'l5r5e.twenty_questions.part4.title'}}</h2>
<div>
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)
<textarea name="step9_distinction"></textarea>
<textarea name="step9_distinction">{{datas.step9_distinction}}</textarea>
</div>
<div>
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)
<textarea name="step10_adversity"></textarea>
<textarea name="step10_adversity">{{datas.step10_adversity}}</textarea>
</div>
<div>
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)
<textarea name="step11_passion"></textarea>
<textarea name="step11_passion">{{datas.step11_passion}}</textarea>
</div>
<div>
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)
<textarea name="step12_failure"></textarea>
<textarea name="step12_failure">{{datas.step12_failure}}</textarea>
</div>
<div>
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>
Augmentation de compétence (1)
@@ -340,12 +338,12 @@
</select>
Désavantage (1)
<textarea name="step13_disadvantage"></textarea>
<textarea name="step13_disadvantage">{{datas.step13_disadvantage}}</textarea>
</div>
<div>
OU
Avantage (1)
<textarea name="step13_advantage"></textarea>
<textarea name="step13_advantage">{{datas.step13_advantage}}</textarea>
</div>
</div>
@@ -353,29 +351,29 @@
<h2>{{localize 'l5r5e.twenty_questions.part5.title'}}</h2>
<div>
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
<textarea name="step14_special_features"></textarea>
<textarea name="step14_special_features">{{datas.step14_special_features}}</textarea>
</div>
<div>
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>
16. Quelles relations votre personnage entretient-il avec des familles, des organisations, des traditions et des
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)
<textarea name="step16_item"></textarea>
<textarea name="step16_item">{{datas.step16_item}}</textarea>
</div>
<h2>{{localize 'l5r5e.twenty_questions.part6.title'}}</h2>
<div>
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)
<select name="skills">
@@ -391,31 +389,31 @@
</div>
<div>
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>
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>
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>
</div>
<div>
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>
<h2>{{localize 'l5r5e.twenty_questions.part7.title'}}</h2>
<div>
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 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>
</button>
</div>