diff --git a/aiserver.py b/aiserver.py index f392ffb5..1d33eb27 100644 --- a/aiserver.py +++ b/aiserver.py @@ -123,6 +123,8 @@ class vars: regex_sl = re.compile(r'\n*(?<=.) *\n(.|\n)*') # Pattern for limiting the output to a single line acregex_ai = re.compile(r'\n* *>(.|\n)*') # Pattern for matching adventure actions from the AI so we can remove them acregex_ui = re.compile(r'^ *(>.*)$', re.MULTILINE) # Pattern for matching actions in the HTML-escaped story so we can apply colouring, etc (make sure to encase part to format in parentheses) + comregex_ai = re.compile(r'(?:\n<\|(?:.|\n)*?\|>(?=\n|$))|(?:<\|(?:.|\n)*?\|>\n?)') # Pattern for matching comments to remove them before sending them to the AI + comregex_ui = re.compile(r'(<\|(?:.|\n)*?\|>)') # Pattern for matching comments in the editor actionmode = 1 adventure = False dynamicscan = False @@ -1270,7 +1272,7 @@ def calcsubmitbudget(actionlen, winfo, mem, anotetxt, actions): lnanote = 0 # Placeholder for Author's Note length # Calculate token budget - prompttkns = tokenizer.encode(vars.prompt) + prompttkns = tokenizer.encode(vars.comregex_ai.sub('', vars.prompt)) lnprompt = len(prompttkns) memtokens = tokenizer.encode(mem) @@ -1292,7 +1294,7 @@ def calcsubmitbudget(actionlen, winfo, mem, anotetxt, actions): if(actionlen == 0): # First/Prompt action - subtxt = vars.memory + winfo + anotetxt + vars.prompt + subtxt = vars.memory + winfo + anotetxt + vars.comregex_ai.sub('', vars.prompt) lnsub = lnsp + lnmem + lnwi + lnprompt + lnanote return subtxt, lnsub+1, lnsub+vars.genamt else: @@ -1305,7 +1307,7 @@ def calcsubmitbudget(actionlen, winfo, mem, anotetxt, actions): # Get most recent action tokens up to our budget n = 0 for key in reversed(actions): - chunk = actions[key] + chunk = vars.comregex_ai.sub('', actions[key]) if(budget <= 0): break @@ -1389,12 +1391,12 @@ def calcsubmit(txt): forceanote = True if(vars.useprompt): - budget = vars.ikmax - len(vars.prompt) - len(anotetxt) - len(mem) - len(winfo) - 1 + budget = vars.ikmax - len(vars.comregex_ai.sub('', vars.prompt)) - len(anotetxt) - len(mem) - len(winfo) - 1 else: budget = vars.ikmax - len(anotetxt) - len(mem) - len(winfo) - 1 subtxt = "" - prompt = vars.prompt + prompt = vars.comregex_ai.sub('', vars.prompt) n = 0 for key in reversed(vars.actions): chunk = vars.actions[key] @@ -1415,7 +1417,7 @@ def calcsubmit(txt): # add some prompt. if(not vars.useprompt): if(budget > 0): - prompt = vars.prompt[-budget:] + prompt = vars.comregex_ai.sub('', vars.prompt)[-budget:] else: prompt = "" @@ -1777,11 +1779,12 @@ def applyoutputformatting(txt): # Sends the current story content to the Game Screen #==================================================================# def refresh_story(): - text_parts = ['', html.escape(vars.prompt), ''] + text_parts = ['', vars.comregex_ui.sub(lambda m: '\n'.join('' + l + '' for l in m.group().split('\n')), html.escape(vars.prompt)), ''] for idx in vars.actions: item = vars.actions[idx] idx += 1 item = html.escape(item) + item = vars.comregex_ui.sub(lambda m: '\n'.join('' + l + '' for l in m.group().split('\n')), item) # Add special formatting to comments item = vars.acregex_ui.sub('\\1', item) # Add special formatting to adventure actions text_parts.extend(('', item, '')) emit('from_server', {'cmd': 'updatescreen', 'gamestarted': vars.gamestarted, 'data': formatforhtml(''.join(text_parts))}, broadcast=True) @@ -1809,6 +1812,7 @@ def update_story_chunk(idx: Union[int, str]): text = vars.actions[idx - 1] item = html.escape(text) + item = vars.comregex_ui.sub(lambda m: '\n'.join('' + l + '' for l in m.group().split('\n')), item) # Add special formatting to comments item = vars.acregex_ui.sub('\\1', item) # Add special formatting to adventure actions chunk_text = f'{formatforhtml(item)}' @@ -2088,9 +2092,9 @@ def checkworldinfo(txt, force_use_txt=False): if(ln >= depth): txt = "".join(chunks) elif(ln > 0): - txt = vars.prompt + "".join(chunks) + txt = vars.comregex_ai.sub('', vars.prompt) + "".join(chunks) elif(ln == 0): - txt = vars.prompt + txt = vars.comregex_ai.sub('', vars.prompt) if(force_use_txt): txt += original_txt diff --git a/static/custom.css b/static/custom.css index 3b1ee1dc..9ac2ae65 100644 --- a/static/custom.css +++ b/static/custom.css @@ -11,9 +11,15 @@ chunk { font-weight: bold; } +#gametext comment { + color: #888; + font-style: italic; +} + chunk.editing, chunk.editing * { color: #cdf !important; font-weight: normal !important; + font-style: normal !important; } #gametext, chunk, chunk * { diff --git a/templates/index.html b/templates/index.html index f8e091e3..1278f82b 100644 --- a/templates/index.html +++ b/templates/index.html @@ -13,7 +13,7 @@ - +