From c82d0fe8a1602582df617bd5fe47a6ab3898fd6b Mon Sep 17 00:00:00 2001 From: sladecraven Date: Fri, 24 Jul 2020 10:51:11 +0200 Subject: [PATCH] Version avec doc --- RdD.geany | 21 ++++++++------- module/actor-sheet.js | 26 +++++++++++++++---- module/rdd-main.js | 8 ++++++ packs/queues-de-dragon.db | 4 +-- packs/rappel-des-regles.db | 1 + system.json | 2 +- templates/actor-sheet.html | 52 +++++++++++++++++++++++++++++++++++--- 7 files changed, 93 insertions(+), 21 deletions(-) diff --git a/RdD.geany b/RdD.geany index 13d97460..353f3dbe 100644 --- a/RdD.geany +++ b/RdD.geany @@ -28,18 +28,21 @@ long_line_behaviour=1 long_line_column=72 [files] -current_page=10 -FILE_NAME_0=6460;JSON;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Ftemplate.json;0;2 -FILE_NAME_1=5276;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Factor-sheet.js;0;2 +current_page=13 +FILE_NAME_0=9714;JSON;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Ftemplate.json;0;2 +FILE_NAME_1=5468;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Factor-sheet.js;0;2 FILE_NAME_2=17984;HTML;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Ftemplates%2Factor-sheet.html;0;2 -FILE_NAME_3=4521;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Frdd-utility.js;0;2 -FILE_NAME_4=13685;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Frdd-tmr-dialog.js;0;2 -FILE_NAME_5=693;HTML;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Ftemplates%2Fdialog-tmr.html;0;2 -FILE_NAME_6=18262;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Factor.js;0;2 -FILE_NAME_7=1121;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Frdd-main.js;0;2 +FILE_NAME_3=6672;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Frdd-utility.js;0;2 +FILE_NAME_4=11979;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Frdd-tmr-dialog.js;0;2 +FILE_NAME_5=1692;HTML;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Ftemplates%2Fdialog-tmr.html;0;2 +FILE_NAME_6=8489;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Factor.js;0;2 +FILE_NAME_7=761;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Frdd-main.js;0;2 FILE_NAME_8=8120;CSS;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fstyles%2Fsimple.css;0;2 FILE_NAME_9=18700;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Ftmr-utility.js;0;2 -FILE_NAME_10=164;JSON;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fsystem.json;0;2 +FILE_NAME_10=396;HTML;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Ftemplates%2Fdialog-roll-sort.html;0;2 +FILE_NAME_11=244;HTML;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Ftemplates%2Fdialog-roll-carac.html;0;2 +FILE_NAME_12=335;HTML;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Ftemplates%2Fdialog-competence.html;0;2 +FILE_NAME_13=1259;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fmorr%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Frdd-roll-dialog.js;0;2 [VTE] last_dir=/home/sigmar diff --git a/module/actor-sheet.js b/module/actor-sheet.js index 70ecffef..4a4a09af 100644 --- a/module/actor-sheet.js +++ b/module/actor-sheet.js @@ -93,6 +93,10 @@ export class RdDActorSheet extends ActorSheet { data.data.potions = this._checkNull(data.itemsByType['potions']); data.data.herbes = this._checkNull(data.itemsByType['herbes']); data.data.sorts = this._checkNull(data.itemsByType['sort']); + data.data.queues = this._checkNull(data.itemsByType['queue']); + data.data.souffles = this._checkNull(data.itemsByType['souffle']); + data.data.ombres = this._checkNull(data.itemsByType['ombre']); + data.data.tetes = this._checkNull(data.itemsByType['tete']); data.data.competenceByCategory = data.competenceByCategory; //data.data.armes = data.itemsByType.arme; //console.log(">>>>> data update"); @@ -156,12 +160,24 @@ export class RdDActorSheet extends ActorSheet { this.actor.rollArme( armeName); }); - // Roll spell - html.find('.sort-label a').click((event) => { - let sortID = event.currentTarget.attributes['data-id'].value; - this.actor.displayTMR( sortID); + // Display TMR + html.find('.monte-tmr a').click((event) => { + this.actor.displayTMR( ); }); - + + // Display info about queue + html.find('.queuesouffle-label a').click((event) => { + let myID = event.currentTarget.attributes['data-id'].value; + const item = this.actor.getOwnedItem(myID); + item.sheet.render(true); + }); + // Display info about queue + html.find('.sort-label a').click((event) => { + let myID = event.currentTarget.attributes['data-id'].value; + const item = this.actor.getOwnedItem(myID); + item.sheet.render(true); + }); + // On carac change html.find('.carac-value').change((event) => { let caracName = event.currentTarget.name.replace(".value", "").replace("data.carac.", ""); diff --git a/module/rdd-main.js b/module/rdd-main.js index 0f40dcab..980fca14 100644 --- a/module/rdd-main.js +++ b/module/rdd-main.js @@ -53,6 +53,14 @@ Hooks.once("init", async function() { Items.registerSheet("foundryvtt-reve-de-dragon", RdDItemSheet, {makeDefault: true}); }); +/* -------------------------------------------- */ +/* Foundry VTT Initialization */ +/* -------------------------------------------- */ +Hooks.once("ready", function() { + ChatMessage.create( { title: "Bienvenu dans le Rêve !", content : "Bienvenu dans le Rêve des Dragons !
" + + "Vous trouverez quelques infos pour démarrer dans ce document : @Compendium[foundryvtt-reve-de-dragon.rappel-des-regles.7uGrUHGdPu0EmIu2]{Documentation MJ/Joueurs}" } ); +} ); + /* -------------------------------------------- */ /* Foundry VTT Initialization */ /* -------------------------------------------- */ diff --git a/packs/queues-de-dragon.db b/packs/queues-de-dragon.db index 7c3495d7..e0aadee7 100644 --- a/packs/queues-de-dragon.db +++ b/packs/queues-de-dragon.db @@ -1,10 +1,10 @@ {"_id":"0jrEZ62Q2Jz4kBGf","name":"Mauvaise rencontre en perspective","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"

Tirer la prochaine rencontre dans les TMR sur la @RollTable[52ymSWISvXPUhRyQ]{Table spéciale de rencontres}

","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg"} -{"_id":"1gGVlZM0UyifL6RK","name":"Souvenir obsessionnel de l'archétype","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"

Les prochains points d’expérience dus au stress doivent être mis dans une compétence déterminée aléatoirement par la table de @Compendium[foundryvtt-reve-de-dragon.tables-diverses.E0WLgjn6LA9WsvKJ]{Détermination aléatoire de compétence}.

","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg"} +{"_id":"1gGVlZM0UyifL6RK","name":"Souvenir obsessionnel de l'archétype","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"

Les prochains points d’expérience dus au stress doivent être mis dans une compétence déterminée aléatoirement par la table de @Compendium[world.tables-diverses.E0WLgjn6LA9WsvKJ]{Détermination aléatoire de compétence}.

","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg"} {"_id":"32LbwxxokC9Tn370","name":"Coup de foudre fatal","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"

On devient immédiatement amoureux fou de la première personne inconnue de sexe opposé et de même espèce rencontrée. Tant que satisfaction n’est pas obtenue, traiter comme un désir lancinant. 

","refoulement":2},"flags":{},"img":"icons/svg/mystery-man.svg"} {"_id":"5knw1NcnBsLIjHpr","name":"Montée laborieuse","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"

Pendant un jour, monter en TMR coûte 2 points de rêve au lieu d’un, et 3 points en déplacement accéléré.

","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg"} {"_id":"EUrxQGd7FuW628NS","name":"Inertie draconique","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"

Pendant un jour, la fatigue en TMR est doublée. Chaque case ou round coûte 2 points au lieu d’un.

","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg"} {"_id":"J3XtcVuQo846U1OT","name":"Idée fixe","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"

Tirer 1d20 sur la table des @RollTable[FKXqN9FOJQHQXZ2L]{Idées fixes}. Les idées fixes prennent e!et immédiatement et durent jusqu’à l’extrême $n de l’heure du Château Dormant du lendemain. Si passé ce délai, l’occasion de les manifester ne s’est pas présentée, la queue prend $n néanmoins. Si elles entrent en contradiction avec une autre queue de Dragon, retirer.

","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg"} -{"_id":"Ltgqj86rYQr8D8LW","name":"Désir lancinant","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"

Tirer 1d20 sur la table des @RollTable[wysZQFqioBqPijZM]{Désirs lancinants}. Les désirs lancinants durent jusqu’à ce qu’ils soient satisfaits ou refoulés. Tant que satisfaction n’est pas obtenue, aucun point d’expérience ne peut plus être gagné par l’exercice en cas de particulière et d’ajustement final négatif. Les points d’expérience dus au stress ne sont pas affectés.

","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg"} +{"_id":"Ltgqj86rYQr8D8LW","name":"Désir lancinant","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"

Tirer 1d20 sur la table des@RollTable[wysZQFqioBqPijZM]{Désirs lancinants}. Les désirs lancinants durent jusqu’à ce qu’ils soient satisfaits ou refoulés. Tant que satisfaction n’est pas obtenue, aucun point d’expérience ne peut plus être gagné par l’exercice en cas de particulière et d’ajustement final négatif. Les points d’expérience dus au stress ne sont pas affectés.

","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg"} {"_id":"NF4E7jTty1QGjaNj","name":"Pélerinage","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"

Avant de pouvoir à nouveau faire usage du haut-rêve, y compris déclencher volontairement un sort mis en réserve, le haut-rêvant doit se rendre dans une certaine case des TMR déterminée aléatoirement. Un Passeur peut l’y téléporter, mais un Messager ne peut s’y rendre à sa place. Dès que la case est atteinte, le pèlerinage est accompli.

","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg"} {"_id":"OSV2b7bVWv2SCfUY","name":"Urgence draconique","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"

Le haut-rêvant est pris du besoin irrésistible de déclencher immédiatement son plus proche sort en réserve. À équidistance, prendre dans le sens des aiguilles d’une montre en commençant par le haut. En cas de rencontre dans les TMR, se dérober équivaut à refouler la queue de Dragon. Si aucun sort n’est en réserve, ou si il y a impossibilité de pratiquer la magie à cause d’une autre queue ou d’un souffle, tirer à la place une idée fixe.

","refoulement":2},"flags":{},"img":"icons/svg/mystery-man.svg"} {"_id":"Qgj5eSMpQ0IDHwZX","name":"Coup de barre","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"

Prise immédiate de 3d6 points de fatigue.

","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg"} diff --git a/packs/rappel-des-regles.db b/packs/rappel-des-regles.db index d21bac91..d5da8361 100644 --- a/packs/rappel-des-regles.db +++ b/packs/rappel-des-regles.db @@ -1,4 +1,5 @@ {"_id":"3wVxF2IRf3c1lOxC","name":"Communication avec les créatures invoquées","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"flags":{},"content":"

Seul le haut-rêvant invocateur peut communiquer avec sa créature invoquée (Guerrier Sorde, Kanaillou, etc.) et ne peut le faire qu’oralement. Cela sous-entend que le haut-rêvant doit être en mesure de parler.

"} +{"name":"Documentation MJ/Joueurs","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"flags":{},"content":"

Préambule

\n

Ce système pour Foundry est un implémentation de Rêve de Dragon, un jeu de Denis Gerfaud, publié dans sa troisième édition par \"Le Scriptarium\". Tout les droits leur en reviennent naturellement.

\n

Merci à Fred et Fab du Discord Foudry Francophone pour le gros travail de saisie des Compendiums !

\n

Pour me contacter : https://discord.gg/pPSDNJk , Pseudo LeRatierBretonnien

\n

Créer un Personnage

\n

Tout se fait manuellement à l'heure actuelle, il convient donc procéder comme suit : 

\n\n

Chaque élément apparaît dans son onglet propre.

\n

Pour réaliser un jet, il suffit de cliquer sur le nom d'une caractéristique, compétence ou objet. Ce click ouvre la boite de dialogue des jets, qui permet de paramétrer les différentes options (difficulté, compétence/carac, etc). Le lancer affiche les résultats dans le tchat, avec le résultat, la qualité de la réussite, les points d'expérience éventuels et les points de taches.

\n

Combat

\n

Pour l'instant, l'initiative est à régler manuellement. Une fois qu'un personnage est ciblé, l'attaquant clique sur l'arme ( et pas la compétence) concerné. La difficulté libre est alors proposée. 

\n

Si l'attaque réussit, le défeseur se voit ouvrir un message dans le tchat avec ses actions de réponse possibles, selon ses compétences : Encaisser, Esquiver, Parer, ...

\n

Un click sur ces actions génère le jet de riposte et produit les résultats. Les Blessures et l'état général est automatiquement mis à jour.

\n

Haut Rêve

\n

Pour monter dans les Terres Médianes, il suffit de cliquer sur le lien \"Monter dans les Terres Médianes!\".

\n

La description des sorts est disponible en cliquant sur le sort.

\n

La fiche des TMR apparait alors, vous permettant de vous déplacer. Le point de rêve de montée, la fatigue, les rencontres, les cases humides sont automatiquement gérés. Lorsque vous êtes sur la bonne case, il vous suffit de cliquer sur 'Lancer le sort', qui ouvre la boite de dialogue du lancement.

\n

Ce qui n'est pas implémenté/en cours

\n","_id":"7uGrUHGdPu0EmIu2"} {"name":"Passeur fou","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"flags":{},"content":"

Non maîtrisé, le Passeur fou emporte immédiatement le demi- rêve du haut-rêvant jusqu’à la plus proche case où il a un sort en réserve, l’obligeant à le déclencher. Peu importe la distance, même si elle excède les 2d8. À distances égales, choisir le haut de la carte en priorité et tourner dans le sens des aiguilles d’une montre. Si aucun sort n’est en réserve, le Passeur fou emporte le demi-rêve du haut-rêvant dans une direction aléatoire et à un nombre de cases équivalent à sa force.

","_id":"G2WDlZwZaEyH94Au"} {"_id":"GRKYbbNDIHdzVNaj","name":"Note sur les invocations de créatures","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"flags":{},"content":"

Les créatures invoquées ne sont pas des hologrammes sans substance mais des présences physiques véritables. La plupart d’entre elles, comme les guerriers, peuvent être blessées, sonnées, tuées. À l’exception du Kanaillou, chaque type de créature invoquée ne peut accomplir qu’un genre de tâche spécifique. Le ciblage doit être fait, dans les limites de la portée, sur un point du sol libre de tout obstacle, où la créature puisse se matérialiser. La durée de l’invocation dépend de la tâche, mais ne peut excéder la fin de l’heure de naissance du haut-rêvant. À ce moment, la créature se dématérialise intégralement, ainsi que tout son équipement. Même chose si elle est tuée. Il est vain de songer à récupérer l’armure et les armes d’un Guerrier Sorde. Chaque type de créature est toujours invoqué dans une case spécifique et non pas dans n’importe quelle case du même genre. Par ailleurs, ces rituels obéissent à toutes les règles standard d’application des rituels.

"} {"name":"Tourbillon rouge","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"flags":{},"content":"

Le Tourbillon rouge est un tourbillon vampire. Il fonctionne comme les Tourbillons blancs et noirs, sauf que chaque round tant qu’il n’est pas maîtrisé fait dériver le demi-rêve de 4 cases, draine 2 points de rêve et 1 point de vie.

\n

On peut se dérober normalement devant ces rencontres ou les refouler. Toutefois, leur refoulement coûte 2 points au lieu d’un, sauf le Tourbillon rouge qui en coûte 3.

","_id":"K42KNuBHizMppV5F"} diff --git a/system.json b/system.json index a9562022..4cb81b04 100644 --- a/system.json +++ b/system.json @@ -2,7 +2,7 @@ "name": "foundryvtt-reve-de-dragon", "title": "Rêve de Dragon", "description": "L'implémentation de Rêve de Dragon pour FoundryVTT", - "version": "0.7.21", + "version": "0.8.0", "minimumCoreVersion": "0.6.0", "compatibleCoreVersion": "0.6.2", "templateVersion": 20, diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html index 2cd0526a..d4adb306 100644 --- a/templates/actor-sheet.html +++ b/templates/actor-sheet.html @@ -50,6 +50,7 @@ Blessures Haut-Rêve Equipement + Queues, Souffles et Têtes Description @@ -302,17 +303,24 @@ {{!-- hautreve Tab --}}
-
  • Points de Rêve actuels :
  • -
  • Position en TMR : {{data.reve.tmrpos.coord}}
  • -
  • Refoulement : {{data.reve.refoulement.value}}
  • + Monter dans les Terres Medianes !
    - Sorts: +
      +
    1. Points de Rêve actuels :
    2. +
    3. Position en TMR : {{data.reve.tmrpos.coord}}
    4. +
    5. Refoulement : {{data.reve.refoulement.value}}
    6. +
    +
    +
    + Sorts: +
      {{#each data.sorts as |mysort key|}}
    1. {{mysort.name}} {{mysort.data.draconic}} - {{mysort.data.difficulte}}
    2. {{/each}} +
    @@ -345,6 +353,42 @@ {{/each}} + + {{!-- queue/tete/souffle Tab --}} +
    +
    + Queues: + {{#each data.queues as |queue key|}} +
  • + {{queue.name}} +
  • + {{/each}} +
    +
    + Souffles: + {{#each data.souffles as |souffle key|}} +
  • + {{souffle.name}} +
  • + {{/each}} +
    +
    + Tetes: + {{#each data.tetes as |tete key|}} +
  • + {{tete.name}} +
  • + {{/each}} +
    +
    + Ombres de Thanatos: + {{#each data.ombres as |ombre key|}} +
  • + {{ombre.name}} +
  • + {{/each}} +
    +
    {{!-- Biography Tab --}}