#95 : Utilisation uniquement des armes equipees pour attaque/initiative/combat

This commit is contained in:
sladecraven 2021-01-03 09:58:07 +01:00
parent 55d49e8230
commit f8e35c961a
4 changed files with 65 additions and 25 deletions

View File

@ -287,16 +287,17 @@ export class RdDCombat {
/* -------------------------------------------- */ /* -------------------------------------------- */
_filterArmesParade(items, competence) { _filterArmesParade(items, competence) {
let itemsEquipped = items.filter(item => item.equipe == true );
switch (competence.data.categorie) { switch (competence.data.categorie) {
case 'tir': case 'tir':
case 'lancer': case 'lancer':
return items.filter(item => RdDItemArme.getCategorieParade(item) == 'boucliers') return items.filter(item => RdDItemArme.getCategorieParade(itemsEquipped) == 'boucliers')
default: default:
// Le fléau ne peut être paré quau bouclier p115 // Le fléau ne peut être paré quau bouclier p115
if (competence.name == "Fléau"){ if (competence.name == "Fléau"){
return items.filter(item => RdDItemArme.getCategorieParade(item) == 'boucliers') return items.filter(item => RdDItemArme.getCategorieParade(itemsEquipped) == 'boucliers')
} }
return items.filter(item => RdDItemArme.getCategorieParade(item)); return items.filter(item => RdDItemArme.getCategorieParade(itemsEquipped));
} }
} }

View File

@ -259,6 +259,7 @@ export class RdDUtility {
data.data.tetes = this.checkNull(data.itemsByType['tete']); data.data.tetes = this.checkNull(data.itemsByType['tete']);
data.data.taches = this.checkNull(data.itemsByType['tache']); data.data.taches = this.checkNull(data.itemsByType['tache']);
data.data.monnaie = this.checkNull(data.itemsByType['monnaie']); data.data.monnaie = this.checkNull(data.itemsByType['monnaie']);
data.data.meditations = this.checkNull(data.itemsByType['meditation']);
data.data.objets = data.data.conteneurs.concat(data.data.materiel).concat(data.data.armes).concat(data.data.armures).concat(data.data.munitions).concat(data.data.livres).concat(data.data.potions).concat(data.data.herbes).concat(data.data.ingredients); data.data.objets = data.data.conteneurs.concat(data.data.materiel).concat(data.data.armes).concat(data.data.armures).concat(data.data.munitions).concat(data.data.livres).concat(data.data.potions).concat(data.data.herbes).concat(data.data.ingredients);
} }
@ -449,31 +450,33 @@ export class RdDUtility {
static finalizeArmeList( armeList, competenceList, carac ) { static finalizeArmeList( armeList, competenceList, carac ) {
// Gestion des armes 1/2 mains // Gestion des armes 1/2 mains
let arme2mains = []; // Tableau contenant la duplication des armes 1m/2m let arme2mains = []; // Tableau contenant la duplication des armes 1m/2m
let armesEquipe = [];
for (const arme of armeList) { for (const arme of armeList) {
let comp = competenceList.find(c => c.name == arme.data.competence); if (arme.data.equipe) {
arme.data.initiative = RdDUtility.calculInitiative(arme.data.niveau, carac[comp.data.defaut_carac].value); armesEquipe.push( arme );
// Dupliquer les armes pouvant être à 1 main et 2 mains en patchant la compétence let comp = competenceList.find(c => c.name == arme.data.competence);
if (arme.data.unemain && !arme.data.deuxmains ) { arme.data.initiative = RdDUtility.calculInitiative(arme.data.niveau, carac[comp.data.defaut_carac].value);
arme.data.mainInfo = "(1m)"; // Dupliquer les armes pouvant être à 1 main et 2 mains en patchant la compétence
} else if ( !arme.data.unemain && arme.data.deuxmains ) { if (arme.data.unemain && !arme.data.deuxmains ) {
arme.data.mainInfo = "(2m)"; arme.data.mainInfo = "(1m)";
} else if (arme.data.unemain && arme.data.deuxmains) { } else if ( !arme.data.unemain && arme.data.deuxmains ) {
arme.data.mainInfo = "(1m)"; arme.data.mainInfo = "(2m)";
let arme2main = duplicate(arme); } else if (arme.data.unemain && arme.data.deuxmains) {
arme2main.data.mainInfo = "(2m)"; arme.data.mainInfo = "(1m)";
arme2main.data.dommages = arme2main.data.dommages.split("/")[1]; // Existence temporaire uniquement dans la liste des armes, donc OK let arme2main = duplicate(arme);
arme2main.data.competence = arme2main.data.competence.replace(" 1 main", " 2 mains"); // Replace ! arme2main.data.mainInfo = "(2m)";
let comp = competenceList.find(c => c.name == arme2main.data.competence); arme2main.data.dommages = arme2main.data.dommages.split("/")[1]; // Existence temporaire uniquement dans la liste des armes, donc OK
arme2main.data.niveau = comp.data.niveau; arme2main.data.competence = arme2main.data.competence.replace(" 1 main", " 2 mains"); // Replace !
arme2main.data.initiative = RdDUtility.calculInitiative(arme2main.data.niveau, carac[comp.data.defaut_carac].value); let comp = competenceList.find(c => c.name == arme2main.data.competence);
arme2mains.push(arme2main); arme2main.data.niveau = comp.data.niveau;
} else { arme2main.data.initiative = RdDUtility.calculInitiative(arme2main.data.niveau, carac[comp.data.defaut_carac].value);
armesEquipe.push(arme2main);
}
} }
} }
armeList = armeList.concat(arme2mains); // Merge all cases //armeList = armeList.concat(arme2mains); // Merge all cases
armeList = armeList.sort((a, b) => { if ( a.name > b.name) return 1; else return -1; } ); armesEquipe = armesEquipe.sort((a, b) => { if ( a.name > b.name) return 1; else return -1; } );
return armeList return armesEquipe
} }
/* -------------------------------------------- */ /* -------------------------------------------- */

View File

@ -597,6 +597,20 @@
{{/each}} {{/each}}
</ul> </ul>
</div> </div>
<div>
<span><strong>Méditations :</strong></span>
<ul class="item-list">
{{#each data.meditations as |meditation key|}}
<li class="item flexrow" data-item-id="{{meditation._id}}" data-attribute="{{key}}">
<span class="meditation-label"><a data-id="{{meditation._id}}">{{meditation.name}} - {{meditation.data.competence}}</a></span>
<div class="item-controls">
<a class="item-control item-edit" title="Editer"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
<div> <div>
<span><strong>Cases Spéciales:</strong></span> <span><strong>Cases Spéciales:</strong></span>
<ul class="item-list"> <ul class="item-list">

View File

@ -67,6 +67,28 @@
{{/select}} {{/select}}
</select> </select>
</div> </div>
<div class="form-group">
<label for="xp">Malus</label>
{{#if isGM}}
<select name="data.malus" id="malus" data-dtype="Number">
{{#select item.data.malus}}
<option value="0">0</option>
<option value="-1">-1</option>
<option value="-2">-2</option>
<option value="-3">-3</option>
<option value="-4">-4</option>
<option value="-5">-5</option>
<option value="-6">-6</option>
<option value="-7">-7</option>
<option value="-8">-8</option>
<option value="-9">-9</option>
<option value="-10">-10</option>
{{/select}}
</select>
{{else}}
<label>>{{data.malus}}</label>
{{/if}}
</div>
<span><label>Description : </label></span> <span><label>Description : </label></span>
<div class="form-group editor" style="min-height: 400px"> <div class="form-group editor" style="min-height: 400px">
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}} {{editor content=data.description target="data.description" button=true owner=owner editable=editable}}