diff --git a/module/actor-sheet.js b/module/actor-sheet.js index 934ecf69..7f9c4feb 100644 --- a/module/actor-sheet.js +++ b/module/actor-sheet.js @@ -26,15 +26,7 @@ export class RdDActorSheet extends ActorSheet { getData() { let data = super.getData(); - data.itemsByType = {}; - for (const item of data.items) { - let list = data.itemsByType[item.type]; - if (!list) { - list = []; - data.itemsByType[item.type] = list; - } - list.push(item); - } + data.itemsByType = RdDUtility.buildItemsClassification(data.items); // Competence per category data.competenceByCategory = {}; let competenceXPTotal = 0; @@ -80,22 +72,7 @@ export class RdDActorSheet extends ActorSheet { // To avoid armour and so on... data.data.combat = duplicate( RdDUtility.checkNull(data.itemsByType['arme'])); - // Gestion des armes 1/2 mains - let arme2mains = []; // Tableau contenant la duplication des armes 1m/2m - for (const arme of data.data.combat) { - // Dupliquer les armes pouvant être à 1 main et 2 mains en patchant la compétence - if (arme.data.unemain && arme.data.deuxmains) { - let arme2main = duplicate(arme); - arme2main.data.competence = arme2main.data.competence.replace(" 1 main", " 2 mains"); // Replace ! - for ( const melee of data.competenceByCategory.melee ) { - if (melee.name == arme2main.data.competence ) - arme2main.data.niveau = melee.data.niveau - } - arme2mains.push(arme2main); - } - } - data.data.combat = data.data.combat.concat(arme2mains); // Merge all cases - data.data.combat = data.data.combat.sort((a, b) => { if ( a.name > b.name) return 1; else return -1; } ); + data.data.combat = RdDUtility.finalizeArmeList( data.data.combat ) if (data.competenceByCategory && data.competenceByCategory.melee) { //Specific case for Esquive and Corps à Corps diff --git a/module/rdd-main.js b/module/rdd-main.js index 396e3a75..d8f92a96 100644 --- a/module/rdd-main.js +++ b/module/rdd-main.js @@ -217,3 +217,8 @@ Hooks.on("chatMessage", (html, content, msg) => { return RdDUtility.processChatCommand( commands, content, msg ); } ); + +/* -------------------------------------------- */ +Hooks.on("getCombatTrackerEntryContext", (html, options) => { + RdDUtility.pushInitiativeOptions( html, options ); +}) diff --git a/module/rdd-utility.js b/module/rdd-utility.js index 9d752b95..dde10149 100644 --- a/module/rdd-utility.js +++ b/module/rdd-utility.js @@ -336,6 +336,29 @@ export class RdDUtility { return xp; } + /* -------------------------------------------- */ + /** Retourne une liste triée d'armes avec le split arme1 main / arme 2 main */ + static finalizeArmeList( armeList ) { + // Gestion des armes 1/2 mains + let arme2mains = []; // Tableau contenant la duplication des armes 1m/2m + for (const arme of armeList) { + // Dupliquer les armes pouvant être à 1 main et 2 mains en patchant la compétence + if (arme.data.unemain && arme.data.deuxmains) { + let arme2main = duplicate(arme); + arme2main.data.dommages = arme2main.data.dommages.split("/")[1]; // Existence temporaire uniquement dans la liste des armes, donc OK + arme2main.data.competence = arme2main.data.competence.replace(" 1 main", " 2 mains"); // Replace ! + for ( const melee of data.competenceByCategory.melee ) { + if (melee.name == arme2main.data.competence ) + arme2main.data.niveau = melee.data.niveau + } + arme2mains.push(arme2main); + } + } + armeList = armeList.concat(arme2mains); // Merge all cases + armeList = armeList.sort((a, b) => { if ( a.name > b.name) return 1; else return -1; } ); + return armeList + } + /* -------------------------------------------- */ static computeCarac( data) { @@ -387,12 +410,14 @@ export class RdDUtility { data.compteurs.chance.max = data.carac.chance.value; } + /* -------------------------------------------- */ static getSegmentsFatigue(maxEnd) { maxEnd = Math.max(maxEnd, 1); maxEnd = Math.min(maxEnd, fatigueMatrix.length); return fatigueMatrix[maxEnd]; } + /* -------------------------------------------- */ static calculMalusFatigue(fatigue, maxEnd) { maxEnd = Math.max(maxEnd, 1); @@ -621,7 +646,65 @@ export class RdDUtility { } } } - + + /* -------------------------------------------- */ + static buildItemsClassification( items ) { + let itemsByType = {}; + for (const item of items) { + let list = itemsByType[item.type]; + if (!list) { + list = []; + itemsByType[item.type] = list; + } + list.push(item); + } + return itemsByType; + } + + /* -------------------------------------------- */ + static rollInitiativeCompetence( combatantId, arme ) { + const combatant = game.combat.getCombatant(combatantId); + let competence = RdDUtility.findCompetence( combatant.actor.data.items, arme.data.competence); + let rollFormula = "1d6+" + competence.data.niveau + "+" + Math.ceil(combatant.actor.data.data.carac[competence.data.defaut_carac].value/2); + console.log("Roll !", combatantId, arme ); + } + + /* -------------------------------------------- */ + static displayInitiativeMenu( html, combatantId) { + // Recupération du combatant et de l'acteur associé + const combatant = game.combat.getCombatant(combatantId); + const actor = combatant.actor; + console.log("Combattant : ", combatant); + // Recupération des items 'arme' + let itemsByType = RdDUtility.buildItemsClassification( combatant.actor.data.items ); + let armesList = itemsByType['arme']; + if ( armesList ) { // Do something... + let menuItems = []; + for ( let arme of armesList ) { + menuItems.push( { + name: arme.data.competence, + icon: "", + callback: target => { RdDUtility.rollInitiativeCompetence( combatantId, arme ) } } ); + } + new ContextMenu(html, "", menuItems, undefined, defaultMenuItem ).render(); + } + } + + /* -------------------------------------------- */ + static pushInitiativeOptions( html, options ) { + options.push( + { + name: "Sélectionner l'initiative...", + condition: true, + icon: '', + callback: target => { + RdDUtility.displayInitiativeMenu( html, target.data('combatant-id') ); + //WFRP_Utility.displayStatus(target.attr("data-token-id")); + //$(`#sidebar-tabs`).find(`.item[data-tab="chat"]`).click(); + } + }); + } + /* -------------------------------------------- */ static async chatListeners( html ) { diff --git a/packs/rappel-des-regles.db b/packs/rappel-des-regles.db index e24d929e..29cc6559 100644 --- a/packs/rappel-des-regles.db +++ b/packs/rappel-des-regles.db @@ -1,10 +1,7 @@ {"_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.
"} -{"_id":"7uGrUHGdPu0EmIu2","name":"Documentation MJ/Joueurs","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"flags":{},"content":"Ce système pour Foundry est une 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.
\nMerci à Fred et Fab du Discord Foudry Francophone pour le gros travail de saisie des Compendiums !
\nPour me contacter : https://discord.gg/pPSDNJk , Pseudo LeRatierBretonnien
\nTout se fait manuellement à l'heure actuelle, il convient donc procéder comme suit :
\nChaque élément apparaît dans son onglet propre.
\nPour réaliser un jet, il suffit de cliquer sur le nom d'une caractéristique, sur une compétence ou sur un objet. Ce clic 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.
\nL'état général du personnage est automatiquement pris en compte.
\nLes principaux compteurs (vie, endurance, fatigue et rêve, sonné) sont visibles dans la partie haute. Un clic sur le rêve à cet endroit permet de faire un jet de points actuels de rêve (par exemple, un jet de résistance).
\nPlusieurs boutons sont disponibles:
\nPour 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.
\nSi 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, ...
\nUn 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.
\nPour monter dans les Terres Médianes, il suffit de cliquer sur le lien \"Monter dans les Terres Médianes!\".
\nLa description des sorts est disponible en cliquant sur le sort.
\nLa 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.
Ce système pour Foundry est une implémentation de Rêve de Dragon, un jeu de Denis Gerfaud, publié dans sa troisième édition par \"Le Scriptarium\". Rêve de Dragon est une marque déposée par \"Scriptarium\". Tous les droits leur en reviennent naturellement.
\nMerci à Scriptarium (Jidus et Roland Barthelémy) pour l'autorisation d'utilisation des silhouettes de créatures et les Terres Médianes du Rêve.
\nCrédits :
\nPour nous contacter : https://discord.gg/pPSDNJk , channel #reve-de-dragon
\nTout se fait manuellement à l'heure actuelle, il convient donc procéder comme suit :
\nChaque élément apparaît dans son onglet propre.
\nPour réaliser un jet, il suffit de cliquer sur le nom d'une caractéristique, sur une compétence ou sur un objet. Ce clic 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.
\nL'état général du personnage est automatiquement pris en compte.
\nLes principaux compteurs (vie, endurance, fatigue et rêve, sonné) sont visibles dans la partie haute. Un clic sur le rêve à cet endroit permet de faire un jet de points actuels de rêve (par exemple, un jet de résistance).
\nPlusieurs boutons sont disponibles:
\nPour 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.
\nSi 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, ...
\nUn 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.
\nPour monter dans les Terres Médianes, il suffit de cliquer sur le lien \"Monter dans les Terres Médianes!\".
\nLa description des sorts est disponible en cliquant sur le sort.
\nLa 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.
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":"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.
"} {"_id":"K42KNuBHizMppV5F","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.
\nOn 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":"ZmMoOtUdgjMd4cNs","name":"Conflit de sens","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"flags":{},"content":"Chaque fois que le spectateur d’une illusion visuelle est en proie à un conflit de sens, c’est-à-dire quand il y a contradiction ou impossibilité entre ce que lui indiquent ses autres sens et sa vue, l’illusion suscite une brume limbaire. C’est une sorte de flou ectoplasmique de couleur gris vert (comme les Limbes) qui restitue la logique à défaut de restituer la réalité. La brume limbaire a la taille et la forme approximative de la chose réelle.
\nSoit par exemple une porte rendue invisible. Puisqu’elle \"n’existe pas\", on devrait voir soit la continuation du mur, soit ce qu’il y a de l’autre côté. Or ni l’un ni l’autre ne sont du ressort de l’illusion qui, au pied de la lettre, n’est que porte invisible, et non pas invention d’autre chose. Si un spectateur prend conscience de cette anomalie, il voit un rectangle de flou gris-vert se dessiner à la place de la porte, c’est-à-dire ni le mur, ni ce qu’il y a de l’autre côté, ni non plus la porte elle-même. La porte reste donc bien invisible, puisqu’on ne la voit pas, mais pas sa présence. De la même façon, un humanoïde invisible le reste totalement tant qu’il ne commet aucune action ayant pour conséquence un conflit d’interprétation chez un spectateur, auquel cas ce dernier voit apparaître un \"fantôme\" gris-vert justifiant l’action qui vient de se produire. Noter ici aussi que si la présence de l’humanoïde cesse d’être \"invisible\", ce dernier le demeure au sens où son fantôme n’est qu’une silhouette totalement anonyme.
\nLa brume limbaire n’apparaît que pour le spectateur ayant un conflit de sens. Ceux qui ne sont pas victimes d’un tel conflit continuent à voir l’illusion telle qu’elle est. En combat, un attaquant invisible ne suscite une brume limbaire que pour la créature qu’il vient d’attaquer ainsi que pour un témoin ponctuel de l’attaque.
\nCe sont les invisibilités qui sont à même de susciter le plus de conflits de sens, mais c’est également possible pour les deux autres illusions visuelles.
\nDès que les sens cessent d’être en conflit, la brume limbaire s’estompe et l’on retourne à une illusion réelle et totale, invisibilité ou autre.
\nLa brume limbaire n’est suscitée qu’en cas de conflit de sens, pas d’intellect. Un raisonnement ne peut susciter une brume limbaire, uniquement un conflit avec l’un ou l’autre des quatre autres sens, ouïe, toucher, odorat, goût.
\nMoins une illusion sollicite de sens, moins elle a de chances de créer un conflit, et plus elle est donc fiable, voire indétectable. Une illusion qui ne s’adresse qu’à la vue (changement de couleur, changement des lettres d’un texte) marche toujours à 100 %.
\nLes autres illusions, auditives, gustatives et olfactives, ne génèrent jamais de brume limbaire quand bien même elles sont inexplicables.
\nUne cible donnée ne peut recevoir à la fois qu’une seule illusion visuelle, une seule illusion auditive, une seule illusion olfactive et une seule illusion gustative, soit un maximum de quatre illusions sensorielles différentes.
"} {"_id":"erO7AICiN1LtRyFg","name":"Magie impossible","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"flags":{},"content":"Tout cas de magie impossible résulte immédiatement en une déchirure du rêve ayant le haut-rêvant pour centre.
\nElle peut être violette (déchirure de départ) ou jaune (déchirure d’arrivée). C’est au gardien des rêves de le décider ou de le tirer au sort.
\nSes dimensions peuvent faire jusqu’à 100 m de diamètre, à décider ou tirer par le gardien des rêves.
\nElle peut ne durer que quelques instants avant de se dissoudre, ou durer indéfiniment, toujours à la décision du gardien des rêves.
\nDe même, c’est à lui de décider du rêve d’arrivée si c’est une déchirure de départ, ou des créatures qui peuvent en surgir si c’est une déchirure d’arrivée. En cas de déchirure de départ (violette), elle emporte immédiatement tout ce qui ne fait pas partie du paysage : objets et créatures.
\nSeules les constituantes du paysage, végétation, rochers, constructions, demeurent. Noter que si une construction demeure, tous les objets qu’elle contient, meubles et autres, disparaissent.
"} -{"_id":"7uGrUHGdPu0EmIu2","name":"Documentation MJ/Joueurs","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":"","flags":{},"content":"Ce système pour Foundry est une implémentation de Rêve de Dragon, un jeu de Denis Gerfaud, publié dans sa troisième édition par \"Le Scriptarium\". Rêve de Dragon est une marqué déposée par \"Scriptarium\". Tout les droits leur en reviennent naturellement.
\nMerci à Scriptarium (Jidus et Roland Barthelémy) pour l'autorisation d'utilisation des silhouettes de créatures et les Terres Médianes du Rêve.
\nCrédits :
\nPour nous contacter : https://discord.gg/pPSDNJk , channel #reve-de-dragon
\nTout se fait manuellement à l'heure actuelle, il convient donc procéder comme suit :
\nChaque élément apparaît dans son onglet propre.
\nPour réaliser un jet, il suffit de cliquer sur le nom d'une caractéristique, sur une compétence ou sur un objet. Ce clic 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.
\nL'état général du personnage est automatiquement pris en compte.
\nLes principaux compteurs (vie, endurance, fatigue et rêve, sonné) sont visibles dans la partie haute. Un clic sur le rêve à cet endroit permet de faire un jet de points actuels de rêve (par exemple, un jet de résistance).
\nPlusieurs boutons sont disponibles:
\nPour 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.
\nSi 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, ...
\nUn 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.
\nPour monter dans les Terres Médianes, il suffit de cliquer sur le lien \"Monter dans les Terres Médianes!\".
\nLa description des sorts est disponible en cliquant sur le sort.
\nLa 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.
Ce système pour Foundry est une implémentation de Rêve de Dragon, un jeu de Denis Gerfaud, publié dans sa troisième édition par \"Le Scriptarium\". Rêve de Dragon est une marqué déposée par \"Scriptarium\". Tout les droits leur en reviennent naturellement.
\nMerci à Scriptarium (Jidus et Roland Barthelémy) pour l'autorisation d'utilisation des silhouettes de créatures et les Terres Médianes du Rêve.
\nCrédits :
\nPour nous contacter : https://discord.gg/pPSDNJk , channel #reve-de-dragon
\nTout se fait manuellement à l'heure actuelle, il convient donc procéder comme suit :
\nChaque élément apparaît dans son onglet propre.
\nPour réaliser un jet, il suffit de cliquer sur le nom d'une caractéristique, sur une compétence ou sur un objet. Ce clic 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.
\nL'état général du personnage est automatiquement pris en compte.
\nLes principaux compteurs (vie, endurance, fatigue et rêve, sonné) sont visibles dans la partie haute. Un clic sur le rêve à cet endroit permet de faire un jet de points actuels de rêve (par exemple, un jet de résistance).
\nPlusieurs boutons sont disponibles:
\nPour 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.
\nSi 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, ...
\nUn 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.
\nPour monter dans les Terres Médianes, il suffit de cliquer sur le lien \"Monter dans les Terres Médianes!\".
\nLa description des sorts est disponible en cliquant sur le sort.
\nLa 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.
Ce système pour Foundry est une implémentation de Rêve de Dragon, un jeu de Denis Gerfaud, publié dans sa troisième édition par \"Le Scriptarium\". Rêve de Dragon est une marqué déposée par \"Scriptarium\". Tout les droits leur en reviennent naturellement.
\nMerci à Scriptarium (Jidus et Roland Barthelémy) pour l'autorisation d'utilisation des silhouettes de créatures et les Terres Médianes du Rêve.
\nCrédits :
\nPour nous contacter : https://discord.gg/pPSDNJk , channel #reve-de-dragon
\nTout se fait manuellement à l'heure actuelle, il convient donc procéder comme suit :
\nChaque élément apparaît dans son onglet propre.
\nPour réaliser un jet, il suffit de cliquer sur le nom d'une caractéristique, sur une compétence ou sur un objet. Ce clic 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.
\nL'état général du personnage est automatiquement pris en compte.
\nLes principaux compteurs (vie, endurance, fatigue et rêve, sonné) sont visibles dans la partie haute. Un clic sur le rêve à cet endroit permet de faire un jet de points actuels de rêve (par exemple, un jet de résistance).
\nPlusieurs boutons sont disponibles:
\nPour 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.
\nSi 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, ...
\nUn 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.
\nPour monter dans les Terres Médianes, il suffit de cliquer sur le lien \"Monter dans les Terres Médianes!\".
\nLa description des sorts est disponible en cliquant sur le sort.
\nLa 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.