diff --git a/Sequence/0.2.0/Sequence.js b/Sequence/0.2.0/Sequence.js index effa2f3efa..af8e099486 100644 --- a/Sequence/0.2.0/Sequence.js +++ b/Sequence/0.2.0/Sequence.js @@ -3260,7 +3260,7 @@ var Sequence = Sequence || (() => { const handleInput = (msg) => { if (msg.type !== 'api') return; if (msg.content.split(' ')[0] !== CMD_TOKEN) return; - if (!playerIsGM(msg.playerid)) { + if (!playerIsGM(msg.playerid) && msg.playerid !== 'API') { replyError(msg, 'Only the GM can use Sequence commands.'); return; } @@ -5395,42 +5395,41 @@ if (opacityReg) opacityReg.set(obj, 0.5);` return { checkInstall, registerEventHandlers, - API: { - // Extension registration - registerAttribute, - registerPlaybackConstant, - registerEasing, - generateExtensionHandout, - - // Registry introspection — returns struct or null - getAttribute: getAttrReg, - getFunction: (qualName) => { - const parts = qualName.split('.'); - const ns = parts.length > 1 ? parts.slice(0, -1).join('.') : 'core'; - const name = parts[parts.length - 1]; - return FN_REGISTRY[`${ns}/${name}`] || null; - }, - getConstant: (qualName) => { - const parts = qualName.split('.'); - const ns = parts.length > 1 ? parts.slice(0, -1).join('.') : 'core'; - const name = parts[parts.length - 1]; - return CONST_REGISTRY[`${ns}/${name}`] || null; - }, - getEasing, - - // Playback control — for scripts that trigger playback programmatically - loadRecording, - startPlayback, - stopPlayback, - pausePlayback, - resumePlayback, - startRecording, - stopRecording, - saveRecording, - - // Notify Sequence that a virtual attribute changed (for recording) - notifyChange, + + // Extension registration + registerAttribute, + registerPlaybackConstant, + registerEasing, + generateExtensionHandout, + + // Registry introspection — returns struct or null + getAttribute: getAttrReg, + getFunction: (qualName) => { + const parts = qualName.split('.'); + const ns = parts.length > 1 ? parts.slice(0, -1).join('.') : 'core'; + const name = parts[parts.length - 1]; + return FN_REGISTRY[`${ns}/${name}`] || null; + }, + getConstant: (qualName) => { + const parts = qualName.split('.'); + const ns = parts.length > 1 ? parts.slice(0, -1).join('.') : 'core'; + const name = parts[parts.length - 1]; + return CONST_REGISTRY[`${ns}/${name}`] || null; }, + getEasing, + + // Playback control — for scripts that trigger playback programmatically + loadRecording, + startPlayback, + stopPlayback, + pausePlayback, + resumePlayback, + startRecording, + stopRecording, + saveRecording, + + // Notify Sequence that a virtual attribute changed (for recording) + notifyChange, }; })(); @@ -5438,6 +5437,4 @@ on('ready', () => { 'use strict'; Sequence.checkInstall(); Sequence.registerEventHandlers(); - Object.assign(Sequence, Sequence.API); - delete Sequence.API; }); \ No newline at end of file diff --git a/Sequence/Sequence.js b/Sequence/Sequence.js index effa2f3efa..af8e099486 100644 --- a/Sequence/Sequence.js +++ b/Sequence/Sequence.js @@ -3260,7 +3260,7 @@ var Sequence = Sequence || (() => { const handleInput = (msg) => { if (msg.type !== 'api') return; if (msg.content.split(' ')[0] !== CMD_TOKEN) return; - if (!playerIsGM(msg.playerid)) { + if (!playerIsGM(msg.playerid) && msg.playerid !== 'API') { replyError(msg, 'Only the GM can use Sequence commands.'); return; } @@ -5395,42 +5395,41 @@ if (opacityReg) opacityReg.set(obj, 0.5);` return { checkInstall, registerEventHandlers, - API: { - // Extension registration - registerAttribute, - registerPlaybackConstant, - registerEasing, - generateExtensionHandout, - - // Registry introspection — returns struct or null - getAttribute: getAttrReg, - getFunction: (qualName) => { - const parts = qualName.split('.'); - const ns = parts.length > 1 ? parts.slice(0, -1).join('.') : 'core'; - const name = parts[parts.length - 1]; - return FN_REGISTRY[`${ns}/${name}`] || null; - }, - getConstant: (qualName) => { - const parts = qualName.split('.'); - const ns = parts.length > 1 ? parts.slice(0, -1).join('.') : 'core'; - const name = parts[parts.length - 1]; - return CONST_REGISTRY[`${ns}/${name}`] || null; - }, - getEasing, - - // Playback control — for scripts that trigger playback programmatically - loadRecording, - startPlayback, - stopPlayback, - pausePlayback, - resumePlayback, - startRecording, - stopRecording, - saveRecording, - - // Notify Sequence that a virtual attribute changed (for recording) - notifyChange, + + // Extension registration + registerAttribute, + registerPlaybackConstant, + registerEasing, + generateExtensionHandout, + + // Registry introspection — returns struct or null + getAttribute: getAttrReg, + getFunction: (qualName) => { + const parts = qualName.split('.'); + const ns = parts.length > 1 ? parts.slice(0, -1).join('.') : 'core'; + const name = parts[parts.length - 1]; + return FN_REGISTRY[`${ns}/${name}`] || null; + }, + getConstant: (qualName) => { + const parts = qualName.split('.'); + const ns = parts.length > 1 ? parts.slice(0, -1).join('.') : 'core'; + const name = parts[parts.length - 1]; + return CONST_REGISTRY[`${ns}/${name}`] || null; }, + getEasing, + + // Playback control — for scripts that trigger playback programmatically + loadRecording, + startPlayback, + stopPlayback, + pausePlayback, + resumePlayback, + startRecording, + stopRecording, + saveRecording, + + // Notify Sequence that a virtual attribute changed (for recording) + notifyChange, }; })(); @@ -5438,6 +5437,4 @@ on('ready', () => { 'use strict'; Sequence.checkInstall(); Sequence.registerEventHandlers(); - Object.assign(Sequence, Sequence.API); - delete Sequence.API; }); \ No newline at end of file