Corrections sur factions, aspects, degats et fiches PNJs
This commit is contained in:
@@ -1,3 +1,16 @@
|
||||
/**
|
||||
* Célestopol 1922 — Système FoundryVTT
|
||||
*
|
||||
* Célestopol 1922 est un jeu de rôle édité par Antre-Monde Éditions.
|
||||
* Ce système FoundryVTT est une implémentation indépendante et n'est pas
|
||||
* affilié à Antre-Monde Éditions,
|
||||
* mais a été réalisé avec l'autorisation d'Antre-Monde Éditions.
|
||||
*
|
||||
* @author LeRatierBretonnien
|
||||
* @copyright 2025–2026 LeRatierBretonnien
|
||||
* @license CC BY-NC-SA 4.0 – https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
|
||||
export { default as CelestopolCharacterSheet } from "./sheets/character-sheet.mjs"
|
||||
export { default as CelestopolNPCSheet } from "./sheets/npc-sheet.mjs"
|
||||
export { CelestopolAnomalySheet, CelestopolAspectSheet, CelestopolEquipmentSheet, CelestopolWeaponSheet, CelestopolArmureSheet } from "./sheets/item-sheets.mjs"
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
/**
|
||||
* Célestopol 1922 — Système FoundryVTT
|
||||
*
|
||||
* Célestopol 1922 est un jeu de rôle édité par Antre-Monde Éditions.
|
||||
* Ce système FoundryVTT est une implémentation indépendante et n'est pas
|
||||
* affilié à Antre-Monde Éditions,
|
||||
* mais a été réalisé avec l'autorisation d'Antre-Monde Éditions.
|
||||
*
|
||||
* @author LeRatierBretonnien
|
||||
* @copyright 2025–2026 LeRatierBretonnien
|
||||
* @license CC BY-NC-SA 4.0 – https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
|
||||
import { SYSTEM } from "../../config/system.mjs"
|
||||
|
||||
const { HandlebarsApplicationMixin } = foundry.applications.api
|
||||
@@ -46,6 +59,7 @@ export default class CelestopolActorSheet extends HandlebarsApplicationMixin(fou
|
||||
actor: this.document,
|
||||
system: this.document.system,
|
||||
source: this.document.toObject(),
|
||||
isGM: game.user.isGM,
|
||||
isEditMode: this.isEditMode,
|
||||
isPlayMode: this.isPlayMode,
|
||||
isEditable: this.isEditable,
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
/**
|
||||
* Célestopol 1922 — Système FoundryVTT
|
||||
*
|
||||
* Célestopol 1922 est un jeu de rôle édité par Antre-Monde Éditions.
|
||||
* Ce système FoundryVTT est une implémentation indépendante et n'est pas
|
||||
* affilié à Antre-Monde Éditions,
|
||||
* mais a été réalisé avec l'autorisation d'Antre-Monde Éditions.
|
||||
*
|
||||
* @author LeRatierBretonnien
|
||||
* @copyright 2025–2026 LeRatierBretonnien
|
||||
* @license CC BY-NC-SA 4.0 – https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
|
||||
const { HandlebarsApplicationMixin } = foundry.applications.api
|
||||
|
||||
export default class CelestopolItemSheet extends HandlebarsApplicationMixin(foundry.applications.sheets.ItemSheetV2) {
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
/**
|
||||
* Célestopol 1922 — Système FoundryVTT
|
||||
*
|
||||
* Célestopol 1922 est un jeu de rôle édité par Antre-Monde Éditions.
|
||||
* Ce système FoundryVTT est une implémentation indépendante et n'est pas
|
||||
* affilié à Antre-Monde Éditions,
|
||||
* mais a été réalisé avec l'autorisation d'Antre-Monde Éditions.
|
||||
*
|
||||
* @author LeRatierBretonnien
|
||||
* @copyright 2025–2026 LeRatierBretonnien
|
||||
* @license CC BY-NC-SA 4.0 – https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
|
||||
import CelestopolActorSheet from "./base-actor-sheet.mjs"
|
||||
import { SYSTEM } from "../../config/system.mjs"
|
||||
|
||||
@@ -18,6 +31,7 @@ export default class CelestopolCharacterSheet extends CelestopolActorSheet {
|
||||
depenseXp: CelestopolCharacterSheet.#onDepenseXp,
|
||||
supprimerXpLog: CelestopolCharacterSheet.#onSupprimerXpLog,
|
||||
rollMoonDie: CelestopolCharacterSheet.#onRollMoonDie,
|
||||
manageFactionAspects: CelestopolCharacterSheet.#onManageFactionAspects,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -58,6 +72,11 @@ export default class CelestopolCharacterSheet extends CelestopolActorSheet {
|
||||
context.anomalyTypes = SYSTEM.ANOMALY_TYPES
|
||||
context.factions = SYSTEM.FACTIONS
|
||||
context.woundLevels = SYSTEM.WOUND_LEVELS
|
||||
context.selectedPrimaryFactionId = game.celestopol?.normalizeFactionId(this.document.system.faction) || ""
|
||||
context.legacyPrimaryFactionValue = this.document.system.faction && !context.selectedPrimaryFactionId
|
||||
? `${this.document.system.faction}`.trim()
|
||||
: ""
|
||||
context.primaryFactionLabel = game.celestopol?.getFactionDisplayLabel(this.document.system.faction) || this.document.system.faction
|
||||
return context
|
||||
}
|
||||
|
||||
@@ -94,6 +113,18 @@ export default class CelestopolCharacterSheet extends CelestopolActorSheet {
|
||||
|
||||
case "factions":
|
||||
context.tab = context.tabs.factions
|
||||
context.factionAspectSummary = game.celestopol?.getFactionAspectSummary(this.document) ?? null
|
||||
context.factionLegend = [
|
||||
{ value: "+4", label: game.i18n.localize("CELESTOPOL.Faction.levelAllies") },
|
||||
{ value: "+3", label: game.i18n.localize("CELESTOPOL.Faction.levelAmicaux") },
|
||||
{ value: "+2", label: game.i18n.localize("CELESTOPOL.Faction.levelPartenaires") },
|
||||
{ value: "+1", label: game.i18n.localize("CELESTOPOL.Faction.levelBienveillants") },
|
||||
{ value: "0", label: game.i18n.localize("CELESTOPOL.Faction.levelNeutres") },
|
||||
{ value: "-1", label: game.i18n.localize("CELESTOPOL.Faction.levelMefiants") },
|
||||
{ value: "-2", label: game.i18n.localize("CELESTOPOL.Faction.levelHostiles") },
|
||||
{ value: "-3", label: game.i18n.localize("CELESTOPOL.Faction.levelRivaux") },
|
||||
{ value: "-4", label: game.i18n.localize("CELESTOPOL.Faction.levelEnnemis") },
|
||||
]
|
||||
context.factionRows = Object.entries(SYSTEM.FACTIONS).map(([id, fDef]) => {
|
||||
const val = this.document.system.factions[id]?.value ?? 0
|
||||
return {
|
||||
@@ -177,6 +208,7 @@ export default class CelestopolCharacterSheet extends CelestopolActorSheet {
|
||||
static async #onCreateArmure() {
|
||||
await this.document.createEmbeddedDocuments("Item", [{
|
||||
name: game.i18n.localize("TYPES.Item.armure"), type: "armure",
|
||||
system: { protection: 1, malus: 1 },
|
||||
}])
|
||||
}
|
||||
|
||||
@@ -199,6 +231,10 @@ export default class CelestopolCharacterSheet extends CelestopolActorSheet {
|
||||
await anomaly.update({ "system.usesRemaining": anomaly.system.level })
|
||||
}
|
||||
|
||||
static async #onManageFactionAspects() {
|
||||
await game.celestopol?.manageFactionAspects(this.document)
|
||||
}
|
||||
|
||||
/** Ouvre un dialogue pour dépenser de l'XP. */
|
||||
static async #onDepenseXp() {
|
||||
const actor = this.document
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
/**
|
||||
* Célestopol 1922 — Système FoundryVTT
|
||||
*
|
||||
* Célestopol 1922 est un jeu de rôle édité par Antre-Monde Éditions.
|
||||
* Ce système FoundryVTT est une implémentation indépendante et n'est pas
|
||||
* affilié à Antre-Monde Éditions,
|
||||
* mais a été réalisé avec l'autorisation d'Antre-Monde Éditions.
|
||||
*
|
||||
* @author LeRatierBretonnien
|
||||
* @copyright 2025–2026 LeRatierBretonnien
|
||||
* @license CC BY-NC-SA 4.0 – https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
|
||||
import CelestopolItemSheet from "./base-item-sheet.mjs"
|
||||
import { SYSTEM } from "../../config/system.mjs"
|
||||
|
||||
@@ -97,4 +110,22 @@ export class CelestopolArmureSheet extends CelestopolItemSheet {
|
||||
this.document.system.description, { async: true })
|
||||
return ctx
|
||||
}
|
||||
|
||||
_onRender(context, options) {
|
||||
super._onRender(context, options)
|
||||
|
||||
const protectionInput = this.element.querySelector('[name="system.protection"]')
|
||||
const malusInput = this.element.querySelector('[name="system.malus"]')
|
||||
const malusValue = this.element.querySelector('[data-armure-malus-value]')
|
||||
if (!protectionInput || !malusInput || !malusValue) return
|
||||
|
||||
const syncMalus = () => {
|
||||
malusInput.value = protectionInput.value
|
||||
malusValue.textContent = protectionInput.value
|
||||
}
|
||||
|
||||
syncMalus()
|
||||
protectionInput.addEventListener("input", syncMalus)
|
||||
protectionInput.addEventListener("change", syncMalus)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
/**
|
||||
* Célestopol 1922 — Système FoundryVTT
|
||||
*
|
||||
* Célestopol 1922 est un jeu de rôle édité par Antre-Monde Éditions.
|
||||
* Ce système FoundryVTT est une implémentation indépendante et n'est pas
|
||||
* affilié à Antre-Monde Éditions,
|
||||
* mais a été réalisé avec l'autorisation d'Antre-Monde Éditions.
|
||||
*
|
||||
* @author LeRatierBretonnien
|
||||
* @copyright 2025–2026 LeRatierBretonnien
|
||||
* @license CC BY-NC-SA 4.0 – https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
|
||||
import CelestopolActorSheet from "./base-actor-sheet.mjs"
|
||||
import { SYSTEM } from "../../config/system.mjs"
|
||||
|
||||
@@ -9,6 +22,7 @@ export default class CelestopolNPCSheet extends CelestopolActorSheet {
|
||||
window: { contentClasses: ["npc-content"] },
|
||||
actions: {
|
||||
createAspect: CelestopolNPCSheet.#onCreateAspect,
|
||||
createEquipment: CelestopolNPCSheet.#onCreateEquipment,
|
||||
createWeapon: CelestopolNPCSheet.#onCreateWeapon,
|
||||
createArmure: CelestopolNPCSheet.#onCreateArmure,
|
||||
rollMoonDie: CelestopolNPCSheet.#onRollMoonDie,
|
||||
@@ -53,9 +67,10 @@ export default class CelestopolNPCSheet extends CelestopolActorSheet {
|
||||
context.antagonisteStats = SYSTEM.ANTAGONISTE_STATS
|
||||
|
||||
const sys = this.document.system
|
||||
context.aspects = this.document.itemTypes.aspect ?? []
|
||||
context.weapons = this.document.itemTypes.weapon ?? []
|
||||
context.armures = this.document.itemTypes.armure ?? []
|
||||
context.aspects = this.document.itemTypes.aspect ?? []
|
||||
context.weapons = this.document.itemTypes.weapon.sort((a, b) => a.name.localeCompare(b.name))
|
||||
context.armures = this.document.itemTypes.armure.sort((a, b) => a.name.localeCompare(b.name))
|
||||
context.equipments = this.document.itemTypes.equipment.sort((a, b) => a.name.localeCompare(b.name))
|
||||
context.armorMalus = sys.armorMalus ?? 0
|
||||
|
||||
// Label effectif de chaque domaine selon le type de PNJ
|
||||
@@ -119,9 +134,16 @@ export default class CelestopolNPCSheet extends CelestopolActorSheet {
|
||||
}])
|
||||
}
|
||||
|
||||
static async #onCreateEquipment() {
|
||||
await this.document.createEmbeddedDocuments("Item", [{
|
||||
name: game.i18n.localize("TYPES.Item.equipment"), type: "equipment",
|
||||
}])
|
||||
}
|
||||
|
||||
static async #onCreateArmure() {
|
||||
await this.document.createEmbeddedDocuments("Item", [{
|
||||
name: game.i18n.localize("TYPES.Item.armure"), type: "armure",
|
||||
system: { protection: 1, malus: 1 },
|
||||
}])
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user