47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import { YggdrasillUtility } from "./yggdrasill-utility.js";
 | 
						|
 | 
						|
/* -------------------------------------------- */
 | 
						|
export class YggdrasillCombat extends Combat {
 | 
						|
  
 | 
						|
  /* -------------------------------------------- */
 | 
						|
  async rollInitiative(ids, formula = undefined, messageOptions = {} ) {
 | 
						|
    ids = typeof ids === "string" ? [ids] : ids;
 | 
						|
    const currentId = this.combatant._id;
 | 
						|
    for (let cId = 0; cId < ids.length; cId++) {
 | 
						|
      const c = this.combatants.get(ids[cId]);
 | 
						|
      let initBonus = c.actor ? c.actor.getInitiativeScore() : 0;
 | 
						|
      //console.log("Init for ", initBonus);
 | 
						|
      const roll = c.getInitiativeRoll("1d10+"+initBonus);
 | 
						|
      if ( !roll.total) {
 | 
						|
        roll.evaluate( {async: false});
 | 
						|
      }
 | 
						|
      if (roll.total <= 0) roll.total = 0;
 | 
						|
      //console.log("Compute init for", roll.total);
 | 
						|
      let id = c._id || c.id;
 | 
						|
      await this.updateEmbeddedDocuments("Combatant", [{ _id: id, initiative: roll.total }]);
 | 
						|
 | 
						|
      // Send a chat message
 | 
						|
      let rollMode = messageOptions.rollMode || game.settings.get("core", "rollMode");
 | 
						|
      let messageData = mergeObject(
 | 
						|
        {
 | 
						|
          speaker: {
 | 
						|
            scene: canvas.scene._id,
 | 
						|
            actor: c.actor ? c.actor._id : null,
 | 
						|
            token: c.token._id,
 | 
						|
            alias: c.token.name,
 | 
						|
            sound: CONFIG.sounds.dice,
 | 
						|
          },
 | 
						|
          flavor: `${c.token.name} a fait son jet d'Initiative (1d10+${initBonus})
 | 
						|
          <br>
 | 
						|
          `,
 | 
						|
        },
 | 
						|
        messageOptions
 | 
						|
      );
 | 
						|
      roll.toMessage(messageData, { rollMode, create: true });
 | 
						|
    }
 | 
						|
 | 
						|
    return this;
 | 
						|
  }
 | 
						|
 | 
						|
}
 |