diff --git a/lang/en.json b/lang/en.json index 5874277..1bb8bcc 100644 --- a/lang/en.json +++ b/lang/en.json @@ -123,7 +123,13 @@ "type": "Type", "applyimpact": "Apply impact", "applybonus": "Apply bonus", - "bonuspool": "Available bonuses" + "bonuspool": "Available bonuses", + "cephaly": "Cephaly", + "elegy": "Elegy", + "entelechy": "Entelechy", + "mekany": "Mekany", + "psyche": "Psyche", + "scoria": "Scoria" } } } \ No newline at end of file diff --git a/lang/fr.json b/lang/fr.json index de968a8..a7e7b43 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -123,7 +123,13 @@ "type": "Type", "applyimpact": "Appliquer l'impact", "applybonus": "Appliquer le bonus", - "bonuspool": "Bonus disponibles" + "bonuspool": "Bonus disponibles", + "cephaly": "Cephalie", + "elegy": "Elégie", + "entelechy": "Entéléchie", + "mekany": "Mekanë", + "psyche": "Psyché", + "scoria": "Scorie" } } } \ No newline at end of file diff --git a/modules/actors/ecryme-actor-sheet.js b/modules/actors/ecryme-actor-sheet.js index 9fd2ef8..8cfe01a 100644 --- a/modules/actors/ecryme-actor-sheet.js +++ b/modules/actors/ecryme-actor-sheet.js @@ -46,6 +46,8 @@ export class EcrymeActorSheet extends ActorSheet { impactsMalus: this.actor.getImpactsMalus(), archetype: duplicate(this.actor.getArchetype()), equipements: this.actor.getEquipments(), + hasCephaly: EcrymeUtility.hasCephaly(), + cephalySkills: this.actor.getCephalySkills(), subActors: duplicate(this.actor.getSubActors()), description: await TextEditor.enrichHTML(this.object.system.description, { async: true }), notes: await TextEditor.enrichHTML(this.object.system.notes, { async: true }), @@ -121,7 +123,11 @@ export class EcrymeActorSheet extends ActorSheet { let categKey = $(event.currentTarget).data("category-key") let skillKey = $(event.currentTarget).data("skill-key") this.actor.rollSkillConfront(categKey, skillKey) - }); + }); + html.find('.roll-cephaly').click((event) => { + let skillKey = $(event.currentTarget).data("skill-key") + this.actor.rollCephalySkillConfront(skillKey) + }); html.find('.roll-weapon-confront').click((event) => { const li = $(event.currentTarget).parents(".item") let weaponId = li.data("item-id"); diff --git a/modules/actors/ecryme-actor.js b/modules/actors/ecryme-actor.js index ce3370f..2a16876 100644 --- a/modules/actors/ecryme-actor.js +++ b/modules/actors/ecryme-actor.js @@ -109,6 +109,11 @@ export class EcrymeActor extends Actor { return skills } /* -------------------------------------------- */ + getCephalySkills() { + let skills = duplicate(this.system.cephaly.skilllist) + return skills + } + /* -------------------------------------------- */ getImpacts() { let comp = duplicate(this.items.filter(item => item.type == 'impact') || []) return comp; @@ -323,7 +328,7 @@ export class EcrymeActor extends Actor { /* -------------------------------------------- */ getCommonRollData() { - this.system.internals.confrontbonus = 5 // TO BE REMOVED!!!! + //this.system.internals.confrontbonus = 5 // TO BE REMOVED!!!! let rollData = EcrymeUtility.getBasicRollData() rollData.alias = this.name rollData.actorImg = this.img @@ -371,6 +376,24 @@ export class EcrymeActor extends Actor { rollData.executionTotal = rollData.skill.value rollData.preservationTotal = rollData.skill.value rollData.applyTranscendence = "execution" + rollData.traitsBonus = duplicate(rollData.traits) + rollData.traitsMalus = duplicate(rollData.traits) + let confrontStartDialog = await EcrymeConfrontStartDialog.create(this, rollData) + confrontStartDialog.render(true) + } + /* -------------------------------------------- */ + async rollCephalySkillConfront(skillKey) { + let rollData = this.getCommonRollData() + rollData.mode = "cephaly" + rollData.skill = duplicate(this.system.cephaly.skilllist[skillKey]) + rollData.img = rollData.skill.img + rollData.skill.categKey = "cephaly" + rollData.skill.skillKey = skillKey + //rollData.impactMalus = this.getImpactMalus(categKey) + rollData.title = game.i18n.localize("ECRY.ui.cephaly") + " : " + game.i18n.localize(rollData.skill.name) + rollData.executionTotal = rollData.skill.value + rollData.preservationTotal = rollData.skill.value + rollData.applyTranscendence = "execution" let confrontStartDialog = await EcrymeConfrontStartDialog.create(this, rollData) confrontStartDialog.render(true) } diff --git a/modules/common/ecryme-utility.js b/modules/common/ecryme-utility.js index 5c67206..b6c599b 100644 --- a/modules/common/ecryme-utility.js +++ b/modules/common/ecryme-utility.js @@ -76,6 +76,12 @@ export class EcrymeUtility { } + /*-------------------------------------------- */ + static hasCephaly() { + let level = game.settings.get("fvtt-ecryme", "ecryme-game-level") + return level != "level_e" + } + /*-------------------------------------------- */ static buildSkillConfig() { game.system.ecryme.config.skills = {} diff --git a/modules/dialogs/ecryme-confront-dialog.js b/modules/dialogs/ecryme-confront-dialog.js index 284d7cd..e1579c9 100644 --- a/modules/dialogs/ecryme-confront-dialog.js +++ b/modules/dialogs/ecryme-confront-dialog.js @@ -54,6 +54,25 @@ export class EcrymeConfrontDialog extends Dialog { msg.setFlag("world", "ecryme-rolldata", this.rollData) } + /* -------------------------------------------- */ + async refreshDice() { + this.rollData.filter = "execution" + let content = await renderTemplate("systems/fvtt-ecryme/templates/dialogs/partial-confront-dice-area.hbs", this.rollData ) + content += await renderTemplate("systems/fvtt-ecryme/templates/dialogs/partial-confront-bonus-area.hbs", this.rollData ) + $("#confront-execution").html(content) + + this.rollData.filter = "preservation" + content = await renderTemplate("systems/fvtt-ecryme/templates/dialogs/partial-confront-dice-area.hbs", this.rollData ) + content += await renderTemplate("systems/fvtt-ecryme/templates/dialogs/partial-confront-bonus-area.hbs", this.rollData ) + $("#confront-preservation").html(content) + + this.rollData.filter = "mainpool" + content = await renderTemplate("systems/fvtt-ecryme/templates/dialogs/partial-confront-dice-area.hbs", this.rollData ) + $("#confront-dice-pool").html(content) + content = await renderTemplate("systems/fvtt-ecryme/templates/dialogs/partial-confront-bonus-area.hbs", this.rollData ) + $("#confront-bonus-pool").html(content) + + } /* -------------------------------------------- */ async refreshDialog() { const content = await renderTemplate("systems/fvtt-ecryme/templates/dialogs/confront-dialog.hbs", this.rollData) @@ -69,7 +88,7 @@ export class EcrymeConfrontDialog extends Dialog { super._onDragStart(event) let dragType = $(event.srcElement).data("drag-type") let diceData = {} - console.log("DRAGTYPE", dragType) + //console.log("DRAGTYPE", dragType) if (dragType == "dice") { diceData = { dragType: "dice", @@ -157,43 +176,45 @@ export class EcrymeConfrontDialog extends Dialog { rollData.preservationTotal = rollData.confrontBonus.filter(d => d.location == "preservation").reduce((previous, current) => { return previous + 1 }, rollData.preservationTotal) + this.processTranscendence() if (rollData.selectedSpecs && rollData.selectedSpecs.length > 0) { - rollData.spec = duplicate(actor.getSpecialization(rollData.selectedSpecs[0])) - this.rollData.executionTotal += "+2" - this.rollData.preservationTotal += "+2" + rollData.spec = duplicate(actor.getSpecialization(rollData.selectedSpecs[0])) + rollData.specApplied = true + rollData.executionTotal += 2 + rollData.preservationTotal += 2 + } + if ( rollData.specApplied && rollData.selectedSpecs.length == 0) { + rollData.spec = undefined + rollData.specApplied = false } rollData.bonusMalusTraits = 0 - for (let t of rollData.traits) { - t.isBonus = false - t.isMalus = false + for (let t of rollData.traitsBonus) { + t.activated = false } - if (rollData.traitsBonus && rollData.traitsBonus.length > 0) { - rollData.traitsBonusList = [] - for (let id of rollData.traitsBonus) { - let trait = rollData.traits.find(t => t._id == id) - trait.isBonus = true - rollData.traitsBonusList.push(trait) + for (let t of rollData.traitsMalus) { + t.activated = false + } + if (rollData.traitsBonusSelected && rollData.traitsBonusSelected.length > 0) { + for (let id of rollData.traitsBonusSelected) { + let trait = rollData.traitsBonus.find(t => t._id == id) + trait.activated = true rollData.bonusMalusTraits += trait.system.level } } - if (rollData.traitsMalus && rollData.traitsMalus.length > 0) { - rollData.traitsMalusList = [] - for (let id of rollData.traitsMalus) { - let trait = rollData.traits.find(t => t._id == id) - trait.isMalus = true - rollData.traitsMalusList.push(trait) + if (rollData.traitsMalusSelected && rollData.traitsMalusSelected.length > 0) { + for (let id of rollData.traitsMalusSelected) { + let trait = rollData.traitsMalus.find(t => t._id == id) + trait.activated = true rollData.bonusMalusTraits -= trait.system.level } } - rollData.executionTotal += rollData.bonusMalusTraits - rollData.executionTotal += rollData.bonusMalusPerso - rollData.preservationTotal += rollData.bonusMalusTraits - rollData.preservationTotal += rollData.bonusMalusPerso + rollData.executionTotal += rollData.bonusMalusTraits + rollData.bonusMalusPerso + rollData.preservationTotal += rollData.bonusMalusTraits + rollData.bonusMalusPerso - this.refreshDialog().catch("Error on refresh confrontation dialog") + this.refreshDialog() } /* -------------------------------------------- */ @@ -209,11 +230,11 @@ export class EcrymeConfrontDialog extends Dialog { this.computeTotals() }) html.find('#roll-trait-bonus').change((event) => { - this.rollData.traitsBonus = $('#roll-trait-bonus').val() + this.rollData.traitsBonusSelected = $('#roll-trait-bonus').val() this.computeTotals() }) html.find('#roll-trait-malus').change((event) => { - this.rollData.traitsMalus = $('#roll-trait-malus').val() + this.rollData.traitsMalusSelected = $('#roll-trait-malus').val() this.computeTotals() }) html.find('#roll-select-transcendence').change((event) => { diff --git a/system.json b/system.json index 1abf6c2..d42d07c 100644 --- a/system.json +++ b/system.json @@ -42,7 +42,7 @@ ], "title": "Ecryme, le Jeu de Rôles", "url": "https://www.uberwald.me/gitea/uberwald/fvtt-ecryme", - "version": "11.0.6", - "download": "https://www.uberwald.me/gitea/uberwald/fvtt-ecryme/archive/fvtt-ecryme-v11.0.6.zip", + "version": "11.0.7", + "download": "https://www.uberwald.me/gitea/uberwald/fvtt-ecryme/archive/fvtt-ecryme-v11.0.7.zip", "background": "systems/fvtt-ecryme/images/assets/ecryme_extract_panel_01.webp" } \ No newline at end of file diff --git a/templates/actors/actor-sheet.hbs b/templates/actors/actor-sheet.hbs index 2bb98f4..15d7ac8 100644 --- a/templates/actors/actor-sheet.hbs +++ b/templates/actors/actor-sheet.hbs @@ -51,6 +51,9 @@ {{localize "ECRY.ui.skills"}} {{localize "ECRY.ui.traits"}} {{localize "ECRY.ui.healthcombat"}} + {{#if hasCephaly}} + {{localize "ECRY.ui.cephaly"}} + {{/if}} {{localize "ECRY.ui.equipment"}} {{localize "ECRY.ui.bionotes"}} @@ -119,6 +122,34 @@ + {{#if hasCephaly}} + {{!-- Cephaly Tab --}} +
+ +
+ +
+
+ {{/if}}
diff --git a/templates/dialogs/confront-dialog.hbs b/templates/dialogs/confront-dialog.hbs index dc684ab..e7adbc9 100644 --- a/templates/dialogs/confront-dialog.hbs +++ b/templates/dialogs/confront-dialog.hbs @@ -11,10 +11,9 @@
-

{{localize "ECRY.ui.execution"}} : {{executionTotal}}

+

{{localize "ECRY.ui.execution"}} : {{executionTotal}}

{{> systems/fvtt-ecryme/templates/dialogs/partial-confront-dice-area.hbs filter="execution"}} -
{{> systems/fvtt-ecryme/templates/dialogs/partial-confront-bonus-area.hbs filter="execution"}}
@@ -73,20 +72,22 @@
+ {{#if skill.spec}}
{{localize "ECRY.ui.spec"}} :
+ {{/if}}
{{localize "ECRY.ui.traitbonus"}} :
@@ -94,13 +95,12 @@
{{localize "ECRY.ui.traitmalus"}} :
-
Bonus/Malus :