forked from public/foundryvtt-reve-de-dragon
Compare commits
7 Commits
27882be340
...
1aa34f2e1a
Author | SHA1 | Date | |
---|---|---|---|
1aa34f2e1a | |||
dd56c4d15e | |||
545b386198 | |||
21e9c58aac | |||
9199a816c0 | |||
9dd905134b | |||
f32b6af7b6 |
10
changelog.md
10
changelog.md
@ -1,5 +1,15 @@
|
||||
# 12.0
|
||||
## 12.0.47 - La chèvre d'Astrobazzarh
|
||||
- le Bandersnatch a une protection de 10
|
||||
- la consistance chèvre est maintenant possible dans les recettes
|
||||
alchimiques (et toutes les consistances avec accents)
|
||||
- un échec au lancement d'un sort pour le mettre en réserve brise
|
||||
la concentration du haut-rêvant
|
||||
- Correction: les réussites particulières fonctionnent avec les caractéristiques dérivées
|
||||
|
||||
- Correction sur les mise à jour en cascade -
|
||||
- Correction sur le force rendering après un changement de competence
|
||||
|
||||
## 12.0.46 - Le double demi d'Astrobazzarh
|
||||
- correction des raffraîchissement lors du sommeil qui empêchait de dormir
|
||||
plusieurs heures
|
||||
|
@ -668,19 +668,23 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
if (!RdDItemRace.checkRacialMax(this, caracName, to)) {
|
||||
return
|
||||
}
|
||||
let updates = {};
|
||||
if (caracName == LIST_CARAC_PERSONNAGE.reve.code) {
|
||||
if (to > Misc.toInt(this.system.reve.seuil.value)) {
|
||||
this.setPointsDeSeuil(to);
|
||||
}
|
||||
updates[`system.reve.seuil.value`] = to; // SFA : Direct and packed changes
|
||||
//this.setPointsDeSeuil(to);
|
||||
}
|
||||
}
|
||||
if (caracName == LIST_CARAC_PERSONNAGE.chance.code) {
|
||||
if (to > Misc.toInt(this.system.compteurs.chance.value)) {
|
||||
this.setPointsDeChance(to);
|
||||
updates[`system.compteurs.chance.value`] = to; // SFA : Direct and packed changes
|
||||
//this.setPointsDeChance(to);
|
||||
}
|
||||
}
|
||||
let selectedCarac = this.findCaracByName(caracName);
|
||||
const from = selectedCarac.value
|
||||
await this.update({ [`system.carac.${caracName}.value`]: to });
|
||||
updates[`system.carac.${caracName}.value`] = to;
|
||||
await this.update(updates);
|
||||
await ExperienceLog.add(this, XP_TOPIC.CARAC, from, to, caracName);
|
||||
}
|
||||
|
||||
@ -784,7 +788,7 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
const toNiveau = compValue ?? RdDItemCompetence.getNiveauBase(competence.system.categorie, competence.getCategories());
|
||||
this.notifyCompetencesTronc(competence, toNiveau);
|
||||
const fromNiveau = competence.system.niveau;
|
||||
await competence.update({ 'system.niveau': toNiveau }, { render: false })
|
||||
await competence.update({ 'system.niveau': toNiveau }, { render: true })
|
||||
await ExperienceLog.add(this, XP_TOPIC.NIVEAU, fromNiveau, toNiveau, competence.name, true);
|
||||
}
|
||||
}
|
||||
@ -1761,7 +1765,7 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
if (reveActuel == 0) { // 0 points de reve
|
||||
ChatMessage.create({ content: this.name + " est réduit à 0 Points de Rêve, et tombe endormi !" });
|
||||
}
|
||||
if (!rollData.isSortReserve) {
|
||||
if (!rollData.isSortReserve || !rolled.isSuccess) {
|
||||
this.tmrApp?.close();
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ import { RdDUtility } from "../../rdd-utility.js";
|
||||
import { RdDAlchimie } from "../../rdd-alchimie.js";
|
||||
import { TextRollManager } from "./text-roll-formatter.js";
|
||||
|
||||
const REGEX_ALCHIMIE_TERMES = "(?<termes>(\\w|-)+)"
|
||||
const REGEX_ALCHIMIE_TERMES = "(?<termes>([-A-Za-zÀ-ÖØ-öø-ÿ ])+)"
|
||||
const REGEX_ALCHIMIE_MANIP = "(?<manip>(couleur|consistance))"
|
||||
const XREGEXP_ROLL_ALCHIMIE = XRegExp("@roll\\[" + REGEX_ALCHIMIE_MANIP + "\\s+" + REGEX_ALCHIMIE_TERMES + "\\]", 'giu')
|
||||
const XREGEXP_ROLL_ALCHIMIE_MANIP = XRegExp("@" + REGEX_ALCHIMIE_MANIP + "\\{" + REGEX_ALCHIMIE_TERMES + "\\}", 'giu')
|
||||
|
@ -55,6 +55,10 @@ export class RdDItemRace extends RdDItem {
|
||||
|
||||
isMax(actor, code, value = undefined) {
|
||||
const path = RdDCarac.carac(code)?.path
|
||||
if (path == undefined) {
|
||||
// cas des caractéristiques dérivées, pas de max
|
||||
return false
|
||||
}
|
||||
if (value == undefined) {
|
||||
value = path ? foundry.utils.getProperty(actor, path) : 0
|
||||
}
|
||||
|
@ -196,7 +196,7 @@ system:
|
||||
derivee: false
|
||||
protection:
|
||||
type: number
|
||||
value: 2
|
||||
value: 10
|
||||
label: Protection
|
||||
derivee: false
|
||||
compteurs:
|
||||
|
@ -1,13 +1,11 @@
|
||||
<img class="chat-icon" src="{{sortReserve.img}}" data-tooltip="{{sortReserve.name}}"/>
|
||||
<p> Vous avez déclenché
|
||||
{{#if sortReserve.system.echectotal}}<strong>l'échec total</strong>{{else}}le sort{{/if}}
|
||||
en réserve
|
||||
<strong>{{sortReserve.name}}</strong>
|
||||
avec {{sortReserve.system.ptreve}} points de Rêve
|
||||
en {{sortReserve.system.coord}} ({{caseTmr-label sortReserve.system.coord}}).
|
||||
L'heure ciblée est {{sortReserve.system.heurecible}}
|
||||
{{timestamp-imgSigneHeure sortReserve.system.heurecible}}
|
||||
</p>
|
||||
<h4>Déclenchement de sort: {{sortReserve.name}}</h4>
|
||||
<br> Vous avez déclenché {{#if sortReserve.system.echectotal}}<strong>l'échec total</strong>{{else}}le sort{{/if}}
|
||||
en réserve en {{sortReserve.system.coord}} ({{caseTmr-label sortReserve.system.coord}}).
|
||||
<br>Ce sort a {{sortReserve.system.ptreve}} points de Rêve
|
||||
<br>L'heure ciblée est {{#if sortReserve.system.heurecible}}
|
||||
{{timestamp-imgSigneHeure sortReserve.system.heurecible}} {{sortReserve.system.heurecible}}
|
||||
{{else}}indéterminée{{/if}}
|
||||
{{#if sort}}
|
||||
<div class="poesie-extrait poesie-overflow">
|
||||
{{{sort.system.description}}}
|
||||
|
Reference in New Issue
Block a user