Add settings for multiple expressions

239c3f1db74cc6aea5b7c341396362ec29d2b73e

Wolfsblvt <wolfsblvt@gmail.com>

3 files changed, +31 -3Ignore whitespace
public/scripts/extensions.js+10 -0
@@ -152,8 +152,18 @@ export const extension_settings = {
152152 refine_mode: false,
153153 },
154154 expressions: {
155+ /** @type {number} see `EXPRESSION_API` */
156+ api: undefined,
155157 /** @type {string[]} */
156158 custom: [],
159+ showDefault: false,
160+ translate: false,
161+ /** @type {string} */
162+ fallback_expression: undefined,
163+ /** @type {string} */
164+ llmPrompt: undefined,
165+ allowMultiple: true,
166+ rerollIfSame: false,
157167 },
158168 connectionManager: {
159169 selectedProfile: '',
public/scripts/extensions/expressions/index.js+11 -3
@@ -1588,10 +1588,10 @@ async function setExpression(character, expression, force = false) {
15881588
15891589 let spriteFile = sprite.files[0];
15901590
15911591 // Calculate next expression, if multiple are allowed
15921592 if (extension_settings.expressions.allowMultiple && sprite.files.length > 1) {
15931593 let possibleFiles = sprite.files;
15941594 if (extension_settings.expressions_reroll_if_sameexpressions.rerollIfSame) {
15951595 possibleFiles = possibleFiles.filter(x => x.imageSrc !== prevExpressionSrc);
15961596 }
15971597 spriteFile = possibleFiles[Math.floor(Math.random() * possibleFiles.length)];
@@ -2141,6 +2141,14 @@ function migrateSettings() {
21412141 extension_settings.expressions.translate = !!$(this).prop('checked');
21422142 saveSettingsDebounced();
21432143 });
2144+ $('#expressions_allow_multiple').prop('checked', extension_settings.expressions.allowMultiple).on('input', function () {
2145+ extension_settings.expressions.allowMultiple = !!$(this).prop('checked');
2146+ saveSettingsDebounced();
2147+ });
2148+ $('#expressions_reroll_if_same').prop('checked', extension_settings.expressions.rerollIfSame).on('input', function () {
2149+ extension_settings.expressions.rerollIfSame = !!$(this).prop('checked');
2150+ saveSettingsDebounced();
2151+ });
21442152 $('#expression_override_cleanup_button').on('click', onClickExpressionOverrideRemoveAllButton);
21452153 $(document).on('dragstart', '.expression', (e) => {
21462154 e.preventDefault();
public/scripts/extensions/expressions/settings.html+10 -0
@@ -52,6 +52,16 @@
5252 <i id="expression_custom_remove" class="menu_button fa-solid fa-xmark margin0" title="Remove"></i>
5353 </div>
5454 </div>
55+ <div class="m-b-1 m-t-1">
56+ <label class="checkbox_label" for="expressions_allow_multiple">
57+ <input id="expressions_allow_multiple" type="checkbox">
58+ <span data-i18n="Allow multiple files per expression">Allow multiple files per expression</span>
59+ </label>
60+ <label class="checkbox_label" for="expressions_reroll_if_same">
61+ <input id="expressions_reroll_if_same" type="checkbox">
62+ <span data-i18n="Re-roll if same expression is used again">Re-roll if same expression is used again</span>
63+ </label>
64+ </div>
5565 <div id="no_chat_expressions" data-i18n="Open a chat to see the character expressions.">
5666 Open a chat to see the character expressions.
5767 </div>