diff --git a/lang/en.json b/lang/en.json index 6f41842..5b45bd2 100644 --- a/lang/en.json +++ b/lang/en.json @@ -8,29 +8,38 @@ "TOTEM.self_control": "Sang-Froid", "TOTEM.effort": "Effort", "TOTEM.group": "Groupe", + "TOTEM.abilities":"Caractéristiques", + "TOTEM.ability":"Caractéristique", + "TOTEM.skills_title":"Compétences", + "TOTEM.skill_title":"Compétence", + "TOTEM.bonus":"Bonus", + "TOTEM.penalty":"Malus", + "TOTEM.reroll":"Relance", + "TOTEM.specialty":"Spécialité", + "TOTEM.difficulty":"Difficulty", - "TOTEM.abilities.vigor":"Vigueur", - "TOTEM.abilities.health":"Santé", - "TOTEM.abilities.precision":"Précision", - "TOTEM.abilities.reflexes":"Réflexes", - "TOTEM.abilities.knowledge":"Savoir", - "TOTEM.abilities.perception":"Perception", - "TOTEM.abilities.will":"Volonté", - "TOTEM.abilities.empathy":"Empathie", + "TOTEM.vigor_ability":"Vigueur", + "TOTEM.health_ability":"Santé", + "TOTEM.precision_ability":"Précision", + "TOTEM.reflexes_ability":"Réflexes", + "TOTEM.knowledge_ability":"Savoir", + "TOTEM.perception_ability":"Perception", + "TOTEM.will_ability":"Volonté", + "TOTEM.empathy_ability":"Empathie", - "TOTEM.EffectCreate": "Create Effect", - "TOTEM.EffectToggle": "Toggle Effect", - "TOTEM.EffectEdit": "Edit Effect", - "TOTEM.EffectDelete": "Delete Effect", + "TOTEM.effect_treate": "Create Effect", + "TOTEM.effect_toggle": "Toggle Effect", + "TOTEM.effect_edit": "Edit Effect", + "TOTEM.effect_delete": "Delete Effect", "TOTEM.Add": "Add", - "TOTEM.SkillLevel.beginner": "Débutant", - "TOTEM.SkillLevel.proficient": "Confirmé", - "TOTEM.SkillLevel.expert": "Expert", - "TOTEM.SkillLevel.master": "Maître", - "TOTEM.SkillLevel.legend": "Légende", + "TOTEM.skill_level.beginner": "Débutant", + "TOTEM.skill_level.proficient": "Confirmé", + "TOTEM.skill_level.expert": "Expert", + "TOTEM.skill_level.master": "Maître", + "TOTEM.skill_level.legend": "Légende", "TOTEM.totems.human": "l'Humain", "TOTEM.totems.scavenger": "le Prédateur", @@ -42,17 +51,17 @@ "TOTEM.totems.solitary": "le Solitaire", "TOTEM.totems.adapted": "l'Adapté", - "TOTEM.abilityCategory.physical": "Physiques", - "TOTEM.abilityCategory.manual": "Manuelles", - "TOTEM.abilityCategory.mental": "Mentales", - "TOTEM.abilityCategory.social": "Sociales", + "TOTEM.ability_category.physical": "Physiques", + "TOTEM.ability_category.manual": "Manuelles", + "TOTEM.ability_category.mental": "Mentales", + "TOTEM.ability_category.social": "Sociales", - "TOTEM.skillCategory.man": "L'Homme", - "TOTEM.skillCategory.animal": "L'Animal", - "TOTEM.skillCategory.machine": "La Machine", - "TOTEM.skillCategory.weapon": "L'Arme", - "TOTEM.skillCategory.survival": "La Survie", - "TOTEM.skillCategory.earth": "La Terre", + "TOTEM.skill_category.man": "L'Homme", + "TOTEM.skill_category.animal": "L'Animal", + "TOTEM.skill_category.machine": "La Machine", + "TOTEM.skill_category.weapon": "L'Arme", + "TOTEM.skill_category.survival": "La Survie", + "TOTEM.skill_category.earth": "La Terre", "TOTEM.skills.arts":"Arts", "TOTEM.skills.civilization":"Civilisation", diff --git a/module/sheets/character-sheet.mjs b/module/sheets/character-sheet.mjs index dac8392..7677a6f 100644 --- a/module/sheets/character-sheet.mjs +++ b/module/sheets/character-sheet.mjs @@ -1,5 +1,6 @@ import {onManageActiveEffect, prepareActiveEffectCategories} from "../system/effects.mjs"; import { TotemActorSheet } from "./actor-sheet.mjs"; +import { getRollBox } from "../system/dialogs.mjs"; /** * Extend the basic ActorSheet with some very simple modifications @@ -216,11 +217,14 @@ export class TotemCharacterSheet extends TotemActorSheet { } // Handle rolls that supply the formula directly. - if (dataset.roll) { - const label = game.i18n.localize(dataset.label) ? `[ability] ${game.i18n.localize(dataset.label)}` : ''; - console.log($(element).attr('for'), this.actor.system.skills[$(element).attr('for').split('.')[2]].value); + if (dataset.label) { + /*const label = game.i18n.localize(dataset.label) ? `[ability] ${game.i18n.localize(dataset.label)}` : ''; + console.log($(element).attr('for')); const NoD = this.actor.system.skills[$(element).attr('for').split('.')[2]]?.value || 0 - return game.totem.TotemRoll.roll(this.actor.id, label, NoD, 0, {}); + return game.totem.TotemRoll.roll(this.actor.id, label, NoD, 0, {});*/ + let data = {}; + getRollBox(data); + return true; } } diff --git a/module/system/config.mjs b/module/system/config.mjs index c0be834..b73b83b 100644 --- a/module/system/config.mjs +++ b/module/system/config.mjs @@ -7,11 +7,11 @@ export const TOTEM = {}; TOTEM.SkillLevels = { - 1:{ "label":"TOTEM.SkillLevel.beginner", "dicePool":1, "reroll":0}, - 2:{ "label":"TOTEM.SkillLevel.proficient", "dicePool":1, "reroll":1}, - 3:{ "label":"TOTEM.SkillLevel.expert", "dicePool":2, "reroll":1}, - 4:{ "label":"TOTEM.SkillLevel.master", "dicePool":2, "reroll":2}, - 5:{ "label":"TOTEM.SkillLevel.legend", "dicePool":3, "reroll":2}, + 1:{ "label":"TOTEM.skill_level.beginner", "dicePool":1, "reroll":0}, + 2:{ "label":"TOTEM.skill_level.proficient", "dicePool":1, "reroll":1}, + 3:{ "label":"TOTEM.skill_level.expert", "dicePool":2, "reroll":1}, + 4:{ "label":"TOTEM.skill_level.master", "dicePool":2, "reroll":2}, + 5:{ "label":"TOTEM.skill_level.legend", "dicePool":3, "reroll":2}, } TOTEM.TotemNumbers = { @@ -29,36 +29,36 @@ TOTEM.TotemNumbers = { TOTEM.abilityCategories = { "physical": { - "label":"TOTEM.abilityCategory.physical" + "label":"TOTEM.ability_category.physical" }, "manual": { - "label":"TOTEM.abilityCategory.manual" + "label":"TOTEM.ability_category.manual" }, "mental": { - "label":"TOTEM.abilityCategory.mental" + "label":"TOTEM.ability_category.mental" }, "social": { - "label":"TOTEM.abilityCategory.social" + "label":"TOTEM.ability_category.social" } } TOTEM.skillCategories = { "man": { - "label":"TOTEM.skillCategory.man" + "label":"TOTEM.skill_category.man" }, "animal": { - "label":"TOTEM.skillCategory.animal" + "label":"TOTEM.skill_category.animal" }, "tool": { - "label":"TOTEM.skillCategory.machine" + "label":"TOTEM.skill_category.machine" }, "weapon": { - "label":"TOTEM.skillCategory.weapon" + "label":"TOTEM.skill_category.weapon" }, "survival": { - "label":"TOTEM.skillCategory.survival" + "label":"TOTEM.skill_category.survival" }, "world": { - "label":"TOTEM.skillCategory.earth" + "label":"TOTEM.skill_category.earth" } } \ No newline at end of file diff --git a/module/system/dialogs.mjs b/module/system/dialogs.mjs index 4949f29..180a2ea 100644 --- a/module/system/dialogs.mjs +++ b/module/system/dialogs.mjs @@ -33,4 +33,71 @@ } - } \ No newline at end of file + } + + export const getRollBox = async function(data) { + let html = await renderTemplate('systems/totem/templates/roll.hbs', data); + let ui = new Dialog({ + title: game.i18n.localize("TOTEM.RollTool"), + content: html, + buttons: { + roll: { + label: game.i18n.localize('TOTEM.RollDice'), + callback: (html) => { + let form = html.find('#dice-pool-form'); + if (!form[0].checkValidity()) { + throw "Invalid Data"; + } + let target = 0, trait, usingSpecialization, difficulty, skill = 0, params = {}; + form.serializeArray().forEach(e => { + switch (e.name) { + case "difficulty": + if (e.value != "") + difficulty = -e.value; + break; + case "skillLabel": + params.skill = e.value; + break; + case "usure": + params.usure = +e.value; + break; + case "skill": + skill = +e.value; + break; + case "trait": + trait = +e.value; + break; + case "usingSpecialization": + if (e.value && +e.value > 1) + usingSpecialization = +e.value; + break; + } + + // prise en compte de l'usure sur la feuille de perso + if (params.usure != undefined){ + updateActorSkillScore(actor, data.skill, 'spent', data.skillSpent + parseInt(params.usure,10)); + } + }); + return EcrymeRoll.get().performTest(data.dicePool, target, trait, usingSpecialization, difficulty, skill, params, actor); + } + }, + close: { + label: game.i18n.localize('Close'), + callback: () => { } + } + }, + render: function (h) { + h.find("#skills-radio input").change(function () { + let s = $(this).attr("data-skill"); + h.find(".trait-list .hidden").removeClass("show"); + let f = h.find(".trait-list ." + s); + f.addClass("show"); + if (f.length == 0) { + h.find(".use-trait input").attr("disabled", "disabled").prop("checked", false); + } else + h.find(".use-trait input").attr("disabled", null); + }); + } + }); + ui.render(true); + } \ No newline at end of file diff --git a/module/system/handlebars-manager.mjs b/module/system/handlebars-manager.mjs index 7a69c8c..7e4133a 100644 --- a/module/system/handlebars-manager.mjs +++ b/module/system/handlebars-manager.mjs @@ -12,6 +12,9 @@ // "systems/totem/templates/actor/parts/actor-skills.html", "systems/totem/templates/actor/parts/actor-items.html", "systems/totem/templates/actor/parts/actor-effects.html", + + // additional templates + "systems/totem/templates/roll.hbs", ]); }; diff --git a/template.json b/template.json index 6899e98..8dc5d69 100644 --- a/template.json +++ b/template.json @@ -45,56 +45,56 @@ }, "abilities": { "vig": { - "label":"TOTEM.abilities.vigor", + "label":"TOTEM.vigor_ability", "value": 0, "min": 0, "max": 5, "category": "physical" }, "vie": { - "label":"TOTEM.abilities.health", + "label":"TOTEM.health_ability", "value": 0, "min": 0, "max": 5, "category": "physical" }, "pre": { - "label":"TOTEM.abilities.precision", + "label":"TOTEM.precision_ability", "value": 0, "min": 0, "max": 5, "category": "manual" }, "ref": { - "label":"TOTEM.abilities.reflexes", + "label":"TOTEM.reflexes_ability", "value": 0, "min": 0, "max": 5, "category": "manual" }, "sav": { - "label":"TOTEM.abilities.knowledge", + "label":"TOTEM.knowledge_ability", "value": 0, "min": 0, "max": 5, "category": "mental" }, "per": { - "label":"TOTEM.abilities.perception", + "label":"TOTEM.perception_ability", "value": 0, "min": 0, "max": 5, "category": "mental" }, "vol": { - "label":"TOTEM.abilities.will", + "label":"TOTEM.will_ability", "value": 0, "min": 0, "max": 5, "category": "social" }, "emp": { - "label":"TOTEM.abilities.empathy", + "label":"TOTEM.empathy_ability", "value": 0, "min": 0, "max": 5, diff --git a/templates/actor/actor-character-sheet.html b/templates/actor/actor-character-sheet.html index 5a1d6fc..0fe1582 100644 --- a/templates/actor/actor-character-sheet.html +++ b/templates/actor/actor-character-sheet.html @@ -41,11 +41,11 @@
{{#each config.abilityCategories as |abilityCategory ackey|}}
-

{{ localize abilityCategory.label }}

+

{{ localize abilityCategory.label }}

{{#each @root.system.abilities as |ability key|}} {{#ife ability.category ackey }}
- +
{{/ife}} diff --git a/templates/roll-message.hbs b/templates/roll-message.hbs new file mode 100644 index 0000000..80e6f55 --- /dev/null +++ b/templates/roll-message.hbs @@ -0,0 +1,26 @@ +
+
+
+
+ {{ ` + dicePool + `d6 }} +
+
+
+
+
+ {{ targetText }} +
+
+
    {{ diceString }}
+
+
+
+ Résultat +

{{ (total + skill + _trait + _usingSpecialization + _used).toString() }}

+
+
+
` + + `

{{ successText }}

+
+
+
\ No newline at end of file diff --git a/templates/roll.hbs b/templates/roll.hbs new file mode 100644 index 0000000..ff02b68 --- /dev/null +++ b/templates/roll.hbs @@ -0,0 +1,26 @@ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+

+

+