Add 'setspriteoverride' optional 'name' argument
| @@ -667,7 +667,14 @@ export async function sendExpressionCall(spriteFolderName, expression, { force = | ||
| 667 | 667 | } |
| 668 | 668 | } |
| 669 | 669 | |
| 670 | -async function setSpriteFolderCommand(_, folder) { | |
| 670 | +/** | |
| 671 | + * Slash command callback for /setspritefolder | |
| 672 | + * @param {object} param Command parameters | |
| 673 | + * @param {string} param.name Character name override | |
| 674 | + * @param {string} folder Folder path, can be full or partial with leading slash | |
| 675 | + * @returns {Promise<string>} Empty string | |
| 676 | + */ | |
| 677 | +async function setSpriteFolderCommand({ name }, folder) { | |
| 671 | 678 | if (!folder) { |
| 672 | 679 | console.log('Clearing sprite set'); |
| 673 | 680 | folder = ''; |
| @@ -675,8 +682,12 @@ async function setSpriteFolderCommand(_, folder) { | ||
| 675 | 682 | |
| 676 | 683 | if (folder.startsWith('/') || folder.startsWith('\\')) { |
| 677 | 684 | const currentLastMessage = getLastCharacterMessage(); |
| 685 | + if (currentLastMessage.name === null && !name) { | |
| 686 | + toastr.error('At least one character message is required to set a sprites subfolder.', 'Provide the name with "name=" argument.'); | |
| 687 | + return ''; | |
| 688 | + } | |
| 678 | 689 | folder = folder.slice(1); |
| 679 | 690 | folder = `${name || currentLastMessage.name}/${folder}`; |
| 680 | 691 | } |
| 681 | 692 | |
| 682 | 693 | $('#expression_override').val(folder.trim()); |
| @@ -2322,6 +2333,16 @@ function migrateSettings() { | ||
| 2322 | 2333 | name: 'expression-folder-override', |
| 2323 | 2334 | aliases: ['spriteoverride', 'costume'], |
| 2324 | 2335 | callback: setSpriteFolderCommand, |
| 2336 | + namedArgumentList:[ | |
| 2337 | + SlashCommandNamedArgument.fromProps({ | |
| 2338 | + name: 'name', | |
| 2339 | + description: 'Character name to set a subfolder for. If not provided, the character who last sent a message will be used.', | |
| 2340 | + typeList: [ARGUMENT_TYPE.STRING], | |
| 2341 | + enumProvider: commonEnumProviders.characters('character'), | |
| 2342 | + isRequired: false, | |
| 2343 | + acceptsMultiple: false, | |
| 2344 | + }), | |
| 2345 | + ], | |
| 2325 | 2346 | unnamedArgumentList: [ |
| 2326 | 2347 | new SlashCommandArgument( |
| 2327 | 2348 | 'optional folder', [ARGUMENT_TYPE.STRING], false, |