Merge branch 'v1.4' into 'dev_0.8'

# Conflicts:
#   module/actor-sheet.js
#   system.json
#   templates/actor-sheet.html
This commit is contained in:
2021-03-02 22:44:57 +00:00
36 changed files with 933 additions and 590 deletions

View File

@@ -114,6 +114,16 @@ export class RdDActor extends Actor {
if (actorData.type === 'vehicule') this._prepareVehiculeData(actorData);
}
/* -------------------------------------------- */
setRollWindowsOpened( flag ) {
this.rollWindowsOpened = flag;
}
/* -------------------------------------------- */
isRollWindowsOpened( ) {
return this.rollWindowsOpened;
}
/* -------------------------------------------- */
_prepareCreatureData(actorData) {
this.computeEncombrementTotalEtMalusArmure();
@@ -305,18 +315,19 @@ export class RdDActor extends Actor {
}
return duplicate(list[0]);
}
getDemiReve() {
return this.data.data.reve.tmrpos.coord;
}
/* -------------------------------------------- */
async deleteSortReserve(sortReserve) {
let reserve = duplicate(this.data.data.reve.reserve);
let len = reserve.list.length;
let i = 0;
let newTable = [];
for (i = 0; i < len; i++) {
if (reserve.list[i].coord != sortReserve.coord && reserve.list[i].sort.name != sortReserve.sort.name)
newTable.push(reserve.list[i]);
}
if (newTable.length != len) {
reserve.list = newTable;
let tmr = TMRUtility.getTMR(sortReserve.coord);
let index = reserve.list.findIndex(tmr.type == 'fleuve'
? sort => (TMRUtility.getTMR(sort.coord).type == 'fleuve' && sort.sort.name == sortReserve.sort.name)
: sort => (sort.coord == sortReserve.coord && sort.sort.name == sortReserve.sort.name)
);
if (index >=0 ) {
reserve.list.splice(index,1);
await this.update({ "data.reve.reserve": reserve });
}
}
@@ -486,7 +497,7 @@ export class RdDActor extends Actor {
async dormir(heures = 1) {
let message = {
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
content: this.name + ": Vous dormez " + heures + (heures > 1 ? " heures. " : "heure. ")
content: `${this.name}: Vous dormez ${heures == 1 ? 'une': heures} heure${heures == 1 ? '': 's'}.`
};
await this.recupereEndurance(message);
for (let i = 0; i < heures; i++) {
@@ -1151,26 +1162,6 @@ export class RdDActor extends Actor {
return tmrInnaccessibles.map(it => it.data.coord);
}
/* -------------------------------------------- */
displayTMRQueueSouffleInformation() {
let messages = [];
for (let item of this.data.items) {
if (EffetsDraconiques.isUrgenceDraconique(item)) {
messages.push("Vous souffrez d'une <strong>Urgence Draconique</strong> : " + item.data.description);
}
if (EffetsDraconiques.isPeriple(item)) {
messages.push("Vous souffrez du Souffle <strong>Périple</strong>. Vous devez gérer manuellement le détail du Périple.<br>" + item.data.description);
}
}
if (messages.length > 0) {
ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
content: "RAPPEL !<br>" + messages.join('<hr>')
});
}
}
/* -------------------------------------------- */
getTMRRencontres() {
return this.data.data.reve.rencontre;
@@ -1184,7 +1175,7 @@ export class RdDActor extends Actor {
//console.log("List", rencontres, len);
let newTable = [];
for (i = 0; i < len; i++) {
if (rencontres.list[i].coord != this.data.data.reve.tmrpos.coord)
if (rencontres.list[i].coord != this.getDemiReve())
newTable.push(rencontres.list[i]);
}
if (newTable.length != len) {
@@ -1201,7 +1192,7 @@ export class RdDActor extends Actor {
let i = 0;
let already = false;
for (i = 0; i < len; i++) {
if (rencontres.list[i].coord == this.data.data.reve.tmrpos.coord)
if (rencontres.list[i].coord == this.getDemiReve())
already = true;
}
if (!already) {
@@ -1223,9 +1214,7 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */
async updateCoordTMR(coord) {
let tmrPos = duplicate(this.data.data.reve.tmrpos);
tmrPos.coord = coord;
await this.update({ "data.reve.tmrpos": tmrPos });
await this.update({ "data.reve.tmrpos.coord": coord });
}
/* -------------------------------------------- */
@@ -2784,6 +2773,14 @@ export class RdDActor extends Actor {
await this.setFlag('foundryvtt-reve-de-dragon', 'itemUse', {} );
}
/* -------------------------------------------- */
async decItemUse( itemId ) {
let itemUse = duplicate(this.getFlag('foundryvtt-reve-de-dragon', 'itemUse') ?? {});
itemUse[itemId] = (itemUse[itemId] ?? 0) - 1;
await this.setFlag( 'foundryvtt-reve-de-dragon', 'itemUse', itemUse);
console.log("ITEM USE DEC", itemUse);
}
/* -------------------------------------------- */
async incItemUse( itemId ) {
let itemUse = duplicate(this.getFlag('foundryvtt-reve-de-dragon', 'itemUse') ?? {});
@@ -3186,6 +3183,9 @@ export class RdDActor extends Actor {
case 'souffle':
await this.onDeleteOwnedDraconique(item, options, id);
break;
case 'casetmr':
await this.onDeleteOwnedCaseTmr(item, options, id);
break;
}
}
@@ -3207,6 +3207,13 @@ export class RdDActor extends Actor {
}
}
async onDeleteOwnedCaseTmr(item, options, id) {
let draconique = Draconique.all().find(it => it.isCase(item));
if (draconique) {
draconique.onActorDeleteCaseTmr(this, item)
}
}
notifyGestionTeteSouffleQueue(item, manualMessage=true){
ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),