From 6bb76a3ba15bac0980b85ed0b8a63633a1ee1a2f Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Fri, 23 Oct 2026 16:28:40 +0200 Subject: companion: admire, turned to a wallpaper and then blushing The watch back view for 1.5 s, then blush3 for 3 s, at most every 3 minutes. Below clicks, so a click during it wins; above the mock and typing. Co-Authored-By: Claude Opus 5.5 --- desktop/companion/Mood.js | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'desktop/companion/Mood.js') diff --git a/desktop/companion/Mood.js b/desktop/companion/Mood.js index a3bc8cb..c4df50b 100644 --- a/desktop/companion/Mood.js +++ b/desktop/companion/Mood.js @@ -28,6 +28,9 @@ var T = { monologueCooldown: 3600000, destruct: 1000, // the glow and the flash; the sprite is hidden under it scorched: 3000, + admireLook: 1500, // turned to the wallpaper, before the blush + admireBlush: 3000, + admireCooldown: 180000, skirtless: 60000, }; @@ -62,6 +65,8 @@ function pick(s) { if (s.now - s.repliedAt < T.waveHold) return st("wave", "wave"); if (s.clicks.count > 0 && s.now - s.clicks.at < T.clickHold) return st("clicks", clickFrame(s.clicks.count)); + if (s.now - s.admireAt < T.admireLook + T.admireBlush) + return st("admire", s.now - s.admireAt < T.admireLook ? "watch" : "blush3"); if (s.now - s.mockAt < T.mockHold) return st("mock", s.now - s.mockAt < T.mockHold / 2 ? "point" : "smirk"); if (s.now - s.typingAt < T.typingHold) return st("watch", "watch"); @@ -84,6 +89,8 @@ function outfit(destructAt, now) { function mockAllowed(lastMockAt, now) { return now - lastMockAt >= T.mockCooldown; } +function admireAllowed(lastAt, now) { return now - lastAt >= T.admireCooldown; } + function canSpeak(lastLineAt, now) { return now - lastLineAt >= T.lineCooldown; } // Whether the opening monologue plays: a chance per trigger, and never -- cgit v1.2.3