Merge branch 'master-fix-combat' into 'master'
Fix: regression combat See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!262
This commit is contained in:
BIN
fonts/goudyacc.woff
Normal file
BIN
fonts/goudyacc.woff
Normal file
Binary file not shown.
BIN
icons/heures/de-heures.webp
Normal file
BIN
icons/heures/de-heures.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.3 KiB |
@ -197,7 +197,7 @@ export class RdDCombatManager extends Combat {
|
|||||||
let competences = items.filter(it => it.type == 'competence');
|
let competences = items.filter(it => it.type == 'competence');
|
||||||
actions = actions.concat(RdDCombatManager.finalizeArmeList(armes, competences, actorData.data.carac));
|
actions = actions.concat(RdDCombatManager.finalizeArmeList(armes, competences, actorData.data.carac));
|
||||||
|
|
||||||
if (actorData.data.attributs.hautrevant.value){
|
if (actorData.data.attributs.hautrevant.value) {
|
||||||
actions.push({ name: "Draconic", data: { initOnly: true, competence: "Draconic" } });
|
actions.push({ name: "Draconic", data: { initOnly: true, competence: "Draconic" } });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -364,6 +364,8 @@ export class RdDCombat {
|
|||||||
return RdDCombat.onMsgEncaisser(sockmsg.data);
|
return RdDCombat.onMsgEncaisser(sockmsg.data);
|
||||||
case "msg_defense":
|
case "msg_defense":
|
||||||
return RdDCombat.onMsgDefense(sockmsg.data);
|
return RdDCombat.onMsgDefense(sockmsg.data);
|
||||||
|
case "msg_combat_passearme":
|
||||||
|
return RdDCombat.onMsgPasseArme(sockmsg.data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -434,9 +436,31 @@ export class RdDCombat {
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static messagePasseArme(data) {
|
||||||
|
game.socket.emit("system.foundryvtt-reve-de-dragon", { msg: "msg_combat_passearme", data: data });
|
||||||
|
RdDCombat.onMsgPasseArme(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
static onMsgPasseArme(data) {
|
||||||
|
switch (data.actionPasseArme) {
|
||||||
|
case "store-attaque":
|
||||||
|
game.system.rdd.combatStore.attaques[data.id] = data.rollData;
|
||||||
|
break;
|
||||||
|
case "store-defense":
|
||||||
|
game.system.rdd.combatStore.defenses[data.id] = data.rollData;
|
||||||
|
break;
|
||||||
|
case "delete-attaque":
|
||||||
|
delete game.system.rdd.combatStore.attaques[data.id];
|
||||||
|
break;
|
||||||
|
case "delete-defense":
|
||||||
|
delete game.system.rdd.combatStore.defenses[data.id];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static _storeAttaque(attackerId, attackerRoll) {
|
static _storeAttaque(attackerId, attackerRoll) {
|
||||||
game.system.rdd.combatStore.attaques[attackerId] = duplicate(attackerRoll);
|
RdDCombat.messagePasseArme({ actionPasseArme: "store-attaque", id: attackerId, rollData: attackerRoll });
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -446,12 +470,12 @@ export class RdDCombat {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static _deleteAttaque(attackerId) {
|
static _deleteAttaque(attackerId) {
|
||||||
delete game.system.rdd.combatStore.attaques[attackerId];
|
RdDCombat.messagePasseArme({ actionPasseArme: "delete-attaque", id: attackerId });
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static _storeDefense(defenderRoll) {
|
static _storeDefense(passeArme, defenderRoll) {
|
||||||
game.system.rdd.combatStore.defenses[defenderRoll.passeArme] = duplicate(defenderRoll);
|
RdDCombat.messagePasseArme({ actionPasseArme: "store-defense", id: passeArme, rollData: defenderRoll });
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -461,7 +485,7 @@ export class RdDCombat {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static _deleteDefense(passeArme) {
|
static _deleteDefense(passeArme) {
|
||||||
delete game.system.rdd.combatStore.defenses[passeArme];
|
RdDCombat.messagePasseArme({ actionPasseArme: "delete-defense", id: passeArme });
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -497,23 +521,21 @@ export class RdDCombat {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static onMsgDefense(msg) {
|
static onMsgDefense(msg) {
|
||||||
let defenderToken = canvas.tokens.get(msg.defenderTokenId);
|
let defenderToken = canvas.tokens.get(msg.defenderTokenId);
|
||||||
if (defenderToken) {
|
|
||||||
if (!game.user.isGM && !game.user.character) { // vérification / sanity check
|
if (!game.user.isGM && !game.user.character) { // vérification / sanity check
|
||||||
ui.notifications.error("Le joueur " + game.user.name + " n'est connecté à aucun personnage. Impossible de continuer.");
|
ui.notifications.error("Le joueur " + game.user.name + " n'est connecté à aucun personnage. Impossible de continuer.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Misc.isElectedUser()) {
|
if (defenderToken && Misc.isElectedUser()) {
|
||||||
const rddCombat = RdDCombat.createForAttackerAndDefender(msg.attackerId, msg.defenderTokenId);
|
const rddCombat = RdDCombat.createForAttackerAndDefender(msg.attackerId, msg.defenderTokenId);
|
||||||
if (rddCombat) {
|
if (rddCombat) {
|
||||||
const defenderRoll = msg.defenderRoll;
|
const defenderRoll = msg.defenderRoll;
|
||||||
RdDCombat._storeAttaque(msg.attackerId, defenderRoll.attackerRoll);
|
RdDCombat._storeAttaque(msg.attackerId, defenderRoll.attackerRoll);
|
||||||
RdDCombat._storeDefense(defenderRoll);
|
RdDCombat._storeDefense(defenderRoll.passeArme, defenderRoll);
|
||||||
rddCombat.removeChatMessageActionsPasseArme(defenderRoll.passeArme);
|
rddCombat.removeChatMessageActionsPasseArme(defenderRoll.passeArme);
|
||||||
rddCombat._chatMessageDefense(msg.paramChatDefense);
|
rddCombat._chatMessageDefense(msg.paramChatDefense);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static _callJetDeVie(event) {
|
static _callJetDeVie(event) {
|
||||||
@ -773,7 +795,7 @@ export class RdDCombat {
|
|||||||
let defenderRoll = { attackerRoll: attackerRoll, passeArme: attackerRoll.passeArme, show: {} }
|
let defenderRoll = { attackerRoll: attackerRoll, passeArme: attackerRoll.passeArme, show: {} }
|
||||||
// Save rollData for defender
|
// Save rollData for defender
|
||||||
RdDCombat._storeAttaque(this.attackerId, attackerRoll);
|
RdDCombat._storeAttaque(this.attackerId, attackerRoll);
|
||||||
RdDCombat._storeDefense(defenderRoll)
|
RdDCombat._storeDefense(defenderRoll.passeArme, defenderRoll);
|
||||||
|
|
||||||
attackerRoll.show = {
|
attackerRoll.show = {
|
||||||
cible: this.target ? this.defender.data.name : 'la cible',
|
cible: this.target ? this.defender.data.name : 'la cible',
|
||||||
@ -1009,7 +1031,7 @@ export class RdDCombat {
|
|||||||
|
|
||||||
this.removeChatMessageActionsPasseArme(defenderRoll.passeArme);
|
this.removeChatMessageActionsPasseArme(defenderRoll.passeArme);
|
||||||
this._sendMessageDefense(defenderRoll.attackerRoll, defenderRoll, { defense: true });
|
this._sendMessageDefense(defenderRoll.attackerRoll, defenderRoll, { defense: true });
|
||||||
RdDCombat._storeDefense(defenderRoll);
|
RdDCombat._storeDefense(defenderRoll.passeArme, defenderRoll);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -1081,7 +1103,7 @@ export class RdDCombat {
|
|||||||
|
|
||||||
this.removeChatMessageActionsPasseArme(defenderRoll.passeArme);
|
this.removeChatMessageActionsPasseArme(defenderRoll.passeArme);
|
||||||
this._sendMessageDefense(defenderRoll.attackerRoll, defenderRoll, { defense: true })
|
this._sendMessageDefense(defenderRoll.attackerRoll, defenderRoll, { defense: true })
|
||||||
RdDCombat._storeDefense(defenderRoll);
|
RdDCombat._storeDefense(defenderRoll.passeArme, defenderRoll);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
81
packs/signes-draconiques.txt
Normal file
81
packs/signes-draconiques.txt
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
des centaines de graines emport<72>es par le vent
|
||||||
|
des chemin<69>es de f<>es
|
||||||
|
des cristaux de neige <20>tincelants au soleil
|
||||||
|
des feux follets dans la nuit
|
||||||
|
des fumeroles s'<27>chappant de fissures dans le sol
|
||||||
|
des gr<67>lons de la taille d'un oeuf de pigeon
|
||||||
|
des lichens <20> l'assaut d'une souche
|
||||||
|
des mirages sur l'horizon
|
||||||
|
des nuages accroch<63>es aux flancs d'une montagne
|
||||||
|
des nu<6E>es dans le ciel nocturne
|
||||||
|
des plumes duveteuses accroch<63>es dans les foug<75>res
|
||||||
|
des roches sculpt<70>es par l'<27>rosion
|
||||||
|
des signes comme grav<61>s <20> m<>me la pierre <20>voquant la langue des Dragons
|
||||||
|
des silhouettes impr<70>cises dans la brume
|
||||||
|
des sons de fl<66>tes provenant du sous bois
|
||||||
|
des traces de fossiles dans une roche
|
||||||
|
des uages noirs qui moutonnent juste avant la pluie
|
||||||
|
des veinures aux reflets m<>talliques dans la roche
|
||||||
|
des voiles d'aurores bor<6F>ales tombant dans le ciel nocturne
|
||||||
|
des <20>clairs z<>brant le ciel <20> l'horizon
|
||||||
|
l'entrelacs des branches d'un arbre mill<6C>naire
|
||||||
|
l'<27>coulement d'une chute l'eau
|
||||||
|
l'<27>cume sur les vagues sal<61>es
|
||||||
|
la brillance d'<27>toiles align<67>es
|
||||||
|
la coloration verte des flammes
|
||||||
|
la course hypnotique des balles d'un jongleur
|
||||||
|
la formation de givre sur une <20>tendue d'eau
|
||||||
|
la lueur du cr<63>puscule sur les cimes <20> l'horizon
|
||||||
|
la lune rouge sang
|
||||||
|
la ros<6F>e dans une toile d'araign<67>e
|
||||||
|
la teinte rouge de la lune <20> travers les nuages
|
||||||
|
le faisceau d'ondes caus<75> par un insecte aquatique
|
||||||
|
le mouvement de grains de sable pouss<73>s par le vent
|
||||||
|
le mouvement de vagues battant le rivage
|
||||||
|
le mouvement r<>gulier des pales d'un moulin <20> vent
|
||||||
|
le rythme de l'eau qui emporte les aubes d'un moulin
|
||||||
|
le soleil masqu<71> par un passage de nuages
|
||||||
|
le tableau abstrait de t<>ches sur le sol
|
||||||
|
les cicatrices et boutons du visage d'un malade
|
||||||
|
les colorations violac<61>es et oranges du ciel matinal
|
||||||
|
les figures de la rouille sur un vieux casque
|
||||||
|
les filaments d'une fleur carnivore enla<6C>ant un insecte
|
||||||
|
les rayons du soleil couchant
|
||||||
|
les reflets d'eau <20> travers les plantes aquatiques
|
||||||
|
les remous cascadant d<>un torrent tels un liquide en <20>bullition dans une marmite de gigant
|
||||||
|
les restes d'un mur antique
|
||||||
|
les vagues du vent dans les herbes hautes
|
||||||
|
un arbre mort fendu par la foudre
|
||||||
|
un arc-en-ciel double
|
||||||
|
un arc-en-ciel tr<74>s lumineux
|
||||||
|
un cadavre d'animal inconnu
|
||||||
|
un dragon de nuages prenant son envol
|
||||||
|
un empilement de pierres
|
||||||
|
un enfant sautant dans les flaques d'eau
|
||||||
|
un fant<6E>me de poussi<73>re <20>tincellant au soleil
|
||||||
|
un geyser projetant eau et vapeur <20> la face des Dragons
|
||||||
|
un manche d'outil poli par l'usure
|
||||||
|
un moustique gorg<72> de sang
|
||||||
|
un nid d'oiseau inconnu
|
||||||
|
un nuage d'insectes assombrissant le ciel
|
||||||
|
un panache de fum<75>e volcaniques s'<27>levant <20> l'horizon
|
||||||
|
un parterre de fleurs
|
||||||
|
un prairie brumeuse
|
||||||
|
un rideau de pluie <20>clair<69> d'un rai de lumi<6D>re diffus
|
||||||
|
un tourbillon dans l'eau
|
||||||
|
un tourbillon de poussi<73>re
|
||||||
|
un vol d'oiseaux migrateurs align<67>s tra<72>ant des lettres dans le ciel
|
||||||
|
une braise attis<69>e par le vent
|
||||||
|
une coloration bleut<75>e de la lune
|
||||||
|
une concr<63>tion rocheuse <20>voquant une cascade fig<69>e
|
||||||
|
une fine couche de terre craquel<65>e par le soleil
|
||||||
|
une forme animale <20>voqu<71>e par les courbes d'une <20>corce
|
||||||
|
une gerbe d'<27>tincelles <20>chappant du feu
|
||||||
|
une mante religieuse d<>vorrant son male
|
||||||
|
une mue de l<>zard
|
||||||
|
une nu<6E>e chaotique d'oiseaux tourbillonnant dans le vent
|
||||||
|
une ond<6E>e illumin<69>e tombant tel un voile
|
||||||
|
une phosphorescence dans l'eau
|
||||||
|
une tornade dans le lointain
|
||||||
|
une <20>toile filante
|
||||||
|
une <20>trange disposition d'ossements sur le sol
|
@ -2,7 +2,7 @@
|
|||||||
"name": "foundryvtt-reve-de-dragon",
|
"name": "foundryvtt-reve-de-dragon",
|
||||||
"title": "Rêve de Dragon",
|
"title": "Rêve de Dragon",
|
||||||
"description": "Rêve de Dragon RPG for FoundryVTT",
|
"description": "Rêve de Dragon RPG for FoundryVTT",
|
||||||
"version": "1.3.61",
|
"version": "1.3.62",
|
||||||
"manifestPlusVersion": "1.0.0",
|
"manifestPlusVersion": "1.0.0",
|
||||||
"minimumCoreVersion": "0.7.5",
|
"minimumCoreVersion": "0.7.5",
|
||||||
"compatibleCoreVersion": "0.7.9",
|
"compatibleCoreVersion": "0.7.9",
|
||||||
|
BIN
tokens.rar
Normal file
BIN
tokens.rar
Normal file
Binary file not shown.
Reference in New Issue
Block a user