Roll V2 mode possession
This commit is contained in:
@@ -48,6 +48,8 @@ import { RollPartEmpoignade } from "./roll-part-empoignade.mjs";
|
||||
import { RollPartEmpoignadeTaille } from "./roll-part-empoignade-taille.mjs";
|
||||
import { RollPartEcailles } from "./roll-part-ecailles.mjs";
|
||||
import { RollPartResistance } from "./roll-part-resistance.mjs";
|
||||
import { RollTypePossession } from "./roll-type-possession.mjs";
|
||||
import { RollPartPossession } from "./roll-part-possession.mjs";
|
||||
|
||||
|
||||
const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api
|
||||
@@ -56,6 +58,7 @@ export const ALL_ROLL_TYPES = [
|
||||
new RollTypeComp(),
|
||||
new RollTypeTache(),
|
||||
new RollTypeAttaque(),
|
||||
new RollTypePossession(),
|
||||
new RollTypeDefense(),
|
||||
new RollTypeSort(),
|
||||
new RollTypeMeditation(),
|
||||
@@ -76,6 +79,7 @@ const ROLL_PARTS = [
|
||||
|
||||
new RollPartDiff(),
|
||||
new RollPartAttaque(),
|
||||
new RollPartPossession(),
|
||||
new RollPartDefense(),
|
||||
new RollPartMeditation(),
|
||||
new RollPartSort(),
|
||||
|
||||
79
module/roll/roll-part-possession.mjs
Normal file
79
module/roll/roll-part-possession.mjs
Normal file
@@ -0,0 +1,79 @@
|
||||
import { CATEGORIES_COMPETENCES_CREATURES } from "../item/base-items.js"
|
||||
import { CARACS } from "../rdd-carac.js"
|
||||
import { ROLL_TYPE_POSSESSION } from "./roll-constants.mjs"
|
||||
import { PART_CARAC } from "./roll-part-carac.mjs"
|
||||
import { PART_COMP } from "./roll-part-comp.mjs"
|
||||
import { RollPartSelect } from "./roll-part-select.mjs"
|
||||
import { ROLLDIALOG_SECTION } from "./roll-part.mjs"
|
||||
|
||||
export const PART_POSSESSION = "possession"
|
||||
|
||||
export class RollPartPossession extends RollPartSelect {
|
||||
|
||||
/** TODO: remplacer selectOption par un sélecteur plus sympa (avec image de compétence, par exemple? */
|
||||
|
||||
get code() { return PART_POSSESSION }
|
||||
get name() { return 'Possession' }
|
||||
get section() { return ROLLDIALOG_SECTION.CHOIX }
|
||||
|
||||
visible(rollData) { return this.isRollType(rollData, ROLL_TYPE_POSSESSION) }
|
||||
|
||||
loadRefs(rollData) {
|
||||
const refs = this.getRefs(rollData)
|
||||
const selected = this.getSelected(rollData)
|
||||
refs.all = this.$getActorConjurations(rollData)
|
||||
refs.isPersonnage = rollData.active.actor.isPersonnage()
|
||||
refs.isENI = rollData.active.actor.isEntiteNonIncarnee()
|
||||
|
||||
this.$selectPossession(rollData)
|
||||
}
|
||||
|
||||
choices(refs) { return refs.all }
|
||||
|
||||
$getActorConjurations(rollData) {
|
||||
const competences = rollData.active.actor.getDraconicOuPossession()
|
||||
return competences.map(RollPartPossession.extractPossession)
|
||||
}
|
||||
|
||||
static extractPossession(comp) {
|
||||
return {
|
||||
key: comp.id ?? comp.name,
|
||||
label: `${comp.system.categorie == CATEGORIES_COMPETENCES_CREATURES.possession.key ? 'Possession': 'Conjuration'} (${comp.name})`,
|
||||
value: comp.system.niveau,
|
||||
comp: comp
|
||||
}
|
||||
}
|
||||
|
||||
prepareContext(rollData) {
|
||||
this.$selectPossession(rollData)
|
||||
}
|
||||
getAjustements(rollData) {
|
||||
return []
|
||||
}
|
||||
async _onRender(rollDialog, context, options) {
|
||||
const select = rollDialog.element.querySelector(`roll-section[name="${this.code}"] select[name="select-possession"]`)
|
||||
|
||||
select?.addEventListener("change", e => {
|
||||
const selectOptions = e.currentTarget.options
|
||||
const index = selectOptions.selectedIndex
|
||||
this.$selectPossession(rollDialog.rollData, selectOptions[index]?.value)
|
||||
rollDialog.render()
|
||||
})
|
||||
}
|
||||
|
||||
$selectPossession(rollData, key) {
|
||||
this.selectByKey(rollData, key, 0)
|
||||
}
|
||||
|
||||
impactOtherPart(part, rollData) {
|
||||
if (this.visible(rollData)) {
|
||||
const current = this.getCurrent(rollData)
|
||||
switch (part.code) {
|
||||
case PART_CARAC: return part.filterCaracs(rollData, [this.getRefs(rollData).isPersonnage ? CARACS.REVE_ACTUEL : CARACS.REVE])
|
||||
case PART_COMP: return part.filterComps(rollData, [current.comp?.name])
|
||||
}
|
||||
}
|
||||
return undefined
|
||||
}
|
||||
|
||||
}
|
||||
@@ -14,7 +14,7 @@ export class RollTypePossession extends RollType {
|
||||
title(rollData) {
|
||||
const isEntite = this.isEntite(rollData)
|
||||
if (this.isDefense(rollData)) {
|
||||
return `résiste à la ${isEntite ? 'conjuration' : 'possession'}`
|
||||
return `résiste à la ${isEntite ? 'conjuration' : 'possession'} de`
|
||||
}
|
||||
return `tente de ${isEntite ? 'posséder' : 'conjurer'}`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user