This commit is contained in:
Vincent Vandemeulebrouck
2022-12-05 15:29:00 +01:00
parent 7efa7be1c0
commit 7b58407634
15 changed files with 142 additions and 179 deletions

View File

@ -250,7 +250,7 @@ export class RdDActor extends Actor {
}
/* -------------------------------------------- */
getReveActuel() {
switch(this.type) {
switch (this.type) {
case 'personnage':
return Misc.toInt(this.system.reve?.reve?.value ?? this.carac.reve.value);
case 'creature':
@ -258,7 +258,7 @@ export class RdDActor extends Actor {
return Misc.toInt(this.system.carac.reve?.value)
case 'vehicule':
default:
return 0;
return 0;
}
}
@ -400,8 +400,8 @@ export class RdDActor extends Actor {
return duplicate(possessions[0]);
}
const draconics = [...this.getDraconicList().filter(it => it.system.niveau >= 0),
POSSESSION_SANS_DRACONIC]
.sort(Misc.descending(it => it.system.niveau));
POSSESSION_SANS_DRACONIC]
.sort(Misc.descending(it => it.system.niveau));
return duplicate(draconics[0]);
}
@ -620,18 +620,18 @@ export class RdDActor extends Actor {
content: 'Remise à neuf de ' + this.name
});
const updates = {
'system.sante.endurance.value' : this.system.sante.endurance.max
'system.sante.endurance.value': this.system.sante.endurance.max
};
if (!this.isEntite([ENTITE_INCARNE, ENTITE_BLURETTE])) {
if (this.system.blessures) {
updates['system.blessures.legeres.liste'] = [PAS_DE_BLESSURE, PAS_DE_BLESSURE, PAS_DE_BLESSURE, PAS_DE_BLESSURE, PAS_DE_BLESSURE];
updates['system.blessures.graves.liste'] = [PAS_DE_BLESSURE, PAS_DE_BLESSURE];
updates['system.blessures.graves.liste'] = [PAS_DE_BLESSURE, PAS_DE_BLESSURE];
updates['system.blessures.critiques.liste'] = [PAS_DE_BLESSURE];
}
updates['system.sante.vie.value'] = this.system.sante.vie.max;
updates['system.sante.fatigue.value'] = 0;
if (this.isPersonnage()) {
updates['system.compteurs.ethylisme'] = { value:1, nb_doses: 0, jet_moral: false};
updates['system.compteurs.ethylisme'] = { value: 1, nb_doses: 0, jet_moral: false };
}
}
await this.update(updates);
@ -809,8 +809,7 @@ export class RdDActor extends Actor {
name: 'maitrise',
label: 'Maîtriser le Rêve de Dragon',
callbacks: [
{ action: async r =>
this.resultCombatReveDeDragon(r) }
{ action: async r => this.resultCombatReveDeDragon(r) }
]
}
);
@ -829,11 +828,12 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */
async sortMisEnReserve(sort, draconic, coord, ptreve) {
await this.createEmbeddedDocuments("Item", [{
type: 'sortreserve',
name: sort.name,
img: sort.img,
system: { sortid: sort._id, draconic: (draconic?.name ?? sort.system.draconic), ptreve: ptreve, coord: coord, heurecible: 'Vaisseau' } }],
{ renderSheet: false});
type: 'sortreserve',
name: sort.name,
img: sort.img,
system: { sortid: sort._id, draconic: (draconic?.name ?? sort.system.draconic), ptreve: ptreve, coord: coord, heurecible: 'Vaisseau' }
}],
{ renderSheet: false });
this.currentTMR.updateTokens();
}
@ -923,7 +923,7 @@ export class RdDActor extends Actor {
return;
}
const xpUtilise = Math.max(0, Math.min(stress, xpRequis));
const gainNiveau = (xpUtilise >= xpRequis || xpRequis <=0) ? 1 : 0;
const gainNiveau = (xpUtilise >= xpRequis || xpRequis <= 0) ? 1 : 0;
const nouveauNiveau = niveau + gainNiveau;
const nouveauXp = gainNiveau > 0 ? Math.max(competence.system.xp - xpSuivant, 0) : (competence.system.xp + xpUtilise);
await competence.update({
@ -1028,7 +1028,7 @@ export class RdDActor extends Actor {
});
await this.update({ [`system.experiencelog`]: expLog });
}
async deleteExperienceLog(from, count) {
if (from >= 0 && count > 0) {
let expLog = duplicate(this.system.experiencelog);
@ -1144,7 +1144,7 @@ export class RdDActor extends Actor {
onEnleverDeConteneur();
}
}
/* -------------------------------------------- */
/** Ajoute un item dans un conteneur, sur la base
* de leurs ID */
@ -1158,7 +1158,7 @@ export class RdDActor extends Actor {
await this.updateEmbeddedDocuments('Item', [{
_id: conteneur.id,
'system.contenu': [...conteneur.system.contenu, item.id]
}]);
}]);
onAjouterDansConteneur(item.id, conteneur.id);
}
}
@ -1374,8 +1374,8 @@ export class RdDActor extends Actor {
async computeMalusArmure() {
if (this.isPersonnage()) {
const malusArmure = this.filterItems(it => it.type == 'armure' && it.system.equipe)
.map(it => it.system.malus ?? 0)
.reduce(Misc.sum(), 0);
.map(it => it.system.malus ?? 0)
.reduce(Misc.sum(), 0);
// Mise à jour éventuelle du malus armure
if (this.system.attributs?.malusarmure?.value != malusArmure) {
await this.updateAttributeValue("malusarmure", malusArmure);
@ -1460,7 +1460,7 @@ export class RdDActor extends Actor {
});
}
}
/* -------------------------------------------- */
async ajouterRefoulement(value = 1, refouler) {
const refoulement = this.system.reve.refoulement.value + value;
@ -1568,7 +1568,7 @@ export class RdDActor extends Actor {
async deleteTMRRencontreAtPosition() {
const demiReve = this.getDemiReve()
let rencontreIds = this.items.filter(it => it.type == 'rencontre' && it.system.coord == demiReve).map(it => it.id);
if (rencontreIds.length>0) {
if (rencontreIds.length > 0) {
await this.deleteEmbeddedDocuments('Item', rencontreIds);
}
}
@ -1576,7 +1576,7 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */
async addTMRRencontre(currentRencontre) {
const toCreate = currentRencontre.toObject();
console.log('actor.addTMRRencontre(', toCreate,')');
console.log('actor.addTMRRencontre(', toCreate, ')');
this.createEmbeddedDocuments('Item', [toCreate]);
}
@ -1805,7 +1805,7 @@ export class RdDActor extends Actor {
}
return result;
}
async vehicleIncDec(name, inc) {
if (!this.isVehicule() || !['resistance', 'structure'].includes(name)) {
return
@ -1813,7 +1813,7 @@ export class RdDActor extends Actor {
const value = this.system.etat[name].value;
const max = this.system.etat[name].max;
const newValue = value + inc;
if (0 <= newValue && newValue <=max) {
if (0 <= newValue && newValue <= max) {
await this.update({ [`system.etat.${name}.value`]: newValue })
}
}
@ -1965,9 +1965,9 @@ export class RdDActor extends Actor {
}
}
async actionNourritureboisson(item, onActionItem) {
const dialog = await DialogConsommer.create(this, item, onActionItem);
dialog.render(true);
async mangerNourriture(item, onActionItem) {
return (await DialogConsommer.create(this, item, onActionItem)).render(true);
}
async actionLire(item) {
@ -1988,14 +1988,14 @@ export class RdDActor extends Actor {
}
/* -------------------------------------------- */
async consommerNourritureboisson(itemId, choix = { doses: 1, seForcer: false, supprimerSiZero: false}, userId = undefined) {
async consommerNourritureboisson(itemId, choix = { doses: 1, seForcer: false, supprimerSiZero: false }, userId = undefined) {
if (userId != undefined && userId != game.user.id) {
RdDActor.remoteActorCall({
actorId: this.id,
method: 'consommerNourritureboisson',
args: [itemId, choix, userId]
},
userId)
userId)
return;
}
const item = this.getObjet(itemId)
@ -2297,9 +2297,9 @@ export class RdDActor extends Actor {
if (xpData) {
const content = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-gain-xp.html`, xpData);
if (hideChatMessage) {
ChatUtility.blindMessageToGM({ content: content});
ChatUtility.blindMessageToGM({ content: content });
}
else{
else {
ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
content: content
@ -2583,7 +2583,7 @@ export class RdDActor extends Actor {
}
/* -------------------------------------------- */
async rollCompetence(idOrName, options = {tryTarget: true}) {
async rollCompetence(idOrName, options = { tryTarget: true }) {
let rollData = {
carac: this.system.carac,
competence: this.getCompetence(idOrName)
@ -2591,14 +2591,14 @@ export class RdDActor extends Actor {
if (rollData.competence.type == 'competencecreature') {
if (rollData.competence.system.iscombat && options.tryTarget && Targets.hasTargets()) {
Targets.selectOneToken(target => {
if (rollData.competence.system.ispossession) {
RdDPossession.onAttaquePossession(target, this, rollData.competence)
}
else {
const arme = RdDItemCompetenceCreature.armeNaturelle(rollData.competence)
RdDCombat.rddCombatTarget(target, this).attaque(competence, arme)
}
});
if (rollData.competence.system.ispossession) {
RdDPossession.onAttaquePossession(target, this, rollData.competence)
}
else {
const arme = RdDItemCompetenceCreature.armeNaturelle(rollData.competence)
RdDCombat.rddCombatTarget(target, this).attaque(competence, arme)
}
});
return;
}
// Transformer la competence de créature
@ -2705,12 +2705,13 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */
async _rollArt(artData, selected, oeuvre, callBackResult = r => this._resultArt(r)) {
oeuvre.system.niveau = oeuvre.system.niveau ?? 0;
mergeObject(artData,
{
oeuvre: oeuvre,
art: oeuvre.type,
competence: duplicate(this.getCompetence(artData.compName ?? oeuvre.system.competence ?? artData.art)),
diffLibre: - (oeuvre.system.niveau ?? 0),
diffLibre: - oeuvre.system.niveau,
diffConditions: 0,
use: { libre: false, conditions: true, surenc: false },
selectedCarac: duplicate(this.system.carac[selected])
@ -2803,13 +2804,13 @@ export class RdDActor extends Actor {
type: 'nourritureboisson',
img: 'systems/foundryvtt-reve-de-dragon/icons/objets/provision_cuite.webp',
system: {
"description": artData.oeuvre.system.description,
"sust": Math.min(sust, 1),
"qualite": artData.qualiteFinale,
"exotisme": artData.exotismeFinal,
"encombrement": 0.1,
"quantite": Math.max(1, Math.floor(sust)),
"cout": Math.max(artData.qualiteFinale) * 0.01
description: cuisine.oeuvre.system.description,
sust: 1,
qualite: cuisine.qualiteFinale,
exotisme: cuisine.exotismeFinal,
encombrement: 0.1,
quantite: Math.max(1, Math.floor(cuisine.sust)),
cout: Math.max(cuisine.qualiteFinale, 0) * 0.01
}
};
if (artData.ajouterEquipement) {
@ -3169,7 +3170,7 @@ export class RdDActor extends Actor {
const caracList = Object.entries(carac);
let entry = Misc.findFirstLike(name, caracList, { mapper: it => it[0], description: 'caractéristique' });
if (!entry || entry.length ==0) {
if (!entry || entry.length == 0) {
entry = Misc.findFirstLike(name, caracList, { mapper: it => it[1].label, description: 'caractéristique' });
}
return entry && entry.length > 0 ? carac[entry[0]] : undefined;
@ -3205,7 +3206,7 @@ export class RdDActor extends Actor {
ui.notifications.warn("Vous êtes déja dans les TMR....");
return
}
if (mode != 'visu' && this.getEffect(STATUSES.StatusDemiReve)) {
if (mode != 'visu' && this.getEffect(STATUSES.StatusDemiReve)) {
ui.notifications.warn("Le joueur ou le MJ est déja dans les Terres Médianes avec ce personnage ! Visualisation uniquement");
mode = "visu"; // bascule le mode en visu automatiquement
}
@ -3263,18 +3264,18 @@ export class RdDActor extends Actor {
title: 'Ne pas utiliser les automatisation de combat',
buttonLabel: "Pas d'automatisation",
onAction: async () => {
this.rollCompetence(arme.system.competence, {tryTarget: false})
this.rollCompetence(arme.system.competence, { tryTarget: false })
}
});
return;
}
Targets.selectOneToken(target => {
if (Targets.isTargetEntite(target)){
if (Targets.isTargetEntite(target)) {
ui.notifications.warn(`Vous ne pouvez pas attaquer une entité non incarnée avec votre ${arme.name}!!!!`);
return;
}
const competence = this.getCompetence(arme.system.competence)
if (competence.system.ispossession) {
return RdDPossession.onAttaquePossession(target, this, competence);
@ -3393,12 +3394,12 @@ export class RdDActor extends Actor {
async validerEncaissement(rollData, show) {
if (ReglesOptionelles.isUsing('validation-encaissement-gr') && !game.user.isGM) {
RdDActor.remoteActorCall({
actorId: this.id,
method: 'validerEncaissement',
args: [rollData, show]
});
return;
RdDActor.remoteActorCall({
actorId: this.id,
method: 'validerEncaissement',
args: [rollData, show]
});
return;
}
const armure = await this.computeArmure(rollData);
if (ReglesOptionelles.isUsing('validation-encaissement-gr')) {
@ -3878,7 +3879,7 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */
addSubActeur(subActor) {
if(subActor?.id == this.id){
if (subActor?.id == this.id) {
ui.notifications.warn("Vous ne pouvez pas attacher un acteur à lui même")
}
else if (!subActor?.isOwner) {
@ -4105,10 +4106,10 @@ export class RdDActor extends Actor {
}
console.log("setEffect", statusId, status)
const effect = this.getEffect(statusId);
if (!status && effect){
if (!status && effect) {
await this.deleteEmbeddedDocuments('ActiveEffect', [effect.id]);
}
if (status && !effect ) {
if (status && !effect) {
await this.createEmbeddedDocuments("ActiveEffect", [StatusEffects.status(statusId)]);
}
}
@ -4134,7 +4135,6 @@ export class RdDActor extends Actor {
await this.checkCompetenceXP(item.name, item.system.xp);
}
}
/* -------------------------------------------- */
async onCreateItem(item, options, id) {
switch (item.type) {