|
|
@ -339,28 +339,40 @@ export class RdDUtility {
|
|
|
|
// Attribution des objets aux conteneurs
|
|
|
|
// Attribution des objets aux conteneurs
|
|
|
|
for (let conteneur of conteneurs) {
|
|
|
|
for (let conteneur of conteneurs) {
|
|
|
|
conteneur.subItems = [];
|
|
|
|
conteneur.subItems = [];
|
|
|
|
conteneur.data.encTotal = conteneur.data.encombrement;
|
|
|
|
for (let id of conteneur.data.contenu ?? []) {
|
|
|
|
//conteneur.data.encTotal = ; Deja calculé
|
|
|
|
let objet = objets.find(objet => (id == objet._id));
|
|
|
|
if (conteneur.data.contenu) {
|
|
|
|
if (objet) {
|
|
|
|
for (let id of conteneur.data.contenu) {
|
|
|
|
objet.estContenu = true; // Permet de filtrer ce qui est porté dans le template
|
|
|
|
let objet = objets.find(objet => (id == objet._id));
|
|
|
|
objetVersConteneur[id] = conteneur._id;
|
|
|
|
if (objet) {
|
|
|
|
conteneur.subItems.push(objet);
|
|
|
|
if (!objet.data.encombrement)
|
|
|
|
|
|
|
|
objet.data.encombrement = 0; // Auto-fix
|
|
|
|
|
|
|
|
objet.estContenu = true; // Permet de filtrer ce qifui est porté dans le template
|
|
|
|
|
|
|
|
objetVersConteneur[id] = conteneur._id;
|
|
|
|
|
|
|
|
conteneur.data.encTotal += Number(objet.data.encombrement) * Number(((objet.data.quantite) ? objet.data.quantite : 1));
|
|
|
|
|
|
|
|
conteneur.subItems.push(objet);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
for (let conteneur of conteneurs) {
|
|
|
|
|
|
|
|
conteneur.data.encTotal = RdDUtility.calculEncContenu(conteneur, objets);
|
|
|
|
|
|
|
|
}
|
|
|
|
return objetVersConteneur;
|
|
|
|
return objetVersConteneur;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static calculEncContenu(conteneur, objets) {
|
|
|
|
|
|
|
|
const itemData = Misc.data(conteneur);
|
|
|
|
|
|
|
|
const contenuDatas = (itemData.data.contenu ?? []).filter(id => id != undefined)
|
|
|
|
|
|
|
|
.map(id => Misc.data(objets.find(it => (id == it._id))));
|
|
|
|
|
|
|
|
let enc = Number(itemData.data.encombrement ?? 0) * Number(itemData.data.quantite ?? 1);
|
|
|
|
|
|
|
|
for (let itemData of contenuDatas){
|
|
|
|
|
|
|
|
if (itemData.type == 'conteneur') {
|
|
|
|
|
|
|
|
enc += RdDUtility.calculEncContenu(itemData, objets);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else{
|
|
|
|
|
|
|
|
enc += Number(itemData.data.encombrement ?? 0) * Number(itemData.data.quantite ?? 1);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return enc;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Construit la liste des conteneurs de niveau 1 (c'est à dire non contenu eux-même dans un conteneur)
|
|
|
|
// Construit la liste des conteneurs de niveau 1 (c'est à dire non contenu eux-même dans un conteneur)
|
|
|
|
static conteneursRacine(conteneurs) {
|
|
|
|
static conteneursRacine(conteneurs) {
|
|
|
|
return conteneurs.filter( (conteneur, index, arr) => !conteneur.estContenu);
|
|
|
|
return conteneurs.filter((conteneur, index, arr) => !conteneur.estContenu);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/* -------------------------------------------- */
|
|
|
@ -429,7 +441,7 @@ export class RdDUtility {
|
|
|
|
return ReglesOptionelles.isUsing("appliquer-fatigue") ? {
|
|
|
|
return ReglesOptionelles.isUsing("appliquer-fatigue") ? {
|
|
|
|
malus: RdDUtility.calculMalusFatigue(fatigue, endurance),
|
|
|
|
malus: RdDUtility.calculMalusFatigue(fatigue, endurance),
|
|
|
|
html: "<table class='table-fatigue'>" + RdDUtility.makeHTMLfatigueMatrix(fatigue, endurance).html() + "</table>"
|
|
|
|
html: "<table class='table-fatigue'>" + RdDUtility.makeHTMLfatigueMatrix(fatigue, endurance).html() + "</table>"
|
|
|
|
} : { malus:0, html:''};
|
|
|
|
} : { malus: 0, html: '' };
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/* -------------------------------------------- */
|
|
|
@ -558,7 +570,7 @@ export class RdDUtility {
|
|
|
|
return RdDUtility.responseNombreAstral(sockmsg.data);
|
|
|
|
return RdDUtility.responseNombreAstral(sockmsg.data);
|
|
|
|
case "msg_tmr_move":
|
|
|
|
case "msg_tmr_move":
|
|
|
|
let actor = game.actors.get(sockmsg.data.actorId);
|
|
|
|
let actor = game.actors.get(sockmsg.data.actorId);
|
|
|
|
if (actor.isOwner || game.user.isGM ) {
|
|
|
|
if (actor.isOwner || game.user.isGM) {
|
|
|
|
actor.refreshTMRView(sockmsg.data.tmrPos);
|
|
|
|
actor.refreshTMRView(sockmsg.data.tmrPos);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
@ -637,14 +649,14 @@ export class RdDUtility {
|
|
|
|
if (token.actor && token.data.actorLink) {
|
|
|
|
if (token.actor && token.data.actorLink) {
|
|
|
|
return token.actor;
|
|
|
|
return token.actor;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (msgPlayer != undefined){
|
|
|
|
if (msgPlayer != undefined) {
|
|
|
|
msgPlayer += "<br>le token sélectionné doit être lié à un personnage";
|
|
|
|
msgPlayer += "<br>le token sélectionné doit être lié à un personnage";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (game.user.character) {
|
|
|
|
if (game.user.character) {
|
|
|
|
return game.user.character;
|
|
|
|
return game.user.character;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (msgPlayer != undefined){
|
|
|
|
if (msgPlayer != undefined) {
|
|
|
|
msgPlayer += "<br>vous pouvez sélectionner un seul token lié à un personnage";
|
|
|
|
msgPlayer += "<br>vous pouvez sélectionner un seul token lié à un personnage";
|
|
|
|
msgPlayer += "<br>vous devez être connecté comme joueur avec un personnage sélectionné";
|
|
|
|
msgPlayer += "<br>vous devez être connecté comme joueur avec un personnage sélectionné";
|
|
|
|
ui.notifications.warn(msgPlayer);
|
|
|
|
ui.notifications.warn(msgPlayer);
|
|
|
@ -805,9 +817,9 @@ export class RdDUtility {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------- */
|
|
|
|
/*-------------------------------------------- */
|
|
|
|
static distribuerStress( stressValue, raison = 'Inconnu', nomJoueur = undefined) {
|
|
|
|
static distribuerStress(stressValue, raison = 'Inconnu', nomJoueur = undefined) {
|
|
|
|
if (game.user.isGM) {
|
|
|
|
if (game.user.isGM) {
|
|
|
|
if( nomJoueur == undefined) {
|
|
|
|
if (nomJoueur == undefined) {
|
|
|
|
for (let actor of game.actors) {
|
|
|
|
for (let actor of game.actors) {
|
|
|
|
if (actor.hasPlayerOwner) {
|
|
|
|
if (actor.hasPlayerOwner) {
|
|
|
|
actor.addCompteurValue('stress', stressValue, raison);
|
|
|
|
actor.addCompteurValue('stress', stressValue, raison);
|
|
|
@ -816,7 +828,7 @@ export class RdDUtility {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
//console.log(stressValue, nomJoueur);
|
|
|
|
//console.log(stressValue, nomJoueur);
|
|
|
|
let joueur = game.users.find( user => user.name.toLowerCase() == nomJoueur.toLowerCase() );
|
|
|
|
let joueur = game.users.find(user => user.name.toLowerCase() == nomJoueur.toLowerCase());
|
|
|
|
//console.log("Player", joueur, joueur.character );
|
|
|
|
//console.log("Player", joueur, joueur.character );
|
|
|
|
joueur.character.addCompteurValue('stress', stressValue, raison);
|
|
|
|
joueur.character.addCompteurValue('stress', stressValue, raison);
|
|
|
|
ui.notifications.info(`${joueur.character.name} a reçu ${stressValue} points de Stress (raison : ${raison})`);
|
|
|
|
ui.notifications.info(`${joueur.character.name} a reçu ${stressValue} points de Stress (raison : ${raison})`);
|
|
|
|