Ajout des queues et souffles automatique

This commit is contained in:
Vincent Vandemeulebrouck 2020-12-17 02:20:03 +01:00
parent fa225f3df9
commit 22ddb94f97
4 changed files with 43 additions and 46 deletions

View File

@ -444,12 +444,10 @@ export class RdDActor extends Actor {
message += "<br>Vous gagnez une Tête de dragon: " + tete; message += "<br>Vous gagnez une Tête de dragon: " + tete;
} }
if (roll.isEchec) { if (roll.isEchec) {
message += "<br>Vous subissez une Queue de Dragon"; message += "<br>Vous subissez une Queue de Dragon: " + await this.ajouterQueue();
this.ajouterQueue();
} }
if (roll.isETotal) { if (roll.isETotal) {
message += "<br>A cause de votre échec total, vous subissez une deuxième Queue de Dragon !" message += "<br>A cause de votre échec total, vous subissez une deuxième Queue de Dragon: " + await this.ajouterQueue();
this.ajouterQueue();
} }
return message; return message;
} }
@ -694,7 +692,7 @@ export class RdDActor extends Actor {
let total = new Roll("1d20").roll().total; let total = new Roll("1d20").roll().total;
if ( total <= refoulement.value ) { if ( total <= refoulement.value ) {
refoulement.value = 0; refoulement.value = 0;
this.ajouterSouffle(); this.ajouterSouffle({chat: true});
ret = "souffle"; ret = "souffle";
} }
@ -703,17 +701,20 @@ export class RdDActor extends Actor {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
ajouterSouffle() { async ajouterSouffle(options = {chat : false}) {
let souffle = RdDRollTables.getSouffle(); let souffle = RdDRollTables.getSouffle();
// ChatMessage.create({ await this.createOwnedItem(souffle);
// title: "Souffle de Dragon", if (options.chat){
// content: this.name + " subit un Souffle de Dragon : " + souffle.name ChatMessage.create({
// }); whisper: ChatUtility.getWhisperRecipientsAndGMs( this.name ),
// this.actor.createOwnedItem(souffle); content: this.name + " subit un Souffle de Dragon : " + souffle.name
});
}
return souffle;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async ajouterQueue() { async ajouterQueue(options = {chat : false}) {
// TODO: Déterminer si Thanatos a été utilisé? => laisser le joueur ne pas choisir Thanatos => choisir sa voie? // TODO: Déterminer si Thanatos a été utilisé? => laisser le joueur ne pas choisir Thanatos => choisir sa voie?
let utiliseThanatos = false; let utiliseThanatos = false;
let queue; let queue;
@ -724,17 +725,14 @@ export class RdDActor extends Actor {
else { else {
queue = await RdDRollTables.getQueue(); queue = await RdDRollTables.getQueue();
} }
/* await this.createOwnedItem(queue);
// TODO: convertir la queue obtenue en nouvel item ... if (options.chat){
// ou bien l'ajouter à la liste spécifique => this.data.data.reve.queues ChatMessage.create({
this.createOwnedItem(queue); whisper: ChatUtility.getWhisperRecipientsAndGMs( this.name ),
content: this.name + " subit une Queue de Dragon : " + queue.name
ChatMessage.create({ });
content: this.name + " subit un Queue de Dragon : " + queue.name }
}); return queue;
return queue.name;
*/
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -1313,6 +1311,10 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
async rollCompetence( name ) { async rollCompetence( name ) {
if (name == 'queue') {
await this.ajouterQueue({chat: true});
return;
}
let rollData = { let rollData = {
competence: duplicate(this.getCompetence(name)), competence: duplicate(this.getCompetence(name)),
needSignificative : !this.isEntiteCauchemar() && this.data.data.sante.sonne.value needSignificative : !this.isEntiteCauchemar() && this.data.data.sante.sonne.value

View File

@ -6,38 +6,46 @@ export class RdDRollTables {
const index = await pack.getIndex(); const index = await pack.getIndex();
const entry = index.find(e => e.name === tableName); const entry = index.find(e => e.name === tableName);
const table = await pack.getEntity(entry._id); const table = await pack.getEntity(entry._id);
const result = await table.draw({ displayChat: toChat }); const draw = await table.draw({ displayChat: toChat });
console.log("RdDRollTables", tableName, toChat, ":", result); console.log("RdDRollTables", tableName, toChat, ":", draw);
return result; console.log("RdDRollTables", tableName, toChat, ":", draw.roll, draw.results);
return draw;
} }
/* -------------------------------------------- */
static async drawItemFromRollTable(tableName, toChat) {
const draw = await RdDRollTables.genericGetTableResult(tableName, toChat);
const drawnItemRef = draw.results.length > 0 ? draw.results[0] : undefined;
const pack = game.packs.get(drawnItemRef.collection);
return await pack.getEntity(drawnItemRef.resultId);
}
/* -------------------------------------------- */ /* -------------------------------------------- */
static async getSouffle(toChat = true) { static async getSouffle(toChat = true) {
return RdDRollTables.genericGetTableResult("Souffles de Dragon", toChat); return await RdDRollTables.drawItemFromRollTable("Souffles de Dragon", toChat);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static async getQueue(toChat = true) { static async getQueue(toChat = true) {
return RdDRollTables.genericGetTableResult("Queues de dragon", toChat); return await RdDRollTables.drawItemFromRollTable("Queues de dragon", toChat);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static async getTete(toChat = true) { static async getTete(toChat = true) {
return RdDRollTables.genericGetTableResult("Têtes de Dragon pour haut-rêvants", toChat); return await RdDRollTables.drawItemFromRollTable("Têtes de Dragon pour haut-rêvants", toChat);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static async getTeteHR(toChat = true) { static async getTeteHR(toChat = true) {
return RdDRollTables.genericGetTableResult("Têtes de Dragon pour tous personnages", toChat); return await RdDRollTables.drawItemFromRollTable("Têtes de Dragon pour tous personnages", toChat);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static async getOmbre(toChat = true) { static async getOmbre(toChat = true) {
return RdDRollTables.genericGetTableResult("Ombre de Thanatos", toChat); return await RdDRollTables.drawItemFromRollTable("Ombre de Thanatos", toChat);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static async getTarot(toChat = true) { static async getTarot(toChat = true) {
return RdDRollTables.genericGetTableResult("Tarot Draconique", toChat); return await RdDRollTables.drawItemFromRollTable("Tarot Draconique", toChat);
} }
} }

View File

@ -342,10 +342,9 @@ export class RdDTMRDialog extends Dialog {
+ RdDResolutionTable.explain(rolled); + RdDResolutionTable.explain(rolled);
if (rolled.isETotal) { if (rolled.isETotal) {
let souffle = await RdDRollTables.getSouffle(); let souffle = await this.actor.ajouterSouffle({chat: false});
explication += "<br>Vous avez fait un Echec Total. Vous subissez un Souffle de Dragon : " + souffle.name; explication += "<br>Vous avez fait un Echec Total. Vous subissez un Souffle de Dragon : " + souffle.name;
msg2MJ += "<br>Et a reçu un Souffle de Dragon : " + souffle.name; msg2MJ += "<br>Et a reçu un Souffle de Dragon : " + souffle.name;
this.actor.createOwnedItem(souffle);
} }
if (rolled.isPart) { if (rolled.isPart) {
explication += "<br>Vous avez fait une Réussite Particulière"; explication += "<br>Vous avez fait une Réussite Particulière";

View File

@ -525,18 +525,6 @@ export class TMRUtility {
} }
return { message: message, state: state }; return { message: message, state: state };
} }
/* -------------------------------------------- */
static async genericGetTableResult( tableName, toChat)
{
let pack = game.packs.get("foundryvtt-reve-de-dragon.tables-diverses");
await pack.getIndex();
let entry = pack.index.find(e => e.name === tableName);
let rollQueues = await pack.getEntity(entry._id);
let result = await rollQueues.draw( { displayChat: toChat } );
console.log("CAT", result);
return result;
}
/* -------------------------------------------- */ /* -------------------------------------------- */
static getTMRAleatoire() static getTMRAleatoire()