forked from public/foundryvtt-reve-de-dragon
#20 Gestion des RollModes et gestion initiative plus fine
This commit is contained in:
@ -668,9 +668,32 @@ export class RdDUtility {
|
||||
/* -------------------------------------------- */
|
||||
static rollInitiativeCompetence( combatantId, arme ) {
|
||||
const combatant = game.combat.getCombatant(combatantId);
|
||||
const actor = combatant.actor;
|
||||
|
||||
let initOffset = 0;
|
||||
let caracForInit = 0;
|
||||
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 );
|
||||
|
||||
if ( actor.data.type == 'creature' || actor.data.type == 'entite') {
|
||||
caracForInit = competence.data.carac_value;
|
||||
} else {
|
||||
if (arme.name == "Draconic") {
|
||||
initOffset = 200;
|
||||
competence = { name: "Draconic", data : { niveau: 0 } }; // Fake
|
||||
} else {
|
||||
caracForInit = actor.data.data.carac[competence.data.defaut_carac].value;
|
||||
if (competence.data.categorie == "lancer" ) { // Offset de principe pour les armes de jet
|
||||
initOffset = 40;
|
||||
}
|
||||
if (competence.data.categorie == "tir" ) { // Offset de principe pour les armes de jet
|
||||
initOffset = 80;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Cas des créatures et entités vs personnages
|
||||
let rollFormula = "1d6+" + competence.data.niveau + "+" + Math.ceil(caracForInit/2) + "+" + initOffset;
|
||||
game.combat.rollInitiative(combatantId, rollFormula );
|
||||
console.log("Roll !", competence, arme, rollFormula );
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -678,11 +701,26 @@ export class RdDUtility {
|
||||
// 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...
|
||||
//console.log("Combattant : ", combatant);
|
||||
|
||||
let armesList = [];
|
||||
if ( actor.data.type == 'creature' || actor.data.type == 'entite') {
|
||||
for (const competenceItem of actor.data.items) {
|
||||
if ( competenceItem.data.iscombat) { // Siule un item de type arme
|
||||
armesList.push( { name: competenceItem.name, data: { niveau: competenceItem.data.niveau, competence: competenceItem.name } } );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Recupération des items 'arme'
|
||||
let itemsByType = RdDUtility.buildItemsClassification( combatant.actor.data.items );
|
||||
armesList = itemsByType['arme'];
|
||||
// Force corps à corps et Draconic
|
||||
let cc = RdDUtility.findCompetence( combatant.actor.data.items, "Corps à corps");
|
||||
armesList.push( { name: "Corps à corps", data: { niveau: cc.data.niveau, description: "", force: 6, competence: "Corps à corps", dommages: combatant.actor.data.data.attributs.plusdom.value } } );
|
||||
armesList.push( { name: "Draconic", data: { competence: "Draconic" } } );
|
||||
}
|
||||
// Build the relevant submenu
|
||||
if ( armesList ) {
|
||||
let menuItems = [];
|
||||
for ( let arme of armesList ) {
|
||||
menuItems.push( {
|
||||
@ -690,7 +728,7 @@ export class RdDUtility {
|
||||
icon: "<i class='fas fa-dice-d6'></i>",
|
||||
callback: target => { RdDUtility.rollInitiativeCompetence( combatantId, arme ) } } );
|
||||
}
|
||||
new ContextMenu(html, "", menuItems, undefined, defaultMenuItem ).render();
|
||||
new ContextMenu(html, ".directory-list", menuItems ).render();
|
||||
}
|
||||
}
|
||||
|
||||
@ -703,8 +741,6 @@ export class RdDUtility {
|
||||
icon: '<i class="far fa-question-circle"></i>',
|
||||
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();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user