From a63b84f6a18281459385977496330316464d510d Mon Sep 17 00:00:00 2001 From: Jage9 Date: Sat, 21 Feb 2026 01:26:18 -0500 Subject: [PATCH] Fix teleport enter audio and localize wheel result messages --- client/public/version.js | 2 +- client/src/main.ts | 2 -- server/app/server.py | 38 ++++++++++++++++++++++++++++++-------- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/client/public/version.js b/client/public/version.js index 005c501..ea66512 100644 --- a/client/public/version.js +++ b/client/public/version.js @@ -1,3 +1,3 @@ // Maintainer-controlled web client version. // Format: YYYY.MM.DD Rn (example: 2026.02.20 R2) -window.CHGRID_WEB_VERSION = "2026.02.21 R74"; +window.CHGRID_WEB_VERSION = "2026.02.21 R75"; diff --git a/client/src/main.ts b/client/src/main.ts index 5d0c912..ae07db0 100644 --- a/client/src/main.ts +++ b/client/src/main.ts @@ -1543,7 +1543,6 @@ function handleListModeInput(code: string): void { signaling.send({ type: 'update_position', x: peer.x, y: peer.y }); state.mode = 'normal'; updateStatus(`Moved to ${peer.nickname}.`); - audio.sfxUiConfirm(); return; } @@ -1582,7 +1581,6 @@ function handleListItemsModeInput(code: string): void { signaling.send({ type: 'update_position', x: item.x, y: item.y }); state.mode = 'normal'; updateStatus(`Moved to ${itemLabel(item)}.`); - audio.sfxUiConfirm(); return; } if (code === 'Escape') { diff --git a/server/app/server.py b/server/app/server.py index dd07daf..e7b4f09 100644 --- a/server/app/server.py +++ b/server/app/server.py @@ -163,9 +163,23 @@ class SignalingServer: ) await self._send(client.websocket, packet) - async def _broadcast_wheel_result_after_delay(self, message: str, delay_seconds: float = 3.0) -> None: + async def _broadcast_wheel_result_after_delay( + self, + client: ClientConnection, + self_message: str, + others_message: str, + delay_seconds: float = 3.0, + ) -> None: await asyncio.sleep(delay_seconds) - await self._broadcast(BroadcastChatMessagePacket(type="chat_message", message=message, system=True)) + await self._broadcast( + BroadcastChatMessagePacket(type="chat_message", message=others_message, system=True), + exclude=client.websocket, + ) + if client.websocket in self.clients: + await self._send( + client.websocket, + BroadcastChatMessagePacket(type="chat_message", message=self_message, system=True), + ) async def _handle_message(self, client: ClientConnection, raw_message: str) -> None: try: @@ -409,7 +423,8 @@ class SignalingServer: ) return self.item_last_use_ms[item.id] = now_ms - delayed_wheel_result: str | None = None + delayed_wheel_self_result: str | None = None + delayed_wheel_others_result: str | None = None if item.type == "radio_station": enabled_value = item.params.get("enabled", True) if isinstance(enabled_value, bool): @@ -427,7 +442,7 @@ class SignalingServer: await self._broadcast_item(item) state_text = "on" if next_enabled else "off" others_message = f"{client.nickname} turns {state_text} {item.title}." - self_message = others_message + self_message = f"You turn {state_text} {item.title}." elif item.type == "dice": try: sides = max(1, min(100, int(item.params.get("sides", 6)))) @@ -460,8 +475,9 @@ class SignalingServer: return landed = random.choice(spaces) others_message = f"{client.nickname} spins {item.title}." - self_message = others_message - delayed_wheel_result = str(landed) + self_message = f"You spin {item.title}." + delayed_wheel_self_result = str(landed) + delayed_wheel_others_result = f"{client.nickname}: {landed}" await self._broadcast( BroadcastChatMessagePacket(type="chat_message", message=others_message, system=True), exclude=client.websocket, @@ -477,8 +493,14 @@ class SignalingServer: ) ) await self._send_item_result(client, True, "use", self_message, item.id) - if delayed_wheel_result is not None: - asyncio.create_task(self._broadcast_wheel_result_after_delay(delayed_wheel_result)) + if delayed_wheel_self_result is not None and delayed_wheel_others_result is not None: + asyncio.create_task( + self._broadcast_wheel_result_after_delay( + client=client, + self_message=delayed_wheel_self_result, + others_message=delayed_wheel_others_result, + ) + ) return if isinstance(packet, ItemUpdatePacket):