fix: retours review - validation de phase, drop de véhicule et dés de Réserve
- resetPhaseLimits ne touche plus au compteur de phase (seul le dialogue d'attribution du MJ l'avance) : évite le double-incrément quand joueur et MJ valident la même phase. - _onDropActor : import d'une copie monde pour un véhicule déposé depuis un compendium, confirmation avant de transférer un véhicule déjà rattaché à un autre Groupe, try/catch avec retour utilisateur. - #onClickRadioHexa : garde isEditable (pas d'erreur de permission pour un utilisateur non éditeur).
This commit is contained in:
@@ -113,16 +113,45 @@ export default class VermineGroupSheetV2 extends VermineBaseActorSheet {
|
||||
/**
|
||||
* Dépôt d'un acteur Véhicule sur la fiche : lie le véhicule au Groupe
|
||||
* (system.ownerId) au lieu de le dupliquer, puis affiche la liste.
|
||||
* Gère les dépôts depuis un compendium (copie importée dans le monde)
|
||||
* et demande confirmation si le véhicule appartient déjà à un autre Groupe.
|
||||
* @override
|
||||
*/
|
||||
async _onDropActor(event, data) {
|
||||
const actor = data instanceof foundry.abstract.Document ? data : await fromUuid(data.uuid)
|
||||
if (actor?.type === "vehicle") {
|
||||
let actor = data instanceof foundry.abstract.Document ? data : await fromUuid(data.uuid)
|
||||
if (actor?.type !== "vehicle") {
|
||||
return super._onDropActor?.(event, data)
|
||||
}
|
||||
// Véhicule issu d'un compendium : importer une copie dans le monde.
|
||||
if (actor.compendium) {
|
||||
try {
|
||||
const copy = await game.actors.importFromCompendium(actor.compendium, actor._id, { renderSheet: false })
|
||||
if (!copy) return
|
||||
actor = copy
|
||||
} catch {
|
||||
ui.notifications.warn(game.i18n.localize("VERMINE.vehicle_import_failed"))
|
||||
return
|
||||
}
|
||||
}
|
||||
// Véhicule déjà rattaché à un autre Groupe : confirmation avant transfert.
|
||||
const currentOwner = actor.system?.ownerId
|
||||
if (currentOwner && currentOwner !== this.document.id) {
|
||||
const other = game.actors.get(currentOwner)
|
||||
const content = game.i18n.localize("VERMINE.vehicle_assign_confirm").replace("{group}", other?.name ?? currentOwner)
|
||||
const confirmed = await Dialog.confirm({
|
||||
title: game.i18n.localize("VERMINE.vehicle_assign"),
|
||||
content,
|
||||
defaultYes: false
|
||||
})
|
||||
if (!confirmed) return
|
||||
}
|
||||
try {
|
||||
await actor.update({ "system.ownerId": this.document.id })
|
||||
this.render()
|
||||
} catch {
|
||||
ui.notifications.warn(game.i18n.localize("VERMINE.vehicle_assign_failed"))
|
||||
return
|
||||
}
|
||||
return super._onDropActor?.(event, data)
|
||||
this.render()
|
||||
}
|
||||
|
||||
// Actions : délégation aux applications AppV1 existantes pour TotemPicker/ActorPicker
|
||||
@@ -192,7 +221,7 @@ export default class VermineGroupSheetV2 extends VermineBaseActorSheet {
|
||||
/** Valide la phase d'Expérience courante du Groupe et réinitialise les limites. */
|
||||
static async #onValidatePhase() {
|
||||
const { VermineExperience } = await import("../../system/experience.mjs")
|
||||
await VermineExperience.completePhase(this.document)
|
||||
await VermineExperience.resetPhaseLimits(this.document)
|
||||
ui.notifications.info(game.i18n.localize("VERMINE.validate_phase_done"))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user