Correction des armes de défense
This commit is contained in:
parent
bfe70c6634
commit
70198a5727
@ -12,6 +12,8 @@
|
|||||||
- la commande /astro fonctionne de nouveau
|
- la commande /astro fonctionne de nouveau
|
||||||
- le nombre d'utilisations d'items est réinitialisé à chaque round et fin de combat
|
- le nombre d'utilisations d'items est réinitialisé à chaque round et fin de combat
|
||||||
- la difficulté de parade pour les armes à distances n'est plus indiquée
|
- la difficulté de parade pour les armes à distances n'est plus indiquée
|
||||||
|
- les propositions d'armes de parade sont corrigées
|
||||||
|
- Ajout d'un indicateur pour les armes de parade nécessitant une significative
|
||||||
|
|
||||||
## 12.0.16 - Le secret d'Astrobazzarh
|
## 12.0.16 - Le secret d'Astrobazzarh
|
||||||
- Fix: les jets envoyés messages uniquement au MJ ne sont plus envoyés à tous les autres joueurs (et dupliqués)
|
- Fix: les jets envoyés messages uniquement au MJ ne sont plus envoyés à tous les autres joueurs (et dupliqués)
|
||||||
|
@ -81,37 +81,59 @@ export class RdDItemArme extends Item {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getCategorieParade(armeData) {
|
static getCategorieParade(armeData) {
|
||||||
if (armeData.system.categorie_parade) {
|
if (armeData.system.categorie_parade) {
|
||||||
return armeData.system.categorie_parade;
|
return armeData.system.categorie_parade
|
||||||
}
|
}
|
||||||
// pour compatibilité avec des personnages existants
|
// pour compatibilité avec des personnages existants
|
||||||
if (armeData.type == ITEM_TYPES.competencecreature || armeData.system.categorie == 'creature') {
|
if (armeData.type == ITEM_TYPES.competencecreature || armeData.system.categorie == 'creature') {
|
||||||
return armeData.system.categorie_parade || (armeData.system.isparade ? 'armes-naturelles' : '');
|
return armeData.system.categorie_parade || (armeData.system.isparade ? 'armes-naturelles' : '')
|
||||||
}
|
}
|
||||||
if (!armeData.type.match(/arme|competencecreature/)) {
|
if (!armeData.type.match(/arme|competencecreature/)) {
|
||||||
return '';
|
return ''
|
||||||
}
|
}
|
||||||
if (armeData.system.competence == undefined) {
|
if (armeData.system.competence == undefined) {
|
||||||
return ITEM_TYPES.competencecreature;
|
return ITEM_TYPES.competencecreature;
|
||||||
}
|
}
|
||||||
let compname = armeData.system.competence.toLowerCase();
|
let compname = armeData.system.competence.toLowerCase();
|
||||||
if (compname.match(/^(dague de jet|javelot|fouet|arc|arbalête|fronde|hache de jet|fléau)$/)) return '';
|
if (compname.match(/^(dague de jet|javelot|fouet|arc|arbalête|fronde|hache de jet|fléau)$/)) {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
|
||||||
if (compname.match('hache')) return 'haches';
|
if (compname.match('hache')) return 'haches'
|
||||||
if (compname.match('hast')) return 'hast';
|
if (compname.match('hast')) return 'hast'
|
||||||
if (compname.match('lance')) return 'lances';
|
if (compname.match('lance')) return 'lances'
|
||||||
if (compname.match('bouclier')) return 'boucliers';
|
if (compname.match('bouclier')) return 'boucliers'
|
||||||
if (compname.match('masse')) return 'masses';
|
if (compname.match('masse')) return 'masses'
|
||||||
if (compname.match('epée') || compname.match('épée')) {
|
if (compname.match('epée') || compname.match('épée')) {
|
||||||
if (armeData.name.toLowerCase().match(/(gnome)/))
|
if (armeData.name.toLowerCase().match(/(gnome)/))
|
||||||
return 'epees-courtes';
|
return 'epees-courtes'
|
||||||
if (armeData.name.toLowerCase().match(/((e|é)pée dragone|esparlongue|demi-dragonne)/))
|
if (armeData.name.toLowerCase().match(/((e|é)pée dragone|esparlongue|demi-dragonne)/))
|
||||||
return 'epees-longues';
|
return 'epees-longues'
|
||||||
return 'epees-lourdes';
|
return 'epees-lourdes'
|
||||||
}
|
}
|
||||||
if (compname.match('dague')) {
|
if (compname.match('dague')) {
|
||||||
return 'dagues';
|
return 'dagues'
|
||||||
|
}
|
||||||
|
return 'sans-armes'
|
||||||
|
}
|
||||||
|
|
||||||
|
static defenseArmeParade(armeAttaque, armeParade) {
|
||||||
|
const defCategory = RdDItemArme.getCategorieParade(armeParade)
|
||||||
|
if (defCategory == 'bouclier') {
|
||||||
|
return 'norm'
|
||||||
|
}
|
||||||
|
if (armeAttaque.system.competence.toLowerCase().match(/(fléau)/)) {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
if (armeParade.system.tir) {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
const attCategory = RdDItemArme.getCategorieParade(armeAttaque)
|
||||||
|
switch (attCategory) {
|
||||||
|
case 'armes-naturelles': case 'sans-armes':
|
||||||
|
return defCategory == 'sans-armes' ? 'norm' : ''
|
||||||
|
default:
|
||||||
|
return RdDItemArme.needParadeSignificative(armeAttaque, armeParade) ? 'sign' : 'norm'
|
||||||
}
|
}
|
||||||
return 'sans-armes';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -120,8 +142,8 @@ export class RdDItemArme extends Item {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// categories d'armes à la parade (cf. page 115 )
|
// categories d'armes à la parade (cf. page 115 )
|
||||||
let attCategory = RdDItemArme.getCategorieParade(armeAttaque);
|
const attCategory = RdDItemArme.getCategorieParade(armeAttaque)
|
||||||
let defCategory = RdDItemArme.getCategorieParade(armeParade);
|
const defCategory = RdDItemArme.getCategorieParade(armeParade)
|
||||||
// bouclier et mêmes catégorie: peuvent se parer sans difficulté
|
// bouclier et mêmes catégorie: peuvent se parer sans difficulté
|
||||||
if (defCategory == 'boucliers') {
|
if (defCategory == 'boucliers') {
|
||||||
return false;
|
return false;
|
||||||
|
@ -932,7 +932,7 @@ export class RdDCombat {
|
|||||||
// # utilisation esquive
|
// # utilisation esquive
|
||||||
const corpsACorps = this.defender.getCompetenceCorpsACorps({ onMessage: it => console.info(it, this.defender) });
|
const corpsACorps = this.defender.getCompetenceCorpsACorps({ onMessage: it => console.info(it, this.defender) });
|
||||||
const esquives = foundry.utils.duplicate(this.defender.getCompetencesEsquive())
|
const esquives = foundry.utils.duplicate(this.defender.getCompetencesEsquive())
|
||||||
esquives.forEach(e => e.system.nbUsage = e?._id ? this.defender.getItemUse(e._id) : 0);
|
esquives.forEach(e => e.nbUsage = e?._id ? this.defender.getItemUse(e._id) : 0);
|
||||||
|
|
||||||
const paramChatDefense = {
|
const paramChatDefense = {
|
||||||
passeArme: attackerRoll.passeArme,
|
passeArme: attackerRoll.passeArme,
|
||||||
@ -993,19 +993,20 @@ export class RdDCombat {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_filterArmesParade(defender, competence, arme) {
|
_filterArmesParade(defender, competence, arme) {
|
||||||
let items = defender.items.filter(it => RdDItemArme.isArmeUtilisable(it) || RdDItemCompetenceCreature.isCompetenceParade(it))
|
let defenses = defender.items.filter(it => RdDItemArme.isArmeUtilisable(it) || RdDItemCompetenceCreature.isCompetenceParade(it))
|
||||||
items.forEach(item => item.system.nbUsage = defender.getItemUse(item.id)); // Ajout du # d'utilisation ce round
|
defenses = foundry.utils.duplicate(defenses)
|
||||||
|
defenses.forEach(armeDefense => {
|
||||||
|
// Ajout du # d'utilisation ce round
|
||||||
|
armeDefense.nbUsage = defender.getItemUse(armeDefense.id)
|
||||||
|
armeDefense.typeParade = RdDItemArme.defenseArmeParade(arme, armeDefense)
|
||||||
|
})
|
||||||
|
|
||||||
switch (competence.system.categorie) {
|
switch (competence.system.categorie) {
|
||||||
case 'tir':
|
case 'tir':
|
||||||
case 'lancer':
|
case 'lancer':
|
||||||
return items.filter(item => RdDItemArme.getCategorieParade(item) == 'boucliers')
|
return defenses.filter(armeDefense => RdDItemArme.getCategorieParade(armeDefense) == 'boucliers')
|
||||||
default:
|
default:
|
||||||
// Le fléau ne peut être paré qu’au bouclier p115
|
return defenses.filter(armeDefense => armeDefense.typeParade != '')
|
||||||
if (competence.name == "Fléau") {
|
|
||||||
return items.filter(item => RdDItemArme.getCategorieParade(item) == 'boucliers')
|
|
||||||
}
|
|
||||||
return items.filter(item => RdDItemArme.getCategorieParade(item));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,6 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{log 'defense' attaqueArme attaqueCategorie this}}
|
|
||||||
{{#each armes as |arme key|}}
|
{{#each armes as |arme key|}}
|
||||||
<a class='chat-card-button' id='parer-button'
|
<a class='chat-card-button' id='parer-button'
|
||||||
data-attackerId='{{../attackerId}}' data-defenderTokenId='{{../defenderToken.id}}' data-attackerTokenId='{{../attackerToken.id}}'
|
data-attackerId='{{../attackerId}}' data-defenderTokenId='{{../defenderToken.id}}' data-attackerTokenId='{{../attackerToken.id}}'
|
||||||
@ -45,7 +44,10 @@
|
|||||||
(difficulté à déterminer)
|
(difficulté à déterminer)
|
||||||
{{else}}à {{../diffLibre }}
|
{{else}}à {{../diffLibre }}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if arme.system.nbUsage}}(Utilisations : {{arme.system.nbUsage}}){{/if}}
|
{{#if (eq arme.typeParade 'sign')}}
|
||||||
|
<span class="rdd-diviseur">×½</span>
|
||||||
|
{{/if}}
|
||||||
|
{{#if arme.nbUsage}}(Utilisations : {{arme.nbUsage}}){{/if}}
|
||||||
</a>
|
</a>
|
||||||
<br>
|
<br>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
@ -53,7 +55,7 @@
|
|||||||
<a class='chat-card-button' id='parer-button'
|
<a class='chat-card-button' id='parer-button'
|
||||||
data-attackerId='{{attackerId}}' data-defenderTokenId='{{defenderToken.id}}' data-attackerTokenId='{{attackerToken.id}}'
|
data-attackerId='{{attackerId}}' data-defenderTokenId='{{defenderToken.id}}' data-attackerTokenId='{{attackerToken.id}}'
|
||||||
data-armeid='{{arme._id}}' data-competence='{{arme.system.competence}}'>
|
data-armeid='{{arme._id}}' data-competence='{{arme.system.competence}}'>
|
||||||
Parer à mains nues à {{diffLibre}}{{#if arme.system.nbUsage}} (Utilisations : {{arme.system.nbUsage}}){{/if}}
|
Parer à mains nues à {{diffLibre}}{{#if arme.nbUsage}} (Utilisations : {{arme.nbUsage}}){{/if}}
|
||||||
</a>
|
</a>
|
||||||
<br>
|
<br>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
@ -67,7 +69,7 @@
|
|||||||
(difficulté à déterminer)
|
(difficulté à déterminer)
|
||||||
{{else}}à {{../diffLibre }}
|
{{else}}à {{../diffLibre }}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if esquive.system.nbUsage}}(Utilisations : {{esquive.system.nbUsage}}){{/if}}
|
{{#if esquive.nbUsage}}(Utilisations : {{esquive.nbUsage}}){{/if}}
|
||||||
</a>
|
</a>
|
||||||
<br>
|
<br>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
Loading…
Reference in New Issue
Block a user