Compare commits

..

No commits in common. "v11" and "12.0.47" have entirely different histories.
v11 ... 12.0.47

10 changed files with 30 additions and 54 deletions

View File

@ -1,23 +1,7 @@
# 12.0 # 12.0
## 12.0.50 - Le sommeil d'Astrobazzarh
- Le don de double rêve n'interrompt plus le sommeil toutes les heures
- la perte de fatigue à la descente des TMR est visible immédiatement
## 12.0.49 - La deuxième lame d'Astrobazzarh ## 120.0.47
- Corrections
- les défenses particulières sont correctement affichées
- les vieux boucliers (sans catégorie de parade car créés il y a longtemps) peuvent parer...
- Les attaques à distance n'ont pas de difficulté libre
## 12.0.48 - 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
## 12.0.47
- Correction sur les mise à jour en cascade - - Correction sur les mise à jour en cascade -
- Correction sur le force rendering après un changement de competence - Correction sur le force rendering après un changement de competence

View File

@ -484,7 +484,7 @@ export class RdDActor extends RdDBaseActorSang {
await this.$recupererFatigue(message); await this.$recupererFatigue(message);
await this.$jetRecuperationReve(dormi, message); await this.$jetRecuperationReve(dormi, message);
if (dormi.etat == 'dort' && EffetsDraconiques.isDonDoubleReve(this)) { if (dormi.etat == 'dort' && EffetsDraconiques.isDonDoubleReve(this)) {
await this.$jetRecuperationReve(dormi, message); dormi.etat = await this.$jetRecuperationReve(dormi, message);
} }
} }
} }
@ -1765,7 +1765,7 @@ export class RdDActor extends RdDBaseActorSang {
if (reveActuel == 0) { // 0 points de reve if (reveActuel == 0) { // 0 points de reve
ChatMessage.create({ content: this.name + " est réduit à 0 Points de Rêve, et tombe endormi !" }); ChatMessage.create({ content: this.name + " est réduit à 0 Points de Rêve, et tombe endormi !" });
} }
if (!rollData.isSortReserve || !rolled.isSuccess) { if (!rollData.isSortReserve) {
this.tmrApp?.close(); this.tmrApp?.close();
} }
} }

View File

@ -5,7 +5,7 @@ import { RdDUtility } from "../../rdd-utility.js";
import { RdDAlchimie } from "../../rdd-alchimie.js"; import { RdDAlchimie } from "../../rdd-alchimie.js";
import { TextRollManager } from "./text-roll-formatter.js"; import { TextRollManager } from "./text-roll-formatter.js";
const REGEX_ALCHIMIE_TERMES = "(?<termes>([-A-Za-zÀ-ÖØ-öø-ÿ ])+)" const REGEX_ALCHIMIE_TERMES = "(?<termes>(\\w|-)+)"
const REGEX_ALCHIMIE_MANIP = "(?<manip>(couleur|consistance))" 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 = XRegExp("@roll\\[" + REGEX_ALCHIMIE_MANIP + "\\s+" + REGEX_ALCHIMIE_TERMES + "\\]", 'giu')
const XREGEXP_ROLL_ALCHIMIE_MANIP = XRegExp("@" + REGEX_ALCHIMIE_MANIP + "\\{" + REGEX_ALCHIMIE_TERMES + "\\}", 'giu') const XREGEXP_ROLL_ALCHIMIE_MANIP = XRegExp("@" + REGEX_ALCHIMIE_MANIP + "\\{" + REGEX_ALCHIMIE_TERMES + "\\}", 'giu')

View File

@ -120,7 +120,7 @@ export class RdDItemArme extends Item {
static defenseArmeParade(armeAttaque, armeParade) { static defenseArmeParade(armeAttaque, armeParade) {
const defCategory = RdDItemArme.getCategorieParade(armeParade) const defCategory = RdDItemArme.getCategorieParade(armeParade)
if (defCategory == 'boucliers') { if (defCategory == 'bouclier') {
return 'norm' return 'norm'
} }
if (armeAttaque?.system?.competence?.toLowerCase().match(/(fléau)/)) { if (armeAttaque?.system?.competence?.toLowerCase().match(/(fléau)/)) {

View File

@ -55,10 +55,6 @@ export class RdDItemRace extends RdDItem {
isMax(actor, code, value = undefined) { isMax(actor, code, value = undefined) {
const path = RdDCarac.carac(code)?.path const path = RdDCarac.carac(code)?.path
if (path == undefined) {
// cas des caractéristiques dérivées, pas de max
return false
}
if (value == undefined) { if (value == undefined) {
value = path ? foundry.utils.getProperty(actor, path) : 0 value = path ? foundry.utils.getProperty(actor, path) : 0
} }

View File

@ -1047,12 +1047,11 @@ export class RdDCombat {
async _onParade(defenderRoll) { async _onParade(defenderRoll) {
if (RdDCombat.isParticuliere(defenderRoll)) {
return await this._onParadeParticuliere(defenderRoll)
}
if (RdDCombat.isReussite(defenderRoll)) { if (RdDCombat.isReussite(defenderRoll)) {
await this._onParadeNormale(defenderRoll) return await this._onParadeNormale(defenderRoll)
if (RdDCombat.isParticuliere(defenderRoll)) {
await this._onParadeParticuliere(defenderRoll)
}
return
} }
await this._onParadeEchec(defenderRoll) await this._onParadeEchec(defenderRoll)
} }
@ -1136,12 +1135,11 @@ export class RdDCombat {
} }
async _onEsquive(defenderRoll) { async _onEsquive(defenderRoll) {
if (RdDCombat.isParticuliere(defenderRoll)) {
return await this._onEsquiveParticuliere(defenderRoll)
}
if (RdDCombat.isReussite(defenderRoll)) { if (RdDCombat.isReussite(defenderRoll)) {
await this._onEsquiveNormale(defenderRoll) return await this._onEsquiveNormale(defenderRoll)
if (RdDCombat.isParticuliere(defenderRoll)) {
await this._onEsquiveParticuliere(defenderRoll)
}
return
} }
return await this._onEsquiveEchec(defenderRoll) return await this._onEsquiveEchec(defenderRoll)
} }

View File

@ -345,16 +345,15 @@ export class RdDTMRDialog extends Dialog {
} }
this.descenteTMR = true; this.descenteTMR = true;
if (this.actor.tmrApp) { if (this.actor.tmrApp) {
this.actor.tmrApp = undefined // Cleanup reference this.actor.tmrApp = undefined; // Cleanup reference
const appliquerFatigue = ReglesOptionnelles.isUsing("appliquer-fatigue")
await this.actor.santeIncDec(
appliquerFatigue ? "fatigue" : "endurance",
(appliquerFatigue ? 1 : -1) * this.cumulFatigue)
if (!this.viewOnly) { if (!this.viewOnly) {
await this.actor.setEffect(STATUSES.StatusDemiReve, false) await this.actor.setEffect(STATUSES.StatusDemiReve, false);
this.$tellToUserAndGM(message) this.$tellToUserAndGM(message)
} }
const appliquerFatigue = ReglesOptionnelles.isUsing("appliquer-fatigue");
await this.actor.santeIncDec(
appliquerFatigue ? "fatigue" : "endurance",
(appliquerFatigue ? 1 : -1) * this.cumulFatigue);
} }
this.pixiTMR.close(); this.pixiTMR.close();
this.pixiTMR = undefined this.pixiTMR = undefined

View File

@ -196,7 +196,7 @@ system:
derivee: false derivee: false
protection: protection:
type: number type: number
value: 10 value: 2
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -1,11 +1,13 @@
<img class="chat-icon" src="{{sortReserve.img}}" data-tooltip="{{sortReserve.name}}"/> <img class="chat-icon" src="{{sortReserve.img}}" data-tooltip="{{sortReserve.name}}"/>
<h4>Déclenchement de sort: {{sortReserve.name}}</h4> <p> Vous avez déclenché
<br> Vous avez déclenché {{#if sortReserve.system.echectotal}}<strong>l'échec total</strong>{{else}}le sort{{/if}} {{#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}}). en réserve
<br>Ce sort a {{sortReserve.system.ptreve}} points de Rêve <strong>{{sortReserve.name}}</strong>
<br>L'heure ciblée est {{#if sortReserve.system.heurecible}} avec {{sortReserve.system.ptreve}} points de Rêve
{{timestamp-imgSigneHeure sortReserve.system.heurecible}} {{sortReserve.system.heurecible}} en {{sortReserve.system.coord}} ({{caseTmr-label sortReserve.system.coord}}).
{{else}}indéterminée{{/if}} L'heure ciblée est {{sortReserve.system.heurecible}}
{{timestamp-imgSigneHeure sortReserve.system.heurecible}}
</p>
{{#if sort}} {{#if sort}}
<div class="poesie-extrait poesie-overflow"> <div class="poesie-extrait poesie-overflow">
{{{sort.system.description}}} {{{sort.system.description}}}

View File

@ -70,10 +70,7 @@
</div> </div>
<div class="flex-group-left"> <div class="flex-group-left">
{{#if (or attackerRoll {{#if attackerRoll}}
(and sourceToken (eq competence.system.categorie 'tir'))
(and sourceToken (eq competence.system.categorie 'lancer'))
)}}
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-roll-diffFixe.hbs"}} {{>"systems/foundryvtt-reve-de-dragon/templates/partial-roll-diffFixe.hbs"}}
{{else}} {{else}}
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-roll-diffLibre.hbs"}} {{>"systems/foundryvtt-reve-de-dragon/templates/partial-roll-diffLibre.hbs"}}