From 8681daf84b118a3760900bb8781c45a94339c685 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 3 Feb 2026 20:13:24 +0100 Subject: [PATCH 1/2] p --- webAO/viewport/viewport.ts | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/webAO/viewport/viewport.ts b/webAO/viewport/viewport.ts index c03d750c..b02828c1 100644 --- a/webAO/viewport/viewport.ts +++ b/webAO/viewport/viewport.ts @@ -176,10 +176,17 @@ const viewport = (): Viewport => { gamewindow.style.removeProperty("animation"); }; + const pause = async (digits?: string) => { + // Default to 100ms if no number specified + const multiplier = !digits || digits === "" ? 1 : parseInt(digits, 10) || 1; + await delay(multiplier * 100); + }; + const commands = new Map( Object.entries({ s: shake, f: flash, + p: pause, }), ); const textSpeeds = new Set(["{", "}"]); @@ -208,10 +215,28 @@ const viewport = (): Viewport => { if ( characterElement.innerHTML === COMMAND_IDENTIFIER && - commands.has(nextCharacterElement?.innerHTML) + (commands.has(nextCharacterElement?.innerHTML) || + nextCharacterElement?.innerHTML === "p") ) { textnow = chatmsg.content.substring(0, textnow.length + 1); - await commands.get(nextCharacterElement.innerHTML)(); + const commandChar = nextCharacterElement.innerHTML; + + if (commandChar === "p") { + // Collect digits after \p for pause duration + let digits = ""; + let offset = 1; + while ( + textnow.length + offset <= chatmsg.content.length && + /\d/.test(chatmsg.parsed[textnow.length + offset - 1]?.innerHTML || "") + ) { + digits += chatmsg.parsed[textnow.length + offset - 1].innerHTML; + textnow = chatmsg.content.substring(0, textnow.length + 1); + offset++; + } + await pause(digits); + } else { + await commands.get(commandChar)(); + } } else { chatBoxInner.appendChild(chatmsg.parsed[textnow.length - 1]); } From e80eb66cfd4e3abf22a5a228368e4c3bfdb7c65b Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 3 Feb 2026 21:56:40 +0100 Subject: [PATCH 2/2] digit offsets --- webAO/viewport/viewport.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/webAO/viewport/viewport.ts b/webAO/viewport/viewport.ts index b02828c1..ad6d2e4e 100644 --- a/webAO/viewport/viewport.ts +++ b/webAO/viewport/viewport.ts @@ -223,14 +223,15 @@ const viewport = (): Viewport => { if (commandChar === "p") { // Collect digits after \p for pause duration + const startPos = textnow.length; let digits = ""; let offset = 1; while ( - textnow.length + offset <= chatmsg.content.length && - /\d/.test(chatmsg.parsed[textnow.length + offset - 1]?.innerHTML || "") + startPos + offset <= chatmsg.content.length && + /\d/.test(chatmsg.parsed[startPos + offset - 1]?.innerHTML || "") ) { - digits += chatmsg.parsed[textnow.length + offset - 1].innerHTML; - textnow = chatmsg.content.substring(0, textnow.length + 1); + digits += chatmsg.parsed[startPos + offset - 1].innerHTML; + textnow = chatmsg.content.substring(0, startPos + offset); offset++; } await pause(digits);