diff --git a/src/lang/en.ts b/src/lang/en.ts
index f2091747..bc12e38e 100644
--- a/src/lang/en.ts
+++ b/src/lang/en.ts
@@ -633,4 +633,15 @@ export const languageEnglish = {
lowLevelAccessConfirm: "This character uses Low Level Access. which means this character can access the AI model and your storage directly. do you really want to import this character?",
triggerLowLevelOnly: "This trigger only works with Low Level Access. to enable this trigger, enable Low Level Access in advanced settings in the character.",
truthy: "Truthy",
+ extractRegex: "Extract Text with Regex",
+ runImgGen: "Run Image Generation",
+ cutChat: "Cut Chat",
+ modifyChat: "Modify Chat",
+ regex: "Regex",
+ flags: "Flags",
+ resultFormat: "Result Format",
+ negPrompt: "Negative Prompt",
+ start: "Start",
+ end: "End",
+ index: "Index",
}
\ No newline at end of file
diff --git a/src/lib/SideBars/Scripts/TriggerData.svelte b/src/lib/SideBars/Scripts/TriggerData.svelte
index bac6cba7..e23e3d76 100644
--- a/src/lib/SideBars/Scripts/TriggerData.svelte
+++ b/src/lib/SideBars/Scripts/TriggerData.svelte
@@ -203,7 +203,7 @@
location: 'historyend'
}
}
- if(effect.type === 'setvar'){
+ else if(effect.type === 'setvar'){
effect = {
type: 'setvar',
var: '',
@@ -211,38 +211,38 @@
operator: '='
}
}
- if(effect.type === 'impersonate'){
+ else if(effect.type === 'impersonate'){
effect = {
type: 'impersonate',
role: 'char',
value: ''
}
}
- if(effect.type === 'command'){
+ else if(effect.type === 'command'){
effect = {
type: 'command',
value: ''
}
}
- if(effect.type === 'stop'){
+ else if(effect.type === 'stop'){
effect = {
type: 'stop',
}
}
- if(effect.type === 'runtrigger'){
+ else if(effect.type === 'runtrigger'){
effect = {
type: 'runtrigger',
value: ''
}
}
- if(effect.type === 'runLLM'){
+ else if(effect.type === 'runLLM'){
effect = {
type: 'runLLM',
value: '',
inputVar: ''
}
}
- if(effect.type === 'checkSimilarity'){
+ else if(effect.type === 'checkSimilarity'){
effect = {
type: 'checkSimilarity',
source: '',
@@ -250,7 +250,7 @@
inputVar: ''
}
}
- if(effect.type === 'showAlert'){
+ else if(effect.type === 'showAlert'){
effect = {
type: 'showAlert',
alertType: 'normal',
@@ -258,23 +258,58 @@
inputVar: ''
}
}
+ else if(effect.type === 'extractRegex'){
+ effect ={
+ type: 'extractRegex',
+ value: '',
+ regex: '',
+ flags: '',
+ inputVar: '',
+ result:''
+ }
+ }
+ else if(effect.type === 'runImgGen'){
+ effect = {
+ type: 'runImgGen',
+ value: '',
+ negValue: '',
+ inputVar: ''
+ }
+ }
+ else if(effect.type === 'sendAIprompt'){
+ effect = {
+ type: 'sendAIprompt'
+ }
+ }
+ else if(effect.type === 'cutchat'){
+ effect = {
+ type: 'cutchat',
+ start: '',
+ end: ''
+ }
+ }
+ else if(effect.type === 'modifychat'){
+ effect = {
+ type: 'modifychat',
+ value: '',
+ index: ''
+ }
+ }
}}>
{language.triggerEffSetVar}
{language.triggerEffImperson}
{language.triggerEffCommand}
- {#if effect.type === 'systemprompt' || value.type === 'start'}
- {language.triggerEffSysPrompt}
- {/if}
- {#if effect.type === 'stop' || value.type === 'start'}
- {language.triggerEffStop}
- {/if}
+ {language.triggerEffSysPrompt}
+ {language.triggerEffStop}
{language.triggerEffRunTrigger}
{language.triggerEffRunLLM}
{language.triggerEffCheckSim}
{language.triggerEffShowAlert}
- {#if effect.type === 'sendAIprompt' || value.type === 'output'}
- {language.triggerEffectSendAI}
- {/if}
+ {language.triggerEffectSendAI}
+ {language.extractRegex}
+ {language.runImgGen}
+ {language.cutChat}
+ {language.modifyChat}
{#if
(value.type !== 'start' && (effect.type === 'systemprompt' || effect.type === 'stop')) ||
@@ -283,7 +318,14 @@
{language.invaildTriggerEffect}
{/if}
{#if
- !lowLevelAble && (effect.type === 'runLLM' || effect.type === 'checkSimilarity' || effect.type === 'showAlert' || effect.type === 'sendAIprompt')
+ !lowLevelAble && (
+ effect.type === 'runLLM' ||
+ effect.type === 'checkSimilarity' ||
+ effect.type === 'showAlert' ||
+ effect.type === 'sendAIprompt' ||
+ effect.type === 'extractRegex' ||
+ effect.type === 'runImgGen'
+ )
}
{language.triggerLowLevelOnly}
@@ -363,6 +405,51 @@
{language.value}
{/if}
+
+ {#if effect.type === 'extractRegex'}
+ {language.value}
+
+
+ {language.regex}
+
+
+ {language.flags}
+
+
+ {language.resultFormat}
+
+
+ {language.resultStoredVar}
+
+ {/if}
+
+ {#if effect.type === 'runImgGen'}
+ {language.prompt}
+
+
+ {language.negPrompt}
+
+
+ {language.resultStoredVar}
+
+ {/if}
+
+ {#if effect.type === 'cutchat'}
+ {language.start}
+
+
+ {language.end}
+
+ {/if}
+
+ {#if effect.type === 'modifychat'}
+ {language.index}
+
+
+ {language.value}
+
+
+ {/if}
{/each}
diff --git a/src/ts/process/triggers.ts b/src/ts/process/triggers.ts
index e777ea59..d9d99d69 100644
--- a/src/ts/process/triggers.ts
+++ b/src/ts/process/triggers.ts
@@ -23,7 +23,7 @@ export interface triggerscript{
export type triggerCondition = triggerConditionsVar|triggerConditionsExists|triggerConditionsChatIndex
-export type triggerEffect = triggerEffectImgGen|triggerEffectRegex|triggerEffectRunLLM|triggerEffectCheckSimilarity|triggerEffectSendAIprompt|triggerEffectShowAlert|triggerEffectSetvar|triggerEffectSystemPrompt|triggerEffectImpersonate|triggerEffectCommand|triggerEffectStop|triggerEffectRunTrigger
+export type triggerEffect = triggerEffectCutChat|triggerEffectModifyChat|triggerEffectImgGen|triggerEffectRegex|triggerEffectRunLLM|triggerEffectCheckSimilarity|triggerEffectSendAIprompt|triggerEffectShowAlert|triggerEffectSetvar|triggerEffectSystemPrompt|triggerEffectImpersonate|triggerEffectCommand|triggerEffectStop|triggerEffectRunTrigger
export type triggerConditionsVar = {
type:'var'|'value'
@@ -52,6 +52,18 @@ export interface triggerEffectSetvar{
value:string
}
+export interface triggerEffectCutChat{
+ type: 'cutchat',
+ start: string,
+ end: string
+}
+
+export interface triggerEffectModifyChat{
+ type: 'modifychat',
+ index: string,
+ value: string
+}
+
export interface triggerEffectSystemPrompt{
type: 'systemprompt',
location: 'start'|'historyend'|'promptend',
@@ -345,6 +357,20 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{
}
break
}
+ case 'cutchat':{
+ const start = Number(risuChatParser(effect.start,{chara:char}))
+ const end = Number(risuChatParser(effect.end,{chara:char}))
+ chat.message = chat.message.slice(start,end)
+ break
+ }
+ case 'modifychat':{
+ const index = Number(risuChatParser(effect.index,{chara:char}))
+ const value = risuChatParser(effect.value,{chara:char})
+ if(chat.message[index]){
+ chat.message[index].data = value
+ }
+ break
+ }
// low level access only
case 'showAlert':{