fix game3-7 and lobbyA และB 1.2

This commit is contained in:
2026-06-30 04:19:32 +00:00
parent 07313358e1
commit e1aee01a7d
8 changed files with 45448 additions and 32 deletions
+8 -8
View File
@@ -51,9 +51,9 @@
"providerUserId": "p_1775109142385_wq7wfy1p32j",
"notes": "auto: player-coins",
"blocked": false,
"coins": 2556,
"coins": 2564,
"createdAt": "2026-04-02T05:52:21+00:00",
"updatedAt": "2026-06-29T23:34:26+00:00",
"updatedAt": "2026-06-30T03:46:22+00:00",
"daily": {
"anchorMs": 1781197200000,
"claimedDays": [
@@ -67,7 +67,7 @@
],
"lockUntilMs": 0
},
"score": 482,
"score": 490,
"scoreByCase": {
"1": 26,
"10": 744,
@@ -83,7 +83,7 @@
"7": 6,
"3": 150,
"6": 44,
"2": 138
"2": 146
},
"lbName": "Q",
"achievements": {
@@ -924,15 +924,15 @@
"providerUserId": "p_1782376007927_lpt9m4xge9",
"notes": "auto: player-coins",
"blocked": false,
"coins": 240,
"coins": 250,
"createdAt": "2026-06-25T08:26:49+00:00",
"updatedAt": "2026-06-30T01:25:09+00:00",
"score": 240,
"updatedAt": "2026-06-30T03:46:22+00:00",
"score": 250,
"scoreByCase": {
"12": 78,
"8": 20,
"3": 20,
"2": 70,
"2": 80,
"10": 52
},
"lbName": "MONE",
-22
View File
@@ -17680,22 +17680,6 @@
meEnt.balloonBossCy = cl.cy;
}
/** บอทเด้งกับวงชนบอส (บอทขับโดย server → client clamp ออกนอกวงบอสเป็น visual; เมื่อบอสเลื่อนพ้น บอท lerp ตามเป้าต่อ) */
function balloonBossBotBossClampPlay(o, bossCx, bossCy, bossCollideR) {
if (!o || o.balloonBossEliminated || o.balloonBossCx == null) return;
const rO = 44;
const rB = Math.max(34, bossCollideR * 1.05);
const dx = o.balloonBossCx - bossCx;
const dy = o.balloonBossCy - bossCy;
const dist = Math.hypot(dx, dy) || 1e-6;
const minD = rO + rB;
if (dist >= minD) return;
const nx = dx / dist, ny = dy / dist;
o.balloonBossCx = bossCx + nx * minD;
o.balloonBossCy = bossCy + ny * minD;
try { syncBalloonBossFootFromCenter(o); o.tx = o.x; o.ty = o.y; } catch (e) { /* ignore */ }
}
/** ผู้เล่นหลักเด้งกับคนอื่น (บอทขยับรับแรงปะทะเล็กน้อย) */
function balloonBossPlayerElasticCollisionsPlay(meEnt, aliveRefs, mw, mh) {
if (!meEnt || meEnt.balloonBossEliminated || meEnt.balloonBossCx == null) return;
@@ -18314,12 +18298,6 @@
balloonBossPlayerElasticCollisionsPlay(me, aliveRefs, mw, mh);
balloonBossPlayerBossElasticPlay(me, bossC.cx, bossC.cy, bossR, mw, mh);
syncBalloonBossFootFromCenter(me);
/* บอทก็เด้ง/ไม่จมบอส (บอสเคลื่อนที่ไล่ทับ → clamp บอทออกนอกวง) */
aliveRefs.forEach((e) => {
if (!e || !e.ref || e.ref === me) return;
if (!(isPreviewBotId(e.id) || e.ref.isBalloonBossServerBot)) return;
balloonBossBotBossClampPlay(e.ref, bossC.cx, bossC.cy, bossR);
});
/** ฉากนี้แสดงตัวหันหน้าเข้ากล้อง — sync กับ combat draw */
me.direction = 'down';
me.isWalking = Math.abs(me.balloonBossVelX) > 12 || Math.abs(me.balloonBossVelY) > 12;
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -5438,7 +5438,7 @@
<script src="/app-base.js?v=2"></script>
<script src="/Game/socket.io/socket.io.js"></script>
<script src="js/version.js?v=0.0306"></script>
<script src="js/play.js?v=0.006300330"></script>
<script src="js/play.js?v=0.006300340"></script>
<div class="version-tag">v —</div>
<style id="qc-howto-mg2-fix">
/* HOW TO PLAY ของ quiz_carry (Minigame-4) -> ให้เหมือน Minigame-2 (gch-mg2-mock)
File diff suppressed because it is too large Load Diff
+34 -1
View File
@@ -8801,6 +8801,20 @@ function endBalloonBossGame(sid, space, reason) {
s.bots.forEach((b, id) => scores.push({ id, score: Math.max(0, b.score | 0), eliminated: timeUp ? true : !!b.eliminated }));
io.to(sid).emit('balloon-boss-over', { reason: reason === 'victory' ? 'victory' : (timeUp ? 'time' : 'all_dead'), scores, srv: true });
}
/* "" port client getBalloonBossBossLiveCenterPlay (anchor=liveBeginsAt )
server เดมคดบอสเปนจดน บอทไมาบอสขยบมาท. วน บอทหลบบอสทเคลอนทได + เลงยงตรงบอสจร */
function bbBossLiveCenter(md, ts, s, now) {
const base = bbBossCenter(md, ts);
const w = md.width || 20, h = md.height || 15;
const mw = w * ts, mh = h * ts;
const anchor = (s && s.liveBeginsAt) ? s.liveBeginsAt : now;
const tSec = Math.max(0, (now - anchor) / 1000);
const ax = Math.min(mw * 0.19, 240);
const ay = Math.min(mh * 0.17, 200);
const cx = base.cx + Math.sin(tSec * 0.33 + 0.75) * ax + Math.sin(tSec * 0.69 + 0.15) * (ax * 0.4);
const cy = base.cy + Math.cos(tSec * 0.29 + 1.05) * ay + Math.cos(tSec * 0.64 + 0.45) * (ay * 0.37);
return bbClampWorld(cx, cy, mw, mh);
}
function stepBalloonBossBots(sid, space, dt, now) {
const s = space.balloonBossSession;
if (!s || !s.active || s.ended) return;
@@ -8814,10 +8828,19 @@ function stepBalloonBossBots(sid, space, dt, now) {
if (s.endsAt > 0 && now >= s.endsAt) { endBalloonBossGame(sid, space, 'time'); return; }
const ts = jsTileSize(md);
const mw = (md.width || 20) * ts, mh = (md.height || 15) * ts;
const boss = bbBossCenter(md, ts);
const boss = bbBossLiveCenter(md, ts, s, now); /* บอสเคลื่อนที่จริง (หลบ+เล็งตามตัวนี้) */
const fleeR = Math.max(ts * 3.4, 96); /* หลบบอสเมื่อ home เข้าใกล้ ~3 ช่อง */
const fleeSpd = 165; /* px/s ดริฟต์ home หนีบอส (เร็วกว่าบอส → ไม่ติด) */
const sepMin = ts * 2.4; /* ระยะ home ขั้นต่ำระหว่างบอท (หลบกันเอง) */
const outBots = [];
const alive = [];
s.bots.forEach((b, id) => {
if (b.eliminated) return;
alive.push(b);
/* หลบบอส: ดริฟต์ "home" ออกจากบอสที่เคลื่อนเข้าใกล้ (แทน clamp ตำแหน่ง = ไม่ติดนิ่งขอบบอส) */
const hx = b.homeCx - boss.cx, hy = b.homeCy - boss.cy;
const hd = Math.hypot(hx, hy) || 1e-6;
if (hd < fleeR) { b.homeCx += (hx / hd) * fleeSpd * dt; b.homeCy += (hy / hd) * fleeSpd * dt; }
b.phase += dt;
const wob = Math.sin(b.phase * 1.25) * 26;
const wob2 = Math.cos(b.phase * 0.9) * 18;
@@ -8837,6 +8860,16 @@ function stepBalloonBossBots(sid, space, dt, now) {
}
outBots.push({ id, cx: b.cx, cy: b.cy, score: b.score, dmg: b.dmg, balloons: b.balloons, elim: false });
});
/* หลบกันเอง: ดัน home ที่ใกล้กันเกินให้แยกออก (รอบถัดไปบอทจะ wobble รอบ home ใหม่ → ไม่ซ้อนกัน) */
for (let i = 0; i < alive.length; i++) {
for (let j = i + 1; j < alive.length; j++) {
const a = alive[i], c = alive[j];
const dx = a.homeCx - c.homeCx, dy = a.homeCy - c.homeCy;
const d = Math.hypot(dx, dy) || 1e-6;
if (d < sepMin) { const p = (sepMin - d) * 0.5, nx = dx / d, ny = dy / d; a.homeCx += nx * p; a.homeCy += ny * p; c.homeCx -= nx * p; c.homeCy -= ny * p; }
}
}
alive.forEach((b) => { const cl = bbClampWorld(b.homeCx, b.homeCy, mw, mh); b.homeCx = cl.cx; b.homeCy = cl.cy; }); /* กัน home ดริฟต์หลุดขอบ */
if (now - s.lastEmit >= BB_BOT_EMIT_MS) {
s.lastEmit = now;
if (outBots.length) io.to(sid).emit('balloon-boss-bot-move', { bots: outBots });
File diff suppressed because it is too large Load Diff
+130
View File
@@ -4650,3 +4650,133 @@
{"t":1782791056612,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"bot-pos","detail":"map=35x20 n=4 [b0:6.1,4.1->6.1,4.1 b1:16.1,16.7->11.2,15.5 b2:7.8,10.0->8.3,6.1 b3:29.8,5.1->29.8,5.1] [+56308ms]","src":"client"}
{"t":1782791057278,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"bot-pos","detail":"map=35x20 n=4 [b0:6.1,4.1->6.1,4.1 b1:11.2,15.5->11.2,15.5 b2:8.3,6.0->8.3,6.0 b3:29.8,5.1->29.8,5.1] [+47710ms]","src":"client"}
{"t":1782791060654,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"bot-pos","detail":"map=35x20 n=4 [b0:6.1,4.1->6.1,4.1 b1:16.1,16.7->27.8,9.7 b2:7.8,10.0->14.3,11.2 b3:29.8,5.1->29.8,5.1] [+60350ms]","src":"client"}
{"t":1782791061307,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"bot-pos","detail":"map=35x20 n=4 [b0:6.1,4.1->6.1,4.1 b1:27.8,9.1->27.8,9.0 b2:19.1,12.7->20.1,13.0 b3:29.8,5.1->29.8,5.1] [+51740ms]","src":"client"}
{"t":1782791064676,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"bot-pos","detail":"map=35x20 n=4 [b0:6.1,4.1->6.1,4.1 b1:16.1,16.7->16.3,5.1 b2:7.8,10.0->7.1,11.0 b3:29.8,5.1->29.8,5.1] [+64374ms]","src":"client"}
{"t":1782791065336,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"bot-pos","detail":"map=35x20 n=4 [b0:6.1,4.1->6.1,4.1 b1:13.8,7.0->12.9,7.5 b2:11.8,12.4->12.8,12.7 b3:29.8,5.1->29.8,5.1] [+55772ms]","src":"client"}
{"t":1782791068716,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"bot-pos","detail":"map=35x20 n=4 [b0:6.1,4.1->6.1,4.1 b1:21.1,13.9->20.6,13.4 b2:23.4,12.3->22.4,12.3 b3:29.8,5.1->29.8,5.1] [+68414ms]","src":"client"}
{"t":1782791069386,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"bot-pos","detail":"map=35x20 n=4 [b0:6.1,4.1->6.1,4.1 b1:17.0,9.8->16.4,9.2 b2:17.4,12.2->16.5,12.2 b3:29.8,5.1->29.8,5.1] [+59820ms]","src":"client"}
{"t":1782791070003,"cat":"MG6","room":"aa","who":"","ev":"game-start","detail":"เริ่มมินิเกม: Minigame-6 ยิงอุกาบาต Violent Crime (การ์ด 3)","src":"server"}
{"t":1782791070133,"cat":"MG6","room":"aa","who":"MONE","ev":"leave","detail":"หลุดช่วง how-to → บอทรับช่วงตอนเกมเริ่ม · เหลือคน 1","src":"server"}
{"t":1782791070749,"cat":"MG6","room":"aa","who":"Q","ev":"join","detail":"สี#7 · คน 1 + บอท 4","src":"server"}
{"t":1782791070814,"cat":"MG6","room":"aa","who":"MONE","ev":"join","detail":"สี#3 · คน 2 + บอท 4","src":"server"}
{"t":1782791184606,"cat":"LobbyB","room":"aa","who":"Q","ev":"host-change","detail":"host ใหม่ → MONE","src":"server"}
{"t":1782791184606,"cat":"LobbyB","room":"aa","who":"Q","ev":"leave","detail":"ออกจากห้อง · เหลือคน 1","src":"server"}
{"t":1782791185001,"cat":"LobbyA","room":"aa-1782790997265","who":"Q","ev":"lobby-open","detail":"space=aa-1782790997265 [+0ms]","src":"client"}
{"t":1782791185001,"cat":"LobbyA","room":"aa-1782790997265","who":"Q","ev":"suspect-gate","detail":"postCase=true howtoOk=true micOk=true sent=false [+21ms]","src":"client"}
{"t":1782791185058,"cat":"LobbyA","room":"aa-1782790997265","who":"Q","ev":"preload-start","detail":" [+23ms]","src":"client"}
{"t":1782791185062,"cat":"LobbyA","room":"aa-1782790997265","who":"Q","ev":"suspect-gate","detail":"postCase=true howtoOk=true micOk=true sent=true [+26ms]","src":"client"}
{"t":1782791185127,"cat":"LobbyA","room":"aa-1782790997265","who":"Q","ev":"manifest-done","detail":" [+179ms]","src":"client"}
{"t":1782791185128,"cat":"LobbyA","room":"aa-1782790997265","who":"Q","ev":"colors-resolved","detail":" [+180ms]","src":"client"}
{"t":1782791185212,"cat":"LobbyA","room":"aa-1782790997265","who":"Q","ev":"socket-connect","detail":" [+236ms]","src":"client"}
{"t":1782791185287,"cat":"LobbyB","room":"aa","who":"Q","ev":"join","detail":"สี#7 · คน 2 + บอท 4","src":"server"}
{"t":1782791185777,"cat":"LobbyB","room":"aa","who":"MONE","ev":"leave","detail":"ออกจากห้อง · เหลือคน 1","src":"server"}
{"t":1782791186705,"cat":"LobbyA","room":"aa-1782790997265","who":"MONE","ev":"lobby-open","detail":"space=aa-1782790997265 [+1ms]","src":"client"}
{"t":1782791186752,"cat":"LobbyA","room":"aa-1782790997265","who":"MONE","ev":"manifest-done","detail":" [+21ms]","src":"client"}
{"t":1782791186756,"cat":"LobbyA","room":"aa-1782790997265","who":"MONE","ev":"preload-start","detail":" [+21ms]","src":"client"}
{"t":1782791186767,"cat":"LobbyA","room":"aa-1782790997265","who":"MONE","ev":"mychar-tinted","detail":"roomJoinReady=false [+22ms]","src":"client"}
{"t":1782791186768,"cat":"LobbyA","room":"aa-1782790997265","who":"MONE","ev":"colors-resolved","detail":" [+22ms]","src":"client"}
{"t":1782791186788,"cat":"LobbyA","room":"aa-1782790997265","who":"MONE","ev":"preload-occupants-done","detail":" [+22ms]","src":"client"}
{"t":1782791186857,"cat":"LobbyA","room":"aa-1782790997265","who":"MONE","ev":"preload-ready(occupants)","detail":" [+22ms]","src":"client"}
{"t":1782791186862,"cat":"LobbyA","room":"aa-1782790997265","who":"MONE","ev":"suspect-gate","detail":"postCase=true howtoOk=true micOk=true sent=false [+24ms]","src":"client"}
{"t":1782791186962,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"join-ok","detail":"peers=2 host=me map=mn8nx46h bots=4 [+1966ms]","src":"client"}
{"t":1782791186964,"cat":"LobbyA","room":"aa-1782790997265","who":"MONE","ev":"socket-connect","detail":" [+270ms]","src":"client"}
{"t":1782791186965,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"suspect-join","detail":"phaseActive=true pickIdx=2 postCase=true clientMapId=mn8nx46h spaceId=aa-1782790997265 mapName=LobbyB [+1996ms]","src":"client"}
{"t":1782791186966,"cat":"LobbyB","room":"aa","who":"MONE","ev":"join","detail":"สี#3 · คน 2 + บอท 4","src":"server"}
{"t":1782791187999,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"bot-pos","detail":"map=35x20 n=4 [b0:15.0,15.0->7.2,9.1 b1:21.0,15.0->12.5,5.2 b2:23.0,12.0->23.6,6.3 b3:24.0,9.0->13.2,5.2] [+3039ms]","src":"client"}
{"t":1782791188577,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"loading-hide","detail":"เริ่มเล่นได้ [+1860ms]","src":"client"}
{"t":1782791188579,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"suspect-join","detail":"phaseActive=true pickIdx=2 postCase=true clientMapId=mn8nx46h spaceId=aa-1782790997265 mapName=LobbyB [+1888ms]","src":"client"}
{"t":1782791188581,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"bot-pos","detail":"map=35x20 n=4 [b0:15.0,15.0->7.2,9.1 b1:21.0,15.0->12.4,5.2 b2:23.0,12.0->20.5,10.7 b3:24.0,9.0->25.1,12.2] [+1902ms]","src":"client"}
{"t":1782791188582,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"join-ok","detail":"peers=2 host=other map=mn8nx46h bots=4 [+1859ms]","src":"client"}
{"t":1782791191294,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"mychar-tinted","detail":"roomJoinReady=true [+6344ms]","src":"client"}
{"t":1782791202724,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"bot-pos","detail":"map=35x20 n=4 [b0:14.4,13.2->14.9,13.4 b1:15.7,9.7->15.2,9.9 b2:8.6,16.7->8.1,16.9 b3:25.9,8.7->25.7,8.2] [+15903ms]","src":"client"}
{"t":1782791205726,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"preload-occupants-done","detail":" [+20777ms]","src":"client"}
{"t":1782791205728,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"preload-ready(occupants)","detail":" [+20778ms]","src":"client"}
{"t":1782791205729,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"loading-hide","detail":"เริ่มเล่นได้ [+20778ms]","src":"client"}
{"t":1782791205742,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"bot-pos","detail":"map=35x20 n=4 [b0:7.2,9.1->7.2,9.1 b1:15.0,6.1->15.6,6.1 b2:18.6,11.6->18.1,11.9 b3:27.9,14.8->27.9,14.8] [+20791ms]","src":"client"}
{"t":1782791206569,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"bot-pos","detail":"map=35x20 n=4 [b0:11.5,11.6->11.2,10.7 b1:15.9,9.6->15.4,8.8 b2:21.7,16.5->21.7,16.5 b3:9.0,5.0->8.4,4.4] [+19919ms]","src":"client"}
{"t":1782791207312,"cat":"MG7","room":"aa","who":"","ev":"game-start","detail":"เริ่มมินิเกม: Minigame-7 ยิง Mega Virus (การ์ด 2)","src":"server"}
{"t":1782791207420,"cat":"MG7","room":"aa","who":"MONE","ev":"leave","detail":"หลุดช่วง how-to → บอทรับช่วงตอนเกมเริ่ม · เหลือคน 1","src":"server"}
{"t":1782791207866,"cat":"MG7","room":"aa","who":"MONE","ev":"join","detail":"สี#3 · คน 2 + บอท 4","src":"server"}
{"t":1782791214495,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"bot-pos","detail":"map=35x20 n=4 [b0:15.3,10.9->15.1,10.4 b1:23.7,6.2->24.2,6.2 b2:17.2,6.6->16.7,6.7 b3:24.3,5.1->24.3,5.1] [+29546ms]","src":"client"}
{"t":1782791214637,"cat":"MG7","room":"aa","who":"Q","ev":"host-change","detail":"host ใหม่ → MONE","src":"server"}
{"t":1782791214638,"cat":"MG7","room":"aa","who":"Q","ev":"leave","detail":"หลุดช่วง how-to → บอทรับช่วงตอนเกมเริ่ม · เหลือคน 1","src":"server"}
{"t":1782791215050,"cat":"MG7","room":"aa","who":"Q","ev":"join","detail":"สี#7 · คน 2 + บอท 4","src":"server"}
{"t":1782791290559,"cat":"LobbyB","room":"aa","who":"Q","ev":"host-change","detail":"host ใหม่ → MONE","src":"server"}
{"t":1782791290559,"cat":"LobbyB","room":"aa","who":"Q","ev":"leave","detail":"ออกจากห้อง · เหลือคน 1","src":"server"}
{"t":1782791290864,"cat":"LobbyA","room":"aa-1782790997265","who":"Q","ev":"lobby-open","detail":"space=aa-1782790997265 [+0ms]","src":"client"}
{"t":1782791290887,"cat":"LobbyA","room":"aa-1782790997265","who":"Q","ev":"suspect-gate","detail":"postCase=true howtoOk=true micOk=true sent=false [+14ms]","src":"client"}
{"t":1782791290915,"cat":"LobbyA","room":"aa-1782790997265","who":"Q","ev":"preload-start","detail":" [+15ms]","src":"client"}
{"t":1782791290928,"cat":"LobbyA","room":"aa-1782790997265","who":"Q","ev":"suspect-gate","detail":"postCase=true howtoOk=true micOk=true sent=true [+19ms]","src":"client"}
{"t":1782791290982,"cat":"LobbyA","room":"aa-1782790997265","who":"Q","ev":"manifest-done","detail":" [+138ms]","src":"client"}
{"t":1782791290984,"cat":"LobbyA","room":"aa-1782790997265","who":"Q","ev":"colors-resolved","detail":" [+139ms]","src":"client"}
{"t":1782791291032,"cat":"LobbyA","room":"aa-1782790997265","who":"Q","ev":"socket-connect","detail":" [+165ms]","src":"client"}
{"t":1782791291085,"cat":"LobbyB","room":"aa","who":"Q","ev":"join","detail":"สี#7 · คน 2 + บอท 4","src":"server"}
{"t":1782791291576,"cat":"LobbyB","room":"aa","who":"MONE","ev":"leave","detail":"ออกจากห้อง · เหลือคน 1","src":"server"}
{"t":1782791292534,"cat":"LobbyA","room":"aa-1782790997265","who":"MONE","ev":"lobby-open","detail":"space=aa-1782790997265 [+0ms]","src":"client"}
{"t":1782791292653,"cat":"LobbyA","room":"aa-1782790997265","who":"MONE","ev":"preload-start","detail":" [+18ms]","src":"client"}
{"t":1782791292653,"cat":"LobbyA","room":"aa-1782790997265","who":"MONE","ev":"preload-occupants-done","detail":" [+19ms]","src":"client"}
{"t":1782791292654,"cat":"LobbyA","room":"aa-1782790997265","who":"MONE","ev":"colors-resolved","detail":" [+19ms]","src":"client"}
{"t":1782791292654,"cat":"LobbyA","room":"aa-1782790997265","who":"MONE","ev":"mychar-tinted","detail":"roomJoinReady=false [+19ms]","src":"client"}
{"t":1782791292656,"cat":"LobbyA","room":"aa-1782790997265","who":"MONE","ev":"manifest-done","detail":" [+19ms]","src":"client"}
{"t":1782791292666,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"join-ok","detail":"peers=2 host=me map=mn8nx46h bots=4 [+1801ms]","src":"client"}
{"t":1782791292701,"cat":"LobbyA","room":"aa-1782790997265","who":"MONE","ev":"preload-ready(occupants)","detail":" [+20ms]","src":"client"}
{"t":1782791292701,"cat":"LobbyA","room":"aa-1782790997265","who":"MONE","ev":"suspect-gate","detail":"postCase=true howtoOk=true micOk=true sent=false [+23ms]","src":"client"}
{"t":1782791292705,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"suspect-join","detail":"phaseActive=true pickIdx=1 postCase=true clientMapId=mn8nx46h spaceId=aa-1782790997265 mapName=LobbyB [+1830ms]","src":"client"}
{"t":1782791292770,"cat":"LobbyA","room":"aa-1782790997265","who":"MONE","ev":"socket-connect","detail":" [+227ms]","src":"client"}
{"t":1782791292792,"cat":"LobbyB","room":"aa","who":"MONE","ev":"join","detail":"สี#3 · คน 2 + บอท 4","src":"server"}
{"t":1782791293587,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"bot-pos","detail":"map=35x20 n=4 [b0:15.0,15.0->12.6,5.4 b1:21.0,15.0->5.3,9.9 b2:23.0,12.0->12.4,6.7 b3:24.0,9.0->6.4,16.5] [+2738ms]","src":"client"}
{"t":1782791294038,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"loading-hide","detail":"เริ่มเล่นได้ [+1343ms]","src":"client"}
{"t":1782791294038,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"join-ok","detail":"peers=2 host=other map=mn8nx46h bots=4 [+1342ms]","src":"client"}
{"t":1782791294039,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"suspect-join","detail":"phaseActive=true pickIdx=1 postCase=true clientMapId=mn8nx46h spaceId=aa-1782790997265 mapName=LobbyB [+1369ms]","src":"client"}
{"t":1782791294041,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"bot-pos","detail":"map=35x20 n=4 [b0:15.0,15.0->12.6,5.4 b1:21.0,15.0->5.8,9.9 b2:23.0,12.0->8.1,7.1 b3:24.0,9.0->20.5,10.7] [+1384ms]","src":"client"}
{"t":1782791298846,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"bot-pos","detail":"map=35x20 n=4 [b0:12.6,5.4->12.6,5.4 b1:5.3,9.9->5.3,9.9 b2:8.1,7.1->8.1,7.1 b3:19.0,11.3->19.4,11.1] [+7997ms]","src":"client"}
{"t":1782791303837,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"mychar-tinted","detail":"roomJoinReady=true [+12975ms]","src":"client"}
{"t":1782791304120,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"bot-pos","detail":"map=35x20 n=4 [b0:12.6,5.4->12.6,5.4 b1:8.4,11.1->8.9,11.3 b2:8.1,7.1->8.1,7.1 b3:24.5,9.0->25.0,8.8] [+13255ms]","src":"client"}
{"t":1782791307324,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"bot-pos","detail":"map=35x20 n=4 [b0:12.6,5.4->12.6,5.4 b1:16.8,13.5->17.3,13.6 b2:9.7,5.2->9.7,5.2 b3:29.0,6.8->29.0,6.8] [+14794ms]","src":"client"}
{"t":1782791308357,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"loading-hide","detail":"เริ่มเล่นได้ [+17513ms]","src":"client"}
{"t":1782791311344,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"bot-pos","detail":"map=35x20 n=4 [b0:28.8,8.9->28.8,8.9 b1:10.8,6.2->10.8,6.2 b2:14.2,16.8->14.2,16.8 b3:22.8,16.7->22.2,16.9] [+18812ms]","src":"client"}
{"t":1782791315385,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"bot-pos","detail":"map=35x20 n=4 [b0:17.3,7.9->16.4,7.8 b1:6.8,9.4->6.7,9.4 b2:19.2,6.3->19.2,6.3 b3:21.6,16.9->21.6,16.9] [+22854ms]","src":"client"}
{"t":1782791319422,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"bot-pos","detail":"map=35x20 n=4 [b0:8.3,7.5->8.3,7.5 b1:6.2,9.4->6.2,9.4 b2:16.1,10.8->15.1,10.7 b3:7.1,10.0->7.1,10.0] [+26890ms]","src":"client"}
{"t":1782791322913,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"preload-ready(occupants)","detail":" [+32063ms]","src":"client"}
{"t":1782791322913,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"preload-occupants-done","detail":" [+32063ms]","src":"client"}
{"t":1782791322915,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"bot-pos","detail":"map=35x20 n=4 [b0:20.6,9.8->21.1,10.0 b1:9.8,13.6->9.8,13.6 b2:9.6,5.2->9.6,5.2 b3:10.6,10.5->10.1,10.7] [+32072ms]","src":"client"}
{"t":1782791323467,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"bot-pos","detail":"map=35x20 n=4 [b0:6.0,15.4->5.2,15.8 b1:6.7,9.2->6.7,9.2 b2:7.0,9.3->7.0,9.3 b3:18.8,7.6->18.0,7.3] [+30936ms]","src":"client"}
{"t":1782791327496,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"bot-pos","detail":"map=35x20 n=4 [b0:5.5,15.2->5.5,15.2 b1:20.3,9.1->20.3,9.1 b2:8.0,10.6->8.0,10.7 b3:8.2,4.2->8.2,4.2] [+34963ms]","src":"client"}
{"t":1782791331385,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"bot-pos","detail":"map=35x20 n=4 [b0:7.2,14.0->7.2,14.0 b1:22.7,13.6->22.7,13.6 b2:16.4,12.9->16.9,12.6 b3:18.3,8.4->18.9,8.3] [+40517ms]","src":"client"}
{"t":1782791331533,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"bot-pos","detail":"map=35x20 n=4 [b0:15.9,6.6->16.6,6.0 b1:28.4,8.7->28.4,8.7 b2:25.7,12.7->25.0,12.2 b3:8.3,4.5->8.5,5.3] [+39003ms]","src":"client"}
{"t":1782791335385,"cat":"LobbyB","room":"aa-1782790997265","who":"Q","ev":"bot-pos","detail":"map=35x20 n=4 [b0:9.4,8.3->9.4,8.3 b1:12.5,9.5->11.9,10.1 b2:9.2,17.0->9.2,17.0 b3:12.2,7.8->13.0,8.4] [+44542ms]","src":"client"}
{"t":1782791335581,"cat":"LobbyB","room":"aa-1782790997265","who":"MONE","ev":"bot-pos","detail":"map=35x20 n=4 [b0:9.7,7.6->10.1,6.9 b1:11.5,10.6->10.9,11.3 b2:9.2,17.0->9.2,17.0 b3:13.5,8.8->14.3,9.3] [+43037ms]","src":"client"}
{"t":1782791338771,"cat":"MG4","room":"aa","who":"","ev":"game-start","detail":"เริ่มมินิเกม: Minigame-4 คำศัพท์ในกระบวนการยุติธรรม (การ์ด 1)","src":"server"}
{"t":1782791338909,"cat":"MG4","room":"aa","who":"MONE","ev":"leave","detail":"หลุดช่วง how-to → บอทรับช่วงตอนเกมเริ่ม · เหลือคน 1","src":"server"}
{"t":1782791339591,"cat":"MG4","room":"aa","who":"Q","ev":"join","detail":"สี#7 · คน 1 + บอท 4","src":"server"}
{"t":1782791339694,"cat":"MG4","room":"aa","who":"MONE","ev":"join","detail":"สี#3 · คน 2 + บอท 4","src":"server"}
{"t":1782791356893,"cat":"MG4","room":"aa","who":"","ev":"mg4-read","detail":"q=1 deck=29 rounds=0/10","src":"server"}
{"t":1782791357770,"cat":"LobbyA","room":"22-1782791353921","who":"Pear","ev":"lobby-open","detail":"space=22-1782791353921 [+0ms]","src":"client"}
{"t":1782791357831,"cat":"LobbyA","room":"22-1782791353921","who":"Pear","ev":"suspect-gate","detail":"postCase=false howtoOk=true micOk=true sent=false [+63ms]","src":"client"}
{"t":1782791357850,"cat":"LobbyA","room":"22-1782791353921","who":"Pear","ev":"preload-start","detail":" [+65ms]","src":"client"}
{"t":1782791357858,"cat":"LobbyA","room":"22-1782791353921","who":"Pear","ev":"manifest-done","detail":" [+65ms]","src":"client"}
{"t":1782791357866,"cat":"LobbyA","room":"22-1782791353921","who":"Pear","ev":"colors-resolved","detail":" [+66ms]","src":"client"}
{"t":1782791357866,"cat":"LobbyA","room":"22-1782791353921","who":"Pear","ev":"mychar-tinted","detail":"roomJoinReady=false [+66ms]","src":"client"}
{"t":1782791357872,"cat":"LobbyA","room":"22-1782791353921","who":"Pear","ev":"preload-occupants-done","detail":" [+66ms]","src":"client"}
{"t":1782791357875,"cat":"LobbyA","room":"22-1782791353921","who":"Pear","ev":"preload-ready(occupants)","detail":" [+66ms]","src":"client"}
{"t":1782791357962,"cat":"LobbyA","room":"22-1782791353921","who":"Pear","ev":"socket-connect","detail":" [+180ms]","src":"client"}
{"t":1782791357964,"cat":"LobbyA","room":"22","who":"Pear","ev":"join","detail":"สี#8 · คน 1 + บอท 5","src":"server"}
{"t":1782791358701,"cat":"LobbyA","room":"22-1782791353921","who":"Pear","ev":"join-ok","detail":"peers=1 host=me map=mlsbbxfe bots=5 [+934ms]","src":"client"}
{"t":1782791358711,"cat":"LobbyA","room":"22-1782791353921","who":"Pear","ev":"loading-hide","detail":"เริ่มเล่นได้ [+934ms]","src":"client"}
{"t":1782791358748,"cat":"LobbyA","room":"22-1782791353921","who":"Pear","ev":"suspect-join","detail":"phaseActive=false pickIdx=0 postCase=false clientMapId=mlsbbxfe spaceId=22-1782791353921 mapName=LobbyA [+981ms]","src":"client"}
{"t":1782791358764,"cat":"LobbyA","room":"22-1782791353921","who":"Pear","ev":"bot-pos","detail":"map=35x20 n=5 [b0:10.0,14.0->10.2,13.4 b1:16.0,14.0->16.5,13.7 b2:22.0,13.0->21.4,13.2 b3:23.0,8.0->22.4,7.9 b4:15.0,5.0->14.6,5.5] [+995ms]","src":"client"}
{"t":1782791364681,"cat":"LobbyA","room":"22-1782791353921","who":"Pear","ev":"bot-pos","detail":"map=35x20 n=5 [b0:10.4,12.9->10.5,12.4 b1:17.0,13.5->17.5,13.2 b2:20.9,13.4->20.4,13.5 b3:21.9,7.8->21.3,7.6 b4:14.3,5.9->14.0,6.4] [+6910ms]","src":"client"}
{"t":1782791367320,"cat":"MG4","room":"aa","who":"Q","ev":"host-change","detail":"host ใหม่ → MONE","src":"server"}
{"t":1782791367320,"cat":"MG4","room":"aa","who":"Q","ev":"leave","detail":"หลุด MG4 → บอทแทนในเกม (สี/ตำแหน่งเดิม) · เหลือคน 1","src":"server"}
{"t":1782791372274,"cat":"LobbyA","room":"22-1782791353921","who":"Pear","ev":"bot-pos","detail":"map=35x20 n=5 [b0:13.0,5.7->13.0,5.7 b1:28.0,8.0->28.5,7.7 b2:8.6,17.4->8.1,17.6 b3:13.4,5.3->13.4,5.2 b4:15.9,13.6->16.4,13.8] [+14499ms]","src":"client"}
{"t":1782791376093,"cat":"LobbyA","room":"22-1782791353921","who":"Pear","ev":"loading-hide","detail":"เริ่มเล่นได้ [+18309ms]","src":"client"}
{"t":1782791376323,"cat":"LobbyB","room":"22-1782791353921","who":"Pear","ev":"suspect-gate","detail":"postCase=true howtoOk=true micOk=true sent=false [+18541ms]","src":"client"}
{"t":1782791376713,"cat":"LobbyB","room":"22-1782791353921","who":"Pear","ev":"bot-pos","detail":"map=35x20 n=5 [b0:15.4,13.2->14.4,13.6 b1:26.1,9.1->25.3,9.8 b2:29.0,5.2->29.0,5.2 b3:21.0,14.7->20.2,13.9 b4:8.5,14.1->7.4,14.2] [+18682ms]","src":"client"}
{"t":1782791377073,"cat":"LobbyB","room":"22-1782791353921","who":"Pear","ev":"suspect-open-evt","detail":"idx=0 postCase=true [+19234ms]","src":"client"}
{"t":1782791377321,"cat":"MG4","room":"aa","who":"Q","ev":"bot-takeover","detail":"หลุดเกิน 10วิ → บอทแทน (สีตามคนออก)","src":"server"}
{"t":1782791381336,"cat":"LobbyB","room":"22-1782791353921","who":"Pear","ev":"bot-pos","detail":"map=35x20 n=5 [b0:6.8,9.3->6.4,9.3 b1:19.2,15.2->19.2,15.2 b2:29.0,5.2->29.0,5.2 b3:14.3,8.2->14.3,8.2 b4:7.4,14.7->7.4,14.8] [+23557ms]","src":"client"}
{"t":1782791383108,"cat":"LobbyB","room":"22-1782791353921","who":"Pear","ev":"loading-hide","detail":"เริ่มเล่นได้ [+25333ms]","src":"client"}
{"t":1782791385335,"cat":"LobbyB","room":"22-1782791353921","who":"Pear","ev":"bot-pos","detail":"map=35x20 n=5 [b0:24.9,11.9->24.2,12.6 b1:7.0,13.6->7.0,13.6 b2:29.0,5.2->29.0,5.2 b3:9.5,10.4->9.5,10.4 b4:14.4,9.2->13.6,9.6] [+27564ms]","src":"client"}
{"t":1782791389379,"cat":"LobbyB","room":"22-1782791353921","who":"Pear","ev":"bot-pos","detail":"map=35x20 n=5 [b0:27.4,9.5->27.4,9.5 b1:14.5,8.3->15.5,8.2 b2:29.0,5.2->29.0,5.2 b3:9.5,10.4->9.5,10.4 b4:27.6,10.2->27.6,10.2] [+31606ms]","src":"client"}
{"t":1782791393409,"cat":"LobbyB","room":"22-1782791353921","who":"Pear","ev":"bot-pos","detail":"map=35x20 n=5 [b0:7.1,16.9->7.1,16.9 b1:28.9,6.3->28.4,6.5 b2:29.0,5.2->29.0,5.2 b3:24.2,12.0->23.8,11.2 b4:18.8,10.2->17.8,10.2] [+35634ms]","src":"client"}
{"t":1782791397449,"cat":"LobbyB","room":"22-1782791353921","who":"Pear","ev":"bot-pos","detail":"map=35x20 n=5 [b0:8.1,7.1->8.6,6.8 b1:13.4,9.3->14.1,10.0 b2:29.0,5.2->29.0,5.2 b3:17.8,9.7->17.8,9.7 b4:9.1,10.2->9.1,10.2] [+39675ms]","src":"client"}