forked from public/foundryvtt-reve-de-dragon
		
	Les messages dans les TMRs sont envoyés au GM Simplification des messages de tchat liés à un actor: on peut utiliser les Owners (car les GMs sont owner). Au lieu de passer le name de l'Actor (qui peut être incorrect si deux actors ont le même, mais pas les mêmes propriétaires), on passe directement l'actor pour déterminer mles destinataires de messages
		
			
				
	
	
		
			60 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { ChatUtility } from "../chat-utility.js";
 | |
| import { Grammar } from "../grammar.js";
 | |
| import { TMRUtility } from "../tmr-utility.js";
 | |
| import { tmrTokenZIndex } from "../tmr-constants.js";
 | |
| import { Draconique } from "./draconique.js";
 | |
| 
 | |
| export class PresentCites extends Draconique {
 | |
| 
 | |
|   type() { return 'tete' }
 | |
|   match(item) { return Draconique.isTeteDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('present des cites'); }
 | |
|   manualMessage() { return false }
 | |
|   async onActorCreateOwned(actor, tete) { await this._ajouterPresents(actor, tete); }
 | |
| 
 | |
|   code() { return 'present-cites' }
 | |
|   tooltip(linkData) { return `La cité a un présent` }
 | |
|   img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/present.svg' }
 | |
| 
 | |
|   createSprite(pixiTMR) {
 | |
|     return pixiTMR.sprite(this.code(),
 | |
|       {
 | |
|         zIndex: tmrTokenZIndex.tetes,
 | |
|         decallage: pixiTMR.sizes.decallage(-1, -1),
 | |
|         taille: () => pixiTMR.sizes.third
 | |
|       });
 | |
|   }
 | |
| 
 | |
|   async _ajouterPresents(actor, tete) {
 | |
|     let existants = actor.items.filter(it => this.isCase(it)).map(it => it.system.coord);
 | |
|     if (existants.length > 0) {
 | |
|       ChatMessage.create({
 | |
|         whisper: ChatUtility.getOwners(actor),
 | |
|         content: "Vous avez encore des présents dans des cités, vous devrez tirer une autre tête pour remplacer celle ci!"
 | |
|       })
 | |
|     }
 | |
|     else {
 | |
|       let cites = TMRUtility.filterTMR(it => it.type == 'cite');
 | |
|       for (let tmr of cites) {
 | |
|         await this.createCaseTmr(actor, 'Présent', tmr, tete.id);
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   async choisirUnPresent(casetmr, onChoixPresent) {
 | |
|     const presents = await game.system.rdd.rencontresTMR.getPresentsCite()
 | |
|     const buttons = {};
 | |
|     presents.forEach(r =>  buttons['present'+r.id] = { icon: '<i class="fas fa-check"></i>', label: r.name, callback: async () => onChoixPresent(r) });
 | |
|     let dialog = new Dialog({
 | |
|       title: "Présent des cités",
 | |
|       content: `La ${this.tmrLabel(casetmr)} vous offre un présent, faites votre choix`,
 | |
|       buttons: buttons
 | |
|     });
 | |
|     await dialog.render(true);
 | |
|     return dialog
 | |
|   }
 | |
| 
 | |
|   async ouvrirLePresent(actor, casetmr) {
 | |
|     await actor.deleteEmbeddedDocuments('Item', [casetmr.id]);
 | |
|   }
 | |
| }
 |