Merge pull request 'v13.0.34 - La saumuche d'Illysis' (#799) from feature/v13-corrections into v13
All checks were successful
Release Creation / build (release) Successful in 2m2s
All checks were successful
Release Creation / build (release) Successful in 2m2s
Reviewed-on: https, #799
This commit was merged in pull request #799.
This commit is contained in:
@@ -1,5 +1,11 @@
|
|||||||
# 13.0
|
# 13.0
|
||||||
|
|
||||||
|
## 13.0.34 - La saumuche d'Illysis
|
||||||
|
|
||||||
|
- la qualité des "improvisations du moment" se base sur le niveau du cuisinier
|
||||||
|
- l'appel au moral n'est pas affiché à l'ouverture d'une fenêtre de jets de sorts (ou de tâche intellectuelle)
|
||||||
|
- la difficulté variable de l'annulation de magie est bien prise en compte
|
||||||
|
|
||||||
## 13.0.33 - L'ébriété d'Illysis
|
## 13.0.33 - L'ébriété d'Illysis
|
||||||
|
|
||||||
- le stade éméché ne cause plus de perte d'endurance
|
- le stade éméché ne cause plus de perte d'endurance
|
||||||
|
|||||||
@@ -85,6 +85,10 @@ export const defaultItemImg = {
|
|||||||
munition: "systems/foundryvtt-reve-de-dragon/icons/objets/fleche.webp"
|
munition: "systems/foundryvtt-reve-de-dragon/icons/objets/fleche.webp"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const ITEM_TYPES_PLURIEL = {
|
||||||
|
[ITEM_TYPES.jeu]: 'jeux'
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class RdDItem extends Item {
|
export class RdDItem extends Item {
|
||||||
|
|
||||||
@@ -112,6 +116,14 @@ export class RdDItem extends Item {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static itemTypePluriel(type) {
|
||||||
|
if (ITEM_TYPES[type]) {
|
||||||
|
return ITEM_TYPES_PLURIEL[type] ?? (type + 's')
|
||||||
|
}
|
||||||
|
console.error(`Item type ${type} is undefined`)
|
||||||
|
return type
|
||||||
|
}
|
||||||
static async getCorrespondingItem(itemRef) {
|
static async getCorrespondingItem(itemRef) {
|
||||||
if (itemRef.pack) {
|
if (itemRef.pack) {
|
||||||
return await SystemCompendiums.loadDocument(itemRef)
|
return await SystemCompendiums.loadDocument(itemRef)
|
||||||
|
|||||||
@@ -1137,12 +1137,12 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
if (!token) {
|
if (!token) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (this.demiReve === token && this.isDemiReveCache()) {
|
if (this.isDemiReveCache() && [EffetsDraconiques.rencontre.code(), EffetsDraconiques.demiReve.code()].includes(token.code)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.pixiTMR.positionToken(token);
|
this.pixiTMR.positionToken(token)
|
||||||
if (!this.allTokens.includes(token)) {
|
if (!this.allTokens.includes(token)) {
|
||||||
this.allTokens.push(token);
|
this.allTokens.push(token)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ export class RdDUtility {
|
|||||||
'systems/foundryvtt-reve-de-dragon/templates/actor/taches.hbs',
|
'systems/foundryvtt-reve-de-dragon/templates/actor/taches.hbs',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/actor/oeuvres.hbs',
|
'systems/foundryvtt-reve-de-dragon/templates/actor/oeuvres.hbs',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/actor/oeuvre.hbs',
|
'systems/foundryvtt-reve-de-dragon/templates/actor/oeuvre.hbs',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/actor/jeus.hbs',
|
'systems/foundryvtt-reve-de-dragon/templates/actor/jeux.hbs',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/actor/alchimie.hbs',
|
'systems/foundryvtt-reve-de-dragon/templates/actor/alchimie.hbs',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/actor/astrologie.hbs',
|
'systems/foundryvtt-reve-de-dragon/templates/actor/astrologie.hbs',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/actor/chirurgie.hbs',
|
'systems/foundryvtt-reve-de-dragon/templates/actor/chirurgie.hbs',
|
||||||
@@ -483,7 +483,7 @@ export class RdDUtility {
|
|||||||
|
|
||||||
static filterItemsPerTypeForSheet(formData, itemTypes) {
|
static filterItemsPerTypeForSheet(formData, itemTypes) {
|
||||||
Object.values(ITEM_TYPES).forEach(t => {
|
Object.values(ITEM_TYPES).forEach(t => {
|
||||||
formData[t + 's'] = Misc.arrayOrEmpty(itemTypes[t])
|
formData[RdDItem.itemTypePluriel(t)] = Misc.arrayOrEmpty(itemTypes[t])
|
||||||
itemTypes[t].forEach(item => item.actions = item.itemActions())
|
itemTypes[t].forEach(item => item.actions = item.itemActions())
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -479,16 +479,13 @@ export default class RollDialog extends HandlebarsApplicationMixin(ApplicationV2
|
|||||||
RollBasicParts.loadSurprises(rollData, this.getSelectedType().code)
|
RollBasicParts.loadSurprises(rollData, this.getSelectedType().code)
|
||||||
rollData.type.label = this.getSelectedType()?.title(rollData)
|
rollData.type.label = this.getSelectedType()?.title(rollData)
|
||||||
|
|
||||||
const visibleRollParts = this.getActiveParts()
|
this.getActiveParts().forEach(p => p.applyExternalImpacts(this.getActiveParts(), rollData))
|
||||||
visibleRollParts.forEach(p => p.applyExternalImpacts(visibleRollParts, rollData))
|
this.setSpecialComp(this.getActiveParts());
|
||||||
|
this.getActiveParts().forEach(p => p.prepareContext(rollData))
|
||||||
this.setSpecialComp(visibleRollParts);
|
|
||||||
|
|
||||||
visibleRollParts.forEach(p => p.prepareContext(rollData))
|
|
||||||
|
|
||||||
RollDialog.calculAjustement(rollData)
|
RollDialog.calculAjustement(rollData)
|
||||||
|
|
||||||
const templates = visibleRollParts.map(p => p.toTemplateData())
|
const templates = this.getActiveParts().map(p => p.toTemplateData())
|
||||||
const context = await super._prepareContext()
|
const context = await super._prepareContext()
|
||||||
return foundry.utils.mergeObject(
|
return foundry.utils.mergeObject(
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -39,18 +39,17 @@ export class RollPartCuisine extends RollPartSelect {
|
|||||||
loadRefs(rollData) {
|
loadRefs(rollData) {
|
||||||
const refs = this.getRefs(rollData)
|
const refs = this.getRefs(rollData)
|
||||||
const actor = rollData.active.actor
|
const actor = rollData.active.actor
|
||||||
refs.cuisine = actor.getCompetence('Cuisine')
|
const cuisine = actor.getCompetence('Cuisine')
|
||||||
|
|
||||||
const recettes = actor.items
|
const recettes = actor.items
|
||||||
.filter(it => it.type == ITEM_TYPES.recettecuisine)
|
.filter(it => it.type == ITEM_TYPES.recettecuisine)
|
||||||
.map(RollPartCuisine.$extractPreparationRecette)
|
.map(it => RollPartCuisine.$extractPreparationRecette(cuisine, it))
|
||||||
|
|
||||||
const ingredientsBruts = actor.items
|
const ingredientsBruts = actor.items
|
||||||
.filter(it => it.getUtilisationCuisine() == 'brut')
|
.filter(it => it.getUtilisationCuisine() == 'brut')
|
||||||
.map(RollPartCuisine.$extractPreparationBrut)
|
.map(it => RollPartCuisine.$extractPreparationBrut(cuisine, it))
|
||||||
|
|
||||||
refs.preparations = [RollPartCuisine.$preparationBasique(), ...recettes, ...ingredientsBruts]
|
refs.preparations = [RollPartCuisine.$preparationBasique(cuisine), ...recettes, ...ingredientsBruts]
|
||||||
refs.preparations.forEach(p => p.comp = refs.cuisine)
|
|
||||||
if (refs.preparations.length > 0) {
|
if (refs.preparations.length > 0) {
|
||||||
this.$selectPreparation(rollData)
|
this.$selectPreparation(rollData)
|
||||||
this.$restoreSavedOptions(rollData)
|
this.$restoreSavedOptions(rollData)
|
||||||
@@ -73,7 +72,7 @@ export class RollPartCuisine extends RollPartSelect {
|
|||||||
|
|
||||||
choices(refs) { return refs.preparations }
|
choices(refs) { return refs.preparations }
|
||||||
|
|
||||||
static $preparationBasique() {
|
static $preparationBasique(cuisine) {
|
||||||
return {
|
return {
|
||||||
key: '',
|
key: '',
|
||||||
label: "Improvisation du moment",
|
label: "Improvisation du moment",
|
||||||
@@ -85,10 +84,12 @@ export class RollPartCuisine extends RollPartSelect {
|
|||||||
proportionsMax: 50,
|
proportionsMax: 50,
|
||||||
value: 0,
|
value: 0,
|
||||||
fabriquer: false,
|
fabriquer: false,
|
||||||
|
qualite: cuisine.system.niveau,
|
||||||
|
comp: cuisine,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static $extractPreparationRecette(recette) {
|
static $extractPreparationRecette(cuisine, recette) {
|
||||||
const proportions = recette.system.sust ?? 1
|
const proportions = recette.system.sust ?? 1
|
||||||
return {
|
return {
|
||||||
key: recette.id,
|
key: recette.id,
|
||||||
@@ -102,10 +103,12 @@ export class RollPartCuisine extends RollPartSelect {
|
|||||||
value: -recette.system.niveau,
|
value: -recette.system.niveau,
|
||||||
recette: recette,
|
recette: recette,
|
||||||
fabriquer: true,
|
fabriquer: true,
|
||||||
|
qualite: recette.system.niveau,
|
||||||
|
comp: cuisine,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static $extractPreparationBrut(ingredient) {
|
static $extractPreparationBrut(cuisine, ingredient) {
|
||||||
return {
|
return {
|
||||||
key: ingredient.id,
|
key: ingredient.id,
|
||||||
label: ingredient.name + ' cuisiné',
|
label: ingredient.name + ' cuisiné',
|
||||||
@@ -118,6 +121,8 @@ export class RollPartCuisine extends RollPartSelect {
|
|||||||
value: 0,
|
value: 0,
|
||||||
ingredient: ingredient,
|
ingredient: ingredient,
|
||||||
fabriquer: true,
|
fabriquer: true,
|
||||||
|
qualite: cuisine.system.niveau,
|
||||||
|
comp: cuisine,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -150,7 +155,7 @@ export class RollPartCuisine extends RollPartSelect {
|
|||||||
this.$selectPreparation(rollDialog.rollData, selectOptions[index]?.value)
|
this.$selectPreparation(rollDialog.rollData, selectOptions[index]?.value)
|
||||||
rollDialog.render()
|
rollDialog.render()
|
||||||
})
|
})
|
||||||
|
|
||||||
checkboxFabriquer?.addEventListener("change", e => {
|
checkboxFabriquer?.addEventListener("change", e => {
|
||||||
current.fabriquer = e.currentTarget.checked
|
current.fabriquer = e.currentTarget.checked
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -28,7 +28,8 @@ export class RollPartSort extends RollPartSelect {
|
|||||||
this.setCurrent(rollData, {
|
this.setCurrent(rollData, {
|
||||||
key: saved.key,
|
key: saved.key,
|
||||||
isReserve: saved.isReserve,
|
isReserve: saved.isReserve,
|
||||||
ptreve: saved.ptreve
|
ptreve: saved.ptreve,
|
||||||
|
value: saved.value,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,7 +38,8 @@ export class RollPartSort extends RollPartSelect {
|
|||||||
this.setSaved(targetData, {
|
this.setSaved(targetData, {
|
||||||
key: current.key,
|
key: current.key,
|
||||||
isReserve: current.isReserve,
|
isReserve: current.isReserve,
|
||||||
ptreve: current.ptreve
|
ptreve: current.ptreve,
|
||||||
|
value: current.value,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,7 +100,7 @@ export class RollPartSort extends RollPartSelect {
|
|||||||
const sort = { label: current.label, value: current.value }
|
const sort = { label: current.label, value: current.value }
|
||||||
const reserve = current.isReserve ? [{ label: `Mise en réserve en ${this.getCoord(rollData)}` }] : []
|
const reserve = current.isReserve ? [{ label: `Mise en réserve en ${this.getCoord(rollData)}` }] : []
|
||||||
const bonusCase = current.bonusCase ? [{ label: `Bonus case +${current.bonusCase}%` }] : []
|
const bonusCase = current.bonusCase ? [{ label: `Bonus case +${current.bonusCase}%` }] : []
|
||||||
const reve = { label: `Rêve ${current.ptreve}` }
|
const reve = { label: `Dépense de rêve ${current.ptreve}` }
|
||||||
return [sort, ...bonusCase, reve, ...reserve]
|
return [sort, ...bonusCase, reve, ...reserve]
|
||||||
}
|
}
|
||||||
return []
|
return []
|
||||||
@@ -106,9 +108,12 @@ export class RollPartSort extends RollPartSelect {
|
|||||||
|
|
||||||
$selectSort(rollData, values) {
|
$selectSort(rollData, values) {
|
||||||
const current = this.selectByKey(rollData, values.key)
|
const current = this.selectByKey(rollData, values.key)
|
||||||
if (values.ptreve) {
|
if (values.ptreve != undefined) {
|
||||||
current.ptreve = values.ptreve
|
current.ptreve = values.ptreve
|
||||||
}
|
}
|
||||||
|
if (current.isDiffVariable && values.value != undefined) {
|
||||||
|
current.value = values.value
|
||||||
|
}
|
||||||
if (values.isReserve != undefined) {
|
if (values.isReserve != undefined) {
|
||||||
current.isReserve = values.isReserve
|
current.isReserve = values.isReserve
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,9 +21,7 @@ export class RollTypeCuisine extends RollType {
|
|||||||
|
|
||||||
getResult(rollData, impacts) {
|
getResult(rollData, impacts) {
|
||||||
const current = rollData.current[PART_CUISINE]
|
const current = rollData.current[PART_CUISINE]
|
||||||
const diff = -current.value
|
const qualite = rollData.rolled.ptQualite + current.qualite
|
||||||
const cuisine = rollData.refs[PART_CUISINE].cuisine
|
|
||||||
const qualite = rollData.rolled.ptQualite + (rollData.rolled.isSuccess ? diff : Math.min(diff, cuisine.system.niveau))
|
|
||||||
|
|
||||||
const result = {
|
const result = {
|
||||||
qualite: qualite,
|
qualite: qualite,
|
||||||
@@ -49,6 +47,7 @@ export class RollTypeCuisine extends RollType {
|
|||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
onApplyImpacts(roll, impacts) {
|
onApplyImpacts(roll, impacts) {
|
||||||
if (roll.result.plat) {
|
if (roll.result.plat) {
|
||||||
// le plat n'est pas créé immédiatement, il faut donc retrouver l'id
|
// le plat n'est pas créé immédiatement, il faut donc retrouver l'id
|
||||||
|
|||||||
@@ -90,21 +90,22 @@ export class Draconique {
|
|||||||
*/
|
*/
|
||||||
token(pixiTMR, linkData, coordTMR, type = undefined) {
|
token(pixiTMR, linkData, coordTMR, type = undefined) {
|
||||||
const tooltip = this.tooltip(linkData);
|
const tooltip = this.tooltip(linkData);
|
||||||
return this._createToken(pixiTMR, linkData, coordTMR, type, tooltip);
|
return this._createToken(pixiTMR, linkData, coordTMR, type, tooltip)
|
||||||
}
|
}
|
||||||
|
|
||||||
tokens(pixiTMR, linkData, coordTMR, type = undefined) {
|
tokens(pixiTMR, linkData, coordTMR, code = undefined) {
|
||||||
const tooltip = this.tooltip(linkData);
|
const tooltip = this.tooltip(linkData);
|
||||||
return [this._createToken(pixiTMR, linkData, coordTMR, type, tooltip)];
|
return [this._createToken(pixiTMR, linkData, coordTMR, code, tooltip)]
|
||||||
}
|
}
|
||||||
|
|
||||||
_createToken(pixiTMR, linkData, coordTMR, type, tooltip) {
|
_createToken(pixiTMR, linkData, coordTMR, code, tooltip) {
|
||||||
const token = {
|
const token = {
|
||||||
sprite: this.createSprite(pixiTMR),
|
sprite: this.createSprite(pixiTMR),
|
||||||
coordTMR: coordTMR,
|
coordTMR: coordTMR,
|
||||||
tooltip: tooltip
|
tooltip: tooltip,
|
||||||
|
code: code ?? this.code()
|
||||||
};
|
};
|
||||||
token[type ?? this.code()] = linkData;
|
token[code ?? this.code()] = linkData;
|
||||||
return token;
|
return token;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -122,7 +122,7 @@
|
|||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/taches.hbs"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/taches.hbs"}}
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/chirurgie.hbs"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/chirurgie.hbs"}}
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/oeuvres.hbs"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/oeuvres.hbs"}}
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/jeus.hbs"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/jeux.hbs"}}
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/alchimie.hbs"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/alchimie.hbs"}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|||||||
Reference in New Issue
Block a user