feat: change game settings scope from world to client for critical hit animations and effects

This commit is contained in:
CPTN Cosmo 2026-02-10 16:59:54 +01:00
parent 24050067b2
commit 442442621d
No known key found for this signature in database

View file

@ -1,9 +1,30 @@
Hooks.once('init', () => { Hooks.once('init', () => {
// Register Settings // Register Settings
// Register Configuration - Scope Mode
game.settings.register('dh-immersive-crits', 'configurationMode', {
name: 'Configuration Mode',
hint: 'Choose whether settings are global (GM controls everyone) or client-specific (users choose their own). Requires a reload to take effect.',
scope: 'world',
config: true,
type: String,
choices: {
"world": "Global (GM Controlled)",
"client": "Per-User (Player Controlled)"
},
default: 'world',
onChange: () => {
// We can't easily force a reload, but the hint says it's required.
// Ideally we'd pop a dialog but a hint is sufficient for now.
}
});
const configMode = game.settings.get('dh-immersive-crits', 'configurationMode');
const targetScope = configMode;
game.settings.register('dh-immersive-crits', 'critAnimation', { game.settings.register('dh-immersive-crits', 'critAnimation', {
name: 'Critical Hit Animation', name: 'Critical Hit Animation',
hint: 'Select the visual effect for critical hit chat cards.', hint: 'Select the visual effect for critical hit chat cards.',
scope: 'world', scope: targetScope,
config: true, config: true,
type: String, type: String,
choices: { choices: {
@ -21,7 +42,7 @@ Hooks.once('init', () => {
game.settings.register('dh-immersive-crits', 'pulseColor', { game.settings.register('dh-immersive-crits', 'pulseColor', {
name: 'Pulse Color', name: 'Pulse Color',
hint: 'Select the color for the Pulse animation.', hint: 'Select the color for the Pulse animation.',
scope: 'world', scope: targetScope,
config: true, config: true,
type: String, type: String,
default: '#ff0000' default: '#ff0000'
@ -30,7 +51,7 @@ Hooks.once('init', () => {
game.settings.register('dh-immersive-crits', 'dsnCritEffect', { game.settings.register('dh-immersive-crits', 'dsnCritEffect', {
name: 'DiceSoNice Critical Effect', name: 'DiceSoNice Critical Effect',
hint: 'Select the DiceSoNice special effect to play on critical hits.', hint: 'Select the DiceSoNice special effect to play on critical hits.',
scope: 'world', scope: targetScope,
config: true, config: true,
type: String, type: String,
choices: { choices: {