Update compendium and welcom chat message
Some checks failed
Release Creation / build (release) Failing after 1m41s
Some checks failed
Release Creation / build (release) Failing after 1m41s
This commit is contained in:
@@ -40,6 +40,7 @@ import {
|
||||
|
||||
const DAMAGE_APPLICATION_FLAG = "damageApplication"
|
||||
const FACTION_ASPECT_STATE_SETTING = "factionAspectState"
|
||||
const WELCOME_SCENE_IMPORTED_SETTING = "welcomeSceneImported"
|
||||
|
||||
/* ─── Init hook ──────────────────────────────────────────────────────────── */
|
||||
|
||||
@@ -156,7 +157,7 @@ Hooks.once("init", () => {
|
||||
|
||||
/* ─── Ready hook ─────────────────────────────────────────────────────────── */
|
||||
|
||||
Hooks.once("ready", () => {
|
||||
Hooks.once("ready", async () => {
|
||||
console.log(`${SYSTEM_ID} | System ready`)
|
||||
|
||||
// Socket handler for GM-only operations (e.g. wound application)
|
||||
@@ -179,7 +180,10 @@ Hooks.once("ready", () => {
|
||||
_migrateObsoleteItems()
|
||||
_migrateIntegerTracks()
|
||||
_setupAnomaliesFolder()
|
||||
await _setupWelcomeScene()
|
||||
}
|
||||
|
||||
await _createWelcomeChatMessage()
|
||||
})
|
||||
|
||||
/** Supprime les items dont le type n'est plus reconnu par le système. */
|
||||
@@ -349,6 +353,79 @@ function _registerSettings() {
|
||||
type: Object,
|
||||
default: _getDefaultFactionAspectState(),
|
||||
})
|
||||
game.settings.register(SYSTEM_ID, WELCOME_SCENE_IMPORTED_SETTING, {
|
||||
scope: "world",
|
||||
config: false,
|
||||
type: Boolean,
|
||||
default: false,
|
||||
})
|
||||
}
|
||||
|
||||
async function _createWelcomeChatMessage() {
|
||||
const activeGM = game.users.activeGM
|
||||
if (!game.user.isGM || (activeGM && activeGM.id !== game.user.id)) return
|
||||
|
||||
const helpPack = game.packs.get(`${SYSTEM_ID}.aides-de-jeu`)
|
||||
const helpDocs = helpPack ? await helpPack.getDocuments() : []
|
||||
const helpEntry = helpDocs[0] ?? null
|
||||
const helpReference = helpEntry
|
||||
? `@UUID[${helpEntry.uuid}]{${helpEntry.name}}`
|
||||
: `**${helpPack?.metadata?.label ?? game.i18n.localize("CELESTOPOL.Welcome.helpFallback")}**`
|
||||
const rawContent = `
|
||||
<div class="cel-welcome-message chat-system-card">
|
||||
<div class="welcome-header">
|
||||
<span class="welcome-mark">✦</span>
|
||||
<span class="welcome-title">${game.i18n.localize("CELESTOPOL.Welcome.title")}</span>
|
||||
</div>
|
||||
<div class="welcome-body">
|
||||
<p>${game.i18n.localize("CELESTOPOL.Welcome.intro")}</p>
|
||||
<div class="welcome-note">
|
||||
<span class="welcome-label">${game.i18n.localize("CELESTOPOL.Welcome.helpLabel")}</span>
|
||||
<span class="welcome-value">${game.i18n.format("CELESTOPOL.Welcome.helpCompendium", { help: helpReference })}</span>
|
||||
</div>
|
||||
<div class="welcome-note">
|
||||
<span class="welcome-label">${game.i18n.localize("CELESTOPOL.Welcome.bookLabel")}</span>
|
||||
<span class="welcome-value"><a href="https://antre-monde.com/produit/celestopol-1922-le-jeu-de-role-livre-de-base/" target="_blank" rel="noopener noreferrer">${game.i18n.localize("CELESTOPOL.Welcome.bookLinkLabel")}</a></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
|
||||
await ChatMessage.create({
|
||||
style: CONST.CHAT_MESSAGE_STYLES.OOC,
|
||||
speaker: { alias: game.system.title },
|
||||
content: await foundry.applications.ux.TextEditor.implementation.enrichHTML(rawContent, { async: true }),
|
||||
})
|
||||
}
|
||||
|
||||
async function _setupWelcomeScene() {
|
||||
const activeGM = game.users.activeGM
|
||||
if (!game.user.isGM || (activeGM && activeGM.id !== game.user.id)) return
|
||||
if (game.settings.get(SYSTEM_ID, WELCOME_SCENE_IMPORTED_SETTING)) return
|
||||
|
||||
const sceneName = "Accueil Celestopol 1922"
|
||||
let scene = game.scenes.getName(sceneName)
|
||||
|
||||
if (!scene) {
|
||||
const pack = game.packs.get(`${SYSTEM_ID}.scenes`)
|
||||
if (!pack) {
|
||||
console.warn(`${SYSTEM_ID} | Compendium de scènes introuvable`)
|
||||
return
|
||||
}
|
||||
|
||||
const docs = await pack.getDocuments()
|
||||
const sourceScene = docs.find(doc => doc.name === sceneName)
|
||||
if (!sourceScene) {
|
||||
console.warn(`${SYSTEM_ID} | Scène d'accueil introuvable dans le compendium`)
|
||||
return
|
||||
}
|
||||
|
||||
scene = await Scene.create(sourceScene.toObject())
|
||||
}
|
||||
|
||||
await scene.activate()
|
||||
await scene.view()
|
||||
await game.settings.set(SYSTEM_ID, WELCOME_SCENE_IMPORTED_SETTING, true)
|
||||
}
|
||||
|
||||
/* ─── Template preload ───────────────────────────────────────────────────── */
|
||||
|
||||
Reference in New Issue
Block a user