+
Oferta: π¦ {{ state.offer.offerPavo }} / π½ {{ state.offer.offerElote }} | Pedido: π¦ {{ state.offer.requestPavo }} / π½ {{ state.offer.requestElote }}
@@ -34,5 +35,6 @@ function onNoOffer() {
.controls { display:flex; gap:8px; margin:8px 0; }
.btn { padding:8px 12px; border:none; border-radius:6px; background:#e3f2fd; color:#1565c0; cursor:pointer; }
.btn.warn { background:#ffe0e0; color:#b71c1c; }
+.offer-view { font-size: 14px; color:#333; }
.hint { color:#666; }
diff --git a/client/src/views/games/G5.vue b/client/src/views/games/G5.vue
index b700f53..b427b28 100644
--- a/client/src/views/games/G5.vue
+++ b/client/src/views/games/G5.vue
@@ -6,7 +6,8 @@
-
+
+
Oferta: π¦ {{ state.offer.offerPavo }} / π½ {{ state.offer.offerElote }} | Pedido: π¦ {{ state.offer.requestPavo }} / π½ {{ state.offer.requestElote }}
@@ -46,5 +47,6 @@ function onNoOffer() {
.chat { display:flex; gap:8px; margin:8px 0; }
.chat input { flex:1; padding:8px; border-radius:6px; border:1px solid #ddd; }
.btn { padding:8px 12px; border:none; border-radius:6px; background:#e3f2fd; color:#1565c0; cursor:pointer; }
+.offer-view { font-size: 14px; color:#333; }
.hint { color:#666; }
diff --git a/server/src/rooms/GameRoom.ts b/server/src/rooms/GameRoom.ts
index 1e3472b..1180af3 100644
--- a/server/src/rooms/GameRoom.ts
+++ b/server/src/rooms/GameRoom.ts
@@ -85,6 +85,10 @@ export class GameRoom extends Room {
const player = this.state.players.get(client.sessionId);
if (!player) return;
if (player.role !== "P2") return;
+
+ // Prevent multiple actions on the same offer
+ if (this.state.p2Action) return;
+
this.state.p2Action = action; // accept | reject | snatch
this.resolveP2Action();