diff --git a/modules/vadentis-actor-sheet.js b/modules/vadentis-actor-sheet.js index 8d10331..30a0e2a 100644 --- a/modules/vadentis-actor-sheet.js +++ b/modules/vadentis-actor-sheet.js @@ -31,6 +31,8 @@ export class VadentisActorSheet extends ActorSheet { data.editScore = this.options.editScore; data.donnees = this.actor.getDonnees(); data.competences = this.actor.getCompetences(); + data.sorts = this.actor.getSorts(); + data.devotions = this.actor.getDevotions(); data.isGM = game.user.isGM; return data; @@ -50,17 +52,6 @@ export class VadentisActorSheet extends ActorSheet { const item = this.actor.getOwnedItem(li.data("item-id")); item.sheet.render(true); }); - html.find('.item-equip').click(ev => { - const li = $(ev.currentTarget).parents(".item"); - const item = this.actor.equipObject( li.data("item-id") ); - this.render(true); - }); - html.find('.item-worn').click(ev => { - const li = $(ev.currentTarget).parents(".item"); - const item = this.actor.wornObject( li.data("item-id") ); - this.render(true); - }); - // Delete Inventory Item html.find('.item-delete').click(ev => { const li = $(ev.currentTarget).parents(".item"); @@ -76,6 +67,16 @@ export class VadentisActorSheet extends ActorSheet { const competenceId = li.data("item-id"); this.actor.rollCompetence(competenceId); }); + html.find('.sort-label a').click((event) => { + const li = $(event.currentTarget).parents(".item"); + const sortId = li.data("item-id"); + this.actor.rollSort(sortId); + }); + html.find('.devotion-label a').click((event) => { + const li = $(event.currentTarget).parents(".item"); + const devotionId = li.data("item-id"); + this.actor.rollDevotion(devotionId); + }); html.find('.weapon-label a').click((event) => { const li = $(event.currentTarget).parents(".item"); const weapon = this.actor.getOwnedItem(li.data("item-id")); @@ -93,11 +94,6 @@ export class VadentisActorSheet extends ActorSheet { let skillName = event.currentTarget.attributes.skillname.value; this.actor.updateCompetence(skillName, "malus", parseInt(event.target.value)); }); - html.find('.skill-xp').change((event) => { - let skillName = event.currentTarget.attributes.skillname.value; - //console.log("Competence changed :", skillName); - this.actor.updateSkillExperience(skillName, parseInt(event.target.value)); - }); html.find('.lock-unlock-sheet').click((event) => { this.options.editScore = !this.options.editScore; this.render(true); diff --git a/modules/vadentis-actor.js b/modules/vadentis-actor.js index 610be34..abdb14b 100644 --- a/modules/vadentis-actor.js +++ b/modules/vadentis-actor.js @@ -57,6 +57,16 @@ export class VadentisActor extends Actor { return this.data.items.filter( item => item.type == 'donnee'); } + /* -------------------------------------------- */ + getSorts() { + return this.data.items.filter( item => item.type == 'sort'); + } + + /* -------------------------------------------- */ + getDevotions() { + return this.data.items.filter( item => item.type == 'devotion'); + } + /* -------------------------------------------- */ async updateCompetence( name, field, value) { let competence = this.data.items.find( item => item.type == 'competence' && item.name == name); @@ -65,10 +75,76 @@ export class VadentisActor extends Actor { await this.updateOwnedItem( { _id: competence._id, [dataPath]:value }); } } + + /* -------------------------------------------- */ + rollSort( sortId ) { + let sort = this.data.items.find( item => item.type == 'sort' && item._id == sortId ); + if ( sort ) { + + if ( sort.data.pe > this.data.data.stats.pointsenergie.value) { // Vérification du ~ de points d'énergie + ChatMessage.create({ content: `Vous n'avez pas assez de Points d'Energie pour lancer votre sort ${sort.name}` } ); + return; + } + + let magieElementaire = this.data.data.magie['matriseelementaire']; + let statValue = magieElementaire.base + magieElementaire.malus + magieElementaire.bonus; + let formulaFull = `1d20+${magieElementaire.base}+${magieElementaire.malus}+${magieElementaire.bonus}`; + let myRoll = new Roll("1d20+"+statValue); + myRoll.evaluate(); + myRoll.toMessage( { flavor: `Lancer de Sort : ${sort.name} (${formulaFull})` } ); + + console.log("ROLL", myRoll); + if (myRoll.total >= sort.data.difficulty) { + let content = `Votre sort ${sort.name} a réussi ! Vous perdez ${sort.data.pe} Points d'Energie et votre sort produit l'effet :
${sort.data.effect}`; + if ( sort.data.damage != "") { + if (myRoll.results[0] == 20 ) { // Critique ? + content += `
Et provoque les dégats critiques suivants : ${sort.data.damagecritical}`; + } else { + content += `
Et provoque les dégats suivants : ${sort.data.damage}`; + } + } + ChatMessage.create({ content:content} ); + } else { + ChatMessage.create({ content: `Votre sort ${sort.name} a échoué !`}); + } + } + } + + /* -------------------------------------------- */ + rollDevotion( devotionId ) { + let devotion = this.data.items.find( item => item.type == 'devotion' && item._id == devotionId ); + if ( devotion ) { + + if ( devotion.data.pe > this.data.data.stats.pointsenergie.value) { // Vérification du ~ de points d'énergie + ChatMessage.create({ content: `Vous n'avez pas assez de Points d'Energie pour lancer votre dévotion ${devotion.name}` } ); + return; + } + + let devotionComp = this.data.data.magie['devotion']; + let statValue = devotionComp.base + devotionComp.malus + devotionComp.bonus; + let formulaFull = `1d20+${devotionComp.base}+${devotionComp.malus}+${devotionComp.bonus}`; + let myRoll = new Roll("1d20+"+statValue); + myRoll.evaluate(); + myRoll.toMessage( { flavor: `Lancer de Dévotion : ${devotion.name} (${formulaFull})` } ); + + if (myRoll.total >= devotion.data.difficulty) { + let content = `Votre dévotion ${devotion.name} a réussie ! Vous perdez ${devotion.data.pe} Points d'Energie et votre dévotion produit l'effet :
${devotion.data.effect}`; + if ( devotion.data.damage != "") { + if (myRoll.results[0] == 20 ) { // Critique ? + content += `
Et provoque les dégats critiques suivants : ${devotion.data.damagecritical}`; + } else { + content += `
Et provoque les dégats suivants : ${devotion.data.damage}`; + } + } + ChatMessage.create({ content:content} ); + } else { + ChatMessage.create({ content: `Votre dévotion ${devotion.name} a échoué !`}); + } + } + } /* -------------------------------------------- */ rollCompetence( competenceId ) { - console.log("HERE !!!!", competenceId); let competence = this.data.items.find( item => item.type == 'competence' && item._id == competenceId); if ( competence) { let statValue = competence.data.base + competence.data.malus + competence.data.bonus; diff --git a/modules/vadentis-item-sheet.js b/modules/vadentis-item-sheet.js index 4cc35db..81e14ff 100644 --- a/modules/vadentis-item-sheet.js +++ b/modules/vadentis-item-sheet.js @@ -44,7 +44,14 @@ export class VadentisItemSheet extends ItemSheet { /* -------------------------------------------- */ async getData() { let data = super.getData(); + if (data.item.type == 'sort') { + data.donnees = await VadentisUtility.getDonnees(); + } + if (data.item.type == 'devotion') { + data.eglises = await VadentisUtility.getEglises(); + } data.isGM = game.user.isGM; + console.log("DATA", data); return data; } diff --git a/modules/vadentis-utility.js b/modules/vadentis-utility.js index 7ba1742..b4b2bb7 100644 --- a/modules/vadentis-utility.js +++ b/modules/vadentis-utility.js @@ -61,6 +61,15 @@ export class VadentisUtility extends Entity { return list; } + /* -------------------------------------------- */ + static getDonnees( ) { + return this.loadCompendiumNames('foundryvtt-vadentis.donnees'); + } + /* -------------------------------------------- */ + static getEglises( ) { + return this.loadCompendiumNames('foundryvtt-vadentis.eglises'); + } + /* -------------------------------------------- */ static async confirmDelete(actorSheet, li) { let itemId = li.data("item-id"); diff --git a/packs/donnees.db b/packs/donnees.db new file mode 100644 index 0000000..30cd38f --- /dev/null +++ b/packs/donnees.db @@ -0,0 +1,8 @@ +{"name":"Donnée du Vent","permission":{"default":0,"sCecJLVlaPEcY7nF":3},"type":"donnee","data":{"description":""},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"3Rm5NhRowtPPXDGY"} +{"name":"Donnée de l'Ombre","permission":{"default":0,"sCecJLVlaPEcY7nF":3},"type":"donnee","data":{"description":""},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"5rTJDLgO7HjQsPbr"} +{"name":"Donnée du Feu","permission":{"default":0,"sCecJLVlaPEcY7nF":3},"type":"donnee","data":{"description":""},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"RrwN3NGZQZmlE1xn"} +{"name":"Donnée des Sentiments","permission":{"default":0,"sCecJLVlaPEcY7nF":3},"type":"donnee","data":{"description":""},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"aIpYtzCM1yWCDAU6"} +{"name":"Donnée de la Lumière","permission":{"default":0,"sCecJLVlaPEcY7nF":3},"type":"donnee","data":{"description":""},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"grt6xY5BY1kPGsmV"} +{"name":"Donnée de la Foudre","permission":{"default":0,"sCecJLVlaPEcY7nF":3},"type":"donnee","data":{"description":""},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"gypftiVXTACPuTg2"} +{"name":"Donnée de la Terre","permission":{"default":0,"sCecJLVlaPEcY7nF":3},"type":"donnee","data":{"description":""},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"huZaByOsJ4OgOQM0"} +{"name":"Donnée de l'Eau","permission":{"default":0,"sCecJLVlaPEcY7nF":3},"type":"donnee","data":{"description":""},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"xhNHMkKLL4kW0Sts"} diff --git a/packs/eglises.db b/packs/eglises.db new file mode 100644 index 0000000..71880dd --- /dev/null +++ b/packs/eglises.db @@ -0,0 +1,7 @@ +{"name":"Eglise des 26","permission":{"default":0,"sCecJLVlaPEcY7nF":3},"type":"eglise","data":{"description":""},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"1gQX3Uq6tVXAtQcX"} +{"name":"Eglise Estuanienne","permission":{"default":0,"sCecJLVlaPEcY7nF":3},"type":"eglise","data":{"description":""},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"5T2uht7mCGI9rzyo"} +{"name":"Les Elus d'Estuans","permission":{"default":0,"sCecJLVlaPEcY7nF":3},"type":"eglise","data":{"description":""},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"9bBe6gQLAnM5dpFq"} +{"name":"Eglise des Ombres","permission":{"default":0,"sCecJLVlaPEcY7nF":3},"type":"eglise","data":{"description":""},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"KWX1EDBkp1yPhoa0"} +{"name":"Adorateurs de Yeshua","permission":{"default":0,"sCecJLVlaPEcY7nF":3},"type":"eglise","data":{"description":""},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"TV6QiHWXprN8PBjm"} +{"name":"Eglise du Soleil","permission":{"default":0,"sCecJLVlaPEcY7nF":3},"type":"eglise","data":{"description":""},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"muPAkVllu9D6cE7Q"} +{"name":"Eglise du Temps","permission":{"default":0,"sCecJLVlaPEcY7nF":3},"type":"eglise","data":{"description":""},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"nEAicuYriaP3hmc2"} diff --git a/styles/simple.css b/styles/simple.css index 54e559c..b680d35 100644 --- a/styles/simple.css +++ b/styles/simple.css @@ -672,17 +672,8 @@ ul, li { .arme-label, .generic-label, .competence-label, -.astrologie-label, -.tache-label, -.subacteur-label, -.chant-label, -.musique-label, -.oeuvre-label, -.chant-label, -.danse-label, -.recette-label, -.jeu-label, -.recettecuisine-label, +.devotion-label, +.sort-label, .description-label { flex-grow: 2; } diff --git a/system.json b/system.json index eb13bcd..c4d656c 100644 --- a/system.json +++ b/system.json @@ -2,11 +2,11 @@ "name": "foundryvtt-vadentis", "title": "Vadentis", "description": "Système Vadentis pour FoundryVTT", - "version": "0.0.7", + "version": "0.0.9", "manifestPlusVersion": "1.0.0", "minimumCoreVersion": "0.7.5", "compatibleCoreVersion": "0.7.9", - "templateVersion": 6, + "templateVersion": 7, "author": "Uberwald", "esmodules": [ "modules/vadentis-main.js" ], "styles": ["styles/simple.css"], @@ -14,6 +14,24 @@ "media": [ ], "packs": [ + { + "name": "eglises", + "label": "Eglises", + "system": "foundryvtt-vadentis", + "module": "foundryvtt-vadentis", + "path": "./packs/eglises.db", + "entity": "Item", + "tags" : [ "eglise" ] + }, + { + "name": "donnees", + "label": "Données", + "system": "foundryvtt-vadentis", + "module": "foundryvtt-vadentis", + "path": "./packs/donnees.db", + "entity": "Item", + "tags" : [ "données", "donnee" ] + } ], "library": false, "languages": [ diff --git a/template.json b/template.json index 8743bec..6ca68db 100644 --- a/template.json +++ b/template.json @@ -94,9 +94,9 @@ "difficulty": 0, "description": "", "effect": "", - "critical": "", "notes": "", - "damage": "" + "damage": "", + "damagecritical": "" }, "equipcommun": { "description": "", diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html index 1bfccc5..fef66c1 100644 --- a/templates/actor-sheet.html +++ b/templates/actor-sheet.html @@ -142,30 +142,39 @@ {{!-- Sort Tab --}}
- lock/unlock{{#if data.editStatSkill}}Lock{{else}}Unlock{{/if}} -

Sorts

-
- +
+ + Sorts + + + Dévotions +
+
{{!-- Equipeme,t Tab --}} @@ -219,102 +228,10 @@
    -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
  • - - -
-
    -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
-
-
-
-
- -
- Familiar Subcultures -
    - {{#each data.subcultureList as |subculture key|}} -
  • - - {{subculture.name}} -
    - - -
    -
  • - {{/each}} -
-
-
- Known Languages -
    - {{#each data.languageList as |language key|}} -
  • - - {{language.name}} -
    - - -
    -
  • - {{/each}} -
-
-
- Weaknesses -
    - {{#each data.weaknessList as |weakness key|}} -
  • - - {{weakness.name}} -
    - - -
    -
  • - {{/each}} -
-
-

-

Biography :

diff --git a/templates/item-devotion-sheet.html b/templates/item-devotion-sheet.html index 17675e2..0d690cd 100644 --- a/templates/item-devotion-sheet.html +++ b/templates/item-devotion-sheet.html @@ -11,17 +11,24 @@
    -
  • +
  • + +
  • +
{{editor content=data.effect target="data.effect" button=true owner=owner editable=editable}} - - {{editor content=data.critical target="data.critical" button=true owner=owner editable=editable}} {{editor content=data.notes target="data.notes" button=true owner=owner editable=editable}}
diff --git a/templates/item-sort-sheet.html b/templates/item-sort-sheet.html index 1c8cdf5..a08b2f3 100644 --- a/templates/item-sort-sheet.html +++ b/templates/item-sort-sheet.html @@ -11,17 +11,24 @@
    -
  • +
  • + +
  • +
{{editor content=data.effect target="data.effect" button=true owner=owner editable=editable}} - - {{editor content=data.critical target="data.critical" button=true owner=owner editable=editable}} {{editor content=data.notes target="data.notes" button=true owner=owner editable=editable}}