diff --git a/modules/heritiers-actor-sheet.js b/modules/heritiers-actor-sheet.js index 809ae2a..f038f2b 100644 --- a/modules/heritiers-actor-sheet.js +++ b/modules/heritiers-actor-sheet.js @@ -55,6 +55,7 @@ export class HeritiersActorSheet extends ActorSheet { desavantages: duplicate(this.actor.getDesavantages()), profils: duplicate(this.actor.getProfils()), pvMalus: this.actor.getPvMalus(), + heritage: game.settings.get("fvtt-les-heritiers", "heritiers-heritage"), initiative: this.actor.getFlag("world", "last-initiative") || -1, description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}), revesetranges: await TextEditor.enrichHTML(this.object.system.biodata.revesetranges, {async: true}), diff --git a/modules/heritiers-actor.js b/modules/heritiers-actor.js index 7377e69..d657c04 100644 --- a/modules/heritiers-actor.js +++ b/modules/heritiers-actor.js @@ -501,9 +501,14 @@ export class HeritiersActor extends Actor { incDecTricherie(value) { let tricherie = this.system.rang.tricherie tricherie.value += value + if ( tricherie.value < 0 || tricherie.value > tricherie.max) { + ui.notifications.warn("Pas assez de points de Tricherie !") + return false + } tricherie.value = Math.max(tricherie.value, 0) tricherie.value = Math.min(tricherie.value, tricherie.max) this.update({ 'system.rang.tricherie': tricherie }) + return true } /* -------------------------------------------- */ getPireCompetence(compName1, compName2) { diff --git a/modules/heritiers-utility.js b/modules/heritiers-utility.js index c696abf..c0497da 100644 --- a/modules/heritiers-utility.js +++ b/modules/heritiers-utility.js @@ -2,6 +2,45 @@ import { HeritiersCombat } from "./heritiers-combat.js"; import { HeritiersCommands } from "./heritiers-commands.js"; +const __facesAdjacentes = { + "d8": { + 1: [4, 8, 6], + 2: [7, 5, 3], + 3: [2, 8, 6], + 4: [1, 5, 7], + 5: [2, 4, 8], + 6: [1, 7, 3], + 7: [2, 4, 6], + 8: [1, 3, 5] + }, + "d10": { + 1: [4, 6, 9, 7], + 2: [6, 8, 5, 9], + 3: [7, 5, 8, 10], + 4: [10, 6, 7, 1], + 5: [3, 9, 2, 8], + 6: [1, 4, 2, 9], + 7: [1, 3, 4, 10], + 8: [2, 10, 5, 3], + 9: [1, 5, 6, 2], + 10: [8, 4, 3, 7] + }, + "d12": { + 1:[2, 3, 4, 5, 6], + 2: [1, 6, 8, 12, 3], + 3: [1, 4, 11, 12, 2], + 4: [1, 5, 10, 11, 3], + 5: [1, 6, 9, 10, 4], + 6: [1, 2, 8, 9, 5], + 7: [8, 9, 10, 11, 12], + 8: [2, 6, 9, 7, 12], + 9: [5, 10, 7, 8, 6], + 10: [4, 11, 7, 9, 5], + 11: [7, 10, 4, 3, 12], + 12: [2, 8, 7, 11, 3] + } +} + /* -------------------------------------------- */ export class HeritiersUtility { @@ -65,6 +104,14 @@ export class HeritiersUtility { const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.competences") this.skills = skills.map(i => i.toObject()) + game.settings.register("fvtt-les-heritiers", "heritiers-heritage", { + name: "Points d'héritage", + hint: "Points d'héritage du groupe", + scope: "world", + config: true, + default: 0, + type: Number + }) } /* -------------------------------------------- */ @@ -96,7 +143,18 @@ export class HeritiersUtility { rollData.competence = duplicate(actor.getCompetence(rollData.competence._id)) HeritiersUtility.rollHeritiers(rollData) }) - + + html.on("click", '.roll-tricherie-2', async event => { + let messageId = HeritiersUtility.findChatMessageId(event.currentTarget) + let message = game.messages.get(messageId) + let rollData = message.getFlag("world", "heritiers-roll") + let actor = this.getActorFromRollData(rollData) + if ( await actor.incDecTricherie(-2) ) { + rollData.forcedValue = Number($(event.currentTarget).data("dice-value")) + HeritiersUtility.rollHeritiers(rollData) + } + }) + html.on("click", '.roll-chat-degat', async event => { let messageId = HeritiersUtility.findChatMessageId(event.currentTarget) let message = game.messages.get(messageId) @@ -290,11 +348,12 @@ export class HeritiersUtility { if (isTricherieHeritage) { let resTab = [rollData.roll.terms[0].results[0].result, rollData.roll.terms[0].results[1].result, rollData.roll.terms[0].results[2].result] rollData.diceResult = resTab[0] + "," + resTab[1] + "," + resTab[2] - let foundryTotal = resTab[0] + resTab[1] + resTab[2] + let foundryTotal = resTab[0] + resTab[1] + resTab[2] if (resTab[1] == 1) { resTab[1] -= 4 } if (resTab[2] == 1) { resTab[2] -= 6 } if (resTab[2] == 2) { resTab[2] -= 7 } - rollData.finalResult = rollData.roll.total - foundryTotal + Math.max(Math.max(resTab[0], resTab[1]), resTab[2]) + rollData.diceValue = Math.max(Math.max(resTab[0], resTab[1]), resTab[2]) + rollData.finalResult = rollData.roll.total - foundryTotal + rollData.diceValue // Gestion des résultats spéciaux resTab = resTab.sort() @@ -319,8 +378,9 @@ export class HeritiersUtility { } else { rollData.finalResult = rollData.roll.total - let rollValue = rollData.roll.terms[0].results[0].result - rollData.diceResult = rollData.roll.terms[0].results[0].result + let rollValue = rollData.forcedValue || rollData.roll.terms[0].results[0].result + rollData.diceResult = rollValue + rollData.diceValue = rollValue if (rollData.mainDice.includes("d10")) { if (rollValue == 1) { rollData.finalResult -= 3 + rollValue // substract 3 and the 1 value that has been added @@ -331,14 +391,16 @@ export class HeritiersUtility { rollData.finalResult -= 5 + rollValue // Remove also the dice result has it has been added already } } + if ( !rollData.forcedValue) { + rollData.adjacentFaces = duplicate(__facesAdjacentes[rollData.mainDice][rollData.diceValue]) + } } - } /* -------------------------------------------- */ static computeArmeDegats(rollData, actor) { rollData.degatsArme = rollData.arme.system.degats + rollData.marge - if (rollData.attaqueDeuxArmes != 0 && rollData.secondeArme ) { + if (rollData.attaqueDeuxArmes != 0 && rollData.secondeArme) { let secondeArme = actor.items.get(secondeArme) if (secondeArme) { rollData.degatsArme += secondeArme.system.degats @@ -353,7 +415,7 @@ export class HeritiersUtility { } if (rollData.mode == "attaquecharge") { rollData.degatsArme += 3 - } + } } if (rollData.attaqueCible == "membre") { rollData.degatsArme -= 2 @@ -396,7 +458,7 @@ export class HeritiersUtility { rollData.defenderValue = valeurDefense rollData.marge = 0 this.computeMarge(rollData, valeurDefense) - rollData.dureeAssommer = (rollData.marge) ? rollData.marge*2 : 1 + rollData.dureeAssommer = (rollData.marge) ? rollData.marge * 2 : 1 this.createChatWithRollMode(rollData.alias, { content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-assommer-result.html`, rollData) }, rollData, "selfroll") @@ -409,10 +471,14 @@ export class HeritiersUtility { //rollData.actionImg = "systems/fvtt-les-heritiers/assets/icons/" + actor.system.attributs[rollData.attrKey].labelnorm + ".webp" rollData.carac = duplicate(actor.system.caracteristiques[rollData.caracKey]) - if (rollData.useTricherie || rollData.useHeritage) { - rollData.diceFormula = "{1d8, 1d10, 1d12}" + if (rollData.forcedValue) { + rollData.diceFormula = rollData.forcedValue } else { - rollData.diceFormula = "1" + rollData.mainDice + "kh1" + if (rollData.useTricherie || rollData.useHeritage) { + rollData.diceFormula = "{1d8, 1d10, 1d12}" + } else { + rollData.diceFormula = "1" + rollData.mainDice + "kh1" + } } let rangValue = 0 @@ -424,7 +490,7 @@ export class HeritiersUtility { let specBonus = (rollData.useSpecialite) ? 1 : 0 rollData.diceFormula += `+${rollData.carac.value}+${rangValue}+${rollData.competence.system.niveau}+${specBonus}+${rollData.bonusMalusContext}+${compmod}` } else if (rollData.pouvoirBase) { - rollData.diceFormula += `+${rollData.pouvoirBase.value}+${rangValue}+${rollData.bonusMalusContext}` + rollData.diceFormula += `+${rollData.carac.value}+${rollData.pouvoirBase.value}+${rangValue}+${rollData.bonusMalusContext}` } else { rollData.diceFormula += `+${rollData.carac.value}+${rangValue}+${rollData.bonusMalusContext}` } @@ -438,7 +504,7 @@ export class HeritiersUtility { let bonusAttaque = rollData.bonusAttaquePlusieurs if (rollData.attaqueDos) { bonusAttaque = 2 - if (rollData.bonusAttaquePlusieurs) { + if (rollData.bonusAttaquePlusieurs) { bonusAttaque = 3 // Valeur max, cf règle page 197 } } @@ -450,13 +516,13 @@ export class HeritiersUtility { } // Gestion des attaques ciblées if (rollData.attaqueCible != "none") { - if ( rollData.attaqueCible == "membre") { + if (rollData.attaqueCible == "membre") { rollData.diceFormula += `-2` } - if ( rollData.attaqueCible == "main") { + if (rollData.attaqueCible == "main") { rollData.diceFormula += `-3` } - if ( rollData.attaqueCible == "tete") { + if (rollData.attaqueCible == "tete") { rollData.diceFormula += `-6` } } @@ -478,9 +544,9 @@ export class HeritiersUtility { }, rollData) // Gestion attaque standard - if ( (rollData.mode == "arme" || rollData.mode == "attaquebrutale" || rollData.mode == "attaquecharge") && - rollData.defenderTokenId && rollData.arme) { - if (rollData.arme.system.categorie != "trait" && rollData.arme.system.categorie != "poing" && rollData.arme.system.categorie != "epaule" ) { + if ((rollData.mode == "arme" || rollData.mode == "attaquebrutale" || rollData.mode == "attaquecharge") && + rollData.defenderTokenId && rollData.arme) { + if (rollData.arme.system.categorie != "trait" && rollData.arme.system.categorie != "poing" && rollData.arme.system.categorie != "epaule") { await this.displayUneDefense(rollData, actor, "Parade", rollData.defenderParade) await this.displayUneDefense(rollData, actor, "Esquive", rollData.defenderEsquive) } else if (rollData.sdValue) { @@ -492,9 +558,9 @@ export class HeritiersUtility { // Gestion assomer if (rollData.mode == "assommer" && rollData.defenderTokenId && rollData.arme) { await this.displayAsssomer(rollData, actor, "Assommer", "Surprise", rollData.defenderResistancePhysique) - await this.displayAsssomer(rollData, actor, "Assommer", "Conscient, Résistance+6", rollData.defenderResistancePhysique+6) - await this.displayAsssomer(rollData, actor, "Assommer", "Conscient, Parade", rollData.defenderParade) - await this.displayAsssomer(rollData, actor, "Assommer", "Conscient, Esquive", rollData.defenderEsquive+6) + await this.displayAsssomer(rollData, actor, "Assommer", "Conscient, Résistance+6", rollData.defenderResistancePhysique + 6) + await this.displayAsssomer(rollData, actor, "Assommer", "Conscient, Parade", rollData.defenderParade) + await this.displayAsssomer(rollData, actor, "Assommer", "Conscient, Esquive", rollData.defenderEsquive + 6) } } @@ -617,7 +683,7 @@ export class HeritiersUtility { bonusMalusContext: 0, attaqueCible: "none", config: game.system.lesheritiers.config, - rulesMalus : [] + rulesMalus: [] } return rollData } diff --git a/packs/pouvoirs.db b/packs/pouvoirs.db index 5526406..3969beb 100644 --- a/packs/pouvoirs.db +++ b/packs/pouvoirs.db @@ -10,7 +10,7 @@ {"name":"Élémentaire majeur (Légendaire)","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"metamorphose","masquetype":"demasque","niveau":"legendaire","activation":"2 points d’usage au lieu d’un, ainsi qu’1 point temporaire de Constitution.","istest":false,"feeriemasque":"feerie","zoneffet":"","testautre":"Attaque avec des crocs","carac":"pres","duree":"une scène","cibles":"","effet":"transformation en élémentaire de son\naffinité ; absorbe Féérie points de dégâts sauf contre des attaques efficaces (élément contraire ou argent). \nAttaques : effectuées avec Mêlée + AGI ; dégâts élémentaires = Féérie + MR (pas de bonus de Force).\n","portee":"","resistance":"aucune","resistanceautre":"Esquive / test d’opposition de Mêlée ou Ressort + Force pour se dégager.","isvirulence":false,"virulence":"","description":"

Le djinn se transforme en élémentaire majeur de très grande taille (environ 2,5 mètres de haut et d’envergure), avec d’importants pouvoirs de contrôle de son élément de prédilection : tornade de sable ou d’eau, contrôle du feu, tempête, etc. Ce contrôle élémentaire est de forme relativement libre selon la vraisemblance et ce qu’autorise le Docte et sa puissance est comparable au Pouvoir profond du phénix Contrôle du feu (voir p. 264). Il utilise ses longs bras (1,5 m) pour porter des attaques élémentaires avec des effets critiques liés : le feu enflamme les vêtements, l’eau et le sable étourdissent, l’air ajoute des dégâts de projection ou de chute, etc.

\n

Les attaques physiques portées contre lui sont réduites d’autant de points de dégâts que son rang de Féérie, sauf si elles font intervenir de l’argent. Toutefois, projeter sur lui une grande quantité (1 m3 environ) d’un élément auquel il est vulnérable (l’eau pour les djinns du feu, la terre ou le sable pour les djinns de l’eau, le vent pour les djinns de sable, le feu pour les djinns de l’air) pourra contraindre un djinn légendaire à abandonner sa forme d’Élémentaire majeur.

","zoneeffet":""},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.18","coreVersion":"10.291","createdTime":1678214487456,"modifiedTime":1678303349575,"lastModifiedBy":"xGnwWyEbO2k89UsP"},"_id":"4v8Z2ThDSwwWb0DU","folder":null,"sort":0,"ownership":{"default":0,"xGnwWyEbO2k89UsP":3}} {"name":"Psychotopie","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"actif","masquetype":"masque","niveau":"normal","activation":"Féérie + Esprit et une transe de 5 minutes au moins, contre un SD variable selon la taille et les événements se déroulant dans le lieu (une chambre isolée depuis des années : SD10 ; un immeuble rempli d'habitants dans lequel il y a fréquemment du passage : SD 20).","istest":true,"feeriemasque":"feerie","zoneffet":"","testautre":"","carac":"esp","duree":"","cibles":"un seul lieu","effet":"apprend des informations marquantes sur un lieu","portee":"un lieu (pas plus grand qu’un bâtiment)","resistance":"aucune","resistanceautre":"","isvirulence":false,"virulence":"","description":"

Type de Pouvoir : actif.

\n

Activation : Féérie + Esprit et une transe de 5 minutes au moins, contre un SD variable selon la taille et les événements se déroulant dans le lieu (une chambre isolée depuis des années : SD10 ; un immeuble rempli d'habitants dans lequel il y a fréquemment du passage : SD 20).

\n

Cibles : un seul lieu.

\n

Effet : apprend des informations marquantes sur un lieu.

\n

Zone d’effet : un lieu (pas plus grand qu’un bâtiment).

\n

La créature est capable, après avoir établi un contact mental avec un lieu par une transe prolongée, de récupérer des informations sur ce qui s’y est passé. En fonction de sa MR, elle aura accès à différents détails : paroles prononcées récemment ou qui ont marqué l’atmosphère, traits physiques généraux de protagonistes présents (odeur, poids, etc.). Les événements marquants (meurtre, incendie, etc.) imprègnent davantage un lieu et faciliteront le SD du test à la discrétion du Docte mais peuvent rester imperceptibles dans la masse d’informations si le lieu est vaste et fréquenté.

","zoneeffet":""},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.18","coreVersion":"10.291","createdTime":1678280900282,"modifiedTime":1678314472642,"lastModifiedBy":"3jSVOAZZNxArxD7h"},"_id":"672N9fk2mJahvJIL","folder":null,"sort":0,"ownership":{"default":0,"3jSVOAZZNxArxD7h":3}} {"name":"Doppelgänger universel","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"metamorphose","masquetype":"demasque","niveau":"legendaire","activation":"test de Masque + Féérie contre un SD de 10 + Prestance de la personne imitée modifiée par la précision de la source servant à l’imitation (connaissance personnelle profonde = bonus de + 3, connaissance personnelle superficielle = + 1, photographie = - 1, illustration fidèle = - 2).","istest":true,"feeriemasque":"Masque","zoneffet":"","testautre":"","carac":"agi","duree":" une scène.","cibles":"","effet":"prendre l’apparence de n’importe qui.","portee":"","resistance":"autre","resistanceautre":"percer à jour le protys légendaire nécessite un test de Sensibilité (Psychologie) + Perception en opposition au test de Féérie + Masque du protys.","isvirulence":false,"virulence":"","description":"

Type de Pouvoir : démasqué ; actif puis métamorphose pour adopter l’identité imitée.

\n

Activation : test de Masque + Féérie contre un SD de 10 + Prestance de la personne imitée modifiée par la précision de la source servant à l’imitation (connaissance personnelle profonde = bonus de + 3, connaissance personnelle superficielle = + 1, photographie = - 1, illustration fidèle = - 2).

\n

Durée : une scène.

\n

Effet : prendre l’apparence de n’importe qui.

\n

Résistance : percer à jour le protys légendaire nécessite un test de Sensibilité (Psychologie) + Perception en opposition au test de Féérie + Masque du protys.

\n

Le protys légendaire est capable, pendant une scène, de prendre l’apparence (traits du visage, corpulence, etc.) de n’importe quel individu dont il aurait vu le visage en réalité ou en photographie, voire sur une illustration suffisamment fidèle. Il peut même imiter une fée avec ses capacités naturelles (ailes, crocs, pelage, etc.) au point de pouvoir s’en servir normalement (il pourra ainsi voler, utiliser une queue préhensile, etc.). Il n’aura en revanche pas accès aux Pouvoirs de la fée imitée.

","zoneeffet":""},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.21","coreVersion":"10.291","createdTime":1678354656026,"modifiedTime":1678356879899,"lastModifiedBy":"3jSVOAZZNxArxD7h"},"_id":"67ECitVegs2SFn2g","folder":null,"sort":0,"ownership":{"default":0,"3jSVOAZZNxArxD7h":3}} -{"name":"Souffle enflammé","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"actif","masquetype":"masque","niveau":"normal","activation":" test de Féérie + Agilité ou Précision.","istest":false,"feeriemasque":"feerie","zoneffet":"","testautre":"","carac":"pre","duree":"","cibles":"une seule.","effet":"souffle de feu de dégâts = 2 + MR","portee":"Féérie mètres.","resistance":"autre","resistanceautre":"Esquive","isvirulence":false,"virulence":"","description":"

Type de Pouvoir : actif.

\n

Activation : test de Féérie + Agilité ou Précision.

\n

Cibles : une seule.

\n

Effet : souffle de feu de dégâts = 2 + MR.

\n

Portée : Féérie mètres.

\n

Résistance : Esquive.

\n

La créature souffle un jet de feu capables d’enflammer les matériaux combustibles (papier, tissus, bois) et faire des dégâts sur une cible. Cette dernière peut être durablement enflammée si les dégâts subis sont de 8 ou plus (en cumulant les attaques). La cible subira alors 1 point de dégât par tour jusqu’à ce que les flammes soient éteintes par la cible ou un allié. En  as de réussite critique du Souffle enflammé, la cible peut perdre, en plus de points de Vie, un point de Prestance permanent à moins d’être soignée immédiatement.

","zoneeffet":""},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.18","coreVersion":"10.291","createdTime":1678293330850,"modifiedTime":1678314472644,"lastModifiedBy":"3jSVOAZZNxArxD7h"},"_id":"68wj1CJt4oipIedV","folder":null,"sort":0,"ownership":{"default":0,"3jSVOAZZNxArxD7h":3}} +{"name":"Souffle enflammé","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"actif","masquetype":"masque","niveau":"normal","activation":" test de Féérie + Agilité ou Précision.","istest":true,"feeriemasque":"feerie","zoneffet":"","testautre":"","carac":"agi","duree":"","cibles":"une seule.","effet":"souffle de feu de dégâts = 2 + MR","portee":"Féérie mètres.","resistance":"autre","resistanceautre":"Esquive","isvirulence":false,"virulence":"","description":"

Type de Pouvoir : actif.

\n

Activation : test de Féérie + Agilité ou Précision.

\n

Cibles : une seule.

\n

Effet : souffle de feu de dégâts = 2 + MR.

\n

Portée : Féérie mètres.

\n

Résistance : Esquive.

\n

La créature souffle un jet de feu capables d’enflammer les matériaux combustibles (papier, tissus, bois) et faire des dégâts sur une cible. Cette dernière peut être durablement enflammée si les dégâts subis sont de 8 ou plus (en cumulant les attaques). La cible subira alors 1 point de dégât par tour jusqu’à ce que les flammes soient éteintes par la cible ou un allié. En  as de réussite critique du Souffle enflammé, la cible peut perdre, en plus de points de Vie, un point de Prestance permanent à moins d’être soignée immédiatement.

","zoneeffet":""},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.1.3","coreVersion":"10.291","createdTime":1678293330850,"modifiedTime":1682875304779,"lastModifiedBy":"xGnwWyEbO2k89UsP"},"_id":"68wj1CJt4oipIedV","folder":null,"sort":0,"ownership":{"default":0,"3jSVOAZZNxArxD7h":3}} {"name":"Chute indolore","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"passif","masquetype":"masque","niveau":"normal","activation":"","istest":false,"feeriemasque":"feerie","zoneffet":"","testautre":"","carac":"pres","duree":"","cibles":"","effet":"la hauteur d’une chute est réduite de Féérie x 4 m pour le calcul de son SD.","portee":"","resistance":"aucune","resistanceautre":"Celle de la structure ou de l’objet (voir p. 204).","isvirulence":false,"virulence":"","description":"

La créature est capable d’affronter les pires chutes sans se faire mal. Lorsque ce Pouvoir est actif, on soustrait Féérie x 4 m à la hauteur de la chute pour le calcul de son SD.

\n

Exemple : si une créature a 4 en Féérie et chute de 20 m, c’est comme si elle ne chutait que de 4 m (elle ignore 4 x 4 = 16 m). Le SD de son test de Ressort + Agilité pour limiter les dégâts de la chute sera égal à 8 au lieu de 22 (voir le tableau des chutes, p. 190).

"},"effects":[],"flags":{"core":{"sourceId":"Item.745Qz4iEGB7RnBPk"}},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.18","coreVersion":"10.291","createdTime":1678214487456,"modifiedTime":1678303349644,"lastModifiedBy":"xGnwWyEbO2k89UsP"},"_id":"6v3s1I0blnPJHipG","folder":null,"sort":0,"ownership":{"default":0,"xGnwWyEbO2k89UsP":3}} {"name":"Charme","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"actif","masquetype":"masque","niveau":"normal","activation":"test de Féérie + Prestance.","istest":true,"feeriemasque":"feerie","zoneffet":"","testautre":"","carac":"pres","duree":"Féérie + MR jours.","cibles":" une cible.","effet":"la cible tombe amoureuse.","portee":"conversation.","resistance":"psychiquepassive","resistanceautre":"Celle de la structure ou de l’objet (voir p. 204).","isvirulence":false,"virulence":"","description":"

La créature est capable, au cours d’une conversation, de faire tomber sa cible follement amoureuse d’elle si elle ne Résiste pas. La cible, une fois éprise de la créature, aura du mal à lui refuser quelque chose mais ne fera rien qui puisse directement nuire à ses jours et ira rarement contre son code moral.

\n

Pour la pousser à une telle extrémité, la créature devra obtenir une réussite critique ou réussir un test de Rhétorique ou Séduction de SD 15 minimum (au jugement du Docte) bénéficiant d’un bonus égal à la MR du Pouvoir.

"},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.18","coreVersion":"10.291","createdTime":1678214487456,"modifiedTime":1678303349644,"lastModifiedBy":"xGnwWyEbO2k89UsP"},"_id":"745Qz4iEGB7RnBPk","folder":null,"sort":0,"ownership":{"default":0,"xGnwWyEbO2k89UsP":3}} {"name":"Sujet qui fâche","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"actif","masquetype":"masque","niveau":"normal","activation":"test de Féérie + Esprit.","istest":true,"feeriemasque":"feerie","zoneffet":"","testautre":"","carac":"esp","duree":"","cibles":" une cible","effet":"fait deviner ce qui fâche quelqu’un ; fait perdre automatiquement un point de Sang-froid quand ce sujet est abordé et pousse à la colère.","portee":" à vue","resistance":"autre","resistanceautre":"psychique pour ne pas être percé à jour puis Fortitude + Sang-froid pour garder le contrôle contre un SD difficile (13 ou plus) fixé par le Docte.","isvirulence":false,"virulence":"","description":"

Type de Pouvoir : actif.

\n

Activation : test de Féérie + Esprit.

\n

Cibles : une cible.

\n

Effet : fait deviner ce qui fâche quelqu’un ; fait perdre automatiquement un point de Sang-froid quand ce sujet est abordé et pousse à la colère.

\n

Portée : à vue.

\n

Résistance : psychique pour ne pas être percé à jour puis Fortitude + Sang-froid pour garder le contrôle contre un SD difficile (13 ou plus) fixé par le Docte.

\n

Lorsqu’elle active ce Pouvoir, la créature peut, en observant son interlocuteur (il peut avoir un bonus d’après des éléments qu’il connaît), trouver instinctivement le sujet qui va le fâcher et, selon son caractère, le mettre en colère ou le faire fuir en rougissant. Ce peut être un complexe, une histoire louche, une phobie… Toutefois, elle n’est pas obligée d’en faire usage : le Docte doit juste lui communiquer le sujet susceptible de froisser la personne en question.
Si la victime Résiste, la créature n’est pas sûre du « sujet qui fâche ». En cas de succès du Pouvoir, si la créature se sert du Sujet qui fâche, la cible perd automatiquement un point de Sang-froid (effet non cumulable) et doit réussir à se maîtriser pour ne pas montrer sa colère ou sa gêne. Toutefois, la victime ne peut que maîtriser ses réactions apparentes (et bouillir intérieurement).

","zoneeffet":""},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.18","coreVersion":"10.291","createdTime":1678313273572,"modifiedTime":1678314472645,"lastModifiedBy":"3jSVOAZZNxArxD7h"},"_id":"7BsyUzwv31oxldYQ","folder":null,"sort":0,"ownership":{"default":0,"3jSVOAZZNxArxD7h":3}} diff --git a/styles/simple.css b/styles/simple.css index f0bd2f7..a77d18e 100644 --- a/styles/simple.css +++ b/styles/simple.css @@ -1241,6 +1241,17 @@ ul, li { background: linear-gradient(to bottom, #800000 5%, #3e0101 100%); background-color: rgb(56, 33, 33); } +.roll-tricherie-2 { + margin: 2px 2px 2px 2px; + box-shadow: inset 0px 1px 0px 0px #a6827e; + background: linear-gradient(to bottom, #41545a 5%, #2e5561 100%); + background-color: #7d5d3b00; + border-radius: 4px; + border: 1px ridge #846109; + padding: 1px 1px 0px 1px; + text-decoration: none; + text-shadow: 0px 1px 0px #4d3534; +} .button-sheet-roll:active { position:relative; top:1px; diff --git a/system.json b/system.json index 00ac1ea..b55df4c 100644 --- a/system.json +++ b/system.json @@ -1,7 +1,7 @@ { "id": "fvtt-les-heritiers", "description": "Les Héritiers pour FoundryVTT", - "version": "10.1.3", + "version": "10.1.4", "authors": [ { "name": "Uberwald/LeRatierBretonnien", @@ -19,7 +19,7 @@ "gridUnits": "m", "license": "LICENSE.txt", "manifest": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/raw/branch/master/system.json", - "download": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/archive/fvtt-les-heritiers-10.1.3.zip", + "download": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/archive/fvtt-les-heritiers-10.1.4.zip", "languages": [ { "lang": "fr", diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html index 76e3c1f..b7fcbe1 100644 --- a/templates/actor-sheet.html +++ b/templates/actor-sheet.html @@ -616,6 +616,10 @@ +
  • + + +
  • diff --git a/templates/chat-generic-result.html b/templates/chat-generic-result.html index 488ccf7..359b6be 100644 --- a/templates/chat-generic-result.html +++ b/templates/chat-generic-result.html @@ -43,10 +43,24 @@
  • Effet : {{pouvoir.system.effet}}
  • {{/if}} + {{#if forcedValue}} +
  • Vous dépense 2 points de Tricherie et utilisé une face adjacente du dé !
  • + {{/if}} +
  • Formule : {{diceFormula}}
  • -
  • Résultat du dé : {{diceResult}}
  • +
  • Résultat du dé : {{diceResult}}
  • + + {{#if adjacentFaces}} +
  • Faces Adjacentes : + {{#each adjacentFaces as |value key|}} + {{value}} + {{/each}} +
  • + {{/if}} +
  • Total : {{finalResult}} {{#if (gt sdValue "-1")}}(Marge : {{marge}}){{/if}}
  • + {{#if (gt sdValue "-1")}} {{#if isSuccess}}
  • Succès...