Allow activating chars with last message hidden on continue and quiet
| @@ -870,14 +870,14 @@ async function generateGroupWrapper(by_auto_mode, type = null, params = {}) { | |||
| 870 | if (params && typeof params.force_chid == 'number') { | 870 | if (params && typeof params.force_chid == 'number') { |
| 871 | activatedMembers = [params.force_chid]; | 871 | activatedMembers = [params.force_chid]; |
| 872 | } else if (type === 'quiet') { | 872 | } else if (type === 'quiet') { |
| 873 | activatedMembers = activateSwipe(group.members).slice(0, 1); | 873 | activatedMembers = activateSwipe(group.members, { allowSystem: true }).slice(0, 1); |
| 874 | 874 | ||
| 875 | if (activatedMembers.length === 0) { | 875 | if (activatedMembers.length === 0) { |
| 876 | activatedMembers = activateListOrder(group.members.slice(0, 1)); | 876 | activatedMembers = activateListOrder(group.members.slice(0, 1)); |
| 877 | } | 877 | } |
| 878 | } | 878 | } |
| 879 | else if (type === 'swipe' || type === 'continue') { | 879 | else if (type === 'swipe' || type === 'continue') { |
| 880 | activatedMembers = activateSwipe(group.members); | 880 | activatedMembers = activateSwipe(group.members, { allowSystem: type === 'continue' }); |
| 881 | 881 | ||
| 882 | if (activatedMembers.length === 0) { | 882 | if (activatedMembers.length === 0) { |
| 883 | toastr.warning(t`Deleted group member swiped. To get a reply, add them back to the group.`); | 883 | toastr.warning(t`Deleted group member swiped. To get a reply, add them back to the group.`); |
| @@ -984,15 +984,21 @@ function activateImpersonate(members) { | |||
| 984 | /** | 984 | /** |
| 985 | * Activates a group member based on the last message. | 985 | * Activates a group member based on the last message. |
| 986 | * @param {string[]} members Array of group member avatar ids | 986 | * @param {string[]} members Array of group member avatar ids |
| 987 | * @param {Object} [options] Options object | ||
| 988 | * @param {boolean} [options.allowSystem] Whether to allow system messages | ||
| 987 | * @returns {number[]} Array of character ids | 989 | * @returns {number[]} Array of character ids |
| 988 | */ | 990 | */ |
| 989 | function activateSwipe(members) { | 991 | function activateSwipe(members, { allowSystem = false } = {}) { |
| 990 | let activatedNames = []; | 992 | let activatedNames = []; |
| 991 | const lastMessage = chat[chat.length - 1]; | 993 | const lastMessage = chat[chat.length - 1]; |
| 992 | 994 | ||
| 993 | if (lastMessage.is_user || lastMessage.is_system || lastMessage.extra?.type === system_message_types.NARRATOR) { | 995 | if (!lastMessage) { |
| 996 | return []; | ||
| 997 | } | ||
| 998 | |||
| 999 | if (lastMessage.is_user || (!allowSystem && lastMessage.is_system) || lastMessage.extra?.type === system_message_types.NARRATOR) { | ||
| 994 | for (const message of chat.slice().reverse()) { | 1000 | for (const message of chat.slice().reverse()) { |
| 995 | if (message.is_user || message.is_system || message.extra?.type === system_message_types.NARRATOR) { | 1001 | if (message.is_user || (!allowSystem && message.is_system) || message.extra?.type === system_message_types.NARRATOR) { |
| 996 | continue; | 1002 | continue; |
| 997 | } | 1003 | } |
| 998 | 1004 | ||