Add ranged attacks for monsters
Release Creation / build (release) Successful in 1m13s

This commit is contained in:
2026-04-29 22:24:42 +02:00
parent 8123b53f75
commit ec0e522145
4 changed files with 33 additions and 1 deletions
+19
View File
@@ -67,6 +67,7 @@ Hooks.once("init", () => {
SYSTEM,
rollMoonStandalone: (actor = null) => CelestopolRoll.rollMoonStandalone(actor),
manageFactionAspects: (actor = null) => _manageFactionAspects(actor),
resetFactionAspects: () => _resetFactionAspects(),
getFactionAspectState: () => _getFactionAspectState(),
getFactionAspectSummary: (actor = null) => _getFactionAspectSummary(actor),
getFactionDisplayLabel: (value) => _getFactionDisplayLabel(value),
@@ -1218,6 +1219,24 @@ async function _setFactionAspectState(state) {
return cleanState
}
async function _resetFactionAspects() {
if (!game.user.isGM) {
ui.notifications.warn(game.i18n.localize("CELESTOPOL.FactionAspect.gmOnly"))
return
}
const confirmed = await foundry.applications.api.DialogV2.confirm({
window: { title: game.i18n.localize("CELESTOPOL.FactionAspect.resetTitle") },
content: `<p>${game.i18n.localize("CELESTOPOL.FactionAspect.resetConfirm")}</p>`,
yes: { label: game.i18n.localize("CELESTOPOL.FactionAspect.resetConfirmYes"), icon: "fas fa-redo" },
no: { label: game.i18n.localize("Cancel"), icon: "fas fa-times" },
rejectClose: false,
})
if (!confirmed) return
const state = _getFactionAspectState()
await _setFactionAspectState({ ...state, activatedAspects: [] })
ui.notifications.info(game.i18n.localize("CELESTOPOL.FactionAspect.resetSuccess"))
}
function _refreshFactionAspectSheets() {
for (const actor of game.actors.contents) {
if (actor.type !== "character") continue
+6 -1
View File
@@ -189,7 +189,12 @@
"renforts": "Renforts",
"renseignements": "Renseignements",
"ressources": "Ressources",
"surveillance": "Surveillance"
"surveillance": "Surveillance",
"resetButton": "Réinitialiser",
"resetTitle": "Réinitialiser les Aspects de faction",
"resetConfirm": "Voulez-vous réinitialiser tous les Aspects de faction mobilisés ? Cette action efface la réserve de scénario en cours.",
"resetConfirmYes": "Réinitialiser",
"resetSuccess": "Aspects de faction réinitialisés pour le nouveau scénario."
},
"Track": {
"blessures": "Blessures",
@@ -32,6 +32,7 @@ export default class CelestopolCharacterSheet extends CelestopolActorSheet {
supprimerXpLog: CelestopolCharacterSheet.#onSupprimerXpLog,
rollMoonDie: CelestopolCharacterSheet.#onRollMoonDie,
manageFactionAspects: CelestopolCharacterSheet.#onManageFactionAspects,
resetFactionAspects: CelestopolCharacterSheet.#onResetFactionAspects,
},
}
@@ -245,6 +246,10 @@ export default class CelestopolCharacterSheet extends CelestopolActorSheet {
await game.celestopol?.manageFactionAspects(this.document)
}
static async #onResetFactionAspects() {
await game.celestopol?.resetFactionAspects()
}
/** Ouvre un dialogue pour dépenser de l'XP. */
static async #onDepenseXp() {
const actor = this.document
+3
View File
@@ -7,6 +7,9 @@
<a class="faction-aspect-manage" data-action="manageFactionAspects">
<i class="fa-solid fa-sliders"></i> {{localize "CELESTOPOL.FactionAspect.manage"}}
</a>
<a class="faction-aspect-reset" data-action="resetFactionAspects">
<i class="fa-solid fa-rotate-left"></i> {{localize "CELESTOPOL.FactionAspect.resetButton"}}
</a>
{{/if}}
</div>