diff --git a/www/html/Admin/admin.js b/www/html/Admin/admin.js
index e972a4d..64df753 100644
--- a/www/html/Admin/admin.js
+++ b/www/html/Admin/admin.js
@@ -1,5827 +1,6075 @@
-(function () {
- 'use strict';
-
- var API = '/Admin/api/';
- /** ผ่าน PHP Admin เพื่อให้ PUT ถึง Node แม้ nginx ไม่ proxy /Game/api/ ไปยัง Node */
- var GAME_QUIZ_API = '/Admin/api/game-quiz-settings.php';
- var GAME_TIMING_API = '/Game/api/game-timing';
- var SOUND_SETTINGS_API = '/Game/api/sound-settings';
- var GAME_GAUNTLET_ASSETS_API = '/Game/api/gauntlet-assets';
- /** ลำดับอัปโหลดจริงอยู่ที่ quizCarryPlaqueUploadWithFallback — Node ก่อน แล้วค่อย PHP */
- var GAME_QUIZ_CARRY_PLAQUE_UPLOAD_NODE = '/Game/api/quiz-carry-plaque-upload';
- var GAME_QUIZ_CARRY_PLAQUE_UPLOAD_PHP = '/Admin/api/game-quiz-carry-plaque-upload.php';
- /** >0 ระหว่างอัปโหลดรูปป้าย — ห้ามบันทึกก่อนจบไม่งั้น plaqueImageUrl ว่างถูกเขียนลง JSON */
- var quizCarryPlaqueUploadPending = 0;
- /** epoch ms เมื่อเริ่มอัปโหลดล่าสุด — กันสถานะค้างบล็อกบันทึกตลอด */
- var quizCarryPlaqueUploadStartMs = 0;
- var quizCarrySaveInFlight = false;
- /** ซิงก์ range ↔ ตัวเลข carryChoicePlaqueMapScale (wire ครั้งเดียว) */
- var quizCarryPlaqueScaleControlsWired = false;
- /** สำรอง URL หลังอัปโหลดสำเร็จต่อช่อง — กัน race ที่ช่อง text ว่างตอน buildForSave แต่รูปอัปโหลดแล้วจริง */
- var quizCarryPlaquePendingUrlBySlot = {};
- var stackGameSaveInFlight = false;
- var megaVirusSaveInFlight = false;
- /** โหมดแทนที่รูป: ชื่อไฟล์เป้าหมายก่อนเปิด file picker */
- var gauntletReplaceTarget = null;
- var cred = { credentials: 'include' };
-
- function el(id) { return document.getElementById(id); }
-
- function api(path, opts) {
- opts = opts || {};
- opts.credentials = 'include';
- if (!opts.headers) opts.headers = {};
- if (opts.body && typeof opts.body === 'object' && !(opts.body instanceof FormData)) {
- opts.headers['Content-Type'] = 'application/json';
- opts.body = JSON.stringify(opts.body);
- }
- return fetch(API + path, opts).then(function (r) {
- return r.text().then(function (text) {
- var j = {};
- try {
- j = text ? JSON.parse(text) : {};
- } catch (e) {
- if (!r.ok) throw new Error(text || r.statusText);
- throw e;
- }
- if (!r.ok) throw new Error(j.error || r.statusText || 'Request failed');
- return j;
- });
- });
- }
-
- function setMsg(id, text, cls) {
- var n = el(id);
- if (!n) return;
- n.textContent = text || '';
- n.className = 'msg' + (cls ? ' ' + cls : '');
- }
-
- function gameQuizFetch(method, body) {
- var m = method || 'GET';
- var url = GAME_QUIZ_API;
- if (m === 'GET' && body == null) {
- url += (GAME_QUIZ_API.indexOf('?') >= 0 ? '&' : '?') + '_=' + Date.now();
- }
- var opts = { method: m, credentials: 'include', cache: 'no-store' };
- if (body != null) {
- opts.headers = { 'Content-Type': 'application/json' };
- opts.body = JSON.stringify(body);
- }
- return fetch(url, opts).then(function (r) {
- return r.text().then(function (text) {
- var j = {};
- try {
- j = text ? JSON.parse(text) : {};
- } catch (e) {
- if (!r.ok) {
- throw new Error((text || '').slice(0, 280) || r.statusText || 'Request failed');
- }
- throw new Error('คำตอบไม่ใช่ JSON (HTTP ' + r.status + ') — ตรวจ nginx / PHP proxy');
- }
- if (!r.ok) {
- throw new Error(j.error || ('HTTP ' + r.status + ' ' + r.statusText));
- }
- return j;
- });
- });
- }
-
- function gameTimingFetch(method, body) {
- var m = method || 'GET';
- var url = GAME_TIMING_API;
- if (m === 'GET' && body == null) {
- url += (GAME_TIMING_API.indexOf('?') >= 0 ? '&' : '?') + '_=' + Date.now();
- }
- var opts = { method: m, credentials: 'include', cache: 'no-store' };
- if (body != null) {
- opts.headers = { 'Content-Type': 'application/json' };
- opts.body = JSON.stringify(body);
- }
- return fetch(url, opts).then(function (r) {
- return r.text().then(function (text) {
- var j = {};
- try {
- j = text ? JSON.parse(text) : {};
- } catch (e) {
- if (!r.ok) {
- var plain = (text || r.statusText || 'Request failed').trim();
- if (r.status === 404) {
- plain += ' — รีสตาร์ท Node ที่รัน Game/server.js (pm2 / systemd) หลัง deploy · Restart Game Node after deploy';
- }
- throw new Error(plain);
- }
- throw e;
- }
- if (!r.ok) {
- var base = j.error || r.statusText || 'Request failed';
- if (r.status === 404) {
- base += ' — รีสตาร์ท Node ที่รัน Game/server.js (pm2 / systemd) หลัง deploy · Restart Game Node after deploy';
- }
- throw new Error(base);
- }
- return j;
- });
- });
- }
-
- function addQuizAdminRow(text, answerTrue) {
- var list = el('quiz-admin-questions-list');
- if (!list) return;
- var row = document.createElement('div');
- row.className = 'quiz-admin-q-row';
-
- var lab1 = document.createElement('label');
- lab1.className = 'quiz-admin-q-label';
- lab1.appendChild(document.createTextNode('คำถาม '));
- var inp = document.createElement('input');
- inp.type = 'text';
- inp.className = 'quiz-admin-q-text';
- inp.placeholder = 'พิมพ์คำถาม...';
- inp.maxLength = 500;
- inp.value = text || '';
- lab1.appendChild(inp);
-
- var lab2 = document.createElement('label');
- lab2.className = 'quiz-admin-ans-label';
- lab2.appendChild(document.createTextNode('คำตอบถูก '));
- var sel = document.createElement('select');
- sel.className = 'quiz-admin-q-ans';
- [['true', 'จริง (ถูก)'], ['false', 'เท็จ (ผิด)']].forEach(function (pair) {
- var o = document.createElement('option');
- o.value = pair[0];
- o.textContent = pair[1];
- var isTrue = answerTrue !== false;
- if (pair[0] === 'true' ? isTrue : !isTrue) o.selected = true;
- sel.appendChild(o);
- });
- lab2.appendChild(sel);
-
- var rm = document.createElement('button');
- rm.type = 'button';
- rm.className = 'btn btn-danger btn-sm quiz-admin-q-remove';
- rm.setAttribute('aria-label', 'ลบข้อนี้');
- rm.textContent = 'ลบ';
- rm.addEventListener('click', function () {
- row.remove();
- if (!list.querySelector('.quiz-admin-q-row')) addQuizAdminRow('', true);
- });
-
- row.appendChild(lab1);
- row.appendChild(lab2);
- row.appendChild(rm);
- list.appendChild(row);
- }
-
- function renderQuizAdminQuestions(arr) {
- var list = el('quiz-admin-questions-list');
- if (!list) return;
- list.innerHTML = '';
- var rows = (arr && arr.length) ? arr : [{ text: '', answerTrue: true }];
- rows.forEach(function (q) {
- addQuizAdminRow(q.text || '', q.answerTrue !== false);
- });
- }
-
- function loadQuizSettingsPanel() {
- gameQuizFetch('GET').then(function (data) {
- el('quiz-read-sec').value = String(Math.round((data.readMs || 10000) / 1000));
- el('quiz-answer-sec').value = String(Math.round((data.answerMs || 5000) / 1000));
- var bMs = data.betweenMs != null ? data.betweenMs : 3500;
- el('quiz-between-sec').value = String(Math.max(0, Math.round(bMs / 1000)));
- var rqIn = el('quiz-round-q-count');
- if (rqIn) {
- var rq = data.quizRoundQuestionCount != null ? parseInt(data.quizRoundQuestionCount, 10) : 10;
- if (Number.isNaN(rq) || rq < 1) rq = 10;
- rq = Math.min(50, rq);
- rqIn.value = String(rq);
- }
- renderQuizAdminQuestions(data.questions);
- if (data.quizMapPanelTheme && typeof data.quizMapPanelTheme === 'object') {
- quizTfFillFormFromTheme(data.quizMapPanelTheme);
- } else {
- quizTfFillFormFromTheme({});
- }
- setMsg('quiz-settings-msg', '', '');
- }).catch(function (e) {
- setMsg('quiz-settings-msg', e.message || 'โหลดไม่ได้', 'error');
- });
- }
-
- function saveQuizSettingsPanel() {
- var readS = parseInt(el('quiz-read-sec').value, 10);
- var ansS = parseInt(el('quiz-answer-sec').value, 10);
- var betS = parseInt(el('quiz-between-sec').value, 10);
- if (Number.isNaN(readS) || readS < 1) readS = 10;
- if (Number.isNaN(ansS) || ansS < 1) ansS = 5;
- if (Number.isNaN(betS) || betS < 0) betS = 3;
- readS = Math.min(300, readS);
- ansS = Math.min(300, ansS);
- betS = Math.min(120, betS);
-
- var roundQEl = el('quiz-round-q-count');
- var roundQ = roundQEl ? parseInt(roundQEl.value, 10) : 10;
- if (Number.isNaN(roundQ) || roundQ < 1) roundQ = 10;
- roundQ = Math.min(50, roundQ);
-
- var questions = [];
- document.querySelectorAll('#quiz-admin-questions-list .quiz-admin-q-row').forEach(function (row) {
- var inp = row.querySelector('.quiz-admin-q-text');
- var sel = row.querySelector('.quiz-admin-q-ans');
- var t = inp && inp.value ? String(inp.value).trim() : '';
- if (!t) return;
- questions.push({ text: t, answerTrue: !!(sel && sel.value === 'true') });
- });
-
- gameQuizFetch('PUT', {
- readMs: readS * 1000,
- answerMs: ansS * 1000,
- betweenMs: betS * 1000,
- quizRoundQuestionCount: roundQ,
- questions: questions,
- quizMapPanelTheme: quizTfBuildThemeForSave(),
- }).then(function () {
- setMsg('quiz-settings-msg', 'บันทึกแล้ว', 'ok');
- }).catch(function (e) {
- setMsg('quiz-settings-msg', e.message || 'บันทึกไม่ได้', 'error');
- });
- }
-
- /* ===== ชุดคำถามพิเศษ (Level×Case = 15 ชุด) รับการ์ดพิเศษ ===== */
- var SPECIAL_CARD_RARITIES = ['common', 'rare', 'legendary'];
- var SPECIAL_CARD_ASSET_BASE = '/Game/img/special-cards/';
- var SPECIAL_CARD_CATALOG = [
- { id: 1, en: 'Time Dilation', th: 'เพิ่มเวลาเล่นมินิเกมทันที (+10 วินาที)' },
- { id: 2, en: 'Extension', th: 'เพิ่มเวลาในห้องพิจารณาคดี (+10 วิ FINAL VOTE)' },
- { id: 3, en: 'Ban Card', th: 'ห้ามเล่นมินิเกม 1 ตา' },
- { id: 4, en: 'Silence Card', th: 'การ์ดปิดปาก' },
- { id: 5, en: 'Bail Coin', th: 'เหรียญประกันตัว' },
- { id: 6, en: 'Fund', th: 'รับ coin เพิ่ม' },
- { id: 7, en: 'Free Evidence', th: 'รับหลักฐานฟรี' },
- ];
- var specialQuizSetsState = {};
- var specialQuizCurrentKey = 'L1_C1';
- var specialCardPickerBuilt = false;
-
- function specialCardTxtFilename(id) {
- return id === 7 ? 'card--7txt.png' : 'card-' + id + '-txt.png';
- }
-
- function specialCardImageUrl(id) {
- return SPECIAL_CARD_ASSET_BASE + 'card-' + id + '.png';
- }
-
- function specialCardTxtImageUrl(id) {
- return SPECIAL_CARD_ASSET_BASE + specialCardTxtFilename(id);
- }
-
- function specialCardCatalogEntry(id) {
- for (var i = 0; i < SPECIAL_CARD_CATALOG.length; i++) {
- if (SPECIAL_CARD_CATALOG[i].id === id) return SPECIAL_CARD_CATALOG[i];
- }
- return null;
- }
-
- function resolveSpecialCardIdFromSaved(card) {
- if (!card || typeof card !== 'object') return null;
- var cid = Number(card.cardId);
- if (cid >= 1 && cid <= 7) return cid;
- var url = String(card.imageUrl || '');
- var m = url.match(/\/card-(\d)\.png/i);
- return m ? Number(m[1]) : null;
- }
-
- function updateSpecialCardPreview() {
- var prev = el('special-card-preview');
- var img = el('special-card-preview-img');
- var cid = parseInt(el('special-card-id') && el('special-card-id').value, 10);
- if (!prev || !img) return;
- if (!(cid >= 1 && cid <= 7)) {
- prev.hidden = true;
- img.removeAttribute('src');
- return;
- }
- img.src = specialCardImageUrl(cid);
- img.alt = (specialCardCatalogEntry(cid) || {}).en || ('Card ' + cid);
- prev.hidden = false;
- }
-
- function setSpecialCardPickerSelection(cardId) {
- var picker = el('special-card-picker');
- if (!picker) return;
- picker.querySelectorAll('.sq-card-pick').forEach(function (btn) {
- var on = String(btn.getAttribute('data-card-id')) === String(cardId);
- btn.classList.toggle('is-selected', on);
- btn.setAttribute('aria-checked', on ? 'true' : 'false');
- });
- }
-
- function selectSpecialCard(cardId, fillMeta) {
- var idInp = el('special-card-id');
- var imgInp = el('special-card-image');
- var txtInp = el('special-card-txt-image');
- if (!(cardId >= 1 && cardId <= 7)) {
- if (idInp) idInp.value = '';
- if (imgInp) imgInp.value = '';
- if (txtInp) txtInp.value = '';
- setSpecialCardPickerSelection(null);
- updateSpecialCardPreview();
- return;
- }
- var entry = specialCardCatalogEntry(cardId);
- if (idInp) idInp.value = String(cardId);
- if (imgInp) imgInp.value = specialCardImageUrl(cardId);
- if (txtInp) txtInp.value = specialCardTxtImageUrl(cardId);
- if (fillMeta && entry) {
- if (el('special-card-th')) el('special-card-th').value = entry.th;
- if (el('special-card-en')) el('special-card-en').value = entry.en;
- }
- setSpecialCardPickerSelection(cardId);
- updateSpecialCardPreview();
- }
-
- function ensureSpecialCardPicker() {
- if (specialCardPickerBuilt) return;
- var picker = el('special-card-picker');
- if (!picker) return;
- picker.innerHTML = '';
- SPECIAL_CARD_CATALOG.forEach(function (entry) {
- var btn = document.createElement('button');
- btn.type = 'button';
- btn.className = 'sq-card-pick';
- btn.setAttribute('role', 'radio');
- btn.setAttribute('aria-checked', 'false');
- btn.setAttribute('data-card-id', String(entry.id));
- btn.title = entry.en + ' — ' + entry.th;
- var img = document.createElement('img');
- img.src = specialCardImageUrl(entry.id);
- img.alt = entry.en;
- img.width = 72;
- img.height = 96;
- img.decoding = 'async';
- img.loading = 'lazy';
- var cap = document.createElement('span');
- cap.className = 'sq-card-pick-cap';
- cap.textContent = entry.en;
- btn.appendChild(img);
- btn.appendChild(cap);
- btn.addEventListener('click', function () {
- selectSpecialCard(entry.id, true);
- });
- picker.appendChild(btn);
- });
- specialCardPickerBuilt = true;
- }
-
- function specialQuizSelectorKey() {
- var L = el('special-quiz-level');
- var C = el('special-quiz-case');
- return 'L' + ((L && L.value) || '1') + '_C' + ((C && C.value) || '1');
- }
-
- function updateSpecialQuizCount() {
- var c = el('special-quiz-count');
- if (!c) return;
- var n = document.querySelectorAll('#special-quiz-questions-list .sq-mcq-row').length;
- c.textContent = '(' + n + ' ข้อ)';
- }
-
- var SPECIAL_QUIZ_CHOICE_COUNT = 4;
- var SPECIAL_QUIZ_LETTERS = ['A', 'B', 'C', 'D', 'E', 'F'];
-
- /** คำถามตัวเลือก A/B/C/D — เลือกคำตอบถูก 1 ข้อ */
- function addSpecialQuizRow(q) {
- q = q || {};
- var list = el('special-quiz-questions-list');
- if (!list) return;
- var choices = Array.isArray(q.choices) ? q.choices : [];
- var correctIndex = Number(q.correctIndex);
- if (!(correctIndex >= 0 && correctIndex < SPECIAL_QUIZ_CHOICE_COUNT)) correctIndex = 0;
-
- var row = document.createElement('div');
- row.className = 'quiz-admin-q-row sq-mcq-row';
-
- var qLab = document.createElement('label');
- qLab.className = 'sq-mcq-q';
- qLab.appendChild(document.createTextNode('คำถาม'));
- var qInp = document.createElement('input');
- qInp.type = 'text';
- qInp.className = 'sq-mcq-text';
- qInp.maxLength = 500;
- qInp.placeholder = 'พิมพ์คำถาม...';
- qInp.value = q.text || '';
- qLab.appendChild(qInp);
-
- var grid = document.createElement('div');
- grid.className = 'sq-mcq-choices';
- for (var i = 0; i < SPECIAL_QUIZ_CHOICE_COUNT; i++) {
- var cl = document.createElement('label');
- cl.className = 'sq-mcq-choice';
- var badge = document.createElement('span');
- badge.className = 'sq-mcq-letter';
- badge.textContent = SPECIAL_QUIZ_LETTERS[i];
- var ci = document.createElement('input');
- ci.type = 'text';
- ci.className = 'sq-mcq-choice-input';
- ci.maxLength = 200;
- ci.placeholder = 'ตัวเลือก ' + SPECIAL_QUIZ_LETTERS[i];
- ci.value = choices[i] || '';
- ci.setAttribute('data-choice-index', String(i));
- cl.appendChild(badge);
- cl.appendChild(ci);
- grid.appendChild(cl);
- }
-
- var foot = document.createElement('div');
- foot.className = 'sq-mcq-foot';
- var ansLab = document.createElement('label');
- ansLab.className = 'sq-mcq-ans';
- ansLab.appendChild(document.createTextNode('คำตอบที่ถูก '));
- var ansSel = document.createElement('select');
- ansSel.className = 'sq-mcq-correct';
- for (var j = 0; j < SPECIAL_QUIZ_CHOICE_COUNT; j++) {
- var o = document.createElement('option');
- o.value = String(j);
- o.textContent = SPECIAL_QUIZ_LETTERS[j];
- if (j === correctIndex) o.selected = true;
- ansSel.appendChild(o);
- }
- ansLab.appendChild(ansSel);
-
- var rm = document.createElement('button');
- rm.type = 'button';
- rm.className = 'btn btn-danger btn-sm quiz-admin-q-remove';
- rm.setAttribute('aria-label', 'ลบข้อนี้');
- rm.textContent = 'ลบ';
- rm.addEventListener('click', function () {
- row.remove();
- updateSpecialQuizCount();
- });
- foot.appendChild(ansLab);
- foot.appendChild(rm);
-
- row.appendChild(qLab);
- row.appendChild(grid);
- row.appendChild(foot);
- list.appendChild(row);
- }
-
- function renderSpecialQuizSet(key) {
- ensureSpecialCardPicker();
- var set = specialQuizSetsState[key] || { questions: [], specialCard: {} };
- var card = (set.specialCard && typeof set.specialCard === 'object') ? set.specialCard : {};
- var cardId = resolveSpecialCardIdFromSaved(card);
- selectSpecialCard(cardId, false);
- if (el('special-card-th')) el('special-card-th').value = card.th || (cardId ? (specialCardCatalogEntry(cardId) || {}).th : '') || '';
- if (el('special-card-en')) el('special-card-en').value = card.en || (cardId ? (specialCardCatalogEntry(cardId) || {}).en : '') || '';
- if (el('special-card-rarity')) {
- el('special-card-rarity').value = SPECIAL_CARD_RARITIES.indexOf(card.rarity) >= 0 ? card.rarity : 'rare';
- }
- if (cardId && el('special-card-image')) el('special-card-image').value = card.imageUrl || specialCardImageUrl(cardId);
- if (cardId && el('special-card-txt-image')) el('special-card-txt-image').value = card.txtImageUrl || specialCardTxtImageUrl(cardId);
- var list = el('special-quiz-questions-list');
- if (list) {
- list.innerHTML = '';
- var qs = (set.questions && set.questions.length)
- ? set.questions
- : [{ type: 'mcq', text: '', choices: ['', '', '', ''], correctIndex: 0 }];
- qs.forEach(addSpecialQuizRow);
- }
- var tag = el('special-quiz-set-tag');
- if (tag) tag.textContent = 'ชุดที่แก้: ' + key;
- updateSpecialQuizCount();
- }
-
- function captureSpecialQuizForm(key) {
- var questions = [];
- document.querySelectorAll('#special-quiz-questions-list .sq-mcq-row').forEach(function (row) {
- var inp = row.querySelector('.sq-mcq-text');
- var t = inp && inp.value ? String(inp.value).trim() : '';
- if (!t) return;
- var choices = [];
- row.querySelectorAll('.sq-mcq-choice-input').forEach(function (ci) {
- choices.push(String(ci.value || '').trim());
- });
- if (choices.filter(function (c) { return c; }).length < 2) return;
- var sel = row.querySelector('.sq-mcq-correct');
- var correctIndex = sel ? parseInt(sel.value, 10) : 0;
- if (!(correctIndex >= 0 && correctIndex < choices.length) || !choices[correctIndex]) {
- correctIndex = choices.findIndex(function (c) { return c; });
- if (correctIndex < 0) correctIndex = 0;
- }
- questions.push({ type: 'mcq', text: t, choices: choices, correctIndex: correctIndex });
- });
- var rar = el('special-card-rarity') ? el('special-card-rarity').value : 'rare';
- var cardId = parseInt(el('special-card-id') && el('special-card-id').value, 10);
- if (!(cardId >= 1 && cardId <= 7)) cardId = null;
- specialQuizSetsState[key] = {
- questions: questions,
- specialCard: {
- cardId: cardId,
- th: el('special-card-th') ? String(el('special-card-th').value || '').trim() : '',
- en: el('special-card-en') ? String(el('special-card-en').value || '').trim() : '',
- rarity: SPECIAL_CARD_RARITIES.indexOf(rar) >= 0 ? rar : 'rare',
- imageUrl: el('special-card-image') ? String(el('special-card-image').value || '').trim() : '',
- txtImageUrl: el('special-card-txt-image') ? String(el('special-card-txt-image').value || '').trim() : '',
- },
- };
- }
-
- function onSpecialQuizSelectorChange() {
- captureSpecialQuizForm(specialQuizCurrentKey);
- specialQuizCurrentKey = specialQuizSelectorKey();
- renderSpecialQuizSet(specialQuizCurrentKey);
- }
-
- function loadSpecialQuizPanel() {
- setMsg('special-quiz-msg', 'กำลังโหลด...', '');
- gameQuizFetch('GET').then(function (data) {
- specialQuizSetsState = (data.specialQuizSets && typeof data.specialQuizSets === 'object') ? data.specialQuizSets : {};
- specialQuizCurrentKey = specialQuizSelectorKey();
- renderSpecialQuizSet(specialQuizCurrentKey);
- setMsg('special-quiz-msg', '', '');
- }).catch(function (e) {
- setMsg('special-quiz-msg', e.message || 'โหลดไม่ได้', 'error');
- });
- }
-
- function saveSpecialQuizPanel() {
- captureSpecialQuizForm(specialQuizCurrentKey);
- setMsg('special-quiz-msg', 'กำลังบันทึก...', '');
- gameQuizFetch('PUT', { specialQuizSets: specialQuizSetsState }).then(function (res) {
- if (res && res.specialQuizSets && typeof res.specialQuizSets === 'object') {
- specialQuizSetsState = res.specialQuizSets;
- }
- setMsg('special-quiz-msg', 'บันทึกแล้ว (15 ชุด)', 'ok');
- renderSpecialQuizSet(specialQuizCurrentKey);
- }).catch(function (e) {
- setMsg('special-quiz-msg', e.message || 'บันทึกไม่ได้', 'error');
- });
- }
-
- function quizTfThemeHiddenId(kind) {
- if (kind === 'bg') return 'quiz-tf-theme-bg';
- if (kind === 'border') return 'quiz-tf-theme-border';
- return 'quiz-tf-theme-text';
- }
-
- function quizTfRowPrefix(kind) {
- return 'quiz-tf-theme-' + kind;
- }
-
- function quizTfSetPickersFromColorString(kind, cssStr) {
- var fb = QUIZ_CARRY_THEME_DEFAULTS[kind];
- var o = quizCarryParseCssColor(cssStr, fb);
- var pref = quizTfRowPrefix(kind);
- var sw = el(pref + '-swatch');
- var ra = el(pref + '-alpha');
- var out = el(pref + '-alpha-out');
- var hi = el(quizTfThemeHiddenId(kind));
- var pr = el(pref + '-preview');
- if (!sw || !ra || !hi) return;
- sw.value = quizCarryHexFromRgb(o.r, o.g, o.b);
- var pct = Math.max(0, Math.min(100, Math.round(Number(o.a) * 100)));
- ra.value = String(pct);
- if (out) out.textContent = pct + '%';
- hi.value = quizCarryRgbToRgbaString(o);
- if (pr) pr.textContent = hi.value;
- }
-
- function quizTfComposeFromPickers(kind) {
- var pref = quizTfRowPrefix(kind);
- var sw = el(pref + '-swatch');
- var ra = el(pref + '-alpha');
- if (!sw || !ra) return '';
- var pr = quizCarryParseHexToRgb(sw.value);
- if (!pr) return '';
- var pct = parseInt(String(ra.value), 10);
- if (!Number.isFinite(pct)) pct = 100;
- pct = Math.max(0, Math.min(100, pct));
- return quizCarryRgbToRgbaString({ r: pr.r, g: pr.g, b: pr.b, a: pct / 100 });
- }
-
- function quizTfSyncRowOutput(kind) {
- var s = quizTfComposeFromPickers(kind);
- var hi = el(quizTfThemeHiddenId(kind));
- var pref = quizTfRowPrefix(kind);
- var ra = el(pref + '-alpha');
- var out = el(pref + '-alpha-out');
- var pr = el(pref + '-preview');
- if (hi) hi.value = s;
- if (out && ra) out.textContent = String(Math.max(0, Math.min(100, parseInt(ra.value, 10) || 0))) + '%';
- if (pr && hi) pr.textContent = hi.value;
- }
-
- function quizTfBindThemePickersOnce() {
- if (quizTfBindThemePickersOnce._done) return;
- ['bg', 'border', 'text'].forEach(function (kind) {
- var pref = quizTfRowPrefix(kind);
- var sw = el(pref + '-swatch');
- var ra = el(pref + '-alpha');
- if (!sw || !ra) return;
- if (ra.getAttribute('data-tf-bound') === '1') return;
- ra.setAttribute('data-tf-bound', '1');
- function sync() {
- quizTfSyncRowOutput(kind);
- }
- sw.addEventListener('input', sync);
- sw.addEventListener('change', sync);
- ra.addEventListener('input', sync);
- ra.addEventListener('change', sync);
- });
- quizTfBindThemePickersOnce._done = true;
- }
-
- function quizTfBuildThemeForSave() {
- quizTfBindThemePickersOnce();
- ['bg', 'border', 'text'].forEach(function (k) {
- quizTfSyncRowOutput(k);
- });
- var fbBg = QUIZ_CARRY_THEME_DEFAULTS.bg;
- var fbBr = QUIZ_CARRY_THEME_DEFAULTS.border;
- var fbTx = QUIZ_CARRY_THEME_DEFAULTS.text;
- var sBg = quizTfComposeFromPickers('bg');
- var sBr = quizTfComposeFromPickers('border');
- var sTx = quizTfComposeFromPickers('text');
- var bwEl = el('quiz-tf-theme-border-w');
- var bw = bwEl ? parseInt(String(bwEl.value || '2'), 10) : 2;
- if (!Number.isFinite(bw)) bw = 2;
- bw = Math.max(0, Math.min(12, Math.round(bw)));
- var qfMinEl = el('quiz-tf-theme-qfont-min');
- var qfMaxEl = el('quiz-tf-theme-qfont-max');
- var qMin = qfMinEl ? parseInt(String(qfMinEl.value || '10'), 10) : 10;
- var qMax = qfMaxEl ? parseInt(String(qfMaxEl.value || '24'), 10) : 24;
- if (!Number.isFinite(qMin)) qMin = 10;
- if (!Number.isFinite(qMax)) qMax = 24;
- qMin = Math.max(10, Math.min(40, Math.round(qMin)));
- qMax = Math.max(14, Math.min(56, Math.round(qMax)));
- if (qMax < qMin) {
- var swap = qMin;
- qMin = qMax;
- qMax = swap;
- }
- return {
- panelBg: (sBg && sBg.trim()) ? sBg.trim().slice(0, 120) : quizCarryRgbToRgbaString(fbBg),
- panelBorder: (sBr && sBr.trim()) ? sBr.trim().slice(0, 120) : quizCarryRgbToRgbaString(fbBr),
- textColor: (sTx && sTx.trim()) ? sTx.trim().slice(0, 120) : quizCarryRgbToRgbaString(fbTx),
- borderWidthPx: bw,
- questionFontMinPx: qMin,
- questionFontMaxPx: qMax,
- };
- }
-
- function quizTfFillFormFromTheme(th) {
- quizTfBindThemePickersOnce();
- var t = th && typeof th === 'object' ? th : {};
- quizTfSetPickersFromColorString('bg', t.panelBg);
- quizTfSetPickersFromColorString('border', t.panelBorder);
- quizTfSetPickersFromColorString('text', t.textColor);
- var bwEl = el('quiz-tf-theme-border-w');
- var bw = parseInt(String(t.borderWidthPx), 10);
- if (bwEl) bwEl.value = String(Number.isFinite(bw) && bw >= 0 ? Math.min(12, bw) : 2);
- var qfMinEl = el('quiz-tf-theme-qfont-min');
- var qfMaxEl = el('quiz-tf-theme-qfont-max');
- var qMin = parseInt(String(t.questionFontMinPx), 10);
- var qMax = parseInt(String(t.questionFontMaxPx), 10);
- if (qfMinEl) qfMinEl.value = String(Number.isFinite(qMin) ? Math.max(10, Math.min(40, qMin)) : 10);
- if (qfMaxEl) qfMaxEl.value = String(Number.isFinite(qMax) ? Math.max(14, Math.min(56, qMax)) : 24);
- }
-
- var QUIZ_CARRY_MAX_SLOTS = 16;
-
- function rebuildQuizCarryCorrectSelect(row) {
- var sel = row.querySelector('.quiz-carry-correct-sel');
- if (!sel) return;
- var inputs = row.querySelectorAll('.quiz-carry-slot-inp');
- var prev = sel.value;
- sel.innerHTML = '';
- var has = false;
- for (var i = 0; i < inputs.length; i++) {
- var t = inputs[i].value ? String(inputs[i].value).trim() : '';
- if (!t) continue;
- has = true;
- var o = document.createElement('option');
- o.value = String(i);
- var preview = t.length > 48 ? t.slice(0, 45) + '…' : t;
- o.textContent = String(i + 1) + '. ' + preview;
- sel.appendChild(o);
- }
- if (!has) {
- var ox = document.createElement('option');
- ox.value = '';
- ox.textContent = '— กรอกตัวเลือกอย่างน้อย 2 ช่อง —';
- sel.appendChild(ox);
- sel.disabled = true;
- return;
- }
- sel.disabled = false;
- var ok = false;
- for (var j = 0; j < sel.options.length; j++) {
- if (sel.options[j].value === prev) {
- sel.selectedIndex = j;
- ok = true;
- break;
- }
- }
- if (!ok) sel.selectedIndex = 0;
- }
-
- function bindQuizCarryRowInputs(row) {
- row.querySelectorAll('.quiz-carry-slot-inp').forEach(function (inp) {
- inp.addEventListener('input', function () {
- rebuildQuizCarryCorrectSelect(row);
- });
- });
- }
-
- function addQuizCarryAdminRow(q) {
- var list = el('quiz-carry-admin-list');
- if (!list) return;
- q = q || {};
- var choices = Array.isArray(q.choices) ? q.choices : [];
- var choiceImages = Array.isArray(q.choiceImageUrls) ? q.choiceImageUrls : [];
- var block = document.createElement('div');
- block.className = 'quiz-carry-admin-block';
-
- var head = document.createElement('div');
- head.className = 'quiz-carry-admin-block-head';
-
- var labQ = document.createElement('label');
- labQ.className = 'quiz-carry-q-label';
- labQ.appendChild(document.createTextNode('คำถาม'));
- var inpQ = document.createElement('input');
- inpQ.type = 'text';
- inpQ.className = 'quiz-carry-q-text';
- inpQ.placeholder = 'พิมพ์คำถาม…';
- inpQ.maxLength = 500;
- inpQ.value = q.text ? String(q.text) : '';
- labQ.appendChild(inpQ);
-
- var rm = document.createElement('button');
- rm.type = 'button';
- rm.className = 'btn btn-danger btn-sm quiz-carry-block-remove';
- rm.setAttribute('aria-label', 'ลบข้อนี้');
- rm.textContent = 'ลบข้อ';
- rm.addEventListener('click', function () {
- block.remove();
- if (!list.querySelector('.quiz-carry-admin-block')) addQuizCarryAdminRow(null);
- });
-
- head.appendChild(labQ);
- head.appendChild(rm);
- block.appendChild(head);
-
- var grid = document.createElement('div');
- grid.className = 'quiz-carry-choice-grid';
- for (var s = 0; s < QUIZ_CARRY_MAX_SLOTS; s++) {
- var lab = document.createElement('label');
- lab.className = 'quiz-carry-slot-label';
- lab.appendChild(document.createTextNode('ตัวเลือก ' + (s + 1)));
- var inp = document.createElement('input');
- inp.type = 'text';
- inp.className = 'quiz-carry-slot-inp';
- inp.placeholder = s < 2 ? 'จำเป็น' : 'ไม่บังคับ';
- inp.maxLength = 160;
- inp.value = choices[s] != null ? String(choices[s]) : '';
- lab.appendChild(inp);
- var imgInp = document.createElement('input');
- imgInp.type = 'url';
- imgInp.className = 'quiz-carry-slot-img';
- imgInp.placeholder = 'รูป (URL — ไม่บังคับ)';
- imgInp.maxLength = 512;
- imgInp.autocomplete = 'off';
- imgInp.value = choiceImages[s] != null ? String(choiceImages[s]) : '';
- imgInp.setAttribute('aria-label', 'URL รูปตัวเลือก ' + (s + 1));
- lab.appendChild(imgInp);
- grid.appendChild(lab);
- }
- block.appendChild(grid);
-
- var cw = document.createElement('div');
- cw.className = 'quiz-carry-correct-wrap';
- var labC = document.createElement('label');
- labC.className = 'quiz-carry-correct-label';
- labC.appendChild(document.createTextNode('ข้อที่ถูกต้อง'));
- var sel = document.createElement('select');
- sel.className = 'quiz-carry-correct-sel';
- sel.setAttribute('aria-label', 'เลือกข้อที่ถูก');
- labC.appendChild(sel);
- cw.appendChild(labC);
- block.appendChild(cw);
-
- list.appendChild(block);
- bindQuizCarryRowInputs(block);
- rebuildQuizCarryCorrectSelect(block);
- var ci = Number(q.correctIndex);
- if (Number.isFinite(ci) && ci >= 0) {
- var targetSlot = ci;
- var opts = sel.querySelectorAll('option');
- for (var k = 0; k < opts.length; k++) {
- if (opts[k].value === String(targetSlot)) {
- sel.selectedIndex = k;
- break;
- }
- }
- }
- }
-
- function renderQuizCarryAdminList(arr) {
- var list = el('quiz-carry-admin-list');
- if (!list) return;
- list.innerHTML = '';
- var rows = arr && arr.length ? arr : [null];
- rows.forEach(function (q) {
- addQuizCarryAdminRow(q);
- });
- }
-
- /** ค่าเริ่มต้น RGBA สำหรับแผงคำถามบนแผนที่ (quiz_carry) */
- var QUIZ_CARRY_THEME_DEFAULTS = {
- bg: { r: 12, g: 14, b: 28, a: 0.88 },
- border: { r: 255, g: 214, b: 102, a: 0.7 },
- text: { r: 241, g: 245, b: 249, a: 1 },
- };
-
- function quizCarryClampByte(n) {
- return Math.max(0, Math.min(255, Math.round(Number(n)) || 0));
- }
-
- function quizCarryHexFromRgb(r, g, b) {
- return '#' + [r, g, b].map(function (x) {
- var h = quizCarryClampByte(x).toString(16);
- return h.length === 1 ? '0' + h : h;
- }).join('');
- }
-
- function quizCarryParseHexToRgb(hex) {
- var h = String(hex || '').trim().replace(/^#/, '');
- if (!h) return null;
- if (h.length === 3) {
- return {
- r: parseInt(h[0] + h[0], 16),
- g: parseInt(h[1] + h[1], 16),
- b: parseInt(h[2] + h[2], 16),
- alpha01: null,
- };
- }
- if (h.length === 6) {
- return {
- r: parseInt(h.slice(0, 2), 16),
- g: parseInt(h.slice(2, 4), 16),
- b: parseInt(h.slice(4, 6), 16),
- alpha01: null,
- };
- }
- if (h.length === 8) {
- return {
- r: parseInt(h.slice(0, 2), 16),
- g: parseInt(h.slice(2, 4), 16),
- b: parseInt(h.slice(4, 6), 16),
- alpha01: parseInt(h.slice(6, 8), 16) / 255,
- };
- }
- return null;
- }
-
- function quizCarryParseCssColor(str, fallback) {
- var s = String(str == null ? '' : str).trim();
- if (!s) return fallback;
- var m = /^rgba?\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*(?:,\s*([0-9.]+)\s*)?\)$/i.exec(s);
- if (m) {
- var a = m[4] != null && m[4] !== '' ? parseFloat(m[4]) : 1;
- if (!Number.isFinite(a)) a = 1;
- return {
- r: quizCarryClampByte(parseInt(m[1], 10)),
- g: quizCarryClampByte(parseInt(m[2], 10)),
- b: quizCarryClampByte(parseInt(m[3], 10)),
- a: Math.max(0, Math.min(1, a)),
- };
- }
- if (/^#/.test(s)) {
- var pr = quizCarryParseHexToRgb(s);
- if (!pr) return fallback;
- var a = pr.alpha01 != null ? pr.alpha01 : 1;
- return { r: pr.r, g: pr.g, b: pr.b, a: Math.max(0, Math.min(1, a)) };
- }
- return fallback;
- }
-
- function quizCarryRgbToRgbaString(o) {
- var a = Math.max(0, Math.min(1, Number(o.a)));
- var t = Math.round(a * 1000) / 1000;
- return 'rgba(' + quizCarryClampByte(o.r) + ', ' + quizCarryClampByte(o.g) + ', ' + quizCarryClampByte(o.b) + ', ' + t + ')';
- }
-
- function quizCarryRowPrefix(kind) {
- return 'quiz-carry-theme-' + kind;
- }
-
- function quizCarryThemeHiddenId(kind) {
- if (kind === 'bg') return 'quiz-carry-theme-bg';
- if (kind === 'border') return 'quiz-carry-theme-border';
- return 'quiz-carry-theme-text';
- }
-
- function quizCarrySetPickersFromColorString(kind, cssStr) {
- var fb = QUIZ_CARRY_THEME_DEFAULTS[kind];
- var o = quizCarryParseCssColor(cssStr, fb);
- var pref = quizCarryRowPrefix(kind);
- var sw = el(pref + '-swatch');
- var ra = el(pref + '-alpha');
- var out = el(pref + '-alpha-out');
- var hi = el(quizCarryThemeHiddenId(kind));
- var pr = el(pref + '-preview');
- if (!sw || !ra || !hi) return;
- sw.value = quizCarryHexFromRgb(o.r, o.g, o.b);
- var pct = Math.max(0, Math.min(100, Math.round(Number(o.a) * 100)));
- ra.value = String(pct);
- if (out) out.textContent = pct + '%';
- hi.value = quizCarryRgbToRgbaString(o);
- if (pr) pr.textContent = hi.value;
- }
-
- function quizCarryComposeFromPickers(kind) {
- var pref = quizCarryRowPrefix(kind);
- var sw = el(pref + '-swatch');
- var ra = el(pref + '-alpha');
- if (!sw || !ra) return '';
- var pr = quizCarryParseHexToRgb(sw.value);
- if (!pr) return '';
- var pct = parseInt(String(ra.value), 10);
- if (!Number.isFinite(pct)) pct = 100;
- pct = Math.max(0, Math.min(100, pct));
- return quizCarryRgbToRgbaString({ r: pr.r, g: pr.g, b: pr.b, a: pct / 100 });
- }
-
- function quizCarrySyncRowOutput(kind) {
- var s = quizCarryComposeFromPickers(kind);
- var hi = el(quizCarryThemeHiddenId(kind));
- var pref = quizCarryRowPrefix(kind);
- var ra = el(pref + '-alpha');
- var out = el(pref + '-alpha-out');
- var pr = el(pref + '-preview');
- if (hi) hi.value = s;
- if (out && ra) out.textContent = String(Math.max(0, Math.min(100, parseInt(ra.value, 10) || 0))) + '%';
- if (pr && hi) pr.textContent = hi.value;
- }
-
- /** อ่านค่าจาก color + range โดยตรง (ไม่พึ่ง hidden ที่อาจว่าง) ก่อน PUT */
- function quizCarryBuildThemeForSave() {
- quizCarryBindThemePickersOnce();
- ['bg', 'border', 'text'].forEach(function (k) {
- quizCarrySyncRowOutput(k);
- });
- var fbBg = QUIZ_CARRY_THEME_DEFAULTS.bg;
- var fbBr = QUIZ_CARRY_THEME_DEFAULTS.border;
- var fbTx = QUIZ_CARRY_THEME_DEFAULTS.text;
- var sBg = quizCarryComposeFromPickers('bg');
- var sBr = quizCarryComposeFromPickers('border');
- var sTx = quizCarryComposeFromPickers('text');
- var bwEl = el('quiz-carry-theme-border-w');
- var bw = bwEl ? parseInt(String(bwEl.value || '2'), 10) : 2;
- if (!Number.isFinite(bw)) bw = 2;
- bw = Math.max(0, Math.min(12, Math.round(bw)));
- var qfMinEl = el('quiz-carry-theme-qfont-min');
- var qfMaxEl = el('quiz-carry-theme-qfont-max');
- var qMin = qfMinEl ? parseInt(String(qfMinEl.value || '10'), 10) : 10;
- var qMax = qfMaxEl ? parseInt(String(qfMaxEl.value || '24'), 10) : 24;
- if (!Number.isFinite(qMin)) qMin = 10;
- if (!Number.isFinite(qMax)) qMax = 24;
- qMin = Math.max(10, Math.min(40, Math.round(qMin)));
- qMax = Math.max(14, Math.min(56, Math.round(qMax)));
- if (qMax < qMin) {
- var swap = qMin;
- qMin = qMax;
- qMax = swap;
- }
- return {
- panelBg: (sBg && sBg.trim()) ? sBg.trim().slice(0, 120) : quizCarryRgbToRgbaString(fbBg),
- panelBorder: (sBr && sBr.trim()) ? sBr.trim().slice(0, 120) : quizCarryRgbToRgbaString(fbBr),
- textColor: (sTx && sTx.trim()) ? sTx.trim().slice(0, 120) : quizCarryRgbToRgbaString(fbTx),
- borderWidthPx: bw,
- questionFontMinPx: qMin,
- questionFontMaxPx: qMax,
- };
- }
-
- function quizCarryBindThemePickersOnce() {
- if (quizCarryBindThemePickersOnce._done) return;
- ['bg', 'border', 'text'].forEach(function (kind) {
- var pref = quizCarryRowPrefix(kind);
- var sw = el(pref + '-swatch');
- var ra = el(pref + '-alpha');
- if (!sw || !ra) return;
- if (ra.getAttribute('data-bound') === '1') return;
- ra.setAttribute('data-bound', '1');
- function sync() {
- quizCarrySyncRowOutput(kind);
- }
- sw.addEventListener('input', sync);
- sw.addEventListener('change', sync);
- ra.addEventListener('input', sync);
- ra.addEventListener('change', sync);
- });
- quizCarryBindThemePickersOnce._done = true;
- }
-
- /** ธีมนับ 3-2-1 embed — สีม่าน / กล่อง / ขนาด (carryEmbedCountdownTheme) */
- var QUIZ_CARRY_ECD_COLS = [
- { sw: 'quiz-carry-ecd-overlay-swatch', ra: 'quiz-carry-ecd-overlay-alpha', out: 'quiz-carry-ecd-overlay-alpha-out', hi: 'quiz-carry-ecd-overlay-val', pr: 'quiz-carry-ecd-overlay-preview' },
- { sw: 'quiz-carry-ecd-inner-bg-swatch', ra: 'quiz-carry-ecd-inner-bg-alpha', out: 'quiz-carry-ecd-inner-bg-alpha-out', hi: 'quiz-carry-ecd-inner-bg-val', pr: 'quiz-carry-ecd-inner-bg-preview' },
- { sw: 'quiz-carry-ecd-inner-border-swatch', ra: 'quiz-carry-ecd-inner-border-alpha', out: 'quiz-carry-ecd-inner-border-alpha-out', hi: 'quiz-carry-ecd-inner-border-val', pr: 'quiz-carry-ecd-inner-border-preview' },
- ];
- var QUIZ_CARRY_ECD_DEFAULTS_RGBA = {
- overlay: { r: 8, g: 10, b: 20, a: 0.42 },
- innerBg: { r: 12, g: 14, b: 28, a: 0.82 },
- innerBorder: { r: 122, g: 162, b: 247, a: 0.45 },
- };
-
- function quizCarryEcdColKey(idx) {
- if (idx === 0) return 'overlay';
- if (idx === 1) return 'innerBg';
- return 'innerBorder';
- }
-
- function quizCarryEcdSyncRow(idx) {
- var row = QUIZ_CARRY_ECD_COLS[idx];
- var sw = el(row.sw);
- var ra = el(row.ra);
- var hi = el(row.hi);
- var pr = el(row.pr);
- var out = el(row.out);
- if (!sw || !ra || !hi) return;
- var prRgb = quizCarryParseHexToRgb(sw.value);
- if (!prRgb) return;
- var pct = parseInt(String(ra.value), 10);
- if (!Number.isFinite(pct)) pct = 100;
- pct = Math.max(0, Math.min(100, pct));
- var s = quizCarryRgbToRgbaString({ r: prRgb.r, g: prRgb.g, b: prRgb.b, a: pct / 100 });
- hi.value = s;
- if (out) out.textContent = pct + '%';
- if (pr) pr.textContent = s;
- }
-
- function quizCarryEcdSetRowFromRgba(idx, cssStr) {
- var row = QUIZ_CARRY_ECD_COLS[idx];
- var key = quizCarryEcdColKey(idx);
- var fb = QUIZ_CARRY_ECD_DEFAULTS_RGBA[key];
- var o = quizCarryParseCssColor(cssStr, fb);
- var sw = el(row.sw);
- var ra = el(row.ra);
- var out = el(row.out);
- var hi = el(row.hi);
- var pr = el(row.pr);
- if (!sw || !ra || !hi) return;
- sw.value = quizCarryHexFromRgb(o.r, o.g, o.b);
- var pct = Math.max(0, Math.min(100, Math.round(Number(o.a) * 100)));
- ra.value = String(pct);
- if (out) out.textContent = pct + '%';
- hi.value = quizCarryRgbToRgbaString(o);
- if (pr) pr.textContent = hi.value;
- }
-
- function quizCarryEcdBindPickersOnce() {
- if (quizCarryEcdBindPickersOnce._done) return;
- for (var i = 0; i < QUIZ_CARRY_ECD_COLS.length; i++) {
- (function (idx) {
- var row = QUIZ_CARRY_ECD_COLS[idx];
- var sw = el(row.sw);
- var ra = el(row.ra);
- if (!sw || !ra) return;
- if (ra.getAttribute('data-ecd-bound') === '1') return;
- ra.setAttribute('data-ecd-bound', '1');
- function sync() {
- quizCarryEcdSyncRow(idx);
- }
- sw.addEventListener('input', sync);
- sw.addEventListener('change', sync);
- ra.addEventListener('input', sync);
- ra.addEventListener('change', sync);
- })(i);
- }
- quizCarryEcdBindPickersOnce._done = true;
- }
-
- function quizCarryEcdBuildForSave() {
- quizCarryEcdBindPickersOnce();
- for (var i = 0; i < QUIZ_CARRY_ECD_COLS.length; i++) quizCarryEcdSyncRow(i);
- var o0 = el('quiz-carry-ecd-overlay-val');
- var o1 = el('quiz-carry-ecd-inner-bg-val');
- var o2 = el('quiz-carry-ecd-inner-border-val');
- var bwEl = el('quiz-carry-ecd-inner-border-w');
- var radEl = el('quiz-carry-ecd-inner-radius');
- var dig = el('quiz-carry-ecd-digit-swatch');
- var m1 = el('quiz-carry-ecd-map-cqmin');
- var m2 = el('quiz-carry-ecd-map-cqh');
- var m3 = el('quiz-carry-ecd-map-max-px');
- var sv = el('quiz-carry-ecd-screen-vw');
- var sm = el('quiz-carry-ecd-screen-max-px');
- var bw = bwEl ? parseInt(String(bwEl.value || '1'), 10) : 1;
- if (!Number.isFinite(bw)) bw = 1;
- bw = Math.max(0, Math.min(12, Math.round(bw)));
- var rad = radEl ? parseInt(String(radEl.value || '12'), 10) : 12;
- if (!Number.isFinite(rad)) rad = 12;
- rad = Math.max(0, Math.min(32, Math.round(rad)));
- var cqmin = m1 ? parseInt(String(m1.value || '78'), 10) : 78;
- var cqh = m2 ? parseInt(String(m2.value || '82'), 10) : 82;
- var mpx = m3 ? parseInt(String(m3.value || '200'), 10) : 200;
- cqmin = Math.max(35, Math.min(100, cqmin));
- cqh = Math.max(35, Math.min(100, cqh));
- mpx = Math.max(48, Math.min(400, mpx));
- var vw = sv ? parseInt(String(sv.value || '28'), 10) : 28;
- var smx = sm ? parseInt(String(sm.value || '132'), 10) : 132;
- vw = Math.max(6, Math.min(44, vw));
- smx = Math.max(48, Math.min(220, smx));
- var digitHex = dig && /^#[0-9a-fA-F]{6}$/.test(String(dig.value || '').trim()) ? String(dig.value).trim() : '#ffe066';
- return {
- overlayBackdrop: (o0 && o0.value.trim()) ? o0.value.trim().slice(0, 120) : quizCarryRgbToRgbaString(QUIZ_CARRY_ECD_DEFAULTS_RGBA.overlay),
- innerBg: (o1 && o1.value.trim()) ? o1.value.trim().slice(0, 120) : quizCarryRgbToRgbaString(QUIZ_CARRY_ECD_DEFAULTS_RGBA.innerBg),
- innerBorder: (o2 && o2.value.trim()) ? o2.value.trim().slice(0, 120) : quizCarryRgbToRgbaString(QUIZ_CARRY_ECD_DEFAULTS_RGBA.innerBorder),
- innerBorderWpx: bw,
- innerRadiusPx: rad,
- digitColor: digitHex.slice(0, 32),
- mapDigitCqmin: cqmin,
- mapDigitCqh: cqh,
- mapDigitMaxPx: mpx,
- screenDigitVw: vw,
- screenDigitMaxPx: smx,
- };
- }
-
- function quizCarryEcdFillForm(th) {
- quizCarryEcdBindPickersOnce();
- var t = th && typeof th === 'object' ? th : {};
- quizCarryEcdSetRowFromRgba(0, t.overlayBackdrop);
- quizCarryEcdSetRowFromRgba(1, t.innerBg);
- quizCarryEcdSetRowFromRgba(2, t.innerBorder);
- var bwEl = el('quiz-carry-ecd-inner-border-w');
- var radEl = el('quiz-carry-ecd-inner-radius');
- var dig = el('quiz-carry-ecd-digit-swatch');
- var m1 = el('quiz-carry-ecd-map-cqmin');
- var m2 = el('quiz-carry-ecd-map-cqh');
- var m3 = el('quiz-carry-ecd-map-max-px');
- var sv = el('quiz-carry-ecd-screen-vw');
- var sm = el('quiz-carry-ecd-screen-max-px');
- var bw = parseInt(String(t.innerBorderWpx), 10);
- if (bwEl) bwEl.value = String(Number.isFinite(bw) && bw >= 0 ? Math.min(12, bw) : 1);
- var rad = parseInt(String(t.innerRadiusPx), 10);
- if (radEl) radEl.value = String(Number.isFinite(rad) && rad >= 0 ? Math.min(32, rad) : 12);
- if (dig && typeof t.digitColor === 'string' && /^#[0-9a-fA-F]{6}$/.test(t.digitColor.trim())) dig.value = t.digitColor.trim();
- var cqmin = parseInt(String(t.mapDigitCqmin), 10);
- var cqh = parseInt(String(t.mapDigitCqh), 10);
- var mpx = parseInt(String(t.mapDigitMaxPx), 10);
- if (m1) m1.value = String(Number.isFinite(cqmin) ? Math.max(35, Math.min(100, cqmin)) : 78);
- if (m2) m2.value = String(Number.isFinite(cqh) ? Math.max(35, Math.min(100, cqh)) : 82);
- if (m3) m3.value = String(Number.isFinite(mpx) ? Math.max(48, Math.min(400, mpx)) : 200);
- var vw = parseInt(String(t.screenDigitVw), 10);
- var smx = parseInt(String(t.screenDigitMaxPx), 10);
- if (sv) sv.value = String(Number.isFinite(vw) ? Math.max(6, Math.min(44, vw)) : 28);
- if (sm) sm.value = String(Number.isFinite(smx) ? Math.max(48, Math.min(220, smx)) : 132);
- }
-
- var QUIZ_CARRY_PLAQUE_SLOT_COUNT = 16;
- var QUIZ_CARRY_PLAQUE_KINDS = ['fixed', 'fill', 'text'];
- var QUIZ_CARRY_PLAQUE_DEFAULTS_RGBA = {
- fixed: { r: 122, g: 200, b: 255, a: 0.9 },
- fill: { r: 12, g: 10, b: 20, a: 0.88 },
- text: { r: 248, g: 249, b: 255, a: 1 },
- };
-
- function quizCarryPlaqueSlotPrefix(si) {
- return 'quiz-carry-plaque-s' + si + '-';
- }
-
- /**
- * อัปโหลดป้าย: ลอง POST ตรง Node (/Game/api/ — nginx proxy 20M) ก่อน แล้วค่อย PHP ถ้าล้ม
- * เดิมลอง PHP ก่อนทำให้พังง่ายเมื่อ php-fpm ต่อ 127.0.0.1:3001 ไม่ได้หรือ session ผิด แม้เกมจะรันอยู่
- */
- function quizCarryPlaqueUploadWithFallback(dataUrl) {
- var body = JSON.stringify({ imageDataUrl: dataUrl });
- var opts = { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: body };
- return gauntletAssetsJsonFetch(GAME_QUIZ_CARRY_PLAQUE_UPLOAD_NODE, opts).catch(function (errFirst) {
- var msg = String((errFirst && errFirst.message) || '');
- if (/\b401\b|Unauthorized|หมดเซสชัน/i.test(msg)) {
- return Promise.reject(errFirst);
- }
- var tryPhp =
- /\b404\b|\b405\b|Not Found|ไม่พบ|502|503|504|Bad Gateway|Failed to fetch|NetworkError|Load failed|ECONNREFUSED/i.test(
- msg,
- ) ||
- /\b413\b|Request Entity Too Large|Payload too large|รับ body ไม่ได้|too large/i.test(msg);
- if (!tryPhp) {
- return Promise.reject(errFirst);
- }
- return gauntletAssetsJsonFetch(GAME_QUIZ_CARRY_PLAQUE_UPLOAD_PHP, opts).then(function (res) {
- try {
- setMsg(
- 'quiz-carry-settings-msg',
- 'อัปโหลดสำเร็จผ่าน PHP (รองจาก /Game/api/) · Upload OK via PHP fallback',
- 'ok',
- );
- } catch (e1) { /* ignore */ }
- return res;
- });
- });
- }
-
- /** URL สำหรับ — path ที่ขึ้นต้นด้วย / ให้ต่อ origin (รองรับ Admin ใต้โดเมนเดียวกับ /Game/) */
- function quizCarryPlaqueAbsMediaUrl(path) {
- var s = String(path || '').trim();
- if (!s) return '';
- if (/^https?:\/\//i.test(s)) return s;
- if (s.charAt(0) === '/') return String(window.location.origin || '') + s;
- return '';
- }
-
- function quizCarryPlaqueUpdateImagePreview(si) {
- var pfx = quizCarryPlaqueSlotPrefix(si);
- var inp = el(pfx + 'plaque-image-url');
- var img = el(pfx + 'plaque-preview-img');
- var errEl = el(pfx + 'plaque-preview-err');
- if (!img) return;
- var raw = inp && inp.value ? String(inp.value).trim() : '';
- if (errEl) errEl.textContent = '';
- if (!raw) {
- img.style.display = 'none';
- img.removeAttribute('src');
- return;
- }
- var abs = quizCarryPlaqueAbsMediaUrl(raw);
- if (!abs) {
- img.style.display = 'none';
- if (errEl) errEl.textContent = 'รูปแบบ URL ไม่รองรับ';
- return;
- }
- img.onerror = function () {
- img.style.display = 'none';
- if (errEl) errEl.textContent = 'โหลดตัวอย่างไม่ได้ — ตรวจ path / สิทธิ์ไฟล์ / รีสตาร์ท Node';
- };
- img.onload = function () {
- try {
- img.removeAttribute('width');
- img.removeAttribute('height');
- } catch (e) { /* ignore */ }
- img.style.display = 'block';
- if (errEl) errEl.textContent = '';
- };
- var sep = abs.indexOf('?') >= 0 ? '&' : '?';
- img.src = abs + sep + '_pv=' + Date.now();
- }
-
- function quizCarryPlaqueUpdateNeonUi(si) {
- var modeEl = el(quizCarryPlaqueSlotPrefix(si) + 'border-mode');
- var grid = modeEl && modeEl.closest ? modeEl.closest('.quiz-carry-theme-grid') : null;
- if (!grid) return;
- if (modeEl && modeEl.value === 'fixed') grid.classList.remove('quiz-carry-plaque-grid--neon');
- else grid.classList.add('quiz-carry-plaque-grid--neon');
- var hint = grid.querySelector('.quiz-carry-plaque-neon-hint');
- if (hint) hint.style.display = modeEl && modeEl.value === 'fixed' ? 'none' : '';
- }
-
- function quizCarryPlaqueRowIds(si, kind) {
- var seg = kind === 'fixed' ? 'fixed' : kind === 'fill' ? 'fill' : 'text';
- var p = quizCarryPlaqueSlotPrefix(si);
- return {
- sw: p + seg + '-swatch',
- ra: p + seg + '-alpha',
- out: p + seg + '-alpha-out',
- hi: p + seg + '-val',
- };
- }
-
- function quizCarryPlaqueEnsureMounted() {
- var root = el('quiz-carry-plaque-slots-root');
- if (!root || root.getAttribute('data-mounted') === '1') return;
- for (var si = 0; si < QUIZ_CARRY_PLAQUE_SLOT_COUNT; si++) {
- var det = document.createElement('details');
- det.className = 'quiz-carry-plaque-slot-details';
- if (si === 0) det.open = true;
- var summ = document.createElement('summary');
- summ.textContent = 'ตัวเลือก ' + (si + 1);
- det.appendChild(summ);
- var grid = document.createElement('div');
- grid.className = 'quiz-carry-theme-grid quiz-carry-plaque-grid';
- var rowMode = document.createElement('div');
- rowMode.className = 'quiz-carry-theme-row quiz-carry-theme-row--narrow';
- rowMode.style.marginBottom = '0.45rem';
- var labMode = document.createElement('label');
- labMode.className = 'admin-field quiz-carry-theme-label';
- labMode.appendChild(document.createTextNode('โหมดขอบป้าย'));
- var selMode = document.createElement('select');
- selMode.id = quizCarryPlaqueSlotPrefix(si) + 'border-mode';
- selMode.setAttribute('aria-label', 'โหมดขอบป้ายช่อง ' + (si + 1));
- [['neon', 'เรืองตามช่อง (neon)'], ['fixed', 'สีขอบคงที่']].forEach(function (opt) {
- var o = document.createElement('option');
- o.value = opt[0];
- o.textContent = opt[1];
- selMode.appendChild(o);
- });
- labMode.appendChild(selMode);
- rowMode.appendChild(labMode);
- grid.appendChild(rowMode);
- selMode.addEventListener('change', function () {
- quizCarryPlaqueUpdateNeonUi(si);
- });
-
- var hintNeon = document.createElement('p');
- hintNeon.className = 'muted quiz-carry-plaque-neon-hint';
- hintNeon.style.cssText = 'margin:0 0 0.5rem;font-size:0.78rem;line-height:1.45';
- hintNeon.innerHTML =
- 'Neon / เรืองตามช่อง: ขอบบนแมปใช้สีตามเลขช่อง ไม่ใช้ «สีขอบ (fixed)» ด้านล่าง — ต้องการขอบตาม picker ให้เลือก สีขอบคงที่ · ' +
- 'English: In Neon mode the map uses per-slot hue; Fixed border uses the fixed-border pickers.';
- grid.appendChild(hintNeon);
-
- function addColorRow(labelText, kind, defHex, defAlpha) {
- var ids = quizCarryPlaqueRowIds(si, kind);
- var row = document.createElement('div');
- row.className = 'quiz-carry-theme-row';
- row.setAttribute('data-quiz-carry-plaque-color-row', kind);
- var lbl = document.createElement('span');
- lbl.className = 'quiz-carry-theme-label';
- lbl.textContent = labelText;
- row.appendChild(lbl);
- var controls = document.createElement('div');
- controls.className = 'quiz-carry-color-controls';
- var sw = document.createElement('input');
- sw.type = 'color';
- sw.id = ids.sw;
- sw.value = defHex;
- sw.title = labelText;
- controls.appendChild(sw);
- var labA = document.createElement('label');
- labA.className = 'quiz-carry-alpha-label';
- var spanA = document.createElement('span');
- spanA.textContent = 'โปร่ง A';
- labA.appendChild(spanA);
- var ra = document.createElement('input');
- ra.type = 'range';
- ra.id = ids.ra;
- ra.min = '0';
- ra.max = '100';
- ra.step = '1';
- ra.value = String(defAlpha);
- labA.appendChild(ra);
- var out = document.createElement('output');
- out.id = ids.out;
- out.className = 'quiz-carry-alpha-out';
- out.setAttribute('for', ids.ra);
- out.textContent = defAlpha + '%';
- labA.appendChild(out);
- controls.appendChild(labA);
- var hi = document.createElement('input');
- hi.type = 'hidden';
- hi.id = ids.hi;
- controls.appendChild(hi);
- row.appendChild(controls);
- grid.appendChild(row);
- }
- addColorRow('สีขอบ (fixed)', 'fixed', '#7ac8ff', 90);
- addColorRow('พื้นหลังกล่อง', 'fill', '#0c0a14', 88);
- addColorRow('สีตัวอักษร', 'text', '#f8f9ff', 100);
- var rowW = document.createElement('div');
- rowW.className = 'quiz-carry-theme-row quiz-carry-theme-row--narrow';
- var labW = document.createElement('label');
- labW.className = 'admin-field quiz-carry-theme-label';
- labW.appendChild(document.createTextNode('ความหนาขอบ (px)'));
- var inpW = document.createElement('input');
- inpW.type = 'number';
- inpW.className = 'admin-inp-num';
- inpW.id = quizCarryPlaqueSlotPrefix(si) + 'border-w';
- inpW.min = '0';
- inpW.max = '8';
- inpW.step = '0.5';
- inpW.value = '2.5';
- labW.appendChild(inpW);
- rowW.appendChild(labW);
- grid.appendChild(rowW);
-
- var rowImg = document.createElement('div');
- /* ห้ามใช้ quiz-carry-theme-row--narrow — มี max-width:12rem ทำช่อง URL แคบมาก ดูเหมือนอัปโหลดไม่ทำงาน */
- rowImg.className = 'quiz-carry-theme-row quiz-carry-plaque-image-row';
- rowImg.style.cssText = 'flex-wrap:wrap;gap:0.65rem;align-items:flex-end';
- var labUrl = document.createElement('label');
- labUrl.className = 'admin-field';
- labUrl.style.cssText = 'flex:1;min-width:200px;margin:0';
- labUrl.appendChild(document.createTextNode('รูปบนป้าย (ช่องนี้)'));
- var inpImgUrl = document.createElement('input');
- inpImgUrl.type = 'text';
- inpImgUrl.className = 'admin-inp-text';
- inpImgUrl.id = quizCarryPlaqueSlotPrefix(si) + 'plaque-image-url';
- inpImgUrl.placeholder = '/Game/img/quiz-carry-plaque-assets/... หรือ https://...';
- inpImgUrl.setAttribute('aria-label', 'URL รูปป้ายช่อง ' + (si + 1));
- labUrl.appendChild(document.createElement('br'));
- labUrl.appendChild(inpImgUrl);
- var prevErr = document.createElement('span');
- prevErr.id = quizCarryPlaqueSlotPrefix(si) + 'plaque-preview-err';
- prevErr.className = 'muted quiz-carry-plaque-preview-err';
- prevErr.style.cssText = 'display:block;font-size:0.72rem;margin:0.25rem 0 0.15rem;min-height:1em';
- labUrl.appendChild(prevErr);
- var prevImg = document.createElement('img');
- prevImg.id = quizCarryPlaqueSlotPrefix(si) + 'plaque-preview-img';
- prevImg.alt = 'พรีวิวรูปป้ายช่อง ' + (si + 1);
- prevImg.className = 'quiz-carry-plaque-preview-img';
- /* ห้าม width/height = 0 — บางเบราว์เซอร์แสดงกล่อง 0×0 แม้ onload แล้ว · Don't use 0×0 attrs or preview stays invisible */
- prevImg.style.cssText = 'display:none;max-height:120px;max-width:min(100%,320px);width:auto;height:auto;border-radius:8px;border:1px solid var(--border);object-fit:contain;background:var(--card)';
- labUrl.appendChild(prevImg);
- inpImgUrl.addEventListener('input', function () {
- var v = String(inpImgUrl.value || '').trim();
- if (!v) delete quizCarryPlaquePendingUrlBySlot[si];
- quizCarryPlaqueUpdateImagePreview(si);
- });
- inpImgUrl.addEventListener('change', function () {
- var v2 = String(inpImgUrl.value || '').trim();
- if (!v2) delete quizCarryPlaquePendingUrlBySlot[si];
- quizCarryPlaqueUpdateImagePreview(si);
- });
- rowImg.appendChild(labUrl);
- var upWrap = document.createElement('div');
- upWrap.className = 'admin-field';
- upWrap.style.margin = '0';
- var fileInp = document.createElement('input');
- fileInp.type = 'file';
- fileInp.accept = 'image/png,image/jpeg,image/webp,image/gif';
- fileInp.id = quizCarryPlaqueSlotPrefix(si) + 'plaque-image-file';
- fileInp.style.fontSize = '0.82rem';
- var upMsg = document.createElement('span');
- upMsg.className = 'muted';
- upMsg.id = quizCarryPlaqueSlotPrefix(si) + 'plaque-image-msg';
- upMsg.style.cssText = 'display:block;font-size:0.75rem;margin-top:0.25rem';
- fileInp.addEventListener('change', function () {
- while (upMsg.firstChild) upMsg.removeChild(upMsg.firstChild);
- upMsg.textContent = '';
- if (!fileInp.files || !fileInp.files[0]) return;
- upMsg.textContent = 'กำลังอ่านไฟล์และอัปโหลด… · Reading file & uploading…';
- try {
- upMsg.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
- } catch (scrollErr) { /* ignore */ }
- quizCarryPlaqueUploadPending++;
- quizCarryPlaqueUploadStartMs = Date.now();
- readFileAsDataURL(fileInp.files[0])
- .then(function (dataUrl) {
- return quizCarryPlaqueUploadWithFallback(dataUrl);
- })
- .then(function (res) {
- if (res && res.url) {
- var uOk = String(res.url).trim();
- inpImgUrl.value = uOk;
- quizCarryPlaquePendingUrlBySlot[si] = uOk;
- quizCarryPlaqueUpdateImagePreview(si);
- upMsg.textContent = '';
- var ok1 = document.createElement('span');
- ok1.textContent = 'อัปโหลดแล้ว · path ที่ได้: ';
- upMsg.appendChild(ok1);
- var codeU = document.createElement('code');
- codeU.style.cssText = 'font-size:0.78rem;word-break:break-all';
- codeU.textContent = res.url;
- upMsg.appendChild(codeU);
- var br = document.createElement('br');
- upMsg.appendChild(br);
- var ok2 = document.createElement('span');
- ok2.textContent = 'กด «บันทึก» ด้านล่างเพื่อเขียนลง quiz-settings.json · Then click Save below';
- upMsg.appendChild(ok2);
- } else {
- upMsg.textContent = (res && res.error) || 'ตอบกลับไม่มี url — ตรวจ Node /Game/api/quiz-carry-plaque-upload';
- }
- })
- .catch(function (e) {
- upMsg.textContent = e.message || 'อัปโหลดไม่สำเร็จ';
- setMsg('quiz-carry-settings-msg', e.message || 'อัปโหลดรูปป้ายไม่สำเร็จ · Plaque upload failed', 'error');
- try {
- upMsg.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
- var smUp = el('quiz-carry-settings-msg');
- if (smUp) smUp.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
- } catch (scrollE) { /* ignore */ }
- })
- .finally(function () {
- fileInp.value = '';
- quizCarryPlaqueUploadPending = Math.max(0, quizCarryPlaqueUploadPending - 1);
- if (quizCarryPlaqueUploadPending === 0) quizCarryPlaqueUploadStartMs = 0;
- });
- });
- upWrap.appendChild(document.createTextNode('อัปโหลด'));
- upWrap.appendChild(document.createElement('br'));
- upWrap.appendChild(fileInp);
- upWrap.appendChild(upMsg);
- rowImg.appendChild(upWrap);
- grid.appendChild(rowImg);
-
- det.appendChild(grid);
- root.appendChild(det);
- quizCarryPlaqueUpdateNeonUi(si);
- }
- root.setAttribute('data-mounted', '1');
- }
-
- function quizCarryPlaqueComposeFromPickers(si, kind) {
- var ids = quizCarryPlaqueRowIds(si, kind);
- var sw = el(ids.sw);
- var ra = el(ids.ra);
- var fb = QUIZ_CARRY_PLAQUE_DEFAULTS_RGBA[kind] || QUIZ_CARRY_PLAQUE_DEFAULTS_RGBA.fill;
- if (!sw || !ra) return quizCarryRgbToRgbaString(fb);
- var pr = quizCarryParseHexToRgb(sw.value);
- if (!pr) return quizCarryRgbToRgbaString(fb);
- var pct = parseInt(String(ra.value), 10);
- if (!Number.isFinite(pct)) pct = Math.round((fb.a != null ? fb.a : 1) * 100);
- pct = Math.max(0, Math.min(100, pct));
- return quizCarryRgbToRgbaString({ r: pr.r, g: pr.g, b: pr.b, a: pct / 100 });
- }
-
- function quizCarryPlaqueSetPickersFromString(si, kind, cssStr) {
- var ids = quizCarryPlaqueRowIds(si, kind);
- var fb = QUIZ_CARRY_PLAQUE_DEFAULTS_RGBA[kind] || QUIZ_CARRY_PLAQUE_DEFAULTS_RGBA.fill;
- var o = quizCarryParseCssColor(cssStr, fb);
- var sw = el(ids.sw);
- var ra = el(ids.ra);
- var hi = el(ids.hi);
- var out = el(ids.out);
- if (sw) sw.value = quizCarryHexFromRgb(o.r, o.g, o.b);
- if (ra) ra.value = String(Math.round((o.a != null ? o.a : 1) * 100));
- if (out) out.textContent = ra ? ra.value + '%' : '';
- if (hi) hi.value = quizCarryRgbToRgbaString(o);
- }
-
- function quizCarryPlaqueSyncRow(si, kind) {
- var s = quizCarryPlaqueComposeFromPickers(si, kind);
- var ids = quizCarryPlaqueRowIds(si, kind);
- var hi = el(ids.hi);
- var out = el(ids.out);
- var ra = el(ids.ra);
- if (hi) hi.value = s;
- if (out && ra) out.textContent = ra.value + '%';
- }
-
- var quizCarryPlaqueBindPickersDone = false;
- function quizCarryPlaqueBindPickersOnce() {
- if (quizCarryPlaqueBindPickersDone) return;
- quizCarryPlaqueEnsureMounted();
- for (var si = 0; si < QUIZ_CARRY_PLAQUE_SLOT_COUNT; si++) {
- QUIZ_CARRY_PLAQUE_KINDS.forEach(function (kind) {
- var ids = quizCarryPlaqueRowIds(si, kind);
- var sw = el(ids.sw);
- var ra = el(ids.ra);
- if (sw) {
- sw.addEventListener('input', function () {
- quizCarryPlaqueSyncRow(si, kind);
- });
- }
- if (ra) {
- ra.addEventListener('input', function () {
- quizCarryPlaqueSyncRow(si, kind);
- });
- }
- });
- }
- quizCarryPlaqueBindPickersDone = true;
- }
-
- function quizCarryPlaqueBuildForSave() {
- quizCarryPlaqueEnsureMounted();
- quizCarryPlaqueBindPickersOnce();
- var arr = [];
- for (var si = 0; si < QUIZ_CARRY_PLAQUE_SLOT_COUNT; si++) {
- for (var ki = 0; ki < QUIZ_CARRY_PLAQUE_KINDS.length; ki++) {
- quizCarryPlaqueSyncRow(si, QUIZ_CARRY_PLAQUE_KINDS[ki]);
- }
- var modeEl = el(quizCarryPlaqueSlotPrefix(si) + 'border-mode');
- var mode = modeEl && modeEl.value === 'fixed' ? 'fixed' : 'neon';
- var bwEl = el(quizCarryPlaqueSlotPrefix(si) + 'border-w');
- var bw = bwEl ? parseFloat(String(bwEl.value)) : 2.5;
- if (!Number.isFinite(bw)) bw = 2.5;
- bw = Math.round(Math.max(0, Math.min(8, bw)) * 10) / 10;
- var imgUrlEl = el(quizCarryPlaqueSlotPrefix(si) + 'plaque-image-url');
- var plaqueImageUrl = imgUrlEl ? String(imgUrlEl.value || '').trim() : '';
- if (!plaqueImageUrl && quizCarryPlaquePendingUrlBySlot[si]) {
- plaqueImageUrl = String(quizCarryPlaquePendingUrlBySlot[si] || '').trim();
- if (imgUrlEl && plaqueImageUrl) imgUrlEl.value = plaqueImageUrl;
- }
- plaqueImageUrl = plaqueImageUrl.slice(0, 512);
- arr.push({
- borderMode: mode,
- fixedBorder: quizCarryPlaqueComposeFromPickers(si, 'fixed'),
- fillBg: quizCarryPlaqueComposeFromPickers(si, 'fill'),
- textColor: quizCarryPlaqueComposeFromPickers(si, 'text'),
- borderWidthPx: bw,
- plaqueImageUrl: plaqueImageUrl,
- });
- }
- return arr;
- }
-
- function quizCarryPlaqueFillSlot(si, t) {
- var obj = t && typeof t === 'object' ? t : {};
- var modeEl = el(quizCarryPlaqueSlotPrefix(si) + 'border-mode');
- if (modeEl) modeEl.value = String(obj.borderMode || '').toLowerCase() === 'fixed' ? 'fixed' : 'neon';
- quizCarryPlaqueSetPickersFromString(si, 'fixed', obj.fixedBorder);
- quizCarryPlaqueSetPickersFromString(si, 'fill', obj.fillBg);
- quizCarryPlaqueSetPickersFromString(si, 'text', obj.textColor);
- var bwEl = el(quizCarryPlaqueSlotPrefix(si) + 'border-w');
- var bw = parseFloat(String(obj.borderWidthPx));
- if (bwEl) {
- bwEl.value = String(Number.isFinite(bw) ? Math.round(Math.max(0, Math.min(8, bw)) * 10) / 10 : 2.5);
- }
- var imgEl = el(quizCarryPlaqueSlotPrefix(si) + 'plaque-image-url');
- if (imgEl) {
- imgEl.value = obj.plaqueImageUrl != null ? String(obj.plaqueImageUrl) : '';
- }
- var srvU = obj.plaqueImageUrl != null ? String(obj.plaqueImageUrl).trim() : '';
- if (srvU) quizCarryPlaquePendingUrlBySlot[si] = srvU.slice(0, 512);
- var msgEl = el(quizCarryPlaqueSlotPrefix(si) + 'plaque-image-msg');
- if (msgEl) msgEl.textContent = '';
- quizCarryPlaqueUpdateNeonUi(si);
- quizCarryPlaqueUpdateImagePreview(si);
- }
-
- function quizCarryPlaqueFillAllFromApi(data) {
- quizCarryPlaqueBindPickersOnce();
- var arr = null;
- if (data && Array.isArray(data.carryChoicePlaqueThemes) && data.carryChoicePlaqueThemes.length) {
- arr = data.carryChoicePlaqueThemes;
- } else if (data && data.carryChoicePlaqueTheme && typeof data.carryChoicePlaqueTheme === 'object') {
- arr = [];
- for (var u = 0; u < QUIZ_CARRY_PLAQUE_SLOT_COUNT; u++) arr.push(data.carryChoicePlaqueTheme);
- }
- for (var si = 0; si < QUIZ_CARRY_PLAQUE_SLOT_COUNT; si++) {
- var th = (arr && arr[si]) ? arr[si] : {};
- quizCarryPlaqueFillSlot(si, th);
- quizCarryPlaqueUpdateImagePreview(si);
- }
- }
-
- function quizCarrySetPlaqueMapScaleInputs(scale) {
- var pms = Number(scale);
- if (!Number.isFinite(pms)) pms = 1.25;
- pms = Math.max(0.85, Math.min(2.5, pms));
- var cent = Math.round(pms * 100);
- cent = Math.max(85, Math.min(250, cent));
- var num = el('quiz-carry-plaque-map-scale');
- var rng = el('quiz-carry-plaque-map-scale-range');
- var out = el('quiz-carry-plaque-map-scale-out');
- if (num) num.value = String(Math.round((cent / 100) * 100) / 100);
- if (rng) rng.value = String(cent);
- if (out) out.textContent = '× ' + (num ? num.value : String(cent / 100));
- }
-
- function wireQuizCarryPlaqueMapScaleControls() {
- if (quizCarryPlaqueScaleControlsWired) return;
- var num = el('quiz-carry-plaque-map-scale');
- var rng = el('quiz-carry-plaque-map-scale-range');
- if (!num || !rng) return;
- quizCarryPlaqueScaleControlsWired = true;
- function fromRange() {
- var c = parseInt(String(rng.value), 10);
- if (!Number.isFinite(c)) c = 125;
- c = Math.max(85, Math.min(250, c));
- rng.value = String(c);
- var sc = c / 100;
- num.value = String(Math.round(sc * 100) / 100);
- var out = el('quiz-carry-plaque-map-scale-out');
- if (out) out.textContent = '× ' + num.value;
- }
- function fromNum() {
- var p = parseFloat(String(num.value || '').replace(',', '.'));
- if (!Number.isFinite(p)) p = 1.25;
- p = Math.max(0.85, Math.min(2.5, p));
- rng.value = String(Math.round(p * 100));
- num.value = String(Math.round(p * 100) / 100);
- var out = el('quiz-carry-plaque-map-scale-out');
- if (out) out.textContent = '× ' + num.value;
- }
- rng.addEventListener('input', fromRange);
- rng.addEventListener('change', fromRange);
- num.addEventListener('input', fromNum);
- num.addEventListener('change', fromNum);
- }
-
- function loadQuizCarryPanel(opts) {
- opts = opts || {};
- var delay = Number(opts.fetchDelayMs) || 0;
- var runLoad = function () {
- gameQuizFetch('GET').then(function (data) {
- if (opts.themeOverride && typeof opts.themeOverride === 'object') {
- var ov = opts.themeOverride;
- if (
- ov.panelBg != null ||
- ov.borderWidthPx != null ||
- ov.panelBorder != null ||
- ov.textColor != null ||
- ov.questionFontMinPx != null ||
- ov.questionFontMaxPx != null
- ) {
- data.carryMapPanelTheme = ov;
- } else if (ov.carryMapPanelTheme && typeof ov.carryMapPanelTheme === 'object') {
- data.carryMapPanelTheme = ov.carryMapPanelTheme;
- }
- if (ov.carryEmbedCountdownTheme && typeof ov.carryEmbedCountdownTheme === 'object') {
- data.carryEmbedCountdownTheme = ov.carryEmbedCountdownTheme;
- }
- if (ov.carryChoicePlaqueThemes && Array.isArray(ov.carryChoicePlaqueThemes)) {
- data.carryChoicePlaqueThemes = ov.carryChoicePlaqueThemes;
- if (ov.carryChoicePlaqueThemes[0] && typeof ov.carryChoicePlaqueThemes[0] === 'object') {
- data.carryChoicePlaqueTheme = ov.carryChoicePlaqueThemes[0];
- }
- } else if (ov.carryChoicePlaqueTheme && typeof ov.carryChoicePlaqueTheme === 'object') {
- /* legacy อ็อบเจ็กต์เดียว — ต้องตั้งทั้งอาร์เรย์ ไม่งั้น Fill ยังใช้ carryChoicePlaqueThemes จาก GET เก่า (URL ป้ายหายหลังบันทึก) */
- data.carryChoicePlaqueTheme = ov.carryChoicePlaqueTheme;
- var expPlaque = [];
- for (var exi = 0; exi < QUIZ_CARRY_PLAQUE_SLOT_COUNT; exi++) {
- expPlaque.push(ov.carryChoicePlaqueTheme);
- }
- data.carryChoicePlaqueThemes = expPlaque;
- }
- }
- if (opts.timingOverride && typeof opts.timingOverride === 'object') {
- var t = opts.timingOverride;
- if (t.carryReadMs != null) data.carryReadMs = t.carryReadMs;
- if (t.carryAnswerMs != null) data.carryAnswerMs = t.carryAnswerMs;
- if (t.carrySessionLength != null) data.carrySessionLength = t.carrySessionLength;
- if (t.carryWalkSpeedMultForMapId !== undefined) data.carryWalkSpeedMultForMapId = t.carryWalkSpeedMultForMapId;
- if (t.carryWalkSpeedMult !== undefined) data.carryWalkSpeedMult = t.carryWalkSpeedMult;
- }
- renderQuizCarryAdminList(data.carryQuestions || []);
- var readSec = el('quiz-carry-read-sec');
- var ansSec = el('quiz-carry-answer-sec');
- if (readSec) {
- var rms = Number(data.carryReadMs);
- readSec.value = String(Number.isFinite(rms) ? Math.round(rms / 1000) : 3);
- }
- if (ansSec) {
- var ams = Number(data.carryAnswerMs);
- ansSec.value = String(Number.isFinite(ams) ? Math.round(ams / 1000) : 5);
- }
- var sessLen = el('quiz-carry-session-len');
- if (sessLen) {
- var sl = parseInt(String(data.carrySessionLength), 10);
- sessLen.value = String(Number.isFinite(sl) && sl >= 0 ? sl : 0);
- }
- var walkMapIdInp = el('quiz-carry-walk-map-id');
- if (walkMapIdInp) {
- walkMapIdInp.value = data.carryWalkSpeedMultForMapId ? String(data.carryWalkSpeedMultForMapId).trim() : '';
- }
- var walkMultInp = el('quiz-carry-walk-mult');
- if (walkMultInp) {
- var wmv = Number(data.carryWalkSpeedMult);
- walkMultInp.value = String(Number.isFinite(wmv) ? wmv : 1.42);
- }
- quizCarrySetPlaqueMapScaleInputs(data.carryChoicePlaqueMapScale);
- quizCarryBindThemePickersOnce();
- var th = data.carryMapPanelTheme && typeof data.carryMapPanelTheme === 'object' ? data.carryMapPanelTheme : {};
- quizCarrySetPickersFromColorString('bg', th.panelBg);
- quizCarrySetPickersFromColorString('border', th.panelBorder);
- quizCarrySetPickersFromColorString('text', th.textColor);
- var bwInp = el('quiz-carry-theme-border-w');
- if (bwInp) {
- var bw = parseInt(String(th.borderWidthPx), 10);
- bwInp.value = String(Number.isFinite(bw) && bw >= 0 ? Math.min(12, bw) : 2);
- }
- var qfMinInp = el('quiz-carry-theme-qfont-min');
- var qfMaxInp = el('quiz-carry-theme-qfont-max');
- if (qfMinInp) {
- var qm = parseInt(String(th.questionFontMinPx), 10);
- qfMinInp.value = String(Number.isFinite(qm) ? Math.max(10, Math.min(40, qm)) : 10);
- }
- if (qfMaxInp) {
- var qx = parseInt(String(th.questionFontMaxPx), 10);
- qfMaxInp.value = String(Number.isFinite(qx) ? Math.max(14, Math.min(56, qx)) : 24);
- }
- quizCarryEcdFillForm(data.carryEmbedCountdownTheme || {});
- quizCarryPlaqueFillAllFromApi(data);
- if (opts.clearMsg !== false) setMsg('quiz-carry-settings-msg', '', '');
- }).catch(function (e) {
- setMsg('quiz-carry-settings-msg', e.message || 'โหลดไม่ได้', 'error');
- });
- };
- if (delay > 0) setTimeout(runLoad, delay);
- else runLoad();
- }
-
- /** รอจน plaque upload จบ (pending=0) — กันกดบันทึกทันทีหลังเลือกไฟล์แล้ว build ได้ URL ว่าง · returns false if timeout */
- function waitUntilQuizCarryUploadsDone(maxMs) {
- maxMs = maxMs || 120000;
- return new Promise(function (resolve) {
- if (quizCarryPlaqueUploadPending <= 0) return resolve(true);
- var started = Date.now();
- var iv = setInterval(function () {
- if (quizCarryPlaqueUploadPending <= 0) {
- clearInterval(iv);
- resolve(true);
- } else if (Date.now() - started >= maxMs) {
- clearInterval(iv);
- resolve(false);
- }
- }, 40);
- });
- }
-
- function saveQuizCarryPanel() {
- var list = el('quiz-carry-admin-list');
- var saveBtn = el('btn-quiz-carry-save');
- if (!list) {
- setMsg('quiz-carry-settings-msg', 'ไม่พบรายการคำถามในแท็บนี้ — รีเฟรชหน้า · quiz-carry-admin-list missing', 'error');
- return;
- }
- if (quizCarryPlaqueUploadPending > 0 && quizCarryPlaqueUploadStartMs > 0 && Date.now() - quizCarryPlaqueUploadStartMs > 120000) {
- quizCarryPlaqueUploadPending = 0;
- quizCarryPlaqueUploadStartMs = 0;
- setMsg(
- 'quiz-carry-settings-msg',
- 'ยกเลิกสถานะอัปโหลดค้าง (>2 นาที) แล้วดำเนินการบันทึก — ถ้ายังต้องการรูปให้อัปโหลดใหม่ · Stuck upload cleared; re-upload if needed',
- 'error',
- );
- }
- if (quizCarrySaveInFlight) {
- setMsg('quiz-carry-settings-msg', 'กำลังบันทึกอยู่แล้ว — รอสักครู่ · Save already in progress', 'error');
- return;
- }
- var carryQuestions = [];
- list.querySelectorAll('.quiz-carry-admin-block').forEach(function (block) {
- var inpQ = block.querySelector('.quiz-carry-q-text');
- var text = inpQ && inpQ.value ? String(inpQ.value).trim() : '';
- if (!text) return;
- var slots = [];
- block.querySelectorAll('.quiz-carry-slot-label').forEach(function (lab, idx) {
- var ti = lab.querySelector('.quiz-carry-slot-inp');
- var ii = lab.querySelector('.quiz-carry-slot-img');
- var tv = ti && ti.value ? String(ti.value).trim() : '';
- var iv = ii && ii.value ? String(ii.value).trim().slice(0, 512) : '';
- if (tv) slots.push({ idx: idx, text: tv, imageUrl: iv });
- });
- if (slots.length < 2) return;
- var sel = block.querySelector('.quiz-carry-correct-sel');
- var slotStr = sel && !sel.disabled && sel.value !== '' ? sel.value : null;
- if (slotStr == null) return;
- var slotNum = parseInt(slotStr, 10);
- var correctIndex = -1;
- for (var i = 0; i < slots.length; i++) {
- if (slots[i].idx === slotNum) {
- correctIndex = i;
- break;
- }
- }
- if (correctIndex < 0) return;
- var rowOut = {
- text: text,
- choices: slots.map(function (s) {
- return s.text;
- }),
- correctIndex: correctIndex,
- };
- var urls = slots.map(function (s) {
- return s.imageUrl || '';
- });
- if (urls.some(function (u) {
- return u;
- })) rowOut.choiceImageUrls = urls;
- carryQuestions.push(rowOut);
- });
-
- var readSecEl = el('quiz-carry-read-sec');
- var ansSecEl = el('quiz-carry-answer-sec');
- var readSec = readSecEl ? parseInt(String(readSecEl.value || '3'), 10) : 3;
- var ansSec = ansSecEl ? parseInt(String(ansSecEl.value || '5'), 10) : 5;
- if (!Number.isFinite(readSec) || readSec < 0) readSec = 0;
- if (readSec > 120) readSec = 120;
- if (!Number.isFinite(ansSec) || ansSec < 1) ansSec = 1;
- if (ansSec > 300) ansSec = 300;
- var carryReadMs = readSec * 1000;
- var carryAnswerMs = ansSec * 1000;
- var sessEl = el('quiz-carry-session-len');
- var carrySessionLength = sessEl ? parseInt(String(sessEl.value || '0'), 10) : 0;
- if (!Number.isFinite(carrySessionLength) || carrySessionLength < 0) carrySessionLength = 0;
- if (carrySessionLength > 500) carrySessionLength = 500;
-
- var carryMapPanelTheme = quizCarryBuildThemeForSave();
-
- var blockEls = list.querySelectorAll('.quiz-carry-admin-block');
- var hasAnyQuestionText = false;
- for (var bi = 0; bi < blockEls.length; bi++) {
- var qn = blockEls[bi].querySelector('.quiz-carry-q-text');
- if (qn && String(qn.value || '').trim()) {
- hasAnyQuestionText = true;
- break;
- }
- }
- if (carryQuestions.length === 0 && hasAnyQuestionText) {
- setMsg(
- 'quiz-carry-settings-msg',
- 'ยังบันทึกชุดคำถามไม่ได้: แต่ละข้อต้องมีคำถาม ตัวเลือกอย่างน้อย 2 ช่องที่กรอกแล้ว และเลือก «ข้อที่ถูกต้อง» — ตรวจแถวที่มีข้อความค้าง',
- 'error',
- );
- return;
- }
-
- quizCarrySaveInFlight = true;
- if (saveBtn) {
- saveBtn.disabled = true;
- saveBtn.setAttribute('aria-busy', 'true');
- }
- var waitLine =
- quizCarryPlaqueUploadPending > 0
- ? 'กำลังรอให้อัปโหลดรูปป้ายจบ แล้วจะบันทึกอัตโนมัติ (ไม่ต้องกดซ้ำ)… · Waiting for plaque upload, then save…'
- : 'กำลังบันทึก… · Saving…';
- setMsg('quiz-carry-settings-msg', waitLine, '');
- try {
- var smEl = el('quiz-carry-settings-msg');
- if (smEl) smEl.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
- } catch (scrollSave) { /* ignore */ }
-
- waitUntilQuizCarryUploadsDone(120000).then(function (uploadsOk) {
- if (!uploadsOk) {
- quizCarrySaveInFlight = false;
- if (saveBtn) {
- saveBtn.disabled = false;
- saveBtn.removeAttribute('aria-busy');
- }
- setMsg(
- 'quiz-carry-settings-msg',
- 'รออัปโหลดนานเกิน 2 นาที — ตรวจเครือข่าย/เซิร์ฟเกมแล้วลองใหม่ · Upload wait timeout',
- 'error',
- );
- return;
- }
- var plaqueScaleEl = el('quiz-carry-plaque-map-scale');
- var plaqueMapScale = 1.25;
- if (plaqueScaleEl) {
- var psn = parseFloat(String(plaqueScaleEl.value || '').replace(',', '.'));
- if (Number.isFinite(psn)) plaqueMapScale = Math.max(0.85, Math.min(2.5, psn));
- }
- var walkMapIdRaw = el('quiz-carry-walk-map-id') && el('quiz-carry-walk-map-id').value ? String(el('quiz-carry-walk-map-id').value).trim() : '';
- var walkMapId = walkMapIdRaw.replace(/[^a-zA-Z0-9_-]/g, '').slice(0, 64);
- var walkMultRaw = el('quiz-carry-walk-mult') ? parseFloat(String(el('quiz-carry-walk-mult').value || '').replace(',', '.')) : NaN;
- var putBody = {
- carryReadMs: carryReadMs,
- carryAnswerMs: carryAnswerMs,
- carrySessionLength: carrySessionLength,
- carryMapPanelTheme: carryMapPanelTheme,
- carryEmbedCountdownTheme: quizCarryEcdBuildForSave(),
- carryChoicePlaqueThemes: quizCarryPlaqueBuildForSave(),
- carryChoicePlaqueMapScale: plaqueMapScale,
- };
- if (walkMapId) {
- putBody.carryWalkSpeedMultForMapId = walkMapId;
- putBody.carryWalkSpeedMult = Number.isFinite(walkMultRaw) ? Math.max(0.5, Math.min(3, walkMultRaw)) : 1.42;
- } else {
- putBody.carryWalkSpeedMultForMapId = '';
- putBody.carryWalkSpeedMult = null;
- }
- if (carryQuestions.length > 0) {
- putBody.carryQuestions = carryQuestions;
- }
-
- gameQuizFetch('PUT', putBody).then(function (res) {
- var tail = carryQuestions.length ? ' · คำถาม ' + carryQuestions.length + ' ข้อ' : ' · คงชุดคำถามเดิม (อัปเดตเวลา/ธีมอย่างเดียว)';
- var themeFromRes = res && res.carryMapPanelTheme && typeof res.carryMapPanelTheme === 'object' ? res.carryMapPanelTheme : null;
- var ecdFromRes = res && res.carryEmbedCountdownTheme && typeof res.carryEmbedCountdownTheme === 'object' ? res.carryEmbedCountdownTheme : null;
- var plaqueFromRes = null;
- if (res && Array.isArray(res.carryChoicePlaqueThemes) && res.carryChoicePlaqueThemes.length) {
- plaqueFromRes = res.carryChoicePlaqueThemes;
- } else if (res && res.carryChoicePlaqueTheme && typeof res.carryChoicePlaqueTheme === 'object') {
- plaqueFromRes = [];
- for (var pxi = 0; pxi < QUIZ_CARRY_PLAQUE_SLOT_COUNT; pxi++) {
- plaqueFromRes.push(res.carryChoicePlaqueTheme);
- }
- }
- if (!plaqueFromRes) {
- plaqueFromRes = quizCarryPlaqueBuildForSave();
- }
- var themeOk = !!themeFromRes || !!ecdFromRes || !!plaqueFromRes;
- var themeTail = themeOk ? ' · ธีมแผง/ป้าย/นับถอยหลังบันทึกแล้ว' : '';
- setMsg('quiz-carry-settings-msg', 'บันทึกแล้ว' + tail + themeTail, 'ok');
- quizCarryPlaquePendingUrlBySlot = {};
- loadQuizCarryPanel({
- clearMsg: false,
- themeOverride: {
- carryMapPanelTheme: themeFromRes || carryMapPanelTheme,
- carryEmbedCountdownTheme: ecdFromRes || quizCarryEcdBuildForSave(),
- carryChoicePlaqueThemes: Array.isArray(plaqueFromRes) ? plaqueFromRes : null,
- carryChoicePlaqueTheme:
- Array.isArray(plaqueFromRes) && plaqueFromRes[0] && typeof plaqueFromRes[0] === 'object'
- ? plaqueFromRes[0]
- : null,
- },
- timingOverride: {
- carryReadMs: carryReadMs,
- carryAnswerMs: carryAnswerMs,
- carrySessionLength: carrySessionLength,
- carryWalkSpeedMultForMapId: walkMapId,
- carryWalkSpeedMult: walkMapId ? (Number.isFinite(walkMultRaw) ? Math.max(0.5, Math.min(3, walkMultRaw)) : 1.42) : null,
- },
- fetchDelayMs: 120,
- });
- }).catch(function (e) {
- setMsg('quiz-carry-settings-msg', e.message || 'บันทึกไม่ได้', 'error');
- }).finally(function () {
- quizCarrySaveInFlight = false;
- if (saveBtn) {
- saveBtn.disabled = false;
- saveBtn.removeAttribute('aria-busy');
- }
- });
- });
- }
-
- /** หมวด Quiz Battle — ชื่อไทยให้สอดคล้องธีมการศึกษาไซเบอร์ / หน้า Quiz-Battle */
- var QB_LABELS_ABC = ['A', 'B', 'C'];
-
- var QUIZ_BATTLE_CATEGORIES = [
- { id: 'topic1', labelTh: 'ห้อง 1 — กฎหมายใกล้ตัว', labelEn: 'Room 1' },
- { id: 'topic2', labelTh: 'ห้อง 2 — กฎหมายสิทธิ์พื้นฐาน', labelEn: 'Room 2' },
- { id: 'topic3', labelTh: 'ห้อง 3 — กฎหมายจราจร', labelEn: 'Room 3' },
- { id: 'topic4', labelTh: 'ห้อง 4 — คดีเกี่ยวกับทรัพย์', labelEn: 'Room 4' },
- { id: 'topic5', labelTh: 'ห้อง 5 — คดีหมิ่นประมาท', labelEn: 'Room 5' },
- { id: 'topic6', labelTh: 'ห้อง 6 — คดีทางเพศ', labelEn: 'Room 6' },
- { id: 'topic7', labelTh: 'ห้อง 7 — คดีอาชญากรรม', labelEn: 'Room 7' },
- { id: 'topic8', labelTh: 'ห้อง 8 — อาชญากรรมออนไลน์', labelEn: 'Room 8' },
- { id: 'topic9', labelTh: 'ห้อง 9 — กระบวนการยุติธรรม', labelEn: 'Room 9' },
- { id: 'topic10', labelTh: 'ห้อง 10 — งานบริการกระทรวงยุติธรรม', labelEn: 'Room 10' },
- ];
-
- function qbBattleCategoryLabel(catId) {
- for (var i = 0; i < QUIZ_BATTLE_CATEGORIES.length; i++) {
- if (QUIZ_BATTLE_CATEGORIES[i].id === catId) return QUIZ_BATTLE_CATEGORIES[i].labelTh;
- }
- return 'Quiz Battle';
- }
-
- function fillQbBattleFilterOptions() {
- var sel = el('qb-battle-filter-cat');
- if (!sel) return;
- var keep = sel.value;
- while (sel.options.length > 1) sel.remove(1);
- QUIZ_BATTLE_CATEGORIES.forEach(function (c) {
- var o = document.createElement('option');
- o.value = c.id;
- o.textContent = c.labelTh;
- sel.appendChild(o);
- });
- if (keep) {
- for (var oi = 0; oi < sel.options.length; oi++) {
- if (sel.options[oi].value === keep) {
- sel.value = keep;
- break;
- }
- }
- }
- }
-
- function applyQbBattleFilter() {
- var list = el('qb-battle-admin-list');
- var f = el('qb-battle-filter-cat');
- if (!list || !f) return;
- var fv = f.value || '';
- list.querySelectorAll('.qb-battle-block').forEach(function (row) {
- var catInp = row.querySelector('.qb-battle-cat');
- var cat = catInp && catInp.value ? catInp.value : '';
- row.hidden = !!(fv && cat !== fv);
- });
- refreshQbBattlePreview();
- }
-
- function getFirstVisibleQbBattleBlock() {
- var list = el('qb-battle-admin-list');
- if (!list) return null;
- var rows = list.querySelectorAll('.qb-battle-block');
- for (var i = 0; i < rows.length; i++) {
- if (rows[i].hidden) continue;
- var q = rows[i].querySelector('.qb-battle-q-text');
- var t = q && q.value ? String(q.value).trim() : '';
- if (t) return rows[i];
- }
- for (var j = 0; j < rows.length; j++) {
- if (!rows[j].hidden) return rows[j];
- }
- return null;
- }
-
- function readQbBattleBlockData(row) {
- if (!row) return null;
- var catSel = row.querySelector('.qb-battle-cat');
- var qInp = row.querySelector('.qb-battle-q-text');
- var a0 = row.querySelector('.qb-battle-a');
- var a1 = row.querySelector('.qb-battle-b');
- var a2 = row.querySelector('.qb-battle-c');
- var radios = row.querySelectorAll('input[type="radio"][name^="qb-correct-"]');
- var ci = 0;
- for (var i = 0; i < radios.length; i++) {
- if (radios[i].checked) {
- ci = parseInt(radios[i].value, 10);
- if (!Number.isFinite(ci)) ci = 0;
- break;
- }
- }
- return {
- categoryId: catSel && catSel.value ? catSel.value : 'topic1',
- text: qInp && qInp.value ? String(qInp.value).trim() : '',
- choices: [
- a0 && a0.value ? String(a0.value).trim() : '',
- a1 && a1.value ? String(a1.value).trim() : '',
- a2 && a2.value ? String(a2.value).trim() : '',
- ],
- correctIndex: Math.max(0, Math.min(2, ci)),
- };
- }
-
- function refreshQbBattlePreview() {
- var hudCat = el('qb-preview-hud-cat');
- var qtext = el('qb-preview-modal-q');
- var c0 = el('qb-preview-c0');
- var c1 = el('qb-preview-c1');
- var c2 = el('qb-preview-c2');
- var qModal = el('qb-cyber-modal-question');
- var sModal = el('qb-cyber-modal-summary');
- var layer = el('qb-modal-layer');
- if (!hudCat || !qtext || !c0 || !c1 || !c2 || !qModal || !sModal) return;
-
- var modeBtn = document.querySelector('.qb-preview-mode-btn.is-active');
- var mode = modeBtn && modeBtn.getAttribute('data-qb-mode') ? modeBtn.getAttribute('data-qb-mode') : 'question';
-
- var row = getFirstVisibleQbBattleBlock();
- var d = readQbBattleBlockData(row);
- var defQ = 'การกระทำใดผิดกฎหมายไซเบอร์?';
- var defC = [
- 'การเจาะระบบเข้าสู่ข้อมูลส่วนบุคคล',
- 'การใช้ WI-FI สาธารณะเพื่อดูข่าว',
- 'การอัปเดตซอฟต์แวร์เพื่อความปลอดภัย',
- ];
- hudCat.textContent = d ? qbBattleCategoryLabel(d.categoryId) : qbBattleCategoryLabel('topic1');
- qtext.textContent = d && d.text ? d.text : defQ;
- var ch = d ? d.choices : defC;
- for (var s = 0; s < 3; s++) {
- var eln = s === 0 ? c0 : s === 1 ? c1 : c2;
- var txt = ch[s] ? ch[s] : defC[s];
- eln.textContent = QB_LABELS_ABC[s] + ' : ' + txt;
- }
-
- var choiceEls = document.querySelectorAll('#qb-preview-choices .qb-cyber-choice');
- choiceEls.forEach(function (node) {
- node.classList.remove('qb-cyber-choice--correct', 'qb-cyber-choice--wrong', 'qb-cyber-choice--neutral');
- var mark = node.querySelector('.qb-cyber-choice-mark');
- if (mark) mark.textContent = '';
- });
-
- if (mode === 'summary') {
- qModal.hidden = true;
- sModal.hidden = false;
- if (layer) layer.classList.add('qb-modal-layer--summary');
- } else {
- qModal.hidden = false;
- sModal.hidden = true;
- if (layer) layer.classList.remove('qb-modal-layer--summary');
- var ci = d ? d.correctIndex : 0;
- if (mode === 'revealed') {
- var wrongPick = (ci + 1) % 3;
- choiceEls.forEach(function (node, idx) {
- var mark = node.querySelector('.qb-cyber-choice-mark');
- if (idx === ci) {
- node.classList.add('qb-cyber-choice--correct');
- if (mark) mark.textContent = '✓';
- } else if (idx === wrongPick) {
- node.classList.add('qb-cyber-choice--wrong');
- if (mark) mark.textContent = '✕';
- } else {
- node.classList.add('qb-cyber-choice--neutral');
- }
- });
- }
- }
- }
-
- function addQbBattleRow(q) {
- var list = el('qb-battle-admin-list');
- if (!list) return;
- q = q || {};
- var uid = 'r' + Math.random().toString(36).slice(2, 10);
- var block = document.createElement('div');
- block.className = 'qb-battle-block';
- block.setAttribute('data-category', q.categoryId || 'topic1');
-
- var head = document.createElement('div');
- head.className = 'qb-battle-block-head';
-
- var labCat = document.createElement('label');
- labCat.className = 'qb-battle-cat-label';
- labCat.appendChild(document.createTextNode('หมวด'));
- var selCat = document.createElement('select');
- selCat.className = 'qb-battle-cat';
- QUIZ_BATTLE_CATEGORIES.forEach(function (c) {
- var o = document.createElement('option');
- o.value = c.id;
- o.textContent = c.labelTh;
- if ((q.categoryId || 'topic1') === c.id) o.selected = true;
- selCat.appendChild(o);
- });
- selCat.addEventListener('change', function () {
- block.setAttribute('data-category', selCat.value);
- applyQbBattleFilter();
- });
- labCat.appendChild(selCat);
-
- var rm = document.createElement('button');
- rm.type = 'button';
- rm.className = 'btn btn-danger btn-sm qb-battle-remove';
- rm.textContent = 'ลบข้อ';
- rm.addEventListener('click', function () {
- block.remove();
- if (!list.querySelector('.qb-battle-block')) addQbBattleRow(null);
- applyQbBattleFilter();
- });
-
- head.appendChild(labCat);
- head.appendChild(rm);
- block.appendChild(head);
-
- var labQ = document.createElement('label');
- labQ.className = 'qb-battle-q-label';
- labQ.appendChild(document.createTextNode('คำถาม'));
- var inpQ = document.createElement('input');
- inpQ.type = 'text';
- inpQ.className = 'qb-battle-q-text';
- inpQ.maxLength = 500;
- inpQ.placeholder = 'พิมพ์คำถาม…';
- inpQ.value = q.text ? String(q.text) : '';
- labQ.appendChild(inpQ);
- block.appendChild(labQ);
-
- var choices = Array.isArray(q.choices) ? q.choices : [];
- var grid = document.createElement('div');
- grid.className = 'qb-battle-abc-grid';
- [['A', 'a', 0], ['B', 'b', 1], ['C', 'c', 2]].forEach(function (tri) {
- var lab = document.createElement('label');
- lab.className = 'qb-battle-opt-label';
- lab.appendChild(document.createTextNode('ตัวเลือก ' + tri[0]));
- var inp = document.createElement('input');
- inp.type = 'text';
- inp.className = 'qb-battle-' + tri[1];
- inp.maxLength = 160;
- inp.placeholder = tri[0];
- inp.value = choices[tri[2]] != null ? String(choices[tri[2]]) : '';
- lab.appendChild(inp);
- grid.appendChild(lab);
- });
- block.appendChild(grid);
-
- var ci = Number(q.correctIndex);
- if (!Number.isFinite(ci)) ci = 0;
- ci = Math.max(0, Math.min(2, Math.floor(ci)));
-
- var fs = document.createElement('fieldset');
- fs.className = 'qb-battle-correct-fs';
- var leg = document.createElement('legend');
- leg.textContent = 'ข้อที่ถูกต้อง';
- fs.appendChild(leg);
- var rg = document.createElement('div');
- rg.className = 'qb-battle-correct-rg';
- for (var r = 0; r < 3; r++) {
- var labR = document.createElement('label');
- labR.className = 'qb-battle-radio-label';
- var radio = document.createElement('input');
- radio.type = 'radio';
- radio.name = 'qb-correct-' + uid;
- radio.value = String(r);
- if (r === ci) radio.checked = true;
- labR.appendChild(radio);
- labR.appendChild(document.createTextNode(' ' + QB_LABELS_ABC[r]));
- rg.appendChild(labR);
- }
- fs.appendChild(rg);
- block.appendChild(fs);
-
- function onFieldInput() {
- refreshQbBattlePreview();
- }
- inpQ.addEventListener('input', onFieldInput);
- grid.querySelectorAll('input').forEach(function (inp) {
- inp.addEventListener('input', onFieldInput);
- });
- rg.querySelectorAll('input[type="radio"]').forEach(function (rdo) {
- rdo.addEventListener('change', onFieldInput);
- });
-
- list.appendChild(block);
- applyQbBattleFilter();
- }
-
- function renderQbBattleList(arr, clearMsg) {
- var list = el('qb-battle-admin-list');
- if (!list) return;
- list.innerHTML = '';
- fillQbBattleFilterOptions();
- var rows = arr && arr.length ? arr : [null];
- rows.forEach(function (q) {
- addQbBattleRow(q);
- });
- if (clearMsg !== false) setMsg('qb-battle-settings-msg', '', '');
- }
-
- function loadQbBattlePanel(keepSavedMsg) {
- gameQuizFetch('GET').then(function (data) {
- renderQbBattleList(data.battleQuizMcq || [], !keepSavedMsg);
- refreshQbBattlePreview();
- }).catch(function (e) {
- setMsg('qb-battle-settings-msg', e.message || 'โหลดไม่ได้', 'error');
- });
- }
-
- function classifyQbBattleRow(block) {
- var d = readQbBattleBlockData(block);
- if (!d) return { kind: 'empty', d: null };
- var hasQ = !!d.text;
- var filled = 0;
- for (var i = 0; i < d.choices.length; i++) {
- if (d.choices[i]) filled++;
- }
- if (!hasQ && filled === 0) return { kind: 'empty', d: d };
- if (hasQ && filled === 3) return { kind: 'ok', d: d };
- return { kind: 'partial', d: d };
- }
-
- function saveQbBattlePanel() {
- var list = el('qb-battle-admin-list');
- if (!list) return;
- var battleQuizMcq = [];
- var partialLines = [];
- var blocks = list.querySelectorAll('.qb-battle-block');
- for (var bi = 0; bi < blocks.length; bi++) {
- var block = blocks[bi];
- var st = classifyQbBattleRow(block);
- if (st.kind === 'empty') continue;
- if (st.kind === 'partial') {
- partialLines.push('แถวที่ ' + (bi + 1) + ': ต้องกรอกคำถามและตัวเลือก A, B, C ให้ครบทุกช่อง');
- continue;
- }
- battleQuizMcq.push({
- categoryId: st.d.categoryId,
- text: st.d.text,
- choices: st.d.choices,
- correctIndex: st.d.correctIndex,
- });
- }
- if (partialLines.length) {
- setMsg(
- 'qb-battle-settings-msg',
- 'ยังบันทึกไม่ได้ — ' + partialLines.join(' · ') + ' · (Empty question/options are skipped by the server; fill all fields.)',
- 'error'
- );
- return;
- }
-
- gameQuizFetch('PUT', { battleQuizMcq: battleQuizMcq }).then(function (res) {
- var n = battleQuizMcq.length;
- var savedN = res && typeof res.battleQuizMcqSaved === 'number' ? res.battleQuizMcqSaved : n;
- if (n > 0 && savedN !== n) {
- setMsg(
- 'qb-battle-settings-msg',
- 'เซิร์ฟเวอร์รับเพียง ' + savedN + ' จาก ' + n + ' ข้อ (ข้อที่ไม่ผ่านกฎถูกตัด) · Server kept ' + savedN + '/' + n + ' — ตรวจหมวด/คำถาม/A B C ให้ครบ · Restart Node (Game/server.js) ถ้ายังผิดปกติ',
- 'error'
- );
- } else {
- setMsg(
- 'qb-battle-settings-msg',
- n ? ('บันทึกแล้ว ' + n + ' ข้อ (ดิสก์ + Node) · Saved ' + n + ' question(s)') : 'บันทึกแล้ว (0 ข้อ) · Saved empty set',
- 'ok'
- );
- }
- return loadQbBattlePanel(true);
- }).catch(function (e) {
- setMsg('qb-battle-settings-msg', e.message || 'บันทึกไม่ได้', 'error');
- });
- }
-
- function laneUrlsToText(arr) {
- if (!arr || !arr.length) return '';
- return arr.map(function (u) { return String(u || '').trim(); }).filter(Boolean).join('\n');
- }
-
- function parseLaneUrlsTextarea() {
- var raw = el('game-timing-lane-urls') && el('game-timing-lane-urls').value ? String(el('game-timing-lane-urls').value) : '';
- var lines = raw.split(/[\n\r]+/);
- var out = [];
- for (var i = 0; i < lines.length && out.length < 24; i++) {
- var t = lines[i].trim();
- if (t) out.push(t);
- }
- return out;
- }
-
- function moveLaneUrl(index, dir) {
- var urls = parseLaneUrlsTextarea();
- var j = index + dir;
- if (j < 0 || j >= urls.length) return;
- var t = urls[index];
- urls[index] = urls[j];
- urls[j] = t;
- var ta = el('game-timing-lane-urls');
- if (ta) ta.value = urls.join('\n');
- renderGameTimingLaneVisuals();
- }
-
- function renderGameTimingLaneVisuals() {
- var wrap = el('game-timing-lane-visual-list');
- if (!wrap) return;
- wrap.innerHTML = '';
- var urls = parseLaneUrlsTextarea();
- if (!urls.length) {
- var ph = document.createElement('p');
- ph.className = 'muted';
- ph.style.margin = '0';
- ph.textContent = 'ยังไม่มีรูป — กด «Lane» ที่การ์ดในคลัง · No lane images yet';
- wrap.appendChild(ph);
- return;
- }
- urls.forEach(function (u, i) {
- var card = document.createElement('div');
- card.className = 'game-timing-visual-card';
- card.setAttribute('role', 'listitem');
- var img = document.createElement('img');
- img.className = 'game-timing-visual-card-img';
- img.src = u;
- img.alt = '';
- img.referrerPolicy = 'no-referrer';
- img.onerror = function () { img.classList.add('is-broken'); };
- var actions = document.createElement('div');
- actions.className = 'game-timing-visual-card-actions';
- function mkBtn(cls, text, fn) {
- var b = document.createElement('button');
- b.type = 'button';
- b.className = 'btn btn-sm ' + cls;
- b.textContent = text;
- b.addEventListener('click', fn);
- return b;
- }
- actions.appendChild(mkBtn('btn-ghost', 'ดู', function () {
- window.open(u, '_blank', 'noopener,noreferrer');
- }));
- actions.appendChild(mkBtn('btn-ghost', '←', function () {
- moveLaneUrl(i, -1);
- }));
- actions.appendChild(mkBtn('btn-ghost', '→', function () {
- moveLaneUrl(i, 1);
- }));
- actions.appendChild(mkBtn('btn-danger', 'ลบ', function () {
- var next = urls.filter(function (_, j) { return j !== i; });
- var ta = el('game-timing-lane-urls');
- if (ta) ta.value = next.join('\n');
- renderGameTimingLaneVisuals();
- setGauntletUploadMsg('เอาออกจาก Lane แล้ว (ไฟล์ในคลังยังอยู่) · Removed from lane', 'ok');
- }));
- card.appendChild(img);
- card.appendChild(actions);
- wrap.appendChild(card);
- });
- }
-
- /** พรีวิวคอลัมน์ beam — สูงแนวตั้ง + สีเติม/กรอบตามช่อง (คล้ายในเกม) */
- function styleGameTimingLaserBeamPreviewShell() {
- var prev = el('game-timing-laser-line-preview');
- if (!prev) return;
- var fillIn = el('game-timing-laser-fill');
- var strokeIn = el('game-timing-laser-stroke');
- var lwIn = el('game-timing-laser-line-width');
- var fill = fillIn && fillIn.value ? String(fillIn.value).trim() : '';
- var stroke = strokeIn && strokeIn.value ? String(strokeIn.value).trim() : '';
- var lw = lwIn ? parseInt(lwIn.value, 10) : 2;
- if (Number.isNaN(lw)) lw = 2;
- lw = Math.max(0, Math.min(24, lw));
- prev.style.backgroundColor = fill || '';
- if (lw > 0 && stroke) {
- prev.style.boxShadow = 'inset 0 0 0 ' + Math.min(8, lw) + 'px ' + stroke;
- } else {
- prev.style.boxShadow = '';
- }
- }
-
- function renderGameTimingLaserVisuals() {
- var slots = [
- { inpId: 'game-timing-laser-top-url', prevId: 'game-timing-laser-top-preview' },
- { inpId: 'game-timing-laser-bottom-url', prevId: 'game-timing-laser-bottom-preview' },
- { inpId: 'game-timing-laser-line-url', prevId: 'game-timing-laser-line-preview' },
- ];
- slots.forEach(function (s) {
- var inp = el(s.inpId);
- var prev = el(s.prevId);
- if (!prev) return;
- prev.innerHTML = '';
- var url = inp && inp.value ? String(inp.value).trim() : '';
- if (!url) {
- var ph = document.createElement('div');
- ph.className = 'game-timing-laser-placeholder';
- ph.textContent = 'ยังไม่ตั้ง · Not set';
- prev.appendChild(ph);
- return;
- }
- var img = document.createElement('img');
- img.className = 'game-timing-laser-preview-img';
- img.src = url;
- img.alt = '';
- img.referrerPolicy = 'no-referrer';
- img.onerror = function () { img.classList.add('is-broken'); };
- prev.appendChild(img);
- });
- styleGameTimingLaserBeamPreviewShell();
- }
-
- function clamp255(x) {
- return Math.max(0, Math.min(255, Math.round(Number(x))));
- }
-
- function parseCssColorToRgba(str) {
- str = String(str || '').trim();
- if (!str) return null;
- var m = str.match(/^rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*(?:,\s*([\d.]+)\s*)?\)$/i);
- if (m) {
- var r = clamp255(m[1]);
- var g = clamp255(m[2]);
- var b = clamp255(m[3]);
- var a =
- m[4] !== undefined && m[4] !== '' && !Number.isNaN(Number(m[4]))
- ? Math.max(0, Math.min(1, Number(m[4])))
- : 1;
- return { r: r, g: g, b: b, a: a };
- }
- m = str.match(/^#([\da-f]{3}|[\da-f]{6})$/i);
- if (m) {
- var h = m[1];
- var r2;
- var g2;
- var b2;
- if (h.length === 3) {
- r2 = parseInt(h[0] + h[0], 16);
- g2 = parseInt(h[1] + h[1], 16);
- b2 = parseInt(h[2] + h[2], 16);
- } else {
- r2 = parseInt(h.slice(0, 2), 16);
- g2 = parseInt(h.slice(2, 4), 16);
- b2 = parseInt(h.slice(4, 6), 16);
- }
- if (Number.isNaN(r2) || Number.isNaN(g2) || Number.isNaN(b2)) return null;
- return { r: r2, g: g2, b: b2, a: 1 };
- }
- var probe = document.createElement('span');
- probe.style.cssText = 'position:absolute;visibility:hidden;left:0;top:0;background-color:' + str;
- document.body.appendChild(probe);
- var bg = getComputedStyle(probe).backgroundColor;
- document.body.removeChild(probe);
- m = bg && bg.match(/^rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*(?:,\s*([\d.]+)\s*)?\)$/);
- if (!m) return null;
- r2 = clamp255(m[1]);
- g2 = clamp255(m[2]);
- b2 = clamp255(m[3]);
- var a2 = m[4] !== undefined && !Number.isNaN(Number(m[4])) ? Math.max(0, Math.min(1, Number(m[4]))) : 1;
- return { r: r2, g: g2, b: b2, a: a2 };
- }
-
- function rgbToHex6(r, g, b) {
- function hx(n) {
- var h = clamp255(n).toString(16);
- return h.length === 1 ? '0' + h : h;
- }
- return '#' + hx(r) + hx(g) + hx(b);
- }
-
- function laserHexFromTextOrFallback(text, fallbackHex) {
- var c = parseCssColorToRgba(text);
- if (!c) return fallbackHex;
- return rgbToHex6(c.r, c.g, c.b);
- }
-
- function formatLaserRgba(r, g, b, a) {
- var aa = Math.round(Math.max(0, Math.min(1, a)) * 100) / 100;
- return 'rgba(' + clamp255(r) + ',' + clamp255(g) + ',' + clamp255(b) + ',' + aa + ')';
- }
-
- function syncGameTimingLaserColorSwatches() {
- function apply(swatchId, textVal) {
- var sw = el(swatchId);
- if (!sw) return;
- var v = textVal != null ? String(textVal).trim() : '';
- sw.style.backgroundColor = v || '';
- sw.classList.toggle('is-empty', !v);
- sw.title = v || 'ว่าง — พิมพ์ค่า CSS หรือกดสี่เหลี่ยมเพื่อเลือกสี';
- }
- var fillIn = el('game-timing-laser-fill');
- var strokeIn = el('game-timing-laser-stroke');
- apply('game-timing-laser-fill-swatch', fillIn && fillIn.value);
- apply('game-timing-laser-stroke-swatch', strokeIn && strokeIn.value);
- var fillPk = el('game-timing-laser-fill-picker');
- var strokePk = el('game-timing-laser-stroke-picker');
- if (fillPk && fillIn) {
- var hf = laserHexFromTextOrFallback(fillIn.value, '#ef4444');
- if (fillPk.value.toLowerCase() !== hf.toLowerCase()) fillPk.value = hf;
- }
- if (strokePk && strokeIn) {
- var hs = laserHexFromTextOrFallback(strokeIn.value, '#fca5a5');
- if (strokePk.value.toLowerCase() !== hs.toLowerCase()) strokePk.value = hs;
- }
- styleGameTimingLaserBeamPreviewShell();
- }
-
- function bindGameTimingLaserColorSwatches() {
- var fillIn = el('game-timing-laser-fill');
- var strokeIn = el('game-timing-laser-stroke');
- if (fillIn) {
- fillIn.addEventListener('input', syncGameTimingLaserColorSwatches);
- fillIn.addEventListener('change', syncGameTimingLaserColorSwatches);
- }
- if (strokeIn) {
- strokeIn.addEventListener('input', syncGameTimingLaserColorSwatches);
- strokeIn.addEventListener('change', syncGameTimingLaserColorSwatches);
- }
- function wirePicker(pickerId, textEl, defaultAlpha) {
- var pk = el(pickerId);
- var tx = textEl;
- if (!pk || !tx) return;
- function applyHex() {
- var hex = String(pk.value || '').trim();
- if (!/^#[\da-f]{6}$/i.test(hex)) return;
- var r = parseInt(hex.slice(1, 3), 16);
- var g = parseInt(hex.slice(3, 5), 16);
- var b = parseInt(hex.slice(5, 7), 16);
- var prev = parseCssColorToRgba(tx.value);
- var a = prev && typeof prev.a === 'number' ? prev.a : defaultAlpha;
- tx.value = formatLaserRgba(r, g, b, a);
- syncGameTimingLaserColorSwatches();
- }
- pk.addEventListener('input', applyHex);
- pk.addEventListener('change', applyHex);
- }
- wirePicker('game-timing-laser-fill-picker', fillIn, 0.35);
- wirePicker('game-timing-laser-stroke-picker', strokeIn, 0.95);
- var lwIn = el('game-timing-laser-line-width');
- if (lwIn) {
- lwIn.addEventListener('input', styleGameTimingLaserBeamPreviewShell);
- lwIn.addEventListener('change', styleGameTimingLaserBeamPreviewShell);
- }
- syncGameTimingLaserColorSwatches();
- }
-
- function bindGameTimingAssignedVisuals() {
- function wire(which, viewId, clearId) {
- var inpId = 'game-timing-laser-' + which + '-url';
- var vBtn = el(viewId);
- var cBtn = el(clearId);
- if (vBtn) vBtn.addEventListener('click', function () {
- var inp = el(inpId);
- var u = inp && inp.value ? String(inp.value).trim() : '';
- if (!u) return;
- window.open(u, '_blank', 'noopener,noreferrer');
- });
- if (cBtn) cBtn.addEventListener('click', function () {
- var inp = el(inpId);
- if (inp) inp.value = '';
- renderGameTimingLaserVisuals();
- setGauntletUploadMsg('ล้างช่อง Laser แล้ว · Laser slot cleared', 'ok');
- });
- }
- wire('top', 'btn-game-timing-laser-top-view', 'btn-game-timing-laser-top-clear');
- wire('bottom', 'btn-game-timing-laser-bottom-view', 'btn-game-timing-laser-bottom-clear');
- wire('line', 'btn-game-timing-laser-line-view', 'btn-game-timing-laser-line-clear');
- }
-
- function gauntletAssetsJsonFetch(url, opts) {
- opts = opts || {};
- opts.credentials = 'include';
- return fetch(url, opts).then(function (r) {
- return r.text().then(function (text) {
- var j = {};
- var parsed = false;
- try {
- j = text ? JSON.parse(text) : {};
- parsed = true;
- } catch (e) {
- if (!r.ok) {
- var snippet = (text || '').replace(/\s+/g, ' ').trim().slice(0, 220);
- var tail = '';
- if (r.status === 413) {
- tail =
- ' · คำขอใหญ่เกิน (nginx client_max_body_size / PHP post_max_size) — รัน deploy-nginx และตั้ง post_max_size ≥20M · Payload too large';
- } else if (r.status === 401) {
- tail = ' · ล็อกอิน Admin ใหม่ · Re-login to Admin';
- } else if (r.status === 502 || r.status === 503 || r.status === 504) {
- tail = ' · เซิร์ฟเกม/PHP upstream ล่ม — ตรวจ Node + php-fpm · Upstream error';
- } else if (r.status === 404) {
- tail = ' · ตรวจ path ไฟล์ / รีสตาร์ทบริการหลัง deploy · Not found';
- }
- throw new Error((snippet || r.statusText || 'Request failed') + tail + ' (HTTP ' + r.status + ')');
- }
- throw e;
- }
- if (!r.ok) {
- var plain = (j && j.error) || r.statusText || 'Request failed';
- if (r.status === 413) {
- plain =
- (j && j.error) ||
- 'ไฟล์/คำขอใหญ่เกินขีดจำกัด (nginx หรือ PHP) — ตั้ง client_max_body_size (server หรือ /Admin/api/) และ post_max_size ≥20M · Payload too large';
- }
- if (r.status === 401) {
- plain =
- (j && j.error) ||
- 'หมดเซสชันแอดมิน — ล็อกอินใหม่แล้วลองอัปโหลดอีกครั้ง · Re-login to Admin and retry upload';
- }
- if (r.status === 404) {
- plain += ' — รีสตาร์ท Node ที่รัน Game/server.js หลัง deploy · Restart Game Node';
- }
- if (r.status === 502 || r.status === 503 || r.status === 504) {
- plain +=
- ' — PHP/Node upstream ล่ม — ตรวจ game-zep (Node) และ php-fpm · Check Node + PHP-FPM';
- }
- if (parsed && (!j || Object.keys(j).length === 0)) {
- plain = (text || '').replace(/\s+/g, ' ').trim().slice(0, 200) || plain;
- if (r.status) plain += ' (HTTP ' + r.status + ')';
- }
- throw new Error(plain);
- }
- return j;
- });
- });
- }
-
- function setGauntletUploadMsg(text, cls) {
- setMsg('gauntlet-asset-upload-msg', text, cls);
- }
-
- function readFileAsDataURL(file) {
- return new Promise(function (resolve, reject) {
- var fr = new FileReader();
- fr.onload = function () { resolve(fr.result); };
- fr.onerror = function () { reject(new Error('อ่านไฟล์ไม่ได้ · Cannot read file')); };
- fr.readAsDataURL(file);
- });
- }
-
- function appendLaneUrlUnique(url) {
- var ta = el('game-timing-lane-urls');
- if (!ta || !url) return;
- var lines = parseLaneUrlsTextarea();
- if (lines.indexOf(url) >= 0) {
- setGauntletUploadMsg('มี URL นี้ใน Lane แล้ว · Already in lane list', 'ok');
- return;
- }
- lines.push(url);
- ta.value = lines.join('\n');
- renderGameTimingLaneVisuals();
- setGauntletUploadMsg('เพิ่มใน Lane แล้ว · Added to lane URLs', 'ok');
- }
-
- function setLaserUrlField(which, url) {
- var ids = { top: 'game-timing-laser-top-url', bottom: 'game-timing-laser-bottom-url', line: 'game-timing-laser-line-url' };
- var inp = el(ids[which]);
- if (!inp) return;
- inp.value = url;
- renderGameTimingLaserVisuals();
- setGauntletUploadMsg('ตั้งค่า Laser แล้ว · Laser field updated', 'ok');
- }
-
- function uploadGauntletDataUrls(fileArr) {
- var files = [].slice.call(fileArr || []);
- if (!files.length) return Promise.resolve();
- var rf = gauntletReplaceTarget;
- gauntletReplaceTarget = null;
- if (rf) files = files.slice(0, 1);
- setGauntletUploadMsg('กำลังอัปโหลด… · Uploading…', '');
- var idx = 0;
- function step() {
- if (idx >= files.length) {
- setGauntletUploadMsg(rf ? 'แทนที่รูปแล้ว · Image replaced' : ('อัปโหลดแล้ว ' + files.length + ' ไฟล์ · Uploaded'), 'ok');
- return refreshGauntletAssetLibrary();
- }
- var file = files[idx++];
- return readFileAsDataURL(file).then(function (dataUrl) {
- var body = { imageDataUrl: dataUrl };
- if (rf) body.replaceFilename = rf;
- else if (file.name) body.label = String(file.name).replace(/\.[^.]+$/, '').slice(0, 120);
- return gauntletAssetsJsonFetch(GAME_GAUNTLET_ASSETS_API + '/upload', {
- method: 'POST',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify(body),
- });
- }).then(step).catch(function (e) {
- setGauntletUploadMsg(e.message || 'อัปโหลดไม่สำเร็จ · Upload failed', 'error');
- return refreshGauntletAssetLibrary();
- });
- }
- return step();
- }
-
- function refreshGauntletAssetLibrary() {
- var listEl = el('gauntlet-asset-list');
- if (!listEl) return Promise.resolve();
- return gauntletAssetsJsonFetch(GAME_GAUNTLET_ASSETS_API, { method: 'GET' })
- .then(function (data) {
- listEl.innerHTML = '';
- var items = data.items || [];
- if (!items.length) {
- var empty = document.createElement('p');
- empty.className = 'muted';
- empty.style.margin = '0';
- empty.textContent = 'ยังไม่มีรูปในคลัง — อัปโหลดด้านบน · No assets yet — upload above';
- listEl.appendChild(empty);
- return;
- }
- items.forEach(function (it, ix) {
- var card = document.createElement('article');
- card.className = 'gauntlet-asset-card';
-
- var img = document.createElement('img');
- img.className = 'gauntlet-asset-card-preview';
- img.src = it.url + '?t=' + (it.mtime || 0);
- img.alt = it.label || '';
-
- var labelWrap = document.createElement('div');
- labelWrap.className = 'gauntlet-asset-card-label-wrap';
- var labelInp = document.createElement('input');
- labelInp.type = 'text';
- labelInp.maxLength = 120;
- labelInp.value = it.label || '';
- var lid = 'gauntlet-asset-label-' + ix;
- labelInp.id = lid;
- var lab = document.createElement('label');
- lab.htmlFor = lid;
- lab.textContent = 'ชื่อเรียก · Label';
- labelWrap.appendChild(lab);
- labelWrap.appendChild(labelInp);
-
- var urlP = document.createElement('p');
- urlP.className = 'gauntlet-asset-card-url';
- urlP.textContent = it.url;
-
- var actions = document.createElement('div');
- actions.className = 'gauntlet-asset-card-actions';
-
- function mkBtn(cls, text, handler) {
- var b = document.createElement('button');
- b.type = 'button';
- b.className = 'btn ' + cls;
- b.textContent = text;
- b.addEventListener('click', handler);
- return b;
- }
-
- actions.appendChild(mkBtn('btn-ghost', 'ดูรูป', function () {
- window.open(it.url, '_blank', 'noopener,noreferrer');
- }));
- actions.appendChild(mkBtn('btn-ghost', 'บันทึกชื่อ', function () {
- gauntletAssetsJsonFetch(GAME_GAUNTLET_ASSETS_API, {
- method: 'PATCH',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify({ filename: it.filename, label: labelInp.value }),
- })
- .then(function () {
- setGauntletUploadMsg('บันทึกชื่อแล้ว · Label saved', 'ok');
- return refreshGauntletAssetLibrary();
- })
- .catch(function (e) {
- setGauntletUploadMsg(e.message, 'error');
- });
- }));
- actions.appendChild(mkBtn('btn-ghost', 'แทนที่รูป', function () {
- gauntletReplaceTarget = it.filename;
- var finp = el('gauntlet-asset-file-input');
- if (finp) finp.click();
- }));
- actions.appendChild(mkBtn('btn-ghost', 'Lane', function () {
- appendLaneUrlUnique(it.url);
- }));
- actions.appendChild(mkBtn('btn-ghost', 'Laser บน', function () {
- setLaserUrlField('top', it.url);
- }));
- actions.appendChild(mkBtn('btn-ghost', 'Laser ล่าง', function () {
- setLaserUrlField('bottom', it.url);
- }));
- actions.appendChild(mkBtn('btn-ghost', 'Laser เส้น', function () {
- setLaserUrlField('line', it.url);
- }));
- actions.appendChild(mkBtn('btn-danger', 'ลบ', function () {
- if (!confirm('ลบไฟล์ ' + it.filename + ' จากเซิร์ฟเวอร์? · Delete from server?')) return;
- gauntletAssetsJsonFetch(GAME_GAUNTLET_ASSETS_API + '?file=' + encodeURIComponent(it.filename), { method: 'DELETE' })
- .then(function () {
- setGauntletUploadMsg('ลบแล้ว · Deleted', 'ok');
- return refreshGauntletAssetLibrary();
- })
- .catch(function (e) {
- setGauntletUploadMsg(e.message, 'error');
- });
- }));
-
- card.appendChild(img);
- card.appendChild(labelWrap);
- card.appendChild(urlP);
- card.appendChild(actions);
- listEl.appendChild(card);
- });
- })
- .catch(function (e) {
- listEl.innerHTML = '';
- var p = document.createElement('p');
- p.className = 'msg error';
- p.textContent = e.message || 'โหลดคลังไม่ได้';
- listEl.appendChild(p);
- });
- }
-
- function bindGauntletAssetLibrary() {
- var drop = el('gauntlet-asset-drop');
- var finp = el('gauntlet-asset-file-input');
- if (!drop || !finp) return;
-
- drop.addEventListener('click', function () {
- finp.click();
- });
- drop.addEventListener('keydown', function (e) {
- if (e.key === 'Enter' || e.key === ' ') {
- e.preventDefault();
- finp.click();
- }
- });
-
- ['dragenter', 'dragover'].forEach(function (ev) {
- drop.addEventListener(ev, function (e) {
- e.preventDefault();
- e.stopPropagation();
- drop.classList.add('is-dragover');
- });
- });
- ['dragleave', 'drop'].forEach(function (ev) {
- drop.addEventListener(ev, function (e) {
- e.preventDefault();
- e.stopPropagation();
- if (ev !== 'drop') drop.classList.remove('is-dragover');
- });
- });
- drop.addEventListener('drop', function (e) {
- drop.classList.remove('is-dragover');
- var files = e.dataTransfer && e.dataTransfer.files;
- if (!files || !files.length) return;
- var arr = [];
- for (var i = 0; i < files.length; i++) arr.push(files[i]);
- uploadGauntletDataUrls(arr);
- });
-
- finp.addEventListener('change', function () {
- if (!finp.files || !finp.files.length) return;
- var arr = [];
- for (var i = 0; i < finp.files.length; i++) arr.push(finp.files[i]);
- finp.value = '';
- uploadGauntletDataUrls(arr);
- });
- }
-
- /** ว่าง / อัตโนมัติ / auto → null · ตัวเลข 0.85–3.2 tile */
- function parseStackBlockWidthForSave(raw) {
- var t = String(raw == null ? '' : raw).trim();
- if (!t) return { ok: true, value: null };
- var low = t.toLowerCase();
- if (t === 'อัตโนมัติ' || low === 'auto' || low === 'automatic') return { ok: true, value: null };
- var w = parseFloat(t.replace(',', '.'));
- if (!Number.isFinite(w)) {
- return { ok: false, error: 'กว้างบล็อก: ใส่ตัวเลข 0.85–3.2 หรือปล่อยว่างเพื่ออัตโนมัติ' };
- }
- if (w < 0.85 || w > 3.2) {
- return { ok: false, error: 'กว้างบล็อกต้องอยู่ระหว่าง 0.85–3.2 tile หรือปล่อยว่าง' };
- }
- return { ok: true, value: Math.round(Math.max(0.85, Math.min(3.2, w)) * 100) / 100 };
- }
-
- /** ช่อง Hz ใช้ type=text — ปล่อยว่าง = 0.55 */
- function parseStackSwingHzForSave(raw) {
- var t = String(raw == null ? '' : raw).trim().replace(',', '.');
- if (!t) return { ok: true, value: 0.55 };
- var h = parseFloat(t);
- if (!Number.isFinite(h)) {
- return { ok: false, error: 'สวิง Hz: ใส่ตัวเลข (เช่น 0.58) หรือปล่อยว่างให้เป็น 0.55' };
- }
- h = Math.max(0.08, Math.min(2.8, h));
- return { ok: true, value: Math.round(h * 100) / 100 };
- }
-
- /** ซิงก์ช่อง Stack จากข้อมูลเซิร์ฟเวอร์ (ช่องอยู่ใน DOM แม้แท็บอื่นเปิดอยู่ — ต้องไม่ปล่อยให้ค้างค่า default จาก HTML) */
- function applyGameTimingDataToStackInputs(data) {
- if (!data || typeof data !== 'object') return;
- if (el('stack-swing-hz')) {
- var hz = data.stackSwingHz != null && data.stackSwingHz !== '' ? Number(data.stackSwingHz) : NaN;
- if (!Number.isFinite(hz)) hz = 0.55;
- hz = Math.max(0.08, Math.min(2.8, hz));
- el('stack-swing-hz').value = String(Math.round(hz * 100) / 100);
- }
- if (el('stack-block-width-tiles')) {
- var rawW = data.stackBlockWidthTiles;
- var bw = rawW != null && rawW !== '' ? Number(rawW) : NaN;
- el('stack-block-width-tiles').value = Number.isFinite(bw) && bw >= 0.85 ? String(Math.round(bw * 100) / 100) : '';
- }
- if (el('stack-tower-mission-sec')) {
- var st = Number(data.stackTowerMissionTimeSec);
- el('stack-tower-mission-sec').value = String(Number.isFinite(st) && st > 0 ? Math.floor(Math.max(10, Math.min(7200, st))) : 90);
- }
- if (el('stack-team-misses-max')) {
- var sm = Number(data.stackTeamMissesMax);
- el('stack-team-misses-max').value = String(Number.isFinite(sm) ? Math.floor(Math.max(1, Math.min(20, sm))) : 3);
- }
- if (el('stack-tower-progress-blocks')) {
- var pb = Number(data.stackTowerProgressBlocks);
- el('stack-tower-progress-blocks').value = String(Number.isFinite(pb) ? Math.floor(Math.max(1, Math.min(500, pb))) : 50);
- }
- if (el('stack-heavy-block-percent')) {
- var shp = Number(data.stackHeavyBlockPercent);
- el('stack-heavy-block-percent').value = String(Number.isFinite(shp) ? Math.max(0, Math.min(100, Math.floor(shp))) : 35);
- }
- var normArr = Array.isArray(data.stackBlockNormalImageUrls) ? data.stackBlockNormalImageUrls : [];
- var heavyArr = Array.isArray(data.stackBlockHeavyImageUrls) ? data.stackBlockHeavyImageUrls : [];
- for (var si = 1; si <= 8; si++) {
- var nin = el('stack-block-normal-url-' + si);
- var hin = el('stack-block-heavy-url-' + si);
- var nv = normArr[si - 1] != null && String(normArr[si - 1]) !== '' ? String(normArr[si - 1]) : STACK_BLOCK_DEFAULT_NORMAL[si - 1];
- var hv = heavyArr[si - 1] != null && String(heavyArr[si - 1]) !== '' ? String(heavyArr[si - 1]) : STACK_BLOCK_DEFAULT_HEAVY[si - 1];
- if (nin) nin.value = nv || '';
- if (hin) hin.value = hv || '';
- updateStackBlockSeatPreview(si);
- }
- }
- /* #4 MG3 8 สีตาม lobby theme — ค่าเริ่มต้น Block-Code-1..8 (ตรง PLAY_LOBBY_THEME_HEX) */
- var STACK_BLOCK_THEME_NAMES = ['1-red', '2-orange', '3-Yellow', '4-Green', '5-Blue', '6-Navy', '7-Violet', '8-Pink'];
- var STACK_BLOCK_DEFAULT_NORMAL = STACK_BLOCK_THEME_NAMES.map(function (s) { return '/Game/img/TowerBlock/Block-Code-' + s + '.png'; });
- var STACK_BLOCK_DEFAULT_HEAVY = STACK_BLOCK_THEME_NAMES.map(function (s) { return '/Game/img/TowerBlock/Block-Code-' + s + '-2.png'; });
-
- function readStackBlockNormalUrlsFromForm() {
- var out = [];
- for (var i = 1; i <= 8; i++) {
- var inp = el('stack-block-normal-url-' + i);
- out.push(inp && inp.value ? String(inp.value).trim() : '');
- }
- return out;
- }
-
- function readStackBlockHeavyUrlsFromForm() {
- var out = [];
- for (var j = 1; j <= 8; j++) {
- var inp = el('stack-block-heavy-url-' + j);
- out.push(inp && inp.value ? String(inp.value).trim() : '');
- }
- return out;
- }
-
- function updateStackBlockSeatPreview(seat) {
- ['normal', 'heavy'].forEach(function (kind) {
- var inp = el('stack-block-' + kind + '-url-' + seat);
- var img = el('stack-block-' + kind + '-prev-' + seat);
- if (!img) return;
- var v = inp && inp.value ? String(inp.value).trim() : '';
- if (!v) {
- img.removeAttribute('src');
- img.alt = '';
- return;
- }
- if (!/^https?:\/\//i.test(v) && v.charAt(0) !== '/') v = '/' + v.replace(/^\/+/, '');
- img.alt = (kind === 'heavy' ? 'Heavy ' : 'Normal ') + 'P' + seat;
- img.src = v;
- });
- }
-
- function bindStackBlockVisualInputs() {
- for (var s = 1; s <= 8; s++) {
- (function (seat) {
- var nIn = el('stack-block-normal-url-' + seat);
- var hIn = el('stack-block-heavy-url-' + seat);
- if (nIn) {
- nIn.addEventListener('change', function () { updateStackBlockSeatPreview(seat); });
- nIn.addEventListener('blur', function () { updateStackBlockSeatPreview(seat); });
- }
- if (hIn) {
- hIn.addEventListener('change', function () { updateStackBlockSeatPreview(seat); });
- hIn.addEventListener('blur', function () { updateStackBlockSeatPreview(seat); });
- }
- var bn = el('btn-stack-block-normal-clear-' + seat);
- if (bn) {
- bn.addEventListener('click', function () {
- var i = el('stack-block-normal-url-' + seat);
- if (i) i.value = '';
- updateStackBlockSeatPreview(seat);
- });
- }
- var bh = el('btn-stack-block-heavy-clear-' + seat);
- if (bh) {
- bh.addEventListener('click', function () {
- var i = el('stack-block-heavy-url-' + seat);
- if (i) i.value = '';
- updateStackBlockSeatPreview(seat);
- });
- }
- })(s);
- }
- }
-
- function loadStackGamePanel() {
- gameTimingFetch('GET')
- .then(function (data) {
- applyGameTimingDataToStackInputs(data);
- setMsg('stack-game-msg', '', '');
- })
- .catch(function (e) {
- setMsg('stack-game-msg', e.message || 'โหลดไม่ได้', 'error');
- });
- }
-
- function saveStackGamePanel() {
- if (stackGameSaveInFlight) return;
- var hzParsed = parseStackSwingHzForSave(el('stack-swing-hz') ? el('stack-swing-hz').value : '');
- if (!hzParsed.ok) {
- setMsg('stack-game-msg', hzParsed.error, 'error');
- return;
- }
- var hzIn = hzParsed.value;
- var bwParsed = parseStackBlockWidthForSave(el('stack-block-width-tiles') ? el('stack-block-width-tiles').value : '');
- if (!bwParsed.ok) {
- setMsg('stack-game-msg', bwParsed.error, 'error');
- return;
- }
- var blockW = bwParsed.value;
- var secIn = el('stack-tower-mission-sec') ? parseInt(String(el('stack-tower-mission-sec').value), 10) : 90;
- if (!Number.isFinite(secIn) || secIn < 10 || secIn > 7200) {
- setMsg('stack-game-msg', 'เวลารอบต้องอยู่ระหว่าง 10–7200 วินาที', 'error');
- return;
- }
- var missIn = el('stack-team-misses-max') ? parseInt(String(el('stack-team-misses-max').value), 10) : 3;
- if (!Number.isFinite(missIn) || missIn < 1 || missIn > 20) {
- setMsg('stack-game-msg', 'โอกาสพลาดต้องอยู่ระหว่าง 1–20 ครั้ง', 'error');
- return;
- }
- var progBlocksIn = el('stack-tower-progress-blocks') ? parseInt(String(el('stack-tower-progress-blocks').value), 10) : 50;
- if (!Number.isFinite(progBlocksIn) || progBlocksIn < 1 || progBlocksIn > 500) {
- setMsg('stack-game-msg', 'Progress เต็ม 100%: จำนวนชั้นต้องอยู่ระหว่าง 1–500', 'error');
- return;
- }
- var heavyPctIn = el('stack-heavy-block-percent') ? parseInt(String(el('stack-heavy-block-percent').value), 10) : 35;
- if (!Number.isFinite(heavyPctIn) || heavyPctIn < 0 || heavyPctIn > 100) {
- setMsg('stack-game-msg', 'โอกาสบล็อกใหญ่ (%) ต้องอยู่ระหว่าง 0–100', 'error');
- return;
- }
- var btn = el('btn-stack-game-save');
- stackGameSaveInFlight = true;
- if (btn) {
- btn.disabled = true;
- if (!btn.dataset.prevLabel) btn.dataset.prevLabel = btn.textContent;
- btn.textContent = 'กำลังบันทึก…';
- }
- gameTimingFetch('GET')
- .then(function (data) {
- data.stackSwingHz = hzIn;
- data.stackBlockWidthTiles = blockW;
- data.stackTowerMissionTimeSec = secIn;
- data.stackTeamMissesMax = missIn;
- data.stackTowerProgressBlocks = progBlocksIn;
- data.stackHeavyBlockPercent = heavyPctIn;
- data.stackBlockNormalImageUrls = readStackBlockNormalUrlsFromForm();
- data.stackBlockHeavyImageUrls = readStackBlockHeavyUrlsFromForm();
- return gameTimingFetch('PUT', data);
- })
- .then(function () {
- return gameTimingFetch('GET');
- })
- .then(function (fresh) {
- applyGameTimingDataToStackInputs(fresh);
- var hz = fresh && fresh.stackSwingHz != null ? Number(fresh.stackSwingHz) : hzIn;
- if (!Number.isFinite(hz)) hz = hzIn;
- hz = Math.round(hz * 100) / 100;
- var wLabel = fresh && fresh.stackBlockWidthTiles != null && Number.isFinite(Number(fresh.stackBlockWidthTiles))
- ? String(Math.round(Number(fresh.stackBlockWidthTiles) * 100) / 100) + ' tile'
- : 'อัตโนมัติ (จากแผนที่)';
- var stf = fresh && fresh.stackTowerMissionTimeSec != null ? Number(fresh.stackTowerMissionTimeSec) : secIn;
- var msf = fresh && fresh.stackTeamMissesMax != null ? Number(fresh.stackTeamMissesMax) : missIn;
- var pbf = fresh && fresh.stackTowerProgressBlocks != null ? Number(fresh.stackTowerProgressBlocks) : progBlocksIn;
- setMsg('stack-game-msg', 'บันทึกสำเร็จ — สวิง ' + hz + ' Hz · กว้าง ' + wLabel + ' · เวลา ' + stf + 's · พลาด ' + msf + ' ครั้ง · Progress 100% ที่ ' + pbf + ' ชั้น · รูปบล็อก P1–P6 + ใหญ่ ' + (fresh && fresh.stackHeavyBlockPercent != null ? fresh.stackHeavyBlockPercent : heavyPctIn) + '% · โหลดยืนยันจากเซิร์ฟเวอร์แล้ว · ผู้เล่นต้องรีเฟรชหน้าเล่นหรือเข้าห้องใหม่', 'ok');
- })
- .catch(function (e) {
- setMsg('stack-game-msg', (e.message || 'บันทึกไม่ได้') + ' — เช็คว่า Node รัน Game/server.js และ URL /Game/api/game-timing ไม่ 404', 'error');
- })
- .then(function () {
- stackGameSaveInFlight = false;
- if (btn) {
- btn.disabled = false;
- btn.textContent = btn.dataset.prevLabel || 'บันทึก';
- }
- });
- }
-
- function loadGameTimingPanel() {
- gameTimingFetch('GET')
- .then(function (data) {
- el('game-timing-tick-ms').value = String(data.gauntletTickMs != null ? data.gauntletTickMs : 220);
- el('game-timing-jump-ticks').value = String(data.gauntletJumpTicks != null ? data.gauntletJumpTicks : 16);
- if (el('game-timing-jump-height')) el('game-timing-jump-height').value = String(data.gauntletJumpHeightMult != null ? data.gauntletJumpHeightMult : 0.52);
- el('game-timing-limit-sec').value = String(data.gauntletTimeLimitSec != null ? data.gauntletTimeLimitSec : 0);
- /* troublesomeOfferSec/RollMaxSec ย้ายไปแท็บ "บทตัวป่วน" แล้ว */
- if (el('game-timing-lane-urls')) el('game-timing-lane-urls').value = laneUrlsToText(data.gauntletLaneImageUrls);
- if (el('game-timing-laser-top-url')) el('game-timing-laser-top-url').value = data.gauntletLaserTopUrl != null ? String(data.gauntletLaserTopUrl) : '';
- if (el('game-timing-laser-bottom-url')) el('game-timing-laser-bottom-url').value = data.gauntletLaserBottomUrl != null ? String(data.gauntletLaserBottomUrl) : '';
- if (el('game-timing-laser-line-url')) el('game-timing-laser-line-url').value = data.gauntletLaserLineUrl != null ? String(data.gauntletLaserLineUrl) : '';
- if (el('game-timing-laser-fill')) el('game-timing-laser-fill').value = data.gauntletLaserFillColor != null ? String(data.gauntletLaserFillColor) : '';
- if (el('game-timing-laser-stroke')) el('game-timing-laser-stroke').value = data.gauntletLaserStrokeColor != null ? String(data.gauntletLaserStrokeColor) : '';
- var lw = data.gauntletLaserLineWidthPx != null ? Number(data.gauntletLaserLineWidthPx) : 2;
- if (el('game-timing-laser-line-width')) el('game-timing-laser-line-width').value = String(Number.isFinite(lw) ? lw : 2);
- renderGameTimingLaneVisuals();
- renderGameTimingLaserVisuals();
- syncGameTimingLaserColorSwatches();
- applyGameTimingDataToStackInputs(data);
- setMsg('game-timing-msg', '', '');
- return refreshGauntletAssetLibrary();
- })
- .catch(function (e) {
- setMsg('game-timing-msg', e.message || 'โหลดไม่ได้', 'error');
- });
- }
-
- function normalizeJumpSurvivePlatformTileUrlInput(v) {
- var s = String(v || '').trim().slice(0, 500);
- if (!s) return '';
- if (!/^https?:\/\//i.test(s) && s.charAt(0) !== '/') s = '/' + s.replace(/^\/+/, '');
- return s;
- }
-
- function updateJumpSurvivePlatformTilePreview(slot) {
- var img = el('jump-survive-platform-tile-prev-' + slot);
- var inp = el('jump-survive-platform-tile-url-' + slot);
- if (!img) return;
- var v = inp && inp.value ? normalizeJumpSurvivePlatformTileUrlInput(inp.value) : '';
- if (!v) {
- img.removeAttribute('src');
- img.alt = '';
- return;
- }
- img.alt = 'Jump platform tile ' + slot + ' preview';
- img.src = v;
- }
-
- function readJumpSurvivePlatformTilesFromForm() {
- var out = [];
- for (var s = 1; s <= 3; s++) {
- var inpU = el('jump-survive-platform-tile-url-' + s);
- var url = inpU ? normalizeJumpSurvivePlatformTileUrlInput(inpU.value) : '';
- var inpW = el('jump-survive-platform-tile-w-' + s);
- var inpH = el('jump-survive-platform-tile-h-' + s);
- var w = inpW ? parseInt(String(inpW.value), 10) : 0;
- var h = inpH ? parseInt(String(inpH.value), 10) : 0;
- if (!Number.isFinite(w) || w < 0) w = 0;
- if (!Number.isFinite(h) || h < 0) h = 0;
- out.push({ url: url, w: w, h: h });
- }
- return out;
- }
-
- function bindJumpSurvivePlatformTileInputs() {
- for (var s = 1; s <= 3; s++) {
- (function (slot) {
- var inp = el('jump-survive-platform-tile-url-' + slot);
- var btn = el('btn-jump-survive-platform-tile-clear-' + slot);
- if (inp) {
- inp.addEventListener('change', function () { updateJumpSurvivePlatformTilePreview(slot); });
- inp.addEventListener('blur', function () { updateJumpSurvivePlatformTilePreview(slot); });
- }
- if (btn) {
- btn.addEventListener('click', function () {
- var i = el('jump-survive-platform-tile-url-' + slot);
- if (i) i.value = '';
- updateJumpSurvivePlatformTilePreview(slot);
- });
- }
- })(s);
- }
- }
-
- function loadJumpSurviveTimingPanel() {
- gameTimingFetch('GET')
- .then(function (data) {
- var inp = el('jump-survive-height-mult');
- if (inp) {
- var jsm = Number(data.jumpSurviveJumpHeightMult);
- inp.value = String(Number.isFinite(jsm) ? Math.round(Math.max(0.5, Math.min(4, jsm)) * 100) / 100 : 1.5);
- }
- var inpT = el('jump-survive-mission-sec');
- if (inpT) {
- var jss = Number(data.jumpSurviveMissionTimeSec);
- inpT.value = String(Number.isFinite(jss) && jss > 0 ? Math.floor(jss) : 0);
- }
- var tiles = Array.isArray(data.jumpSurvivePlatformTiles) ? data.jumpSurvivePlatformTiles : [];
- var legacy = typeof data.jumpSurvivePlatformTileUrl === 'string' ? data.jumpSurvivePlatformTileUrl : '';
- for (var s = 1; s <= 3; s++) {
- var o = tiles[s - 1] && typeof tiles[s - 1] === 'object' ? tiles[s - 1] : {};
- var url = typeof o.url === 'string' ? o.url : '';
- if (s === 1 && !url && legacy) url = legacy;
- var inpU = el('jump-survive-platform-tile-url-' + s);
- if (inpU) inpU.value = url;
- var w = Number(o.w);
- var h = Number(o.h);
- var inpW = el('jump-survive-platform-tile-w-' + s);
- var inpH = el('jump-survive-platform-tile-h-' + s);
- if (inpW) inpW.value = String(Number.isFinite(w) && w > 0 ? Math.floor(w) : 0);
- if (inpH) inpH.value = String(Number.isFinite(h) && h > 0 ? Math.floor(h) : 0);
- updateJumpSurvivePlatformTilePreview(s);
- }
- setMsg('jump-survive-timing-msg', '', '');
- })
- .catch(function (e) {
- setMsg('jump-survive-timing-msg', e.message || 'โหลดไม่ได้', 'error');
- });
- }
-
- function updateSpaceShooterShipPreview(slot) {
- var img = el('space-shooter-ship-prev-' + slot);
- var inp = el('space-shooter-ship-url-' + slot);
- if (!img) return;
- var v = inp && inp.value ? String(inp.value).trim() : '';
- if (!v) {
- img.removeAttribute('src');
- img.alt = '';
- return;
- }
- if (!/^https?:\/\//i.test(v) && v.charAt(0) !== '/') v = '/' + v.replace(/^\/+/, '');
- img.alt = 'Ship slot ' + slot;
- img.src = v;
- }
-
- function bindSpaceShooterShipUrlInputs() {
- for (var s = 1; s <= 6; s++) {
- (function (slot) {
- var inp = el('space-shooter-ship-url-' + slot);
- var btn = el('btn-space-shooter-ship-clear-' + slot);
- if (inp) {
- inp.addEventListener('change', function () { updateSpaceShooterShipPreview(slot); });
- inp.addEventListener('blur', function () { updateSpaceShooterShipPreview(slot); });
- }
- if (btn) {
- btn.addEventListener('click', function () {
- var i = el('space-shooter-ship-url-' + slot);
- if (i) i.value = '';
- updateSpaceShooterShipPreview(slot);
- });
- }
- })(s);
- }
- }
-
- function readSpaceShooterShipImageUrlsFromForm() {
- var urls = [];
- for (var i = 1; i <= 6; i++) {
- var inp = el('space-shooter-ship-url-' + i);
- urls.push(inp && inp.value ? String(inp.value).trim() : '');
- }
- return urls;
- }
-
- function updateSpaceShooterDamageOverlayPreview(hit) {
- var img = el('space-shooter-damage-prev-' + hit);
- var inp = el('space-shooter-damage-url-' + hit);
- if (!img) return;
- var v = inp && inp.value ? String(inp.value).trim() : '';
- if (!v) {
- img.removeAttribute('src');
- img.alt = '';
- return;
- }
- if (!/^https?:\/\//i.test(v) && v.charAt(0) !== '/') v = '/' + v.replace(/^\/+/, '');
- img.alt = 'Damage overlay hit ' + hit;
- img.src = v;
- }
-
- function readSpaceShooterShipDamageOverlayUrlsFromForm() {
- var urls = [];
- for (var h = 1; h <= 3; h++) {
- var inp = el('space-shooter-damage-url-' + h);
- urls.push(inp && inp.value ? String(inp.value).trim() : '');
- }
- return urls;
- }
-
- function bindSpaceShooterDamageOverlayPanel() {
- for (var h = 1; h <= 3; h++) {
- (function (hit) {
- var inp = el('space-shooter-damage-url-' + hit);
- var btnClr = el('btn-space-shooter-damage-clear-' + hit);
- var btnUp = el('btn-space-shooter-damage-upload-' + hit);
- var fileInp = el('space-shooter-damage-file-' + hit);
- if (inp) {
- inp.addEventListener('change', function () { updateSpaceShooterDamageOverlayPreview(hit); });
- inp.addEventListener('blur', function () { updateSpaceShooterDamageOverlayPreview(hit); });
- }
- if (btnClr) {
- btnClr.addEventListener('click', function () {
- var i = el('space-shooter-damage-url-' + hit);
- if (i) i.value = '';
- if (fileInp) fileInp.value = '';
- updateSpaceShooterDamageOverlayPreview(hit);
- });
- }
- if (btnUp && fileInp) {
- btnUp.addEventListener('click', function () {
- if (!fileInp.files || !fileInp.files[0]) {
- setMsg('space-shooter-timing-msg', 'เลือกไฟล์รูปก่อน · Pick an image file first', 'error');
- return;
- }
- readFileAsDataURL(fileInp.files[0])
- .then(function (dataUrl) {
- return gauntletAssetsJsonFetch(GAME_GAUNTLET_ASSETS_API + '/upload', {
- method: 'POST',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify({
- imageDataUrl: dataUrl,
- label: 'space-shooter-damage-hit-' + hit,
- }),
- });
- })
- .then(function (j) {
- if (!j || !j.ok || !j.url) {
- throw new Error((j && j.error) || 'อัปโหลดไม่สำเร็จ · Upload failed');
- }
- var inpU = el('space-shooter-damage-url-' + hit);
- if (inpU) inpU.value = String(j.url).trim();
- updateSpaceShooterDamageOverlayPreview(hit);
- setMsg(
- 'space-shooter-timing-msg',
- 'อัปโหลด overlay ช่อง ' + hit + ' แล้ว — กดบันทึกด้านล่างเพื่อเก็บลง game-timing.json · Uploaded; click Save',
- 'ok'
- );
- })
- .catch(function (e) {
- setMsg('space-shooter-timing-msg', e.message || 'อัปโหลดไม่สำเร็จ', 'error');
- });
- });
- }
- })(h);
- }
- }
-
- function updateSpaceShooterAstFallPreview() {
- var img = el('space-shooter-ast-fall-prev');
- var inp = el('space-shooter-ast-fall-url');
- if (!img) return;
- var v = inp && inp.value ? String(inp.value).trim() : '';
- if (!v) {
- img.removeAttribute('src');
- img.alt = '';
- return;
- }
- if (!/^https?:\/\//i.test(v) && v.charAt(0) !== '/') v = '/' + v.replace(/^\/+/, '');
- img.alt = 'Asteroid falling';
- img.src = v;
- }
-
- function updateSpaceShooterAstExplodeRowPreview(row) {
- if (!row) return;
- var img = row.querySelector('.space-shooter-ast-explode-prev');
- var inp = row.querySelector('.space-shooter-ast-explode-url');
- if (!img) return;
- var v = inp && inp.value ? String(inp.value).trim() : '';
- if (!v) {
- img.removeAttribute('src');
- img.alt = '';
- return;
- }
- if (!/^https?:\/\//i.test(v) && v.charAt(0) !== '/') v = '/' + v.replace(/^\/+/, '');
- img.alt = 'Asteroid explode frame';
- img.src = v;
- }
-
- function renumberSpaceShooterAstExplodeRows() {
- var wrap = el('space-shooter-ast-explode-rows');
- if (!wrap) return;
- var rows = wrap.querySelectorAll('.space-shooter-ast-explode-row');
- rows.forEach(function (row, i) {
- var slot = row.querySelector('.space-shooter-ship-slot');
- if (slot) slot.textContent = String(i + 1);
- });
- }
-
- function addSpaceShooterAstExplodeRow(initialUrl) {
- var wrap = el('space-shooter-ast-explode-rows');
- if (!wrap) return;
- var rows = wrap.querySelectorAll('.space-shooter-ast-explode-row');
- if (rows.length >= 31) {
- setMsg('space-shooter-timing-msg', 'เฟรมแตกสูงสุด 31 แถว (รวมรูปตกแล้วไม่เกิน 32 URL) · Max 31 explosion rows', 'error');
- return;
- }
- var ix = rows.length + 1;
- var row = document.createElement('div');
- row.className = 'space-shooter-ship-row space-shooter-ast-explode-row';
- row.innerHTML =
- '' +
- ix +
- ' URL ' +
- ' ' +
- 'อัปโหลด ' +
- ' ' +
- 'ล้าง ' +
- 'ลบแถว ';
- var inp = row.querySelector('.space-shooter-ast-explode-url');
- if (inp && initialUrl != null && String(initialUrl).trim()) inp.value = String(initialUrl).trim();
- if (inp) {
- inp.addEventListener('change', function () {
- updateSpaceShooterAstExplodeRowPreview(row);
- });
- inp.addEventListener('blur', function () {
- updateSpaceShooterAstExplodeRowPreview(row);
- });
- }
- wrap.appendChild(row);
- updateSpaceShooterAstExplodeRowPreview(row);
- }
-
- function clearSpaceShooterAstExplodeRows() {
- var wrap = el('space-shooter-ast-explode-rows');
- if (wrap) wrap.innerHTML = '';
- }
-
- function readSpaceShooterAsteroidSpriteUrlsFromForm() {
- var out = [];
- var fallInp = el('space-shooter-ast-fall-url');
- var fall = fallInp && fallInp.value ? String(fallInp.value).trim() : '';
- if (fall) out.push(fall);
- var wrap = el('space-shooter-ast-explode-rows');
- if (wrap) {
- var rows = wrap.querySelectorAll('.space-shooter-ast-explode-row');
- for (var ri = 0; ri < rows.length && out.length < 32; ri++) {
- var inp = rows[ri].querySelector('.space-shooter-ast-explode-url');
- var u = inp && inp.value ? String(inp.value).trim() : '';
- if (u) out.push(u);
- }
- }
- return out;
- }
-
- function bindSpaceShooterAsteroidSpritePanel() {
- var wrap = el('space-shooter-ast-explode-rows');
- if (!wrap || wrap.getAttribute('data-bound') === '1') return;
- wrap.setAttribute('data-bound', '1');
- wrap.addEventListener('click', function (ev) {
- var t = ev.target;
- if (!t || !t.closest) return;
- var rm = t.closest('.btn-space-shooter-ast-explode-remove');
- if (rm) {
- var row = rm.closest('.space-shooter-ast-explode-row');
- if (row && row.parentNode) row.parentNode.removeChild(row);
- renumberSpaceShooterAstExplodeRows();
- return;
- }
- var clr = t.closest('.btn-space-shooter-ast-explode-clear');
- if (clr) {
- var rowC = clr.closest('.space-shooter-ast-explode-row');
- if (!rowC) return;
- var iu = rowC.querySelector('.space-shooter-ast-explode-url');
- var fi = rowC.querySelector('.space-shooter-ast-explode-file');
- if (iu) iu.value = '';
- if (fi) fi.value = '';
- updateSpaceShooterAstExplodeRowPreview(rowC);
- return;
- }
- var up = t.closest('.btn-space-shooter-ast-explode-upload');
- if (!up) return;
- var rowU = up.closest('.space-shooter-ast-explode-row');
- if (!rowU) return;
- var fileInp = rowU.querySelector('.space-shooter-ast-explode-file');
- if (!fileInp || !fileInp.files || !fileInp.files[0]) {
- setMsg('space-shooter-timing-msg', 'เลือกไฟล์รูปก่อน · Pick an image file first', 'error');
- return;
- }
- readFileAsDataURL(fileInp.files[0])
- .then(function (dataUrl) {
- return gauntletAssetsJsonFetch(GAME_GAUNTLET_ASSETS_API + '/upload', {
- method: 'POST',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify({
- imageDataUrl: dataUrl,
- label: 'space-shooter-ast-explode',
- }),
- });
- })
- .then(function (j) {
- if (!j || !j.ok || !j.url) {
- throw new Error((j && j.error) || 'อัปโหลดไม่สำเร็จ · Upload failed');
- }
- var inpU = rowU.querySelector('.space-shooter-ast-explode-url');
- if (inpU) inpU.value = String(j.url).trim();
- updateSpaceShooterAstExplodeRowPreview(rowU);
- setMsg(
- 'space-shooter-timing-msg',
- 'อัปโหลดเฟรมแตกแล้ว — กดบันทึกด้านล่างเพื่อเก็บ · Uploaded; click Save',
- 'ok'
- );
- })
- .catch(function (e) {
- setMsg('space-shooter-timing-msg', e.message || 'อัปโหลดไม่สำเร็จ', 'error');
- });
- });
- var btnAdd = el('btn-space-shooter-ast-add-explode');
- if (btnAdd) {
- btnAdd.addEventListener('click', function () {
- setMsg('space-shooter-timing-msg', '', '');
- addSpaceShooterAstExplodeRow('');
- });
- }
- var fallInp = el('space-shooter-ast-fall-url');
- var fallFile = el('space-shooter-ast-fall-file');
- var fallUp = el('btn-space-shooter-ast-fall-upload');
- var fallClr = el('btn-space-shooter-ast-fall-clear');
- if (fallInp) {
- fallInp.addEventListener('change', updateSpaceShooterAstFallPreview);
- fallInp.addEventListener('blur', updateSpaceShooterAstFallPreview);
- }
- if (fallClr) {
- fallClr.addEventListener('click', function () {
- if (fallInp) fallInp.value = '';
- if (fallFile) fallFile.value = '';
- updateSpaceShooterAstFallPreview();
- });
- }
- if (fallUp && fallFile) {
- fallUp.addEventListener('click', function () {
- if (!fallFile.files || !fallFile.files[0]) {
- setMsg('space-shooter-timing-msg', 'เลือกไฟล์รูปก่อน · Pick an image file first', 'error');
- return;
- }
- readFileAsDataURL(fallFile.files[0])
- .then(function (dataUrl) {
- return gauntletAssetsJsonFetch(GAME_GAUNTLET_ASSETS_API + '/upload', {
- method: 'POST',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify({
- imageDataUrl: dataUrl,
- label: 'space-shooter-ast-fall',
- }),
- });
- })
- .then(function (j) {
- if (!j || !j.ok || !j.url) {
- throw new Error((j && j.error) || 'อัปโหลดไม่สำเร็จ · Upload failed');
- }
- if (fallInp) fallInp.value = String(j.url).trim();
- updateSpaceShooterAstFallPreview();
- setMsg(
- 'space-shooter-timing-msg',
- 'อัปโหลดรูปตกแล้ว — กดบันทึกด้านล่างเพื่อเก็บ · Uploaded; click Save',
- 'ok'
- );
- })
- .catch(function (e) {
- setMsg('space-shooter-timing-msg', e.message || 'อัปโหลดไม่สำเร็จ', 'error');
- });
- });
- }
- }
-
- function loadSpaceShooterTimingPanel() {
- gameTimingFetch('GET')
- .then(function (data) {
- var inpT = el('space-shooter-mission-sec');
- if (inpT) {
- var ss = Number(data.spaceShooterMissionTimeSec);
- inpT.value = String(Number.isFinite(ss) && ss > 0 ? Math.floor(ss) : 0);
- }
- var inpIv = el('space-shooter-asteroid-interval-ms');
- if (inpIv) {
- var iv = Number(data.spaceShooterAsteroidIntervalMs);
- inpIv.value = String(Number.isFinite(iv) && iv >= 200 ? Math.min(10000, Math.floor(iv)) : 1040);
- }
- var urls = data.spaceShooterShipImageUrls;
- if (!Array.isArray(urls)) urls = [];
- for (var k = 1; k <= 6; k++) {
- var inpU = el('space-shooter-ship-url-' + k);
- if (inpU) inpU.value = urls[k - 1] != null ? String(urls[k - 1]) : '';
- updateSpaceShooterShipPreview(k);
- }
- var fallInpL = el('space-shooter-ast-fall-url');
- if (fallInpL) {
- var astArr = data.spaceShooterAsteroidSpriteUrls;
- if (!Array.isArray(astArr)) astArr = [];
- fallInpL.value = astArr[0] != null ? String(astArr[0]) : '';
- updateSpaceShooterAstFallPreview();
- clearSpaceShooterAstExplodeRows();
- for (var ai = 1; ai < astArr.length && ai < 32; ai++) {
- addSpaceShooterAstExplodeRow(astArr[ai]);
- }
- }
- var inpFms = el('space-shooter-asteroid-explode-ms');
- if (inpFms) {
- var ef = Number(data.spaceShooterAsteroidExplodeFrameMs);
- inpFms.value = String(Number.isFinite(ef) ? Math.max(30, Math.min(500, Math.round(ef))) : 70);
- }
- var dmg = data.spaceShooterShipDamageOverlayUrls;
- if (!Array.isArray(dmg)) dmg = [];
- for (var dh = 1; dh <= 3; dh++) {
- var inpD = el('space-shooter-damage-url-' + dh);
- if (inpD) inpD.value = dmg[dh - 1] != null ? String(dmg[dh - 1]) : '';
- updateSpaceShooterDamageOverlayPreview(dh);
- }
- setMsg('space-shooter-timing-msg', '', '');
- })
- .catch(function (e) {
- setMsg('space-shooter-timing-msg', e.message || 'โหลดไม่ได้', 'error');
- });
- }
-
- function saveSpaceShooterTimingPanel() {
- var limSs = el('space-shooter-mission-sec') ? parseInt(String(el('space-shooter-mission-sec').value), 10) : 0;
- if (Number.isNaN(limSs) || limSs < 0) limSs = 0;
- limSs = limSs <= 0 ? 0 : Math.max(10, Math.min(7200, limSs));
- var shipUrls = readSpaceShooterShipImageUrlsFromForm();
- var damageUrls = readSpaceShooterShipDamageOverlayUrlsFromForm();
- var astUrls = readSpaceShooterAsteroidSpriteUrlsFromForm();
- var inpFms = el('space-shooter-asteroid-explode-ms');
- var explodeMs = inpFms ? parseInt(String(inpFms.value), 10) : 70;
- if (Number.isNaN(explodeMs)) explodeMs = 70;
- explodeMs = Math.max(30, Math.min(500, explodeMs));
- var inpIv = el('space-shooter-asteroid-interval-ms');
- var asteroidIv = inpIv ? parseInt(String(inpIv.value), 10) : 1040;
- if (Number.isNaN(asteroidIv)) asteroidIv = 1040;
- asteroidIv = Math.max(200, Math.min(10000, asteroidIv));
- gameTimingFetch('GET')
- .then(function (data) {
- data.spaceShooterMissionTimeSec = limSs;
- data.spaceShooterShipImageUrls = shipUrls;
- data.spaceShooterShipDamageOverlayUrls = damageUrls;
- data.spaceShooterAsteroidSpriteUrls = astUrls;
- data.spaceShooterAsteroidExplodeFrameMs = explodeMs;
- data.spaceShooterAsteroidIntervalMs = asteroidIv;
- return gameTimingFetch('PUT', data);
- })
- .then(function () {
- setMsg('space-shooter-timing-msg', 'บันทึกแล้ว — เวลา / ความถี่เกิดอุกาบาต / รูปยาน / overlay / อุกาบาต มีผลเมื่อรีเฟรชหน้าเล่นหรือโหลด /api/game-timing', 'ok');
- })
- .catch(function (e) {
- setMsg('space-shooter-timing-msg', e.message || 'บันทึกไม่ได้', 'error');
- });
- }
-
- function encodeSpacesInUrlPath(t) {
- var s = String(t || '');
- var q = s.indexOf('?');
- var pathPart = q === -1 ? s : s.slice(0, q);
- var query = q === -1 ? '' : s.slice(q);
- return pathPart.replace(/ /g, '%20') + query;
- }
-
- function decodeAssetUrlPercentRuns(t) {
- var s = String(t || '');
- var q = s.indexOf('?');
- var base = q === -1 ? s : s.slice(0, q);
- var query = q === -1 ? '' : s.slice(q);
- for (var i = 0; i < 2; i++) {
- try {
- var d = decodeURIComponent(base);
- if (d === base) break;
- base = d;
- } catch (e) {
- break;
- }
- }
- return base + query;
- }
-
- function normalizeGameAssetUrlForWebAdmin(t) {
- var s = String(t || '');
- s = s.replace(/^\/Game\/public\/img\//i, '/Game/img/');
- s = s.replace(/^Game\/public\/img\//i, 'Game/img/');
- return s;
- }
-
- /** ให้สอดคล้องกับ server sanitizeGauntletAssetUrl + กัน placeholder .... */
- function normalizeMegaVirusAssetUrl(v) {
- var t = v != null ? normalizeGameAssetUrlForWebAdmin(decodeAssetUrlPercentRuns(String(v).trim())).replace(/\/+$/, '') : '';
- if (/^\/Game\/img\/MegaVirus\/Artboard$/i.test(t) || /^Game\/img\/MegaVirus\/Artboard$/i.test(t)) {
- t = '/Game/img/MegaVirus/Artboard%209.png';
- }
- if (!t || t.length > 500) return '';
- if (/\.{4,}/.test(t)) return '';
- if (/[\t\n\r<>"'`]/.test(t)) return '';
- if (/^https?:\/\//i.test(t)) return encodeSpacesInUrlPath(t);
- if (/^Game\//i.test(t)) return encodeSpacesInUrlPath('/' + t.replace(/^\/+/, ''));
- if (t.charAt(0) === '/') return encodeSpacesInUrlPath(t);
- return '';
- }
-
- function updateMegaVirusBossPreview() {
- var img = el('mega-virus-boss-prev');
- var inp = el('mega-virus-boss-url');
- if (!img) return;
- var v = normalizeMegaVirusAssetUrl(inp && inp.value ? String(inp.value).trim() : '');
- if (!v) {
- img.removeAttribute('src');
- img.alt = '';
- return;
- }
- img.alt = 'Boss preview';
- img.src = v;
- }
-
- function updateMegaVirusBalloonPreview(slot) {
- var img = el('mega-virus-balloon-prev-' + slot);
- var inp = el('mega-virus-balloon-url-' + slot);
- if (!img) return;
- var v = normalizeMegaVirusAssetUrl(inp && inp.value ? String(inp.value).trim() : '');
- if (!v) {
- img.removeAttribute('src');
- img.alt = '';
- return;
- }
- img.alt = 'Balloon P' + slot;
- img.src = v;
- }
-
- function updateMegaVirusBalloonFallbackPreview() {
- var img = el('mega-virus-balloon-fallback-prev');
- var inp = el('mega-virus-balloon-fallback-url');
- if (!img) return;
- var v = normalizeMegaVirusAssetUrl(inp && inp.value ? String(inp.value).trim() : '');
- if (!v) {
- img.removeAttribute('src');
- img.alt = '';
- return;
- }
- img.alt = 'Fallback balloon';
- img.src = v;
- }
-
- function readMegaVirusBalloonUrlsFromForm() {
- var urls = [];
- for (var i = 1; i <= 6; i++) {
- var inp = el('mega-virus-balloon-url-' + i);
- urls.push(normalizeMegaVirusAssetUrl(inp && inp.value ? String(inp.value).trim() : ''));
- }
- return urls;
- }
-
- function bindMegaVirusPanel() {
- var formMv = el('form-mega-virus-timing');
- if (formMv) {
- formMv.addEventListener('submit', function (e) {
- e.preventDefault();
- saveMegaVirusTimingPanel();
- });
- }
- var bossInp = el('mega-virus-boss-url');
- if (bossInp) {
- bossInp.addEventListener('change', updateMegaVirusBossPreview);
- bossInp.addEventListener('blur', updateMegaVirusBossPreview);
- }
- var bossClr = el('btn-mega-virus-boss-clear');
- if (bossClr) {
- bossClr.addEventListener('click', function () {
- var i = el('mega-virus-boss-url');
- if (i) i.value = '';
- updateMegaVirusBossPreview();
- });
- }
- for (var s = 1; s <= 6; s++) {
- (function (slot) {
- var inp = el('mega-virus-balloon-url-' + slot);
- var btn = el('btn-mega-virus-balloon-clear-' + slot);
- if (inp) {
- inp.addEventListener('change', function () { updateMegaVirusBalloonPreview(slot); });
- inp.addEventListener('blur', function () { updateMegaVirusBalloonPreview(slot); });
- }
- if (btn) {
- btn.addEventListener('click', function () {
- var i = el('mega-virus-balloon-url-' + slot);
- if (i) i.value = '';
- updateMegaVirusBalloonPreview(slot);
- });
- }
- })(s);
- }
- var fbInp = el('mega-virus-balloon-fallback-url');
- if (fbInp) {
- fbInp.addEventListener('change', updateMegaVirusBalloonFallbackPreview);
- fbInp.addEventListener('blur', updateMegaVirusBalloonFallbackPreview);
- }
- var fbClr = el('btn-mega-virus-balloon-fallback-clear');
- if (fbClr) {
- fbClr.addEventListener('click', function () {
- var i = el('mega-virus-balloon-fallback-url');
- if (i) i.value = '';
- updateMegaVirusBalloonFallbackPreview();
- });
- }
- }
-
- function applyMegaVirusPanelFromTimingData(data) {
- if (!data || typeof data !== 'object') return;
- var inpT = el('mega-virus-mission-sec');
- if (inpT && Object.prototype.hasOwnProperty.call(data, 'balloonBossMissionTimeSec')) {
- var bb = Number(data.balloonBossMissionTimeSec);
- inpT.value = String(Number.isFinite(bb) && bb > 0 ? Math.floor(bb) : 0);
- }
- var inpBp = el('mega-virus-balloons-per-player');
- if (inpBp && Object.prototype.hasOwnProperty.call(data, 'balloonBossBalloonsPerPlayer')) {
- var bp = Number(data.balloonBossBalloonsPerPlayer);
- inpBp.value = String(Number.isFinite(bp) && bp > 0 ? Math.min(12, Math.floor(bp)) : 0);
- }
- var inpDh = el('mega-virus-damage-per-hit');
- if (inpDh && Object.prototype.hasOwnProperty.call(data, 'balloonBossDamagePerHit')) {
- var dh = Number(data.balloonBossDamagePerHit);
- inpDh.value = String(Number.isFinite(dh) && dh > 0 ? Math.max(1, Math.min(100, Math.floor(dh))) : 10);
- }
- var bossInp = el('mega-virus-boss-url');
- if (bossInp && Object.prototype.hasOwnProperty.call(data, 'balloonBossBossImageUrl')) {
- bossInp.value = data.balloonBossBossImageUrl != null ? String(data.balloonBossBossImageUrl) : '';
- updateMegaVirusBossPreview();
- }
- if (Array.isArray(data.balloonBossPlayerBalloonImageUrls)) {
- var urls = data.balloonBossPlayerBalloonImageUrls;
- for (var k = 1; k <= 6; k++) {
- var inpU = el('mega-virus-balloon-url-' + k);
- if (inpU) inpU.value = urls[k - 1] != null ? String(urls[k - 1]) : '';
- updateMegaVirusBalloonPreview(k);
- }
- }
- var fb = el('mega-virus-balloon-fallback-url');
- if (fb && Object.prototype.hasOwnProperty.call(data, 'balloonBossPlayerBalloonFallbackUrl')) {
- fb.value = data.balloonBossPlayerBalloonFallbackUrl != null ? String(data.balloonBossPlayerBalloonFallbackUrl) : '';
- updateMegaVirusBalloonFallbackPreview();
- }
- }
-
- function loadMegaVirusPanel() {
- gameTimingFetch('GET')
- .then(function (data) {
- applyMegaVirusPanelFromTimingData(data);
- setMsg('mega-virus-timing-msg', '', '');
- })
- .catch(function (e) {
- setMsg('mega-virus-timing-msg', e.message || 'โหลดไม่ได้', 'error');
- });
- }
-
- function saveMegaVirusTimingPanel() {
- if (megaVirusSaveInFlight) return;
- megaVirusSaveInFlight = true;
- var btn = el('btn-mega-virus-save');
- if (btn) btn.disabled = true;
- var limSs = el('mega-virus-mission-sec') ? parseInt(String(el('mega-virus-mission-sec').value), 10) : 0;
- if (Number.isNaN(limSs) || limSs < 0) limSs = 0;
- limSs = limSs <= 0 ? 0 : Math.max(10, Math.min(7200, limSs));
- var bossUrl = normalizeMegaVirusAssetUrl(el('mega-virus-boss-url') && el('mega-virus-boss-url').value ? String(el('mega-virus-boss-url').value).trim() : '');
- var balloonUrls = readMegaVirusBalloonUrlsFromForm();
- var fbUrl = normalizeMegaVirusAssetUrl(el('mega-virus-balloon-fallback-url') && el('mega-virus-balloon-fallback-url').value
- ? String(el('mega-virus-balloon-fallback-url').value).trim()
- : '');
- var balloonsPer = el('mega-virus-balloons-per-player') ? parseInt(String(el('mega-virus-balloons-per-player').value), 10) : 0;
- if (Number.isNaN(balloonsPer) || balloonsPer < 0) balloonsPer = 0;
- balloonsPer = Math.max(0, Math.min(12, balloonsPer));
- var dmgPerHit = el('mega-virus-damage-per-hit') ? parseInt(String(el('mega-virus-damage-per-hit').value), 10) : 10;
- if (Number.isNaN(dmgPerHit) || dmgPerHit < 1) dmgPerHit = 10;
- dmgPerHit = Math.max(1, Math.min(100, dmgPerHit));
- gameTimingFetch('GET')
- .then(function (data) {
- data.balloonBossMissionTimeSec = limSs;
- data.balloonBossBossImageUrl = bossUrl;
- data.balloonBossPlayerBalloonImageUrls = balloonUrls;
- data.balloonBossPlayerBalloonFallbackUrl = fbUrl;
- data.balloonBossBalloonsPerPlayer = balloonsPer;
- data.balloonBossDamagePerHit = dmgPerHit;
- return gameTimingFetch('PUT', data);
- })
- .then(function (res) {
- if (res && typeof res === 'object') applyMegaVirusPanelFromTimingData(res);
- setMsg('mega-virus-timing-msg', 'บันทึกแล้ว — รีเฟรชหน้าเล่น (หรือเปิดใหม่) เพื่อโหลดรูป · Saved; hard-refresh play.', 'ok');
- })
- .catch(function (e) {
- setMsg('mega-virus-timing-msg', e.message || 'บันทึกไม่ได้', 'error');
- })
- .then(function () {
- megaVirusSaveInFlight = false;
- if (btn) btn.disabled = false;
- });
- }
-
- function applyForcedMinigameKeysToForm(keys) {
- var arr = Array.isArray(keys) ? keys : [];
- for (var i = 1; i <= 3; i++) {
- var sel = el('forced-mg-' + i);
- if (sel) sel.value = arr[i - 1] || '';
- }
- }
-
- function readForcedMinigameKeysFromForm() {
- var out = [];
- for (var i = 1; i <= 3; i++) {
- var sel = el('forced-mg-' + i);
- out.push(sel ? String(sel.value || '') : '');
- }
- return out;
- }
-
- function loadForcedMinigamePanel() {
- gameTimingFetch('GET')
- .then(function (data) {
- applyForcedMinigameKeysToForm(data && data.forcedMinigameKeys);
- setMsg('forced-minigame-msg', '', '');
- })
- .catch(function (e) {
- setMsg('forced-minigame-msg', e.message || 'โหลดไม่ได้', 'error');
- });
- }
-
- function saveForcedMinigamePanel() {
- var keys = readForcedMinigameKeysFromForm();
- var anyForced = keys.some(function (k) { return !!k; });
- var btn = el('btn-forced-minigame-save');
- if (btn) btn.disabled = true;
- gameTimingFetch('GET')
- .then(function (data) {
- data.forcedMinigameKeys = keys;
- return gameTimingFetch('PUT', data);
- })
- .then(function (res) {
- if (res && typeof res === 'object') applyForcedMinigameKeysToForm(res.forcedMinigameKeys);
- setMsg('forced-minigame-msg', anyForced ? 'บันทึกแล้ว — เริ่มคดีใหม่เพื่อเทสต์การ์ดที่ตั้งไว้' : 'กลับเป็นปกติ (สุ่มทั้ง 3 ใบ) แล้ว', 'ok');
- })
- .catch(function (e) {
- setMsg('forced-minigame-msg', e.message || 'บันทึกไม่ได้', 'error');
- })
- .then(function () {
- if (btn) btn.disabled = false;
- });
- }
-
- var SPECIAL_CARD_GAMES = [
- { id: 'mng8a80o', label: 'Minigame-1 จริงหรือไม่' },
- { id: 'mno9kb07', label: 'Minigame-2 วิ่งหลบสิ่งกีดขวาง' },
- { id: 'mnn93hpi', label: 'Minigame-3 Tower block' },
- { id: 'mnorwqx1', label: 'Minigame-4 คำศัพท์ในกระบวนการยุติธรรม' },
- { id: 'mnptfts2', label: 'Minigame-5 กระโดดขึ้นแท่น' },
- { id: 'mnpz6rkp', label: 'Minigame-6 ยิงอุกาบาต Violent Crime' },
- { id: 'mnq1eml7', label: 'Minigame-7 ยิง Mega Virus' }
- ];
- var SPECIAL_CARD_OPTS = [
- { v: '', t: '— ไม่บังคับ —' },
- { v: '1', t: '1 · เพิ่มเวลามินิเกม +10s' },
- { v: '2', t: '2 · เพิ่มเวลาโหวต +10s' },
- { v: '3', t: '3 · แบนผู้เล่น 1 คน' },
- { v: '4', t: '4 · ปิดปากผู้เล่น 1 คน' },
- { v: '5', t: '5 · จับผิดตัว โหวตใหม่' },
- { v: '6', t: '6 · ทุกคน +10 COINS' },
- { v: '7', t: '7 · ทุกคนหลักฐานฟรี +1' }
- ];
- var specialCardRowsBuilt = false;
- function buildSpecialCardByMapRows() {
- if (specialCardRowsBuilt) return;
- var wrap = el('special-card-by-map-rows');
- if (!wrap) return;
- wrap.innerHTML = '';
- SPECIAL_CARD_GAMES.forEach(function (g) {
- var row = document.createElement('div');
- row.style.cssText = 'display:flex;align-items:center;gap:10px;flex-wrap:wrap;';
- var name = document.createElement('span');
- name.style.cssText = 'min-width:240px;color:#cfd6ea;font-size:14px;';
- name.textContent = g.label;
- var sel = document.createElement('select');
- sel.id = 'tsc-' + g.id;
- sel.style.cssText = 'padding:6px 8px;min-width:300px;font-size:14px;';
- SPECIAL_CARD_OPTS.forEach(function (o) {
- var op = document.createElement('option');
- op.value = o.v;
- op.textContent = o.t;
- sel.appendChild(op);
- });
- row.appendChild(name);
- row.appendChild(sel);
- wrap.appendChild(row);
- });
- specialCardRowsBuilt = true;
- }
- function loadSpecialCardByMapPanel() {
- buildSpecialCardByMapRows();
- gameTimingFetch('GET')
- .then(function (data) {
- var m = (data && data.testSpecialCardByMap) || {};
- SPECIAL_CARD_GAMES.forEach(function (g) {
- var sel = el('tsc-' + g.id);
- if (sel) sel.value = (m[g.id] != null && m[g.id] !== '') ? String(m[g.id]) : '';
- });
- setMsg('special-card-by-map-msg', '', '');
- })
- .catch(function (e) { setMsg('special-card-by-map-msg', e.message || 'โหลดไม่ได้', 'error'); });
- }
- function saveSpecialCardByMapPanel() {
- var map = {};
- SPECIAL_CARD_GAMES.forEach(function (g) {
- var sel = el('tsc-' + g.id);
- var v = sel ? parseInt(String(sel.value || ''), 10) : 0;
- if (v >= 1 && v <= 7) map[g.id] = v;
- });
- var btn = el('btn-special-card-by-map-save');
- if (btn) btn.disabled = true;
- gameTimingFetch('GET')
- .then(function (data) {
- data.testSpecialCardByMap = map;
- return gameTimingFetch('PUT', data);
- })
- .then(function (res) {
- if (res && res.testSpecialCardByMap) {
- var m = res.testSpecialCardByMap;
- SPECIAL_CARD_GAMES.forEach(function (g) {
- var sel = el('tsc-' + g.id);
- if (sel) sel.value = (m[g.id] != null) ? String(m[g.id]) : '';
- });
- }
- var any = Object.keys(map).length > 0;
- setMsg('special-card-by-map-msg', any ? 'บันทึกแล้ว — เกมที่ตั้งจะขึ้นคำถามพิเศษ + การ์ดนั้นแน่นอน' : 'ล้างการบังคับแล้ว (กลับเป็นสุ่มปกติ)', 'ok');
- })
- .catch(function (e) { setMsg('special-card-by-map-msg', e.message || 'บันทึกไม่ได้', 'error'); })
- .then(function () { if (btn) btn.disabled = false; });
- }
-
- function loadTroublesomeForcePanel() {
- var chk = el('troublesome-force-offer');
- if (!chk) return;
- gameTimingFetch('GET')
- .then(function (data) {
- chk.checked = !!(data && data.troublesomeForceOffer);
- setMsg('troublesome-force-msg', '', '');
- })
- .catch(function (e) { setMsg('troublesome-force-msg', e.message || 'โหลดไม่ได้', 'error'); });
- }
- function saveTroublesomeForcePanel() {
- var chk = el('troublesome-force-offer');
- if (!chk) return;
- var on = !!chk.checked;
- var btn = el('btn-troublesome-force-save');
- if (btn) btn.disabled = true;
- gameTimingFetch('GET')
- .then(function (data) {
- data.troublesomeForceOffer = on;
- return gameTimingFetch('PUT', data);
- })
- .then(function (res) {
- if (res && typeof res === 'object') chk.checked = !!res.troublesomeForceOffer;
- setMsg('troublesome-force-msg', on ? 'บันทึกแล้ว — บทตัวป่วนจะขึ้นเสมอ (เริ่มคดีใหม่เพื่อเทสต์)' : 'ปิดแล้ว — กลับเป็นปกติ (ขึ้นเฉพาะคนจริง ≥ 4)', 'ok');
- })
- .catch(function (e) { setMsg('troublesome-force-msg', e.message || 'บันทึกไม่ได้', 'error'); })
- .then(function () { if (btn) btn.disabled = false; });
- }
-
- function loadSpecialQuizIconExpirePanel() {
- var inp = el('special-quiz-icon-expire-sec');
- if (!inp) return;
- gameTimingFetch('GET')
- .then(function (data) {
- var v = (data && data.specialQuizIconExpireSec != null) ? Math.floor(Number(data.specialQuizIconExpireSec)) : 10;
- if (!Number.isFinite(v) || v < 0) v = 10;
- inp.value = String(Math.min(120, v));
- setMsg('special-quiz-icon-expire-msg', '', '');
- })
- .catch(function (e) { setMsg('special-quiz-icon-expire-msg', e.message || 'โหลดไม่ได้', 'error'); });
- }
- function saveSpecialQuizIconExpirePanel() {
- var inp = el('special-quiz-icon-expire-sec');
- if (!inp) return;
- var v = Math.floor(Number(inp.value));
- if (!Number.isFinite(v) || v < 0) v = 10;
- v = Math.min(120, v);
- inp.value = String(v);
- var btn = el('btn-special-quiz-icon-expire-save');
- if (btn) btn.disabled = true;
- gameTimingFetch('GET')
- .then(function (data) {
- data.specialQuizIconExpireSec = v;
- return gameTimingFetch('PUT', data);
- })
- .then(function (res) {
- if (res && res.specialQuizIconExpireSec != null) inp.value = String(res.specialQuizIconExpireSec);
- setMsg('special-quiz-icon-expire-msg', v > 0 ? ('บันทึกแล้ว — ไอคอนจะหายใน ' + v + ' วินาที (เริ่มเกมใหม่เพื่อเทสต์)') : 'บันทึกแล้ว — ไอคอนจะไม่หาย (อยู่จนจบเกม)', 'ok');
- })
- .catch(function (e) { setMsg('special-quiz-icon-expire-msg', e.message || 'บันทึกไม่ได้', 'error'); })
- .then(function () { if (btn) btn.disabled = false; });
- }
-
- function saveJumpSurviveTimingPanel() {
- var inp = el('jump-survive-height-mult');
- var jumpSurvMult = inp ? parseFloat(String(inp.value)) : 1.5;
- if (Number.isNaN(jumpSurvMult)) jumpSurvMult = 1.5;
- jumpSurvMult = Math.round(Math.max(0.5, Math.min(4, jumpSurvMult)) * 100) / 100;
- var limJump = el('jump-survive-mission-sec') ? parseInt(String(el('jump-survive-mission-sec').value), 10) : 0;
- if (Number.isNaN(limJump) || limJump < 0) limJump = 0;
- limJump = limJump <= 0 ? 0 : Math.max(10, Math.min(7200, limJump));
- var platTiles = readJumpSurvivePlatformTilesFromForm();
- gameTimingFetch('GET')
- .then(function (data) {
- data.jumpSurviveJumpHeightMult = jumpSurvMult;
- data.jumpSurviveMissionTimeSec = limJump;
- delete data.jumpSurvivePlatformTileUrl;
- data.jumpSurvivePlatformTiles = platTiles;
- return gameTimingFetch('PUT', data);
- })
- .then(function () {
- setMsg('jump-survive-timing-msg', 'บันทึกแล้ว — ผู้เล่นกระโดดให้รอดได้ค่าใหม่เมื่อรีเฟรชหน้าเล่นหรือ sync จากเซิร์ฟเวอร์', 'ok');
- })
- .catch(function (e) {
- setMsg('jump-survive-timing-msg', e.message || 'บันทึกไม่ได้', 'error');
- });
- }
-
- function saveGameTimingPanel() {
- var tickMs = parseInt(el('game-timing-tick-ms').value, 10);
- var jumpT = parseInt(el('game-timing-jump-ticks').value, 10);
- var limS = parseInt(el('game-timing-limit-sec').value, 10);
- if (Number.isNaN(tickMs)) tickMs = 220;
- if (Number.isNaN(jumpT)) jumpT = 16;
- if (Number.isNaN(limS) || limS < 0) limS = 0;
- tickMs = Math.max(80, Math.min(800, tickMs));
- jumpT = Math.max(1, Math.min(40, jumpT));
- limS = limS <= 0 ? 0 : Math.max(10, Math.min(7200, limS));
- var lwPx = el('game-timing-laser-line-width') ? parseInt(el('game-timing-laser-line-width').value, 10) : 2;
- if (Number.isNaN(lwPx)) lwPx = 2;
- lwPx = Math.max(0, Math.min(24, lwPx));
- /** แท็บเวลาเกม = เฉพาะ Gauntlet — อย่าส่ง stackSwingHz/stackBlockWidthTiles จากฟอร์ม (หลังรีเฟรชช่อง Stack ค้าง 0.55 จาก HTML จะทับค่าที่บันทึกไว้) */
- gameTimingFetch('GET')
- .then(function (data) {
- data.gauntletTickMs = tickMs;
- data.gauntletJumpTicks = jumpT;
- data.gauntletJumpHeightMult = (function () { var v = parseFloat(el('game-timing-jump-height') && el('game-timing-jump-height').value); if (Number.isNaN(v)) v = 0.52; return Math.max(0.2, Math.min(1.5, v)); })();
- data.gauntletTimeLimitSec = limS;
- /* troublesomeOfferSec/RollMaxSec ย้ายไปแท็บ "บทตัวป่วน" — ไม่แตะที่นี่ (ค่าจาก GET ส่งต่อคงเดิม) */
- data.gauntletLaneImageUrls = parseLaneUrlsTextarea();
- data.gauntletLaserTopUrl = el('game-timing-laser-top-url') ? String(el('game-timing-laser-top-url').value).trim() : '';
- data.gauntletLaserBottomUrl = el('game-timing-laser-bottom-url') ? String(el('game-timing-laser-bottom-url').value).trim() : '';
- data.gauntletLaserLineUrl = el('game-timing-laser-line-url') ? String(el('game-timing-laser-line-url').value).trim() : '';
- data.gauntletLaserFillColor = el('game-timing-laser-fill') ? String(el('game-timing-laser-fill').value).trim() : '';
- data.gauntletLaserStrokeColor = el('game-timing-laser-stroke') ? String(el('game-timing-laser-stroke').value).trim() : '';
- data.gauntletLaserLineWidthPx = lwPx;
- return gameTimingFetch('PUT', data);
- })
- .then(function () {
- setMsg('game-timing-msg', 'บันทึกแล้ว — พรมแดง tick·กระโดด / รูปอุปสรรค์ · Minigame-5 / Minigame-6 ตั้งแท็บของแต่ละเกม · ค่า Tower block (Stack) แก้ที่แท็บ Minigame-3 เท่านั้น · จำกัดเวลาพรมแดงใช้กับรอบถัดไปที่โฮสต์เริ่มเกม', 'ok');
- })
- .catch(function (e) {
- setMsg('game-timing-msg', e.message || 'บันทึกไม่ได้', 'error');
- });
- }
-
- function showPanel(name) {
- ['panel-setup', 'panel-login', 'panel-app'].forEach(function (id) {
- var p = el(id);
- if (p) p.hidden = id !== name;
- });
- var inApp = name === 'panel-app';
- el('top-actions').hidden = !inApp;
- var stats = el('admin-sys-stats');
- if (stats) stats.hidden = !inApp;
- var burger = el('btn-sidebar-toggle');
- if (burger) burger.hidden = !inApp;
- if (inApp) startSystemStats();
- else stopSystemStats();
- }
-
- /* ===== ระบบ: ดึง CPU/RAM ของเซิร์ฟเวอร์มาแสดง (อัปเดตทุก 5 วิ) ===== */
- var __sysStatsTimer = null;
- function fmtBytes(n) {
- if (!(n > 0)) return '0';
- var u = ['B', 'KB', 'MB', 'GB', 'TB'];
- var i = Math.floor(Math.log(n) / Math.log(1024));
- i = Math.max(0, Math.min(u.length - 1, i));
- return (n / Math.pow(1024, i)).toFixed(i >= 2 ? 1 : 0) + ' ' + u[i];
- }
- function fmtUptime(sec) {
- sec = Math.max(0, Math.floor(sec || 0));
- var d = Math.floor(sec / 86400); sec -= d * 86400;
- var h = Math.floor(sec / 3600); sec -= h * 3600;
- var m = Math.floor(sec / 60);
- if (d > 0) return d + 'd ' + h + 'h';
- if (h > 0) return h + 'h ' + m + 'm';
- return m + 'm';
- }
- function setBarTone(bar, pct) {
- if (!bar) return;
- bar.classList.remove('is-warn', 'is-crit');
- if (pct >= 85) bar.classList.add('is-crit');
- else if (pct >= 65) bar.classList.add('is-warn');
- }
- function renderSystemStats(s) {
- if (!s || !s.ok) return;
- var cpuPct = (s.cpu && typeof s.cpu.percent === 'number') ? s.cpu.percent
- : (s.cpu ? s.cpu.loadPercent : 0);
- var cpuVal = el('sysstat-cpu-val'), cpuBar = el('sysstat-cpu-bar');
- if (cpuVal) cpuVal.textContent = cpuPct + '%';
- if (cpuBar) { cpuBar.style.width = cpuPct + '%'; setBarTone(cpuBar, cpuPct); }
- var memPct = s.mem ? s.mem.usedPercent : 0;
- var ramVal = el('sysstat-ram-val'), ramBar = el('sysstat-ram-bar');
- if (ramVal && s.mem) ramVal.textContent = memPct + '% ' + fmtBytes(s.mem.used) + '/' + fmtBytes(s.mem.total);
- if (ramBar) { ramBar.style.width = memPct + '%'; setBarTone(ramBar, memPct); }
- // HDD / ดิสก์
- var diskWrap = el('sysstat-disk-val') ? el('sysstat-disk-val').closest('.sysstat') : null;
- if (s.disk) {
- var dPct = s.disk.usedPercent;
- var dVal = el('sysstat-disk-val'), dBar = el('sysstat-disk-bar');
- if (dVal) dVal.textContent = dPct + '% ' + fmtBytes(s.disk.used) + '/' + fmtBytes(s.disk.total);
- if (dBar) { dBar.style.width = dPct + '%'; setBarTone(dBar, dPct); }
- if (diskWrap) diskWrap.hidden = false;
- } else if (diskWrap) {
- diskWrap.hidden = true; // อ่านดิสก์ไม่ได้ (เช่น Node เก่า) → ซ่อน
- }
- // Node ที่ใช้อยู่ (RAM ของ process เกม)
- if (s.node) {
- var nPct = typeof s.node.rssPercent === 'number' ? s.node.rssPercent : 0;
- var nVal = el('sysstat-node-val'), nBar = el('sysstat-node-bar');
- if (nVal) nVal.textContent = fmtBytes(s.node.rss) + (s.node.version ? ' ' + s.node.version : '');
- if (nBar) { nBar.style.width = Math.min(100, nPct) + '%'; setBarTone(nBar, nPct); }
- }
- var upVal = el('sysstat-up-val');
- if (upVal && s.uptime) upVal.textContent = fmtUptime(s.uptime.os);
- var box = el('admin-sys-stats');
- if (box && s.cpu) box.title = 'CPU ' + cpuPct + '% (load ' + s.cpu.load1 + ', ' + s.cpu.cores + ' cores) · RAM '
- + memPct + '%'
- + (s.disk ? ' · HDD ' + s.disk.usedPercent + '% (' + fmtBytes(s.disk.free) + ' ว่าง)' : '')
- + (s.node ? ' · Node ' + fmtBytes(s.node.rss) + ' ' + (s.node.version || '') : '')
- + ' · uptime ' + fmtUptime(s.uptime && s.uptime.os) + ' · ' + (s.hostname || '');
- }
- function pollSystemStats() {
- fetch('/Game/api/system-stats', { cache: 'no-store' })
- .then(function (r) { return r.ok ? r.json() : null; })
- .then(function (s) { if (s) renderSystemStats(s); })
- .catch(function () { /* เงียบไว้ ไม่รบกวน admin */ });
- }
- function startSystemStats() {
- if (__sysStatsTimer) return;
- pollSystemStats();
- setTimeout(pollSystemStats, 1200); // ครั้งที่สองให้ได้ค่า CPU% (ครั้งแรก server คืน null)
- __sysStatsTimer = setInterval(pollSystemStats, 5000);
- }
- function stopSystemStats() {
- if (__sysStatsTimer) { clearInterval(__sysStatsTimer); __sysStatsTimer = null; }
- }
-
- // ===== Evidence Cards admin (รูปอย่างเดียว · 15 คดี · rarity จากเลขไฟล์) =====
- var EVIDENCE_CARDS_API = '/Game/api/evidence-cards';
- var EVIDENCE_IMAGES_API = '/Game/api/evidence-card-images';
- var EVIDENCE_CASE_COUNT = 15;
- var EVIDENCE_DIRS = ['suspect-1', 'suspect-2', 'suspect-3'];
- var evidenceData = null;
- var evidencePools = null; // { 'suspect-1': {common,rare,legendary}, ... }
- var evidenceCurrentCase = '1';
-
- function evidencePopulateCaseSelect() {
- var sel = el('evidence-case');
- if (!sel || sel.options.length) return;
- for (var i = 1; i <= EVIDENCE_CASE_COUNT; i++) {
- var o = document.createElement('option');
- o.value = String(i); o.textContent = 'คดี ' + i;
- sel.appendChild(o);
- }
- }
-
- function loadEvidenceCardsPanel() {
- evidencePopulateCaseSelect();
- if (evidencePools == null) {
- fetch(EVIDENCE_IMAGES_API + '?_=' + Date.now(), { credentials: 'include', cache: 'no-store' })
- .then(function (r) { return r.json(); })
- .then(function (j) { evidencePools = (j && j.pools) || {}; renderEvidenceCase(evidenceCurrentCase); })
- .catch(function () { evidencePools = {}; });
- }
- fetch(EVIDENCE_CARDS_API + '?_=' + Date.now(), { credentials: 'include', cache: 'no-store' })
- .then(function (r) { return r.json(); })
- .then(function (j) {
- evidenceData = (j && j.cases) ? j : { cases: {} };
- var sel = el('evidence-case');
- if (sel) evidenceCurrentCase = sel.value || '1';
- renderEvidenceCase(evidenceCurrentCase);
- })
- .catch(function (e) {
- setMsg('evidence-cards-msg', (e.message || 'โหลดไม่ได้') + ' — เช็คว่า Node รัน Game/server.js และ /Game/api/evidence-cards ไม่ 404', 'error');
- });
- }
-
- function evidenceGetCase(cid) {
- if (!evidenceData) evidenceData = { cases: {} };
- if (!evidenceData.cases) evidenceData.cases = {};
- if (!evidenceData.cases[cid]) evidenceData.cases[cid] = { suspects: [] };
- var cse = evidenceData.cases[cid];
- if (!Array.isArray(cse.suspects)) cse.suspects = [];
- for (var si = 0; si < 3; si++) {
- if (!cse.suspects[si]) cse.suspects[si] = {};
- var s = cse.suspects[si];
- if (!s.linkName) s.linkName = 'ผู้ต้องสงสัย ' + (si + 1);
- if (EVIDENCE_DIRS.indexOf(s.imageDir) < 0) s.imageDir = EVIDENCE_DIRS[si] || EVIDENCE_DIRS[0];
- }
- return cse;
- }
-
- function evidencePoolBadge(dir) {
- var p = (evidencePools && evidencePools[dir]) || null;
- var box = document.createElement('div');
- box.className = 'ev-pool-counts';
- if (!p) { box.textContent = 'กำลังโหลดจำนวนรูป…'; return box; }
- box.innerHTML =
- 'ธรรมดา ' + (p.common || 0) + ' ' +
- 'Rare ' + (p.rare || 0) + ' ' +
- 'ชี้คนร้าย ' + (p.legendary || 0) + ' ';
- return box;
- }
-
- function renderEvidenceCase(cid) {
- evidenceCurrentCase = cid;
- var tag = el('evidence-set-tag');
- if (tag) tag.textContent = 'กำลังแก้: คดี ' + cid;
- var root = el('evidence-suspects-root');
- if (!root) return;
- var cse = evidenceGetCase(cid);
- root.innerHTML = '';
- cse.suspects.forEach(function (s, si) {
- var block = document.createElement('div');
- block.className = 'ev-suspect-block';
-
- var head = document.createElement('div');
- head.className = 'ev-suspect-head';
- head.innerHTML = 'ผู้ต้องสงสัย ' + (si + 1) + ' ';
- block.appendChild(head);
-
- var nameLabel = document.createElement('label');
- nameLabel.className = 'admin-field';
- nameLabel.textContent = 'ชื่อผู้ต้องสงสัย (Suspect Link)';
- var nameInp = document.createElement('input');
- nameInp.type = 'text';
- nameInp.maxLength = 60;
- nameInp.value = s.linkName || '';
- nameInp.addEventListener('input', function () { s.linkName = nameInp.value; });
- nameLabel.appendChild(nameInp);
- block.appendChild(nameLabel);
-
- var poolBox = evidencePoolBadge(s.imageDir);
-
- var dirLabel = document.createElement('label');
- dirLabel.className = 'admin-field';
- dirLabel.textContent = 'โฟลเดอร์รูปการ์ด (พูลที่ใช้สุ่ม)';
- var dirSel = document.createElement('select');
- dirSel.className = 'admin-inp-num';
- EVIDENCE_DIRS.forEach(function (d) {
- var o = document.createElement('option');
- o.value = d; o.textContent = d.replace('suspect-', 'ผู้ต้องสงสัย-');
- if (d === s.imageDir) o.selected = true;
- dirSel.appendChild(o);
- });
- dirSel.addEventListener('change', function () {
- s.imageDir = dirSel.value;
- var fresh = evidencePoolBadge(s.imageDir);
- poolBox.replaceWith(fresh);
- poolBox = fresh;
- });
- dirLabel.appendChild(dirSel);
- block.appendChild(dirLabel);
- block.appendChild(poolBox);
-
- root.appendChild(block);
- });
- }
-
- function saveEvidenceCardsPanel() {
- if (!evidenceData) return;
- var btn = el('btn-evidence-save');
- if (btn) btn.disabled = true;
- setMsg('evidence-cards-msg', 'กำลังบันทึก…', '');
- fetch(EVIDENCE_CARDS_API, {
- method: 'PUT',
- credentials: 'include',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify(evidenceData),
- }).then(function (r) {
- return r.text().then(function (t) {
- var j = {};
- try { j = t ? JSON.parse(t) : {}; } catch (e) { /* ignore */ }
- if (!r.ok || !j.ok) throw new Error((j && j.error) || ('HTTP ' + r.status));
- return j;
- });
- }).then(function (j) {
- if (j && j.cases) evidenceData = { cases: j.cases };
- renderEvidenceCase(evidenceCurrentCase);
- setMsg('evidence-cards-msg', 'บันทึกแล้ว — มีผลในเกมเมื่อรีเฟรช LobbyB', 'ok');
- }).catch(function (e) {
- setMsg('evidence-cards-msg', e.message || 'บันทึกไม่ได้', 'error');
- }).then(function () {
- if (btn) btn.disabled = false;
- });
- }
-
- (function bindEvidenceCardsPanel() {
- evidencePopulateCaseSelect();
- var caseSel = el('evidence-case');
- if (caseSel) caseSel.addEventListener('change', function () { renderEvidenceCase(caseSel.value || '1'); });
- var saveBtn = el('btn-evidence-save');
- if (saveBtn) saveBtn.addEventListener('click', saveEvidenceCardsPanel);
- })();
-
- /* ===== รูปคดี & Cutscene (LobbyA → LobbyB) ===== */
- var CASE_MEDIA_API = '/Game/api/case-media';
- var CASE_MEDIA_IMAGES_API = '/Game/api/case-media-images';
- var CASE_MEDIA_COUNT = 15;
- var caseMediaData = null;
- var caseMediaImages = null; // { case:[...], cutscene:[...] }
- var caseMediaCurrent = '1';
-
- function caseMediaPopulateSelect() {
- var sel = el('case-media-case');
- if (!sel || sel.options.length) return;
- for (var i = 1; i <= CASE_MEDIA_COUNT; i++) {
- var o = document.createElement('option');
- o.value = String(i); o.textContent = 'คดี ' + i;
- sel.appendChild(o);
- }
- }
-
- function loadCaseMediaPanel() {
- caseMediaPopulateSelect();
- if (caseMediaImages == null) {
- fetch(CASE_MEDIA_IMAGES_API + '?_=' + Date.now(), { credentials: 'include', cache: 'no-store' })
- .then(function (r) { return r.json(); })
- .then(function (j) {
- caseMediaImages = (j && j.images) || { case: [], cutscene: [], 'suspect-pick': [], 'culprit-prison': [] };
- renderCaseMedia(caseMediaCurrent);
- })
- .catch(function () { caseMediaImages = { case: [], cutscene: [], 'suspect-pick': [], 'culprit-prison': [] }; });
- }
- fetch(CASE_MEDIA_API + '?_=' + Date.now(), { credentials: 'include', cache: 'no-store' })
- .then(function (r) { return r.json(); })
- .then(function (j) {
- caseMediaData = (j && j.cases) ? j : { cases: {} };
- var sel = el('case-media-case');
- if (sel) caseMediaCurrent = sel.value || '1';
- renderCaseMedia(caseMediaCurrent);
- })
- .catch(function (e) {
- setMsg('case-media-msg', (e.message || 'โหลดไม่ได้') + ' — เช็คว่า Node รัน Game/server.js และ /Game/api/case-media ไม่ 404', 'error');
- });
- }
-
- function caseMediaGetCase(cid) {
- if (!caseMediaData) caseMediaData = { cases: {} };
- if (!caseMediaData.cases) caseMediaData.cases = {};
- var n = parseInt(cid, 10) || 1;
- if (!caseMediaData.cases[cid]) caseMediaData.cases[cid] = {};
- var c = caseMediaData.cases[cid];
- if (typeof c.name !== 'string') c.name = 'คดีที่ ' + n;
- if (typeof c.art !== 'string') c.art = '/Main-Lobby/IMAGE/case/case-' + n + '.png';
- if (typeof c.detail !== 'string') c.detail = '/Main-Lobby/IMAGE/case/case-detail-' + n + '.png';
- if (!Array.isArray(c.story)) c.story = [];
- if (typeof c.story[0] !== 'string') c.story[0] = '/Main-Lobby/IMAGE/cutscene/case-' + n + '-story-1.png';
- if (typeof c.story[1] !== 'string') c.story[1] = '/Main-Lobby/IMAGE/cutscene/case-' + n + '-story-2.png';
- if (!Array.isArray(c.suspects) || c.suspects.length < 3) {
- c.suspects = [1, 2, 3].map(function (s) { return '/Main-Lobby/IMAGE/suspect-pick/case-' + n + '-suspect-' + s + '.png'; });
- }
- if (!Array.isArray(c.culprits) || c.culprits.length < 3) {
- c.culprits = [1, 2, 3].map(function (s) { return '/Main-Lobby/IMAGE/culprit-prison/case-' + n + '-suspect-' + s + '.png'; });
- }
- return c;
- }
-
- /** ตัวเลือกรูป (dropdown + พรีวิว) — kind = 'case' | 'cutscene' */
- function caseMediaImagePicker(label, kind, current, onChange) {
- var wrap = document.createElement('div');
- wrap.className = 'cm-pick';
- var lab = document.createElement('div'); lab.className = 'cm-pick-label'; lab.textContent = label;
- var prev = document.createElement('img'); prev.className = 'cm-pick-prev'; prev.alt = ''; prev.src = current;
- prev.onerror = function () { this.style.opacity = '0.25'; };
- var sel = document.createElement('select'); sel.className = 'admin-inp-num';
- var list = (caseMediaImages && caseMediaImages[kind]) ? caseMediaImages[kind].slice() : [];
- if (current && list.indexOf(current) < 0) list.unshift(current);
- list.forEach(function (u) {
- var o = document.createElement('option');
- o.value = u; o.textContent = u.split('/').pop();
- if (u === current) o.selected = true;
- sel.appendChild(o);
- });
- sel.addEventListener('change', function () { prev.src = sel.value; onChange(sel.value); });
- wrap.appendChild(lab); wrap.appendChild(prev); wrap.appendChild(sel);
- return wrap;
- }
-
- function renderCaseMedia(cid) {
- caseMediaCurrent = cid;
- var tag = el('case-media-set-tag');
- if (tag) tag.textContent = 'กำลังแก้: คดี ' + cid;
- var root = el('case-media-root');
- if (!root) return;
- var c = caseMediaGetCase(cid);
- root.innerHTML = '';
-
- var nameLabel = document.createElement('label');
- nameLabel.className = 'admin-field';
- nameLabel.textContent = 'ชื่อคดี';
- var nameInp = document.createElement('input');
- nameInp.type = 'text'; nameInp.maxLength = 80; nameInp.value = c.name || '';
- nameInp.addEventListener('input', function () { c.name = nameInp.value; });
- nameLabel.appendChild(nameInp);
- root.appendChild(nameLabel);
-
- var grid = document.createElement('div');
- grid.className = 'cm-grid';
- grid.appendChild(caseMediaImagePicker('รูปเลือกคดี (การ์ด)', 'case', c.art, function (v) { c.art = v; }));
- grid.appendChild(caseMediaImagePicker('รูปรายละเอียดคดี (แบบรูปเดียวจบ — ใช้เมื่อไม่ได้ตั้ง "รูปคดี" ด้านล่าง)', 'case', c.detail, function (v) { c.detail = v; }));
- /* [2026-07-21] ตั้ง "รูปคดี" = สลับหน้ารายละเอียดไปโหมดประกอบเอง (กรอบ + รูป + ข้อความด้านล่าง) */
- grid.appendChild(caseMediaImagePicker('รูปคดี (โหมดใหม่ — ตั้งแล้วหน้าจะประกอบเอง)', 'case', c.pic || '', function (v) { c.pic = v; }));
- grid.appendChild(caseMediaImagePicker('Cutscene รูปที่ 1', 'cutscene', c.story[0], function (v) { c.story[0] = v; }));
- grid.appendChild(caseMediaImagePicker('Cutscene รูปที่ 2', 'cutscene', c.story[1], function (v) { c.story[1] = v; }));
- root.appendChild(grid);
-
- var susHead = document.createElement('h3');
- susHead.className = 'cm-section-title';
- susHead.textContent = 'เลือกผู้ต้องสงสัย (3 คน) — LobbyB';
- root.appendChild(susHead);
- var susGrid = document.createElement('div');
- susGrid.className = 'cm-grid';
- [0, 1, 2].forEach(function (si) {
- susGrid.appendChild(caseMediaImagePicker('ผู้ต้องสงสัย ' + (si + 1), 'suspect-pick', c.suspects[si], function (v) { c.suspects[si] = v; }));
- });
- root.appendChild(susGrid);
-
- /* [2026-07-21] ไอคอนผู้ต้องสงสัย (สี่เหลี่ยมเล็ก) — โชว์เฉพาะหัวหน้าไต่สวน (es3) เท่านั้น
- ไม่ตั้ง = ใช้รูปเต็มตัวด้านบน */
- var icoHead = document.createElement('h3');
- icoHead.className = 'cm-section-title';
- icoHead.textContent = 'ไอคอนผู้ต้องสงสัย (3 คน) — หัวหน้าไต่สวน (ไม่ตั้ง = ใช้รูปเต็มตัวด้านบน)';
- root.appendChild(icoHead);
- var icoGrid = document.createElement('div');
- icoGrid.className = 'cm-grid';
- if (!Array.isArray(c.icons)) c.icons = (c.suspects || []).slice();
- [0, 1, 2].forEach(function (si) {
- icoGrid.appendChild(caseMediaImagePicker('ไอคอน ' + (si + 1), 'suspect-pick', c.icons[si], function (v) { c.icons[si] = v; }));
- });
- root.appendChild(icoGrid);
-
- /* [2026-07-21] ข้อความหน้ารายละเอียดคดี (โหมดใหม่) — แสดงเมื่อตั้ง "รูปคดี" ไว้เท่านั้น
- เว้นว่าง = ไม่แสดงบรรทัดนั้นบนหน้าเกม (ค่อยๆ กรอกทีละคดีได้) */
- var txtHead = document.createElement('h3');
- txtHead.className = 'cm-section-title';
- txtHead.textContent = 'ข้อความรายละเอียดคดี (โหมดใหม่ — ใช้เมื่อตั้ง "รูปคดี" แล้ว · เว้นว่าง = ไม่แสดงบรรทัดนั้น)';
- root.appendChild(txtHead);
- if (!Array.isArray(c.txtSuspects)) c.txtSuspects = ['', '', ''];
- var caseTextField = function (label, get, set, opts) {
- opts = opts || {};
- var lb = document.createElement('label');
- lb.className = 'admin-field';
- lb.textContent = label;
- var el = document.createElement(opts.multiline ? 'textarea' : 'input');
- if (!opts.multiline) el.type = 'text';
- else el.rows = 4;
- el.maxLength = opts.max || 300;
- el.value = get() || '';
- el.addEventListener('input', function () { set(el.value); });
- lb.appendChild(el);
- return lb;
- };
- root.appendChild(caseTextField('ข้อหา', function () { return c.txtCharge; }, function (v) { c.txtCharge = v; }));
- root.appendChild(caseTextField('สถานที่เกิดเหตุ', function () { return c.txtPlace; }, function (v) { c.txtPlace = v; }));
- root.appendChild(caseTextField('ผู้เสียหาย', function () { return c.txtVictim; }, function (v) { c.txtVictim = v; }));
- [0, 1, 2].forEach(function (si) {
- root.appendChild(caseTextField('ผู้ต้องสงสัย ' + (si + 1) + ' (ข้อความ)',
- function () { return c.txtSuspects[si]; }, function (v) { c.txtSuspects[si] = v; }, { max: 240 }));
- });
- root.appendChild(caseTextField('บันทึกเหตุการณ์', function () { return c.txtNote; }, function (v) { c.txtNote = v; }, { multiline: true, max: 1500 }));
-
- var culHead = document.createElement('h3');
- culHead.className = 'cm-section-title';
- culHead.textContent = 'ส่งผู้ร้ายเข้าคุก (3 คน) — หน้าผลพิจารณาคดี';
- root.appendChild(culHead);
- var culGrid = document.createElement('div');
- culGrid.className = 'cm-grid';
- [0, 1, 2].forEach(function (si) {
- culGrid.appendChild(caseMediaImagePicker('คนร้ายในคุก ' + (si + 1), 'culprit-prison', c.culprits[si], function (v) { c.culprits[si] = v; }));
- });
- root.appendChild(culGrid);
- }
-
- function saveCaseMediaPanel() {
- if (!caseMediaData) return;
- var btn = el('btn-case-media-save');
- if (btn) btn.disabled = true;
- setMsg('case-media-msg', 'กำลังบันทึก…', '');
- fetch(CASE_MEDIA_API, {
- method: 'PUT',
- credentials: 'include',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify(caseMediaData),
- }).then(function (r) {
- return r.text().then(function (t) {
- var j = {};
- try { j = t ? JSON.parse(t) : {}; } catch (e) { /* ignore */ }
- if (!r.ok || !j.ok) throw new Error((j && j.error) || ('HTTP ' + r.status));
- return j;
- });
- }).then(function (j) {
- if (j && j.cases) caseMediaData = { cases: j.cases };
- renderCaseMedia(caseMediaCurrent);
- setMsg('case-media-msg', 'บันทึกแล้ว — มีผลในเกมเมื่อรีเฟรช LobbyA/LobbyB', 'ok');
- }).catch(function (e) {
- setMsg('case-media-msg', e.message || 'บันทึกไม่ได้', 'error');
- }).then(function () {
- if (btn) btn.disabled = false;
- });
- }
-
- (function bindCaseMediaPanel() {
- caseMediaPopulateSelect();
- var caseSel = el('case-media-case');
- if (caseSel) caseSel.addEventListener('change', function () { renderCaseMedia(caseSel.value || '1'); });
- var saveBtn = el('btn-case-media-save');
- if (saveBtn) saveBtn.addEventListener('click', saveCaseMediaPanel);
- })();
-
- function setTab(name) {
- document.querySelectorAll('.tab').forEach(function (t) {
- var on = t.getAttribute('data-tab') === name;
- t.classList.toggle('is-active', on);
- t.setAttribute('aria-selected', on ? 'true' : 'false');
- });
- document.querySelectorAll('.tab-panel').forEach(function (p) {
- p.hidden = !p.id || p.id !== 'tab-panel-' + name;
- });
- var embedPanels = [
- { tab: 'map-editor', panel: 'tab-panel-map-editor', fsBtn: 'btn-map-editor-fullscreen' },
- { tab: 'characters', panel: 'tab-panel-characters', fsBtn: 'btn-character-fullscreen' },
- { tab: 'qb-map-editor', panel: 'tab-panel-qb-map-editor', fsBtn: 'btn-qb-map-editor-fullscreen' },
- { tab: 'ai-admin', panel: 'tab-panel-ai-admin', fsBtn: 'btn-ai-admin-fullscreen' },
- ];
- embedPanels.forEach(function (ep) {
- if (name === ep.tab) return;
- var pnl = el(ep.panel);
- var fsBtn = el(ep.fsBtn);
- if (pnl && pnl.classList.contains('is-fullscreen')) {
- pnl.classList.remove('is-fullscreen');
- if (fsBtn) {
- fsBtn.textContent = 'เต็มจอ';
- fsBtn.setAttribute('aria-pressed', 'false');
- }
- }
- });
- if (name === 'quiz') loadQuizSettingsPanel();
- if (name === 'special-quiz') { loadSpecialQuizPanel(); loadSpecialQuizIconExpirePanel(); }
- if (name === 'evidence-cards') loadEvidenceCardsPanel();
- if (name === 'case-media') loadCaseMediaPanel();
- if (name === 'quiz-carry') loadQuizCarryPanel();
- if (name === 'quiz-battle') loadQbBattlePanel();
- if (name === 'jump-survive') loadJumpSurviveTimingPanel();
- if (name === 'space-shooter') loadSpaceShooterTimingPanel();
- if (name === 'mega-virus') loadMegaVirusPanel();
- if (name === 'game-timing') loadGameTimingPanel();
- if (name === 'stack-game') loadStackGamePanel();
- if (name === 'highscore') loadHighscore();
- if (name === 'achievements') loadAchievementsPanel();
- if (name === 'vote-timing') loadVoteTimingPanel();
- if (name === 'postcase') loadPostCasePanel();
- if (name === 'troublesome') loadTroublesomePanel();
- if (name === 'test-mode') { loadForcedMinigamePanel(); loadSpecialCardByMapPanel(); loadTroublesomeForcePanel(); }
- if (name === 'sound') loadSoundPanel();
- if (name === 'qb-map-editor') ensureEmbedFrameSrc('admin-qb-map-editor-frame');
- if (name === 'ai-admin') ensureEmbedFrameSrc('admin-ai-admin-frame');
- }
-
- /* ฝัง iframe editor แบบ lazy — ตั้ง src จาก data-src ครั้งแรกที่เปิด tab (ไม่โหลดตอนเปิดหน้า Admin) */
- function ensureEmbedFrameSrc(id) {
- var f = el(id);
- if (f && !f.getAttribute('src') && f.getAttribute('data-src')) f.setAttribute('src', f.getAttribute('data-src'));
- }
-
- function boot() {
- return api('session.php').then(function (s) {
- if (s.needsSetup) {
- showPanel('panel-setup');
- return null;
- }
- if (!s.loggedIn) {
- showPanel('panel-login');
- return null;
- }
- showPanel('panel-app');
- el('admin-user-label').textContent = (s.admin && s.admin.username) || '';
- return s.admin;
- });
- }
-
- el('form-setup').addEventListener('submit', function (e) {
- e.preventDefault();
- var fd = new FormData(e.target);
- var p1 = fd.get('password');
- var p2 = fd.get('password2');
- if (p1 !== p2) {
- setMsg('setup-msg', 'รหัสผ่านไม่ตรงกัน', 'error');
- return;
- }
- api('setup.php', { method: 'POST', body: { password: p1 } })
- .then(function () {
- setMsg('setup-msg', 'สร้างสำเร็จ — กรุณาล็อกอิน', 'ok');
- showPanel('panel-login');
- })
- .catch(function (err) {
- setMsg('setup-msg', err.message || 'ผิดพลาด', 'error');
- });
- });
-
- (function bindLoginPasswordToggle() {
- var inp = el('login-password');
- var btn = el('login-password-toggle');
- if (!inp || !btn) return;
- btn.addEventListener('click', function () {
- var show = inp.type === 'password';
- inp.type = show ? 'text' : 'password';
- btn.setAttribute('aria-pressed', show ? 'true' : 'false');
- btn.setAttribute('aria-label', show ? 'ซ่อนรหัสผ่าน' : 'แสดงรหัสผ่าน');
- btn.textContent = show ? 'ซ่อน' : 'แสดง';
- });
- })();
-
- el('form-login').addEventListener('submit', function (e) {
- e.preventDefault();
- var fd = new FormData(e.target);
- api('login.php', {
- method: 'POST',
- body: {
- username: fd.get('username'),
- password: fd.get('password'),
- },
- })
- .then(function () {
- setMsg('login-msg', '', '');
- return boot();
- })
- .then(function (admin) {
- if (admin) loadAll(admin);
- })
- .catch(function (err) {
- setMsg('login-msg', err.message || 'เข้าไม่ได้', 'error');
- });
- });
-
- el('btn-logout').addEventListener('click', function () {
- api('logout.php', { method: 'POST' })
- .then(function () {
- location.reload();
- })
- .catch(function () {
- location.reload();
- });
- });
-
- document.querySelectorAll('.tab').forEach(function (tab) {
- tab.addEventListener('click', function () {
- var name = tab.getAttribute('data-tab');
- if (name === 'change-password' && tab.classList.contains('is-active')) {
- setTab('oauth');
- return;
- }
- setTab(name);
- });
- });
-
- /* ===== Sidebar: ค้นหาเมนู / ยุบกลุ่ม / เปิด-ปิดบนมือถือ ===== */
- (function setupAdminSidebar() {
- var shell = document.querySelector('.admin-shell');
- var nav = document.querySelector('.admin-tabs');
- if (!nav) return;
- var seps = Array.prototype.slice.call(nav.querySelectorAll('.admin-tab-sep'));
- var tabs = Array.prototype.slice.call(nav.querySelectorAll('.tab'));
-
- function isMobile() { return window.matchMedia('(max-width: 980px)').matches; }
- function closeSidebar() {
- if (shell) shell.classList.remove('sidebar-open');
- var b = el('btn-sidebar-toggle'); if (b) b.setAttribute('aria-expanded', 'false');
- var bd = el('admin-sidebar-backdrop'); if (bd) bd.hidden = true;
- }
- function openSidebar() {
- if (shell) shell.classList.add('sidebar-open');
- var b = el('btn-sidebar-toggle'); if (b) b.setAttribute('aria-expanded', 'true');
- var bd = el('admin-sidebar-backdrop'); if (bd) bd.hidden = false;
- }
- var burger = el('btn-sidebar-toggle');
- if (burger) burger.addEventListener('click', function () {
- if (shell && shell.classList.contains('sidebar-open')) closeSidebar(); else openSidebar();
- });
- var backdrop = el('admin-sidebar-backdrop');
- if (backdrop) backdrop.addEventListener('click', closeSidebar);
- nav.addEventListener('click', function (e) {
- var t = e.target && e.target.closest ? e.target.closest('.tab') : null;
- if (t && isMobile()) closeSidebar();
- });
-
- /* ยุบ/ขยายกลุ่ม: ซ่อนแท็บที่อยู่หลัง separator จนถึง separator ถัดไป */
- function applyGroupVisibility() {
- seps.forEach(function (sep) {
- var collapsed = sep.classList.contains('is-collapsed');
- var n = sep.nextElementSibling;
- while (n && !n.classList.contains('admin-tab-sep')) {
- if (n.classList && n.classList.contains('tab')) n.classList.toggle('is-group-hidden', collapsed);
- n = n.nextElementSibling;
- }
- });
- }
- function toggleGroup(sep) {
- sep.classList.toggle('is-collapsed');
- applyGroupVisibility();
- }
- seps.forEach(function (sep) {
- sep.setAttribute('role', 'button');
- sep.setAttribute('tabindex', '0');
- sep.addEventListener('click', function () { toggleGroup(sep); });
- sep.addEventListener('keydown', function (e) {
- if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); toggleGroup(sep); }
- });
- });
-
- /* ค้นหาเมนู */
- var search = el('admin-nav-search-input');
- var emptyMsg = el('admin-nav-empty');
- if (search) search.addEventListener('input', function () {
- var q = search.value.trim().toLowerCase();
- if (q) {
- var anyVisible = false;
- tabs.forEach(function (t) {
- t.classList.remove('is-group-hidden');
- var hit = (t.textContent || '').toLowerCase().indexOf(q) >= 0;
- t.classList.toggle('is-search-hidden', !hit);
- if (hit) anyVisible = true;
- });
- seps.forEach(function (s) { s.style.display = 'none'; });
- if (emptyMsg) emptyMsg.hidden = anyVisible;
- } else {
- tabs.forEach(function (t) { t.classList.remove('is-search-hidden'); });
- seps.forEach(function (s) { s.style.display = ''; });
- applyGroupVisibility();
- if (emptyMsg) emptyMsg.hidden = true;
- }
- });
- })();
-
- function bindEmbedPanelFullscreen(btnId, panelId) {
- var btn = el(btnId);
- var panel = el(panelId);
- if (!btn || !panel) return;
- function setFs(on) {
- panel.classList.toggle('is-fullscreen', on);
- btn.textContent = on ? 'ออกจากเต็มจอ' : 'เต็มจอ';
- btn.setAttribute('aria-pressed', on ? 'true' : 'false');
- }
- btn.addEventListener('click', function () {
- setFs(!panel.classList.contains('is-fullscreen'));
- });
- document.addEventListener('keydown', function (e) {
- if (e.code !== 'Escape' || !panel.classList.contains('is-fullscreen')) return;
- setFs(false);
- });
- }
- bindEmbedPanelFullscreen('btn-map-editor-fullscreen', 'tab-panel-map-editor');
- bindEmbedPanelFullscreen('btn-character-fullscreen', 'tab-panel-characters');
- bindEmbedPanelFullscreen('btn-qb-map-editor-fullscreen', 'tab-panel-qb-map-editor');
- bindEmbedPanelFullscreen('btn-ai-admin-fullscreen', 'tab-panel-ai-admin');
-
- /* Test Mode toggle — เก็บใน localStorage (share ระหว่าง Admin กับ Game ภายใต้ origin เดียวกัน) */
- var TEST_MODE_KEY = 'justiceTestMode';
- function isTestModeOn() {
- try { return localStorage.getItem(TEST_MODE_KEY) === '1'; } catch (e) { return false; }
- }
- function setTestMode(on) {
- try { localStorage.setItem(TEST_MODE_KEY, on ? '1' : '0'); } catch (e) { /* ignore */ }
- }
- function syncTestModeUi() {
- var chk = el('test-mode-toggle');
- var lbl = el('test-mode-state-label');
- var msg = el('test-mode-msg');
- var on = isTestModeOn();
- if (chk) chk.checked = on;
- if (lbl) {
- lbl.textContent = on ? 'เปิดอยู่ (ON)' : 'ปิดอยู่ (OFF)';
- lbl.style.color = on ? '#4ade80' : '#94a3b8';
- }
- if (msg) {
- msg.textContent = on
- ? '✓ Test Mode เปิด — Shortcuts ใช้งานได้ในแท็บอื่นของเบราว์เซอร์นี้'
- : '○ Test Mode ปิด — Shortcuts ไม่ทำงาน';
- msg.style.color = on ? '#4ade80' : '#94a3b8';
- }
- }
- var testModeChk = el('test-mode-toggle');
- if (testModeChk) {
- testModeChk.addEventListener('change', function () {
- setTestMode(!!testModeChk.checked);
- syncTestModeUi();
- });
- }
- var forcedMgSaveBtn = el('btn-forced-minigame-save');
- if (forcedMgSaveBtn) forcedMgSaveBtn.addEventListener('click', saveForcedMinigamePanel);
- var specialCardSaveBtn = el('btn-special-card-by-map-save');
- if (specialCardSaveBtn) specialCardSaveBtn.addEventListener('click', saveSpecialCardByMapPanel);
- var troublesomeForceSaveBtn = el('btn-troublesome-force-save');
- if (troublesomeForceSaveBtn) troublesomeForceSaveBtn.addEventListener('click', saveTroublesomeForcePanel);
- var sqIconExpireSaveBtn = el('btn-special-quiz-icon-expire-save');
- if (sqIconExpireSaveBtn) sqIconExpireSaveBtn.addEventListener('click', saveSpecialQuizIconExpirePanel);
- syncTestModeUi();
- /* ฟัง storage event — sync เมื่อเปิดหลายแท็บ */
- window.addEventListener('storage', function (e) {
- if (e && e.key === TEST_MODE_KEY) syncTestModeUi();
- });
-
- var btnGameTimingSave = el('btn-game-timing-save');
- if (btnGameTimingSave) {
- btnGameTimingSave.addEventListener('click', function () {
- saveGameTimingPanel();
- });
- }
- var btnJumpSurviveSave = el('btn-jump-survive-save');
- if (btnJumpSurviveSave) {
- btnJumpSurviveSave.addEventListener('click', saveJumpSurviveTimingPanel);
- }
- bindJumpSurvivePlatformTileInputs();
- var btnSpaceShooterSave = el('btn-space-shooter-save');
- if (btnSpaceShooterSave) {
- btnSpaceShooterSave.addEventListener('click', saveSpaceShooterTimingPanel);
- }
- bindSpaceShooterShipUrlInputs();
- bindStackBlockVisualInputs();
- bindSpaceShooterDamageOverlayPanel();
- bindSpaceShooterAsteroidSpritePanel();
- bindMegaVirusPanel();
- var btnStackGameSave = el('btn-stack-game-save');
- if (btnStackGameSave) {
- btnStackGameSave.addEventListener('click', saveStackGamePanel);
- }
- bindGauntletAssetLibrary();
- bindGameTimingAssignedVisuals();
- bindGameTimingLaserColorSwatches();
-
- var btnQuizAdd = el('btn-quiz-admin-add');
- var btnQuizSave = el('btn-quiz-admin-save');
- if (btnQuizAdd) {
- btnQuizAdd.addEventListener('click', function () {
- addQuizAdminRow('', true);
- });
- }
- if (btnQuizSave) btnQuizSave.addEventListener('click', saveQuizSettingsPanel);
-
- var btnSpecialQuizAdd = el('btn-special-quiz-add');
- var btnSpecialQuizSave = el('btn-special-quiz-save');
- if (btnSpecialQuizAdd) {
- btnSpecialQuizAdd.addEventListener('click', function () {
- addSpecialQuizRow({ type: 'tf', text: '', answerTrue: true });
- updateSpecialQuizCount();
- });
- }
- if (btnSpecialQuizSave) btnSpecialQuizSave.addEventListener('click', saveSpecialQuizPanel);
- var specialQuizLevelSel = el('special-quiz-level');
- var specialQuizCaseSel = el('special-quiz-case');
- if (specialQuizLevelSel) specialQuizLevelSel.addEventListener('change', onSpecialQuizSelectorChange);
- if (specialQuizCaseSel) specialQuizCaseSel.addEventListener('change', onSpecialQuizSelectorChange);
-
- var btnQuizCarryAdd = el('btn-quiz-carry-add');
- var btnQuizCarrySave = el('btn-quiz-carry-save');
- if (btnQuizCarryAdd) {
- btnQuizCarryAdd.addEventListener('click', function () {
- addQuizCarryAdminRow(null);
- });
- }
- if (btnQuizCarrySave) btnQuizCarrySave.addEventListener('click', saveQuizCarryPanel);
- wireQuizCarryPlaqueMapScaleControls();
- quizCarryBindThemePickersOnce();
-
- var btnQbBattleAdd = el('btn-qb-battle-add');
- var btnQbBattleSave = el('btn-qb-battle-save');
- if (btnQbBattleAdd) {
- btnQbBattleAdd.addEventListener('click', function () {
- addQbBattleRow(null);
- refreshQbBattlePreview();
- });
- }
- if (btnQbBattleSave) btnQbBattleSave.addEventListener('click', saveQbBattlePanel);
-
- var qbFilterCat = el('qb-battle-filter-cat');
- if (qbFilterCat) qbFilterCat.addEventListener('change', applyQbBattleFilter);
-
- document.querySelectorAll('.qb-preview-mode-btn').forEach(function (b) {
- b.addEventListener('click', function () {
- document.querySelectorAll('.qb-preview-mode-btn').forEach(function (x) {
- x.classList.toggle('is-active', x === b);
- });
- refreshQbBattlePreview();
- });
- });
-
- function loadOAuth() {
- return api('oauth.php').then(function (r) {
- var o = r.oauth || {};
- var f = el('form-oauth');
- ['facebookAppId', 'facebookAppSecret', 'facebookRedirectUri', 'googleClientId', 'googleClientSecret', 'googleRedirectUri'].forEach(function (k) {
- var inp = f.querySelector('[name="' + k + '"]');
- if (inp) inp.value = o[k] || '';
- });
- });
- }
-
- el('form-oauth').addEventListener('submit', function (e) {
- e.preventDefault();
- var fd = new FormData(e.target);
- var body = {};
- fd.forEach(function (v, k) {
- body[k] = v;
- });
- api('oauth.php', { method: 'PUT', body: body })
- .then(function () {
- setMsg('oauth-msg', 'บันทึกแล้ว', 'ok');
- })
- .catch(function (err) {
- setMsg('oauth-msg', err.message || 'บันทึกไม่สำเร็จ', 'error');
- });
- });
-
- function renderAccounts(list) {
- var tb = el('table-accounts').querySelector('tbody');
- tb.innerHTML = '';
- var sumCoins = 0;
- (list || []).forEach(function (a) {
- var c = Math.max(0, parseInt(a.coins, 10) || 0);
- sumCoins += c;
- var tr = document.createElement('tr');
- tr.innerHTML =
- '
' + escapeHtml(a.displayName || '—') + ' ' +
- '' + escapeHtml(a.email || '—') + ' ' +
- '' + escapeHtml(a.loginType || '') + ' ' +
- '' + escapeHtml(a.providerUserId || '—') + ' ' +
- '' +
- ' ' +
- 'บันทึก COINS ' +
- ' ' +
- '' + (a.blocked ? 'บล็อก ' : 'ปกติ') + ' ' +
- 'ลบ ' +
- '' + (a.blocked ? 'ปลดบล็อก' : 'บล็อก') + ' ';
- tb.appendChild(tr);
- });
- var sumEl = el('accounts-coins-summary');
- if (sumEl) {
- sumEl.textContent = (list && list.length) ? ('ผู้ใช้ ' + list.length + ' บัญชี · รวม COINS ' + sumCoins) : 'ยังไม่มีบัญชี';
- }
- tb.querySelectorAll('.btn-sm-del').forEach(function (b) {
- b.addEventListener('click', function () {
- if (!confirm('ลบบัญชีนี้?')) return;
- api('accounts.php?id=' + encodeURIComponent(b.getAttribute('data-id')), { method: 'DELETE' })
- .then(loadAccounts)
- .catch(function (err) {
- setMsg('accounts-msg', err.message, 'error');
- });
- });
- });
- tb.querySelectorAll('.btn-sm-toggle').forEach(function (b) {
- b.addEventListener('click', function () {
- var id = b.getAttribute('data-id');
- var blocked = b.getAttribute('data-blocked') === '1';
- api('accounts.php', {
- method: 'PATCH',
- body: { id: id, blocked: !blocked },
- })
- .then(loadAccounts)
- .catch(function (err) {
- setMsg('accounts-msg', err.message, 'error');
- });
- });
- });
- tb.querySelectorAll('.btn-coins-save').forEach(function (b) {
- b.addEventListener('click', function () {
- var id = b.getAttribute('data-id');
- var row = b.closest('tr');
- var inp = row ? row.querySelector('input.input-coins') : null;
- var coins = Math.max(0, parseInt(inp && inp.value, 10) || 0);
- api('accounts.php', { method: 'PATCH', body: { id: id, coins: coins } })
- .then(function () {
- setMsg('accounts-msg', 'อัปเดต COINS แล้ว', 'ok');
- return loadAccounts();
- })
- .catch(function (err) {
- setMsg('accounts-msg', err.message, 'error');
- });
- });
- });
- }
-
- function escapeHtml(s) {
- var d = document.createElement('div');
- d.textContent = s == null ? '' : String(s);
- return d.innerHTML;
- }
-
- function escapeAttr(s) {
- return String(s || '').replace(/"/g, '"');
- }
-
- function loadAccounts() {
- return api('accounts.php').then(function (r) {
- renderAccounts(r.accounts);
- setMsg('accounts-msg', '', '');
- });
- }
-
- /* ===== กระดานผู้นำ (High Score) ===== */
- function renderHighscore(rows) {
- var tbEl = el('table-highscore');
- if (!tbEl) return;
- var tb = tbEl.querySelector('tbody');
- tb.innerHTML = '';
- (rows || []).forEach(function (r) {
- var rank = parseInt(r.rank, 10) || 0;
- var score = Math.max(0, parseInt(r.score, 10) || 0);
- var coins = Math.max(0, parseInt(r.coins, 10) || 0);
- var medal = rank === 1 ? '🥇' : rank === 2 ? '🥈' : rank === 3 ? '🥉' : ('#' + rank);
- var tr = document.createElement('tr');
- tr.innerHTML =
- '' + medal + ' ' +
- '' + escapeHtml(r.name || 'ผู้เล่น') + (r.blocked ? ' บล็อก ' : '') + ' ' +
- '' +
- ' ' +
- 'บันทึก ' +
- ' ' +
- '' + coins + ' ' +
- 'รีเซ็ต 0 ';
- tb.appendChild(tr);
- });
- tb.querySelectorAll('.btn-score-save').forEach(function (b) {
- b.addEventListener('click', function () {
- var id = b.getAttribute('data-id');
- var row = b.closest('tr');
- var inp = row ? row.querySelector('input.input-score') : null;
- var score = Math.max(0, parseInt(inp && inp.value, 10) || 0);
- api('accounts.php', { method: 'PATCH', body: { id: id, score: score } })
- .then(function () { setMsg('highscore-msg', 'บันทึกคะแนนแล้ว', 'ok'); return loadHighscore(); })
- .catch(function (err) { setMsg('highscore-msg', err.message, 'error'); });
- });
- });
- tb.querySelectorAll('.btn-score-reset').forEach(function (b) {
- b.addEventListener('click', function () {
- var id = b.getAttribute('data-id');
- if (!confirm('รีเซ็ตคะแนนคนนี้เป็น 0?')) return;
- api('leaderboard-admin.php', { method: 'POST', body: { action: 'reset', id: id } })
- .then(function () { return loadHighscore(); })
- .catch(function (err) { setMsg('highscore-msg', err.message, 'error'); });
- });
- });
- }
-
- function loadHighscore() {
- return api('leaderboard-admin.php').then(function (r) {
- renderHighscore(r.rows);
- var n = (r.rows && r.rows.length) || 0;
- setMsg('highscore-msg', n ? ('ผู้เล่นมีคะแนน ' + r.total + ' คน') : 'ยังไม่มีผู้เล่นทำคะแนน', '');
- }).catch(function (err) { setMsg('highscore-msg', err.message, 'error'); });
- }
-
- (function bindHighscoreControls() {
- var refresh = el('btn-highscore-refresh');
- if (refresh) refresh.addEventListener('click', function () { loadHighscore(); });
- var resetAll = el('btn-highscore-reset-all');
- if (resetAll) resetAll.addEventListener('click', function () {
- if (!confirm('รีเซ็ตคะแนนสะสมของผู้เล่นทุกคนเป็น 0? (ย้อนกลับไม่ได้)')) return;
- api('leaderboard-admin.php', { method: 'POST', body: { action: 'resetAll' } })
- .then(function (r) { setMsg('highscore-msg', 'รีเซ็ตแล้ว ' + (r.reset || 0) + ' คน', 'ok'); return loadHighscore(); })
- .catch(function (err) { setMsg('highscore-msg', err.message, 'error'); });
- });
- })();
-
- /* ===== เวลาโหวต (vote timing) ===== */
- function loadVoteTimingPanel() {
- gameTimingFetch('GET')
- .then(function (data) {
- var pk = (data && data.pickVoteSec != null) ? Number(data.pickVoteSec) : 25;
- var tr = (data && data.trialVoteSec != null) ? Number(data.trialVoteSec) : 30;
- var rv = (data && data.trialResultRevealMs != null) ? Number(data.trialResultRevealMs) : 7000;
- if (el('vote-timing-pick')) el('vote-timing-pick').value = String(Number.isFinite(pk) ? pk : 25);
- if (el('vote-timing-trial')) el('vote-timing-trial').value = String(Number.isFinite(tr) ? tr : 30);
- if (el('vote-timing-reveal')) el('vote-timing-reveal').value = String(Number.isFinite(rv) ? rv : 7000);
- setMsg('vote-timing-msg', '', '');
- })
- .catch(function (e) { setMsg('vote-timing-msg', (e.message || 'โหลดไม่ได้') + ' — เช็ค /Game/api/game-timing', 'error'); });
- }
-
- (function bindVoteTiming() {
- var btn = el('btn-vote-timing-save');
- if (!btn) return;
- btn.addEventListener('click', function () {
- var pk = Math.max(5, Math.min(120, parseInt((el('vote-timing-pick') || {}).value, 10) || 25));
- var tr = Math.max(5, Math.min(180, parseInt((el('vote-timing-trial') || {}).value, 10) || 30));
- var rv = Math.max(1500, Math.min(20000, parseInt((el('vote-timing-reveal') || {}).value, 10) || 7000));
- btn.disabled = true;
- gameTimingFetch('GET')
- .then(function (data) {
- data.pickVoteSec = pk;
- data.trialVoteSec = tr;
- data.trialResultRevealMs = rv;
- return gameTimingFetch('PUT', data);
- })
- .then(function () { return gameTimingFetch('GET'); })
- .then(function (fresh) {
- var p = (fresh && fresh.pickVoteSec != null) ? fresh.pickVoteSec : pk;
- var t = (fresh && fresh.trialVoteSec != null) ? fresh.trialVoteSec : tr;
- var r = (fresh && fresh.trialResultRevealMs != null) ? fresh.trialResultRevealMs : rv;
- if (el('vote-timing-pick')) el('vote-timing-pick').value = String(p);
- if (el('vote-timing-trial')) el('vote-timing-trial').value = String(t);
- if (el('vote-timing-reveal')) el('vote-timing-reveal').value = String(r);
- setMsg('vote-timing-msg', 'บันทึกแล้ว — โหวตเลือกผู้เล่น ' + p + 's · ชี้ตัวคนร้าย ' + t + 's · โชว์ผล ' + Math.round(r/1000) + 's · ผู้เล่นต้องรีเฟรช/เข้าห้องใหม่', 'ok');
- })
- .catch(function (e) { setMsg('vote-timing-msg', (e.message || 'บันทึกไม่ได้') + ' — เช็ค Node + /Game/api/game-timing', 'error'); })
- .then(function () { btn.disabled = false; });
- });
- })();
-
- /* ===== จบคดี (post-case destination) — Main-Lobby หรือ LobbyA ===== */
- function loadPostCasePanel() {
- gameTimingFetch('GET')
- .then(function (data) {
- var d = (data && data.postCaseDestination === 'lobbya') ? 'lobbya' : 'mainlobby';
- if (el('postcase-dest')) el('postcase-dest').value = d;
- setMsg('postcase-msg', '', '');
- })
- .catch(function (e) { setMsg('postcase-msg', (e.message || 'โหลดไม่ได้') + ' — เช็ค /Game/api/game-timing', 'error'); });
- }
-
- (function bindPostCase() {
- var btn = el('btn-postcase-save');
- if (!btn) return;
- btn.addEventListener('click', function () {
- var d = ((el('postcase-dest') || {}).value === 'lobbya') ? 'lobbya' : 'mainlobby';
- btn.disabled = true;
- gameTimingFetch('GET')
- .then(function (data) { data.postCaseDestination = d; return gameTimingFetch('PUT', data); })
- .then(function () { return gameTimingFetch('GET'); })
- .then(function (fresh) {
- var v = (fresh && fresh.postCaseDestination === 'lobbya') ? 'lobbya' : 'mainlobby';
- if (el('postcase-dest')) el('postcase-dest').value = v;
- setMsg('postcase-msg', 'บันทึกแล้ว — เมื่อจบคดีไป ' + (v === 'lobbya' ? 'LobbyA (ห้องเดิม เริ่มคดีใหม่)' : 'Main-Lobby (เดิม)') + ' · ผู้เล่นต้องรีเฟรช/เข้าห้องใหม่', 'ok');
- })
- .catch(function (e) { setMsg('postcase-msg', (e.message || 'บันทึกไม่ได้') + ' — เช็ค Node + /Game/api/game-timing', 'error'); })
- .then(function () { btn.disabled = false; });
- });
- })();
-
- /* ===== เสียง (sound settings) — master/music/sfx volume 0..1 ===== */
- function soundSettingsFetch(method, body) {
- var m = method || 'GET';
- var url = SOUND_SETTINGS_API;
- if (m === 'GET' && body == null) url += (url.indexOf('?') >= 0 ? '&' : '?') + '_=' + Date.now();
- var opts = { method: m, credentials: 'include', cache: 'no-store' };
- if (body != null) { opts.headers = { 'Content-Type': 'application/json' }; opts.body = JSON.stringify(body); }
- return fetch(url, opts).then(function (r) {
- return r.text().then(function (text) {
- var j = {};
- try { j = text ? JSON.parse(text) : {}; }
- catch (e) {
- var plain = (text || r.statusText || 'Request failed').trim();
- if (r.status === 404) plain += ' — รีสตาร์ท Node (Game/server.js) หลัง deploy';
- throw new Error(plain);
- }
- if (!r.ok) throw new Error(j.error || ('HTTP ' + r.status + ' ' + r.statusText));
- return j;
- });
- });
- }
- function pctFromVol(v, d) { var n = Number(v); return Math.round((Number.isFinite(n) ? n : d) * 100); }
- function loadSoundPanel() {
- soundSettingsFetch('GET')
- .then(function (d) {
- var setR = function (id, pct) { var e = el(id); if (e) { e.value = String(pct); var lbl = el(id + '-val'); if (lbl) lbl.textContent = pct + '%'; } };
- setR('sound-master', pctFromVol(d && d.masterVol, 1.0));
- setR('sound-music', pctFromVol(d && d.musicVol, 0.35));
- setR('sound-sfx', pctFromVol(d && d.sfxVol, 0.75));
- setMsg('sound-msg', '', '');
- })
- .catch(function (e) { setMsg('sound-msg', (e.message || 'โหลดไม่ได้') + ' — เช็ค /Game/api/sound-settings', 'error'); });
- }
- (function bindSound() {
- var btn = el('btn-sound-save');
- if (!btn) return;
- btn.addEventListener('click', function () {
- var rd = function (id, d) { var v = parseInt((el(id) || {}).value, 10); return Math.max(0, Math.min(100, Number.isFinite(v) ? v : d)) / 100; };
- var body = { masterVol: rd('sound-master', 100), musicVol: rd('sound-music', 35), sfxVol: rd('sound-sfx', 75) };
- btn.disabled = true;
- soundSettingsFetch('PUT', body)
- .then(function () { return soundSettingsFetch('GET'); })
- .then(function (fresh) {
- loadSoundPanel();
- setMsg('sound-msg', 'บันทึกแล้ว — Master ' + pctFromVol(fresh.masterVol, 1) + '% · Music ' + pctFromVol(fresh.musicVol, .35) + '% · SFX ' + pctFromVol(fresh.sfxVol, .75) + '% · ผู้เล่นต้องรีเฟรช', 'ok');
- })
- .catch(function (e) { setMsg('sound-msg', (e.message || 'บันทึกไม่ได้') + ' — เช็ค Node + /Game/api/sound-settings', 'error'); })
- .then(function () { btn.disabled = false; });
- });
- })();
-
- /* ===== บทตัวป่วน (แยกจากหมวด Minigame-2) — troublesomeRollMaxSec + troublesomeOfferSec ===== */
- function loadTroublesomePanel() {
- gameTimingFetch('GET')
- .then(function (data) {
- var rs = (data && data.troublesomeRollMaxSec != null) ? Number(data.troublesomeRollMaxSec) : 8;
- var os = (data && data.troublesomeOfferSec != null) ? Number(data.troublesomeOfferSec) : 15;
- if (el('troublesome-roll-sec')) el('troublesome-roll-sec').value = String(Number.isFinite(rs) ? rs : 8);
- if (el('troublesome-offer-sec')) el('troublesome-offer-sec').value = String(Number.isFinite(os) ? os : 15);
- setMsg('troublesome-msg', '', '');
- })
- .catch(function (e) { setMsg('troublesome-msg', (e.message || 'โหลดไม่ได้') + ' — เช็ค /Game/api/game-timing', 'error'); });
- }
-
- (function bindTroublesome() {
- var btn = el('btn-troublesome-save');
- if (!btn) return;
- btn.addEventListener('click', function () {
- var rs = Math.max(1, Math.min(30, parseInt((el('troublesome-roll-sec') || {}).value, 10) || 8));
- var os = Math.max(5, Math.min(120, parseInt((el('troublesome-offer-sec') || {}).value, 10) || 15));
- btn.disabled = true;
- gameTimingFetch('GET')
- .then(function (data) {
- data.troublesomeRollMaxSec = rs;
- data.troublesomeOfferSec = os;
- return gameTimingFetch('PUT', data);
- })
- .then(function () { return gameTimingFetch('GET'); })
- .then(function (fresh) {
- var r = (fresh && fresh.troublesomeRollMaxSec != null) ? fresh.troublesomeRollMaxSec : rs;
- var o = (fresh && fresh.troublesomeOfferSec != null) ? fresh.troublesomeOfferSec : os;
- if (el('troublesome-roll-sec')) el('troublesome-roll-sec').value = String(r);
- if (el('troublesome-offer-sec')) el('troublesome-offer-sec').value = String(o);
- setMsg('troublesome-msg', 'บันทึกแล้ว — เวลาเสนอ ' + r + 's · เวลารับ ' + o + 's · ผู้เล่นต้องรีเฟรช/เข้าห้องใหม่', 'ok');
- })
- .catch(function (e) { setMsg('troublesome-msg', (e.message || 'บันทึกไม่ได้') + ' — เช็ค Node + /Game/api/game-timing', 'error'); })
- .then(function () { btn.disabled = false; });
- });
- })();
-
- /* ===== Achievements admin ===== */
- var achvCatalog = [];
- var achvCatalogById = {};
- var achvCurrentPlayer = null;
-
- function achvGroupLabel(g) {
- var names = { 1: '1 · Analyst', 2: '2 · Explorer', 3: '3 · Risk', 4: '4 · Support', 5: '5 · Elite' };
- return names[g] || String(g);
- }
-
- function renderAchvCatalog() {
- var tb = el('table-achv-catalog');
- if (!tb) return;
- tb = tb.querySelector('tbody');
- tb.innerHTML = '';
- achvCatalog.slice().sort(function (a, b) { return (a.g - b.g) || 0; }).forEach(function (a) {
- var tr = document.createElement('tr');
- tr.setAttribute('data-achv-id', a.id);
-
- var tdG = document.createElement('td');
- var sel = document.createElement('select');
- sel.className = 'achv-f-g';
- for (var g = 1; g <= 5; g++) {
- var op = document.createElement('option');
- op.value = String(g); op.textContent = achvGroupLabel(g);
- if (g === (parseInt(a.g, 10) || 1)) op.selected = true;
- sel.appendChild(op);
- }
- tdG.appendChild(sel);
-
- var tdT = document.createElement('td');
- var inT = document.createElement('input');
- inT.type = 'text'; inT.className = 'achv-f-title'; inT.value = a.title || ''; inT.style.width = '100%';
- tdT.appendChild(inT);
-
- var tdD = document.createElement('td');
- var inD = document.createElement('input');
- inD.type = 'text'; inD.className = 'achv-f-desc'; inD.value = a.desc || ''; inD.style.width = '100%';
- tdD.appendChild(inD);
-
- var tdTar = document.createElement('td');
- var inTar = document.createElement('input');
- inTar.type = 'number'; inTar.min = '1'; inTar.step = '1'; inTar.className = 'achv-f-target';
- inTar.value = String(Math.max(1, parseInt(a.target, 10) || 1)); inTar.style.width = '72px';
- tdTar.appendChild(inTar);
-
- var tdE = document.createElement('td');
- var inE = document.createElement('input');
- inE.type = 'checkbox'; inE.className = 'achv-f-enabled'; inE.checked = a.enabled !== false;
- tdE.appendChild(inE);
-
- tr.appendChild(tdG); tr.appendChild(tdT); tr.appendChild(tdD); tr.appendChild(tdTar); tr.appendChild(tdE);
- tb.appendChild(tr);
- });
- }
-
- function collectAchvCatalogFromTable() {
- var rows = document.querySelectorAll('#table-achv-catalog tbody tr');
- var out = [];
- rows.forEach(function (tr) {
- out.push({
- id: tr.getAttribute('data-achv-id'),
- g: parseInt(tr.querySelector('.achv-f-g').value, 10) || 1,
- title: tr.querySelector('.achv-f-title').value,
- desc: tr.querySelector('.achv-f-desc').value,
- target: Math.max(1, parseInt(tr.querySelector('.achv-f-target').value, 10) || 1),
- enabled: tr.querySelector('.achv-f-enabled').checked,
- });
- });
- return out;
- }
-
- function loadAchvCatalog() {
- return api('achievements.php?action=catalog').then(function (r) {
- achvCatalog = (r && r.catalog) || [];
- achvCatalogById = {};
- achvCatalog.forEach(function (a) { achvCatalogById[a.id] = a; });
- renderAchvCatalog();
- setMsg('achv-catalog-msg', 'โหลดแคตตาล็อก ' + achvCatalog.length + ' รายการ', '');
- }).catch(function (err) { setMsg('achv-catalog-msg', err.message, 'error'); });
- }
-
- function renderAchvPlayers(rows) {
- var tb = el('table-achv-players');
- if (!tb) return;
- tb = tb.querySelector('tbody');
- tb.innerHTML = '';
- (rows || []).forEach(function (p) {
- var tr = document.createElement('tr');
- var c1 = document.createElement('td'); c1.textContent = p.displayName || 'Guest';
- var c2 = document.createElement('td'); c2.textContent = p.playerKey; c2.style.fontSize = '12px'; c2.style.opacity = '0.8';
- var c3 = document.createElement('td'); c3.textContent = (p.unlocked || 0) + ' / ' + (p.total || 0);
- var c4 = document.createElement('td'); c4.textContent = String(p.coins || 0);
- var c5 = document.createElement('td');
- var btn = document.createElement('button');
- btn.type = 'button'; btn.className = 'btn btn-ghost'; btn.textContent = 'จัดการ';
- btn.addEventListener('click', function () { openAchvPlayerDetail(p.playerKey, p.displayName); });
- c5.appendChild(btn);
- tr.appendChild(c1); tr.appendChild(c2); tr.appendChild(c3); tr.appendChild(c4); tr.appendChild(c5);
- tb.appendChild(tr);
- });
- }
-
- function loadAchvPlayers() {
- var q = (el('achv-player-search') && el('achv-player-search').value || '').trim().toLowerCase();
- return api('achievements.php?action=players').then(function (r) {
- var rows = (r && r.players) || [];
- if (q) {
- rows = rows.filter(function (p) {
- return (p.displayName || '').toLowerCase().indexOf(q) >= 0 || (p.playerKey || '').toLowerCase().indexOf(q) >= 0;
- });
- }
- renderAchvPlayers(rows);
- setMsg('achv-players-msg', 'ผู้เล่น ' + rows.length + ' คน', '');
- }).catch(function (err) { setMsg('achv-players-msg', err.message, 'error'); });
- }
-
- function openAchvPlayerDetail(key, name) {
- achvCurrentPlayer = key;
- var box = el('achv-player-detail');
- if (box) box.hidden = false;
- if (el('achv-player-detail-name')) el('achv-player-detail-name').textContent = (name || 'Guest') + ' (' + key + ')';
- api('achievements.php?action=player&playerKey=' + encodeURIComponent(key)).then(function (r) {
- var prog = (r && r.progress) || {};
- var tb = el('table-achv-player-detail').querySelector('tbody');
- tb.innerHTML = '';
- achvCatalog.slice().sort(function (a, b) { return (a.g - b.g) || 0; }).forEach(function (a) {
- var target = Math.max(1, parseInt(a.target, 10) || 1);
- var cur = Math.max(0, parseInt(prog[a.id], 10) || 0);
- var tr = document.createElement('tr');
-
- var c1 = document.createElement('td');
- c1.innerHTML = '' + achvGroupLabel(a.g).charAt(0) + ' · ' + (a.title || a.id);
- var c2 = document.createElement('td');
- var inp = document.createElement('input');
- inp.type = 'number'; inp.min = '0'; inp.max = String(target); inp.step = '1'; inp.value = String(Math.min(cur, target));
- inp.style.width = '70px';
- c2.appendChild(inp);
- c2.appendChild(document.createTextNode(' / ' + target + (cur >= target ? ' ✔' : '')));
-
- var c3 = document.createElement('td');
- var setBtn = document.createElement('button');
- setBtn.type = 'button'; setBtn.className = 'btn btn-ghost'; setBtn.textContent = 'ตั้งค่า';
- setBtn.style.marginRight = '6px';
- setBtn.addEventListener('click', function () {
- api('achievements.php', { method: 'POST', body: { action: 'setProgress', playerKey: key, id: a.id, value: parseInt(inp.value, 10) || 0 } })
- .then(function () { setMsg('achv-players-msg', 'บันทึก ' + a.id, 'ok'); openAchvPlayerDetail(key, name); })
- .catch(function (err) { setMsg('achv-players-msg', err.message, 'error'); });
- });
- var unBtn = document.createElement('button');
- unBtn.type = 'button'; unBtn.className = 'btn btn-primary'; unBtn.textContent = 'ปลดล็อก';
- unBtn.addEventListener('click', function () {
- api('achievements.php', { method: 'POST', body: { action: 'unlock', playerKey: key, id: a.id } })
- .then(function () { setMsg('achv-players-msg', 'ปลดล็อก ' + a.id, 'ok'); openAchvPlayerDetail(key, name); })
- .catch(function (err) { setMsg('achv-players-msg', err.message, 'error'); });
- });
- c3.appendChild(setBtn); c3.appendChild(unBtn);
-
- tr.appendChild(c1); tr.appendChild(c2); tr.appendChild(c3);
- tb.appendChild(tr);
- });
- }).catch(function (err) { setMsg('achv-players-msg', err.message, 'error'); });
- }
-
- function showAchvSubtab(which) {
- var isCat = which !== 'players';
- if (el('achv-panel-catalog')) el('achv-panel-catalog').hidden = !isCat;
- if (el('achv-panel-players')) el('achv-panel-players').hidden = isCat;
- if (el('achv-subtab-catalog')) el('achv-subtab-catalog').classList.toggle('is-active', isCat);
- if (el('achv-subtab-players')) el('achv-subtab-players').classList.toggle('is-active', !isCat);
- if (!isCat) loadAchvPlayers();
- }
-
- var achvPanelInited = false;
- function loadAchievementsPanel() {
- if (!achvPanelInited) {
- achvPanelInited = true;
- var sc = el('achv-subtab-catalog'); if (sc) sc.addEventListener('click', function () { showAchvSubtab('catalog'); });
- var sp = el('achv-subtab-players'); if (sp) sp.addEventListener('click', function () { showAchvSubtab('players'); });
- var save = el('btn-achv-save');
- if (save) save.addEventListener('click', function () {
- api('achievements.php', { method: 'POST', body: { action: 'saveCatalog', catalog: collectAchvCatalogFromTable() } })
- .then(function (r) {
- achvCatalog = (r && r.catalog) || achvCatalog;
- achvCatalogById = {}; achvCatalog.forEach(function (a) { achvCatalogById[a.id] = a; });
- renderAchvCatalog();
- setMsg('achv-catalog-msg', 'บันทึกแคตตาล็อกแล้ว', 'ok');
- })
- .catch(function (err) { setMsg('achv-catalog-msg', err.message, 'error'); });
- });
- var reload = el('btn-achv-reload');
- if (reload) reload.addEventListener('click', function () { loadAchvCatalog(); });
- var resetDef = el('btn-achv-reset-default');
- if (resetDef) resetDef.addEventListener('click', function () {
- if (!confirm('คืนค่าแคตตาล็อกกลับเป็นค่าเริ่มต้น 25 รายการ? (ค่าที่แก้ไว้จะหาย)')) return;
- api('achievements.php', { method: 'POST', body: { action: 'resetCatalog' } })
- .then(function () { setMsg('achv-catalog-msg', 'คืนค่าเริ่มต้นแล้ว', 'ok'); return loadAchvCatalog(); })
- .catch(function (err) { setMsg('achv-catalog-msg', err.message, 'error'); });
- });
- var pr = el('btn-achv-players-refresh'); if (pr) pr.addEventListener('click', function () { loadAchvPlayers(); });
- var ps = el('achv-player-search'); if (ps) ps.addEventListener('input', function () { loadAchvPlayers(); });
- var rpb = el('btn-achv-player-reset');
- if (rpb) rpb.addEventListener('click', function () {
- if (!achvCurrentPlayer) return;
- if (!confirm('รีเซ็ต achievement ทั้งหมดของผู้เล่นนี้?')) return;
- api('achievements.php', { method: 'POST', body: { action: 'resetPlayer', playerKey: achvCurrentPlayer } })
- .then(function () { setMsg('achv-players-msg', 'รีเซ็ตแล้ว', 'ok'); openAchvPlayerDetail(achvCurrentPlayer, el('achv-player-detail-name') ? el('achv-player-detail-name').textContent : ''); loadAchvPlayers(); })
- .catch(function (err) { setMsg('achv-players-msg', err.message, 'error'); });
- });
- }
- return loadAchvCatalog();
- }
-
- el('form-account-add').addEventListener('submit', function (e) {
- e.preventDefault();
- var fd = new FormData(e.target);
- var body = {
- email: fd.get('email'),
- displayName: fd.get('displayName'),
- loginType: fd.get('loginType'),
- providerUserId: fd.get('providerUserId'),
- notes: fd.get('notes'),
- blocked: fd.get('blocked') === 'on',
- coins: Math.max(0, parseInt(fd.get('coins'), 10) || 0),
- };
- api('accounts.php', { method: 'POST', body: body })
- .then(function () {
- e.target.reset();
- return loadAccounts();
- })
- .catch(function (err) {
- setMsg('accounts-msg', err.message, 'error');
- });
- });
-
- function renderAdmins(list, myId) {
- var tb = el('table-admins').querySelector('tbody');
- tb.innerHTML = '';
- (list || []).forEach(function (a) {
- var tr = document.createElement('tr');
- var delBtn = a.id === myId
- ? '—'
- : 'ลบ ';
- tr.innerHTML =
- '' + escapeHtml(a.username) + ' ' +
- '' + escapeHtml(a.role || 'admin') + ' ' +
- '' + escapeHtml((a.createdAt || '').slice(0, 10)) + ' ' +
- '' + delBtn + ' ';
- tb.appendChild(tr);
- });
- tb.querySelectorAll('.btn-adm-del').forEach(function (b) {
- b.addEventListener('click', function () {
- if (!confirm('ลบแอดมินนี้?')) return;
- api('admins.php?id=' + encodeURIComponent(b.getAttribute('data-id')), { method: 'DELETE' })
- .then(loadAdmins)
- .catch(function (err) {
- setMsg('admins-msg', err.message, 'error');
- });
- });
- });
- }
-
- function fillAdminResetSelect(admins, myId) {
- var sel = el('select-admin-reset-target');
- if (!sel) return;
- sel.innerHTML = '— เลือก — ';
- (admins || []).forEach(function (a) {
- if (!a.id || a.id === myId) return;
- var opt = document.createElement('option');
- opt.value = a.id;
- opt.textContent = a.username + ' (' + (a.role || 'admin') + ')';
- sel.appendChild(opt);
- });
- }
-
- function loadAdmins() {
- return api('admins.php').then(function (r) {
- return api('session.php').then(function (s) {
- var myId = s.admin && s.admin.id;
- renderAdmins(r.admins, myId);
- fillAdminResetSelect(r.admins, myId);
- setMsg('admins-msg', '', '');
- });
- });
- }
-
- el('form-change-password').addEventListener('submit', function (e) {
- e.preventDefault();
- var fd = new FormData(e.target);
- var cur = fd.get('currentPassword');
- var n1 = fd.get('newPassword');
- var n2 = fd.get('newPassword2');
- if (n1 !== n2) {
- setMsg('password-self-msg', 'รหัสใหม่ไม่ตรงกัน', 'error');
- return;
- }
- api('password.php', {
- method: 'POST',
- body: { currentPassword: cur, newPassword: n1 },
- })
- .then(function () {
- e.target.reset();
- setMsg('password-self-msg', 'เปลี่ยนรหัสผ่านแล้ว', 'ok');
- })
- .catch(function (err) {
- setMsg('password-self-msg', err.message, 'error');
- });
- });
-
- el('form-admin-reset-other').addEventListener('submit', function (e) {
- e.preventDefault();
- var fd = new FormData(e.target);
- var tid = fd.get('targetId');
- var n1 = fd.get('newPassword');
- var n2 = fd.get('newPassword2');
- if (!tid) {
- setMsg('admins-msg', 'เลือกแอดมิน', 'error');
- return;
- }
- if (n1 !== n2) {
- setMsg('admins-msg', 'รหัสใหม่ไม่ตรงกัน', 'error');
- return;
- }
- api('admins.php', {
- method: 'PATCH',
- body: { id: tid, newPassword: n1 },
- })
- .then(function () {
- e.target.reset();
- setMsg('admins-msg', 'ตั้งรหัสใหม่ให้แอดมินที่เลือกแล้ว', 'ok');
- })
- .catch(function (err) {
- setMsg('admins-msg', err.message, 'error');
- });
- });
-
- el('form-admin-add').addEventListener('submit', function (e) {
- e.preventDefault();
- var fd = new FormData(e.target);
- api('admins.php', {
- method: 'POST',
- body: {
- username: fd.get('username'),
- password: fd.get('password'),
- role: fd.get('role'),
- },
- })
- .then(function () {
- e.target.reset();
- return loadAdmins();
- })
- .catch(function (err) {
- setMsg('admins-msg', err.message, 'error');
- });
- });
-
- function getDesiredAdminTab(admin) {
- var want = null;
- try {
- want = new URL(window.location.href).searchParams.get('tab');
- } catch (e) { /* ignore */ }
- var allowed = { 'change-password': true, oauth: true, 'map-editor': true, quiz: true, 'special-quiz': true, 'vote-timing': true, troublesome: true, 'quiz-carry': true, 'quiz-battle': true, 'jump-survive': true, 'space-shooter': true, 'mega-virus': true, 'game-timing': true, 'stack-game': true, characters: true, accounts: true, admins: true };
- if (!want || !allowed[want]) return 'oauth';
- if (want === 'admins' && (!admin || admin.role !== 'super')) return 'oauth';
- return want;
- }
-
- function loadAll(admin) {
- loadOAuth().catch(function (e) {
- setMsg('oauth-msg', e.message, 'error');
- });
- loadAccounts().catch(function (e) {
- setMsg('accounts-msg', e.message, 'error');
- });
- var isSuper = admin && admin.role === 'super';
- el('tab-admins').hidden = !isSuper;
- el('form-admin-add').hidden = !isSuper;
- if (isSuper) {
- loadAdmins().catch(function (e) {
- setMsg('admins-msg', e.message, 'error');
- });
- }
- setTab(getDesiredAdminTab(admin));
- /** อย่า prefetch ซิงก์ Stack ที่นี่ — GET ที่เริ่มก่อน PUT บันทึกอาจกลับช้ากว่าและทับช่องกว้าง/HZ ด้วยข้อมูลเก่า · โหลดจริงที่แท็บ Stack / เวลาเกมแทน */
- }
-
- boot().then(function (admin) {
- if (admin) loadAll(admin);
- });
-})();
+(function () {
+ 'use strict';
+
+ var API = '/Admin/api/';
+ /** ผ่าน PHP Admin เพื่อให้ PUT ถึง Node แม้ nginx ไม่ proxy /Game/api/ ไปยัง Node */
+ var GAME_QUIZ_API = '/Admin/api/game-quiz-settings.php';
+ var GAME_TIMING_API = '/Game/api/game-timing';
+ var SOUND_SETTINGS_API = '/Game/api/sound-settings';
+ var GAME_GAUNTLET_ASSETS_API = '/Game/api/gauntlet-assets';
+ /** ลำดับอัปโหลดจริงอยู่ที่ quizCarryPlaqueUploadWithFallback — Node ก่อน แล้วค่อย PHP */
+ var GAME_QUIZ_CARRY_PLAQUE_UPLOAD_NODE = '/Game/api/quiz-carry-plaque-upload';
+ var GAME_QUIZ_CARRY_PLAQUE_UPLOAD_PHP = '/Admin/api/game-quiz-carry-plaque-upload.php';
+ /** >0 ระหว่างอัปโหลดรูปป้าย — ห้ามบันทึกก่อนจบไม่งั้น plaqueImageUrl ว่างถูกเขียนลง JSON */
+ var quizCarryPlaqueUploadPending = 0;
+ /** epoch ms เมื่อเริ่มอัปโหลดล่าสุด — กันสถานะค้างบล็อกบันทึกตลอด */
+ var quizCarryPlaqueUploadStartMs = 0;
+ var quizCarrySaveInFlight = false;
+ /** ซิงก์ range ↔ ตัวเลข carryChoicePlaqueMapScale (wire ครั้งเดียว) */
+ var quizCarryPlaqueScaleControlsWired = false;
+ /** สำรอง URL หลังอัปโหลดสำเร็จต่อช่อง — กัน race ที่ช่อง text ว่างตอน buildForSave แต่รูปอัปโหลดแล้วจริง */
+ var quizCarryPlaquePendingUrlBySlot = {};
+ var stackGameSaveInFlight = false;
+ var megaVirusSaveInFlight = false;
+ /** โหมดแทนที่รูป: ชื่อไฟล์เป้าหมายก่อนเปิด file picker */
+ var gauntletReplaceTarget = null;
+ var cred = { credentials: 'include' };
+
+ function el(id) { return document.getElementById(id); }
+
+ function api(path, opts) {
+ opts = opts || {};
+ opts.credentials = 'include';
+ if (!opts.headers) opts.headers = {};
+ if (opts.body && typeof opts.body === 'object' && !(opts.body instanceof FormData)) {
+ opts.headers['Content-Type'] = 'application/json';
+ opts.body = JSON.stringify(opts.body);
+ }
+ return fetch(API + path, opts).then(function (r) {
+ return r.text().then(function (text) {
+ var j = {};
+ try {
+ j = text ? JSON.parse(text) : {};
+ } catch (e) {
+ if (!r.ok) throw new Error(text || r.statusText);
+ throw e;
+ }
+ if (!r.ok) throw new Error(j.error || r.statusText || 'Request failed');
+ return j;
+ });
+ });
+ }
+
+ function setMsg(id, text, cls) {
+ var n = el(id);
+ if (!n) return;
+ n.textContent = text || '';
+ n.className = 'msg' + (cls ? ' ' + cls : '');
+ }
+
+ function gameQuizFetch(method, body) {
+ var m = method || 'GET';
+ var url = GAME_QUIZ_API;
+ if (m === 'GET' && body == null) {
+ url += (GAME_QUIZ_API.indexOf('?') >= 0 ? '&' : '?') + '_=' + Date.now();
+ }
+ var opts = { method: m, credentials: 'include', cache: 'no-store' };
+ if (body != null) {
+ opts.headers = { 'Content-Type': 'application/json' };
+ opts.body = JSON.stringify(body);
+ }
+ return fetch(url, opts).then(function (r) {
+ return r.text().then(function (text) {
+ var j = {};
+ try {
+ j = text ? JSON.parse(text) : {};
+ } catch (e) {
+ if (!r.ok) {
+ throw new Error((text || '').slice(0, 280) || r.statusText || 'Request failed');
+ }
+ throw new Error('คำตอบไม่ใช่ JSON (HTTP ' + r.status + ') — ตรวจ nginx / PHP proxy');
+ }
+ if (!r.ok) {
+ throw new Error(j.error || ('HTTP ' + r.status + ' ' + r.statusText));
+ }
+ return j;
+ });
+ });
+ }
+
+ function gameTimingFetch(method, body) {
+ var m = method || 'GET';
+ var url = GAME_TIMING_API;
+ if (m === 'GET' && body == null) {
+ url += (GAME_TIMING_API.indexOf('?') >= 0 ? '&' : '?') + '_=' + Date.now();
+ }
+ var opts = { method: m, credentials: 'include', cache: 'no-store' };
+ if (body != null) {
+ opts.headers = { 'Content-Type': 'application/json' };
+ opts.body = JSON.stringify(body);
+ }
+ return fetch(url, opts).then(function (r) {
+ return r.text().then(function (text) {
+ var j = {};
+ try {
+ j = text ? JSON.parse(text) : {};
+ } catch (e) {
+ if (!r.ok) {
+ var plain = (text || r.statusText || 'Request failed').trim();
+ if (r.status === 404) {
+ plain += ' — รีสตาร์ท Node ที่รัน Game/server.js (pm2 / systemd) หลัง deploy · Restart Game Node after deploy';
+ }
+ throw new Error(plain);
+ }
+ throw e;
+ }
+ if (!r.ok) {
+ var base = j.error || r.statusText || 'Request failed';
+ if (r.status === 404) {
+ base += ' — รีสตาร์ท Node ที่รัน Game/server.js (pm2 / systemd) หลัง deploy · Restart Game Node after deploy';
+ }
+ throw new Error(base);
+ }
+ return j;
+ });
+ });
+ }
+
+ function addQuizAdminRow(text, answerTrue) {
+ var list = el('quiz-admin-questions-list');
+ if (!list) return;
+ var row = document.createElement('div');
+ row.className = 'quiz-admin-q-row';
+
+ var lab1 = document.createElement('label');
+ lab1.className = 'quiz-admin-q-label';
+ lab1.appendChild(document.createTextNode('คำถาม '));
+ var inp = document.createElement('input');
+ inp.type = 'text';
+ inp.className = 'quiz-admin-q-text';
+ inp.placeholder = 'พิมพ์คำถาม...';
+ inp.maxLength = 500;
+ inp.value = text || '';
+ lab1.appendChild(inp);
+
+ var lab2 = document.createElement('label');
+ lab2.className = 'quiz-admin-ans-label';
+ lab2.appendChild(document.createTextNode('คำตอบถูก '));
+ var sel = document.createElement('select');
+ sel.className = 'quiz-admin-q-ans';
+ [['true', 'จริง (ถูก)'], ['false', 'เท็จ (ผิด)']].forEach(function (pair) {
+ var o = document.createElement('option');
+ o.value = pair[0];
+ o.textContent = pair[1];
+ var isTrue = answerTrue !== false;
+ if (pair[0] === 'true' ? isTrue : !isTrue) o.selected = true;
+ sel.appendChild(o);
+ });
+ lab2.appendChild(sel);
+
+ var rm = document.createElement('button');
+ rm.type = 'button';
+ rm.className = 'btn btn-danger btn-sm quiz-admin-q-remove';
+ rm.setAttribute('aria-label', 'ลบข้อนี้');
+ rm.textContent = 'ลบ';
+ rm.addEventListener('click', function () {
+ row.remove();
+ if (!list.querySelector('.quiz-admin-q-row')) addQuizAdminRow('', true);
+ });
+
+ row.appendChild(lab1);
+ row.appendChild(lab2);
+ row.appendChild(rm);
+ list.appendChild(row);
+ }
+
+ function renderQuizAdminQuestions(arr) {
+ var list = el('quiz-admin-questions-list');
+ if (!list) return;
+ list.innerHTML = '';
+ var rows = (arr && arr.length) ? arr : [{ text: '', answerTrue: true }];
+ rows.forEach(function (q) {
+ addQuizAdminRow(q.text || '', q.answerTrue !== false);
+ });
+ }
+
+ function loadQuizSettingsPanel() {
+ gameQuizFetch('GET').then(function (data) {
+ el('quiz-read-sec').value = String(Math.round((data.readMs || 10000) / 1000));
+ el('quiz-answer-sec').value = String(Math.round((data.answerMs || 5000) / 1000));
+ var bMs = data.betweenMs != null ? data.betweenMs : 3500;
+ el('quiz-between-sec').value = String(Math.max(0, Math.round(bMs / 1000)));
+ var rqIn = el('quiz-round-q-count');
+ if (rqIn) {
+ var rq = data.quizRoundQuestionCount != null ? parseInt(data.quizRoundQuestionCount, 10) : 10;
+ if (Number.isNaN(rq) || rq < 1) rq = 10;
+ rq = Math.min(50, rq);
+ rqIn.value = String(rq);
+ }
+ renderQuizAdminQuestions(data.questions);
+ if (data.quizMapPanelTheme && typeof data.quizMapPanelTheme === 'object') {
+ quizTfFillFormFromTheme(data.quizMapPanelTheme);
+ } else {
+ quizTfFillFormFromTheme({});
+ }
+ setMsg('quiz-settings-msg', '', '');
+ }).catch(function (e) {
+ setMsg('quiz-settings-msg', e.message || 'โหลดไม่ได้', 'error');
+ });
+ }
+
+ function saveQuizSettingsPanel() {
+ var readS = parseInt(el('quiz-read-sec').value, 10);
+ var ansS = parseInt(el('quiz-answer-sec').value, 10);
+ var betS = parseInt(el('quiz-between-sec').value, 10);
+ if (Number.isNaN(readS) || readS < 1) readS = 10;
+ if (Number.isNaN(ansS) || ansS < 1) ansS = 5;
+ if (Number.isNaN(betS) || betS < 0) betS = 3;
+ readS = Math.min(300, readS);
+ ansS = Math.min(300, ansS);
+ betS = Math.min(120, betS);
+
+ var roundQEl = el('quiz-round-q-count');
+ var roundQ = roundQEl ? parseInt(roundQEl.value, 10) : 10;
+ if (Number.isNaN(roundQ) || roundQ < 1) roundQ = 10;
+ roundQ = Math.min(50, roundQ);
+
+ var questions = [];
+ document.querySelectorAll('#quiz-admin-questions-list .quiz-admin-q-row').forEach(function (row) {
+ var inp = row.querySelector('.quiz-admin-q-text');
+ var sel = row.querySelector('.quiz-admin-q-ans');
+ var t = inp && inp.value ? String(inp.value).trim() : '';
+ if (!t) return;
+ questions.push({ text: t, answerTrue: !!(sel && sel.value === 'true') });
+ });
+
+ gameQuizFetch('PUT', {
+ readMs: readS * 1000,
+ answerMs: ansS * 1000,
+ betweenMs: betS * 1000,
+ quizRoundQuestionCount: roundQ,
+ questions: questions,
+ quizMapPanelTheme: quizTfBuildThemeForSave(),
+ }).then(function () {
+ setMsg('quiz-settings-msg', 'บันทึกแล้ว', 'ok');
+ }).catch(function (e) {
+ setMsg('quiz-settings-msg', e.message || 'บันทึกไม่ได้', 'error');
+ });
+ }
+
+ /* ===== ชุดคำถามพิเศษ (Level×Case = 15 ชุด) รับการ์ดพิเศษ ===== */
+ var SPECIAL_CARD_RARITIES = ['common', 'rare', 'legendary'];
+ var SPECIAL_CARD_ASSET_BASE = '/Game/img/special-cards/';
+ var SPECIAL_CARD_CATALOG = [
+ { id: 1, en: 'Time Dilation', th: 'เพิ่มเวลาเล่นมินิเกมทันที (+10 วินาที)' },
+ { id: 2, en: 'Extension', th: 'เพิ่มเวลาในห้องพิจารณาคดี (+10 วิ FINAL VOTE)' },
+ { id: 3, en: 'Ban Card', th: 'ห้ามเล่นมินิเกม 1 ตา' },
+ { id: 4, en: 'Silence Card', th: 'การ์ดปิดปาก' },
+ { id: 5, en: 'Bail Coin', th: 'เหรียญประกันตัว' },
+ { id: 6, en: 'Fund', th: 'รับ coin เพิ่ม' },
+ { id: 7, en: 'Free Evidence', th: 'รับหลักฐานฟรี' },
+ ];
+ var specialQuizSetsState = {};
+ var specialQuizCurrentKey = 'L1_C1';
+ var specialCardPickerBuilt = false;
+
+ function specialCardTxtFilename(id) {
+ return id === 7 ? 'card--7txt.png' : 'card-' + id + '-txt.png';
+ }
+
+ function specialCardImageUrl(id) {
+ return SPECIAL_CARD_ASSET_BASE + 'card-' + id + '.png';
+ }
+
+ function specialCardTxtImageUrl(id) {
+ return SPECIAL_CARD_ASSET_BASE + specialCardTxtFilename(id);
+ }
+
+ function specialCardCatalogEntry(id) {
+ for (var i = 0; i < SPECIAL_CARD_CATALOG.length; i++) {
+ if (SPECIAL_CARD_CATALOG[i].id === id) return SPECIAL_CARD_CATALOG[i];
+ }
+ return null;
+ }
+
+ function resolveSpecialCardIdFromSaved(card) {
+ if (!card || typeof card !== 'object') return null;
+ var cid = Number(card.cardId);
+ if (cid >= 1 && cid <= 7) return cid;
+ var url = String(card.imageUrl || '');
+ var m = url.match(/\/card-(\d)\.png/i);
+ return m ? Number(m[1]) : null;
+ }
+
+ function updateSpecialCardPreview() {
+ var prev = el('special-card-preview');
+ var img = el('special-card-preview-img');
+ var cid = parseInt(el('special-card-id') && el('special-card-id').value, 10);
+ if (!prev || !img) return;
+ if (!(cid >= 1 && cid <= 7)) {
+ prev.hidden = true;
+ img.removeAttribute('src');
+ return;
+ }
+ img.src = specialCardImageUrl(cid);
+ img.alt = (specialCardCatalogEntry(cid) || {}).en || ('Card ' + cid);
+ prev.hidden = false;
+ }
+
+ function setSpecialCardPickerSelection(cardId) {
+ var picker = el('special-card-picker');
+ if (!picker) return;
+ picker.querySelectorAll('.sq-card-pick').forEach(function (btn) {
+ var on = String(btn.getAttribute('data-card-id')) === String(cardId);
+ btn.classList.toggle('is-selected', on);
+ btn.setAttribute('aria-checked', on ? 'true' : 'false');
+ });
+ }
+
+ function selectSpecialCard(cardId, fillMeta) {
+ var idInp = el('special-card-id');
+ var imgInp = el('special-card-image');
+ var txtInp = el('special-card-txt-image');
+ if (!(cardId >= 1 && cardId <= 7)) {
+ if (idInp) idInp.value = '';
+ if (imgInp) imgInp.value = '';
+ if (txtInp) txtInp.value = '';
+ setSpecialCardPickerSelection(null);
+ updateSpecialCardPreview();
+ return;
+ }
+ var entry = specialCardCatalogEntry(cardId);
+ if (idInp) idInp.value = String(cardId);
+ if (imgInp) imgInp.value = specialCardImageUrl(cardId);
+ if (txtInp) txtInp.value = specialCardTxtImageUrl(cardId);
+ if (fillMeta && entry) {
+ if (el('special-card-th')) el('special-card-th').value = entry.th;
+ if (el('special-card-en')) el('special-card-en').value = entry.en;
+ }
+ setSpecialCardPickerSelection(cardId);
+ updateSpecialCardPreview();
+ }
+
+ function ensureSpecialCardPicker() {
+ if (specialCardPickerBuilt) return;
+ var picker = el('special-card-picker');
+ if (!picker) return;
+ picker.innerHTML = '';
+ SPECIAL_CARD_CATALOG.forEach(function (entry) {
+ var btn = document.createElement('button');
+ btn.type = 'button';
+ btn.className = 'sq-card-pick';
+ btn.setAttribute('role', 'radio');
+ btn.setAttribute('aria-checked', 'false');
+ btn.setAttribute('data-card-id', String(entry.id));
+ btn.title = entry.en + ' — ' + entry.th;
+ var img = document.createElement('img');
+ img.src = specialCardImageUrl(entry.id);
+ img.alt = entry.en;
+ img.width = 72;
+ img.height = 96;
+ img.decoding = 'async';
+ img.loading = 'lazy';
+ var cap = document.createElement('span');
+ cap.className = 'sq-card-pick-cap';
+ cap.textContent = entry.en;
+ btn.appendChild(img);
+ btn.appendChild(cap);
+ btn.addEventListener('click', function () {
+ selectSpecialCard(entry.id, true);
+ });
+ picker.appendChild(btn);
+ });
+ specialCardPickerBuilt = true;
+ }
+
+ function specialQuizSelectorKey() {
+ var L = el('special-quiz-level');
+ var C = el('special-quiz-case');
+ return 'L' + ((L && L.value) || '1') + '_C' + ((C && C.value) || '1');
+ }
+
+ function updateSpecialQuizCount() {
+ var c = el('special-quiz-count');
+ if (!c) return;
+ var n = document.querySelectorAll('#special-quiz-questions-list .sq-mcq-row').length;
+ c.textContent = '(' + n + ' ข้อ)';
+ }
+
+ var SPECIAL_QUIZ_CHOICE_COUNT = 4;
+ var SPECIAL_QUIZ_LETTERS = ['A', 'B', 'C', 'D', 'E', 'F'];
+
+ /** คำถามตัวเลือก A/B/C/D — เลือกคำตอบถูก 1 ข้อ */
+ function addSpecialQuizRow(q) {
+ q = q || {};
+ var list = el('special-quiz-questions-list');
+ if (!list) return;
+ var choices = Array.isArray(q.choices) ? q.choices : [];
+ var correctIndex = Number(q.correctIndex);
+ if (!(correctIndex >= 0 && correctIndex < SPECIAL_QUIZ_CHOICE_COUNT)) correctIndex = 0;
+
+ var row = document.createElement('div');
+ row.className = 'quiz-admin-q-row sq-mcq-row';
+
+ var qLab = document.createElement('label');
+ qLab.className = 'sq-mcq-q';
+ qLab.appendChild(document.createTextNode('คำถาม'));
+ var qInp = document.createElement('input');
+ qInp.type = 'text';
+ qInp.className = 'sq-mcq-text';
+ qInp.maxLength = 500;
+ qInp.placeholder = 'พิมพ์คำถาม...';
+ qInp.value = q.text || '';
+ qLab.appendChild(qInp);
+
+ var grid = document.createElement('div');
+ grid.className = 'sq-mcq-choices';
+ for (var i = 0; i < SPECIAL_QUIZ_CHOICE_COUNT; i++) {
+ var cl = document.createElement('label');
+ cl.className = 'sq-mcq-choice';
+ var badge = document.createElement('span');
+ badge.className = 'sq-mcq-letter';
+ badge.textContent = SPECIAL_QUIZ_LETTERS[i];
+ var ci = document.createElement('input');
+ ci.type = 'text';
+ ci.className = 'sq-mcq-choice-input';
+ ci.maxLength = 200;
+ ci.placeholder = 'ตัวเลือก ' + SPECIAL_QUIZ_LETTERS[i];
+ ci.value = choices[i] || '';
+ ci.setAttribute('data-choice-index', String(i));
+ cl.appendChild(badge);
+ cl.appendChild(ci);
+ grid.appendChild(cl);
+ }
+
+ var foot = document.createElement('div');
+ foot.className = 'sq-mcq-foot';
+ var ansLab = document.createElement('label');
+ ansLab.className = 'sq-mcq-ans';
+ ansLab.appendChild(document.createTextNode('คำตอบที่ถูก '));
+ var ansSel = document.createElement('select');
+ ansSel.className = 'sq-mcq-correct';
+ for (var j = 0; j < SPECIAL_QUIZ_CHOICE_COUNT; j++) {
+ var o = document.createElement('option');
+ o.value = String(j);
+ o.textContent = SPECIAL_QUIZ_LETTERS[j];
+ if (j === correctIndex) o.selected = true;
+ ansSel.appendChild(o);
+ }
+ ansLab.appendChild(ansSel);
+
+ var rm = document.createElement('button');
+ rm.type = 'button';
+ rm.className = 'btn btn-danger btn-sm quiz-admin-q-remove';
+ rm.setAttribute('aria-label', 'ลบข้อนี้');
+ rm.textContent = 'ลบ';
+ rm.addEventListener('click', function () {
+ row.remove();
+ updateSpecialQuizCount();
+ });
+ foot.appendChild(ansLab);
+ foot.appendChild(rm);
+
+ row.appendChild(qLab);
+ row.appendChild(grid);
+ row.appendChild(foot);
+ list.appendChild(row);
+ }
+
+ function renderSpecialQuizSet(key) {
+ ensureSpecialCardPicker();
+ var set = specialQuizSetsState[key] || { questions: [], specialCard: {} };
+ var card = (set.specialCard && typeof set.specialCard === 'object') ? set.specialCard : {};
+ var cardId = resolveSpecialCardIdFromSaved(card);
+ selectSpecialCard(cardId, false);
+ if (el('special-card-th')) el('special-card-th').value = card.th || (cardId ? (specialCardCatalogEntry(cardId) || {}).th : '') || '';
+ if (el('special-card-en')) el('special-card-en').value = card.en || (cardId ? (specialCardCatalogEntry(cardId) || {}).en : '') || '';
+ if (el('special-card-rarity')) {
+ el('special-card-rarity').value = SPECIAL_CARD_RARITIES.indexOf(card.rarity) >= 0 ? card.rarity : 'rare';
+ }
+ if (cardId && el('special-card-image')) el('special-card-image').value = card.imageUrl || specialCardImageUrl(cardId);
+ if (cardId && el('special-card-txt-image')) el('special-card-txt-image').value = card.txtImageUrl || specialCardTxtImageUrl(cardId);
+ var list = el('special-quiz-questions-list');
+ if (list) {
+ list.innerHTML = '';
+ var qs = (set.questions && set.questions.length)
+ ? set.questions
+ : [{ type: 'mcq', text: '', choices: ['', '', '', ''], correctIndex: 0 }];
+ qs.forEach(addSpecialQuizRow);
+ }
+ var tag = el('special-quiz-set-tag');
+ if (tag) tag.textContent = 'ชุดที่แก้: ' + key;
+ updateSpecialQuizCount();
+ }
+
+ function captureSpecialQuizForm(key) {
+ var questions = [];
+ document.querySelectorAll('#special-quiz-questions-list .sq-mcq-row').forEach(function (row) {
+ var inp = row.querySelector('.sq-mcq-text');
+ var t = inp && inp.value ? String(inp.value).trim() : '';
+ if (!t) return;
+ var choices = [];
+ row.querySelectorAll('.sq-mcq-choice-input').forEach(function (ci) {
+ choices.push(String(ci.value || '').trim());
+ });
+ if (choices.filter(function (c) { return c; }).length < 2) return;
+ var sel = row.querySelector('.sq-mcq-correct');
+ var correctIndex = sel ? parseInt(sel.value, 10) : 0;
+ if (!(correctIndex >= 0 && correctIndex < choices.length) || !choices[correctIndex]) {
+ correctIndex = choices.findIndex(function (c) { return c; });
+ if (correctIndex < 0) correctIndex = 0;
+ }
+ questions.push({ type: 'mcq', text: t, choices: choices, correctIndex: correctIndex });
+ });
+ var rar = el('special-card-rarity') ? el('special-card-rarity').value : 'rare';
+ var cardId = parseInt(el('special-card-id') && el('special-card-id').value, 10);
+ if (!(cardId >= 1 && cardId <= 7)) cardId = null;
+ specialQuizSetsState[key] = {
+ questions: questions,
+ specialCard: {
+ cardId: cardId,
+ th: el('special-card-th') ? String(el('special-card-th').value || '').trim() : '',
+ en: el('special-card-en') ? String(el('special-card-en').value || '').trim() : '',
+ rarity: SPECIAL_CARD_RARITIES.indexOf(rar) >= 0 ? rar : 'rare',
+ imageUrl: el('special-card-image') ? String(el('special-card-image').value || '').trim() : '',
+ txtImageUrl: el('special-card-txt-image') ? String(el('special-card-txt-image').value || '').trim() : '',
+ },
+ };
+ }
+
+ function onSpecialQuizSelectorChange() {
+ captureSpecialQuizForm(specialQuizCurrentKey);
+ specialQuizCurrentKey = specialQuizSelectorKey();
+ renderSpecialQuizSet(specialQuizCurrentKey);
+ }
+
+ function loadSpecialQuizPanel() {
+ setMsg('special-quiz-msg', 'กำลังโหลด...', '');
+ gameQuizFetch('GET').then(function (data) {
+ specialQuizSetsState = (data.specialQuizSets && typeof data.specialQuizSets === 'object') ? data.specialQuizSets : {};
+ specialQuizCurrentKey = specialQuizSelectorKey();
+ renderSpecialQuizSet(specialQuizCurrentKey);
+ setMsg('special-quiz-msg', '', '');
+ }).catch(function (e) {
+ setMsg('special-quiz-msg', e.message || 'โหลดไม่ได้', 'error');
+ });
+ }
+
+ function saveSpecialQuizPanel() {
+ captureSpecialQuizForm(specialQuizCurrentKey);
+ setMsg('special-quiz-msg', 'กำลังบันทึก...', '');
+ gameQuizFetch('PUT', { specialQuizSets: specialQuizSetsState }).then(function (res) {
+ if (res && res.specialQuizSets && typeof res.specialQuizSets === 'object') {
+ specialQuizSetsState = res.specialQuizSets;
+ }
+ setMsg('special-quiz-msg', 'บันทึกแล้ว (15 ชุด)', 'ok');
+ renderSpecialQuizSet(specialQuizCurrentKey);
+ }).catch(function (e) {
+ setMsg('special-quiz-msg', e.message || 'บันทึกไม่ได้', 'error');
+ });
+ }
+
+ function quizTfThemeHiddenId(kind) {
+ if (kind === 'bg') return 'quiz-tf-theme-bg';
+ if (kind === 'border') return 'quiz-tf-theme-border';
+ return 'quiz-tf-theme-text';
+ }
+
+ function quizTfRowPrefix(kind) {
+ return 'quiz-tf-theme-' + kind;
+ }
+
+ function quizTfSetPickersFromColorString(kind, cssStr) {
+ var fb = QUIZ_CARRY_THEME_DEFAULTS[kind];
+ var o = quizCarryParseCssColor(cssStr, fb);
+ var pref = quizTfRowPrefix(kind);
+ var sw = el(pref + '-swatch');
+ var ra = el(pref + '-alpha');
+ var out = el(pref + '-alpha-out');
+ var hi = el(quizTfThemeHiddenId(kind));
+ var pr = el(pref + '-preview');
+ if (!sw || !ra || !hi) return;
+ sw.value = quizCarryHexFromRgb(o.r, o.g, o.b);
+ var pct = Math.max(0, Math.min(100, Math.round(Number(o.a) * 100)));
+ ra.value = String(pct);
+ if (out) out.textContent = pct + '%';
+ hi.value = quizCarryRgbToRgbaString(o);
+ if (pr) pr.textContent = hi.value;
+ }
+
+ function quizTfComposeFromPickers(kind) {
+ var pref = quizTfRowPrefix(kind);
+ var sw = el(pref + '-swatch');
+ var ra = el(pref + '-alpha');
+ if (!sw || !ra) return '';
+ var pr = quizCarryParseHexToRgb(sw.value);
+ if (!pr) return '';
+ var pct = parseInt(String(ra.value), 10);
+ if (!Number.isFinite(pct)) pct = 100;
+ pct = Math.max(0, Math.min(100, pct));
+ return quizCarryRgbToRgbaString({ r: pr.r, g: pr.g, b: pr.b, a: pct / 100 });
+ }
+
+ function quizTfSyncRowOutput(kind) {
+ var s = quizTfComposeFromPickers(kind);
+ var hi = el(quizTfThemeHiddenId(kind));
+ var pref = quizTfRowPrefix(kind);
+ var ra = el(pref + '-alpha');
+ var out = el(pref + '-alpha-out');
+ var pr = el(pref + '-preview');
+ if (hi) hi.value = s;
+ if (out && ra) out.textContent = String(Math.max(0, Math.min(100, parseInt(ra.value, 10) || 0))) + '%';
+ if (pr && hi) pr.textContent = hi.value;
+ }
+
+ function quizTfBindThemePickersOnce() {
+ if (quizTfBindThemePickersOnce._done) return;
+ ['bg', 'border', 'text'].forEach(function (kind) {
+ var pref = quizTfRowPrefix(kind);
+ var sw = el(pref + '-swatch');
+ var ra = el(pref + '-alpha');
+ if (!sw || !ra) return;
+ if (ra.getAttribute('data-tf-bound') === '1') return;
+ ra.setAttribute('data-tf-bound', '1');
+ function sync() {
+ quizTfSyncRowOutput(kind);
+ }
+ sw.addEventListener('input', sync);
+ sw.addEventListener('change', sync);
+ ra.addEventListener('input', sync);
+ ra.addEventListener('change', sync);
+ });
+ quizTfBindThemePickersOnce._done = true;
+ }
+
+ function quizTfBuildThemeForSave() {
+ quizTfBindThemePickersOnce();
+ ['bg', 'border', 'text'].forEach(function (k) {
+ quizTfSyncRowOutput(k);
+ });
+ var fbBg = QUIZ_CARRY_THEME_DEFAULTS.bg;
+ var fbBr = QUIZ_CARRY_THEME_DEFAULTS.border;
+ var fbTx = QUIZ_CARRY_THEME_DEFAULTS.text;
+ var sBg = quizTfComposeFromPickers('bg');
+ var sBr = quizTfComposeFromPickers('border');
+ var sTx = quizTfComposeFromPickers('text');
+ var bwEl = el('quiz-tf-theme-border-w');
+ var bw = bwEl ? parseInt(String(bwEl.value || '2'), 10) : 2;
+ if (!Number.isFinite(bw)) bw = 2;
+ bw = Math.max(0, Math.min(12, Math.round(bw)));
+ var qfMinEl = el('quiz-tf-theme-qfont-min');
+ var qfMaxEl = el('quiz-tf-theme-qfont-max');
+ var qMin = qfMinEl ? parseInt(String(qfMinEl.value || '10'), 10) : 10;
+ var qMax = qfMaxEl ? parseInt(String(qfMaxEl.value || '24'), 10) : 24;
+ if (!Number.isFinite(qMin)) qMin = 10;
+ if (!Number.isFinite(qMax)) qMax = 24;
+ qMin = Math.max(10, Math.min(40, Math.round(qMin)));
+ qMax = Math.max(14, Math.min(56, Math.round(qMax)));
+ if (qMax < qMin) {
+ var swap = qMin;
+ qMin = qMax;
+ qMax = swap;
+ }
+ return {
+ panelBg: (sBg && sBg.trim()) ? sBg.trim().slice(0, 120) : quizCarryRgbToRgbaString(fbBg),
+ panelBorder: (sBr && sBr.trim()) ? sBr.trim().slice(0, 120) : quizCarryRgbToRgbaString(fbBr),
+ textColor: (sTx && sTx.trim()) ? sTx.trim().slice(0, 120) : quizCarryRgbToRgbaString(fbTx),
+ borderWidthPx: bw,
+ questionFontMinPx: qMin,
+ questionFontMaxPx: qMax,
+ };
+ }
+
+ function quizTfFillFormFromTheme(th) {
+ quizTfBindThemePickersOnce();
+ var t = th && typeof th === 'object' ? th : {};
+ quizTfSetPickersFromColorString('bg', t.panelBg);
+ quizTfSetPickersFromColorString('border', t.panelBorder);
+ quizTfSetPickersFromColorString('text', t.textColor);
+ var bwEl = el('quiz-tf-theme-border-w');
+ var bw = parseInt(String(t.borderWidthPx), 10);
+ if (bwEl) bwEl.value = String(Number.isFinite(bw) && bw >= 0 ? Math.min(12, bw) : 2);
+ var qfMinEl = el('quiz-tf-theme-qfont-min');
+ var qfMaxEl = el('quiz-tf-theme-qfont-max');
+ var qMin = parseInt(String(t.questionFontMinPx), 10);
+ var qMax = parseInt(String(t.questionFontMaxPx), 10);
+ if (qfMinEl) qfMinEl.value = String(Number.isFinite(qMin) ? Math.max(10, Math.min(40, qMin)) : 10);
+ if (qfMaxEl) qfMaxEl.value = String(Number.isFinite(qMax) ? Math.max(14, Math.min(56, qMax)) : 24);
+ }
+
+ var QUIZ_CARRY_MAX_SLOTS = 16;
+
+ function rebuildQuizCarryCorrectSelect(row) {
+ var sel = row.querySelector('.quiz-carry-correct-sel');
+ if (!sel) return;
+ var inputs = row.querySelectorAll('.quiz-carry-slot-inp');
+ var prev = sel.value;
+ sel.innerHTML = '';
+ var has = false;
+ for (var i = 0; i < inputs.length; i++) {
+ var t = inputs[i].value ? String(inputs[i].value).trim() : '';
+ if (!t) continue;
+ has = true;
+ var o = document.createElement('option');
+ o.value = String(i);
+ var preview = t.length > 48 ? t.slice(0, 45) + '…' : t;
+ o.textContent = String(i + 1) + '. ' + preview;
+ sel.appendChild(o);
+ }
+ if (!has) {
+ var ox = document.createElement('option');
+ ox.value = '';
+ ox.textContent = '— กรอกตัวเลือกอย่างน้อย 2 ช่อง —';
+ sel.appendChild(ox);
+ sel.disabled = true;
+ return;
+ }
+ sel.disabled = false;
+ var ok = false;
+ for (var j = 0; j < sel.options.length; j++) {
+ if (sel.options[j].value === prev) {
+ sel.selectedIndex = j;
+ ok = true;
+ break;
+ }
+ }
+ if (!ok) sel.selectedIndex = 0;
+ }
+
+ function bindQuizCarryRowInputs(row) {
+ row.querySelectorAll('.quiz-carry-slot-inp').forEach(function (inp) {
+ inp.addEventListener('input', function () {
+ rebuildQuizCarryCorrectSelect(row);
+ });
+ });
+ }
+
+ function addQuizCarryAdminRow(q) {
+ var list = el('quiz-carry-admin-list');
+ if (!list) return;
+ q = q || {};
+ var choices = Array.isArray(q.choices) ? q.choices : [];
+ var choiceImages = Array.isArray(q.choiceImageUrls) ? q.choiceImageUrls : [];
+ var block = document.createElement('div');
+ block.className = 'quiz-carry-admin-block';
+
+ var head = document.createElement('div');
+ head.className = 'quiz-carry-admin-block-head';
+
+ var labQ = document.createElement('label');
+ labQ.className = 'quiz-carry-q-label';
+ labQ.appendChild(document.createTextNode('คำถาม'));
+ var inpQ = document.createElement('input');
+ inpQ.type = 'text';
+ inpQ.className = 'quiz-carry-q-text';
+ inpQ.placeholder = 'พิมพ์คำถาม…';
+ inpQ.maxLength = 500;
+ inpQ.value = q.text ? String(q.text) : '';
+ labQ.appendChild(inpQ);
+
+ var rm = document.createElement('button');
+ rm.type = 'button';
+ rm.className = 'btn btn-danger btn-sm quiz-carry-block-remove';
+ rm.setAttribute('aria-label', 'ลบข้อนี้');
+ rm.textContent = 'ลบข้อ';
+ rm.addEventListener('click', function () {
+ block.remove();
+ if (!list.querySelector('.quiz-carry-admin-block')) addQuizCarryAdminRow(null);
+ });
+
+ head.appendChild(labQ);
+ head.appendChild(rm);
+ block.appendChild(head);
+
+ var grid = document.createElement('div');
+ grid.className = 'quiz-carry-choice-grid';
+ for (var s = 0; s < QUIZ_CARRY_MAX_SLOTS; s++) {
+ var lab = document.createElement('label');
+ lab.className = 'quiz-carry-slot-label';
+ lab.appendChild(document.createTextNode('ตัวเลือก ' + (s + 1)));
+ var inp = document.createElement('input');
+ inp.type = 'text';
+ inp.className = 'quiz-carry-slot-inp';
+ inp.placeholder = s < 2 ? 'จำเป็น' : 'ไม่บังคับ';
+ inp.maxLength = 160;
+ inp.value = choices[s] != null ? String(choices[s]) : '';
+ lab.appendChild(inp);
+ var imgInp = document.createElement('input');
+ imgInp.type = 'url';
+ imgInp.className = 'quiz-carry-slot-img';
+ imgInp.placeholder = 'รูป (URL — ไม่บังคับ)';
+ imgInp.maxLength = 512;
+ imgInp.autocomplete = 'off';
+ imgInp.value = choiceImages[s] != null ? String(choiceImages[s]) : '';
+ imgInp.setAttribute('aria-label', 'URL รูปตัวเลือก ' + (s + 1));
+ lab.appendChild(imgInp);
+ grid.appendChild(lab);
+ }
+ block.appendChild(grid);
+
+ var cw = document.createElement('div');
+ cw.className = 'quiz-carry-correct-wrap';
+ var labC = document.createElement('label');
+ labC.className = 'quiz-carry-correct-label';
+ labC.appendChild(document.createTextNode('ข้อที่ถูกต้อง'));
+ var sel = document.createElement('select');
+ sel.className = 'quiz-carry-correct-sel';
+ sel.setAttribute('aria-label', 'เลือกข้อที่ถูก');
+ labC.appendChild(sel);
+ cw.appendChild(labC);
+ block.appendChild(cw);
+
+ list.appendChild(block);
+ bindQuizCarryRowInputs(block);
+ rebuildQuizCarryCorrectSelect(block);
+ var ci = Number(q.correctIndex);
+ if (Number.isFinite(ci) && ci >= 0) {
+ var targetSlot = ci;
+ var opts = sel.querySelectorAll('option');
+ for (var k = 0; k < opts.length; k++) {
+ if (opts[k].value === String(targetSlot)) {
+ sel.selectedIndex = k;
+ break;
+ }
+ }
+ }
+ }
+
+ function renderQuizCarryAdminList(arr) {
+ var list = el('quiz-carry-admin-list');
+ if (!list) return;
+ list.innerHTML = '';
+ var rows = arr && arr.length ? arr : [null];
+ rows.forEach(function (q) {
+ addQuizCarryAdminRow(q);
+ });
+ }
+
+ /** ค่าเริ่มต้น RGBA สำหรับแผงคำถามบนแผนที่ (quiz_carry) */
+ var QUIZ_CARRY_THEME_DEFAULTS = {
+ bg: { r: 12, g: 14, b: 28, a: 0.88 },
+ border: { r: 255, g: 214, b: 102, a: 0.7 },
+ text: { r: 241, g: 245, b: 249, a: 1 },
+ };
+
+ function quizCarryClampByte(n) {
+ return Math.max(0, Math.min(255, Math.round(Number(n)) || 0));
+ }
+
+ function quizCarryHexFromRgb(r, g, b) {
+ return '#' + [r, g, b].map(function (x) {
+ var h = quizCarryClampByte(x).toString(16);
+ return h.length === 1 ? '0' + h : h;
+ }).join('');
+ }
+
+ function quizCarryParseHexToRgb(hex) {
+ var h = String(hex || '').trim().replace(/^#/, '');
+ if (!h) return null;
+ if (h.length === 3) {
+ return {
+ r: parseInt(h[0] + h[0], 16),
+ g: parseInt(h[1] + h[1], 16),
+ b: parseInt(h[2] + h[2], 16),
+ alpha01: null,
+ };
+ }
+ if (h.length === 6) {
+ return {
+ r: parseInt(h.slice(0, 2), 16),
+ g: parseInt(h.slice(2, 4), 16),
+ b: parseInt(h.slice(4, 6), 16),
+ alpha01: null,
+ };
+ }
+ if (h.length === 8) {
+ return {
+ r: parseInt(h.slice(0, 2), 16),
+ g: parseInt(h.slice(2, 4), 16),
+ b: parseInt(h.slice(4, 6), 16),
+ alpha01: parseInt(h.slice(6, 8), 16) / 255,
+ };
+ }
+ return null;
+ }
+
+ function quizCarryParseCssColor(str, fallback) {
+ var s = String(str == null ? '' : str).trim();
+ if (!s) return fallback;
+ var m = /^rgba?\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*(?:,\s*([0-9.]+)\s*)?\)$/i.exec(s);
+ if (m) {
+ var a = m[4] != null && m[4] !== '' ? parseFloat(m[4]) : 1;
+ if (!Number.isFinite(a)) a = 1;
+ return {
+ r: quizCarryClampByte(parseInt(m[1], 10)),
+ g: quizCarryClampByte(parseInt(m[2], 10)),
+ b: quizCarryClampByte(parseInt(m[3], 10)),
+ a: Math.max(0, Math.min(1, a)),
+ };
+ }
+ if (/^#/.test(s)) {
+ var pr = quizCarryParseHexToRgb(s);
+ if (!pr) return fallback;
+ var a = pr.alpha01 != null ? pr.alpha01 : 1;
+ return { r: pr.r, g: pr.g, b: pr.b, a: Math.max(0, Math.min(1, a)) };
+ }
+ return fallback;
+ }
+
+ function quizCarryRgbToRgbaString(o) {
+ var a = Math.max(0, Math.min(1, Number(o.a)));
+ var t = Math.round(a * 1000) / 1000;
+ return 'rgba(' + quizCarryClampByte(o.r) + ', ' + quizCarryClampByte(o.g) + ', ' + quizCarryClampByte(o.b) + ', ' + t + ')';
+ }
+
+ function quizCarryRowPrefix(kind) {
+ return 'quiz-carry-theme-' + kind;
+ }
+
+ function quizCarryThemeHiddenId(kind) {
+ if (kind === 'bg') return 'quiz-carry-theme-bg';
+ if (kind === 'border') return 'quiz-carry-theme-border';
+ return 'quiz-carry-theme-text';
+ }
+
+ function quizCarrySetPickersFromColorString(kind, cssStr) {
+ var fb = QUIZ_CARRY_THEME_DEFAULTS[kind];
+ var o = quizCarryParseCssColor(cssStr, fb);
+ var pref = quizCarryRowPrefix(kind);
+ var sw = el(pref + '-swatch');
+ var ra = el(pref + '-alpha');
+ var out = el(pref + '-alpha-out');
+ var hi = el(quizCarryThemeHiddenId(kind));
+ var pr = el(pref + '-preview');
+ if (!sw || !ra || !hi) return;
+ sw.value = quizCarryHexFromRgb(o.r, o.g, o.b);
+ var pct = Math.max(0, Math.min(100, Math.round(Number(o.a) * 100)));
+ ra.value = String(pct);
+ if (out) out.textContent = pct + '%';
+ hi.value = quizCarryRgbToRgbaString(o);
+ if (pr) pr.textContent = hi.value;
+ }
+
+ function quizCarryComposeFromPickers(kind) {
+ var pref = quizCarryRowPrefix(kind);
+ var sw = el(pref + '-swatch');
+ var ra = el(pref + '-alpha');
+ if (!sw || !ra) return '';
+ var pr = quizCarryParseHexToRgb(sw.value);
+ if (!pr) return '';
+ var pct = parseInt(String(ra.value), 10);
+ if (!Number.isFinite(pct)) pct = 100;
+ pct = Math.max(0, Math.min(100, pct));
+ return quizCarryRgbToRgbaString({ r: pr.r, g: pr.g, b: pr.b, a: pct / 100 });
+ }
+
+ function quizCarrySyncRowOutput(kind) {
+ var s = quizCarryComposeFromPickers(kind);
+ var hi = el(quizCarryThemeHiddenId(kind));
+ var pref = quizCarryRowPrefix(kind);
+ var ra = el(pref + '-alpha');
+ var out = el(pref + '-alpha-out');
+ var pr = el(pref + '-preview');
+ if (hi) hi.value = s;
+ if (out && ra) out.textContent = String(Math.max(0, Math.min(100, parseInt(ra.value, 10) || 0))) + '%';
+ if (pr && hi) pr.textContent = hi.value;
+ }
+
+ /** อ่านค่าจาก color + range โดยตรง (ไม่พึ่ง hidden ที่อาจว่าง) ก่อน PUT */
+ function quizCarryBuildThemeForSave() {
+ quizCarryBindThemePickersOnce();
+ ['bg', 'border', 'text'].forEach(function (k) {
+ quizCarrySyncRowOutput(k);
+ });
+ var fbBg = QUIZ_CARRY_THEME_DEFAULTS.bg;
+ var fbBr = QUIZ_CARRY_THEME_DEFAULTS.border;
+ var fbTx = QUIZ_CARRY_THEME_DEFAULTS.text;
+ var sBg = quizCarryComposeFromPickers('bg');
+ var sBr = quizCarryComposeFromPickers('border');
+ var sTx = quizCarryComposeFromPickers('text');
+ var bwEl = el('quiz-carry-theme-border-w');
+ var bw = bwEl ? parseInt(String(bwEl.value || '2'), 10) : 2;
+ if (!Number.isFinite(bw)) bw = 2;
+ bw = Math.max(0, Math.min(12, Math.round(bw)));
+ var qfMinEl = el('quiz-carry-theme-qfont-min');
+ var qfMaxEl = el('quiz-carry-theme-qfont-max');
+ var qMin = qfMinEl ? parseInt(String(qfMinEl.value || '10'), 10) : 10;
+ var qMax = qfMaxEl ? parseInt(String(qfMaxEl.value || '24'), 10) : 24;
+ if (!Number.isFinite(qMin)) qMin = 10;
+ if (!Number.isFinite(qMax)) qMax = 24;
+ qMin = Math.max(10, Math.min(40, Math.round(qMin)));
+ qMax = Math.max(14, Math.min(56, Math.round(qMax)));
+ if (qMax < qMin) {
+ var swap = qMin;
+ qMin = qMax;
+ qMax = swap;
+ }
+ return {
+ panelBg: (sBg && sBg.trim()) ? sBg.trim().slice(0, 120) : quizCarryRgbToRgbaString(fbBg),
+ panelBorder: (sBr && sBr.trim()) ? sBr.trim().slice(0, 120) : quizCarryRgbToRgbaString(fbBr),
+ textColor: (sTx && sTx.trim()) ? sTx.trim().slice(0, 120) : quizCarryRgbToRgbaString(fbTx),
+ borderWidthPx: bw,
+ questionFontMinPx: qMin,
+ questionFontMaxPx: qMax,
+ };
+ }
+
+ function quizCarryBindThemePickersOnce() {
+ if (quizCarryBindThemePickersOnce._done) return;
+ ['bg', 'border', 'text'].forEach(function (kind) {
+ var pref = quizCarryRowPrefix(kind);
+ var sw = el(pref + '-swatch');
+ var ra = el(pref + '-alpha');
+ if (!sw || !ra) return;
+ if (ra.getAttribute('data-bound') === '1') return;
+ ra.setAttribute('data-bound', '1');
+ function sync() {
+ quizCarrySyncRowOutput(kind);
+ }
+ sw.addEventListener('input', sync);
+ sw.addEventListener('change', sync);
+ ra.addEventListener('input', sync);
+ ra.addEventListener('change', sync);
+ });
+ quizCarryBindThemePickersOnce._done = true;
+ }
+
+ /** ธีมนับ 3-2-1 embed — สีม่าน / กล่อง / ขนาด (carryEmbedCountdownTheme) */
+ var QUIZ_CARRY_ECD_COLS = [
+ { sw: 'quiz-carry-ecd-overlay-swatch', ra: 'quiz-carry-ecd-overlay-alpha', out: 'quiz-carry-ecd-overlay-alpha-out', hi: 'quiz-carry-ecd-overlay-val', pr: 'quiz-carry-ecd-overlay-preview' },
+ { sw: 'quiz-carry-ecd-inner-bg-swatch', ra: 'quiz-carry-ecd-inner-bg-alpha', out: 'quiz-carry-ecd-inner-bg-alpha-out', hi: 'quiz-carry-ecd-inner-bg-val', pr: 'quiz-carry-ecd-inner-bg-preview' },
+ { sw: 'quiz-carry-ecd-inner-border-swatch', ra: 'quiz-carry-ecd-inner-border-alpha', out: 'quiz-carry-ecd-inner-border-alpha-out', hi: 'quiz-carry-ecd-inner-border-val', pr: 'quiz-carry-ecd-inner-border-preview' },
+ ];
+ var QUIZ_CARRY_ECD_DEFAULTS_RGBA = {
+ overlay: { r: 8, g: 10, b: 20, a: 0.42 },
+ innerBg: { r: 12, g: 14, b: 28, a: 0.82 },
+ innerBorder: { r: 122, g: 162, b: 247, a: 0.45 },
+ };
+
+ function quizCarryEcdColKey(idx) {
+ if (idx === 0) return 'overlay';
+ if (idx === 1) return 'innerBg';
+ return 'innerBorder';
+ }
+
+ function quizCarryEcdSyncRow(idx) {
+ var row = QUIZ_CARRY_ECD_COLS[idx];
+ var sw = el(row.sw);
+ var ra = el(row.ra);
+ var hi = el(row.hi);
+ var pr = el(row.pr);
+ var out = el(row.out);
+ if (!sw || !ra || !hi) return;
+ var prRgb = quizCarryParseHexToRgb(sw.value);
+ if (!prRgb) return;
+ var pct = parseInt(String(ra.value), 10);
+ if (!Number.isFinite(pct)) pct = 100;
+ pct = Math.max(0, Math.min(100, pct));
+ var s = quizCarryRgbToRgbaString({ r: prRgb.r, g: prRgb.g, b: prRgb.b, a: pct / 100 });
+ hi.value = s;
+ if (out) out.textContent = pct + '%';
+ if (pr) pr.textContent = s;
+ }
+
+ function quizCarryEcdSetRowFromRgba(idx, cssStr) {
+ var row = QUIZ_CARRY_ECD_COLS[idx];
+ var key = quizCarryEcdColKey(idx);
+ var fb = QUIZ_CARRY_ECD_DEFAULTS_RGBA[key];
+ var o = quizCarryParseCssColor(cssStr, fb);
+ var sw = el(row.sw);
+ var ra = el(row.ra);
+ var out = el(row.out);
+ var hi = el(row.hi);
+ var pr = el(row.pr);
+ if (!sw || !ra || !hi) return;
+ sw.value = quizCarryHexFromRgb(o.r, o.g, o.b);
+ var pct = Math.max(0, Math.min(100, Math.round(Number(o.a) * 100)));
+ ra.value = String(pct);
+ if (out) out.textContent = pct + '%';
+ hi.value = quizCarryRgbToRgbaString(o);
+ if (pr) pr.textContent = hi.value;
+ }
+
+ function quizCarryEcdBindPickersOnce() {
+ if (quizCarryEcdBindPickersOnce._done) return;
+ for (var i = 0; i < QUIZ_CARRY_ECD_COLS.length; i++) {
+ (function (idx) {
+ var row = QUIZ_CARRY_ECD_COLS[idx];
+ var sw = el(row.sw);
+ var ra = el(row.ra);
+ if (!sw || !ra) return;
+ if (ra.getAttribute('data-ecd-bound') === '1') return;
+ ra.setAttribute('data-ecd-bound', '1');
+ function sync() {
+ quizCarryEcdSyncRow(idx);
+ }
+ sw.addEventListener('input', sync);
+ sw.addEventListener('change', sync);
+ ra.addEventListener('input', sync);
+ ra.addEventListener('change', sync);
+ })(i);
+ }
+ quizCarryEcdBindPickersOnce._done = true;
+ }
+
+ function quizCarryEcdBuildForSave() {
+ quizCarryEcdBindPickersOnce();
+ for (var i = 0; i < QUIZ_CARRY_ECD_COLS.length; i++) quizCarryEcdSyncRow(i);
+ var o0 = el('quiz-carry-ecd-overlay-val');
+ var o1 = el('quiz-carry-ecd-inner-bg-val');
+ var o2 = el('quiz-carry-ecd-inner-border-val');
+ var bwEl = el('quiz-carry-ecd-inner-border-w');
+ var radEl = el('quiz-carry-ecd-inner-radius');
+ var dig = el('quiz-carry-ecd-digit-swatch');
+ var m1 = el('quiz-carry-ecd-map-cqmin');
+ var m2 = el('quiz-carry-ecd-map-cqh');
+ var m3 = el('quiz-carry-ecd-map-max-px');
+ var sv = el('quiz-carry-ecd-screen-vw');
+ var sm = el('quiz-carry-ecd-screen-max-px');
+ var bw = bwEl ? parseInt(String(bwEl.value || '1'), 10) : 1;
+ if (!Number.isFinite(bw)) bw = 1;
+ bw = Math.max(0, Math.min(12, Math.round(bw)));
+ var rad = radEl ? parseInt(String(radEl.value || '12'), 10) : 12;
+ if (!Number.isFinite(rad)) rad = 12;
+ rad = Math.max(0, Math.min(32, Math.round(rad)));
+ var cqmin = m1 ? parseInt(String(m1.value || '78'), 10) : 78;
+ var cqh = m2 ? parseInt(String(m2.value || '82'), 10) : 82;
+ var mpx = m3 ? parseInt(String(m3.value || '200'), 10) : 200;
+ cqmin = Math.max(35, Math.min(100, cqmin));
+ cqh = Math.max(35, Math.min(100, cqh));
+ mpx = Math.max(48, Math.min(400, mpx));
+ var vw = sv ? parseInt(String(sv.value || '28'), 10) : 28;
+ var smx = sm ? parseInt(String(sm.value || '132'), 10) : 132;
+ vw = Math.max(6, Math.min(44, vw));
+ smx = Math.max(48, Math.min(220, smx));
+ var digitHex = dig && /^#[0-9a-fA-F]{6}$/.test(String(dig.value || '').trim()) ? String(dig.value).trim() : '#ffe066';
+ return {
+ overlayBackdrop: (o0 && o0.value.trim()) ? o0.value.trim().slice(0, 120) : quizCarryRgbToRgbaString(QUIZ_CARRY_ECD_DEFAULTS_RGBA.overlay),
+ innerBg: (o1 && o1.value.trim()) ? o1.value.trim().slice(0, 120) : quizCarryRgbToRgbaString(QUIZ_CARRY_ECD_DEFAULTS_RGBA.innerBg),
+ innerBorder: (o2 && o2.value.trim()) ? o2.value.trim().slice(0, 120) : quizCarryRgbToRgbaString(QUIZ_CARRY_ECD_DEFAULTS_RGBA.innerBorder),
+ innerBorderWpx: bw,
+ innerRadiusPx: rad,
+ digitColor: digitHex.slice(0, 32),
+ mapDigitCqmin: cqmin,
+ mapDigitCqh: cqh,
+ mapDigitMaxPx: mpx,
+ screenDigitVw: vw,
+ screenDigitMaxPx: smx,
+ };
+ }
+
+ function quizCarryEcdFillForm(th) {
+ quizCarryEcdBindPickersOnce();
+ var t = th && typeof th === 'object' ? th : {};
+ quizCarryEcdSetRowFromRgba(0, t.overlayBackdrop);
+ quizCarryEcdSetRowFromRgba(1, t.innerBg);
+ quizCarryEcdSetRowFromRgba(2, t.innerBorder);
+ var bwEl = el('quiz-carry-ecd-inner-border-w');
+ var radEl = el('quiz-carry-ecd-inner-radius');
+ var dig = el('quiz-carry-ecd-digit-swatch');
+ var m1 = el('quiz-carry-ecd-map-cqmin');
+ var m2 = el('quiz-carry-ecd-map-cqh');
+ var m3 = el('quiz-carry-ecd-map-max-px');
+ var sv = el('quiz-carry-ecd-screen-vw');
+ var sm = el('quiz-carry-ecd-screen-max-px');
+ var bw = parseInt(String(t.innerBorderWpx), 10);
+ if (bwEl) bwEl.value = String(Number.isFinite(bw) && bw >= 0 ? Math.min(12, bw) : 1);
+ var rad = parseInt(String(t.innerRadiusPx), 10);
+ if (radEl) radEl.value = String(Number.isFinite(rad) && rad >= 0 ? Math.min(32, rad) : 12);
+ if (dig && typeof t.digitColor === 'string' && /^#[0-9a-fA-F]{6}$/.test(t.digitColor.trim())) dig.value = t.digitColor.trim();
+ var cqmin = parseInt(String(t.mapDigitCqmin), 10);
+ var cqh = parseInt(String(t.mapDigitCqh), 10);
+ var mpx = parseInt(String(t.mapDigitMaxPx), 10);
+ if (m1) m1.value = String(Number.isFinite(cqmin) ? Math.max(35, Math.min(100, cqmin)) : 78);
+ if (m2) m2.value = String(Number.isFinite(cqh) ? Math.max(35, Math.min(100, cqh)) : 82);
+ if (m3) m3.value = String(Number.isFinite(mpx) ? Math.max(48, Math.min(400, mpx)) : 200);
+ var vw = parseInt(String(t.screenDigitVw), 10);
+ var smx = parseInt(String(t.screenDigitMaxPx), 10);
+ if (sv) sv.value = String(Number.isFinite(vw) ? Math.max(6, Math.min(44, vw)) : 28);
+ if (sm) sm.value = String(Number.isFinite(smx) ? Math.max(48, Math.min(220, smx)) : 132);
+ }
+
+ var QUIZ_CARRY_PLAQUE_SLOT_COUNT = 16;
+ var QUIZ_CARRY_PLAQUE_KINDS = ['fixed', 'fill', 'text'];
+ var QUIZ_CARRY_PLAQUE_DEFAULTS_RGBA = {
+ fixed: { r: 122, g: 200, b: 255, a: 0.9 },
+ fill: { r: 12, g: 10, b: 20, a: 0.88 },
+ text: { r: 248, g: 249, b: 255, a: 1 },
+ };
+
+ function quizCarryPlaqueSlotPrefix(si) {
+ return 'quiz-carry-plaque-s' + si + '-';
+ }
+
+ /**
+ * อัปโหลดป้าย: ลอง POST ตรง Node (/Game/api/ — nginx proxy 20M) ก่อน แล้วค่อย PHP ถ้าล้ม
+ * เดิมลอง PHP ก่อนทำให้พังง่ายเมื่อ php-fpm ต่อ 127.0.0.1:3001 ไม่ได้หรือ session ผิด แม้เกมจะรันอยู่
+ */
+ function quizCarryPlaqueUploadWithFallback(dataUrl) {
+ var body = JSON.stringify({ imageDataUrl: dataUrl });
+ var opts = { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: body };
+ return gauntletAssetsJsonFetch(GAME_QUIZ_CARRY_PLAQUE_UPLOAD_NODE, opts).catch(function (errFirst) {
+ var msg = String((errFirst && errFirst.message) || '');
+ if (/\b401\b|Unauthorized|หมดเซสชัน/i.test(msg)) {
+ return Promise.reject(errFirst);
+ }
+ var tryPhp =
+ /\b404\b|\b405\b|Not Found|ไม่พบ|502|503|504|Bad Gateway|Failed to fetch|NetworkError|Load failed|ECONNREFUSED/i.test(
+ msg,
+ ) ||
+ /\b413\b|Request Entity Too Large|Payload too large|รับ body ไม่ได้|too large/i.test(msg);
+ if (!tryPhp) {
+ return Promise.reject(errFirst);
+ }
+ return gauntletAssetsJsonFetch(GAME_QUIZ_CARRY_PLAQUE_UPLOAD_PHP, opts).then(function (res) {
+ try {
+ setMsg(
+ 'quiz-carry-settings-msg',
+ 'อัปโหลดสำเร็จผ่าน PHP (รองจาก /Game/api/) · Upload OK via PHP fallback',
+ 'ok',
+ );
+ } catch (e1) { /* ignore */ }
+ return res;
+ });
+ });
+ }
+
+ /** URL สำหรับ — path ที่ขึ้นต้นด้วย / ให้ต่อ origin (รองรับ Admin ใต้โดเมนเดียวกับ /Game/) */
+ function quizCarryPlaqueAbsMediaUrl(path) {
+ var s = String(path || '').trim();
+ if (!s) return '';
+ if (/^https?:\/\//i.test(s)) return s;
+ if (s.charAt(0) === '/') return String(window.location.origin || '') + s;
+ return '';
+ }
+
+ function quizCarryPlaqueUpdateImagePreview(si) {
+ var pfx = quizCarryPlaqueSlotPrefix(si);
+ var inp = el(pfx + 'plaque-image-url');
+ var img = el(pfx + 'plaque-preview-img');
+ var errEl = el(pfx + 'plaque-preview-err');
+ if (!img) return;
+ var raw = inp && inp.value ? String(inp.value).trim() : '';
+ if (errEl) errEl.textContent = '';
+ if (!raw) {
+ img.style.display = 'none';
+ img.removeAttribute('src');
+ return;
+ }
+ var abs = quizCarryPlaqueAbsMediaUrl(raw);
+ if (!abs) {
+ img.style.display = 'none';
+ if (errEl) errEl.textContent = 'รูปแบบ URL ไม่รองรับ';
+ return;
+ }
+ img.onerror = function () {
+ img.style.display = 'none';
+ if (errEl) errEl.textContent = 'โหลดตัวอย่างไม่ได้ — ตรวจ path / สิทธิ์ไฟล์ / รีสตาร์ท Node';
+ };
+ img.onload = function () {
+ try {
+ img.removeAttribute('width');
+ img.removeAttribute('height');
+ } catch (e) { /* ignore */ }
+ img.style.display = 'block';
+ if (errEl) errEl.textContent = '';
+ };
+ var sep = abs.indexOf('?') >= 0 ? '&' : '?';
+ img.src = abs + sep + '_pv=' + Date.now();
+ }
+
+ function quizCarryPlaqueUpdateNeonUi(si) {
+ var modeEl = el(quizCarryPlaqueSlotPrefix(si) + 'border-mode');
+ var grid = modeEl && modeEl.closest ? modeEl.closest('.quiz-carry-theme-grid') : null;
+ if (!grid) return;
+ if (modeEl && modeEl.value === 'fixed') grid.classList.remove('quiz-carry-plaque-grid--neon');
+ else grid.classList.add('quiz-carry-plaque-grid--neon');
+ var hint = grid.querySelector('.quiz-carry-plaque-neon-hint');
+ if (hint) hint.style.display = modeEl && modeEl.value === 'fixed' ? 'none' : '';
+ }
+
+ function quizCarryPlaqueRowIds(si, kind) {
+ var seg = kind === 'fixed' ? 'fixed' : kind === 'fill' ? 'fill' : 'text';
+ var p = quizCarryPlaqueSlotPrefix(si);
+ return {
+ sw: p + seg + '-swatch',
+ ra: p + seg + '-alpha',
+ out: p + seg + '-alpha-out',
+ hi: p + seg + '-val',
+ };
+ }
+
+ function quizCarryPlaqueEnsureMounted() {
+ var root = el('quiz-carry-plaque-slots-root');
+ if (!root || root.getAttribute('data-mounted') === '1') return;
+ for (var si = 0; si < QUIZ_CARRY_PLAQUE_SLOT_COUNT; si++) {
+ var det = document.createElement('details');
+ det.className = 'quiz-carry-plaque-slot-details';
+ if (si === 0) det.open = true;
+ var summ = document.createElement('summary');
+ summ.textContent = 'ตัวเลือก ' + (si + 1);
+ det.appendChild(summ);
+ var grid = document.createElement('div');
+ grid.className = 'quiz-carry-theme-grid quiz-carry-plaque-grid';
+ var rowMode = document.createElement('div');
+ rowMode.className = 'quiz-carry-theme-row quiz-carry-theme-row--narrow';
+ rowMode.style.marginBottom = '0.45rem';
+ var labMode = document.createElement('label');
+ labMode.className = 'admin-field quiz-carry-theme-label';
+ labMode.appendChild(document.createTextNode('โหมดขอบป้าย'));
+ var selMode = document.createElement('select');
+ selMode.id = quizCarryPlaqueSlotPrefix(si) + 'border-mode';
+ selMode.setAttribute('aria-label', 'โหมดขอบป้ายช่อง ' + (si + 1));
+ [['neon', 'เรืองตามช่อง (neon)'], ['fixed', 'สีขอบคงที่']].forEach(function (opt) {
+ var o = document.createElement('option');
+ o.value = opt[0];
+ o.textContent = opt[1];
+ selMode.appendChild(o);
+ });
+ labMode.appendChild(selMode);
+ rowMode.appendChild(labMode);
+ grid.appendChild(rowMode);
+ selMode.addEventListener('change', function () {
+ quizCarryPlaqueUpdateNeonUi(si);
+ });
+
+ var hintNeon = document.createElement('p');
+ hintNeon.className = 'muted quiz-carry-plaque-neon-hint';
+ hintNeon.style.cssText = 'margin:0 0 0.5rem;font-size:0.78rem;line-height:1.45';
+ hintNeon.innerHTML =
+ 'Neon / เรืองตามช่อง: ขอบบนแมปใช้สีตามเลขช่อง ไม่ใช้ «สีขอบ (fixed)» ด้านล่าง — ต้องการขอบตาม picker ให้เลือก สีขอบคงที่ · ' +
+ 'English: In Neon mode the map uses per-slot hue; Fixed border uses the fixed-border pickers.';
+ grid.appendChild(hintNeon);
+
+ function addColorRow(labelText, kind, defHex, defAlpha) {
+ var ids = quizCarryPlaqueRowIds(si, kind);
+ var row = document.createElement('div');
+ row.className = 'quiz-carry-theme-row';
+ row.setAttribute('data-quiz-carry-plaque-color-row', kind);
+ var lbl = document.createElement('span');
+ lbl.className = 'quiz-carry-theme-label';
+ lbl.textContent = labelText;
+ row.appendChild(lbl);
+ var controls = document.createElement('div');
+ controls.className = 'quiz-carry-color-controls';
+ var sw = document.createElement('input');
+ sw.type = 'color';
+ sw.id = ids.sw;
+ sw.value = defHex;
+ sw.title = labelText;
+ controls.appendChild(sw);
+ var labA = document.createElement('label');
+ labA.className = 'quiz-carry-alpha-label';
+ var spanA = document.createElement('span');
+ spanA.textContent = 'โปร่ง A';
+ labA.appendChild(spanA);
+ var ra = document.createElement('input');
+ ra.type = 'range';
+ ra.id = ids.ra;
+ ra.min = '0';
+ ra.max = '100';
+ ra.step = '1';
+ ra.value = String(defAlpha);
+ labA.appendChild(ra);
+ var out = document.createElement('output');
+ out.id = ids.out;
+ out.className = 'quiz-carry-alpha-out';
+ out.setAttribute('for', ids.ra);
+ out.textContent = defAlpha + '%';
+ labA.appendChild(out);
+ controls.appendChild(labA);
+ var hi = document.createElement('input');
+ hi.type = 'hidden';
+ hi.id = ids.hi;
+ controls.appendChild(hi);
+ row.appendChild(controls);
+ grid.appendChild(row);
+ }
+ addColorRow('สีขอบ (fixed)', 'fixed', '#7ac8ff', 90);
+ addColorRow('พื้นหลังกล่อง', 'fill', '#0c0a14', 88);
+ addColorRow('สีตัวอักษร', 'text', '#f8f9ff', 100);
+ var rowW = document.createElement('div');
+ rowW.className = 'quiz-carry-theme-row quiz-carry-theme-row--narrow';
+ var labW = document.createElement('label');
+ labW.className = 'admin-field quiz-carry-theme-label';
+ labW.appendChild(document.createTextNode('ความหนาขอบ (px)'));
+ var inpW = document.createElement('input');
+ inpW.type = 'number';
+ inpW.className = 'admin-inp-num';
+ inpW.id = quizCarryPlaqueSlotPrefix(si) + 'border-w';
+ inpW.min = '0';
+ inpW.max = '8';
+ inpW.step = '0.5';
+ inpW.value = '2.5';
+ labW.appendChild(inpW);
+ rowW.appendChild(labW);
+ grid.appendChild(rowW);
+
+ var rowImg = document.createElement('div');
+ /* ห้ามใช้ quiz-carry-theme-row--narrow — มี max-width:12rem ทำช่อง URL แคบมาก ดูเหมือนอัปโหลดไม่ทำงาน */
+ rowImg.className = 'quiz-carry-theme-row quiz-carry-plaque-image-row';
+ rowImg.style.cssText = 'flex-wrap:wrap;gap:0.65rem;align-items:flex-end';
+ var labUrl = document.createElement('label');
+ labUrl.className = 'admin-field';
+ labUrl.style.cssText = 'flex:1;min-width:200px;margin:0';
+ labUrl.appendChild(document.createTextNode('รูปบนป้าย (ช่องนี้)'));
+ var inpImgUrl = document.createElement('input');
+ inpImgUrl.type = 'text';
+ inpImgUrl.className = 'admin-inp-text';
+ inpImgUrl.id = quizCarryPlaqueSlotPrefix(si) + 'plaque-image-url';
+ inpImgUrl.placeholder = '/Game/img/quiz-carry-plaque-assets/... หรือ https://...';
+ inpImgUrl.setAttribute('aria-label', 'URL รูปป้ายช่อง ' + (si + 1));
+ labUrl.appendChild(document.createElement('br'));
+ labUrl.appendChild(inpImgUrl);
+ var prevErr = document.createElement('span');
+ prevErr.id = quizCarryPlaqueSlotPrefix(si) + 'plaque-preview-err';
+ prevErr.className = 'muted quiz-carry-plaque-preview-err';
+ prevErr.style.cssText = 'display:block;font-size:0.72rem;margin:0.25rem 0 0.15rem;min-height:1em';
+ labUrl.appendChild(prevErr);
+ var prevImg = document.createElement('img');
+ prevImg.id = quizCarryPlaqueSlotPrefix(si) + 'plaque-preview-img';
+ prevImg.alt = 'พรีวิวรูปป้ายช่อง ' + (si + 1);
+ prevImg.className = 'quiz-carry-plaque-preview-img';
+ /* ห้าม width/height = 0 — บางเบราว์เซอร์แสดงกล่อง 0×0 แม้ onload แล้ว · Don't use 0×0 attrs or preview stays invisible */
+ prevImg.style.cssText = 'display:none;max-height:120px;max-width:min(100%,320px);width:auto;height:auto;border-radius:8px;border:1px solid var(--border);object-fit:contain;background:var(--card)';
+ labUrl.appendChild(prevImg);
+ inpImgUrl.addEventListener('input', function () {
+ var v = String(inpImgUrl.value || '').trim();
+ if (!v) delete quizCarryPlaquePendingUrlBySlot[si];
+ quizCarryPlaqueUpdateImagePreview(si);
+ });
+ inpImgUrl.addEventListener('change', function () {
+ var v2 = String(inpImgUrl.value || '').trim();
+ if (!v2) delete quizCarryPlaquePendingUrlBySlot[si];
+ quizCarryPlaqueUpdateImagePreview(si);
+ });
+ rowImg.appendChild(labUrl);
+ var upWrap = document.createElement('div');
+ upWrap.className = 'admin-field';
+ upWrap.style.margin = '0';
+ var fileInp = document.createElement('input');
+ fileInp.type = 'file';
+ fileInp.accept = 'image/png,image/jpeg,image/webp,image/gif';
+ fileInp.id = quizCarryPlaqueSlotPrefix(si) + 'plaque-image-file';
+ fileInp.style.fontSize = '0.82rem';
+ var upMsg = document.createElement('span');
+ upMsg.className = 'muted';
+ upMsg.id = quizCarryPlaqueSlotPrefix(si) + 'plaque-image-msg';
+ upMsg.style.cssText = 'display:block;font-size:0.75rem;margin-top:0.25rem';
+ fileInp.addEventListener('change', function () {
+ while (upMsg.firstChild) upMsg.removeChild(upMsg.firstChild);
+ upMsg.textContent = '';
+ if (!fileInp.files || !fileInp.files[0]) return;
+ upMsg.textContent = 'กำลังอ่านไฟล์และอัปโหลด… · Reading file & uploading…';
+ try {
+ upMsg.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
+ } catch (scrollErr) { /* ignore */ }
+ quizCarryPlaqueUploadPending++;
+ quizCarryPlaqueUploadStartMs = Date.now();
+ readFileAsDataURL(fileInp.files[0])
+ .then(function (dataUrl) {
+ return quizCarryPlaqueUploadWithFallback(dataUrl);
+ })
+ .then(function (res) {
+ if (res && res.url) {
+ var uOk = String(res.url).trim();
+ inpImgUrl.value = uOk;
+ quizCarryPlaquePendingUrlBySlot[si] = uOk;
+ quizCarryPlaqueUpdateImagePreview(si);
+ upMsg.textContent = '';
+ var ok1 = document.createElement('span');
+ ok1.textContent = 'อัปโหลดแล้ว · path ที่ได้: ';
+ upMsg.appendChild(ok1);
+ var codeU = document.createElement('code');
+ codeU.style.cssText = 'font-size:0.78rem;word-break:break-all';
+ codeU.textContent = res.url;
+ upMsg.appendChild(codeU);
+ var br = document.createElement('br');
+ upMsg.appendChild(br);
+ var ok2 = document.createElement('span');
+ ok2.textContent = 'กด «บันทึก» ด้านล่างเพื่อเขียนลง quiz-settings.json · Then click Save below';
+ upMsg.appendChild(ok2);
+ } else {
+ upMsg.textContent = (res && res.error) || 'ตอบกลับไม่มี url — ตรวจ Node /Game/api/quiz-carry-plaque-upload';
+ }
+ })
+ .catch(function (e) {
+ upMsg.textContent = e.message || 'อัปโหลดไม่สำเร็จ';
+ setMsg('quiz-carry-settings-msg', e.message || 'อัปโหลดรูปป้ายไม่สำเร็จ · Plaque upload failed', 'error');
+ try {
+ upMsg.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
+ var smUp = el('quiz-carry-settings-msg');
+ if (smUp) smUp.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
+ } catch (scrollE) { /* ignore */ }
+ })
+ .finally(function () {
+ fileInp.value = '';
+ quizCarryPlaqueUploadPending = Math.max(0, quizCarryPlaqueUploadPending - 1);
+ if (quizCarryPlaqueUploadPending === 0) quizCarryPlaqueUploadStartMs = 0;
+ });
+ });
+ upWrap.appendChild(document.createTextNode('อัปโหลด'));
+ upWrap.appendChild(document.createElement('br'));
+ upWrap.appendChild(fileInp);
+ upWrap.appendChild(upMsg);
+ rowImg.appendChild(upWrap);
+ grid.appendChild(rowImg);
+
+ det.appendChild(grid);
+ root.appendChild(det);
+ quizCarryPlaqueUpdateNeonUi(si);
+ }
+ root.setAttribute('data-mounted', '1');
+ }
+
+ function quizCarryPlaqueComposeFromPickers(si, kind) {
+ var ids = quizCarryPlaqueRowIds(si, kind);
+ var sw = el(ids.sw);
+ var ra = el(ids.ra);
+ var fb = QUIZ_CARRY_PLAQUE_DEFAULTS_RGBA[kind] || QUIZ_CARRY_PLAQUE_DEFAULTS_RGBA.fill;
+ if (!sw || !ra) return quizCarryRgbToRgbaString(fb);
+ var pr = quizCarryParseHexToRgb(sw.value);
+ if (!pr) return quizCarryRgbToRgbaString(fb);
+ var pct = parseInt(String(ra.value), 10);
+ if (!Number.isFinite(pct)) pct = Math.round((fb.a != null ? fb.a : 1) * 100);
+ pct = Math.max(0, Math.min(100, pct));
+ return quizCarryRgbToRgbaString({ r: pr.r, g: pr.g, b: pr.b, a: pct / 100 });
+ }
+
+ function quizCarryPlaqueSetPickersFromString(si, kind, cssStr) {
+ var ids = quizCarryPlaqueRowIds(si, kind);
+ var fb = QUIZ_CARRY_PLAQUE_DEFAULTS_RGBA[kind] || QUIZ_CARRY_PLAQUE_DEFAULTS_RGBA.fill;
+ var o = quizCarryParseCssColor(cssStr, fb);
+ var sw = el(ids.sw);
+ var ra = el(ids.ra);
+ var hi = el(ids.hi);
+ var out = el(ids.out);
+ if (sw) sw.value = quizCarryHexFromRgb(o.r, o.g, o.b);
+ if (ra) ra.value = String(Math.round((o.a != null ? o.a : 1) * 100));
+ if (out) out.textContent = ra ? ra.value + '%' : '';
+ if (hi) hi.value = quizCarryRgbToRgbaString(o);
+ }
+
+ function quizCarryPlaqueSyncRow(si, kind) {
+ var s = quizCarryPlaqueComposeFromPickers(si, kind);
+ var ids = quizCarryPlaqueRowIds(si, kind);
+ var hi = el(ids.hi);
+ var out = el(ids.out);
+ var ra = el(ids.ra);
+ if (hi) hi.value = s;
+ if (out && ra) out.textContent = ra.value + '%';
+ }
+
+ var quizCarryPlaqueBindPickersDone = false;
+ function quizCarryPlaqueBindPickersOnce() {
+ if (quizCarryPlaqueBindPickersDone) return;
+ quizCarryPlaqueEnsureMounted();
+ for (var si = 0; si < QUIZ_CARRY_PLAQUE_SLOT_COUNT; si++) {
+ QUIZ_CARRY_PLAQUE_KINDS.forEach(function (kind) {
+ var ids = quizCarryPlaqueRowIds(si, kind);
+ var sw = el(ids.sw);
+ var ra = el(ids.ra);
+ if (sw) {
+ sw.addEventListener('input', function () {
+ quizCarryPlaqueSyncRow(si, kind);
+ });
+ }
+ if (ra) {
+ ra.addEventListener('input', function () {
+ quizCarryPlaqueSyncRow(si, kind);
+ });
+ }
+ });
+ }
+ quizCarryPlaqueBindPickersDone = true;
+ }
+
+ function quizCarryPlaqueBuildForSave() {
+ quizCarryPlaqueEnsureMounted();
+ quizCarryPlaqueBindPickersOnce();
+ var arr = [];
+ for (var si = 0; si < QUIZ_CARRY_PLAQUE_SLOT_COUNT; si++) {
+ for (var ki = 0; ki < QUIZ_CARRY_PLAQUE_KINDS.length; ki++) {
+ quizCarryPlaqueSyncRow(si, QUIZ_CARRY_PLAQUE_KINDS[ki]);
+ }
+ var modeEl = el(quizCarryPlaqueSlotPrefix(si) + 'border-mode');
+ var mode = modeEl && modeEl.value === 'fixed' ? 'fixed' : 'neon';
+ var bwEl = el(quizCarryPlaqueSlotPrefix(si) + 'border-w');
+ var bw = bwEl ? parseFloat(String(bwEl.value)) : 2.5;
+ if (!Number.isFinite(bw)) bw = 2.5;
+ bw = Math.round(Math.max(0, Math.min(8, bw)) * 10) / 10;
+ var imgUrlEl = el(quizCarryPlaqueSlotPrefix(si) + 'plaque-image-url');
+ var plaqueImageUrl = imgUrlEl ? String(imgUrlEl.value || '').trim() : '';
+ if (!plaqueImageUrl && quizCarryPlaquePendingUrlBySlot[si]) {
+ plaqueImageUrl = String(quizCarryPlaquePendingUrlBySlot[si] || '').trim();
+ if (imgUrlEl && plaqueImageUrl) imgUrlEl.value = plaqueImageUrl;
+ }
+ plaqueImageUrl = plaqueImageUrl.slice(0, 512);
+ arr.push({
+ borderMode: mode,
+ fixedBorder: quizCarryPlaqueComposeFromPickers(si, 'fixed'),
+ fillBg: quizCarryPlaqueComposeFromPickers(si, 'fill'),
+ textColor: quizCarryPlaqueComposeFromPickers(si, 'text'),
+ borderWidthPx: bw,
+ plaqueImageUrl: plaqueImageUrl,
+ });
+ }
+ return arr;
+ }
+
+ function quizCarryPlaqueFillSlot(si, t) {
+ var obj = t && typeof t === 'object' ? t : {};
+ var modeEl = el(quizCarryPlaqueSlotPrefix(si) + 'border-mode');
+ if (modeEl) modeEl.value = String(obj.borderMode || '').toLowerCase() === 'fixed' ? 'fixed' : 'neon';
+ quizCarryPlaqueSetPickersFromString(si, 'fixed', obj.fixedBorder);
+ quizCarryPlaqueSetPickersFromString(si, 'fill', obj.fillBg);
+ quizCarryPlaqueSetPickersFromString(si, 'text', obj.textColor);
+ var bwEl = el(quizCarryPlaqueSlotPrefix(si) + 'border-w');
+ var bw = parseFloat(String(obj.borderWidthPx));
+ if (bwEl) {
+ bwEl.value = String(Number.isFinite(bw) ? Math.round(Math.max(0, Math.min(8, bw)) * 10) / 10 : 2.5);
+ }
+ var imgEl = el(quizCarryPlaqueSlotPrefix(si) + 'plaque-image-url');
+ if (imgEl) {
+ imgEl.value = obj.plaqueImageUrl != null ? String(obj.plaqueImageUrl) : '';
+ }
+ var srvU = obj.plaqueImageUrl != null ? String(obj.plaqueImageUrl).trim() : '';
+ if (srvU) quizCarryPlaquePendingUrlBySlot[si] = srvU.slice(0, 512);
+ var msgEl = el(quizCarryPlaqueSlotPrefix(si) + 'plaque-image-msg');
+ if (msgEl) msgEl.textContent = '';
+ quizCarryPlaqueUpdateNeonUi(si);
+ quizCarryPlaqueUpdateImagePreview(si);
+ }
+
+ function quizCarryPlaqueFillAllFromApi(data) {
+ quizCarryPlaqueBindPickersOnce();
+ var arr = null;
+ if (data && Array.isArray(data.carryChoicePlaqueThemes) && data.carryChoicePlaqueThemes.length) {
+ arr = data.carryChoicePlaqueThemes;
+ } else if (data && data.carryChoicePlaqueTheme && typeof data.carryChoicePlaqueTheme === 'object') {
+ arr = [];
+ for (var u = 0; u < QUIZ_CARRY_PLAQUE_SLOT_COUNT; u++) arr.push(data.carryChoicePlaqueTheme);
+ }
+ for (var si = 0; si < QUIZ_CARRY_PLAQUE_SLOT_COUNT; si++) {
+ var th = (arr && arr[si]) ? arr[si] : {};
+ quizCarryPlaqueFillSlot(si, th);
+ quizCarryPlaqueUpdateImagePreview(si);
+ }
+ }
+
+ function quizCarrySetPlaqueMapScaleInputs(scale) {
+ var pms = Number(scale);
+ if (!Number.isFinite(pms)) pms = 1.25;
+ pms = Math.max(0.85, Math.min(2.5, pms));
+ var cent = Math.round(pms * 100);
+ cent = Math.max(85, Math.min(250, cent));
+ var num = el('quiz-carry-plaque-map-scale');
+ var rng = el('quiz-carry-plaque-map-scale-range');
+ var out = el('quiz-carry-plaque-map-scale-out');
+ if (num) num.value = String(Math.round((cent / 100) * 100) / 100);
+ if (rng) rng.value = String(cent);
+ if (out) out.textContent = '× ' + (num ? num.value : String(cent / 100));
+ }
+
+ function wireQuizCarryPlaqueMapScaleControls() {
+ if (quizCarryPlaqueScaleControlsWired) return;
+ var num = el('quiz-carry-plaque-map-scale');
+ var rng = el('quiz-carry-plaque-map-scale-range');
+ if (!num || !rng) return;
+ quizCarryPlaqueScaleControlsWired = true;
+ function fromRange() {
+ var c = parseInt(String(rng.value), 10);
+ if (!Number.isFinite(c)) c = 125;
+ c = Math.max(85, Math.min(250, c));
+ rng.value = String(c);
+ var sc = c / 100;
+ num.value = String(Math.round(sc * 100) / 100);
+ var out = el('quiz-carry-plaque-map-scale-out');
+ if (out) out.textContent = '× ' + num.value;
+ }
+ function fromNum() {
+ var p = parseFloat(String(num.value || '').replace(',', '.'));
+ if (!Number.isFinite(p)) p = 1.25;
+ p = Math.max(0.85, Math.min(2.5, p));
+ rng.value = String(Math.round(p * 100));
+ num.value = String(Math.round(p * 100) / 100);
+ var out = el('quiz-carry-plaque-map-scale-out');
+ if (out) out.textContent = '× ' + num.value;
+ }
+ rng.addEventListener('input', fromRange);
+ rng.addEventListener('change', fromRange);
+ num.addEventListener('input', fromNum);
+ num.addEventListener('change', fromNum);
+ }
+
+ function loadQuizCarryPanel(opts) {
+ opts = opts || {};
+ var delay = Number(opts.fetchDelayMs) || 0;
+ var runLoad = function () {
+ gameQuizFetch('GET').then(function (data) {
+ if (opts.themeOverride && typeof opts.themeOverride === 'object') {
+ var ov = opts.themeOverride;
+ if (
+ ov.panelBg != null ||
+ ov.borderWidthPx != null ||
+ ov.panelBorder != null ||
+ ov.textColor != null ||
+ ov.questionFontMinPx != null ||
+ ov.questionFontMaxPx != null
+ ) {
+ data.carryMapPanelTheme = ov;
+ } else if (ov.carryMapPanelTheme && typeof ov.carryMapPanelTheme === 'object') {
+ data.carryMapPanelTheme = ov.carryMapPanelTheme;
+ }
+ if (ov.carryEmbedCountdownTheme && typeof ov.carryEmbedCountdownTheme === 'object') {
+ data.carryEmbedCountdownTheme = ov.carryEmbedCountdownTheme;
+ }
+ if (ov.carryChoicePlaqueThemes && Array.isArray(ov.carryChoicePlaqueThemes)) {
+ data.carryChoicePlaqueThemes = ov.carryChoicePlaqueThemes;
+ if (ov.carryChoicePlaqueThemes[0] && typeof ov.carryChoicePlaqueThemes[0] === 'object') {
+ data.carryChoicePlaqueTheme = ov.carryChoicePlaqueThemes[0];
+ }
+ } else if (ov.carryChoicePlaqueTheme && typeof ov.carryChoicePlaqueTheme === 'object') {
+ /* legacy อ็อบเจ็กต์เดียว — ต้องตั้งทั้งอาร์เรย์ ไม่งั้น Fill ยังใช้ carryChoicePlaqueThemes จาก GET เก่า (URL ป้ายหายหลังบันทึก) */
+ data.carryChoicePlaqueTheme = ov.carryChoicePlaqueTheme;
+ var expPlaque = [];
+ for (var exi = 0; exi < QUIZ_CARRY_PLAQUE_SLOT_COUNT; exi++) {
+ expPlaque.push(ov.carryChoicePlaqueTheme);
+ }
+ data.carryChoicePlaqueThemes = expPlaque;
+ }
+ }
+ if (opts.timingOverride && typeof opts.timingOverride === 'object') {
+ var t = opts.timingOverride;
+ if (t.carryReadMs != null) data.carryReadMs = t.carryReadMs;
+ if (t.carryAnswerMs != null) data.carryAnswerMs = t.carryAnswerMs;
+ if (t.carrySessionLength != null) data.carrySessionLength = t.carrySessionLength;
+ if (t.carryWalkSpeedMultForMapId !== undefined) data.carryWalkSpeedMultForMapId = t.carryWalkSpeedMultForMapId;
+ if (t.carryWalkSpeedMult !== undefined) data.carryWalkSpeedMult = t.carryWalkSpeedMult;
+ }
+ renderQuizCarryAdminList(data.carryQuestions || []);
+ var readSec = el('quiz-carry-read-sec');
+ var ansSec = el('quiz-carry-answer-sec');
+ if (readSec) {
+ var rms = Number(data.carryReadMs);
+ readSec.value = String(Number.isFinite(rms) ? Math.round(rms / 1000) : 3);
+ }
+ if (ansSec) {
+ var ams = Number(data.carryAnswerMs);
+ ansSec.value = String(Number.isFinite(ams) ? Math.round(ams / 1000) : 5);
+ }
+ var sessLen = el('quiz-carry-session-len');
+ if (sessLen) {
+ var sl = parseInt(String(data.carrySessionLength), 10);
+ sessLen.value = String(Number.isFinite(sl) && sl >= 0 ? sl : 0);
+ }
+ var walkMapIdInp = el('quiz-carry-walk-map-id');
+ if (walkMapIdInp) {
+ walkMapIdInp.value = data.carryWalkSpeedMultForMapId ? String(data.carryWalkSpeedMultForMapId).trim() : '';
+ }
+ var walkMultInp = el('quiz-carry-walk-mult');
+ if (walkMultInp) {
+ var wmv = Number(data.carryWalkSpeedMult);
+ walkMultInp.value = String(Number.isFinite(wmv) ? wmv : 1.42);
+ }
+ quizCarrySetPlaqueMapScaleInputs(data.carryChoicePlaqueMapScale);
+ quizCarryBindThemePickersOnce();
+ var th = data.carryMapPanelTheme && typeof data.carryMapPanelTheme === 'object' ? data.carryMapPanelTheme : {};
+ quizCarrySetPickersFromColorString('bg', th.panelBg);
+ quizCarrySetPickersFromColorString('border', th.panelBorder);
+ quizCarrySetPickersFromColorString('text', th.textColor);
+ var bwInp = el('quiz-carry-theme-border-w');
+ if (bwInp) {
+ var bw = parseInt(String(th.borderWidthPx), 10);
+ bwInp.value = String(Number.isFinite(bw) && bw >= 0 ? Math.min(12, bw) : 2);
+ }
+ var qfMinInp = el('quiz-carry-theme-qfont-min');
+ var qfMaxInp = el('quiz-carry-theme-qfont-max');
+ if (qfMinInp) {
+ var qm = parseInt(String(th.questionFontMinPx), 10);
+ qfMinInp.value = String(Number.isFinite(qm) ? Math.max(10, Math.min(40, qm)) : 10);
+ }
+ if (qfMaxInp) {
+ var qx = parseInt(String(th.questionFontMaxPx), 10);
+ qfMaxInp.value = String(Number.isFinite(qx) ? Math.max(14, Math.min(56, qx)) : 24);
+ }
+ quizCarryEcdFillForm(data.carryEmbedCountdownTheme || {});
+ quizCarryPlaqueFillAllFromApi(data);
+ if (opts.clearMsg !== false) setMsg('quiz-carry-settings-msg', '', '');
+ }).catch(function (e) {
+ setMsg('quiz-carry-settings-msg', e.message || 'โหลดไม่ได้', 'error');
+ });
+ };
+ if (delay > 0) setTimeout(runLoad, delay);
+ else runLoad();
+ }
+
+ /** รอจน plaque upload จบ (pending=0) — กันกดบันทึกทันทีหลังเลือกไฟล์แล้ว build ได้ URL ว่าง · returns false if timeout */
+ function waitUntilQuizCarryUploadsDone(maxMs) {
+ maxMs = maxMs || 120000;
+ return new Promise(function (resolve) {
+ if (quizCarryPlaqueUploadPending <= 0) return resolve(true);
+ var started = Date.now();
+ var iv = setInterval(function () {
+ if (quizCarryPlaqueUploadPending <= 0) {
+ clearInterval(iv);
+ resolve(true);
+ } else if (Date.now() - started >= maxMs) {
+ clearInterval(iv);
+ resolve(false);
+ }
+ }, 40);
+ });
+ }
+
+ function saveQuizCarryPanel() {
+ var list = el('quiz-carry-admin-list');
+ var saveBtn = el('btn-quiz-carry-save');
+ if (!list) {
+ setMsg('quiz-carry-settings-msg', 'ไม่พบรายการคำถามในแท็บนี้ — รีเฟรชหน้า · quiz-carry-admin-list missing', 'error');
+ return;
+ }
+ if (quizCarryPlaqueUploadPending > 0 && quizCarryPlaqueUploadStartMs > 0 && Date.now() - quizCarryPlaqueUploadStartMs > 120000) {
+ quizCarryPlaqueUploadPending = 0;
+ quizCarryPlaqueUploadStartMs = 0;
+ setMsg(
+ 'quiz-carry-settings-msg',
+ 'ยกเลิกสถานะอัปโหลดค้าง (>2 นาที) แล้วดำเนินการบันทึก — ถ้ายังต้องการรูปให้อัปโหลดใหม่ · Stuck upload cleared; re-upload if needed',
+ 'error',
+ );
+ }
+ if (quizCarrySaveInFlight) {
+ setMsg('quiz-carry-settings-msg', 'กำลังบันทึกอยู่แล้ว — รอสักครู่ · Save already in progress', 'error');
+ return;
+ }
+ var carryQuestions = [];
+ list.querySelectorAll('.quiz-carry-admin-block').forEach(function (block) {
+ var inpQ = block.querySelector('.quiz-carry-q-text');
+ var text = inpQ && inpQ.value ? String(inpQ.value).trim() : '';
+ if (!text) return;
+ var slots = [];
+ block.querySelectorAll('.quiz-carry-slot-label').forEach(function (lab, idx) {
+ var ti = lab.querySelector('.quiz-carry-slot-inp');
+ var ii = lab.querySelector('.quiz-carry-slot-img');
+ var tv = ti && ti.value ? String(ti.value).trim() : '';
+ var iv = ii && ii.value ? String(ii.value).trim().slice(0, 512) : '';
+ if (tv) slots.push({ idx: idx, text: tv, imageUrl: iv });
+ });
+ if (slots.length < 2) return;
+ var sel = block.querySelector('.quiz-carry-correct-sel');
+ var slotStr = sel && !sel.disabled && sel.value !== '' ? sel.value : null;
+ if (slotStr == null) return;
+ var slotNum = parseInt(slotStr, 10);
+ var correctIndex = -1;
+ for (var i = 0; i < slots.length; i++) {
+ if (slots[i].idx === slotNum) {
+ correctIndex = i;
+ break;
+ }
+ }
+ if (correctIndex < 0) return;
+ var rowOut = {
+ text: text,
+ choices: slots.map(function (s) {
+ return s.text;
+ }),
+ correctIndex: correctIndex,
+ };
+ var urls = slots.map(function (s) {
+ return s.imageUrl || '';
+ });
+ if (urls.some(function (u) {
+ return u;
+ })) rowOut.choiceImageUrls = urls;
+ carryQuestions.push(rowOut);
+ });
+
+ var readSecEl = el('quiz-carry-read-sec');
+ var ansSecEl = el('quiz-carry-answer-sec');
+ var readSec = readSecEl ? parseInt(String(readSecEl.value || '3'), 10) : 3;
+ var ansSec = ansSecEl ? parseInt(String(ansSecEl.value || '5'), 10) : 5;
+ if (!Number.isFinite(readSec) || readSec < 0) readSec = 0;
+ if (readSec > 120) readSec = 120;
+ if (!Number.isFinite(ansSec) || ansSec < 1) ansSec = 1;
+ if (ansSec > 300) ansSec = 300;
+ var carryReadMs = readSec * 1000;
+ var carryAnswerMs = ansSec * 1000;
+ var sessEl = el('quiz-carry-session-len');
+ var carrySessionLength = sessEl ? parseInt(String(sessEl.value || '0'), 10) : 0;
+ if (!Number.isFinite(carrySessionLength) || carrySessionLength < 0) carrySessionLength = 0;
+ if (carrySessionLength > 500) carrySessionLength = 500;
+
+ var carryMapPanelTheme = quizCarryBuildThemeForSave();
+
+ var blockEls = list.querySelectorAll('.quiz-carry-admin-block');
+ var hasAnyQuestionText = false;
+ for (var bi = 0; bi < blockEls.length; bi++) {
+ var qn = blockEls[bi].querySelector('.quiz-carry-q-text');
+ if (qn && String(qn.value || '').trim()) {
+ hasAnyQuestionText = true;
+ break;
+ }
+ }
+ if (carryQuestions.length === 0 && hasAnyQuestionText) {
+ setMsg(
+ 'quiz-carry-settings-msg',
+ 'ยังบันทึกชุดคำถามไม่ได้: แต่ละข้อต้องมีคำถาม ตัวเลือกอย่างน้อย 2 ช่องที่กรอกแล้ว และเลือก «ข้อที่ถูกต้อง» — ตรวจแถวที่มีข้อความค้าง',
+ 'error',
+ );
+ return;
+ }
+
+ quizCarrySaveInFlight = true;
+ if (saveBtn) {
+ saveBtn.disabled = true;
+ saveBtn.setAttribute('aria-busy', 'true');
+ }
+ var waitLine =
+ quizCarryPlaqueUploadPending > 0
+ ? 'กำลังรอให้อัปโหลดรูปป้ายจบ แล้วจะบันทึกอัตโนมัติ (ไม่ต้องกดซ้ำ)… · Waiting for plaque upload, then save…'
+ : 'กำลังบันทึก… · Saving…';
+ setMsg('quiz-carry-settings-msg', waitLine, '');
+ try {
+ var smEl = el('quiz-carry-settings-msg');
+ if (smEl) smEl.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
+ } catch (scrollSave) { /* ignore */ }
+
+ waitUntilQuizCarryUploadsDone(120000).then(function (uploadsOk) {
+ if (!uploadsOk) {
+ quizCarrySaveInFlight = false;
+ if (saveBtn) {
+ saveBtn.disabled = false;
+ saveBtn.removeAttribute('aria-busy');
+ }
+ setMsg(
+ 'quiz-carry-settings-msg',
+ 'รออัปโหลดนานเกิน 2 นาที — ตรวจเครือข่าย/เซิร์ฟเกมแล้วลองใหม่ · Upload wait timeout',
+ 'error',
+ );
+ return;
+ }
+ var plaqueScaleEl = el('quiz-carry-plaque-map-scale');
+ var plaqueMapScale = 1.25;
+ if (plaqueScaleEl) {
+ var psn = parseFloat(String(plaqueScaleEl.value || '').replace(',', '.'));
+ if (Number.isFinite(psn)) plaqueMapScale = Math.max(0.85, Math.min(2.5, psn));
+ }
+ var walkMapIdRaw = el('quiz-carry-walk-map-id') && el('quiz-carry-walk-map-id').value ? String(el('quiz-carry-walk-map-id').value).trim() : '';
+ var walkMapId = walkMapIdRaw.replace(/[^a-zA-Z0-9_-]/g, '').slice(0, 64);
+ var walkMultRaw = el('quiz-carry-walk-mult') ? parseFloat(String(el('quiz-carry-walk-mult').value || '').replace(',', '.')) : NaN;
+ var putBody = {
+ carryReadMs: carryReadMs,
+ carryAnswerMs: carryAnswerMs,
+ carrySessionLength: carrySessionLength,
+ carryMapPanelTheme: carryMapPanelTheme,
+ carryEmbedCountdownTheme: quizCarryEcdBuildForSave(),
+ carryChoicePlaqueThemes: quizCarryPlaqueBuildForSave(),
+ carryChoicePlaqueMapScale: plaqueMapScale,
+ };
+ if (walkMapId) {
+ putBody.carryWalkSpeedMultForMapId = walkMapId;
+ putBody.carryWalkSpeedMult = Number.isFinite(walkMultRaw) ? Math.max(0.5, Math.min(3, walkMultRaw)) : 1.42;
+ } else {
+ putBody.carryWalkSpeedMultForMapId = '';
+ putBody.carryWalkSpeedMult = null;
+ }
+ if (carryQuestions.length > 0) {
+ putBody.carryQuestions = carryQuestions;
+ }
+
+ gameQuizFetch('PUT', putBody).then(function (res) {
+ var tail = carryQuestions.length ? ' · คำถาม ' + carryQuestions.length + ' ข้อ' : ' · คงชุดคำถามเดิม (อัปเดตเวลา/ธีมอย่างเดียว)';
+ var themeFromRes = res && res.carryMapPanelTheme && typeof res.carryMapPanelTheme === 'object' ? res.carryMapPanelTheme : null;
+ var ecdFromRes = res && res.carryEmbedCountdownTheme && typeof res.carryEmbedCountdownTheme === 'object' ? res.carryEmbedCountdownTheme : null;
+ var plaqueFromRes = null;
+ if (res && Array.isArray(res.carryChoicePlaqueThemes) && res.carryChoicePlaqueThemes.length) {
+ plaqueFromRes = res.carryChoicePlaqueThemes;
+ } else if (res && res.carryChoicePlaqueTheme && typeof res.carryChoicePlaqueTheme === 'object') {
+ plaqueFromRes = [];
+ for (var pxi = 0; pxi < QUIZ_CARRY_PLAQUE_SLOT_COUNT; pxi++) {
+ plaqueFromRes.push(res.carryChoicePlaqueTheme);
+ }
+ }
+ if (!plaqueFromRes) {
+ plaqueFromRes = quizCarryPlaqueBuildForSave();
+ }
+ var themeOk = !!themeFromRes || !!ecdFromRes || !!plaqueFromRes;
+ var themeTail = themeOk ? ' · ธีมแผง/ป้าย/นับถอยหลังบันทึกแล้ว' : '';
+ setMsg('quiz-carry-settings-msg', 'บันทึกแล้ว' + tail + themeTail, 'ok');
+ quizCarryPlaquePendingUrlBySlot = {};
+ loadQuizCarryPanel({
+ clearMsg: false,
+ themeOverride: {
+ carryMapPanelTheme: themeFromRes || carryMapPanelTheme,
+ carryEmbedCountdownTheme: ecdFromRes || quizCarryEcdBuildForSave(),
+ carryChoicePlaqueThemes: Array.isArray(plaqueFromRes) ? plaqueFromRes : null,
+ carryChoicePlaqueTheme:
+ Array.isArray(plaqueFromRes) && plaqueFromRes[0] && typeof plaqueFromRes[0] === 'object'
+ ? plaqueFromRes[0]
+ : null,
+ },
+ timingOverride: {
+ carryReadMs: carryReadMs,
+ carryAnswerMs: carryAnswerMs,
+ carrySessionLength: carrySessionLength,
+ carryWalkSpeedMultForMapId: walkMapId,
+ carryWalkSpeedMult: walkMapId ? (Number.isFinite(walkMultRaw) ? Math.max(0.5, Math.min(3, walkMultRaw)) : 1.42) : null,
+ },
+ fetchDelayMs: 120,
+ });
+ }).catch(function (e) {
+ setMsg('quiz-carry-settings-msg', e.message || 'บันทึกไม่ได้', 'error');
+ }).finally(function () {
+ quizCarrySaveInFlight = false;
+ if (saveBtn) {
+ saveBtn.disabled = false;
+ saveBtn.removeAttribute('aria-busy');
+ }
+ });
+ });
+ }
+
+ /** หมวด Quiz Battle — ชื่อไทยให้สอดคล้องธีมการศึกษาไซเบอร์ / หน้า Quiz-Battle */
+ var QB_LABELS_ABC = ['A', 'B', 'C'];
+
+ var QUIZ_BATTLE_CATEGORIES = [
+ { id: 'topic1', labelTh: 'ห้อง 1 — กฎหมายใกล้ตัว', labelEn: 'Room 1' },
+ { id: 'topic2', labelTh: 'ห้อง 2 — กฎหมายสิทธิ์พื้นฐาน', labelEn: 'Room 2' },
+ { id: 'topic3', labelTh: 'ห้อง 3 — กฎหมายจราจร', labelEn: 'Room 3' },
+ { id: 'topic4', labelTh: 'ห้อง 4 — คดีเกี่ยวกับทรัพย์', labelEn: 'Room 4' },
+ { id: 'topic5', labelTh: 'ห้อง 5 — คดีหมิ่นประมาท', labelEn: 'Room 5' },
+ { id: 'topic6', labelTh: 'ห้อง 6 — คดีทางเพศ', labelEn: 'Room 6' },
+ { id: 'topic7', labelTh: 'ห้อง 7 — คดีอาชญากรรม', labelEn: 'Room 7' },
+ { id: 'topic8', labelTh: 'ห้อง 8 — อาชญากรรมออนไลน์', labelEn: 'Room 8' },
+ { id: 'topic9', labelTh: 'ห้อง 9 — กระบวนการยุติธรรม', labelEn: 'Room 9' },
+ { id: 'topic10', labelTh: 'ห้อง 10 — งานบริการกระทรวงยุติธรรม', labelEn: 'Room 10' },
+ ];
+
+ function qbBattleCategoryLabel(catId) {
+ for (var i = 0; i < QUIZ_BATTLE_CATEGORIES.length; i++) {
+ if (QUIZ_BATTLE_CATEGORIES[i].id === catId) return QUIZ_BATTLE_CATEGORIES[i].labelTh;
+ }
+ return 'Quiz Battle';
+ }
+
+ /* [2026-07-27] ชื่อหมวด (topicN) = "ห้อง N — <หัวข้อห้องจาก Admin>" — เดิม hardcode ไม่เปลี่ยนตามที่แก้หัวข้อ
+ ดึง title จาก quiz-battle-modes.json (แหล่งเดียวกับตารางเปิด/ปิดโหมด) แล้วอัปเดต label ก่อน render */
+ function refreshQbBattleCategoryLabels(done) {
+ api('quiz-battle-modes.php').then(function (j) {
+ var modes = (j && j.modes) || {};
+ for (var i = 0; i < QUIZ_BATTLE_CATEGORIES.length; i++) {
+ var n = i + 1;
+ var m = modes[String(n)];
+ var t = m && typeof m.title === 'string' ? m.title.trim() : '';
+ QUIZ_BATTLE_CATEGORIES[i].labelTh = 'ห้อง ' + n + (t ? ' — ' + t : '');
+ }
+ }).catch(function () { /* อ่าน config ไม่ได้ → คง label เดิม */ })
+ .then(function () { if (typeof done === 'function') done(); });
+ }
+
+ function fillQbBattleFilterOptions() {
+ var sel = el('qb-battle-filter-cat');
+ if (!sel) return;
+ var keep = sel.value;
+ while (sel.options.length > 1) sel.remove(1);
+ QUIZ_BATTLE_CATEGORIES.forEach(function (c) {
+ var o = document.createElement('option');
+ o.value = c.id;
+ o.textContent = c.labelTh;
+ sel.appendChild(o);
+ });
+ if (keep) {
+ for (var oi = 0; oi < sel.options.length; oi++) {
+ if (sel.options[oi].value === keep) {
+ sel.value = keep;
+ break;
+ }
+ }
+ }
+ }
+
+ function applyQbBattleFilter() {
+ var list = el('qb-battle-admin-list');
+ var f = el('qb-battle-filter-cat');
+ if (!list || !f) return;
+ var fv = f.value || '';
+ list.querySelectorAll('.qb-battle-block').forEach(function (row) {
+ var catInp = row.querySelector('.qb-battle-cat');
+ var cat = catInp && catInp.value ? catInp.value : '';
+ row.hidden = !!(fv && cat !== fv);
+ });
+ refreshQbBattlePreview();
+ }
+
+ function getFirstVisibleQbBattleBlock() {
+ var list = el('qb-battle-admin-list');
+ if (!list) return null;
+ var rows = list.querySelectorAll('.qb-battle-block');
+ for (var i = 0; i < rows.length; i++) {
+ if (rows[i].hidden) continue;
+ var q = rows[i].querySelector('.qb-battle-q-text');
+ var t = q && q.value ? String(q.value).trim() : '';
+ if (t) return rows[i];
+ }
+ for (var j = 0; j < rows.length; j++) {
+ if (!rows[j].hidden) return rows[j];
+ }
+ return null;
+ }
+
+ function readQbBattleBlockData(row) {
+ if (!row) return null;
+ var catSel = row.querySelector('.qb-battle-cat');
+ var qInp = row.querySelector('.qb-battle-q-text');
+ var a0 = row.querySelector('.qb-battle-a');
+ var a1 = row.querySelector('.qb-battle-b');
+ var a2 = row.querySelector('.qb-battle-c');
+ var radios = row.querySelectorAll('input[type="radio"][name^="qb-correct-"]');
+ var ci = 0;
+ for (var i = 0; i < radios.length; i++) {
+ if (radios[i].checked) {
+ ci = parseInt(radios[i].value, 10);
+ if (!Number.isFinite(ci)) ci = 0;
+ break;
+ }
+ }
+ return {
+ categoryId: catSel && catSel.value ? catSel.value : 'topic1',
+ text: qInp && qInp.value ? String(qInp.value).trim() : '',
+ choices: [
+ a0 && a0.value ? String(a0.value).trim() : '',
+ a1 && a1.value ? String(a1.value).trim() : '',
+ a2 && a2.value ? String(a2.value).trim() : '',
+ ],
+ correctIndex: Math.max(0, Math.min(2, ci)),
+ };
+ }
+
+ function refreshQbBattlePreview() {
+ var hudCat = el('qb-preview-hud-cat');
+ var qtext = el('qb-preview-modal-q');
+ var c0 = el('qb-preview-c0');
+ var c1 = el('qb-preview-c1');
+ var c2 = el('qb-preview-c2');
+ var qModal = el('qb-cyber-modal-question');
+ var sModal = el('qb-cyber-modal-summary');
+ var layer = el('qb-modal-layer');
+ if (!hudCat || !qtext || !c0 || !c1 || !c2 || !qModal || !sModal) return;
+
+ var modeBtn = document.querySelector('.qb-preview-mode-btn.is-active');
+ var mode = modeBtn && modeBtn.getAttribute('data-qb-mode') ? modeBtn.getAttribute('data-qb-mode') : 'question';
+
+ var row = getFirstVisibleQbBattleBlock();
+ var d = readQbBattleBlockData(row);
+ var defQ = 'การกระทำใดผิดกฎหมายไซเบอร์?';
+ var defC = [
+ 'การเจาะระบบเข้าสู่ข้อมูลส่วนบุคคล',
+ 'การใช้ WI-FI สาธารณะเพื่อดูข่าว',
+ 'การอัปเดตซอฟต์แวร์เพื่อความปลอดภัย',
+ ];
+ hudCat.textContent = d ? qbBattleCategoryLabel(d.categoryId) : qbBattleCategoryLabel('topic1');
+ qtext.textContent = d && d.text ? d.text : defQ;
+ var ch = d ? d.choices : defC;
+ for (var s = 0; s < 3; s++) {
+ var eln = s === 0 ? c0 : s === 1 ? c1 : c2;
+ var txt = ch[s] ? ch[s] : defC[s];
+ eln.textContent = QB_LABELS_ABC[s] + ' : ' + txt;
+ }
+
+ var choiceEls = document.querySelectorAll('#qb-preview-choices .qb-cyber-choice');
+ choiceEls.forEach(function (node) {
+ node.classList.remove('qb-cyber-choice--correct', 'qb-cyber-choice--wrong', 'qb-cyber-choice--neutral');
+ var mark = node.querySelector('.qb-cyber-choice-mark');
+ if (mark) mark.textContent = '';
+ });
+
+ if (mode === 'summary') {
+ qModal.hidden = true;
+ sModal.hidden = false;
+ if (layer) layer.classList.add('qb-modal-layer--summary');
+ } else {
+ qModal.hidden = false;
+ sModal.hidden = true;
+ if (layer) layer.classList.remove('qb-modal-layer--summary');
+ var ci = d ? d.correctIndex : 0;
+ if (mode === 'revealed') {
+ var wrongPick = (ci + 1) % 3;
+ choiceEls.forEach(function (node, idx) {
+ var mark = node.querySelector('.qb-cyber-choice-mark');
+ if (idx === ci) {
+ node.classList.add('qb-cyber-choice--correct');
+ if (mark) mark.textContent = '✓';
+ } else if (idx === wrongPick) {
+ node.classList.add('qb-cyber-choice--wrong');
+ if (mark) mark.textContent = '✕';
+ } else {
+ node.classList.add('qb-cyber-choice--neutral');
+ }
+ });
+ }
+ }
+ }
+
+ function addQbBattleRow(q) {
+ var list = el('qb-battle-admin-list');
+ if (!list) return;
+ q = q || {};
+ var uid = 'r' + Math.random().toString(36).slice(2, 10);
+ var block = document.createElement('div');
+ block.className = 'qb-battle-block';
+ block.setAttribute('data-category', q.categoryId || 'topic1');
+
+ var head = document.createElement('div');
+ head.className = 'qb-battle-block-head';
+
+ var labCat = document.createElement('label');
+ labCat.className = 'qb-battle-cat-label';
+ labCat.appendChild(document.createTextNode('หมวด'));
+ var selCat = document.createElement('select');
+ selCat.className = 'qb-battle-cat';
+ QUIZ_BATTLE_CATEGORIES.forEach(function (c) {
+ var o = document.createElement('option');
+ o.value = c.id;
+ o.textContent = c.labelTh;
+ if ((q.categoryId || 'topic1') === c.id) o.selected = true;
+ selCat.appendChild(o);
+ });
+ selCat.addEventListener('change', function () {
+ block.setAttribute('data-category', selCat.value);
+ applyQbBattleFilter();
+ });
+ labCat.appendChild(selCat);
+
+ var rm = document.createElement('button');
+ rm.type = 'button';
+ rm.className = 'btn btn-danger btn-sm qb-battle-remove';
+ rm.textContent = 'ลบข้อ';
+ rm.addEventListener('click', function () {
+ block.remove();
+ if (!list.querySelector('.qb-battle-block')) addQbBattleRow(null);
+ applyQbBattleFilter();
+ });
+
+ head.appendChild(labCat);
+ head.appendChild(rm);
+ block.appendChild(head);
+
+ var labQ = document.createElement('label');
+ labQ.className = 'qb-battle-q-label';
+ labQ.appendChild(document.createTextNode('คำถาม'));
+ var inpQ = document.createElement('input');
+ inpQ.type = 'text';
+ inpQ.className = 'qb-battle-q-text';
+ inpQ.maxLength = 500;
+ inpQ.placeholder = 'พิมพ์คำถาม…';
+ inpQ.value = q.text ? String(q.text) : '';
+ labQ.appendChild(inpQ);
+ block.appendChild(labQ);
+
+ var choices = Array.isArray(q.choices) ? q.choices : [];
+ var grid = document.createElement('div');
+ grid.className = 'qb-battle-abc-grid';
+ [['A', 'a', 0], ['B', 'b', 1], ['C', 'c', 2]].forEach(function (tri) {
+ var lab = document.createElement('label');
+ lab.className = 'qb-battle-opt-label';
+ lab.appendChild(document.createTextNode('ตัวเลือก ' + tri[0]));
+ var inp = document.createElement('input');
+ inp.type = 'text';
+ inp.className = 'qb-battle-' + tri[1];
+ inp.maxLength = 160;
+ inp.placeholder = tri[0];
+ inp.value = choices[tri[2]] != null ? String(choices[tri[2]]) : '';
+ lab.appendChild(inp);
+ grid.appendChild(lab);
+ });
+ block.appendChild(grid);
+
+ var ci = Number(q.correctIndex);
+ if (!Number.isFinite(ci)) ci = 0;
+ ci = Math.max(0, Math.min(2, Math.floor(ci)));
+
+ var fs = document.createElement('fieldset');
+ fs.className = 'qb-battle-correct-fs';
+ var leg = document.createElement('legend');
+ leg.textContent = 'ข้อที่ถูกต้อง';
+ fs.appendChild(leg);
+ var rg = document.createElement('div');
+ rg.className = 'qb-battle-correct-rg';
+ for (var r = 0; r < 3; r++) {
+ var labR = document.createElement('label');
+ labR.className = 'qb-battle-radio-label';
+ var radio = document.createElement('input');
+ radio.type = 'radio';
+ radio.name = 'qb-correct-' + uid;
+ radio.value = String(r);
+ if (r === ci) radio.checked = true;
+ labR.appendChild(radio);
+ labR.appendChild(document.createTextNode(' ' + QB_LABELS_ABC[r]));
+ rg.appendChild(labR);
+ }
+ fs.appendChild(rg);
+ block.appendChild(fs);
+
+ function onFieldInput() {
+ refreshQbBattlePreview();
+ }
+ inpQ.addEventListener('input', onFieldInput);
+ grid.querySelectorAll('input').forEach(function (inp) {
+ inp.addEventListener('input', onFieldInput);
+ });
+ rg.querySelectorAll('input[type="radio"]').forEach(function (rdo) {
+ rdo.addEventListener('change', onFieldInput);
+ });
+
+ list.appendChild(block);
+ applyQbBattleFilter();
+ }
+
+ function renderQbBattleList(arr, clearMsg) {
+ var list = el('qb-battle-admin-list');
+ if (!list) return;
+ list.innerHTML = '';
+ fillQbBattleFilterOptions();
+ var rows = arr && arr.length ? arr : [null];
+ rows.forEach(function (q) {
+ addQbBattleRow(q);
+ });
+ if (clearMsg !== false) setMsg('qb-battle-settings-msg', '', '');
+ }
+
+ function loadQbBattlePanel(keepSavedMsg) {
+ /* อัปเดตชื่อหมวดจากหัวข้อห้องล่าสุดก่อน แล้วค่อย render (dropdown กรอง + select ต่อแถว + preview ตรงกัน) */
+ refreshQbBattleCategoryLabels(function () {
+ gameQuizFetch('GET').then(function (data) {
+ renderQbBattleList(data.battleQuizMcq || [], !keepSavedMsg);
+ refreshQbBattlePreview();
+ }).catch(function (e) {
+ setMsg('qb-battle-settings-msg', e.message || 'โหลดไม่ได้', 'error');
+ });
+ });
+ }
+
+ function classifyQbBattleRow(block) {
+ var d = readQbBattleBlockData(block);
+ if (!d) return { kind: 'empty', d: null };
+ var hasQ = !!d.text;
+ var filled = 0;
+ for (var i = 0; i < d.choices.length; i++) {
+ if (d.choices[i]) filled++;
+ }
+ if (!hasQ && filled === 0) return { kind: 'empty', d: d };
+ if (hasQ && filled === 3) return { kind: 'ok', d: d };
+ return { kind: 'partial', d: d };
+ }
+
+ function saveQbBattlePanel() {
+ var list = el('qb-battle-admin-list');
+ if (!list) return;
+ var battleQuizMcq = [];
+ var partialLines = [];
+ var blocks = list.querySelectorAll('.qb-battle-block');
+ for (var bi = 0; bi < blocks.length; bi++) {
+ var block = blocks[bi];
+ var st = classifyQbBattleRow(block);
+ if (st.kind === 'empty') continue;
+ if (st.kind === 'partial') {
+ partialLines.push('แถวที่ ' + (bi + 1) + ': ต้องกรอกคำถามและตัวเลือก A, B, C ให้ครบทุกช่อง');
+ continue;
+ }
+ battleQuizMcq.push({
+ categoryId: st.d.categoryId,
+ text: st.d.text,
+ choices: st.d.choices,
+ correctIndex: st.d.correctIndex,
+ });
+ }
+ if (partialLines.length) {
+ setMsg(
+ 'qb-battle-settings-msg',
+ 'ยังบันทึกไม่ได้ — ' + partialLines.join(' · ') + ' · (Empty question/options are skipped by the server; fill all fields.)',
+ 'error'
+ );
+ return;
+ }
+
+ gameQuizFetch('PUT', { battleQuizMcq: battleQuizMcq }).then(function (res) {
+ var n = battleQuizMcq.length;
+ var savedN = res && typeof res.battleQuizMcqSaved === 'number' ? res.battleQuizMcqSaved : n;
+ if (n > 0 && savedN !== n) {
+ setMsg(
+ 'qb-battle-settings-msg',
+ 'เซิร์ฟเวอร์รับเพียง ' + savedN + ' จาก ' + n + ' ข้อ (ข้อที่ไม่ผ่านกฎถูกตัด) · Server kept ' + savedN + '/' + n + ' — ตรวจหมวด/คำถาม/A B C ให้ครบ · Restart Node (Game/server.js) ถ้ายังผิดปกติ',
+ 'error'
+ );
+ } else {
+ setMsg(
+ 'qb-battle-settings-msg',
+ n ? ('บันทึกแล้ว ' + n + ' ข้อ (ดิสก์ + Node) · Saved ' + n + ' question(s)') : 'บันทึกแล้ว (0 ข้อ) · Saved empty set',
+ 'ok'
+ );
+ }
+ return loadQbBattlePanel(true);
+ }).catch(function (e) {
+ setMsg('qb-battle-settings-msg', e.message || 'บันทึกไม่ได้', 'error');
+ });
+ }
+
+ function laneUrlsToText(arr) {
+ if (!arr || !arr.length) return '';
+ return arr.map(function (u) { return String(u || '').trim(); }).filter(Boolean).join('\n');
+ }
+
+ function parseLaneUrlsTextarea() {
+ var raw = el('game-timing-lane-urls') && el('game-timing-lane-urls').value ? String(el('game-timing-lane-urls').value) : '';
+ var lines = raw.split(/[\n\r]+/);
+ var out = [];
+ for (var i = 0; i < lines.length && out.length < 24; i++) {
+ var t = lines[i].trim();
+ if (t) out.push(t);
+ }
+ return out;
+ }
+
+ function moveLaneUrl(index, dir) {
+ var urls = parseLaneUrlsTextarea();
+ var j = index + dir;
+ if (j < 0 || j >= urls.length) return;
+ var t = urls[index];
+ urls[index] = urls[j];
+ urls[j] = t;
+ var ta = el('game-timing-lane-urls');
+ if (ta) ta.value = urls.join('\n');
+ renderGameTimingLaneVisuals();
+ }
+
+ function renderGameTimingLaneVisuals() {
+ var wrap = el('game-timing-lane-visual-list');
+ if (!wrap) return;
+ wrap.innerHTML = '';
+ var urls = parseLaneUrlsTextarea();
+ if (!urls.length) {
+ var ph = document.createElement('p');
+ ph.className = 'muted';
+ ph.style.margin = '0';
+ ph.textContent = 'ยังไม่มีรูป — กด «Lane» ที่การ์ดในคลัง · No lane images yet';
+ wrap.appendChild(ph);
+ return;
+ }
+ urls.forEach(function (u, i) {
+ var card = document.createElement('div');
+ card.className = 'game-timing-visual-card';
+ card.setAttribute('role', 'listitem');
+ var img = document.createElement('img');
+ img.className = 'game-timing-visual-card-img';
+ img.src = u;
+ img.alt = '';
+ img.referrerPolicy = 'no-referrer';
+ img.onerror = function () { img.classList.add('is-broken'); };
+ var actions = document.createElement('div');
+ actions.className = 'game-timing-visual-card-actions';
+ function mkBtn(cls, text, fn) {
+ var b = document.createElement('button');
+ b.type = 'button';
+ b.className = 'btn btn-sm ' + cls;
+ b.textContent = text;
+ b.addEventListener('click', fn);
+ return b;
+ }
+ actions.appendChild(mkBtn('btn-ghost', 'ดู', function () {
+ window.open(u, '_blank', 'noopener,noreferrer');
+ }));
+ actions.appendChild(mkBtn('btn-ghost', '←', function () {
+ moveLaneUrl(i, -1);
+ }));
+ actions.appendChild(mkBtn('btn-ghost', '→', function () {
+ moveLaneUrl(i, 1);
+ }));
+ actions.appendChild(mkBtn('btn-danger', 'ลบ', function () {
+ var next = urls.filter(function (_, j) { return j !== i; });
+ var ta = el('game-timing-lane-urls');
+ if (ta) ta.value = next.join('\n');
+ renderGameTimingLaneVisuals();
+ setGauntletUploadMsg('เอาออกจาก Lane แล้ว (ไฟล์ในคลังยังอยู่) · Removed from lane', 'ok');
+ }));
+ card.appendChild(img);
+ card.appendChild(actions);
+ wrap.appendChild(card);
+ });
+ }
+
+ /** พรีวิวคอลัมน์ beam — สูงแนวตั้ง + สีเติม/กรอบตามช่อง (คล้ายในเกม) */
+ function styleGameTimingLaserBeamPreviewShell() {
+ var prev = el('game-timing-laser-line-preview');
+ if (!prev) return;
+ var fillIn = el('game-timing-laser-fill');
+ var strokeIn = el('game-timing-laser-stroke');
+ var lwIn = el('game-timing-laser-line-width');
+ var fill = fillIn && fillIn.value ? String(fillIn.value).trim() : '';
+ var stroke = strokeIn && strokeIn.value ? String(strokeIn.value).trim() : '';
+ var lw = lwIn ? parseInt(lwIn.value, 10) : 2;
+ if (Number.isNaN(lw)) lw = 2;
+ lw = Math.max(0, Math.min(24, lw));
+ prev.style.backgroundColor = fill || '';
+ if (lw > 0 && stroke) {
+ prev.style.boxShadow = 'inset 0 0 0 ' + Math.min(8, lw) + 'px ' + stroke;
+ } else {
+ prev.style.boxShadow = '';
+ }
+ }
+
+ function renderGameTimingLaserVisuals() {
+ var slots = [
+ { inpId: 'game-timing-laser-top-url', prevId: 'game-timing-laser-top-preview' },
+ { inpId: 'game-timing-laser-bottom-url', prevId: 'game-timing-laser-bottom-preview' },
+ { inpId: 'game-timing-laser-line-url', prevId: 'game-timing-laser-line-preview' },
+ ];
+ slots.forEach(function (s) {
+ var inp = el(s.inpId);
+ var prev = el(s.prevId);
+ if (!prev) return;
+ prev.innerHTML = '';
+ var url = inp && inp.value ? String(inp.value).trim() : '';
+ if (!url) {
+ var ph = document.createElement('div');
+ ph.className = 'game-timing-laser-placeholder';
+ ph.textContent = 'ยังไม่ตั้ง · Not set';
+ prev.appendChild(ph);
+ return;
+ }
+ var img = document.createElement('img');
+ img.className = 'game-timing-laser-preview-img';
+ img.src = url;
+ img.alt = '';
+ img.referrerPolicy = 'no-referrer';
+ img.onerror = function () { img.classList.add('is-broken'); };
+ prev.appendChild(img);
+ });
+ styleGameTimingLaserBeamPreviewShell();
+ }
+
+ function clamp255(x) {
+ return Math.max(0, Math.min(255, Math.round(Number(x))));
+ }
+
+ function parseCssColorToRgba(str) {
+ str = String(str || '').trim();
+ if (!str) return null;
+ var m = str.match(/^rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*(?:,\s*([\d.]+)\s*)?\)$/i);
+ if (m) {
+ var r = clamp255(m[1]);
+ var g = clamp255(m[2]);
+ var b = clamp255(m[3]);
+ var a =
+ m[4] !== undefined && m[4] !== '' && !Number.isNaN(Number(m[4]))
+ ? Math.max(0, Math.min(1, Number(m[4])))
+ : 1;
+ return { r: r, g: g, b: b, a: a };
+ }
+ m = str.match(/^#([\da-f]{3}|[\da-f]{6})$/i);
+ if (m) {
+ var h = m[1];
+ var r2;
+ var g2;
+ var b2;
+ if (h.length === 3) {
+ r2 = parseInt(h[0] + h[0], 16);
+ g2 = parseInt(h[1] + h[1], 16);
+ b2 = parseInt(h[2] + h[2], 16);
+ } else {
+ r2 = parseInt(h.slice(0, 2), 16);
+ g2 = parseInt(h.slice(2, 4), 16);
+ b2 = parseInt(h.slice(4, 6), 16);
+ }
+ if (Number.isNaN(r2) || Number.isNaN(g2) || Number.isNaN(b2)) return null;
+ return { r: r2, g: g2, b: b2, a: 1 };
+ }
+ var probe = document.createElement('span');
+ probe.style.cssText = 'position:absolute;visibility:hidden;left:0;top:0;background-color:' + str;
+ document.body.appendChild(probe);
+ var bg = getComputedStyle(probe).backgroundColor;
+ document.body.removeChild(probe);
+ m = bg && bg.match(/^rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*(?:,\s*([\d.]+)\s*)?\)$/);
+ if (!m) return null;
+ r2 = clamp255(m[1]);
+ g2 = clamp255(m[2]);
+ b2 = clamp255(m[3]);
+ var a2 = m[4] !== undefined && !Number.isNaN(Number(m[4])) ? Math.max(0, Math.min(1, Number(m[4]))) : 1;
+ return { r: r2, g: g2, b: b2, a: a2 };
+ }
+
+ function rgbToHex6(r, g, b) {
+ function hx(n) {
+ var h = clamp255(n).toString(16);
+ return h.length === 1 ? '0' + h : h;
+ }
+ return '#' + hx(r) + hx(g) + hx(b);
+ }
+
+ function laserHexFromTextOrFallback(text, fallbackHex) {
+ var c = parseCssColorToRgba(text);
+ if (!c) return fallbackHex;
+ return rgbToHex6(c.r, c.g, c.b);
+ }
+
+ function formatLaserRgba(r, g, b, a) {
+ var aa = Math.round(Math.max(0, Math.min(1, a)) * 100) / 100;
+ return 'rgba(' + clamp255(r) + ',' + clamp255(g) + ',' + clamp255(b) + ',' + aa + ')';
+ }
+
+ function syncGameTimingLaserColorSwatches() {
+ function apply(swatchId, textVal) {
+ var sw = el(swatchId);
+ if (!sw) return;
+ var v = textVal != null ? String(textVal).trim() : '';
+ sw.style.backgroundColor = v || '';
+ sw.classList.toggle('is-empty', !v);
+ sw.title = v || 'ว่าง — พิมพ์ค่า CSS หรือกดสี่เหลี่ยมเพื่อเลือกสี';
+ }
+ var fillIn = el('game-timing-laser-fill');
+ var strokeIn = el('game-timing-laser-stroke');
+ apply('game-timing-laser-fill-swatch', fillIn && fillIn.value);
+ apply('game-timing-laser-stroke-swatch', strokeIn && strokeIn.value);
+ var fillPk = el('game-timing-laser-fill-picker');
+ var strokePk = el('game-timing-laser-stroke-picker');
+ if (fillPk && fillIn) {
+ var hf = laserHexFromTextOrFallback(fillIn.value, '#ef4444');
+ if (fillPk.value.toLowerCase() !== hf.toLowerCase()) fillPk.value = hf;
+ }
+ if (strokePk && strokeIn) {
+ var hs = laserHexFromTextOrFallback(strokeIn.value, '#fca5a5');
+ if (strokePk.value.toLowerCase() !== hs.toLowerCase()) strokePk.value = hs;
+ }
+ styleGameTimingLaserBeamPreviewShell();
+ }
+
+ function bindGameTimingLaserColorSwatches() {
+ var fillIn = el('game-timing-laser-fill');
+ var strokeIn = el('game-timing-laser-stroke');
+ if (fillIn) {
+ fillIn.addEventListener('input', syncGameTimingLaserColorSwatches);
+ fillIn.addEventListener('change', syncGameTimingLaserColorSwatches);
+ }
+ if (strokeIn) {
+ strokeIn.addEventListener('input', syncGameTimingLaserColorSwatches);
+ strokeIn.addEventListener('change', syncGameTimingLaserColorSwatches);
+ }
+ function wirePicker(pickerId, textEl, defaultAlpha) {
+ var pk = el(pickerId);
+ var tx = textEl;
+ if (!pk || !tx) return;
+ function applyHex() {
+ var hex = String(pk.value || '').trim();
+ if (!/^#[\da-f]{6}$/i.test(hex)) return;
+ var r = parseInt(hex.slice(1, 3), 16);
+ var g = parseInt(hex.slice(3, 5), 16);
+ var b = parseInt(hex.slice(5, 7), 16);
+ var prev = parseCssColorToRgba(tx.value);
+ var a = prev && typeof prev.a === 'number' ? prev.a : defaultAlpha;
+ tx.value = formatLaserRgba(r, g, b, a);
+ syncGameTimingLaserColorSwatches();
+ }
+ pk.addEventListener('input', applyHex);
+ pk.addEventListener('change', applyHex);
+ }
+ wirePicker('game-timing-laser-fill-picker', fillIn, 0.35);
+ wirePicker('game-timing-laser-stroke-picker', strokeIn, 0.95);
+ var lwIn = el('game-timing-laser-line-width');
+ if (lwIn) {
+ lwIn.addEventListener('input', styleGameTimingLaserBeamPreviewShell);
+ lwIn.addEventListener('change', styleGameTimingLaserBeamPreviewShell);
+ }
+ syncGameTimingLaserColorSwatches();
+ }
+
+ function bindGameTimingAssignedVisuals() {
+ function wire(which, viewId, clearId) {
+ var inpId = 'game-timing-laser-' + which + '-url';
+ var vBtn = el(viewId);
+ var cBtn = el(clearId);
+ if (vBtn) vBtn.addEventListener('click', function () {
+ var inp = el(inpId);
+ var u = inp && inp.value ? String(inp.value).trim() : '';
+ if (!u) return;
+ window.open(u, '_blank', 'noopener,noreferrer');
+ });
+ if (cBtn) cBtn.addEventListener('click', function () {
+ var inp = el(inpId);
+ if (inp) inp.value = '';
+ renderGameTimingLaserVisuals();
+ setGauntletUploadMsg('ล้างช่อง Laser แล้ว · Laser slot cleared', 'ok');
+ });
+ }
+ wire('top', 'btn-game-timing-laser-top-view', 'btn-game-timing-laser-top-clear');
+ wire('bottom', 'btn-game-timing-laser-bottom-view', 'btn-game-timing-laser-bottom-clear');
+ wire('line', 'btn-game-timing-laser-line-view', 'btn-game-timing-laser-line-clear');
+ }
+
+ function gauntletAssetsJsonFetch(url, opts) {
+ opts = opts || {};
+ opts.credentials = 'include';
+ return fetch(url, opts).then(function (r) {
+ return r.text().then(function (text) {
+ var j = {};
+ var parsed = false;
+ try {
+ j = text ? JSON.parse(text) : {};
+ parsed = true;
+ } catch (e) {
+ if (!r.ok) {
+ var snippet = (text || '').replace(/\s+/g, ' ').trim().slice(0, 220);
+ var tail = '';
+ if (r.status === 413) {
+ tail =
+ ' · คำขอใหญ่เกิน (nginx client_max_body_size / PHP post_max_size) — รัน deploy-nginx และตั้ง post_max_size ≥20M · Payload too large';
+ } else if (r.status === 401) {
+ tail = ' · ล็อกอิน Admin ใหม่ · Re-login to Admin';
+ } else if (r.status === 502 || r.status === 503 || r.status === 504) {
+ tail = ' · เซิร์ฟเกม/PHP upstream ล่ม — ตรวจ Node + php-fpm · Upstream error';
+ } else if (r.status === 404) {
+ tail = ' · ตรวจ path ไฟล์ / รีสตาร์ทบริการหลัง deploy · Not found';
+ }
+ throw new Error((snippet || r.statusText || 'Request failed') + tail + ' (HTTP ' + r.status + ')');
+ }
+ throw e;
+ }
+ if (!r.ok) {
+ var plain = (j && j.error) || r.statusText || 'Request failed';
+ if (r.status === 413) {
+ plain =
+ (j && j.error) ||
+ 'ไฟล์/คำขอใหญ่เกินขีดจำกัด (nginx หรือ PHP) — ตั้ง client_max_body_size (server หรือ /Admin/api/) และ post_max_size ≥20M · Payload too large';
+ }
+ if (r.status === 401) {
+ plain =
+ (j && j.error) ||
+ 'หมดเซสชันแอดมิน — ล็อกอินใหม่แล้วลองอัปโหลดอีกครั้ง · Re-login to Admin and retry upload';
+ }
+ if (r.status === 404) {
+ plain += ' — รีสตาร์ท Node ที่รัน Game/server.js หลัง deploy · Restart Game Node';
+ }
+ if (r.status === 502 || r.status === 503 || r.status === 504) {
+ plain +=
+ ' — PHP/Node upstream ล่ม — ตรวจ game-zep (Node) และ php-fpm · Check Node + PHP-FPM';
+ }
+ if (parsed && (!j || Object.keys(j).length === 0)) {
+ plain = (text || '').replace(/\s+/g, ' ').trim().slice(0, 200) || plain;
+ if (r.status) plain += ' (HTTP ' + r.status + ')';
+ }
+ throw new Error(plain);
+ }
+ return j;
+ });
+ });
+ }
+
+ function setGauntletUploadMsg(text, cls) {
+ setMsg('gauntlet-asset-upload-msg', text, cls);
+ }
+
+ function readFileAsDataURL(file) {
+ return new Promise(function (resolve, reject) {
+ var fr = new FileReader();
+ fr.onload = function () { resolve(fr.result); };
+ fr.onerror = function () { reject(new Error('อ่านไฟล์ไม่ได้ · Cannot read file')); };
+ fr.readAsDataURL(file);
+ });
+ }
+
+ function appendLaneUrlUnique(url) {
+ var ta = el('game-timing-lane-urls');
+ if (!ta || !url) return;
+ var lines = parseLaneUrlsTextarea();
+ if (lines.indexOf(url) >= 0) {
+ setGauntletUploadMsg('มี URL นี้ใน Lane แล้ว · Already in lane list', 'ok');
+ return;
+ }
+ lines.push(url);
+ ta.value = lines.join('\n');
+ renderGameTimingLaneVisuals();
+ setGauntletUploadMsg('เพิ่มใน Lane แล้ว · Added to lane URLs', 'ok');
+ }
+
+ function setLaserUrlField(which, url) {
+ var ids = { top: 'game-timing-laser-top-url', bottom: 'game-timing-laser-bottom-url', line: 'game-timing-laser-line-url' };
+ var inp = el(ids[which]);
+ if (!inp) return;
+ inp.value = url;
+ renderGameTimingLaserVisuals();
+ setGauntletUploadMsg('ตั้งค่า Laser แล้ว · Laser field updated', 'ok');
+ }
+
+ function uploadGauntletDataUrls(fileArr) {
+ var files = [].slice.call(fileArr || []);
+ if (!files.length) return Promise.resolve();
+ var rf = gauntletReplaceTarget;
+ gauntletReplaceTarget = null;
+ if (rf) files = files.slice(0, 1);
+ setGauntletUploadMsg('กำลังอัปโหลด… · Uploading…', '');
+ var idx = 0;
+ function step() {
+ if (idx >= files.length) {
+ setGauntletUploadMsg(rf ? 'แทนที่รูปแล้ว · Image replaced' : ('อัปโหลดแล้ว ' + files.length + ' ไฟล์ · Uploaded'), 'ok');
+ return refreshGauntletAssetLibrary();
+ }
+ var file = files[idx++];
+ return readFileAsDataURL(file).then(function (dataUrl) {
+ var body = { imageDataUrl: dataUrl };
+ if (rf) body.replaceFilename = rf;
+ else if (file.name) body.label = String(file.name).replace(/\.[^.]+$/, '').slice(0, 120);
+ return gauntletAssetsJsonFetch(GAME_GAUNTLET_ASSETS_API + '/upload', {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify(body),
+ });
+ }).then(step).catch(function (e) {
+ setGauntletUploadMsg(e.message || 'อัปโหลดไม่สำเร็จ · Upload failed', 'error');
+ return refreshGauntletAssetLibrary();
+ });
+ }
+ return step();
+ }
+
+ function refreshGauntletAssetLibrary() {
+ var listEl = el('gauntlet-asset-list');
+ if (!listEl) return Promise.resolve();
+ return gauntletAssetsJsonFetch(GAME_GAUNTLET_ASSETS_API, { method: 'GET' })
+ .then(function (data) {
+ listEl.innerHTML = '';
+ var items = data.items || [];
+ if (!items.length) {
+ var empty = document.createElement('p');
+ empty.className = 'muted';
+ empty.style.margin = '0';
+ empty.textContent = 'ยังไม่มีรูปในคลัง — อัปโหลดด้านบน · No assets yet — upload above';
+ listEl.appendChild(empty);
+ return;
+ }
+ items.forEach(function (it, ix) {
+ var card = document.createElement('article');
+ card.className = 'gauntlet-asset-card';
+
+ var img = document.createElement('img');
+ img.className = 'gauntlet-asset-card-preview';
+ img.src = it.url + '?t=' + (it.mtime || 0);
+ img.alt = it.label || '';
+
+ var labelWrap = document.createElement('div');
+ labelWrap.className = 'gauntlet-asset-card-label-wrap';
+ var labelInp = document.createElement('input');
+ labelInp.type = 'text';
+ labelInp.maxLength = 120;
+ labelInp.value = it.label || '';
+ var lid = 'gauntlet-asset-label-' + ix;
+ labelInp.id = lid;
+ var lab = document.createElement('label');
+ lab.htmlFor = lid;
+ lab.textContent = 'ชื่อเรียก · Label';
+ labelWrap.appendChild(lab);
+ labelWrap.appendChild(labelInp);
+
+ var urlP = document.createElement('p');
+ urlP.className = 'gauntlet-asset-card-url';
+ urlP.textContent = it.url;
+
+ var actions = document.createElement('div');
+ actions.className = 'gauntlet-asset-card-actions';
+
+ function mkBtn(cls, text, handler) {
+ var b = document.createElement('button');
+ b.type = 'button';
+ b.className = 'btn ' + cls;
+ b.textContent = text;
+ b.addEventListener('click', handler);
+ return b;
+ }
+
+ actions.appendChild(mkBtn('btn-ghost', 'ดูรูป', function () {
+ window.open(it.url, '_blank', 'noopener,noreferrer');
+ }));
+ actions.appendChild(mkBtn('btn-ghost', 'บันทึกชื่อ', function () {
+ gauntletAssetsJsonFetch(GAME_GAUNTLET_ASSETS_API, {
+ method: 'PATCH',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({ filename: it.filename, label: labelInp.value }),
+ })
+ .then(function () {
+ setGauntletUploadMsg('บันทึกชื่อแล้ว · Label saved', 'ok');
+ return refreshGauntletAssetLibrary();
+ })
+ .catch(function (e) {
+ setGauntletUploadMsg(e.message, 'error');
+ });
+ }));
+ actions.appendChild(mkBtn('btn-ghost', 'แทนที่รูป', function () {
+ gauntletReplaceTarget = it.filename;
+ var finp = el('gauntlet-asset-file-input');
+ if (finp) finp.click();
+ }));
+ actions.appendChild(mkBtn('btn-ghost', 'Lane', function () {
+ appendLaneUrlUnique(it.url);
+ }));
+ actions.appendChild(mkBtn('btn-ghost', 'Laser บน', function () {
+ setLaserUrlField('top', it.url);
+ }));
+ actions.appendChild(mkBtn('btn-ghost', 'Laser ล่าง', function () {
+ setLaserUrlField('bottom', it.url);
+ }));
+ actions.appendChild(mkBtn('btn-ghost', 'Laser เส้น', function () {
+ setLaserUrlField('line', it.url);
+ }));
+ actions.appendChild(mkBtn('btn-danger', 'ลบ', function () {
+ if (!confirm('ลบไฟล์ ' + it.filename + ' จากเซิร์ฟเวอร์? · Delete from server?')) return;
+ gauntletAssetsJsonFetch(GAME_GAUNTLET_ASSETS_API + '?file=' + encodeURIComponent(it.filename), { method: 'DELETE' })
+ .then(function () {
+ setGauntletUploadMsg('ลบแล้ว · Deleted', 'ok');
+ return refreshGauntletAssetLibrary();
+ })
+ .catch(function (e) {
+ setGauntletUploadMsg(e.message, 'error');
+ });
+ }));
+
+ card.appendChild(img);
+ card.appendChild(labelWrap);
+ card.appendChild(urlP);
+ card.appendChild(actions);
+ listEl.appendChild(card);
+ });
+ })
+ .catch(function (e) {
+ listEl.innerHTML = '';
+ var p = document.createElement('p');
+ p.className = 'msg error';
+ p.textContent = e.message || 'โหลดคลังไม่ได้';
+ listEl.appendChild(p);
+ });
+ }
+
+ function bindGauntletAssetLibrary() {
+ var drop = el('gauntlet-asset-drop');
+ var finp = el('gauntlet-asset-file-input');
+ if (!drop || !finp) return;
+
+ drop.addEventListener('click', function () {
+ finp.click();
+ });
+ drop.addEventListener('keydown', function (e) {
+ if (e.key === 'Enter' || e.key === ' ') {
+ e.preventDefault();
+ finp.click();
+ }
+ });
+
+ ['dragenter', 'dragover'].forEach(function (ev) {
+ drop.addEventListener(ev, function (e) {
+ e.preventDefault();
+ e.stopPropagation();
+ drop.classList.add('is-dragover');
+ });
+ });
+ ['dragleave', 'drop'].forEach(function (ev) {
+ drop.addEventListener(ev, function (e) {
+ e.preventDefault();
+ e.stopPropagation();
+ if (ev !== 'drop') drop.classList.remove('is-dragover');
+ });
+ });
+ drop.addEventListener('drop', function (e) {
+ drop.classList.remove('is-dragover');
+ var files = e.dataTransfer && e.dataTransfer.files;
+ if (!files || !files.length) return;
+ var arr = [];
+ for (var i = 0; i < files.length; i++) arr.push(files[i]);
+ uploadGauntletDataUrls(arr);
+ });
+
+ finp.addEventListener('change', function () {
+ if (!finp.files || !finp.files.length) return;
+ var arr = [];
+ for (var i = 0; i < finp.files.length; i++) arr.push(finp.files[i]);
+ finp.value = '';
+ uploadGauntletDataUrls(arr);
+ });
+ }
+
+ /** ว่าง / อัตโนมัติ / auto → null · ตัวเลข 0.85–3.2 tile */
+ function parseStackBlockWidthForSave(raw) {
+ var t = String(raw == null ? '' : raw).trim();
+ if (!t) return { ok: true, value: null };
+ var low = t.toLowerCase();
+ if (t === 'อัตโนมัติ' || low === 'auto' || low === 'automatic') return { ok: true, value: null };
+ var w = parseFloat(t.replace(',', '.'));
+ if (!Number.isFinite(w)) {
+ return { ok: false, error: 'กว้างบล็อก: ใส่ตัวเลข 0.85–3.2 หรือปล่อยว่างเพื่ออัตโนมัติ' };
+ }
+ if (w < 0.85 || w > 3.2) {
+ return { ok: false, error: 'กว้างบล็อกต้องอยู่ระหว่าง 0.85–3.2 tile หรือปล่อยว่าง' };
+ }
+ return { ok: true, value: Math.round(Math.max(0.85, Math.min(3.2, w)) * 100) / 100 };
+ }
+
+ /** ช่อง Hz ใช้ type=text — ปล่อยว่าง = 0.55 */
+ function parseStackSwingHzForSave(raw) {
+ var t = String(raw == null ? '' : raw).trim().replace(',', '.');
+ if (!t) return { ok: true, value: 0.55 };
+ var h = parseFloat(t);
+ if (!Number.isFinite(h)) {
+ return { ok: false, error: 'สวิง Hz: ใส่ตัวเลข (เช่น 0.58) หรือปล่อยว่างให้เป็น 0.55' };
+ }
+ h = Math.max(0.08, Math.min(2.8, h));
+ return { ok: true, value: Math.round(h * 100) / 100 };
+ }
+
+ /** ซิงก์ช่อง Stack จากข้อมูลเซิร์ฟเวอร์ (ช่องอยู่ใน DOM แม้แท็บอื่นเปิดอยู่ — ต้องไม่ปล่อยให้ค้างค่า default จาก HTML) */
+ function applyGameTimingDataToStackInputs(data) {
+ if (!data || typeof data !== 'object') return;
+ if (el('stack-swing-hz')) {
+ var hz = data.stackSwingHz != null && data.stackSwingHz !== '' ? Number(data.stackSwingHz) : NaN;
+ if (!Number.isFinite(hz)) hz = 0.55;
+ hz = Math.max(0.08, Math.min(2.8, hz));
+ el('stack-swing-hz').value = String(Math.round(hz * 100) / 100);
+ }
+ if (el('stack-block-width-tiles')) {
+ var rawW = data.stackBlockWidthTiles;
+ var bw = rawW != null && rawW !== '' ? Number(rawW) : NaN;
+ el('stack-block-width-tiles').value = Number.isFinite(bw) && bw >= 0.85 ? String(Math.round(bw * 100) / 100) : '';
+ }
+ if (el('stack-tower-mission-sec')) {
+ var st = Number(data.stackTowerMissionTimeSec);
+ el('stack-tower-mission-sec').value = String(Number.isFinite(st) && st > 0 ? Math.floor(Math.max(10, Math.min(7200, st))) : 90);
+ }
+ if (el('stack-team-misses-max')) {
+ var sm = Number(data.stackTeamMissesMax);
+ el('stack-team-misses-max').value = String(Number.isFinite(sm) ? Math.floor(Math.max(1, Math.min(20, sm))) : 3);
+ }
+ if (el('stack-tower-progress-blocks')) {
+ var pb = Number(data.stackTowerProgressBlocks);
+ el('stack-tower-progress-blocks').value = String(Number.isFinite(pb) ? Math.floor(Math.max(1, Math.min(500, pb))) : 50);
+ }
+ if (el('stack-heavy-block-percent')) {
+ var shp = Number(data.stackHeavyBlockPercent);
+ el('stack-heavy-block-percent').value = String(Number.isFinite(shp) ? Math.max(0, Math.min(100, Math.floor(shp))) : 35);
+ }
+ var normArr = Array.isArray(data.stackBlockNormalImageUrls) ? data.stackBlockNormalImageUrls : [];
+ var heavyArr = Array.isArray(data.stackBlockHeavyImageUrls) ? data.stackBlockHeavyImageUrls : [];
+ for (var si = 1; si <= 8; si++) {
+ var nin = el('stack-block-normal-url-' + si);
+ var hin = el('stack-block-heavy-url-' + si);
+ var nv = normArr[si - 1] != null && String(normArr[si - 1]) !== '' ? String(normArr[si - 1]) : STACK_BLOCK_DEFAULT_NORMAL[si - 1];
+ var hv = heavyArr[si - 1] != null && String(heavyArr[si - 1]) !== '' ? String(heavyArr[si - 1]) : STACK_BLOCK_DEFAULT_HEAVY[si - 1];
+ if (nin) nin.value = nv || '';
+ if (hin) hin.value = hv || '';
+ updateStackBlockSeatPreview(si);
+ }
+ }
+ /* #4 MG3 8 สีตาม lobby theme — ค่าเริ่มต้น Block-Code-1..8 (ตรง PLAY_LOBBY_THEME_HEX) */
+ var STACK_BLOCK_THEME_NAMES = ['1-red', '2-orange', '3-Yellow', '4-Green', '5-Blue', '6-Navy', '7-Violet', '8-Pink'];
+ var STACK_BLOCK_DEFAULT_NORMAL = STACK_BLOCK_THEME_NAMES.map(function (s) { return '/Game/img/TowerBlock/Block-Code-' + s + '.png'; });
+ var STACK_BLOCK_DEFAULT_HEAVY = STACK_BLOCK_THEME_NAMES.map(function (s) { return '/Game/img/TowerBlock/Block-Code-' + s + '-2.png'; });
+
+ function readStackBlockNormalUrlsFromForm() {
+ var out = [];
+ for (var i = 1; i <= 8; i++) {
+ var inp = el('stack-block-normal-url-' + i);
+ out.push(inp && inp.value ? String(inp.value).trim() : '');
+ }
+ return out;
+ }
+
+ function readStackBlockHeavyUrlsFromForm() {
+ var out = [];
+ for (var j = 1; j <= 8; j++) {
+ var inp = el('stack-block-heavy-url-' + j);
+ out.push(inp && inp.value ? String(inp.value).trim() : '');
+ }
+ return out;
+ }
+
+ function updateStackBlockSeatPreview(seat) {
+ ['normal', 'heavy'].forEach(function (kind) {
+ var inp = el('stack-block-' + kind + '-url-' + seat);
+ var img = el('stack-block-' + kind + '-prev-' + seat);
+ if (!img) return;
+ var v = inp && inp.value ? String(inp.value).trim() : '';
+ if (!v) {
+ img.removeAttribute('src');
+ img.alt = '';
+ return;
+ }
+ if (!/^https?:\/\//i.test(v) && v.charAt(0) !== '/') v = '/' + v.replace(/^\/+/, '');
+ img.alt = (kind === 'heavy' ? 'Heavy ' : 'Normal ') + 'P' + seat;
+ img.src = v;
+ });
+ }
+
+ function bindStackBlockVisualInputs() {
+ for (var s = 1; s <= 8; s++) {
+ (function (seat) {
+ var nIn = el('stack-block-normal-url-' + seat);
+ var hIn = el('stack-block-heavy-url-' + seat);
+ if (nIn) {
+ nIn.addEventListener('change', function () { updateStackBlockSeatPreview(seat); });
+ nIn.addEventListener('blur', function () { updateStackBlockSeatPreview(seat); });
+ }
+ if (hIn) {
+ hIn.addEventListener('change', function () { updateStackBlockSeatPreview(seat); });
+ hIn.addEventListener('blur', function () { updateStackBlockSeatPreview(seat); });
+ }
+ var bn = el('btn-stack-block-normal-clear-' + seat);
+ if (bn) {
+ bn.addEventListener('click', function () {
+ var i = el('stack-block-normal-url-' + seat);
+ if (i) i.value = '';
+ updateStackBlockSeatPreview(seat);
+ });
+ }
+ var bh = el('btn-stack-block-heavy-clear-' + seat);
+ if (bh) {
+ bh.addEventListener('click', function () {
+ var i = el('stack-block-heavy-url-' + seat);
+ if (i) i.value = '';
+ updateStackBlockSeatPreview(seat);
+ });
+ }
+ })(s);
+ }
+ }
+
+ function loadStackGamePanel() {
+ gameTimingFetch('GET')
+ .then(function (data) {
+ applyGameTimingDataToStackInputs(data);
+ setMsg('stack-game-msg', '', '');
+ })
+ .catch(function (e) {
+ setMsg('stack-game-msg', e.message || 'โหลดไม่ได้', 'error');
+ });
+ }
+
+ function saveStackGamePanel() {
+ if (stackGameSaveInFlight) return;
+ var hzParsed = parseStackSwingHzForSave(el('stack-swing-hz') ? el('stack-swing-hz').value : '');
+ if (!hzParsed.ok) {
+ setMsg('stack-game-msg', hzParsed.error, 'error');
+ return;
+ }
+ var hzIn = hzParsed.value;
+ var bwParsed = parseStackBlockWidthForSave(el('stack-block-width-tiles') ? el('stack-block-width-tiles').value : '');
+ if (!bwParsed.ok) {
+ setMsg('stack-game-msg', bwParsed.error, 'error');
+ return;
+ }
+ var blockW = bwParsed.value;
+ var secIn = el('stack-tower-mission-sec') ? parseInt(String(el('stack-tower-mission-sec').value), 10) : 90;
+ if (!Number.isFinite(secIn) || secIn < 10 || secIn > 7200) {
+ setMsg('stack-game-msg', 'เวลารอบต้องอยู่ระหว่าง 10–7200 วินาที', 'error');
+ return;
+ }
+ var missIn = el('stack-team-misses-max') ? parseInt(String(el('stack-team-misses-max').value), 10) : 3;
+ if (!Number.isFinite(missIn) || missIn < 1 || missIn > 20) {
+ setMsg('stack-game-msg', 'โอกาสพลาดต้องอยู่ระหว่าง 1–20 ครั้ง', 'error');
+ return;
+ }
+ var progBlocksIn = el('stack-tower-progress-blocks') ? parseInt(String(el('stack-tower-progress-blocks').value), 10) : 50;
+ if (!Number.isFinite(progBlocksIn) || progBlocksIn < 1 || progBlocksIn > 500) {
+ setMsg('stack-game-msg', 'Progress เต็ม 100%: จำนวนชั้นต้องอยู่ระหว่าง 1–500', 'error');
+ return;
+ }
+ var heavyPctIn = el('stack-heavy-block-percent') ? parseInt(String(el('stack-heavy-block-percent').value), 10) : 35;
+ if (!Number.isFinite(heavyPctIn) || heavyPctIn < 0 || heavyPctIn > 100) {
+ setMsg('stack-game-msg', 'โอกาสบล็อกใหญ่ (%) ต้องอยู่ระหว่าง 0–100', 'error');
+ return;
+ }
+ var btn = el('btn-stack-game-save');
+ stackGameSaveInFlight = true;
+ if (btn) {
+ btn.disabled = true;
+ if (!btn.dataset.prevLabel) btn.dataset.prevLabel = btn.textContent;
+ btn.textContent = 'กำลังบันทึก…';
+ }
+ gameTimingFetch('GET')
+ .then(function (data) {
+ data.stackSwingHz = hzIn;
+ data.stackBlockWidthTiles = blockW;
+ data.stackTowerMissionTimeSec = secIn;
+ data.stackTeamMissesMax = missIn;
+ data.stackTowerProgressBlocks = progBlocksIn;
+ data.stackHeavyBlockPercent = heavyPctIn;
+ data.stackBlockNormalImageUrls = readStackBlockNormalUrlsFromForm();
+ data.stackBlockHeavyImageUrls = readStackBlockHeavyUrlsFromForm();
+ return gameTimingFetch('PUT', data);
+ })
+ .then(function () {
+ return gameTimingFetch('GET');
+ })
+ .then(function (fresh) {
+ applyGameTimingDataToStackInputs(fresh);
+ var hz = fresh && fresh.stackSwingHz != null ? Number(fresh.stackSwingHz) : hzIn;
+ if (!Number.isFinite(hz)) hz = hzIn;
+ hz = Math.round(hz * 100) / 100;
+ var wLabel = fresh && fresh.stackBlockWidthTiles != null && Number.isFinite(Number(fresh.stackBlockWidthTiles))
+ ? String(Math.round(Number(fresh.stackBlockWidthTiles) * 100) / 100) + ' tile'
+ : 'อัตโนมัติ (จากแผนที่)';
+ var stf = fresh && fresh.stackTowerMissionTimeSec != null ? Number(fresh.stackTowerMissionTimeSec) : secIn;
+ var msf = fresh && fresh.stackTeamMissesMax != null ? Number(fresh.stackTeamMissesMax) : missIn;
+ var pbf = fresh && fresh.stackTowerProgressBlocks != null ? Number(fresh.stackTowerProgressBlocks) : progBlocksIn;
+ setMsg('stack-game-msg', 'บันทึกสำเร็จ — สวิง ' + hz + ' Hz · กว้าง ' + wLabel + ' · เวลา ' + stf + 's · พลาด ' + msf + ' ครั้ง · Progress 100% ที่ ' + pbf + ' ชั้น · รูปบล็อก P1–P6 + ใหญ่ ' + (fresh && fresh.stackHeavyBlockPercent != null ? fresh.stackHeavyBlockPercent : heavyPctIn) + '% · โหลดยืนยันจากเซิร์ฟเวอร์แล้ว · ผู้เล่นต้องรีเฟรชหน้าเล่นหรือเข้าห้องใหม่', 'ok');
+ })
+ .catch(function (e) {
+ setMsg('stack-game-msg', (e.message || 'บันทึกไม่ได้') + ' — เช็คว่า Node รัน Game/server.js และ URL /Game/api/game-timing ไม่ 404', 'error');
+ })
+ .then(function () {
+ stackGameSaveInFlight = false;
+ if (btn) {
+ btn.disabled = false;
+ btn.textContent = btn.dataset.prevLabel || 'บันทึก';
+ }
+ });
+ }
+
+ function loadGameTimingPanel() {
+ gameTimingFetch('GET')
+ .then(function (data) {
+ el('game-timing-tick-ms').value = String(data.gauntletTickMs != null ? data.gauntletTickMs : 220);
+ el('game-timing-jump-ticks').value = String(data.gauntletJumpTicks != null ? data.gauntletJumpTicks : 16);
+ if (el('game-timing-jump-height')) el('game-timing-jump-height').value = String(data.gauntletJumpHeightMult != null ? data.gauntletJumpHeightMult : 0.52);
+ el('game-timing-limit-sec').value = String(data.gauntletTimeLimitSec != null ? data.gauntletTimeLimitSec : 0);
+ /* troublesomeOfferSec/RollMaxSec ย้ายไปแท็บ "บทตัวป่วน" แล้ว */
+ if (el('game-timing-lane-urls')) el('game-timing-lane-urls').value = laneUrlsToText(data.gauntletLaneImageUrls);
+ if (el('game-timing-laser-top-url')) el('game-timing-laser-top-url').value = data.gauntletLaserTopUrl != null ? String(data.gauntletLaserTopUrl) : '';
+ if (el('game-timing-laser-bottom-url')) el('game-timing-laser-bottom-url').value = data.gauntletLaserBottomUrl != null ? String(data.gauntletLaserBottomUrl) : '';
+ if (el('game-timing-laser-line-url')) el('game-timing-laser-line-url').value = data.gauntletLaserLineUrl != null ? String(data.gauntletLaserLineUrl) : '';
+ if (el('game-timing-laser-fill')) el('game-timing-laser-fill').value = data.gauntletLaserFillColor != null ? String(data.gauntletLaserFillColor) : '';
+ if (el('game-timing-laser-stroke')) el('game-timing-laser-stroke').value = data.gauntletLaserStrokeColor != null ? String(data.gauntletLaserStrokeColor) : '';
+ var lw = data.gauntletLaserLineWidthPx != null ? Number(data.gauntletLaserLineWidthPx) : 2;
+ if (el('game-timing-laser-line-width')) el('game-timing-laser-line-width').value = String(Number.isFinite(lw) ? lw : 2);
+ renderGameTimingLaneVisuals();
+ renderGameTimingLaserVisuals();
+ syncGameTimingLaserColorSwatches();
+ applyGameTimingDataToStackInputs(data);
+ setMsg('game-timing-msg', '', '');
+ return refreshGauntletAssetLibrary();
+ })
+ .catch(function (e) {
+ setMsg('game-timing-msg', e.message || 'โหลดไม่ได้', 'error');
+ });
+ }
+
+ function normalizeJumpSurvivePlatformTileUrlInput(v) {
+ var s = String(v || '').trim().slice(0, 500);
+ if (!s) return '';
+ if (!/^https?:\/\//i.test(s) && s.charAt(0) !== '/') s = '/' + s.replace(/^\/+/, '');
+ return s;
+ }
+
+ function updateJumpSurvivePlatformTilePreview(slot) {
+ var img = el('jump-survive-platform-tile-prev-' + slot);
+ var inp = el('jump-survive-platform-tile-url-' + slot);
+ if (!img) return;
+ var v = inp && inp.value ? normalizeJumpSurvivePlatformTileUrlInput(inp.value) : '';
+ if (!v) {
+ img.removeAttribute('src');
+ img.alt = '';
+ return;
+ }
+ img.alt = 'Jump platform tile ' + slot + ' preview';
+ img.src = v;
+ }
+
+ function readJumpSurvivePlatformTilesFromForm() {
+ var out = [];
+ for (var s = 1; s <= 3; s++) {
+ var inpU = el('jump-survive-platform-tile-url-' + s);
+ var url = inpU ? normalizeJumpSurvivePlatformTileUrlInput(inpU.value) : '';
+ var inpW = el('jump-survive-platform-tile-w-' + s);
+ var inpH = el('jump-survive-platform-tile-h-' + s);
+ var w = inpW ? parseInt(String(inpW.value), 10) : 0;
+ var h = inpH ? parseInt(String(inpH.value), 10) : 0;
+ if (!Number.isFinite(w) || w < 0) w = 0;
+ if (!Number.isFinite(h) || h < 0) h = 0;
+ out.push({ url: url, w: w, h: h });
+ }
+ return out;
+ }
+
+ function bindJumpSurvivePlatformTileInputs() {
+ for (var s = 1; s <= 3; s++) {
+ (function (slot) {
+ var inp = el('jump-survive-platform-tile-url-' + slot);
+ var btn = el('btn-jump-survive-platform-tile-clear-' + slot);
+ if (inp) {
+ inp.addEventListener('change', function () { updateJumpSurvivePlatformTilePreview(slot); });
+ inp.addEventListener('blur', function () { updateJumpSurvivePlatformTilePreview(slot); });
+ }
+ if (btn) {
+ btn.addEventListener('click', function () {
+ var i = el('jump-survive-platform-tile-url-' + slot);
+ if (i) i.value = '';
+ updateJumpSurvivePlatformTilePreview(slot);
+ });
+ }
+ })(s);
+ }
+ }
+
+ function loadJumpSurviveTimingPanel() {
+ gameTimingFetch('GET')
+ .then(function (data) {
+ var inp = el('jump-survive-height-mult');
+ if (inp) {
+ var jsm = Number(data.jumpSurviveJumpHeightMult);
+ inp.value = String(Number.isFinite(jsm) ? Math.round(Math.max(0.5, Math.min(4, jsm)) * 100) / 100 : 1.5);
+ }
+ var inpT = el('jump-survive-mission-sec');
+ if (inpT) {
+ var jss = Number(data.jumpSurviveMissionTimeSec);
+ inpT.value = String(Number.isFinite(jss) && jss > 0 ? Math.floor(jss) : 0);
+ }
+ var tiles = Array.isArray(data.jumpSurvivePlatformTiles) ? data.jumpSurvivePlatformTiles : [];
+ var legacy = typeof data.jumpSurvivePlatformTileUrl === 'string' ? data.jumpSurvivePlatformTileUrl : '';
+ for (var s = 1; s <= 3; s++) {
+ var o = tiles[s - 1] && typeof tiles[s - 1] === 'object' ? tiles[s - 1] : {};
+ var url = typeof o.url === 'string' ? o.url : '';
+ if (s === 1 && !url && legacy) url = legacy;
+ var inpU = el('jump-survive-platform-tile-url-' + s);
+ if (inpU) inpU.value = url;
+ var w = Number(o.w);
+ var h = Number(o.h);
+ var inpW = el('jump-survive-platform-tile-w-' + s);
+ var inpH = el('jump-survive-platform-tile-h-' + s);
+ if (inpW) inpW.value = String(Number.isFinite(w) && w > 0 ? Math.floor(w) : 0);
+ if (inpH) inpH.value = String(Number.isFinite(h) && h > 0 ? Math.floor(h) : 0);
+ updateJumpSurvivePlatformTilePreview(s);
+ }
+ setMsg('jump-survive-timing-msg', '', '');
+ })
+ .catch(function (e) {
+ setMsg('jump-survive-timing-msg', e.message || 'โหลดไม่ได้', 'error');
+ });
+ }
+
+ function updateSpaceShooterShipPreview(slot) {
+ var img = el('space-shooter-ship-prev-' + slot);
+ var inp = el('space-shooter-ship-url-' + slot);
+ if (!img) return;
+ var v = inp && inp.value ? String(inp.value).trim() : '';
+ if (!v) {
+ img.removeAttribute('src');
+ img.alt = '';
+ return;
+ }
+ if (!/^https?:\/\//i.test(v) && v.charAt(0) !== '/') v = '/' + v.replace(/^\/+/, '');
+ img.alt = 'Ship slot ' + slot;
+ img.src = v;
+ }
+
+ function bindSpaceShooterShipUrlInputs() {
+ for (var s = 1; s <= 6; s++) {
+ (function (slot) {
+ var inp = el('space-shooter-ship-url-' + slot);
+ var btn = el('btn-space-shooter-ship-clear-' + slot);
+ if (inp) {
+ inp.addEventListener('change', function () { updateSpaceShooterShipPreview(slot); });
+ inp.addEventListener('blur', function () { updateSpaceShooterShipPreview(slot); });
+ }
+ if (btn) {
+ btn.addEventListener('click', function () {
+ var i = el('space-shooter-ship-url-' + slot);
+ if (i) i.value = '';
+ updateSpaceShooterShipPreview(slot);
+ });
+ }
+ })(s);
+ }
+ }
+
+ function readSpaceShooterShipImageUrlsFromForm() {
+ var urls = [];
+ for (var i = 1; i <= 6; i++) {
+ var inp = el('space-shooter-ship-url-' + i);
+ urls.push(inp && inp.value ? String(inp.value).trim() : '');
+ }
+ return urls;
+ }
+
+ function updateSpaceShooterDamageOverlayPreview(hit) {
+ var img = el('space-shooter-damage-prev-' + hit);
+ var inp = el('space-shooter-damage-url-' + hit);
+ if (!img) return;
+ var v = inp && inp.value ? String(inp.value).trim() : '';
+ if (!v) {
+ img.removeAttribute('src');
+ img.alt = '';
+ return;
+ }
+ if (!/^https?:\/\//i.test(v) && v.charAt(0) !== '/') v = '/' + v.replace(/^\/+/, '');
+ img.alt = 'Damage overlay hit ' + hit;
+ img.src = v;
+ }
+
+ function readSpaceShooterShipDamageOverlayUrlsFromForm() {
+ var urls = [];
+ for (var h = 1; h <= 3; h++) {
+ var inp = el('space-shooter-damage-url-' + h);
+ urls.push(inp && inp.value ? String(inp.value).trim() : '');
+ }
+ return urls;
+ }
+
+ function bindSpaceShooterDamageOverlayPanel() {
+ for (var h = 1; h <= 3; h++) {
+ (function (hit) {
+ var inp = el('space-shooter-damage-url-' + hit);
+ var btnClr = el('btn-space-shooter-damage-clear-' + hit);
+ var btnUp = el('btn-space-shooter-damage-upload-' + hit);
+ var fileInp = el('space-shooter-damage-file-' + hit);
+ if (inp) {
+ inp.addEventListener('change', function () { updateSpaceShooterDamageOverlayPreview(hit); });
+ inp.addEventListener('blur', function () { updateSpaceShooterDamageOverlayPreview(hit); });
+ }
+ if (btnClr) {
+ btnClr.addEventListener('click', function () {
+ var i = el('space-shooter-damage-url-' + hit);
+ if (i) i.value = '';
+ if (fileInp) fileInp.value = '';
+ updateSpaceShooterDamageOverlayPreview(hit);
+ });
+ }
+ if (btnUp && fileInp) {
+ btnUp.addEventListener('click', function () {
+ if (!fileInp.files || !fileInp.files[0]) {
+ setMsg('space-shooter-timing-msg', 'เลือกไฟล์รูปก่อน · Pick an image file first', 'error');
+ return;
+ }
+ readFileAsDataURL(fileInp.files[0])
+ .then(function (dataUrl) {
+ return gauntletAssetsJsonFetch(GAME_GAUNTLET_ASSETS_API + '/upload', {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({
+ imageDataUrl: dataUrl,
+ label: 'space-shooter-damage-hit-' + hit,
+ }),
+ });
+ })
+ .then(function (j) {
+ if (!j || !j.ok || !j.url) {
+ throw new Error((j && j.error) || 'อัปโหลดไม่สำเร็จ · Upload failed');
+ }
+ var inpU = el('space-shooter-damage-url-' + hit);
+ if (inpU) inpU.value = String(j.url).trim();
+ updateSpaceShooterDamageOverlayPreview(hit);
+ setMsg(
+ 'space-shooter-timing-msg',
+ 'อัปโหลด overlay ช่อง ' + hit + ' แล้ว — กดบันทึกด้านล่างเพื่อเก็บลง game-timing.json · Uploaded; click Save',
+ 'ok'
+ );
+ })
+ .catch(function (e) {
+ setMsg('space-shooter-timing-msg', e.message || 'อัปโหลดไม่สำเร็จ', 'error');
+ });
+ });
+ }
+ })(h);
+ }
+ }
+
+ function updateSpaceShooterAstFallPreview() {
+ var img = el('space-shooter-ast-fall-prev');
+ var inp = el('space-shooter-ast-fall-url');
+ if (!img) return;
+ var v = inp && inp.value ? String(inp.value).trim() : '';
+ if (!v) {
+ img.removeAttribute('src');
+ img.alt = '';
+ return;
+ }
+ if (!/^https?:\/\//i.test(v) && v.charAt(0) !== '/') v = '/' + v.replace(/^\/+/, '');
+ img.alt = 'Asteroid falling';
+ img.src = v;
+ }
+
+ function updateSpaceShooterAstExplodeRowPreview(row) {
+ if (!row) return;
+ var img = row.querySelector('.space-shooter-ast-explode-prev');
+ var inp = row.querySelector('.space-shooter-ast-explode-url');
+ if (!img) return;
+ var v = inp && inp.value ? String(inp.value).trim() : '';
+ if (!v) {
+ img.removeAttribute('src');
+ img.alt = '';
+ return;
+ }
+ if (!/^https?:\/\//i.test(v) && v.charAt(0) !== '/') v = '/' + v.replace(/^\/+/, '');
+ img.alt = 'Asteroid explode frame';
+ img.src = v;
+ }
+
+ function renumberSpaceShooterAstExplodeRows() {
+ var wrap = el('space-shooter-ast-explode-rows');
+ if (!wrap) return;
+ var rows = wrap.querySelectorAll('.space-shooter-ast-explode-row');
+ rows.forEach(function (row, i) {
+ var slot = row.querySelector('.space-shooter-ship-slot');
+ if (slot) slot.textContent = String(i + 1);
+ });
+ }
+
+ function addSpaceShooterAstExplodeRow(initialUrl) {
+ var wrap = el('space-shooter-ast-explode-rows');
+ if (!wrap) return;
+ var rows = wrap.querySelectorAll('.space-shooter-ast-explode-row');
+ if (rows.length >= 31) {
+ setMsg('space-shooter-timing-msg', 'เฟรมแตกสูงสุด 31 แถว (รวมรูปตกแล้วไม่เกิน 32 URL) · Max 31 explosion rows', 'error');
+ return;
+ }
+ var ix = rows.length + 1;
+ var row = document.createElement('div');
+ row.className = 'space-shooter-ship-row space-shooter-ast-explode-row';
+ row.innerHTML =
+ '' +
+ ix +
+ ' URL ' +
+ ' ' +
+ 'อัปโหลด ' +
+ ' ' +
+ 'ล้าง ' +
+ 'ลบแถว ';
+ var inp = row.querySelector('.space-shooter-ast-explode-url');
+ if (inp && initialUrl != null && String(initialUrl).trim()) inp.value = String(initialUrl).trim();
+ if (inp) {
+ inp.addEventListener('change', function () {
+ updateSpaceShooterAstExplodeRowPreview(row);
+ });
+ inp.addEventListener('blur', function () {
+ updateSpaceShooterAstExplodeRowPreview(row);
+ });
+ }
+ wrap.appendChild(row);
+ updateSpaceShooterAstExplodeRowPreview(row);
+ }
+
+ function clearSpaceShooterAstExplodeRows() {
+ var wrap = el('space-shooter-ast-explode-rows');
+ if (wrap) wrap.innerHTML = '';
+ }
+
+ function readSpaceShooterAsteroidSpriteUrlsFromForm() {
+ var out = [];
+ var fallInp = el('space-shooter-ast-fall-url');
+ var fall = fallInp && fallInp.value ? String(fallInp.value).trim() : '';
+ if (fall) out.push(fall);
+ var wrap = el('space-shooter-ast-explode-rows');
+ if (wrap) {
+ var rows = wrap.querySelectorAll('.space-shooter-ast-explode-row');
+ for (var ri = 0; ri < rows.length && out.length < 32; ri++) {
+ var inp = rows[ri].querySelector('.space-shooter-ast-explode-url');
+ var u = inp && inp.value ? String(inp.value).trim() : '';
+ if (u) out.push(u);
+ }
+ }
+ return out;
+ }
+
+ function bindSpaceShooterAsteroidSpritePanel() {
+ var wrap = el('space-shooter-ast-explode-rows');
+ if (!wrap || wrap.getAttribute('data-bound') === '1') return;
+ wrap.setAttribute('data-bound', '1');
+ wrap.addEventListener('click', function (ev) {
+ var t = ev.target;
+ if (!t || !t.closest) return;
+ var rm = t.closest('.btn-space-shooter-ast-explode-remove');
+ if (rm) {
+ var row = rm.closest('.space-shooter-ast-explode-row');
+ if (row && row.parentNode) row.parentNode.removeChild(row);
+ renumberSpaceShooterAstExplodeRows();
+ return;
+ }
+ var clr = t.closest('.btn-space-shooter-ast-explode-clear');
+ if (clr) {
+ var rowC = clr.closest('.space-shooter-ast-explode-row');
+ if (!rowC) return;
+ var iu = rowC.querySelector('.space-shooter-ast-explode-url');
+ var fi = rowC.querySelector('.space-shooter-ast-explode-file');
+ if (iu) iu.value = '';
+ if (fi) fi.value = '';
+ updateSpaceShooterAstExplodeRowPreview(rowC);
+ return;
+ }
+ var up = t.closest('.btn-space-shooter-ast-explode-upload');
+ if (!up) return;
+ var rowU = up.closest('.space-shooter-ast-explode-row');
+ if (!rowU) return;
+ var fileInp = rowU.querySelector('.space-shooter-ast-explode-file');
+ if (!fileInp || !fileInp.files || !fileInp.files[0]) {
+ setMsg('space-shooter-timing-msg', 'เลือกไฟล์รูปก่อน · Pick an image file first', 'error');
+ return;
+ }
+ readFileAsDataURL(fileInp.files[0])
+ .then(function (dataUrl) {
+ return gauntletAssetsJsonFetch(GAME_GAUNTLET_ASSETS_API + '/upload', {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({
+ imageDataUrl: dataUrl,
+ label: 'space-shooter-ast-explode',
+ }),
+ });
+ })
+ .then(function (j) {
+ if (!j || !j.ok || !j.url) {
+ throw new Error((j && j.error) || 'อัปโหลดไม่สำเร็จ · Upload failed');
+ }
+ var inpU = rowU.querySelector('.space-shooter-ast-explode-url');
+ if (inpU) inpU.value = String(j.url).trim();
+ updateSpaceShooterAstExplodeRowPreview(rowU);
+ setMsg(
+ 'space-shooter-timing-msg',
+ 'อัปโหลดเฟรมแตกแล้ว — กดบันทึกด้านล่างเพื่อเก็บ · Uploaded; click Save',
+ 'ok'
+ );
+ })
+ .catch(function (e) {
+ setMsg('space-shooter-timing-msg', e.message || 'อัปโหลดไม่สำเร็จ', 'error');
+ });
+ });
+ var btnAdd = el('btn-space-shooter-ast-add-explode');
+ if (btnAdd) {
+ btnAdd.addEventListener('click', function () {
+ setMsg('space-shooter-timing-msg', '', '');
+ addSpaceShooterAstExplodeRow('');
+ });
+ }
+ var fallInp = el('space-shooter-ast-fall-url');
+ var fallFile = el('space-shooter-ast-fall-file');
+ var fallUp = el('btn-space-shooter-ast-fall-upload');
+ var fallClr = el('btn-space-shooter-ast-fall-clear');
+ if (fallInp) {
+ fallInp.addEventListener('change', updateSpaceShooterAstFallPreview);
+ fallInp.addEventListener('blur', updateSpaceShooterAstFallPreview);
+ }
+ if (fallClr) {
+ fallClr.addEventListener('click', function () {
+ if (fallInp) fallInp.value = '';
+ if (fallFile) fallFile.value = '';
+ updateSpaceShooterAstFallPreview();
+ });
+ }
+ if (fallUp && fallFile) {
+ fallUp.addEventListener('click', function () {
+ if (!fallFile.files || !fallFile.files[0]) {
+ setMsg('space-shooter-timing-msg', 'เลือกไฟล์รูปก่อน · Pick an image file first', 'error');
+ return;
+ }
+ readFileAsDataURL(fallFile.files[0])
+ .then(function (dataUrl) {
+ return gauntletAssetsJsonFetch(GAME_GAUNTLET_ASSETS_API + '/upload', {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({
+ imageDataUrl: dataUrl,
+ label: 'space-shooter-ast-fall',
+ }),
+ });
+ })
+ .then(function (j) {
+ if (!j || !j.ok || !j.url) {
+ throw new Error((j && j.error) || 'อัปโหลดไม่สำเร็จ · Upload failed');
+ }
+ if (fallInp) fallInp.value = String(j.url).trim();
+ updateSpaceShooterAstFallPreview();
+ setMsg(
+ 'space-shooter-timing-msg',
+ 'อัปโหลดรูปตกแล้ว — กดบันทึกด้านล่างเพื่อเก็บ · Uploaded; click Save',
+ 'ok'
+ );
+ })
+ .catch(function (e) {
+ setMsg('space-shooter-timing-msg', e.message || 'อัปโหลดไม่สำเร็จ', 'error');
+ });
+ });
+ }
+ }
+
+ function loadSpaceShooterTimingPanel() {
+ gameTimingFetch('GET')
+ .then(function (data) {
+ var inpT = el('space-shooter-mission-sec');
+ if (inpT) {
+ var ss = Number(data.spaceShooterMissionTimeSec);
+ inpT.value = String(Number.isFinite(ss) && ss > 0 ? Math.floor(ss) : 0);
+ }
+ var inpIv = el('space-shooter-asteroid-interval-ms');
+ if (inpIv) {
+ var iv = Number(data.spaceShooterAsteroidIntervalMs);
+ inpIv.value = String(Number.isFinite(iv) && iv >= 200 ? Math.min(10000, Math.floor(iv)) : 1040);
+ }
+ var urls = data.spaceShooterShipImageUrls;
+ if (!Array.isArray(urls)) urls = [];
+ for (var k = 1; k <= 6; k++) {
+ var inpU = el('space-shooter-ship-url-' + k);
+ if (inpU) inpU.value = urls[k - 1] != null ? String(urls[k - 1]) : '';
+ updateSpaceShooterShipPreview(k);
+ }
+ var fallInpL = el('space-shooter-ast-fall-url');
+ if (fallInpL) {
+ var astArr = data.spaceShooterAsteroidSpriteUrls;
+ if (!Array.isArray(astArr)) astArr = [];
+ fallInpL.value = astArr[0] != null ? String(astArr[0]) : '';
+ updateSpaceShooterAstFallPreview();
+ clearSpaceShooterAstExplodeRows();
+ for (var ai = 1; ai < astArr.length && ai < 32; ai++) {
+ addSpaceShooterAstExplodeRow(astArr[ai]);
+ }
+ }
+ var inpFms = el('space-shooter-asteroid-explode-ms');
+ if (inpFms) {
+ var ef = Number(data.spaceShooterAsteroidExplodeFrameMs);
+ inpFms.value = String(Number.isFinite(ef) ? Math.max(30, Math.min(500, Math.round(ef))) : 70);
+ }
+ var dmg = data.spaceShooterShipDamageOverlayUrls;
+ if (!Array.isArray(dmg)) dmg = [];
+ for (var dh = 1; dh <= 3; dh++) {
+ var inpD = el('space-shooter-damage-url-' + dh);
+ if (inpD) inpD.value = dmg[dh - 1] != null ? String(dmg[dh - 1]) : '';
+ updateSpaceShooterDamageOverlayPreview(dh);
+ }
+ setMsg('space-shooter-timing-msg', '', '');
+ })
+ .catch(function (e) {
+ setMsg('space-shooter-timing-msg', e.message || 'โหลดไม่ได้', 'error');
+ });
+ }
+
+ function saveSpaceShooterTimingPanel() {
+ var limSs = el('space-shooter-mission-sec') ? parseInt(String(el('space-shooter-mission-sec').value), 10) : 0;
+ if (Number.isNaN(limSs) || limSs < 0) limSs = 0;
+ limSs = limSs <= 0 ? 0 : Math.max(10, Math.min(7200, limSs));
+ var shipUrls = readSpaceShooterShipImageUrlsFromForm();
+ var damageUrls = readSpaceShooterShipDamageOverlayUrlsFromForm();
+ var astUrls = readSpaceShooterAsteroidSpriteUrlsFromForm();
+ var inpFms = el('space-shooter-asteroid-explode-ms');
+ var explodeMs = inpFms ? parseInt(String(inpFms.value), 10) : 70;
+ if (Number.isNaN(explodeMs)) explodeMs = 70;
+ explodeMs = Math.max(30, Math.min(500, explodeMs));
+ var inpIv = el('space-shooter-asteroid-interval-ms');
+ var asteroidIv = inpIv ? parseInt(String(inpIv.value), 10) : 1040;
+ if (Number.isNaN(asteroidIv)) asteroidIv = 1040;
+ asteroidIv = Math.max(200, Math.min(10000, asteroidIv));
+ gameTimingFetch('GET')
+ .then(function (data) {
+ data.spaceShooterMissionTimeSec = limSs;
+ data.spaceShooterShipImageUrls = shipUrls;
+ data.spaceShooterShipDamageOverlayUrls = damageUrls;
+ data.spaceShooterAsteroidSpriteUrls = astUrls;
+ data.spaceShooterAsteroidExplodeFrameMs = explodeMs;
+ data.spaceShooterAsteroidIntervalMs = asteroidIv;
+ return gameTimingFetch('PUT', data);
+ })
+ .then(function () {
+ setMsg('space-shooter-timing-msg', 'บันทึกแล้ว — เวลา / ความถี่เกิดอุกาบาต / รูปยาน / overlay / อุกาบาต มีผลเมื่อรีเฟรชหน้าเล่นหรือโหลด /api/game-timing', 'ok');
+ })
+ .catch(function (e) {
+ setMsg('space-shooter-timing-msg', e.message || 'บันทึกไม่ได้', 'error');
+ });
+ }
+
+ function encodeSpacesInUrlPath(t) {
+ var s = String(t || '');
+ var q = s.indexOf('?');
+ var pathPart = q === -1 ? s : s.slice(0, q);
+ var query = q === -1 ? '' : s.slice(q);
+ return pathPart.replace(/ /g, '%20') + query;
+ }
+
+ function decodeAssetUrlPercentRuns(t) {
+ var s = String(t || '');
+ var q = s.indexOf('?');
+ var base = q === -1 ? s : s.slice(0, q);
+ var query = q === -1 ? '' : s.slice(q);
+ for (var i = 0; i < 2; i++) {
+ try {
+ var d = decodeURIComponent(base);
+ if (d === base) break;
+ base = d;
+ } catch (e) {
+ break;
+ }
+ }
+ return base + query;
+ }
+
+ function normalizeGameAssetUrlForWebAdmin(t) {
+ var s = String(t || '');
+ s = s.replace(/^\/Game\/public\/img\//i, '/Game/img/');
+ s = s.replace(/^Game\/public\/img\//i, 'Game/img/');
+ return s;
+ }
+
+ /** ให้สอดคล้องกับ server sanitizeGauntletAssetUrl + กัน placeholder .... */
+ function normalizeMegaVirusAssetUrl(v) {
+ var t = v != null ? normalizeGameAssetUrlForWebAdmin(decodeAssetUrlPercentRuns(String(v).trim())).replace(/\/+$/, '') : '';
+ if (/^\/Game\/img\/MegaVirus\/Artboard$/i.test(t) || /^Game\/img\/MegaVirus\/Artboard$/i.test(t)) {
+ t = '/Game/img/MegaVirus/Artboard%209.png';
+ }
+ if (!t || t.length > 500) return '';
+ if (/\.{4,}/.test(t)) return '';
+ if (/[\t\n\r<>"'`]/.test(t)) return '';
+ if (/^https?:\/\//i.test(t)) return encodeSpacesInUrlPath(t);
+ if (/^Game\//i.test(t)) return encodeSpacesInUrlPath('/' + t.replace(/^\/+/, ''));
+ if (t.charAt(0) === '/') return encodeSpacesInUrlPath(t);
+ return '';
+ }
+
+ function updateMegaVirusBossPreview() {
+ var img = el('mega-virus-boss-prev');
+ var inp = el('mega-virus-boss-url');
+ if (!img) return;
+ var v = normalizeMegaVirusAssetUrl(inp && inp.value ? String(inp.value).trim() : '');
+ if (!v) {
+ img.removeAttribute('src');
+ img.alt = '';
+ return;
+ }
+ img.alt = 'Boss preview';
+ img.src = v;
+ }
+
+ function updateMegaVirusBalloonPreview(slot) {
+ var img = el('mega-virus-balloon-prev-' + slot);
+ var inp = el('mega-virus-balloon-url-' + slot);
+ if (!img) return;
+ var v = normalizeMegaVirusAssetUrl(inp && inp.value ? String(inp.value).trim() : '');
+ if (!v) {
+ img.removeAttribute('src');
+ img.alt = '';
+ return;
+ }
+ img.alt = 'Balloon P' + slot;
+ img.src = v;
+ }
+
+ function updateMegaVirusBalloonFallbackPreview() {
+ var img = el('mega-virus-balloon-fallback-prev');
+ var inp = el('mega-virus-balloon-fallback-url');
+ if (!img) return;
+ var v = normalizeMegaVirusAssetUrl(inp && inp.value ? String(inp.value).trim() : '');
+ if (!v) {
+ img.removeAttribute('src');
+ img.alt = '';
+ return;
+ }
+ img.alt = 'Fallback balloon';
+ img.src = v;
+ }
+
+ function readMegaVirusBalloonUrlsFromForm() {
+ var urls = [];
+ for (var i = 1; i <= 6; i++) {
+ var inp = el('mega-virus-balloon-url-' + i);
+ urls.push(normalizeMegaVirusAssetUrl(inp && inp.value ? String(inp.value).trim() : ''));
+ }
+ return urls;
+ }
+
+ function bindMegaVirusPanel() {
+ var formMv = el('form-mega-virus-timing');
+ if (formMv) {
+ formMv.addEventListener('submit', function (e) {
+ e.preventDefault();
+ saveMegaVirusTimingPanel();
+ });
+ }
+ var bossInp = el('mega-virus-boss-url');
+ if (bossInp) {
+ bossInp.addEventListener('change', updateMegaVirusBossPreview);
+ bossInp.addEventListener('blur', updateMegaVirusBossPreview);
+ }
+ var bossClr = el('btn-mega-virus-boss-clear');
+ if (bossClr) {
+ bossClr.addEventListener('click', function () {
+ var i = el('mega-virus-boss-url');
+ if (i) i.value = '';
+ updateMegaVirusBossPreview();
+ });
+ }
+ for (var s = 1; s <= 6; s++) {
+ (function (slot) {
+ var inp = el('mega-virus-balloon-url-' + slot);
+ var btn = el('btn-mega-virus-balloon-clear-' + slot);
+ if (inp) {
+ inp.addEventListener('change', function () { updateMegaVirusBalloonPreview(slot); });
+ inp.addEventListener('blur', function () { updateMegaVirusBalloonPreview(slot); });
+ }
+ if (btn) {
+ btn.addEventListener('click', function () {
+ var i = el('mega-virus-balloon-url-' + slot);
+ if (i) i.value = '';
+ updateMegaVirusBalloonPreview(slot);
+ });
+ }
+ })(s);
+ }
+ var fbInp = el('mega-virus-balloon-fallback-url');
+ if (fbInp) {
+ fbInp.addEventListener('change', updateMegaVirusBalloonFallbackPreview);
+ fbInp.addEventListener('blur', updateMegaVirusBalloonFallbackPreview);
+ }
+ var fbClr = el('btn-mega-virus-balloon-fallback-clear');
+ if (fbClr) {
+ fbClr.addEventListener('click', function () {
+ var i = el('mega-virus-balloon-fallback-url');
+ if (i) i.value = '';
+ updateMegaVirusBalloonFallbackPreview();
+ });
+ }
+ }
+
+ function applyMegaVirusPanelFromTimingData(data) {
+ if (!data || typeof data !== 'object') return;
+ var inpT = el('mega-virus-mission-sec');
+ if (inpT && Object.prototype.hasOwnProperty.call(data, 'balloonBossMissionTimeSec')) {
+ var bb = Number(data.balloonBossMissionTimeSec);
+ inpT.value = String(Number.isFinite(bb) && bb > 0 ? Math.floor(bb) : 0);
+ }
+ var inpBp = el('mega-virus-balloons-per-player');
+ if (inpBp && Object.prototype.hasOwnProperty.call(data, 'balloonBossBalloonsPerPlayer')) {
+ var bp = Number(data.balloonBossBalloonsPerPlayer);
+ inpBp.value = String(Number.isFinite(bp) && bp > 0 ? Math.min(12, Math.floor(bp)) : 0);
+ }
+ var inpDh = el('mega-virus-damage-per-hit');
+ if (inpDh && Object.prototype.hasOwnProperty.call(data, 'balloonBossDamagePerHit')) {
+ var dh = Number(data.balloonBossDamagePerHit);
+ inpDh.value = String(Number.isFinite(dh) && dh > 0 ? Math.max(1, Math.min(100, Math.floor(dh))) : 10);
+ }
+ var bossInp = el('mega-virus-boss-url');
+ if (bossInp && Object.prototype.hasOwnProperty.call(data, 'balloonBossBossImageUrl')) {
+ bossInp.value = data.balloonBossBossImageUrl != null ? String(data.balloonBossBossImageUrl) : '';
+ updateMegaVirusBossPreview();
+ }
+ if (Array.isArray(data.balloonBossPlayerBalloonImageUrls)) {
+ var urls = data.balloonBossPlayerBalloonImageUrls;
+ for (var k = 1; k <= 6; k++) {
+ var inpU = el('mega-virus-balloon-url-' + k);
+ if (inpU) inpU.value = urls[k - 1] != null ? String(urls[k - 1]) : '';
+ updateMegaVirusBalloonPreview(k);
+ }
+ }
+ var fb = el('mega-virus-balloon-fallback-url');
+ if (fb && Object.prototype.hasOwnProperty.call(data, 'balloonBossPlayerBalloonFallbackUrl')) {
+ fb.value = data.balloonBossPlayerBalloonFallbackUrl != null ? String(data.balloonBossPlayerBalloonFallbackUrl) : '';
+ updateMegaVirusBalloonFallbackPreview();
+ }
+ }
+
+ function loadMegaVirusPanel() {
+ gameTimingFetch('GET')
+ .then(function (data) {
+ applyMegaVirusPanelFromTimingData(data);
+ setMsg('mega-virus-timing-msg', '', '');
+ })
+ .catch(function (e) {
+ setMsg('mega-virus-timing-msg', e.message || 'โหลดไม่ได้', 'error');
+ });
+ }
+
+ function saveMegaVirusTimingPanel() {
+ if (megaVirusSaveInFlight) return;
+ megaVirusSaveInFlight = true;
+ var btn = el('btn-mega-virus-save');
+ if (btn) btn.disabled = true;
+ var limSs = el('mega-virus-mission-sec') ? parseInt(String(el('mega-virus-mission-sec').value), 10) : 0;
+ if (Number.isNaN(limSs) || limSs < 0) limSs = 0;
+ limSs = limSs <= 0 ? 0 : Math.max(10, Math.min(7200, limSs));
+ var bossUrl = normalizeMegaVirusAssetUrl(el('mega-virus-boss-url') && el('mega-virus-boss-url').value ? String(el('mega-virus-boss-url').value).trim() : '');
+ var balloonUrls = readMegaVirusBalloonUrlsFromForm();
+ var fbUrl = normalizeMegaVirusAssetUrl(el('mega-virus-balloon-fallback-url') && el('mega-virus-balloon-fallback-url').value
+ ? String(el('mega-virus-balloon-fallback-url').value).trim()
+ : '');
+ var balloonsPer = el('mega-virus-balloons-per-player') ? parseInt(String(el('mega-virus-balloons-per-player').value), 10) : 0;
+ if (Number.isNaN(balloonsPer) || balloonsPer < 0) balloonsPer = 0;
+ balloonsPer = Math.max(0, Math.min(12, balloonsPer));
+ var dmgPerHit = el('mega-virus-damage-per-hit') ? parseInt(String(el('mega-virus-damage-per-hit').value), 10) : 10;
+ if (Number.isNaN(dmgPerHit) || dmgPerHit < 1) dmgPerHit = 10;
+ dmgPerHit = Math.max(1, Math.min(100, dmgPerHit));
+ gameTimingFetch('GET')
+ .then(function (data) {
+ data.balloonBossMissionTimeSec = limSs;
+ data.balloonBossBossImageUrl = bossUrl;
+ data.balloonBossPlayerBalloonImageUrls = balloonUrls;
+ data.balloonBossPlayerBalloonFallbackUrl = fbUrl;
+ data.balloonBossBalloonsPerPlayer = balloonsPer;
+ data.balloonBossDamagePerHit = dmgPerHit;
+ return gameTimingFetch('PUT', data);
+ })
+ .then(function (res) {
+ if (res && typeof res === 'object') applyMegaVirusPanelFromTimingData(res);
+ setMsg('mega-virus-timing-msg', 'บันทึกแล้ว — รีเฟรชหน้าเล่น (หรือเปิดใหม่) เพื่อโหลดรูป · Saved; hard-refresh play.', 'ok');
+ })
+ .catch(function (e) {
+ setMsg('mega-virus-timing-msg', e.message || 'บันทึกไม่ได้', 'error');
+ })
+ .then(function () {
+ megaVirusSaveInFlight = false;
+ if (btn) btn.disabled = false;
+ });
+ }
+
+ function applyForcedMinigameKeysToForm(keys) {
+ var arr = Array.isArray(keys) ? keys : [];
+ for (var i = 1; i <= 3; i++) {
+ var sel = el('forced-mg-' + i);
+ if (sel) sel.value = arr[i - 1] || '';
+ }
+ }
+
+ function readForcedMinigameKeysFromForm() {
+ var out = [];
+ for (var i = 1; i <= 3; i++) {
+ var sel = el('forced-mg-' + i);
+ out.push(sel ? String(sel.value || '') : '');
+ }
+ return out;
+ }
+
+ function loadForcedMinigamePanel() {
+ gameTimingFetch('GET')
+ .then(function (data) {
+ applyForcedMinigameKeysToForm(data && data.forcedMinigameKeys);
+ setMsg('forced-minigame-msg', '', '');
+ })
+ .catch(function (e) {
+ setMsg('forced-minigame-msg', e.message || 'โหลดไม่ได้', 'error');
+ });
+ }
+
+ function saveForcedMinigamePanel() {
+ var keys = readForcedMinigameKeysFromForm();
+ var anyForced = keys.some(function (k) { return !!k; });
+ var btn = el('btn-forced-minigame-save');
+ if (btn) btn.disabled = true;
+ gameTimingFetch('GET')
+ .then(function (data) {
+ data.forcedMinigameKeys = keys;
+ return gameTimingFetch('PUT', data);
+ })
+ .then(function (res) {
+ if (res && typeof res === 'object') applyForcedMinigameKeysToForm(res.forcedMinigameKeys);
+ setMsg('forced-minigame-msg', anyForced ? 'บันทึกแล้ว — เริ่มคดีใหม่เพื่อเทสต์การ์ดที่ตั้งไว้' : 'กลับเป็นปกติ (สุ่มทั้ง 3 ใบ) แล้ว', 'ok');
+ })
+ .catch(function (e) {
+ setMsg('forced-minigame-msg', e.message || 'บันทึกไม่ได้', 'error');
+ })
+ .then(function () {
+ if (btn) btn.disabled = false;
+ });
+ }
+
+ var SPECIAL_CARD_GAMES = [
+ { id: 'mng8a80o', label: 'Minigame-1 จริงหรือไม่' },
+ { id: 'mno9kb07', label: 'Minigame-2 วิ่งหลบสิ่งกีดขวาง' },
+ { id: 'mnn93hpi', label: 'Minigame-3 Tower block' },
+ { id: 'mnorwqx1', label: 'Minigame-4 คำศัพท์ในกระบวนการยุติธรรม' },
+ { id: 'mnptfts2', label: 'Minigame-5 กระโดดขึ้นแท่น' },
+ { id: 'mnpz6rkp', label: 'Minigame-6 ยิงอุกาบาต Violent Crime' },
+ { id: 'mnq1eml7', label: 'Minigame-7 ยิง Mega Virus' }
+ ];
+ var SPECIAL_CARD_OPTS = [
+ { v: '', t: '— ไม่บังคับ —' },
+ { v: '1', t: '1 · เพิ่มเวลามินิเกม +10s' },
+ { v: '2', t: '2 · เพิ่มเวลาโหวต +10s' },
+ { v: '3', t: '3 · แบนผู้เล่น 1 คน' },
+ { v: '4', t: '4 · ปิดปากผู้เล่น 1 คน' },
+ { v: '5', t: '5 · จับผิดตัว โหวตใหม่' },
+ { v: '6', t: '6 · ทุกคน +10 COINS' },
+ { v: '7', t: '7 · ทุกคนหลักฐานฟรี +1' }
+ ];
+ var specialCardRowsBuilt = false;
+ function buildSpecialCardByMapRows() {
+ if (specialCardRowsBuilt) return;
+ var wrap = el('special-card-by-map-rows');
+ if (!wrap) return;
+ wrap.innerHTML = '';
+ SPECIAL_CARD_GAMES.forEach(function (g) {
+ var row = document.createElement('div');
+ row.style.cssText = 'display:flex;align-items:center;gap:10px;flex-wrap:wrap;';
+ var name = document.createElement('span');
+ name.style.cssText = 'min-width:240px;color:#cfd6ea;font-size:14px;';
+ name.textContent = g.label;
+ var sel = document.createElement('select');
+ sel.id = 'tsc-' + g.id;
+ sel.style.cssText = 'padding:6px 8px;min-width:300px;font-size:14px;';
+ SPECIAL_CARD_OPTS.forEach(function (o) {
+ var op = document.createElement('option');
+ op.value = o.v;
+ op.textContent = o.t;
+ sel.appendChild(op);
+ });
+ row.appendChild(name);
+ row.appendChild(sel);
+ wrap.appendChild(row);
+ });
+ specialCardRowsBuilt = true;
+ }
+ function loadSpecialCardByMapPanel() {
+ buildSpecialCardByMapRows();
+ gameTimingFetch('GET')
+ .then(function (data) {
+ var m = (data && data.testSpecialCardByMap) || {};
+ SPECIAL_CARD_GAMES.forEach(function (g) {
+ var sel = el('tsc-' + g.id);
+ if (sel) sel.value = (m[g.id] != null && m[g.id] !== '') ? String(m[g.id]) : '';
+ });
+ setMsg('special-card-by-map-msg', '', '');
+ })
+ .catch(function (e) { setMsg('special-card-by-map-msg', e.message || 'โหลดไม่ได้', 'error'); });
+ }
+ function saveSpecialCardByMapPanel() {
+ var map = {};
+ SPECIAL_CARD_GAMES.forEach(function (g) {
+ var sel = el('tsc-' + g.id);
+ var v = sel ? parseInt(String(sel.value || ''), 10) : 0;
+ if (v >= 1 && v <= 7) map[g.id] = v;
+ });
+ var btn = el('btn-special-card-by-map-save');
+ if (btn) btn.disabled = true;
+ gameTimingFetch('GET')
+ .then(function (data) {
+ data.testSpecialCardByMap = map;
+ return gameTimingFetch('PUT', data);
+ })
+ .then(function (res) {
+ if (res && res.testSpecialCardByMap) {
+ var m = res.testSpecialCardByMap;
+ SPECIAL_CARD_GAMES.forEach(function (g) {
+ var sel = el('tsc-' + g.id);
+ if (sel) sel.value = (m[g.id] != null) ? String(m[g.id]) : '';
+ });
+ }
+ var any = Object.keys(map).length > 0;
+ setMsg('special-card-by-map-msg', any ? 'บันทึกแล้ว — เกมที่ตั้งจะขึ้นคำถามพิเศษ + การ์ดนั้นแน่นอน' : 'ล้างการบังคับแล้ว (กลับเป็นสุ่มปกติ)', 'ok');
+ })
+ .catch(function (e) { setMsg('special-card-by-map-msg', e.message || 'บันทึกไม่ได้', 'error'); })
+ .then(function () { if (btn) btn.disabled = false; });
+ }
+
+ function loadTroublesomeForcePanel() {
+ var chk = el('troublesome-force-offer');
+ if (!chk) return;
+ gameTimingFetch('GET')
+ .then(function (data) {
+ chk.checked = !!(data && data.troublesomeForceOffer);
+ setMsg('troublesome-force-msg', '', '');
+ })
+ .catch(function (e) { setMsg('troublesome-force-msg', e.message || 'โหลดไม่ได้', 'error'); });
+ }
+ function saveTroublesomeForcePanel() {
+ var chk = el('troublesome-force-offer');
+ if (!chk) return;
+ var on = !!chk.checked;
+ var btn = el('btn-troublesome-force-save');
+ if (btn) btn.disabled = true;
+ gameTimingFetch('GET')
+ .then(function (data) {
+ data.troublesomeForceOffer = on;
+ return gameTimingFetch('PUT', data);
+ })
+ .then(function (res) {
+ if (res && typeof res === 'object') chk.checked = !!res.troublesomeForceOffer;
+ setMsg('troublesome-force-msg', on ? 'บันทึกแล้ว — บทตัวป่วนจะขึ้นเสมอ (เริ่มคดีใหม่เพื่อเทสต์)' : 'ปิดแล้ว — กลับเป็นปกติ (ขึ้นเฉพาะคนจริง ≥ 4)', 'ok');
+ })
+ .catch(function (e) { setMsg('troublesome-force-msg', e.message || 'บันทึกไม่ได้', 'error'); })
+ .then(function () { if (btn) btn.disabled = false; });
+ }
+
+ function loadSpecialQuizIconExpirePanel() {
+ var inp = el('special-quiz-icon-expire-sec');
+ if (!inp) return;
+ gameTimingFetch('GET')
+ .then(function (data) {
+ var v = (data && data.specialQuizIconExpireSec != null) ? Math.floor(Number(data.specialQuizIconExpireSec)) : 10;
+ if (!Number.isFinite(v) || v < 0) v = 10;
+ inp.value = String(Math.min(120, v));
+ setMsg('special-quiz-icon-expire-msg', '', '');
+ })
+ .catch(function (e) { setMsg('special-quiz-icon-expire-msg', e.message || 'โหลดไม่ได้', 'error'); });
+ }
+ function saveSpecialQuizIconExpirePanel() {
+ var inp = el('special-quiz-icon-expire-sec');
+ if (!inp) return;
+ var v = Math.floor(Number(inp.value));
+ if (!Number.isFinite(v) || v < 0) v = 10;
+ v = Math.min(120, v);
+ inp.value = String(v);
+ var btn = el('btn-special-quiz-icon-expire-save');
+ if (btn) btn.disabled = true;
+ gameTimingFetch('GET')
+ .then(function (data) {
+ data.specialQuizIconExpireSec = v;
+ return gameTimingFetch('PUT', data);
+ })
+ .then(function (res) {
+ if (res && res.specialQuizIconExpireSec != null) inp.value = String(res.specialQuizIconExpireSec);
+ setMsg('special-quiz-icon-expire-msg', v > 0 ? ('บันทึกแล้ว — ไอคอนจะหายใน ' + v + ' วินาที (เริ่มเกมใหม่เพื่อเทสต์)') : 'บันทึกแล้ว — ไอคอนจะไม่หาย (อยู่จนจบเกม)', 'ok');
+ })
+ .catch(function (e) { setMsg('special-quiz-icon-expire-msg', e.message || 'บันทึกไม่ได้', 'error'); })
+ .then(function () { if (btn) btn.disabled = false; });
+ }
+
+ function saveJumpSurviveTimingPanel() {
+ var inp = el('jump-survive-height-mult');
+ var jumpSurvMult = inp ? parseFloat(String(inp.value)) : 1.5;
+ if (Number.isNaN(jumpSurvMult)) jumpSurvMult = 1.5;
+ jumpSurvMult = Math.round(Math.max(0.5, Math.min(4, jumpSurvMult)) * 100) / 100;
+ var limJump = el('jump-survive-mission-sec') ? parseInt(String(el('jump-survive-mission-sec').value), 10) : 0;
+ if (Number.isNaN(limJump) || limJump < 0) limJump = 0;
+ limJump = limJump <= 0 ? 0 : Math.max(10, Math.min(7200, limJump));
+ var platTiles = readJumpSurvivePlatformTilesFromForm();
+ gameTimingFetch('GET')
+ .then(function (data) {
+ data.jumpSurviveJumpHeightMult = jumpSurvMult;
+ data.jumpSurviveMissionTimeSec = limJump;
+ delete data.jumpSurvivePlatformTileUrl;
+ data.jumpSurvivePlatformTiles = platTiles;
+ return gameTimingFetch('PUT', data);
+ })
+ .then(function () {
+ setMsg('jump-survive-timing-msg', 'บันทึกแล้ว — ผู้เล่นกระโดดให้รอดได้ค่าใหม่เมื่อรีเฟรชหน้าเล่นหรือ sync จากเซิร์ฟเวอร์', 'ok');
+ })
+ .catch(function (e) {
+ setMsg('jump-survive-timing-msg', e.message || 'บันทึกไม่ได้', 'error');
+ });
+ }
+
+ function saveGameTimingPanel() {
+ var tickMs = parseInt(el('game-timing-tick-ms').value, 10);
+ var jumpT = parseInt(el('game-timing-jump-ticks').value, 10);
+ var limS = parseInt(el('game-timing-limit-sec').value, 10);
+ if (Number.isNaN(tickMs)) tickMs = 220;
+ if (Number.isNaN(jumpT)) jumpT = 16;
+ if (Number.isNaN(limS) || limS < 0) limS = 0;
+ tickMs = Math.max(80, Math.min(800, tickMs));
+ jumpT = Math.max(1, Math.min(40, jumpT));
+ limS = limS <= 0 ? 0 : Math.max(10, Math.min(7200, limS));
+ var lwPx = el('game-timing-laser-line-width') ? parseInt(el('game-timing-laser-line-width').value, 10) : 2;
+ if (Number.isNaN(lwPx)) lwPx = 2;
+ lwPx = Math.max(0, Math.min(24, lwPx));
+ /** แท็บเวลาเกม = เฉพาะ Gauntlet — อย่าส่ง stackSwingHz/stackBlockWidthTiles จากฟอร์ม (หลังรีเฟรชช่อง Stack ค้าง 0.55 จาก HTML จะทับค่าที่บันทึกไว้) */
+ gameTimingFetch('GET')
+ .then(function (data) {
+ data.gauntletTickMs = tickMs;
+ data.gauntletJumpTicks = jumpT;
+ data.gauntletJumpHeightMult = (function () { var v = parseFloat(el('game-timing-jump-height') && el('game-timing-jump-height').value); if (Number.isNaN(v)) v = 0.52; return Math.max(0.2, Math.min(1.5, v)); })();
+ data.gauntletTimeLimitSec = limS;
+ /* troublesomeOfferSec/RollMaxSec ย้ายไปแท็บ "บทตัวป่วน" — ไม่แตะที่นี่ (ค่าจาก GET ส่งต่อคงเดิม) */
+ data.gauntletLaneImageUrls = parseLaneUrlsTextarea();
+ data.gauntletLaserTopUrl = el('game-timing-laser-top-url') ? String(el('game-timing-laser-top-url').value).trim() : '';
+ data.gauntletLaserBottomUrl = el('game-timing-laser-bottom-url') ? String(el('game-timing-laser-bottom-url').value).trim() : '';
+ data.gauntletLaserLineUrl = el('game-timing-laser-line-url') ? String(el('game-timing-laser-line-url').value).trim() : '';
+ data.gauntletLaserFillColor = el('game-timing-laser-fill') ? String(el('game-timing-laser-fill').value).trim() : '';
+ data.gauntletLaserStrokeColor = el('game-timing-laser-stroke') ? String(el('game-timing-laser-stroke').value).trim() : '';
+ data.gauntletLaserLineWidthPx = lwPx;
+ return gameTimingFetch('PUT', data);
+ })
+ .then(function () {
+ setMsg('game-timing-msg', 'บันทึกแล้ว — พรมแดง tick·กระโดด / รูปอุปสรรค์ · Minigame-5 / Minigame-6 ตั้งแท็บของแต่ละเกม · ค่า Tower block (Stack) แก้ที่แท็บ Minigame-3 เท่านั้น · จำกัดเวลาพรมแดงใช้กับรอบถัดไปที่โฮสต์เริ่มเกม', 'ok');
+ })
+ .catch(function (e) {
+ setMsg('game-timing-msg', e.message || 'บันทึกไม่ได้', 'error');
+ });
+ }
+
+ function showPanel(name) {
+ ['panel-setup', 'panel-login', 'panel-app'].forEach(function (id) {
+ var p = el(id);
+ if (p) p.hidden = id !== name;
+ });
+ var inApp = name === 'panel-app';
+ el('top-actions').hidden = !inApp;
+ var stats = el('admin-sys-stats');
+ if (stats) stats.hidden = !inApp;
+ var burger = el('btn-sidebar-toggle');
+ if (burger) burger.hidden = !inApp;
+ if (inApp) startSystemStats();
+ else stopSystemStats();
+ }
+
+ /* ===== ระบบ: ดึง CPU/RAM ของเซิร์ฟเวอร์มาแสดง (อัปเดตทุก 5 วิ) ===== */
+ var __sysStatsTimer = null;
+ function fmtBytes(n) {
+ if (!(n > 0)) return '0';
+ var u = ['B', 'KB', 'MB', 'GB', 'TB'];
+ var i = Math.floor(Math.log(n) / Math.log(1024));
+ i = Math.max(0, Math.min(u.length - 1, i));
+ return (n / Math.pow(1024, i)).toFixed(i >= 2 ? 1 : 0) + ' ' + u[i];
+ }
+ function fmtUptime(sec) {
+ sec = Math.max(0, Math.floor(sec || 0));
+ var d = Math.floor(sec / 86400); sec -= d * 86400;
+ var h = Math.floor(sec / 3600); sec -= h * 3600;
+ var m = Math.floor(sec / 60);
+ if (d > 0) return d + 'd ' + h + 'h';
+ if (h > 0) return h + 'h ' + m + 'm';
+ return m + 'm';
+ }
+ function setBarTone(bar, pct) {
+ if (!bar) return;
+ bar.classList.remove('is-warn', 'is-crit');
+ if (pct >= 85) bar.classList.add('is-crit');
+ else if (pct >= 65) bar.classList.add('is-warn');
+ }
+ function renderSystemStats(s) {
+ if (!s || !s.ok) return;
+ var cpuPct = (s.cpu && typeof s.cpu.percent === 'number') ? s.cpu.percent
+ : (s.cpu ? s.cpu.loadPercent : 0);
+ var cpuVal = el('sysstat-cpu-val'), cpuBar = el('sysstat-cpu-bar');
+ if (cpuVal) cpuVal.textContent = cpuPct + '%';
+ if (cpuBar) { cpuBar.style.width = cpuPct + '%'; setBarTone(cpuBar, cpuPct); }
+ var memPct = s.mem ? s.mem.usedPercent : 0;
+ var ramVal = el('sysstat-ram-val'), ramBar = el('sysstat-ram-bar');
+ if (ramVal && s.mem) ramVal.textContent = memPct + '% ' + fmtBytes(s.mem.used) + '/' + fmtBytes(s.mem.total);
+ if (ramBar) { ramBar.style.width = memPct + '%'; setBarTone(ramBar, memPct); }
+ // HDD / ดิสก์
+ var diskWrap = el('sysstat-disk-val') ? el('sysstat-disk-val').closest('.sysstat') : null;
+ if (s.disk) {
+ var dPct = s.disk.usedPercent;
+ var dVal = el('sysstat-disk-val'), dBar = el('sysstat-disk-bar');
+ if (dVal) dVal.textContent = dPct + '% ' + fmtBytes(s.disk.used) + '/' + fmtBytes(s.disk.total);
+ if (dBar) { dBar.style.width = dPct + '%'; setBarTone(dBar, dPct); }
+ if (diskWrap) diskWrap.hidden = false;
+ } else if (diskWrap) {
+ diskWrap.hidden = true; // อ่านดิสก์ไม่ได้ (เช่น Node เก่า) → ซ่อน
+ }
+ // Node ที่ใช้อยู่ (RAM ของ process เกม)
+ if (s.node) {
+ var nPct = typeof s.node.rssPercent === 'number' ? s.node.rssPercent : 0;
+ var nVal = el('sysstat-node-val'), nBar = el('sysstat-node-bar');
+ if (nVal) nVal.textContent = fmtBytes(s.node.rss) + (s.node.version ? ' ' + s.node.version : '');
+ if (nBar) { nBar.style.width = Math.min(100, nPct) + '%'; setBarTone(nBar, nPct); }
+ }
+ var upVal = el('sysstat-up-val');
+ if (upVal && s.uptime) upVal.textContent = fmtUptime(s.uptime.os);
+ var box = el('admin-sys-stats');
+ if (box && s.cpu) box.title = 'CPU ' + cpuPct + '% (load ' + s.cpu.load1 + ', ' + s.cpu.cores + ' cores) · RAM '
+ + memPct + '%'
+ + (s.disk ? ' · HDD ' + s.disk.usedPercent + '% (' + fmtBytes(s.disk.free) + ' ว่าง)' : '')
+ + (s.node ? ' · Node ' + fmtBytes(s.node.rss) + ' ' + (s.node.version || '') : '')
+ + ' · uptime ' + fmtUptime(s.uptime && s.uptime.os) + ' · ' + (s.hostname || '');
+ }
+ function pollSystemStats() {
+ fetch('/Game/api/system-stats', { cache: 'no-store' })
+ .then(function (r) { return r.ok ? r.json() : null; })
+ .then(function (s) { if (s) renderSystemStats(s); })
+ .catch(function () { /* เงียบไว้ ไม่รบกวน admin */ });
+ }
+ function startSystemStats() {
+ if (__sysStatsTimer) return;
+ pollSystemStats();
+ setTimeout(pollSystemStats, 1200); // ครั้งที่สองให้ได้ค่า CPU% (ครั้งแรก server คืน null)
+ __sysStatsTimer = setInterval(pollSystemStats, 5000);
+ }
+ function stopSystemStats() {
+ if (__sysStatsTimer) { clearInterval(__sysStatsTimer); __sysStatsTimer = null; }
+ }
+
+ // ===== Evidence Cards admin (รูปอย่างเดียว · 15 คดี · rarity จากเลขไฟล์) =====
+ var EVIDENCE_CARDS_API = '/Game/api/evidence-cards';
+ var EVIDENCE_IMAGES_API = '/Game/api/evidence-card-images';
+ var EVIDENCE_CASE_COUNT = 15;
+ var EVIDENCE_DIRS = ['suspect-1', 'suspect-2', 'suspect-3'];
+ var evidenceData = null;
+ var evidencePools = null; // { 'suspect-1': {common,rare,legendary}, ... }
+ var evidenceCurrentCase = '1';
+
+ function evidencePopulateCaseSelect() {
+ var sel = el('evidence-case');
+ if (!sel || sel.options.length) return;
+ for (var i = 1; i <= EVIDENCE_CASE_COUNT; i++) {
+ var o = document.createElement('option');
+ o.value = String(i); o.textContent = 'คดี ' + i;
+ sel.appendChild(o);
+ }
+ }
+
+ function loadEvidenceCardsPanel() {
+ evidencePopulateCaseSelect();
+ if (evidencePools == null) {
+ fetch(EVIDENCE_IMAGES_API + '?_=' + Date.now(), { credentials: 'include', cache: 'no-store' })
+ .then(function (r) { return r.json(); })
+ .then(function (j) { evidencePools = (j && j.pools) || {}; renderEvidenceCase(evidenceCurrentCase); })
+ .catch(function () { evidencePools = {}; });
+ }
+ fetch(EVIDENCE_CARDS_API + '?_=' + Date.now(), { credentials: 'include', cache: 'no-store' })
+ .then(function (r) { return r.json(); })
+ .then(function (j) {
+ evidenceData = (j && j.cases) ? j : { cases: {} };
+ var sel = el('evidence-case');
+ if (sel) evidenceCurrentCase = sel.value || '1';
+ renderEvidenceCase(evidenceCurrentCase);
+ })
+ .catch(function (e) {
+ setMsg('evidence-cards-msg', (e.message || 'โหลดไม่ได้') + ' — เช็คว่า Node รัน Game/server.js และ /Game/api/evidence-cards ไม่ 404', 'error');
+ });
+ }
+
+ function evidenceGetCase(cid) {
+ if (!evidenceData) evidenceData = { cases: {} };
+ if (!evidenceData.cases) evidenceData.cases = {};
+ if (!evidenceData.cases[cid]) evidenceData.cases[cid] = { suspects: [] };
+ var cse = evidenceData.cases[cid];
+ if (!Array.isArray(cse.suspects)) cse.suspects = [];
+ for (var si = 0; si < 3; si++) {
+ if (!cse.suspects[si]) cse.suspects[si] = {};
+ var s = cse.suspects[si];
+ if (!s.linkName) s.linkName = 'ผู้ต้องสงสัย ' + (si + 1);
+ if (EVIDENCE_DIRS.indexOf(s.imageDir) < 0) s.imageDir = EVIDENCE_DIRS[si] || EVIDENCE_DIRS[0];
+ }
+ return cse;
+ }
+
+ function evidencePoolBadge(dir) {
+ var p = (evidencePools && evidencePools[dir]) || null;
+ var box = document.createElement('div');
+ box.className = 'ev-pool-counts';
+ if (!p) { box.textContent = 'กำลังโหลดจำนวนรูป…'; return box; }
+ box.innerHTML =
+ 'ธรรมดา ' + (p.common || 0) + ' ' +
+ 'Rare ' + (p.rare || 0) + ' ' +
+ 'ชี้คนร้าย ' + (p.legendary || 0) + ' ';
+ return box;
+ }
+
+ function renderEvidenceCase(cid) {
+ evidenceCurrentCase = cid;
+ var tag = el('evidence-set-tag');
+ if (tag) tag.textContent = 'กำลังแก้: คดี ' + cid;
+ var root = el('evidence-suspects-root');
+ if (!root) return;
+ var cse = evidenceGetCase(cid);
+ root.innerHTML = '';
+ cse.suspects.forEach(function (s, si) {
+ var block = document.createElement('div');
+ block.className = 'ev-suspect-block';
+
+ var head = document.createElement('div');
+ head.className = 'ev-suspect-head';
+ head.innerHTML = 'ผู้ต้องสงสัย ' + (si + 1) + ' ';
+ block.appendChild(head);
+
+ var nameLabel = document.createElement('label');
+ nameLabel.className = 'admin-field';
+ nameLabel.textContent = 'ชื่อผู้ต้องสงสัย (Suspect Link)';
+ var nameInp = document.createElement('input');
+ nameInp.type = 'text';
+ nameInp.maxLength = 60;
+ nameInp.value = s.linkName || '';
+ nameInp.addEventListener('input', function () { s.linkName = nameInp.value; });
+ nameLabel.appendChild(nameInp);
+ block.appendChild(nameLabel);
+
+ var poolBox = evidencePoolBadge(s.imageDir);
+
+ var dirLabel = document.createElement('label');
+ dirLabel.className = 'admin-field';
+ dirLabel.textContent = 'โฟลเดอร์รูปการ์ด (พูลที่ใช้สุ่ม)';
+ var dirSel = document.createElement('select');
+ dirSel.className = 'admin-inp-num';
+ EVIDENCE_DIRS.forEach(function (d) {
+ var o = document.createElement('option');
+ o.value = d; o.textContent = d.replace('suspect-', 'ผู้ต้องสงสัย-');
+ if (d === s.imageDir) o.selected = true;
+ dirSel.appendChild(o);
+ });
+ dirSel.addEventListener('change', function () {
+ s.imageDir = dirSel.value;
+ var fresh = evidencePoolBadge(s.imageDir);
+ poolBox.replaceWith(fresh);
+ poolBox = fresh;
+ });
+ dirLabel.appendChild(dirSel);
+ block.appendChild(dirLabel);
+ block.appendChild(poolBox);
+
+ root.appendChild(block);
+ });
+ }
+
+ function saveEvidenceCardsPanel() {
+ if (!evidenceData) return;
+ var btn = el('btn-evidence-save');
+ if (btn) btn.disabled = true;
+ setMsg('evidence-cards-msg', 'กำลังบันทึก…', '');
+ fetch(EVIDENCE_CARDS_API, {
+ method: 'PUT',
+ credentials: 'include',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify(evidenceData),
+ }).then(function (r) {
+ return r.text().then(function (t) {
+ var j = {};
+ try { j = t ? JSON.parse(t) : {}; } catch (e) { /* ignore */ }
+ if (!r.ok || !j.ok) throw new Error((j && j.error) || ('HTTP ' + r.status));
+ return j;
+ });
+ }).then(function (j) {
+ if (j && j.cases) evidenceData = { cases: j.cases };
+ renderEvidenceCase(evidenceCurrentCase);
+ setMsg('evidence-cards-msg', 'บันทึกแล้ว — มีผลในเกมเมื่อรีเฟรช LobbyB', 'ok');
+ }).catch(function (e) {
+ setMsg('evidence-cards-msg', e.message || 'บันทึกไม่ได้', 'error');
+ }).then(function () {
+ if (btn) btn.disabled = false;
+ });
+ }
+
+ (function bindEvidenceCardsPanel() {
+ evidencePopulateCaseSelect();
+ var caseSel = el('evidence-case');
+ if (caseSel) caseSel.addEventListener('change', function () { renderEvidenceCase(caseSel.value || '1'); });
+ var saveBtn = el('btn-evidence-save');
+ if (saveBtn) saveBtn.addEventListener('click', saveEvidenceCardsPanel);
+ })();
+
+ /* ===== รูปคดี & Cutscene (LobbyA → LobbyB) ===== */
+ var CASE_MEDIA_API = '/Game/api/case-media';
+ var CASE_MEDIA_IMAGES_API = '/Game/api/case-media-images';
+ var CASE_MEDIA_COUNT = 15;
+ var caseMediaData = null;
+ var caseMediaImages = null; // { case:[...], cutscene:[...] }
+ var caseMediaCurrent = '1';
+
+ function caseMediaPopulateSelect() {
+ var sel = el('case-media-case');
+ if (!sel || sel.options.length) return;
+ for (var i = 1; i <= CASE_MEDIA_COUNT; i++) {
+ var o = document.createElement('option');
+ o.value = String(i); o.textContent = 'คดี ' + i;
+ sel.appendChild(o);
+ }
+ }
+
+ function loadCaseMediaPanel() {
+ caseMediaPopulateSelect();
+ if (caseMediaImages == null) {
+ fetch(CASE_MEDIA_IMAGES_API + '?_=' + Date.now(), { credentials: 'include', cache: 'no-store' })
+ .then(function (r) { return r.json(); })
+ .then(function (j) {
+ caseMediaImages = (j && j.images) || { case: [], cutscene: [], 'suspect-pick': [], 'culprit-prison': [] };
+ renderCaseMedia(caseMediaCurrent);
+ })
+ .catch(function () { caseMediaImages = { case: [], cutscene: [], 'suspect-pick': [], 'culprit-prison': [] }; });
+ }
+ fetch(CASE_MEDIA_API + '?_=' + Date.now(), { credentials: 'include', cache: 'no-store' })
+ .then(function (r) { return r.json(); })
+ .then(function (j) {
+ caseMediaData = (j && j.cases) ? j : { cases: {} };
+ var sel = el('case-media-case');
+ if (sel) caseMediaCurrent = sel.value || '1';
+ renderCaseMedia(caseMediaCurrent);
+ })
+ .catch(function (e) {
+ setMsg('case-media-msg', (e.message || 'โหลดไม่ได้') + ' — เช็คว่า Node รัน Game/server.js และ /Game/api/case-media ไม่ 404', 'error');
+ });
+ }
+
+ function caseMediaGetCase(cid) {
+ if (!caseMediaData) caseMediaData = { cases: {} };
+ if (!caseMediaData.cases) caseMediaData.cases = {};
+ var n = parseInt(cid, 10) || 1;
+ if (!caseMediaData.cases[cid]) caseMediaData.cases[cid] = {};
+ var c = caseMediaData.cases[cid];
+ if (typeof c.name !== 'string') c.name = 'คดีที่ ' + n;
+ if (typeof c.art !== 'string') c.art = '/Main-Lobby/IMAGE/case/case-' + n + '.png';
+ if (typeof c.detail !== 'string') c.detail = '/Main-Lobby/IMAGE/case/case-detail-' + n + '.png';
+ if (!Array.isArray(c.story)) c.story = [];
+ if (typeof c.story[0] !== 'string') c.story[0] = '/Main-Lobby/IMAGE/cutscene/case-' + n + '-story-1.png';
+ if (typeof c.story[1] !== 'string') c.story[1] = '/Main-Lobby/IMAGE/cutscene/case-' + n + '-story-2.png';
+ if (!Array.isArray(c.suspects) || c.suspects.length < 3) {
+ c.suspects = [1, 2, 3].map(function (s) { return '/Main-Lobby/IMAGE/suspect-pick/case-' + n + '-suspect-' + s + '.png'; });
+ }
+ if (!Array.isArray(c.culprits) || c.culprits.length < 3) {
+ c.culprits = [1, 2, 3].map(function (s) { return '/Main-Lobby/IMAGE/culprit-prison/case-' + n + '-suspect-' + s + '.png'; });
+ }
+ return c;
+ }
+
+ /** ตัวเลือกรูป (dropdown + พรีวิว) — kind = 'case' | 'cutscene' */
+ function caseMediaImagePicker(label, kind, current, onChange) {
+ var wrap = document.createElement('div');
+ wrap.className = 'cm-pick';
+ var lab = document.createElement('div'); lab.className = 'cm-pick-label'; lab.textContent = label;
+ var prev = document.createElement('img'); prev.className = 'cm-pick-prev'; prev.alt = ''; prev.src = current;
+ prev.onerror = function () { this.style.opacity = '0.25'; };
+ var sel = document.createElement('select'); sel.className = 'admin-inp-num';
+ var list = (caseMediaImages && caseMediaImages[kind]) ? caseMediaImages[kind].slice() : [];
+ if (current && list.indexOf(current) < 0) list.unshift(current);
+ list.forEach(function (u) {
+ var o = document.createElement('option');
+ o.value = u; o.textContent = u.split('/').pop();
+ if (u === current) o.selected = true;
+ sel.appendChild(o);
+ });
+ sel.addEventListener('change', function () { prev.src = sel.value; onChange(sel.value); });
+ wrap.appendChild(lab); wrap.appendChild(prev); wrap.appendChild(sel);
+ return wrap;
+ }
+
+ function renderCaseMedia(cid) {
+ caseMediaCurrent = cid;
+ var tag = el('case-media-set-tag');
+ if (tag) tag.textContent = 'กำลังแก้: คดี ' + cid;
+ var root = el('case-media-root');
+ if (!root) return;
+ var c = caseMediaGetCase(cid);
+ root.innerHTML = '';
+
+ var nameLabel = document.createElement('label');
+ nameLabel.className = 'admin-field';
+ nameLabel.textContent = 'ชื่อคดี';
+ var nameInp = document.createElement('input');
+ nameInp.type = 'text'; nameInp.maxLength = 80; nameInp.value = c.name || '';
+ nameInp.addEventListener('input', function () { c.name = nameInp.value; });
+ nameLabel.appendChild(nameInp);
+ root.appendChild(nameLabel);
+
+ var grid = document.createElement('div');
+ grid.className = 'cm-grid';
+ grid.appendChild(caseMediaImagePicker('รูปเลือกคดี (การ์ด)', 'case', c.art, function (v) { c.art = v; }));
+ grid.appendChild(caseMediaImagePicker('รูปรายละเอียดคดี (แบบรูปเดียวจบ — ใช้เมื่อไม่ได้ตั้ง "รูปคดี" ด้านล่าง)', 'case', c.detail, function (v) { c.detail = v; }));
+ /* [2026-07-21] ตั้ง "รูปคดี" = สลับหน้ารายละเอียดไปโหมดประกอบเอง (กรอบ + รูป + ข้อความด้านล่าง) */
+ grid.appendChild(caseMediaImagePicker('รูปคดี (โหมดใหม่ — ตั้งแล้วหน้าจะประกอบเอง)', 'case', c.pic || '', function (v) { c.pic = v; }));
+ grid.appendChild(caseMediaImagePicker('Cutscene รูปที่ 1', 'cutscene', c.story[0], function (v) { c.story[0] = v; }));
+ grid.appendChild(caseMediaImagePicker('Cutscene รูปที่ 2', 'cutscene', c.story[1], function (v) { c.story[1] = v; }));
+ root.appendChild(grid);
+
+ var susHead = document.createElement('h3');
+ susHead.className = 'cm-section-title';
+ susHead.textContent = 'เลือกผู้ต้องสงสัย (3 คน) — LobbyB';
+ root.appendChild(susHead);
+ var susGrid = document.createElement('div');
+ susGrid.className = 'cm-grid';
+ [0, 1, 2].forEach(function (si) {
+ susGrid.appendChild(caseMediaImagePicker('ผู้ต้องสงสัย ' + (si + 1), 'suspect-pick', c.suspects[si], function (v) { c.suspects[si] = v; }));
+ });
+ root.appendChild(susGrid);
+
+ /* [2026-07-21] ไอคอนผู้ต้องสงสัย (สี่เหลี่ยมเล็ก) — โชว์เฉพาะหัวหน้าไต่สวน (es3) เท่านั้น
+ ไม่ตั้ง = ใช้รูปเต็มตัวด้านบน */
+ var icoHead = document.createElement('h3');
+ icoHead.className = 'cm-section-title';
+ icoHead.textContent = 'ไอคอนผู้ต้องสงสัย (3 คน) — หัวหน้าไต่สวน (ไม่ตั้ง = ใช้รูปเต็มตัวด้านบน)';
+ root.appendChild(icoHead);
+ var icoGrid = document.createElement('div');
+ icoGrid.className = 'cm-grid';
+ if (!Array.isArray(c.icons)) c.icons = (c.suspects || []).slice();
+ [0, 1, 2].forEach(function (si) {
+ icoGrid.appendChild(caseMediaImagePicker('ไอคอน ' + (si + 1), 'suspect-pick', c.icons[si], function (v) { c.icons[si] = v; }));
+ });
+ root.appendChild(icoGrid);
+
+ /* [2026-07-21] ข้อความหน้ารายละเอียดคดี (โหมดใหม่) — แสดงเมื่อตั้ง "รูปคดี" ไว้เท่านั้น
+ เว้นว่าง = ไม่แสดงบรรทัดนั้นบนหน้าเกม (ค่อยๆ กรอกทีละคดีได้) */
+ var txtHead = document.createElement('h3');
+ txtHead.className = 'cm-section-title';
+ txtHead.textContent = 'ข้อความรายละเอียดคดี (โหมดใหม่ — ใช้เมื่อตั้ง "รูปคดี" แล้ว · เว้นว่าง = ไม่แสดงบรรทัดนั้น)';
+ root.appendChild(txtHead);
+ if (!Array.isArray(c.txtSuspects)) c.txtSuspects = ['', '', ''];
+ var caseTextField = function (label, get, set, opts) {
+ opts = opts || {};
+ var lb = document.createElement('label');
+ lb.className = 'admin-field';
+ lb.textContent = label;
+ var el = document.createElement(opts.multiline ? 'textarea' : 'input');
+ if (!opts.multiline) el.type = 'text';
+ else el.rows = 4;
+ el.maxLength = opts.max || 300;
+ el.value = get() || '';
+ el.addEventListener('input', function () { set(el.value); });
+ lb.appendChild(el);
+ return lb;
+ };
+ root.appendChild(caseTextField('ข้อหา', function () { return c.txtCharge; }, function (v) { c.txtCharge = v; }));
+ root.appendChild(caseTextField('สถานที่เกิดเหตุ', function () { return c.txtPlace; }, function (v) { c.txtPlace = v; }));
+ root.appendChild(caseTextField('ผู้เสียหาย', function () { return c.txtVictim; }, function (v) { c.txtVictim = v; }));
+ [0, 1, 2].forEach(function (si) {
+ root.appendChild(caseTextField('ผู้ต้องสงสัย ' + (si + 1) + ' (ข้อความ)',
+ function () { return c.txtSuspects[si]; }, function (v) { c.txtSuspects[si] = v; }, { max: 240 }));
+ });
+ root.appendChild(caseTextField('บันทึกเหตุการณ์', function () { return c.txtNote; }, function (v) { c.txtNote = v; }, { multiline: true, max: 1500 }));
+
+ var culHead = document.createElement('h3');
+ culHead.className = 'cm-section-title';
+ culHead.textContent = 'ส่งผู้ร้ายเข้าคุก (3 คน) — หน้าผลพิจารณาคดี';
+ root.appendChild(culHead);
+ var culGrid = document.createElement('div');
+ culGrid.className = 'cm-grid';
+ [0, 1, 2].forEach(function (si) {
+ culGrid.appendChild(caseMediaImagePicker('คนร้ายในคุก ' + (si + 1), 'culprit-prison', c.culprits[si], function (v) { c.culprits[si] = v; }));
+ });
+ root.appendChild(culGrid);
+ }
+
+ function saveCaseMediaPanel() {
+ if (!caseMediaData) return;
+ var btn = el('btn-case-media-save');
+ if (btn) btn.disabled = true;
+ setMsg('case-media-msg', 'กำลังบันทึก…', '');
+ fetch(CASE_MEDIA_API, {
+ method: 'PUT',
+ credentials: 'include',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify(caseMediaData),
+ }).then(function (r) {
+ return r.text().then(function (t) {
+ var j = {};
+ try { j = t ? JSON.parse(t) : {}; } catch (e) { /* ignore */ }
+ if (!r.ok || !j.ok) throw new Error((j && j.error) || ('HTTP ' + r.status));
+ return j;
+ });
+ }).then(function (j) {
+ if (j && j.cases) caseMediaData = { cases: j.cases };
+ renderCaseMedia(caseMediaCurrent);
+ setMsg('case-media-msg', 'บันทึกแล้ว — มีผลในเกมเมื่อรีเฟรช LobbyA/LobbyB', 'ok');
+ }).catch(function (e) {
+ setMsg('case-media-msg', e.message || 'บันทึกไม่ได้', 'error');
+ }).then(function () {
+ if (btn) btn.disabled = false;
+ });
+ }
+
+ (function bindCaseMediaPanel() {
+ caseMediaPopulateSelect();
+ var caseSel = el('case-media-case');
+ if (caseSel) caseSel.addEventListener('change', function () { renderCaseMedia(caseSel.value || '1'); });
+ var saveBtn = el('btn-case-media-save');
+ if (saveBtn) saveBtn.addEventListener('click', saveCaseMediaPanel);
+ })();
+
+ function setTab(name) {
+ document.querySelectorAll('.tab').forEach(function (t) {
+ var on = t.getAttribute('data-tab') === name;
+ t.classList.toggle('is-active', on);
+ t.setAttribute('aria-selected', on ? 'true' : 'false');
+ });
+ document.querySelectorAll('.tab-panel').forEach(function (p) {
+ p.hidden = !p.id || p.id !== 'tab-panel-' + name;
+ });
+ var embedPanels = [
+ { tab: 'map-editor', panel: 'tab-panel-map-editor', fsBtn: 'btn-map-editor-fullscreen' },
+ { tab: 'characters', panel: 'tab-panel-characters', fsBtn: 'btn-character-fullscreen' },
+ { tab: 'qb-map-editor', panel: 'tab-panel-qb-map-editor', fsBtn: 'btn-qb-map-editor-fullscreen' },
+ { tab: 'ai-admin', panel: 'tab-panel-ai-admin', fsBtn: 'btn-ai-admin-fullscreen' },
+ ];
+ embedPanels.forEach(function (ep) {
+ if (name === ep.tab) return;
+ var pnl = el(ep.panel);
+ var fsBtn = el(ep.fsBtn);
+ if (pnl && pnl.classList.contains('is-fullscreen')) {
+ pnl.classList.remove('is-fullscreen');
+ if (fsBtn) {
+ fsBtn.textContent = 'เต็มจอ';
+ fsBtn.setAttribute('aria-pressed', 'false');
+ }
+ }
+ });
+ if (name === 'quiz') loadQuizSettingsPanel();
+ if (name === 'special-quiz') { loadSpecialQuizPanel(); loadSpecialQuizIconExpirePanel(); }
+ if (name === 'evidence-cards') loadEvidenceCardsPanel();
+ if (name === 'case-media') loadCaseMediaPanel();
+ if (name === 'quiz-carry') loadQuizCarryPanel();
+ if (name === 'quiz-battle') loadQbBattlePanel();
+ if (name === 'jump-survive') loadJumpSurviveTimingPanel();
+ if (name === 'space-shooter') loadSpaceShooterTimingPanel();
+ if (name === 'mega-virus') loadMegaVirusPanel();
+ if (name === 'game-timing') loadGameTimingPanel();
+ if (name === 'stack-game') loadStackGamePanel();
+ if (name === 'highscore') loadHighscore();
+ if (name === 'achievements') loadAchievementsPanel();
+ if (name === 'vote-timing') loadVoteTimingPanel();
+ if (name === 'postcase') loadPostCasePanel();
+ if (name === 'troublesome') loadTroublesomePanel();
+ if (name === 'test-mode') { loadForcedMinigamePanel(); loadSpecialCardByMapPanel(); loadTroublesomeForcePanel(); }
+ if (name === 'sound') loadSoundPanel();
+ if (name === 'map-editor') ensureEmbedFrameSrc('admin-map-editor-frame');
+ if (name === 'qb-map-editor') ensureEmbedFrameSrc('admin-qb-map-editor-frame');
+ if (name === 'ai-admin') ensureEmbedFrameSrc('admin-ai-admin-frame');
+ }
+
+ /* ฝัง iframe editor แบบ lazy — ตั้ง src จาก data-src ครั้งแรกที่เปิด tab (ไม่โหลดตอนเปิดหน้า Admin) */
+ function ensureEmbedFrameSrc(id) {
+ var f = el(id);
+ if (f && !f.getAttribute('src') && f.getAttribute('data-src')) f.setAttribute('src', f.getAttribute('data-src'));
+ }
+
+ function boot() {
+ return api('session.php').then(function (s) {
+ if (s.needsSetup) {
+ showPanel('panel-setup');
+ return null;
+ }
+ if (!s.loggedIn) {
+ showPanel('panel-login');
+ return null;
+ }
+ showPanel('panel-app');
+ el('admin-user-label').textContent = (s.admin && s.admin.username) || '';
+ return s.admin;
+ });
+ }
+
+ el('form-setup').addEventListener('submit', function (e) {
+ e.preventDefault();
+ var fd = new FormData(e.target);
+ var p1 = fd.get('password');
+ var p2 = fd.get('password2');
+ if (p1 !== p2) {
+ setMsg('setup-msg', 'รหัสผ่านไม่ตรงกัน', 'error');
+ return;
+ }
+ api('setup.php', { method: 'POST', body: { password: p1 } })
+ .then(function () {
+ setMsg('setup-msg', 'สร้างสำเร็จ — กรุณาล็อกอิน', 'ok');
+ showPanel('panel-login');
+ })
+ .catch(function (err) {
+ setMsg('setup-msg', err.message || 'ผิดพลาด', 'error');
+ });
+ });
+
+ (function bindLoginPasswordToggle() {
+ var inp = el('login-password');
+ var btn = el('login-password-toggle');
+ if (!inp || !btn) return;
+ btn.addEventListener('click', function () {
+ var show = inp.type === 'password';
+ inp.type = show ? 'text' : 'password';
+ btn.setAttribute('aria-pressed', show ? 'true' : 'false');
+ btn.setAttribute('aria-label', show ? 'ซ่อนรหัสผ่าน' : 'แสดงรหัสผ่าน');
+ btn.textContent = show ? 'ซ่อน' : 'แสดง';
+ });
+ })();
+
+ el('form-login').addEventListener('submit', function (e) {
+ e.preventDefault();
+ var fd = new FormData(e.target);
+ api('login.php', {
+ method: 'POST',
+ body: {
+ username: fd.get('username'),
+ password: fd.get('password'),
+ },
+ })
+ .then(function () {
+ setMsg('login-msg', '', '');
+ return boot();
+ })
+ .then(function (admin) {
+ if (admin) loadAll(admin);
+ })
+ .catch(function (err) {
+ setMsg('login-msg', err.message || 'เข้าไม่ได้', 'error');
+ });
+ });
+
+ el('btn-logout').addEventListener('click', function () {
+ api('logout.php', { method: 'POST' })
+ .then(function () {
+ location.reload();
+ })
+ .catch(function () {
+ location.reload();
+ });
+ });
+
+ document.querySelectorAll('.tab').forEach(function (tab) {
+ tab.addEventListener('click', function () {
+ var name = tab.getAttribute('data-tab');
+ if (name === 'change-password' && tab.classList.contains('is-active')) {
+ setTab('oauth');
+ return;
+ }
+ setTab(name);
+ });
+ });
+
+ /* ===== สิทธิ์ระดับหมวด — ซ่อน tab ที่บัญชีนี้เข้าไม่ได้ [2026-07-22] =====
+ ⚠️ นี่เป็นแค่ UX · ตัวกันจริงอยู่ที่ PHP (require_tab) เพราะซ่อนปุ่มไม่ใช่ security */
+ var adminAllowedTabs = null; /* null = ยังไม่รู้ (แสดงทุก tab ไปก่อน) */
+
+ function applyTabPermissions(tabs) {
+ if (!Array.isArray(tabs) || !tabs.length) return; /* ว่าง = ทุกหมวด */
+ adminAllowedTabs = tabs;
+ var firstAllowed = '';
+ document.querySelectorAll('.tab').forEach(function (t) {
+ var name = t.getAttribute('data-tab');
+ /* เปลี่ยนรหัสผ่านตัวเอง ต้องเข้าได้เสมอ ไม่งั้นล็อกตัวเองออกจากการเปลี่ยนรหัส */
+ var ok = name === 'change-password' || tabs.indexOf(name) >= 0;
+ t.hidden = !ok;
+ if (ok && !firstAllowed && name !== 'change-password') firstAllowed = name;
+ });
+ /* ถ้ากำลังอยู่หมวดที่ไม่มีสิทธิ์ (เช่นค่า default ตอนโหลด) → เด้งไปหมวดแรกที่เข้าได้ */
+ var active = document.querySelector('.tab.is-active');
+ var activeName = active && active.getAttribute('data-tab');
+ if (activeName && activeName !== 'change-password' && tabs.indexOf(activeName) < 0 && firstAllowed) {
+ setTab(firstAllowed);
+ }
+ /* ซ่อนหัวข้อคั่นกลุ่มที่ไม่เหลือ tab แล้ว (กันหัวข้อลอย) */
+ document.querySelectorAll('.admin-tab-sep').forEach(function (sep) {
+ var n = sep.nextElementSibling;
+ var any = false;
+ while (n && !n.classList.contains('admin-tab-sep')) {
+ if (n.classList.contains('tab') && !n.hidden) { any = true; break; }
+ n = n.nextElementSibling;
+ }
+ sep.hidden = !any;
+ });
+ }
+
+ /* เรียกจาก loadAll() หลังล็อกอินแล้วเท่านั้น — ยิงตอนหน้ายังไม่ล็อกอินจะได้ 401 เปล่าๆ */
+
+ /* ===== Quiz Battle: เปิด/ปิด 10 โหมด + วันหมดเขต (เวลาไทย) [2026-07-22] ===== */
+ (function bindQuizBattleModes() {
+ var tbody = el('qb-modes-tbody');
+ if (!tbody) return;
+ var msg = el('qb-modes-msg');
+ var nowEl = el('qb-modes-now');
+
+ /* escape สำหรับใส่ใน value="" ของ input (หัวข้อเป็นข้อความไทยที่แอดมินพิมพ์เอง) */
+ function attr(s) {
+ return String(s == null ? '' : s)
+ .replace(/&/g, '&').replace(/"/g, '"')
+ .replace(//g, '>');
+ }
+
+ function say(t, bad) {
+ if (!msg) return;
+ msg.textContent = t || '';
+ /* [2026-07-27] สำเร็จ = เขียวเด่น · error = แดง · ว่าง = default — ให้ user เห็น feedback ชัด (เดิม default จางมองไม่เห็น) */
+ msg.style.color = bad ? '#ff8fa3' : (t ? '#9ece6a' : '');
+ msg.style.fontWeight = t ? '600' : '';
+ }
+
+ function stateLabel(m) {
+ if (!m.enabled) return 'ปิดอยู่ ';
+ if (m.expired) return 'หมดเวลาแล้ว ';
+ if (m.openUntil) return 'เปิด · ถึง ' + m.openUntil + ' ';
+ return 'เปิด (ไม่จำกัด) ';
+ }
+
+ function render(data) {
+ var modes = (data && data.modes) || {};
+ if (nowEl) nowEl.textContent = 'เวลาไทยตอนนี้: ' + (data.nowThai || '-') + (data.updatedAt ? (' · แก้ล่าสุด ' + data.updatedAt + (data.updatedBy ? (' โดย ' + data.updatedBy) : '')) : '');
+ var html = '';
+ for (var i = 1; i <= 10; i++) {
+ var m = modes[String(i)] || { title: '', enabled: true, openUntil: '', maxPlayers: 50 };
+ var until = (m.openUntil || '').replace(' ', 'T');
+ var mp = (m.maxPlayers != null && m.maxPlayers >= 1) ? Math.min(50, m.maxPlayers | 0) : 50;
+ html += ''
+ + '' + i + ' '
+ + ' '
+ + ' '
+ + ' '
+ + ' '
+ + '' + stateLabel(m) + ' '
+ + ' ';
+ }
+ tbody.innerHTML = html;
+ }
+
+ function load() {
+ say('กำลังโหลด…');
+ api('quiz-battle-modes.php')
+ .then(function (j) { render(j); say(''); })
+ .catch(function (e) { say('โหลดไม่สำเร็จ: ' + e.message, true); });
+ }
+
+ function collect() {
+ var out = {};
+ tbody.querySelectorAll('tr[data-room]').forEach(function (tr) {
+ var n = tr.getAttribute('data-room');
+ var on = tr.querySelector('.qb-mode-on');
+ var until = tr.querySelector('.qb-mode-until');
+ var maxEl = tr.querySelector('.qb-mode-max');
+ var titleEl = tr.querySelector('.qb-mode-title');
+ var mp = maxEl ? parseInt(maxEl.value, 10) : 50;
+ if (!(mp >= 1)) mp = 50;
+ mp = Math.min(50, mp);
+ out[n] = {
+ title: titleEl ? String(titleEl.value || '').trim() : '',
+ enabled: !!(on && on.checked),
+ /* datetime-local ให้ 'YYYY-MM-DDTHH:MM' → เก็บเป็นช่องว่างคั่น (เวลาไทยตรงๆ) */
+ openUntil: (until && until.value ? String(until.value).slice(0, 16).replace('T', ' ') : ''),
+ maxPlayers: mp,
+ };
+ });
+ return out;
+ }
+
+ function save() {
+ say('กำลังบันทึก…');
+ api('quiz-battle-modes.php', { method: 'PUT', body: { modes: collect() } })
+ .then(function (j) { render(j); say('บันทึกแล้ว'); })
+ .catch(function (e) { say('บันทึกไม่สำเร็จ: ' + e.message, true); });
+ }
+
+ function setAll(on) {
+ tbody.querySelectorAll('.qb-mode-on').forEach(function (c) { c.checked = on; });
+ }
+
+ if (el('btn-qb-modes-reload')) el('btn-qb-modes-reload').addEventListener('click', load);
+ if (el('btn-qb-modes-save')) el('btn-qb-modes-save').addEventListener('click', save);
+ if (el('btn-qb-modes-all-on')) el('btn-qb-modes-all-on').addEventListener('click', function () { setAll(true); });
+ if (el('btn-qb-modes-all-off')) el('btn-qb-modes-all-off').addEventListener('click', function () { setAll(false); });
+ /* ไม่ load() ตรงนี้ — หน้ายังไม่ล็อกอินจะได้ 401 · ให้ loadAll() เรียกหลังล็อกอินแทน */
+ window.__qbModesLoad = load;
+ })();
+
+ /* ===== Sidebar: ค้นหาเมนู / ยุบกลุ่ม / เปิด-ปิดบนมือถือ ===== */
+ (function setupAdminSidebar() {
+ var shell = document.querySelector('.admin-shell');
+ var nav = document.querySelector('.admin-tabs');
+ if (!nav) return;
+ var seps = Array.prototype.slice.call(nav.querySelectorAll('.admin-tab-sep'));
+ var tabs = Array.prototype.slice.call(nav.querySelectorAll('.tab'));
+
+ function isMobile() { return window.matchMedia('(max-width: 980px)').matches; }
+ function closeSidebar() {
+ if (shell) shell.classList.remove('sidebar-open');
+ var b = el('btn-sidebar-toggle'); if (b) b.setAttribute('aria-expanded', 'false');
+ var bd = el('admin-sidebar-backdrop'); if (bd) bd.hidden = true;
+ }
+ function openSidebar() {
+ if (shell) shell.classList.add('sidebar-open');
+ var b = el('btn-sidebar-toggle'); if (b) b.setAttribute('aria-expanded', 'true');
+ var bd = el('admin-sidebar-backdrop'); if (bd) bd.hidden = false;
+ }
+ var burger = el('btn-sidebar-toggle');
+ if (burger) burger.addEventListener('click', function () {
+ if (shell && shell.classList.contains('sidebar-open')) closeSidebar(); else openSidebar();
+ });
+ var backdrop = el('admin-sidebar-backdrop');
+ if (backdrop) backdrop.addEventListener('click', closeSidebar);
+ nav.addEventListener('click', function (e) {
+ var t = e.target && e.target.closest ? e.target.closest('.tab') : null;
+ if (t && isMobile()) closeSidebar();
+ });
+
+ /* ยุบ/ขยายกลุ่ม: ซ่อนแท็บที่อยู่หลัง separator จนถึง separator ถัดไป */
+ function applyGroupVisibility() {
+ seps.forEach(function (sep) {
+ var collapsed = sep.classList.contains('is-collapsed');
+ var n = sep.nextElementSibling;
+ while (n && !n.classList.contains('admin-tab-sep')) {
+ if (n.classList && n.classList.contains('tab')) n.classList.toggle('is-group-hidden', collapsed);
+ n = n.nextElementSibling;
+ }
+ });
+ }
+ function toggleGroup(sep) {
+ sep.classList.toggle('is-collapsed');
+ applyGroupVisibility();
+ }
+ seps.forEach(function (sep) {
+ sep.setAttribute('role', 'button');
+ sep.setAttribute('tabindex', '0');
+ sep.addEventListener('click', function () { toggleGroup(sep); });
+ sep.addEventListener('keydown', function (e) {
+ if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); toggleGroup(sep); }
+ });
+ });
+
+ /* ค้นหาเมนู */
+ var search = el('admin-nav-search-input');
+ var emptyMsg = el('admin-nav-empty');
+ if (search) search.addEventListener('input', function () {
+ var q = search.value.trim().toLowerCase();
+ if (q) {
+ var anyVisible = false;
+ tabs.forEach(function (t) {
+ t.classList.remove('is-group-hidden');
+ var hit = (t.textContent || '').toLowerCase().indexOf(q) >= 0;
+ t.classList.toggle('is-search-hidden', !hit);
+ if (hit) anyVisible = true;
+ });
+ seps.forEach(function (s) { s.style.display = 'none'; });
+ if (emptyMsg) emptyMsg.hidden = anyVisible;
+ } else {
+ tabs.forEach(function (t) { t.classList.remove('is-search-hidden'); });
+ seps.forEach(function (s) { s.style.display = ''; });
+ applyGroupVisibility();
+ if (emptyMsg) emptyMsg.hidden = true;
+ }
+ });
+ })();
+
+ function bindEmbedPanelFullscreen(btnId, panelId) {
+ var btn = el(btnId);
+ var panel = el(panelId);
+ if (!btn || !panel) return;
+ function setFs(on) {
+ panel.classList.toggle('is-fullscreen', on);
+ btn.textContent = on ? 'ออกจากเต็มจอ' : 'เต็มจอ';
+ btn.setAttribute('aria-pressed', on ? 'true' : 'false');
+ }
+ btn.addEventListener('click', function () {
+ setFs(!panel.classList.contains('is-fullscreen'));
+ });
+ document.addEventListener('keydown', function (e) {
+ if (e.code !== 'Escape' || !panel.classList.contains('is-fullscreen')) return;
+ setFs(false);
+ });
+ }
+ bindEmbedPanelFullscreen('btn-map-editor-fullscreen', 'tab-panel-map-editor');
+ bindEmbedPanelFullscreen('btn-character-fullscreen', 'tab-panel-characters');
+ bindEmbedPanelFullscreen('btn-qb-map-editor-fullscreen', 'tab-panel-qb-map-editor');
+ bindEmbedPanelFullscreen('btn-ai-admin-fullscreen', 'tab-panel-ai-admin');
+
+ /* Test Mode toggle — เก็บใน localStorage (share ระหว่าง Admin กับ Game ภายใต้ origin เดียวกัน) */
+ var TEST_MODE_KEY = 'justiceTestMode';
+ function isTestModeOn() {
+ try { return localStorage.getItem(TEST_MODE_KEY) === '1'; } catch (e) { return false; }
+ }
+ function setTestMode(on) {
+ try { localStorage.setItem(TEST_MODE_KEY, on ? '1' : '0'); } catch (e) { /* ignore */ }
+ }
+ function syncTestModeUi() {
+ var chk = el('test-mode-toggle');
+ var lbl = el('test-mode-state-label');
+ var msg = el('test-mode-msg');
+ var on = isTestModeOn();
+ if (chk) chk.checked = on;
+ if (lbl) {
+ lbl.textContent = on ? 'เปิดอยู่ (ON)' : 'ปิดอยู่ (OFF)';
+ lbl.style.color = on ? '#4ade80' : '#94a3b8';
+ }
+ if (msg) {
+ msg.textContent = on
+ ? '✓ Test Mode เปิด — Shortcuts ใช้งานได้ในแท็บอื่นของเบราว์เซอร์นี้'
+ : '○ Test Mode ปิด — Shortcuts ไม่ทำงาน';
+ msg.style.color = on ? '#4ade80' : '#94a3b8';
+ }
+ }
+ var testModeChk = el('test-mode-toggle');
+ if (testModeChk) {
+ testModeChk.addEventListener('change', function () {
+ setTestMode(!!testModeChk.checked);
+ syncTestModeUi();
+ });
+ }
+ var forcedMgSaveBtn = el('btn-forced-minigame-save');
+ if (forcedMgSaveBtn) forcedMgSaveBtn.addEventListener('click', saveForcedMinigamePanel);
+ var specialCardSaveBtn = el('btn-special-card-by-map-save');
+ if (specialCardSaveBtn) specialCardSaveBtn.addEventListener('click', saveSpecialCardByMapPanel);
+ var troublesomeForceSaveBtn = el('btn-troublesome-force-save');
+ if (troublesomeForceSaveBtn) troublesomeForceSaveBtn.addEventListener('click', saveTroublesomeForcePanel);
+ var sqIconExpireSaveBtn = el('btn-special-quiz-icon-expire-save');
+ if (sqIconExpireSaveBtn) sqIconExpireSaveBtn.addEventListener('click', saveSpecialQuizIconExpirePanel);
+ syncTestModeUi();
+ /* ฟัง storage event — sync เมื่อเปิดหลายแท็บ */
+ window.addEventListener('storage', function (e) {
+ if (e && e.key === TEST_MODE_KEY) syncTestModeUi();
+ });
+
+ var btnGameTimingSave = el('btn-game-timing-save');
+ if (btnGameTimingSave) {
+ btnGameTimingSave.addEventListener('click', function () {
+ saveGameTimingPanel();
+ });
+ }
+ var btnJumpSurviveSave = el('btn-jump-survive-save');
+ if (btnJumpSurviveSave) {
+ btnJumpSurviveSave.addEventListener('click', saveJumpSurviveTimingPanel);
+ }
+ bindJumpSurvivePlatformTileInputs();
+ var btnSpaceShooterSave = el('btn-space-shooter-save');
+ if (btnSpaceShooterSave) {
+ btnSpaceShooterSave.addEventListener('click', saveSpaceShooterTimingPanel);
+ }
+ bindSpaceShooterShipUrlInputs();
+ bindStackBlockVisualInputs();
+ bindSpaceShooterDamageOverlayPanel();
+ bindSpaceShooterAsteroidSpritePanel();
+ bindMegaVirusPanel();
+ var btnStackGameSave = el('btn-stack-game-save');
+ if (btnStackGameSave) {
+ btnStackGameSave.addEventListener('click', saveStackGamePanel);
+ }
+ bindGauntletAssetLibrary();
+ bindGameTimingAssignedVisuals();
+ bindGameTimingLaserColorSwatches();
+
+ var btnQuizAdd = el('btn-quiz-admin-add');
+ var btnQuizSave = el('btn-quiz-admin-save');
+ if (btnQuizAdd) {
+ btnQuizAdd.addEventListener('click', function () {
+ addQuizAdminRow('', true);
+ });
+ }
+ if (btnQuizSave) btnQuizSave.addEventListener('click', saveQuizSettingsPanel);
+
+ var btnSpecialQuizAdd = el('btn-special-quiz-add');
+ var btnSpecialQuizSave = el('btn-special-quiz-save');
+ if (btnSpecialQuizAdd) {
+ btnSpecialQuizAdd.addEventListener('click', function () {
+ addSpecialQuizRow({ type: 'tf', text: '', answerTrue: true });
+ updateSpecialQuizCount();
+ });
+ }
+ if (btnSpecialQuizSave) btnSpecialQuizSave.addEventListener('click', saveSpecialQuizPanel);
+ var specialQuizLevelSel = el('special-quiz-level');
+ var specialQuizCaseSel = el('special-quiz-case');
+ if (specialQuizLevelSel) specialQuizLevelSel.addEventListener('change', onSpecialQuizSelectorChange);
+ if (specialQuizCaseSel) specialQuizCaseSel.addEventListener('change', onSpecialQuizSelectorChange);
+
+ var btnQuizCarryAdd = el('btn-quiz-carry-add');
+ var btnQuizCarrySave = el('btn-quiz-carry-save');
+ if (btnQuizCarryAdd) {
+ btnQuizCarryAdd.addEventListener('click', function () {
+ addQuizCarryAdminRow(null);
+ });
+ }
+ if (btnQuizCarrySave) btnQuizCarrySave.addEventListener('click', saveQuizCarryPanel);
+ wireQuizCarryPlaqueMapScaleControls();
+ quizCarryBindThemePickersOnce();
+
+ var btnQbBattleAdd = el('btn-qb-battle-add');
+ var btnQbBattleSave = el('btn-qb-battle-save');
+ if (btnQbBattleAdd) {
+ btnQbBattleAdd.addEventListener('click', function () {
+ addQbBattleRow(null);
+ refreshQbBattlePreview();
+ });
+ }
+ if (btnQbBattleSave) btnQbBattleSave.addEventListener('click', saveQbBattlePanel);
+
+ var qbFilterCat = el('qb-battle-filter-cat');
+ if (qbFilterCat) qbFilterCat.addEventListener('change', applyQbBattleFilter);
+
+ document.querySelectorAll('.qb-preview-mode-btn').forEach(function (b) {
+ b.addEventListener('click', function () {
+ document.querySelectorAll('.qb-preview-mode-btn').forEach(function (x) {
+ x.classList.toggle('is-active', x === b);
+ });
+ refreshQbBattlePreview();
+ });
+ });
+
+ function loadOAuth() {
+ return api('oauth.php').then(function (r) {
+ var o = r.oauth || {};
+ var f = el('form-oauth');
+ ['facebookAppId', 'facebookAppSecret', 'facebookRedirectUri', 'googleClientId', 'googleClientSecret', 'googleRedirectUri'].forEach(function (k) {
+ var inp = f.querySelector('[name="' + k + '"]');
+ if (inp) inp.value = o[k] || '';
+ });
+ });
+ }
+
+ el('form-oauth').addEventListener('submit', function (e) {
+ e.preventDefault();
+ var fd = new FormData(e.target);
+ var body = {};
+ fd.forEach(function (v, k) {
+ body[k] = v;
+ });
+ api('oauth.php', { method: 'PUT', body: body })
+ .then(function () {
+ setMsg('oauth-msg', 'บันทึกแล้ว', 'ok');
+ })
+ .catch(function (err) {
+ setMsg('oauth-msg', err.message || 'บันทึกไม่สำเร็จ', 'error');
+ });
+ });
+
+ function renderAccounts(list) {
+ var tb = el('table-accounts').querySelector('tbody');
+ tb.innerHTML = '';
+ var sumCoins = 0;
+ (list || []).forEach(function (a) {
+ var c = Math.max(0, parseInt(a.coins, 10) || 0);
+ sumCoins += c;
+ var tr = document.createElement('tr');
+ tr.innerHTML =
+ '' + escapeHtml(a.displayName || '—') + ' ' +
+ '' + escapeHtml(a.email || '—') + ' ' +
+ '' + escapeHtml(a.loginType || '') + ' ' +
+ '' + escapeHtml(a.providerUserId || '—') + ' ' +
+ '' +
+ ' ' +
+ 'บันทึก COINS ' +
+ ' ' +
+ '' + (a.blocked ? 'บล็อก ' : 'ปกติ') + ' ' +
+ 'ลบ ' +
+ '' + (a.blocked ? 'ปลดบล็อก' : 'บล็อก') + ' ';
+ tb.appendChild(tr);
+ });
+ var sumEl = el('accounts-coins-summary');
+ if (sumEl) {
+ sumEl.textContent = (list && list.length) ? ('ผู้ใช้ ' + list.length + ' บัญชี · รวม COINS ' + sumCoins) : 'ยังไม่มีบัญชี';
+ }
+ tb.querySelectorAll('.btn-sm-del').forEach(function (b) {
+ b.addEventListener('click', function () {
+ if (!confirm('ลบบัญชีนี้?')) return;
+ api('accounts.php?id=' + encodeURIComponent(b.getAttribute('data-id')), { method: 'DELETE' })
+ .then(loadAccounts)
+ .catch(function (err) {
+ setMsg('accounts-msg', err.message, 'error');
+ });
+ });
+ });
+ tb.querySelectorAll('.btn-sm-toggle').forEach(function (b) {
+ b.addEventListener('click', function () {
+ var id = b.getAttribute('data-id');
+ var blocked = b.getAttribute('data-blocked') === '1';
+ api('accounts.php', {
+ method: 'PATCH',
+ body: { id: id, blocked: !blocked },
+ })
+ .then(loadAccounts)
+ .catch(function (err) {
+ setMsg('accounts-msg', err.message, 'error');
+ });
+ });
+ });
+ tb.querySelectorAll('.btn-coins-save').forEach(function (b) {
+ b.addEventListener('click', function () {
+ var id = b.getAttribute('data-id');
+ var row = b.closest('tr');
+ var inp = row ? row.querySelector('input.input-coins') : null;
+ var coins = Math.max(0, parseInt(inp && inp.value, 10) || 0);
+ api('accounts.php', { method: 'PATCH', body: { id: id, coins: coins } })
+ .then(function () {
+ setMsg('accounts-msg', 'อัปเดต COINS แล้ว', 'ok');
+ return loadAccounts();
+ })
+ .catch(function (err) {
+ setMsg('accounts-msg', err.message, 'error');
+ });
+ });
+ });
+ }
+
+ function escapeHtml(s) {
+ var d = document.createElement('div');
+ d.textContent = s == null ? '' : String(s);
+ return d.innerHTML;
+ }
+
+ function escapeAttr(s) {
+ return String(s || '').replace(/"/g, '"');
+ }
+
+ function loadAccounts() {
+ return api('accounts.php').then(function (r) {
+ renderAccounts(r.accounts);
+ setMsg('accounts-msg', '', '');
+ });
+ }
+
+ /* ===== กระดานผู้นำ (High Score) ===== */
+ function renderHighscore(rows) {
+ var tbEl = el('table-highscore');
+ if (!tbEl) return;
+ var tb = tbEl.querySelector('tbody');
+ tb.innerHTML = '';
+ (rows || []).forEach(function (r) {
+ var rank = parseInt(r.rank, 10) || 0;
+ var score = Math.max(0, parseInt(r.score, 10) || 0);
+ var coins = Math.max(0, parseInt(r.coins, 10) || 0);
+ var medal = rank === 1 ? '🥇' : rank === 2 ? '🥈' : rank === 3 ? '🥉' : ('#' + rank);
+ var tr = document.createElement('tr');
+ tr.innerHTML =
+ '' + medal + ' ' +
+ '' + escapeHtml(r.name || 'ผู้เล่น') + (r.blocked ? ' บล็อก ' : '') + ' ' +
+ '' +
+ ' ' +
+ 'บันทึก ' +
+ ' ' +
+ '' + coins + ' ' +
+ 'รีเซ็ต 0 ';
+ tb.appendChild(tr);
+ });
+ tb.querySelectorAll('.btn-score-save').forEach(function (b) {
+ b.addEventListener('click', function () {
+ var id = b.getAttribute('data-id');
+ var row = b.closest('tr');
+ var inp = row ? row.querySelector('input.input-score') : null;
+ var score = Math.max(0, parseInt(inp && inp.value, 10) || 0);
+ api('accounts.php', { method: 'PATCH', body: { id: id, score: score } })
+ .then(function () { setMsg('highscore-msg', 'บันทึกคะแนนแล้ว', 'ok'); return loadHighscore(); })
+ .catch(function (err) { setMsg('highscore-msg', err.message, 'error'); });
+ });
+ });
+ tb.querySelectorAll('.btn-score-reset').forEach(function (b) {
+ b.addEventListener('click', function () {
+ var id = b.getAttribute('data-id');
+ if (!confirm('รีเซ็ตคะแนนคนนี้เป็น 0?')) return;
+ api('leaderboard-admin.php', { method: 'POST', body: { action: 'reset', id: id } })
+ .then(function () { return loadHighscore(); })
+ .catch(function (err) { setMsg('highscore-msg', err.message, 'error'); });
+ });
+ });
+ }
+
+ function loadHighscore() {
+ return api('leaderboard-admin.php').then(function (r) {
+ renderHighscore(r.rows);
+ var n = (r.rows && r.rows.length) || 0;
+ setMsg('highscore-msg', n ? ('ผู้เล่นมีคะแนน ' + r.total + ' คน') : 'ยังไม่มีผู้เล่นทำคะแนน', '');
+ }).catch(function (err) { setMsg('highscore-msg', err.message, 'error'); });
+ }
+
+ (function bindHighscoreControls() {
+ var refresh = el('btn-highscore-refresh');
+ if (refresh) refresh.addEventListener('click', function () { loadHighscore(); });
+ var resetAll = el('btn-highscore-reset-all');
+ if (resetAll) resetAll.addEventListener('click', function () {
+ if (!confirm('รีเซ็ตคะแนนสะสมของผู้เล่นทุกคนเป็น 0? (ย้อนกลับไม่ได้)')) return;
+ api('leaderboard-admin.php', { method: 'POST', body: { action: 'resetAll' } })
+ .then(function (r) { setMsg('highscore-msg', 'รีเซ็ตแล้ว ' + (r.reset || 0) + ' คน', 'ok'); return loadHighscore(); })
+ .catch(function (err) { setMsg('highscore-msg', err.message, 'error'); });
+ });
+ })();
+
+ /* ===== เวลาโหวต (vote timing) ===== */
+ function loadVoteTimingPanel() {
+ gameTimingFetch('GET')
+ .then(function (data) {
+ var pk = (data && data.pickVoteSec != null) ? Number(data.pickVoteSec) : 25;
+ var tr = (data && data.trialVoteSec != null) ? Number(data.trialVoteSec) : 30;
+ var rv = (data && data.trialResultRevealMs != null) ? Number(data.trialResultRevealMs) : 7000;
+ if (el('vote-timing-pick')) el('vote-timing-pick').value = String(Number.isFinite(pk) ? pk : 25);
+ if (el('vote-timing-trial')) el('vote-timing-trial').value = String(Number.isFinite(tr) ? tr : 30);
+ if (el('vote-timing-reveal')) el('vote-timing-reveal').value = String(Number.isFinite(rv) ? rv : 7000);
+ setMsg('vote-timing-msg', '', '');
+ })
+ .catch(function (e) { setMsg('vote-timing-msg', (e.message || 'โหลดไม่ได้') + ' — เช็ค /Game/api/game-timing', 'error'); });
+ }
+
+ (function bindVoteTiming() {
+ var btn = el('btn-vote-timing-save');
+ if (!btn) return;
+ btn.addEventListener('click', function () {
+ var pk = Math.max(5, Math.min(120, parseInt((el('vote-timing-pick') || {}).value, 10) || 25));
+ var tr = Math.max(5, Math.min(180, parseInt((el('vote-timing-trial') || {}).value, 10) || 30));
+ var rv = Math.max(1500, Math.min(20000, parseInt((el('vote-timing-reveal') || {}).value, 10) || 7000));
+ btn.disabled = true;
+ gameTimingFetch('GET')
+ .then(function (data) {
+ data.pickVoteSec = pk;
+ data.trialVoteSec = tr;
+ data.trialResultRevealMs = rv;
+ return gameTimingFetch('PUT', data);
+ })
+ .then(function () { return gameTimingFetch('GET'); })
+ .then(function (fresh) {
+ var p = (fresh && fresh.pickVoteSec != null) ? fresh.pickVoteSec : pk;
+ var t = (fresh && fresh.trialVoteSec != null) ? fresh.trialVoteSec : tr;
+ var r = (fresh && fresh.trialResultRevealMs != null) ? fresh.trialResultRevealMs : rv;
+ if (el('vote-timing-pick')) el('vote-timing-pick').value = String(p);
+ if (el('vote-timing-trial')) el('vote-timing-trial').value = String(t);
+ if (el('vote-timing-reveal')) el('vote-timing-reveal').value = String(r);
+ setMsg('vote-timing-msg', 'บันทึกแล้ว — โหวตเลือกผู้เล่น ' + p + 's · ชี้ตัวคนร้าย ' + t + 's · โชว์ผล ' + Math.round(r/1000) + 's · ผู้เล่นต้องรีเฟรช/เข้าห้องใหม่', 'ok');
+ })
+ .catch(function (e) { setMsg('vote-timing-msg', (e.message || 'บันทึกไม่ได้') + ' — เช็ค Node + /Game/api/game-timing', 'error'); })
+ .then(function () { btn.disabled = false; });
+ });
+ })();
+
+ /* ===== จบคดี (post-case destination) — Main-Lobby หรือ LobbyA ===== */
+ function loadPostCasePanel() {
+ gameTimingFetch('GET')
+ .then(function (data) {
+ var d = (data && data.postCaseDestination === 'lobbya') ? 'lobbya' : 'mainlobby';
+ if (el('postcase-dest')) el('postcase-dest').value = d;
+ setMsg('postcase-msg', '', '');
+ })
+ .catch(function (e) { setMsg('postcase-msg', (e.message || 'โหลดไม่ได้') + ' — เช็ค /Game/api/game-timing', 'error'); });
+ }
+
+ (function bindPostCase() {
+ var btn = el('btn-postcase-save');
+ if (!btn) return;
+ btn.addEventListener('click', function () {
+ var d = ((el('postcase-dest') || {}).value === 'lobbya') ? 'lobbya' : 'mainlobby';
+ btn.disabled = true;
+ gameTimingFetch('GET')
+ .then(function (data) { data.postCaseDestination = d; return gameTimingFetch('PUT', data); })
+ .then(function () { return gameTimingFetch('GET'); })
+ .then(function (fresh) {
+ var v = (fresh && fresh.postCaseDestination === 'lobbya') ? 'lobbya' : 'mainlobby';
+ if (el('postcase-dest')) el('postcase-dest').value = v;
+ setMsg('postcase-msg', 'บันทึกแล้ว — เมื่อจบคดีไป ' + (v === 'lobbya' ? 'LobbyA (ห้องเดิม เริ่มคดีใหม่)' : 'Main-Lobby (เดิม)') + ' · ผู้เล่นต้องรีเฟรช/เข้าห้องใหม่', 'ok');
+ })
+ .catch(function (e) { setMsg('postcase-msg', (e.message || 'บันทึกไม่ได้') + ' — เช็ค Node + /Game/api/game-timing', 'error'); })
+ .then(function () { btn.disabled = false; });
+ });
+ })();
+
+ /* ===== เสียง (sound settings) — master/music/sfx volume 0..1 ===== */
+ function soundSettingsFetch(method, body) {
+ var m = method || 'GET';
+ var url = SOUND_SETTINGS_API;
+ if (m === 'GET' && body == null) url += (url.indexOf('?') >= 0 ? '&' : '?') + '_=' + Date.now();
+ var opts = { method: m, credentials: 'include', cache: 'no-store' };
+ if (body != null) { opts.headers = { 'Content-Type': 'application/json' }; opts.body = JSON.stringify(body); }
+ return fetch(url, opts).then(function (r) {
+ return r.text().then(function (text) {
+ var j = {};
+ try { j = text ? JSON.parse(text) : {}; }
+ catch (e) {
+ var plain = (text || r.statusText || 'Request failed').trim();
+ if (r.status === 404) plain += ' — รีสตาร์ท Node (Game/server.js) หลัง deploy';
+ throw new Error(plain);
+ }
+ if (!r.ok) throw new Error(j.error || ('HTTP ' + r.status + ' ' + r.statusText));
+ return j;
+ });
+ });
+ }
+ function pctFromVol(v, d) { var n = Number(v); return Math.round((Number.isFinite(n) ? n : d) * 100); }
+ function loadSoundPanel() {
+ soundSettingsFetch('GET')
+ .then(function (d) {
+ var setR = function (id, pct) { var e = el(id); if (e) { e.value = String(pct); var lbl = el(id + '-val'); if (lbl) lbl.textContent = pct + '%'; } };
+ setR('sound-master', pctFromVol(d && d.masterVol, 1.0));
+ setR('sound-music', pctFromVol(d && d.musicVol, 0.35));
+ setR('sound-sfx', pctFromVol(d && d.sfxVol, 0.75));
+ setMsg('sound-msg', '', '');
+ })
+ .catch(function (e) { setMsg('sound-msg', (e.message || 'โหลดไม่ได้') + ' — เช็ค /Game/api/sound-settings', 'error'); });
+ }
+ (function bindSound() {
+ var btn = el('btn-sound-save');
+ if (!btn) return;
+ btn.addEventListener('click', function () {
+ var rd = function (id, d) { var v = parseInt((el(id) || {}).value, 10); return Math.max(0, Math.min(100, Number.isFinite(v) ? v : d)) / 100; };
+ var body = { masterVol: rd('sound-master', 100), musicVol: rd('sound-music', 35), sfxVol: rd('sound-sfx', 75) };
+ btn.disabled = true;
+ soundSettingsFetch('PUT', body)
+ .then(function () { return soundSettingsFetch('GET'); })
+ .then(function (fresh) {
+ loadSoundPanel();
+ setMsg('sound-msg', 'บันทึกแล้ว — Master ' + pctFromVol(fresh.masterVol, 1) + '% · Music ' + pctFromVol(fresh.musicVol, .35) + '% · SFX ' + pctFromVol(fresh.sfxVol, .75) + '% · ผู้เล่นต้องรีเฟรช', 'ok');
+ })
+ .catch(function (e) { setMsg('sound-msg', (e.message || 'บันทึกไม่ได้') + ' — เช็ค Node + /Game/api/sound-settings', 'error'); })
+ .then(function () { btn.disabled = false; });
+ });
+ })();
+
+ /* ===== บทตัวป่วน (แยกจากหมวด Minigame-2) — troublesomeRollMaxSec + troublesomeOfferSec ===== */
+ function loadTroublesomePanel() {
+ gameTimingFetch('GET')
+ .then(function (data) {
+ var rs = (data && data.troublesomeRollMaxSec != null) ? Number(data.troublesomeRollMaxSec) : 8;
+ var os = (data && data.troublesomeOfferSec != null) ? Number(data.troublesomeOfferSec) : 15;
+ if (el('troublesome-roll-sec')) el('troublesome-roll-sec').value = String(Number.isFinite(rs) ? rs : 8);
+ if (el('troublesome-offer-sec')) el('troublesome-offer-sec').value = String(Number.isFinite(os) ? os : 15);
+ setMsg('troublesome-msg', '', '');
+ })
+ .catch(function (e) { setMsg('troublesome-msg', (e.message || 'โหลดไม่ได้') + ' — เช็ค /Game/api/game-timing', 'error'); });
+ }
+
+ (function bindTroublesome() {
+ var btn = el('btn-troublesome-save');
+ if (!btn) return;
+ btn.addEventListener('click', function () {
+ var rs = Math.max(1, Math.min(30, parseInt((el('troublesome-roll-sec') || {}).value, 10) || 8));
+ var os = Math.max(5, Math.min(120, parseInt((el('troublesome-offer-sec') || {}).value, 10) || 15));
+ btn.disabled = true;
+ gameTimingFetch('GET')
+ .then(function (data) {
+ data.troublesomeRollMaxSec = rs;
+ data.troublesomeOfferSec = os;
+ return gameTimingFetch('PUT', data);
+ })
+ .then(function () { return gameTimingFetch('GET'); })
+ .then(function (fresh) {
+ var r = (fresh && fresh.troublesomeRollMaxSec != null) ? fresh.troublesomeRollMaxSec : rs;
+ var o = (fresh && fresh.troublesomeOfferSec != null) ? fresh.troublesomeOfferSec : os;
+ if (el('troublesome-roll-sec')) el('troublesome-roll-sec').value = String(r);
+ if (el('troublesome-offer-sec')) el('troublesome-offer-sec').value = String(o);
+ setMsg('troublesome-msg', 'บันทึกแล้ว — เวลาเสนอ ' + r + 's · เวลารับ ' + o + 's · ผู้เล่นต้องรีเฟรช/เข้าห้องใหม่', 'ok');
+ })
+ .catch(function (e) { setMsg('troublesome-msg', (e.message || 'บันทึกไม่ได้') + ' — เช็ค Node + /Game/api/game-timing', 'error'); })
+ .then(function () { btn.disabled = false; });
+ });
+ })();
+
+ /* ===== Achievements admin ===== */
+ var achvCatalog = [];
+ var achvCatalogById = {};
+ var achvCurrentPlayer = null;
+
+ function achvGroupLabel(g) {
+ var names = { 1: '1 · Analyst', 2: '2 · Explorer', 3: '3 · Risk', 4: '4 · Support', 5: '5 · Elite' };
+ return names[g] || String(g);
+ }
+
+ function renderAchvCatalog() {
+ var tb = el('table-achv-catalog');
+ if (!tb) return;
+ tb = tb.querySelector('tbody');
+ tb.innerHTML = '';
+ achvCatalog.slice().sort(function (a, b) { return (a.g - b.g) || 0; }).forEach(function (a) {
+ var tr = document.createElement('tr');
+ tr.setAttribute('data-achv-id', a.id);
+
+ var tdG = document.createElement('td');
+ var sel = document.createElement('select');
+ sel.className = 'achv-f-g';
+ for (var g = 1; g <= 5; g++) {
+ var op = document.createElement('option');
+ op.value = String(g); op.textContent = achvGroupLabel(g);
+ if (g === (parseInt(a.g, 10) || 1)) op.selected = true;
+ sel.appendChild(op);
+ }
+ tdG.appendChild(sel);
+
+ var tdT = document.createElement('td');
+ var inT = document.createElement('input');
+ inT.type = 'text'; inT.className = 'achv-f-title'; inT.value = a.title || ''; inT.style.width = '100%';
+ tdT.appendChild(inT);
+
+ var tdD = document.createElement('td');
+ var inD = document.createElement('input');
+ inD.type = 'text'; inD.className = 'achv-f-desc'; inD.value = a.desc || ''; inD.style.width = '100%';
+ tdD.appendChild(inD);
+
+ var tdTar = document.createElement('td');
+ var inTar = document.createElement('input');
+ inTar.type = 'number'; inTar.min = '1'; inTar.step = '1'; inTar.className = 'achv-f-target';
+ inTar.value = String(Math.max(1, parseInt(a.target, 10) || 1)); inTar.style.width = '72px';
+ tdTar.appendChild(inTar);
+
+ var tdE = document.createElement('td');
+ var inE = document.createElement('input');
+ inE.type = 'checkbox'; inE.className = 'achv-f-enabled'; inE.checked = a.enabled !== false;
+ tdE.appendChild(inE);
+
+ tr.appendChild(tdG); tr.appendChild(tdT); tr.appendChild(tdD); tr.appendChild(tdTar); tr.appendChild(tdE);
+ tb.appendChild(tr);
+ });
+ }
+
+ function collectAchvCatalogFromTable() {
+ var rows = document.querySelectorAll('#table-achv-catalog tbody tr');
+ var out = [];
+ rows.forEach(function (tr) {
+ out.push({
+ id: tr.getAttribute('data-achv-id'),
+ g: parseInt(tr.querySelector('.achv-f-g').value, 10) || 1,
+ title: tr.querySelector('.achv-f-title').value,
+ desc: tr.querySelector('.achv-f-desc').value,
+ target: Math.max(1, parseInt(tr.querySelector('.achv-f-target').value, 10) || 1),
+ enabled: tr.querySelector('.achv-f-enabled').checked,
+ });
+ });
+ return out;
+ }
+
+ function loadAchvCatalog() {
+ return api('achievements.php?action=catalog').then(function (r) {
+ achvCatalog = (r && r.catalog) || [];
+ achvCatalogById = {};
+ achvCatalog.forEach(function (a) { achvCatalogById[a.id] = a; });
+ renderAchvCatalog();
+ setMsg('achv-catalog-msg', 'โหลดแคตตาล็อก ' + achvCatalog.length + ' รายการ', '');
+ }).catch(function (err) { setMsg('achv-catalog-msg', err.message, 'error'); });
+ }
+
+ function renderAchvPlayers(rows) {
+ var tb = el('table-achv-players');
+ if (!tb) return;
+ tb = tb.querySelector('tbody');
+ tb.innerHTML = '';
+ (rows || []).forEach(function (p) {
+ var tr = document.createElement('tr');
+ var c1 = document.createElement('td'); c1.textContent = p.displayName || 'Guest';
+ var c2 = document.createElement('td'); c2.textContent = p.playerKey; c2.style.fontSize = '12px'; c2.style.opacity = '0.8';
+ var c3 = document.createElement('td'); c3.textContent = (p.unlocked || 0) + ' / ' + (p.total || 0);
+ var c4 = document.createElement('td'); c4.textContent = String(p.coins || 0);
+ var c5 = document.createElement('td');
+ var btn = document.createElement('button');
+ btn.type = 'button'; btn.className = 'btn btn-ghost'; btn.textContent = 'จัดการ';
+ btn.addEventListener('click', function () { openAchvPlayerDetail(p.playerKey, p.displayName); });
+ c5.appendChild(btn);
+ tr.appendChild(c1); tr.appendChild(c2); tr.appendChild(c3); tr.appendChild(c4); tr.appendChild(c5);
+ tb.appendChild(tr);
+ });
+ }
+
+ function loadAchvPlayers() {
+ var q = (el('achv-player-search') && el('achv-player-search').value || '').trim().toLowerCase();
+ return api('achievements.php?action=players').then(function (r) {
+ var rows = (r && r.players) || [];
+ if (q) {
+ rows = rows.filter(function (p) {
+ return (p.displayName || '').toLowerCase().indexOf(q) >= 0 || (p.playerKey || '').toLowerCase().indexOf(q) >= 0;
+ });
+ }
+ renderAchvPlayers(rows);
+ setMsg('achv-players-msg', 'ผู้เล่น ' + rows.length + ' คน', '');
+ }).catch(function (err) { setMsg('achv-players-msg', err.message, 'error'); });
+ }
+
+ function openAchvPlayerDetail(key, name) {
+ achvCurrentPlayer = key;
+ var box = el('achv-player-detail');
+ if (box) box.hidden = false;
+ if (el('achv-player-detail-name')) el('achv-player-detail-name').textContent = (name || 'Guest') + ' (' + key + ')';
+ api('achievements.php?action=player&playerKey=' + encodeURIComponent(key)).then(function (r) {
+ var prog = (r && r.progress) || {};
+ var tb = el('table-achv-player-detail').querySelector('tbody');
+ tb.innerHTML = '';
+ achvCatalog.slice().sort(function (a, b) { return (a.g - b.g) || 0; }).forEach(function (a) {
+ var target = Math.max(1, parseInt(a.target, 10) || 1);
+ var cur = Math.max(0, parseInt(prog[a.id], 10) || 0);
+ var tr = document.createElement('tr');
+
+ var c1 = document.createElement('td');
+ c1.innerHTML = '' + achvGroupLabel(a.g).charAt(0) + ' · ' + (a.title || a.id);
+ var c2 = document.createElement('td');
+ var inp = document.createElement('input');
+ inp.type = 'number'; inp.min = '0'; inp.max = String(target); inp.step = '1'; inp.value = String(Math.min(cur, target));
+ inp.style.width = '70px';
+ c2.appendChild(inp);
+ c2.appendChild(document.createTextNode(' / ' + target + (cur >= target ? ' ✔' : '')));
+
+ var c3 = document.createElement('td');
+ var setBtn = document.createElement('button');
+ setBtn.type = 'button'; setBtn.className = 'btn btn-ghost'; setBtn.textContent = 'ตั้งค่า';
+ setBtn.style.marginRight = '6px';
+ setBtn.addEventListener('click', function () {
+ api('achievements.php', { method: 'POST', body: { action: 'setProgress', playerKey: key, id: a.id, value: parseInt(inp.value, 10) || 0 } })
+ .then(function () { setMsg('achv-players-msg', 'บันทึก ' + a.id, 'ok'); openAchvPlayerDetail(key, name); })
+ .catch(function (err) { setMsg('achv-players-msg', err.message, 'error'); });
+ });
+ var unBtn = document.createElement('button');
+ unBtn.type = 'button'; unBtn.className = 'btn btn-primary'; unBtn.textContent = 'ปลดล็อก';
+ unBtn.addEventListener('click', function () {
+ api('achievements.php', { method: 'POST', body: { action: 'unlock', playerKey: key, id: a.id } })
+ .then(function () { setMsg('achv-players-msg', 'ปลดล็อก ' + a.id, 'ok'); openAchvPlayerDetail(key, name); })
+ .catch(function (err) { setMsg('achv-players-msg', err.message, 'error'); });
+ });
+ c3.appendChild(setBtn); c3.appendChild(unBtn);
+
+ tr.appendChild(c1); tr.appendChild(c2); tr.appendChild(c3);
+ tb.appendChild(tr);
+ });
+ }).catch(function (err) { setMsg('achv-players-msg', err.message, 'error'); });
+ }
+
+ function showAchvSubtab(which) {
+ var isCat = which !== 'players';
+ if (el('achv-panel-catalog')) el('achv-panel-catalog').hidden = !isCat;
+ if (el('achv-panel-players')) el('achv-panel-players').hidden = isCat;
+ if (el('achv-subtab-catalog')) el('achv-subtab-catalog').classList.toggle('is-active', isCat);
+ if (el('achv-subtab-players')) el('achv-subtab-players').classList.toggle('is-active', !isCat);
+ if (!isCat) loadAchvPlayers();
+ }
+
+ var achvPanelInited = false;
+ function loadAchievementsPanel() {
+ if (!achvPanelInited) {
+ achvPanelInited = true;
+ var sc = el('achv-subtab-catalog'); if (sc) sc.addEventListener('click', function () { showAchvSubtab('catalog'); });
+ var sp = el('achv-subtab-players'); if (sp) sp.addEventListener('click', function () { showAchvSubtab('players'); });
+ var save = el('btn-achv-save');
+ if (save) save.addEventListener('click', function () {
+ api('achievements.php', { method: 'POST', body: { action: 'saveCatalog', catalog: collectAchvCatalogFromTable() } })
+ .then(function (r) {
+ achvCatalog = (r && r.catalog) || achvCatalog;
+ achvCatalogById = {}; achvCatalog.forEach(function (a) { achvCatalogById[a.id] = a; });
+ renderAchvCatalog();
+ setMsg('achv-catalog-msg', 'บันทึกแคตตาล็อกแล้ว', 'ok');
+ })
+ .catch(function (err) { setMsg('achv-catalog-msg', err.message, 'error'); });
+ });
+ var reload = el('btn-achv-reload');
+ if (reload) reload.addEventListener('click', function () { loadAchvCatalog(); });
+ var resetDef = el('btn-achv-reset-default');
+ if (resetDef) resetDef.addEventListener('click', function () {
+ if (!confirm('คืนค่าแคตตาล็อกกลับเป็นค่าเริ่มต้น 25 รายการ? (ค่าที่แก้ไว้จะหาย)')) return;
+ api('achievements.php', { method: 'POST', body: { action: 'resetCatalog' } })
+ .then(function () { setMsg('achv-catalog-msg', 'คืนค่าเริ่มต้นแล้ว', 'ok'); return loadAchvCatalog(); })
+ .catch(function (err) { setMsg('achv-catalog-msg', err.message, 'error'); });
+ });
+ var pr = el('btn-achv-players-refresh'); if (pr) pr.addEventListener('click', function () { loadAchvPlayers(); });
+ var ps = el('achv-player-search'); if (ps) ps.addEventListener('input', function () { loadAchvPlayers(); });
+ var rpb = el('btn-achv-player-reset');
+ if (rpb) rpb.addEventListener('click', function () {
+ if (!achvCurrentPlayer) return;
+ if (!confirm('รีเซ็ต achievement ทั้งหมดของผู้เล่นนี้?')) return;
+ api('achievements.php', { method: 'POST', body: { action: 'resetPlayer', playerKey: achvCurrentPlayer } })
+ .then(function () { setMsg('achv-players-msg', 'รีเซ็ตแล้ว', 'ok'); openAchvPlayerDetail(achvCurrentPlayer, el('achv-player-detail-name') ? el('achv-player-detail-name').textContent : ''); loadAchvPlayers(); })
+ .catch(function (err) { setMsg('achv-players-msg', err.message, 'error'); });
+ });
+ }
+ return loadAchvCatalog();
+ }
+
+ el('form-account-add').addEventListener('submit', function (e) {
+ e.preventDefault();
+ var fd = new FormData(e.target);
+ var body = {
+ email: fd.get('email'),
+ displayName: fd.get('displayName'),
+ loginType: fd.get('loginType'),
+ providerUserId: fd.get('providerUserId'),
+ notes: fd.get('notes'),
+ blocked: fd.get('blocked') === 'on',
+ coins: Math.max(0, parseInt(fd.get('coins'), 10) || 0),
+ };
+ api('accounts.php', { method: 'POST', body: body })
+ .then(function () {
+ e.target.reset();
+ return loadAccounts();
+ })
+ .catch(function (err) {
+ setMsg('accounts-msg', err.message, 'error');
+ });
+ });
+
+ function renderAdmins(list, myId) {
+ var tb = el('table-admins').querySelector('tbody');
+ tb.innerHTML = '';
+ (list || []).forEach(function (a) {
+ var tr = document.createElement('tr');
+ var delBtn = a.id === myId
+ ? '—'
+ : 'ลบ ';
+ /* สิทธิ์หมวด: super = ทุกหมวดเสมอ · tabs ว่าง = ทุกหมวด (บัญชีเก่า) */
+ var permTxt;
+ if ((a.role || 'admin') === 'super') permTxt = 'ทุกหมวด (super) ';
+ else if (!Array.isArray(a.tabs) || !a.tabs.length) permTxt = 'ทุกหมวด ';
+ else permTxt = '' + a.tabs.length + ' หมวด ';
+ tr.innerHTML =
+ '' + escapeHtml(a.username) + ' ' +
+ '' + escapeHtml(a.role || 'admin') + ' ' +
+ '' + permTxt + ' ' +
+ '' + escapeHtml((a.createdAt || '').slice(0, 10)) + ' ' +
+ '' + delBtn + ' ';
+ tb.appendChild(tr);
+ });
+ tb.querySelectorAll('.btn-adm-del').forEach(function (b) {
+ b.addEventListener('click', function () {
+ if (!confirm('ลบแอดมินนี้?')) return;
+ api('admins.php?id=' + encodeURIComponent(b.getAttribute('data-id')), { method: 'DELETE' })
+ .then(loadAdmins)
+ .catch(function (err) {
+ setMsg('admins-msg', err.message, 'error');
+ });
+ });
+ });
+ }
+
+ function fillAdminResetSelect(admins, myId) {
+ var sel = el('select-admin-reset-target');
+ if (!sel) return;
+ sel.innerHTML = '— เลือก — ';
+ (admins || []).forEach(function (a) {
+ if (!a.id || a.id === myId) return;
+ var opt = document.createElement('option');
+ opt.value = a.id;
+ opt.textContent = a.username + ' (' + (a.role || 'admin') + ')';
+ sel.appendChild(opt);
+ });
+ }
+
+ /* ===== สิทธิ์รายหมวด: ช่องติ๊ก + บันทึก [2026-07-22] ===== */
+ var ADMIN_TAB_LABELS = null; /* data-tab -> ชื่อที่โชว์ (ดึงจากเมนูซ้ายจริง จะได้ไม่ต้องมี list ซ้ำ) */
+ var adminPermCache = []; /* รายชื่อแอดมินล่าสุด (ไว้เติมช่องติ๊กตอนเลือกคน) */
+
+ function adminTabList() {
+ if (ADMIN_TAB_LABELS) return ADMIN_TAB_LABELS;
+ ADMIN_TAB_LABELS = [];
+ document.querySelectorAll('.tab').forEach(function (t) {
+ var name = t.getAttribute('data-tab');
+ if (!name || name === 'change-password') return; /* เข้าได้เสมอ ไม่ต้องให้ติ๊ก */
+ var lb = t.querySelector('.tab-label');
+ ADMIN_TAB_LABELS.push({ name: name, label: (lb ? lb.textContent : name).trim() });
+ });
+ return ADMIN_TAB_LABELS;
+ }
+
+ function buildAdminPermBoxes() {
+ var box = el('admin-perm-tabs');
+ if (!box || box.dataset.built === '1') return;
+ box.dataset.built = '1';
+ box.innerHTML = adminTabList().map(function (t) {
+ return ''
+ + ' '
+ + '' + escapeHtml(t.label) + ' ';
+ }).join('');
+ }
+
+ function setAdminPermChecks(tabs) {
+ var set = {};
+ (tabs || []).forEach(function (t) { set[t] = 1; });
+ document.querySelectorAll('.adm-perm-cb').forEach(function (c) { c.checked = !!set[c.value]; });
+ }
+
+ function fillAdminPermSelect(admins, myId) {
+ var sel = el('select-admin-perm-target');
+ if (!sel) return;
+ var keep = sel.value;
+ sel.innerHTML = '— เลือก — ';
+ (admins || []).forEach(function (a) {
+ if (!a.id) return;
+ var opt = document.createElement('option');
+ opt.value = a.id;
+ opt.textContent = a.username + ' (' + (a.role || 'admin') + ')' + (a.id === myId ? ' — คุณ' : '');
+ sel.appendChild(opt);
+ });
+ if (keep) sel.value = keep;
+ }
+
+ (function bindAdminPerms() {
+ var sel = el('select-admin-perm-target');
+ if (!sel) return;
+ var msg = function (t, bad) {
+ var m = el('admin-perm-msg');
+ if (m) { m.textContent = t || ''; m.style.color = bad ? '#ff8fa3' : ''; }
+ };
+ sel.addEventListener('change', function () {
+ buildAdminPermBoxes();
+ var a = adminPermCache.filter(function (x) { return x.id === sel.value; })[0];
+ if (!a) { setAdminPermChecks([]); msg(''); return; }
+ setAdminPermChecks(a.tabs || []);
+ msg((a.role === 'super') ? 'บัญชี super เข้าได้ทุกหมวดเสมอ — แก้ตรงนี้ไม่มีผล' : '');
+ });
+ if (el('btn-admin-perm-all')) el('btn-admin-perm-all').addEventListener('click', function () {
+ buildAdminPermBoxes();
+ document.querySelectorAll('.adm-perm-cb').forEach(function (c) { c.checked = true; });
+ });
+ if (el('btn-admin-perm-none')) el('btn-admin-perm-none').addEventListener('click', function () {
+ document.querySelectorAll('.adm-perm-cb').forEach(function (c) { c.checked = false; });
+ });
+ if (el('btn-admin-perm-save')) el('btn-admin-perm-save').addEventListener('click', function () {
+ if (!sel.value) { msg('เลือกแอดมินก่อน', true); return; }
+ var tabs = [];
+ document.querySelectorAll('.adm-perm-cb').forEach(function (c) { if (c.checked) tabs.push(c.value); });
+ msg('กำลังบันทึก…');
+ api('admins.php', { method: 'PATCH', body: { id: sel.value, tabs: tabs } })
+ .then(function (r) {
+ msg(r.message || 'บันทึกแล้ว');
+ return loadAdmins();
+ })
+ .catch(function (e) { msg('บันทึกไม่สำเร็จ: ' + e.message, true); });
+ });
+ })();
+
+ function loadAdmins() {
+ return api('admins.php').then(function (r) {
+ return api('session.php').then(function (s) {
+ var myId = s.admin && s.admin.id;
+ adminPermCache = r.admins || [];
+ renderAdmins(r.admins, myId);
+ fillAdminResetSelect(r.admins, myId);
+ buildAdminPermBoxes();
+ fillAdminPermSelect(r.admins, myId);
+ setMsg('admins-msg', '', '');
+ });
+ });
+ }
+
+ el('form-change-password').addEventListener('submit', function (e) {
+ e.preventDefault();
+ var fd = new FormData(e.target);
+ var cur = fd.get('currentPassword');
+ var n1 = fd.get('newPassword');
+ var n2 = fd.get('newPassword2');
+ if (n1 !== n2) {
+ setMsg('password-self-msg', 'รหัสใหม่ไม่ตรงกัน', 'error');
+ return;
+ }
+ api('password.php', {
+ method: 'POST',
+ body: { currentPassword: cur, newPassword: n1 },
+ })
+ .then(function () {
+ e.target.reset();
+ setMsg('password-self-msg', 'เปลี่ยนรหัสผ่านแล้ว', 'ok');
+ })
+ .catch(function (err) {
+ setMsg('password-self-msg', err.message, 'error');
+ });
+ });
+
+ el('form-admin-reset-other').addEventListener('submit', function (e) {
+ e.preventDefault();
+ var fd = new FormData(e.target);
+ var tid = fd.get('targetId');
+ var n1 = fd.get('newPassword');
+ var n2 = fd.get('newPassword2');
+ if (!tid) {
+ setMsg('admins-msg', 'เลือกแอดมิน', 'error');
+ return;
+ }
+ if (n1 !== n2) {
+ setMsg('admins-msg', 'รหัสใหม่ไม่ตรงกัน', 'error');
+ return;
+ }
+ api('admins.php', {
+ method: 'PATCH',
+ body: { id: tid, newPassword: n1 },
+ })
+ .then(function () {
+ e.target.reset();
+ setMsg('admins-msg', 'ตั้งรหัสใหม่ให้แอดมินที่เลือกแล้ว', 'ok');
+ })
+ .catch(function (err) {
+ setMsg('admins-msg', err.message, 'error');
+ });
+ });
+
+ el('form-admin-add').addEventListener('submit', function (e) {
+ e.preventDefault();
+ var fd = new FormData(e.target);
+ api('admins.php', {
+ method: 'POST',
+ body: {
+ username: fd.get('username'),
+ password: fd.get('password'),
+ role: fd.get('role'),
+ },
+ })
+ .then(function () {
+ e.target.reset();
+ return loadAdmins();
+ })
+ .catch(function (err) {
+ setMsg('admins-msg', err.message, 'error');
+ });
+ });
+
+ function getDesiredAdminTab(admin) {
+ var want = null;
+ try {
+ want = new URL(window.location.href).searchParams.get('tab');
+ } catch (e) { /* ignore */ }
+ var allowed = { 'change-password': true, oauth: true, 'map-editor': true, quiz: true, 'special-quiz': true, 'vote-timing': true, troublesome: true, 'quiz-carry': true, 'quiz-battle': true, 'jump-survive': true, 'space-shooter': true, 'mega-virus': true, 'game-timing': true, 'stack-game': true, characters: true, accounts: true, admins: true };
+ if (!want || !allowed[want]) return 'oauth';
+ if (want === 'admins' && (!admin || admin.role !== 'super')) return 'oauth';
+ return want;
+ }
+
+ function loadAll(admin) {
+ /* สิทธิ์รายหมวด — ใช้ admin ที่ boot() คืนมา (มี tabsEffective) ไม่ต้องยิง session.php ซ้ำ */
+ if (admin && Array.isArray(admin.tabsEffective)) applyTabPermissions(admin.tabsEffective);
+ if (typeof window.__qbModesLoad === 'function') {
+ try { window.__qbModesLoad(); } catch (e) { /* ไม่ให้ล้มทั้งหน้า */ }
+ }
+ loadOAuth().catch(function (e) {
+ setMsg('oauth-msg', e.message, 'error');
+ });
+ loadAccounts().catch(function (e) {
+ setMsg('accounts-msg', e.message, 'error');
+ });
+ var isSuper = admin && admin.role === 'super';
+ el('tab-admins').hidden = !isSuper;
+ el('form-admin-add').hidden = !isSuper;
+ if (isSuper) {
+ loadAdmins().catch(function (e) {
+ setMsg('admins-msg', e.message, 'error');
+ });
+ }
+ setTab(getDesiredAdminTab(admin));
+ /** อย่า prefetch ซิงก์ Stack ที่นี่ — GET ที่เริ่มก่อน PUT บันทึกอาจกลับช้ากว่าและทับช่องกว้าง/HZ ด้วยข้อมูลเก่า · โหลดจริงที่แท็บ Stack / เวลาเกมแทน */
+ }
+
+ boot().then(function (admin) {
+ if (admin) loadAll(admin);
+ });
+})();
diff --git a/www/html/Admin/api/_common.php b/www/html/Admin/api/_common.php
index 9fc99e8..a5da1eb 100644
--- a/www/html/Admin/api/_common.php
+++ b/www/html/Admin/api/_common.php
@@ -111,9 +111,95 @@ function is_super(array $admin): bool
return ($admin['role'] ?? '') === 'super';
}
+/**
+ * รายชื่อหมวด (tab) ทั้งหมดในหน้า admin — ต้องตรงกับ data-tab ใน Admin/index.html
+ * ใช้เป็น whitelist เวลาบันทึกสิทธิ์ กันค่ามั่วหลุดเข้า store
+ */
+function admin_all_tabs(): array
+{
+ return [
+ 'accounts', 'admins', 'oauth', 'change-password',
+ 'achievements', 'ai-admin', 'case-media', 'characters', 'evidence-cards',
+ 'game-timing', 'highscore', 'map-editor', 'postcase', 'qb-map-editor',
+ 'quiz', 'quiz-battle', 'quiz-carry', 'sound', 'special-quiz',
+ 'jump-survive', 'mega-virus', 'space-shooter', 'stack-game',
+ 'test-mode', 'troublesome', 'vote-timing',
+ ];
+}
+
+/**
+ * หมวดที่แอดมินคนนี้เข้าได้จริง
+ * - super = ทุกหมวดเสมอ
+ * - ไม่มีคีย์ tabs หรือ tabs ว่าง = ทุกหมวด (ความเข้ากันได้กับบัญชีเดิมที่สร้างก่อนมีระบบสิทธิ์)
+ */
+function admin_tabs(array $a): array
+{
+ if (is_super($a)) {
+ return admin_all_tabs();
+ }
+ $t = $a['tabs'] ?? null;
+ if (!is_array($t) || count($t) === 0) {
+ return admin_all_tabs();
+ }
+ return array_values(array_intersect(admin_all_tabs(), $t));
+}
+
+function admin_can(array $a, string $tab): bool
+{
+ return in_array($tab, admin_tabs($a), true);
+}
+
+/** กันที่ API: แอดมินที่ไม่มีสิทธิ์หมวดนี้ ยิงตรงมาก็ต้องโดนปฏิเสธ (ซ่อน tab ฝั่งหน้าเว็บอย่างเดียวไม่ใช่ security) */
+function require_tab(string $tab): array
+{
+ $a = current_admin();
+ if (!$a) {
+ json_response(['ok' => false, 'error' => 'Unauthorized'], 401);
+ }
+ if (!admin_can($a, $tab)) {
+ json_response(['ok' => false, 'error' => 'บัญชีนี้ไม่มีสิทธิ์เข้าหมวด "' . $tab . '"'], 403);
+ }
+ return $a;
+}
+
+/**
+ * บาง endpoint เป็น "config ก้อนเดียวที่หลายหมวดใช้ร่วมกัน" (เช่น quiz-settings.json)
+ * ถ้า gate ไว้หมวดเดียวจะพังหมวดอื่น → ผ่านถ้ามีสิทธิ์ "อย่างน้อย 1 หมวด" ในลิสต์
+ */
+function require_any_tab(array $tabs): array
+{
+ $a = current_admin();
+ if (!$a) {
+ json_response(['ok' => false, 'error' => 'Unauthorized'], 401);
+ }
+ foreach ($tabs as $t) {
+ if (admin_can($a, $t)) {
+ return $a;
+ }
+ }
+ json_response(['ok' => false, 'error' => 'บัญชีนี้ไม่มีสิทธิ์เข้าหมวดที่เกี่ยวข้อง'], 403);
+}
+
+/** normalize ค่า tabs ที่รับมาจาก client ให้เหลือเฉพาะที่อยู่ใน whitelist */
+function sanitize_tabs($raw): array
+{
+ if (!is_array($raw)) {
+ return [];
+ }
+ $all = admin_all_tabs();
+ $out = [];
+ foreach ($raw as $t) {
+ if (is_string($t) && in_array($t, $all, true) && !in_array($t, $out, true)) {
+ $out[] = $t;
+ }
+ }
+ return $out;
+}
+
function strip_admin(array $a): array
{
unset($a['passwordHash']);
+ $a['tabsEffective'] = admin_tabs($a);
return $a;
}
diff --git a/www/html/Admin/api/_player_account.php b/www/html/Admin/api/_player_account.php
new file mode 100644
index 0000000..4bff9d1
--- /dev/null
+++ b/www/html/Admin/api/_player_account.php
@@ -0,0 +1,116 @@
+ $a) {
+ if (($a['providerUserId'] ?? '') === $key) {
+ return (int) $i;
+ }
+ }
+ return -1;
+}
+
+function find_account_by_player_key(array $accounts, string $key): ?array
+{
+ $idx = find_account_index_by_player_key($accounts, $key);
+ return $idx >= 0 ? $accounts[$idx] : null;
+}
+
+function default_guest_account(string $key, string $notes = 'auto', array $extra = []): array
+{
+ $now = gmdate('c');
+ return array_merge([
+ 'id' => new_id(),
+ 'email' => '',
+ 'displayName' => 'Guest',
+ 'loginType' => 'guest',
+ 'providerUserId' => $key,
+ 'notes' => $notes,
+ 'blocked' => false,
+ 'coins' => 0,
+ 'createdAt' => $now,
+ 'updatedAt' => $now,
+ ], $extra);
+}
+
+function google_player_key(string $googleSub): string
+{
+ $sub = trim($googleSub);
+ if ($sub === '') {
+ return '';
+ }
+ if (str_starts_with($sub, 'g_')) {
+ return $sub;
+ }
+ return 'g_' . $sub;
+}
+
+function merge_guest_account_into(array &$store, int $targetIdx, string $guestKey): void
+{
+ if ($guestKey === '' || !valid_player_key($guestKey)) {
+ return;
+ }
+ $guestIdx = find_account_index_by_player_key($store['accounts'] ?? [], $guestKey);
+ if ($guestIdx < 0 || $guestIdx === $targetIdx) {
+ return;
+ }
+ $guest = $store['accounts'][$guestIdx];
+ if (($guest['loginType'] ?? '') !== 'guest') {
+ return;
+ }
+
+ $target = &$store['accounts'][$targetIdx];
+ $target['coins'] = max(0, (int) ($target['coins'] ?? 0)) + max(0, (int) ($guest['coins'] ?? 0));
+ $target['score'] = max(0, (int) ($target['score'] ?? 0)) + max(0, (int) ($guest['score'] ?? 0));
+
+ if (isset($guest['scoreByCase']) && is_array($guest['scoreByCase'])) {
+ if (!isset($target['scoreByCase']) || !is_array($target['scoreByCase'])) {
+ $target['scoreByCase'] = [];
+ }
+ foreach ($guest['scoreByCase'] as $cid => $sc) {
+ $target['scoreByCase'][$cid] = max(0, (int) ($target['scoreByCase'][$cid] ?? 0)) + max(0, (int) $sc);
+ }
+ }
+
+ if (isset($guest['achievements']) && is_array($guest['achievements'])) {
+ if (!isset($target['achievements']) || !is_array($target['achievements'])) {
+ $target['achievements'] = [];
+ }
+ foreach ($guest['achievements'] as $aid => $cnt) {
+ $target['achievements'][$aid] = max((int) ($target['achievements'][$aid] ?? 0), (int) $cnt);
+ }
+ }
+
+ if (isset($guest['daily']) && is_array($guest['daily']) && empty($target['daily'])) {
+ $target['daily'] = $guest['daily'];
+ }
+
+ if (!isset($target['lobbyColorThemeIndex']) && isset($guest['lobbyColorThemeIndex'])) {
+ $target['lobbyColorThemeIndex'] = $guest['lobbyColorThemeIndex'];
+ }
+ if (!isset($target['lobbySkinToneIndex']) && isset($guest['lobbySkinToneIndex'])) {
+ $target['lobbySkinToneIndex'] = $guest['lobbySkinToneIndex'];
+ }
+
+ if (($target['displayName'] ?? '') === '' || ($target['displayName'] ?? '') === 'Guest') {
+ $gn = trim((string) ($guest['displayName'] ?? ''));
+ if ($gn !== '' && $gn !== 'Guest') {
+ $target['displayName'] = $gn;
+ }
+ }
+
+ array_splice($store['accounts'], $guestIdx, 1);
+ if ($guestIdx < $targetIdx) {
+ $targetIdx--;
+ }
+}
diff --git a/www/html/Admin/api/_player_log.php b/www/html/Admin/api/_player_log.php
new file mode 100644
index 0000000..883d069
--- /dev/null
+++ b/www/html/Admin/api/_player_log.php
@@ -0,0 +1,317 @@
+ 1,
+ 'stats' => [
+ 'totalEvents' => 0,
+ 'totalVisits' => 0,
+ 'uniquePlayers' => 0,
+ 'visitsToday' => 0,
+ 'todayKey' => '',
+ ],
+ 'players' => [],
+ 'events' => [],
+ ];
+}
+
+function player_log_read(): array
+{
+ if (!is_file(PLAYER_LOG_FILE)) {
+ return player_log_default();
+ }
+ $raw = @file_get_contents(PLAYER_LOG_FILE);
+ $j = json_decode($raw ?: '{}', true);
+ if (!is_array($j)) {
+ return player_log_default();
+ }
+ return array_replace_recursive(player_log_default(), $j);
+}
+
+function player_log_write(array $data): bool
+{
+ if (!is_dir(ADMIN_PRIVATE_DIR)) {
+ if (!@mkdir(ADMIN_PRIVATE_DIR, 0750, true)) {
+ return false;
+ }
+ }
+ $tmp = PLAYER_LOG_FILE . '.tmp.' . bin2hex(random_bytes(4));
+ $json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
+ if ($json === false) {
+ return false;
+ }
+ if (file_put_contents($tmp, $json, LOCK_EX) === false) {
+ return false;
+ }
+ if (!rename($tmp, PLAYER_LOG_FILE)) {
+ @unlink($tmp);
+ return false;
+ }
+ return true;
+}
+
+function player_log_today_key(): string
+{
+ $tz = new DateTimeZone('Asia/Bangkok');
+ return (new DateTimeImmutable('now', $tz))->format('Y-m-d');
+}
+
+function player_log_reset_today_if_needed(array &$log): void
+{
+ $today = player_log_today_key();
+ if (($log['stats']['todayKey'] ?? '') !== $today) {
+ $log['stats']['todayKey'] = $today;
+ $log['stats']['visitsToday'] = 0;
+ }
+}
+
+function player_log_allowed_events(): array
+{
+ return [
+ 'login_guest' => true,
+ 'login_google' => true,
+ 'login_facebook' => true,
+ 'lobby_enter' => true,
+ 'room_enter' => true,
+ 'game_enter' => true,
+ 'quiz_battle_enter' => true,
+ 'logout' => true,
+ ];
+}
+
+function player_log_sanitize_name(string $raw): string
+{
+ $s = trim($raw);
+ $s = preg_replace('/[\x00-\x1f\x7f]/u', '', $s) ?? '';
+ if (function_exists('mb_substr')) {
+ return mb_substr($s, 0, 32);
+ }
+ return substr($s, 0, 32);
+}
+
+function player_log_sanitize_page(string $raw): string
+{
+ $s = trim($raw);
+ if (function_exists('mb_substr')) {
+ return mb_substr($s, 0, 180);
+ }
+ return substr($s, 0, 180);
+}
+
+/** event ที่นับเป็น "การเข้าใช้งาน" */
+function player_log_counts_as_visit(string $event): bool
+{
+ return isset([
+ 'login_guest' => true,
+ 'login_google' => true,
+ 'login_facebook' => true,
+ 'lobby_enter' => true,
+ 'room_enter' => true,
+ 'game_enter' => true,
+ ][$event]);
+}
+
+function player_log_track(
+ string $playerKey,
+ string $event,
+ string $displayName = '',
+ string $loginType = 'guest',
+ string $page = '',
+ array $meta = []
+): array {
+ $allowed = player_log_allowed_events();
+ if (!isset($allowed[$event])) {
+ return ['ok' => false, 'error' => 'unknown event'];
+ }
+ if (!valid_player_key($playerKey)) {
+ return ['ok' => false, 'error' => 'invalid playerKey'];
+ }
+
+ $lt = in_array($loginType, ['guest', 'google', 'facebook', 'email'], true) ? $loginType : 'guest';
+ $name = player_log_sanitize_name($displayName);
+ $page = player_log_sanitize_page($page);
+ $now = gmdate('c');
+ $nowTs = time();
+
+ $log = player_log_read();
+ player_log_reset_today_if_needed($log);
+
+ if (!isset($log['players']) || !is_array($log['players'])) {
+ $log['players'] = [];
+ }
+ if (!isset($log['events']) || !is_array($log['events'])) {
+ $log['events'] = [];
+ }
+
+ $isNewPlayer = !isset($log['players'][$playerKey]);
+ if ($isNewPlayer) {
+ $log['players'][$playerKey] = [
+ 'playerKey' => $playerKey,
+ 'displayName' => $name !== '' ? $name : 'ผู้เล่น',
+ 'loginType' => $lt,
+ 'visitCount' => 0,
+ 'eventCount' => 0,
+ 'firstSeenAt' => $now,
+ 'lastSeenAt' => $now,
+ 'lastVisitAt' => null,
+ 'lastEvent' => $event,
+ 'lastPage' => $page,
+ ];
+ $log['stats']['uniquePlayers'] = count($log['players']);
+ }
+
+ $p = &$log['players'][$playerKey];
+ if ($name !== '') {
+ $p['displayName'] = $name;
+ }
+ $p['loginType'] = $lt;
+ $p['lastSeenAt'] = $now;
+ $p['lastEvent'] = $event;
+ if ($page !== '') {
+ $p['lastPage'] = $page;
+ }
+ $p['eventCount'] = max(0, (int) ($p['eventCount'] ?? 0)) + 1;
+
+ $countVisit = false;
+ if (player_log_counts_as_visit($event)) {
+ $lastVisitAt = isset($p['lastVisitAt']) ? strtotime((string) $p['lastVisitAt']) : false;
+ if ($lastVisitAt === false || ($nowTs - $lastVisitAt) >= PLAYER_LOG_SESSION_GAP_SEC) {
+ $countVisit = true;
+ $p['visitCount'] = max(0, (int) ($p['visitCount'] ?? 0)) + 1;
+ $p['lastVisitAt'] = $now;
+ $log['stats']['totalVisits'] = max(0, (int) ($log['stats']['totalVisits'] ?? 0)) + 1;
+ $log['stats']['visitsToday'] = max(0, (int) ($log['stats']['visitsToday'] ?? 0)) + 1;
+ }
+ }
+
+ $log['stats']['totalEvents'] = max(0, (int) ($log['stats']['totalEvents'] ?? 0)) + 1;
+
+ $ev = [
+ 'id' => bin2hex(random_bytes(8)),
+ 'at' => $now,
+ 'playerKey' => $playerKey,
+ 'displayName' => (string) ($p['displayName'] ?? ''),
+ 'loginType' => $lt,
+ 'event' => $event,
+ 'page' => $page,
+ 'meta' => is_array($meta) ? $meta : [],
+ 'countedVisit' => $countVisit,
+ ];
+ array_unshift($log['events'], $ev);
+ if (count($log['events']) > PLAYER_LOG_MAX_EVENTS) {
+ $log['events'] = array_slice($log['events'], 0, PLAYER_LOG_MAX_EVENTS);
+ }
+
+ if (!player_log_write($log)) {
+ return ['ok' => false, 'error' => 'บันทึก log ไม่สำเร็จ'];
+ }
+
+ return [
+ 'ok' => true,
+ 'countedVisit' => $countVisit,
+ 'visitCount' => (int) ($p['visitCount'] ?? 0),
+ ];
+}
+
+function player_log_public_summary(array $log): array
+{
+ player_log_reset_today_if_needed($log);
+ return [
+ 'totalEvents' => max(0, (int) ($log['stats']['totalEvents'] ?? 0)),
+ 'totalVisits' => max(0, (int) ($log['stats']['totalVisits'] ?? 0)),
+ 'uniquePlayers' => max(0, (int) ($log['stats']['uniquePlayers'] ?? count($log['players'] ?? []))),
+ 'visitsToday' => max(0, (int) ($log['stats']['visitsToday'] ?? 0)),
+ 'todayKey' => (string) ($log['stats']['todayKey'] ?? player_log_today_key()),
+ 'eventCap' => PLAYER_LOG_MAX_EVENTS,
+ 'storedEvents' => count($log['events'] ?? []),
+ ];
+}
+
+function player_log_players_list(array $log, string $search = '', int $limit = 200): array
+{
+ $rows = [];
+ foreach ($log['players'] ?? [] as $p) {
+ if (!is_array($p)) {
+ continue;
+ }
+ $key = (string) ($p['playerKey'] ?? '');
+ if ($key === '') {
+ continue;
+ }
+ if ($search !== '') {
+ $hay = strtolower($key . ' ' . ($p['displayName'] ?? '') . ' ' . ($p['loginType'] ?? ''));
+ if (strpos($hay, strtolower($search)) === false) {
+ continue;
+ }
+ }
+ $rows[] = [
+ 'playerKey' => $key,
+ 'displayName' => (string) ($p['displayName'] ?? 'ผู้เล่น'),
+ 'loginType' => (string) ($p['loginType'] ?? 'guest'),
+ 'visitCount' => max(0, (int) ($p['visitCount'] ?? 0)),
+ 'eventCount' => max(0, (int) ($p['eventCount'] ?? 0)),
+ 'firstSeenAt' => (string) ($p['firstSeenAt'] ?? ''),
+ 'lastSeenAt' => (string) ($p['lastSeenAt'] ?? ''),
+ 'lastVisitAt' => (string) ($p['lastVisitAt'] ?? ''),
+ 'lastEvent' => (string) ($p['lastEvent'] ?? ''),
+ 'lastPage' => (string) ($p['lastPage'] ?? ''),
+ ];
+ }
+ usort($rows, static function ($a, $b) {
+ return strcmp((string) ($b['lastSeenAt'] ?? ''), (string) ($a['lastSeenAt'] ?? ''));
+ });
+ if ($limit > 0 && count($rows) > $limit) {
+ $rows = array_slice($rows, 0, $limit);
+ }
+ return $rows;
+}
+
+function player_log_events_list(array $log, array $opts = []): array
+{
+ $search = trim((string) ($opts['search'] ?? ''));
+ $event = trim((string) ($opts['event'] ?? ''));
+ $playerKey = trim((string) ($opts['playerKey'] ?? ''));
+ $limit = max(1, min(500, (int) ($opts['limit'] ?? 100)));
+ $offset = max(0, (int) ($opts['offset'] ?? 0));
+
+ $rows = [];
+ foreach ($log['events'] ?? [] as $ev) {
+ if (!is_array($ev)) {
+ continue;
+ }
+ if ($event !== '' && ($ev['event'] ?? '') !== $event) {
+ continue;
+ }
+ if ($playerKey !== '' && ($ev['playerKey'] ?? '') !== $playerKey) {
+ continue;
+ }
+ if ($search !== '') {
+ $hay = strtolower(
+ ($ev['playerKey'] ?? '') . ' ' .
+ ($ev['displayName'] ?? '') . ' ' .
+ ($ev['event'] ?? '') . ' ' .
+ ($ev['page'] ?? '')
+ );
+ if (strpos($hay, strtolower($search)) === false) {
+ continue;
+ }
+ }
+ $rows[] = $ev;
+ }
+ $total = count($rows);
+ if ($offset > 0) {
+ $rows = array_slice($rows, $offset);
+ }
+ if (count($rows) > $limit) {
+ $rows = array_slice($rows, 0, $limit);
+ }
+ return ['rows' => $rows, 'total' => $total];
+}
diff --git a/www/html/Admin/api/accounts.php b/www/html/Admin/api/accounts.php
index aa78d24..fde1721 100644
--- a/www/html/Admin/api/accounts.php
+++ b/www/html/Admin/api/accounts.php
@@ -1,119 +1,120 @@
- true, 'accounts' => $list]);
-}
-
-if ($method === 'POST') {
- $body = require_json_body();
- $store = read_store();
- $coins = isset($body['coins']) ? (int)$body['coins'] : 0;
- $coins = max(0, $coins);
- $acc = [
- 'id' => new_id(),
- 'email' => trim((string)($body['email'] ?? '')),
- 'displayName' => trim((string)($body['displayName'] ?? '')),
- 'loginType' => in_array($body['loginType'] ?? '', ['guest', 'facebook', 'google', 'email'], true)
- ? $body['loginType'] : 'guest',
- 'providerUserId' => trim((string)($body['providerUserId'] ?? '')),
- 'notes' => trim((string)($body['notes'] ?? '')),
- 'blocked' => !empty($body['blocked']),
- 'coins' => $coins,
- 'createdAt' => gmdate('c'),
- 'updatedAt' => gmdate('c'),
- ];
- $store['accounts'][] = $acc;
- if (!write_store($store)) {
- json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
- }
- json_response(['ok' => true, 'account' => $acc]);
-}
-
-if ($method === 'PATCH') {
- $body = require_json_body();
- $id = trim((string)($body['id'] ?? ''));
- if ($id === '') {
- json_response(['ok' => false, 'error' => 'ระบุ id'], 400);
- }
- $store = read_store();
- $found = false;
- foreach ($store['accounts'] ?? [] as $i => $a) {
- if (($a['id'] ?? '') !== $id) {
- continue;
- }
- $found = true;
- if (array_key_exists('email', $body)) {
- $store['accounts'][$i]['email'] = trim((string)$body['email']);
- }
- if (array_key_exists('displayName', $body)) {
- $store['accounts'][$i]['displayName'] = trim((string)$body['displayName']);
- }
- if (array_key_exists('loginType', $body)) {
- $lt = $body['loginType'];
- if (in_array($lt, ['guest', 'facebook', 'google', 'email'], true)) {
- $store['accounts'][$i]['loginType'] = $lt;
- }
- }
- if (array_key_exists('providerUserId', $body)) {
- $store['accounts'][$i]['providerUserId'] = trim((string)$body['providerUserId']);
- }
- if (array_key_exists('notes', $body)) {
- $store['accounts'][$i]['notes'] = trim((string)$body['notes']);
- }
- if (array_key_exists('blocked', $body)) {
- $store['accounts'][$i]['blocked'] = !empty($body['blocked']);
- }
- if (array_key_exists('coins', $body)) {
- $store['accounts'][$i]['coins'] = max(0, (int)$body['coins']);
- }
- if (array_key_exists('score', $body)) {
- $store['accounts'][$i]['score'] = max(0, (int)$body['score']);
- }
- if (array_key_exists('coinsDelta', $body)) {
- $cur = max(0, (int)($store['accounts'][$i]['coins'] ?? 0));
- $store['accounts'][$i]['coins'] = max(0, $cur + (int)$body['coinsDelta']);
- }
- $store['accounts'][$i]['updatedAt'] = gmdate('c');
- break;
- }
- if (!$found) {
- json_response(['ok' => false, 'error' => 'ไม่พบบัญชี'], 404);
- }
- if (!write_store($store)) {
- json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
- }
- json_response(['ok' => true]);
-}
-
-if ($method === 'DELETE') {
- $id = trim((string)($_GET['id'] ?? ''));
- if ($id === '') {
- json_response(['ok' => false, 'error' => 'ระบุ id'], 400);
- }
- $store = read_store();
- $store['accounts'] = array_values(array_filter(
- $store['accounts'] ?? [],
- static fn($a) => ($a['id'] ?? '') !== $id
- ));
- if (!write_store($store)) {
- json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
- }
- json_response(['ok' => true]);
-}
-
-json_response(['ok' => false, 'error' => 'Method not allowed'], 405);
+ true, 'accounts' => $list]);
+}
+
+if ($method === 'POST') {
+ $body = require_json_body();
+ $store = read_store();
+ $coins = isset($body['coins']) ? (int)$body['coins'] : 0;
+ $coins = max(0, $coins);
+ $acc = [
+ 'id' => new_id(),
+ 'email' => trim((string)($body['email'] ?? '')),
+ 'displayName' => trim((string)($body['displayName'] ?? '')),
+ 'loginType' => in_array($body['loginType'] ?? '', ['guest', 'facebook', 'google', 'email'], true)
+ ? $body['loginType'] : 'guest',
+ 'providerUserId' => trim((string)($body['providerUserId'] ?? '')),
+ 'notes' => trim((string)($body['notes'] ?? '')),
+ 'blocked' => !empty($body['blocked']),
+ 'coins' => $coins,
+ 'createdAt' => gmdate('c'),
+ 'updatedAt' => gmdate('c'),
+ ];
+ $store['accounts'][] = $acc;
+ if (!write_store($store)) {
+ json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
+ }
+ json_response(['ok' => true, 'account' => $acc]);
+}
+
+if ($method === 'PATCH') {
+ $body = require_json_body();
+ $id = trim((string)($body['id'] ?? ''));
+ if ($id === '') {
+ json_response(['ok' => false, 'error' => 'ระบุ id'], 400);
+ }
+ $store = read_store();
+ $found = false;
+ foreach ($store['accounts'] ?? [] as $i => $a) {
+ if (($a['id'] ?? '') !== $id) {
+ continue;
+ }
+ $found = true;
+ if (array_key_exists('email', $body)) {
+ $store['accounts'][$i]['email'] = trim((string)$body['email']);
+ }
+ if (array_key_exists('displayName', $body)) {
+ $store['accounts'][$i]['displayName'] = trim((string)$body['displayName']);
+ }
+ if (array_key_exists('loginType', $body)) {
+ $lt = $body['loginType'];
+ if (in_array($lt, ['guest', 'facebook', 'google', 'email'], true)) {
+ $store['accounts'][$i]['loginType'] = $lt;
+ }
+ }
+ if (array_key_exists('providerUserId', $body)) {
+ $store['accounts'][$i]['providerUserId'] = trim((string)$body['providerUserId']);
+ }
+ if (array_key_exists('notes', $body)) {
+ $store['accounts'][$i]['notes'] = trim((string)$body['notes']);
+ }
+ if (array_key_exists('blocked', $body)) {
+ $store['accounts'][$i]['blocked'] = !empty($body['blocked']);
+ }
+ if (array_key_exists('coins', $body)) {
+ $store['accounts'][$i]['coins'] = max(0, (int)$body['coins']);
+ }
+ if (array_key_exists('score', $body)) {
+ $store['accounts'][$i]['score'] = max(0, (int)$body['score']);
+ }
+ if (array_key_exists('coinsDelta', $body)) {
+ $cur = max(0, (int)($store['accounts'][$i]['coins'] ?? 0));
+ $store['accounts'][$i]['coins'] = max(0, $cur + (int)$body['coinsDelta']);
+ }
+ $store['accounts'][$i]['updatedAt'] = gmdate('c');
+ break;
+ }
+ if (!$found) {
+ json_response(['ok' => false, 'error' => 'ไม่พบบัญชี'], 404);
+ }
+ if (!write_store($store)) {
+ json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
+ }
+ json_response(['ok' => true]);
+}
+
+if ($method === 'DELETE') {
+ $id = trim((string)($_GET['id'] ?? ''));
+ if ($id === '') {
+ json_response(['ok' => false, 'error' => 'ระบุ id'], 400);
+ }
+ $store = read_store();
+ $store['accounts'] = array_values(array_filter(
+ $store['accounts'] ?? [],
+ static fn($a) => ($a['id'] ?? '') !== $id
+ ));
+ if (!write_store($store)) {
+ json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
+ }
+ json_response(['ok' => true]);
+}
+
+json_response(['ok' => false, 'error' => 'Method not allowed'], 405);
diff --git a/www/html/Admin/api/achievements.php b/www/html/Admin/api/achievements.php
index f95df4f..c274970 100644
--- a/www/html/Admin/api/achievements.php
+++ b/www/html/Admin/api/achievements.php
@@ -1,382 +1,397 @@
- accounts[].achievements { id: count }
- *
- * Public (ไม่ต้องล็อกอิน):
- * GET ?action=state&playerKey=KEY -> { ok, catalog:[...], progress:{id:count} }
- * GET ?action=catalog -> { ok, catalog:[...] }
- *
- * Server-only (มี secret game-award-secret.txt) — สำหรับ auto-track ภายหลัง:
- * POST {action:'progress', secret, playerKey, id, inc?, set?}
- *
- * Admin (ต้องล็อกอิน session):
- * POST {action:'saveCatalog', catalog:[...]}
- * GET ?action=players -> รายชื่อผู้เล่น + จำนวนที่ปลดล็อก
- * GET ?action=player&playerKey=KEY -> progress ของผู้เล่นคนเดียว
- * POST {action:'setProgress', playerKey, id, value}
- * POST {action:'unlock', playerKey, id} -> set = target
- * POST {action:'resetPlayer', playerKey} -> ล้าง progress ทั้งหมด
- */
-require __DIR__ . '/_common.php';
-
-date_default_timezone_set('Asia/Bangkok');
-
-define('ACHV_CATALOG_FILE', ADMIN_PRIVATE_DIR . '/achievements.json');
-
-function achv_default_catalog(): array
-{
- return [
- ['id' => 'a1_first_deduction', 'g' => 1, 'title' => 'First Deduction', 'desc' => 'โหวตถูกตัวคนร้ายเป็นครั้งแรก', 'target' => 1, 'enabled' => true],
- ['id' => 'a2_sharp_eye', 'g' => 1, 'title' => 'Sharp Eye', 'desc' => 'สะสมหลักฐานระดับมีน้ำหนัก (Silver) ครบ 10 ใบ', 'target' => 10, 'enabled' => true],
- ['id' => 'a3_mind_architect', 'g' => 1, 'title' => 'Mind Architect', 'desc' => 'สะสมหลักฐานครบทุกระดับ (ทั่วไป, มีน้ำหนัก, ชี้ชัด) ใน 1 คดี', 'target' => 1, 'enabled' => true],
- ['id' => 'a4_logic_over_luck', 'g' => 1, 'title' => 'Logic Over Luck', 'desc' => 'โหวตถูกโดยไม่พึ่งหลักฐานชี้ชัด (Legendary) เลย 3 ครั้ง', 'target' => 3, 'enabled' => true],
- ['id' => 'a5_truth_hunter', 'g' => 1, 'title' => 'Truth Hunter', 'desc' => 'จับคนร้ายถูกตัวสะสมครบ 20 คดี', 'target' => 20, 'enabled' => true],
- ['id' => 'a6_unbreakable_logic', 'g' => 1, 'title' => 'Unbreakable Logic', 'desc' => 'โหวตถูกตัวติดกัน 5 คดีรวด', 'target' => 5, 'enabled' => true],
-
- ['id' => 'b1_evidence_collector', 'g' => 2, 'title' => 'Evidence Collector', 'desc' => 'สะสมหลักฐานระดับทั่วไป (Common) ครบ 20 ใบ', 'target' => 20, 'enabled' => true],
- ['id' => 'b2_relentless_investigator', 'g' => 2, 'title' => 'Relentless Investigator', 'desc' => 'เล่น Mini Game ครบทุกรอบ ใน 1 คดี', 'target' => 1, 'enabled' => true],
- ['id' => 'b3_hidden_fragment', 'g' => 2, 'title' => 'Hidden Fragment', 'desc' => 'ค้นพบหลักฐานระดับชี้ชัด (Legendary/Gold) เป็นครั้งแรก', 'target' => 1, 'enabled' => true],
- ['id' => 'b4_data_miner', 'g' => 2, 'title' => 'Data Miner', 'desc' => 'สะสมการ์ดหลักฐานรวมครบ 100 ใบ', 'target' => 100, 'enabled' => true],
- ['id' => 'b5_deep_scanner', 'g' => 2, 'title' => 'Deep Scanner', 'desc' => 'เก็บไอเทมช่วยเหลือ (ตำรวจ/ทนาย) สะสมครบ 10 ครั้ง', 'target' => 10, 'enabled' => true],
-
- ['id' => 'c1_early_accusation', 'g' => 3, 'title' => 'Early Accusation', 'desc' => 'ชี้ตัวคนร้ายก่อนที่จะเปิดหลักฐานครบ', 'target' => 1, 'enabled' => true],
- ['id' => 'c2_high_stakes', 'g' => 3, 'title' => 'High Stakes', 'desc' => 'ชี้ตัวคนร้ายถูกโดยมีหลักฐานในมือไม่เกิน 3 ใบ', 'target' => 1, 'enabled' => true],
- ['id' => 'c3_quick_draw', 'g' => 3, 'title' => 'Quick Draw', 'desc' => 'ชี้ตัวคนร้ายเร็วที่สุดในทีมสะสมครบ 10 ครั้ง', 'target' => 10, 'enabled' => true],
- ['id' => 'c4_clutch_mind', 'g' => 3, 'title' => 'Clutch Mind', 'desc' => 'โหวตถูกในช่วง 10 วินาทีสุดท้ายก่อนหมดเวลา', 'target' => 1, 'enabled' => true],
- ['id' => 'c5_lone_wolf', 'g' => 3, 'title' => 'Lone Wolf', 'desc' => 'โหวตสวนทางกับเสียงส่วนใหญ่ของทีม (คุณถูกคนเดียว)', 'target' => 1, 'enabled' => true],
-
- ['id' => 'd1_minigame_solver', 'g' => 4, 'title' => 'Minigame Solver', 'desc' => 'เอาชีวิตรอด / เล่นมินิเกมสำเร็จ 20 ครั้ง', 'target' => 20, 'enabled' => true],
- ['id' => 'd2_silent_guardian', 'g' => 4, 'title' => 'Silent Guardian', 'desc' => 'ไม่โดนโหวตใช้การ์ด Event พิเศษ เลยตลอด 5 คดี', 'target' => 5, 'enabled' => true],
- ['id' => 'd3_the_backbone', 'g' => 4, 'title' => 'The Backbone', 'desc' => 'ส่งมอบหลักฐานให้เพื่อนวิเคราะห์ครบ 30 ใบ', 'target' => 30, 'enabled' => true],
- ['id' => 'd4_flawless_diver', 'g' => 4, 'title' => 'Flawless Diver', 'desc' => 'ไม่โหวตจับผิดตัวเลยตลอด 15 คดี', 'target' => 15, 'enabled' => true],
-
- ['id' => 'e1_the_observer', 'g' => 5, 'title' => 'The Observer', 'desc' => 'เล่นจบ 15 คดีโดยไม่เคยสัมผัสหลักฐานชี้ชัด (Legendary) เลยสักครั้ง', 'target' => 15, 'enabled' => true],
- ['id' => 'e2_the_impostor', 'g' => 5, 'title' => 'The Impostor', 'desc' => 'รับบทเป็น "ตัวป่วน" ครั้งแรก', 'target' => 1, 'enabled' => true],
- ['id' => 'e3_master_of_doubt', 'g' => 5, 'title' => 'Master of Doubt', 'desc' => 'เอาชนะคดีในฐานะตัวป่วนได้สำเร็จ', 'target' => 1, 'enabled' => true],
- ['id' => 'e4_agent_of_chaos', 'g' => 5, 'title' => 'Agent of Chaos', 'desc' => 'รับบทเป็นตัวป่วนสะสมครบ 10 ครั้ง', 'target' => 10, 'enabled' => true],
- ['id' => 'e5_slippery_eel', 'g' => 5, 'title' => 'Slippery Eel', 'desc' => 'เป็นตัวป่วนแต่รอดพ้นจากการถูกจับได้ (ไม่ถูกโหวตออก) จนจบเกม 5 ครั้ง', 'target' => 5, 'enabled' => true],
- ];
-}
-
-function achv_sanitize_catalog(array $arr): array
-{
- $out = [];
- $seen = [];
- foreach ($arr as $row) {
- if (!is_array($row)) continue;
- $id = preg_replace('/[^a-zA-Z0-9_]/', '', (string) ($row['id'] ?? ''));
- if ($id === '' || isset($seen[$id])) continue;
- $seen[$id] = true;
- $g = (int) ($row['g'] ?? 1);
- if ($g < 1 || $g > 5) $g = 1;
- $title = trim((string) ($row['title'] ?? ''));
- $desc = trim((string) ($row['desc'] ?? ''));
- if (function_exists('mb_substr')) {
- $title = mb_substr($title, 0, 60);
- $desc = mb_substr($desc, 0, 200);
- }
- $target = (int) ($row['target'] ?? 1);
- if ($target < 1) $target = 1;
- if ($target > 100000) $target = 100000;
- $out[] = [
- 'id' => $id,
- 'g' => $g,
- 'title' => $title !== '' ? $title : $id,
- 'desc' => $desc,
- 'target' => $target,
- 'enabled' => !isset($row['enabled']) || !empty($row['enabled']),
- ];
- }
- return $out;
-}
-
-function achv_load_catalog(): array
-{
- if (is_file(ACHV_CATALOG_FILE)) {
- $raw = @file_get_contents(ACHV_CATALOG_FILE);
- $j = json_decode($raw ?: '[]', true);
- if (is_array($j) && $j) {
- $c = achv_sanitize_catalog($j);
- if ($c) return $c;
- }
- }
- return achv_default_catalog();
-}
-
-function achv_save_catalog(array $catalog): bool
-{
- if (!is_dir(ADMIN_PRIVATE_DIR)) {
- if (!@mkdir(ADMIN_PRIVATE_DIR, 0750, true)) return false;
- }
- $tmp = ACHV_CATALOG_FILE . '.tmp.' . bin2hex(random_bytes(4));
- $json = json_encode($catalog, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
- if ($json === false) return false;
- if (file_put_contents($tmp, $json, LOCK_EX) === false) return false;
- if (!rename($tmp, ACHV_CATALOG_FILE)) { @unlink($tmp); return false; }
- return true;
-}
-
-function achv_valid_key(string $key): bool
-{
- return (bool) preg_match('/^[a-zA-Z0-9_-]{8,128}$/', $key);
-}
-
-/* หา index บัญชี guest ตาม playerKey (สร้างใหม่ถ้าไม่มี) */
-function achv_find_or_create(array &$store, string $key): int
-{
- foreach ($store['accounts'] as $i => $a) {
- if (($a['loginType'] ?? '') === 'guest' && ($a['providerUserId'] ?? '') === $key) {
- return $i;
- }
- }
- $store['accounts'][] = [
- 'id' => new_id(),
- 'email' => '',
- 'displayName' => 'Guest',
- 'loginType' => 'guest',
- 'providerUserId' => $key,
- 'notes' => 'auto: achievements',
- 'blocked' => false,
- 'coins' => 0,
- 'achievements' => new \stdClass(),
- 'createdAt' => gmdate('c'),
- 'updatedAt' => gmdate('c'),
- ];
- return count($store['accounts']) - 1;
-}
-
-function achv_progress_of(array $account): array
-{
- $p = $account['achievements'] ?? [];
- if (!is_array($p)) return [];
- $out = [];
- foreach ($p as $k => $v) {
- $id = preg_replace('/[^a-zA-Z0-9_]/', '', (string) $k);
- if ($id === '') continue;
- $out[$id] = max(0, (int) $v);
- }
- return $out;
-}
-
-$method = $_SERVER['REQUEST_METHOD'] ?? 'GET';
-$action = (string) ($_GET['action'] ?? '');
-if ($method === 'POST') {
- $body = require_json_body();
- if (!$action) $action = (string) ($body['action'] ?? '');
-} else {
- $body = [];
-}
-
-/* ---------- Public ---------- */
-if ($action === 'catalog' && $method === 'GET') {
- json_response(['ok' => true, 'catalog' => achv_load_catalog()]);
-}
-
-if ($action === 'state' && $method === 'GET') {
- $key = trim((string) ($_GET['playerKey'] ?? ''));
- if (!achv_valid_key($key)) {
- json_response(['ok' => false, 'error' => 'playerKey ไม่ถูกต้อง'], 400);
- }
- $catalog = achv_load_catalog();
- $store = read_store();
- $progress = [];
- foreach ($store['accounts'] as $a) {
- if (($a['loginType'] ?? '') === 'guest' && ($a['providerUserId'] ?? '') === $key) {
- $progress = achv_progress_of($a);
- break;
- }
- }
- json_response(['ok' => true, 'catalog' => $catalog, 'progress' => (object) $progress]);
-}
-
-/* ---------- Server-only (secret) : auto-track ภายหลัง ---------- */
-if ($action === 'progress' && $method === 'POST') {
- $secretFile = ADMIN_PRIVATE_DIR . '/game-award-secret.txt';
- $expected = is_file($secretFile) ? trim((string) @file_get_contents($secretFile)) : '';
- $secret = (string) ($body['secret'] ?? '');
- if ($expected === '' || strlen($secret) < 16 || !hash_equals($expected, $secret)) {
- json_response(['ok' => false, 'error' => 'unauthorized'], 403);
- }
- $key = trim((string) ($body['playerKey'] ?? ''));
- $id = preg_replace('/[^a-zA-Z0-9_]/', '', (string) ($body['id'] ?? ''));
- if (!achv_valid_key($key) || $id === '') {
- json_response(['ok' => false, 'error' => 'bad params'], 400);
- }
- $catalog = achv_load_catalog();
- $target = 0;
- foreach ($catalog as $c) { if ($c['id'] === $id) { $target = (int) $c['target']; break; } }
- if ($target <= 0) json_response(['ok' => false, 'error' => 'unknown id'], 404);
-
- $store = read_store();
- $i = achv_find_or_create($store, $key);
- $cur = achv_progress_of($store['accounts'][$i]);
- if (isset($body['set'])) {
- $val = max(0, min($target, (int) $body['set']));
- } else {
- $inc = (int) ($body['inc'] ?? 1);
- $val = max(0, min($target, ($cur[$id] ?? 0) + $inc));
- }
- $cur[$id] = $val;
- $store['accounts'][$i]['achievements'] = (object) $cur;
- $store['accounts'][$i]['updatedAt'] = gmdate('c');
- if (!write_store($store)) json_response(['ok' => false, 'error' => 'save failed'], 500);
- json_response(['ok' => true, 'id' => $id, 'value' => $val, 'unlocked' => $val >= $target]);
-}
-
-/* streak — สำหรับ achievement แบบ "ติดต่อกัน" (a6/d4/e1): event 'hit' นับต่อ, 'miss' รีเซ็ต 0.
- * เก็บ current streak แยกใน accounts[].achvStreak {id:count} · achievement = best streak ที่เคยถึง (ไม่ลดลงเวลารีเซ็ต) */
-if ($action === 'streak' && $method === 'POST') {
- $secretFile = ADMIN_PRIVATE_DIR . '/game-award-secret.txt';
- $expected = is_file($secretFile) ? trim((string) @file_get_contents($secretFile)) : '';
- $secret = (string) ($body['secret'] ?? '');
- if ($expected === '' || strlen($secret) < 16 || !hash_equals($expected, $secret)) {
- json_response(['ok' => false, 'error' => 'unauthorized'], 403);
- }
- $key = trim((string) ($body['playerKey'] ?? ''));
- $id = preg_replace('/[^a-zA-Z0-9_]/', '', (string) ($body['id'] ?? ''));
- $event = (string) ($body['event'] ?? '');
- if (!achv_valid_key($key) || $id === '' || ($event !== 'hit' && $event !== 'miss')) {
- json_response(['ok' => false, 'error' => 'bad params'], 400);
- }
- $catalog = achv_load_catalog();
- $target = 0;
- foreach ($catalog as $c) { if ($c['id'] === $id) { $target = (int) $c['target']; break; } }
- if ($target <= 0) json_response(['ok' => false, 'error' => 'unknown id'], 404);
-
- $store = read_store();
- $i = achv_find_or_create($store, $key);
- $acct = $store['accounts'][$i];
- $streaks = (isset($acct['achvStreak']) && is_array($acct['achvStreak'])) ? $acct['achvStreak'] : [];
- $sc = max(0, (int) ($streaks[$id] ?? 0));
- $sc = ($event === 'hit') ? ($sc + 1) : 0;
- $streaks[$id] = $sc;
- $cur = achv_progress_of($acct);
- $best = max(0, min($target, max((int) ($cur[$id] ?? 0), $sc))); /* achievement = best ไม่ลดลง */
- $cur[$id] = $best;
- $store['accounts'][$i]['achievements'] = (object) $cur;
- $store['accounts'][$i]['achvStreak'] = (object) $streaks;
- $store['accounts'][$i]['updatedAt'] = gmdate('c');
- if (!write_store($store)) json_response(['ok' => false, 'error' => 'save failed'], 500);
- json_response(['ok' => true, 'id' => $id, 'streak' => $sc, 'value' => $best, 'unlocked' => $best >= $target]);
-}
-
-/* ---------- Admin ---------- */
-require_login();
-
-if ($action === 'saveCatalog' && $method === 'POST') {
- $catIn = (isset($body['catalog']) && is_array($body['catalog'])) ? $body['catalog'] : null;
- if ($catIn === null) json_response(['ok' => false, 'error' => 'ไม่มี catalog'], 400);
- $clean = achv_sanitize_catalog($catIn);
- if (!$clean) json_response(['ok' => false, 'error' => 'catalog ว่าง'], 400);
- if (!achv_save_catalog($clean)) {
- json_response(['ok' => false, 'error' => 'บันทึก achievements.json ไม่สำเร็จ (chown ให้ user เว็บ)'], 500);
- }
- json_response(['ok' => true, 'catalog' => $clean]);
-}
-
-if ($action === 'resetCatalog' && $method === 'POST') {
- $def = achv_default_catalog();
- if (!achv_save_catalog($def)) {
- json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
- }
- json_response(['ok' => true, 'catalog' => $def]);
-}
-
-if ($action === 'players' && $method === 'GET') {
- $catalog = achv_load_catalog();
- $byId = [];
- foreach ($catalog as $c) $byId[$c['id']] = (int) $c['target'];
- $store = read_store();
- $rows = [];
- foreach ($store['accounts'] as $a) {
- if (($a['loginType'] ?? '') !== 'guest') continue;
- $key = (string) ($a['providerUserId'] ?? '');
- if ($key === '') continue;
- $prog = achv_progress_of($a);
- $unlocked = 0;
- foreach ($prog as $id => $v) {
- if (isset($byId[$id]) && $v >= $byId[$id]) $unlocked++;
- }
- $rows[] = [
- 'playerKey' => $key,
- 'displayName' => (string) ($a['displayName'] ?? ($a['lbName'] ?? 'Guest')),
- 'coins' => max(0, (int) ($a['coins'] ?? 0)),
- 'blocked' => !empty($a['blocked']),
- 'unlocked' => $unlocked,
- 'total' => count($byId),
- 'updatedAt' => (string) ($a['updatedAt'] ?? ''),
- ];
- }
- json_response(['ok' => true, 'players' => $rows, 'total' => count($byId)]);
-}
-
-if ($action === 'player' && $method === 'GET') {
- $key = trim((string) ($_GET['playerKey'] ?? ''));
- if (!achv_valid_key($key)) json_response(['ok' => false, 'error' => 'playerKey ไม่ถูกต้อง'], 400);
- $store = read_store();
- foreach ($store['accounts'] as $a) {
- if (($a['loginType'] ?? '') === 'guest' && ($a['providerUserId'] ?? '') === $key) {
- json_response(['ok' => true, 'playerKey' => $key, 'displayName' => (string) ($a['displayName'] ?? 'Guest'), 'progress' => (object) achv_progress_of($a)]);
- }
- }
- json_response(['ok' => true, 'playerKey' => $key, 'displayName' => 'Guest', 'progress' => (object) []]);
-}
-
-if ($action === 'setProgress' && $method === 'POST') {
- $key = trim((string) ($body['playerKey'] ?? ''));
- $id = preg_replace('/[^a-zA-Z0-9_]/', '', (string) ($body['id'] ?? ''));
- if (!achv_valid_key($key) || $id === '') json_response(['ok' => false, 'error' => 'bad params'], 400);
- $catalog = achv_load_catalog();
- $target = 0;
- foreach ($catalog as $c) { if ($c['id'] === $id) { $target = (int) $c['target']; break; } }
- if ($target <= 0) json_response(['ok' => false, 'error' => 'unknown id'], 404);
- $value = max(0, min($target, (int) ($body['value'] ?? 0)));
- $store = read_store();
- $i = achv_find_or_create($store, $key);
- $cur = achv_progress_of($store['accounts'][$i]);
- $cur[$id] = $value;
- $store['accounts'][$i]['achievements'] = (object) $cur;
- $store['accounts'][$i]['updatedAt'] = gmdate('c');
- if (!write_store($store)) json_response(['ok' => false, 'error' => 'save failed'], 500);
- json_response(['ok' => true, 'id' => $id, 'value' => $value, 'unlocked' => $value >= $target]);
-}
-
-if ($action === 'unlock' && $method === 'POST') {
- $key = trim((string) ($body['playerKey'] ?? ''));
- $id = preg_replace('/[^a-zA-Z0-9_]/', '', (string) ($body['id'] ?? ''));
- if (!achv_valid_key($key) || $id === '') json_response(['ok' => false, 'error' => 'bad params'], 400);
- $catalog = achv_load_catalog();
- $target = 0;
- foreach ($catalog as $c) { if ($c['id'] === $id) { $target = (int) $c['target']; break; } }
- if ($target <= 0) json_response(['ok' => false, 'error' => 'unknown id'], 404);
- $store = read_store();
- $i = achv_find_or_create($store, $key);
- $cur = achv_progress_of($store['accounts'][$i]);
- $cur[$id] = $target;
- $store['accounts'][$i]['achievements'] = (object) $cur;
- $store['accounts'][$i]['updatedAt'] = gmdate('c');
- if (!write_store($store)) json_response(['ok' => false, 'error' => 'save failed'], 500);
- json_response(['ok' => true, 'id' => $id, 'value' => $target, 'unlocked' => true]);
-}
-
-if ($action === 'resetPlayer' && $method === 'POST') {
- $key = trim((string) ($body['playerKey'] ?? ''));
- if (!achv_valid_key($key)) json_response(['ok' => false, 'error' => 'playerKey ไม่ถูกต้อง'], 400);
- $store = read_store();
- foreach ($store['accounts'] as $idx => $a) {
- if (($a['loginType'] ?? '') === 'guest' && ($a['providerUserId'] ?? '') === $key) {
- $store['accounts'][$idx]['achievements'] = new \stdClass();
- $store['accounts'][$idx]['updatedAt'] = gmdate('c');
- if (!write_store($store)) json_response(['ok' => false, 'error' => 'save failed'], 500);
- json_response(['ok' => true]);
- }
- }
- json_response(['ok' => true]);
-}
-
-json_response(['ok' => false, 'error' => 'unknown action'], 400);
+ accounts[].achievements { id: count }
+ *
+ * Public (ไม่ต้องล็อกอิน):
+ * GET ?action=state&playerKey=KEY -> { ok, catalog:[...], progress:{id:count} }
+ * GET ?action=catalog -> { ok, catalog:[...] }
+ *
+ * Server-only (มี secret game-award-secret.txt) — สำหรับ auto-track ภายหลัง:
+ * POST {action:'progress', secret, playerKey, id, inc?, set?}
+ *
+ * Admin (ต้องล็อกอิน session):
+ * POST {action:'saveCatalog', catalog:[...]}
+ * GET ?action=players -> รายชื่อผู้เล่น + จำนวนที่ปลดล็อก
+ * GET ?action=player&playerKey=KEY -> progress ของผู้เล่นคนเดียว
+ * POST {action:'setProgress', playerKey, id, value}
+ * POST {action:'unlock', playerKey, id} -> set = target
+ * POST {action:'resetPlayer', playerKey} -> ล้าง progress ทั้งหมด
+ */
+require __DIR__ . '/_common.php';
+
+date_default_timezone_set('Asia/Bangkok');
+
+define('ACHV_CATALOG_FILE', ADMIN_PRIVATE_DIR . '/achievements.json');
+
+function achv_default_catalog(): array
+{
+ return [
+ ['id' => 'a1_first_deduction', 'g' => 1, 'title' => 'First Deduction', 'desc' => 'โหวตถูกตัวคนร้ายเป็นครั้งแรก', 'target' => 1, 'enabled' => true],
+ ['id' => 'a2_sharp_eye', 'g' => 1, 'title' => 'Sharp Eye', 'desc' => 'สะสมหลักฐานระดับมีน้ำหนัก (Silver) ครบ 10 ใบ', 'target' => 10, 'enabled' => true],
+ ['id' => 'a3_mind_architect', 'g' => 1, 'title' => 'Mind Architect', 'desc' => 'สะสมหลักฐานครบทุกระดับ (ทั่วไป, มีน้ำหนัก, ชี้ชัด) ใน 1 คดี', 'target' => 1, 'enabled' => true],
+ ['id' => 'a4_logic_over_luck', 'g' => 1, 'title' => 'Logic Over Luck', 'desc' => 'โหวตถูกโดยไม่พึ่งหลักฐานชี้ชัด (Legendary) เลย 3 ครั้ง', 'target' => 3, 'enabled' => true],
+ ['id' => 'a5_truth_hunter', 'g' => 1, 'title' => 'Truth Hunter', 'desc' => 'จับคนร้ายถูกตัวสะสมครบ 20 คดี', 'target' => 20, 'enabled' => true],
+ ['id' => 'a6_unbreakable_logic', 'g' => 1, 'title' => 'Unbreakable Logic', 'desc' => 'โหวตถูกตัวติดกัน 5 คดีรวด', 'target' => 5, 'enabled' => true],
+
+ ['id' => 'b1_evidence_collector', 'g' => 2, 'title' => 'Evidence Collector', 'desc' => 'สะสมหลักฐานระดับทั่วไป (Common) ครบ 20 ใบ', 'target' => 20, 'enabled' => true],
+ ['id' => 'b2_relentless_investigator', 'g' => 2, 'title' => 'Relentless Investigator', 'desc' => 'เล่น Mini Game ครบทุกรอบ ใน 1 คดี', 'target' => 1, 'enabled' => true],
+ ['id' => 'b3_hidden_fragment', 'g' => 2, 'title' => 'Hidden Fragment', 'desc' => 'ค้นพบหลักฐานระดับชี้ชัด (Legendary/Gold) เป็นครั้งแรก', 'target' => 1, 'enabled' => true],
+ ['id' => 'b4_data_miner', 'g' => 2, 'title' => 'Data Miner', 'desc' => 'สะสมการ์ดหลักฐานรวมครบ 100 ใบ', 'target' => 100, 'enabled' => true],
+ ['id' => 'b5_deep_scanner', 'g' => 2, 'title' => 'Deep Scanner', 'desc' => 'เก็บไอเทมช่วยเหลือ (ตำรวจ/ทนาย) สะสมครบ 10 ครั้ง', 'target' => 10, 'enabled' => true],
+
+ ['id' => 'c1_early_accusation', 'g' => 3, 'title' => 'Early Accusation', 'desc' => 'ชี้ตัวคนร้ายก่อนที่จะเปิดหลักฐานครบ', 'target' => 1, 'enabled' => true],
+ ['id' => 'c2_high_stakes', 'g' => 3, 'title' => 'High Stakes', 'desc' => 'ชี้ตัวคนร้ายถูกโดยมีหลักฐานในมือไม่เกิน 3 ใบ', 'target' => 1, 'enabled' => true],
+ ['id' => 'c3_quick_draw', 'g' => 3, 'title' => 'Quick Draw', 'desc' => 'ชี้ตัวคนร้ายเร็วที่สุดในทีมสะสมครบ 10 ครั้ง', 'target' => 10, 'enabled' => true],
+ ['id' => 'c4_clutch_mind', 'g' => 3, 'title' => 'Clutch Mind', 'desc' => 'โหวตถูกในช่วง 10 วินาทีสุดท้ายก่อนหมดเวลา', 'target' => 1, 'enabled' => true],
+ ['id' => 'c5_lone_wolf', 'g' => 3, 'title' => 'Lone Wolf', 'desc' => 'โหวตสวนทางกับเสียงส่วนใหญ่ของทีม (คุณถูกคนเดียว)', 'target' => 1, 'enabled' => true],
+
+ ['id' => 'd1_minigame_solver', 'g' => 4, 'title' => 'Minigame Solver', 'desc' => 'เอาชีวิตรอด / เล่นมินิเกมสำเร็จ 20 ครั้ง', 'target' => 20, 'enabled' => true],
+ ['id' => 'd2_silent_guardian', 'g' => 4, 'title' => 'Silent Guardian', 'desc' => 'ไม่โดนโหวตใช้การ์ด Event พิเศษ เลยตลอด 5 คดี', 'target' => 5, 'enabled' => true],
+ ['id' => 'd3_the_backbone', 'g' => 4, 'title' => 'The Backbone', 'desc' => 'ส่งมอบหลักฐานให้เพื่อนวิเคราะห์ครบ 30 ใบ', 'target' => 30, 'enabled' => true],
+ ['id' => 'd4_flawless_diver', 'g' => 4, 'title' => 'Flawless Diver', 'desc' => 'ไม่โหวตจับผิดตัวเลยตลอด 15 คดี', 'target' => 15, 'enabled' => true],
+
+ ['id' => 'e1_the_observer', 'g' => 5, 'title' => 'The Observer', 'desc' => 'เล่นจบ 15 คดีโดยไม่เคยสัมผัสหลักฐานชี้ชัด (Legendary) เลยสักครั้ง', 'target' => 15, 'enabled' => true],
+ ['id' => 'e2_the_impostor', 'g' => 5, 'title' => 'The Impostor', 'desc' => 'รับบทเป็น "ตัวป่วน" ครั้งแรก', 'target' => 1, 'enabled' => true],
+ ['id' => 'e3_master_of_doubt', 'g' => 5, 'title' => 'Master of Doubt', 'desc' => 'เอาชนะคดีในฐานะตัวป่วนได้สำเร็จ', 'target' => 1, 'enabled' => true],
+ ['id' => 'e4_agent_of_chaos', 'g' => 5, 'title' => 'Agent of Chaos', 'desc' => 'รับบทเป็นตัวป่วนสะสมครบ 10 ครั้ง', 'target' => 10, 'enabled' => true],
+ ['id' => 'e5_slippery_eel', 'g' => 5, 'title' => 'Slippery Eel', 'desc' => 'เป็นตัวป่วนแต่รอดพ้นจากการถูกจับได้ (ไม่ถูกโหวตออก) จนจบเกม 5 ครั้ง', 'target' => 5, 'enabled' => true],
+ ];
+}
+
+function achv_sanitize_catalog(array $arr): array
+{
+ $out = [];
+ $seen = [];
+ foreach ($arr as $row) {
+ if (!is_array($row)) continue;
+ $id = preg_replace('/[^a-zA-Z0-9_]/', '', (string) ($row['id'] ?? ''));
+ if ($id === '' || isset($seen[$id])) continue;
+ $seen[$id] = true;
+ $g = (int) ($row['g'] ?? 1);
+ if ($g < 1 || $g > 5) $g = 1;
+ $title = trim((string) ($row['title'] ?? ''));
+ $desc = trim((string) ($row['desc'] ?? ''));
+ if (function_exists('mb_substr')) {
+ $title = mb_substr($title, 0, 60);
+ $desc = mb_substr($desc, 0, 200);
+ }
+ $target = (int) ($row['target'] ?? 1);
+ if ($target < 1) $target = 1;
+ if ($target > 100000) $target = 100000;
+ $out[] = [
+ 'id' => $id,
+ 'g' => $g,
+ 'title' => $title !== '' ? $title : $id,
+ 'desc' => $desc,
+ 'target' => $target,
+ 'enabled' => !isset($row['enabled']) || !empty($row['enabled']),
+ ];
+ }
+ return $out;
+}
+
+function achv_load_catalog(): array
+{
+ if (is_file(ACHV_CATALOG_FILE)) {
+ $raw = @file_get_contents(ACHV_CATALOG_FILE);
+ $j = json_decode($raw ?: '[]', true);
+ if (is_array($j) && $j) {
+ $c = achv_sanitize_catalog($j);
+ if ($c) return $c;
+ }
+ }
+ return achv_default_catalog();
+}
+
+function achv_save_catalog(array $catalog): bool
+{
+ if (!is_dir(ADMIN_PRIVATE_DIR)) {
+ if (!@mkdir(ADMIN_PRIVATE_DIR, 0750, true)) return false;
+ }
+ $tmp = ACHV_CATALOG_FILE . '.tmp.' . bin2hex(random_bytes(4));
+ $json = json_encode($catalog, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
+ if ($json === false) return false;
+ if (file_put_contents($tmp, $json, LOCK_EX) === false) return false;
+ if (!rename($tmp, ACHV_CATALOG_FILE)) { @unlink($tmp); return false; }
+ return true;
+}
+
+function achv_valid_key(string $key): bool
+{
+ return (bool) preg_match('/^[a-zA-Z0-9_-]{8,128}$/', $key);
+}
+
+/* หา index บัญชี guest ตาม playerKey (สร้างใหม่ถ้าไม่มี) */
+function achv_find_or_create(array &$store, string $key): int
+{
+ foreach ($store['accounts'] as $i => $a) {
+ if (($a['loginType'] ?? '') === 'guest' && ($a['providerUserId'] ?? '') === $key) {
+ return $i;
+ }
+ }
+ $store['accounts'][] = [
+ 'id' => new_id(),
+ 'email' => '',
+ 'displayName' => 'Guest',
+ 'loginType' => 'guest',
+ 'providerUserId' => $key,
+ 'notes' => 'auto: achievements',
+ 'blocked' => false,
+ 'coins' => 0,
+ 'achievements' => new \stdClass(),
+ 'createdAt' => gmdate('c'),
+ 'updatedAt' => gmdate('c'),
+ ];
+ return count($store['accounts']) - 1;
+}
+
+function achv_progress_of(array $account): array
+{
+ $p = $account['achievements'] ?? [];
+ if (!is_array($p)) return [];
+ $out = [];
+ foreach ($p as $k => $v) {
+ $id = preg_replace('/[^a-zA-Z0-9_]/', '', (string) $k);
+ if ($id === '') continue;
+ $out[$id] = max(0, (int) $v);
+ }
+ return $out;
+}
+
+$method = $_SERVER['REQUEST_METHOD'] ?? 'GET';
+$action = (string) ($_GET['action'] ?? '');
+if ($method === 'POST') {
+ $body = require_json_body();
+ if (!$action) $action = (string) ($body['action'] ?? '');
+} else {
+ $body = [];
+}
+
+/* ---------- Public ---------- */
+if ($action === 'catalog' && $method === 'GET') {
+ json_response(['ok' => true, 'catalog' => achv_load_catalog()]);
+}
+
+if ($action === 'state' && $method === 'GET') {
+ $key = trim((string) ($_GET['playerKey'] ?? ''));
+ if (!achv_valid_key($key)) {
+ json_response(['ok' => false, 'error' => 'playerKey ไม่ถูกต้อง'], 400);
+ }
+ $catalog = achv_load_catalog();
+ $store = read_store();
+ $progress = [];
+ foreach ($store['accounts'] as $a) {
+ if (($a['loginType'] ?? '') === 'guest' && ($a['providerUserId'] ?? '') === $key) {
+ $progress = achv_progress_of($a);
+ break;
+ }
+ }
+ json_response(['ok' => true, 'catalog' => $catalog, 'progress' => (object) $progress]);
+}
+
+/* ---------- Server-only (secret) : auto-track ภายหลัง ---------- */
+if ($action === 'progress' && $method === 'POST') {
+ $secretFile = ADMIN_PRIVATE_DIR . '/game-award-secret.txt';
+ $expected = is_file($secretFile) ? trim((string) @file_get_contents($secretFile)) : '';
+ $secret = (string) ($body['secret'] ?? '');
+ if ($expected === '' || strlen($secret) < 16 || !hash_equals($expected, $secret)) {
+ json_response(['ok' => false, 'error' => 'unauthorized'], 403);
+ }
+ $key = trim((string) ($body['playerKey'] ?? ''));
+ $id = preg_replace('/[^a-zA-Z0-9_]/', '', (string) ($body['id'] ?? ''));
+ if (!achv_valid_key($key) || $id === '') {
+ json_response(['ok' => false, 'error' => 'bad params'], 400);
+ }
+ $catalog = achv_load_catalog();
+ $target = 0;
+ foreach ($catalog as $c) { if ($c['id'] === $id) { $target = (int) $c['target']; break; } }
+ if ($target <= 0) json_response(['ok' => false, 'error' => 'unknown id'], 404);
+
+ $store = read_store();
+ $i = achv_find_or_create($store, $key);
+ $cur = achv_progress_of($store['accounts'][$i]);
+ if (isset($body['set'])) {
+ $val = max(0, min($target, (int) $body['set']));
+ } else {
+ $inc = (int) ($body['inc'] ?? 1);
+ $val = max(0, min($target, ($cur[$id] ?? 0) + $inc));
+ }
+ $cur[$id] = $val;
+ $store['accounts'][$i]['achievements'] = (object) $cur;
+ $store['accounts'][$i]['updatedAt'] = gmdate('c');
+ if (!write_store($store)) json_response(['ok' => false, 'error' => 'save failed'], 500);
+ json_response(['ok' => true, 'id' => $id, 'value' => $val, 'unlocked' => $val >= $target]);
+}
+
+/* ---------- Server-only (secret) : streak [2026-07-27] ----------
+ * ก่อนหน้านี้ "ไม่มี branch นี้เลย" → POST action=streak จาก Game/server.js:2264 ตกไปถึง
+ * require_login() ด้านล่าง แล้วได้ 401 Unauthorized ทุกครั้ง = achievement แบบ streak
+ * (a6_unbreakable_logic / d4_flawless_diver / e1_the_observer) ไม่เคยถูกบันทึกเลย
+ *
+ * สัญญาที่ server.js คาดไว้: {playerKey, id, event:'hit'|'miss'}
+ * hit → streak ปัจจุบัน +1
+ * miss → streak ปัจจุบัน = 0
+ * ค่า achievement ที่เก็บ = **สถิติสูงสุด (best) ไม่ลดลง** ตามคอมเมนต์ที่ server.js เขียนไว้
+ * streak ที่กำลังนับอยู่เก็บแยกใน achievementStreaks เพื่อไม่ให้ทับ progress ปกติ
+ */
+if ($action === 'streak' && $method === 'POST') {
+ $secretFile = ADMIN_PRIVATE_DIR . '/game-award-secret.txt';
+ $expected = is_file($secretFile) ? trim((string) @file_get_contents($secretFile)) : '';
+ $secret = (string) ($body['secret'] ?? '');
+ if ($expected === '' || strlen($secret) < 16 || !hash_equals($expected, $secret)) {
+ json_response(['ok' => false, 'error' => 'unauthorized'], 403);
+ }
+ $key = trim((string) ($body['playerKey'] ?? ''));
+ $id = preg_replace('/[^a-zA-Z0-9_]/', '', (string) ($body['id'] ?? ''));
+ $event = (string) ($body['event'] ?? '');
+ if (!achv_valid_key($key) || $id === '' || ($event !== 'hit' && $event !== 'miss')) {
+ json_response(['ok' => false, 'error' => 'bad params'], 400);
+ }
+ $catalog = achv_load_catalog();
+ $target = 0;
+ foreach ($catalog as $c) { if ($c['id'] === $id) { $target = (int) $c['target']; break; } }
+ if ($target <= 0) json_response(['ok' => false, 'error' => 'unknown id'], 404);
+
+ $store = read_store();
+ $i = achv_find_or_create($store, $key);
+ $runs = [];
+ if (isset($store['accounts'][$i]['achievementStreaks'])) {
+ $runs = (array) $store['accounts'][$i]['achievementStreaks'];
+ }
+ $run = max(0, (int) ($runs[$id] ?? 0));
+ $run = ($event === 'miss') ? 0 : $run + 1;
+ $runs[$id] = $run;
+
+ $cur = achv_progress_of($store['accounts'][$i]);
+ /* best ไม่ลดลง — miss ไม่ทำให้ achievement ที่เคยได้หายไป */
+ $best = max((int) ($cur[$id] ?? 0), min($target, $run));
+ $cur[$id] = $best;
+
+ $store['accounts'][$i]['achievementStreaks'] = (object) $runs;
+ $store['accounts'][$i]['achievements'] = (object) $cur;
+ $store['accounts'][$i]['updatedAt'] = gmdate('c');
+ if (!write_store($store)) json_response(['ok' => false, 'error' => 'save failed'], 500);
+ json_response(['ok' => true, 'id' => $id, 'event' => $event, 'streak' => $run, 'value' => $best, 'unlocked' => $best >= $target]);
+}
+
+/* ---------- Admin ---------- */
+require_login();
+require_tab('achievements');
+
+if ($action === 'saveCatalog' && $method === 'POST') {
+ $catIn = (isset($body['catalog']) && is_array($body['catalog'])) ? $body['catalog'] : null;
+ if ($catIn === null) json_response(['ok' => false, 'error' => 'ไม่มี catalog'], 400);
+ $clean = achv_sanitize_catalog($catIn);
+ if (!$clean) json_response(['ok' => false, 'error' => 'catalog ว่าง'], 400);
+ if (!achv_save_catalog($clean)) {
+ json_response(['ok' => false, 'error' => 'บันทึก achievements.json ไม่สำเร็จ (chown ให้ user เว็บ)'], 500);
+ }
+ json_response(['ok' => true, 'catalog' => $clean]);
+}
+
+if ($action === 'resetCatalog' && $method === 'POST') {
+ $def = achv_default_catalog();
+ if (!achv_save_catalog($def)) {
+ json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
+ }
+ json_response(['ok' => true, 'catalog' => $def]);
+}
+
+if ($action === 'players' && $method === 'GET') {
+ $catalog = achv_load_catalog();
+ $byId = [];
+ foreach ($catalog as $c) $byId[$c['id']] = (int) $c['target'];
+ $store = read_store();
+ $rows = [];
+ foreach ($store['accounts'] as $a) {
+ if (($a['loginType'] ?? '') !== 'guest') continue;
+ $key = (string) ($a['providerUserId'] ?? '');
+ if ($key === '') continue;
+ $prog = achv_progress_of($a);
+ $unlocked = 0;
+ foreach ($prog as $id => $v) {
+ if (isset($byId[$id]) && $v >= $byId[$id]) $unlocked++;
+ }
+ $rows[] = [
+ 'playerKey' => $key,
+ 'displayName' => (string) ($a['displayName'] ?? ($a['lbName'] ?? 'Guest')),
+ 'coins' => max(0, (int) ($a['coins'] ?? 0)),
+ 'blocked' => !empty($a['blocked']),
+ 'unlocked' => $unlocked,
+ 'total' => count($byId),
+ 'updatedAt' => (string) ($a['updatedAt'] ?? ''),
+ ];
+ }
+ json_response(['ok' => true, 'players' => $rows, 'total' => count($byId)]);
+}
+
+if ($action === 'player' && $method === 'GET') {
+ $key = trim((string) ($_GET['playerKey'] ?? ''));
+ if (!achv_valid_key($key)) json_response(['ok' => false, 'error' => 'playerKey ไม่ถูกต้อง'], 400);
+ $store = read_store();
+ foreach ($store['accounts'] as $a) {
+ if (($a['loginType'] ?? '') === 'guest' && ($a['providerUserId'] ?? '') === $key) {
+ json_response(['ok' => true, 'playerKey' => $key, 'displayName' => (string) ($a['displayName'] ?? 'Guest'), 'progress' => (object) achv_progress_of($a)]);
+ }
+ }
+ json_response(['ok' => true, 'playerKey' => $key, 'displayName' => 'Guest', 'progress' => (object) []]);
+}
+
+if ($action === 'setProgress' && $method === 'POST') {
+ $key = trim((string) ($body['playerKey'] ?? ''));
+ $id = preg_replace('/[^a-zA-Z0-9_]/', '', (string) ($body['id'] ?? ''));
+ if (!achv_valid_key($key) || $id === '') json_response(['ok' => false, 'error' => 'bad params'], 400);
+ $catalog = achv_load_catalog();
+ $target = 0;
+ foreach ($catalog as $c) { if ($c['id'] === $id) { $target = (int) $c['target']; break; } }
+ if ($target <= 0) json_response(['ok' => false, 'error' => 'unknown id'], 404);
+ $value = max(0, min($target, (int) ($body['value'] ?? 0)));
+ $store = read_store();
+ $i = achv_find_or_create($store, $key);
+ $cur = achv_progress_of($store['accounts'][$i]);
+ $cur[$id] = $value;
+ $store['accounts'][$i]['achievements'] = (object) $cur;
+ $store['accounts'][$i]['updatedAt'] = gmdate('c');
+ if (!write_store($store)) json_response(['ok' => false, 'error' => 'save failed'], 500);
+ json_response(['ok' => true, 'id' => $id, 'value' => $value, 'unlocked' => $value >= $target]);
+}
+
+if ($action === 'unlock' && $method === 'POST') {
+ $key = trim((string) ($body['playerKey'] ?? ''));
+ $id = preg_replace('/[^a-zA-Z0-9_]/', '', (string) ($body['id'] ?? ''));
+ if (!achv_valid_key($key) || $id === '') json_response(['ok' => false, 'error' => 'bad params'], 400);
+ $catalog = achv_load_catalog();
+ $target = 0;
+ foreach ($catalog as $c) { if ($c['id'] === $id) { $target = (int) $c['target']; break; } }
+ if ($target <= 0) json_response(['ok' => false, 'error' => 'unknown id'], 404);
+ $store = read_store();
+ $i = achv_find_or_create($store, $key);
+ $cur = achv_progress_of($store['accounts'][$i]);
+ $cur[$id] = $target;
+ $store['accounts'][$i]['achievements'] = (object) $cur;
+ $store['accounts'][$i]['updatedAt'] = gmdate('c');
+ if (!write_store($store)) json_response(['ok' => false, 'error' => 'save failed'], 500);
+ json_response(['ok' => true, 'id' => $id, 'value' => $target, 'unlocked' => true]);
+}
+
+if ($action === 'resetPlayer' && $method === 'POST') {
+ $key = trim((string) ($body['playerKey'] ?? ''));
+ if (!achv_valid_key($key)) json_response(['ok' => false, 'error' => 'playerKey ไม่ถูกต้อง'], 400);
+ $store = read_store();
+ foreach ($store['accounts'] as $idx => $a) {
+ if (($a['loginType'] ?? '') === 'guest' && ($a['providerUserId'] ?? '') === $key) {
+ $store['accounts'][$idx]['achievements'] = new \stdClass();
+ $store['accounts'][$idx]['updatedAt'] = gmdate('c');
+ if (!write_store($store)) json_response(['ok' => false, 'error' => 'save failed'], 500);
+ json_response(['ok' => true]);
+ }
+ }
+ json_response(['ok' => true]);
+}
+
+json_response(['ok' => false, 'error' => 'unknown action'], 400);
diff --git a/www/html/Admin/api/admins.php b/www/html/Admin/api/admins.php
index 440e859..4b7b3d8 100644
--- a/www/html/Admin/api/admins.php
+++ b/www/html/Admin/api/admins.php
@@ -1,127 +1,141 @@
- false, 'error' => 'Unauthorized'], 401);
-}
-
-$method = $_SERVER['REQUEST_METHOD'];
-
-if ($method === 'GET') {
- $list = array_map('strip_admin', read_store()['admins'] ?? []);
- json_response(['ok' => true, 'admins' => $list]);
-}
-
-if (!is_super($me)) {
- json_response(['ok' => false, 'error' => 'เฉพาะ super admin จัดการบัญชีแอดมินได้'], 403);
-}
-
-if ($method === 'POST') {
- $body = require_json_body();
- $username = trim((string)($body['username'] ?? ''));
- $password = (string)($body['password'] ?? '');
- $role = ($body['role'] ?? 'admin') === 'super' ? 'super' : 'admin';
- if ($role === 'super' && !is_super($me)) {
- json_response(['ok' => false, 'error' => 'สร้าง super admin ได้เฉพาะ super เท่านั้น'], 403);
- }
- if ($username === '' || strlen($username) < 2) {
- json_response(['ok' => false, 'error' => 'ชื่อผู้ใช้สั้นเกินไป'], 400);
- }
- if (strlen($password) < 8) {
- json_response(['ok' => false, 'error' => 'รหัสผ่านอย่างน้อย 8 ตัวอักษร'], 400);
- }
- $store = read_store();
- foreach ($store['admins'] ?? [] as $x) {
- if (strcasecmp($x['username'] ?? '', $username) === 0) {
- json_response(['ok' => false, 'error' => 'ชื่อผู้ใช้ซ้ำ'], 400);
- }
- }
- $store['admins'][] = [
- 'id' => new_id(),
- 'username' => $username,
- 'passwordHash' => password_hash($password, PASSWORD_DEFAULT),
- 'role' => $role,
- 'createdAt' => gmdate('c'),
- ];
- if (!write_store($store)) {
- json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
- }
- json_response(['ok' => true]);
-}
-
-if ($method === 'PATCH') {
- $body = require_json_body();
- $targetId = trim((string)($body['id'] ?? ''));
- $newPassword = (string)($body['newPassword'] ?? '');
- if ($targetId === '') {
- json_response(['ok' => false, 'error' => 'ระบุ id แอดมิน'], 400);
- }
- if (strlen($newPassword) < 8) {
- json_response(['ok' => false, 'error' => 'รหัสใหม่อย่างน้อย 8 ตัวอักษร'], 400);
- }
- if ($targetId === $me['id']) {
- json_response(['ok' => false, 'error' => 'เปลี่ยนรหัสตัวเองให้ใช้เมนู "เปลี่ยนรหัสผ่านของคุณ"'], 400);
- }
- $store = read_store();
- $updated = false;
- foreach ($store['admins'] ?? [] as $i => $a) {
- if (($a['id'] ?? '') !== $targetId) {
- continue;
- }
- $store['admins'][$i]['passwordHash'] = password_hash($newPassword, PASSWORD_DEFAULT);
- $updated = true;
- break;
- }
- if (!$updated) {
- json_response(['ok' => false, 'error' => 'ไม่พบแอดมิน'], 404);
- }
- if (!write_store($store)) {
- json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
- }
- json_response(['ok' => true, 'message' => 'ตั้งรหัสใหม่แล้ว']);
-}
-
-if ($method === 'DELETE') {
- $id = trim((string)($_GET['id'] ?? ''));
- if ($id === '') {
- json_response(['ok' => false, 'error' => 'ระบุ id'], 400);
- }
- if ($id === $me['id']) {
- json_response(['ok' => false, 'error' => 'ลบบัญชีตัวเองไม่ได้'], 400);
- }
- $store = read_store();
- $admins = $store['admins'] ?? [];
- $next = [];
- $removed = false;
- foreach ($admins as $a) {
- if (($a['id'] ?? '') === $id) {
- $removed = true;
- continue;
- }
- $next[] = $a;
- }
- if (!$removed) {
- json_response(['ok' => false, 'error' => 'ไม่พบผู้ใช้'], 404);
- }
- $supers = 0;
- foreach ($next as $a) {
- if (($a['role'] ?? '') === 'super') {
- $supers++;
- }
- }
- if ($supers < 1) {
- json_response(['ok' => false, 'error' => 'ต้องมี super admin อย่างน้อย 1 คน'], 400);
- }
- $store['admins'] = $next;
- if (!write_store($store)) {
- json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
- }
- json_response(['ok' => true]);
-}
-
-json_response(['ok' => false, 'error' => 'Method not allowed'], 405);
+ false, 'error' => 'Unauthorized'], 401);
+}
+
+$method = $_SERVER['REQUEST_METHOD'];
+
+if ($method === 'GET') {
+ $list = array_map('strip_admin', read_store()['admins'] ?? []);
+ json_response(['ok' => true, 'admins' => $list]);
+}
+
+if (!is_super($me)) {
+ json_response(['ok' => false, 'error' => 'เฉพาะ super admin จัดการบัญชีแอดมินได้'], 403);
+}
+
+if ($method === 'POST') {
+ $body = require_json_body();
+ $username = trim((string)($body['username'] ?? ''));
+ $password = (string)($body['password'] ?? '');
+ $role = ($body['role'] ?? 'admin') === 'super' ? 'super' : 'admin';
+ if ($role === 'super' && !is_super($me)) {
+ json_response(['ok' => false, 'error' => 'สร้าง super admin ได้เฉพาะ super เท่านั้น'], 403);
+ }
+ if ($username === '' || strlen($username) < 2) {
+ json_response(['ok' => false, 'error' => 'ชื่อผู้ใช้สั้นเกินไป'], 400);
+ }
+ if (strlen($password) < 8) {
+ json_response(['ok' => false, 'error' => 'รหัสผ่านอย่างน้อย 8 ตัวอักษร'], 400);
+ }
+ $store = read_store();
+ foreach ($store['admins'] ?? [] as $x) {
+ if (strcasecmp($x['username'] ?? '', $username) === 0) {
+ json_response(['ok' => false, 'error' => 'ชื่อผู้ใช้ซ้ำ'], 400);
+ }
+ }
+ /* สิทธิ์ระดับหมวด — super ไม่ต้องเก็บ (ได้ทุกหมวดเสมอ) · admin ที่ส่ง tabs ว่างมา = ทุกหมวด (พฤติกรรมเดิม) */
+ $store['admins'][] = [
+ 'id' => new_id(),
+ 'username' => $username,
+ 'passwordHash' => password_hash($password, PASSWORD_DEFAULT),
+ 'role' => $role,
+ 'tabs' => $role === 'super' ? [] : sanitize_tabs($body['tabs'] ?? []),
+ 'createdAt' => gmdate('c'),
+ ];
+ if (!write_store($store)) {
+ json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
+ }
+ json_response(['ok' => true]);
+}
+
+if ($method === 'PATCH') {
+ $body = require_json_body();
+ $targetId = trim((string)($body['id'] ?? ''));
+ $newPassword = (string)($body['newPassword'] ?? '');
+ /* PATCH ทำได้ 2 อย่าง: ตั้งรหัสใหม่ และ/หรือ แก้สิทธิ์หมวด — ต้องส่งมาอย่างน้อย 1 อย่าง */
+ $wantTabs = array_key_exists('tabs', $body);
+ if ($targetId === '') {
+ json_response(['ok' => false, 'error' => 'ระบุ id แอดมิน'], 400);
+ }
+ if ($newPassword === '' && !$wantTabs) {
+ json_response(['ok' => false, 'error' => 'ไม่มีอะไรให้แก้ (ส่ง newPassword หรือ tabs)'], 400);
+ }
+ if ($newPassword !== '' && strlen($newPassword) < 8) {
+ json_response(['ok' => false, 'error' => 'รหัสใหม่อย่างน้อย 8 ตัวอักษร'], 400);
+ }
+ if ($newPassword !== '' && $targetId === $me['id']) {
+ json_response(['ok' => false, 'error' => 'เปลี่ยนรหัสตัวเองให้ใช้เมนู "เปลี่ยนรหัสผ่านของคุณ"'], 400);
+ }
+ $store = read_store();
+ $updated = false;
+ foreach ($store['admins'] ?? [] as $i => $a) {
+ if (($a['id'] ?? '') !== $targetId) {
+ continue;
+ }
+ if ($newPassword !== '') {
+ $store['admins'][$i]['passwordHash'] = password_hash($newPassword, PASSWORD_DEFAULT);
+ }
+ if ($wantTabs) {
+ /* super ได้ทุกหมวดอยู่แล้ว — เก็บ tabs ว่างไว้ กันเข้าใจผิดว่าถูกจำกัด */
+ $store['admins'][$i]['tabs'] = (($a['role'] ?? '') === 'super') ? [] : sanitize_tabs($body['tabs']);
+ }
+ $updated = true;
+ break;
+ }
+ if (!$updated) {
+ json_response(['ok' => false, 'error' => 'ไม่พบแอดมิน'], 404);
+ }
+ if (!write_store($store)) {
+ json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
+ }
+ json_response(['ok' => true, 'message' => $newPassword !== '' ? 'ตั้งรหัสใหม่แล้ว' : 'บันทึกสิทธิ์หมวดแล้ว']);
+}
+
+if ($method === 'DELETE') {
+ $id = trim((string)($_GET['id'] ?? ''));
+ if ($id === '') {
+ json_response(['ok' => false, 'error' => 'ระบุ id'], 400);
+ }
+ if ($id === $me['id']) {
+ json_response(['ok' => false, 'error' => 'ลบบัญชีตัวเองไม่ได้'], 400);
+ }
+ $store = read_store();
+ $admins = $store['admins'] ?? [];
+ $next = [];
+ $removed = false;
+ foreach ($admins as $a) {
+ if (($a['id'] ?? '') === $id) {
+ $removed = true;
+ continue;
+ }
+ $next[] = $a;
+ }
+ if (!$removed) {
+ json_response(['ok' => false, 'error' => 'ไม่พบผู้ใช้'], 404);
+ }
+ $supers = 0;
+ foreach ($next as $a) {
+ if (($a['role'] ?? '') === 'super') {
+ $supers++;
+ }
+ }
+ if ($supers < 1) {
+ json_response(['ok' => false, 'error' => 'ต้องมี super admin อย่างน้อย 1 คน'], 400);
+ }
+ $store['admins'] = $next;
+ if (!write_store($store)) {
+ json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
+ }
+ json_response(['ok' => true]);
+}
+
+json_response(['ok' => false, 'error' => 'Method not allowed'], 405);
diff --git a/www/html/Admin/api/ai-settings.php b/www/html/Admin/api/ai-settings.php
new file mode 100644
index 0000000..42fd4b4
--- /dev/null
+++ b/www/html/Admin/api/ai-settings.php
@@ -0,0 +1,121 @@
+ { model, models[], hasKey, intent, rag_enabled, rag_context } (ไม่ส่ง api key ดิบ)
+ * PUT -> { openai_api_key?, model?, intent?, rag_enabled?, rag_context? }
+ */
+require __DIR__ . '/_common.php';
+
+require_login();
+require_tab('ai-admin');
+
+define('AI_SETTINGS_FILE', dirname(__DIR__, 2) . '/Game/data/ai-settings.json');
+
+function ai_models(): array
+{
+ return [
+ 'gpt-5.2', 'gpt-5.2-pro', 'gpt-5.1', 'gpt-5', 'gpt-5-pro', 'gpt-5-mini', 'gpt-5-nano',
+ 'gpt-4.1', 'gpt-4.1-mini', 'gpt-4.1-nano',
+ 'o3', 'o3-mini', 'o3-pro', 'o4-mini', 'o3-deep-research', 'o4-mini-deep-research',
+ 'o1', 'o1-mini', 'o1-pro',
+ 'gpt-4o', 'gpt-4o-mini', 'gpt-4-turbo', 'gpt-4',
+ 'gpt-3.5-turbo',
+ ];
+}
+
+function ai_defaults(): array
+{
+ return [
+ 'openai_api_key' => '',
+ 'model' => 'gpt-4o-mini',
+ 'intent' => '',
+ 'rag_enabled' => false,
+ 'rag_context' => '',
+ ];
+}
+
+function ai_read(): array
+{
+ $base = ai_defaults();
+ if (!is_file(AI_SETTINGS_FILE)) {
+ return $base;
+ }
+ $raw = @file_get_contents(AI_SETTINGS_FILE);
+ $j = json_decode($raw ?: '{}', true);
+ if (!is_array($j)) {
+ return $base;
+ }
+ return array_replace($base, array_intersect_key($j, $base));
+}
+
+function ai_write(array $s): bool
+{
+ $dir = dirname(AI_SETTINGS_FILE);
+ if (!is_dir($dir) && !@mkdir($dir, 0755, true)) {
+ return false;
+ }
+ $json = json_encode($s, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
+ if ($json === false) {
+ return false;
+ }
+ $tmp = AI_SETTINGS_FILE . '.tmp.' . bin2hex(random_bytes(4));
+ if (file_put_contents($tmp, $json, LOCK_EX) === false) {
+ return false;
+ }
+ if (!rename($tmp, AI_SETTINGS_FILE)) {
+ @unlink($tmp);
+ return false;
+ }
+ return true;
+}
+
+function ai_public_payload(array $s): array
+{
+ $key = trim((string) ($s['openai_api_key'] ?? ''));
+ return [
+ 'ok' => true,
+ 'model' => (string) ($s['model'] ?? 'gpt-4o-mini') ?: 'gpt-4o-mini',
+ 'models' => ai_models(),
+ 'hasKey' => $key !== '',
+ 'intent' => (string) ($s['intent'] ?? ''),
+ 'rag_enabled' => !empty($s['rag_enabled']),
+ 'rag_context' => (string) ($s['rag_context'] ?? ''),
+ ];
+}
+
+$method = $_SERVER['REQUEST_METHOD'] ?? 'GET';
+
+if ($method === 'GET') {
+ json_response(ai_public_payload(ai_read()));
+}
+
+if ($method === 'PUT' || $method === 'POST') {
+ $body = require_json_body();
+ $s = ai_read();
+ if (array_key_exists('openai_api_key', $body)) {
+ $s['openai_api_key'] = trim((string) $body['openai_api_key']);
+ }
+ if (array_key_exists('model', $body)) {
+ $m = trim((string) $body['model']);
+ $s['model'] = $m !== '' ? $m : 'gpt-4o-mini';
+ }
+ if (array_key_exists('intent', $body)) {
+ $s['intent'] = (string) $body['intent'];
+ }
+ if (array_key_exists('rag_enabled', $body)) {
+ $s['rag_enabled'] = !empty($body['rag_enabled']);
+ }
+ if (array_key_exists('rag_context', $body)) {
+ $s['rag_context'] = (string) $body['rag_context'];
+ }
+ if (!ai_write($s)) {
+ json_response(['ok' => false, 'error' => 'บันทึก ai-settings.json ไม่สำเร็จ'], 500);
+ }
+ json_response(['ok' => true]);
+}
+
+json_response(['ok' => false, 'error' => 'Method not allowed'], 405);
diff --git a/www/html/Admin/api/game-quiz-carry-plaque-upload.php b/www/html/Admin/api/game-quiz-carry-plaque-upload.php
index 1d862d4..f200c03 100644
--- a/www/html/Admin/api/game-quiz-carry-plaque-upload.php
+++ b/www/html/Admin/api/game-quiz-carry-plaque-upload.php
@@ -1,69 +1,70 @@
- false, 'error' => 'ต้องเปิด PHP extension curl · Enable php-curl'], 500);
-}
-
-$method = $_SERVER['REQUEST_METHOD'] ?? 'GET';
-if ($method !== 'POST') {
- json_response(['ok' => false, 'error' => 'Method not allowed'], 405);
-}
-
-$raw = file_get_contents('php://input');
-if ($raw === false) {
- $raw = '';
-}
-$contentLen = isset($_SERVER['CONTENT_LENGTH']) ? (int) $_SERVER['CONTENT_LENGTH'] : 0;
-if ($raw === '' && $contentLen > 0) {
- json_response([
- 'ok' => false,
- 'error' => 'รับ body ไม่ได้ (มักเกิดจาก nginx client_max_body_size หรือ PHP post_max_size เล็กเกินไป) — ต้องตั้งอย่างน้อย ~20M สำหรับ /Admin/api/*.php · Request body was discarded (raise nginx body limit + PHP post_max_size)',
- ], 413);
-}
-
-$port = preg_replace('/[^0-9]/', '', (string)(getenv('GAME_NODE_PORT') ?: '3001')) ?: '3001';
-$host = getenv('GAME_NODE_INTERNAL_HOST') ?: '127.0.0.1';
-$target = 'http://' . $host . ':' . $port . '/Game/api/quiz-carry-plaque-upload';
-
-$ch = curl_init($target);
-if ($ch === false) {
- json_response(['ok' => false, 'error' => 'curl init failed'], 500);
-}
-
-curl_setopt_array($ch, [
- CURLOPT_POST => true,
- CURLOPT_POSTFIELDS => $raw,
- CURLOPT_HTTPHEADER => [
- 'Accept: application/json',
- 'Content-Type: application/json',
- ],
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_TIMEOUT => 120,
-]);
-
-$out = curl_exec($ch);
-$code = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE);
-$err = curl_error($ch);
-curl_close($ch);
-
-if ($out === false || $out === '') {
- json_response([
- 'ok' => false,
- 'error' => 'ไม่ต่อถึงเซิร์ฟเวอร์เกม (Node) — ตรวจ systemd/pm2 และพอร์ต ' . $port . ' · ' . $err,
- ], 502);
-}
-
-http_response_code($code > 0 ? $code : 500);
-header('Content-Type: application/json; charset=utf-8');
-header('X-Content-Type-Options: nosniff');
-header('Cache-Control: no-store');
-echo $out;
+ false, 'error' => 'ต้องเปิด PHP extension curl · Enable php-curl'], 500);
+}
+
+$method = $_SERVER['REQUEST_METHOD'] ?? 'GET';
+if ($method !== 'POST') {
+ json_response(['ok' => false, 'error' => 'Method not allowed'], 405);
+}
+
+$raw = file_get_contents('php://input');
+if ($raw === false) {
+ $raw = '';
+}
+$contentLen = isset($_SERVER['CONTENT_LENGTH']) ? (int) $_SERVER['CONTENT_LENGTH'] : 0;
+if ($raw === '' && $contentLen > 0) {
+ json_response([
+ 'ok' => false,
+ 'error' => 'รับ body ไม่ได้ (มักเกิดจาก nginx client_max_body_size หรือ PHP post_max_size เล็กเกินไป) — ต้องตั้งอย่างน้อย ~20M สำหรับ /Admin/api/*.php · Request body was discarded (raise nginx body limit + PHP post_max_size)',
+ ], 413);
+}
+
+$port = preg_replace('/[^0-9]/', '', (string)(getenv('GAME_NODE_PORT') ?: '3001')) ?: '3001';
+$host = getenv('GAME_NODE_INTERNAL_HOST') ?: '127.0.0.1';
+$target = 'http://' . $host . ':' . $port . '/Game/api/quiz-carry-plaque-upload';
+
+$ch = curl_init($target);
+if ($ch === false) {
+ json_response(['ok' => false, 'error' => 'curl init failed'], 500);
+}
+
+curl_setopt_array($ch, [
+ CURLOPT_POST => true,
+ CURLOPT_POSTFIELDS => $raw,
+ CURLOPT_HTTPHEADER => [
+ 'Accept: application/json',
+ 'Content-Type: application/json',
+ ],
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_TIMEOUT => 120,
+]);
+
+$out = curl_exec($ch);
+$code = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE);
+$err = curl_error($ch);
+curl_close($ch);
+
+if ($out === false || $out === '') {
+ json_response([
+ 'ok' => false,
+ 'error' => 'ไม่ต่อถึงเซิร์ฟเวอร์เกม (Node) — ตรวจ systemd/pm2 และพอร์ต ' . $port . ' · ' . $err,
+ ], 502);
+}
+
+http_response_code($code > 0 ? $code : 500);
+header('Content-Type: application/json; charset=utf-8');
+header('X-Content-Type-Options: nosniff');
+header('Cache-Control: no-store');
+echo $out;
diff --git a/www/html/Admin/api/game-quiz-settings.php b/www/html/Admin/api/game-quiz-settings.php
index ffa98fb..84a5818 100644
--- a/www/html/Admin/api/game-quiz-settings.php
+++ b/www/html/Admin/api/game-quiz-settings.php
@@ -12,6 +12,7 @@ declare(strict_types=1);
require __DIR__ . '/_common.php';
require_login();
+require_any_tab(['quiz','quiz-carry','quiz-battle','special-quiz','game-timing','jump-survive','mega-virus','space-shooter','stack-game','evidence-cards','postcase','troublesome','vote-timing']);
if (!function_exists('curl_init')) {
json_response(['ok' => false, 'error' => 'ต้องเปิด PHP extension curl (ติดตั้งแพ็กเกจ php-curl แล้วรีสตาร์ท PHP-FPM)'], 500);
diff --git a/www/html/Admin/api/leaderboard-admin.php b/www/html/Admin/api/leaderboard-admin.php
index ef911a0..1cbbf3b 100644
--- a/www/html/Admin/api/leaderboard-admin.php
+++ b/www/html/Admin/api/leaderboard-admin.php
@@ -1,94 +1,95 @@
- (string) ($a['id'] ?? ''),
- 'name' => $name,
- 'score' => $score,
- 'coins' => max(0, (int) ($a['coins'] ?? 0)),
- 'blocked' => !empty($a['blocked']),
- 'loginType' => (string) ($a['loginType'] ?? ''),
- 'key' => (string) ($a['providerUserId'] ?? ''),
- ];
- }
- usort($rows, function ($x, $y) {
- if ($y['score'] !== $x['score']) {
- return $y['score'] - $x['score'];
- }
- return strcmp((string) $x['name'], (string) $y['name']);
- });
- foreach ($rows as $i => &$r) {
- $r['rank'] = $i + 1;
- }
- unset($r);
- json_response(['ok' => true, 'rows' => $rows, 'total' => count($rows)]);
-}
-
-if ($method === 'POST') {
- $body = require_json_body();
- $action = (string) ($body['action'] ?? '');
-
- if ($action === 'resetAll') {
- $store = read_store();
- $n = 0;
- foreach (($store['accounts'] ?? []) as $i => $a) {
- if ((int) ($a['score'] ?? 0) !== 0) {
- $store['accounts'][$i]['score'] = 0;
- $store['accounts'][$i]['updatedAt'] = gmdate('c');
- $n++;
- }
- }
- if (!write_store($store)) {
- json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
- }
- json_response(['ok' => true, 'reset' => $n]);
- }
-
- if ($action === 'reset') {
- $id = trim((string) ($body['id'] ?? ''));
- if ($id === '') {
- json_response(['ok' => false, 'error' => 'ระบุ id'], 400);
- }
- $store = read_store();
- $found = false;
- foreach (($store['accounts'] ?? []) as $i => $a) {
- if (($a['id'] ?? '') === $id) {
- $store['accounts'][$i]['score'] = 0;
- $store['accounts'][$i]['updatedAt'] = gmdate('c');
- $found = true;
- break;
- }
- }
- if (!$found) {
- json_response(['ok' => false, 'error' => 'ไม่พบบัญชี'], 404);
- }
- if (!write_store($store)) {
- json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
- }
- json_response(['ok' => true]);
- }
-
- json_response(['ok' => false, 'error' => 'action ไม่ถูกต้อง'], 400);
-}
-
-json_response(['ok' => false, 'error' => 'Use GET or POST'], 405);
+ (string) ($a['id'] ?? ''),
+ 'name' => $name,
+ 'score' => $score,
+ 'coins' => max(0, (int) ($a['coins'] ?? 0)),
+ 'blocked' => !empty($a['blocked']),
+ 'loginType' => (string) ($a['loginType'] ?? ''),
+ 'key' => (string) ($a['providerUserId'] ?? ''),
+ ];
+ }
+ usort($rows, function ($x, $y) {
+ if ($y['score'] !== $x['score']) {
+ return $y['score'] - $x['score'];
+ }
+ return strcmp((string) $x['name'], (string) $y['name']);
+ });
+ foreach ($rows as $i => &$r) {
+ $r['rank'] = $i + 1;
+ }
+ unset($r);
+ json_response(['ok' => true, 'rows' => $rows, 'total' => count($rows)]);
+}
+
+if ($method === 'POST') {
+ $body = require_json_body();
+ $action = (string) ($body['action'] ?? '');
+
+ if ($action === 'resetAll') {
+ $store = read_store();
+ $n = 0;
+ foreach (($store['accounts'] ?? []) as $i => $a) {
+ if ((int) ($a['score'] ?? 0) !== 0) {
+ $store['accounts'][$i]['score'] = 0;
+ $store['accounts'][$i]['updatedAt'] = gmdate('c');
+ $n++;
+ }
+ }
+ if (!write_store($store)) {
+ json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
+ }
+ json_response(['ok' => true, 'reset' => $n]);
+ }
+
+ if ($action === 'reset') {
+ $id = trim((string) ($body['id'] ?? ''));
+ if ($id === '') {
+ json_response(['ok' => false, 'error' => 'ระบุ id'], 400);
+ }
+ $store = read_store();
+ $found = false;
+ foreach (($store['accounts'] ?? []) as $i => $a) {
+ if (($a['id'] ?? '') === $id) {
+ $store['accounts'][$i]['score'] = 0;
+ $store['accounts'][$i]['updatedAt'] = gmdate('c');
+ $found = true;
+ break;
+ }
+ }
+ if (!$found) {
+ json_response(['ok' => false, 'error' => 'ไม่พบบัญชี'], 404);
+ }
+ if (!write_store($store)) {
+ json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
+ }
+ json_response(['ok' => true]);
+ }
+
+ json_response(['ok' => false, 'error' => 'action ไม่ถูกต้อง'], 400);
+}
+
+json_response(['ok' => false, 'error' => 'Use GET or POST'], 405);
diff --git a/www/html/Admin/api/oauth-google-callback.php b/www/html/Admin/api/oauth-google-callback.php
new file mode 100644
index 0000000..2123a7e
--- /dev/null
+++ b/www/html/Admin/api/oauth-google-callback.php
@@ -0,0 +1,181 @@
+ false, 'error' => 'Use POST'], 405);
+}
+
+$body = require_json_body();
+$code = trim((string) ($body['code'] ?? ''));
+$redirectUri = trim((string) ($body['redirectUri'] ?? ''));
+$mergeGuestKey = trim((string) ($body['mergeGuestKey'] ?? ''));
+
+if ($code === '') {
+ json_response(['ok' => false, 'error' => 'missing code'], 400);
+}
+
+$oauth = read_store()['oauth'] ?? [];
+$clientId = trim((string) ($oauth['googleClientId'] ?? ''));
+$clientSecret = trim((string) ($oauth['googleClientSecret'] ?? ''));
+$configuredRedirect = trim((string) ($oauth['googleRedirectUri'] ?? ''));
+
+if ($clientId === '' || $clientSecret === '') {
+ json_response(['ok' => false, 'error' => 'ยังไม่ได้ตั้งค่า Google OAuth ใน Admin'], 503);
+}
+
+if ($redirectUri === '') {
+ $redirectUri = $configuredRedirect;
+}
+if ($redirectUri === '') {
+ json_response(['ok' => false, 'error' => 'missing redirectUri'], 400);
+}
+
+if ($configuredRedirect !== '' && $redirectUri !== $configuredRedirect) {
+ json_response(['ok' => false, 'error' => 'redirectUri ไม่ตรงกับที่ตั้งใน Admin'], 400);
+}
+
+if (!function_exists('curl_init')) {
+ json_response(['ok' => false, 'error' => 'PHP cURL ไม่พร้อมใช้งาน'], 500);
+}
+
+$tokenPayload = http_build_query([
+ 'code' => $code,
+ 'client_id' => $clientId,
+ 'client_secret' => $clientSecret,
+ 'redirect_uri' => $redirectUri,
+ 'grant_type' => 'authorization_code',
+]);
+
+$ch = curl_init('https://oauth2.googleapis.com/token');
+curl_setopt_array($ch, [
+ CURLOPT_POST => true,
+ CURLOPT_POSTFIELDS => $tokenPayload,
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_HTTPHEADER => ['Content-Type: application/x-www-form-urlencoded'],
+ CURLOPT_TIMEOUT => 20,
+]);
+$tokenRaw = curl_exec($ch);
+$tokenHttp = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
+curl_close($ch);
+
+$tokenJson = json_decode((string) $tokenRaw, true);
+if ($tokenHttp < 200 || $tokenHttp >= 300 || !is_array($tokenJson)) {
+ json_response(['ok' => false, 'error' => 'แลก token จาก Google ไม่สำเร็จ', 'detail' => (string) $tokenRaw], 502);
+}
+
+$accessToken = trim((string) ($tokenJson['access_token'] ?? ''));
+if ($accessToken === '') {
+ json_response(['ok' => false, 'error' => 'Google ไม่คืน access_token', 'detail' => $tokenJson], 502);
+}
+
+$ch2 = curl_init('https://www.googleapis.com/oauth2/v3/userinfo');
+curl_setopt_array($ch2, [
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $accessToken],
+ CURLOPT_TIMEOUT => 20,
+]);
+$userRaw = curl_exec($ch2);
+$userHttp = (int) curl_getinfo($ch2, CURLINFO_HTTP_CODE);
+curl_close($ch2);
+
+$user = json_decode((string) $userRaw, true);
+if ($userHttp < 200 || $userHttp >= 300 || !is_array($user)) {
+ json_response(['ok' => false, 'error' => 'อ่านข้อมูลผู้ใช้จาก Google ไม่สำเร็จ'], 502);
+}
+
+$googleSub = trim((string) ($user['sub'] ?? ''));
+if ($googleSub === '') {
+ json_response(['ok' => false, 'error' => 'Google ไม่คืน sub (user id)'], 502);
+}
+
+$playerKey = google_player_key($googleSub);
+if (!valid_player_key($playerKey)) {
+ json_response(['ok' => false, 'error' => 'playerKey จาก Google ไม่ถูกต้อง'], 500);
+}
+
+$email = trim((string) ($user['email'] ?? ''));
+$name = trim((string) ($user['name'] ?? ''));
+if ($name === '') {
+ $name = trim((string) ($user['given_name'] ?? ''));
+}
+if ($name === '') {
+ $name = $email !== '' ? preg_replace('/@.*$/', '', $email) : 'Google Player';
+}
+if (function_exists('mb_substr')) {
+ $name = mb_substr($name, 0, 32);
+} else {
+ $name = substr($name, 0, 32);
+}
+
+$picture = trim((string) ($user['picture'] ?? ''));
+$now = gmdate('c');
+
+$store = read_store();
+if (!isset($store['accounts']) || !is_array($store['accounts'])) {
+ $store['accounts'] = [];
+}
+
+$idx = find_account_index_by_player_key($store['accounts'], $playerKey);
+$isNew = $idx < 0;
+
+if ($idx < 0) {
+ $store['accounts'][] = [
+ 'id' => new_id(),
+ 'email' => $email,
+ 'displayName' => $name,
+ 'loginType' => 'google',
+ 'providerUserId' => $playerKey,
+ 'googleSub' => $googleSub,
+ 'avatarUrl' => $picture,
+ 'notes' => 'oauth: google',
+ 'blocked' => false,
+ 'coins' => 0,
+ 'createdAt' => $now,
+ 'updatedAt' => $now,
+ ];
+ $idx = count($store['accounts']) - 1;
+} else {
+ $store['accounts'][$idx]['loginType'] = 'google';
+ $store['accounts'][$idx]['email'] = $email !== '' ? $email : ($store['accounts'][$idx]['email'] ?? '');
+ if ($name !== '') {
+ $store['accounts'][$idx]['displayName'] = $name;
+ }
+ $store['accounts'][$idx]['googleSub'] = $googleSub;
+ if ($picture !== '') {
+ $store['accounts'][$idx]['avatarUrl'] = $picture;
+ }
+ $store['accounts'][$idx]['updatedAt'] = $now;
+}
+
+if (!empty($store['accounts'][$idx]['blocked'])) {
+ json_response(['ok' => false, 'error' => 'บัญชีนี้ถูกระงับ'], 403);
+}
+
+if ($isNew && $mergeGuestKey !== '') {
+ merge_guest_account_into($store, $idx, $mergeGuestKey);
+}
+
+if (!write_store($store)) {
+ json_response(['ok' => false, 'error' => 'บันทึกบัญชีไม่สำเร็จ'], 500);
+}
+
+$acc = $store['accounts'][$idx] ?? [];
+json_response([
+ 'ok' => true,
+ 'playerKey' => $playerKey,
+ 'loginType' => 'google',
+ 'displayName' => (string) ($acc['displayName'] ?? $name),
+ 'email' => (string) ($acc['email'] ?? $email),
+ 'avatarUrl' => (string) ($acc['avatarUrl'] ?? $picture),
+ 'coins' => max(0, (int) ($acc['coins'] ?? 0)),
+ 'accountId' => (string) ($acc['id'] ?? ''),
+ 'isNew' => $isNew,
+]);
diff --git a/www/html/Admin/api/oauth.php b/www/html/Admin/api/oauth.php
index ebc7d16..5badd4c 100644
--- a/www/html/Admin/api/oauth.php
+++ b/www/html/Admin/api/oauth.php
@@ -1,33 +1,34 @@
- true, 'oauth' => $o]);
-}
-
-if ($_SERVER['REQUEST_METHOD'] !== 'PUT' && $_SERVER['REQUEST_METHOD'] !== 'POST') {
- json_response(['ok' => false, 'error' => 'Use GET or PUT'], 405);
-}
-
-$body = require_json_body();
-$store = read_store();
-$cur = $store['oauth'] ?? [];
-$keys = [
- 'facebookAppId', 'facebookAppSecret', 'facebookRedirectUri',
- 'googleClientId', 'googleClientSecret', 'googleRedirectUri',
-];
-foreach ($keys as $k) {
- if (array_key_exists($k, $body)) {
- $cur[$k] = trim((string)$body[$k]);
- }
-}
-$store['oauth'] = $cur;
-if (!write_store($store)) {
- json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
-}
-json_response(['ok' => true, 'oauth' => $cur]);
+ true, 'oauth' => $o]);
+}
+
+if ($_SERVER['REQUEST_METHOD'] !== 'PUT' && $_SERVER['REQUEST_METHOD'] !== 'POST') {
+ json_response(['ok' => false, 'error' => 'Use GET or PUT'], 405);
+}
+
+$body = require_json_body();
+$store = read_store();
+$cur = $store['oauth'] ?? [];
+$keys = [
+ 'facebookAppId', 'facebookAppSecret', 'facebookRedirectUri',
+ 'googleClientId', 'googleClientSecret', 'googleRedirectUri',
+];
+foreach ($keys as $k) {
+ if (array_key_exists($k, $body)) {
+ $cur[$k] = trim((string)$body[$k]);
+ }
+}
+$store['oauth'] = $cur;
+if (!write_store($store)) {
+ json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ'], 500);
+}
+json_response(['ok' => true, 'oauth' => $cur]);
diff --git a/www/html/Admin/api/player-log.php b/www/html/Admin/api/player-log.php
new file mode 100644
index 0000000..0d6316d
--- /dev/null
+++ b/www/html/Admin/api/player-log.php
@@ -0,0 +1,85 @@
+ false, 'error' => 'unknown action'], 400);
+ }
+
+ $playerKey = trim((string) ($body['playerKey'] ?? ''));
+ $event = trim((string) ($body['event'] ?? ''));
+ $displayName = trim((string) ($body['displayName'] ?? ''));
+ $loginType = trim((string) ($body['loginType'] ?? 'guest'));
+ $page = trim((string) ($body['page'] ?? ''));
+ $meta = isset($body['meta']) && is_array($body['meta']) ? $body['meta'] : [];
+
+ $result = player_log_track($playerKey, $event, $displayName, $loginType, $page, $meta);
+ if (empty($result['ok'])) {
+ json_response($result, 400);
+ }
+ json_response($result);
+}
+
+if ($method === 'GET') {
+ require_login();
+ $action = (string) ($_GET['action'] ?? 'summary');
+ $log = player_log_read();
+
+ if ($action === 'summary') {
+ json_response([
+ 'ok' => true,
+ 'summary' => player_log_public_summary($log),
+ 'eventTypes' => array_keys(player_log_allowed_events()),
+ ]);
+ }
+
+ if ($action === 'players') {
+ $search = trim((string) ($_GET['search'] ?? ''));
+ $limit = (int) ($_GET['limit'] ?? 200);
+ json_response([
+ 'ok' => true,
+ 'players' => player_log_players_list($log, $search, $limit),
+ ]);
+ }
+
+ if ($action === 'events') {
+ $result = player_log_events_list($log, [
+ 'search' => (string) ($_GET['search'] ?? ''),
+ 'event' => (string) ($_GET['event'] ?? ''),
+ 'playerKey' => (string) ($_GET['playerKey'] ?? ''),
+ 'limit' => (int) ($_GET['limit'] ?? 100),
+ 'offset' => (int) ($_GET['offset'] ?? 0),
+ ]);
+ json_response([
+ 'ok' => true,
+ 'events' => $result['rows'],
+ 'total' => $result['total'],
+ ]);
+ }
+
+ json_response(['ok' => false, 'error' => 'unknown action'], 400);
+}
+
+if ($method === 'DELETE') {
+ require_login();
+ if (!player_log_write(player_log_default())) {
+ json_response(['ok' => false, 'error' => 'ล้าง log ไม่สำเร็จ'], 500);
+ }
+ json_response(['ok' => true]);
+}
+
+json_response(['ok' => false, 'error' => 'Use GET, POST or DELETE'], 405);
diff --git a/www/html/Admin/api/quiz-battle-modes.php b/www/html/Admin/api/quiz-battle-modes.php
new file mode 100644
index 0000000..04214fe
--- /dev/null
+++ b/www/html/Admin/api/quiz-battle-modes.php
@@ -0,0 +1,227 @@
+ 'กฎหมายใกล้ตัว',
+ 2 => 'กฎหมายสิทธิพื้นฐาน',
+ 3 => 'กฎหมายจราจร',
+ 4 => 'คดีเกี่ยวกับทรัพย์',
+ 5 => 'คดีหมิ่นประมาท',
+ 6 => 'คดีทางเพศ',
+ 7 => 'คดีอาชญากรรม',
+ 8 => 'อาชญากรรมออนไลน์',
+ 9 => 'กระบวนการยุติธรรม',
+ 10 => 'งานบริการกระทรวงยุติธรรม',
+ ];
+}
+
+function qb_default_modes(): array
+{
+ $titles = qb_default_titles();
+ $modes = [];
+ for ($i = 1; $i <= QB_ROOM_COUNT; $i++) {
+ $modes[(string)$i] = [
+ 'title' => $titles[$i] ?? ('ห้อง ' . $i),
+ 'enabled' => true,
+ 'openUntil' => '',
+ 'maxPlayers' => QB_MAX_PLAYERS_CAP,
+ ];
+ }
+ return $modes;
+}
+
+/** ชื่อหัวข้อห้อง — แก้ได้ [2026-07-23] · ตัดช่องว่าง/อักขระควบคุม จำกัด 60 ตัว · ว่าง → คืน default */
+function qb_clean_title($raw, string $default): string
+{
+ if (!is_string($raw)) {
+ return $default;
+ }
+ $s = preg_replace('/[\x00-\x1F\x7F]+/u', ' ', $raw); // ตัดอักขระควบคุม/ขึ้นบรรทัด
+ $s = trim(preg_replace('/\s+/u', ' ', $s ?? ''));
+ if ($s === '') {
+ return $default;
+ }
+ if (function_exists('mb_substr')) {
+ $s = mb_substr($s, 0, 60, 'UTF-8');
+ } else {
+ $s = substr($s, 0, 180);
+ }
+ return $s;
+}
+
+/** 'YYYY-MM-DD HH:MM' เท่านั้น (เวลาไทย) — ค่าอื่นถือว่าไม่ได้ตั้ง */
+function qb_clean_until($raw): string
+{
+ if (!is_string($raw)) {
+ return '';
+ }
+ $s = trim($raw);
+ if ($s === '') {
+ return '';
+ }
+ $s = str_replace('T', ' ', $s);
+ if (strlen($s) === 16 && preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$/', $s) === 1) {
+ [$d, $t] = explode(' ', $s, 2);
+ [$y, $m, $dd] = array_map('intval', explode('-', $d));
+ if (checkdate($m, $dd, $y)) {
+ [$hh, $mm] = array_map('intval', explode(':', $t));
+ if ($hh >= 0 && $hh <= 23 && $mm >= 0 && $mm <= 59) {
+ return $s;
+ }
+ }
+ }
+ return '';
+}
+
+function qb_read_modes(): array
+{
+ $out = ['version' => 1, 'updatedAt' => '', 'modes' => qb_default_modes()];
+ $raw = @file_get_contents(QB_MODES_FILE);
+ if ($raw === false || $raw === '') {
+ return $out;
+ }
+ $j = json_decode($raw, true);
+ if (!is_array($j) || !isset($j['modes']) || !is_array($j['modes'])) {
+ return $out;
+ }
+ $titles = qb_default_titles();
+ foreach ($out['modes'] as $k => $def) {
+ $src = $j['modes'][$k] ?? null;
+ if (!is_array($src)) {
+ continue;
+ }
+ $out['modes'][$k] = [
+ /* [2026-07-23] หัวข้อแก้ได้แล้ว — ใช้ค่าที่เก็บไว้ ถ้าว่าง fallback เป็น default ของห้องนั้น */
+ 'title' => qb_clean_title($src['title'] ?? '', $titles[(int)$k] ?? $def['title']),
+ 'enabled' => !isset($src['enabled']) || (bool)$src['enabled'],
+ 'openUntil' => qb_clean_until($src['openUntil'] ?? ''),
+ 'maxPlayers' => qb_clamp_max($src['maxPlayers'] ?? QB_MAX_PLAYERS_CAP),
+ ];
+ }
+ $out['updatedAt'] = is_string($j['updatedAt'] ?? null) ? $j['updatedAt'] : '';
+ return $out;
+}
+
+function qb_write_modes(array $data): bool
+{
+ $dir = dirname(QB_MODES_FILE);
+ if (!is_dir($dir) && !@mkdir($dir, 0775, true) && !is_dir($dir)) {
+ return false;
+ }
+ $tmp = QB_MODES_FILE . '.tmp';
+ $json = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
+ if ($json === false || @file_put_contents($tmp, $json, LOCK_EX) === false) {
+ return false;
+ }
+ /* เขียน tmp แล้ว rename — กันไฟล์พังครึ่งทางถ้า Node อ่านพอดีจังหวะ */
+ if (!@rename($tmp, QB_MODES_FILE)) {
+ @unlink($tmp);
+ return false;
+ }
+ @chmod(QB_MODES_FILE, 0664);
+ return true;
+}
+
+/** สถานะที่คำนวณแล้ว ณ เวลาไทยตอนนี้ — ให้หน้า admin โชว์ว่าห้องไหน "ปิดไปแล้ว" */
+function qb_state(array $mode): array
+{
+ $tz = new DateTimeZone(QB_TZ);
+ $now = new DateTimeImmutable('now', $tz);
+ $until = $mode['openUntil'] ?? '';
+ $expired = false;
+ if ($until !== '') {
+ $end = DateTimeImmutable::createFromFormat('Y-m-d H:i', $until, $tz);
+ $expired = ($end !== false) && ($now > $end);
+ }
+ return [
+ 'open' => (bool)($mode['enabled'] ?? true) && !$expired,
+ 'expired' => $expired,
+ ];
+}
+
+$method = $_SERVER['REQUEST_METHOD'];
+
+if ($method === 'GET') {
+ $data = qb_read_modes();
+ $tz = new DateTimeZone(QB_TZ);
+ $now = new DateTimeImmutable('now', $tz);
+ foreach ($data['modes'] as $k => $m) {
+ $data['modes'][$k] = array_merge($m, qb_state($m));
+ }
+ $data['nowThai'] = $now->format('Y-m-d H:i');
+ $data['tz'] = QB_TZ;
+ json_response(['ok' => true] + $data);
+}
+
+if ($method === 'PUT' || $method === 'POST') {
+ $body = require_json_body();
+ $src = $body['modes'] ?? null;
+ if (!is_array($src)) {
+ json_response(['ok' => false, 'error' => 'ต้องส่ง modes มาด้วย'], 400);
+ }
+ $cur = qb_read_modes();
+ $next = $cur['modes'];
+ foreach ($next as $k => $def) {
+ $m = $src[$k] ?? null;
+ if (!is_array($m)) {
+ continue;
+ }
+ $next[$k] = [
+ /* [2026-07-23] หัวข้อแก้ได้ — sanitize + ถ้าไม่ส่ง/ว่าง คงค่าเดิม (ไม่ reset เป็น default) */
+ 'title' => qb_clean_title($m['title'] ?? ($def['title'] ?? ''), $def['title'] ?? ('ห้อง ' . $k)),
+ 'enabled' => !isset($m['enabled']) || (bool)$m['enabled'],
+ 'openUntil' => qb_clean_until($m['openUntil'] ?? ''),
+ /* [2026-07-23] จำนวนคนต่อห้อง — ถ้าไม่ส่งมา คงค่าเดิมไว้ (ไม่ reset เป็น 50) */
+ 'maxPlayers' => qb_clamp_max($m['maxPlayers'] ?? ($def['maxPlayers'] ?? QB_MAX_PLAYERS_CAP)),
+ ];
+ }
+ $me = current_admin();
+ $payload = [
+ 'version' => 1,
+ 'updatedAt' => (new DateTimeImmutable('now', new DateTimeZone(QB_TZ)))->format('Y-m-d H:i'),
+ 'updatedBy' => $me['username'] ?? '',
+ 'tz' => QB_TZ,
+ 'modes' => $next,
+ ];
+ if (!qb_write_modes($payload)) {
+ json_response(['ok' => false, 'error' => 'บันทึกไม่สำเร็จ (สิทธิ์เขียนไฟล์?)'], 500);
+ }
+ foreach ($payload['modes'] as $k => $m) {
+ $payload['modes'][$k] = array_merge($m, qb_state($m));
+ }
+ json_response(['ok' => true, 'message' => 'บันทึกแล้ว'] + $payload);
+}
+
+json_response(['ok' => false, 'error' => 'Use GET / PUT'], 405);
diff --git a/www/html/Admin/api/room-approvals.php b/www/html/Admin/api/room-approvals.php
new file mode 100644
index 0000000..08a98e4
--- /dev/null
+++ b/www/html/Admin/api/room-approvals.php
@@ -0,0 +1,212 @@
+ false, 'error' => 'ต้องเปิด PHP extension curl'], 500);
+}
+
+function room_moderation_disk_path(): string
+{
+ return dirname(__DIR__, 2) . '/Game/data/room-moderation.json';
+}
+
+function room_approval_history_path(): string
+{
+ return ADMIN_PRIVATE_DIR . '/room-approval-history.json';
+}
+
+function sync_room_moderation_disk(bool $enabled): void
+{
+ $path = room_moderation_disk_path();
+ $dir = dirname($path);
+ if (!is_dir($dir)) {
+ @mkdir($dir, 0755, true);
+ }
+ $json = json_encode(['enabled' => $enabled], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
+ if ($json !== false) {
+ @file_put_contents($path, $json, LOCK_EX);
+ }
+}
+
+function read_room_approval_history(): array
+{
+ $path = room_approval_history_path();
+ if (!is_file($path)) {
+ return [];
+ }
+ $raw = @file_get_contents($path);
+ $j = json_decode($raw ?: '[]', true);
+ return is_array($j) ? $j : [];
+}
+
+function append_room_approval_history(array $row): void
+{
+ $rows = read_room_approval_history();
+ array_unshift($rows, $row);
+ if (count($rows) > 500) {
+ $rows = array_slice($rows, 0, 500);
+ }
+ if (!is_dir(ADMIN_PRIVATE_DIR)) {
+ @mkdir(ADMIN_PRIVATE_DIR, 0750, true);
+ }
+ $json = json_encode($rows, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
+ if ($json !== false) {
+ @file_put_contents(room_approval_history_path(), $json, LOCK_EX);
+ }
+}
+
+function node_room_approvals_url(string $suffix = ''): string
+{
+ $port = preg_replace('/[^0-9]/', '', (string)(getenv('GAME_NODE_PORT') ?: '13010')) ?: '13010';
+ $host = getenv('GAME_NODE_INTERNAL_HOST') ?: '127.0.0.1';
+ return 'http://' . $host . ':' . $port . '/Game/api/admin/room-approvals' . $suffix;
+}
+
+function proxy_node_room_approvals(string $method, ?string $body = null, string $suffix = ''): array
+{
+ $ch = curl_init(node_room_approvals_url($suffix));
+ if ($ch === false) {
+ return ['ok' => false, 'error' => 'curl init failed', 'httpCode' => 0];
+ }
+ $headers = ['Accept: application/json'];
+ if ($body !== null && $method !== 'GET') {
+ $headers[] = 'Content-Type: application/json';
+ }
+ $opts = [
+ CURLOPT_CUSTOMREQUEST => $method,
+ CURLOPT_HTTPHEADER => $headers,
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_TIMEOUT => 12,
+ ];
+ if ($body !== null && $method !== 'GET') {
+ $opts[CURLOPT_POSTFIELDS] = $body;
+ }
+ curl_setopt_array($ch, $opts);
+ $out = curl_exec($ch);
+ $code = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE);
+ $err = curl_error($ch);
+ curl_close($ch);
+ if ($out === false || $out === '') {
+ return ['ok' => false, 'error' => 'ไม่ต่อถึงเซิร์ฟเวอร์เกม (Node): ' . $err, 'httpCode' => $code];
+ }
+ $j = json_decode($out, true);
+ if (!is_array($j)) {
+ return ['ok' => false, 'error' => 'ตอบกลับจาก Node ไม่ถูกต้อง', 'httpCode' => $code];
+ }
+ $j['httpCode'] = $code;
+ return $j;
+}
+
+$method = $_SERVER['REQUEST_METHOD'] ?? 'GET';
+$admin = current_admin();
+
+if ($method === 'GET') {
+ $action = isset($_GET['action']) ? (string)$_GET['action'] : 'pending';
+ $store = read_store();
+ $enabled = !empty($store['roomModeration']['enabled']);
+ sync_room_moderation_disk($enabled);
+
+ if ($action === 'settings') {
+ json_response([
+ 'ok' => true,
+ 'enabled' => $enabled,
+ ]);
+ }
+
+ if ($action === 'history') {
+ json_response([
+ 'ok' => true,
+ 'history' => read_room_approval_history(),
+ 'enabled' => $enabled,
+ ]);
+ }
+
+ $node = proxy_node_room_approvals('GET');
+ if (empty($node['ok'])) {
+ json_response([
+ 'ok' => true,
+ 'enabled' => $enabled,
+ 'pending' => [],
+ 'nodeError' => $node['error'] ?? 'Node unavailable',
+ ]);
+ }
+ json_response([
+ 'ok' => true,
+ 'enabled' => $enabled,
+ 'nodeModerationEnabled' => !empty($node['moderationEnabled']),
+ 'pending' => $node['pending'] ?? [],
+ ]);
+}
+
+if ($method === 'PATCH') {
+ $raw = file_get_contents('php://input') ?: '{}';
+ $body = json_decode($raw, true);
+ if (!is_array($body)) {
+ json_response(['ok' => false, 'error' => 'ข้อมูลไม่ถูกต้อง'], 400);
+ }
+ $store = read_store();
+ if (!isset($store['roomModeration']) || !is_array($store['roomModeration'])) {
+ $store['roomModeration'] = ['enabled' => true];
+ }
+ if (array_key_exists('enabled', $body)) {
+ $store['roomModeration']['enabled'] = !!$body['enabled'];
+ }
+ if (!write_store($store)) {
+ json_response(['ok' => false, 'error' => 'บันทึกการตั้งค่าไม่สำเร็จ'], 500);
+ }
+ sync_room_moderation_disk(!empty($store['roomModeration']['enabled']));
+ json_response(['ok' => true, 'enabled' => !empty($store['roomModeration']['enabled'])]);
+}
+
+if ($method === 'POST') {
+ $raw = file_get_contents('php://input') ?: '{}';
+ $body = json_decode($raw, true);
+ if (!is_array($body)) {
+ json_response(['ok' => false, 'error' => 'ข้อมูลไม่ถูกต้อง'], 400);
+ }
+ $spaceId = isset($body['spaceId']) ? trim((string)$body['spaceId']) : '';
+ $act = isset($body['action']) ? trim((string)$body['action']) : '';
+ $note = isset($body['note']) ? trim((string)$body['note']) : '';
+ if ($spaceId === '' || !in_array($act, ['approve', 'reject', 'dismiss'], true)) {
+ json_response(['ok' => false, 'error' => 'ต้องระบุ spaceId และ action (reject|dismiss)'], 400);
+ }
+
+ $meta = isset($body['meta']) && is_array($body['meta']) ? $body['meta'] : [];
+ $payload = json_encode([
+ 'spaceId' => $spaceId,
+ 'action' => $act,
+ 'note' => $note,
+ ], JSON_UNESCAPED_UNICODE);
+ $result = proxy_node_room_approvals('POST', $payload, '');
+ if (empty($result['ok'])) {
+ json_response(['ok' => false, 'error' => $result['error'] ?? 'ดำเนินการไม่สำเร็จ'], !empty($result['httpCode']) && $result['httpCode'] >= 400 ? (int)$result['httpCode'] : 400);
+ }
+
+ append_room_approval_history([
+ 'at' => gmdate('c'),
+ 'action' => $act,
+ 'spaceId' => $spaceId,
+ 'spaceName' => $meta['spaceName'] ?? $spaceId,
+ 'creatorDisplayName' => $meta['creatorDisplayName'] ?? '',
+ 'creatorPlayerKey' => $meta['creatorPlayerKey'] ?? '',
+ 'adminUsername' => is_array($admin) ? ($admin['username'] ?? '') : '',
+ 'note' => $note,
+ 'kicked' => isset($result['kicked']) ? (int)$result['kicked'] : null,
+ ]);
+
+ json_response([
+ 'ok' => true,
+ 'action' => $act,
+ 'spaceId' => $spaceId,
+ 'kicked' => $result['kicked'] ?? null,
+ ]);
+}
+
+json_response(['ok' => false, 'error' => 'Method not allowed'], 405);
diff --git a/www/html/Admin/api/sound-settings.php b/www/html/Admin/api/sound-settings.php
new file mode 100644
index 0000000..295f550
--- /dev/null
+++ b/www/html/Admin/api/sound-settings.php
@@ -0,0 +1,91 @@
+ { masterVol, musicVol, sfxVol } ค่า 0..1
+ * PUT -> body JSON เดียวกัน → บันทึก
+ */
+require __DIR__ . '/_common.php';
+
+require_login();
+require_tab('sound');
+
+define('SOUND_SETTINGS_FILE', dirname(__DIR__, 2) . '/Game/data/sound-settings.json');
+
+function sound_defaults(): array
+{
+ return ['masterVol' => 1.0, 'musicVol' => 0.35, 'sfxVol' => 0.75];
+}
+
+function sound_clamp($v, float $default): float
+{
+ $n = is_numeric($v) ? (float) $v : $default;
+ if (!is_finite($n)) {
+ return $default;
+ }
+ return max(0.0, min(1.0, $n));
+}
+
+function sound_read(): array
+{
+ $base = sound_defaults();
+ if (!is_file(SOUND_SETTINGS_FILE)) {
+ return $base;
+ }
+ $raw = @file_get_contents(SOUND_SETTINGS_FILE);
+ $j = json_decode($raw ?: '{}', true);
+ if (!is_array($j)) {
+ return $base;
+ }
+ return [
+ 'masterVol' => sound_clamp($j['masterVol'] ?? null, $base['masterVol']),
+ 'musicVol' => sound_clamp($j['musicVol'] ?? null, $base['musicVol']),
+ 'sfxVol' => sound_clamp($j['sfxVol'] ?? null, $base['sfxVol']),
+ ];
+}
+
+function sound_write(array $s): bool
+{
+ $dir = dirname(SOUND_SETTINGS_FILE);
+ if (!is_dir($dir) && !@mkdir($dir, 0755, true)) {
+ return false;
+ }
+ $json = json_encode($s, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
+ if ($json === false) {
+ return false;
+ }
+ $tmp = SOUND_SETTINGS_FILE . '.tmp.' . bin2hex(random_bytes(4));
+ if (file_put_contents($tmp, $json, LOCK_EX) === false) {
+ return false;
+ }
+ if (!rename($tmp, SOUND_SETTINGS_FILE)) {
+ @unlink($tmp);
+ return false;
+ }
+ return true;
+}
+
+$method = $_SERVER['REQUEST_METHOD'] ?? 'GET';
+
+if ($method === 'GET') {
+ json_response(sound_read());
+}
+
+if ($method === 'PUT' || $method === 'POST') {
+ $body = require_json_body();
+ $cur = sound_read();
+ $next = [
+ 'masterVol' => array_key_exists('masterVol', $body) ? sound_clamp($body['masterVol'], $cur['masterVol']) : $cur['masterVol'],
+ 'musicVol' => array_key_exists('musicVol', $body) ? sound_clamp($body['musicVol'], $cur['musicVol']) : $cur['musicVol'],
+ 'sfxVol' => array_key_exists('sfxVol', $body) ? sound_clamp($body['sfxVol'], $cur['sfxVol']) : $cur['sfxVol'],
+ ];
+ if (!sound_write($next)) {
+ json_response(['ok' => false, 'error' => 'บันทึก sound-settings.json ไม่สำเร็จ'], 500);
+ }
+ json_response(['ok' => true, 'settings' => $next]);
+}
+
+json_response(['ok' => false, 'error' => 'Method not allowed'], 405);
diff --git a/www/html/Admin/api/system-settings.php b/www/html/Admin/api/system-settings.php
new file mode 100644
index 0000000..4f9ecb3
--- /dev/null
+++ b/www/html/Admin/api/system-settings.php
@@ -0,0 +1,75 @@
+ ROOM_RETENTION_MAX_DAYS) {
+ return ROOM_RETENTION_MAX_DAYS;
+ }
+ return $n;
+}
+
+function system_settings_payload(array $store): array
+{
+ $settings = $store['systemSettings'] ?? [];
+ return [
+ 'roomRetentionDays' => clamp_room_retention_days($settings['roomRetentionDays'] ?? ROOM_RETENTION_MIN_DAYS),
+ 'minRoomRetentionDays' => ROOM_RETENTION_MIN_DAYS,
+ 'maxRoomRetentionDays' => ROOM_RETENTION_MAX_DAYS,
+ ];
+}
+
+function sync_game_system_settings(array $payload): bool
+{
+ $dir = dirname(GAME_SYSTEM_SETTINGS);
+ if (!is_dir($dir) && !@mkdir($dir, 0755, true)) {
+ return false;
+ }
+ $data = [
+ 'roomRetentionDays' => $payload['roomRetentionDays'],
+ 'updatedAt' => gmdate('c'),
+ ];
+ $json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
+ return $json !== false && file_put_contents(GAME_SYSTEM_SETTINGS, $json, LOCK_EX) !== false;
+}
+
+$method = $_SERVER['REQUEST_METHOD'] ?? 'GET';
+
+if ($method === 'GET') {
+ $store = read_store();
+ $payload = system_settings_payload($store);
+ sync_game_system_settings($payload);
+ json_response(['ok' => true] + $payload);
+}
+
+if ($method === 'PATCH' || $method === 'PUT' || $method === 'POST') {
+ $body = require_json_body();
+ if (!array_key_exists('roomRetentionDays', $body)) {
+ json_response(['ok' => false, 'error' => 'กรุณาระบุจำนวนวันจัดเก็บห้อง'], 400);
+ }
+ $store = read_store();
+ $store['systemSettings'] = $store['systemSettings'] ?? [];
+ $store['systemSettings']['roomRetentionDays'] = clamp_room_retention_days($body['roomRetentionDays']);
+ if (!write_store($store)) {
+ json_response(['ok' => false, 'error' => 'บันทึกการตั้งค่าไม่สำเร็จ'], 500);
+ }
+ $payload = system_settings_payload($store);
+ if (!sync_game_system_settings($payload)) {
+ json_response(['ok' => false, 'error' => 'บันทึกค่าไปยัง Game/data ไม่สำเร็จ'], 500);
+ }
+ json_response(['ok' => true] + $payload);
+}
+
+json_response(['ok' => false, 'error' => 'Method not allowed'], 405);
diff --git a/www/html/Admin/index.html b/www/html/Admin/index.html
index 1979ab0..8fb0ce7 100644
--- a/www/html/Admin/index.html
+++ b/www/html/Admin/index.html
@@ -1,1432 +1,1492 @@
-
-
-
-
-
-
-
-
- Admin — JD JUSTICE DIVERS
-
-
-
-
-
-
- ข้ามไปเนื้อหา
-
-
-
-
-
-
- ตั้งค่าครั้งแรก
- สร้างบัญชีแอดมินหลัก (super) — ใช้ชื่อผู้ใช้ admin
-
-
-
-
-
- เข้าสู่ระบบ Admin
-
-
-
-
-
-
-
-
-
- ไม่พบเมนูที่ค้นหา
- ทั่วไป & ฉาก
- OAuth Facebook / Google
- Editor ฉาก แผนที่ฉาก / โซนเกม
- Editor แผนที่ Quiz Battle เส้นทาง · โดม · จุดเกิด (10 ห้อง)
- ตั้งค่า AI แชท ผู้ช่วย AI ในเกม · ล็อกอินแยก
- รหัสผ่าน เปลี่ยนรหัสของคุณ · กดซ้ำเพื่อปิด
-
- มินิเกม
- Minigame-1-จริงหรือไม่
- Minigame-2-วิ่งหลบสิ่งกีดขวาง
- Minigame-3-Tower block
- Minigame-4-คำศัพท์ในกระบวนการยุติธรรม
- Quiz Battle โดม · A B C · หมวด
- Minigame-5-กระโดดขึ้นแท่น
- Minigame-6-ยิงอุกาบาต Violent Crime
- Minigame-7-ยิง Mega Virus
-
- คำถาม & การ์ดพิเศษ
- ชุดคำถามพิเศษ 15 ชุด (Level × Case) · การ์ดรางวัล
- เวลาโหวต Silence/Ban · ชี้ตัวคนร้าย
- จบคดี Main-Lobby หรือ LobbyA
- บทตัวป่วน เวลาเสนอ · เวลารับ
- การ์ดหลักฐาน 3 คดี × ผู้ต้องสงสัย × 3 ใบ · รูป/ข้อความ
- รูปคดี & Cutscene 15 คดี · รูปเลือกคดี/รายละเอียด/เรื่องราว 2 รูป
-
- ระบบ & บัญชี
- ตัวละคร อัปโหลด · เลือกใช้ในเกม
- ผู้ใช้ บัญชี & COINS
- กระดานผู้นำ High Score · คะแนนสะสม
- Achievements รางวัล · ความคืบหน้ารายผู้เล่น
- แอดมิน สิทธิ์ระบบ
- Test Mode เปิด hotkeys ทดสอบเกม
- 🔊 เสียง ระดับเสียง Master / Music / SFX
-
-
-
-
-
- เปลี่ยนรหัสผ่านของคุณ
- ใช้รหัสปัจจุบันยืนยันก่อนตั้งรหัสใหม่ (ทุกแอดมินใช้ได้) · กดแท็บ "รหัสผ่าน" อีกครั้งเพื่อปิด และกลับไป OAuth
-
-
-
-
-
- Token & OAuth (Facebook / Google)
- เก็บ App ID / Client ID / Secret และ Redirect URI สำหรับ Login — หน้า Login จะดึงเฉพาะค่าที่ไม่เป็นความลับผ่าน oauth-public.php
-
-
-
-
-
-
-
-
Editor ฉาก (Lobby / ZEP / กบ / ตอบคำถาม)
-
สร้างและบันทึกแผนที่ — ใช้รหัสฉากตอนสร้างห้องในล็อบบี้ · คลิกซ้ายวาด / คลิกขวาลบ · ห้องโถง: พื้นที่เริ่มเกม (ส้ม) · เกมตอบคำถาม : วาดโซนถูก/ผิด + พื้นที่โชว์คำถาม (ทอง) — ข้อความคำถามจากแท็บ Minigame-1-จริงหรือไม่ · เลื่อนแถบเครื่องมือด้านบน ได้แยกจากพื้นที่วาด
-
-
เต็มจอ
-
-
-
-
-
-
-
-
Editor แผนที่ Quiz Battle
-
แก้แผนที่ห้อง Quiz Battle (qbroom 1–10) — เลือกห้องจากเมนูในตัว editor · วาดเส้นทาง / โดม / จุดเกิด · คลิกซ้ายวาด คลิกขวาลบ
-
-
เต็มจอ
-
-
-
-
-
-
-
-
ตั้งค่า AI แชท (Admin)
-
ตั้งค่าผู้ช่วย AI ในเกม — หน้านี้มีการล็อกอินแยกของตัวเอง (ไม่ใช่ session Admin นี้)
-
-
เต็มจอ
-
-
-
-
-
-
-
- ชุดคำถามพิเศษ — รับการ์ดพิเศษ
- มี 15 ชุด = ระดับ (Level 1–5) × คดี (Case 1–3) · แต่ละชุดมีคำถามเป็นของตัวเอง (สุ่มมาเล่นในเกม) และให้ การ์ดพิเศษ 1 ใบ เป็นรางวัล · เก็บที่ specialQuizSets ใน quiz-settings.json · English: 15 sets (Level × Case), multiple-choice (A/B/C/D), each grants one special card.
-
-
- เวลาไอคอนอยู่บนฉาก (ทุกชุด)
- ไอคอนคำถามพิเศษตอนขึ้นต้นเกม จะหายไปเอง ถ้าไม่มีใครเก็บภายในเวลาที่ตั้ง · 0 = ไม่หาย (อยู่จนจบเกม) · เก็บที่ specialQuizIconExpireSec ใน game-timing.json
-
- หายไปใน
-
- วินาที
- บันทึก
-
-
-
-
-
- 1 เลือก ระดับ + คดี ที่จะแก้
- 2 ตั้ง การ์ดพิเศษ ของชุดนั้น
- 3 ใส่ คำถาม แล้วกด บันทึก
-
-
-
- 1 · เลือกชุดที่จะแก้ไข
-
- ระดับ (Level)
-
- ระดับ 1 · ROOKIE
- ระดับ 2
- ระดับ 3
- ระดับ 4
- ระดับ 5
-
-
- คดี (Case)
-
- คดี 1 · คดีโจรกรรมไซเบอร์
- คดี 2 · คดีปล้นร้านอัญมณี
- คดี 3
-
-
- ชุดที่แก้: L1_C1
-
-
-
-
- 2 · การ์ดพิเศษของชุดนี้
- เลือกการ์ดจากชุดโบนัส /Game/img/special-cards/ (card-1 ถึง card-7) — แสดงในโซน «โบนัสพิเศษ» ตาม mockup สรุปผล · English: Pick one bonus card asset (Time Dilation, Bail Coin, Free Evidence, etc.)
-
-
-
-
ตัวอย่างการ์ดที่เลือก
-
-
-
-
-
-
-
- ชื่อการ์ด (ไทย)
-
-
- ชื่อการ์ด (อังกฤษ)
-
-
- ระดับการ์ด
-
- Common
- Rare
- Legendary
-
-
-
-
-
-
- 3 · คำถามของชุดนี้
- รูปแบบ ตัวเลือก A B C D — กรอกตัวเลือกแล้วเลือก “คำตอบที่ถูก” 1 ข้อ (อย่างน้อย 2 ตัวเลือกต่อข้อ) · สุ่มมาเล่นตามจำนวน “สุ่มสูงสุดกี่ข้อต่อรอบ” ที่ตั้งในแท็บ Minigame-1-จริงหรือไม่
-
-
- + เพิ่มคำถาม
- บันทึกชุดคำถามพิเศษทั้งหมด (15 ชุด)
-
-
-
-
-
-
- การ์ดหลักฐาน — แฟ้มหลักฐาน LobbyB
- มี 15 คดี · แต่ละคดีมี ผู้ต้องสงสัย 3 คน · ตั้ง ชื่อผู้ต้องสงสัย + เลือก โฟลเดอร์รูป (suspect-1/2/3) ได้ · การ์ดเป็นรูปอย่างเดียว โดยระดับ (rarity) คิดอัตโนมัติจากเลขไฟล์: Card-01–22 = ธรรมดา, Card-23–44 = Rare, Card-45–54 = ชี้คนร้าย · ตอนจบมินิเกมระบบจะสุ่มการ์ดตามเกรดของทีม (A/B/C) · เก็บที่ /Game/data/evidence-cards.json
-
-
- เลือกคดีที่จะแก้
-
- คดี (Case)
-
-
- กำลังแก้: คดี 1
-
-
-
-
-
-
- บันทึกการ์ดหลักฐานทั้งหมด (15 คดี)
-
-
-
-
-
-
-
- คำถามหลายตัวเลือก (หยิบมาวาง)
- ใช้กับฉากประเภท ตอบคำถาม — หยิบคำตอบมาวางกลาง ใน Editor — ผู้เล่นหยิบตัวเลือกไปวางโซนกลาง · ถ้ามีรายการที่นี่ เกมจะใช้เฉพาะชุดนี้ (ไม่ผสมกับคำถามถูก/ผิดแท็บคำถามเกม) · เก็บที่ /Game/data/quiz-settings.json ฟิลด์ carryQuestions
- อย่างน้อย 2 ตัวเลือก ต่อข้อ (สูงสุด 6) · English: Per-round timing below applies only to quiz carry (after 3-2-1 in embed preview: question first, then options).
-
- อ่านคำถามก่อนหยิบตัวเลือก (วินาที)
-
- 0 = แสดงตัวเลือกทันทีหลังคำถามขึ้น · สูงสุด 120 วิ
-
- เวลาตอบหลังตัวเลือกขึ้น (วินาที)
-
- นับจากเมื่อหยิบได้ · สูงสุด 300 วิ
-
- จำนวนข้อต่อเซสชัน (หยิบมาวาง)
-
- ใช้กับแมป หยิบมาวาง (เช่น mnorwqx1) ทั้ง preview และ flow สืบสวนจริง · สุ่มจากชุด carryQuestions จนครบจำนวนนี้ · 0 = เล่นต่อไม่จบอัตโนมัติ · ไม่ใช้กับ mng8a80o — เกมถูก/ผิดใช้ «จำนวนข้อต่อรอบ» แท็บคำถามเกม
-
-
-
- ความเร็วเดิน — รหัสฉาก (map id)
-
- ใส่รหัสฉาก จาก Editor (หลังบันทึก) ให้ตรงกับแมปที่ต้องการ · ว่าง = ไม่ override · เก็บที่ carryWalkSpeedMultForMapId · English: Scene id must match the map you want to speed up.
-
- คูณความเร็วเดิน (0.5–3)
-
- ใช้เฉพาะเมื่อรหัสฉากตรงกับห้องเล่น/พรีวิว · ค่าเริ่มในเกมถ้าไม่ตั้ง = 1.42 · carryWalkSpeedMult
-
-
-
- แผงข้อความบนแผนที่ (คำถาม / ตัวเลือกที่ถือ)
- ใช้กับ #quiz-map-question-panel ในโหมดหยิบมาวาง (โซนทองหรือโซนกลาง) · เก็บที่ carryMapPanelTheme ใน quiz-settings.json · English: Color pickers + alpha (0–100%) — saved as rgba().
- ทำไมไม่เห็นเปลี่ยน? แผงนี้แสดงเฉพาะในหน้า เล่นเกม (/Game/play.html) ขณะแมปเป็น quiz_carry และมีข้อความคำถาม — ไม่แสดงในหน้า Admin นี้ · ถ้า โปร่ง A = 0% กับพื้นหลังหรือขอบ = โปร่งใสทั้งหมด จะไม่เห็นสีนั้น · ความหนาขอบ 0 px = ไม่มีเส้นขอบ · ลองโปร่ง 70–90% และขอบ 2 px แล้วเปิดพรีวิว/เล่น · English: This panel is only on play (not Admin). 0% alpha = fully transparent color; 0 px border = no stroke.
-
-
-
-
- ความหนาขอบ (px)
-
-
-
-
-
- ขั้นต่ำ (px)
-
-
- เพดานขนาด (px)
-
-
-
-
ในเกมใช้สูตรเดียวกับป้ายคำตอบบนพื้น : clamp(10, 24, tileSize×zoom×0.24×carryChoicePlaqueMapScale) แล้ว clamp อีกชั้นด้วยค่าสองช่องนี้ · English: Same px formula as floor answer plaques; theme min/max clamp on top.
-
-
-
- ป้ายตัวเลือกบนแผนที่ (กล่องหยิบมาวาง) — ช่อง 1–16
- แต่ละช่องตรงกับ โซนตัวเลือก 1–16 บนแมป · เก็บที่ carryChoicePlaqueThemes · Neon = ขอบตามเลขช่อง · สีขอบคงที่ = ใช้ picker ด้านล่าง · รูปช่องใช้เมื่อคำถามนั้นไม่มีรูปแยก · รูปคำถามทับช่อง · ขนาดป้ายบนแมป ปรับที่กล่องสีเขียวถัดลงนี้ (ไม่ใช่ในแต่ละช่อง) · English: Per-slot = colors/URL; map size = green panel below; Save quiz-carry.
-
-
ปรับขนาดป้าย + รูปบนแมป
-
เลื่อนแถบหรือพิมพ์ตัวเลข (×) — ขยายทั้งกล่องป้ายและตัวอักษรบนแมป · จบด้วยปุ่ม บันทึกชุดหลายตัวเลือก ด้านล่าง · English: Slider or number, then Save.
-
- เลื่อนขยาย
-
-
- ค่า ×
-
-
- × 1.25
-
-
carryChoicePlaqueMapScale · 1 = ปกติ · 1.5–2.0 ถ้าต้องการใหญ่ชัด
-
-
-
-
- นับถอยหลัง 3-2-1 (พรีวิว embed)
- ใช้กับ #quiz-carry-embed-countdown ตอนพรีวิวจากเอดิเตอร์ · เก็บที่ carryEmbedCountdownTheme ใน quiz-settings.json · English: Overlay, inner card, digit color, and size (map = grid box / screen = center).
-
-
- รายการคำถาม
- รูปป้ายแต่ละช่อง: เลือกไฟล์แล้วกด «บันทึก» ได้เลย — ระบบจะรอให้อัปโหลดจบ แล้วค่อยบันทึก URL ลงเซิร์ฟ (หรือรอเห็น «อัปโหลดแล้ว» ก่อนก็ได้) · ปุ่มบันทึกไม่ ส่งไฟล์แทนการอัปโหลด · English: Pick plaque file then Save — we wait for upload to finish before writing URLs (Save does not replace the upload step).
-
-
- + เพิ่มคำถาม
- บันทึกชุดหลายตัวเลือก
-
-
-
-
-
- Quiz Battle — คำถาม 3 ตัวเลือก (สไตล์โดม)
- สร้างคำถามแบบ A / B / C แยกตามหมวด ให้สอดคล้องธีม Quiz Battle · เก็บที่ /Game/data/quiz-settings.json ฟิลด์ battleQuizMcq · ตัวอย่าง UI ด้านขวา (โดม + ป๊อปอัป) จำลองจากรีเฟอเรนซ์ในเกม
- เวลาอ่าน/ตอบใช้ร่วมกับแท็บ คำถามเกม ได้เมื่อนำไปผูกโหมดเล่นในอนาคต · English: MCQ with category; dome + modal preview for art direction.
-
-
-
-
ตัวอย่าง (ตามรีเฟอเรนซ์)
-
-
-
-
- 💻
- อาชญากรรมออนไลน์
-
-
PLAYERS : —
-
SCORE : —
-
-
-
-
-
-
-
-
-
×
-
QUESTION #1
-
การกระทำใดผิดกฎหมายไซเบอร์?
-
-
A ตัวอย่างตัวเลือก A
-
B ตัวอย่างตัวเลือก B
-
C ตัวอย่างตัวเลือก C
-
-
-
-
-
-
-
-
×
-
-
เย่! คุณตอบคำถามครบทุกข้อแล้ว มาสรุปคะแนนกัน
-
-
- ✓
- Correct
- 10
-
-
- 🕐
- Time Taken
- 27 m 33 s
-
-
- 🏆
- My Rank
- 11
-
-
-
-
-
-
-
-
-
-
-
- กระโดดให้รอด — ตั้งค่าเกม
- คนละโหมดกับ พรมแดง (Gauntlet) · เก็บที่ /Game/data/game-timing.json ฟิลด์ jumpSurviveJumpHeightMult · jumpSurviveMissionTimeSec · jumpSurvivePlatformTiles (3 ช่อง) · ผู้เล่นได้ค่าใหม่เมื่อโหลดหน้าเล่น / GET /api/game-timing · ถ้า API 404 ให้รีสตาร์ท Node ที่รัน Game/server.js
-
- ความสูงกระโดด
-
- ทวีคูณความสูงกระโดด × ความสูงตัว
-
-
- ใช้กับฉากประเภท กระโดดให้รอด เท่านั้น · ถ้าในแมปตั้ง jumpSurviveJumpImpulse > 0 จะใช้ค่านั้นแทน (override) · English: Jump height multiplier vs character height; per-map impulse overrides.
-
- จำกัดเวลารอบ (มินิเกม / ภารกิจกระโดดขึ้นแท่น)
-
- เวลารอบ (วินาที)
-
-
- นับจากเริ่มรอบจริง (หลังนับถอยหลัง) · ถ้าในแมปตั้ง jumpSurviveTimeSec > 0 จะใช้ค่าบนแมปแทนทั้งหมด · ไม่ใช่ค่าเดียวกับ "จำกัดเวลาเกม" ของพรมแดง · English: Per-map jumpSurviveTimeSec overrides this global default.
-
- รูปแพลตฟอร์ม 1–3 (ช่องยืนได้ — เลือกโหมดวาด 1/2/3 ใน Map Editor)
- แต่ละช่อง: URL + ความกว้าง/สูงเป็น พิกเซลในโลกเกม (เทียบกับขนาดไทล์แมป) · กว้าง/สูง = 0 ให้ใช้ขนาดเท่าไทล์หนึ่งช่อง · ว่าง URL = กราฟิก cyan เดิม · อัปโหลดไปที่ /Game/public/img/Jumper/ · English: Three platform sprites; W/H in world px (0 = one tile).
-
-
-
- บันทึก
-
-
-
-
-
- ยิงยานอวกาศ (Violent Crime / space_shooter) — เวลารอบ + รูปยานต่อช่อง
- เก็บที่ /Game/data/game-timing.json — spaceShooterMissionTimeSec · spaceShooterShipImageUrls · spaceShooterShipDamageOverlayUrls · spaceShooterAsteroidIntervalMs · spaceShooterAsteroidSpriteUrls + spaceShooterAsteroidExplodeFrameMs · ผู้เล่นได้ค่าใหม่เมื่อโหลดหน้าเล่น / GET /api/game-timing · อัปโหลด PNG ไปที่ /Game/public/img/ViolentCrime/ (โฟลเดอร์ไม่มีช่องว่าง ) · อัปโหลด overlay ผ่านคลัง Gauntlet (/Game/img/gauntlet-assets/)
-
- จำกัดเวลารอบ (ยิงอุกาบาต)
-
- เวลารอบ (วินาที)
-
-
-
- อุกาบาต — อัตราการเกิด (ความถี่ร่วง)
- ระยะห่างระหว่างเกิดดวงใหม่ (มิลลิวินาที) · ค่าน้อย = อุกาบาตถี่ขึ้น (เช่น 400 ถี่กว่า 2000) · 200–10000 ms · ทุกแมป space_shooter โหลดค่านี้จากเซิร์ฟเวอร์เมื่อเข้าเกม · ถ้าในแมปตั้ง spaceShooterAsteroidIntervalMs ≥ 200 จะใช้ค่าบนแมปแทนค่านี้ · English: Lower ms = denser rain. Map ≥200 overrides.
-
- ช่วงเวลาเกิด (ms)
-
-
-
- รูปยานต่อช่อง (spawn slot 1–6)
- ช่องตรงกับ shooterSpawnSlots บนแมป (1–6) · ว่าง = ใช้ยานวาดเวกเตอร์เดิม · English: One image URL per map slot; empty keeps the default vector ship.
-
-
-
- รอยความเสียหายทับยาน (ชนอุกาบาต ครั้งที่ 1–3)
- ใช้ PNG/WebP โปร่งพื้นหลัง · แสดงทับรูปยานตามจำนวนครั้งที่โดน (ก่อน OUT) · English: Three optional overlays for hit 1 / 2 / 3; scales with the ship footprint.
-
-
-
- อุกาบาต — PNG sequence
- แถวแรก = รูปตอนตก (loop ขณะล่วง) · แถวถัดไป = เฟรมแตกตามลำดับหลังโดนยิง/ชน · รวมได้สูงสุด 32 URL · อัปโหลดผ่านคลัง Gauntlet เหมือนรอยความเสียหาย · English: First row = falling sprite; add rows for explosion frames (max 31 extra).
-
- เฟรมแตก (ลำดับหลังยิง/ชน)
-
-
- + เพิ่มเฟรมแตก
- สูงสุด 31 แถว · English: Up to 31 explosion rows.
-
-
- เฟรมแตก (ms)
-
-
- นับจากเริ่มรอบในเกม · ถ้าในแมปตั้ง spaceShooterTimeSec > 0 จะใช้ค่าบนแมปแทนทั้งหมด · ตั้ง spaceShooterTimeSec = 0 บนแมป = ไม่จับเวลา
-
- บันทึก
-
-
-
-
-
- Minigame-7 — ยิง Mega Virus (balloon_boss)
- เก็บที่ /Game/data/game-timing.json · แมป balloonBossTimeSec ทับค่าด้านล่าง · แมป = 0 = ไม่จับเวลา · ถ้าแมปไม่ตั้งเวลา: ใช้ช่องล่าง (หรือ 120 วิ ถ้าใส่ 0) · English: Map time overrides; map 0 = unlimited; else global seconds below (or 120s if 0).
-
-
-
-
-
- เวลาเกม — พรมแดงสุดท้าย (Gauntlet)
- เก็บที่เซิร์ฟเวอร์เกม /Game/data/game-timing.json · หลังบันทึกห้องที่กำลังเล่นจะปรับความถี่ tick ทันที · ค่าจะส่งไปยังผู้เล่นผ่าน gauntlet-sync · จำกัดเวลา นับจากตอนโฮสต์เริ่มเกมพรมแดง — หมดเวลาแล้วเกมจบและส่งทุกคนกลับฉากล็อบบี้บนเซิร์ฟเวอร์ · ถ้าขึ้น Not Found ให้รีสตาร์ท Node ที่รัน Game/server.js (เช่น pm2 restart) หลัง deploy · เวลามินิเกมกระโดดขึ้นแท่น ตั้งที่แท็บ Minigame-5 · เวลายิงอุกาบาต ตั้งที่แท็บ Minigame-6
-
- พารามิเตอร์
-
- ความถี่ tick (มิลลิวินาที)
- เวลากระโดดขึ้น-ลง (tick)
- ความสูงกระโดด MG2 (×tile)
- จำกัดเวลาเกม (วินาที)
-
-
- ค่าเวลาเกม: ตั้ง 0 = ไม่จำกัด · ตั้งอย่างน้อย 10 วินาทีถ้าต้องการจับเวลา (สูงสุด 7200 = 2 ชม.) · Per-round time limit; 0 = no limit, else min 10 s, max 7200 s.
-
- รูปอุปสรรค์ Gauntlet / Obstacle & laser art
-
-
-
เลือกรูปจากคลัง → กด Lane / Laser ตามชิ้นส่วน (หัวบน · เส้น · ท้ายล่าง) แบบในเกม · โครง UI อ้างอิง Editor ฉาก
-
-
-
คลังรูป · Asset library
-
ลากวางหรือคลิกโซนอัปโหลด (png / jpg / gif / webp · สูงสุด 4 MB) · กด Lane / Laser บน·ล่าง·เส้น เพื่อใส่ในชุดที่ส่งเข้าเกม
-
- ลากรูปมาวางที่นี่ หรือคลิกเลือกไฟล์Drop images here or click to browse
-
-
-
-
-
-
-
-
Lane — สิ่งกีดขวางบนพรมแดง
-
กด Lane ที่การ์ดในคลังเพื่อเพิ่ม · เรียงลำดับด้วยลูกศร · ลบออกจากรายการที่นี่ (ไม่ลบไฟล์ในคลัง)
-
-
-
-
-
Laser — คอลัมน์แนวตั้ง (หัว · เส้น · ท้าย)
-
กด Laser บน / ล่าง / เส้น ที่คลัง · ดูหรือล้างช่องด้านล่าง · เส้นกลาง = tile ซ้ำแนวตั้งในเกม
-
-
-
หัวบน · Top emitter
-
-
-
- ดู
- ล้าง
-
-
-
-
เส้นกลาง (tile) · Beam
-
-
-
- ดู
- ล้าง
-
-
-
-
ท้ายล่าง · Bottom
-
-
-
- ดู
- ล้าง
-
-
-
-
-
-
-
-
-
-
- บันทึก
-
-
-
-
-
-
-
-
-
-
ตัวละคร (4 ทิศ)
-
อัปโหลดสกิน 4 ทิศหรือแบบเลเยอร์ และเลือกตัวที่ใช้ในล็อบบี้/เกม — เปิดแยกได้ที่ /Game/character.html
-
-
เต็มจอ
-
-
-
-
-
- บัญชีผู้ใช้ (รายการภายในระบบ)
- ใช้บันทึก / บล็อกผู้เล่นหรือบัญชีที่เชื่อมกับ Guest / Facebook / Google — ผู้เล่น Guest ใน Main-Lobby จะถูกสร้างอัตโนมัติและมี COINS ตามที่เก็บที่นี่
-
-
-
-
-
-
- ชื่อ
- อีเมล
- ประเภท
- Provider ID
- COINS
- สถานะ
-
-
-
-
-
-
-
-
-
-
- กระดานผู้นำ — High Score
- อันดับจาก คะแนนสะสม ที่ผู้เล่นได้จากการติดอันดับในมินิเกม (สะสมถาวร ไม่ลดเมื่อใช้เหรียญ) · แก้ไข/รีเซ็ตได้
-
- รีเฟรช
- รีเซ็ตคะแนนทั้งหมด
-
-
-
-
-
- อันดับ
- ชื่อผู้เล่น
- คะแนนสะสม
- COINS
-
-
-
-
-
-
-
-
-
-
- Achievements
- จัดการ แคตตาล็อก รางวัล (ชื่อ/คำอธิบาย/เป้าหมาย/เปิด-ปิด) และ ความคืบหน้ารายผู้เล่น · แสดงผลในหน้าโปรไฟล์ผู้เล่น 5 หมวด
-
-
- แคตตาล็อก
- รายผู้เล่น
-
-
-
-
- บันทึกแคตตาล็อก
- โหลดใหม่
- คืนค่าเริ่มต้น
-
-
-
-
-
- หมวด
- ชื่อ (EN)
- คำอธิบาย (TH)
- เป้าหมาย
- เปิด
-
-
-
-
-
-
-
-
-
-
-
- รีเฟรช
-
-
-
-
-
- ชื่อผู้เล่น
- playerKey
- ปลดล็อก
- COINS
-
-
-
-
-
-
-
-
ความคืบหน้า:
-
- รีเซ็ตของผู้เล่นนี้
-
-
-
-
-
- รางวัล
- ความคืบหน้า
-
-
-
-
-
-
-
-
-
-
-
-
- เวลาโหวต
- ตั้งเวลานับถอยหลังของการโหวตในเกม (วินาที) · มีผลเมื่อผู้เล่นรีเฟรชหน้าเล่น/เข้าห้องใหม่
-
-
-
-
-
- จบคดี
- เลือกว่าเมื่อจบคดี (หลังโชว์ผล + หน้าให้ความรู้ "รู้ทันภัยไซเบอร์") จะพาผู้เล่นไปไหนต่อ · มีผลเมื่อผู้เล่นรีเฟรช/เข้าห้องใหม่
-
-
-
-
-
- บทตัวป่วน
- ตั้งเวลาเกี่ยวกับการเสนอ/รับ "บทตัวป่วน" หลังจบคดี · มีผลเมื่อผู้เล่นรีเฟรช/เข้าห้องใหม่ · ปุ่ม บังคับข้ามเงื่อนไข ≥4 คน อยู่แท็บ Test Mode
-
- • เวลาเสนอ = เวลาสูงสุดที่ระบบรอให้ทุกคนพร้อม ก่อนสุ่มเลือกผู้รับบท (ถ้าพร้อมก่อน เสนอเร็วกว่านี้) • เวลารับ = นับถอยหลังให้ผู้ถูกเลือกกดรับ/ปฏิเสธบทตัวป่วน
-
-
-
-
- 🔊 ระดับเสียง
- ตั้งระดับเสียงรวมของเกม (0–100%) · มีผลกับทุกผู้เล่นเมื่อรีเฟรช/เข้าฉากใหม่ · การเปิด/ปิด Music/SFX ผู้เล่นตั้งเองในโปรไฟล์
-
- • BGM จะหรี่อัตโนมัติตอนมีคนพูดไมค์ (กันเสียงคนโดนกลบ) — ค่านี้คือระดับปกติ • แนะนำ Master 100% · Music ~35% · SFX ~75%
-
-
-
-
- บัญชีแอดมิน
- เฉพาะ super admin เท่านั้นที่เพิ่ม/ลบแอดมินได้
-
-
- ตั้งรหัสใหม่ให้แอดมินอื่น (super)
- ไม่ต้องรู้รหัสเดิม — ใช้เมื่อผู้ใช้ลืมรหัส
-
-
-
-
-
-
- ชื่อผู้ใช้
- บทบาท
- สร้างเมื่อ
-
-
-
-
-
-
-
-
-
-
- Test Mode (โหมดทดสอบ)
- เปิดเพื่อเปิดใช้ shortcut ทดสอบในเกม โดยทั่วไปควรปิดในการใช้งานจริงของผู้เล่น
-
-
-
-
- ปิดอยู่
-
- บันทึกในเครื่องนี้เท่านั้น (localStorage)
-
-
- Shortcuts ที่เปิดเมื่อ Test Mode = ON
-
- Ctrl + 1 / 2 / 3 — ในหน้าเลือกผู้ต้องสงสัย: เก็บหลักฐาน 1 ใบให้ suspect คนนั้นทันที (เทียบเท่าเล่นมินิเกมจบ 1 ครั้ง)
- กดครบ 3 ปุ่ม → ปุ่ม "ชี้ตัวคนร้าย" โผล่
-
- Ctrl + Q — ในเกมตอนคำถามพิเศษ (Special Quiz) เปิดอยู่: ตอบข้อปัจจุบันให้ถูกอัตโนมัติ
- เซิร์ฟเวอร์เป็นผู้เติมคำตอบที่ถูก (กันโกง) — ใช้ทดสอบ flow รับการ์ดพิเศษได้เร็ว
-
- Ctrl + Alt + 1 / 2 / 3 — ที่หน้าห้อง LobbyB: พรีวิว "หน้าผลตัดสินคดี" โดยไม่ต้องเล่นจบ
- 1 = โหวตถูก (เรือนจำ → โพเดียมผู้ชนะ) · 2 = โหวตผิด (ตัวป่วนชนะ) · 3 = สลับ มี/ไม่มีตัวป่วน (ดูสถานะในแชต) · ตัวป่วนจำลองใช้ผู้เล่น/บอทคนแรก
-
- Ctrl + Alt + W — ที่หน้าห้อง LobbyB ก่อนโหวตชี้คนร้าย: บังคับให้รอบโหวตถัดไป "นับเป็นโหวตผิด"
- ถ้ามี การ์ด 5 (จับผิดตัว) ค้างอยู่ → จะทริกให้ โหวตใหม่ 1 ครั้ง ทันที — ใช้เทสต์การ์ด 5
-
-
-
-
-
- บังคับมินิเกม (เทสต์ตอนเล่นจริง)
- เลือกเกมต่อการ์ดผู้ต้องสงสัย 3 ใบ → บันทึก → เริ่มคดีใหม่ (สร้างห้อง → LobbyA → เลือกคดี → LobbyB) · ช่องที่เลือก "— สุ่ม —" จะสุ่มจาก 7 เกมเหมือนเดิม · เลือก "— สุ่ม —" ครบทั้ง 3 ช่อง = กลับเป็นปกติ
-
- การ์ดใบที่ 1
-
- — สุ่ม —
- Minigame-1 จริงหรือไม่
- Minigame-2 วิ่งหลบสิ่งกีดขวาง
- Minigame-3 Tower block
- Minigame-4 คำศัพท์ในกระบวนการยุติธรรม
- Minigame-5 กระโดดขึ้นแท่น
- Minigame-6 ยิงอุกาบาต Violent Crime
- Minigame-7 ยิง Mega Virus
-
-
- การ์ดใบที่ 2
-
- — สุ่ม —
- Minigame-1 จริงหรือไม่
- Minigame-2 วิ่งหลบสิ่งกีดขวาง
- Minigame-3 Tower block
- Minigame-4 คำศัพท์ในกระบวนการยุติธรรม
- Minigame-5 กระโดดขึ้นแท่น
- Minigame-6 ยิงอุกาบาต Violent Crime
- Minigame-7 ยิง Mega Virus
-
-
- การ์ดใบที่ 3
-
- — สุ่ม —
- Minigame-1 จริงหรือไม่
- Minigame-2 วิ่งหลบสิ่งกีดขวาง
- Minigame-3 Tower block
- Minigame-4 คำศัพท์ในกระบวนการยุติธรรม
- Minigame-5 กระโดดขึ้นแท่น
- Minigame-6 ยิงอุกาบาต Violent Crime
- Minigame-7 ยิง Mega Virus
-
-
- บันทึก
-
-
-
- บังคับการ์ดพิเศษ → เกม (เทสต์)
- เลือกว่าจะให้ "การ์ดพิเศษใบไหน" ขึ้นใน "เกมไหน" → เกมที่ตั้งไว้คำถามพิเศษจะขึ้นแน่นอน และให้การ์ดใบนั้น · ต้องมีคำถามพิเศษของ Level×Case นั้นด้วย · "— ไม่บังคับ —" = ปกติ (สุ่ม 1/3)
-
- บันทึก
-
-
- บังคับเสนอบท "ตัวป่วน" (เทสต์)
- ปกติบทตัวป่วนจะเสนอเฉพาะเมื่อมีคนจริงตั้งแต่ 4 คนขึ้นไป · เปิดอันนี้เพื่อบังคับให้ขึ้นเสมอ แม้เล่นคนเดียว (ไว้เทสต์)
-
-
- บังคับเสนอบทตัวป่วน (ข้ามเงื่อนไข ≥ 4 คน)
-
- บันทึก
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+ Admin — JD JUSTICE DIVERS
+
+
+
+
+
+
+ ข้ามไปเนื้อหา
+
+
+
+
+
+
+ ตั้งค่าครั้งแรก
+ สร้างบัญชีแอดมินหลัก (super) — ใช้ชื่อผู้ใช้ admin
+
+
+
+
+
+ เข้าสู่ระบบ Admin
+
+
+
+
+
+
+
+
+
+ ไม่พบเมนูที่ค้นหา
+ ทั่วไป & ฉาก
+ OAuth Facebook / Google
+ Editor ฉาก แผนที่ฉาก / โซนเกม
+ Editor แผนที่ Quiz Battle เส้นทาง · โดม · จุดเกิด (10 ห้อง)
+ ตั้งค่า AI แชท ผู้ช่วย AI ในเกม · ล็อกอินแยก
+ รหัสผ่าน เปลี่ยนรหัสของคุณ · กดซ้ำเพื่อปิด
+
+ มินิเกม
+ Minigame-1-จริงหรือไม่
+ Minigame-2-วิ่งหลบสิ่งกีดขวาง
+ Minigame-3-Tower block
+ Minigame-4-คำศัพท์ในกระบวนการยุติธรรม
+ Quiz Battle โดม · A B C · หมวด
+ Minigame-5-กระโดดขึ้นแท่น
+ Minigame-6-ยิงอุกาบาต Violent Crime
+ Minigame-7-ยิง Mega Virus
+
+ คำถาม & การ์ดพิเศษ
+ ชุดคำถามพิเศษ 15 ชุด (Level × Case) · การ์ดรางวัล
+ เวลาโหวต Silence/Ban · ชี้ตัวคนร้าย
+ จบคดี Main-Lobby หรือ LobbyA
+ บทตัวป่วน เวลาเสนอ · เวลารับ
+ การ์ดหลักฐาน 3 คดี × ผู้ต้องสงสัย × 3 ใบ · รูป/ข้อความ
+ รูปคดี & Cutscene 15 คดี · รูปเลือกคดี/รายละเอียด/เรื่องราว 2 รูป
+
+ ระบบ & บัญชี
+ ตัวละคร อัปโหลด · เลือกใช้ในเกม
+ ผู้ใช้ บัญชี & COINS
+ กระดานผู้นำ High Score · คะแนนสะสม
+ Achievements รางวัล · ความคืบหน้ารายผู้เล่น
+ แอดมิน สิทธิ์ระบบ
+ Test Mode เปิด hotkeys ทดสอบเกม
+ 🔊 เสียง ระดับเสียง Master / Music / SFX
+
+
+
+
+
+ เปลี่ยนรหัสผ่านของคุณ
+ ใช้รหัสปัจจุบันยืนยันก่อนตั้งรหัสใหม่ (ทุกแอดมินใช้ได้) · กดแท็บ "รหัสผ่าน" อีกครั้งเพื่อปิด และกลับไป OAuth
+
+
+
+
+
+ Token & OAuth (Facebook / Google)
+ เก็บ App ID / Client ID / Secret และ Redirect URI สำหรับ Login — หน้า Login จะดึงเฉพาะค่าที่ไม่เป็นความลับผ่าน oauth-public.php
+
+
+
+
+
+
+
+
Editor ฉาก (Lobby / ZEP / กบ / ตอบคำถาม)
+
สร้างและบันทึกแผนที่ — ใช้รหัสฉากตอนสร้างห้องในล็อบบี้ · คลิกซ้ายวาด / คลิกขวาลบ · ห้องโถง: พื้นที่เริ่มเกม (ส้ม) · เกมตอบคำถาม : วาดโซนถูก/ผิด + พื้นที่โชว์คำถาม (ทอง) — ข้อความคำถามจากแท็บ Minigame-1-จริงหรือไม่ · เลื่อนแถบเครื่องมือด้านบน ได้แยกจากพื้นที่วาด
+
+
เต็มจอ
+
+
+
+
+
+
+
+
Editor แผนที่ Quiz Battle
+
แก้แผนที่ห้อง Quiz Battle (qbroom 1–10) — เลือกห้องจากเมนูในตัว editor · วาดเส้นทาง / โดม / จุดเกิด · คลิกซ้ายวาด คลิกขวาลบ
+
+
เต็มจอ
+
+
+
+
+
+
+
+
ตั้งค่า AI แชท (Admin)
+
ตั้งค่าผู้ช่วย AI ในเกม — หน้านี้มีการล็อกอินแยกของตัวเอง (ไม่ใช่ session Admin นี้)
+
+
เต็มจอ
+
+
+
+
+
+
+
+ ชุดคำถามพิเศษ — รับการ์ดพิเศษ
+ มี 15 ชุด = ระดับ (Level 1–5) × คดี (Case 1–3) · แต่ละชุดมีคำถามเป็นของตัวเอง (สุ่มมาเล่นในเกม) และให้ การ์ดพิเศษ 1 ใบ เป็นรางวัล · เก็บที่ specialQuizSets ใน quiz-settings.json · English: 15 sets (Level × Case), multiple-choice (A/B/C/D), each grants one special card.
+
+
+ เวลาไอคอนอยู่บนฉาก (ทุกชุด)
+ ไอคอนคำถามพิเศษตอนขึ้นต้นเกม จะหายไปเอง ถ้าไม่มีใครเก็บภายในเวลาที่ตั้ง · 0 = ไม่หาย (อยู่จนจบเกม) · เก็บที่ specialQuizIconExpireSec ใน game-timing.json
+
+ หายไปใน
+
+ วินาที
+ บันทึก
+
+
+
+
+
+ 1 เลือก ระดับ + คดี ที่จะแก้
+ 2 ตั้ง การ์ดพิเศษ ของชุดนั้น
+ 3 ใส่ คำถาม แล้วกด บันทึก
+
+
+
+ 1 · เลือกชุดที่จะแก้ไข
+
+ ระดับ (Level)
+
+ ระดับ 1 · ROOKIE
+ ระดับ 2
+ ระดับ 3
+ ระดับ 4
+ ระดับ 5
+
+
+ คดี (Case)
+
+ คดี 1 · คดีโจรกรรมไซเบอร์
+ คดี 2 · คดีปล้นร้านอัญมณี
+ คดี 3
+
+
+ ชุดที่แก้: L1_C1
+
+
+
+
+ 2 · การ์ดพิเศษของชุดนี้
+ เลือกการ์ดจากชุดโบนัส /Game/img/special-cards/ (card-1 ถึง card-7) — แสดงในโซน «โบนัสพิเศษ» ตาม mockup สรุปผล · English: Pick one bonus card asset (Time Dilation, Bail Coin, Free Evidence, etc.)
+
+
+
+
ตัวอย่างการ์ดที่เลือก
+
+
+
+
+
+
+
+ ชื่อการ์ด (ไทย)
+
+
+ ชื่อการ์ด (อังกฤษ)
+
+
+ ระดับการ์ด
+
+ Common
+ Rare
+ Legendary
+
+
+
+
+
+
+ 3 · คำถามของชุดนี้
+ รูปแบบ ตัวเลือก A B C D — กรอกตัวเลือกแล้วเลือก “คำตอบที่ถูก” 1 ข้อ (อย่างน้อย 2 ตัวเลือกต่อข้อ) · สุ่มมาเล่นตามจำนวน “สุ่มสูงสุดกี่ข้อต่อรอบ” ที่ตั้งในแท็บ Minigame-1-จริงหรือไม่
+
+
+ + เพิ่มคำถาม
+ บันทึกชุดคำถามพิเศษทั้งหมด (15 ชุด)
+
+
+
+
+
+
+ การ์ดหลักฐาน — แฟ้มหลักฐาน LobbyB
+ มี 15 คดี · แต่ละคดีมี ผู้ต้องสงสัย 3 คน · ตั้ง ชื่อผู้ต้องสงสัย + เลือก โฟลเดอร์รูป (suspect-1/2/3) ได้ · การ์ดเป็นรูปอย่างเดียว โดยระดับ (rarity) คิดอัตโนมัติจากเลขไฟล์: Card-01–22 = ธรรมดา, Card-23–44 = Rare, Card-45–54 = ชี้คนร้าย · ตอนจบมินิเกมระบบจะสุ่มการ์ดตามเกรดของทีม (A/B/C) · เก็บที่ /Game/data/evidence-cards.json
+
+
+ เลือกคดีที่จะแก้
+
+ คดี (Case)
+
+
+ กำลังแก้: คดี 1
+
+
+
+
+
+
+ บันทึกการ์ดหลักฐานทั้งหมด (15 คดี)
+
+
+
+
+
+
+
+ คำถามหลายตัวเลือก (หยิบมาวาง)
+ ใช้กับฉากประเภท ตอบคำถาม — หยิบคำตอบมาวางกลาง ใน Editor — ผู้เล่นหยิบตัวเลือกไปวางโซนกลาง · ถ้ามีรายการที่นี่ เกมจะใช้เฉพาะชุดนี้ (ไม่ผสมกับคำถามถูก/ผิดแท็บคำถามเกม) · เก็บที่ /Game/data/quiz-settings.json ฟิลด์ carryQuestions
+ อย่างน้อย 2 ตัวเลือก ต่อข้อ (สูงสุด 6) · English: Per-round timing below applies only to quiz carry (after 3-2-1 in embed preview: question first, then options).
+
+ อ่านคำถามก่อนหยิบตัวเลือก (วินาที)
+
+ 0 = แสดงตัวเลือกทันทีหลังคำถามขึ้น · สูงสุด 120 วิ
+
+ เวลาตอบหลังตัวเลือกขึ้น (วินาที)
+
+ นับจากเมื่อหยิบได้ · สูงสุด 300 วิ
+
+ จำนวนข้อต่อเซสชัน (หยิบมาวาง)
+
+ ใช้กับแมป หยิบมาวาง (เช่น mnorwqx1) ทั้ง preview และ flow สืบสวนจริง · สุ่มจากชุด carryQuestions จนครบจำนวนนี้ · 0 = เล่นต่อไม่จบอัตโนมัติ · ไม่ใช้กับ mng8a80o — เกมถูก/ผิดใช้ «จำนวนข้อต่อรอบ» แท็บคำถามเกม
+
+
+
+ ความเร็วเดิน — รหัสฉาก (map id)
+
+ ใส่รหัสฉาก จาก Editor (หลังบันทึก) ให้ตรงกับแมปที่ต้องการ · ว่าง = ไม่ override · เก็บที่ carryWalkSpeedMultForMapId · English: Scene id must match the map you want to speed up.
+
+ คูณความเร็วเดิน (0.5–3)
+
+ ใช้เฉพาะเมื่อรหัสฉากตรงกับห้องเล่น/พรีวิว · ค่าเริ่มในเกมถ้าไม่ตั้ง = 1.42 · carryWalkSpeedMult
+
+
+
+ แผงข้อความบนแผนที่ (คำถาม / ตัวเลือกที่ถือ)
+ ใช้กับ #quiz-map-question-panel ในโหมดหยิบมาวาง (โซนทองหรือโซนกลาง) · เก็บที่ carryMapPanelTheme ใน quiz-settings.json · English: Color pickers + alpha (0–100%) — saved as rgba().
+ ทำไมไม่เห็นเปลี่ยน? แผงนี้แสดงเฉพาะในหน้า เล่นเกม (/Game/play.html) ขณะแมปเป็น quiz_carry และมีข้อความคำถาม — ไม่แสดงในหน้า Admin นี้ · ถ้า โปร่ง A = 0% กับพื้นหลังหรือขอบ = โปร่งใสทั้งหมด จะไม่เห็นสีนั้น · ความหนาขอบ 0 px = ไม่มีเส้นขอบ · ลองโปร่ง 70–90% และขอบ 2 px แล้วเปิดพรีวิว/เล่น · English: This panel is only on play (not Admin). 0% alpha = fully transparent color; 0 px border = no stroke.
+
+
+
+
+ ความหนาขอบ (px)
+
+
+
+
+
+ ขั้นต่ำ (px)
+
+
+ เพดานขนาด (px)
+
+
+
+
ในเกมใช้สูตรเดียวกับป้ายคำตอบบนพื้น : clamp(10, 24, tileSize×zoom×0.24×carryChoicePlaqueMapScale) แล้ว clamp อีกชั้นด้วยค่าสองช่องนี้ · English: Same px formula as floor answer plaques; theme min/max clamp on top.
+
+
+
+ ป้ายตัวเลือกบนแผนที่ (กล่องหยิบมาวาง) — ช่อง 1–16
+ แต่ละช่องตรงกับ โซนตัวเลือก 1–16 บนแมป · เก็บที่ carryChoicePlaqueThemes · Neon = ขอบตามเลขช่อง · สีขอบคงที่ = ใช้ picker ด้านล่าง · รูปช่องใช้เมื่อคำถามนั้นไม่มีรูปแยก · รูปคำถามทับช่อง · ขนาดป้ายบนแมป ปรับที่กล่องสีเขียวถัดลงนี้ (ไม่ใช่ในแต่ละช่อง) · English: Per-slot = colors/URL; map size = green panel below; Save quiz-carry.
+
+
ปรับขนาดป้าย + รูปบนแมป
+
เลื่อนแถบหรือพิมพ์ตัวเลข (×) — ขยายทั้งกล่องป้ายและตัวอักษรบนแมป · จบด้วยปุ่ม บันทึกชุดหลายตัวเลือก ด้านล่าง · English: Slider or number, then Save.
+
+ เลื่อนขยาย
+
+
+ ค่า ×
+
+
+ × 1.25
+
+
carryChoicePlaqueMapScale · 1 = ปกติ · 1.5–2.0 ถ้าต้องการใหญ่ชัด
+
+
+
+
+ นับถอยหลัง 3-2-1 (พรีวิว embed)
+ ใช้กับ #quiz-carry-embed-countdown ตอนพรีวิวจากเอดิเตอร์ · เก็บที่ carryEmbedCountdownTheme ใน quiz-settings.json · English: Overlay, inner card, digit color, and size (map = grid box / screen = center).
+
+
+ รายการคำถาม
+ รูปป้ายแต่ละช่อง: เลือกไฟล์แล้วกด «บันทึก» ได้เลย — ระบบจะรอให้อัปโหลดจบ แล้วค่อยบันทึก URL ลงเซิร์ฟ (หรือรอเห็น «อัปโหลดแล้ว» ก่อนก็ได้) · ปุ่มบันทึกไม่ ส่งไฟล์แทนการอัปโหลด · English: Pick plaque file then Save — we wait for upload to finish before writing URLs (Save does not replace the upload step).
+
+
+ + เพิ่มคำถาม
+ บันทึกชุดหลายตัวเลือก
+
+
+
+
+
+ Quiz Battle — คำถาม 3 ตัวเลือก (สไตล์โดม)
+ สร้างคำถามแบบ A / B / C แยกตามหมวด ให้สอดคล้องธีม Quiz Battle · เก็บที่ /Game/data/quiz-settings.json ฟิลด์ battleQuizMcq · ตัวอย่าง UI ด้านขวา (โดม + ป๊อปอัป) จำลองจากรีเฟอเรนซ์ในเกม
+ เวลาอ่าน/ตอบใช้ร่วมกับแท็บ คำถามเกม ได้เมื่อนำไปผูกโหมดเล่นในอนาคต · English: MCQ with category; dome + modal preview for art direction.
+
+
+
+
เปิด/ปิดโหมด & กำหนดวันหมดเขต
+
+ เลือกว่าจะเปิดห้องไหนให้ผู้เล่นเข้าได้ และเล่นได้ถึงเมื่อไหร่ ·
+ เวลาที่กรอกคือเวลาไทย (Asia/Bangkok) · เว้นว่าง = ไม่มีวันหมดเขต ·
+ เก็บที่ /Game/data/quiz-battle-modes.json
+
+
+
+ โหลดใหม่
+ เปิดทั้งหมด
+ ปิดทั้งหมด
+ แก้ค่าในตารางแล้ว กด “บันทึกโหมด” ด้านล่าง
+
+
+
+
+ ห้อง
+ หัวข้อ
+ เปิดให้เล่น
+ คน/ห้อง (≤50)
+ เล่นได้ถึง (เวลาไทย)
+ สถานะตอนนี้
+
+
+
+
+
+
+ 💾 บันทึกโหมด
+
+
+
+
+
+
+
+
ตัวอย่าง (ตามรีเฟอเรนซ์)
+
+
+
+
+ 💻
+ อาชญากรรมออนไลน์
+
+
PLAYERS : —
+
SCORE : —
+
+
+
+
+
+
+
+
+
×
+
QUESTION #1
+
การกระทำใดผิดกฎหมายไซเบอร์?
+
+
A ตัวอย่างตัวเลือก A
+
B ตัวอย่างตัวเลือก B
+
C ตัวอย่างตัวเลือก C
+
+
+
+
+
+
+
+
×
+
+
เย่! คุณตอบคำถามครบทุกข้อแล้ว มาสรุปคะแนนกัน
+
+
+ ✓
+ Correct
+ 10
+
+
+ 🕐
+ Time Taken
+ 27 m 33 s
+
+
+ 🏆
+ My Rank
+ 11
+
+
+
+
+
+
+
+
+
+
+
+ กระโดดให้รอด — ตั้งค่าเกม
+ คนละโหมดกับ พรมแดง (Gauntlet) · เก็บที่ /Game/data/game-timing.json ฟิลด์ jumpSurviveJumpHeightMult · jumpSurviveMissionTimeSec · jumpSurvivePlatformTiles (3 ช่อง) · ผู้เล่นได้ค่าใหม่เมื่อโหลดหน้าเล่น / GET /api/game-timing · ถ้า API 404 ให้รีสตาร์ท Node ที่รัน Game/server.js
+
+ ความสูงกระโดด
+
+ ทวีคูณความสูงกระโดด × ความสูงตัว
+
+
+ ใช้กับฉากประเภท กระโดดให้รอด เท่านั้น · ถ้าในแมปตั้ง jumpSurviveJumpImpulse > 0 จะใช้ค่านั้นแทน (override) · English: Jump height multiplier vs character height; per-map impulse overrides.
+
+ จำกัดเวลารอบ (มินิเกม / ภารกิจกระโดดขึ้นแท่น)
+
+ เวลารอบ (วินาที)
+
+
+ นับจากเริ่มรอบจริง (หลังนับถอยหลัง) · ถ้าในแมปตั้ง jumpSurviveTimeSec > 0 จะใช้ค่าบนแมปแทนทั้งหมด · ไม่ใช่ค่าเดียวกับ "จำกัดเวลาเกม" ของพรมแดง · English: Per-map jumpSurviveTimeSec overrides this global default.
+
+ รูปแพลตฟอร์ม 1–3 (ช่องยืนได้ — เลือกโหมดวาด 1/2/3 ใน Map Editor)
+ แต่ละช่อง: URL + ความกว้าง/สูงเป็น พิกเซลในโลกเกม (เทียบกับขนาดไทล์แมป) · กว้าง/สูง = 0 ให้ใช้ขนาดเท่าไทล์หนึ่งช่อง · ว่าง URL = กราฟิก cyan เดิม · อัปโหลดไปที่ /Game/public/img/Jumper/ · English: Three platform sprites; W/H in world px (0 = one tile).
+
+
+
+ บันทึก
+
+
+
+
+
+ ยิงยานอวกาศ (Violent Crime / space_shooter) — เวลารอบ + รูปยานต่อช่อง
+ เก็บที่ /Game/data/game-timing.json — spaceShooterMissionTimeSec · spaceShooterShipImageUrls · spaceShooterShipDamageOverlayUrls · spaceShooterAsteroidIntervalMs · spaceShooterAsteroidSpriteUrls + spaceShooterAsteroidExplodeFrameMs · ผู้เล่นได้ค่าใหม่เมื่อโหลดหน้าเล่น / GET /api/game-timing · อัปโหลด PNG ไปที่ /Game/public/img/ViolentCrime/ (โฟลเดอร์ไม่มีช่องว่าง ) · อัปโหลด overlay ผ่านคลัง Gauntlet (/Game/img/gauntlet-assets/)
+
+ จำกัดเวลารอบ (ยิงอุกาบาต)
+
+ เวลารอบ (วินาที)
+
+
+
+ อุกาบาต — อัตราการเกิด (ความถี่ร่วง)
+ ระยะห่างระหว่างเกิดดวงใหม่ (มิลลิวินาที) · ค่าน้อย = อุกาบาตถี่ขึ้น (เช่น 400 ถี่กว่า 2000) · 200–10000 ms · ทุกแมป space_shooter โหลดค่านี้จากเซิร์ฟเวอร์เมื่อเข้าเกม · ถ้าในแมปตั้ง spaceShooterAsteroidIntervalMs ≥ 200 จะใช้ค่าบนแมปแทนค่านี้ · English: Lower ms = denser rain. Map ≥200 overrides.
+
+ ช่วงเวลาเกิด (ms)
+
+
+
+ รูปยานต่อช่อง (spawn slot 1–6)
+ ช่องตรงกับ shooterSpawnSlots บนแมป (1–6) · ว่าง = ใช้ยานวาดเวกเตอร์เดิม · English: One image URL per map slot; empty keeps the default vector ship.
+
+
+
+ รอยความเสียหายทับยาน (ชนอุกาบาต ครั้งที่ 1–3)
+ ใช้ PNG/WebP โปร่งพื้นหลัง · แสดงทับรูปยานตามจำนวนครั้งที่โดน (ก่อน OUT) · English: Three optional overlays for hit 1 / 2 / 3; scales with the ship footprint.
+
+
+
+ อุกาบาต — PNG sequence
+ แถวแรก = รูปตอนตก (loop ขณะล่วง) · แถวถัดไป = เฟรมแตกตามลำดับหลังโดนยิง/ชน · รวมได้สูงสุด 32 URL · อัปโหลดผ่านคลัง Gauntlet เหมือนรอยความเสียหาย · English: First row = falling sprite; add rows for explosion frames (max 31 extra).
+
+ เฟรมแตก (ลำดับหลังยิง/ชน)
+
+
+ + เพิ่มเฟรมแตก
+ สูงสุด 31 แถว · English: Up to 31 explosion rows.
+
+
+ เฟรมแตก (ms)
+
+
+ นับจากเริ่มรอบในเกม · ถ้าในแมปตั้ง spaceShooterTimeSec > 0 จะใช้ค่าบนแมปแทนทั้งหมด · ตั้ง spaceShooterTimeSec = 0 บนแมป = ไม่จับเวลา
+
+ บันทึก
+
+
+
+
+
+ Minigame-7 — ยิง Mega Virus (balloon_boss)
+ เก็บที่ /Game/data/game-timing.json · แมป balloonBossTimeSec ทับค่าด้านล่าง · แมป = 0 = ไม่จับเวลา · ถ้าแมปไม่ตั้งเวลา: ใช้ช่องล่าง (หรือ 120 วิ ถ้าใส่ 0) · English: Map time overrides; map 0 = unlimited; else global seconds below (or 120s if 0).
+
+
+
+
+
+ เวลาเกม — พรมแดงสุดท้าย (Gauntlet)
+ เก็บที่เซิร์ฟเวอร์เกม /Game/data/game-timing.json · หลังบันทึกห้องที่กำลังเล่นจะปรับความถี่ tick ทันที · ค่าจะส่งไปยังผู้เล่นผ่าน gauntlet-sync · จำกัดเวลา นับจากตอนโฮสต์เริ่มเกมพรมแดง — หมดเวลาแล้วเกมจบและส่งทุกคนกลับฉากล็อบบี้บนเซิร์ฟเวอร์ · ถ้าขึ้น Not Found ให้รีสตาร์ท Node ที่รัน Game/server.js (เช่น pm2 restart) หลัง deploy · เวลามินิเกมกระโดดขึ้นแท่น ตั้งที่แท็บ Minigame-5 · เวลายิงอุกาบาต ตั้งที่แท็บ Minigame-6
+
+ พารามิเตอร์
+
+ ความถี่ tick (มิลลิวินาที)
+ เวลากระโดดขึ้น-ลง (tick)
+ ความสูงกระโดด MG2 (×tile)
+ จำกัดเวลาเกม (วินาที)
+
+
+ ค่าเวลาเกม: ตั้ง 0 = ไม่จำกัด · ตั้งอย่างน้อย 10 วินาทีถ้าต้องการจับเวลา (สูงสุด 7200 = 2 ชม.) · Per-round time limit; 0 = no limit, else min 10 s, max 7200 s.
+
+ รูปอุปสรรค์ Gauntlet / Obstacle & laser art
+
+
+
เลือกรูปจากคลัง → กด Lane / Laser ตามชิ้นส่วน (หัวบน · เส้น · ท้ายล่าง) แบบในเกม · โครง UI อ้างอิง Editor ฉาก
+
+
+
คลังรูป · Asset library
+
ลากวางหรือคลิกโซนอัปโหลด (png / jpg / gif / webp · สูงสุด 4 MB) · กด Lane / Laser บน·ล่าง·เส้น เพื่อใส่ในชุดที่ส่งเข้าเกม
+
+ ลากรูปมาวางที่นี่ หรือคลิกเลือกไฟล์Drop images here or click to browse
+
+
+
+
+
+
+
+
Lane — สิ่งกีดขวางบนพรมแดง
+
กด Lane ที่การ์ดในคลังเพื่อเพิ่ม · เรียงลำดับด้วยลูกศร · ลบออกจากรายการที่นี่ (ไม่ลบไฟล์ในคลัง)
+
+
+
+
+
Laser — คอลัมน์แนวตั้ง (หัว · เส้น · ท้าย)
+
กด Laser บน / ล่าง / เส้น ที่คลัง · ดูหรือล้างช่องด้านล่าง · เส้นกลาง = tile ซ้ำแนวตั้งในเกม
+
+
+
หัวบน · Top emitter
+
+
+
+ ดู
+ ล้าง
+
+
+
+
เส้นกลาง (tile) · Beam
+
+
+
+ ดู
+ ล้าง
+
+
+
+
ท้ายล่าง · Bottom
+
+
+
+ ดู
+ ล้าง
+
+
+
+
+
+
+
+
+
+
+ บันทึก
+
+
+
+
+
+
+
+
+
+
ตัวละคร (4 ทิศ)
+
อัปโหลดสกิน 4 ทิศหรือแบบเลเยอร์ และเลือกตัวที่ใช้ในล็อบบี้/เกม — เปิดแยกได้ที่ /Game/character.html
+
+
เต็มจอ
+
+
+
+
+
+ บัญชีผู้ใช้ (รายการภายในระบบ)
+ ใช้บันทึก / บล็อกผู้เล่นหรือบัญชีที่เชื่อมกับ Guest / Facebook / Google — ผู้เล่น Guest ใน Main-Lobby จะถูกสร้างอัตโนมัติและมี COINS ตามที่เก็บที่นี่
+
+
+
+
+
+
+ ชื่อ
+ อีเมล
+ ประเภท
+ Provider ID
+ COINS
+ สถานะ
+
+
+
+
+
+
+
+
+
+
+ กระดานผู้นำ — High Score
+ อันดับจาก คะแนนสะสม ที่ผู้เล่นได้จากการติดอันดับในมินิเกม (สะสมถาวร ไม่ลดเมื่อใช้เหรียญ) · แก้ไข/รีเซ็ตได้
+
+ รีเฟรช
+ รีเซ็ตคะแนนทั้งหมด
+
+
+
+
+
+ อันดับ
+ ชื่อผู้เล่น
+ คะแนนสะสม
+ COINS
+
+
+
+
+
+
+
+
+
+
+ Achievements
+ จัดการ แคตตาล็อก รางวัล (ชื่อ/คำอธิบาย/เป้าหมาย/เปิด-ปิด) และ ความคืบหน้ารายผู้เล่น · แสดงผลในหน้าโปรไฟล์ผู้เล่น 5 หมวด
+
+
+ แคตตาล็อก
+ รายผู้เล่น
+
+
+
+
+ บันทึกแคตตาล็อก
+ โหลดใหม่
+ คืนค่าเริ่มต้น
+
+
+
+
+
+ หมวด
+ ชื่อ (EN)
+ คำอธิบาย (TH)
+ เป้าหมาย
+ เปิด
+
+
+
+
+
+
+
+
+
+
+
+ รีเฟรช
+
+
+
+
+
+ ชื่อผู้เล่น
+ playerKey
+ ปลดล็อก
+ COINS
+
+
+
+
+
+
+
+
ความคืบหน้า:
+
+ รีเซ็ตของผู้เล่นนี้
+
+
+
+
+
+ รางวัล
+ ความคืบหน้า
+
+
+
+
+
+
+
+
+
+
+
+
+ เวลาโหวต
+ ตั้งเวลานับถอยหลังของการโหวตในเกม (วินาที) · มีผลเมื่อผู้เล่นรีเฟรชหน้าเล่น/เข้าห้องใหม่
+
+
+
+
+
+ จบคดี
+ เลือกว่าเมื่อจบคดี (หลังโชว์ผล + หน้าให้ความรู้ "รู้ทันภัยไซเบอร์") จะพาผู้เล่นไปไหนต่อ · มีผลเมื่อผู้เล่นรีเฟรช/เข้าห้องใหม่
+
+
+
+
+
+ บทตัวป่วน
+ ตั้งเวลาเกี่ยวกับการเสนอ/รับ "บทตัวป่วน" หลังจบคดี · มีผลเมื่อผู้เล่นรีเฟรช/เข้าห้องใหม่ · ปุ่ม บังคับข้ามเงื่อนไข ≥4 คน อยู่แท็บ Test Mode
+
+ • เวลาเสนอ = เวลาสูงสุดที่ระบบรอให้ทุกคนพร้อม ก่อนสุ่มเลือกผู้รับบท (ถ้าพร้อมก่อน เสนอเร็วกว่านี้) • เวลารับ = นับถอยหลังให้ผู้ถูกเลือกกดรับ/ปฏิเสธบทตัวป่วน
+
+
+
+
+ 🔊 ระดับเสียง
+ ตั้งระดับเสียงรวมของเกม (0–100%) · มีผลกับทุกผู้เล่นเมื่อรีเฟรช/เข้าฉากใหม่ · การเปิด/ปิด Music/SFX ผู้เล่นตั้งเองในโปรไฟล์
+
+ • BGM จะหรี่อัตโนมัติตอนมีคนพูดไมค์ (กันเสียงคนโดนกลบ) — ค่านี้คือระดับปกติ • แนะนำ Master 100% · Music ~35% · SFX ~75%
+
+
+
+
+ บัญชีแอดมิน
+ เฉพาะ super admin เท่านั้นที่เพิ่ม/ลบแอดมินได้
+
+
+ ตั้งรหัสใหม่ให้แอดมินอื่น (super)
+ ไม่ต้องรู้รหัสเดิม — ใช้เมื่อผู้ใช้ลืมรหัส
+
+
+
+ สิทธิ์รายหมวด (super)
+
+ เลือกว่าบัญชีนี้เข้าหมวดไหนได้บ้าง · ไม่ติ๊กเลย = เข้าได้ทุกหมวด (ค่าเดิมของบัญชีเก่า) ·
+ super เข้าได้ทุกหมวดเสมอ แก้ตรงนี้ไม่มีผล · เมนู "เปลี่ยนรหัสผ่านของคุณ" เข้าได้เสมอ
+ ตัวกันจริงอยู่ที่ฝั่งเซิร์ฟเวอร์ (require_tab) — ไม่ใช่แค่ซ่อนเมนู
+
+
+
+
+
+
+
+
+ ชื่อผู้ใช้
+ บทบาท
+ สิทธิ์หมวด
+ สร้างเมื่อ
+
+
+
+
+
+
+
+
+
+
+ Test Mode (โหมดทดสอบ)
+ เปิดเพื่อเปิดใช้ shortcut ทดสอบในเกม โดยทั่วไปควรปิดในการใช้งานจริงของผู้เล่น
+
+
+
+
+ ปิดอยู่
+
+ บันทึกในเครื่องนี้เท่านั้น (localStorage)
+
+
+ Shortcuts ที่เปิดเมื่อ Test Mode = ON
+
+ Ctrl + 1 / 2 / 3 — ในหน้าเลือกผู้ต้องสงสัย: เก็บหลักฐาน 1 ใบให้ suspect คนนั้นทันที (เทียบเท่าเล่นมินิเกมจบ 1 ครั้ง)
+ กดครบ 3 ปุ่ม → ปุ่ม "ชี้ตัวคนร้าย" โผล่
+
+ Ctrl + Q — ในเกมตอนคำถามพิเศษ (Special Quiz) เปิดอยู่: ตอบข้อปัจจุบันให้ถูกอัตโนมัติ
+ เซิร์ฟเวอร์เป็นผู้เติมคำตอบที่ถูก (กันโกง) — ใช้ทดสอบ flow รับการ์ดพิเศษได้เร็ว
+
+ Ctrl + Alt + 1 / 2 / 3 — ที่หน้าห้อง LobbyB: พรีวิว "หน้าผลตัดสินคดี" โดยไม่ต้องเล่นจบ
+ 1 = โหวตถูก (เรือนจำ → โพเดียมผู้ชนะ) · 2 = โหวตผิด (ตัวป่วนชนะ) · 3 = สลับ มี/ไม่มีตัวป่วน (ดูสถานะในแชต) · ตัวป่วนจำลองใช้ผู้เล่น/บอทคนแรก
+
+ Ctrl + Alt + W — ที่หน้าห้อง LobbyB ก่อนโหวตชี้คนร้าย: บังคับให้รอบโหวตถัดไป "นับเป็นโหวตผิด"
+ ถ้ามี การ์ด 5 (จับผิดตัว) ค้างอยู่ → จะทริกให้ โหวตใหม่ 1 ครั้ง ทันที — ใช้เทสต์การ์ด 5
+
+
+
+
+
+ บังคับมินิเกม (เทสต์ตอนเล่นจริง)
+ เลือกเกมต่อการ์ดผู้ต้องสงสัย 3 ใบ → บันทึก → เริ่มคดีใหม่ (สร้างห้อง → LobbyA → เลือกคดี → LobbyB) · ช่องที่เลือก "— สุ่ม —" จะสุ่มจาก 7 เกมเหมือนเดิม · เลือก "— สุ่ม —" ครบทั้ง 3 ช่อง = กลับเป็นปกติ
+
+ การ์ดใบที่ 1
+
+ — สุ่ม —
+ Minigame-1 จริงหรือไม่
+ Minigame-2 วิ่งหลบสิ่งกีดขวาง
+ Minigame-3 Tower block
+ Minigame-4 คำศัพท์ในกระบวนการยุติธรรม
+ Minigame-5 กระโดดขึ้นแท่น
+ Minigame-6 ยิงอุกาบาต Violent Crime
+ Minigame-7 ยิง Mega Virus
+
+
+ การ์ดใบที่ 2
+
+ — สุ่ม —
+ Minigame-1 จริงหรือไม่
+ Minigame-2 วิ่งหลบสิ่งกีดขวาง
+ Minigame-3 Tower block
+ Minigame-4 คำศัพท์ในกระบวนการยุติธรรม
+ Minigame-5 กระโดดขึ้นแท่น
+ Minigame-6 ยิงอุกาบาต Violent Crime
+ Minigame-7 ยิง Mega Virus
+
+
+ การ์ดใบที่ 3
+
+ — สุ่ม —
+ Minigame-1 จริงหรือไม่
+ Minigame-2 วิ่งหลบสิ่งกีดขวาง
+ Minigame-3 Tower block
+ Minigame-4 คำศัพท์ในกระบวนการยุติธรรม
+ Minigame-5 กระโดดขึ้นแท่น
+ Minigame-6 ยิงอุกาบาต Violent Crime
+ Minigame-7 ยิง Mega Virus
+
+
+ บันทึก
+
+
+
+ บังคับการ์ดพิเศษ → เกม (เทสต์)
+ เลือกว่าจะให้ "การ์ดพิเศษใบไหน" ขึ้นใน "เกมไหน" → เกมที่ตั้งไว้คำถามพิเศษจะขึ้นแน่นอน และให้การ์ดใบนั้น · ต้องมีคำถามพิเศษของ Level×Case นั้นด้วย · "— ไม่บังคับ —" = ปกติ (สุ่ม 1/3)
+
+ บันทึก
+
+
+ บังคับเสนอบท "ตัวป่วน" (เทสต์)
+ ปกติบทตัวป่วนจะเสนอเฉพาะเมื่อมีคนจริงตั้งแต่ 4 คนขึ้นไป · เปิดอันนี้เพื่อบังคับให้ขึ้นเสมอ แม้เล่นคนเดียว (ไว้เทสต์)
+
+
+ บังคับเสนอบทตัวป่วน (ข้ามเงื่อนไข ≥ 4 คน)
+
+ บันทึก
+
+
+
+
+
+
+
+
+
+
diff --git a/www/html/Admin/private/store.json b/www/html/Admin/private/store.json
index 792946d..3cdc758 100644
--- a/www/html/Admin/private/store.json
+++ b/www/html/Admin/private/store.json
@@ -1511,7 +1511,7 @@
"blocked": false,
"coins": 95,
"createdAt": "2026-07-08T05:26:41+00:00",
- "updatedAt": "2026-07-12T07:34:23+00:00",
+ "updatedAt": "2026-07-24T06:43:56+00:00",
"daily": {
"anchorMs": 1783530000000,
"claimedDays": [
@@ -1523,7 +1523,7 @@
false,
false
],
- "lockUntilMs": 1783875600000
+ "lockUntilMs": 0
},
"lobbyColorThemeIndex": 5,
"lobbySkinToneIndex": 1,
@@ -1766,7 +1766,9 @@
"blocked": false,
"coins": 0,
"createdAt": "2026-07-08T12:09:31+00:00",
- "updatedAt": "2026-07-08T12:09:31+00:00"
+ "updatedAt": "2026-07-24T06:58:25+00:00",
+ "lobbyColorThemeIndex": 1,
+ "lobbySkinToneIndex": 1
},
{
"id": "5a94f9199f1412978b1aee8a",
@@ -2550,6 +2552,316 @@
"coins": 0,
"createdAt": "2026-07-22T10:30:33+00:00",
"updatedAt": "2026-07-22T10:30:33+00:00"
+ },
+ {
+ "id": "8657a2946b21496af9ccdea3",
+ "email": "",
+ "displayName": "Guest",
+ "loginType": "guest",
+ "providerUserId": "p_1784801056518_7957fwa372e",
+ "notes": "auto: player-coins",
+ "blocked": false,
+ "coins": 0,
+ "createdAt": "2026-07-23T10:04:16+00:00",
+ "updatedAt": "2026-07-23T10:04:16+00:00"
+ },
+ {
+ "id": "f024cf64e179b05a77477135",
+ "email": "",
+ "displayName": "ผู้เล่น",
+ "loginType": "guest",
+ "providerUserId": "p_1785154354326_2awlhldhd43",
+ "notes": "auto: player-coins",
+ "blocked": false,
+ "coins": 70,
+ "createdAt": "2026-07-27T12:12:35+00:00",
+ "updatedAt": "2026-07-27T12:46:20+00:00",
+ "daily": {
+ "anchorMs": 1785085200000,
+ "claimedDays": [
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ],
+ "lockUntilMs": 1785171600000
+ },
+ "lobbyColorThemeIndex": 1,
+ "lobbySkinToneIndex": 2,
+ "achievements": {
+ "d1_minigame_solver": 6,
+ "b4_data_miner": 4,
+ "b1_evidence_collector": 1,
+ "a2_sharp_eye": 3
+ },
+ "score": 60,
+ "scoreByCase": {
+ "1": 60
+ },
+ "lbName": "ผู้เล่น"
+ },
+ {
+ "id": "e0dee6ff0f043ae1185cfb75",
+ "email": "",
+ "displayName": "Guest",
+ "loginType": "guest",
+ "providerUserId": "p_1785155025679_2e0ebuyh4jf",
+ "notes": "auto: player-coins",
+ "blocked": false,
+ "coins": 10,
+ "createdAt": "2026-07-27T12:23:46+00:00",
+ "updatedAt": "2026-07-27T12:23:57+00:00",
+ "daily": {
+ "anchorMs": 1785085200000,
+ "claimedDays": [
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ],
+ "lockUntilMs": 1785171600000
+ }
+ },
+ {
+ "id": "d8112edcb8843332822ffff5",
+ "email": "",
+ "displayName": "Guest",
+ "loginType": "guest",
+ "providerUserId": "p_1785440715860_m68pkewoqqj",
+ "notes": "auto: player-coins",
+ "blocked": false,
+ "coins": 0,
+ "createdAt": "2026-07-30T19:45:14+00:00",
+ "updatedAt": "2026-07-30T19:45:14+00:00"
+ },
+ {
+ "id": "de6d3738a5488613f71cccd6",
+ "email": "",
+ "displayName": "Guest",
+ "loginType": "guest",
+ "providerUserId": "p_1785440746710_4wt8vub7giu",
+ "notes": "auto: player-coins",
+ "blocked": false,
+ "coins": 0,
+ "createdAt": "2026-07-30T19:45:45+00:00",
+ "updatedAt": "2026-07-30T19:46:23+00:00",
+ "achievements": {
+ "d2_silent_guardian": 1,
+ "d4_flawless_diver": 0
+ },
+ "achievementStreaks": {
+ "d4_flawless_diver": 0
+ }
+ },
+ {
+ "id": "1b190c9ddb1b40ac663bb4da",
+ "email": "",
+ "displayName": "Guest",
+ "loginType": "guest",
+ "providerUserId": "p_1785440759059_1e4otuhtc83",
+ "notes": "auto: player-coins",
+ "blocked": false,
+ "coins": 0,
+ "createdAt": "2026-07-30T19:45:58+00:00",
+ "updatedAt": "2026-07-30T19:45:58+00:00"
+ },
+ {
+ "id": "4b3f3099f6b09472c43d2004",
+ "email": "",
+ "displayName": "Guest",
+ "loginType": "guest",
+ "providerUserId": "p_1785441060100_8gmc11h9ok",
+ "notes": "auto: player-coins",
+ "blocked": false,
+ "coins": 0,
+ "createdAt": "2026-07-30T19:50:59+00:00",
+ "updatedAt": "2026-07-30T19:50:59+00:00"
+ },
+ {
+ "id": "3919a0a09796c8373f5c65f3",
+ "email": "",
+ "displayName": "S1",
+ "loginType": "guest",
+ "providerUserId": "sk0-6hxlcur",
+ "notes": "auto: game-award",
+ "blocked": false,
+ "coins": 90,
+ "score": 90,
+ "scoreByCase": {
+ "1": 90
+ },
+ "lbName": "S1",
+ "createdAt": "2026-07-31T02:58:20+00:00",
+ "updatedAt": "2026-07-31T03:06:42+00:00",
+ "achievements": {
+ "d1_minigame_solver": 9,
+ "b4_data_miner": 9,
+ "b1_evidence_collector": 8,
+ "a2_sharp_eye": 1,
+ "a1_first_deduction": 1,
+ "a5_truth_hunter": 1,
+ "a4_logic_over_luck": 1,
+ "c3_quick_draw": 1,
+ "b2_relentless_investigator": 1,
+ "d2_silent_guardian": 1,
+ "e1_the_observer": 1,
+ "a6_unbreakable_logic": 1,
+ "d4_flawless_diver": 1
+ },
+ "achievementStreaks": {
+ "e1_the_observer": 1,
+ "a6_unbreakable_logic": 1,
+ "d4_flawless_diver": 1
+ }
+ },
+ {
+ "id": "cb287a9acc916834310c3445",
+ "email": "",
+ "displayName": "S1",
+ "loginType": "guest",
+ "providerUserId": "sk0-dyhhlv1",
+ "notes": "auto: game-award",
+ "blocked": false,
+ "coins": 90,
+ "score": 90,
+ "scoreByCase": {
+ "1": 90
+ },
+ "lbName": "S1",
+ "createdAt": "2026-07-31T03:08:00+00:00",
+ "updatedAt": "2026-07-31T03:19:43+00:00",
+ "achievements": {
+ "d1_minigame_solver": 9,
+ "b4_data_miner": 9,
+ "b1_evidence_collector": 7,
+ "a2_sharp_eye": 2,
+ "b2_relentless_investigator": 1,
+ "d2_silent_guardian": 1,
+ "e1_the_observer": 1,
+ "a6_unbreakable_logic": 0,
+ "d4_flawless_diver": 0
+ },
+ "achievementStreaks": {
+ "e1_the_observer": 1,
+ "a6_unbreakable_logic": 0,
+ "d4_flawless_diver": 0
+ }
+ },
+ {
+ "id": "594be80630b54845b783608e",
+ "email": "",
+ "displayName": "S1",
+ "loginType": "guest",
+ "providerUserId": "sk0-yutf5bk",
+ "notes": "auto: game-award",
+ "blocked": false,
+ "coins": 90,
+ "score": 90,
+ "scoreByCase": {
+ "1": 90
+ },
+ "lbName": "S1",
+ "createdAt": "2026-07-31T03:21:04+00:00",
+ "updatedAt": "2026-07-31T03:31:06+00:00",
+ "achievements": {
+ "d1_minigame_solver": 9,
+ "b4_data_miner": 9,
+ "b1_evidence_collector": 9,
+ "b2_relentless_investigator": 1,
+ "d2_silent_guardian": 1,
+ "e1_the_observer": 1,
+ "a6_unbreakable_logic": 0,
+ "d4_flawless_diver": 0
+ },
+ "achievementStreaks": {
+ "e1_the_observer": 1,
+ "a6_unbreakable_logic": 0,
+ "d4_flawless_diver": 0
+ }
+ },
+ {
+ "id": "8da4977bb7d712cb20b5b465",
+ "email": "",
+ "displayName": "S2",
+ "loginType": "guest",
+ "providerUserId": "sk1-ioqnz6b",
+ "notes": "auto: game-award",
+ "blocked": false,
+ "coins": 72,
+ "score": 72,
+ "scoreByCase": {
+ "1": 72
+ },
+ "lbName": "S2",
+ "createdAt": "2026-07-31T03:21:04+00:00",
+ "updatedAt": "2026-07-31T03:31:06+00:00",
+ "achievements": {
+ "d1_minigame_solver": 9,
+ "b4_data_miner": 9,
+ "b1_evidence_collector": 8,
+ "a2_sharp_eye": 1,
+ "b2_relentless_investigator": 1,
+ "d2_silent_guardian": 1,
+ "e1_the_observer": 1,
+ "a6_unbreakable_logic": 0,
+ "d4_flawless_diver": 0
+ },
+ "achievementStreaks": {
+ "e1_the_observer": 1,
+ "a6_unbreakable_logic": 0,
+ "d4_flawless_diver": 0
+ }
+ },
+ {
+ "id": "f7c654b294b62cc3e32dc1b1",
+ "email": "",
+ "displayName": "S1",
+ "loginType": "guest",
+ "providerUserId": "sk0-egisog4",
+ "notes": "auto: achievements",
+ "blocked": false,
+ "coins": 40,
+ "achievements": {
+ "d1_minigame_solver": 5,
+ "b4_data_miner": 4,
+ "b1_evidence_collector": 4
+ },
+ "createdAt": "2026-07-31T03:31:51+00:00",
+ "updatedAt": "2026-07-31T03:36:43+00:00",
+ "score": 40,
+ "scoreByCase": {
+ "1": 40
+ },
+ "lbName": "S1"
+ },
+ {
+ "id": "5e6ee98b463feaaefc44f396",
+ "email": "",
+ "displayName": "S2",
+ "loginType": "guest",
+ "providerUserId": "sk1-0tsp4wv",
+ "notes": "auto: achievements",
+ "blocked": false,
+ "coins": 32,
+ "achievements": {
+ "a2_sharp_eye": 1,
+ "d1_minigame_solver": 3,
+ "b1_evidence_collector": 4,
+ "b4_data_miner": 3
+ },
+ "createdAt": "2026-07-31T03:31:51+00:00",
+ "updatedAt": "2026-07-31T03:36:43+00:00",
+ "score": 32,
+ "scoreByCase": {
+ "1": 32
+ },
+ "lbName": "S2"
}
]
}
\ No newline at end of file
diff --git a/www/html/Game/data/ai-settings.json b/www/html/Game/data/ai-settings.json
index e480d65..632b56e 100644
--- a/www/html/Game/data/ai-settings.json
+++ b/www/html/Game/data/ai-settings.json
@@ -1,4 +1,7 @@
{
- "openai_api_key": "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",
- "model": "gpt-4-turbo"
+ "openai_api_key": "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",
+ "model": "gpt-4-turbo",
+ "intent": "",
+ "rag_enabled": false,
+ "rag_context": ""
}
\ No newline at end of file
diff --git a/www/html/Game/data/maps/qbroom1.json b/www/html/Game/data/maps/qbroom1.json
index 8fa7ce1..a9e6b1d 100644
--- a/www/html/Game/data/maps/qbroom1.json
+++ b/www/html/Game/data/maps/qbroom1.json
@@ -1 +1 @@
-{"width":20,"height":40,"tileSize":22,"gameType":"quiz_battle","characterCells":1,"characterCellsW":1,"characterCellsH":1,"ground":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"objects":[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1],[1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1],[1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],[1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1],[1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1],[1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],[1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],"blockPlayer":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"interactive":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"startGameArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawnArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawn":{"x":4,"y":4},"quizTrueArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizFalseArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestions":[],"quizCarryHubArea":[],"quizCarryOptionArea":[],"stackReleaseArea":[],"stackLandArea":[],"jumpSurvivePlatforms":[],"jumpSurvivePlatformArea":[],"jumpSurviveRisePxPerSec":42,"jumpSurviveGravity":3200,"jumpSurviveJumpImpulse":0,"jumpSurviveMovePxPerSec":200,"name":"Quiz Battle — กฎหมายใกล้ตัว","cellColors":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"showMapInGame":false,"quizBattleDomeArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0],[0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0],[0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0],[0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0],[0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0],[0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"shooterSpawnSlots":[],"balloonBossPlayerSlots":[],"balloonBossBossSpawn":null,"lanes":[],"gauntletPlayerSpawns":[],"backgroundImage":"/Game/img/qb-scenes/room-1.jpg","characterCollisionW":1,"characterCollisionH":1,"blockPlayerSeparationW":1,"blockPlayerSeparationH":1,"lobbySpawnMode":"slots6","lobbyPlayerSpawns":[null,null,null,null,null,null],"carryEmbedCountdownArea":[],"carryEmbedCountdownHighlight":false,"jumpSurvivePlatformVariantArea":[],"jumpSurviveHazardArea":[],"customizeSpot":null,"hostConsoleSpot":null,"gridImageLibrary":[],"gridImageSprites":[],"gridImageCells":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"quizBattleCategoryId":"topic1","quizBattleDomeComp":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,0,0],[0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathGateRequired":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,0,0],[0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0],[0,0,0,0,0,0,7,0,0,0,6,0,0,0,5,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,6,0,0,0,5,0,0,0,0,0,0],[0,0,0,0,0,0,7,0,0,0,6,0,0,0,5,0,0,0,0,0],[0,0,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0],[0,0,0,0,0,15,0,0,0,14,0,0,0,13,0,12,12,0,0,0],[0,0,0,0,0,15,0,0,0,14,0,0,0,13,0,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,14,0,0,0,13,0,0,0,0,0,0],[0,0,16,16,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,0,19,0,0,0,0,0],[0,0,0,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,0,0],[0,0,0,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,0,0],[0,0,0,0,0,0,17,0,0,0,18,0,0,19,20,0,20,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathGateArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,0,0],[0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0],[0,0,0,0,0,0,7,0,0,0,6,0,0,0,5,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,6,0,0,0,5,0,0,0,0,0,0],[0,0,0,0,0,0,7,0,0,0,6,0,0,0,5,0,0,0,0,0],[0,0,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0],[0,0,0,0,0,15,0,0,0,14,0,0,0,13,0,12,12,0,0,0],[0,0,0,0,0,15,0,0,0,14,0,0,0,13,0,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,14,0,0,0,13,0,0,0,0,0,0],[0,0,16,16,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,0,19,0,0,0,0,0],[0,0,0,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,0,0],[0,0,0,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,0,0],[0,0,0,0,0,0,17,0,0,0,18,0,0,19,20,0,20,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,15,0,0,0,14,0,0,0,13,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFinishArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0],[0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0],[0,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0],[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]}
\ No newline at end of file
+{"width":20,"height":40,"tileSize":22,"gameType":"quiz_battle","characterCells":1,"characterCellsW":1,"characterCellsH":1,"ground":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"objects":[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],"blockPlayer":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"interactive":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"startGameArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawnArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawn":{"x":4,"y":4},"quizTrueArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizFalseArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestions":[],"quizCarryHubArea":[],"quizCarryOptionArea":[],"stackReleaseArea":[],"stackLandArea":[],"jumpSurvivePlatforms":[],"jumpSurvivePlatformArea":[],"jumpSurviveRisePxPerSec":42,"jumpSurviveGravity":3200,"jumpSurviveJumpImpulse":0,"jumpSurviveMovePxPerSec":200,"name":"Quiz Battle — กฎหมายใกล้ตัว","cellColors":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"showMapInGame":false,"quizBattleDomeArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"shooterSpawnSlots":[],"balloonBossPlayerSlots":[],"balloonBossBossSpawn":null,"lanes":[],"gauntletPlayerSpawns":[],"backgroundImage":"/Game/img/qb-scenes/room-1.jpg","characterCollisionW":1,"characterCollisionH":1,"blockPlayerSeparationW":1,"blockPlayerSeparationH":1,"lobbySpawnMode":"slots6","lobbyPlayerSpawns":[null,null,null,null,null,null],"carryEmbedCountdownArea":[],"carryEmbedCountdownHighlight":false,"jumpSurvivePlatformVariantArea":[],"jumpSurviveHazardArea":[],"customizeSpot":null,"hostConsoleSpot":null,"gridImageLibrary":[],"gridImageSprites":[],"gridImageCells":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"quizBattleCategoryId":"topic1","quizBattlePathGateArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0],[0,0,0,0,0,0,7,0,0,0,6,0,0,5,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0],[0,0,0,0,0,0,15,0,0,0,14,0,0,13,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFinishArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDx":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDy":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,193,0,0,0,193,0,0,193,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,265,0,0,0,265,0,0,265,0,125,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,197,0,337,0,0,0,337,0,0,337,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,309,0,0,0,309,0,0,309,0,169,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,141,0,281,0,0,0,281,0,0,281,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFences":[{"x":5,"y":15.19,"w":10,"h":0.22},{"x":5,"y":18.91,"w":10,"h":0.22},{"x":5,"y":22.63,"w":10,"h":0.22}],"quizBattleDomeComp":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathGateRequired":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"specialQuizSpawnArea":[]}
\ No newline at end of file
diff --git a/www/html/Game/data/maps/qbroom10.json b/www/html/Game/data/maps/qbroom10.json
index fb97dd6..4fdb7ca 100644
--- a/www/html/Game/data/maps/qbroom10.json
+++ b/www/html/Game/data/maps/qbroom10.json
@@ -1,13284 +1 @@
-{
- "width": 20,
- "height": 40,
- "tileSize": 22,
- "gameType": "quiz_battle",
- "characterCells": 1,
- "characterCellsW": 1,
- "characterCellsH": 1,
- "ground": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "objects": [
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ]
- ],
- "blockPlayer": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "interactive": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "startGameArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "spawnArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "spawn": {
- "x": 4,
- "y": 4
- },
- "quizTrueArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizFalseArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizQuestionArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizQuestions": [],
- "quizCarryHubArea": [],
- "quizCarryOptionArea": [],
- "stackReleaseArea": [],
- "stackLandArea": [],
- "jumpSurvivePlatforms": [],
- "jumpSurvivePlatformArea": [],
- "jumpSurviveRisePxPerSec": 42,
- "jumpSurviveGravity": 3200,
- "jumpSurviveJumpImpulse": 0,
- "jumpSurviveMovePxPerSec": 200,
- "name": "Quiz Battle — งานบริการกระทรวงยุติธรรม",
- "cellColors": [
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ]
- ],
- "showMapInGame": false,
- "quizBattleDomeArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizBattlePathArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "shooterSpawnSlots": [],
- "balloonBossPlayerSlots": [],
- "balloonBossBossSpawn": null,
- "lanes": [],
- "gauntletPlayerSpawns": [],
- "backgroundImage": "/Game/img/qb-scenes/room-10.jpg",
- "carryEmbedCountdownArea": [],
- "jumpSurvivePlatformVariantArea": [],
- "jumpSurviveHazardArea": [],
- "characterCollisionW": 1,
- "characterCollisionH": 1,
- "blockPlayerSeparationW": 1,
- "blockPlayerSeparationH": 1,
- "lobbySpawnMode": "slots6",
- "lobbyPlayerSpawns": [
- null,
- null,
- null,
- null,
- null,
- null
- ],
- "carryEmbedCountdownHighlight": false,
- "customizeSpot": null,
- "hostConsoleSpot": null,
- "gridImageLibrary": [],
- "gridImageSprites": [],
- "gridImageCells": [
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ]
- ],
- "quizBattleCategoryId": "topic10",
- "quizBattlePathGateArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 4,
- 4,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 8,
- 8,
- 8,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 9,
- 0,
- 0,
- 0,
- 10,
- 0,
- 0,
- 0,
- 11,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 9,
- 0,
- 0,
- 0,
- 10,
- 0,
- 0,
- 0,
- 11,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 12,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 12,
- 12,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 16,
- 16,
- 0,
- 16,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 16,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 19,
- 20,
- 0,
- 20,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 20,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizBattleFinishArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ]
-}
\ No newline at end of file
+{"width":20,"height":40,"tileSize":22,"gameType":"quiz_battle","characterCells":1,"characterCellsW":1,"characterCellsH":1,"ground":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"objects":[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],"blockPlayer":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"interactive":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"startGameArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawnArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawn":{"x":4,"y":4},"quizTrueArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizFalseArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestions":[],"quizCarryHubArea":[],"quizCarryOptionArea":[],"stackReleaseArea":[],"stackLandArea":[],"jumpSurvivePlatforms":[],"jumpSurvivePlatformArea":[],"jumpSurviveRisePxPerSec":42,"jumpSurviveGravity":3200,"jumpSurviveJumpImpulse":0,"jumpSurviveMovePxPerSec":200,"name":"Quiz Battle — งานบริการกระทรวงยุติธรรม","cellColors":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"showMapInGame":false,"quizBattleDomeArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"shooterSpawnSlots":[],"balloonBossPlayerSlots":[],"balloonBossBossSpawn":null,"lanes":[],"gauntletPlayerSpawns":[],"backgroundImage":"/Game/img/qb-scenes/room-10.jpg","carryEmbedCountdownArea":[],"jumpSurvivePlatformVariantArea":[],"jumpSurviveHazardArea":[],"characterCollisionW":1,"characterCollisionH":1,"blockPlayerSeparationW":1,"blockPlayerSeparationH":1,"lobbySpawnMode":"slots6","lobbyPlayerSpawns":[null,null,null,null,null,null],"carryEmbedCountdownHighlight":false,"customizeSpot":null,"hostConsoleSpot":null,"gridImageLibrary":[],"gridImageSprites":[],"gridImageCells":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"quizBattleCategoryId":"topic10","quizBattlePathGateArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFinishArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0],[0,0,0,0,0,0,7,0,0,0,6,0,0,5,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0],[0,0,0,0,0,0,15,0,0,0,14,0,0,13,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDx":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDy":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,221,0,0,0,221,0,0,221,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,310,0,0,0,310,0,0,310,0,170,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,158,0,298,0,0,0,298,0,0,298,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,287,0,0,0,287,0,0,287,0,147,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,136,0,276,0,0,0,276,0,0,276,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFences":[{"x":5,"y":11.92,"w":10,"h":0.22},{"x":5,"y":15.8,"w":10,"h":0.22},{"x":5,"y":19.69,"w":10,"h":0.22},{"x":5,"y":23.58,"w":10,"h":0.22}],"quizBattleDomeComp":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathGateRequired":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"specialQuizSpawnArea":[]}
\ No newline at end of file
diff --git a/www/html/Game/data/maps/qbroom2.json b/www/html/Game/data/maps/qbroom2.json
index 09ba321..adb4012 100644
--- a/www/html/Game/data/maps/qbroom2.json
+++ b/www/html/Game/data/maps/qbroom2.json
@@ -1,13284 +1 @@
-{
- "width": 20,
- "height": 40,
- "tileSize": 22,
- "gameType": "quiz_battle",
- "characterCells": 1,
- "characterCellsW": 1,
- "characterCellsH": 1,
- "ground": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "objects": [
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ]
- ],
- "blockPlayer": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "interactive": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "startGameArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "spawnArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "spawn": {
- "x": 4,
- "y": 4
- },
- "quizTrueArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizFalseArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizQuestionArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizQuestions": [],
- "quizCarryHubArea": [],
- "quizCarryOptionArea": [],
- "stackReleaseArea": [],
- "stackLandArea": [],
- "jumpSurvivePlatforms": [],
- "jumpSurvivePlatformArea": [],
- "jumpSurviveRisePxPerSec": 42,
- "jumpSurviveGravity": 3200,
- "jumpSurviveJumpImpulse": 0,
- "jumpSurviveMovePxPerSec": 200,
- "name": "Quiz Battle — กฎหมายสิทธิ์พื้นฐาน",
- "cellColors": [
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ]
- ],
- "showMapInGame": false,
- "quizBattleDomeArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizBattlePathArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "shooterSpawnSlots": [],
- "balloonBossPlayerSlots": [],
- "balloonBossBossSpawn": null,
- "lanes": [],
- "gauntletPlayerSpawns": [],
- "backgroundImage": "/Game/img/qb-scenes/room-2.jpg",
- "carryEmbedCountdownArea": [],
- "jumpSurvivePlatformVariantArea": [],
- "jumpSurviveHazardArea": [],
- "characterCollisionW": 1,
- "characterCollisionH": 1,
- "blockPlayerSeparationW": 1,
- "blockPlayerSeparationH": 1,
- "lobbySpawnMode": "slots6",
- "lobbyPlayerSpawns": [
- null,
- null,
- null,
- null,
- null,
- null
- ],
- "carryEmbedCountdownHighlight": false,
- "customizeSpot": null,
- "hostConsoleSpot": null,
- "gridImageLibrary": [],
- "gridImageSprites": [],
- "gridImageCells": [
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ]
- ],
- "quizBattleCategoryId": "topic2",
- "quizBattlePathGateArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 4,
- 4,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 8,
- 8,
- 8,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 9,
- 0,
- 0,
- 0,
- 10,
- 0,
- 0,
- 0,
- 11,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 9,
- 0,
- 0,
- 0,
- 10,
- 0,
- 0,
- 0,
- 11,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 12,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 12,
- 12,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 16,
- 16,
- 0,
- 16,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 16,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 19,
- 20,
- 0,
- 20,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 20,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizBattleFinishArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ]
-}
\ No newline at end of file
+{"width":20,"height":40,"tileSize":22,"gameType":"quiz_battle","characterCells":1,"characterCellsW":1,"characterCellsH":1,"ground":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"objects":[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],"blockPlayer":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"interactive":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"startGameArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawnArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawn":{"x":4,"y":4},"quizTrueArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizFalseArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestions":[],"quizCarryHubArea":[],"quizCarryOptionArea":[],"stackReleaseArea":[],"stackLandArea":[],"jumpSurvivePlatforms":[],"jumpSurvivePlatformArea":[],"jumpSurviveRisePxPerSec":42,"jumpSurviveGravity":3200,"jumpSurviveJumpImpulse":0,"jumpSurviveMovePxPerSec":200,"name":"Quiz Battle — กฎหมายสิทธิ์พื้นฐาน","cellColors":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"showMapInGame":false,"quizBattleDomeArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"shooterSpawnSlots":[],"balloonBossPlayerSlots":[],"balloonBossBossSpawn":null,"lanes":[],"gauntletPlayerSpawns":[],"backgroundImage":"/Game/img/qb-scenes/room-2.jpg","carryEmbedCountdownArea":[],"jumpSurvivePlatformVariantArea":[],"jumpSurviveHazardArea":[],"characterCollisionW":1,"characterCollisionH":1,"blockPlayerSeparationW":1,"blockPlayerSeparationH":1,"lobbySpawnMode":"slots6","lobbyPlayerSpawns":[null,null,null,null,null,null],"carryEmbedCountdownHighlight":false,"customizeSpot":null,"hostConsoleSpot":null,"gridImageLibrary":[],"gridImageSprites":[],"gridImageCells":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"quizBattleCategoryId":"topic2","quizBattlePathGateArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFinishArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0],[0,0,0,0,0,0,7,0,0,0,6,0,0,5,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0],[0,0,0,0,0,0,15,0,0,0,14,0,0,13,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDx":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDy":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,195,0,0,0,195,0,0,195,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,273,0,0,0,273,0,0,273,0,133,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,210,0,350,0,0,0,350,0,0,350,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,327,0,0,0,327,0,0,327,0,187,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,164,0,304,0,0,0,304,0,0,304,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFences":[{"x":5,"y":15.32,"w":10,"h":0.22},{"x":5,"y":19.09,"w":10,"h":0.22},{"x":5,"y":22.86,"w":10,"h":0.22},{"x":5,"y":26.64,"w":10,"h":0.22}],"quizBattleDomeComp":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathGateRequired":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"specialQuizSpawnArea":[]}
\ No newline at end of file
diff --git a/www/html/Game/data/maps/qbroom3.json b/www/html/Game/data/maps/qbroom3.json
index 69dc63a..d4b59c7 100644
--- a/www/html/Game/data/maps/qbroom3.json
+++ b/www/html/Game/data/maps/qbroom3.json
@@ -1,13284 +1 @@
-{
- "width": 20,
- "height": 40,
- "tileSize": 22,
- "gameType": "quiz_battle",
- "characterCells": 1,
- "characterCellsW": 1,
- "characterCellsH": 1,
- "ground": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "objects": [
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ]
- ],
- "blockPlayer": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "interactive": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "startGameArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "spawnArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "spawn": {
- "x": 4,
- "y": 4
- },
- "quizTrueArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizFalseArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizQuestionArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizQuestions": [],
- "quizCarryHubArea": [],
- "quizCarryOptionArea": [],
- "stackReleaseArea": [],
- "stackLandArea": [],
- "jumpSurvivePlatforms": [],
- "jumpSurvivePlatformArea": [],
- "jumpSurviveRisePxPerSec": 42,
- "jumpSurviveGravity": 3200,
- "jumpSurviveJumpImpulse": 0,
- "jumpSurviveMovePxPerSec": 200,
- "name": "Quiz Battle — กฎหมายจราจร",
- "cellColors": [
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ]
- ],
- "showMapInGame": false,
- "quizBattleDomeArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizBattlePathArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "shooterSpawnSlots": [],
- "balloonBossPlayerSlots": [],
- "balloonBossBossSpawn": null,
- "lanes": [],
- "gauntletPlayerSpawns": [],
- "backgroundImage": "/Game/img/qb-scenes/room-3.jpg",
- "carryEmbedCountdownArea": [],
- "jumpSurvivePlatformVariantArea": [],
- "jumpSurviveHazardArea": [],
- "characterCollisionW": 1,
- "characterCollisionH": 1,
- "blockPlayerSeparationW": 1,
- "blockPlayerSeparationH": 1,
- "lobbySpawnMode": "slots6",
- "lobbyPlayerSpawns": [
- null,
- null,
- null,
- null,
- null,
- null
- ],
- "carryEmbedCountdownHighlight": false,
- "customizeSpot": null,
- "hostConsoleSpot": null,
- "gridImageLibrary": [],
- "gridImageSprites": [],
- "gridImageCells": [
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ]
- ],
- "quizBattleCategoryId": "topic3",
- "quizBattlePathGateArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 4,
- 4,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 8,
- 8,
- 8,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 9,
- 0,
- 0,
- 0,
- 10,
- 0,
- 0,
- 0,
- 11,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 9,
- 0,
- 0,
- 0,
- 10,
- 0,
- 0,
- 0,
- 11,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 12,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 12,
- 12,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 16,
- 16,
- 0,
- 16,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 16,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 19,
- 20,
- 0,
- 20,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 20,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizBattleFinishArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ]
-}
\ No newline at end of file
+{"width":20,"height":40,"tileSize":22,"gameType":"quiz_battle","characterCells":1,"characterCellsW":1,"characterCellsH":1,"ground":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"objects":[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],"blockPlayer":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"interactive":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"startGameArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawnArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawn":{"x":4,"y":4},"quizTrueArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizFalseArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestions":[],"quizCarryHubArea":[],"quizCarryOptionArea":[],"stackReleaseArea":[],"stackLandArea":[],"jumpSurvivePlatforms":[],"jumpSurvivePlatformArea":[],"jumpSurviveRisePxPerSec":42,"jumpSurviveGravity":3200,"jumpSurviveJumpImpulse":0,"jumpSurviveMovePxPerSec":200,"name":"Quiz Battle — กฎหมายจราจร","cellColors":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"showMapInGame":false,"quizBattleDomeArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"shooterSpawnSlots":[],"balloonBossPlayerSlots":[],"balloonBossBossSpawn":null,"lanes":[],"gauntletPlayerSpawns":[],"backgroundImage":"/Game/img/qb-scenes/room-3.jpg","carryEmbedCountdownArea":[],"jumpSurvivePlatformVariantArea":[],"jumpSurviveHazardArea":[],"characterCollisionW":1,"characterCollisionH":1,"blockPlayerSeparationW":1,"blockPlayerSeparationH":1,"lobbySpawnMode":"slots6","lobbyPlayerSpawns":[null,null,null,null,null,null],"carryEmbedCountdownHighlight":false,"customizeSpot":null,"hostConsoleSpot":null,"gridImageLibrary":[],"gridImageSprites":[],"gridImageCells":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"quizBattleCategoryId":"topic3","quizBattlePathGateArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFinishArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0],[0,0,0,0,0,0,7,0,0,0,6,0,0,5,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0],[0,0,0,0,0,0,15,0,0,0,14,0,0,13,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDx":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDy":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,190,0,0,0,190,0,0,190,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,264,0,0,0,264,0,0,264,0,124,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,197,0,337,0,0,0,337,0,0,337,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,310,0,0,0,310,0,0,310,0,170,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,144,0,284,0,0,0,284,0,0,284,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFences":[{"x":5,"y":15.19,"w":10,"h":0.22},{"x":5,"y":18.92,"w":10,"h":0.22},{"x":5,"y":22.66,"w":10,"h":0.22}],"quizBattleDomeComp":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathGateRequired":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"specialQuizSpawnArea":[]}
\ No newline at end of file
diff --git a/www/html/Game/data/maps/qbroom4.json b/www/html/Game/data/maps/qbroom4.json
index 22f752f..09a00ec 100644
--- a/www/html/Game/data/maps/qbroom4.json
+++ b/www/html/Game/data/maps/qbroom4.json
@@ -1,13284 +1 @@
-{
- "width": 20,
- "height": 40,
- "tileSize": 22,
- "gameType": "quiz_battle",
- "characterCells": 1,
- "characterCellsW": 1,
- "characterCellsH": 1,
- "ground": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "objects": [
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ]
- ],
- "blockPlayer": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "interactive": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "startGameArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "spawnArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "spawn": {
- "x": 4,
- "y": 4
- },
- "quizTrueArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizFalseArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizQuestionArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizQuestions": [],
- "quizCarryHubArea": [],
- "quizCarryOptionArea": [],
- "stackReleaseArea": [],
- "stackLandArea": [],
- "jumpSurvivePlatforms": [],
- "jumpSurvivePlatformArea": [],
- "jumpSurviveRisePxPerSec": 42,
- "jumpSurviveGravity": 3200,
- "jumpSurviveJumpImpulse": 0,
- "jumpSurviveMovePxPerSec": 200,
- "name": "Quiz Battle — คดีเกี่ยวกับทรัพย์",
- "cellColors": [
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ]
- ],
- "showMapInGame": false,
- "quizBattleDomeArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizBattlePathArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "shooterSpawnSlots": [],
- "balloonBossPlayerSlots": [],
- "balloonBossBossSpawn": null,
- "lanes": [],
- "gauntletPlayerSpawns": [],
- "backgroundImage": "/Game/img/qb-scenes/room-4.jpg",
- "carryEmbedCountdownArea": [],
- "jumpSurvivePlatformVariantArea": [],
- "jumpSurviveHazardArea": [],
- "characterCollisionW": 1,
- "characterCollisionH": 1,
- "blockPlayerSeparationW": 1,
- "blockPlayerSeparationH": 1,
- "lobbySpawnMode": "slots6",
- "lobbyPlayerSpawns": [
- null,
- null,
- null,
- null,
- null,
- null
- ],
- "carryEmbedCountdownHighlight": false,
- "customizeSpot": null,
- "hostConsoleSpot": null,
- "gridImageLibrary": [],
- "gridImageSprites": [],
- "gridImageCells": [
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ]
- ],
- "quizBattleCategoryId": "topic4",
- "quizBattlePathGateArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 4,
- 4,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 8,
- 8,
- 8,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 9,
- 0,
- 0,
- 0,
- 10,
- 0,
- 0,
- 0,
- 11,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 9,
- 0,
- 0,
- 0,
- 10,
- 0,
- 0,
- 0,
- 11,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 12,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 12,
- 12,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 16,
- 16,
- 0,
- 16,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 16,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 19,
- 20,
- 0,
- 20,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 20,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizBattleFinishArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ]
-}
\ No newline at end of file
+{"width":20,"height":40,"tileSize":22,"gameType":"quiz_battle","characterCells":1,"characterCellsW":1,"characterCellsH":1,"ground":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"objects":[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],"blockPlayer":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"interactive":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"startGameArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawnArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawn":{"x":4,"y":4},"quizTrueArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizFalseArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestions":[],"quizCarryHubArea":[],"quizCarryOptionArea":[],"stackReleaseArea":[],"stackLandArea":[],"jumpSurvivePlatforms":[],"jumpSurvivePlatformArea":[],"jumpSurviveRisePxPerSec":42,"jumpSurviveGravity":3200,"jumpSurviveJumpImpulse":0,"jumpSurviveMovePxPerSec":200,"name":"Quiz Battle — คดีเกี่ยวกับทรัพย์","cellColors":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"showMapInGame":false,"quizBattleDomeArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"shooterSpawnSlots":[],"balloonBossPlayerSlots":[],"balloonBossBossSpawn":null,"lanes":[],"gauntletPlayerSpawns":[],"backgroundImage":"/Game/img/qb-scenes/room-4.jpg","carryEmbedCountdownArea":[],"jumpSurvivePlatformVariantArea":[],"jumpSurviveHazardArea":[],"characterCollisionW":1,"characterCollisionH":1,"blockPlayerSeparationW":1,"blockPlayerSeparationH":1,"lobbySpawnMode":"slots6","lobbyPlayerSpawns":[null,null,null,null,null,null],"carryEmbedCountdownHighlight":false,"customizeSpot":null,"hostConsoleSpot":null,"gridImageLibrary":[],"gridImageSprites":[],"gridImageCells":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"quizBattleCategoryId":"topic4","quizBattlePathGateArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFinishArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0],[0,0,0,0,0,0,7,0,0,0,6,0,0,5,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0],[0,0,0,0,0,0,15,0,0,0,14,0,0,13,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDx":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDy":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,215,0,0,0,215,0,0,215,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,301,0,0,0,301,0,0,301,0,161,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,147,0,287,0,0,0,287,0,0,287,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,273,0,0,0,273,0,0,273,0,133,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,119,0,259,0,0,0,259,0,0,259,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFences":[{"x":5,"y":11.83,"w":10,"h":0.22},{"x":5,"y":15.69,"w":10,"h":0.22},{"x":5,"y":19.55,"w":10,"h":0.22},{"x":5,"y":27.28,"w":10,"h":0.22}],"quizBattleDomeComp":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathGateRequired":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"specialQuizSpawnArea":[]}
\ No newline at end of file
diff --git a/www/html/Game/data/maps/qbroom5.json b/www/html/Game/data/maps/qbroom5.json
index f95547f..5e84a69 100644
--- a/www/html/Game/data/maps/qbroom5.json
+++ b/www/html/Game/data/maps/qbroom5.json
@@ -1,13284 +1 @@
-{
- "width": 20,
- "height": 40,
- "tileSize": 22,
- "gameType": "quiz_battle",
- "characterCells": 1,
- "characterCellsW": 1,
- "characterCellsH": 1,
- "ground": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "objects": [
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ]
- ],
- "blockPlayer": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "interactive": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "startGameArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "spawnArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "spawn": {
- "x": 4,
- "y": 4
- },
- "quizTrueArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizFalseArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizQuestionArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizQuestions": [],
- "quizCarryHubArea": [],
- "quizCarryOptionArea": [],
- "stackReleaseArea": [],
- "stackLandArea": [],
- "jumpSurvivePlatforms": [],
- "jumpSurvivePlatformArea": [],
- "jumpSurviveRisePxPerSec": 42,
- "jumpSurviveGravity": 3200,
- "jumpSurviveJumpImpulse": 0,
- "jumpSurviveMovePxPerSec": 200,
- "name": "Quiz Battle — คดีหมิ่นประมาท",
- "cellColors": [
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ]
- ],
- "showMapInGame": false,
- "quizBattleDomeArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizBattlePathArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "shooterSpawnSlots": [],
- "balloonBossPlayerSlots": [],
- "balloonBossBossSpawn": null,
- "lanes": [],
- "gauntletPlayerSpawns": [],
- "backgroundImage": "/Game/img/qb-scenes/room-5.jpg",
- "carryEmbedCountdownArea": [],
- "jumpSurvivePlatformVariantArea": [],
- "jumpSurviveHazardArea": [],
- "characterCollisionW": 1,
- "characterCollisionH": 1,
- "blockPlayerSeparationW": 1,
- "blockPlayerSeparationH": 1,
- "lobbySpawnMode": "slots6",
- "lobbyPlayerSpawns": [
- null,
- null,
- null,
- null,
- null,
- null
- ],
- "carryEmbedCountdownHighlight": false,
- "customizeSpot": null,
- "hostConsoleSpot": null,
- "gridImageLibrary": [],
- "gridImageSprites": [],
- "gridImageCells": [
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ]
- ],
- "quizBattleCategoryId": "topic5",
- "quizBattlePathGateArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 4,
- 4,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 8,
- 8,
- 8,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 9,
- 0,
- 0,
- 0,
- 10,
- 0,
- 0,
- 0,
- 11,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 9,
- 0,
- 0,
- 0,
- 10,
- 0,
- 0,
- 0,
- 11,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 12,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 12,
- 12,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 16,
- 16,
- 0,
- 16,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 16,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 19,
- 20,
- 0,
- 20,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 20,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizBattleFinishArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ]
-}
\ No newline at end of file
+{"width":20,"height":40,"tileSize":22,"gameType":"quiz_battle","characterCells":1,"characterCellsW":1,"characterCellsH":1,"ground":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"objects":[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],"blockPlayer":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"interactive":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"startGameArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawnArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawn":{"x":4,"y":4},"quizTrueArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizFalseArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestions":[],"quizCarryHubArea":[],"quizCarryOptionArea":[],"stackReleaseArea":[],"stackLandArea":[],"jumpSurvivePlatforms":[],"jumpSurvivePlatformArea":[],"jumpSurviveRisePxPerSec":42,"jumpSurviveGravity":3200,"jumpSurviveJumpImpulse":0,"jumpSurviveMovePxPerSec":200,"name":"Quiz Battle — คดีหมิ่นประมาท","cellColors":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"showMapInGame":false,"quizBattleDomeArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"shooterSpawnSlots":[],"balloonBossPlayerSlots":[],"balloonBossBossSpawn":null,"lanes":[],"gauntletPlayerSpawns":[],"backgroundImage":"/Game/img/qb-scenes/room-5.jpg","carryEmbedCountdownArea":[],"jumpSurvivePlatformVariantArea":[],"jumpSurviveHazardArea":[],"characterCollisionW":1,"characterCollisionH":1,"blockPlayerSeparationW":1,"blockPlayerSeparationH":1,"lobbySpawnMode":"slots6","lobbyPlayerSpawns":[null,null,null,null,null,null],"carryEmbedCountdownHighlight":false,"customizeSpot":null,"hostConsoleSpot":null,"gridImageLibrary":[],"gridImageSprites":[],"gridImageCells":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"quizBattleCategoryId":"topic5","quizBattlePathGateArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFinishArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0],[0,0,0,0,0,0,7,0,0,0,6,0,0,5,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0],[0,0,0,0,0,0,15,0,0,0,14,0,0,13,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDx":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDy":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,228,0,0,0,228,0,0,228,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,313,0,0,0,313,0,0,313,0,173,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,158,0,298,0,0,0,298,0,0,298,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,284,0,0,0,284,0,0,284,0,144,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,129,0,269,0,0,0,269,0,0,269,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFences":[{"x":5,"y":11.95,"w":10,"h":0.22},{"x":5,"y":15.8,"w":10,"h":0.22},{"x":5,"y":19.66,"w":10,"h":0.22},{"x":5,"y":27.36,"w":10,"h":0.22}],"quizBattleDomeComp":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathGateRequired":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"specialQuizSpawnArea":[]}
\ No newline at end of file
diff --git a/www/html/Game/data/maps/qbroom6.json b/www/html/Game/data/maps/qbroom6.json
index 6c490cd..2d1abb9 100644
--- a/www/html/Game/data/maps/qbroom6.json
+++ b/www/html/Game/data/maps/qbroom6.json
@@ -1,13284 +1 @@
-{
- "width": 20,
- "height": 40,
- "tileSize": 22,
- "gameType": "quiz_battle",
- "characterCells": 1,
- "characterCellsW": 1,
- "characterCellsH": 1,
- "ground": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "objects": [
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ]
- ],
- "blockPlayer": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "interactive": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "startGameArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "spawnArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "spawn": {
- "x": 4,
- "y": 4
- },
- "quizTrueArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizFalseArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizQuestionArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizQuestions": [],
- "quizCarryHubArea": [],
- "quizCarryOptionArea": [],
- "stackReleaseArea": [],
- "stackLandArea": [],
- "jumpSurvivePlatforms": [],
- "jumpSurvivePlatformArea": [],
- "jumpSurviveRisePxPerSec": 42,
- "jumpSurviveGravity": 3200,
- "jumpSurviveJumpImpulse": 0,
- "jumpSurviveMovePxPerSec": 200,
- "name": "Quiz Battle — คดีทางเพศ",
- "cellColors": [
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ]
- ],
- "showMapInGame": false,
- "quizBattleDomeArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizBattlePathArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "shooterSpawnSlots": [],
- "balloonBossPlayerSlots": [],
- "balloonBossBossSpawn": null,
- "lanes": [],
- "gauntletPlayerSpawns": [],
- "backgroundImage": "/Game/img/qb-scenes/room-6.jpg",
- "carryEmbedCountdownArea": [],
- "jumpSurvivePlatformVariantArea": [],
- "jumpSurviveHazardArea": [],
- "characterCollisionW": 1,
- "characterCollisionH": 1,
- "blockPlayerSeparationW": 1,
- "blockPlayerSeparationH": 1,
- "lobbySpawnMode": "slots6",
- "lobbyPlayerSpawns": [
- null,
- null,
- null,
- null,
- null,
- null
- ],
- "carryEmbedCountdownHighlight": false,
- "customizeSpot": null,
- "hostConsoleSpot": null,
- "gridImageLibrary": [],
- "gridImageSprites": [],
- "gridImageCells": [
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ]
- ],
- "quizBattleCategoryId": "topic6",
- "quizBattlePathGateArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 4,
- 4,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 8,
- 8,
- 8,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 9,
- 0,
- 0,
- 0,
- 10,
- 0,
- 0,
- 0,
- 11,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 9,
- 0,
- 0,
- 0,
- 10,
- 0,
- 0,
- 0,
- 11,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 12,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 12,
- 12,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 16,
- 16,
- 0,
- 16,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 16,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 19,
- 20,
- 0,
- 20,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 20,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizBattleFinishArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ]
-}
\ No newline at end of file
+{"width":20,"height":40,"tileSize":22,"gameType":"quiz_battle","characterCells":1,"characterCellsW":1,"characterCellsH":1,"ground":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"objects":[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],"blockPlayer":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"interactive":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"startGameArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawnArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawn":{"x":4,"y":4},"quizTrueArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizFalseArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestions":[],"quizCarryHubArea":[],"quizCarryOptionArea":[],"stackReleaseArea":[],"stackLandArea":[],"jumpSurvivePlatforms":[],"jumpSurvivePlatformArea":[],"jumpSurviveRisePxPerSec":42,"jumpSurviveGravity":3200,"jumpSurviveJumpImpulse":0,"jumpSurviveMovePxPerSec":200,"name":"Quiz Battle — คดีทางเพศ","cellColors":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"showMapInGame":false,"quizBattleDomeArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"shooterSpawnSlots":[],"balloonBossPlayerSlots":[],"balloonBossBossSpawn":null,"lanes":[],"gauntletPlayerSpawns":[],"backgroundImage":"/Game/img/qb-scenes/room-6.jpg","carryEmbedCountdownArea":[],"jumpSurvivePlatformVariantArea":[],"jumpSurviveHazardArea":[],"characterCollisionW":1,"characterCollisionH":1,"blockPlayerSeparationW":1,"blockPlayerSeparationH":1,"lobbySpawnMode":"slots6","lobbyPlayerSpawns":[null,null,null,null,null,null],"carryEmbedCountdownHighlight":false,"customizeSpot":null,"hostConsoleSpot":null,"gridImageLibrary":[],"gridImageSprites":[],"gridImageCells":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"quizBattleCategoryId":"topic6","quizBattlePathGateArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFinishArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0],[0,0,0,0,0,0,7,0,0,0,6,0,0,5,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,15,0,0,0,14,0,0,13,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDx":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDy":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,212,0,0,0,212,0,0,212,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,292,0,0,0,292,0,0,292,0,152,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,131,0,271,0,0,0,271,0,0,271,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,351,0,0,0,351,0,0,351,0,211,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,191,0,331,0,0,0,331,0,0,331,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFences":[{"x":5,"y":11.74,"w":10,"h":0.22},{"x":5,"y":19.33,"w":10,"h":0.22},{"x":5,"y":23.13,"w":10,"h":0.22},{"x":5,"y":26.93,"w":10,"h":0.22}],"quizBattleDomeComp":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathGateRequired":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"specialQuizSpawnArea":[]}
\ No newline at end of file
diff --git a/www/html/Game/data/maps/qbroom7.json b/www/html/Game/data/maps/qbroom7.json
index 5014bdf..0fd0a3a 100644
--- a/www/html/Game/data/maps/qbroom7.json
+++ b/www/html/Game/data/maps/qbroom7.json
@@ -1,13284 +1 @@
-{
- "width": 20,
- "height": 40,
- "tileSize": 22,
- "gameType": "quiz_battle",
- "characterCells": 1,
- "characterCellsW": 1,
- "characterCellsH": 1,
- "ground": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "objects": [
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ]
- ],
- "blockPlayer": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "interactive": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "startGameArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "spawnArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "spawn": {
- "x": 4,
- "y": 4
- },
- "quizTrueArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizFalseArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizQuestionArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizQuestions": [],
- "quizCarryHubArea": [],
- "quizCarryOptionArea": [],
- "stackReleaseArea": [],
- "stackLandArea": [],
- "jumpSurvivePlatforms": [],
- "jumpSurvivePlatformArea": [],
- "jumpSurviveRisePxPerSec": 42,
- "jumpSurviveGravity": 3200,
- "jumpSurviveJumpImpulse": 0,
- "jumpSurviveMovePxPerSec": 200,
- "name": "Quiz Battle — คดีอาชญากรรม",
- "cellColors": [
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ]
- ],
- "showMapInGame": false,
- "quizBattleDomeArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizBattlePathArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "shooterSpawnSlots": [],
- "balloonBossPlayerSlots": [],
- "balloonBossBossSpawn": null,
- "lanes": [],
- "gauntletPlayerSpawns": [],
- "backgroundImage": "/Game/img/qb-scenes/room-7.jpg",
- "carryEmbedCountdownArea": [],
- "jumpSurvivePlatformVariantArea": [],
- "jumpSurviveHazardArea": [],
- "characterCollisionW": 1,
- "characterCollisionH": 1,
- "blockPlayerSeparationW": 1,
- "blockPlayerSeparationH": 1,
- "lobbySpawnMode": "slots6",
- "lobbyPlayerSpawns": [
- null,
- null,
- null,
- null,
- null,
- null
- ],
- "carryEmbedCountdownHighlight": false,
- "customizeSpot": null,
- "hostConsoleSpot": null,
- "gridImageLibrary": [],
- "gridImageSprites": [],
- "gridImageCells": [
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ]
- ],
- "quizBattleCategoryId": "topic7",
- "quizBattlePathGateArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 4,
- 4,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 8,
- 8,
- 8,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 9,
- 0,
- 0,
- 0,
- 10,
- 0,
- 0,
- 0,
- 11,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 9,
- 0,
- 0,
- 0,
- 10,
- 0,
- 0,
- 0,
- 11,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 12,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 12,
- 12,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 16,
- 16,
- 0,
- 16,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 16,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 19,
- 20,
- 0,
- 20,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 20,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizBattleFinishArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ]
-}
\ No newline at end of file
+{"width":20,"height":40,"tileSize":22,"gameType":"quiz_battle","characterCells":1,"characterCellsW":1,"characterCellsH":1,"ground":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"objects":[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],"blockPlayer":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"interactive":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"startGameArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawnArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawn":{"x":4,"y":4},"quizTrueArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizFalseArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestions":[],"quizCarryHubArea":[],"quizCarryOptionArea":[],"stackReleaseArea":[],"stackLandArea":[],"jumpSurvivePlatforms":[],"jumpSurvivePlatformArea":[],"jumpSurviveRisePxPerSec":42,"jumpSurviveGravity":3200,"jumpSurviveJumpImpulse":0,"jumpSurviveMovePxPerSec":200,"name":"Quiz Battle — คดีอาชญากรรม","cellColors":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"showMapInGame":false,"quizBattleDomeArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"shooterSpawnSlots":[],"balloonBossPlayerSlots":[],"balloonBossBossSpawn":null,"lanes":[],"gauntletPlayerSpawns":[],"backgroundImage":"/Game/img/qb-scenes/room-7.jpg","carryEmbedCountdownArea":[],"jumpSurvivePlatformVariantArea":[],"jumpSurviveHazardArea":[],"characterCollisionW":1,"characterCollisionH":1,"blockPlayerSeparationW":1,"blockPlayerSeparationH":1,"lobbySpawnMode":"slots6","lobbyPlayerSpawns":[null,null,null,null,null,null],"carryEmbedCountdownHighlight":false,"customizeSpot":null,"hostConsoleSpot":null,"gridImageLibrary":[],"gridImageSprites":[],"gridImageCells":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"quizBattleCategoryId":"topic7","quizBattlePathGateArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFinishArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0],[0,0,0,0,0,0,7,0,0,0,6,0,0,5,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0],[0,0,0,0,0,0,15,0,0,0,14,0,0,13,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDx":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDy":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,198,0,0,0,198,0,0,198,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,272,0,0,0,272,0,0,272,0,132,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,206,0,346,0,0,0,346,0,0,346,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,319,0,0,0,319,0,0,319,0,179,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,153,0,293,0,0,0,293,0,0,293,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFences":[{"x":5,"y":15.28,"w":10,"h":0.22},{"x":5,"y":19.01,"w":10,"h":0.22},{"x":5,"y":22.75,"w":10,"h":0.22}],"quizBattleDomeComp":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathGateRequired":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"specialQuizSpawnArea":[]}
\ No newline at end of file
diff --git a/www/html/Game/data/maps/qbroom8.json b/www/html/Game/data/maps/qbroom8.json
index b2de8ca..b2ef26f 100644
--- a/www/html/Game/data/maps/qbroom8.json
+++ b/www/html/Game/data/maps/qbroom8.json
@@ -1,13284 +1 @@
-{
- "width": 20,
- "height": 40,
- "tileSize": 22,
- "gameType": "quiz_battle",
- "characterCells": 1,
- "characterCellsW": 1,
- "characterCellsH": 1,
- "ground": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "objects": [
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ]
- ],
- "blockPlayer": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "interactive": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "startGameArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "spawnArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "spawn": {
- "x": 4,
- "y": 4
- },
- "quizTrueArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizFalseArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizQuestionArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizQuestions": [],
- "quizCarryHubArea": [],
- "quizCarryOptionArea": [],
- "stackReleaseArea": [],
- "stackLandArea": [],
- "jumpSurvivePlatforms": [],
- "jumpSurvivePlatformArea": [],
- "jumpSurviveRisePxPerSec": 42,
- "jumpSurviveGravity": 3200,
- "jumpSurviveJumpImpulse": 0,
- "jumpSurviveMovePxPerSec": 200,
- "name": "Quiz Battle — อาชญากรรมออนไลน์",
- "cellColors": [
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ]
- ],
- "showMapInGame": false,
- "quizBattleDomeArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizBattlePathArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "shooterSpawnSlots": [],
- "balloonBossPlayerSlots": [],
- "balloonBossBossSpawn": null,
- "lanes": [],
- "gauntletPlayerSpawns": [],
- "backgroundImage": "/Game/img/qb-scenes/room-8.jpg",
- "carryEmbedCountdownArea": [],
- "jumpSurvivePlatformVariantArea": [],
- "jumpSurviveHazardArea": [],
- "characterCollisionW": 1,
- "characterCollisionH": 1,
- "blockPlayerSeparationW": 1,
- "blockPlayerSeparationH": 1,
- "lobbySpawnMode": "slots6",
- "lobbyPlayerSpawns": [
- null,
- null,
- null,
- null,
- null,
- null
- ],
- "carryEmbedCountdownHighlight": false,
- "customizeSpot": null,
- "hostConsoleSpot": null,
- "gridImageLibrary": [],
- "gridImageSprites": [],
- "gridImageCells": [
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ]
- ],
- "quizBattleCategoryId": "topic8",
- "quizBattlePathGateArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 4,
- 4,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 8,
- 8,
- 8,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 9,
- 0,
- 0,
- 0,
- 10,
- 0,
- 0,
- 0,
- 11,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 9,
- 0,
- 0,
- 0,
- 10,
- 0,
- 0,
- 0,
- 11,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 12,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 12,
- 12,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 16,
- 16,
- 0,
- 16,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 16,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 19,
- 20,
- 0,
- 20,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 20,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizBattleFinishArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ]
-}
\ No newline at end of file
+{"width":20,"height":40,"tileSize":22,"gameType":"quiz_battle","characterCells":1,"characterCellsW":1,"characterCellsH":1,"ground":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"objects":[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],"blockPlayer":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"interactive":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"startGameArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawnArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawn":{"x":4,"y":4},"quizTrueArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizFalseArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestions":[],"quizCarryHubArea":[],"quizCarryOptionArea":[],"stackReleaseArea":[],"stackLandArea":[],"jumpSurvivePlatforms":[],"jumpSurvivePlatformArea":[],"jumpSurviveRisePxPerSec":42,"jumpSurviveGravity":3200,"jumpSurviveJumpImpulse":0,"jumpSurviveMovePxPerSec":200,"name":"Quiz Battle — อาชญากรรมออนไลน์","cellColors":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"showMapInGame":false,"quizBattleDomeArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"shooterSpawnSlots":[],"balloonBossPlayerSlots":[],"balloonBossBossSpawn":null,"lanes":[],"gauntletPlayerSpawns":[],"backgroundImage":"/Game/img/qb-scenes/room-8.jpg","carryEmbedCountdownArea":[],"jumpSurvivePlatformVariantArea":[],"jumpSurviveHazardArea":[],"characterCollisionW":1,"characterCollisionH":1,"blockPlayerSeparationW":1,"blockPlayerSeparationH":1,"lobbySpawnMode":"slots6","lobbyPlayerSpawns":[null,null,null,null,null,null],"carryEmbedCountdownHighlight":false,"customizeSpot":null,"hostConsoleSpot":null,"gridImageLibrary":[],"gridImageSprites":[],"gridImageCells":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"quizBattleCategoryId":"topic8","quizBattlePathGateArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFinishArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0],[0,0,0,0,0,0,7,0,0,0,6,0,0,5,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0],[0,0,0,0,0,0,15,0,0,0,14,0,0,13,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDx":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDy":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,202,0,0,0,202,0,0,202,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,277,0,0,0,277,0,0,277,0,137,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,113,0,253,0,0,0,253,0,0,253,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,328,0,0,0,328,0,0,328,0,188,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,164,0,304,0,0,0,304,0,0,304,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFences":[{"x":5,"y":11.59,"w":10,"h":0.22},{"x":5,"y":19.1,"w":10,"h":0.22},{"x":5,"y":22.86,"w":10,"h":0.22},{"x":5,"y":26.61,"w":10,"h":0.22}],"quizBattleDomeComp":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathGateRequired":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"specialQuizSpawnArea":[]}
\ No newline at end of file
diff --git a/www/html/Game/data/maps/qbroom9.json b/www/html/Game/data/maps/qbroom9.json
index 11aab28..449f462 100644
--- a/www/html/Game/data/maps/qbroom9.json
+++ b/www/html/Game/data/maps/qbroom9.json
@@ -1,13284 +1 @@
-{
- "width": 20,
- "height": 40,
- "tileSize": 22,
- "gameType": "quiz_battle",
- "characterCells": 1,
- "characterCellsW": 1,
- "characterCellsH": 1,
- "ground": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "objects": [
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ]
- ],
- "blockPlayer": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "interactive": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "startGameArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "spawnArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "spawn": {
- "x": 4,
- "y": 4
- },
- "quizTrueArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizFalseArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizQuestionArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizQuestions": [],
- "quizCarryHubArea": [],
- "quizCarryOptionArea": [],
- "stackReleaseArea": [],
- "stackLandArea": [],
- "jumpSurvivePlatforms": [],
- "jumpSurvivePlatformArea": [],
- "jumpSurviveRisePxPerSec": 42,
- "jumpSurviveGravity": 3200,
- "jumpSurviveJumpImpulse": 0,
- "jumpSurviveMovePxPerSec": 200,
- "name": "Quiz Battle — กระบวนการยุติธรรม",
- "cellColors": [
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ]
- ],
- "showMapInGame": false,
- "quizBattleDomeArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizBattlePathArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "shooterSpawnSlots": [],
- "balloonBossPlayerSlots": [],
- "balloonBossBossSpawn": null,
- "lanes": [],
- "gauntletPlayerSpawns": [],
- "backgroundImage": "/Game/img/qb-scenes/room-9.jpg",
- "carryEmbedCountdownArea": [],
- "jumpSurvivePlatformVariantArea": [],
- "jumpSurviveHazardArea": [],
- "characterCollisionW": 1,
- "characterCollisionH": 1,
- "blockPlayerSeparationW": 1,
- "blockPlayerSeparationH": 1,
- "lobbySpawnMode": "slots6",
- "lobbyPlayerSpawns": [
- null,
- null,
- null,
- null,
- null,
- null
- ],
- "carryEmbedCountdownHighlight": false,
- "customizeSpot": null,
- "hostConsoleSpot": null,
- "gridImageLibrary": [],
- "gridImageSprites": [],
- "gridImageCells": [
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- [
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ]
- ],
- "quizBattleCategoryId": "topic9",
- "quizBattlePathGateArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 4,
- 4,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 8,
- 8,
- 8,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 9,
- 0,
- 0,
- 0,
- 10,
- 0,
- 0,
- 0,
- 11,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 9,
- 0,
- 0,
- 0,
- 10,
- 0,
- 0,
- 0,
- 11,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 12,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 12,
- 12,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 15,
- 0,
- 0,
- 0,
- 14,
- 0,
- 0,
- 0,
- 13,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 16,
- 16,
- 0,
- 16,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 16,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 0,
- 19,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 17,
- 0,
- 0,
- 0,
- 18,
- 0,
- 0,
- 19,
- 20,
- 0,
- 20,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 20,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ],
- "quizBattleFinishArea": [
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ]
- ]
-}
\ No newline at end of file
+{"width":20,"height":40,"tileSize":22,"gameType":"quiz_battle","characterCells":1,"characterCellsW":1,"characterCellsH":1,"ground":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"objects":[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],"blockPlayer":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"interactive":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"startGameArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawnArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],[0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"spawn":{"x":4,"y":4},"quizTrueArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizFalseArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizQuestions":[],"quizCarryHubArea":[],"quizCarryOptionArea":[],"stackReleaseArea":[],"stackLandArea":[],"jumpSurvivePlatforms":[],"jumpSurvivePlatformArea":[],"jumpSurviveRisePxPerSec":42,"jumpSurviveGravity":3200,"jumpSurviveJumpImpulse":0,"jumpSurviveMovePxPerSec":200,"name":"Quiz Battle — กระบวนการยุติธรรม","cellColors":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"showMapInGame":false,"quizBattleDomeArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"shooterSpawnSlots":[],"balloonBossPlayerSlots":[],"balloonBossBossSpawn":null,"lanes":[],"gauntletPlayerSpawns":[],"backgroundImage":"/Game/img/qb-scenes/room-9.jpg","carryEmbedCountdownArea":[],"jumpSurvivePlatformVariantArea":[],"jumpSurviveHazardArea":[],"characterCollisionW":1,"characterCollisionH":1,"blockPlayerSeparationW":1,"blockPlayerSeparationH":1,"lobbySpawnMode":"slots6","lobbyPlayerSpawns":[null,null,null,null,null,null],"carryEmbedCountdownHighlight":false,"customizeSpot":null,"hostConsoleSpot":null,"gridImageLibrary":[],"gridImageSprites":[],"gridImageCells":[[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],"quizBattleCategoryId":"topic9","quizBattlePathGateArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,7,0,0,0,3,0,0,3,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,15,0,0,0,11,0,0,11,0,11,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFinishArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeQuestionArea":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0],[0,0,0,0,0,0,7,0,0,0,6,0,0,5,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0],[0,0,0,0,0,0,15,0,0,0,14,0,0,13,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDx":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,26,0,0,0,6,0,0,88,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,26,0,26,0,0,0,6,0,0,88,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleDomeDrawDy":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,196,0,0,0,196,0,0,196,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,268,0,0,0,268,0,0,268,0,128,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,200,0,340,0,0,0,340,0,0,340,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,313,0,0,0,313,0,0,313,0,173,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,145,0,285,0,0,0,285,0,0,285,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattleFences":[{"x":5,"y":15.22,"w":10,"h":0.22},{"x":5,"y":18.95,"w":10,"h":0.22},{"x":5,"y":22.67,"w":10,"h":0.22}],"quizBattleDomeComp":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,1,0,0,0,2,0,0,3,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,4,0,0,0,5,0,0,6,0,7,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,8,0,9,0,0,0,10,0,0,11,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,12,0,0,0,13,0,0,14,0,15,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,16,0,17,0,0,0,18,0,0,19,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"quizBattlePathGateRequired":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,1,0,0,0,2,2,0,3,3,3,3,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,7,7,0,3,3,3,0,3,3,0,3,0,3,3,0,0],[0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,7,7,0,8,0,9,9,9,0,10,10,0,11,11,11,11,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,15,15,0,11,11,11,0,11,11,0,11,0,11,11,0,0],[0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,15,15,0,16,0,17,17,17,0,18,18,0,19,19,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,19,19,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"specialQuizSpawnArea":[]}
\ No newline at end of file
diff --git a/www/html/Game/data/quiz-battle-leaderboard.json b/www/html/Game/data/quiz-battle-leaderboard.json
index af14f89..72f4e9f 100644
--- a/www/html/Game/data/quiz-battle-leaderboard.json
+++ b/www/html/Game/data/quiz-battle-leaderboard.json
@@ -1 +1 @@
-{"qbroom1":[{"name":"Nam","score":18,"characterId":"char-1777017632279","ts":1782909257585},{"name":"ผู้เล่น9514","score":17,"characterId":"char-1777017632279","ts":1781850667717},{"name":"MONE","score":10,"characterId":"char-1777017632279","ts":1781850749437},{"name":"tomato","score":9,"characterId":"char-1777017632279","ts":1781850748552},{"name":"Q","score":7,"characterId":"char-1777017632279","ts":1781171902962},{"name":"ผู้เล่น1991","score":5,"characterId":"char-1777017632279","ts":1781850950078},{"name":"ผู้เล่น8916","score":4,"characterId":"char-1777017632279","ts":1781074083031},{"name":"ผู้เล่น2821","score":4,"characterId":"char-1777017632279","ts":1781079179108},{"name":"Weenwild","score":4,"characterId":"char-1777017632279","ts":1781849863580},{"name":"ผู้เล่น2359","score":0,"characterId":"char-1777017632279","ts":1783664802662},{"name":"ผู้เล่น1576","score":0,"characterId":"char-1777017632279","ts":1784258335514}],"qbroom2":[{"name":"ผู้เล่น5703","score":14,"characterId":"char-1777017632279","ts":1784258779407},{"name":"ผู้เล่น4472","score":13,"characterId":"char-1777017632279","ts":1781851033914},{"name":"Q","score":7,"characterId":"char-1777017632279","ts":1781175468983},{"name":"ผู้เล่น2612","score":1,"characterId":"char-1777017632279","ts":1781079252376},{"name":"ผู้เล่น1948","score":0,"characterId":"char-1777017632279","ts":1783664954451}],"qbroom3":[{"name":"Q","score":9,"characterId":"char-1777017632279","ts":1781175654893},{"name":"Weenwild","score":2,"characterId":"char-1777017632279","ts":1781849898452},{"name":"ผู้เล่น8622","score":0,"characterId":"char-1777017632279","ts":1783842317274}],"qbroom5":[{"name":"Q","score":6,"characterId":"char-1777017632279","ts":1781675299850}],"qbroom6":[{"name":"Q","score":3,"characterId":"char-1777017632279","ts":1781675383175},{"name":"ผู้เล่น1752","score":1,"characterId":"char-1777017632279","ts":1784273155119}],"qbroom9":[{"name":"Q","score":7,"characterId":"char-1777017632279","ts":1781696345322}],"qbroom4":[{"name":"ผู้เล่น9337","score":20,"characterId":"char-1777017632279","ts":1784270128376}],"qbroom7":[{"name":"ผู้เล่น4119","score":3,"characterId":"char-1777017632279","ts":1784270217530}]}
\ No newline at end of file
+{"qbroom1":[{"name":"Nam","score":18,"characterId":"char-1777017632279","ts":1782909257585},{"name":"ผู้เล่น9514","score":17,"characterId":"char-1777017632279","ts":1781850667717},{"name":"MONE","score":10,"characterId":"char-1777017632279","ts":1781850749437},{"name":"tomato","score":9,"characterId":"char-1777017632279","ts":1781850748552},{"name":"Q","score":7,"characterId":"char-1777017632279","ts":1781171902962},{"name":"ผู้เล่น1991","score":5,"characterId":"char-1777017632279","ts":1781850950078},{"name":"ผู้เล่น8916","score":4,"characterId":"char-1777017632279","ts":1781074083031},{"name":"ผู้เล่น2821","score":4,"characterId":"char-1777017632279","ts":1781079179108},{"name":"Weenwild","score":4,"characterId":"char-1777017632279","ts":1781849863580},{"name":"play1","score":1,"characterId":"char-1777017632279","ts":1785441076910},{"name":"ผู้เล่น2359","score":0,"characterId":"char-1777017632279","ts":1783664802662},{"name":"ผู้เล่น1576","score":0,"characterId":"char-1777017632279","ts":1784258335514}],"qbroom2":[{"name":"ผู้เล่น5703","score":14,"characterId":"char-1777017632279","ts":1784258779407},{"name":"ผู้เล่น4472","score":13,"characterId":"char-1777017632279","ts":1781851033914},{"name":"Q","score":7,"characterId":"char-1777017632279","ts":1781175468983},{"name":"ผู้เล่น2612","score":1,"characterId":"char-1777017632279","ts":1781079252376},{"name":"play2","score":1,"characterId":"char-1777017632279","ts":1785440817269},{"name":"ผู้เล่น1948","score":0,"characterId":"char-1777017632279","ts":1783664954451}],"qbroom3":[{"name":"Q","score":9,"characterId":"char-1777017632279","ts":1781175654893},{"name":"Weenwild","score":2,"characterId":"char-1777017632279","ts":1781849898452},{"name":"play3","score":1,"characterId":"char-1777017632279","ts":1785441122522},{"name":"ผู้เล่น8622","score":0,"characterId":"char-1777017632279","ts":1783842317274}],"qbroom5":[{"name":"Q","score":6,"characterId":"char-1777017632279","ts":1781675299850},{"name":"play5","score":1,"characterId":"char-1777017632279","ts":1785440912224}],"qbroom6":[{"name":"Q","score":3,"characterId":"char-1777017632279","ts":1781675383175},{"name":"ผู้เล่น1752","score":1,"characterId":"char-1777017632279","ts":1784273155119},{"name":"play6","score":1,"characterId":"char-1777017632279","ts":1785441196130}],"qbroom9":[{"name":"Q","score":7,"characterId":"char-1777017632279","ts":1781696345322},{"name":"play9","score":1,"characterId":"char-1777017632279","ts":1785441009369}],"qbroom4":[{"name":"ผู้เล่น9337","score":20,"characterId":"char-1777017632279","ts":1784270128376},{"name":"play4","score":1,"characterId":"char-1777017632279","ts":1785440881506}],"qbroom7":[{"name":"Q","score":4,"characterId":"char-1777017632279","ts":1784785097780},{"name":"ผู้เล่น4119","score":3,"characterId":"char-1777017632279","ts":1784270217530},{"name":"play7","score":1,"characterId":"char-1777017632279","ts":1785440972161}],"qbroom8":[{"name":"play8","score":1,"characterId":"char-1777017632279","ts":1785440990472}],"qbroom10":[{"name":"play10","score":1,"characterId":"char-1777017632279","ts":1785441027840}]}
\ No newline at end of file
diff --git a/www/html/Game/data/quiz-battle-modes.json b/www/html/Game/data/quiz-battle-modes.json
new file mode 100644
index 0000000..80419a6
--- /dev/null
+++ b/www/html/Game/data/quiz-battle-modes.json
@@ -0,0 +1,68 @@
+{
+ "version": 1,
+ "updatedAt": "2026-07-27 00:17",
+ "updatedBy": "admin",
+ "tz": "Asia/Bangkok",
+ "modes": {
+ "1": {
+ "title": "กฎหมายใกล้ตัวสิ",
+ "enabled": true,
+ "openUntil": "",
+ "maxPlayers": 50
+ },
+ "2": {
+ "title": "กฎหมายสิทธิพื้นฐาน",
+ "enabled": true,
+ "openUntil": "",
+ "maxPlayers": 50
+ },
+ "3": {
+ "title": "กฎหมายจราจร",
+ "enabled": true,
+ "openUntil": "",
+ "maxPlayers": 50
+ },
+ "4": {
+ "title": "คดีเกี่ยวกับทรัพย์",
+ "enabled": true,
+ "openUntil": "",
+ "maxPlayers": 50
+ },
+ "5": {
+ "title": "คดีหมิ่นประมาท",
+ "enabled": true,
+ "openUntil": "",
+ "maxPlayers": 50
+ },
+ "6": {
+ "title": "คดีทางเพศ",
+ "enabled": true,
+ "openUntil": "",
+ "maxPlayers": 50
+ },
+ "7": {
+ "title": "คดีอาชญากรรม",
+ "enabled": true,
+ "openUntil": "",
+ "maxPlayers": 50
+ },
+ "8": {
+ "title": "อาชญากรรมออนไลน์",
+ "enabled": true,
+ "openUntil": "",
+ "maxPlayers": 50
+ },
+ "9": {
+ "title": "กระบวนการยุติธรรม",
+ "enabled": true,
+ "openUntil": "",
+ "maxPlayers": 50
+ },
+ "10": {
+ "title": "งานบริการกระทรวงยุติธรรม",
+ "enabled": true,
+ "openUntil": "",
+ "maxPlayers": 50
+ }
+ }
+}
\ No newline at end of file
diff --git a/www/html/Game/public/ai-admin.html b/www/html/Game/public/ai-admin.html
index 11f6c53..f04e30a 100644
--- a/www/html/Game/public/ai-admin.html
+++ b/www/html/Game/public/ai-admin.html
@@ -56,9 +56,10 @@
การตั้งค่าระบบ
- OpenAI API Key
-
- เว้นว่างถ้าไม่ต้องการเปลี่ยน
+ API Key (OpenAI หรือ OpenRouter)
+
+ กำลังตรวจสอบ…
+ เว้นว่างถ้าไม่ต้องการเปลี่ยน · คีย์ที่ขึ้นต้น sk-or- ระบบจะส่งไป OpenRouter ให้อัตโนมัติ
Model
@@ -156,9 +157,24 @@
document.getElementById('rag-enabled').checked = !!data.rag_enabled;
document.getElementById('rag-context').value = data.rag_context != null ? data.rag_context : '';
document.getElementById('rag-context-wrap').style.opacity = data.rag_enabled ? '1' : '0.7';
+ showKeyStatus(data);
});
}
+ /* [2026-07-23] เดิมช่องคีย์ถูกล้างทุกครั้งหลังเซฟ และ hasKey ที่ API ส่งมาไม่เคยถูกแสดง
+ → ผู้ใช้ไม่มีทางรู้ว่าคีย์ถูกเก็บไว้จริงไหม = "กดเซฟแล้วมันไม่เซฟ" */
+ function showKeyStatus(data) {
+ var el = document.getElementById('key-status');
+ if (!el || !data) return;
+ if (data.hasKey) {
+ el.style.color = '#9ece6a';
+ el.textContent = '✓ มีคีย์บันทึกอยู่แล้ว: ' + (data.keyMasked || '') + ' → ใช้ ' + (data.provider || '?');
+ } else {
+ el.style.color = '#f7768e';
+ el.textContent = '✗ ยังไม่มีคีย์ในระบบ';
+ }
+ }
+
document.getElementById('rag-enabled').addEventListener('change', function () {
document.getElementById('rag-context-wrap').style.opacity = this.checked ? '1' : '0.7';
});
@@ -204,6 +220,7 @@
msgEl.textContent = 'บันทึกแล้ว';
msgEl.style.display = 'block';
document.getElementById('openai-key').value = '';
+ showKeyStatus(data); /* ยืนยันทันทีว่าคีย์ที่เก็บอยู่คือใบไหน/เจ้าไหน */
} else {
errEl.textContent = (data && data.error) || 'บันทึกไม่สำเร็จ';
}
diff --git a/www/html/Game/public/editor.html b/www/html/Game/public/editor.html
index d503fcd..b049cc2 100644
--- a/www/html/Game/public/editor.html
+++ b/www/html/Game/public/editor.html
@@ -1,589 +1,589 @@
-
-
-
-
-
-
-
-
Editor ฉาก — Game
-
-
-
-
-
-
-
-
-
Editor ฉาก
-
-
-
- −
- 100%
- +
- 1:1
- Fit
-
-
-
-
-
- SCORE
-
-
-
-
-
ผู้เล่นทดสอบ
-
- 0
-
-
-
-
-
TIME
-
0
-
TOWER STACK · DECRYPT — TIME (sec) · เหลือเวลาถอดรหัส
-
-
-
-
SYSTEM INTEGRITY:
-
[ ♥ ♥ ♥ ]
-
P1 • ผู้เล่นทดสอบ • TEAM 0 • COMBO x0
-
-
-
-
-
-
O
-
-
-
-
-
บันทึกแล้วจะได้รหัสฉาก ใช้รหัสนี้ตอนสร้างห้องในล็อบบี้
-
-
-
-
-
v —
-
-
-
-
-
🛠️ เครื่องมือ
-
-
-
+
+
+
+
+
+
+
+
Editor ฉาก — Game
+
+
+
+
+
+
+
+
+
Editor ฉาก
+
+
+
+ −
+ 100%
+ +
+ 1:1
+ Fit
+
+
+
+
+
+ SCORE
+
+
+
+
+
ผู้เล่นทดสอบ
+
+ 0
+
+
+
+
+
TIME
+
0
+
TOWER STACK · DECRYPT — TIME (sec) · เหลือเวลาถอดรหัส
+
+
+
+
SYSTEM INTEGRITY:
+
[ ♥ ♥ ♥ ]
+
P1 • ผู้เล่นทดสอบ • TEAM 0 • COMBO x0
+
+
+
+
+
+
O
+
+
+
+
+
บันทึกแล้วจะได้รหัสฉาก ใช้รหัสนี้ตอนสร้างห้องในล็อบบี้
+
+
+
+
+
v —
+
+
+
+
+
🛠️ เครื่องมือ
+
+
+
diff --git a/www/html/Game/public/img/qb-scenes/room-1.jpg b/www/html/Game/public/img/qb-scenes/room-1.jpg
index 8961f9d..46adde3 100644
Binary files a/www/html/Game/public/img/qb-scenes/room-1.jpg and b/www/html/Game/public/img/qb-scenes/room-1.jpg differ
diff --git a/www/html/Game/public/img/qb-scenes/room-10.jpg b/www/html/Game/public/img/qb-scenes/room-10.jpg
index b55b6d7..8d85d49 100644
Binary files a/www/html/Game/public/img/qb-scenes/room-10.jpg and b/www/html/Game/public/img/qb-scenes/room-10.jpg differ
diff --git a/www/html/Game/public/img/qb-scenes/room-2.jpg b/www/html/Game/public/img/qb-scenes/room-2.jpg
index 0cb806c..82d55b5 100644
Binary files a/www/html/Game/public/img/qb-scenes/room-2.jpg and b/www/html/Game/public/img/qb-scenes/room-2.jpg differ
diff --git a/www/html/Game/public/img/qb-scenes/room-3.jpg b/www/html/Game/public/img/qb-scenes/room-3.jpg
index 23fce15..c39fbd4 100644
Binary files a/www/html/Game/public/img/qb-scenes/room-3.jpg and b/www/html/Game/public/img/qb-scenes/room-3.jpg differ
diff --git a/www/html/Game/public/img/qb-scenes/room-4.jpg b/www/html/Game/public/img/qb-scenes/room-4.jpg
index 913e30c..734077c 100644
Binary files a/www/html/Game/public/img/qb-scenes/room-4.jpg and b/www/html/Game/public/img/qb-scenes/room-4.jpg differ
diff --git a/www/html/Game/public/img/qb-scenes/room-5.jpg b/www/html/Game/public/img/qb-scenes/room-5.jpg
index 7419c37..00ebf2b 100644
Binary files a/www/html/Game/public/img/qb-scenes/room-5.jpg and b/www/html/Game/public/img/qb-scenes/room-5.jpg differ
diff --git a/www/html/Game/public/img/qb-scenes/room-6.jpg b/www/html/Game/public/img/qb-scenes/room-6.jpg
index 6c72bb1..f15a66b 100644
Binary files a/www/html/Game/public/img/qb-scenes/room-6.jpg and b/www/html/Game/public/img/qb-scenes/room-6.jpg differ
diff --git a/www/html/Game/public/img/qb-scenes/room-7.jpg b/www/html/Game/public/img/qb-scenes/room-7.jpg
index bd6c308..50b08b4 100644
Binary files a/www/html/Game/public/img/qb-scenes/room-7.jpg and b/www/html/Game/public/img/qb-scenes/room-7.jpg differ
diff --git a/www/html/Game/public/img/qb-scenes/room-8.jpg b/www/html/Game/public/img/qb-scenes/room-8.jpg
index bf923bb..c7a0633 100644
Binary files a/www/html/Game/public/img/qb-scenes/room-8.jpg and b/www/html/Game/public/img/qb-scenes/room-8.jpg differ
diff --git a/www/html/Game/public/img/qb-scenes/room-9.jpg b/www/html/Game/public/img/qb-scenes/room-9.jpg
index 3622735..cec3d36 100644
Binary files a/www/html/Game/public/img/qb-scenes/room-9.jpg and b/www/html/Game/public/img/qb-scenes/room-9.jpg differ
diff --git a/www/html/Game/public/img/qb-ui/Quiz-Lock.png b/www/html/Game/public/img/qb-ui/Quiz-Lock.png
new file mode 100644
index 0000000..fe5d026
Binary files /dev/null and b/www/html/Game/public/img/qb-ui/Quiz-Lock.png differ
diff --git a/www/html/Game/public/img/qb-ui/Quiz-Unlock.png b/www/html/Game/public/img/qb-ui/Quiz-Unlock.png
new file mode 100644
index 0000000..a67aae8
Binary files /dev/null and b/www/html/Game/public/img/qb-ui/Quiz-Unlock.png differ
diff --git a/www/html/Game/public/js/play.js b/www/html/Game/public/js/play.js
index 121d2eb..91df0ea 100644
--- a/www/html/Game/public/js/play.js
+++ b/www/html/Game/public/js/play.js
@@ -1,27892 +1,28015 @@
-(function () {
- const BASE = '/Game';
- function playDesignMainMenuHref() {
- try {
- if (typeof globalThis !== 'undefined' && typeof globalThis.designMainMenuHref === 'function') {
- return globalThis.designMainMenuHref();
- }
- } catch (e) { /* ignore */ }
- return '/Main-Menu/';
- }
- function playDesignMainLobbyHref() {
- try {
- if (typeof globalThis !== 'undefined' && typeof globalThis.designMainLobbyHref === 'function') {
- return globalThis.designMainLobbyHref();
- }
- } catch (e) { /* ignore */ }
- return '/Main-Lobby/';
- }
- /** รูปเลข 3–2–1 — เสิร์ฟที่ /Game/img/QUESTION/ (nginx alias /Game/ → public; อย่าใช้ /Game/public/img/) */
- const COUNTDOWN_321_IMG_BASE = BASE + '/img/QUESTION/';
- /** แผงคำถามบนแมป quiz_carry — ไฟล์อยู่ public/img/quiz-carry */
- const QUIZ_CARRY_MAP_FEEDBACK_IMG = {
- correct: BASE + '/img/quiz-carry/icon-Correct.png',
- incorrect: BASE + '/img/quiz-carry/icon-Incorrect.png',
- scorePlus: BASE + '/img/quiz-carry/score+10.png',
- };
- const QUIZ_MAP_CARRY_FEEDBACK_MS = 1400;
- const params = new URLSearchParams(window.location.search);
- const spaceId = params.get('space');
- function readStoredDisplayName() {
- try {
- return (localStorage.getItem('roomLobbyDisplayName') || localStorage.getItem('playerName') || '').trim();
- } catch (e) { return ''; }
- }
- let nick = (params.get('nick') || '').trim() || readStoredDisplayName() || 'ผู้เล่น';
- const previewMode = params.get('preview') === '1';
- /* Card 3 Ban — ผู้ถูกแบนรอบนี้: เข้ามาดูเพื่อนเล่นได้ แต่ควบคุมตัวละคร/ทำแอ็กชันไม่ได้ (รอบหน้าเล่นปกติ) */
- const playBannedSpectator = params.get('banned') === '1';
- /* Card 3 Ban (กรณีโหวตแบน "บอท") — slot ของ __pv_bot_N ที่ถูกแบน → ไม่ spawn ลงเล่นรอบนี้ (-1 = ไม่มี) */
- const playBannedBotSlot = (() => { const v = parseInt(params.get('banBot'), 10); return Number.isFinite(v) && v >= 0 ? v : -1; })();
- /* shield โปร่งใสคลุมทั้งจอ (z 200) กิน pointer/touch ทุกอย่าง → ปุ่มเกม(jump z59/drop z60/joystick/shoot)+canvas กดไม่ได้
- แต่ต่ำกว่า modal (z 10000+) เลย special quiz / สรุปผล ยังกดได้ปกติ + ป้ายบอกสถานะด้านบน */
- function setupBannedSpectatorUi() {
- if (!playBannedSpectator || document.getElementById('banned-spectator-shield')) return;
- /* หน้า how-to/pregame = "ตัวคุมรอบ" (READY/START) ไม่ใช่การเล่น → ต้องอยู่เหนือ shield เสมอ
- บั๊ก: how-to ของ MG2 (คลาส gch-mg2-mock) มี z-index แค่ 56 — ต่ำกว่า shield (200) → โดนคลุมทั้งแผง
- → host ที่โดนแบนกด START ไม่ได้ และ START เป็นสิทธิ์ host เท่านั้น = ทั้งห้องค้างถาวร
- (เลย์เอาต์อื่นรอดเพราะ z สูงอยู่แล้ว: crown legacy 10140 / quiz-carry 10078)
- ปล่อยให้กดได้ปลอดภัย: server กัน non-host กด START และไม่นับ ready ของคนถูกแบนอยู่แล้ว */
- const zfix = document.createElement('style');
- zfix.id = 'banned-spectator-zfix';
- zfix.textContent = '#gauntlet-crown-howto-overlay,#quiz-carry-pregame-overlay{z-index:260!important}';
- document.head.appendChild(zfix);
- const shield = document.createElement('div');
- shield.id = 'banned-spectator-shield';
- shield.style.cssText = 'position:fixed;inset:0;z-index:200;background:transparent;pointer-events:auto;cursor:not-allowed;touch-action:none;-webkit-tap-highlight-color:transparent';
- ['pointerdown', 'pointerup', 'mousedown', 'mouseup', 'click', 'dblclick', 'touchstart', 'touchend', 'touchmove', 'wheel', 'contextmenu'].forEach(function (ev) {
- shield.addEventListener(ev, function (e) { e.stopPropagation(); e.preventDefault(); }, { passive: false });
- });
- document.body.appendChild(shield);
- const banner = document.createElement('div');
- banner.id = 'banned-spectator-banner';
- banner.style.cssText = 'position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:201;pointer-events:none;background:linear-gradient(180deg,#2a1430,#160a1d);border:1px solid rgba(247,118,142,.6);border-radius:14px;padding:10px 20px;text-align:center;box-shadow:0 10px 30px rgba(0,0,0,.55)';
- banner.innerHTML = '
BAN CARD
'
- + '
คุณถูกแบนรอบนี้ · กำลังดูเพื่อนเล่น
'
- + '
รอบหน้ากลับมาเล่นได้ตามปกติ
';
- document.body.appendChild(banner);
- }
- const specialQuizForceDebug = params.get('sqForce') === '1';
- const forceDefaultCharacter = params.get('defaultChar') === '1';
- const editorEmbedReturn = params.get('editorEmbed') === '1';
- if (previewMode && editorEmbedReturn) {
- try { document.documentElement.classList.add('play-preview-editor-embed'); } catch (e) { /* ignore */ }
- }
-
- /* #5 หน้าโหลดตอนเข้าเกม — กันเห็นจอเปล่า/asset แว่บก่อนฉากพร้อม. โชว์ทันที ซ่อนเมื่อ draw() เฟรมแรกมี mapData
- (+ หน่วงเล็กน้อยให้ asset แรกโหลด) มี safety timeout กันค้าง. ไม่โชว์ใน editor embed preview */
- let playLoadingHidden = false;
- let playLoadingHideScheduled = false;
- const PLAY_LOADING_MIN_MS = 450; /* โชว์อย่างน้อยเท่านี้ กันแว่บหาย (ไม่ทันเห็น) */
- let playLoadingShownAt = (typeof performance !== 'undefined' ? performance.now() : Date.now());
- function nowMsPlay() { return (typeof performance !== 'undefined' ? performance.now() : Date.now()); }
- function hidePlayLoadingOverlay() {
- if (playLoadingHidden) return;
- const elapsed = nowMsPlay() - playLoadingShownAt;
- if (elapsed < PLAY_LOADING_MIN_MS) { setTimeout(hidePlayLoadingOverlay, PLAY_LOADING_MIN_MS - elapsed); return; }
- playLoadingHidden = true;
- try {
- const el = document.getElementById('play-loading-overlay');
- if (el) { el.style.opacity = '0'; el.style.pointerEvents = 'none'; setTimeout(function () { if (el && el.parentNode) el.parentNode.removeChild(el); }, 340); }
- } catch (_e) { /* ignore */ }
- }
- (function showPlayLoadingOverlay() {
- /* editor embed preview: ไม่ต้องมี loading → เอา overlay static ออก */
- if (previewMode && editorEmbedReturn) {
- playLoadingHidden = true;
- try { const pe = document.getElementById('play-loading-overlay'); if (pe && pe.parentNode) pe.parentNode.removeChild(pe); } catch (_e) {}
- return;
- }
- /* [2026-07-17] เสียง warp "ตอนวาร์ปเข้ามินิเกม" — เล่นพร้อม "คลิป/จอโหลด" ตั้งแต่เข้า play.html
- (user request: เดิมอยู่ตอนฉากโหลดเสร็จ = หลังคลิป). play.html เป็นมินิเกมล้วน (LobbyB อยู่ที่
- room-lobby.html เสมอ — room-lobby.js:7876) → ปลอดภัยที่จะเล่นตอน page load. gate กันเคส lobby
- map (mn8nx46h) หลุดมา + ต้องมี map param จริง. warp เป็นเสียง root (ROOT_SFX) resolve ได้โดยไม่พึ่ง
- mapData ที่ยังไม่มาตอนนี้. autoplay: engagement สูงพอเล่นได้ (เดิมที่ playClientReadyEmitted ก็เล่นได้
- โดยไม่มี gesture ใหม่บนหน้านี้) */
- try {
- var _warpMap = '';
- try { _warpMap = String(new URLSearchParams(location.search).get('map') || '').trim(); } catch (_e) { _warpMap = ''; }
- if (window.jdSound && _warpMap && _warpMap !== 'mn8nx46h') {
- try { window.jdSound.playSfx('warp'); } catch (_e) { /* ignore */ }
- }
- } catch (_e) { /* ignore */ }
- try {
- if (!document.body) return;
- /* overlay เป็น static ใน play.html แล้ว — ถ้าไม่มี (html เก่า cache) ค่อย inject เสริม */
- if (!document.getElementById('play-loading-overlay')) {
- const css = document.createElement('style');
- css.textContent = ''
- + '#play-loading-overlay{position:fixed;inset:0;z-index:99990;display:flex;flex-direction:column;align-items:center;'
- + 'justify-content:center;gap:18px;background:radial-gradient(circle at 50% 42%,#10203c,#060b16 75%);transition:opacity .32s;}'
- + '#play-loading-overlay .plo-spin{width:62px;height:62px;border-radius:50%;border:6px solid rgba(120,190,255,.18);'
- + 'border-top-color:#5fd0ff;animation:ploSpin .85s linear infinite;}'
- + '#play-loading-overlay .plo-text{color:#cfe8ff;font:600 19px system-ui,"Kanit",sans-serif;letter-spacing:.5px;text-shadow:0 2px 10px rgba(0,0,0,.5);}'
- + '@keyframes ploSpin{to{transform:rotate(360deg);}}';
- document.head.appendChild(css);
- const ov = document.createElement('div');
- ov.id = 'play-loading-overlay';
- ov.innerHTML = '
กำลังโหลดเกม…
';
- document.body.insertBefore(ov, document.body.firstChild);
- }
- /* safety กันค้าง — แต่ "อย่าซ่อนถ้าเกมยังไม่ render" (เน็ตช้า join นาน → ถ้าซ่อน 8 วิ = จอดำเปล่า ไม่รู้สถานะ)
- เช็คทุก 1.5 วิ: เกมเริ่มวาดแล้ว (playLoadingHideScheduled) → ปล่อย path ปกติซ่อน · ยังไม่วาด+ช้า → โชว์ "เน็ตช้า (N วิ)" คง spinner · เกิน 30 วิ ค่อยซ่อนกันค้างถาวร */
- const _ploT0 = Date.now();
- const _ploCheck = function () {
- if (playLoadingHidden || playLoadingHideScheduled) return; /* ซ่อนแล้ว/เกมเริ่มวาดแล้ว */
- const waited = Date.now() - _ploT0;
- if (waited > 30000) { hidePlayLoadingOverlay(); return; } /* hard limit กันค้างถาวร */
- if (waited > 5000) {
- const txt = document.querySelector('#play-loading-overlay .plo-text');
- if (txt) txt.textContent = 'เน็ตช้า… กำลังโหลด (' + Math.floor(waited / 1000) + ' วิ)';
- }
- setTimeout(_ploCheck, 1500);
- };
- setTimeout(_ploCheck, 1500);
- } catch (_e) { playLoadingHidden = true; }
- })();
- const playMapIdFromQuery = (params.get('map') || '').trim();
- /** mapId จาก join / game-start — ใช้จับฉาก crown เมื่อ URL ไม่มี ?map= */
- let playSessionMapId = playMapIdFromQuery;
- /** สรุปภารกิจแบบ mock (popup-result ฯลฯ) — ใช้เฉพาะฉากนี้จาก editor (id ใน URL เช่น editor.html?id=mnorwqx1) */
- const quizCarryMissionSummaryMapId = 'mnorwqx1';
- /* ใช้ map จริง (currentPlayMapId) ไม่ใช่ ?map= ใน URL — live play ไม่มี ?map= → เดิม false →
- mission flow ไม่ทำงาน → MG4 จบหลังตอบ 1 ข้อ (bug #41). เป็นฟังก์ชันเพราะ map รู้ตอน join */
- function quizCarryUseMissionSummaryOverlay() { return currentPlayMapId() === quizCarryMissionSummaryMapId; }
- /** Gauntlet พรมแดง — ฉากนี้จาก editor (?map=mno9kb07): วาดตัวหันขวา + ใช้รูป lane/laser จาก game-timing */
- const GAUNTLET_FACE_RIGHT_MAP_ID = 'mno9kb07';
- /** Jump Survival ฉาก Jumper — UI สรุปภารกิจแบบ crown + รูปใน /img/Jumper/ (editor ?map=mnptfts2) */
- const JUMP_SURVIVE_MISSION_MAP_ID = 'mnptfts2';
- /** Space shooter ฉาก Violent Crime — flow เดียวกับ crown/howto (รูปใน /img/ViolentCrime/) */
- const SPACE_SHOOTER_MISSION_MAP_ID = 'mnpz6rkp';
- /** Quiz ฉากสอบสวน — flow เดียวกับ crown/howto แต่รูปใน /img/QUESTION/ */
- const QUIZ_QUESTION_MISSION_MAP_ID = 'mng8a80o';
- /** Stack ซ้อนตึก — ฉากภารกิจ (HOWTO → นับถอยหลัง → เล่น → สรุป) รูปใน `/Game/img/TowerBlock` */
- const STACK_TOWER_MISSION_MAP_ID = 'mnn93hpi';
- /** Stack Tower: บัฟเฟอร์วาดคงที่ 16:9 — 1920×1080 */
- const STACK_TOWER_FIXED_RENDER_W = 1920;
- const STACK_TOWER_FIXED_RENDER_H = 1080;
- /** คูณ zDraw ให้มุมมองโลกเท่าเดิมเมื่อบัฟเฟอร์กว้างกว่าฐานอ้างอิง 1280w (= 1.5 ที่ 1920w) */
- const STACK_TOWER_FIXED_RENDER_Z_MUL = STACK_TOWER_FIXED_RENDER_W / 1280;
- /** เชือก Stack Tower: ปลายล่างตามเส้น (1 = ถึงจุดยึดบล็อก) */
- const STACK_TOWER_ROPE_DRAW_T1 = 1.0;
- /** ปลายบนเชือก (จอ): ยืดเหนือขอบบนแคนวาสเป็นเศษส่วนของความสูง (เช่น 0.25 = 25% นอกจอด้านบน) */
- const STACK_TOWER_ROPE_TOP_ABOVE_CANVAS_FRAC = 0.25;
- /** progress ≥ นี้ (ฉาก Tower mnn93hpi): รูป heavy + ความกว้าง heavy = เท่าเดียวกับปกติ × ค่าด้านล่าง + แอนิเมตซูม/เลื่อน */
- const STACK_TOWER_POST50_PROGRESS_THRESH = 60;
- const STACK_TOWER_POST50_ZOOM_MUL = 1.1;
- /** เลื่อน BG แนวตั้งเท่าเศษส่วนของความสูงแคนวาส (จอ) */
- const STACK_TOWER_POST50_MAP_SHIFT_SCREEN_FRAC = 0.1;
- const STACK_TOWER_POST50_ANIM_MS = 680;
- /** แมป mnn93hpi: สเกลความกว้าง/ความสูงชั้นของบล็อกในโลก (1 = ขนาดเดิม) */
- const STACK_TOWER_BLOCK_WORLD_SCALE = 1.5;
- /** หลังเกณฑ์ progress (Tower): เลื่อนกล้องลงในมุมมองจอเท่าเศษส่วนของความสูงแคนวาส (เช่น 0.25 = 25% ของความสูงจอ) */
- const STACK_TOWER_POST50_VIEW_SHIFT_SCREEN_FRAC = 0.25;
- /** Mega Virus — balloon_boss ฉากภารกิจ (flow เดียวกับ crown / mno9kb07) รูปใน `/Game/img/MegaVirus` */
- const BALLOON_BOSS_MISSION_MAP_ID = 'mnq1eml7';
- /** ครบชั้นนี้ขึ้นไป — ยกจุดแกว่ง/เชือกขึ้น (world px) ป้องกันชนกองสูง (เฉพาะ Tower mission) */
- const STACK_TOWER_SWING_LIFT_FROM_LAYER = 9;
- /** Stack — เกณฑ์ใกล้ความจริง: ทับมากขึ้น, จำกัดการเยื้องจากกลางฐาน, ทับน้อยแล้วโคลงง่ายขึ้น */
- const STACK_OVERLAP_MISS_MIN_ON_LAND = 0.42;
- const STACK_OVERLAP_MISS_FRAC_ON_LAND = 0.14;
- const STACK_OVERLAP_MISS_MIN_ON_LAYER = 0.4;
- const STACK_OVERLAP_MISS_FRAC_ON_LAYER = 0.5; /* ต้องตรงกับ server — miss เมื่อ overlap < 50% บล็อก */
- /** จุดกลางแท่งที่วาง vs กลางโซน land — เกิน (ความกว้างโซน × นี้) = พลาด (ชั้นที่ 2 ขึ้นไป) */
- const STACK_MAX_CENTER_DRIFT_FRAC_OF_LAND = 0.38;
- /** ไม่มี stackLandArea: ใช้กลางแมป — เยื้องได้ไม่เกิน fallW × นี้ (รวม) */
- const STACK_MAX_CENTER_DRIFT_NO_LAND_MULT = 1.0;
- /** overlap/fallW ต่ำกว่านี้ → เข้า settling (แท่งไม่นิ่ง) */
- const STACK_STABLE_SUPPORT_RATIO_MIN = 0.62;
- /** Stack ทั่วไป (ไม่ใช่ Tower post-50%): บล็อก heavy กว้างกว่าปกติ (~382×72 vs 314×103) */
- const STACK_BLOCK_HEAVY_WIDTH_MULT = 382 / 314;
- /** Tower live + progress ≥เกณฑ์ + heavy: ความกว้างบล็อก = ปกติ × ค่านี้ (เช่น 0.6 = 60% ของช่องปกติ — รูปใหญ่วาดในกรอบเดียวกัน) */
- const STACK_TOWER_POST50_WIDTH_MULT = 0.6;
-
- function stackBlockWidthTilesForPlay(baseTiles, heavy) {
- const b = Number(baseTiles);
- const base = Number.isFinite(b) ? Math.max(0.85, Math.min(3.2, b)) : 2;
- const towerHeavyNarrow =
- !!heavy &&
- isStackTowerMissionUiMapPlay() &&
- stackTowerMissionPhase === 'live' &&
- stackMini &&
- Number.isFinite(Number(stackMini.progressPct)) &&
- Number(stackMini.progressPct) >= STACK_TOWER_POST50_PROGRESS_THRESH;
- if (towerHeavyNarrow) {
- const w = base * STACK_TOWER_POST50_WIDTH_MULT;
- return Math.max(0.85, Math.min(3.2, Math.round(w * 200) / 200));
- }
- if (!heavy) return base;
- const w = base * STACK_BLOCK_HEAVY_WIDTH_MULT;
- return Math.min(3.2, Math.round(w * 200) / 200);
- }
- /** Violent Crime mission: asteroid strikes ship → invuln → 3 strikes = eliminated */
- const SPACE_SHOOTER_MISSION_MAX_ASTEROID_HITS = 3;
- const SPACE_SHOOTER_MISSION_HIT_INVULN_MS = 1400;
- const SPACE_SHOOTER_MISSION_SHIP_HIT_RADIUS = 12;
- /** อุกาบาต: HP สุ่ม 1–5 ต่อก้อน (ไม่วาดหัวใจบนก้อน) — ขนาดตาม HP เทียบสเกล 5 */
- const SPACE_SHOOTER_ASTEROID_MAX_HP = 5;
- const SPACE_SHOOTER_ASTEROID_RADIUS_AT_FULL = 34;
- const SPACE_SHOOTER_ASTEROID_RADIUS_AT_MIN_HP = 8;
-
- /* PRNG แบบ seed ได้ (mulberry32) — ใช้สุ่มสิ่งแวดล้อมมินิเกมแบบ deterministic
- seed เดียวกัน (อิง liveBeginsAt ของ server) → ทุกเครื่องได้ลำดับสุ่มเดียวกัน = อุกาบาต/บอลลูนชุดเดียวกัน */
- function makeSeededRng(seed) {
- let t = (seed >>> 0) || 1;
- return function () {
- t = (t + 0x6D2B79F5) >>> 0;
- let r = Math.imul(t ^ (t >>> 15), 1 | t);
- r = (r + Math.imul(r ^ (r >>> 7), 61 | r)) ^ r;
- return ((r ^ (r >>> 14)) >>> 0) / 4294967296;
- };
- }
- /* seed ต่อ index ของ spawn — รวม anchor (liveBeginsAt) กับ index ให้ก้อนแต่ละลำดับสุ่มต่างกันแต่ตรงกันทุกเครื่อง */
- function envSpawnSeed(anchorMs, index) {
- return (((anchorMs >>> 0) ^ Math.imul((index | 0) + 1, 2654435761)) >>> 0);
- }
-
- function spaceShooterAsteroidRadiusFromHpPlay(hp) {
- const cap = SPACE_SHOOTER_ASTEROID_MAX_HP;
- const h = Math.max(0, Math.min(cap, Math.floor(Number(hp)) || 0));
- const frac = h <= 0 ? 0 : h / cap;
- return SPACE_SHOOTER_ASTEROID_RADIUS_AT_MIN_HP
- + (SPACE_SHOOTER_ASTEROID_RADIUS_AT_FULL - SPACE_SHOOTER_ASTEROID_RADIUS_AT_MIN_HP) * frac;
- }
-
- function spaceShooterShipFootprintCellsPlay(md) {
- const m = md || mapData;
- if (!m) return { cw: 1, ch: 1 };
- const { cw, ch } = getCharacterFootprintWH(m);
- return {
- cw: Math.max(1, Math.min(4, cw)),
- ch: Math.max(1, Math.min(4, ch)),
- };
- }
-
- /** ขนาดวาดยานบนจอ — สเกลตาม footprint แผนที่ (editor: กว้าง/สูงตัวละคร) เทียบ tileSize */
- function spaceShooterShipBodyScreenPxPlay(zDrawVal) {
- const zD = Number(zDrawVal) > 0 ? zDrawVal : (typeof zoom === 'number' && zoom > 0 ? zoom : 1);
- const ts = tileSize || 32;
- const { cw, ch } = spaceShooterShipFootprintCellsPlay(mapData);
- const kw = 14 / 32;
- const kh = 22 / 32;
- return {
- bodyW: cw * ts * zD * kw,
- bodyH: ch * ts * zD * kh,
- };
- }
-
- /** รัศมีชนอุกาบาต (พิกัดโลก) — โตตาม footprint เพื่อให้สมกับยานที่วาดใหญ่ขึ้น */
- function spaceShooterShipHitRadiusWorldPxPlay() {
- if (!mapData || mapData.gameType !== 'space_shooter') return SPACE_SHOOTER_MISSION_SHIP_HIT_RADIUS;
- const ts = tileSize || 32;
- const { cw, ch } = spaceShooterShipFootprintCellsPlay(mapData);
- const base = SPACE_SHOOTER_MISSION_SHIP_HIT_RADIUS;
- const geom = Math.sqrt(Math.max(1, cw * ch));
- const cap = Math.min(54, 0.42 * Math.min(cw * ts, ch * ts));
- return Math.max(9, Math.min(cap, base * geom));
- }
-
- /** ระยะห่างจากขอบโลกซ้าย/ขวาเมื่อบังคับยาน — กันยานใหญ่หลุดกรอบ */
- function spaceShooterShipEdgePadWorldPxPlay() {
- if (!mapData || mapData.gameType !== 'space_shooter') return 18;
- const ts = tileSize || 32;
- const { cw } = spaceShooterShipFootprintCellsPlay(mapData);
- return Math.max(18, cw * ts * 0.48);
- }
-
- function spaceShooterResetMissionShipStateForAllPlay() {
- function resetEnt(ent) {
- if (!ent) return;
- ent.spaceShooterHits = 0;
- ent.spaceShooterEliminated = false;
- ent.spaceShooterInvulnUntil = 0;
- }
- resetEnt(me);
- others.forEach(function (o) {
- resetEnt(o);
- });
- }
-
- function spaceShooterMissionResolveShipAsteroidHitsPlay() {
- if (!mapData || mapData.gameType !== 'space_shooter') return;
- if (!isSpaceShooterMissionUiMapPlay() || spaceShooterMissionPhase !== 'live' || spaceShooterGameEnded) return;
- const now = performance.now();
- const shipR = spaceShooterShipHitRadiusWorldPxPlay();
-
- function tryHit(ent, cx, cy) {
- if (!ent || ent.spaceShooterEliminated || cx == null || cy == null) return;
- if (ent.spaceShooterInvulnUntil != null && now < ent.spaceShooterInvulnUntil) return;
- for (let ai = spaceShooterAsteroids.length - 1; ai >= 0; ai--) {
- const a = spaceShooterAsteroids[ai];
- if (!a) continue;
- const dx = cx - a.x;
- const dy = cy - a.y;
- const rr = (a.r + shipR) * (a.r + shipR);
- if (dx * dx + dy * dy > rr) continue;
- ent.spaceShooterHits = Math.max(0, Number(ent.spaceShooterHits) || 0) + 1;
- ent.spaceShooterInvulnUntil = now + SPACE_SHOOTER_MISSION_HIT_INVULN_MS;
- spaceShooterSpawnAsteroidExplosion(a.x, a.y, a.r);
- spaceShooterAsteroids.splice(ai, 1);
- spaceShooterPopups.push({ x: cx, y: cy - 28, text: 'HIT', until: Date.now() + 650 });
- if (ent.spaceShooterHits >= SPACE_SHOOTER_MISSION_MAX_ASTEROID_HITS) {
- ent.spaceShooterEliminated = true;
- if (window.jdSound) { try { window.jdSound.playSfx('crash', 'mg6'); } catch (e) { /* ignore */ } } /* ตัวเอง + บอท (host) ตกรอบ = ได้ยินเสียง · peer-human ตกรอบ = เล่นตอนรับ spaceShooterEliminated ใน user-move */
- spaceShooterPopups.push({ x: cx, y: cy - 50, text: 'OUT', until: Date.now() + 1400 });
- }
- break;
- }
- }
-
- const wasElim = !!me.spaceShooterEliminated;
- if (myId != null) tryHit(me, me.spaceShooterCx, me.spaceShooterCy);
- /* คิดการชนเฉพาะยานของเรา (เจ้าของตัดสินเอง) + บอท (host ตัดสิน) เท่านั้น
- ผู้เล่นมนุษย์คนอื่นรอสถานะ eliminated/hits จาก move ของเจ้าตัว — กัน "ตายไม่พร้อมกัน"
- (เดิมทุกเครื่องคิดชนให้ทุกยานด้วยตำแหน่งดาวเคราะห์ local ที่ต่างกัน → ตัดสินไม่ตรงกัน) */
- others.forEach(function (o, id) {
- if (!o) return;
- /* host คิดการชนให้ "บอท" รวม takeover bot (id=socket-id, flag isSpaceShooterServerBot) — เดิมเช็คแค่ isPreviewBotId → ข้าม takeover bot = มันไม่มีวันตาย */
- if (!isMePlayHost()) return;
- if (!(isPreviewBotId(id) || o.isSpaceShooterServerBot)) return;
- if (spaceShooterServerAuthActive()) {
- /* server-auth (MG6 เกมจริง): host คิดการชนบอท (asteroid deterministic + ตำแหน่งบอทจาก server)
- แล้ว "รายงาน" จำนวนชนให้ server ตัดสินตายจริง — ไม่ตัดสินตายเอง local (กันสถานะตายขัดกัน) */
- const h0 = Math.max(0, Number(o.spaceShooterHits) || 0);
- tryHit(o, o.spaceShooterCx, o.spaceShooterCy);
- const h1 = Math.max(0, Number(o.spaceShooterHits) || 0);
- if (h1 > h0 && socket) {
- try { socket.emit('space-shooter-bot-hit', { id, hits: h1 }); } catch (e) { /* ignore */ }
- }
- } else {
- tryHit(o, o.spaceShooterCx, o.spaceShooterCy);
- }
- });
- /* เพิ่งตาย → broadcast ทันที ไม่รอ throttle 90ms ให้ทุกเครื่องเห็นพร้อมกัน */
- if (!wasElim && me.spaceShooterEliminated && socket && myId != null) {
- try {
- spaceShooterLastMoveEmit = Date.now();
- socket.emit('move', {
- x: me.x, y: me.y, direction: me.direction,
- spaceShooterScore: Math.max(0, me.spaceShooterScore | 0),
- spaceShooterHits: Math.max(0, Number(me.spaceShooterHits) || 0),
- spaceShooterEliminated: true,
- });
- } catch (eE) { /* ignore */ }
- }
- if (spaceShooterMissionEveryParticipantEliminatedPlay()) {
- /* host ตัดสิน all_dead + broadcast คะแนน; non-host รอรับ space-shooter-over */
- if (isMePlayHost()) triggerSpaceShooterOverPlay('all_dead');
- }
- }
-
- /** Space Shooter ภารกิจ: ผู้เข้าร่วมทุกคนถูกกำจัดแล้ว (รวมเรา) */
- function spaceShooterMissionEveryParticipantEliminatedPlay() {
- if (!isSpaceShooterMissionUiMapPlay() || spaceShooterMissionPhase !== 'live' || spaceShooterGameEnded) return false;
- if (myId == null) return false;
- if (!me.spaceShooterEliminated) return false;
- let anyAlive = false;
- others.forEach(function (o) {
- if (!o) return;
- if (!o.spaceShooterEliminated) anyAlive = true;
- });
- return !anyAlive;
- }
-
- /** จนกว่าโหลด /api/characters — placeholder ชั่วคราวก่อน join */
- const LEGACY_PLACEHOLDER_CHARACTER_ID = 'Chatest';
- let firstCharacterDefaultResolved = null;
- /** รหัสตัวละครจาก GET /api/characters — ใช้สลับบอทพรีวิวให้ไม่ซ้ำรูปกับผู้เล่น */
- let playCharacterIdRoster = [];
- const firstCharacterDefaultPromise = fetch(BASE + '/api/characters')
- .then((r) => r.json())
- .then((list) => {
- playCharacterIdRoster = [];
- if (Array.isArray(list)) {
- list.forEach((c) => {
- if (c && c.id) playCharacterIdRoster.push(String(c.id));
- });
- }
- if (Array.isArray(list) && list.length > 0 && list[0] && list[0].id) {
- firstCharacterDefaultResolved = String(list[0].id);
- } else {
- firstCharacterDefaultResolved = '';
- }
- })
- .catch(() => {
- firstCharacterDefaultResolved = '';
- playCharacterIdRoster = [];
- })
- .finally(() => {
- try {
- if (playBotsEnabled() && mapData) rebalancePreviewBots();
- } catch (e) { /* map ยังไม่พร้อม */ }
- });
- const lobbyLevelParam = params.get('lobbyLevel');
- const lobbyCaseParam = params.get('case');
- if (lobbyLevelParam || lobbyCaseParam) {
- try {
- window.__detectiveLobbyMeta = { level: lobbyLevelParam, caseId: lobbyCaseParam };
- } catch (e) { /* ignore */ }
- }
-
- const POST_CASE_LOBBY_MAP_ID = 'mn8nx46h';
-
- function isDetectiveMinigamePlay() {
- if (params.get('detectiveReturn') === '1') return true;
- try {
- return sessionStorage.getItem('detectiveMinigameReturn') === '1';
- } catch (e) {
- return false;
- }
- }
-
- function buildRoomLobbyReturnHref() {
- let h = 'room-lobby.html?space=' + encodeURIComponent(spaceId) + '&nick=' + encodeURIComponent(nick);
- h += '&map=' + encodeURIComponent(POST_CASE_LOBBY_MAP_ID);
- const drParam = (params.get('displayRoom') || '').trim();
- if (drParam) {
- h += '&displayRoom=' + encodeURIComponent(drParam);
- } else {
- try {
- const dr = localStorage.getItem('lastCreatedSpaceName');
- if (dr) h += '&displayRoom=' + encodeURIComponent(dr);
- } catch (e) { /* ignore */ }
- }
- try {
- const meta = window.__detectiveLobbyMeta;
- if (meta && meta.level != null && String(meta.level).trim()) {
- h += '&lobbyLevel=' + encodeURIComponent(String(meta.level).trim());
- }
- if (meta && meta.caseId != null && String(meta.caseId).trim()) {
- h += '&caseId=' + encodeURIComponent(String(meta.caseId).trim());
- }
- } catch (e2) { /* ignore */ }
- try {
- if (sessionStorage.getItem('detectiveMinigameReturn') === '1') {
- h += '&detectiveReturn=1';
- sessionStorage.removeItem('detectiveMinigameReturn');
- }
- } catch (e3) { /* ignore */ }
- if (params.get('detectiveReturn') === '1' && h.indexOf('detectiveReturn') < 0) {
- h += '&detectiveReturn=1';
- }
- return h;
- }
-
- function finishDetectiveMinigameAndReturnLobby() {
- quizCarrySessionEnded = true;
- cancelQuizCarryAnswerRoundTimeupAuto();
- quizCarryAnswerTimeupAwaitNext = false;
- hideQuizCarryTimeupOnDeskLayer();
- try { sessionStorage.setItem('detectiveMinigameReturn', '1'); } catch (e) { /* ignore */ }
- const go = function () {
- window.location.href = buildRoomLobbyReturnHref();
- };
- /* รายงาน score/survived ของเกมที่ client นับเอง (stack/jump_survive) → server ใช้จัดอันดับเหรียญ
- (เดิมส่ง {} เปล่า → reportedMiniScore/Survived ไม่ถูกตั้ง → coin ranking MG3/MG5 เพี้ยน) */
- let finishReport = {};
- try {
- if (isStack() && stackMini) finishReport = { score: Math.max(0, stackMini.score | 0), survived: true };
- else if (isJumpSurvive()) finishReport = { score: 0, survived: !jumpSurviveEliminated };
- } catch (eFR) { /* ignore */ }
- if (socket && socket.connected) {
- socket.emit('detective-minigame-finished', finishReport, function (res) {
- try {
- if (res && Array.isArray(res.myPlayerEvidence)) {
- var hasAny = res.myPlayerEvidence.some(function (r) { return Array.isArray(r) && r.length; });
- if (hasAny) sessionStorage.setItem('justiceDetectiveMyEvidence', JSON.stringify(res.myPlayerEvidence));
- else sessionStorage.removeItem('justiceDetectiveMyEvidence');
- }
- } catch (e) { /* ignore */ }
- /* MG2: เข้าเส้นชัยแล้วแต่ยังมีคนวิ่งอยู่ → รอในฉาก (server จะพากลับ LobbyB พร้อมกันตอนทุกคนจบ) */
- if (res && res.holdInScene) {
- showGauntletFinishWaitOverlay();
- return;
- }
- /* โชว์การ์ดหลักฐานที่เพิ่งได้ "ในฉากมินิเกม" ก่อนกลับ LobbyB */
- if (res && typeof res.suspectIndex === 'number' && res.suspectIndex >= 0) {
- showInSceneEvidenceReveal(res, go);
- } else {
- go();
- }
- });
- } else {
- go();
- }
- }
-
- /** MG2: ป้าย "เข้าเส้นชัยแล้ว — รอผู้เล่นอื่น" ระหว่างรอคนที่ยังวิ่งอยู่ (จะกลับ LobbyB พร้อมกันตอนเกมจบ) */
- function showGauntletFinishWaitOverlay() {
- var ov = document.getElementById('gauntlet-finish-wait');
- if (!ov) {
- ov = document.createElement('div');
- ov.id = 'gauntlet-finish-wait';
- ov.style.cssText = 'position:fixed;inset:0;z-index:100000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:radial-gradient(ellipse at center,rgba(10,16,32,.82),rgba(6,9,20,.95));backdrop-filter:blur(3px)';
- ov.innerHTML =
- '
🏁 เข้าเส้นชัยแล้ว!
' +
- '
รอผู้เล่นคนอื่นเข้าเส้นชัย...
' +
- '
• • •
';
- document.body.appendChild(ov);
- }
- ov.style.display = 'flex';
- }
-
- /* แจ้ง host ว่าทำไม START ยังกดเริ่มไม่ได้ (เดิม reply ถูก ignore เงียบ → ปุ่มเหมือนเสีย)
- ใช้ร่วม MG2/5/6/7 (crown lobby shell) — โชว์ "รอผู้เล่น x/N" หรือ "ยังมีคนไม่ Ready" แล้วซ่อนเอง */
- function showCrownStartBlockedNoticePlay(r) {
- if (!r) return;
- let msg = r.error || 'ยังเริ่มไม่ได้';
- if (r.waitingPlayers) msg = 'รอผู้เล่นเข้าเกมให้ครบก่อน (' + (r.present || 0) + '/' + (r.total || 0) + ')';
- let ov = document.getElementById('crown-start-notice');
- if (!ov) {
- ov = document.createElement('div');
- ov.id = 'crown-start-notice';
- ov.style.cssText = 'position:fixed;left:50%;top:14%;transform:translateX(-50%);z-index:100001;padding:12px 22px;border-radius:14px;background:rgba(20,12,16,.92);border:1px solid rgba(255,120,120,.5);color:#ffd9d9;font:700 18px/1.3 Kanit,system-ui,sans-serif;text-align:center;box-shadow:0 6px 24px rgba(0,0,0,.5);pointer-events:none';
- document.body.appendChild(ov);
- }
- ov.textContent = '⏳ ' + msg;
- ov.style.display = 'block';
- clearTimeout(ov._hideT);
- ov._hideT = setTimeout(function () { ov.style.display = 'none'; }, 2600);
- }
-
- /* ===== หน้าโชว์การ์ดหลักฐานในฉากมินิเกม (ก่อนกลับ LobbyB) ===== */
- var __evidenceConfigCache = null;
- function ensureEvidenceConfigLoaded(cb) {
- if (__evidenceConfigCache) { cb(__evidenceConfigCache); return; }
- try {
- fetch(BASE + '/api/evidence-cards?_=' + Date.now(), { cache: 'no-store' })
- .then(function (r) { return r.json(); })
- .then(function (j) { __evidenceConfigCache = (j && j.cases) ? j : { cases: {} }; cb(__evidenceConfigCache); })
- .catch(function () { cb({ cases: {} }); });
- } catch (e) { cb({ cases: {} }); }
- }
-
- var EVIDENCE_RARITY_GLOW = {
- common: 'rgba(168,180,200,.55)',
- rare: 'rgba(94,170,255,.7)',
- legendary: 'rgba(255,186,72,.85)',
- };
- var EVIDENCE_RARITY_LABEL = { common: 'การ์ดธรรมดา', rare: 'การ์ด Rare', legendary: 'การ์ดชี้คนร้าย' };
-
- /** กล่องดูการ์ดหลักฐานแบบขยาย (zoom) — ปิดด้วยปุ่ม ×, คลิกพื้นหลัง, หรือ Esc */
- function openEvidenceCardLightboxPlay(imageUrl, label, rarity) {
- if (!imageUrl) return;
- var rar = String(rarity || 'common').toLowerCase();
- var glow = EVIDENCE_RARITY_GLOW[rar] || EVIDENCE_RARITY_GLOW.common;
- var ov = document.getElementById('evidence-card-lightbox');
- if (!ov) {
- ov = document.createElement('div');
- ov.id = 'evidence-card-lightbox';
- ov.style.cssText = 'position:fixed;inset:0;z-index:100001;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(5,8,18,.88);backdrop-filter:blur(4px)';
- ov.innerHTML =
- '
× ' +
- '
' +
- '
' +
- '
' +
- '
';
- document.body.appendChild(ov);
- var closeFn = function () { ov.style.display = 'none'; };
- ov.addEventListener('click', function (e) { if (e.target === ov || (e.target.closest && e.target.closest('.ecl-close'))) closeFn(); });
- document.addEventListener('keydown', function (e) { if (e.key === 'Escape' && ov.style.display !== 'none') closeFn(); });
- }
- var img = ov.querySelector('.ecl-img');
- var cap = ov.querySelector('.ecl-cap');
- if (img) { img.style.boxShadow = '0 0 44px ' + glow + ',0 22px 60px rgba(0,0,0,.6)'; img.src = imageUrl; }
- if (cap) cap.textContent = label || '';
- ov.style.display = 'flex';
- }
-
- function showInSceneEvidenceReveal(res, onDone) {
- var done = false;
- var finish = function () { if (done) return; done = true; onDone(); };
- var si = res.suspectIndex;
- /* การ์ดที่เพิ่งได้รอบนี้ (object: rarity/imageUrl) — fallback ใช้ N ใบท้ายของ owned */
- var awarded = (res.awardedCards && Array.isArray(res.awardedCards))
- ? res.awardedCards.filter(function (c) { return c && c.imageUrl; })
- : [];
- if (!awarded.length) {
- var owned = (res.myPlayerEvidence && res.myPlayerEvidence[si]) || [];
- var freeN = Math.max(0, Number(res.freeEvidenceCount) || 0);
- var newN = Math.min(owned.length, 1 + freeN);
- awarded = owned.slice(owned.length - newN).filter(function (c) { return c && c.imageUrl; });
- }
- if (!awarded.length) { finish(); return; }
- var newN = awarded.length;
- var ov = document.createElement('div');
- ov.id = 'inscene-evidence-reveal';
- /* scroll container + inner margin:auto → มือถือแนวตั้งที่เนื้อหาสูงเกินจอ เลื่อนถึงปุ่มได้ (เดิม justify center ไม่มี scroll → ปุ่มหลุดล่างจอ) */
- ov.style.cssText = 'position:fixed;inset:0;z-index:99999;background:rgba(5,8,18,.9);display:flex;overflow-y:auto;-webkit-overflow-scrolling:touch;backdrop-filter:blur(3px);padding:16px 12px;box-sizing:border-box';
- var inner = document.createElement('div');
- inner.style.cssText = 'margin:auto;display:flex;flex-direction:column;align-items:center;gap:clamp(12px,2.4vh,22px);width:100%;max-width:640px';
- var title = document.createElement('div');
- title.style.cssText = 'font:900 clamp(20px,5.5vw,30px)/1.2 Kanit,system-ui,sans-serif;color:#ffe7a3;text-shadow:0 0 18px rgba(255,214,102,.5);text-align:center';
- title.textContent = newN > 1 ? ('คุณได้รับหลักฐาน ' + newN + ' ใบ!') : 'คุณได้รับหลักฐาน!';
- if (res.grade) {
- var gradeEl = document.createElement('div');
- gradeEl.style.cssText = 'font:800 16px/1 Kanit,system-ui,sans-serif;color:#bfe3ff;opacity:.9';
- gradeEl.textContent = 'ผลงานทีม: เกรด ' + res.grade;
- title.appendChild(document.createElement('br'));
- title.appendChild(gradeEl);
- }
- var freeBonus = Math.max(0, Number(res.freeEvidenceCount) || 0);
- if (freeBonus > 0) {
- var bonusEl = document.createElement('div');
- bonusEl.style.cssText = 'font:800 15px/1.3 Kanit,system-ui,sans-serif;color:#9ece6a;margin-top:4px';
- bonusEl.textContent = '⭐ การ์ด Free Evidence: ทุกคนรับหลักฐานฟรี +' + freeBonus + ' ใบ';
- title.appendChild(document.createElement('br'));
- title.appendChild(bonusEl);
- }
- var row = document.createElement('div');
- row.style.cssText = 'display:flex;gap:18px;flex-wrap:wrap;justify-content:center;align-items:center;max-width:92vw';
- awarded.forEach(function (c, i) {
- var rar = String(c.rarity || 'common').toLowerCase();
- var glow = EVIDENCE_RARITY_GLOW[rar] || EVIDENCE_RARITY_GLOW.common;
- var cardWrap = document.createElement('div');
- cardWrap.style.cssText = 'display:flex;flex-direction:column;align-items:center;gap:8px;opacity:0;transform:translateY(24px) scale(.92);transition:opacity .45s ease,transform .45s cubic-bezier(.2,.9,.3,1.3)';
- var img = document.createElement('img');
- img.src = c.imageUrl;
- img.alt = EVIDENCE_RARITY_LABEL[rar] || 'หลักฐาน';
- img.style.cssText = 'display:block;width:auto;height:auto;max-width:min(72vw,360px);max-height:52vh;border-radius:14px;box-shadow:0 0 36px ' + glow + ',0 18px 50px rgba(0,0,0,.6);cursor:zoom-in';
- img.title = 'แตะเพื่อดูใหญ่';
- img.addEventListener('click', function () { openEvidenceCardLightboxPlay(c.imageUrl, EVIDENCE_RARITY_LABEL[rar] || '', rar); });
- img.onerror = function () { this.onerror = null; this.style.width = '200px'; this.style.height = '300px'; this.style.background = '#1b2240'; this.removeAttribute('src'); };
- var tag = document.createElement('div');
- tag.style.cssText = 'font:800 14px/1 Kanit,system-ui,sans-serif;color:#fff;opacity:.92';
- tag.textContent = EVIDENCE_RARITY_LABEL[rar] || '';
- cardWrap.appendChild(img);
- cardWrap.appendChild(tag);
- row.appendChild(cardWrap);
- setTimeout(function () { cardWrap.style.opacity = '1'; cardWrap.style.transform = 'translateY(0) scale(1)'; }, 120 + i * 160);
- });
- var btn = document.createElement('button');
- btn.type = 'button';
- btn.textContent = 'คุณได้หลักฐาน · เก็บเข้าแฟ้ม';
- btn.style.cssText = 'cursor:pointer;border:none;border-radius:999px;padding:clamp(11px,1.8vh,14px) clamp(26px,8vw,40px);font:800 clamp(15px,4.4vw,18px)/1 Kanit,system-ui,sans-serif;color:#0a0e1a;background:linear-gradient(180deg,#ffd666,#f0b429);box-shadow:0 10px 30px rgba(240,180,41,.45);flex:0 0 auto';
- btn.addEventListener('click', function () {
- ov.style.transition = 'opacity .25s'; ov.style.opacity = '0';
- setTimeout(finish, 220);
- });
- inner.appendChild(title);
- inner.appendChild(row);
- inner.appendChild(btn);
- ov.appendChild(inner);
- document.body.appendChild(ov);
- /* กันค้าง: ถ้าไม่กดภายใน 12 วิ ให้ไปต่อเอง */
- setTimeout(function () { if (!done) { try { ov.remove(); } catch (e) {} finish(); } }, 12000);
- }
-
- /** จบมินิเกมโหมดสืบสวน → LobbyB; คืน true ถ้า redirect แล้ว */
- function tryFinishDetectiveMinigameAndReturnLobby() {
- if (!isDetectiveMinigamePlay()) return false;
- finishDetectiveMinigameAndReturnLobby();
- return true;
- }
-
- /** ทดสอบจากเอดิเตอร์: เติมบอทให้ครบจำนวน (รวมผู้เล่นจริง) — ?fillTotal=6 (ค่าเริ่ม 6) */
- const previewFillBots = previewMode && editorEmbedReturn;
- let detectiveCaseFillBots = false;
- let detectiveBotSlotCount = 0;
- function playBotsEnabled() {
- return previewFillBots || detectiveCaseFillBots;
- }
- function playBotTargetHeadcount() {
- if (previewFillBots) return previewTargetHeadcount;
- if (detectiveCaseFillBots) return countPlayHumans() + detectiveBotSlotCount;
- return countPlayHumans();
- }
- /** พรีวิวใน iframe เอดิเตอร์: ซูมมุมมองได้ (เดิมไม่มี — zDraw จาก zoom คงที่) */
- const PLAY_EMBED_USER_ZOOM_MIN = 0.5;
- const PLAY_EMBED_USER_ZOOM_MAX = 3;
- const PLAY_EMBED_ZOOM_STEP_KEY = 1.12;
- let playEmbedUserZoomMul = 1;
- let lastPlayZDrawForInput = 1.4;
- /** คูณ world→พิกเซลบนแคนวาสให้ตรงกับ zDraw ใน draw() (รวม preview+embed zoom) — ใช้ซิงก์ DOM ทับฉาก */
- function playDomSyncZoom() {
- const z = lastPlayZDrawForInput;
- return Number.isFinite(z) && z > 0 ? z : zoom;
- }
- const previewTargetHeadcount = Math.min(24, Math.max(1, parseInt(params.get('fillTotal'), 10) || 6));
- const PREVIEW_BOT_PREFIX = '__pv_bot_';
- let previewBotSeq = 0;
- /** Stack preview: บอทไม่วาบบนแผนที่ — ใช้ไฮไลต์แถบแข่งแทน */
- let lastStackPreviewActorId = null;
- let lastStackPreviewActorUntil = 0;
- /** Stack preview: สลับตา Player 1 = มนุษย์, 2–6 = บอท (เฉพาะตาปัจจุบันเล่นได้) */
- const STACK_PREVIEW_TURN_COUNT = 6;
- let stackPreviewTurnOrder = null;
- let stackPreviewTurnIndex = 0;
- let stackPreviewBotThinkUntil = 0;
- /* MG3 server-authoritative: เปิดเมื่อได้รับ stack-state ที่ srv:true → client เลิก host-sim
- (ลำดับตา/แกว่ง/ดรอปบอท/จบเกม = server เป็นเจ้าของ; ผู้เล่นส่งเจตนา stack-drop-req) */
- let stackServerAuthPlay = false;
- /* server-auth swing: extrapolate phase จาก sample ล่าสุดของ server (กัน drift → บล็อกวาปตอนปล่อย) */
- let stackSrvPhaseAnchor = 0;
- let stackSrvPhaseAnchorAt = 0;
- /* เฟสของบล็อกที่ "วาดออกจอจริง" เฟรมล่าสุด = สิ่งที่ผู้เล่นเห็นและเล็ง — ใช้ส่งตอนกดวาง
- (stackMini.phase อาจเพิ่ง SNAP ไปแล้ว: dPh>0.9 → วาปทันที ระหว่างเฟรมที่เห็นกับตอน handler ทำงาน
- → ส่งเฟสหลังวาป = server คิดว่าเยื้องสุดแกว่ง → "วางกลางพอดีแต่ลงเยื้อง/ร่วง") */
- let stackRenderedPhase = null;
- /* freeze เฟสที่เห็น ณ ตอนกดวาง ไว้จน echo ดรอปกลับมา → บล็อกไม่แกว่งต่อแล้วเด้งกลับช่วงรอ RTT */
- let stackLocalSwingFrozen = false;
- let stackLocalSwingFrozenAt = 0;
-
- /** ลำดับตา MG3 = ผู้เล่นจริงทุกคน + บอท เรียงตาม id แบบคงที่ → ทุกเครื่องได้ลำดับ/ที่นั่งเดียวกัน (shared tower)
- (เดิม [human=ตัวเอง seat1 + bots] ต่อเครื่อง → แต่ละเครื่องมองตัวเองเป็นคนเดียว เลยแยกตึกกัน) */
- function rebuildStackPreviewTurnOrder() {
- if (!playBotsEnabled() || !mapData || mapData.gameType !== 'stack') {
- stackPreviewTurnOrder = null;
- return;
- }
- if (stackServerAuthPlay) return; /* server-auth: ลำดับตามาจาก stack-state เท่านั้น */
- if (!detectiveCaseFillBots) {
- /* editor preview (คนเดียว): คงพฤติกรรมเดิม [human ตัวเอง seat1 + บอท] */
- const bots = [...others.keys()].filter(isPreviewBotId).sort();
- stackPreviewTurnOrder = [{ kind: 'human', seat: 1, id: myId != null ? String(myId) : '__me__' }];
- for (let i = 0; i < STACK_PREVIEW_TURN_COUNT - 1; i++) {
- stackPreviewTurnOrder.push({ kind: 'bot', seat: i + 2, id: bots[i] || null, botId: bots[i] || null });
- }
- stackPreviewTurnIndex = 0;
- stackPreviewBotThinkUntil = 0;
- markStackNextDropVisualDirty();
- return;
- }
- /* เล่นจริง: non-host ไม่สร้าง order เอง — ใช้ของ host จาก stack-state (กัน order ไม่ตรง/client ตกหล่นช่วงโหลด) */
- if (!isMePlayHost()) return;
- /* host: ผู้เล่นจริงทุกคน (ตัด banned spectator กัน stall) + บอท เรียง id → ที่นั่งคงที่; preserve คนที่กำลังถึงตา */
- const prevActorId = (stackCurrentTurnEntryPlay() && stackCurrentTurnEntryPlay().id) || null;
- const parts = [];
- /* dedup คนซ้ำ (ghost reconnect) ก่อนสร้างคิวตา — กัน seat ผี (ตาที่ไม่มีใครวาง = เกมค้าง)
- ⚠️ เทียบด้วย playerKey เท่านั้น — **ห้าม dedup ด้วยชื่อ**: 2 คนตั้งชื่อเหมือนกัน (เช่น "MONE") = คนละ key = คนละคน
- ต้องได้ seat ทั้งคู่ (เดิม fallback ชื่อ → client ที่ชื่อซ้ำ host ถูกตัด = "ไม่ได้เล่นเลย") */
- const seenHumanKey = new Set();
- const tryAddHuman = (id, ent) => {
- const pk = (ent && ent.playerKey) ? String(ent.playerKey) : (String(id) === String(myId) ? (typeof getJdPlayerKey === 'function' ? getJdPlayerKey() : '') : '');
- if (pk) {
- if (seenHumanKey.has(pk)) return; /* playerKey เดียวกัน = ghost reconnect → ข้าม */
- seenHumanKey.add(pk);
- }
- parts.push({ kind: 'human', id: String(id) });
- };
- if (myId != null && !playBannedSpectator) tryAddHuman(myId, me);
- others.forEach((o, id) => {
- if (isPreviewBotId(id)) { parts.push({ kind: 'bot', id: String(id), botId: String(id) }); return; }
- if (o && o.bannedSpectator) return; /* คนถูกแบน = ดูเฉยๆ ไม่เข้าคิววาง */
- tryAddHuman(id, o);
- });
- parts.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
- const capped = parts.slice(0, STACK_PREVIEW_TURN_COUNT);
- stackPreviewTurnOrder = capped.map((p, i) => ({
- kind: p.kind, seat: i + 1, id: p.id, botId: p.kind === 'bot' ? p.botId : null,
- }));
- let ni = -1;
- if (prevActorId != null) ni = stackPreviewTurnOrder.findIndex((e) => String(e.id) === String(prevActorId));
- if (ni >= 0) stackPreviewTurnIndex = ni;
- else if (stackPreviewTurnIndex >= stackPreviewTurnOrder.length) stackPreviewTurnIndex = 0;
- stackPreviewBotThinkUntil = 0;
- markStackNextDropVisualDirty();
- broadcastStackStatePlay();
- }
-
- /** host broadcast ลำดับตา + index ปัจจุบัน → non-host ใช้ตรงกัน (single source of truth) */
- function broadcastStackStatePlay() {
- if (stackServerAuthPlay) return; /* server-auth: server เป็นเจ้าของ stack-state */
- if (!detectiveCaseFillBots || !isMePlayHost() || !socket || myId == null || !stackTurnOrderReadyPlay()) return;
- try {
- socket.emit('stack-state', {
- idx: stackPreviewTurnIndex,
- /* theme ต่อที่นั่ง (host เป็นเจ้าของ) → ทุกจอลงสี block ตรงกัน (เดิม non-host คำนวณสีเองจาก playTint → ไม่ตรง 2 จอ) */
- order: stackPreviewTurnOrder.map((e) => ({ kind: e.kind, seat: e.seat, id: e.id, botId: e.botId || null, theme: stackSeatThemeForBroadcastPlay(e.seat) })),
- /* สีของ block ที่ "วางแล้ว" ทั้งหอ (host authoritative) → client sync เขียนทับ layer ที่เพี้ยนค้าง (จากจังหวะ dual-host ต้นเกม) */
- lthemes: (stackMini && Array.isArray(stackMini.layers)) ? stackMini.layers.map(function (l) { return (l && l.theme >= 1 && l.theme <= 8) ? l.theme : 0; }) : [],
- });
- logStackSeatColors('host-bcast');
- } catch (e) { /* ignore */ }
- }
-
- /** order พร้อมใช้ (มีอย่างน้อย 1 ที่นั่ง) */
- function stackTurnOrderReadyPlay() {
- return !!(stackPreviewTurnOrder && stackPreviewTurnOrder.length >= 1);
- }
- /** (host) คิวตาตรงกับผู้เล่น/บอทปัจจุบันไหม — ใช้ auto-heal late-join (client เข้าทีหลังต้องได้ seat ไม่งั้น "เล่นไม่ได้" + ไม่มีสี)
- เทียบรายชื่อคน (me + others ที่ไม่ใช่บอท/ไม่ถูกแบน) + บอท กับ entry ในคิว; ต่างเมื่อไหร่ = ต้อง rebuild */
- let _stackHumansSig = '';
- function stackOrderNeedsRebuildPlay() {
- if (!stackTurnOrderReadyPlay() || !Array.isArray(stackPreviewTurnOrder)) return true;
- /* เช็คเฉพาะ "คน" (humans ≤ maxPlayers จึงลงคิวครบเสมอ ไม่โดน cap ตัด) — บอทจัดการใน rebuild เอง */
- const cur = [];
- if (myId != null && !playBannedSpectator) cur.push(String(myId));
- others.forEach((o, id) => {
- if (isPreviewBotId(id)) return;
- if (o && o.bannedSpectator) return;
- cur.push(String(id));
- });
- cur.sort();
- const sig = cur.join('|');
- if (sig === _stackHumansSig) return false; /* คนไม่เปลี่ยน → ไม่ต้องเช็ค (กัน rebuild ถี่) */
- const ord = [];
- stackPreviewTurnOrder.forEach((e) => { if (e && e.kind !== 'bot' && !e.botId && e.id != null) ord.push(String(e.id)); });
- ord.sort();
- const need = (sig !== ord.join('|'));
- if (!need) _stackHumansSig = sig; /* ตรงแล้ว → cache กันเช็คซ้ำทุกเฟรม */
- return need;
- }
- function stackCurrentTurnEntryPlay() {
- if (!stackTurnOrderReadyPlay()) return null;
- return stackPreviewTurnOrder[stackPreviewTurnIndex % stackPreviewTurnOrder.length] || null;
- }
- function isMyStackTurn() {
- if (!playBotsEnabled()) return true; /* เล่นเดี่ยว → กดได้ */
- if (detectiveCaseFillBots && !stackTurnOrderReadyPlay()) return false; /* เล่นจริง: รอ order จาก host ก่อน */
- if (!stackTurnOrderReadyPlay()) return true;
- const cur = stackCurrentTurnEntryPlay();
- if (!cur || cur.kind !== 'human') return false;
- if (!detectiveCaseFillBots) return true; /* editor preview: human = previewer คนเดียว */
- return String(cur.id) === String(myId);
- }
- function isStackCurrentBotTurnPlay() {
- const cur = stackCurrentTurnEntryPlay();
- return !!(cur && cur.kind === 'bot');
- }
- /** เจ้าของตาที่วาง broadcast ผลการวาง → ทุกเครื่อง apply เหมือนกัน + เลื่อนตาพร้อมกัน */
- function broadcastStackDropPlay(hit, seat, heavy, actorId, isBot) {
- if (!detectiveCaseFillBots || !socket || myId == null || !hit) return; /* broadcast เฉพาะเล่นจริง */
- try {
- socket.emit('stack-drop', {
- placedCx: hit.placedCx, placedW: hit.placedW, miss: !!hit.miss, perfect: !!hit.perfect,
- pts: hit.pts || 0, progressDelta: hit.progressDelta || 0, landOffsetTiles: hit.landOffsetTiles || 0,
- overlap: hit.overlap, supportRatio: hit.supportRatio, delta: hit.delta || 0,
- seat: seat || 1, heavy: !!heavy, actorId: actorId != null ? String(actorId) : '', isBot: !!isBot,
- /* สี (theme) ที่ host/เจ้าของตา resolve ตอนวาง → ส่งไปด้วย ให้บล็อกที่วางบนทุกจอใช้สีเดียวกัน (กัน host/client คนละสี) — never-null */
- theme: stackSeatThemeForBroadcastPlay(seat),
- });
- } catch (e) { /* ignore */ }
- }
-
- function advanceStackPreviewTurn() {
- if (!playBotsEnabled() || !stackTurnOrderReadyPlay()) return;
- if (stackServerAuthPlay) return; /* server-auth: idx มาจาก server (stack-state) เท่านั้น — กัน double-advance */
- /* เล่นจริง: index คุมโดย host เท่านั้น (non-host รับจาก stack-state) กันลำดับตาเหลื่อมกัน */
- if (detectiveCaseFillBots && !isMePlayHost()) return;
- stackPreviewTurnIndex = (stackPreviewTurnIndex + 1) % stackPreviewTurnOrder.length;
- stackPreviewBotThinkUntil = 0;
- markStackNextDropVisualDirty();
- broadcastStackStatePlay();
- }
-
- function isStackPreviewHumanTurn() {
- if (!playBotsEnabled() || !stackTurnOrderReadyPlay()) return true;
- const cur = stackCurrentTurnEntryPlay();
- return !!(cur && cur.kind === 'human');
- }
-
- function getStackPreviewCurrentSeat() {
- if (!stackTurnOrderReadyPlay()) return 1;
- const cur = stackCurrentTurnEntryPlay();
- return cur && cur.seat ? cur.seat : stackPreviewTurnIndex + 1;
- }
-
- function getStackDropActorSeat() {
- if (playBotsEnabled() && stackTurnOrderReadyPlay()) {
- return getStackPreviewCurrentSeat();
- }
- return 1;
- }
-
- function markStackNextDropVisualDirty() {
- if (stackMini) stackMini.nextDropVisualDirty = true;
- }
-
- /* #4 MG3 block สีตาม user — Block-Code-1..8 ตรง lobby theme (PLAY_LOBBY_THEME_HEX) + heavy '-2' */
- const STACK_BLOCK_THEME_NAMES = ['1-red', '2-orange', '3-Yellow', '4-Green', '5-Blue', '6-Navy', '7-Violet', '8-Pink'];
- const STACK_BLOCK_THEME_NORMAL = STACK_BLOCK_THEME_NAMES.map(function (s) { return BASE + '/img/TowerBlock/Block-Code-' + s + '.png'; });
- const STACK_BLOCK_THEME_HEAVY = STACK_BLOCK_THEME_NAMES.map(function (s) { return BASE + '/img/TowerBlock/Block-Code-' + s + '-2.png'; });
- function stackThemeNormalUrlPlay(theme) { return (theme >= 1 && theme <= 8) ? STACK_BLOCK_THEME_NORMAL[theme - 1] : ''; }
- function stackThemeHeavyUrlPlay(theme) { return (theme >= 1 && theme <= 8) ? STACK_BLOCK_THEME_HEAVY[theme - 1] : ''; }
- /** theme (1-8) ของผู้เล่นที่ครอบครอง seat นั้นในลำดับตา — ใช้ลงสี block ตามผู้วาง (ไม่แตะ seat/turn logic) */
- function stackSeatColorThemePlay(seat) {
- if (!isStack() || !stackTurnOrderReadyPlay()) return null;
- const s = Math.floor(Number(seat)) || 0;
- const entry = stackPreviewTurnOrder.find(function (e) { return e && e.seat === s; });
- if (!entry) return null;
- /* (1) สีที่ host broadcast มาทาง stack-state = SINGLE SOURCE OF TRUTH → client ยึดค่า host เสมอ (สีตรง host ทุกจอ)
- เกม MG3 host เป็นเจ้าของลำดับตา/สี; host เองไม่มี entry.theme (คำนวณสดตอน broadcast) → ตกไป (2) authoritative
- เหตุที่ต้อง broadcast-first: ถ้า client คำนวณเอง (lobbyThemeIndexSrv/playLobbyBotThemes ของ client) แล้วข้อมูลมาช้า/ไม่ตรง
- → สีหลุดจาก host เพี้ยนเรื่อย ๆ. ใช้ค่า host = ไม่มีทางหลุด */
- const bcTheme = parsePlayLobbyThemeIndex(entry.theme);
- if (bcTheme) return bcTheme;
- /* (2) authoritative ต่อ entity (สำหรับ "host เอง" + ตอน client ยังไม่ได้รับ broadcast):
- bot → playLobbyBotThemes[slot] (server) ; human → lobbyThemeIndexSrv (= server lobbyColorThemeIndex) */
- const botId = entry.botId || (entry.kind === 'bot' ? entry.id : null);
- if (botId && isPreviewBotId(botId)) {
- const slot = parseInt(String(botId).slice(PREVIEW_BOT_PREFIX.length), 10);
- const bt = (slot >= 0 && Array.isArray(playLobbyBotThemes)) ? playLobbyBotThemes[slot] : null;
- const botIdx = bt ? parsePlayLobbyThemeIndex(bt.themeIndex) : null;
- if (botIdx) return botIdx;
- } else if (entry.id != null) {
- const entH = (myId != null && String(entry.id) === String(myId)) ? me : (others.get(entry.id) || others.get(String(entry.id)));
- const humanIdx = entH ? parsePlayLobbyThemeIndex(entH.lobbyThemeIndexSrv) : null;
- if (humanIdx) return humanIdx;
- }
- /* (3) ทางเลือกสุดท้าย: เดาจาก playTint (nearest hex — อาจไม่ตรงข้ามจอ) */
- let ent = null;
- if (entry.id != null) ent = (myId != null && String(entry.id) === String(myId)) ? me : (others.get(entry.id) || others.get(String(entry.id)));
- if (!ent && entry.botId) ent = others.get(entry.botId) || others.get(String(entry.botId));
- return ent ? playLobbyThemeIndexForEntityPlay(ent) : null;
- }
-
- /** สีที่ host จะ broadcast — "ไม่มีทาง null": resolve ปกติ ไม่ได้ค่อย default ตาม seat
- → client (broadcast-first) ยึดค่า host ได้เสมอ ไม่ตกไปคำนวณเอง = สีตรง host ทุกจอแน่นอน */
- function stackSeatThemeForBroadcastPlay(seat) {
- const t = stackSeatColorThemePlay(seat);
- if (t >= 1 && t <= 8) return t;
- const s = Math.floor(Number(seat)) || 1;
- return ((s - 1) % 8) + 1;
- }
-
- /** ส่ง log ไป /gamelog (ดูรวมที่หน้าเว็บ) */
- function gamelogPost(cat, ev, detail, who) {
- try {
- fetch('/gamelog/log.php', {
- method: 'POST', headers: { 'Content-Type': 'application/json' }, keepalive: true,
- body: JSON.stringify({ cat: cat || 'อื่นๆ', room: (typeof spaceId === 'string' ? spaceId : ''), who: who || '', ev: ev || '', detail: detail || '', src: 'client' }),
- }).catch(function () {});
- } catch (e) { /* ignore */ }
- }
- /** หมวด gamelog ตามเกมปัจจุบัน (MG1-MG7) */
- function gameLogCatForPlay() {
- try {
- var gt = mapData && mapData.gameType;
- var m = { quiz: 'MG1', gauntlet: 'MG2', stack: 'MG3', quiz_carry: 'MG4', jump_survive: 'MG5', space_shooter: 'MG6', balloon_boss: 'MG7' };
- return (gt && m[gt]) || 'อื่นๆ';
- } catch (e) { return 'อื่นๆ'; }
- }
- /** วินิจฉัยสี block MG3 ต่อ seat — เทียบ "สี avatar (playTint)" vs "สี block (resolved)"; ถ้าไม่ตรง → ส่งเข้า /gamelog
- เรียกเอง: window.__mg3ColorLog() หรือ auto throttle */
- let _mg3ColorLogAt = 0;
- let _mg3SnapAt = 0;
- let _mg3LastMismatchKey = '';
- function logStackSeatColors(tag, force) {
- if (!force) return; /* diagnostic ปิด auto (2026-07-04 · MG3 สี confirmed) — เรียกมือ window.__mg3ColorLog() ยังได้ */
- try {
- if (!isStack() || !stackTurnOrderReadyPlay()) return;
- const now = Date.now();
- if (!force && now - _mg3ColorLogAt < 2000) return;
- _mg3ColorLogAt = now;
- const rows = stackPreviewTurnOrder.map(function (e) {
- let ent = null;
- if (e.id != null) ent = (myId != null && String(e.id) === String(myId)) ? me : (others.get(e.id) || others.get(String(e.id)));
- if (!ent && e.botId) ent = others.get(e.botId) || others.get(String(e.botId));
- const tint = ent && ent.playTint && ent.playTint.body ? ent.playTint.body : '';
- const avatarIdx = tint ? nearestIndexFromHexPlay(tint, PLAY_LOBBY_THEME_HEX) : null; /* สีจริงของ avatar (จาก playTint) */
- const blockIdx = stackSeatColorThemePlay(e.seat); /* สี block ที่จะวาด */
- return { seat: e.seat, kind: e.kind, nick: (ent && ent.nickname) || String(e.id || e.botId || '').slice(0, 6), avatarIdx: avatarIdx, blockIdx: blockIdx, srv: (ent && ent.lobbyThemeIndexSrv) || null, bc: e.theme || null, ok: (avatarIdx && blockIdx) ? (avatarIdx === blockIdx) : null };
- });
- console.log('[mg3-color/' + (tag || '') + '] host=' + isMePlayHost(), JSON.stringify(rows));
- const role = isMePlayHost() ? 'host' : 'client';
- /* (A) snapshot ทุก ~5 วิ จาก "ทั้ง host และ client" → เทียบใน /gamelog ได้: block(=สีที่วาด) av(=สี avatar) srv bc */
- if (now - _mg3SnapAt > 5000) {
- _mg3SnapAt = now;
- /* รายชื่อ "คน" ใน others (เทียบกับคิว) — หา root "client หายจากคิว" */
- const othH = [];
- if (myId != null) othH.push((me && me.nickname ? me.nickname : 'me') + '(self' + (playBannedSpectator ? ',BAN' : '') + ')');
- others.forEach(function (o, id) {
- if (isPreviewBotId(id)) return;
- othH.push((o && o.nickname ? o.nickname : String(id).slice(0, 5)) + (o && o.bannedSpectator ? '(BAN)' : ''));
- });
- const ordSeats = rows.length;
- /* block ที่ "วางแล้ว" (frozen layer.theme) — ตัวที่ user เห็นเพี้ยน; เทียบ host vs client ทีละ layer (seat:theme) */
- let lyr = '';
- if (stackMini && Array.isArray(stackMini.layers)) {
- const L = stackMini.layers;
- lyr = ' || layers(' + L.length + ')=[' + L.slice(-12).map(function (l) { return (l && l.seat != null ? l.seat : '?') + ':' + (l && l.theme != null ? l.theme : 'null'); }).join(',') + ']';
- }
- const summary = 'order=' + ordSeats + 'seat othHumans=[' + othH.join(',') + '] :: '
- + rows.map(function (r) { return 's' + r.seat + ':' + (r.nick || '?').slice(0, 5) + ' blk=' + r.blockIdx + ' av=' + r.avatarIdx; }).join(' | ') + lyr;
- gamelogPost('MG3', 'color-snap', summary, role);
- }
- /* (B) mismatch (avatar≠block บนจอเดียวกัน) → ส่งทันที (เปลี่ยนค่อยส่งซ้ำ) */
- const bad = rows.filter(function (r) { return r.ok === false; });
- if (bad.length) {
- const key = role + '|' + bad.map(function (r) { return r.seat + ':' + r.avatarIdx + '!=' + r.blockIdx; }).join(',');
- if (key !== _mg3LastMismatchKey) {
- _mg3LastMismatchKey = key;
- const detail = bad.map(function (r) { return r.nick + ' seat' + r.seat + ' avatar#' + r.avatarIdx + ' แต่ block#' + r.blockIdx + ' (srv' + r.srv + '/bc' + r.bc + ')'; }).join(' | ');
- gamelogPost('MG3', 'color-mismatch', detail, role);
- }
- }
- } catch (e) { /* ignore */ }
- }
- window.__mg3ColorLog = function () { logStackSeatColors('manual', true); };
-
- function pickStackBlockHeavyVisual(seat) {
- const slot = Math.max(0, Math.min(7, (Math.floor(Number(seat)) || 1) - 1));
- let hU = normalizeGauntletAssetUrlForPlay(playStackBlockHeavyUrls[slot] || '');
- /* ถ้าใช้สี theme (Block-Code) — heavy variant '-2' มีครบ ใช้แทน admin slot */
- const _theme = stackSeatColorThemePlay(seat);
- if (_theme && stackThemeHeavyUrlPlay(_theme)) hU = stackThemeHeavyUrlPlay(_theme);
- /** Tower mnn93hpi: ตั้งแต่เกณฑ์ progress (ตาม stackTowerProgressBlocks) → ใช้รูป heavy จาก admin — นอก live ไม่สุ่ม heavy */
- if (isStackTowerMissionUiMapPlay()) {
- if (!(stackTowerMissionPhase === 'live' && stackMini)) return false;
- const p = Number(stackMini.progressPct);
- if (!Number.isFinite(p) || p < STACK_TOWER_POST50_PROGRESS_THRESH) return false;
- return !!hU;
- }
- const pct = Math.max(0, Math.min(100, Math.floor(Number(playStackHeavyBlockPercent) || 0)));
- if (pct <= 0) return false;
- if (!hU) return false;
- if (Math.random() * 100 >= pct) return false;
- return true;
- }
-
- function ensureStackNextDropVisual() {
- if (!stackMini || !stackMini.nextDropVisualDirty) return;
- stackMini.pendingDropSeat = getStackDropActorSeat();
- stackMini.pendingDropHeavy = pickStackBlockHeavyVisual(stackMini.pendingDropSeat);
- stackMini.pendingDropTheme = null; /* ดรอป local/host → ใช้ stackSeatColorThemePlay เอง (remote ตั้งทับทีหลัง) */
- stackMini.widthTiles = stackBlockWidthTilesForPlay(stackMini.initialWidthTiles, !!stackMini.pendingDropHeavy);
- stackMini.nextDropVisualDirty = false;
- }
-
- function normalizePlayStackSixUrlsFromTiming(arr) {
- const out = ['', '', '', '', '', '', '', '']; /* 8 slot ตาม lobby theme (#4) */
- if (!Array.isArray(arr)) return out;
- for (let i = 0; i < 8; i++) {
- out[i] = normalizeGauntletAssetUrlForPlay(typeof arr[i] === 'string' ? arr[i] : '');
- if (out[i]) ensureGauntletAssetImage(out[i]);
- }
- return out;
- }
-
- function resolveStackBlockSpriteRec(seat, heavy, themeOverride) {
- const tryHeavy = !!heavy;
- /* #4 สี block = theme ของผู้เล่นที่ seat นั้น (Block-Code-1..8) ถ้า resolve ได้ (มี turn order)
- — fallback ไป admin slot URLs ถ้าไม่มี theme (เกม stack อื่น/ยังไม่มีลำดับตา)
- themeOverride = สีที่ "freeze" ไว้บน layer ตอนวาง → กัน re-resolve เปลี่ยนสีเมื่อ turn order เปลี่ยน (สี block ที่วางแล้วคงที่+ตรงทุกจอ) */
- const theme = (themeOverride >= 1 && themeOverride <= 8) ? themeOverride : stackSeatColorThemePlay(seat);
- if (theme) {
- const tn = stackThemeNormalUrlPlay(theme);
- const th = stackThemeHeavyUrlPlay(theme);
- const torder = tryHeavy ? [th, tn] : [tn, th];
- for (let ti = 0; ti < torder.length; ti++) {
- if (torder[ti]) return ensureGauntletAssetImage(torder[ti]);
- }
- }
- const slot = Math.max(0, Math.min(7, (Math.floor(Number(seat)) || 1) - 1));
- const order = tryHeavy
- ? [playStackBlockHeavyUrls[slot], playStackBlockNormalUrls[slot]]
- : [playStackBlockNormalUrls[slot], playStackBlockHeavyUrls[slot]];
- for (let ti = 0; ti < order.length; ti++) {
- const u = normalizeGauntletAssetUrlForPlay(order[ti] || '');
- if (!u) continue;
- return ensureGauntletAssetImage(u);
- }
- return null;
- }
-
- /**
- * @returns {boolean} true = วาดสไปรต์แล้ว · false = วาดสี่เหลี่ยมสี fallback
- * ใช้ scale แบบ cover + clip ให้ขอบภาพตรงกล่องฟิสิกส์ (drawW×drawH) — ไม่เว้นขอบซ้ายขวาแบบ contain
- * เพื่อให้สายตาตรงกับ overlap / miss ใน computeStackDropResult
- */
- function drawStackBlockSpriteOrHue(ctx, sx, sy, drawW, drawH, seat, heavy, hueFallback, opts) {
- const o = opts || {};
- const rec = resolveStackBlockSpriteRec(seat, heavy, o.themeOverride);
- const img = rec && rec.img;
- if (rec && rec.ready && img && img.complete && img.naturalWidth > 0 && img.naturalHeight > 0) {
- const iw = img.naturalWidth;
- const ih = img.naturalHeight;
- if (drawW > 0 && drawH > 0) {
- const scale = Math.max(drawW / iw, drawH / ih);
- const dw = iw * scale;
- const dh = ih * scale;
- const dx = sx + (drawW - dw) * 0.5;
- const dy = sy + (drawH - dh) * 0.5;
- const prevSmooth = ctx.imageSmoothingEnabled;
- ctx.save();
- ctx.beginPath();
- ctx.rect(sx, sy, drawW, drawH);
- ctx.clip();
- try {
- ctx.imageSmoothingEnabled = false;
- ctx.drawImage(img, 0, 0, iw, ih, dx, dy, dw, dh);
- } finally {
- ctx.imageSmoothingEnabled = prevSmooth;
- }
- ctx.restore();
- if (o.missOverlay) {
- ctx.fillStyle = 'rgba(247, 118, 190, 0.42)';
- ctx.fillRect(sx, sy, drawW, drawH);
- }
- return true;
- }
- }
- const hue = ((hueFallback % 360) + 360) % 360;
- ctx.fillStyle = o.missTint ? 'rgba(247, 118, 190, 0.88)' : ('hsla(' + hue + ', 68%, 56%, 0.9)');
- ctx.fillRect(sx, sy, drawW, drawH);
- return false;
- }
-
- if (!spaceId) { window.location.replace(playDesignMainMenuHref()); return; }
-
- const socket = io({ path: BASE + '/socket.io' });
- window.__jdGameSocket = socket;
- const canvas = document.getElementById('game-canvas');
- const ctx = canvas.getContext('2d');
-
- /** popup แจ้งเตือน/ผิดพลาด ดีไซน์เอง (แทน alert() ของเบราว์เซอร์ที่หน้าตาไม่เข้าธีม)
- opts: { type:'error'|'info', okText, onClose } — onClose เรียกเมื่อกดตกลง/ปิด */
- function showPlayAlert(message, opts) {
- opts = opts || {};
- const prev = document.getElementById('play-alert-modal');
- if (prev) prev.remove();
- const overlay = document.createElement('div');
- overlay.id = 'play-alert-modal';
- overlay.className = 'play-alert-modal' + (opts.type === 'error' ? ' play-alert-modal--error' : '');
- const card = document.createElement('div');
- card.className = 'play-alert-card';
- card.setAttribute('role', 'alertdialog');
- card.setAttribute('aria-modal', 'true');
- const backdrop = document.createElement('div');
- backdrop.className = 'play-alert-backdrop';
- const icon = document.createElement('div');
- icon.className = 'play-alert-icon';
- icon.textContent = opts.type === 'error' ? '!' : 'i';
- const msg = document.createElement('div');
- msg.className = 'play-alert-msg';
- msg.textContent = (message == null ? '' : String(message));
- const ok = document.createElement('button');
- ok.type = 'button';
- ok.className = 'play-alert-ok';
- ok.textContent = opts.okText || 'ตกลง';
- card.appendChild(icon);
- card.appendChild(msg);
- card.appendChild(ok);
- overlay.appendChild(backdrop);
- overlay.appendChild(card);
- document.body.appendChild(overlay);
- let closed = false;
- const done = function () {
- if (closed) return;
- closed = true;
- overlay.remove();
- document.removeEventListener('keydown', onKey, true);
- if (typeof opts.onClose === 'function') { try { opts.onClose(); } catch (e) { /* ignore */ } }
- };
- const onKey = function (e) {
- if (e.key === 'Enter' || e.key === 'Escape') { e.preventDefault(); done(); }
- };
- ok.addEventListener('click', done);
- if (!opts.requireButton) backdrop.addEventListener('click', done);
- document.addEventListener('keydown', onKey, true);
- setTimeout(function () { try { ok.focus(); } catch (e) { /* ignore */ } }, 30);
- return { close: done };
- }
- window.__jdShowPlayAlert = showPlayAlert;
- let mapData = null, tileSize = 32, myId = null;
- let stackMini = null;
- let stackFall = null;
- let stackLastSwingEmit = 0; /* throttle broadcast เฟสแกว่ง MG3 (เจ้าของตา → คนอื่น mirror) */
- let stackLastStateEmit = 0; /* throttle broadcast ลำดับตา+index MG3 (host → non-host adopt) */
- let stackRemoteDropQueue = []; /* คิวดรอปจาก host/คนอื่น (MG3) — ทยอย apply ทีละอันกันทิ้ง */
- /** เศษบล็อกที่พลาด/หล่น → ตกแบบ physics หลุดขอบจอ (visual เท่านั้น ไม่กระทบคะแนน/sync) */
- let stackMissDebris = [];
- let _stackDebrisLastT = 0;
- /** Tower / Stack — เชือกเหวี่ยงจาก `img/TowerBlock/sling.png` */
- let stackTowerSlingImg = null;
- /** Tower mnn93hpi — +คะแนน (`score+10.png` / `score+20.png`) + เอฟเฟกต์ ×2 (`score-light.png`, `scorex2.png`) */
- let stackTowerScorePlus10Img = null;
- let stackTowerScorePlus20Img = null;
- let stackTowerScoreLightImg = null;
- let stackTowerScoreX2Img = null;
- /** พลาดแล้วโชว์ heart-1.png กลางเหนือกอง (mock Tower) — heart เต็มใน HUD ใช้ไฟล์เดียวกัน */
- let stackTowerHeartMinusImg = null;
- /** HUD มุมขวา: `life-bar.png` + `life-full.png` / `life-hit.png` (mock รูป2) */
- let stackTowerLifeBarImg = null;
- let stackTowerLifeHitImg = null;
- let stackTowerLifeFullImg = null;
- /** Space Shooter (violent_crime): life HUD โหลดจาก /img/ViolentCrime/ แยกจาก TowerBlock ของ Stack */
- let violentCrimeLifeBarImg = null;
- let violentCrimeLifeHitImg = null;
- let violentCrimeLifeFullImg = null;
- /** @type {{ until: number } | null} */
- let stackTowerHeartMinusFx = null;
- const STACK_TOWER_HEART_MINUS_FX_MS = 1500;
- const STACK_TOWER_PERFECT_GLOW_MS = 1500;
- /** ป๊อปอัป +10 / +20 เหนือบล็อก */
- const STACK_TOWER_SCORE_POPUP_MS = 2000;
- /** ระยะโชว์ score-light + scorex2 ข้างชั้นบน (คู่กับ +20 / perfect full) */
- const STACK_TOWER_PERFECT_X2_MS = 2200;
- /** ทับบล็อกก่อนหน้า + ชั้นใหม่: support เต็มแทบไม่มีเพี้ยน */
- const STACK_TOWER_PERFECT_SUPPORT_MIN = 0.998;
- let lastStackTickMs = performance.now();
- let lastStackTowerScrollBgTickMs = performance.now();
- let mapBackgroundImg = null;
- /** space_shooter + แมป mnpz6rkp — พื้นหลังเลื่อนแนวตั้ง (ข้อมูลจาก editorBgScroll ในแมป) */
- const PLAY_SCROLL_BG_MAP_ID = 'mnpz6rkp';
- const PLAY_SCROLL_BG_DEFAULT_INTRO = BASE + '/img/editor-bg-mnpz6rkp/intro.png';
- const PLAY_SCROLL_BG_DEFAULT_LOOP = BASE + '/img/editor-bg-mnpz6rkp/loop.png';
- let playScrollBgIntroImg = null;
- let playScrollBgLoopImg = null;
- /** ขอบบนของ viewport ใน strip — เพิ่มค่า = เลื่อนลง strip (เข้า loop ใต้ intro) */
- let playScrollBgPx = 0;
- let playScrollBgSpeedPxPerSec = 56;
- let playScrollBgOff = false;
- /** true = บน→ล่าง: พลิกมุมมองใน viewport (ยังเลื่อน S+ เข้า loop ใต้ intro) */
- let playScrollBgFlowDown = false;
-
- function playScrollBgMapEligible() {
- return !!(mapData && mapData.gameType === 'space_shooter' && (currentPlayMapId() || '').trim() === PLAY_SCROLL_BG_MAP_ID);
- }
-
- function playScrollBgDrawActive() {
- if (!playScrollBgMapEligible() || playScrollBgOff) return false;
- const a = playScrollBgIntroImg;
- const b = playScrollBgLoopImg;
- return !!(a && a.complete && a.naturalWidth && b && b.complete && b.naturalWidth);
- }
-
- function reloadPlayScrollBgFromMap() {
- playScrollBgIntroImg = null;
- playScrollBgLoopImg = null;
- playScrollBgPx = 0;
- if (!playScrollBgMapEligible()) return;
- const raw = mapData.editorBgScroll && typeof mapData.editorBgScroll === 'object' ? mapData.editorBgScroll : {};
- playScrollBgOff = raw.enabled === false;
- playScrollBgSpeedPxPerSec = Math.max(8, Math.min(400, Math.floor(Number(raw.speedPxPerSec)) || 56));
- const dirRaw = String(raw.scrollDirection || raw.direction || 'up').toLowerCase();
- playScrollBgFlowDown = (dirRaw === 'down' || dirRaw === 'top' || dirRaw === 'toptobottom');
- if (playScrollBgOff) return;
- const introSrc = (typeof raw.introImage === 'string' && raw.introImage.length) ? raw.introImage : PLAY_SCROLL_BG_DEFAULT_INTRO;
- const loopSrc = (typeof raw.loopImage === 'string' && raw.loopImage.length) ? raw.loopImage : PLAY_SCROLL_BG_DEFAULT_LOOP;
- let pending = 2;
- const bump = () => {
- pending--;
- if (pending <= 0) {
- playScrollBgSyncInitialScrollToBottom();
- try { draw(); } catch (e) { /* ignore */ }
- }
- };
- const im1 = new Image();
- im1.onload = () => { playScrollBgIntroImg = im1; bump(); };
- im1.onerror = () => { bump(); };
- im1.src = introSrc;
- const im2 = new Image();
- im2.onload = () => { playScrollBgLoopImg = im2; bump(); };
- im2.onerror = () => { bump(); };
- im2.src = loopSrc;
- }
-
- function playScrollBgSyncInitialScrollToBottom() {
- const intro = playScrollBgIntroImg;
- if (!canvas || !intro || !intro.complete || !intro.naturalWidth) return;
- const cwR = Math.max(1, Math.round(canvas.width));
- const chR = Math.max(1, Math.round(canvas.height));
- const drawHIntro = Math.round(intro.naturalHeight * (cwR / intro.naturalWidth));
- /* ล่าง→บน: S = HI−ch ให้ขอบล่าง intro ชิดล่างจอ · บน→ล่าง (พลิก dest): S=0 ถึงได้ขอบล่าง intro ชิดล่างจอ */
- if (playScrollBgFlowDown) {
- playScrollBgPx = 0;
- } else {
- playScrollBgPx = Math.max(0, drawHIntro - chR);
- }
- }
-
- function drawPlayScrollBgFullCanvas(cw, ch) {
- const intro = playScrollBgIntroImg;
- const loop = playScrollBgLoopImg;
- if (!intro || !intro.complete || !loop || !loop.complete) return;
- const cwR = Math.max(1, Math.round(cw));
- const chR = Math.max(1, Math.round(ch));
- const scaleI = cwR / intro.naturalWidth;
- const drawHIntro = Math.round(intro.naturalHeight * scaleI);
- const scaleL = cwR / loop.naturalWidth;
- const drawHLoop = Math.max(1, Math.round(loop.naturalHeight * scaleL));
- const S = playScrollBgPx;
- const vp0 = S;
- const vp1 = S + chR;
- const yLimit = vp1 + drawHLoop * 2;
- const flowDown = playScrollBgFlowDown;
-
- function stripTopToDestY(stripTop, drawH) {
- if (!flowDown) return stripTop - S;
- return S + chR - (stripTop + drawH);
- }
-
- ctx.save();
- /* BG อวกาศเป็นภาพ illustration (loop 1024w สเกลขึ้น ~1.9x) — เปิด smoothing ไม่ให้แตกเป็นบล็อก (stack tower BG กว้าง ~1920 จึงคงปิดไว้) */
- ctx.imageSmoothingEnabled = true;
- ctx.imageSmoothingQuality = 'high';
- ctx.beginPath();
- ctx.rect(0, 0, cwR, chR);
- ctx.clip();
-
- if (vp0 < 0) {
- let k = 1;
- if (vp0 < -drawHLoop * 4) {
- k = Math.max(1, Math.floor(-vp0 / drawHLoop) - 2);
- }
- for (; k < 50000; k++) {
- const y0 = -k * drawHLoop;
- if (y0 >= vp1 + drawHLoop) break;
- if (y0 + drawHLoop <= vp0) continue;
- const dy = Math.round(stripTopToDestY(y0, drawHLoop));
- ctx.drawImage(loop, 0, 0, loop.naturalWidth, loop.naturalHeight, 0, dy, cwR, drawHLoop);
- }
- }
-
- if (drawHIntro > vp0 && vp1 > 0) {
- const dy = Math.round(stripTopToDestY(0, drawHIntro));
- ctx.drawImage(intro, 0, 0, intro.naturalWidth, intro.naturalHeight, 0, dy, cwR, drawHIntro);
- }
-
- let y = drawHIntro;
- if (y < yLimit && vp1 > drawHIntro) {
- if (vp0 > drawHIntro) {
- const n = Math.floor((vp0 - drawHIntro) / drawHLoop);
- y = drawHIntro + Math.max(0, n - 1) * drawHLoop;
- }
- while (y < yLimit) {
- const dy = Math.round(stripTopToDestY(y, drawHLoop));
- ctx.drawImage(loop, 0, 0, loop.naturalWidth, loop.naturalHeight, 0, dy, cwR, drawHLoop);
- y += drawHLoop;
- }
- }
- ctx.restore();
- }
-
- function tickPlayScrollBg(dtSec) {
- if (!playScrollBgDrawActive()) return;
- playScrollBgPx += (playScrollBgSpeedPxPerSec || 56) * dtSec;
- }
-
- /** Last Light (mno9kb07) — พื้นหลังแนวนอน: start → loop 2→3→4 → finish ครั้งเดียว (ไม่วน) แล้วจบเกม + ซ่อนอุปสรรค (gauntletCrownRunwayBg ในแมป) */
- const GAUNTLET_CROWN_RUNWAY_BG_MAP_ID = 'mno9kb07';
- /** หลังหยุดเลื่อนที่จุด FINISH — รอก่อน latch + โฟลว์สรุป (มิลลิวิ) */
- const GAUNTLET_CROWN_RUNWAY_POST_STOP_MS = 2000;
- /** ความเร็วเดินเข้าเส้นชัยตอนจบ (ช่อง/วินาที) — ค่อยๆ เดินแทนกระพริบ snap */
- const GAUNTLET_FINISH_WALK_TILES_PER_SEC = 7;
- /** เพดานเวลาเดินเข้าเส้นชัย (กันค้างถ้าใครติด) — ต้อง < server grace (GAUNTLET_FINISH_WALK_MS) */
- const GAUNTLET_FINISH_WALK_MAX_MS = 2600;
- const GAUNTLET_CROWN_RUNWAY_BG_DEFAULT_START = BASE + '/img/editor-bg-mno9kb07/start.png';
- const GAUNTLET_CROWN_RUNWAY_BG_DEFAULT_LOOP2 = BASE + '/img/editor-bg-mno9kb07/loop2.png';
- const GAUNTLET_CROWN_RUNWAY_BG_DEFAULT_LOOP3 = BASE + '/img/editor-bg-mno9kb07/loop3.png';
- const GAUNTLET_CROWN_RUNWAY_BG_DEFAULT_LOOP4 = BASE + '/img/editor-bg-mno9kb07/loop4.png';
- const GAUNTLET_CROWN_RUNWAY_BG_DEFAULT_FINISH = BASE + '/img/editor-bg-mno9kb07/finish.png';
- let gauntletCrownRunwayBgImgs = [null, null, null, null, null];
- let gauntletCrownRunwayBgOff = false;
- let gauntletCrownRunwayBgSpeedPxPerSec = 48;
- let gauntletCrownRunwayBgScrollPx = 0;
- /* G1: scroll ผูกเวลา server (ทุกเครื่องตรงกัน ไม่ขึ้น resolution/frame-rate/host) — scroll = base + speed × (serverNow − anchor) */
- let gauntletCrownRunwayLiveAnchorServerMs = 0; /* เวลาเริ่ม live (server epoch) */
- let gauntletCrownRunwayServerLiveStartMs = 0; /* liveStartMs จาก server (gauntlet-sync) — anchor เดียวกันทุกเครื่อง */
- let gauntletCrownRunwayBaseScrollPx = 0; /* ค่า scroll ตอน snap (resolution-independent เท่ากันทุกเครื่อง) */
- let gauntletCrownRunwayBgFinishLatched = false;
- /** ส่งสัญญาณ "ถึงเส้นชัย" ให้ server แล้วหรือยัง (กันส่งซ้ำ) — server จะหยุด obstacle/collision */
- let gauntletFinishPhaseSignaled = false;
- /** กำลังเดินค่อยๆ เข้าเส้นชัย (ก่อน freeze) — true ระหว่างทุกคนทยอยเดินมาที่เส้น */
- let gauntletCrownRunwayWalkActive = false;
- /** เวลาเริ่มเดินเข้าเส้นชัย (ms) — ใช้เพดานเวลา GAUNTLET_FINISH_WALK_MAX_MS */
- let gauntletCrownRunwayWalkStartMs = 0;
- /** >0 = หยุดเลื่อนแล้ว (timestamp ms) รอ POST_STOP ก่อน latch */
- let gauntletCrownRunwayBgStripFreezeSinceMs = 0;
- /** คอลัมน์แผนที่ที่ล็อกตอน freeze — แนบตัวนำแทนขอบขวาสูงสุดของแมป */
- let gauntletCrownRunwayFinishAlignLatchedWorldX = null;
- /** พรีวิว embed: แสดง GCM ครั้งเดียวเมื่อรันเวย์ครบแนว (ไม่รอเซิร์ฟเวอร์) */
- let gauntletCrownRunwayClientMissionShown = false;
- /** พรมแดง mno9kb07 — จำกัดขอบขวาของตัว (ขอบขวา footprint ไม่เกินสัดส่วนนี้ของความกว้างแมปเป็นช่อง) */
- const GAUNTLET_CROWN_HEIST_MAX_X_WORLD_FRAC = 0.8;
- const GAUNTLET_CROWN_SCORE_POP_URL = BASE + '/img/gauntlet-assets/score-.png';
- let gauntletCrownScorePenaltyImg = null;
- function ensureGauntletCrownScorePenaltyImgPlay() {
- if (gauntletCrownScorePenaltyImg) return gauntletCrownScorePenaltyImg;
- const im = new Image();
- im.src = GAUNTLET_CROWN_SCORE_POP_URL;
- gauntletCrownScorePenaltyImg = im;
- return im;
- }
- let lastGauntletCrownRunwayBgTickMs = 0;
- /** จัด offset เลื่อนรันเวย์ให้จุดเกิดตรงกับงานศิลป์ START (รูป 1) — รีเซ็ตตอน howto / โหลดแมปใหม่ */
- let gauntletCrownRunwaySpawnScrollSnapped = false;
-
- function gauntletCrownRunwayBgMapEligiblePlay() {
- return !!(mapData && mapData.gameType === 'gauntlet' && (currentPlayMapId() || '').trim() === GAUNTLET_CROWN_RUNWAY_BG_MAP_ID);
- }
-
- function gauntletCrownRunwayBgNatDims(im) {
- if (!im) return null;
- if (im.tagName === 'CANVAS' && im.width > 0 && im.height > 0) return { nw: im.width, nh: im.height };
- if (im.complete && im.naturalWidth > 0 && im.naturalHeight > 0) return { nw: im.naturalWidth, nh: im.naturalHeight };
- return null;
- }
-
- function gauntletCrownRunwayBgImageSlotReadyPlay(im) {
- return !!gauntletCrownRunwayBgNatDims(im);
- }
-
- function gauntletCrownRunwayBgStripWidthsAtCh(chR) {
- const ch0 = Math.max(1, Math.round(chR));
- const wOf = (im) => {
- const d = gauntletCrownRunwayBgNatDims(im);
- if (!d) return 0;
- return Math.max(1, Math.round(d.nw * (ch0 / d.nh)));
- };
- return {
- w0: wOf(gauntletCrownRunwayBgImgs[0]),
- w1: wOf(gauntletCrownRunwayBgImgs[1]),
- w2: wOf(gauntletCrownRunwayBgImgs[2]),
- w3: wOf(gauntletCrownRunwayBgImgs[3]),
- w4: wOf(gauntletCrownRunwayBgImgs[4]),
- };
- }
-
- function gauntletCrownRunwayBgImagesReadyPlay() {
- for (let i = 0; i < 5; i++) {
- if (!gauntletCrownRunwayBgImageSlotReadyPlay(gauntletCrownRunwayBgImgs[i])) return false;
- }
- return true;
- }
-
- /** ถ้า URL บนเซิร์ฟยังไม่มีไฟล์ (404) ให้แผ่นเลื่อนได้ — พื้นผิวนุ่ม ไม่ใส่ข้อความใหญ่ (กันเหมือน debug) */
- function ensureGauntletCrownRunwayBgPlaceholdersPlay() {
- if (!gauntletCrownRunwayBgMapEligiblePlay() || gauntletCrownRunwayBgOff) return;
- const W = 960;
- const H = 540;
- const hues = [352, 210, 165, 225, 38];
- for (let i = 0; i < 5; i++) {
- if (gauntletCrownRunwayBgImageSlotReadyPlay(gauntletCrownRunwayBgImgs[i])) continue;
- const c = document.createElement('canvas');
- c.width = W;
- c.height = H;
- const g = c.getContext('2d');
- const h0 = hues[i];
- const grd = g.createLinearGradient(0, 0, W, H * 0.9);
- grd.addColorStop(0, `hsl(${h0},26%,20%)`);
- grd.addColorStop(0.45, `hsl(${h0},18%,14%)`);
- grd.addColorStop(1, `hsl(${h0},12%,10%)`);
- g.fillStyle = grd;
- g.fillRect(0, 0, W, H);
- g.strokeStyle = 'rgba(255,255,255,0.06)';
- g.lineWidth = 1;
- for (let x = 0; x < W; x += 48) {
- g.beginPath();
- g.moveTo(x, 0);
- g.lineTo(x + H * 0.04, H);
- g.stroke();
- }
- const vg = g.createRadialGradient(W * 0.45, H * 0.35, 20, W * 0.5, H * 0.55, W * 0.85);
- vg.addColorStop(0, 'rgba(0,0,0,0)');
- vg.addColorStop(1, 'rgba(0,0,0,0.38)');
- g.fillStyle = vg;
- g.fillRect(0, 0, W, H);
- g.fillStyle = 'rgba(255,255,255,0.1)';
- g.font = '10px system-ui,sans-serif';
- g.textAlign = 'right';
- g.fillText(String(i + 1), W - 10, H - 8);
- gauntletCrownRunwayBgImgs[i] = c;
- }
- }
-
- function gauntletCrownRunwayBgDrawActivePlay() {
- if (!gauntletCrownRunwayBgMapEligiblePlay() || gauntletCrownRunwayBgOff) return false;
- return gauntletCrownRunwayBgImagesReadyPlay();
- }
-
- function gauntletCrownRunwayFinishLineInArtFracPlay() {
- const raw = mapData && mapData.gauntletCrownRunwayBg && typeof mapData.gauntletCrownRunwayBg === 'object' ? mapData.gauntletCrownRunwayBg : {};
- let lineInArt = Number(raw.finishLineInFinishArtFrac);
- if (!Number.isFinite(lineInArt)) {
- lineInArt = gauntletCrownRunwayBgMapEligiblePlay() ? 0.34 : 0.12;
- }
- return Math.max(0, Math.min(0.92, lineInArt));
- }
-
- function gauntletCrownRunwayFinishLineStripXPlay(g) {
- if (!g) return null;
- return g.finishStart + g.w4Safe * gauntletCrownRunwayFinishLineInArtFracPlay();
- }
-
- /** โลกแมป X ของจุดอ้างอิงในงานศิลป์ FINISH = stripX − scrollPx (ไม่ขึ้นกับกล้อง) */
- function gauntletCrownRunwayFinishLineMapWorldXPlay() {
- const g = gauntletCrownRunwayScrollGeometryPlay();
- if (!g) return null;
- const stripX = gauntletCrownRunwayFinishLineStripXPlay(g);
- if (stripX == null) return null;
- return stripX - gauntletCrownRunwayBgScrollPx;
- }
-
- function gauntletCrownRunwayStripFrozenPlay() {
- return gauntletCrownRunwayWalkActive || gauntletCrownRunwayBgStripFreezeSinceMs > 0 || gauntletCrownRunwayBgFinishLatched;
- }
-
- /** จุดอ้างอิงกลางตัวนำ (map world px) — ใช้หยุด FINISH ตรงตัวละคร ไม่ใช่ขอบขวาแมป */
- function gauntletCrownRunwayLeadingEntityAlignWorldXPlay() {
- if (!mapData || !isGauntletCrownHeistMapPlay()) return null;
- const ts = mapData.tileSize || 32;
- const { cw } = getCharacterFootprintWH(mapData);
- const mx = getGauntletCrownHeistMaxEntityXPlay(mapData);
- /* แนบเส้นชัยกับ "ตัวนำหน้าสุดที่ยังไม่ตาย" (tx มากสุด) → ตัวนำหยุดที่เส้นพอดี ไม่เลยเส้น
- (ตอนหยุด เราจะ snap ตัวที่เหลือมายืนที่เส้นเดียวกันด้วย ดู gauntletSnapLivingToFinishPlay) */
- let leadTx = -Infinity;
- const consider = (ent) => {
- if (!ent || ent.gauntletEliminated) return;
- let tx = Number.isFinite(ent.tx) ? ent.tx : Number(ent.x);
- if (!Number.isFinite(tx)) return;
- leadTx = Math.max(leadTx, tx);
- };
- consider(me);
- others.forEach((o, id) => {
- if (!playBotsEnabled() && isPreviewBotId(id)) return;
- consider(o);
- });
- if (!Number.isFinite(leadTx) || leadTx === -Infinity) return null;
- let alignWorld = (leadTx + cw * 0.5) * ts;
- if (mx != null && Number.isFinite(mx)) {
- alignWorld = Math.min(alignWorld, (mx + cw * 0.5) * ts);
- }
- return alignWorld;
- }
-
- /** ตอนถึงเส้นชัย: ดึงตัวที่ยังไม่ตายทุกตัวมายืนที่ "เส้นชัย" — ไม่มีใครเลยเส้น, คนตายไม่ย้าย
- เป้าหมาย = ตำแหน่งเส้นชัยที่ latch ไว้ (คงที่) ถ้ายังไม่ latch ใช้ tx ตัวนำสุด
- เรียกทุกเฟรมระหว่าง freeze/latched เพื่อกันบอทที่ sim ยังขยับ "ไหล" หลุดจากเส้น */
- function gauntletSnapLivingToFinishPlay() {
- if (!mapData || !isGauntletCrownHeistMapPlay()) return;
- const ts = mapData.tileSize || 32;
- const { cw } = getCharacterFootprintWH(mapData);
- let targetTx = null;
- if (gauntletCrownRunwayFinishAlignLatchedWorldX != null) {
- targetTx = gauntletCrownRunwayFinishAlignLatchedWorldX / ts - cw * 0.5;
- } else {
- let leadTx = -Infinity;
- const consider = (ent) => {
- if (!ent || ent.gauntletEliminated) return;
- const tx = Number.isFinite(ent.tx) ? ent.tx : Number(ent.x);
- if (Number.isFinite(tx)) leadTx = Math.max(leadTx, tx);
- };
- consider(me);
- others.forEach((o, id) => { if (!playBotsEnabled() && isPreviewBotId(id)) return; consider(o); });
- if (Number.isFinite(leadTx) && leadTx !== -Infinity) targetTx = leadTx;
- }
- if (targetTx == null || !Number.isFinite(targetTx)) return;
- const snap = (ent) => {
- if (!ent || ent.gauntletEliminated) return;
- if (Number.isFinite(ent.x)) ent.x = targetTx;
- if (ent.tx != null) ent.tx = targetTx;
- };
- snap(me);
- others.forEach((o, id) => { if (!playBotsEnabled() && isPreviewBotId(id)) return; snap(o); });
- }
-
- /** tx เป้าหมายที่เส้นชัย (คอลัมน์ที่ทุกคนต้องมายืน) — null ถ้าคำนวณไม่ได้ */
- function gauntletFinishTargetTxPlay() {
- if (!mapData || !isGauntletCrownHeistMapPlay()) return null;
- const ts = mapData.tileSize || 32;
- const { cw } = getCharacterFootprintWH(mapData);
- if (gauntletCrownRunwayFinishAlignLatchedWorldX != null) {
- return gauntletCrownRunwayFinishAlignLatchedWorldX / ts - cw * 0.5;
- }
- let leadTx = -Infinity;
- const consider = (ent) => {
- if (!ent || ent.gauntletEliminated) return;
- const tx = Number.isFinite(ent.tx) ? ent.tx : Number(ent.x);
- if (Number.isFinite(tx)) leadTx = Math.max(leadTx, tx);
- };
- consider(me);
- others.forEach((o, id) => { if (!playBotsEnabled() && isPreviewBotId(id)) return; consider(o); });
- return (Number.isFinite(leadTx) && leadTx !== -Infinity) ? leadTx : null;
- }
-
- /** เดินทุกคนที่ยังไม่ตาย "ค่อยๆ" เข้าหาเส้นชัยทีละเฟรม (แทน snap กระพริบ)
- คืน true เมื่อทุกคนถึงเส้นแล้ว (เริ่ม freeze→จบเกมต่อ) */
- function gauntletWalkLivingToFinishStepPlay(dtSec) {
- const targetTx = gauntletFinishTargetTxPlay();
- if (targetTx == null || !Number.isFinite(targetTx)) return true;
- const step = Math.max(0.04, GAUNTLET_FINISH_WALK_TILES_PER_SEC * Math.max(0, Number(dtSec) || 0));
- const eps = 0.06;
- let allArrived = true;
- const walk = (ent) => {
- if (!ent || ent.gauntletEliminated) return;
- let x = Number.isFinite(ent.x) ? ent.x : (Number.isFinite(ent.tx) ? ent.tx : targetTx);
- if (x < targetTx - eps) {
- x = Math.min(targetTx, x + step);
- ent.direction = 'right';
- ent.isWalking = true;
- allArrived = false;
- } else {
- x = targetTx; /* ไม่ให้ใครเลยเส้นชัย (เลยมา → ดึงกลับมาที่เส้น) */
- ent.isWalking = false;
- }
- ent.x = x;
- ent.tx = x;
- };
- walk(me);
- others.forEach((o, id) => { if (!playBotsEnabled() && isPreviewBotId(id)) return; walk(o); });
- return allArrived;
- }
-
- /** เริ่มเฟส "เดินเข้าเส้นชัย": ล็อก align → snap scroll → แจ้ง server หยุด obstacle ทันที (กันตายระหว่างเดิน)
- จากนั้น tick จะค่อยๆ เดินทุกคนมาที่เส้น แล้วค่อยเข้า freeze→จบเกม */
- function gauntletCrownRunwayBeginWalkToFinishPlay() {
- if (gauntletCrownRunwayWalkActive || gauntletCrownRunwayBgStripFreezeSinceMs > 0 || gauntletCrownRunwayBgFinishLatched) return;
- if (gauntletCrownRunwayFinishAlignLatchedWorldX == null) {
- const leadAlign = gauntletCrownRunwayLeadingEntityAlignWorldXPlay();
- if (leadAlign != null) gauntletCrownRunwayFinishAlignLatchedWorldX = leadAlign;
- }
- gauntletCrownRunwaySnapScrollToFinishStopPlay();
- gauntletCrownRunwayWalkActive = true;
- gauntletCrownRunwayWalkStartMs = Date.now();
- /* G3: เข้าเฟสเดินเข้าเส้นชัย → เคลียร์ท่ากระโดด (กันค้างลอยกลางอากาศ — ต้องเดินเข้าเส้น ไม่ใช่กระโดดค้าง) */
- meGauntletJumpTicks = 0; meGauntletJumpVis = 0;
- others.forEach((o) => { if (o) { o.gauntletJumpTicks = 0; o.gauntletJumpVis = 0; } });
- /* หมายเหตุ: การเคลียร์อุปสรรค "หายจากจอ" ให้ทำตอนได้ event 'gauntlet-finish-clear' จาก server
- (= จังหวะเดียวกับ server หยุด collision) กัน "หายแล้วยังชน" — ไม่เคลียร์ที่นี่ (เร็วไป half-RTT) */
- /* แจ้ง server ครั้งเดียว: เข้าโซนเส้นชัย → หยุด obstacle + collision (กันโดนชน/-10 ตอนกำลังเดินเข้าเส้น)
- server จะรอ grace (GAUNTLET_FINISH_WALK_MS) ให้เดินครบก่อนค่อยจบ */
- if (!gauntletFinishPhaseSignaled) {
- gauntletFinishPhaseSignaled = true;
- try { socket.emit('gauntlet-finish-phase'); } catch (_e) { /* ignore */ }
- }
- try { syncGauntletCrownJumpButton(); } catch (_sj) { /* ignore */ }
- }
-
-
- /**
- * คอลัมน์บนกริดที่เส้น FINISH ต้องแนบ (map world px)
- * gauntletCrownRunwayBg.finishAlignMapTileX | finishAlignMapTileFrac — ถ้าไม่ตั้ง ใช้ตำแหน่งตัวนำ
- */
- function gauntletCrownRunwayFinishAlignMapWorldXPlay() {
- if (!mapData) return null;
- if (gauntletCrownRunwayFinishAlignLatchedWorldX != null) {
- return gauntletCrownRunwayFinishAlignLatchedWorldX;
- }
- const raw = mapData.gauntletCrownRunwayBg && typeof mapData.gauntletCrownRunwayBg === 'object' ? mapData.gauntletCrownRunwayBg : {};
- const ts = mapData.tileSize || 32;
- const tileX = Number(raw.finishAlignMapTileX);
- if (Number.isFinite(tileX)) return (tileX + 0.5) * ts;
- const tileFrac = Number(raw.finishAlignMapTileFrac);
- if (Number.isFinite(tileFrac)) {
- const w = mapData.width || 20;
- return (Math.max(0, Math.min(1, tileFrac)) * w + 0.5) * ts;
- }
- if (gauntletCrownRunwayBgMapEligiblePlay()) {
- return gauntletCrownRunwayLeadingEntityAlignWorldXPlay();
- }
- return null;
- }
-
- /** ตำแหน่งเส้น FINISH บนจอ (0=ซ้าย 1=ขวา) จากขอบซ้าย viewport — ใช้หยุดเลื่อน + fade สิ่งกีดขวาง */
- function gauntletCrownRunwayFinishLineScreenFracPlay(g) {
- if (!g) return null;
- const finishLineWorldX = gauntletCrownRunwayFinishLineStripXPlay(g);
- if (finishLineWorldX == null) return null;
- return (finishLineWorldX - g.scrollView) / Math.max(1e-6, g.cwWorld);
- }
-
- function gauntletCrownRunwayFinishStopViewportFracPlay() {
- const raw = mapData && mapData.gauntletCrownRunwayBg && typeof mapData.gauntletCrownRunwayBg === 'object' ? mapData.gauntletCrownRunwayBg : {};
- const stopHi = gauntletCrownRunwayBgMapEligiblePlay() ? 0.85 : 0.75;
- let vp = Number(raw.finishStopViewportFrac);
- if (Number.isFinite(vp)) return Math.max(0.08, Math.min(stopHi, vp));
- let legacy = Number(raw.finishStopScreenFrac);
- if (Number.isFinite(legacy)) {
- legacy = Math.max(0.08, Math.min(0.96, legacy));
- return Math.max(0.12, Math.min(0.62, 0.14 + legacy * 0.42));
- }
- /* mno9kb07: หยุดเลื่อนเร็วขึ้น (เส้น FINISH หยุดที่ ~0.55 จากซ้าย — ขอบขวาของแถบ FINISH ใกล้กลางจอ) */
- return gauntletCrownRunwayBgMapEligiblePlay() ? 0.55 : 0.34;
- }
-
- function gauntletCrownRunwayObstacleFadeStartViewportFracPlay() {
- const raw = mapData && mapData.gauntletCrownRunwayBg && typeof mapData.gauntletCrownRunwayBg === 'object' ? mapData.gauntletCrownRunwayBg : {};
- let v = Number(raw.obstacleFadeStartViewportFrac);
- /* mno9kb07: เริ่มจางอุปสรรคให้เร็วขึ้น (1.0 = ตอนเส้น FINISH ยังอยู่ขอบขวา) เพื่อให้อุปสรรคหายก่อนถึงเส้นชัย */
- if (!Number.isFinite(v)) v = gauntletCrownRunwayBgMapEligiblePlay() ? 1.05 : 0.9;
- return Math.max(0.45, Math.min(1.15, v));
- }
-
- /** 1 = สิ่งกีดขวางเต็ม · 0 = หาย — ค่อยๆ จางเมื่อเส้น FINISH เข้าใกล้จุดหยุดบนจอ */
- function gauntletCrownRunwayObstacleDrawAlphaPlay() {
- /* เดิม: ซ่อนอุปสรรค (alpha 0) ตาม "ตำแหน่งเส้นชัยบนจอ" (screenFrac<=stopAt / finishLatched) — เกิด
- "ก่อน" server หยุด collision (finishPhase) → อาการ "อุปสรรคหายแล้วแต่ยังชน".
- ใหม่: โชว์อุปสรรคเต็มเสมอ → ให้มัน "หาย" ตอน server เคลียร์จริงเท่านั้น (finishPhase = คนแรกถึงเส้นชัย
- + หยุด collision พร้อมกัน ผ่าน event 'gauntlet-finish-clear' ที่ล้าง render buffer) = หาย+ไม่ชน พร้อมกัน */
- return 1;
- }
-
- function gauntletCrownRunwayBgHideObstaclesPlay() {
- return gauntletCrownRunwayObstacleDrawAlphaPlay() <= 0.001;
- }
-
- /** Last Light: หยุดแอนิเมชันวิ่งเมื่อหยุดที่ FINISH หรือ latch แล้ว */
- function gauntletCrownRunwayAvatarRunAllowedPlay() {
- if (gauntletCrownRunwayBgMapEligiblePlay() && gauntletCrownRunwayBgDrawActivePlay()) {
- if (gauntletCrownRunwayBgFinishLatched) return false;
- if (gauntletCrownRunwayBgStripFreezeSinceMs > 0) return false;
- return true;
- }
- return true;
- }
-
- function drawImageCoverCanvasPlay(ctx, img, cwR, chR) {
- const d = gauntletCrownRunwayBgNatDims(img);
- if (!d) return;
- const iw = d.nw;
- const ih = d.nh;
- if (!iw || !ih) return;
- const scale = Math.max(cwR / iw, chR / ih);
- const dw = iw * scale;
- const dh = ih * scale;
- const dx = (cwR - dw) / 2;
- const dy = (chR - dh) / 2;
- ctx.drawImage(img, 0, 0, iw, ih, dx, dy, dw, dh);
- }
-
- function drawRunwayHSlicePlay(ctx, img, worldX0, segW, scrollLeft, cwR, chR) {
- const d0 = gauntletCrownRunwayBgNatDims(img);
- if (!d0 || segW <= 0) return;
- const natW = d0.nw;
- const natH = d0.nh;
- const v0 = scrollLeft;
- const v1 = scrollLeft + cwR;
- const o0 = Math.max(worldX0, v0);
- const o1 = Math.min(worldX0 + segW, v1);
- if (o1 <= o0) return;
- const u0 = ((o0 - worldX0) / segW) * natW;
- const u1 = ((o1 - worldX0) / segW) * natW;
- const dx = o0 - scrollLeft;
- const dw = o1 - o0;
- /** ทาบแนวตั้งเล็กน้อยกันช่องว่างย่อย 1px (seam) ระหว่างแถบลูป */
- ctx.drawImage(img, u0, 0, u1 - u0, natH, dx - 0.25, 0, dw + 0.55, chR);
- }
-
- /** วาดแถบรันเวย์ในระบบพิกัด X = ความกว้างมองเห็น (cwR) × สูงแถบ chR · scrollView = จุดเริ่ม viewport ในโลกรันเวย์ */
- function drawGauntletCrownRunwayStripCorePlay(ctx, cwR, chR, scrollView) {
- const start = gauntletCrownRunwayBgImgs[0];
- const L2 = gauntletCrownRunwayBgImgs[1];
- const L3 = gauntletCrownRunwayBgImgs[2];
- const L4 = gauntletCrownRunwayBgImgs[3];
- const { w0, w1, w2, w3 } = gauntletCrownRunwayBgStripWidthsAtCh(chR);
- const cycle = w1 + w2 + w3;
- const S = scrollView;
- ctx.imageSmoothingEnabled = true;
- ctx.fillStyle = '#1a1b26';
- ctx.fillRect(0, 0, cwR, chR);
- if (w0 > 0) drawRunwayHSlicePlay(ctx, start, 0, w0, S, cwR, chR);
- if (cycle <= 0) return;
- const ws = [w1, w2, w3];
- const ims = [L2, L3, L4];
- const uTotal = Math.max(0, S - w0);
- let cycN = Math.floor(uTotal / cycle);
- let uRem = uTotal - cycN * cycle;
- let si = 0;
- while (si < 3 && uRem >= ws[si]) {
- uRem -= ws[si];
- si++;
- }
- if (si >= 3) {
- cycN++;
- si = 0;
- uRem = 0;
- }
- let acc = 0;
- for (let k = 0; k < si; k++) acc += ws[k];
- let curLeft = w0 + cycN * cycle + acc;
- let guard = 0;
- let idx = si;
- while (curLeft < S + cwR && guard++ < 500) {
- drawRunwayHSlicePlay(ctx, ims[idx], curLeft, ws[idx], S, cwR, chR);
- curLeft += ws[idx];
- idx = (idx + 1) % 3;
- }
- }
-
- /** Last Light mno9kb07: แถบเดียว START → 2 → 3 → 4 → FINISH (ไม่วนลูป) */
- function drawGauntletCrownRunwayStripLinearOncePlay(ctx, cwR, chR, scrollView) {
- const S = scrollView;
- const { w0, w1, w2, w3, w4 } = gauntletCrownRunwayBgStripWidthsAtCh(chR);
- ctx.imageSmoothingEnabled = true;
- ctx.fillStyle = '#1a1b26';
- ctx.fillRect(0, 0, cwR, chR);
- const segs = [
- { im: gauntletCrownRunwayBgImgs[0], w: w0, x0: 0 },
- { im: gauntletCrownRunwayBgImgs[1], w: w1, x0: w0 },
- { im: gauntletCrownRunwayBgImgs[2], w: w2, x0: w0 + w1 },
- { im: gauntletCrownRunwayBgImgs[3], w: w3, x0: w0 + w1 + w2 },
- { im: gauntletCrownRunwayBgImgs[4], w: w4, x0: w0 + w1 + w2 + w3 },
- ];
- for (let i = 0; i < segs.length; i++) {
- const g = segs[i];
- if (g.w > 0 && g.im) drawRunwayHSlicePlay(ctx, g.im, g.x0, g.w, S, cwR, chR);
- }
- }
-
- /**
- * @param {number} canvasW
- * @param {number} canvasH
- * @param {null|{ worldMinX:number, worldMaxX:number, camX:number, camY:number, zDraw:number, mapWpx:number, mapHpx:number }} worldAlign — ถ้ามี จะคลิป+สเกลให้ตรงกริดแมป (ตัว/สิ่งกีดขวางตรงพื้นที่ตั้ง)
- */
- function drawGauntletCrownRunwayBgFullCanvasPlay(canvasW, canvasH, worldAlign) {
- gauntletCrownRunwayMaintainFinishScrollPlay();
- const finish = gauntletCrownRunwayBgImgs[4];
- const align = worldAlign && typeof worldAlign === 'object'
- && Number.isFinite(worldAlign.worldMinX)
- && Number.isFinite(worldAlign.worldMaxX)
- && Number.isFinite(worldAlign.camX)
- && Number.isFinite(worldAlign.camY)
- && Number.isFinite(worldAlign.zDraw)
- && Number.isFinite(worldAlign.mapWpx)
- && Number.isFinite(worldAlign.mapHpx);
- /* หลัง latch ยังวาดแถบรันเวย์ที่ scroll ค้าง — อย่า switch เป็น cover เต็มแผนที่ (ทำให้ FINISH กระโดดซ้าย) */
- /* ใช้ความกว้างมองเห็นแบบ float ให้เท่ากับ canvas.width/zDraw — ห้าม Math.round ไม่งั้นซูมแล้วแถบ runway กว้างไม่ตรง worldToScreen (แผนหลุดจากตัว) */
- const cwR = align
- ? Math.max(1e-6, worldAlign.worldMaxX - worldAlign.worldMinX)
- : Math.max(1, Math.round(canvasW));
- const chR = align
- ? Math.max(1, Math.round(worldAlign.mapHpx))
- : Math.max(1, Math.round(canvasH));
- /* clamp S>=0 ทุกเฟรม → START segment เริ่มที่ขอบซ้ายจอเสมอ ไม่โชว์พื้นดำ (strip-x<0) ทางซ้าย
- (แก้ "เริ่มไม่ชิดซ้ายสุด" — display-only ไม่แตะ base scroll จึงไม่เลื่อน alignment กับอุปสรรค) */
- const scrollView = Math.max(0, align
- ? (gauntletCrownRunwayBgScrollPx + worldAlign.worldMinX)
- : gauntletCrownRunwayBgScrollPx);
- if (align) {
- const { camX, camY, zDraw, mapWpx, mapHpx, worldMinX } = worldAlign;
- ctx.fillStyle = '#1a1b26';
- ctx.fillRect(0, 0, canvasW, canvasH);
- ctx.save();
- ctx.setTransform(zDraw, 0, 0, zDraw, canvasW / 2 - camX * zDraw, canvasH / 2 - camY * zDraw);
- ctx.beginPath();
- /* แนวนอน: คลิปเต็มความกว้างที่มองเห็น (worldMinX..worldMaxX) แทนตัดที่ความกว้างแมพ (mapWpx)
- → จอกว้างทุก resolution รันเวย์โชว์ยาวเต็ม ไม่เหลือขอบดำซ้าย-ขวา · แนวตั้งคงคลิป=ความสูงแมพ (ไม่กระทบเส้นชัย) */
- ctx.rect(worldMinX, 0, cwR, mapHpx);
- ctx.clip();
- ctx.translate(worldMinX, 0);
- if (gauntletCrownRunwayBgMapEligiblePlay()) {
- drawGauntletCrownRunwayStripLinearOncePlay(ctx, cwR, chR, scrollView);
- } else {
- drawGauntletCrownRunwayStripCorePlay(ctx, cwR, chR, scrollView);
- }
- ctx.restore();
- return;
- }
- ctx.save();
- if (gauntletCrownRunwayBgMapEligiblePlay()) {
- drawGauntletCrownRunwayStripLinearOncePlay(ctx, cwR, chR, scrollView);
- } else {
- drawGauntletCrownRunwayStripCorePlay(ctx, cwR, chR, scrollView);
- }
- ctx.restore();
- }
-
- /**
- * Shared runway strip math (viewport in strip space). null if not drawable.
- * Map tuning (mno9kb07): finishStopViewportFrac 0.08–0.75 = เส้น FINISH อยู่ที่สัดส่วนนี้จากซ้ายจอก่อนหยุด (ค่าเริ่ม 0.34)
- * finishLineInFinishArtFrac = ตำแหน่งเส้นใน finish.png (ค่าเริ่ม 0.12)
- * obstacleFadeStartViewportFrac = เริ่มจางสิ่งกีดขวางเมื่อเส้น FINISH อยู่ที่สัดส่วนนี้บนจอ (ค่าเริ่ม 0.9)
- */
- function gauntletCrownRunwayScrollGeometryPlay() {
- if (!mapData || !canvas || !gauntletCrownRunwayBgDrawActivePlay()) return null;
- const zGaRaw = computePlayCameraZDrawPlay();
- const gCam = getGauntletCrownHeistGroupCameraCenterPxPlay(tileSize, canvas.width, canvas.height, zGaRaw);
- if (!gCam) return null;
- const halfW = canvas.width / (2 * zGaRaw);
- const worldMinX = gCam.px - halfW;
- const cwWorld = canvas.width / zGaRaw;
- const h = mapData.height || 15;
- const ts = mapData.tileSize || 32;
- const mapHpx = Math.max(1, Math.round(h * ts));
- const { w0, w1, w2, w3, w4 } = gauntletCrownRunwayBgStripWidthsAtCh(mapHpx);
- const w4Safe = Math.max(w4, 1);
- const totalStrip = w0 + w1 + w2 + w3 + w4Safe;
- if (!(totalStrip > 8)) return null;
- const scrollView = gauntletCrownRunwayBgScrollPx + worldMinX;
- const right = scrollView + cwWorld;
- const finishStart = w0 + w1 + w2 + w3;
- const geoMinScroll = finishStart + Math.max(0, cwWorld - w4Safe);
- const wideVpPad = cwWorld > w4Safe * 1.02 ? w4Safe * 0.38 : 0;
- const minScrollForFinishPass = geoMinScroll + wideVpPad;
- return {
- scrollView, right, cwWorld, w4Safe, totalStrip, finishStart, minScrollForFinishPass,
- };
- }
-
- /** True when เส้น FINISH ถึงตำแหน่งหยุด (แนบคอลัมน์แผนที่ หรือสัดส่วนจอแบบเดิม) */
- function gauntletCrownRunwayScrollStripStopZoneReachedPlay() {
- const g = gauntletCrownRunwayScrollGeometryPlay();
- if (!g) return false;
- const alignWorldX = gauntletCrownRunwayFinishAlignMapWorldXPlay();
- if (alignWorldX != null) {
- /* world-based: หยุดเมื่อ "เส้นชัย (world X)" ถึงตัวนำ — ไม่ขึ้นกับความละเอียดจอ
- (เดิมมี gate g.scrollView >= minScrollForFinishPass ที่ผูก cwWorld = canvas.width/zoom
- → จอกว้างต้อง scroll มากกว่าก่อนหยุด = ตัวละครวิ่งเลยเส้นชัยบนจอที่ resolution ต่างกัน) */
- const finishMapX = gauntletCrownRunwayFinishLineMapWorldXPlay();
- if (finishMapX == null) return false;
- return finishMapX <= alignWorldX + 1.5;
- }
- /* fallback (ไม่มีตัวนำให้ align) — ใช้ gate scroll + สัดส่วนจอแบบเดิม */
- if (g.scrollView < g.minScrollForFinishPass - 0.01) return false;
- const screenFrac = gauntletCrownRunwayFinishLineScreenFracPlay(g);
- if (screenFrac == null) return false;
- return screenFrac <= gauntletCrownRunwayFinishStopViewportFracPlay() + 0.008;
- }
-
- /** ค่าตำแหน่ง scroll ที่ทำให้เส้น FINISH หยุดตรงจุด (คืน null ถ้าคำนวณไม่ได้) — ใช้ทั้ง snap และ clamp กันวิ่งเลยเส้นชัย */
- function gauntletCrownRunwayFinishStopScrollPxPlay() {
- if (!mapData || !canvas || !gauntletCrownRunwayBgDrawActivePlay()) return null;
- const g = gauntletCrownRunwayScrollGeometryPlay();
- if (!g) return null;
- const finishLineStripX = gauntletCrownRunwayFinishLineStripXPlay(g);
- if (finishLineStripX == null) return null;
- const alignWorldX = gauntletCrownRunwayFinishAlignMapWorldXPlay();
- if (alignWorldX != null) {
- return finishLineStripX - alignWorldX;
- }
- const stopVp = gauntletCrownRunwayFinishStopViewportFracPlay();
- const targetScrollView = finishLineStripX - stopVp * g.cwWorld;
- const zGaRaw = computePlayCameraZDrawPlay();
- const gCam = getGauntletCrownHeistGroupCameraCenterPxPlay(tileSize, canvas.width, canvas.height, zGaRaw);
- if (!gCam) return null;
- const worldMinX = gCam.px - canvas.width / (2 * zGaRaw);
- return targetScrollView - worldMinX;
- }
-
- /** จัด scroll ให้จุดอ้างอิงใน FINISH ตรงคอลัมน์แผนที่ (หรือ finishStopViewportFrac บนจอ) */
- function gauntletCrownRunwaySnapScrollToFinishStopPlay() {
- const t = gauntletCrownRunwayFinishStopScrollPxPlay();
- if (t == null) return;
- gauntletCrownRunwayBgScrollPx = t;
- }
-
- /** ลำดับการหยุดที่เส้นชัย: ล็อก align (ครั้งเดียว) → เริ่มเฟสเดินค่อยๆ เข้าเส้นชัย (ไม่ snap กระพริบ)
- tick จะเดินทุกคนมาที่เส้นจนครบแล้วค่อยเข้า freeze→จบเกม */
- function gauntletCrownRunwayBeginFinishStopPlay() {
- gauntletCrownRunwayBeginWalkToFinishPlay();
- try { draw(); } catch (_d) { /* ignore */ }
- }
-
- /** โหมดจอเท่านั้น: กล้องเลื่อนหลัง freeze ทำให้ FINISH หลุด — รีสแนปทุกเฟรม */
- function gauntletCrownRunwayMaintainFinishScrollPlay() {
- if (!gauntletCrownRunwayBgStripFreezeSinceMs && !gauntletCrownRunwayBgFinishLatched) return;
- if (!gauntletCrownRunwayBgDrawActivePlay()) return;
- if (gauntletCrownRunwayFinishAlignMapWorldXPlay() != null) return;
- gauntletCrownRunwaySnapScrollToFinishStopPlay();
- }
-
- function resetGauntletCrownRunwaySpawnScrollSnap() {
- gauntletCrownRunwaySpawnScrollSnapped = false;
- }
-
- /**
- * จัด gauntletCrownRunwayBgScrollPx ครั้งแรกให้คอลัมน์เกิด (ซ้ายสุด) ตรง ~runwaySpawnAlignFrac ของความกว้างแถบ START (w0)
- * ในแมป: gauntletCrownRunwayBg.runwaySpawnAlignFrac 0.02–0.95 (ค่าเริ่ม 0.32)
- * Anchor: คอลัมน์ซ้ายสุดระหว่างช่องเกิดในแมปกับตำแหน่งจริงของทุกคนในรอบ (รวม me + บอทพรีวิว) — ถ้า me ถูก resolve ไปคอลัมน์ซ้ายกว่า min ของช่องวาด แต่ runway ยึดแค่ช่องวาด จะเห็นตัวลอยซ้ายของพรมแดง
- * Use min(editor spawn column, floor of every alive entity x) so runway START art stays tied to where characters actually stand.
- */
- function trySnapGauntletCrownRunwayScrollToSpawnsPlay() {
- if (gauntletCrownRunwaySpawnScrollSnapped) return;
- if (!gauntletCrownRunwayBgMapEligiblePlay() || gauntletCrownRunwayBgOff || !mapData) return;
- if (!gauntletCrownRunwayBgImagesReadyPlay()) return;
- const h = mapData.height || 15;
- const ts = mapData.tileSize || 32;
- const mapHpx = Math.max(1, Math.round(h * ts));
- const { w0 } = gauntletCrownRunwayBgStripWidthsAtCh(mapHpx);
- if (!(w0 > 0)) return;
- const slots = collectGauntletSpawnSlotsPlay(mapData);
- let minTX = Infinity;
- if (slots.length) minTX = Math.min(...slots.map((s) => s.x));
- if (Number.isFinite(me.x)) minTX = Math.min(minTX, Math.floor(me.x));
- others.forEach((o, id) => {
- if (!o || o.gauntletEliminated) return;
- if (Number.isFinite(o.x)) minTX = Math.min(minTX, Math.floor(o.x));
- });
- if (!Number.isFinite(minTX) || minTX === Infinity) minTX = 1;
- const anchorWorldX = (Math.max(0, minTX) + 0.5) * ts;
- const raw = mapData.gauntletCrownRunwayBg && typeof mapData.gauntletCrownRunwayBg === 'object' ? mapData.gauntletCrownRunwayBg : {};
- const frac = Math.max(0.02, Math.min(0.95, Number(raw.runwaySpawnAlignFrac) || 0.32));
- gauntletCrownRunwayBgScrollPx = frac * w0 - anchorWorldX;
- /* G1: เก็บ base (ค่า snap นี้ — เท่ากันทุกเครื่อง) + anchor เวลาเริ่ม (server epoch) → scroll คำนวณจากเวลา server */
- gauntletCrownRunwayBaseScrollPx = gauntletCrownRunwayBgScrollPx;
- /* anchor = liveStartMs จาก server (gauntlet-sync) — authoritative เดียวกันทุกเครื่อง + สดเสมอ
- (เดิมใช้ playMissionLiveBeginsAt ที่ค้างจากเกมก่อน → scroll กระโดด/host-client ไม่ตรง)
- fallback: liveBeginsAt ถ้าสด ไม่งั้น serverNow() */
- if (gauntletCrownRunwayServerLiveStartMs > 0) {
- gauntletCrownRunwayLiveAnchorServerMs = gauntletCrownRunwayServerLiveStartMs;
- } else {
- const _lba = (typeof playMissionLiveBeginsAt !== 'undefined') ? Number(playMissionLiveBeginsAt) : 0;
- const _nowS = serverNow();
- const _el = _nowS - _lba;
- gauntletCrownRunwayLiveAnchorServerMs = (_lba > 0 && _el >= -2000 && _el < 10000) ? _lba : _nowS;
- }
- gauntletCrownRunwaySpawnScrollSnapped = true;
- }
-
- function reloadGauntletCrownRunwayBgFromMap() {
- gauntletCrownRunwayBgImgs = [null, null, null, null, null];
- gauntletCrownRunwayBgScrollPx = 0;
- gauntletCrownRunwayLiveAnchorServerMs = 0; /* G1: รีเซ็ต anchor รอบใหม่ */
- gauntletCrownRunwayServerLiveStartMs = 0;
- gauntletCrownRunwayBaseScrollPx = 0;
- gauntletCrownRunwayBgFinishLatched = false;
- gauntletFinishPhaseSignaled = false;
- gauntletCrownRunwayWalkActive = false;
- gauntletCrownRunwayWalkStartMs = 0;
- gauntletCrownRunwayBgStripFreezeSinceMs = 0;
- gauntletCrownRunwayFinishAlignLatchedWorldX = null;
- gauntletCrownRunwayClientMissionShown = false;
- lastGauntletCrownRunwayBgTickMs = 0;
- resetGauntletCrownRunwaySpawnScrollSnap();
- if (!gauntletCrownRunwayBgMapEligiblePlay()) return;
- const raw = mapData.gauntletCrownRunwayBg && typeof mapData.gauntletCrownRunwayBg === 'object' ? mapData.gauntletCrownRunwayBg : {};
- gauntletCrownRunwayBgOff = raw.enabled === false;
- gauntletCrownRunwayBgSpeedPxPerSec = Math.max(8, Math.min(400, Math.floor(Number(raw.speedPxPerSec)) || 48));
- if (gauntletCrownRunwayBgOff) return;
- const srcs = [
- (typeof raw.startImage === 'string' && raw.startImage.length) ? raw.startImage : GAUNTLET_CROWN_RUNWAY_BG_DEFAULT_START,
- (typeof raw.loopImage2 === 'string' && raw.loopImage2.length) ? raw.loopImage2 : GAUNTLET_CROWN_RUNWAY_BG_DEFAULT_LOOP2,
- (typeof raw.loopImage3 === 'string' && raw.loopImage3.length) ? raw.loopImage3 : GAUNTLET_CROWN_RUNWAY_BG_DEFAULT_LOOP3,
- (typeof raw.loopImage4 === 'string' && raw.loopImage4.length) ? raw.loopImage4 : GAUNTLET_CROWN_RUNWAY_BG_DEFAULT_LOOP4,
- (typeof raw.finishImage === 'string' && raw.finishImage.length) ? raw.finishImage : GAUNTLET_CROWN_RUNWAY_BG_DEFAULT_FINISH,
- ];
- let pending = 5;
- const bump = () => {
- pending--;
- if (pending <= 0) {
- ensureGauntletCrownRunwayBgPlaceholdersPlay();
- try { draw(); } catch (e) { /* ignore */ }
- }
- };
- for (let i = 0; i < 5; i++) {
- const im = new Image();
- const idx = i;
- im.onload = () => {
- gauntletCrownRunwayBgImgs[idx] = im;
- bump();
- };
- im.onerror = () => { bump(); };
- im.src = srcs[i];
- }
- }
-
- /** ทุกคนจริง (me + others ที่ไม่ใช่บอทเติม) ตกขอบหมด = จบเกมเป็น gameover ทันที (ไม่ต้องรอเดินเข้าเส้นชัย)
- บอทเติม (__lobby_bot_N) ไม่นับ — server ตัดสิน all_dead จาก space.peers (คนจริงเท่านั้น) เหมือนกัน
- เดิมนับบอทด้วยเมื่อ playBotsEnabled()=true (ห้องจริงเปิดเสมอ) → บอทไม่ตายเลย = เช็คนี้ไม่ทริกเกอร์เลย */
- function gauntletCrownAllEntitiesEliminatedPlay() {
- let total = 0, elim = 0;
- if (Number.isFinite(me.x) || Number.isFinite(me.y)) { total++; if (me.gauntletEliminated) elim++; }
- others.forEach((o, id) => {
- if (!o) return;
- if (isPreviewBotId(id)) return;
- total++; if (o.gauntletEliminated) elim++;
- });
- return total >= 1 && elim === total;
- }
-
- function tickGauntletCrownRunwayBgPlay(dtSec) {
- if (!gauntletCrownRunwayBgDrawActivePlay()) return;
- /* หยุดเลื่อน BG ระหว่างคำถามพิเศษ (special-quiz freeze) — กัน BG/เส้นชัยเดินตอนค้างตอบ */
- if (specialQuizFreeze) return;
- /** พรีรัน (howto / countdown) — ห้ามเลื่อนก่อน GO · Mega Virus ใช้ shell เดียวกัน */
- if (usesCrownLobbyShellPlay() && gauntletCrownPregamePhase !== 'live') return;
- /* ทุกคนตกขอบหมด → เข้า flow gameover ทันที (ไม่รอ scroll เดินเข้าเส้นชัย) — server ก็จบเกม all_dead พร้อมกัน */
- if (playBotsEnabled() && gauntletCrownRunwayBgMapEligiblePlay()
- && !gauntletCrownRunwayClientMissionShown && gauntletCrownAllEntitiesEliminatedPlay()) {
- gauntletCrownRunwayClientMissionShown = true;
- gauntletCrownRunwayWalkActive = false;
- const mg2AllDeadMission = gauntletCrownHeistBuildLocalCrownMissionPlay();
- beginSimpleResultFlashThenGcmPlay(mg2AllDeadMission, 'result-gameover.png');
- try { draw(); } catch (_d) { /* ignore */ }
- return;
- }
- if (gauntletCrownRunwayBgFinishLatched) { gauntletSnapLivingToFinishPlay(); return; }
-
- /* เฟส "เดินเข้าเส้นชัย" — ค่อยๆ เดินทุกคนมาที่เส้นแทน snap กระพริบ แล้วค่อยเข้า freeze→จบ */
- if (gauntletCrownRunwayWalkActive) {
- const forceDone = (Date.now() - gauntletCrownRunwayWalkStartMs) >= GAUNTLET_FINISH_WALK_MAX_MS;
- const arrived = gauntletWalkLivingToFinishStepPlay(dtSec);
- if (arrived || forceDone) {
- gauntletCrownRunwayWalkActive = false;
- gauntletSnapLivingToFinishPlay(); /* จัดเป๊ะที่เส้นชัยครั้งเดียว */
- gauntletCrownRunwayBgStripFreezeSinceMs = Date.now();
- }
- try { syncGauntletCrownJumpButton(); } catch (_sj) { /* ignore */ }
- try { draw(); } catch (_d) { /* ignore */ }
- return;
- }
-
- if (gauntletCrownRunwayBgStripFreezeSinceMs > 0) {
- gauntletCrownRunwayMaintainFinishScrollPlay();
- gauntletSnapLivingToFinishPlay(); /* ตรึงทุกคนที่ยังไม่ตายไว้ที่เส้นชัยทุกเฟรม กันบอทไหลหลุด */
- if (Date.now() - gauntletCrownRunwayBgStripFreezeSinceMs >= GAUNTLET_CROWN_RUNWAY_POST_STOP_MS) {
- gauntletCrownRunwayBgFinishLatched = true;
- gauntletCrownRunwayBgStripFreezeSinceMs = 0;
- if (playBotsEnabled() && gauntletCrownRunwayBgMapEligiblePlay() && !gauntletCrownRunwayClientMissionShown) {
- gauntletCrownRunwayClientMissionShown = true;
- window.setTimeout(function () {
- try {
- gauntletCrownPregamePhase = null;
- gauntletCrownHowtoVisible = false;
- const hto = document.getElementById('gauntlet-crown-howto-overlay');
- if (hto) hto.classList.add('is-hidden');
- const gcc = document.getElementById('gauntlet-crown-countdown');
- if (gcc) gcc.classList.add('is-hidden');
- if (gauntletCrownCountdownTimer) {
- clearTimeout(gauntletCrownCountdownTimer);
- gauntletCrownCountdownTimer = null;
- }
- /* ตามกฎใหม่: เข้าเส้นชัย/รอด ≥1 คน (ไม่ถูกดันตกขอบ) = result-complete · ตายหมด = result-gameover (ไม่มี timeup) */
- const mg2LocalMission = gauntletCrownHeistBuildLocalCrownMissionPlay();
- const mg2LocalWin = missionSurvivorsPlay(mg2LocalMission) >= 1 || missionAnyScorePlay(mg2LocalMission);
- beginSimpleResultFlashThenGcmPlay(mg2LocalMission, mg2LocalWin ? 'result-complete.png' : 'result-gameover.png');
- } catch (_e) { /* ignore */ }
- try {
- draw();
- } catch (_e2) { /* ignore */ }
- }, 340);
- }
- }
- return;
- }
-
- if (gauntletCrownRunwayBgMapEligiblePlay() && gauntletCrownRunwayScrollStripStopZoneReachedPlay()) {
- gauntletCrownRunwayBeginWalkToFinishPlay(); /* เริ่มเดินค่อยๆ เข้าเส้นชัย (แทน snap+freeze ทันที) */
- try {
- draw();
- } catch (_d) { /* ignore */ }
- return;
- }
- /* G1: scroll = base + speed × (serverNow − anchor) → ทุกเครื่องเลื่อนตรงกัน ไม่ขึ้น resolution/frame-rate/host
- (เดิม scrollPx += speed×dt นับ local จากเวลาเริ่มของตัวเอง → เลื่อนไม่ตรงกัน + host หลุด/resize เพี้ยน)
- fallback เป็นนับ local ถ้ายังไม่มี anchor (กันค้าง) */
- const gcrSpeed = gauntletCrownRunwayBgSpeedPxPerSec || 48;
- let gcrTarget;
- if (gauntletCrownRunwayLiveAnchorServerMs > 0) {
- gcrTarget = gauntletCrownRunwayBaseScrollPx + gcrSpeed * Math.max(0, (serverNow() - gauntletCrownRunwayLiveAnchorServerMs)) / 1000;
- } else {
- gcrTarget = gauntletCrownRunwayBgScrollPx + gcrSpeed * dtSec;
- }
- /* ถ้า "จะถึง/เลย" จุดหยุด FINISH → หยุดเป๊ะตรงนั้น แล้วเริ่มจบเกมทันที */
- const gcrLiveStopPx = gauntletCrownRunwayFinishStopScrollPxPlay();
- if (gauntletCrownRunwayBgMapEligiblePlay() && gcrLiveStopPx != null
- && gcrLiveStopPx >= gauntletCrownRunwayBgScrollPx - 0.01
- && gcrTarget >= gcrLiveStopPx) {
- gauntletCrownRunwayBgScrollPx = gcrLiveStopPx;
- gauntletCrownRunwayBeginFinishStopPlay();
- return;
- }
- /* monotonic — เลื่อนหน้าเท่านั้น (กัน clock jitter ดึงถอย) */
- if (gcrTarget > gauntletCrownRunwayBgScrollPx) gauntletCrownRunwayBgScrollPx = gcrTarget;
- }
-
- /** stack + แมป mnn93hpi — พื้นหลัง intro+loop เลื่อนแนวตั้ง (stackTowerBgScroll ในแมป) */
- const STACK_TOWER_SCROLL_BG_DEFAULT_INTRO = BASE + '/img/editor-bg-mnn93hpi/intro.png';
- const STACK_TOWER_SCROLL_BG_DEFAULT_LOOP = BASE + '/img/editor-bg-mnn93hpi/loop.png';
- let stackTowerScrollBgIntroImg = null;
- let stackTowerScrollBgLoopImg = null;
- let stackTowerScrollBgPx = 0;
- let stackTowerScrollBgSpeedPxPerSec = 40;
- let stackTowerScrollBgOff = false;
- let stackTowerScrollBgFlowDown = false;
- /** Sraw = px+boost+post ครั้งแรกที่คำนวณ world offset — ใช้หา delta แบบคาบ loop (อย่าใช้ fold(Sraw) ลบตรงๆ จะดันโลกขึ้นหลายร้อย px) */
- let stackTowerScrollBgSrawWorldBaselinePlay = null;
- /** ความสูงวาดของไทล์ loop (พิกเซลจอ) — ใช้ขั้นเลื่อนเมื่อ stepScrollPx = 0 */
- let stackTowerScrollBgLoopDrawHPlay = 0;
- /** { from, to, t0, dur } — เลื่อนแถบ BG เป็นขั้นตามจำนวนชั้น */
- let stackTowerBgScrollStepAnimPlay = null;
- let stackTowerBgScrollPendingStepDeltaPlay = 0;
-
- function stackTowerScrollBgMapEligible() {
- return !!(mapData && mapData.gameType === 'stack' && (currentPlayMapId() || '').trim() === STACK_TOWER_MISSION_MAP_ID);
- }
-
- function stackTowerScrollBgImagesReady() {
- if (!stackTowerScrollBgMapEligible()) return false;
- const a = stackTowerScrollBgIntroImg;
- const b = stackTowerScrollBgLoopImg;
- return !!(a && a.complete && a.naturalWidth && b && b.complete && b.naturalWidth);
- }
-
- /** แถบ intro+loop เต็มจอ — เปิดเฉพาะเมื่อแมปตั้ง
stackTowerBgScroll.enabled: true และรูปโหลดครบ (ไม่โหลด strip เมื่อปิด → ใช้รูปแผนที่ backgroundImage) */
- function stackTowerScrollBgDrawActive() {
- return stackTowerScrollBgImagesReady() && !stackTowerScrollBgOff;
- }
-
- function reloadStackTowerScrollBgFromMap() {
- stackTowerScrollBgIntroImg = null;
- stackTowerScrollBgLoopImg = null;
- stackTowerScrollBgPx = 0;
- stackTowerScrollBgSrawWorldBaselinePlay = null;
- stackTowerScrollBgLoopDrawHPlay = 0;
- stackTowerBgScrollStepAnimPlay = null;
- stackTowerBgScrollPendingStepDeltaPlay = 0;
- if (!stackTowerScrollBgMapEligible()) return;
- const raw = mapData.stackTowerBgScroll && typeof mapData.stackTowerBgScroll === 'object' ? mapData.stackTowerBgScroll : {};
- stackTowerScrollBgOff = raw.enabled !== true;
- {
- const spNum = Number(raw.speedPxPerSec);
- stackTowerScrollBgSpeedPxPerSec = Number.isFinite(spNum)
- ? Math.max(0, Math.min(400, Math.floor(spNum)))
- : 0;
- }
- /* คีย์เวิร์ด down/top = ตัวเลือก "บน→ล่าง" ในเอดิเตอร์ — ใช้สูตรเลื่อนแบบ stripTop−S (ฉากไหลขึ้น) ไม่ใช่ S+chR−… (ไหลลง) เพราะผู้เล่นคาดว่าหอสูง = มองขึ้น */
- const dirRaw = String(raw.scrollDirection || raw.direction || 'down').toLowerCase();
- const rawIsDownKeyword = (dirRaw === 'down' || dirRaw === 'top' || dirRaw === 'toptobottom');
- stackTowerScrollBgFlowDown = !rawIsDownKeyword;
- if (stackTowerScrollBgOff) return;
- const introSrc = (typeof raw.introImage === 'string' && raw.introImage.length) ? raw.introImage : STACK_TOWER_SCROLL_BG_DEFAULT_INTRO;
- const loopSrc = (typeof raw.loopImage === 'string' && raw.loopImage.length) ? raw.loopImage : STACK_TOWER_SCROLL_BG_DEFAULT_LOOP;
- let pending = 2;
- const bump = () => {
- pending--;
- if (pending <= 0) {
- const intro0 = stackTowerScrollBgIntroImg;
- const loop0 = stackTowerScrollBgLoopImg;
- if (loop0 && loop0.complete && intro0 && intro0.complete && canvas && canvas.width) {
- const cwR0 = Math.max(1, Math.round(canvas.width));
- stackTowerScrollBgLoopDrawHPlay = Math.max(1, Math.round(loop0.naturalHeight * (cwR0 / loop0.naturalWidth)));
- }
- stackTowerScrollBgSyncInitialScrollToBottom();
- try { draw(); } catch (e) { /* ignore */ }
- }
- };
- const im1 = new Image();
- im1.onload = () => { stackTowerScrollBgIntroImg = im1; bump(); };
- im1.onerror = () => { bump(); };
- im1.src = introSrc;
- const im2 = new Image();
- im2.onload = () => { stackTowerScrollBgLoopImg = im2; bump(); };
- im2.onerror = () => { bump(); };
- im2.src = loopSrc;
- }
-
- function stackTowerScrollBgSyncInitialScrollToBottom() {
- const intro = stackTowerScrollBgIntroImg;
- if (!canvas || !intro || !intro.complete || !intro.naturalWidth) return;
- const cwR = Math.max(1, Math.round(canvas.width));
- const chR = Math.max(1, Math.round(canvas.height));
- const drawHIntro = Math.round(intro.naturalHeight * (cwR / intro.naturalWidth));
- if (stackTowerScrollBgFlowDown) {
- stackTowerScrollBgPx = 0;
- } else {
- /* ขอบล่าง intro ชิดขอบล่างแคนวาส — คู่กับ stripTop−S */
- stackTowerScrollBgPx = drawHIntro - chR;
- }
- }
-
- /**
- * พับค่าเลื่อนแนวตั้ง S (หน่วยเดียวกับ drawStackTowerScrollBgFullCanvas) เข้าช่วงหนึ่งคาบของ loop
- * เมื่อ vp0 ≥ drawHIntro — รูปบนจอซ้ำทุก drawHLoop; พับค่า S ก่อนส่งเข้า worldToScreen กัน px โตไม่จำกัดดันโลกหลุดจอ
- */
- function foldStackTowerScrollStripViewSForPhase(S, drawHIntro, drawHLoop) {
- const dH = Math.max(1, Math.round(Number(drawHLoop) || 1));
- const dI = Math.max(0, Math.round(Number(drawHIntro) || 0));
- const s = Number(S) || 0;
- if (s < dI) return s;
- return s - Math.floor((s - dI) / dH) * dH;
- }
-
- /**
- * offset แนวตั้งจอให้โลกซิงก์กับ draw ที่ใช้ S = fold(Sraw) — ใช้ความต่างเฟส fold(Sraw)−fold(Sraw0)
- * เวลาเลื่อนครบคาบ loop ค่า fold วนกลับ → offset ไม่โตไม่จำกัด · ห้ามคืน fold(Sraw) ล้วนเมื่อ Sraw0 ยังอยู่ intro (baseline ไม่เข้า loop ทำให้สูตร f0+mod ไม่ทำงานและเฟสหลุด)
- */
- function stackTowerScrollWorldTotalYFromStripPlay(Sraw, drawHIntro, drawHLoop, Sraw0) {
- if (Sraw0 == null) return 0;
- const dH = Math.max(1, Math.round(Number(drawHLoop) || 1));
- const dI = Math.max(0, Math.round(Number(drawHIntro) || 0));
- const s = Number(Sraw) || 0;
- const s0 = Number(Sraw0) || 0;
- const fs = foldStackTowerScrollStripViewSForPhase(s, dI, dH);
- const fs0 = foldStackTowerScrollStripViewSForPhase(s0, dI, dH);
- return fs - fs0;
- }
-
- /** zDrawPan ส่งต่อเพื่อคูณ boost กับ z — ไม่ scale แคนวาสทั้งแผง (เคย scale รอบกลางทำให้จอบางส่วนว่างเมื่อ z ≠ zRef) */
- function drawStackTowerScrollBgFullCanvas(cw, ch, zDrawPan) {
- const intro = stackTowerScrollBgIntroImg;
- const loop = stackTowerScrollBgLoopImg;
- if (!intro || !intro.complete || !loop || !loop.complete) return;
- const zPan = Number(zDrawPan) > 0 ? zDrawPan : zoom;
- const cwR = Math.max(1, Math.round(cw));
- const chR = Math.max(1, Math.round(ch));
- const scaleI = cwR / intro.naturalWidth;
- const drawHIntro = Math.round(intro.naturalHeight * scaleI);
- const scaleL = cwR / loop.naturalWidth;
- const drawHLoop = Math.max(1, Math.round(loop.naturalHeight * scaleL));
- const camFollowScreen = isStackTowerMissionUiMapPlay() ? getStackTowerBgScrollHeightBoostPx() * zPan : 0;
- const post50Scroll = isStackTowerMissionUiMapPlay() ? getStackTowerPost50BgScrollExtraPxPlay(chR) : 0;
- const Sraw = stackTowerScrollBgPx + camFollowScreen + post50Scroll;
- const S = foldStackTowerScrollStripViewSForPhase(Sraw, drawHIntro, drawHLoop);
- const vp0 = S;
- const vp1 = S + chR;
- const yLimit = vp1 + drawHLoop * 96;
- const flowDown = stackTowerScrollBgFlowDown;
-
- function stripTopToDestY(stripTop, drawH) {
- if (!flowDown) return stripTop - S;
- return S + chR - (stripTop + drawH);
- }
-
- ctx.save();
- ctx.imageSmoothingEnabled = false;
- ctx.beginPath();
- ctx.rect(0, 0, cwR, chR);
- ctx.clip();
-
- if (vp0 < 0) {
- let k = 1;
- if (vp0 < -drawHLoop * 4) {
- k = Math.max(1, Math.floor(-vp0 / drawHLoop) - 2);
- }
- for (; k < 50000; k++) {
- const y0 = -k * drawHLoop;
- if (y0 >= vp1 + drawHLoop) break;
- if (y0 + drawHLoop <= vp0) continue;
- const dy = Math.round(stripTopToDestY(y0, drawHLoop));
- ctx.drawImage(loop, 0, 0, loop.naturalWidth, loop.naturalHeight, 0, dy, cwR, drawHLoop);
- }
- }
-
- if (drawHIntro > vp0 && vp1 > 0) {
- const dy = Math.round(stripTopToDestY(0, drawHIntro));
- ctx.drawImage(intro, 0, 0, intro.naturalWidth, intro.naturalHeight, 0, dy, cwR, drawHIntro);
- }
-
- let y = drawHIntro;
- if (y < yLimit && vp1 > drawHIntro) {
- if (vp0 > drawHIntro) {
- const n = Math.floor((vp0 - drawHIntro) / drawHLoop);
- /* ใช้ n ไม่ใช่ n−1 — เดิมทำให้แถบ loop เริ่มสูงกว่า vp0 หนึ่งความสูง จอล่างว่างดำเมื่อ S ใหญ่ */
- y = drawHIntro + n * drawHLoop;
- }
- while (y < yLimit) {
- const dy = Math.round(stripTopToDestY(y, drawHLoop));
- ctx.drawImage(loop, 0, 0, loop.naturalWidth, loop.naturalHeight, 0, dy, cwR, drawHLoop);
- y += drawHLoop;
- }
- }
- ctx.restore();
- }
-
- /** กล้องมองเหนือขอบบนแมป (worldMinY<0) + ใช้รูปแผนที่ — ยัด loop ท้องฟ้าเติมครึ่งบนจอ */
- function drawStackTowerLoopSkyFillAboveMap(ctx, worldMinY, zDraw, cw, ch) {
- if (!isStackTowerMissionUiMapPlay() || worldMinY >= 0) return;
- const loop = stackTowerScrollBgLoopImg;
- if (!loop || !loop.complete || !loop.naturalWidth) return;
- const cwR = Math.max(1, Math.round(cw));
- const chR = Math.max(1, Math.round(ch));
- const scaleL = cwR / loop.naturalWidth;
- const drawHLoop = Math.max(1, Math.round(loop.naturalHeight * scaleL));
- const skyScreenH = Math.min(chR, Math.ceil(-worldMinY * zDraw) + 4);
- const stripPx = stackTowerScrollBgOff ? 0 : stackTowerScrollBgPx;
- const rawScroll = stripPx + getStackTowerBgScrollHeightBoostPx() * zDraw
- + getStackTowerPost50BgScrollExtraPxPlay(chR);
- const scroll = ((rawScroll % drawHLoop) + drawHLoop) % drawHLoop;
- let y = -scroll;
- ctx.save();
- ctx.imageSmoothingEnabled = false;
- while (y < skyScreenH + drawHLoop) {
- if (y + drawHLoop > 0) {
- ctx.drawImage(loop, 0, 0, loop.naturalWidth, loop.naturalHeight, 0, y, cwR, drawHLoop);
- }
- y += drawHLoop;
- }
- ctx.restore();
- }
-
- function tickStackTowerBgScrollStepAnimPlay() {
- const q = stackTowerBgScrollStepAnimPlay;
- if (!q) return;
- const t = Math.min(1, (performance.now() - q.t0) / Math.max(1, q.dur));
- const e = 1 - Math.pow(1 - t, 3);
- stackTowerScrollBgPx = q.from + (q.to - q.from) * e;
- if (t >= 1) {
- stackTowerScrollBgPx = q.to;
- stackTowerBgScrollStepAnimPlay = null;
- stackTowerScrollBgSrawWorldBaselinePlay = null;
- if (stackTowerBgScrollPendingStepDeltaPlay !== 0) {
- const d = stackTowerBgScrollPendingStepDeltaPlay;
- stackTowerBgScrollPendingStepDeltaPlay = 0;
- startStackTowerBgScrollStepAnimPlay(d);
- }
- }
- }
-
- function getStackTowerBgScrollStepEveryLayersPlay() {
- const raw = mapData && mapData.stackTowerBgScroll;
- if (!raw || typeof raw !== 'object') return 0;
- const n = Math.floor(Number(raw.stepEveryLayers));
- return Number.isFinite(n) && n > 0 ? Math.min(200, n) : 0;
- }
-
- function getStackTowerBgScrollStepAnimMsPlay() {
- const raw = mapData && mapData.stackTowerBgScroll;
- if (!raw || typeof raw !== 'object') return 520;
- const t = Math.floor(Number(raw.stepAnimMs));
- return Number.isFinite(t) ? Math.max(120, Math.min(4000, t)) : 520;
- }
-
- function getStackTowerBgScrollStepScrollPxPlay() {
- const raw = mapData && mapData.stackTowerBgScroll;
- if (!raw || typeof raw !== 'object') return 0;
- const d = Math.floor(Number(raw.stepScrollPx));
- return Number.isFinite(d) ? Math.max(0, Math.min(8000, d)) : 0;
- }
-
- function startStackTowerBgScrollStepAnimPlay(deltaPx) {
- if (!stackTowerScrollBgDrawActive() || !deltaPx) return;
- if (stackTowerBgScrollStepAnimPlay) {
- stackTowerBgScrollPendingStepDeltaPlay += deltaPx;
- return;
- }
- const dur = getStackTowerBgScrollStepAnimMsPlay();
- stackTowerBgScrollStepAnimPlay = {
- from: stackTowerScrollBgPx,
- to: stackTowerScrollBgPx + deltaPx,
- t0: performance.now(),
- dur,
- };
- }
-
- function maybeQueueStackTowerBgScrollStepPlay(layerCountAfter) {
- if (!stackTowerScrollBgDrawActive()) return;
- const every = getStackTowerBgScrollStepEveryLayersPlay();
- if (every <= 0 || layerCountAfter <= 0 || layerCountAfter % every !== 0) return;
- let delta = getStackTowerBgScrollStepScrollPxPlay();
- if (!delta) delta = Math.max(8, stackTowerScrollBgLoopDrawHPlay || 200);
- delta = Math.min(8000, Math.max(8, delta));
- startStackTowerBgScrollStepAnimPlay(delta);
- }
-
- function getStackTowerStripReleaseGapWorldPxPlay() {
- const raw = mapData && mapData.stackTowerBgScroll;
- if (!isStackTowerMissionUiMapPlay() || !raw || typeof raw !== 'object') return null;
- const g = Number(raw.releaseGapWorldPx);
- if (!Number.isFinite(g) || g < 0) return null;
- return Math.min(800, g);
- }
-
- function updateStackTowerSwingYForStripGapPlay() {
- if (!stackMini || !isStackTowerMissionUiMapPlay()) return;
- const gap = getStackTowerStripReleaseGapWorldPxPlay();
- if (gap == null) return;
- const m = stackMini;
- const lh = m.layerWorldH || Math.max(14, tileSize * 0.3);
- const nLay = m.layers ? m.layers.length : 0;
- const topBlockTopY = m.floorWorldY - nLay * lh;
- const swingLift = getStackTowerSwingLiftWorldPx(nLay, lh);
- m.swingWorldY = topBlockTopY - gap + swingLift;
- }
-
- function tickStackTowerScrollBg(dtSec) {
- if (!stackTowerScrollBgMapEligible() || stackTowerScrollBgOff) return;
- if (!stackTowerScrollBgImagesReady()) return;
- tickStackTowerBgScrollStepAnimPlay();
- if (stackTowerBgScrollStepAnimPlay) return;
- const spd = Math.max(0, Number(stackTowerScrollBgSpeedPxPerSec) || 0) * dtSec;
- if (spd <= 0) return;
- /* !flowDown (stripTop−S): S เพิ่ม → dy ลด → ฉากไหลขึ้น — ห้ามใช้ −= (จะลด S แล้วศิลป์ไหลลง) */
- stackTowerScrollBgPx += spd;
- }
-
- /**
- * ค่าลบจาก screen Y ใน worldToScreen — ซิงก์กับ drawStackTowerScrollBgFullCanvas (auto + boost + post-50)
- * แถบ BG วาด 1:1 กับแคนวาส — ห้ามใช้ fold(Sraw) เป็นค่าลบตรงๆ (จะดันโลกขึ้นหลายร้อย px เหมือนครึ่งล่างจอว่าง)
- */
- function getStackTowerWorldLayerScrollScreenOffsetYPlay(zPan) {
- if (!isStackTowerMissionUiMapPlay() || !stackMini) return 0;
- const zPn = Number(zPan) > 0 ? zPan : zoom;
- const chPx = Math.max(1, Math.round(canvas && canvas.height ? canvas.height : 720));
- const boostScreen = getStackTowerBgScrollHeightBoostPx() * zPn;
- const post50Screen = getStackTowerPost50BgScrollExtraPxPlay(chPx);
- const intro = stackTowerScrollBgIntroImg;
- const loop = stackTowerScrollBgLoopImg;
- let totalScreen = boostScreen + post50Screen;
- if (stackTowerScrollBgDrawActive() && intro && intro.complete && intro.naturalWidth
- && loop && loop.complete && loop.naturalWidth && canvas && canvas.width) {
- const cwR = Math.max(1, Math.round(canvas.width));
- const drawHIntro = Math.round(intro.naturalHeight * (cwR / intro.naturalWidth));
- const drawHLoop = Math.max(1, Math.round(loop.naturalHeight * (cwR / loop.naturalWidth)));
- const SrawDraw = stackTowerScrollBgPx + boostScreen + post50Screen;
- if (stackTowerScrollBgSrawWorldBaselinePlay == null) stackTowerScrollBgSrawWorldBaselinePlay = SrawDraw;
- const S0 = stackTowerScrollBgSrawWorldBaselinePlay;
- let stripY;
- if (stackTowerScrollBgFlowDown) {
- const Sview = foldStackTowerScrollStripViewSForPhase(SrawDraw, drawHIntro, drawHLoop);
- stripY = (boostScreen + post50Screen) * 2 - Sview;
- } else {
- stripY = stackTowerScrollWorldTotalYFromStripPlay(SrawDraw, drawHIntro, drawHLoop, S0);
- }
- totalScreen = stripY;
- } else if (stackTowerScrollBgDrawActive()) {
- const px = stackTowerScrollBgFlowDown ? -stackTowerScrollBgPx : stackTowerScrollBgPx;
- totalScreen = px + boostScreen + post50Screen;
- }
- return totalScreen;
- }
-
- /** โหลดจาก mapData.gridImageLibrary — ดัชนีตรงกับ gridImageCells[y][x] */
- let mapGridImageImgs = [];
- let mapGridImageHeldImgs = [];
- let me = { x: 1, y: 1, direction: 'down', nickname: nick, isWalking: false, playTint: null, gauntletScore: 0, gauntletEliminated: false, tx: null, ty: null, quizCarryHeld: null, gauntletCrownPenaltyFxUntil: 0 };
- const others = new Map();
- /** ===== MG3 terminal log (เกมจริง) — hacking-terminal ตามสเปก #mg3-terminal-log ===== */
- let mg3TermLog = [];
- let mg3TermLineNo = 0;
- const MG3_TERM_MAX = 240;
- function mg3TermPush(lines) {
- const arr = Array.isArray(lines) ? lines : [lines];
- for (let i = 0; i < arr.length; i++) mg3TermLog.push(String(arr[i] == null ? '' : arr[i]));
- while (mg3TermLog.length > MG3_TERM_MAX) mg3TermLog.shift();
- }
- function mg3TermReset() { mg3TermLog = []; mg3TermLineNo = 0; }
- function mg3TermBoot() {
- mg3TermLog = []; mg3TermLineNo = 0;
- mg3TermPush([
- '[INIT] Booting decryption sequence...',
- '[SYS] Locating target server...',
- '[SYS] Connection established. Status: SECURE.',
- '[HACK] Bypassing "Vault Lockdown" protocol...',
- '[HACK] Disabling Cyber Security Check...',
- '[LOAD] Injecting Decryption_Core.exe...',
- '[READY] Awaiting manual code block alignment...',
- '>>> STACKING SEQUENCE START <<<',
- ]);
- }
- function mg3TermOnPlace(perfect, progressPct) {
- mg3TermLineNo += 1;
- const n = mg3TermLineNo;
- if (n >= 100 || (Number.isFinite(Number(progressPct)) && Number(progressPct) >= 99.5)) {
- mg3TermPush([
- '>>> Compile Line [100]: SUCCESS. Maximum stack reached.',
- '[DATA]: Decryption progress: 100%. Master key generated.',
- '[HACK]: "Vault Lockdown" bypassed. Firewall disabled.',
- '[SYS]: Evidence files unlocked. Initiating secure download...',
- '>>> MISSION ACCOMPLISHED. Disconnecting safely. <<<',
- ]);
- } else if (perfect) {
- mg3TermPush('>>> Compile Line [' + n + ']: PERFECT. Synergy bonus!');
- } else {
- mg3TermPush('>>> Compile Line [' + n + ']: SUCCESS. Stack stable.');
- }
- }
- function mg3TermOnMiss(attemptsRemaining) {
- if (attemptsRemaining <= 0) {
- mg3TermPush([
- '[CRITICAL]: Packet loss detected. Compile FAILED. (Attempts remaining: 0)',
- '[ALERT]: Cyber Security Check triggered! Intruder traced.',
- '[SYS]: Initiating "Vault Lockdown" protocol...',
- '>>> FATAL ERROR: Connection Terminated. SYSTEM LOCKED. <<<',
- ]);
- } else {
- mg3TermPush('[WARNING]: Packet loss detected. Compile FAILED. (Attempts remaining: ' + attemptsRemaining + '/3)');
- }
- }
-
- /** Stack preview HUD: เทอร์มินัลล็อก (cyber UI) */
- const STACK_PREVIEW_HUD_LOG_MAX = 8;
- let stackPreviewHudLog = [];
- function stackPreviewPushHudLog(line) {
- if (!playBotsEnabled()) return;
- stackPreviewHudLog.push(String(line || '').slice(0, 96));
- while (stackPreviewHudLog.length > STACK_PREVIEW_HUD_LOG_MAX) stackPreviewHudLog.shift();
- }
- function stackPreviewLogStackDrop(hit, actor) {
- if (!playBotsEnabled() || !hit) return;
- const bid = actor && actor.botId;
- let nm = 'NODE';
- if (actor && actor.human) nm = (me.nickname || 'YOU').toUpperCase().replace(/\s+/g, '_').slice(0, 12);
- else if (bid && others.get(bid)) nm = String(others.get(bid).nickname || 'BOT').toUpperCase().replace(/\s+/g, '_').slice(0, 12);
- if (hit.miss) stackPreviewPushHudLog(`>>> ${nm}: SECTOR_MISS`);
- else if (hit.perfect) stackPreviewPushHudLog(`>>> ${nm}: PERFECT +${hit.pts} SYN`);
- else stackPreviewPushHudLog(`>>> ${nm}: LOCK +${hit.pts}`);
- }
- const keys = {};
- const characterImages = {};
- /** data URL จาก canvas compose สี — กันยิง toDataURL ทุกเฟรมตอน sync HUD */
- const cyberHudScoreAvatarUrlCache = new Map();
- const CYBER_HUD_AV_URL_CACHE_CAP = 56;
- function createDefaultAvatarImg() {
- const c = document.createElement('canvas');
- c.width = 64; c.height = 64;
- const ctx = c.getContext('2d');
- ctx.fillStyle = '#7aa2f7';
- ctx.beginPath();
- ctx.arc(32, 22, 14, 0, Math.PI * 2);
- ctx.fill();
- ctx.fillStyle = '#9ece6a';
- ctx.beginPath();
- ctx.arc(32, 48, 18, 0, Math.PI * 2);
- ctx.fill();
- ctx.fillStyle = '#1a1b26';
- ctx.beginPath();
- ctx.arc(28, 20, 3, 0, Math.PI * 2);
- ctx.arc(36, 20, 3, 0, Math.PI * 2);
- ctx.fill();
- const img = new Image();
- img.src = c.toDataURL('image/png');
- return img;
- }
- const defaultAvatarImg = createDefaultAvatarImg();
- const characterAnimations = {};
- const characterIdleAnimations = {};
- const CHARACTER_ANIM_FRAMES = 4;
- const CHARACTER_ANIM_FRAME_MS = 200;
-
- /** จังหวะเดินลูปคงที่ 4 เฟรม — อย่า modulo ด้วยจำนวนเฟรมที่โหลดได้แล้ว (ไม่งั้นเฟรมกลางหาย/ลูปสั้นลง) */
- /** true เมื่ออยู่ในเกมวิ่งหลบ (gauntlet runner) ช่วงเล่นจริง — ใช้เร่งจังหวะขาให้ดูเหมือน "วิ่ง" */
- function gauntletRunnerAnimActivePlay() {
- try {
- return isGauntletCrownHeistMapPlay() && gauntletCrownPregamePhase === 'live' && gauntletCrownRunwayAvatarRunAllowedPlay();
- } catch (e) { return false; }
- }
-
- function walkAnimPhaseIndex(now, isWalking) {
- if (!isWalking) return 0;
- const t = (typeof now === 'number' ? now : Date.now());
- /* gauntlet วิ่งหลบ: เร่งจังหวะขาให้ "วิ่ง" — 0.40 (80ms/เฟรม) เร็วสุดที่ยังลื่น ไม่กระตุก
- (sprite มีแค่ 4 เฟรม ถ้าเร็วกว่านี้ เช่น 0.27 เฟรมจะสลับถี่เกินจนดูสั่น/กระตุก) */
- const frameMs = gauntletRunnerAnimActivePlay() ? CHARACTER_ANIM_FRAME_MS * 0.40 : CHARACTER_ANIM_FRAME_MS;
- return Math.floor(t / frameMs) % CHARACTER_ANIM_FRAMES;
- }
-
- /** เลือกเฟรมสูงสุดที่โหลดแล้วและ <= phase (เดิมถอย) */
- function pickLoadedWalkFrameIndex(anim, phase) {
- if (!anim || !anim.frames || !anim.frames.length) return -1;
- const maxK = Math.min(phase, anim.frames.length - 1, CHARACTER_ANIM_FRAMES - 1);
- for (let k = maxK; k >= 0; k--) {
- const f = anim.frames[k];
- if (f && f.complete && f.naturalWidth) return k;
- }
- return -1;
- }
-
- /** ตัวละครอัปโหลดจากระบบมักเป็น char- + ตัวเลข (อาจมี suffix) — ไม่มี idle strip / idle layer ครบทุกทิศ */
- function isUploadedCharAssetId(id) {
- if (!id) return false;
- const s = String(id).trim();
- return /^char-\d/i.test(s);
- }
-
- function useMultiFrameIdleSpriteSheets(id) {
- if (!id) return true;
- return !isUploadedCharAssetId(id);
- }
-
- function ensureCharacterIdleAnim(id, dir) {
- const d = dir || 'down';
- /* char-* ไม่มี *_idle_0.png — ใช้ strip เดิน dir_0..3 เป็น idle ต่อทิศ (มีลูป) แทนรูปเดียวที่มักไม่มี */
- if (!useMultiFrameIdleSpriteSheets(id)) {
- const key = String(id) + '_' + d + '_idle';
- let anim = characterIdleAnimations[key];
- if (!anim) {
- anim = { frames: [], fallback: null };
- characterIdleAnimations[key] = anim;
- const enc = encodeURIComponent(id);
- for (let i = 0; i < CHARACTER_ANIM_FRAMES; i++) {
- const img = new Image();
- img.src = BASE + '/img/characters/' + enc + '_' + d + '_' + i + '.png';
- anim.frames.push(img);
- }
- const fb = new Image();
- fb.src = BASE + '/img/characters/' + enc + '_' + d + '_idle.png';
- anim.fallback = fb;
- }
- return anim;
- }
- const key = id + '_' + d + '_idle';
- let anim = characterIdleAnimations[key];
- if (!anim) {
- anim = { frames: [], fallback: null };
- characterIdleAnimations[key] = anim;
- const enc = encodeURIComponent(id);
- for (let i = 0; i < CHARACTER_ANIM_FRAMES; i++) {
- const img = new Image();
- img.src = BASE + '/img/characters/' + enc + '_' + d + '_idle_' + i + '.png';
- anim.frames.push(img);
- }
- const fb = new Image();
- fb.src = BASE + '/img/characters/' + enc + '_' + d + '_idle.png';
- anim.fallback = fb;
- }
- return anim;
- }
-
- /** ลูป idle ขณะยืน — ใช้จังหวะเวลาเหมือนเดิน (CHARACTER_ANIM_FRAME_MS) */
- function idleAnimPhaseIndex(now) {
- const t = typeof now === 'number' ? now : Date.now();
- return Math.floor(t / CHARACTER_ANIM_FRAME_MS) % CHARACTER_ANIM_FRAMES;
- }
-
- function characterIdleSpritesVisible(id, dir) {
- if (!id) return false;
- const anim = ensureCharacterIdleAnim(id, dir || 'down');
- if (anim.fallback && anim.fallback.complete && anim.fallback.naturalWidth) return true;
- for (let i = 0; i < anim.frames.length; i++) {
- const f = anim.frames[i];
- if (f && f.complete && f.naturalWidth) return true;
- }
- return false;
- }
-
- /** สุ่มสีตามเลเยอร์เดียวกับ character.html: bodyColor / hairColor / headColor (ลำดับซ้อนเหมือน composeLayeredFrame) */
- const PLAY_LAYER_ORDER = ['shadow', 'bodyColor', 'bodyStroke', 'headColor', 'headStroke', 'hairColor', 'hairStroke', 'face'];
- const PLAY_LAYER_TINT_KEY = { bodyColor: 'body', headColor: 'head', hairColor: 'hair' };
- const PLAY_TINT_HEAD = ['#eaa78a', '#fbd5c4', '#fae9e1'];
- const PLAY_TINT_HAIR = ['#d72520', '#ef8508', '#efe237', '#5bb443', '#2585cb', '#3f4ead', '#b53fd6', '#fec1fe'];
- const PLAY_TINT_BODY = ['#d72520', '#ef8508', '#efe237', '#5bb443', '#2585cb', '#3f4ead', '#b53fd6', '#fec1fe'];
- const playLayerMode = {};
- /** คิว probe ครบ up/down/left/right แล้ว — กันทิศที่ไม่มีไฟล์ layer ไปตก fallback แถบทั้งทั้งที่ทิศอื่นมี */
- const playLayerAllDirsQueued = {};
- /** จาก GET /api/characters — hasLayerFiles สแกนจากชื่อไฟล์จริง (แม่นกว่า probe จาก
อย่างเดียว) */
- let playCharLayerApi = { status: 'idle', map: null };
- /** id → Set เลเยอร์ที่มีไฟล์จริง (จาก GET /api/characters) — กันยิง URL เลเยอร์ที่ไม่เคยอัปโหลด → 404 รกคอนโซล */
- const playCharDiskLayersById = Object.create(null);
-
- function ensurePlayCharLayerListFetch() {
- if (playCharLayerApi.status !== 'idle') return;
- playCharLayerApi.status = 'loading';
- fetch(BASE + '/api/characters')
- .then((r) => r.json())
- .then((list) => {
- const map = Object.create(null);
- playCharacterIdRoster = [];
- if (Array.isArray(list)) {
- list.forEach((c) => {
- if (!c || !c.id) return;
- playCharacterIdRoster.push(String(c.id));
- map[c.id] = !!c.hasLayerFiles;
- if (Array.isArray(c.layers) && c.layers.length) {
- const st = new Set();
- c.layers.forEach((n) => {
- if (typeof n === 'string' && n.length) st.add(n);
- });
- if (st.size) playCharDiskLayersById[c.id] = st;
- else delete playCharDiskLayersById[c.id];
- } else {
- delete playCharDiskLayersById[c.id];
- }
- });
- }
- playCharLayerApi = { status: 'done', map };
- })
- .catch(() => {
- playCharacterIdRoster = [];
- playCharLayerApi = { status: 'done', map: Object.create(null) };
- });
- }
-
- /** @returns {boolean|null} true/false จาก API, null = ยังไม่โหลดหรือไม่มีรายการ id นี้ */
- function playCharLayerFromApi(characterId) {
- if (playCharLayerApi.status !== 'done' || !characterId) return null;
- if (Object.prototype.hasOwnProperty.call(playCharLayerApi.map, characterId)) {
- return playCharLayerApi.map[characterId];
- }
- return null;
- }
-
- /** ถ้าเซิร์ฟเวอร์ส่งรายชื่อเลเยอร์ที่มีบนดิสก์ — ไม่โหลดเลเยอร์อื่น (ลด 404) */
- function playCharDiskLayersSet(characterId) {
- if (!characterId || playCharLayerApi.status !== 'done') return null;
- const s = playCharDiskLayersById[characterId];
- return s && s.size ? s : null;
- }
-
- const playLayerImageCache = new Map();
- const playLayerCompositeCache = new Map();
- function pickRandomPlayTint() {
- return {
- head: PLAY_TINT_HEAD[Math.floor(Math.random() * PLAY_TINT_HEAD.length)],
- hair: PLAY_TINT_HAIR[Math.floor(Math.random() * PLAY_TINT_HAIR.length)],
- body: PLAY_TINT_BODY[Math.floor(Math.random() * PLAY_TINT_BODY.length)],
- };
- }
-
- /** FNV-1a 32-bit — แยกดัชนี head/hair/body ได้กระจายกว่า hash*31 เดิม (กันบอท __pv_bot_N สีซ้ำ) */
- function hashStringFnv1a32(str) {
- let h = 2166136261 >>> 0;
- const s = String(str || '');
- for (let i = 0; i < s.length; i++) {
- h ^= s.charCodeAt(i);
- h = Math.imul(h, 16777619) >>> 0;
- }
- return h >>> 0;
- }
-
- function playTintFromPeerId(id) {
- const s = String(id || 'x');
- const h0 = hashStringFnv1a32(s);
- const h1 = hashStringFnv1a32(s + '\n1hair');
- const h2 = hashStringFnv1a32(s + '\n2body');
- return {
- head: PLAY_TINT_HEAD[h0 % PLAY_TINT_HEAD.length],
- hair: PLAY_TINT_HAIR[h1 % PLAY_TINT_HAIR.length],
- body: PLAY_TINT_BODY[h2 % PLAY_TINT_BODY.length],
- };
- }
-
- const LOBBY_PLAYER_TINT_KEY = 'justiceLobbyPlayerTint';
- /** ธีมสี 8 ช่อง — ตรง room-lobby / customize */
- const PLAY_LOBBY_THEME_HEX = [
- '#d72520', '#ef8508', '#efe237', '#5bb443',
- '#2585cb', '#3f4ead', '#b53fd6', '#fec1fe',
- ];
- const PLAY_LOBBY_SKIN_HEX = ['#eaa78a', '#fbd5c4', '#fae9e1'];
- let playLobbyBotThemes = [];
-
- function parsePlayLobbyThemeIndex(n) {
- const v = Math.floor(Number(n));
- return (v >= 1 && v <= 8) ? v : null;
- }
-
- function parsePlayLobbySkinIndex(n) {
- const v = Math.floor(Number(n));
- return (v >= 1 && v <= 3) ? v : null;
- }
-
- function playTintFromLobbyThemeIndices(themeIndex, skinIndex) {
- const ti = parsePlayLobbyThemeIndex(themeIndex);
- const si = parsePlayLobbySkinIndex(skinIndex);
- const bodyHex = ti ? PLAY_LOBBY_THEME_HEX[ti - 1] : '';
- const headHex = si ? PLAY_LOBBY_SKIN_HEX[si - 1] : '';
- if (!bodyHex && !headHex) return null;
- return playTintFromLobbyRgb(bodyHex || null, headHex || null);
- }
-
- function playTintFromJoinPeer(peerRow) {
- if (!peerRow) return null;
- return playTintFromLobbyThemeIndices(peerRow.lobbyColorThemeIndex, peerRow.lobbySkinToneIndex);
- }
-
- function playTintForPreviewBotId(peerId) {
- if (!isPreviewBotId(peerId)) return null;
- const idx = parseInt(String(peerId).slice(PREVIEW_BOT_PREFIX.length), 10);
- if (!Number.isFinite(idx) || idx < 0) return null;
- /* ใช้ธีมจาก server (กันสีซ้ำอยู่แล้ว) — ถ้าไม่มี ตกไปธีมแบบ "กระจายตามดัชนี" (ไม่สุ่ม hash ที่ซ้ำได้)
- กัน bot สีเดียวกัน: bot N → ธีม ((N % 8)+1), สกิน ((N % 3)+1) */
- /* 1) สีที่ lobby บันทึกไว้ (ให้ตรงกับ lobby เป๊ะ) — ไม่เขียนทับ */
- try {
- const savedMap = JSON.parse(sessionStorage.getItem(lobbyBotTintsStorageKeyPlay()) || '{}');
- const saved = savedMap['__lobby_bot_' + idx];
- if (saved && (saved.colorTheme || saved.colorSkin)) {
- const st = playTintFromLobbyRgb(saved.colorTheme, saved.colorSkin);
- if (st) return st;
- }
- } catch (e) { /* ignore */ }
- /* 2) ไม่มีค่าจาก lobby → ใช้ธีม server / กระจายตามดัชนี แล้วบันทึกไว้ */
- const slot = playLobbyBotThemes[idx] || { themeIndex: (idx % 8) + 1, skinToneIndex: (idx % 3) + 1 };
- const tint = playTintFromLobbyThemeIndices(slot.themeIndex, slot.skinToneIndex);
- if (!tint) return null;
- try {
- const map = JSON.parse(sessionStorage.getItem(lobbyBotTintsStorageKeyPlay()) || '{}');
- map['__lobby_bot_' + idx] = {
- colorTheme: PLAY_LOBBY_THEME_HEX[parsePlayLobbyThemeIndex(slot.themeIndex) - 1] || '',
- colorSkin: PLAY_LOBBY_SKIN_HEX[parsePlayLobbySkinIndex(slot.skinToneIndex) - 1] || '',
- };
- sessionStorage.setItem(lobbyBotTintsStorageKeyPlay(), JSON.stringify(map));
- } catch (e) { /* ignore */ }
- return tint;
- }
-
- function lobbyBotTintsStorageKeyPlay() {
- const sp = (typeof spaceId === 'string' && spaceId) ? spaceId : (new URLSearchParams(window.location.search).get('space') || 'default');
- return 'justiceLobbyBotTints:' + sp;
- }
-
- function rgbCssToHexPlay(rgb) {
- if (!rgb) return '';
- const s = String(rgb).trim();
- if (s.charAt(0) === '#') return s;
- const m = s.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/i);
- if (!m) return '';
- return '#' + [m[1], m[2], m[3]].map((n) => {
- const v = Math.max(0, Math.min(255, parseInt(n, 10)));
- return v.toString(16).padStart(2, '0');
- }).join('');
- }
-
- function playTintFromLobbyRgb(themeRgb, skinRgb) {
- const bodyHex = rgbCssToHexPlay(themeRgb);
- const headHex = rgbCssToHexPlay(skinRgb);
- if (!headHex && !bodyHex) return null;
- return {
- head: headHex || '#fbd5c4',
- hair: bodyHex || '#fb4941',
- body: bodyHex || '#fb4941',
- };
- }
-
- function loadPlayTintFromLobbyPlayerStorage() {
- try {
- const raw = localStorage.getItem(LOBBY_PLAYER_TINT_KEY);
- if (raw) {
- const j = JSON.parse(raw);
- if (j && typeof j === 'object') {
- if (j.head && j.body) {
- return {
- head: String(j.head),
- hair: String(j.hair || j.body),
- body: String(j.body),
- };
- }
- const fromJson = playTintFromLobbyRgb(j.themeRgb, j.skinRgb);
- if (fromJson) return fromJson;
- }
- }
- } catch (e) { /* ignore */ }
- try {
- const theme = localStorage.getItem('lobbyThemeColor') || '';
- const skin = localStorage.getItem('lobbySkinTone') || '';
- return playTintFromLobbyRgb(theme, skin);
- } catch (e2) {
- return null;
- }
- }
-
- /** แปลง hex/rgb → {r,g,b} (กันค่าเพี้ยน) */
- function hexOrRgbToRgbPlay(v) {
- const s0 = String(v || '').trim();
- const m = s0.match(/rgba?\(\s*(\d+)\D+(\d+)\D+(\d+)/i);
- if (m) return { r: +m[1], g: +m[2], b: +m[3] };
- let s = s0.replace('#', '');
- if (s.length === 3) s = s[0] + s[0] + s[1] + s[1] + s[2] + s[2];
- if (!/^[0-9a-fA-F]{6}$/.test(s)) return null;
- const n = parseInt(s, 16);
- return { r: (n >> 16) & 255, g: (n >> 8) & 255, b: n & 255 };
- }
- function nearestIndexFromHexPlay(value, palette) {
- const asIdx = Math.floor(Number(value));
- if (asIdx >= 1 && asIdx <= palette.length) return asIdx; /* เก็บเป็น index อยู่แล้ว */
- const t = hexOrRgbToRgbPlay(value);
- if (!t) return null;
- let best = -1; let bestD = Infinity;
- for (let i = 0; i < palette.length; i++) {
- const c = hexOrRgbToRgbPlay(palette[i]);
- if (!c) continue;
- const d = (c.r - t.r) * (c.r - t.r) + (c.g - t.g) * (c.g - t.g) + (c.b - t.b) * (c.b - t.b);
- if (d < bestD) { bestD = d; best = i; }
- }
- return best >= 0 ? best + 1 : null;
- }
- /** theme/skin index ที่ผู้เล่นเลือกไว้ (จาก localStorage) — ส่งให้ server เพื่อกันบอทใช้สีเดียวกับเรา */
- function getMyChosenLobbyColorIndicesPlay() {
- let body = '';
- let skin = '';
- try {
- const raw = localStorage.getItem(LOBBY_PLAYER_TINT_KEY);
- if (raw) { const j = JSON.parse(raw); if (j) { body = j.body || j.themeRgb || ''; skin = j.skinRgb || j.skin || ''; } }
- } catch (e) { /* ignore */ }
- try {
- if (!body) body = localStorage.getItem('lobbyThemeColor') || '';
- if (!skin) skin = localStorage.getItem('lobbySkinTone') || '';
- } catch (e2) { /* ignore */ }
- return {
- themeIndex: nearestIndexFromHexPlay(body, PLAY_LOBBY_THEME_HEX),
- skinIndex: nearestIndexFromHexPlay(skin, PLAY_LOBBY_SKIN_HEX),
- };
- }
-
- function loadPlayTintForBotPeerId(peerId) {
- const sid = String(peerId || '');
- let botKey = sid;
- if (sid.indexOf(PREVIEW_BOT_PREFIX) === 0) {
- botKey = '__lobby_bot_' + sid.slice(PREVIEW_BOT_PREFIX.length);
- }
- try {
- const raw = sessionStorage.getItem(lobbyBotTintsStorageKeyPlay());
- if (!raw) return null;
- const map = JSON.parse(raw);
- const saved = map && map[botKey];
- if (!saved) return null;
- return playTintFromLobbyRgb(saved.colorTheme, saved.colorSkin);
- } catch (e) {
- return null;
- }
- }
-
- /** สีจากล็อบบี้ (ผู้เล่น + บอท) — fallback hash ตาม peer id */
- function resolvePlayTintForPeer(peerId, peerRow) {
- const sid = String(peerId || '');
- /* ตัวเราเอง: ยึด "สีที่เลือกไว้" (localStorage) ก่อนทุกอย่าง — กัน peerRow/theme-index จาก server มาทับ (สีกระพริบ) */
- if (myId != null && sid === String(myId)) {
- const meChosen = loadPlayTintFromLobbyPlayerStorage();
- if (meChosen) return meChosen;
- }
- const fromRow = peerRow ? playTintFromJoinPeer(peerRow) : null;
- if (fromRow) return fromRow;
- const previewTint = playTintForPreviewBotId(sid);
- if (previewTint) return previewTint;
- if (myId != null && sid === String(myId)) {
- const meTint = loadPlayTintFromLobbyPlayerStorage();
- if (meTint) return meTint;
- }
- if ((sid === '__me' || sid === '__local_me') && me && me.playTint) return me.playTint;
- const botTint = loadPlayTintForBotPeerId(sid);
- if (botTint) return botTint;
- return playTintFromPeerId(sid);
- }
-
- function applyPlayTintFromLobbyIndices(peerId, themeIndex, skinIndex) {
- const sid = peerId != null ? String(peerId) : '';
- /* server-assigned theme index (อาจถูก reassign ตอนเลือกสีชนกัน) — เก็บไว้ใช้ลงสี "block MG3" ให้ตรงกันทุกจอ
- (เดิม self ใช้สีจาก localStorage แต่ others ใช้ index จาก server → block สีไม่ตรง 2 จอ) */
- const tiNum = parsePlayLobbyThemeIndex(themeIndex);
- if (myId != null && sid === String(myId)) {
- if (tiNum) me.lobbyThemeIndexSrv = tiNum;
- /* ตัวเราเอง: ใช้ "สีจาก server index" (authoritative) เป็นหลัก — ให้สีเรา "ตรงกันทุกจอ" + block MG3 ตรงกับ avatar
- เดิม override ด้วย localStorage → จอเราเห็นสีที่เลือก แต่จออื่น+block MG3 ใช้ server index = ไม่ตรง
- (เคส server reassign สีตอนเลือกชนกัน → server index คือสีจริง ต้องยึดอันนี้) */
- const tintMe = (tiNum) ? playTintFromLobbyThemeIndices(themeIndex, skinIndex) : null;
- if (tintMe) { me.playTint = tintMe; return; }
- const meChosen = loadPlayTintFromLobbyPlayerStorage();
- if (meChosen) me.playTint = meChosen;
- return;
- }
- const oEarly = others.get(peerId) || others.get(sid);
- if (oEarly && tiNum) oEarly.lobbyThemeIndexSrv = tiNum;
- const tint = playTintFromLobbyThemeIndices(themeIndex, skinIndex);
- if (!tint) return;
- const o = others.get(peerId) || others.get(sid);
- if (o) o.playTint = tint;
- if (isPreviewBotId(sid)) playTintForPreviewBotId(sid);
- }
-
- function applyPlayLobbyTintSync(data) {
- if (!data || typeof data !== 'object') return;
- if (Array.isArray(data.lobbyBotThemes)) playLobbyBotThemes = data.lobbyBotThemes;
- if (Array.isArray(data.peers)) {
- data.peers.forEach(function (p) {
- if (!p || p.id == null) return;
- applyPlayTintFromLobbyIndices(p.id, p.lobbyColorThemeIndex, p.lobbySkinToneIndex);
- });
- }
- if (playBotsEnabled()) rebalancePreviewBots();
- try {
- preloadPlayOccupantsTints();
- preloadPlayLobbyIdleAvatarsForOccupants();
- } catch (e) { /* ignore */ }
- }
-
- /** วินิจฉัยสีในเกม: รันใน console บนแต่ละเครื่อง → เทียบสีที่ render ของทุกตัว */
- window.__colorDebug = function () {
- var rows = [];
- rows.push({ who: '*ME*', id: String(myId == null ? '' : myId).slice(0, 6), renderTint: JSON.stringify(me && me.playTint) });
- others.forEach(function (o, id) {
- rows.push({ who: isPreviewBotId(id) ? 'BOT' : 'peer', id: String(id).slice(0, 10), name: o.nickname || '', renderTint: JSON.stringify(o.playTint) });
- });
- try { console.table(rows); } catch (e) { console.log(JSON.stringify(rows, null, 2)); }
- var lsTheme = '?'; var lsTint = '?';
- try { lsTheme = localStorage.getItem('lobbyThemeColor'); lsTint = localStorage.getItem(LOBBY_PLAYER_TINT_KEY); } catch (e) { /* ignore */ }
- console.log('[color-dbg/game] myId=' + myId + ' playLobbyBotThemes=' + JSON.stringify(playLobbyBotThemes) +
- ' LS.lobbyThemeColor=' + lsTheme + ' LS.PLAYER_TINT=' + lsTint);
- return rows;
- };
-
- function getPlayTintForMissionAvatar(peerId) {
- const sid = peerId != null ? String(peerId) : '';
- if (myId != null && sid === String(myId)) {
- return me.playTint || resolvePlayTintForPeer(sid);
- }
- const o = others.get(peerId) || others.get(sid);
- if (o && o.playTint) return o.playTint;
- return resolvePlayTintForPeer(sid);
- }
-
- /** สรุปภารกิจ — ผู้เล่นจริงต้องอยู่ใน top N เสมอ */
- function missionEnsureHumanInTopRanked(rows, maxN) {
- const cap = Math.max(1, maxN || 5);
- if (!Array.isArray(rows) || !rows.length) return [];
- const humanId = myId != null ? String(myId) : null;
- const humanRow = humanId
- ? rows.find((r) => r && r.id != null && String(r.id) === humanId)
- : rows.find((r) => r && r.isLocalHuman);
- let top = rows.slice(0, cap);
- if (!humanRow) return top;
- const hid = humanRow.id != null ? String(humanRow.id) : '';
- if (top.some((r) => r && r.id != null && String(r.id) === hid)) return top;
- if (top.length >= cap) top = top.slice(0, cap - 1);
- top.push(humanRow);
- return top;
- }
-
- function hexToRgb01(hex) {
- const h = (hex || '').replace('#', '').trim();
- if (h.length !== 6) return [1, 1, 1];
- return [
- parseInt(h.slice(0, 2), 16) / 255,
- parseInt(h.slice(2, 4), 16) / 255,
- parseInt(h.slice(4, 6), 16) / 255,
- ];
- }
-
- function tintPlayLayerImageData(imageData, tintHex) {
- const rgb = hexToRgb01(tintHex);
- const tr = rgb[0], tg = rgb[1], tb = rgb[2];
- const d = imageData.data;
- for (let i = 0; i < d.length; i += 4) {
- if (d[i + 3] < 12) continue;
- const r = d[i], g = d[i + 1], b = d[i + 2];
- const L = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
- d[i] = Math.min(255, Math.round(tr * 255 * L));
- d[i + 1] = Math.min(255, Math.round(tg * 255 * L));
- d[i + 2] = Math.min(255, Math.round(tb * 255 * L));
- }
- }
-
- function drawPlayTintedLayer(ctx, w, h, img, tintHex) {
- if (!tintHex) {
- ctx.drawImage(img, 0, 0, w, h);
- return;
- }
- const c = document.createElement('canvas');
- c.width = w;
- c.height = h;
- const x = c.getContext('2d');
- x.drawImage(img, 0, 0, w, h);
- try {
- const idata = x.getImageData(0, 0, w, h);
- tintPlayLayerImageData(idata, tintHex);
- x.putImageData(idata, 0, 0);
- } catch (e) {
- x.clearRect(0, 0, w, h);
- x.drawImage(img, 0, 0, w, h);
- }
- ctx.drawImage(c, 0, 0, w, h);
- }
-
- function ensurePlayLayerImage(url) {
- let img = playLayerImageCache.get(url);
- if (!img) {
- img = new Image();
- img.src = url;
- playLayerImageCache.set(url, img);
- }
- return img;
- }
-
- /** อุ่น cache เลเยอร์สีของตัวละคร (ทุกทิศ + เดิน 0-3 + idle) ก่อนเข้าเกม กันกระตุกตอนโหลดสีกลางเกม
- * ยิงเฉพาะ layer ที่ "มีจริง" (อ่านจาก manifest/disk set) เพื่อกัน 404 รัว — รอ manifest พร้อมก่อน */
- const _playPreloadedChars = new Set();
- const _playPreloadedTintKeys = new Set();
- function preloadPlayCharacterLayers(charId, _tries) {
- if (!charId || _playPreloadedChars.has(charId)) return;
- try { ensurePlayCharLayerListFetch(); } catch (e) { /* ignore */ }
- try { ensurePlayLayerProbesAllDirections(charId); } catch (e) { /* ignore */ }
- const diskSet = playCharDiskLayersSet(charId);
- if (!diskSet) {
- // manifest ยังไม่พร้อม — ลองใหม่อีกครู่ (กันยิง layer ที่ไม่มี = 404)
- // เครื่องช้า/เปิดหลายหน้าต่าง manifest มาช้า >3.6วิ → เดิมยอมแพ้ 8 ครั้ง = char ไม่ warm (avatar ก้อนเขียวค้าง)
- // ขยายเป็น ~15วิ (30×500ms) ให้เครื่องช้าโหลด avatar สำเร็จ
- const t = _tries || 0;
- if (t < 30) setTimeout(function () { preloadPlayCharacterLayers(charId, t + 1); }, 500);
- return;
- }
- _playPreloadedChars.add(charId);
- const dirs = ['down', 'up', 'left', 'right'];
- const warm = function (urls) { if (urls && urls.length) ensurePlayLayerImage(urls[0]); };
- dirs.forEach(function (dir) {
- PLAY_LAYER_ORDER.forEach(function (ln) {
- if (ln !== 'shadow' && !diskSet.has(ln)) return; // ข้าม layer ที่ไม่มีไฟล์
- if (ln === 'face' && dir === 'up' && isUploadedCharAssetId(charId)) return; // up ไม่มี face
- for (let fi = 0; fi < CHARACTER_ANIM_FRAMES; fi++) {
- warm(ln === 'shadow' ? shadowUrlCandidates(charId, dir, fi) : layerUrlCandidates(charId, dir, ln, fi));
- }
- warm(ln === 'shadow' ? shadowUrlCandidatesIdle(charId, dir, 0) : layerUrlCandidatesIdle(charId, dir, ln, 0));
- });
- });
- }
-
- /** อุ่น canvas ย้อมสี (head/hair/body) ต่อตัวละคร+สี */
- function preloadPlayTintForAvatar(charId, tint) {
- if (!charId || !tint || typeof tint.head !== 'string') return;
- const key = [charId, tint.head, tint.hair, tint.body].join('|');
- if (_playPreloadedTintKeys.has(key)) return;
- _playPreloadedTintKeys.add(key);
- preloadPlayCharacterLayers(charId);
- const dirs = ['down', 'up', 'left', 'right'];
- const now = Date.now();
- dirs.forEach(function (dir) {
- const rawWalk = getCharacterFrame(charId, dir, now, true);
- const rawIdle = getCharacterFrame(charId, dir, now, false);
- if (rawWalk) getPlayTintedAvatarSource(rawWalk, charId, dir, now, true, tint);
- if (rawIdle) getPlayTintedAvatarSource(rawIdle, charId, dir, now + 400, false, tint);
- });
- }
-
- function preloadPlayOccupantsTints() {
- const meCid = me.characterId || getPlayCharacterId();
- if (meCid) {
- preloadPlayTintForAvatar(meCid, me.playTint || resolvePlayTintForPeer(String((myId != null && myId !== '') ? myId : (nick || 'local'))));
- }
- others.forEach(function (o, id) {
- if (!o || !o.characterId) return;
- preloadPlayTintForAvatar(o.characterId, o.playTint || resolvePlayTintForPeer(id));
- });
- }
-
- /** ลำดับลอง URL: เฟรมปัจจุบันแบบ multi → เฟรม 0 → แบบ single (ไม่มี _0_) เพื่อกันชื่อไฟล์ไม่ตรงกับที่เซิร์ฟเวอร์เขียน */
- function layerUrlCandidates(id, dir, layerName, frameIndex) {
- const enc = encodeURIComponent(id);
- const base = BASE + '/img/characters/' + enc + '_' + dir;
- const out = [];
- function add(u) {
- if (out.indexOf(u) === -1) out.push(u);
- }
- add(base + '_' + frameIndex + '_layer_' + layerName + '.png');
- if (frameIndex !== 0) add(base + '_0_layer_' + layerName + '.png');
- add(base + '_layer_' + layerName + '.png');
- return out;
- }
-
- /** เลเยอร์ idle: id_
_idle__layer_.png หรือ id__idle_layer_.png */
- function layerUrlCandidatesIdle(id, dir, layerName, frameIndex) {
- const enc = encodeURIComponent(id);
- const base = BASE + '/img/characters/' + enc + '_' + dir + '_idle';
- const out = [];
- function add(u) {
- if (out.indexOf(u) === -1) out.push(u);
- }
- // idle เฟรมเดียว — ชื่อจริงของ char-* คือ *_idle_layer_*.png (ไม่มี frame index) ลองตัวนี้ก่อนกัน 404 รัว
- add(base + '_layer_' + layerName + '.png');
- add(base + '_' + frameIndex + '_layer_' + layerName + '.png');
- if (frameIndex !== 0) add(base + '_0_layer_' + layerName + '.png');
- return out;
- }
-
- function shadowUrlCandidates(id, dir, frameIndex) {
- const c = layerUrlCandidates(id, dir, 'shadow', frameIndex);
- const def = BASE + '/img/default-shadow-' + dir + '.png';
- if (c.indexOf(def) === -1) c.push(def);
- return c;
- }
-
- function shadowUrlCandidatesIdle(id, dir, frameIndex) {
- const c = layerUrlCandidatesIdle(id, dir, 'shadow', frameIndex);
- const def = BASE + '/img/default-shadow-' + dir + '.png';
- if (c.indexOf(def) === -1) c.push(def);
- return c;
- }
-
- /** ลองทีละ URL — อย่า set src พร้อมกันหลายรูป (เดิมทำให้ legacy `id_dir_layer_x` โดน 404 ทุกเลเยอร์ทุกทิศทั้งที่มีแค่ `id_dir_0_layer_x`) */
- function resolvePlayLayerImage(urls) {
- for (let i = 0; i < urls.length; i++) {
- const img = ensurePlayLayerImage(urls[i]);
- if (!img.complete) return { status: 'pending' };
- if (img.naturalWidth > 0) return { status: 'ok', img };
- }
- return { status: 'missing' };
- }
-
- function ensurePlayLayerProbesAllDirections(characterId) {
- if (!characterId || playLayerAllDirsQueued[characterId]) return;
- playLayerAllDirsQueued[characterId] = true;
- ['up', 'down', 'left', 'right'].forEach((d) => ensurePlayLayerProbe(characterId, d));
- }
-
- function playCharAnyDirectionLayered(characterId) {
- if (!characterId) return false;
- return ['up', 'down', 'left', 'right'].some((d) => playLayerMode[characterId + '|' + d] === 'layered');
- }
-
- /** รอเฉพาะตอนยังไม่เจอ layered เลย — ถ้ามีทิศหนึ่ง layered แล้ว ไม่ต้องรอทิศอื่น */
- function playCharLayerDiscoveryPending(characterId) {
- if (!characterId) return true;
- const api = playCharLayerFromApi(characterId);
- if (api === true || api === false) return false;
- if (playCharAnyDirectionLayered(characterId)) return false;
- return ['up', 'down', 'left', 'right'].some((d) => {
- const m = playLayerMode[characterId + '|' + d];
- return m === undefined || m === 'pending';
- });
- }
-
- function ensurePlayLayerProbe(characterId, dir) {
- const key = characterId + '|' + dir;
- if (playLayerMode[key] !== undefined && playLayerMode[key] !== 'pending') return;
- if (playLayerMode[key] === 'pending') return;
- playLayerMode[key] = 'pending';
- const cands = layerUrlCandidates(characterId, dir, 'bodyColor', 0);
- let ci = 0;
- function tryNextProbe() {
- if (playLayerMode[key] !== 'pending') return;
- if (ci >= cands.length) {
- playLayerMode[key] = 'none';
- return;
- }
- const url = cands[ci++];
- const img = ensurePlayLayerImage(url);
- const fin = () => {
- if (playLayerMode[key] !== 'pending') return;
- if (img.naturalWidth > 0) {
- playLayerMode[key] = 'layered';
- return;
- }
- tryNextProbe();
- };
- img.onload = fin;
- img.onerror = fin;
- if (img.complete) fin();
- }
- tryNextProbe();
- }
-
- function getCharacterAnimFrameIndex(id, dir, now, isWalking) {
- if (!id) return 0;
- const key = id + '_' + dir;
- const anim = characterAnimations[key];
- if (!anim) return 0;
- const phase = walkAnimPhaseIndex(now, isWalking);
- const fi = pickLoadedWalkFrameIndex(anim, phase);
- return fi >= 0 ? fi : 0;
- }
-
- function tryComposePlayLayersFromFiles(rawImg, id, dir, frameIndex, tint, opts) {
- const useIdle = opts && opts.idle;
- if (!rawImg || !rawImg.naturalWidth || !rawImg.naturalHeight) return null;
- const w = rawImg.naturalWidth, h = rawImg.naturalHeight;
- const c = document.createElement('canvas');
- c.width = w;
- c.height = h;
- const cctx = c.getContext('2d');
- let anyTintColorLayer = false;
- let skippedShadowWhilePending = false;
- const diskLayers = playCharDiskLayersSet(id);
- /* ยืน (opts.idle): ลอง compose จาก *_idle_*_layer_* เหมือนหน้า character upload — รวม char-* ที่อัปโหลด idle เลเยอร์; ถ้าไม่มีไฟล์จะ missing → ไม่มีเลเยอร์ย้อม → getPlayTintedAvatarSource fallback ไป walk compose */
- const idleLayerStripes = !!useIdle;
- const resDir = dir;
- const resFi = frameIndex;
- for (let li = 0; li < PLAY_LAYER_ORDER.length; li++) {
- const layerName = PLAY_LAYER_ORDER[li];
- if (diskLayers && layerName !== 'shadow' && !diskLayers.has(layerName)) continue;
- /* char-* หันหลัง (up): ไม่มี face ทิศนี้ — ข้ามกันตาหน้าซ้อนหลังหัว; ซ้าย/ขวา/หน้าใช้ face ตามทิศได้ */
- if (layerName === 'face' && isUploadedCharAssetId(id) && dir === 'up') {
- continue;
- }
- let urls;
- if (layerName === 'shadow') {
- urls = idleLayerStripes
- ? shadowUrlCandidatesIdle(id, dir, frameIndex)
- : shadowUrlCandidates(id, resDir, resFi);
- } else {
- urls = idleLayerStripes
- ? layerUrlCandidatesIdle(id, dir, layerName, frameIndex)
- : layerUrlCandidates(id, resDir, layerName, resFi);
- }
- const r = resolvePlayLayerImage(urls);
- /* เงาโหลดช้า/404 บ่อย — อย่าให้บล็อกทั้งคอมโพส (ไม่งั้นตกไป fallback แถบแนวตั้งแทนเลเยอร์จริง) */
- if (r.status === 'pending' && layerName === 'shadow') {
- skippedShadowWhilePending = true;
- continue;
- }
- if (r.status === 'pending') return null;
- if (r.status === 'missing') continue;
- const tintHex = PLAY_LAYER_TINT_KEY[layerName] ? tint[PLAY_LAYER_TINT_KEY[layerName]] : null;
- if (PLAY_LAYER_TINT_KEY[layerName]) anyTintColorLayer = true;
- drawPlayTintedLayer(cctx, w, h, r.img, tintHex);
- }
- /* ถ้าโหลดได้แต่ไม่มีเลเยอร์สีเลย จะเหลือแต่ stroke → ตัวขาว — ใช้ PNG รวมแทน */
- if (!anyTintColorLayer) return null;
- return { canvas: c, skipCache: skippedShadowWhilePending };
- }
-
- function getPlayTintedAvatarSource(rawImg, characterId, dir, timeMs, isWalking, tint) {
- if (!tint || !characterId || !rawImg) return rawImg;
- ensurePlayCharLayerListFetch();
- ensurePlayLayerProbesAllDirections(characterId);
- const dirn = dir || 'down';
- const frameIndexWalk = getCharacterAnimFrameIndex(characterId, dirn, timeMs, isWalking);
- const idlePhase = idleAnimPhaseIndex(typeof timeMs === 'number' ? timeMs : Date.now());
-
- if (playCharLayerDiscoveryPending(characterId)) return rawImg;
-
- const apiFlag = playCharLayerFromApi(characterId);
- /* เหมือนเดิม: มีเลเยอร์แยกไฟล์เมื่อ API บอก hasLayerFiles หรือ probe เจอ — gen สีทำบน canvas จาก *_layer_* เท่านั้น */
- const charHasLayerFiles = apiFlag === true
- || (apiFlag == null && playCharAnyDirectionLayered(characterId));
-
- /* มี PNG idle รวม — ใช้เมื่อไม่มีระบบเลเยอร์สี (ถ้ามีเลเยอร์ต้อง compose ไม่ return raw ขาว) */
- if (!charHasLayerFiles && !isWalking && characterIdleSpritesVisible(characterId, dirn)) {
- return rawImg;
- }
- const cacheKeyWalk = [characterId, dirn, frameIndexWalk, tint.head, tint.hair, tint.body, 'ct3'].join('|');
-
- if (charHasLayerFiles) {
- if (!isWalking) {
- const composeFrame = isUploadedCharAssetId(characterId) ? 0 : idlePhase;
- const cacheKeyIdle = [characterId, dirn, composeFrame, tint.head, tint.hair, tint.body, 'ct3', 'idleL'].join('|');
- const hitI = playLayerCompositeCache.get(cacheKeyIdle);
- if (hitI) return hitI;
- const packI = tryComposePlayLayersFromFiles(rawImg, characterId, dirn, composeFrame, tint, { idle: true });
- if (packI && packI.canvas) {
- if (!packI.skipCache) playLayerCompositeCache.set(cacheKeyIdle, packI.canvas);
- return packI.canvas;
- }
- }
- const hit = playLayerCompositeCache.get(cacheKeyWalk);
- if (hit) return hit;
- const pack = tryComposePlayLayersFromFiles(rawImg, characterId, dirn, frameIndexWalk, tint, { idle: false });
- if (pack && pack.canvas) {
- if (!pack.skipCache) playLayerCompositeCache.set(cacheKeyWalk, pack.canvas);
- return pack.canvas;
- }
- return rawImg;
- }
-
- /*
- * ไม่มีไฟล์เลเยอร์ตาม API/probe — แสดง PNG รวม (ไม่ย้อมทั้งตัว: ไม่เหมือนระบบ gen สีแบบเลเยอร์เดิม)
- */
- return rawImg;
- }
-
- function getCharacterImg(id, direction) {
- if (!id) return null;
- const key = id + '_' + (direction || 'down');
- if (characterImages[key]) return characterImages[key];
- const img = new Image();
- img.src = BASE + '/img/characters/' + encodeURIComponent(id) + '_' + (direction || 'down') + '.png';
- characterImages[key] = img;
- return img;
- }
-
- function getCharacterFrame(id, direction, now, isWalking) {
- if (!id) return null;
- const dir = direction || 'down';
- const t = typeof now === 'number' ? now : Date.now();
- if (!isWalking) {
- const idleAnim = ensureCharacterIdleAnim(id, dir);
- let idlePhase = idleAnimPhaseIndex(t);
- if (isUploadedCharAssetId(id)) idlePhase = 0;
- const idleFi = pickLoadedWalkFrameIndex(idleAnim, idlePhase);
- if (idleFi >= 0) return idleAnim.frames[idleFi];
- const idfb = idleAnim.fallback;
- if (idfb && idfb.complete && idfb.naturalWidth) return idfb;
- }
- const key = id + '_' + dir;
- let anim = characterAnimations[key];
- if (!anim) {
- anim = { frames: [], fallback: null };
- characterAnimations[key] = anim;
- for (let i = 0; i < CHARACTER_ANIM_FRAMES; i++) {
- const img = new Image();
- img.src = BASE + '/img/characters/' + encodeURIComponent(id) + '_' + dir + '_' + i + '.png';
- anim.frames.push(img);
- }
- anim.fallback = getCharacterImg(id, dir);
- }
- const phase = walkAnimPhaseIndex(now, isWalking);
- const fi = pickLoadedWalkFrameIndex(anim, phase);
- if (fi >= 0) return anim.frames[fi];
- const fb = anim.fallback;
- if (fb && fb.complete && fb.naturalWidth) return fb;
- return null;
- }
-
- function getAvatarImg(characterId, direction, now, isWalking) {
- /* 'Chatest' = placeholder ที่ไม่มีไฟล์ sprite จริง → อย่าโหลด (กัน 404 รัว) ใช้ default avatar generated แทน */
- const validId = characterId && characterId !== LEGACY_PLACEHOLDER_CHARACTER_ID;
- const img = validId ? getCharacterFrame(characterId, direction, now, isWalking) : null;
- if (img) return img;
- return defaultAvatarImg;
- }
-
- /** composite idle ลงหน้า — เดียวกับ #room-lobby-profile-avatar ในล็อบบี้ */
- const LOBBY_IDLE_DOWN_LS = 'jdCharLobbyIdleDown:';
- const PLAY_LOBBY_AVATAR_SS_PREFIX = 'justicePlayLobbyAvatar:';
- const playLobbyIdleAvatarCache = new Map();
-
- function playLobbyIdleAvatarSrcForCharacter(characterId) {
- const id = String(characterId || '').trim();
- if (!id) return '';
- try {
- const ss = sessionStorage.getItem(PLAY_LOBBY_AVATAR_SS_PREFIX + id) || '';
- if (ss && ss.indexOf('data:image/') === 0) return ss;
- const ls = localStorage.getItem(LOBBY_IDLE_DOWN_LS + id) || '';
- if (ls && ls.indexOf('data:image/') === 0) return ls;
- } catch (e) { /* ignore */ }
- return '';
- }
-
- function ensurePlayLobbyIdleAvatarImage(characterId) {
- const id = String(characterId || '').trim();
- if (!id) return;
- const hit = playLobbyIdleAvatarCache.get(id);
- if (hit && hit.complete && hit.naturalWidth) return;
- if (playLobbyIdleAvatarCache.get(id + '_loading')) return;
- const src = playLobbyIdleAvatarSrcForCharacter(id);
- if (!src) return;
- const img = new Image();
- img.onload = function () {
- playLobbyIdleAvatarCache.set(id, img);
- playLobbyIdleAvatarCache.delete(id + '_loading');
- };
- img.onerror = function () {
- playLobbyIdleAvatarCache.delete(id + '_loading');
- };
- img.src = src;
- playLobbyIdleAvatarCache.set(id + '_loading', img);
- }
-
- function getPlayLobbyIdleAvatarImageSync(characterId) {
- const id = String(characterId || '').trim();
- if (!id) return null;
- const hit = playLobbyIdleAvatarCache.get(id);
- if (hit && hit.complete && hit.naturalWidth) return hit;
- ensurePlayLobbyIdleAvatarImage(id);
- return null;
- }
-
- /** วาดตัวละคร — ทิศลง + useLobbyIdleComposite: composite เดียวกับล็อบบี้ (เฉพาะผู้เล่นจริง ตอนยืน); ตอนเดินใช้ strip เดิน down_0..3 */
- function resolvePlayDrawCharSource(characterId, direction, now, isWalking, playTint, useLobbyIdleComposite) {
- /* placeholder 'Chatest' ไม่มี sprite/เลเยอร์จริง → ปฏิบัติเป็นว่าง (ใช้ default avatar) กัน 404 รัวทุกเส้นทางวาด */
- if (characterId === LEGACY_PLACEHOLDER_CHARACTER_ID) characterId = '';
- const dir = direction || 'down';
- const walk = !!isWalking;
- if (dir === 'down' && useLobbyIdleComposite && !walk) {
- const lobbyImg = getPlayLobbyIdleAvatarImageSync(characterId);
- if (lobbyImg) return lobbyImg;
- }
- const rawImg = getAvatarImg(characterId, dir, now, walk);
- if (!playTint || !characterId) return rawImg;
- return getPlayTintedAvatarSource(rawImg, characterId, dir, now, walk, playTint) || rawImg;
- }
-
- function preloadPlayLobbyIdleAvatarsForOccupants() {
- const meCid = me.characterId || getPlayCharacterId();
- if (meCid) ensurePlayLobbyIdleAvatarImage(meCid);
- others.forEach(function (o) {
- if (o && o.characterId) ensurePlayLobbyIdleAvatarImage(o.characterId);
- });
- }
-
- function playHideTopChrome() {
- try {
- return document.documentElement.classList.contains('play-hide-top-chrome');
- } catch (e) {
- return true;
- }
- }
-
- function getStoredCharacterId() {
- try {
- const v = localStorage.getItem('gameCharacterId');
- if (v) return v;
- } catch (e) { /* ignore */ }
- if (firstCharacterDefaultResolved === null) return LEGACY_PLACEHOLDER_CHARACTER_ID;
- return firstCharacterDefaultResolved || '';
- }
- function getPlayCharacterId() {
- if (forceDefaultCharacter) {
- if (firstCharacterDefaultResolved === null) return LEGACY_PLACEHOLDER_CHARACTER_ID;
- return firstCharacterDefaultResolved || '';
- }
- return getStoredCharacterId();
- }
-
- /** playerKey ของผู้เล่น (ผูกบัญชีเหรียญ/คะแนน) — สร้างถ้ายังไม่มี เหมือน Main-Lobby */
- function getJdPlayerKey() {
- try {
- let k = (localStorage.getItem('jdPlayerKey') || '').trim();
- if (!k || k.length < 8) {
- k = 'p_' + Date.now() + '_' + Math.random().toString(36).slice(2, 14);
- localStorage.setItem('jdPlayerKey', k);
- }
- return k;
- } catch (e) {
- return 'p_' + Date.now() + '_' + Math.random().toString(36).slice(2, 14);
- }
- }
-
- /** บอทพรีวิว: เลือกรหัสคนละตัวจาก roster (ไม่ซ้ำผู้เล่นถ้ามีตัวเลือก) */
- function pickPreviewBotCharacterId(botSlotIndex) {
- const idx = Math.max(0, Math.floor(Number(botSlotIndex)) || 0);
- const roster = playCharacterIdRoster;
- const humanId = String(getPlayCharacterId() || '');
- if (!roster.length) return humanId || LEGACY_PLACEHOLDER_CHARACTER_ID;
- const alts = roster.filter((id) => id !== humanId);
- const pool = alts.length ? alts : roster.slice();
- return pool[idx % pool.length] || humanId || roster[0];
- }
- const MOVE_SPEED = 0.15;
- /* time-based movement: เดิม step=MOVE_SPEED ต่อเฟรม → จอ 120fps เดินเร็ว 2 เท่า (คน/บอทวิ่งเร็วช้าไม่เท่ากัน)
- playDtMul = dt*60 (clamp ≤3 กัน tunneling) คูณเข้ากับ step ทุกที่ → ความเร็วเท่ากันทุก FPS */
- let playDtMul = 1;
- let playTickLastTs = 0;
- /** Anti-stuck (MG1/MG4): ดันชน "เพื่อน" กี่เฟรมก่อนปลดล็อกเดินผ่าน + ช่วงเวลาที่ผ่านได้ต่อเนื่อง */
- const ANTI_STUCK_PEER_TICKS = 13;
- const ANTI_STUCK_WINDOW_MS = 650;
- /** quiz_carry — ค่าเริ่มเมื่อไม่มี override จาก Admin (รหัสฉากตรงกันใน quiz-settings.json) */
- const QUIZ_CARRY_WALK_SPEED_MULT = 1.42;
- /** ค่าที่ใช้จริงต่อเฟรม — อัปเดตจาก /api/quiz-settings + join snap */
- let quizCarryWalkSpeedMultActive = QUIZ_CARRY_WALK_SPEED_MULT;
- const PATH_ARRIVE_THRESH = 0.15;
-
- function clampQuizCarryWalkSpeedMultClient(n, def) {
- const v = Number(n);
- if (!Number.isFinite(v)) return def;
- return Math.round(Math.max(0.5, Math.min(3, v)) * 100) / 100;
- }
-
- function resolveQuizCarryWalkSpeedMultFromSettingsObj(s) {
- const base = QUIZ_CARRY_WALK_SPEED_MULT;
- if (!s || typeof s !== 'object') return base;
- const forId = String(s.carryWalkSpeedMultForMapId ?? '').trim();
- const mult = Number(s.carryWalkSpeedMult);
- const mapId = (currentPlayMapId() || '').trim();
- if (forId && mapId && forId === mapId && Number.isFinite(mult)) {
- return clampQuizCarryWalkSpeedMultClient(mult, base);
- }
- return base;
- }
-
- function applyQuizCarryWalkSpeedFromSettingsObj(s) {
- if (!isQuizCarry()) {
- quizCarryWalkSpeedMultActive = QUIZ_CARRY_WALK_SPEED_MULT;
- return;
- }
- quizCarryWalkSpeedMultActive = resolveQuizCarryWalkSpeedMultFromSettingsObj(s);
- }
-
- function moveSpeedTilesThisFrameForWalk() {
- return MOVE_SPEED * (isQuizCarry() ? quizCarryWalkSpeedMultActive : 1) * playDtMul;
- }
-
- function isMovementKey(code) {
- return ['KeyW','KeyA','KeyS','KeyD','ArrowUp','ArrowDown','ArrowLeft','ArrowRight'].indexOf(code) !== -1;
- }
- function isChatFocused() {
- return false;
- }
- let zoom = 1.4;
- let froggerScore = 0;
- let lastFroggerKey = 0;
- let gauntletObstacles = [];
- /** อินเทอร์โพเลตการวาด obstacle ระหว่างแพ็กเก็ต sync (~220ms) */
- let gauntletObsRenderPrev = [];
- let gauntletObsRenderNext = [];
- let gauntletObsBlendT0 = 0;
- let meGauntletJumpTicks = 0;
- /** ค่าที่ใช้วาดการยกตัว (เลอร์ปจาก meGauntletJumpTicks ให้โค้งกระโดดไม่กระตุก) */
- let meGauntletJumpVis = 0;
- /** โค้งกระโดด local ของ "เรา" — เล่นเต็มอาร์ค (ขึ้น-ลง) เสมอเมื่อกดกระโดด
- (server เซ็ต jumpTicks=0 ทันทีตอนข้ามสำเร็จ = ตัดอาร์ค + สัญญาณลอยหายพร้อมตอนดัน +1 → ดูเป็น "วาปข้าม")
- ระหว่างอาร์คนี้ vis คุมเอง + glide แนวนอนช้า → เห็นเป็นกระโดดข้ามจริง ไม่ใช่วาป */
- let meGauntletJumpAnimStart = 0;
- let meGauntletJumpAnimDur = 0;
- function isMeGauntletJumpAnimActivePlay() {
- return meGauntletJumpAnimStart > 0 && (Date.now() - meGauntletJumpAnimStart) < meGauntletJumpAnimDur;
- }
- /** peer อื่น: เริ่ม "อาร์คกระโดด" เมื่อ server ส่ง gauntletJumpSeq เพิ่มขึ้น (นับครั้งเริ่มกระโดด)
- แก้บั๊ก "คนอื่นกระโดดแล้วเราไม่เห็น": gauntletJumpTicks ถูกตัด 0 ใน tick เดียวกันตอนข้ามสำเร็จ
- → peer ไม่เคยเห็นค่า >0 → ไม่เด้ง · seq ไม่ถูกรีเซ็ต จึงจับ "เริ่มกระโดด" ได้เสมอ (mirror อาร์ค local) */
- function notePeerGauntletJumpFromSync(o, seqRaw) {
- if (!o) return;
- const seq = Number(seqRaw) || 0;
- if (!Object.prototype.hasOwnProperty.call(o, 'gauntletJumpSeq')) { o.gauntletJumpSeq = seq; return; }
- if (seq > (o.gauntletJumpSeq || 0)) {
- o.gauntletJumpSeq = seq;
- o.gauntletJumpAnimStart = Date.now();
- o.gauntletJumpAnimDur = Math.max(360, (gauntletRuntimeJumpTicks || 6) * (gauntletRuntimeTickMs || 220));
- if (window.jdSound) { try { window.jdSound.playSfx('jump', 'mg2'); } catch (e) { /* ignore */ } } /* peer/bot กระโดด = ทุกคนได้ยินเสียง (seq เพิ่ม = กระโดดใหม่จริง ไม่ยิงซ้ำ) */
- }
- }
- function isPeerGauntletJumpAnimActive(o) {
- return !!(o && o.gauntletJumpAnimStart > 0 && (Date.now() - o.gauntletJumpAnimStart) < o.gauntletJumpAnimDur);
- }
- /** ซิงก์จากเซิร์ฟเวอร์ (gauntlet-sync / GET /api/game-timing) */
- let gauntletRuntimeTickMs = 220;
- let gauntletRuntimeJumpTicks = 6;
- let gauntletRuntimeJumpHeightMult = 0.52; /* MG2 ความสูงกระโดด (×tile) — รับจาก server game-timing (Admin ปรับได้) */
- /** Stack: รอบสวิงต่อวินาที — จาก GET /api/game-timing · ค่าน้อย = สวิงช้า */
- let playStackSwingHz = 0.55;
- /** Stack: ความกว้างบล็อก (tile) — null = คำนวณจากโซนลงบนแผนที่ */
- let playStackBlockWidthTiles = null;
- /** ภารกิจ Tower (mnn93hpi): จำกัดเวลารอบ (วินาที) — จาก game-timing.json */
- let playStackTowerMissionTimeSec = 90;
- /** ภารกิจ Tower: ทีมพลาดได้กี่ครั้งก่อนเกมจบ — จาก game-timing.json */
- let playStackTeamMissesMax = 3;
- /** ภารกิจ Tower: ชั้นสำเร็จกี่ชั้น (ฐาน) = Progress 100% — แต่ละชั้น +100/N %; คอมโบ ×2 ของชั้นนั้น */
- let playStackTowerProgressBlocks = 50;
- /** รูปบล็อก Stack ต่อที่นั่ง 1–6 (game-timing) — ว่าง = วาดสีเดิม */
- let playStackBlockNormalUrls = ['', '', '', '', '', '', '', ''];
- let playStackBlockHeavyUrls = ['', '', '', '', '', '', '', ''];
- /** 0–100: โอกาสใช้สไปรต์ “ใหญ่” ต่อการปล่อย (ถ้ามี URL ใหญ่ช่องนั้น) */
- let playStackHeavyBlockPercent = 35;
- /** กระโดดให้รอด: ความสูงกระโดด = ทวีคูณ × ความสูงตัว (ch×tile) — จาก GET /api/game-timing */
- let playJumpSurviveJumpHeightMult = 1.5;
- /** จำกัดเวลารอบภารกิจกระโดดขึ้นแท่น (วินาที) — จาก GET /api/game-timing; 0 = ใช้ค่าเริ่ม 60 ในเกม */
- let playJumpSurviveMissionTimeSec = 0;
- /** รูปแพลตฟอร์ม jump_survive ช่อง 1–3 จาก game-timing — url ว่าง = วาด cyan; w/h 0 = ใช้ขนาดไทล์ */
- let playJumpSurvivePlatformTiles = [
- { url: '', w: 0, h: 0 },
- { url: '', w: 0, h: 0 },
- { url: '', w: 0, h: 0 },
- ];
- /** ยิงยานอวกาศ (space_shooter): เวลารอบจาก game-timing; 0 = ใช้ค่าเริ่ม 90 ในเกมถ้าแมปไม่ทับ */
- let playSpaceShooterMissionTimeSec = 0;
- /** รูปยานช่อง 1–6 จาก game-timing (spawn slot); ว่าง = วาดยานเวกเตอร์ */
- let playSpaceShooterShipImageUrls = ['', '', '', '', '', ''];
- /** อุกาบาต: [0]=ตก, [1..]=แตก — จาก game-timing */
- let playSpaceShooterAsteroidSpriteUrls = [];
- let playSpaceShooterAsteroidExplodeFrameMs = 70;
- /** ระยะห่างเกิดอุกาบาต (ms) จาก game-timing — แมป spaceShooterAsteroidIntervalMs ≥200 ทับ */
- let playSpaceShooterAsteroidIntervalMs = 1040;
- /** ทับยานเมื่อชนอุกาบาต ครั้งที่ 1–3 (PNG โปร่ง) — ภารกิจ Violent Crime */
- let playSpaceShooterShipDamageOverlayUrls = ['', '', ''];
- /** balloon_boss / Mega Virus — จาก game-timing */
- let playBalloonBossMissionTimeSec = 0;
- /** ดาเมจต่อการยิงโดนบอส (ลบเลือดบอส/นัด) — Admin Minigame-7 · แยกจากคะแนน · default 10 */
- let playBalloonBossDamagePerHit = 10;
- let playBalloonBossBossImageUrl = '';
- let playBalloonBossPlayerBalloonImageUrls = ['', '', '', '', '', '', '', '']; /* [2026-07-17] 8 ช่อง (theme 8 สี) — เดิม 6 ตัด balloon-7 (ชมพู) ทิ้ง */
- let playBalloonBossPlayerBalloonFallbackUrl = '';
- /** 0 = ไม่จำกัด — จาก game-timing / gauntlet-sync (พรมแดง Gauntlet เท่านั้น) */
- let gauntletRuntimeTimeLimitSec = 0;
- /** เวลาสิ้นสุดรอบ (epoch ms) จากเซิร์ฟเวอร์ — null = ไม่จับเวลา */
- let gauntletEndsAtMs = null;
- /** Crown (mno9kb07): เซิร์ฟยังไม่ปล่อยรัน — หยุด tick / เวลา */
- let gauntletCrownRunHeldRemote = false;
- /** null | 'howto' | 'countdown' | 'live' — พรีรันก่อน GO */
- let gauntletCrownPregamePhase = null;
- let gauntletCrownLobbyReadyMap = {};
- /** จำนวนผู้เล่น (มนุษย์) ที่ server คาดว่าจะเข้าเล่นรอบนี้ — host เริ่มได้ต่อเมื่อมาครบ + กด Ready ครบ */
- let missionExpectedActiveCount = 0;
- let gauntletCrownCountdownTimer = null;
- let lastGauntletJumpKey = 0;
- /** รูป lane: หลาย URL สุ่มตาม id คงที่ · laser: แยกบน/ล่าง/เส้น + สี/ความหนา */
- let gauntletLaneImageUrls = [];
- let gauntletLaserTopUrl = '';
- let gauntletLaserBottomUrl = '';
- let gauntletLaserLineUrl = '';
- let gauntletLaserFillColor = 'rgba(140,230,255,0.42)';
- let gauntletLaserStrokeColor = 'rgba(255,220,255,0.9)';
- let gauntletLaserLineWidthPx = 2;
- const gauntletAssetImageCache = new Map();
-
- function encodeSpacesInUrlPath(t) {
- const s = String(t || '');
- const q = s.indexOf('?');
- const pathPart = q === -1 ? s : s.slice(0, q);
- const query = q === -1 ? '' : s.slice(q);
- return pathPart.replace(/ /g, '%20') + query;
- }
-
- function decodeAssetUrlPercentRuns(t) {
- let s = String(t || '');
- const q = s.indexOf('?');
- let base = q === -1 ? s : s.slice(0, q);
- const query = q === -1 ? '' : s.slice(q);
- for (let i = 0; i < 2; i += 1) {
- try {
- const d = decodeURIComponent(base);
- if (d === base) break;
- base = d;
- } catch (e) {
- break;
- }
- }
- return base + query;
- }
-
- function normalizeGameAssetUrlForWebPlay(t) {
- let s = String(t || '');
- s = s.replace(/^\/Game\/public\/img\//i, '/Game/img/');
- s = s.replace(/^Game\/public\/img\//i, 'Game/img/');
- return s;
- }
-
- /** แปลง URL จาก Admin/game-timing ให้โหลดได้ (nginx เสิร์ฟจาก /Game/...) */
- function normalizeGauntletAssetUrlForPlay(u) {
- if (typeof u !== 'string') return '';
- let raw = normalizeGameAssetUrlForWebPlay(decodeAssetUrlPercentRuns(u.trim()));
- const bare0 = raw.split('?')[0].replace(/\/+$/, '');
- if (/^\/Game\/img\/MegaVirus\/Artboard$/i.test(bare0) || /^Game\/img\/MegaVirus\/Artboard$/i.test(bare0)) {
- raw = '/Game/img/MegaVirus/Artboard%209.png';
- }
- if (!raw) return '';
- if (/^https?:\/\//i.test(raw)) {
- const z = raw.replace(/\/+$/, '');
- return z ? encodeSpacesInUrlPath(z) : '';
- }
- const qIdx = raw.indexOf('?');
- const base = (qIdx >= 0 ? raw.slice(0, qIdx) : raw).trim().replace(/\/+$/, '');
- const qs = qIdx >= 0 ? raw.slice(qIdx) : '';
- if (!base) return '';
- if (/\.{4,}/.test(base)) return '';
- if (base.startsWith('/')) return encodeSpacesInUrlPath(base + qs);
- if (/^Game\//i.test(base)) return encodeSpacesInUrlPath('/' + base.replace(/^\/+/, '') + qs);
- return encodeSpacesInUrlPath(base + qs);
- }
-
- function ensureGauntletAssetImage(url) {
- const u = normalizeGauntletAssetUrlForPlay(typeof url === 'string' ? url : '');
- if (!u) return null;
- let rec = gauntletAssetImageCache.get(u);
- if (rec) return rec;
- rec = { img: new Image(), ready: false };
- if (/^https?:\/\//i.test(u)) {
- try { rec.img.crossOrigin = 'anonymous'; } catch (e) { /* ignore */ }
- }
- rec.img.onload = function () { rec.ready = true; };
- rec.img.onerror = function () { rec.ready = false; };
- rec.img.src = u;
- /** รูปจากแคชบางครั้ง complete ก่อน onload — ต้องเซ็ต ready ทันทีไม่งั้นวาดลูกโป่งไม่ขึ้น */
- if (rec.img.complete && rec.img.naturalWidth > 0) rec.ready = true;
- else if (rec.img.complete && rec.img.naturalWidth <= 0) rec.ready = false;
- gauntletAssetImageCache.set(u, rec);
- return rec;
- }
-
- /** ลูกโป่ง Mega Virus: ถ้ามี URL ต่อที่นั่งแต่โหลดไม่สำเร็จ (404) ให้ใช้ fallback แทน · Per-seat URL wins only when image loads */
- function resolveBalloonBossBalloonSpriteRec(perSeatRaw, fallbackRaw) {
- const per = normalizeGauntletAssetUrlForPlay(String(perSeatRaw || '').trim());
- const fb = normalizeGauntletAssetUrlForPlay(String(fallbackRaw || '').trim());
- if (per) {
- const rPer = ensureGauntletAssetImage(per);
- const img = rPer && rPer.img;
- if (img && img.complete && img.naturalWidth > 0) return rPer;
- if (img && img.complete && img.naturalWidth <= 0 && fb) return ensureGauntletAssetImage(fb);
- return rPer;
- }
- if (fb) return ensureGauntletAssetImage(fb);
- return null;
- }
-
- function pickGauntletLaneImageRec(obsId) {
- if (!gauntletLaneImageUrls.length) return null;
- const n = gauntletLaneImageUrls.length;
- const idx = Math.abs(Number(obsId) | 0) % n;
- const u = gauntletLaneImageUrls[idx];
- return u ? ensureGauntletAssetImage(u) : null;
- }
-
- function clampClientLaserColor(s, def) {
- const t = String(s || '').trim().slice(0, 100);
- if (!t || /[<>"'`]/.test(t)) return def;
- return t;
- }
-
- let playQuizPhaseLocal = null;
- /** MG1: อยู่ในช่วง "พักระหว่างข้อ" (หลัง quiz-result ก่อน quiz-phase ถัดไป) → แผงคำถามโชว์ "รอคำถามข้อต่อไป" */
- let quizBetweenActive = false;
- /** MG4: อยู่ในช่วง "พักระหว่างข้อ" (หลัง quiz-carry-result ก่อน quiz-carry-phase ถัดไป) */
- let quizCarryBetweenActive = false;
- /** MG4: แบนเนอร์ "🎉 X ตอบถูก!" โชว์ก่อนเข้าช่วงพัก (ให้ทุกคนเห็นว่าใครตอบถูก) */
- let quizCarryResultBanner = '';
- let quizCarryResultBannerUntil = 0;
- let quizCarryResultBannerTimer = null;
- let playQuizPlayerLocal = { cannotTrue: false, cannotFalse: false, eliminated: false, score: 0 };
- let playQuizText = '';
- let playQuizPhaseEndsAt = 0;
- let playQuizTimerInterval = null;
- /** เกมถูก/ผิด + ภารกิจ mng8a80o: เลขข้อจากเซิร์ฟเวอร์ (1-based) / จำนวนข้อในรอบ — ใช้บรรทัดเล็กเหนือคำถามบนแผนที่ */
- let playQuizQuestionIndex = 0;
- let playQuizQuestionTotal = 0;
- /** Preview-only: real question pool + phased timer (matches server quiz-settings / map quizQuestions). */
- let previewQuizPool = [];
- /** ดัชนีข้อในรอบพรีวิว (0..len-1) — หลังสับแล้วตัดตาม quizRoundQuestionCount เหมือนเซิร์ฟเวอร์ */
- let previewQuizQIndex = 0;
- let previewQuizTiming = { readMs: 10000, answerMs: 5000, betweenMs: 3500 };
- let previewQuizStep = 'read';
- let previewQuizCurrent = null;
- let playLiveQuizScores = {};
- /** เกมถูก/ผิด (multiplayer): ใครเคยตอบผิดในเซสชันนี้ — ใช้โชว์แสตมป์ในสรุปภารกิจ mng8a80o */
- let playQuizEverWrong = {};
- /** MG1: กันสั่งจบซ้ำเมื่อตรวจพบ "ตายหมด" (รวมบอท ฝั่ง client) */
- let mg1AllDeadEndScheduled = false;
- /** MG1: ตรวจว่าทุกคน(เรา+บอท+ผู้เล่นอื่น)ถูกล็อกตอบผิดหมด → จบเกมทันที (เฉพาะโหมดสืบสวน) */
- function checkMg1AllDeadAndEnd() {
- if (mg1AllDeadEndScheduled || previewMode) return;
- if (!isQuiz() || !isDetectiveMinigamePlay()) return;
- const meLocked = !!(playQuizPlayerLocal && playQuizPlayerLocal.cannotTrue && playQuizPlayerLocal.cannotFalse);
- if (!meLocked) return;
- let anyAlive = false;
- others.forEach(function (o, id) {
- if (!o || o.bannedSpectator) return;
- if (!playBotsEnabled() && isPreviewBotId(id)) return;
- if (!(o.quizCannotTrue && o.quizCannotFalse)) anyAlive = true;
- });
- if (anyAlive) return;
- mg1AllDeadEndScheduled = true;
- /* ทุกคนตอบผิดหมด → host ขอให้ server จบเกม → server ส่ง quiz-ended → โชว์ผล/รอกดรับการ์ด (เหมือนเกมอื่น)
- เดิม: auto tryFinish = รับผล/การ์ดเองทันที ไม่รอกด */
- setTimeout(function () {
- try {
- if (isMePlayHost() && socket && socket.connected) socket.emit('quiz-end-request');
- /* non-host: ไม่ต้องทำอะไร รอ server ส่ง quiz-ended มาโชว์ผล */
- } catch (e) { /* ignore */ }
- }, 1600);
- }
- /** ผีตามตัวเมื่อตอบผิด — ใช้เฉพาะแมป mng8a80o (เป็นสัญลักษณ์/บทลงโทษเชิงสนุก) */
- const QUIZ_WRONG_GHOST_URL = BASE + '/img/QUESTION/ghost/ghost-front.png';
- let quizWrongGhostImg = null;
- function getQuizWrongGhostImg() {
- if (quizWrongGhostImg) return quizWrongGhostImg;
- const img = new Image();
- img.decoding = 'async';
- img.src = QUIZ_WRONG_GHOST_URL;
- quizWrongGhostImg = img;
- return img;
- }
- /** ===== โซนผี (quizGhostArea): ตอบผิด→วาร์ปมาขังในโซน เดินออกไม่ได้ — gated: ทำงานเฉพาะเมื่อแมปมีการวาดโซนผี ===== */
- function quizGhostAreaGridPlay() {
- const g = mapData && mapData.quizGhostArea;
- if (!Array.isArray(g)) return null;
- for (let y = 0; y < g.length; y++) { if (g[y] && g[y].some((v) => v === 1)) return g; }
- return null;
- }
- function quizMeIsGhostPlay() {
- return !!(isQuiz() && playQuizPlayerLocal && (playQuizPlayerLocal.cannotTrue || playQuizPlayerLocal.cannotFalse));
- }
- function quizGhostConfineActivePlay() {
- return quizMeIsGhostPlay() && !!quizGhostAreaGridPlay();
- }
- /** footprint ของผู้เล่นที่ (x,y) อยู่ในโซนผีครบทุกช่องไหม */
- function quizGhostFootprintInsidePlay(x, y) {
- const g = quizGhostAreaGridPlay();
- if (!g) return true;
- for (const k of quizTilesFootprintPlay(x, y)) {
- const p = k.split(','); const tx = +p[0], ty = +p[1];
- if (!g[ty] || g[ty][tx] !== 1) return false;
- }
- return true;
- }
- /** วาร์ป me เข้าโซนผี (ช่องที่ footprint ลงได้ ใกล้กลางโซนสุด) — คืน true ถ้ามีโซนผี */
- function warpMeIntoQuizGhostZonePlay() {
- const g = quizGhostAreaGridPlay();
- if (!g) return false;
- if (quizGhostFootprintInsidePlay(me.x, me.y)) return true;
- const xs = [], ys = [];
- for (let y = 0; y < g.length; y++) { const row = g[y] || []; for (let x = 0; x < row.length; x++) { if (row[x] === 1) { xs.push(x); ys.push(y); } } }
- if (!xs.length) return false;
- const cx = Math.round((Math.min.apply(null, xs) + Math.max.apply(null, xs)) / 2);
- const cy = Math.round((Math.min.apply(null, ys) + Math.max.apply(null, ys)) / 2);
- const cand = [];
- for (let i = 0; i < xs.length; i++) cand.push([xs[i], ys[i], Math.abs(xs[i] - cx) + Math.abs(ys[i] - cy)]);
- cand.sort((a, b) => a[2] - b[2]);
- let tx = xs[0], ty = ys[0];
- for (const c of cand) { if (quizGhostFootprintInsidePlay(c[0], c[1])) { tx = c[0]; ty = c[1]; break; } }
- me.x = tx; me.y = ty; me.tx = tx; me.ty = ty;
- try { if (socket && socket.connected) socket.emit('move', { x: me.x, y: me.y, direction: me.direction }); } catch (e) { /* ignore */ }
- return true;
- }
-
- /** สุ่มช่องในโซนผีที่ footprint ลงได้ (ใช้คุมบอทผีให้อยู่ในโซน) — คืน {x,y} หรือ null */
- function randomGhostZoneCellPlay() {
- const g = quizGhostAreaGridPlay();
- if (!g) return null;
- const cells = [];
- for (let y = 0; y < g.length; y++) {
- const row = g[y] || [];
- for (let x = 0; x < row.length; x++) {
- if (row[x] === 1 && quizGhostFootprintInsidePlay(x, y)) cells.push({ x: x, y: y });
- }
- }
- if (!cells.length) {
- for (let y = 0; y < g.length; y++) {
- const row = g[y] || [];
- for (let x = 0; x < row.length; x++) if (row[x] === 1) cells.push({ x: x, y: y });
- }
- }
- return cells.length ? cells[Math.floor(Math.random() * cells.length)] : null;
- }
-
- /** ตรวจว่า peer/me ตอบผิดในแมป mng8a80o แล้ว → คุมผีแทน avatar */
- function isQuizWrongGhostActiveForEnt(entId) {
- if (!isQuizQuestionMissionUiMapPlay()) return false;
- const sid = String(entId == null ? '' : entId);
- const isMeEnt = (myId != null && sid === String(myId));
- return isMeEnt
- ? !!(playQuizPlayerLocal && (playQuizPlayerLocal.cannotTrue || playQuizPlayerLocal.cannotFalse))
- : !!playQuizEverWrong[sid];
- }
-
- /** วาด "ผี" แทน avatar ทั้งตัวในแมป mng8a80o เมื่อตอบผิด — คุมผีเลย
- * args ทุกตัวเป็น "screen pixels" แล้ว (คำนวณจาก worldToScreen ที่ caller)
- * - sxCenter = พิกัด X กึ่งกลาง avatar บนจอ (px)
- * - syBottom = พิกัด Y เท้า avatar บนจอ (px)
- * - heightPx = ความสูง avatar บนจอ (px) ใช้คุมขนาดผีให้พอดี
- */
- function drawQuizWrongGhostOverlayPlay(sxCenter, syBottom, heightPx, entId, nameLabel) {
- const img = getQuizWrongGhostImg();
- if (!img || !img.complete || !img.naturalWidth) return;
- /* ผีเล็กลง 25% จากความสูง avatar (คงสัดส่วนภาพ · เท้ายังตรงพื้น) */
- const hPx = (Math.max(24, Number(heightPx) || 0)) * 0.75;
- const ratio = img.naturalWidth / Math.max(1, img.naturalHeight);
- const wPx = hPx * ratio;
- const sid = String(entId == null ? '' : entId);
- const tBob = Math.sin(performance.now() / 360 + (sid ? sid.charCodeAt(0) || 0 : 0)) * (hPx * 0.04);
- /* วาดให้ "เท้าผี" ตรงกับเท้า avatar */
- const drawX = sxCenter - wPx / 2;
- const drawY = syBottom - hPx + tBob;
- ctx.save();
- ctx.globalAlpha = 0.98;
- ctx.drawImage(img, drawX, drawY, wPx, hPx);
- ctx.restore();
- /* ชื่อใต้ผี (ถ้ามี — เพื่อระบุว่าเป็นใคร) */
- if (nameLabel) {
- ctx.save();
- ctx.font = '600 12px system-ui, "Segoe UI", "Kanit", sans-serif';
- ctx.textAlign = 'center';
- ctx.fillStyle = 'rgba(255,255,255,0.95)';
- ctx.strokeStyle = 'rgba(0,0,0,0.85)';
- ctx.lineWidth = 3;
- const ny = syBottom + 14;
- ctx.strokeText(nameLabel, sxCenter, ny);
- ctx.fillText(nameLabel, sxCenter, ny);
- ctx.restore();
- }
- }
- /** ช่วยแปลง tile coords → screen pos สำหรับ ghost (ใช้เฉพาะที่ caller ใน render scope)
- * รับ helpers ที่เป็น scope-local (worldToScreen, zDraw) เพราะถูกเรียกในรอบ draw เท่านั้น */
- /** row ล่างสุดของโซนผี (cache บน mapData) — ใช้ clamp ภาพผีให้อยู่ในโซน */
- function quizGhostZoneMaxRowPlay() {
- if (!mapData) return null;
- if (mapData._ghostMaxRow !== undefined) return mapData._ghostMaxRow;
- const g = mapData.quizGhostArea;
- let maxY = null;
- if (Array.isArray(g)) {
- for (let y = 0; y < g.length; y++) {
- const row = g[y] || [];
- for (let x = 0; x < row.length; x++) { if (Number(row[x]) === 1) maxY = y; }
- }
- }
- mapData._ghostMaxRow = maxY;
- return maxY;
- }
- function _quizGhostScreenAnchorPlay(axTile, ayTile, w2s, zDrawIn) {
- const md = mapData;
- const { cw, ch } = getCharacterFootprintWH(md);
- const cxWorld = (axTile + cw * 0.5) * tileSize;
- /* anchor เท้าผีตามปกติ (ayTile + ch) แต่ clamp ไม่ให้ต่ำกว่าขอบล่างโซนผี (maxRow + 0.6)
- → ภาพผีอยู่ "ในโซนผี" พอดี: ไม่ลอยสูงเกิน (เคส ayTile) และไม่ห้อยลงทับ SAFE/SCAM (เคส ayTile+ch) */
- let bottomTile = ayTile + ch;
- const maxRow = quizGhostZoneMaxRowPlay();
- if (maxRow != null) {
- const clampBottom = maxRow + 0.6;
- if (bottomTile > clampBottom) bottomTile = clampBottom;
- }
- const cyBottomWorld = bottomTile * tileSize;
- const [sx, sy] = w2s(cxWorld, cyBottomWorld);
- /* ความสูง = สูง avatar บนจอ (สอดคล้องกับ drawAvatar: boxH = tileSize * zDraw * ch * 1.35) */
- const sizeH = tileSize * zDrawIn * Math.max(ch, 1) * 1.35;
- return { sx, sy, sizeH };
- }
- /** เกมถูก/ผิด — ตรงกับ server QUIZ_TF_POINTS_PER_CORRECT */
- const QUIZ_TF_POINTS_PER_CORRECT = 10;
- const QUIZ_TF_SCORE_PLUS_URL = BASE + '/img/QUESTION/score+.png';
- const QUIZ_TF_SCORE_POPUP_MS = 1700;
- /** ขนาดป๊อปอัป score+ เทียบกับ tile — เดิม ~1.35×tile; +100% = 2× → 2.7×tile */
- const QUIZ_TF_SCORE_POPUP_TILE_MULT = 2.7;
- const QUIZ_TF_SCORE_POPUP_MIN_BASE_PX = 112;
- let quizTfScorePopups = [];
- let quizTfScorePlusImg = null;
- /** คะแนนต่อคำตอบที่ถูกเมื่อส่งป้ายที่ฮับ/โซนส่ง — quiz_carry เท่านั้น */
- const QUIZ_CARRY_POINTS_PER_CORRECT = 10;
- /** ครบเซสชัน (แมปสรุปภารกิจ): โชว์ result-complete / gameover กี่ ms ก่อนแผงสรุปผล */
- const QUIZ_CARRY_SESSION_END_SPLASH_MS = 3000;
- /** quiz_carry: หยิบตัวเลือกมาวางโซนกลาง — เล่นพร้อมกัน (ไม่สลับตา) */
- let quizCarryPool = [];
- let quizCarryCurrent = null;
- /** editor embed + preview: นับ 3–2–1 ก่อนโชว์คำถามและให้เดิน/หยิบได้ */
- let quizCarryEmbedPendingQuestion = null;
- let quizCarryEmbedCountdownStartAt = 0;
- let quizCarryEmbedCountdownEndAt = 0;
- /** editor embed: นับ 3–2–1 รอบสองหลังโชว์คำถาม ก่อนเปิดป้ายตัวเลือกบนแมป */
- let quizCarryEmbedPreOptionCountdownStartAt = 0;
- let quizCarryEmbedPreOptionCountdownEndAt = 0;
- /** quiz_carry: epoch ให้หยิบตัวเลือกได้ · epoch ปิดรอบตอบ (ตั้งที่ Admin แท็บหยิบมาวาง) */
- let quizCarryOptionRevealAt = 0;
- let quizCarryAnswerCloseAt = 0;
- /** server-auth (เกมจริง): epoch สิ้นสุดนับ 3-2-1 บนโต๊ะ ช่วง read phase (>0 = กำลังโชว์ countdown) */
- let quizCarrySrvReadCountdownEndAt = 0;
- /** MG4 server-auth: ไอคอน ✓/✗ ลอยเหนือหัวตอนตอบ (key = entity id → { ok, until }) ทุกจอเห็นพร้อมกัน */
- const quizCarryEntityFeedbackFx = Object.create(null);
- const QUIZ_CARRY_FEEDBACK_FX_MS = 1300;
- /** หมดเวลาตอบรอบนี้แล้ว — โชว์ TIME'S UP ~3s แล้วเรียก quizCarryAfterRoundResolved */
- let quizCarryAnswerTimeupAwaitNext = false;
- let quizCarryAnswerRoundTimeupAutoT = null;
- let quizCarryAnswerRoundTimeupAdvanceAt = 0;
- let quizCarryCarryTimingMs = { carryReadMs: 3000, carryAnswerMs: 5000 };
- /** พรีวิว (รวม editor embed): จำนวนข้อที่เล่นก่อนโอเวอร์เลย์จบ — 0 = ไม่จบอัตโนมัติ */
- let quizCarrySessionLength = 0;
- let quizCarryRoundsCompleted = 0;
- let quizCarrySessionEnded = false;
- /** MG4 server-auth (detective): กัน schedule กลับ LobbyB ซ้ำเมื่อ quiz-carry-ended มาหลายครั้ง */
- let quizCarryDetectiveReturnNavDone = false;
- /** หลัง timeup บนโต๊ะ (embed): รอ 5s แล้วโชว์ result-complete / result-gameover */
- let quizCarryResultEndTimer = null;
- /** หลังโชว์ result-end (embed preview): รอ 5s แล้วกลับ room-lobby — ใช้ร่วม quiz_carry + crown */
- let embedPreviewLobbyReturnTimer = null;
- /** ครบเซสชัน (mission summary แมป): รอ splash แล้วเปิด #quiz-carry-mission-overlay */
- let quizCarrySessionCompleteResultToSummaryT = null;
- /** embed พรีวิว: รอ Ready / START ของโฮสต์ก่อนนับ 3–2–1 */
- let quizCarryPregameActive = false;
- let playHostId = null;
- /** ซิงก์จากเซิร์ฟเวอร์: socketId → กด Ready แล้ว */
- let quizCarryLobbyReadyMap = {};
- /** จาก /api/quiz-settings carryMapPanelTheme — ใช้กับ #quiz-map-question-panel เฉพาะ quiz_carry */
- let quizCarryMapPanelTheme = null;
- /** จาก /api/quiz-settings quizMapPanelTheme — แผงคำถามบนแผนที่ เกมถูก/ผิด (ไม่ใช่ quiz_carry) */
- let quizMapPanelTheme = null;
- /** จาก /api/quiz-settings carryEmbedCountdownTheme — สี/ขนาด overlay นับ 3-2-1 (embed) */
- let quizCarryEmbedCountdownTheme = null;
- /** จาก /api/quiz-settings carryChoicePlaqueThemes — ป้าย canvas ต่อช่องตัวเลือก 0..15 (null = ใช้ค่าเริ่มต้นทุกช่อง) */
- let quizCarryChoicePlaqueThemes = null;
- /** จาก carryChoicePlaqueMapScale — ขยายป้ายบนแมป + ฟอนต์ (0.85–2.5) */
- let quizCarryPlaqueMapScale = 1.25;
- const quizCarryChoiceImageCache = new Map();
- /** สแนปจาก join-space (Node) — ใช้เมื่อ fetch HTTP quiz-settings ไม่ได้หรือไม่มีธีม */
- let quizCarryJoinSettingsSnap = null;
-
- /** quiz_carry — โซนตัวเลือกบนแมป / ธีมป้ายต่อช่องสูงสุด 16 */
- const QUIZ_CARRY_MAX_OPTION_SLOTS = 16;
-
- /** jump_survive — กล้องตามตัวในกรอบ + แพลตฟอร์มเลื่อนลง (scroll เพิ่ม world Y ของแพลตฟอร์ม) ไม่ลากทั้งฉาก */
- let jumpSurviveCamCenterX = 0;
- let jumpSurviveCamCenterY = 0;
- let jumpSurviveEliminated = false;
- /** จับเวลาโหมดกระโดดให้รอด (วินาทีบน HUD) */
- let jumpSurviveSessionStartMs = 0;
- /* เวลา server (epoch ms) ที่ live เริ่มจริง — ใช้คำนวณ scroll/เวลานับถอยหลังจาก serverNow() ร่วมกัน
- ทุกเครื่องเห็นแพลตฟอร์มเลื่อนเท่ากัน + จบพร้อมกัน (เดิมสะสม dt local → เลื่อน/จบไม่ตรงกัน = desync) */
- let jumpSurviveLiveAnchorServerMs = 0;
- let jumpSurvivePlatformScrollPx = 0;
- let jumpSurviveVy = 0;
- let jumpSurviveLastTickMs = 0;
- let jumpSurviveJumpQueued = false;
- let jumpSurviveOnGround = false;
- let jumpSurviveLastEmitT = 0;
- let jumpSurviveHiddenTimer = null; /* แท็บ hidden → rAF หยุด → แจ้ง server ให้จำลองการตกแทน (คนอื่นเห็นลื่น) */
- let jumpSurviveHiddenLastMs = 0;
- let jumpSurviveHiddenSent = false; /* แจ้ง server แล้วว่า hidden (กันส่งซ้ำทุก tick) */
- let jumpSurviveServerAuthPlay = false; /* true เมื่อรับ jump-survive-bot-move/ended ครั้งแรก — server เป็นเจ้าของบอท/รอบ */
- let spaceShooterServerAuthPlay = false; /* MG6: true เมื่อรับ space-shooter-bot-move — server เป็นเจ้าของบอท/รอบ */
- let balloonBossServerAuthPlay = false; /* MG7: true เมื่อรับ balloon-boss-bot-move — server เป็นเจ้าของบอท/รอบ/HP บอส */
- /** mnptfts2: howto → countdown → live → ended (คะแนน 100 ผู้รอดสุดท้าย) */
- let jumpSurviveMissionPhase = null;
- let jumpSurviveGameEnded = false;
- let jumperMissionCountdownTimer = null;
-
- /** space_shooter — ยิงหิน (จุดเกิดจากกริด P1–P6) */
- let spaceShooterBullets = [];
- let spaceShooterAsteroids = [];
- /** { x, y, r, fi, acc } — fi = index เฟรมแตก (0 = urls[1]) */
- let spaceShooterAsteroidExplosions = [];
- let spaceShooterPopups = [];
- let spaceShooterLastTickMs = 0;
- let spaceShooterSpawnAccMs = 0;
- /* เวลา server ที่ live เริ่ม + ตัวนับลำดับก้อนที่เกิดแล้ว — ใช้ทำ deterministic spawn ให้ทุกเครื่องตรงกัน */
- let spaceShooterLiveAnchorServerMs = 0;
- let spaceShooterSpawnCount = 0;
- let spaceShooterFireCd = 0;
- let spaceShooterSessionStartMs = 0;
- let spaceShooterLastMoveEmit = 0;
- let spaceShooterGameEnded = false;
- let spaceShooterMissionPhase = null;
- let spaceShooterMissionCountdownTimer = null;
-
- /** mng8a80o: howto → countdown → live → ended (สรุปแบบ crown mission) */
- let quizQuestionMissionPhase = null;
- let quizQuestionMissionCountdownTimer = null;
- let quizQuestionMissionDeferredPhase = null;
- /** mng8a80o live: virtual joystick (+x right, +y down) normalized ~[-1,1] */
- let quizQuestionMissionJoyVecX = 0;
- let quizQuestionMissionJoyVecY = 0;
- let quizQuestionMissionJoyPointerId = null;
- /** Stack Tower (mnn93hpi) — flow เดียวกับ crown / quiz mission */
- let stackTowerMissionPhase = null;
- let stackTowerMissionCountdownTimer = null;
- let stackTowerMissionDeferredPhase = null;
- let stackTowerSessionStartAt = 0;
- let stackTowerMissionEndedOnce = false;
- /** progress ข้ามเกณฑ์ Tower: เริ่มแอนิเมตซูม+เลื่อนแมป — null ยังไม่ข้าม, ตัวเลข = performance.now() ตอนเริ่ม */
- let stackTowerPost50AnimStartMs = null;
- /** แฟลชรูปผล Tower (timeup / gameover / complete) ก่อน GCM 5 วิ */
- let stackTowerResultFlashTimer = null;
- const STACK_TOWER_RESULT_FLASH_MS = 5000;
-
- /** รูปอุกาบาตขณะตก: 0 = เต็ม HP (Meteo-1); 1 = โดนยิงแล้วแต่ยังมี HP (Meteo-2 เมื่อมี URL ≥3) */
- function spaceShooterAsteroidLiveSpriteIndexPlay(a) {
- const urls = playSpaceShooterAsteroidSpriteUrls;
- if (!urls || !urls.length) return 0;
- const maxHp = Math.max(1, Math.floor(Number(a && a.maxHp)) || SPACE_SHOOTER_ASTEROID_MAX_HP);
- const hp = Math.max(0, Math.floor(Number(a && a.hp)) || maxHp);
- if (hp >= maxHp) return 0;
- if (urls.length >= 3) return 1;
- return 0;
- }
-
- /** เริ่มแอนิเมชันแตกที่เฟรมถัดจาก «โดนแล้ว» เพื่อไม่ซ้ำ Meteo-2 — แสดง Meteo-3 แล้วจบตาม maxFi */
- function spaceShooterAsteroidExplosionStartFiPlay() {
- const urls = playSpaceShooterAsteroidSpriteUrls;
- if (!urls || urls.length < 2) return 0;
- return urls.length >= 3 ? 1 : 0;
- }
-
- function spaceShooterSpawnAsteroidExplosion(worldX, worldY, r) {
- const urls = playSpaceShooterAsteroidSpriteUrls;
- if (!urls || urls.length < 2) return;
- if (window.jdSound) { try { window.jdSound.playSfx('bomb', 'mg6'); } catch (e) { /* ignore */ } }
- spaceShooterAsteroidExplosions.push({
- x: worldX,
- y: worldY,
- r: Math.max(6, Number(r) || 14),
- fi: spaceShooterAsteroidExplosionStartFiPlay(),
- acc: 0,
- });
- }
-
- function spaceShooterTickAsteroidExplosions(dt) {
- const urls = playSpaceShooterAsteroidSpriteUrls;
- if (!urls || urls.length < 2) {
- spaceShooterAsteroidExplosions.length = 0;
- return;
- }
- const fms = Math.max(30, Math.min(500, Number(playSpaceShooterAsteroidExplodeFrameMs) || 70));
- const maxFi = urls.length - 2;
- for (let i = spaceShooterAsteroidExplosions.length - 1; i >= 0; i--) {
- const ex = spaceShooterAsteroidExplosions[i];
- ex.acc += dt * 1000;
- while (ex.acc >= fms) {
- ex.acc -= fms;
- ex.fi++;
- if (ex.fi > maxFi) {
- spaceShooterAsteroidExplosions.splice(i, 1);
- break;
- }
- }
- }
- }
-
- /** balloon_boss — ลูกโป้งยิงบอส (Mega Virus) */
- let balloonBossPendingShots = [];
- let balloonBossPlayerBullets = [];
- let balloonBossBossBullets = [];
- let balloonBossSessionStartMs = 0;
- let balloonBossLastTickMs = 0;
- let balloonBossLastMoveEmit = 0;
- let balloonBossPlayerFireCd = 0;
- /* ปุ่ม SHOOT บนจอ (MG7) กด 1 ครั้ง = ยิง 1 นัด — ตั้ง flag ให้ tick ยิงตามมุมลูกศร เหมือนกด Space */
- let balloonBossFireBtnQueued = false;
- let balloonBossGameEnded = false;
- let balloonBossHitFx = [];
- /** Mega Virus — ป๊อปดาเมจต่อบอส (ข้อความ +2) เมื่อกระสุนโดนบอส */
- let balloonBossScorePopups = [];
- let balloonBossBossFireAcc = 0;
- /* anchor เวลา server + ตัวนับกระสุนบอส — deterministic boss fire ให้ทุกเครื่องยิงทิศ/เวลาเดียวกัน */
- let balloonBossLiveAnchorServerMs = 0;
- let balloonBossBossShotCount = 0;
- /* MG7 host-authoritative boss HP: host broadcast ดาเมจรวมเป็นระยะ (balloon-boss-sync)
- → non-host แสดง HP บอสตามค่า host เป๊ะ (null = ยังไม่ได้รับ → fallback ผลรวมท้องถิ่น) */
- let balloonBossHostBossDmg = null;
- let balloonBossLastSyncEmit = 0;
- /** quiz_battle — โดม MCQ กด E (ข้อจาก battleQuizMcq) */
- let quizBattleMcqPool = [];
- let quizBattleAnsweredComps = new Set();
- let quizBattleModalCompId = null;
- let qbAutoLastComp = null; // โดมล่าสุดที่ trigger อัตโนมัติ (กันเด้งซ้ำขณะยืนค้าง)
- /** ประวัติคำตอบต่อโดม (สำหรับ MY RESULT): compId → { qIndex, firstTry(bool), correct(bool), submittedIdx, q } */
- let quizBattleAnswerLog = new Map();
- /** เวลาเริ่มเล่นห้อง quiz_battle (ms) — สำหรับ Total time */
- let quizBattleSessionStartMs = 0;
- let quizBattleScoreSubmittedAt = 0;
- /** ล็อกตัวเลือกระหว่างโชว์ผลถูก/ผิด (กันกดซ้ำ + กันเด้งซ้ำ) */
- let quizBattleChoiceLocked = false;
- /** โชว์ popup Completed แล้วหรือยัง (กันเด้งซ้ำเมื่อตอบครบทุกโดม) */
- let quizBattleCompletedShown = false;
- /** ถึงจุดจบแล้ว — ล็อกตำแหน่ง ไม่ให้ echo/restore เด้งกลับ start หรือจุดเดิม */
- let quizBattleFinishLock = false;
- /** โดมที่ "ผ่านแล้ว" (ตอบถูกหรือผิดก็ผ่าน) — ใช้ปลดล็อกเส้นทาง + จำว่าเคยตอบ ไม่ต้องตอบซ้ำ */
- let quizBattlePassedComps = new Set();
- /** ซูมที่ผู้เล่นปรับเองในฉาก quiz_battle (ล้อเมาส์ / ปุ่ม +−) */
- let quizBattleUserZoomMul = 1;
- const SPACE_SHOOTER_SHIP_COLORS = ['#50fa7b', '#ff79c6', '#ff5555', '#f1fa8c', '#bd93f9', '#8be9fd'];
- /** ยานยิงอุกาบาต (MG6) สีตาม lobby theme 1-8 — Rocket-1..8 ตรงกับ PLAY_LOBBY_THEME_HEX */
- const SPACE_SHOOTER_ROCKET_THEME_URLS = [1, 2, 3, 4, 5, 6, 7, 8].map(function (n) { return BASE + '/img/ViolentCrime/Rocket-' + n + '.png'; });
- /** theme index (1-8) ของ entity จากสี body ที่ย้อม (playTint) — ใช้แมป asset สีตามผู้เล่น */
- function playLobbyThemeIndexForEntityPlay(ent) {
- const tint = ent && ent.playTint;
- const body = (tint && typeof tint.body === 'string') ? tint.body : null;
- const idx = body ? nearestIndexFromHexPlay(body, PLAY_LOBBY_THEME_HEX) : null;
- return (idx >= 1 && idx <= 8) ? idx : null;
- }
-
- document.getElementById('room-id').textContent = spaceId;
-
- function hidePlayQuizHud() {
- const sb = document.getElementById('play-quiz-scoreboard');
- if (sb) sb.classList.add('is-hidden');
- const fb = document.getElementById('play-quiz-feedback');
- if (fb) { fb.classList.add('is-hidden'); fb.textContent = ''; }
- }
-
- function renderPlayQuizScoreboard(scores) {
- const wrap = document.getElementById('play-quiz-scoreboard');
- const ul = document.getElementById('play-quiz-scoreboard-list');
- if (!wrap || !ul || !mapData || (!isQuiz() && !isQuizCarry() && !isQuizBattle())) return;
- if (!scores || typeof scores !== 'object') return;
- wrap.classList.remove('is-hidden');
- ul.textContent = '';
- const merged = { ...scores };
- others.forEach((_, id) => { if (merged[id] == null) merged[id] = 0; });
- if (myId != null && merged[myId] == null) merged[myId] = 0;
- const rows = [];
- if (myId != null) {
- rows.push({ id: myId, nick: me.nickname || 'คุณ', sc: merged[myId] != null ? merged[myId] : 0 });
- }
- others.forEach((o, id) => {
- rows.push({ id, nick: (o && o.nickname) ? String(o.nickname) : id, sc: merged[id] != null ? merged[id] : 0 });
- });
- rows.sort((a, b) => b.sc - a.sc || a.nick.localeCompare(b.nick, 'th'));
- rows.forEach((row) => {
- const li = document.createElement('li');
- if (row.id === myId) li.className = 'play-quiz-scoreboard-me';
- const spN = document.createElement('span');
- spN.className = 'play-quiz-scoreboard-name';
- spN.textContent = row.nick;
- const spV = document.createElement('span');
- spV.className = 'play-quiz-scoreboard-val';
- spV.textContent = String(row.sc);
- li.appendChild(spN);
- li.appendChild(spV);
- ul.appendChild(li);
- });
- if (isQuizCarry() && useCyberPlayHud()) {
- wrap.classList.add('is-hidden');
- }
- /* แมป mng8a80o: คะแนนอยู่ที่ cyber SCORE ซ้ายแล้ว — ซ่อนกล่อง "คะแนน" มุมขวาไม่ให้ซ้ำกับ mock */
- if (isQuizQuestionMissionUiMapPlay()) {
- wrap.classList.add('is-hidden');
- }
- /* Quiz Battle: ใช้ HUD ใหม่ (#qb-game-hud) — ซ่อนกล่อง "คะแนน" เดิม */
- if (isQuizBattle()) {
- wrap.classList.add('is-hidden');
- }
- }
-
- function initPlayLiveQuizScoresZeros() {
- if ((!isQuiz() && !isQuizCarry() && !isQuizBattle()) || myId == null) return;
- playLiveQuizScores = {};
- playLiveQuizScores[myId] = 0;
- others.forEach((_, id) => { playLiveQuizScores[id] = 0; });
- if (isQuiz()) { playQuizEverWrong = {}; mg1AllDeadEndScheduled = false; }
- renderPlayQuizScoreboard(playLiveQuizScores);
- }
-
- function showPlayQuizFeedback(r) {
- const el = document.getElementById('play-quiz-feedback');
- if (!el || !r || !r.results || myId == null) return;
- let mine = null;
- let botRight = 0, botWrong = 0;
- for (let i = 0; i < r.results.length; i++) {
- const row = r.results[i];
- if (row.id === myId) mine = row;
- else if (isPreviewBotId(row.id)) {
- if (row.right) botRight++;
- else botWrong++;
- }
- }
- if (!mine) return;
- if (window.jdSound) { try { window.jdSound.playSfx(mine.right ? 'correct' : 'wrong', 'mg1'); } catch (e) { /* ignore */ } }
- /* item 4 — ทุกคนได้ยินผลของเพื่อนด้วย (คาสเคดสั้น ๆ หลังผลตัวเอง) เดิม MG1 เงียบสำหรับผลคนอื่น */
- if (window.jdSound && Array.isArray(r.results)) {
- let _pk = 0;
- for (let i = 0; i < r.results.length && _pk < 6; i++) {
- const row = r.results[i];
- if (!row || row.id === myId) continue;
- _pk++;
- (function (right, order) {
- setTimeout(function () { try { window.jdSound.playSfx(right ? 'correct' : 'wrong', 'mg1'); } catch (e) { /* ignore */ } }, 150 * order);
- })(!!row.right, _pk);
- }
- }
- el.classList.remove('is-hidden');
- const botExtra = playBotsEnabled() && (botRight + botWrong > 0)
- ? ' · บอท ถูก ' + botRight + ' / ผิด ' + botWrong + ' (Bots: ' + botRight + ' right / ' + botWrong + ' wrong)'
- : '';
- if (mine.right) {
- el.className = 'play-quiz-feedback play-quiz-feedback-ok';
- el.textContent = 'คุณตอบถูก · +' + QUIZ_TF_POINTS_PER_CORRECT + ' · คะแนนรวม ' + (typeof mine.score === 'number' ? mine.score : 0) + ' แต้ม' + botExtra;
- } else {
- el.className = 'play-quiz-feedback play-quiz-feedback-bad';
- el.textContent = (mine.choice == null
- ? 'คุณไม่ได้ยืนในโซนตอบ — นับเป็นผิด'
- : 'คุณตอบผิด — กลับจุดเกิด และเข้าโซนตอบไม่ได้อีก') + botExtra;
- }
- if (typeof window.__playQuizFeedbackT === 'number') clearTimeout(window.__playQuizFeedbackT);
- window.__playQuizFeedbackT = setTimeout(() => { el.classList.add('is-hidden'); }, 4200);
- }
-
- function ensureQuizTfScorePlusImgPlay() {
- if (quizTfScorePlusImg && quizTfScorePlusImg.src) return;
- quizTfScorePlusImg = new Image();
- quizTfScorePlusImg.src = QUIZ_TF_SCORE_PLUS_URL;
- quizTfScorePlusImg.onerror = function () {
- this.onerror = null;
- };
- }
-
- /** โชว์ score+.png กลางโซนจริง/เท็จที่เป็นคำตอบข้อนี้ (world px) */
- function spawnQuizTrueFalseScorePopupPlay(correctTrue) {
- if (!isQuiz() || !mapData) return;
- const grid = correctTrue ? mapData.quizTrueArea : mapData.quizFalseArea;
- const b = getTileBoundsForOnesGrid(grid);
- if (!b) return;
- const ts = tileSize || 32;
- const wx = ((b.minX + b.maxX + 1) / 2) * ts;
- const wy = ((b.minY + b.maxY + 1) / 2) * ts;
- const now = Date.now();
- ensureQuizTfScorePlusImgPlay();
- quizTfScorePopups.push({ wx, wy, startMs: now, untilMs: now + QUIZ_TF_SCORE_POPUP_MS });
- }
-
- function drawQuizTfScorePopupsLayer(ctx, worldToScreen, zDraw, timeMs) {
- if (!quizTfScorePopups.length) return;
- const img = quizTfScorePlusImg;
- if (!img || !img.complete || !img.naturalWidth) return;
- const now = typeof timeMs === 'number' ? timeMs : Date.now();
- quizTfScorePopups = quizTfScorePopups.filter((p) => p.untilMs > now);
- const baseW = Math.max(QUIZ_TF_SCORE_POPUP_MIN_BASE_PX, (tileSize || 32) * zDraw * QUIZ_TF_SCORE_POPUP_TILE_MULT);
- for (let i = 0; i < quizTfScorePopups.length; i++) {
- const p = quizTfScorePopups[i];
- const span = Math.max(1, p.untilMs - p.startMs);
- const t = Math.max(0, Math.min(1, (now - p.startMs) / span));
- const [sx, sy] = worldToScreen(p.wx, p.wy);
- const rise = t * 56 * zDraw;
- const fade = t < 0.72 ? 1 : Math.max(0, 1 - (t - 0.72) / 0.28);
- const pulse = 1 + Math.sin(t * Math.PI) * 0.1;
- const scale = (baseW / img.naturalWidth) * pulse;
- const w = img.naturalWidth * scale;
- const h = img.naturalHeight * scale;
- ctx.save();
- ctx.globalAlpha = fade;
- ctx.drawImage(img, sx - w / 2, sy - h / 2 - rise, w, h);
- ctx.restore();
- }
- }
-
- function getTileBoundsForOnesGrid(grid) {
- if (!grid || !grid.length) return null;
- let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
- for (let yy = 0; yy < grid.length; yy++) {
- const row = grid[yy];
- if (!row) continue;
- for (let xx = 0; xx < row.length; xx++) {
- if (Number(row[xx]) === 1) {
- if (xx < minX) minX = xx;
- if (yy < minY) minY = yy;
- if (xx > maxX) maxX = xx;
- if (yy > maxY) maxY = yy;
- }
- }
- }
- if (minX === Infinity) return null;
- return { minX, minY, maxX, maxY };
- }
-
- function getQuizQuestionAreaTileBounds(md) {
- if (!md || md.gameType !== 'quiz') return null;
- return getTileBoundsForOnesGrid(md.quizQuestionArea);
- }
-
- /** quiz_carry: โซนทองพิเศษสำหรับข้อความคำถาม (ถ้าไม่วาด ใช้โซนกลางม่วงแทนใน syncPlayQuizMapPanel) */
- function getQuizCarryQuestionAreaTileBounds(md) {
- if (!md || md.gameType !== 'quiz_carry') return null;
- return getTileBoundsForOnesGrid(md.quizQuestionArea);
- }
-
- function clearQuizMapPanelThemeInline(panel, textEl) {
- if (!panel || !textEl) return;
- panel.classList.remove('quiz-map-question-panel--has-kicker');
- panel.classList.remove('quiz-map-question-panel--question-mission-live');
- const qKick = document.getElementById('quiz-map-question-kicker');
- if (qKick) {
- qKick.textContent = '';
- qKick.classList.add('is-hidden');
- qKick.setAttribute('aria-hidden', 'true');
- }
- panel.style.removeProperty('background-image');
- panel.style.removeProperty('background-size');
- panel.style.removeProperty('background-position');
- delete panel.dataset.qmPlaqueTry;
- panel.style.removeProperty('--qmap-bg');
- panel.style.removeProperty('--qmap-border');
- panel.style.removeProperty('--qmap-border-w');
- panel.style.removeProperty('--qmap-shadow');
- panel.style.removeProperty('background');
- panel.style.removeProperty('border');
- panel.style.removeProperty('border-color');
- panel.style.removeProperty('border-width');
- panel.style.removeProperty('border-style');
- panel.style.removeProperty('box-shadow');
- textEl.style.removeProperty('--qmap-text');
- textEl.style.removeProperty('--qmap-text-shadow');
- textEl.style.removeProperty('color');
- textEl.style.removeProperty('text-shadow');
- textEl.style.removeProperty('font-size');
- textEl.style.removeProperty('line-height');
- textEl.style.removeProperty('width');
- textEl.style.removeProperty('box-sizing');
- textEl.style.removeProperty('max-height');
- textEl.style.removeProperty('overflow');
- }
-
- function clearQuizMapQuestionCarryFeedback() {
- if (typeof window.__quizMapCarryFeedbackT === 'number') {
- clearTimeout(window.__quizMapCarryFeedbackT);
- window.__quizMapCarryFeedbackT = null;
- }
- const icon = document.getElementById('quiz-map-q-feedback-icon');
- const scoreWrap = document.getElementById('quiz-map-q-feedback-score-wrap');
- const scoreEl = document.getElementById('quiz-map-q-feedback-score');
- if (icon) {
- icon.classList.add('is-hidden');
- icon.removeAttribute('src');
- }
- if (scoreEl) scoreEl.classList.remove('quiz-map-q-feedback-score--pop');
- if (scoreWrap) {
- scoreWrap.classList.add('is-hidden');
- scoreWrap.setAttribute('aria-hidden', 'true');
- }
- }
-
- /** ไอคอนถูก/ผิดที่ขอบบนแผง + score+10 ตรงกลางใต้ข้อความ (เฉพาะถูก) — ตาม mock quiz_carry */
- function showQuizMapQuestionCarryFeedback(isCorrect) {
- if (!isQuizCarry()) return;
- const panel = document.getElementById('quiz-map-question-panel');
- const icon = document.getElementById('quiz-map-q-feedback-icon');
- const scoreWrap = document.getElementById('quiz-map-q-feedback-score-wrap');
- const scoreEl = document.getElementById('quiz-map-q-feedback-score');
- if (!panel || !icon || panel.classList.contains('is-hidden')) return;
- clearQuizMapQuestionCarryFeedback();
- if (window.jdSound) { try { window.jdSound.playSfx(isCorrect ? 'correct' : 'wrong', 'mg4'); } catch (e) { /* ignore */ } }
- icon.src = isCorrect ? QUIZ_CARRY_MAP_FEEDBACK_IMG.correct : QUIZ_CARRY_MAP_FEEDBACK_IMG.incorrect;
- icon.classList.remove('is-hidden');
- if (isCorrect && scoreWrap && scoreEl) {
- scoreEl.src = QUIZ_CARRY_MAP_FEEDBACK_IMG.scorePlus;
- scoreWrap.classList.remove('is-hidden');
- scoreWrap.setAttribute('aria-hidden', 'false');
- scoreEl.classList.remove('quiz-map-q-feedback-score--pop');
- void scoreEl.offsetWidth;
- scoreEl.classList.add('quiz-map-q-feedback-score--pop');
- } else if (scoreWrap) {
- scoreWrap.classList.add('is-hidden');
- scoreWrap.setAttribute('aria-hidden', 'true');
- }
- window.__quizMapCarryFeedbackT = setTimeout(() => {
- window.__quizMapCarryFeedbackT = null;
- clearQuizMapQuestionCarryFeedback();
- }, QUIZ_MAP_CARRY_FEEDBACK_MS);
- }
-
- /** ค่าเริ่มต้นแผงคำถามบนแผนที่ (ตรงกับ server defaultCarryMapPanelTheme) — ใช้เมื่อยังไม่โหลดจาก API */
- function defaultCarryMapPanelThemePlay() {
- return {
- panelBg: 'rgba(12, 14, 28, 0.88)',
- panelBorder: 'rgba(255, 214, 102, 0.7)',
- borderWidthPx: 2,
- textColor: '#f1f5f9',
- questionFontMinPx: 10,
- questionFontMaxPx: 24,
- };
- }
-
- /** ตรงกับ drawQuizCarryChoiceLabels — carryChoicePlaqueMapScale */
- function quizCarryPlaqueMapScaleClampedPlay() {
- const sc = Number(quizCarryPlaqueMapScale);
- if (!Number.isFinite(sc)) return 1.25;
- return Math.max(0.85, Math.min(2.5, sc));
- }
-
- /**
- * ขนาดตัวอักษรแผงคำถาม DOM ให้เท่าป้ายคำตอบบนพื้น: Math.max(10, Math.min(24, tileSize*zoom*0.24*ps))
- * แล้ว clamp ด้วย questionFontMinPx / questionFontMaxPx จากธีม (ถ้าต้องการใหญ่กว่าป้ายได้โดยยกเพดาน max)
- */
- function quizMapQuestionFontPxLikeCarryPlaques(th, zoomVal) {
- const ts = tileSize * zoomVal;
- const ps = quizCarryPlaqueMapScaleClampedPlay();
- const base = Math.max(10, Math.min(24, ts * 0.24 * ps));
- const fb = defaultCarryMapPanelThemePlay();
- let mn = Number(th && th.questionFontMinPx);
- let mx = Number(th && th.questionFontMaxPx);
- if (!Number.isFinite(mn)) mn = fb.questionFontMinPx;
- if (!Number.isFinite(mx)) mx = fb.questionFontMaxPx;
- mn = Math.round(Math.max(8, Math.min(40, mn)));
- mx = Math.round(Math.max(10, Math.min(72, mx)));
- if (mx < mn) {
- const s = mn;
- mn = mx;
- mx = s;
- }
- return Math.max(mn, Math.min(mx, base));
- }
-
- /**
- * ลด px ทีละ 1 จนเนื้อหาไม่ล้นกล่อง (ไม่ใช้ scrollbar)
- * zoom out กล่องเตี้ยมาก: อนุญาตต่ำกว่า questionFontMinPx ของธีมได้ถึง hardMin (≥6) ไม่ให้บรรทัดถูกตัด
- * เกมถูก/ผิด: แผงมีคลาส quiz-map-question-panel--true-false จัดข้อความกึ่งกลางแนวตั้งในโซน
- */
- function fitQuizMapQuestionFontToPanel(panel, textEl, startPx, minPx) {
- const cs = window.getComputedStyle(panel);
- const padT = parseFloat(cs.paddingTop) || 0;
- const padB = parseFloat(cs.paddingBottom) || 0;
- const padL = parseFloat(cs.paddingLeft) || 0;
- const padR = parseFloat(cs.paddingRight) || 0;
- let kickerReserve = 0;
- if (panel.classList.contains('quiz-map-question-panel--question-mission-live')
- && panel.classList.contains('quiz-map-question-panel--has-kicker')) {
- kickerReserve = 30;
- }
- const availH = Math.max(12, panel.clientHeight - padT - padB - kickerReserve);
- const availW = Math.max(24, panel.clientWidth - padL - padR);
- const themeMin = Math.max(8, Math.floor(Number(minPx) || 8));
- const hardMin = Math.min(themeMin, Math.max(6, Math.floor(availH / 7)));
- let px = Math.round(Math.min(80, Math.max(hardMin, Number(startPx) || hardMin)));
- textEl.style.setProperty('line-height', '1.28', 'important');
- textEl.style.setProperty('width', '100%', 'important');
- textEl.style.setProperty('box-sizing', 'border-box', 'important');
- textEl.style.removeProperty('max-height');
- textEl.style.setProperty('overflow', 'hidden', 'important');
- for (let i = 0; i < 96 && px > hardMin; i++) {
- textEl.style.setProperty('font-size', String(px) + 'px', 'important');
- const sh = textEl.scrollHeight;
- const sw = textEl.scrollWidth;
- if (sh <= availH + 2 && sw <= availW + 2) break;
- px -= 1;
- }
- textEl.style.setProperty('font-size', String(px) + 'px', 'important');
- textEl.style.setProperty('max-height', availH + 'px', 'important');
- }
-
- /** ธีมจาก quiz-settings / join API — ถ้า JSON ไม่มีฟอนต์ให้ใช้ค่าเริ่มต้น */
- function parseCarryMapPanelThemeObject(raw) {
- let t = raw;
- if (typeof t === 'string') {
- try {
- t = JSON.parse(t);
- } catch (e) {
- t = null;
- }
- }
- if (!t || typeof t !== 'object') return null;
- const bw = Number(t.borderWidthPx);
- const borderWidthPx = Number.isFinite(bw) ? Math.max(0, Math.min(12, Math.round(bw))) : 2;
- const fb = defaultCarryMapPanelThemePlay();
- let qMin = Number(t.questionFontMinPx);
- let qMax = Number(t.questionFontMaxPx);
- if (!Number.isFinite(qMin)) qMin = fb.questionFontMinPx;
- if (!Number.isFinite(qMax)) qMax = fb.questionFontMaxPx;
- qMin = Math.round(Math.max(10, Math.min(40, qMin)));
- qMax = Math.round(Math.max(14, Math.min(56, qMax)));
- if (qMax < qMin) {
- const s = qMin;
- qMin = qMax;
- qMax = s;
- }
- return {
- panelBg: String(t.panelBg || '').trim().slice(0, 120),
- panelBorder: String(t.panelBorder || '').trim().slice(0, 120),
- borderWidthPx,
- textColor: String(t.textColor || '').trim().slice(0, 120),
- questionFontMinPx: qMin,
- questionFontMaxPx: qMax,
- };
- }
-
- /**
- * ชั้นทับจาก carryMapPanelTheme ในไฟล์แมป — ฟอนต์ใส่เฉพาะเมื่อ JSON มี key จริง
- * (กันธีมแมปมีแค่สีแล้วไปทับขนาดฟอนต์จาก Admin เป็นค่าเริ่ม 16/24)
- */
- function parseCarryMapPanelThemeMapOverlay(raw) {
- let t = raw;
- if (typeof t === 'string') {
- try {
- t = JSON.parse(t);
- } catch (e) {
- t = null;
- }
- }
- if (!t || typeof t !== 'object') return null;
- const bw = Number(t.borderWidthPx);
- const borderWidthPx = Number.isFinite(bw) ? Math.max(0, Math.min(12, Math.round(bw))) : 2;
- const out = {
- panelBg: String(t.panelBg || '').trim().slice(0, 120),
- panelBorder: String(t.panelBorder || '').trim().slice(0, 120),
- borderWidthPx,
- textColor: String(t.textColor || '').trim().slice(0, 120),
- };
- const hasMin = Object.prototype.hasOwnProperty.call(t, 'questionFontMinPx');
- const hasMax = Object.prototype.hasOwnProperty.call(t, 'questionFontMaxPx');
- if (hasMin || hasMax) {
- const fb = defaultCarryMapPanelThemePlay();
- let qMin = hasMin ? Number(t.questionFontMinPx) : fb.questionFontMinPx;
- let qMax = hasMax ? Number(t.questionFontMaxPx) : fb.questionFontMaxPx;
- if (!Number.isFinite(qMin)) qMin = fb.questionFontMinPx;
- if (!Number.isFinite(qMax)) qMax = fb.questionFontMaxPx;
- qMin = Math.round(Math.max(10, Math.min(40, qMin)));
- qMax = Math.round(Math.max(14, Math.min(56, qMax)));
- if (qMax < qMin) {
- const s = qMin;
- qMin = qMax;
- qMax = s;
- }
- out.questionFontMinPx = qMin;
- out.questionFontMaxPx = qMax;
- }
- return out;
- }
-
- function setQuizCarryMapPanelThemeFromApi(s) {
- quizCarryMapPanelTheme = null;
- if (!s || typeof s !== 'object') return;
- const parsed = parseCarryMapPanelThemeObject(s.carryMapPanelTheme);
- if (!parsed) return;
- quizCarryMapPanelTheme = parsed;
- }
-
- function setQuizMapPanelThemeFromApi(s) {
- quizMapPanelTheme = null;
- if (!s || typeof s !== 'object') return;
- const parsed = parseCarryMapPanelThemeObject(s.quizMapPanelTheme);
- if (!parsed) return;
- quizMapPanelTheme = parsed;
- }
-
- function defaultCarryChoicePlaqueThemePlay() {
- return {
- borderMode: 'neon',
- fixedBorder: 'rgba(122, 200, 255, 0.9)',
- fillBg: 'rgba(12, 10, 20, 0.88)',
- textColor: 'rgba(248, 249, 255, 1)',
- borderWidthPx: 2.5,
- plaqueImageUrl: '',
- };
- }
-
- function parseCarryChoicePlaqueThemeObject(raw) {
- const d = defaultCarryChoicePlaqueThemePlay();
- if (!raw || typeof raw !== 'object') return d;
- const safeColor = (x, fb) => {
- const t = String(x == null ? '' : x).trim().slice(0, 120);
- if (!t || /url\s*\(|expression|@import|\/\*|javascript|<|>|\\0/i.test(t)) return fb;
- if (/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(t)) return t;
- if (/^rgba?\(\s*[^)]+\)$/i.test(t)) return t.replace(/\s+/g, ' ').trim();
- return fb;
- };
- const mode = String(raw.borderMode || '').toLowerCase() === 'fixed' ? 'fixed' : 'neon';
- let bw = Number(raw.borderWidthPx);
- if (!Number.isFinite(bw)) bw = d.borderWidthPx;
- bw = Math.round(Math.max(0, Math.min(8, bw)) * 10) / 10;
- return {
- borderMode: mode,
- fixedBorder: safeColor(raw.fixedBorder, d.fixedBorder),
- fillBg: safeColor(raw.fillBg, d.fillBg),
- textColor: safeColor(raw.textColor, d.textColor),
- borderWidthPx: bw,
- plaqueImageUrl: sanitizeQuizCarryImageUrlClient(raw.plaqueImageUrl),
- };
- }
-
- function buildCarryChoicePlaqueThemesArrayFromApi(s) {
- if (!s || typeof s !== 'object') return null;
- if (Array.isArray(s.carryChoicePlaqueThemes) && s.carryChoicePlaqueThemes.length) {
- const out = [];
- for (let i = 0; i < QUIZ_CARRY_MAX_OPTION_SLOTS; i++) {
- out.push(parseCarryChoicePlaqueThemeObject(s.carryChoicePlaqueThemes[i]));
- }
- return out;
- }
- if (s.carryChoicePlaqueTheme && typeof s.carryChoicePlaqueTheme === 'object') {
- const one = parseCarryChoicePlaqueThemeObject(s.carryChoicePlaqueTheme);
- return Array.from({ length: QUIZ_CARRY_MAX_OPTION_SLOTS }, () => ({ ...one }));
- }
- return null;
- }
-
- function getEffectiveCarryChoicePlaqueThemeForChoice(choiceIndex) {
- const i = Math.max(0, Math.min(QUIZ_CARRY_MAX_OPTION_SLOTS - 1, choiceIndex | 0));
- if (quizCarryChoicePlaqueThemes && quizCarryChoicePlaqueThemes[i]) {
- return quizCarryChoicePlaqueThemes[i];
- }
- return defaultCarryChoicePlaqueThemePlay();
- }
-
- function setQuizCarryChoicePlaqueThemeFromApi(s) {
- quizCarryChoicePlaqueThemes = buildCarryChoicePlaqueThemesArrayFromApi(s);
- }
-
- function sanitizeQuizCarryImageUrlClient(u) {
- const s = String(u == null ? '' : u).trim().slice(0, 512);
- if (!s || /[\s<>'"`]/.test(s)) return '';
- if (s.startsWith('/')) {
- if (!/^\/[\w\-./?#=&%+]+$/i.test(s)) return '';
- return s;
- }
- const low = s.toLowerCase();
- if (!low.startsWith('https://') && !low.startsWith('http://')) return '';
- try {
- const parsed = new URL(s);
- if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') return '';
- return s;
- } catch (e) {
- return '';
- }
- }
-
- /** crossOrigin=anonymous กับ same-origin บางเซิร์ฟ/nginx ทำให้โหลดรูปล้ม — ใช้เฉพาะข้ามโดเมน */
- function quizCarryApplyImageCrossOrigin(img, rawUrl) {
- if (!img) return;
- try {
- img.removeAttribute('crossorigin');
- const u = sanitizeQuizCarryImageUrlClient(rawUrl);
- if (!u || u.startsWith('data:')) return;
- let imgOrigin = '';
- if (u.startsWith('http://') || u.startsWith('https://')) {
- imgOrigin = new URL(u).origin;
- } else if (u.startsWith('/')) {
- imgOrigin = window.location.origin;
- }
- if (imgOrigin && imgOrigin !== window.location.origin) {
- img.crossOrigin = 'anonymous';
- }
- } catch (e) { /* ignore */ }
- }
-
- function preloadQuizCarryChoiceImages(q) {
- if (!q) return;
- if (Array.isArray(q.choiceImageUrls) && q.choiceImageUrls.length) {
- for (let i = 0; i < q.choiceImageUrls.length; i++) {
- const raw = sanitizeQuizCarryImageUrlClient(q.choiceImageUrls[i]);
- if (!raw) continue;
- if (quizCarryChoiceImageCache.has(raw)) continue;
- const im = new Image();
- quizCarryApplyImageCrossOrigin(im, raw);
- im.onload = () => { try { draw(); } catch (e) { /* ignore */ } };
- quizCarryChoiceImageCache.set(raw, im);
- try {
- im.src = raw;
- } catch (e) { /* ignore */ }
- }
- }
- if (Array.isArray(q.choices)) {
- for (let j = 0; j < q.choices.length; j++) {
- const raw2 = getQuizCarryPlaqueImageUrlForIndex(q, j);
- if (!raw2 || quizCarryChoiceImageCache.has(raw2)) continue;
- const im2 = new Image();
- quizCarryApplyImageCrossOrigin(im2, raw2);
- im2.onload = () => { try { draw(); } catch (e) { /* ignore */ } };
- quizCarryChoiceImageCache.set(raw2, im2);
- try {
- im2.src = raw2;
- } catch (e) { /* ignore */ }
- }
- }
- }
-
- function getQuizCarryChoiceImageCached(url) {
- const u = sanitizeQuizCarryImageUrlClient(url);
- if (!u) return null;
- const im = quizCarryChoiceImageCache.get(u);
- if (im && im.complete && im.naturalWidth > 0) return im;
- return null;
- }
-
- function getQuizCarryChoiceImageUrlForIndex(q, idx) {
- if (!q || !Array.isArray(q.choiceImageUrls)) return '';
- const u = q.choiceImageUrls[idx];
- return sanitizeQuizCarryImageUrlClient(u);
- }
-
- /** รูปป้าย: คำถามต่อช่องก่อน แล้วค่อยรูปจากธีมช่อง (carryChoicePlaqueThemes) */
- function getQuizCarryPlaqueImageUrlForIndex(q, idx) {
- const perQ = getQuizCarryChoiceImageUrlForIndex(q, idx);
- if (perQ) return perQ;
- const th = getEffectiveCarryChoicePlaqueThemeForChoice(idx);
- const u = th && th.plaqueImageUrl ? sanitizeQuizCarryImageUrlClient(th.plaqueImageUrl) : '';
- return u || '';
- }
-
- function defaultCarryEmbedCountdownThemePlay() {
- return {
- overlayBackdrop: 'rgba(6, 8, 14, 0.52)',
- innerBg: 'rgba(0, 0, 0, 0.78)',
- innerBorder: 'rgba(94, 234, 212, 0.82)',
- innerBorderWpx: 1,
- innerRadiusPx: 14,
- digitColor: '#ffe066',
- mapDigitCqmin: 78,
- mapDigitCqh: 82,
- mapDigitMaxPx: 220,
- screenDigitVw: 32,
- screenDigitMaxPx: 200,
- };
- }
-
- function parseCarryEmbedCountdownThemeObject(raw) {
- const d = defaultCarryEmbedCountdownThemePlay();
- if (!raw || typeof raw !== 'object') return d;
- const clampN = (v, lo, hi, def) => {
- const n = Number(v);
- if (!Number.isFinite(n)) return def;
- return Math.max(lo, Math.min(hi, Math.round(n)));
- };
- const clipStr = (x, maxLen) => {
- const t = String(x == null ? '' : x).trim().slice(0, maxLen);
- return t || null;
- };
- const safeColor = (x, fb) => {
- const t = clipStr(x, 120);
- if (!t || /url\s*\(|expression|@import|\/\*|javascript|<|>|\\0/i.test(t)) return fb;
- if (/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(t)) return t;
- if (/^rgba?\(\s*[^)]+\)$/i.test(t)) return t.replace(/\s+/g, ' ').trim();
- return fb;
- };
- return {
- overlayBackdrop: safeColor(raw.overlayBackdrop, d.overlayBackdrop),
- innerBg: safeColor(raw.innerBg, d.innerBg),
- innerBorder: safeColor(raw.innerBorder, d.innerBorder),
- innerBorderWpx: clampN(raw.innerBorderWpx, 0, 12, d.innerBorderWpx),
- innerRadiusPx: clampN(raw.innerRadiusPx, 0, 32, d.innerRadiusPx),
- digitColor: safeColor(raw.digitColor, d.digitColor),
- mapDigitCqmin: clampN(raw.mapDigitCqmin, 35, 100, d.mapDigitCqmin),
- mapDigitCqh: clampN(raw.mapDigitCqh, 35, 100, d.mapDigitCqh),
- mapDigitMaxPx: clampN(raw.mapDigitMaxPx, 48, 400, d.mapDigitMaxPx),
- screenDigitVw: clampN(raw.screenDigitVw, 6, 44, d.screenDigitVw),
- screenDigitMaxPx: clampN(raw.screenDigitMaxPx, 48, 220, d.screenDigitMaxPx),
- };
- }
-
- function setQuizCarryEmbedCountdownThemeFromApi(s) {
- quizCarryEmbedCountdownTheme = parseCarryEmbedCountdownThemeObject(s && s.carryEmbedCountdownTheme);
- applyQuizCarryEmbedCountdownThemeToDom();
- }
-
- const CARRY_ECD_VAR_KEYS = [
- '--carry-ecd-overlay',
- '--carry-ecd-inner-bg',
- '--carry-ecd-inner-border',
- '--carry-ecd-inner-border-w',
- '--carry-ecd-inner-radius',
- '--carry-ecd-digit-color',
- '--carry-ecd-map-digit-fs',
- '--carry-ecd-screen-vw',
- '--carry-ecd-screen-max',
- ];
-
- function clearQuizCarryEmbedCountdownThemeDomVars() {
- const root = document.getElementById('quiz-carry-embed-countdown');
- if (!root) return;
- CARRY_ECD_VAR_KEYS.forEach((k) => { try { root.style.removeProperty(k); } catch (e) { /* ignore */ } });
- }
-
- /** ใส่ CSS variables บน #quiz-carry-embed-countdown — อ่านจาก quizCarryEmbedCountdownTheme */
- function applyQuizCarryEmbedCountdownThemeToDom() {
- const root = document.getElementById('quiz-carry-embed-countdown');
- const numEl = document.getElementById('quiz-carry-embed-countdown-num');
- if (!root) return;
- clearQuizCarryEmbedCountdownThemeDomVars();
- const th = quizCarryEmbedCountdownTheme || defaultCarryEmbedCountdownThemePlay();
- root.style.setProperty('--carry-ecd-overlay', th.overlayBackdrop);
- root.style.setProperty('--carry-ecd-inner-bg', th.innerBg);
- root.style.setProperty('--carry-ecd-inner-border', th.innerBorder);
- root.style.setProperty('--carry-ecd-inner-border-w', `${Math.max(0, Math.min(12, Math.round(Number(th.innerBorderWpx) || 1)))}px`);
- root.style.setProperty('--carry-ecd-inner-radius', `${Math.max(0, Math.min(32, Math.round(Number(th.innerRadiusPx) || 12)))}px`);
- root.style.setProperty('--carry-ecd-digit-color', th.digitColor);
- const cqmin = Math.max(35, Math.min(100, Math.round(Number(th.mapDigitCqmin) || 78)));
- const cqh = Math.max(35, Math.min(100, Math.round(Number(th.mapDigitCqh) || 82)));
- const mpx = Math.max(48, Math.min(400, Math.round(Number(th.mapDigitMaxPx) || 200)));
- root.style.setProperty('--carry-ecd-map-digit-fs', `clamp(14px, min(${cqmin}cqmin, ${cqh}cqh), ${mpx}px)`);
- const vw = Math.max(6, Math.min(44, Math.round(Number(th.screenDigitVw) || 28)));
- const smx = Math.max(48, Math.min(220, Math.round(Number(th.screenDigitMaxPx) || 132)));
- root.style.setProperty('--carry-ecd-screen-vw', `${vw}vw`);
- root.style.setProperty('--carry-ecd-screen-max', `${smx}px`);
- if (numEl && String(numEl.tagName || '').toUpperCase() !== 'IMG') {
- numEl.style.textShadow = '0 0 0.45em currentColor, 0 4px 14px rgba(0,0,0,0.55)';
- } else if (numEl) {
- try { numEl.style.removeProperty('text-shadow'); } catch (e) { /* ignore */ }
- }
- }
-
- function setCountdown321QuestionAssetGraphic(numEl, n) {
- if (!numEl) return;
- const d = Math.max(1, Math.min(3, n));
- /* เสียงนับถอยหลัง (เล่นครั้งเดียวต่อเลข กัน re-render ยิงซ้ำ) */
- if (window.jdSound && window.__jdLastCountN !== d) { window.__jdLastCountN = d; try { window.jdSound.playSfx('time'); } catch (e) { /* ignore */ } }
- if (String(numEl.tagName || '').toUpperCase() === 'IMG') {
- numEl.src = COUNTDOWN_321_IMG_BASE + d + '.png';
- numEl.alt = String(d);
- } else {
- numEl.textContent = String(d);
- }
- }
-
- /** default ← quiz-settings/API ← แมป (สีจากแมปทับได้; ฟอนต์จากแมปเฉพาะเมื่อแมประบุ key) */
- function getEffectiveCarryMapPanelThemeForApply() {
- const d = defaultCarryMapPanelThemePlay();
- const api = quizCarryMapPanelTheme != null && typeof quizCarryMapPanelTheme === 'object' ? quizCarryMapPanelTheme : null;
- let merged = api ? { ...d, ...api } : { ...d };
- if (mapData && mapData.carryMapPanelTheme != null) {
- const mp = parseCarryMapPanelThemeMapOverlay(mapData.carryMapPanelTheme);
- if (mp) merged = { ...merged, ...mp };
- }
- return merged;
- }
-
- /** เกมถูก/ผิด: default ← quizMapPanelTheme (API) ← quizMapPanelTheme บนแมป (ถ้ามี) */
- function getEffectiveQuizMapPanelThemeForApply() {
- const d = defaultCarryMapPanelThemePlay();
- const api = quizMapPanelTheme != null && typeof quizMapPanelTheme === 'object' ? quizMapPanelTheme : null;
- let merged = api ? { ...d, ...api } : { ...d };
- if (mapData && mapData.quizMapPanelTheme != null) {
- const mp = parseCarryMapPanelThemeMapOverlay(mapData.quizMapPanelTheme);
- if (mp) merged = { ...merged, ...mp };
- }
- return merged;
- }
-
- function paintQuizMapPanelTheme(panel, textEl, th) {
- if (!panel || !textEl || !th) return;
- clearQuizMapPanelThemeInline(panel, textEl);
- const bgStr = th.panelBg != null ? String(th.panelBg).trim() : '';
- const brStr = th.panelBorder != null ? String(th.panelBorder).trim() : '';
- const txStr = th.textColor != null ? String(th.textColor).trim() : '';
- const wRaw = Number(th.borderWidthPx);
- const w = Number.isFinite(wRaw) ? Math.max(0, Math.min(12, Math.round(wRaw))) : 0;
- const bgUse = bgStr || 'transparent';
- const brUse = brStr || 'transparent';
- const txUse = txStr || '#f1f5f9';
- panel.style.setProperty('--qmap-bg', bgUse);
- panel.style.setProperty('--qmap-border', brUse);
- panel.style.setProperty('--qmap-border-w', String(w) + 'px');
- panel.style.setProperty('--qmap-shadow', 'none');
- textEl.style.setProperty('--qmap-text', txUse);
- textEl.style.setProperty('--qmap-text-shadow', 'none');
- /* โหลด play.html แบบแคชเก่า (ไม่มี var) ยังต้องทับได้ — ใช้ !important คู่กับตัวแปร */
- panel.style.setProperty('background', bgUse, 'important');
- panel.style.setProperty('border', String(w) + 'px solid ' + brUse, 'important');
- panel.style.setProperty('box-shadow', 'none', 'important');
- textEl.style.setProperty('color', txUse, 'important');
- textEl.style.setProperty('text-shadow', 'none', 'important');
- }
-
- function applyQuizCarryMapPanelThemeIfNeeded(panel, textEl) {
- if (!panel || !textEl) return;
- if (!isQuizCarry()) {
- clearQuizMapPanelThemeInline(panel, textEl);
- return;
- }
- paintQuizMapPanelTheme(panel, textEl, getEffectiveCarryMapPanelThemeForApply());
- }
-
- function applyQuizTrueFalseMapPanelThemeIfNeeded(panel, textEl) {
- if (!panel || !textEl) return;
- if (!isQuiz() || isQuizCarry()) return;
- paintQuizMapPanelTheme(panel, textEl, getEffectiveQuizMapPanelThemeForApply());
- }
-
- function syncPlayQuizMapPanel() {
- const panel = document.getElementById('quiz-map-question-panel');
- const textEl = document.getElementById('quiz-map-question-text');
- if (!panel || !textEl || !mapData) return;
- /* เอดิเตอร์ embed: ซ่อนแผงทองเฉพาะ quiz ทั่วไป — แมปภารกิจ mng8a80o ต้องโชว์คำถามในโซนที่วาด (quizQuestionArea) */
- if (previewMode && editorEmbedReturn && !isQuizCarry() && !(isQuiz() && isQuizQuestionMissionUiMapPlay())) {
- clearQuizMapQuestionCarryFeedback();
- panel.classList.add('is-hidden');
- panel.setAttribute('aria-hidden', 'true');
- clearQuizMapPanelThemeInline(panel, textEl);
- return;
- }
- if (isQuizBattle()) {
- clearQuizMapQuestionCarryFeedback();
- panel.classList.add('is-hidden');
- panel.setAttribute('aria-hidden', 'true');
- clearQuizMapPanelThemeInline(panel, textEl);
- return;
- }
- if (!isQuiz() && !isQuizCarry()) {
- clearQuizMapQuestionCarryFeedback();
- return;
- }
- const bounds = isQuiz()
- ? getQuizQuestionAreaTileBounds(mapData)
- : (getQuizCarryQuestionAreaTileBounds(mapData) || getQuizCarryHubTileBounds(mapData));
- const text = (playQuizText || '').trim();
- if (!bounds || !text) {
- clearQuizMapQuestionCarryFeedback();
- panel.classList.add('is-hidden');
- panel.setAttribute('aria-hidden', 'true');
- clearQuizMapPanelThemeInline(panel, textEl);
- return;
- }
- const qmCenter = isQuizQuestionMissionRenderLockPlay() ? getQuizQuestionMissionMapCenterWorldPxPlay() : null;
- const carryCam = !qmCenter && isQuizCarry() ? getQuizCarryMapCameraWorldCenterPxPlay() : null;
- const camX = qmCenter ? qmCenter.cx : (carryCam ? carryCam.cx : me.x * tileSize);
- const camY = qmCenter ? qmCenter.cy : (carryCam ? carryCam.cy : me.y * tileSize);
- const zDom = playDomSyncZoom();
- const left = (bounds.minX * tileSize - camX) * zDom + canvas.width / 2;
- const top = (bounds.minY * tileSize - camY) * zDom + canvas.height / 2;
- const wPx = (bounds.maxX - bounds.minX + 1) * tileSize * zDom;
- const hPx = (bounds.maxY - bounds.minY + 1) * tileSize * zDom;
- textEl.textContent = text;
- /* พักระหว่างข้อ → เอาคำถามออก โชว์ "รอคำถามข้อต่อไป" (MG1 + MG4) */
- const _qBetween = (isQuiz() && !isQuizCarry() && quizBetweenActive) || (isQuizCarry() && quizCarryBetweenActive);
- const _qWinnerBanner = isQuizCarry() && quizCarryResultBannerUntil > Date.now() && quizCarryResultBanner;
- if (_qWinnerBanner) textEl.textContent = quizCarryResultBanner; /* MG4: โชว์ใครตอบถูกก่อน */
- else if (_qBetween) textEl.textContent = 'รอคำถามข้อต่อไป';
- panel.style.left = Math.round(left) + 'px';
- panel.style.top = Math.round(top) + 'px';
- panel.style.width = Math.round(Math.max(48, wPx)) + 'px';
- panel.style.height = Math.round(Math.max(40, hPx)) + 'px';
- panel.classList.remove('is-hidden');
- panel.setAttribute('aria-hidden', 'false');
- if (isQuiz() && !isQuizCarry()) {
- panel.classList.add('quiz-map-question-panel--true-false');
- } else {
- panel.classList.remove('quiz-map-question-panel--true-false');
- }
- if (isQuizCarry()) {
- applyQuizCarryMapPanelThemeIfNeeded(panel, textEl);
- } else if (isQuiz()) {
- applyQuizTrueFalseMapPanelThemeIfNeeded(panel, textEl);
- } else {
- clearQuizMapPanelThemeInline(panel, textEl);
- }
- const thFont = isQuizCarry()
- ? getEffectiveCarryMapPanelThemeForApply()
- : getEffectiveQuizMapPanelThemeForApply();
- const startFontPx = quizMapQuestionFontPxLikeCarryPlaques(thFont, zDom);
- const mnFont = Math.max(8, Math.round(Number(thFont.questionFontMinPx) || 10));
- /* ไม่โหลด hud-question-plaque.png อัตโนมัติ — บนเซิร์ฟมักไม่มีไฟล์ → 404 ใน Network; ใช้คลาส + CSS แทน (อัปโหลด PNG แล้วค่อยผูกทีหลังได้) */
- if (isQuiz() && isQuizQuestionMissionUiMapPlay() && quizQuestionMissionPhase === 'live') {
- panel.classList.add('quiz-map-question-panel--question-mission-live');
- } else {
- panel.classList.remove('quiz-map-question-panel--question-mission-live');
- if (panel.dataset.qmPlaqueTry) {
- panel.style.removeProperty('background-image');
- panel.style.removeProperty('background-size');
- panel.style.removeProperty('background-position');
- delete panel.dataset.qmPlaqueTry;
- }
- }
- panel.classList.toggle(
- 'quiz-map-question-panel--tf-mock-qz',
- !!(isQuiz() && isQuizQuestionMissionUiMapPlay() && quizQuestionMissionPhase === 'live' && isMissionMockHudPlay()),
- );
- const kickerEl = document.getElementById('quiz-map-question-kicker');
- const missionLiveQ = isQuiz() && isQuizQuestionMissionUiMapPlay() && quizQuestionMissionPhase === 'live';
- const inReadOrAnswer = playQuizPhaseLocal === 'read' || playQuizPhaseLocal === 'answer';
- if (kickerEl) {
- let showK = false;
- let line = '';
- if (missionLiveQ && inReadOrAnswer) {
- const qi = Math.max(0, Number(playQuizQuestionIndex) || 0);
- const qt = Math.max(0, Number(playQuizQuestionTotal) || 0);
- if (qi > 0 && qt > 0) {
- line = '- Quiz ' + qi + ' / ' + qt + ' -';
- showK = true;
- } else if (qi > 0) {
- line = '- Quiz ' + qi + ' -';
- showK = true;
- }
- }
- if (showK && line) {
- kickerEl.textContent = line;
- kickerEl.classList.remove('is-hidden');
- kickerEl.setAttribute('aria-hidden', 'false');
- panel.classList.add('quiz-map-question-panel--has-kicker');
- } else {
- kickerEl.textContent = '';
- kickerEl.classList.add('is-hidden');
- kickerEl.setAttribute('aria-hidden', 'true');
- panel.classList.remove('quiz-map-question-panel--has-kicker');
- }
- }
- /* sub-label ใต้คำถาม: ช่วงอ่านคำถาม → "📖 อ่านคำถาม" (สีทอง) · ช่วงตอบ/พัก → ซ่อน (MG1 + MG4) */
- const subEl = document.getElementById('quiz-map-question-subphase');
- if (subEl) {
- /* MG4 เท่านั้น: label "📖 อ่านคำถาม" ใต้คำถามในแผง (MG1 ย้ายไปใต้ TIME แล้ว) */
- const _readNow = !_qBetween && quizCarryReadFreezeActive();
- if (_readNow) {
- subEl.textContent = '📖 อ่านคำถาม';
- subEl.style.color = '#ffd34d';
- subEl.classList.remove('is-hidden');
- subEl.setAttribute('aria-hidden', 'false');
- } else {
- subEl.textContent = '';
- subEl.style.removeProperty('color');
- subEl.classList.add('is-hidden');
- subEl.setAttribute('aria-hidden', 'true');
- }
- }
- fitQuizMapQuestionFontToPanel(panel, textEl, startFontPx, mnFont);
- }
-
- /** โซนเดียวกับแผงคำถามบนแผนที่ — ยึด timeup ให้ตรงกล่อง #quiz-map-question-panel (ห้ามคำนวณซ้ำแล้วคลาด) */
- function syncQuizCarryTimeupDeskLayerPosition() {
- const layer = document.getElementById('quiz-carry-timeup-desk-layer');
- if (!layer || layer.classList.contains('is-hidden')) return;
- const anchor = layer.querySelector('.qc-timeup-desk-anchor')
- || layer.querySelector('.qc-timeup-desk-inner')
- || (() => {
- const img = document.getElementById('quiz-carry-timeup-txt-img');
- return img && img.parentElement && img.parentElement !== layer ? img.parentElement : null;
- })();
- if (!anchor || !canvas) return;
- const clearToFullStack = () => {
- anchor.style.left = '0';
- anchor.style.top = '0';
- anchor.style.width = '100%';
- anchor.style.height = '100%';
- };
- const stack = document.getElementById('play-canvas-stack');
- const panel = document.getElementById('quiz-map-question-panel');
- if (stack && panel && !panel.classList.contains('is-hidden')) {
- try {
- const sr = stack.getBoundingClientRect();
- const pr = panel.getBoundingClientRect();
- const rw = pr.width;
- const rh = pr.height;
- if (rw >= 8 && rh >= 8 && sr.width > 0 && sr.height > 0) {
- anchor.style.left = Math.round(pr.left - sr.left) + 'px';
- anchor.style.top = Math.round(pr.top - sr.top) + 'px';
- anchor.style.width = Math.round(rw) + 'px';
- anchor.style.height = Math.round(rh) + 'px';
- return;
- }
- } catch (e) { /* fallback ด้านล่าง */ }
- }
- const pl = panel && panel.style && String(panel.style.left || '').trim();
- const pt = panel && panel.style && String(panel.style.top || '').trim();
- const pw = panel && panel.style && String(panel.style.width || '').trim();
- const ph = panel && panel.style && String(panel.style.height || '').trim();
- if (pl && pt && pw && ph) {
- anchor.style.left = pl;
- anchor.style.top = pt;
- anchor.style.width = pw;
- anchor.style.height = ph;
- return;
- }
- if (!mapData || mapData.gameType !== 'quiz_carry') {
- clearToFullStack();
- return;
- }
- const bounds = getQuizCarryQuestionAreaTileBounds(mapData) || getQuizCarryHubTileBounds(mapData);
- if (!bounds) {
- clearToFullStack();
- return;
- }
- const cc = getQuizCarryMapCameraWorldCenterPxPlay();
- const camX = cc ? cc.cx : me.x * tileSize;
- const camY = cc ? cc.cy : me.y * tileSize;
- const zDom = playDomSyncZoom();
- const left = (bounds.minX * tileSize - camX) * zDom + canvas.width / 2;
- const top = (bounds.minY * tileSize - camY) * zDom + canvas.height / 2;
- const wPx = (bounds.maxX - bounds.minX + 1) * tileSize * zDom;
- const hPx = (bounds.maxY - bounds.minY + 1) * tileSize * zDom;
- anchor.style.left = Math.round(left) + 'px';
- anchor.style.top = Math.round(top) + 'px';
- anchor.style.width = Math.round(Math.max(48, wPx)) + 'px';
- anchor.style.height = Math.round(Math.max(40, hPx)) + 'px';
- }
-
- function carryEmbedCountdownAnchorResolved() {
- if (!mapData || !isQuizCarry()) return 'screen';
- const v = mapData.carryEmbedCountdownAnchor;
- if (v === 'grid' || v === 'map') return v;
- return 'screen';
- }
-
- function resetQuizCarryEmbedCountdownLayoutDom() {
- const ov = document.getElementById('quiz-carry-embed-countdown');
- const inner = document.getElementById('quiz-carry-embed-countdown-inner');
- if (ov) ov.classList.remove('quiz-carry-embed-countdown--map-anchor');
- if (inner) {
- inner.classList.remove('quiz-carry-embed-countdown-inner--map-rect');
- inner.style.position = '';
- inner.style.left = '';
- inner.style.top = '';
- inner.style.width = '';
- inner.style.height = '';
- inner.style.transform = '';
- inner.style.maxWidth = '';
- inner.style.boxSizing = '';
- inner.style.display = '';
- inner.style.margin = '';
- }
- }
-
- /** พรีวิว embed: วางกล่อง 3–2–1 กลางจอ / ชิดโซนทองหรือโซนกลาง / ชิดกริด carryEmbedCountdownArea — ตาม carryEmbedCountdownAnchor */
- function syncQuizCarryEmbedCountdownLayout() {
- if (!quizCarryEmbedMissionFlowActive() || !mapData) {
- resetQuizCarryEmbedCountdownLayoutDom();
- return;
- }
- const ov = document.getElementById('quiz-carry-embed-countdown');
- const inner = document.getElementById('quiz-carry-embed-countdown-inner');
- const canvasEl = document.getElementById('game-canvas');
- if (!ov || !inner || !canvasEl) return;
- if (ov.classList.contains('is-hidden')) {
- resetQuizCarryEmbedCountdownLayoutDom();
- return;
- }
- const anchor = carryEmbedCountdownAnchorResolved();
- if (anchor === 'screen') {
- resetQuizCarryEmbedCountdownLayoutDom();
- return;
- }
- let bounds = null;
- if (anchor === 'grid') {
- bounds = getTileBoundsForOnesGrid(mapData.carryEmbedCountdownArea);
- if (!bounds) {
- resetQuizCarryEmbedCountdownLayoutDom();
- return;
- }
- } else {
- bounds = getQuizCarryQuestionAreaTileBounds(mapData) || getQuizCarryHubTileBounds(mapData);
- if (!bounds) {
- resetQuizCarryEmbedCountdownLayoutDom();
- return;
- }
- }
- const cc = getQuizCarryMapCameraWorldCenterPxPlay();
- const camX = cc ? cc.cx : me.x * tileSize;
- const camY = cc ? cc.cy : me.y * tileSize;
- const zDom = playDomSyncZoom();
- const l = (bounds.minX * tileSize - camX) * zDom + canvasEl.width / 2;
- const t = (bounds.minY * tileSize - camY) * zDom + canvasEl.height / 2;
- const wPx = (bounds.maxX - bounds.minX + 1) * tileSize * zDom;
- const hPx = (bounds.maxY - bounds.minY + 1) * tileSize * zDom;
- const r = canvasEl.getBoundingClientRect();
- const sl = r.left + l;
- const st = r.top + t;
- ov.classList.add('quiz-carry-embed-countdown--map-anchor');
- inner.classList.add('quiz-carry-embed-countdown-inner--map-rect');
- inner.style.position = 'fixed';
- inner.style.left = Math.round(sl) + 'px';
- inner.style.top = Math.round(st) + 'px';
- inner.style.width = Math.round(Math.max(100, wPx)) + 'px';
- inner.style.height = Math.round(Math.max(72, hPx)) + 'px';
- inner.style.transform = 'none';
- inner.style.boxSizing = 'border-box';
- inner.style.display = 'flex';
- inner.style.flexDirection = 'column';
- inner.style.alignItems = 'center';
- inner.style.justifyContent = 'center';
- inner.style.margin = '0';
- inner.style.maxWidth = 'none';
- }
-
- /** quiz_carry + embed: คำถามไปที่แผงทองบนแผนที่ / ใน overlay นับถอยหลัง — ไม่ใช้แถบบน */
- function syncQuizCarryEmbedQuestionStrip() {
- const wrap = document.getElementById('quiz-carry-embed-q-strip');
- const p = document.getElementById('quiz-carry-embed-q-strip-text');
- if (!wrap || !p) return;
- wrap.classList.remove('quiz-carry-embed-q-strip--countdown');
- wrap.classList.add('is-hidden');
- wrap.setAttribute('aria-hidden', 'true');
- }
-
- function updatePlayQuizTimerDisplay() {
- const el = document.getElementById('quiz-game-timer');
- if (!el) return;
- if (!playQuizPhaseEndsAt) {
- el.textContent = '';
- return;
- }
- const s = Math.max(0, Math.ceil((playQuizPhaseEndsAt - serverNow()) / 1000));
- el.textContent = s + ' วินาที';
- }
-
- function clampPreviewMs(n, def, minV, maxV) {
- const v = Number(n);
- if (Number.isNaN(v)) return def;
- return Math.max(minV, Math.min(maxV, Math.floor(v)));
- }
-
- function clampCarrySessionLen(n, def) {
- const v = Number(n);
- if (Number.isNaN(v)) return def;
- return Math.max(0, Math.min(500, Math.floor(v)));
- }
-
- function buildQuizPoolFromMap(md) {
- if (!md || !Array.isArray(md.quizQuestions)) return [];
- return md.quizQuestions
- .filter((q) => q && String(q.text || '').trim())
- .map((q) => ({ text: String(q.text).trim(), answerTrue: !!q.answerTrue }));
- }
-
- function shufflePreviewQuizQuestionsPlay(arr) {
- const a = (arr || []).slice();
- for (let i = a.length - 1; i > 0; i--) {
- const j = Math.floor(Math.random() * (i + 1));
- [a[i], a[j]] = [a[j], a[i]];
- }
- return a;
- }
-
- /** ตรงกับ server clampQuizRoundQuestionCount — 1–50 ค่าเริ่ม 10 */
- function clampPreviewQuizRoundQuestionCount(settings) {
- const v = Number(settings && settings.quizRoundQuestionCount);
- if (!Number.isFinite(v)) return 10;
- return Math.max(1, Math.min(50, Math.floor(v)));
- }
-
- function finishPreviewQuizSessionPlay() {
- previewQuizStep = 'done';
- playQuizPhaseLocal = null;
- previewQuizCurrent = null;
- playQuizPhaseEndsAt = 0;
- if (playQuizTimerInterval) {
- clearInterval(playQuizTimerInterval);
- playQuizTimerInterval = null;
- }
- const qov = document.getElementById('quiz-game-overlay');
- if (qov) qov.classList.add('is-hidden');
- const mapPanel = document.getElementById('quiz-map-question-panel');
- if (mapPanel) {
- mapPanel.classList.add('is-hidden');
- mapPanel.setAttribute('aria-hidden', 'true');
- }
- if (isQuizQuestionMissionUiMapPlay()) {
- quizQuestionMissionPhase = 'ended';
- applyQuizQuestionMissionPanelImages();
- const mission = quizQuestionMissionBuildPayload();
- showGauntletCrownMissionOverlay(mission);
- return;
- }
- playQuizText = 'ครบทุกข้อในรอบทดสอบแล้ว';
- if (qov) qov.classList.remove('is-hidden');
- const phaseEl = document.getElementById('quiz-game-phase-label');
- if (phaseEl) phaseEl.textContent = '[ทดสอบ] จบรอบ';
- const qEl = document.getElementById('quiz-game-question');
- if (qEl) qEl.textContent = playQuizText;
- const leg = document.getElementById('quiz-play-legend');
- if (leg) leg.textContent = 'จำนวนข้อต่อรอบใช้ค่าเดียวกับ Admin (quizRoundQuestionCount)';
- }
-
- function clearPreviewBotAnswerPaths() {
- if (!playBotsEnabled()) return;
- others.forEach((o, id) => {
- if (!isPreviewBotId(id)) return;
- o.botPath = [];
- o.botAnswerWander = false;
- });
- }
-
- function resetPreviewBotsQuizState() {
- if (!playBotsEnabled()) return;
- others.forEach((o, id) => {
- if (!isPreviewBotId(id)) return;
- o.quizCannotTrue = false;
- o.quizCannotFalse = false;
- o.botPath = [];
- o.botAnswerWander = false;
- });
- }
-
- function applyPreviewReadPhase(q, poolLen) {
- clearPreviewBotAnswerPaths();
- previewQuizStep = 'read';
- playQuizPhaseLocal = 'read';
- previewQuizCurrent = q;
- playQuizText = q.text;
- playQuizPhaseEndsAt = Date.now() + previewQuizTiming.readMs;
- playQuizQuestionIndex = previewQuizQIndex + 1;
- playQuizQuestionTotal = Math.max(0, Number(poolLen) || 0);
- const phaseEl = document.getElementById('quiz-game-phase-label');
- if (phaseEl) {
- phaseEl.textContent = '[ทดสอบ] อ่านคำถาม · ข้อ ' + (previewQuizQIndex + 1) + ' / ' + poolLen;
- }
- const qEl = document.getElementById('quiz-game-question');
- if (qEl) qEl.textContent = playQuizText;
- const leg = document.getElementById('quiz-play-legend');
- if (leg) leg.textContent = 'โซนทองบนแผนที่ = ข้อความคำถาม · ฟ้า = จริง · ชมพู = เท็จ';
- }
-
- function applyPreviewAnswerPhase() {
- previewQuizStep = 'answer';
- playQuizPhaseLocal = 'answer';
- playQuizPhaseEndsAt = Date.now() + previewQuizTiming.answerMs;
- const phaseEl = document.getElementById('quiz-game-phase-label');
- if (phaseEl) phaseEl.textContent = '[ทดสอบ] เดินไปโซน ถูก / ผิด';
- const leg = document.getElementById('quiz-play-legend');
- if (leg && previewQuizCurrent) {
- leg.textContent = previewQuizCurrent.answerTrue
- ? 'เฉลย (ทดสอบ): คำตอบที่ถูกคือ «จริง» — โซนสีฟ้า'
- : 'เฉลย (ทดสอบ): คำตอบที่ถูกคือ «เท็จ» — โซนสีชมพู';
- }
- previewBotsPrepareAnswerRound();
- }
-
- function applyPreviewBetweenPhase() {
- clearPreviewBotAnswerPaths();
- previewQuizStep = 'between';
- playQuizPhaseLocal = null;
- playQuizText = 'ข้อถัดไปกำลังจะมา…';
- playQuizPhaseEndsAt = Date.now() + previewQuizTiming.betweenMs;
- const phaseEl = document.getElementById('quiz-game-phase-label');
- if (phaseEl) phaseEl.textContent = '[ทดสอบ] พักระหว่างข้อ';
- const qEl = document.getElementById('quiz-game-question');
- if (qEl) qEl.textContent = playQuizText;
- const leg = document.getElementById('quiz-play-legend');
- if (leg) leg.textContent = 'รอสักครู่แล้วไปข้อถัดไป (สับแล้วตามจำนวนข้อต่อรอบ)';
- }
-
- function quizCellOnPlay(grid, x, y) {
- return !!(grid && grid[y] && grid[y][x] === 1);
- }
-
- /** ทั้ง footprint ทับโซน จริง/เท็จ — หลังตอบผิดควรถูกดีดออกแล้ว ไม่วาดทับ (กันจุดเล็กค้างกลาง SAFE/SCAM) */
- function playQuizPeerFootprintOverlapsAnswerZone(ax, ay) {
- if (!mapData || !isQuiz()) return false;
- for (const k of quizTilesFootprintPlay(ax, ay)) {
- const parts = k.split(',');
- const fx = +parts[0];
- const fy = +parts[1];
- if (quizCellOnPlay(mapData.quizTrueArea, fx, fy) || quizCellOnPlay(mapData.quizFalseArea, fx, fy)) return true;
- }
- return false;
- }
-
- /** ไม่วาดตัวที่โดนล็อก/เคยตอบผิดแล้วแต่ยังทับโซน (กันจุดเล็กค้าง + desync มัลติเพลย์) */
- function playQuizAvatarHideWhileOverlappingAnswerZone(ent, entId, ax, ay) {
- if (!playQuizPeerFootprintOverlapsAnswerZone(ax, ay)) return false;
- if (entId === myId || ent === me) {
- return !!(playQuizPlayerLocal && playQuizPlayerLocal.cannotTrue && playQuizPlayerLocal.cannotFalse);
- }
- const locked = !!(ent && ent.quizCannotTrue && ent.quizCannotFalse);
- const everWrong = !!playQuizEverWrong[String(entId)];
- return locked || everWrong;
- }
-
- function spawnTileWalkablePlay(md, x, y) {
- const w = md.width || 20;
- const h = md.height || 15;
- if (x < 0 || x >= w || y < 0 || y >= h) return false;
- const row = md.objects && md.objects[y];
- if (row && row[x] === 1) return false;
- return true;
- }
-
- function spawnFootprintFitsPlay(md, anchorX, anchorY) {
- if (!spawnTileWalkablePlay(md, anchorX, anchorY)) return false;
- const cellsW = Math.max(1, Math.min(4, Math.floor(Number(md.characterCellsW) || Number(md.characterCells) || 1)));
- const cellsH = Math.max(1, Math.min(4, Math.floor(Number(md.characterCellsH) || Number(md.characterCells) || 1)));
- const w = md.width || 20;
- const h = md.height || 15;
- const maxX = Math.min(w, anchorX + cellsW);
- const maxY = Math.min(h, anchorY + cellsH);
- for (let ty = anchorY; ty < maxY; ty++) {
- for (let tx = anchorX; tx < maxX; tx++) {
- if (!spawnTileWalkablePlay(md, tx, ty)) return false;
- }
- }
- return true;
- }
-
- /** เหมือน server pickRandomSpawnFromMap — สุ่มด้วย crypto.getRandomValues */
- function pickRandomSpawnFromMapPlay(md) {
- const fallback = md.spawn || { x: 1, y: 1 };
- const fx = Number.isFinite(Number(fallback.x)) ? Number(fallback.x) : 1;
- const fy = Number.isFinite(Number(fallback.y)) ? Number(fallback.y) : 1;
- const grid = md.spawnArea;
- if (!grid || !Array.isArray(grid)) return { x: fx, y: fy };
- const w = md.width || 20;
- const h = md.height || 15;
- const pool = [];
- for (let y = 0; y < h; y++) {
- const row = grid[y];
- if (!row) continue;
- for (let x = 0; x < w; x++) {
- if (Number(row[x]) === 1 && spawnFootprintFitsPlay(md, x, y)) pool.push({ x, y });
- }
- }
- if (!pool.length) return { x: fx, y: fy };
- const u = new Uint32Array(1);
- (typeof crypto !== 'undefined' && crypto.getRandomValues)
- ? crypto.getRandomValues(u)
- : (u[0] = (Math.floor(Math.random() * 0xffffffff) >>> 0));
- const pick = pool[u[0] % pool.length];
- return { x: pick.x, y: pick.y };
- }
-
- function parseLobbyPlayerSpawnsFromMapPlay(md) {
- const w = md.width || 20;
- const h = md.height || 15;
- const out = [null, null, null, null, null, null];
- const raw = md && md.lobbyPlayerSpawns;
- if (!Array.isArray(raw)) return out;
- for (let i = 0; i < 6 && i < raw.length; i++) {
- const cell = raw[i];
- if (!cell || typeof cell !== 'object') continue;
- const x = Math.floor(Number(cell.x));
- const y = Math.floor(Number(cell.y));
- if (!Number.isFinite(x) || !Number.isFinite(y)) continue;
- if (x < 0 || x >= w || y < 0 || y >= h) continue;
- out[i] = { x, y };
- }
- return out;
- }
-
- /** jump_survive: ช่อง P1–P6 ที่วาดแบบยาน (shooterSpawnSlots) เติมใน slots6 เมื่อ lobbyPlayerSpawns ว่าง */
- function augmentLobbySlotsFromShooterPaintJumpSurvivePlay(md, slots6) {
- if (!md || md.gameType !== 'jump_survive' || !Array.isArray(slots6)) return;
- const g = md.shooterSpawnSlots;
- if (!g) return;
- const w = md.width || 20, h = md.height || 15;
- for (let slot = 1; slot <= 6; slot++) {
- const idx = slot - 1;
- if (slots6[idx]) continue;
- let found = false;
- for (let yy = 0; yy < h && !found; yy++) {
- const row = g[yy];
- if (!row) continue;
- for (let xx = 0; xx < w; xx++) {
- if (row[xx] === slot) {
- slots6[idx] = { x: xx, y: yy };
- found = true;
- break;
- }
- }
- }
- }
- }
-
- /** จุดเกิด Quiz Battle — ต้องอยู่บนเส้นทาง (กล่องสไปรต์) ไม่ใช่แค่ snap จาก spawnArea นอกเลน */
- function collectQuizBattleValidSpawnCentersPlay(md) {
- const out = [];
- if (!md || md.gameType !== 'quiz_battle' || !quizBattlePathModeActive(md)) return out;
- const w = md.width || 20, h = md.height || 15;
- const g = md.quizBattlePathArea;
- const seen = new Set();
- const prevMap = mapData;
- mapData = md;
- try {
- for (let ty = 0; ty < h; ty++) {
- for (let tx = 0; tx < w; tx++) {
- if (!g[ty] || g[ty][tx] !== 1) continue;
- for (const [nx, ny] of [[tx + 0.5, ty + 0.5], [tx + 0.01, ty + 0.01]]) {
- const key = nx.toFixed(3) + ',' + ny.toFixed(3);
- if (seen.has(key)) continue;
- if (!quizBattleSnapTargetValidPlay(nx, ny)) continue;
- seen.add(key);
- out.push({ tx, ty, x: nx, y: ny });
- }
- }
- }
- } finally {
- mapData = prevMap;
- }
- out.sort((a, b) => a.ty - b.ty || a.tx - b.tx || a.x - b.x);
- return out;
- }
-
- /** จุดโลกใกล้ pref — ลองกลางช่องก่อน แล้วหาใน spawnArea (ฟ้า) ที่วางตัวได้ */
- function quizBattleNearestValidSpawnWorldPlay(md, prefTx, prefTy) {
- const ptx = Math.floor(Number(prefTx)) || 0;
- const pty = Math.floor(Number(prefTy)) || 0;
- const prevMap = mapData;
- mapData = md;
- try {
- for (const [nx, ny] of [[ptx + 0.5, pty + 0.5], [ptx + 0.01, pty + 0.01]]) {
- if (quizBattleSpawnWallClearPlay(md, nx, ny)) return { x: nx, y: ny };
- }
- const pool = collectQuizBattleSpawnPoolPlay(md);
- if (pool.length) {
- let best = pool[0], bestD = Infinity;
- for (const c of pool) {
- const d = Math.abs(c.tx - ptx) + Math.abs(c.ty - pty);
- if (d < bestD) { bestD = d; best = c; }
- }
- return { x: best.x, y: best.y };
- }
- const valid = collectQuizBattleValidSpawnCentersPlay(md);
- if (!valid.length) return { x: ptx + 0.5, y: pty + 0.5 };
- let best = valid[0], bestD = Infinity;
- for (const c of valid) {
- const d = Math.abs(c.tx - ptx) + Math.abs(c.ty - pty);
- if (d < bestD) { bestD = d; best = c; }
- }
- return { x: best.x, y: best.y };
- } finally {
- mapData = prevMap;
- }
- }
-
- /** ช่อง spawnArea (ฟ้า) ที่วางตัวได้ — สุ่มในพื้นที่ฟ้า ไม่บังคับอยู่บนเลนม่วง */
- function collectQuizBattleSpawnPoolPlay(md) {
- const out = [];
- if (!md) return out;
- const prevMap = mapData;
- mapData = md;
- try {
- const w = md.width || 20, h = md.height || 15;
- const grid = md.spawnArea;
- const seen = new Set();
- const cells = [];
- if (grid && Array.isArray(grid)) {
- for (let ty = 0; ty < h; ty++) {
- const row = grid[ty];
- if (!row) continue;
- for (let tx = 0; tx < w; tx++) {
- if (Number(row[tx]) === 1) cells.push({ tx, ty });
- }
- }
- }
- if (!cells.length && md.spawn) {
- cells.push({
- tx: Math.max(0, Math.min(w - 1, Math.floor(Number(md.spawn.x)) || 1)),
- ty: Math.max(0, Math.min(h - 1, Math.floor(Number(md.spawn.y)) || 1)),
- });
- }
- for (const { tx, ty } of cells) {
- for (const [nx, ny] of [[tx + 0.5, ty + 0.5], [tx + 0.01, ty + 0.01]]) {
- const key = nx.toFixed(3) + ',' + ny.toFixed(3);
- if (seen.has(key)) continue;
- if (quizBattlePathModeActive(md)) {
- if (!quizBattleSpawnWallClearPlay(md, nx, ny)) continue;
- } else if (!spawnFootprintFitsPlay(md, tx, ty)) {
- continue;
- }
- seen.add(key);
- out.push({ tx, ty, x: nx, y: ny });
- }
- }
- if (!out.length && quizBattlePathModeActive(md)) {
- return collectQuizBattleValidSpawnCentersPlay(md);
- }
- } finally {
- mapData = prevMap;
- }
- return out;
- }
-
- function pickQuizBattleRandomSpawnWorldPlay(md) {
- const pool = collectQuizBattleSpawnPoolPlay(md);
- const fb = md.spawn || { x: 1, y: 1 };
- if (!pool.length) {
- return quizBattleNearestValidSpawnWorldPlay(md, fb.x, fb.y);
- }
- const u = new Uint32Array(1);
- if (typeof crypto !== 'undefined' && crypto.getRandomValues) crypto.getRandomValues(u);
- else u[0] = (Math.floor(Math.random() * 0xffffffff) >>> 0);
- const pick = pool[u[0] % pool.length];
- return { x: pick.x, y: pick.y };
- }
-
- function quizBattleSpawnWorldFromJoinOrderPlay(md, joinOrderIndex) {
- if (!md) return { x: 1.5, y: 1.5 };
- const ord = joinOrderIndex | 0;
- const mode = md.lobbySpawnMode;
- if (mode === 'slots6') {
- const slots = parseLobbyPlayerSpawnsFromMapPlay(md);
- const j = Math.min(Math.max(0, ord), 5);
- const slot = slots[j];
- if (slot) return quizBattleNearestValidSpawnWorldPlay(md, slot.x, slot.y);
- return pickQuizBattleRandomSpawnWorldPlay(md);
- }
- if (mode === 'fixed' && md.spawn) {
- const sx = Number(md.spawn.x) || 1, sy = Number(md.spawn.y) || 1;
- return quizBattleNearestValidSpawnWorldPlay(md, sx, sy);
- }
- /* random (ค่าเริ่มต้นใน editor) — สุ่มในพื้นที่ฟ้า ไม่เรียงตาม join order */
- return pickQuizBattleRandomSpawnWorldPlay(md);
- }
-
- function pickQuizBattleSpawnFromMapPlay(md, joinOrderIndex) {
- const world = quizBattleSpawnWorldFromJoinOrderPlay(md, joinOrderIndex);
- return { x: Math.floor(world.x), y: Math.floor(world.y) };
- }
-
- /** สอดคล้องกับ server pickSpawnForJoin — ใช้พรีวิวบอท / ทดสอบ */
- function pickSpawnForJoinPlay(md, joinOrderIndex) {
- if (!md) return { x: 1, y: 1 };
- if (md.gameType === 'quiz_battle' && quizBattlePathModeActive(md)) {
- const qb = pickQuizBattleSpawnFromMapPlay(md, joinOrderIndex);
- if (qb) return qb;
- }
- const mode = md.lobbySpawnMode;
- const ord = joinOrderIndex | 0;
- if (mode === 'slots6' && ord >= 6) return pickRandomSpawnFromMapPlay(md);
- const j = Math.min(Math.max(0, ord), 5);
- if (mode === 'fixed' && md.spawn) {
- const fx = Number.isFinite(Number(md.spawn.x)) ? Math.floor(Number(md.spawn.x)) : 1;
- const fy = Number.isFinite(Number(md.spawn.y)) ? Math.floor(Number(md.spawn.y)) : 1;
- const w = md.width || 20;
- const h = md.height || 15;
- const x = Math.max(0, Math.min(w - 1, fx));
- const y = Math.max(0, Math.min(h - 1, fy));
- if (spawnFootprintFitsPlay(md, x, y)) return { x, y };
- return pickRandomSpawnFromMapPlay(md);
- }
- if (mode === 'slots6') {
- const slots = parseLobbyPlayerSpawnsFromMapPlay(md);
- augmentLobbySlotsFromShooterPaintJumpSurvivePlay(md, slots);
- const pick = slots[j];
- if (pick && spawnFootprintFitsPlay(md, pick.x, pick.y)) return { x: pick.x, y: pick.y };
- return pickRandomSpawnFromMapPlay(md);
- }
- return pickRandomSpawnFromMapPlay(md);
- }
-
- const GAUNTLET_PREVIEW_MAX = 6;
- function gauntletSpawnYsPlay(md, playerCount) {
- const h = md.height || 15;
- const lo = 1;
- const hi = Math.max(lo, h - 2);
- const n = Math.min(GAUNTLET_PREVIEW_MAX, Math.max(1, playerCount));
- if (hi <= lo) return Array.from({ length: n }, () => lo);
- const ys = [];
- for (let i = 0; i < n; i++) {
- ys.push(Math.round(lo + (i * (hi - lo)) / Math.max(1, n - 1)));
- }
- return ys;
- }
- function collectGauntletSpawnSlotsFromSpawnAreaPlay(md) {
- const grid = md.spawnArea;
- if (!grid || !Array.isArray(grid)) return [];
- const w = md.width || 20;
- const h = md.height || 15;
- const slots = [];
- for (let y = 0; y < h; y++) {
- const row = grid[y];
- if (!row) continue;
- for (let x = 0; x < w; x++) {
- if (Number(row[x]) === 1 && spawnTileWalkablePlay(md, x, y)) slots.push({ x, y });
- }
- }
- slots.sort((a, b) => a.y - b.y || a.x - b.x);
- return slots;
- }
- function collectGauntletSpawnSlotsPlay(md) {
- const explicit = md.gauntletPlayerSpawns;
- if (Array.isArray(explicit) && explicit.length > 0) {
- const w = md.width || 20;
- const h = md.height || 15;
- const slots = [];
- for (const raw of explicit) {
- if (slots.length >= GAUNTLET_PREVIEW_MAX) break;
- const x = Math.floor(Number(raw && raw.x));
- const y = Math.floor(Number(raw && raw.y));
- if (!Number.isFinite(x) || !Number.isFinite(y) || x < 0 || x >= w || y < 0 || y >= h) continue;
- if (!spawnTileWalkablePlay(md, x, y)) continue;
- slots.push({ x, y });
- }
- if (slots.length > 0) return slots;
- }
- return collectGauntletSpawnSlotsFromSpawnAreaPlay(md);
- }
- function gauntletResolveSpawnXForRowPlay(md, spawnColX, y, slotXFallback) {
- const w = md.width || 20;
- if (spawnTileWalkablePlay(md, spawnColX, y)) return spawnColX;
- if (slotXFallback != null && spawnTileWalkablePlay(md, slotXFallback, y)) return slotXFallback;
- for (let d = 0; d < w; d++) {
- if (spawnColX + d < w && spawnTileWalkablePlay(md, spawnColX + d, y)) return spawnColX + d;
- if (spawnColX - d >= 0 && spawnTileWalkablePlay(md, spawnColX - d, y)) return spawnColX - d;
- }
- return Math.max(0, Math.min(w - 1, spawnColX));
- }
- function gauntletSpawnPositionsPlay(md, playerCount) {
- const n = Math.min(GAUNTLET_PREVIEW_MAX, Math.max(1, playerCount));
- const slots = collectGauntletSpawnSlotsPlay(md);
- const fallbackYs = gauntletSpawnYsPlay(md, n);
- const spawnColX = slots.length ? Math.min(...slots.map((s) => s.x)) : 1;
- const out = [];
- for (let i = 0; i < n; i++) {
- const y = i < slots.length
- ? slots[i].y
- : (fallbackYs[i] != null ? fallbackYs[i] : fallbackYs[fallbackYs.length - 1]);
- const slotX = i < slots.length ? slots[i].x : null;
- const x = gauntletResolveSpawnXForRowPlay(md, spawnColX, y, slotX);
- out.push({ x, y });
- }
- return out;
- }
- /**
- * โหมดทดสอบพรมแดง: จัดตำแหน่งเกิดให้ตรง server (spawnArea หรือกระจาย y)
- * @param {boolean} [onlyBots=false] ถ้า true = จัดแค่บอท (หลัง game-start; ไม่ทับ me/คนจริงจาก peersSnap)
- */
- function applyGauntletPreviewSpawnLayout(onlyBots) {
- if (!mapData || mapData.gameType !== 'gauntlet') return;
- /* เกมจริง (ห้องจริงทุกแบบ: คนล้วน/มีบอท): server เป็นเจ้าของตำแหน่ง/เลนของทุกตัวผ่าน gauntlet-sync
- → ห้าม client จัดเลนเอง เพราะ layout นี้สแนป me ไป pos[0] (เลนบนสุด, จุดสตาร์ท) เสมอ
- ทำให้ตอน host หลุด me (host ใหม่) ไปทับบอท takeover ที่กินเลนบนสุด
- เฉพาะ editor preview (preview=1, ไม่มี server ขับ) เท่านั้นที่ client จัดเลนเอง */
- if (!previewMode) return;
- const realIds = [...others.keys()].filter((id) => !isPreviewBotId(id)).sort();
- const botIds = [...others.keys()].filter(isPreviewBotId).sort();
- const humanCount = 1 + realIds.length;
- const total = Math.min(GAUNTLET_PREVIEW_MAX, humanCount + botIds.length);
- const pos = gauntletSpawnPositionsPlay(mapData, total);
- if (onlyBots) {
- let idx = humanCount;
- botIds.forEach((bid) => {
- const o = others.get(bid);
- if (!o || idx >= pos.length) return;
- o.x = pos[idx].x;
- o.tx = pos[idx].x;
- o.y = pos[idx].y;
- o.ty = pos[idx].y;
- idx++;
- });
- return;
- }
- let idx = 0;
- if (idx < pos.length) {
- me.x = pos[idx].x;
- me.y = pos[idx].y;
- me.tx = me.x;
- me.ty = me.y;
- idx++;
- }
- realIds.forEach((rid) => {
- const o = others.get(rid);
- if (!o || idx >= pos.length) return;
- o.x = pos[idx].x;
- o.tx = pos[idx].x;
- o.y = pos[idx].y;
- o.ty = pos[idx].y;
- idx++;
- });
- botIds.forEach((bid) => {
- const o = others.get(bid);
- if (!o || idx >= pos.length) return;
- o.x = pos[idx].x;
- o.tx = pos[idx].x;
- o.y = pos[idx].y;
- o.ty = pos[idx].y;
- idx++;
- });
- }
-
- function isPreviewBotId(id) {
- return typeof id === 'string' && id.indexOf(PREVIEW_BOT_PREFIX) === 0;
- }
-
- function countPlayHumans() {
- let n = 1;
- others.forEach((_, id) => { if (!isPreviewBotId(id)) n++; });
- return n;
- }
-
- /** ป้ายชื่อบอท "บอท N (tier)" — เรียงตาม id (เหมือนทุกเครื่อง) ใช้ o.botTier (host เป็นเจ้าของ ผ่าน fill-bot-state) */
- function relabelPreviewBotsPlay() {
- let k = 0;
- [...others.keys()].filter(isPreviewBotId).sort().forEach((bid) => {
- const o = others.get(bid);
- if (!o) return;
- const tag = o.botTier === 'sharp' ? '(ฉลาด)' : o.botTier === 'weak' ? '(พลาดบ่อย)' : '(กลาง)';
- o.nickname = 'บอท ' + (++k) + ' ' + tag;
- });
- }
-
- /* MG5/6/7 server-auth: server ขับ entity บอทที่ "client นี้ไม่เคยสร้าง" (นับ human ไม่ตรง server /
- race LobbyB→play / reconnect / ghost) → fill-bot-state ถูกปิดสำหรับเกม server-auth จึงไม่มี self-heal
- → *-bot-move ทุก packet ถูกดรอป (if(!o)return) = บอทตัวนั้นค้าง/หายเฉพาะ client นี้ (= อาการ MG6).
- สร้าง preview-bot entity เดี๋ยวนี้ + กำหนด avatar/ป้ายตาม index เรียง (deterministic ทุกเครื่อง).
- คืน null ถ้าเป็น takeover id (=socket-id ของคนที่ออก) ที่ entity ยังไม่มา → caller รอ join/snapshot. */
- function ensureServerAuthBotEntityPlay(id, dir) {
- if (id == null) return null;
- let o = others.get(id);
- if (o) return o;
- if (!isPreviewBotId(id)) return null;
- o = {
- x: 1, y: 1, tx: 1, ty: 1,
- direction: dir || 'down',
- nickname: 'บอท',
- characterId: null,
- playTint: playTintForPreviewBotId(id) || resolvePlayTintForPeer(id),
- botTier: 'avg',
- spaceShooterScore: 0, spaceShooterHits: 0, spaceShooterEliminated: false,
- balloonBossScore: 0, balloonBossBossDmg: 0, balloonBossEliminated: false,
- jumpSurviveEliminated: false,
- };
- try { o.balloonBossBalloons = balloonBossBalloonsStartPlay(); } catch (e) { o.balloonBossBalloons = 5; }
- others.set(id, o);
- /* avatar ตาม index เรียง (เหมือน rebalancePreviewBots 5967-5969) → ทุกเครื่องได้ชุด avatar เดียวกัน */
- [...others.keys()].filter(isPreviewBotId).sort().forEach((bid, bi) => { const bo = others.get(bid); if (bo) bo.characterId = pickPreviewBotCharacterId(bi); });
- try { relabelPreviewBotsPlay(); } catch (e) { /* ignore */ }
- try { if (o.characterId) preloadPlayTintForAvatar(o.characterId, o.playTint); } catch (e) { /* ignore */ }
- return o;
- }
-
- function rebalancePreviewBots() {
- if (!playBotsEnabled() || !mapData) return;
- const human = countPlayHumans();
- let wantBots = Math.max(0, playBotTargetHeadcount() - human);
- wantBots = Math.min(wantBots, Math.max(0, 6 - human)); /* total ≤ 6 เสมอ (กัน over-count เช่น reconnect หลัง bot-takeover) */
- /* Card 3 Ban — บอทที่ถูกแบนรอบนี้ (slot N) ไม่ลงเล่น: ลบทิ้ง + ลดเป้าจำนวนลง 1 + ข้าม slot นั้นตอนสร้าง */
- if (playBannedBotSlot >= 0) {
- others.delete(PREVIEW_BOT_PREFIX + playBannedBotSlot);
- wantBots = Math.max(0, wantBots - 1);
- }
- [...others.keys()].filter(isPreviewBotId).forEach((bid) => {
- const o = others.get(bid);
- if (!o) return;
- o.playTint = playTintForPreviewBotId(bid) || resolvePlayTintForPeer(bid);
- if (o.botTier == null) {
- /* [2026-07-17] เดิมเป็น Math.random() = "สุ่มใหม่ทุกเครื่อง" → ป้าย (ฉลาด/กลาง/พลาดบ่อย) ของบอทตัว
- เดียวกันไม่ตรงกันข้ามจอ (user เจอทั้ง MG2 และ MG7). path host-auth adopt rb.tier ทับให้ทีหลังอยู่แล้ว
- แต่ path server-auth (MG5/6/7) ไม่เคยส่ง tier ลงมา → ค่าสุ่มนี้อยู่ยาวจนจบเกม.
- แก้ที่ต้นทาง: derive จาก slot ใน botId (`__pv_bot_` เหมือนกันทุกเครื่อง) ด้วย "สูตรเดียวกับ
- gauntletBotTierForSlot ของ server (server.js:8209)" → ทุกเครื่องได้ค่าเท่ากัน และตรงกับ tier จริง
- ที่ server ใช้เดินบอท MG2 ด้วย (เดิม client สุ่มเอง = ป้ายไม่ตรงพฤติกรรมตั้งแต่แรก) */
- const slot = parseInt(String(bid).slice(PREVIEW_BOT_PREFIX.length), 10);
- const tierRoll = Number.isFinite(slot) ? ((slot * 73 + 17) % 100) / 100 : 0.5;
- const stackPrev = mapData && mapData.gameType === 'stack';
- o.botTier = stackPrev
- ? (tierRoll < 0.4 ? 'sharp' : tierRoll < 0.78 ? 'avg' : 'weak')
- : (tierRoll < 0.28 ? 'sharp' : tierRoll < 0.62 ? 'avg' : 'weak');
- }
- if (o.quizCannotTrue == null) o.quizCannotTrue = false;
- if (o.quizCannotFalse == null) o.quizCannotFalse = false;
- if (!Array.isArray(o.botPath)) o.botPath = [];
- if (o.botAnswerWander == null) o.botAnswerWander = false;
- if (o.gauntletJumpTicks == null) o.gauntletJumpTicks = 0;
- if (o.gauntletJumpVis == null) o.gauntletJumpVis = o.gauntletJumpTicks;
- if (o.gauntletScore == null) {
- o.gauntletScore = (mapData && mapData.gameType === 'gauntlet' && isGauntletCrownHeistMapPlay()) ? 100 : 0;
- }
- if (o.gauntletEliminated == null) o.gauntletEliminated = false;
- if (o.botWanderDx == null || o.botWanderDy == null || (o.botWanderDx === 0 && o.botWanderDy === 0)) {
- const wd = [[0, -1], [0, 1], [-1, 0], [1, 0]][Math.floor(Math.random() * 4)];
- o.botWanderDx = wd[0];
- o.botWanderDy = wd[1];
- }
- if (typeof o.botWanderNextTurn !== 'number') {
- o.botWanderNextTurn = Date.now() + 400 + Math.floor(Math.random() * 900);
- }
- });
- let botIds = [...others.keys()].filter(isPreviewBotId);
- while (botIds.length > wantBots) {
- const drop = botIds.pop();
- if (drop) others.delete(drop);
- }
- botIds = [...others.keys()].filter(isPreviewBotId);
- while (botIds.length < wantBots) {
- /* หา slot ว่างเล็กสุด (0,1,2,…) — IDX ของ ID ต้องตรงกับ playLobbyBotThemes[idx] เพื่อให้สีตรง lobby */
- let nextSlot = 0;
- while (others.has(PREVIEW_BOT_PREFIX + nextSlot) || nextSlot === playBannedBotSlot) nextSlot++;
- previewBotSeq = Math.max(previewBotSeq, nextSlot + 1);
- const id = PREVIEW_BOT_PREFIX + nextSlot;
- const joinIdx = countPlayHumans() + botIds.length;
- let x;
- let y;
- if (mapData.gameType === 'jump_survive') {
- const pos = jumpSurviveSpawnWorldFromJoinOrderPlay(mapData, joinIdx);
- x = pos.x;
- y = pos.y;
- } else if (mapData.gameType === 'quiz_battle' && quizBattlePathModeActive(mapData)) {
- const pos = quizBattleSpawnWorldFromJoinOrderPlay(mapData, joinIdx);
- x = pos.x;
- y = pos.y;
- } else {
- const sp = pickSpawnForJoinPlay(mapData, joinIdx);
- const jx = (Math.random() - 0.5) * 0.4;
- const jy = (Math.random() - 0.5) * 0.4;
- x = sp.x + 0.5 + jx;
- y = sp.y + 0.5 + jy;
- }
- /* [2026-07-17] ห้าม Math.random() — นี่คือ path ที่ "สร้าง" บอทจริง (ตัว backfill ที่ 6013 แทบไม่เคย
- ถูกเรียกเพราะตอนสร้างเซ็ต tier ให้เสมอ) → สุ่มตรงนี้ = ป้าย 'บอท N (ฉลาด)' ไม่ตรงกันข้ามเครื่อง.
- nextSlot ข้างบน deterministic อยู่แล้ว (slot ว่างเล็กสุด 0,1,2… ทุกเครื่องได้ชุดเดียวกัน — เป็น
- ข้อกำหนดเดิมอยู่แล้วเพราะ idx ต้องตรง playLobbyBotThemes ให้สีตรง lobby) → derive tier จากมัน
- ด้วยสูตรเดียวกับ server gauntletBotTierForSlot (server.js:8209) */
- const tierRoll = ((nextSlot * 73 + 17) % 100) / 100;
- const stackPrev = mapData && mapData.gameType === 'stack';
- const botTier = stackPrev
- ? (tierRoll < 0.4 ? 'sharp' : tierRoll < 0.78 ? 'avg' : 'weak')
- : (tierRoll < 0.28 ? 'sharp' : tierRoll < 0.62 ? 'avg' : 'weak');
- const wd = [[0, -1], [0, 1], [-1, 0], [1, 0]][Math.floor(Math.random() * 4)];
- const crownStart = mapData.gameType === 'gauntlet' && isGauntletCrownHeistMapPlay();
- others.set(id, {
- x, y, tx: x, ty: y,
- direction: ['down', 'up', 'left', 'right'][Math.floor(Math.random() * 4)],
- nickname: 'บอท',
- characterId: pickPreviewBotCharacterId(botIds.length),
- spawnJoinOrder: joinIdx,
- playTint: playTintForPreviewBotId(id) || resolvePlayTintForPeer(id),
- botTier,
- gauntletJumpTicks: 0,
- gauntletJumpVis: 0,
- gauntletScore: crownStart ? 100 : 0,
- gauntletEliminated: false,
- quizCannotTrue: false,
- quizCannotFalse: false,
- quizCarryHeld: null,
- botPath: [],
- botAnswerWander: false,
- botWanderDx: wd[0],
- botWanderDy: wd[1],
- botWanderNextTurn: Date.now() + 400 + Math.floor(Math.random() * 1000),
- jumpSurviveEliminated: false,
- spaceShooterScore: 0,
- balloonBossScore: 0,
- balloonBossBossDmg: 0,
- balloonBossBalloons: mapData && mapData.gameType === 'balloon_boss' ? balloonBossBalloonsStartPlay() : 5,
- balloonBossEliminated: false,
- botQuizCarryPathfindAfter: performance.now() + previewBotSeq * 75 + Math.floor(Math.random() * 160),
- });
- /* preload เลเยอร์สี + tint ของบอททันทีตอนสร้าง — กัน score HUD บน host โชว์ avatar บอท "ไม่ย้อมสี"
- (เดิม preloadPlayOccupantsTints รันตอน scene-load ก่อนบอทถูกสร้าง → เลเยอร์ยังไม่โหลด) */
- try {
- const bo = others.get(id);
- if (bo && bo.characterId) preloadPlayTintForAvatar(bo.characterId, bo.playTint || resolvePlayTintForPeer(id));
- } catch (ePB) { /* ignore */ }
- botIds.push(id);
- }
- relabelPreviewBotsPlay();
- [...others.keys()].filter(isPreviewBotId).sort().forEach((bid, botIdx) => {
- const o = others.get(bid);
- if (o) o.characterId = pickPreviewBotCharacterId(botIdx);
- });
- if (mapData.gameType === 'quiz_battle' && quizBattlePathModeActive(mapData)) {
- [...others.keys()].filter(isPreviewBotId).forEach((bid) => {
- const o = others.get(bid);
- if (!o) return;
- const s = snapPositionOntoQuizBattlePathIfNeeded(o.x, o.y);
- o.x = s.x;
- o.y = s.y;
- o.tx = s.x;
- o.ty = s.y;
- });
- }
- if (mapData.gameType === 'quiz_carry') {
- const t0 = performance.now();
- [...others.keys()].filter(isPreviewBotId).forEach((bid, idx) => {
- const o = others.get(bid);
- if (!o) return;
- o.botQuizCarryPathfindAfter = t0 + idx * 90 + Math.floor(Math.random() * 140);
- });
- }
- if (mapData.gameType === 'gauntlet') {
- applyGauntletPreviewSpawnLayout(false);
- emitGauntletPreviewRowsToServer();
- }
- if (mapData.gameType === 'stack') {
- applyStackPreviewSpawnLayout();
- rebuildStackPreviewTurnOrder();
- }
- if (mapData.gameType === 'jump_survive') {
- applyJumpSurvivePreviewSpawnLayout(false);
- }
- if (mapData.gameType === 'space_shooter') {
- applySpaceShooterSpawnLayoutPlay();
- }
- if (mapData.gameType === 'balloon_boss') {
- applyBalloonBossSpawnLayoutPlay();
- fetch(BASE + '/api/game-timing?_=' + Date.now(), { cache: 'no-store' })
- .then((r) => (r.ok ? r.json() : null))
- .then((t) => { if (t) applyGauntletTimingFromServer(t); })
- .catch(() => {});
- }
- if (quizCarryPregameActive && mapData && mapData.gameType === 'quiz_carry') updateQuizCarryPregameHud();
- try {
- preloadPlayOccupantsTints();
- preloadPlayLobbyIdleAvatarsForOccupants();
- } catch (e) { /* ignore */ }
- }
-
- function pickRandomWalkableCellInAnswerGrid(grid, o) {
- if (!grid || !mapData) return null;
- const w = mapData.width || 20, h = mapData.height || 15;
- const pool = [];
- for (let y = 0; y < h; y++) {
- const row = grid[y];
- if (!row) continue;
- for (let x = 0; x < w; x++) {
- if (row[x] !== 1) continue;
- if (canWalkLikeLobbyForBot(x + 0.5, y + 0.5, NaN, NaN, o)) pool.push({ x, y });
- }
- }
- if (!pool.length) return null;
- return pool[Math.floor(Math.random() * pool.length)];
- }
-
- /** ช่วงตอบ: บอทสุ่มเดินไปโซนถูก/ผิด/เดินมั่ว ตามระดับ (ฉลาด/กลาง/พลาดบ่อย) */
- function previewBotsPrepareAnswerRound() {
- if (!playBotsEnabled() || !mapData || !isQuiz() || !previewQuizCurrent) return;
- if (detectiveCaseFillBots) return; /* เกมจริง: server ตัดสินคำตอบบอทเอง */
- const correctTrue = !!previewQuizCurrent.answerTrue;
- const qt = mapData.quizTrueArea;
- const qf = mapData.quizFalseArea;
- others.forEach((o, id) => {
- if (!isPreviewBotId(id)) return;
- o.botPath = [];
- o.botAnswerWander = false;
- const tier = o.botTier || 'avg';
- let pCorrect = 0.52;
- if (tier === 'sharp') pCorrect = 0.84;
- else if (tier === 'weak') pCorrect = 0.22;
- if (Math.random() < 0.14) {
- o.botAnswerWander = true;
- return;
- }
- const wantsCorrect = Math.random() < pCorrect;
- const targetTrue = wantsCorrect ? correctTrue : !correctTrue;
- const zoneGrid = targetTrue ? qt : qf;
- const dest = pickRandomWalkableCellInAnswerGrid(zoneGrid, o);
- if (!dest) {
- o.botAnswerWander = true;
- return;
- }
- const path = pathfindPlayForBot(o.x, o.y, dest.x + 0.5, dest.y + 0.5, o);
- if (!path || path.length <= 1) {
- o.botAnswerWander = true;
- return;
- }
- o.botPath = path.slice(1);
- });
- }
-
- /** คัดลอกตรรกะจาก server — ดีดออกนอกโซนจริง/เท็จ (โหมดทดสอบ preview บน play.html) */
- function findNearestOutsideQuizAnswerZonesPlay(md, sx, sy) {
- const w = md.width || 20;
- const h = md.height || 15;
- const tGrid = md.quizTrueArea || [];
- const fGrid = md.quizFalseArea || [];
- const inAnswer = (x, y) => quizCellOnPlay(tGrid, x, y) || quizCellOnPlay(fGrid, x, y);
- const walkable = (x, y) => {
- if (x < 0 || x >= w || y < 0 || y >= h) return false;
- const row = md.objects && md.objects[y];
- return row && row[x] !== 1;
- };
- const fx = Math.floor(Number(sx));
- const fy = Math.floor(Number(sy));
- if (!walkable(fx, fy)) {
- const sp = md.spawn || { x: 1, y: 1 };
- return { x: (typeof sp.x === 'number' ? sp.x : 1) + 0.5, y: (typeof sp.y === 'number' ? sp.y : 1) + 0.5 };
- }
- if (!inAnswer(fx, fy)) return { x: sx, y: sy };
- const q = [[fx, fy]];
- const seen = new Set([`${fx},${fy}`]);
- const dirs = [[0, 1], [0, -1], [1, 0], [-1, 0]];
- while (q.length) {
- const [cx, cy] = q.shift();
- for (let di = 0; di < dirs.length; di++) {
- const nx = cx + dirs[di][0];
- const ny = cy + dirs[di][1];
- const k = `${nx},${ny}`;
- if (seen.has(k)) continue;
- if (!walkable(nx, ny)) continue;
- seen.add(k);
- if (!inAnswer(nx, ny)) {
- return { x: nx + 0.5, y: ny + 0.5 };
- }
- q.push([nx, ny]);
- }
- }
- const sp = md.spawn || { x: 1, y: 1 };
- return { x: (typeof sp.x === 'number' ? sp.x : 1) + 0.5, y: (typeof sp.y === 'number' ? sp.y : 1) + 0.5 };
- }
-
- function quizResolveChoiceFromStanding(ox, oy, correctTrue) {
- const qt = mapData.quizTrueArea;
- const qf = mapData.quizFalseArea;
- /* จับที่ "แถวเท้า" (bottom row ของ footprint) เท่านั้น — ให้ตรงกับ server resolveQuizRound
- (หัว/ตัวโผล่เข้าโซนแต่เท้ายังไม่ถึง = ไม่นับ) */
- const { cw, ch } = getCharacterFootprintWH(mapData);
- const baseTx = Math.floor(ox);
- const feetTy = Math.floor(oy) + ch - 1;
- let inT = false, inF = false;
- for (let dx = 0; dx < cw; dx++) {
- const ftx = baseTx + dx;
- if (!inT && quizCellOnPlay(qt, ftx, feetTy)) inT = true;
- if (!inF && quizCellOnPlay(qf, ftx, feetTy)) inF = true;
- }
- let choice = null;
- if (inT && !inF) choice = true;
- else if (inF && !inT) choice = false;
- else if (inT && inF) choice = true;
- const right = choice !== null && choice === correctTrue;
- return { choice, right };
- }
-
- /** ลำดับจุดเกิดเดียวกับ pickSpawnForJoinPlay — ห้ามสุ่มทั้ง spawnArea หลังตอบผิด (จะหลุดจาก P1–P6) */
- function quizPreviewJoinOrderForRespawn(actorId) {
- if (actorId === myId) {
- const jm = Number(me && me.spawnJoinOrder);
- return Number.isFinite(jm) ? Math.max(0, Math.floor(jm)) : 0;
- }
- const o = others.get(actorId);
- if (o && typeof o.spawnJoinOrder === 'number' && Number.isFinite(o.spawnJoinOrder)) {
- return Math.max(0, Math.floor(o.spawnJoinOrder));
- }
- if (!isPreviewBotId(actorId)) {
- const othersReal = [...others.keys()].filter((id) => !isPreviewBotId(id)).sort();
- const idx = othersReal.indexOf(actorId);
- return idx >= 0 ? 1 + idx : 1;
- }
- const bots = [...others.keys()].filter(isPreviewBotId).sort();
- const bi = bots.indexOf(actorId);
- if (bi < 0) return 0;
- return countPlayHumans() + bi;
- }
-
- /** เฉลยรอบทดสอบบนเครื่อง — ให้พฤติกรรมใกล้เคียง server (ผิด = ล็อกโซน + ดีดออก) */
- function resolvePreviewQuizRound() {
- if (!previewMode || !mapData || !isQuiz() || !previewQuizCurrent || myId == null) return;
- const correctTrue = !!previewQuizCurrent.answerTrue;
- const results = [];
- const mine = quizResolveChoiceFromStanding(me.x, me.y, correctTrue);
- let right = mine.right;
- let choice = mine.choice;
- if (mine.right) {
- playLiveQuizScores[myId] = (playLiveQuizScores[myId] || 0) + QUIZ_TF_POINTS_PER_CORRECT;
- } else {
- playQuizPlayerLocal.cannotTrue = true;
- playQuizPlayerLocal.cannotFalse = true;
- if (!warpMeIntoQuizGhostZonePlay()) {
- const ordMe = quizPreviewJoinOrderForRespawn(myId);
- const sp = pickSpawnForJoinPlay(mapData, ordMe);
- const pos = findNearestOutsideQuizAnswerZonesPlay(mapData, sp.x + 0.5, sp.y + 0.5);
- me.x = pos.x;
- me.y = pos.y;
- me.tx = me.x;
- me.ty = me.y;
- socket.emit('move', { x: me.x, y: me.y, direction: me.direction });
- }
- }
- results.push({
- id: myId,
- right,
- choice,
- score: playLiveQuizScores[myId] != null ? playLiveQuizScores[myId] : 0,
- });
- if (playBotsEnabled()) {
- others.forEach((o, id) => {
- if (!isPreviewBotId(id)) return;
- const br = quizResolveChoiceFromStanding(o.x, o.y, correctTrue);
- o.botPath = [];
- o.botAnswerWander = false;
- if (br.right) {
- playLiveQuizScores[id] = (playLiveQuizScores[id] || 0) + QUIZ_TF_POINTS_PER_CORRECT;
- } else {
- o.quizCannotTrue = true;
- o.quizCannotFalse = true;
- const ordB = quizPreviewJoinOrderForRespawn(id);
- const sp = pickSpawnForJoinPlay(mapData, ordB);
- const pos = findNearestOutsideQuizAnswerZonesPlay(mapData, sp.x + 0.5, sp.y + 0.5);
- o.x = pos.x + (Math.random() - 0.5) * 0.35;
- o.y = pos.y + (Math.random() - 0.5) * 0.35;
- o.tx = o.x;
- o.ty = o.y;
- }
- results.push({
- id,
- right: br.right,
- choice: br.choice,
- score: playLiveQuizScores[id] != null ? playLiveQuizScores[id] : 0,
- });
- });
- }
- const r = { results, scores: { ...playLiveQuizScores } };
- results.forEach(function (row) {
- if (!row || row.id == null) return;
- if (!row.right) playQuizEverWrong[String(row.id)] = true;
- });
- renderPlayQuizScoreboard(playLiveQuizScores);
- if (results.some(function (row) { return row && row.right; })) {
- spawnQuizTrueFalseScorePopupPlay(correctTrue);
- }
- showPlayQuizFeedback(r);
- }
-
- function advancePreviewQuizIfDue() {
- if (isQuizQuestionMissionUiMapPlay() && isQuizQuestionMissionPregameBlockingPlay()) return;
- if (previewQuizStep === 'done') return;
- if (!previewMode || !isQuiz() || !playQuizPhaseEndsAt || Date.now() < playQuizPhaseEndsAt) return;
- const pool = previewQuizPool;
- if (!pool || !pool.length) return;
- if (previewQuizStep === 'read') {
- applyPreviewAnswerPhase();
- return;
- }
- if (previewQuizStep === 'answer') {
- resolvePreviewQuizRound();
- applyPreviewBetweenPhase();
- return;
- }
- if (previewQuizStep === 'between') {
- previewQuizQIndex += 1;
- if (previewQuizQIndex >= pool.length) {
- finishPreviewQuizSessionPlay();
- return;
- }
- const q = pool[previewQuizQIndex];
- if (q) applyPreviewReadPhase(q, pool.length);
- }
- }
-
- async function loadPreviewQuizAndStart() {
- resetPreviewBotsQuizState();
- playQuizEverWrong = {};
- let settings = null;
- try {
- const r = await fetch(BASE + '/api/quiz-settings?_=' + Date.now(), { cache: 'no-store' });
- if (r.ok) settings = await r.json();
- } catch (e) { /* use map fallback */ }
- let pool = [];
- if (settings && Array.isArray(settings.questions) && settings.questions.length) {
- pool = settings.questions
- .filter((q) => q && String(q.text || '').trim())
- .map((q) => ({ text: String(q.text).trim(), answerTrue: !!q.answerTrue }));
- }
- if (!pool.length && mapData) pool = buildQuizPoolFromMap(mapData);
- const cap = clampPreviewQuizRoundQuestionCount(settings);
- const shuffled = shufflePreviewQuizQuestionsPlay(pool);
- previewQuizPool = shuffled.slice(0, Math.min(cap, shuffled.length));
- previewQuizQIndex = 0;
- const dRead = 10000;
- const dAns = 5000;
- const dBet = 3500;
- previewQuizTiming = {
- readMs: clampPreviewMs(settings && settings.readMs, dRead, 1000, 300000),
- answerMs: clampPreviewMs(settings && settings.answerMs, dAns, 1000, 300000),
- betweenMs: clampPreviewMs(settings && settings.betweenMs, dBet, 0, 300000),
- };
- previewQuizCurrent = null;
- if (!pool.length) {
- playQuizPhaseLocal = 'read';
- previewQuizStep = 'read';
- playQuizText = 'ยังไม่มีคำถามในชุด — ตั้งคำถามใน Admin → คำถามเกม หรือในแมป (quizQuestions)';
- playQuizPhaseEndsAt = 0;
- playQuizQuestionIndex = 0;
- playQuizQuestionTotal = 0;
- const phaseEl = document.getElementById('quiz-game-phase-label');
- if (phaseEl) phaseEl.textContent = '[ทดสอบ] ไม่มีคำถามในระบบ';
- const qEl = document.getElementById('quiz-game-question');
- if (qEl) qEl.textContent = playQuizText;
- const leg = document.getElementById('quiz-play-legend');
- if (leg) leg.textContent = 'โซนสีบนแผนที่ยังใช้ดูเลย์เอาต์ได้ตามปกติ';
- initPlayLiveQuizScoresZeros();
- startPlayQuizTimer();
- return;
- }
- const session = previewQuizPool;
- const q = session[0];
- if (q) applyPreviewReadPhase(q, session.length);
- initPlayLiveQuizScoresZeros();
- startPlayQuizTimer();
- }
-
- function startPlayQuizTimer() {
- if (playQuizTimerInterval) clearInterval(playQuizTimerInterval);
- playQuizTimerInterval = setInterval(() => {
- updatePlayQuizTimerDisplay();
- advancePreviewQuizIfDue();
- }, 200);
- updatePlayQuizTimerDisplay();
- }
-
- function teardownPlayQuizUi() {
- if (playQuizTimerInterval) {
- clearInterval(playQuizTimerInterval);
- playQuizTimerInterval = null;
- }
- const ov = document.getElementById('quiz-game-overlay');
- if (ov) ov.classList.add('is-hidden');
- const panel = document.getElementById('quiz-map-question-panel');
- const mapQText = document.getElementById('quiz-map-question-text');
- if (panel) {
- panel.classList.add('is-hidden');
- panel.setAttribute('aria-hidden', 'true');
- clearQuizMapPanelThemeInline(panel, mapQText);
- }
- playQuizPhaseLocal = null;
- playQuizPlayerLocal = { cannotTrue: false, cannotFalse: false, eliminated: false, score: 0 };
- playQuizText = '';
- playQuizPhaseEndsAt = 0;
- playQuizQuestionIndex = 0;
- playQuizQuestionTotal = 0;
- previewQuizPool = [];
- previewQuizQIndex = 0;
- previewQuizCurrent = null;
- previewQuizStep = 'read';
- playLiveQuizScores = {};
- playQuizEverWrong = {};
- quizTfScorePopups = [];
- playPath = [];
- hidePlayQuizHud();
- quizCarryJoinSettingsSnap = null;
- quizCarryWalkSpeedMultActive = QUIZ_CARRY_WALK_SPEED_MULT;
- quizCarryMapPanelTheme = null;
- quizMapPanelTheme = null;
- quizCarryChoicePlaqueThemes = null;
- resetQuizCarryPlayState();
- resetQuizBattlePlayState();
- quizQuestionMissionPhase = null;
- quizQuestionMissionDeferredPhase = null;
- if (quizQuestionMissionCountdownTimer) {
- clearTimeout(quizQuestionMissionCountdownTimer);
- quizQuestionMissionCountdownTimer = null;
- }
- const gcmTeardown = document.getElementById('gauntlet-crown-mission-overlay');
- if (gcmTeardown) gcmTeardown.classList.add('is-hidden');
- cancelEmbedPreviewLobbyReturnTimer();
- const grabBtnTeardown = document.getElementById('quiz-carry-grab-btn');
- if (grabBtnTeardown) {
- grabBtnTeardown.classList.add('is-hidden');
- grabBtnTeardown.classList.remove('quiz-carry-grab-btn--active');
- grabBtnTeardown.classList.remove('quiz-carry-grab-btn--place');
- grabBtnTeardown.style.pointerEvents = '';
- const im = grabBtnTeardown.querySelector('img');
- if (im) im.src = '/Game/img/quiz-carry/btn-grab.png';
- }
- const gchJumpTeardown = document.getElementById('gauntlet-crown-jump-btn');
- if (gchJumpTeardown) {
- gchJumpTeardown.classList.add('is-hidden');
- gchJumpTeardown.setAttribute('aria-hidden', 'true');
- gchJumpTeardown.style.pointerEvents = '';
- }
- const stackDropTeardown = document.getElementById('stack-tower-drop-btn');
- if (stackDropTeardown) {
- stackDropTeardown.classList.add('is-hidden');
- stackDropTeardown.setAttribute('aria-hidden', 'true');
- stackDropTeardown.style.pointerEvents = '';
- stackDropTeardown.classList.remove('stack-tower-drop-btn--active');
- }
- hideStackTowerResultFlashDomOnlyPlay();
- }
-
- function setupPlayQuizUi() {
- if (playQuizTimerInterval) {
- clearInterval(playQuizTimerInterval);
- playQuizTimerInterval = null;
- }
- const ov = document.getElementById('quiz-game-overlay');
- if (ov) {
- const hideBottomQuizBar = (previewMode && editorEmbedReturn && !isQuizCarry())
- || (isQuiz() && isQuizQuestionMissionUiMapPlay() && quizQuestionMissionPhase === 'live');
- if (hideBottomQuizBar) ov.classList.add('is-hidden');
- else ov.classList.remove('is-hidden');
- }
- playQuizPlayerLocal = { cannotTrue: false, cannotFalse: false, eliminated: false, score: 0 };
- const leg = document.getElementById('quiz-play-legend');
- if (previewMode) {
- const phaseEl = document.getElementById('quiz-game-phase-label');
- if (phaseEl) phaseEl.textContent = '[ทดสอบ] กำลังโหลดคำถาม…';
- const qEl = document.getElementById('quiz-game-question');
- if (qEl) qEl.textContent = 'ดึงชุดคำถามจาก /api/quiz-settings (หรือจากแมป)…';
- if (leg) leg.textContent = '';
- if (isQuizQuestionMissionUiMapPlay()) {
- if (phaseEl) phaseEl.textContent = '[ทดสอบ] รอกด READY เพื่อเริ่มภารกิจ';
- if (qEl) qEl.textContent = 'โหมดภารกิจ — หน้าปก HOWTO จาก /img/QUESTION/';
- if (leg) leg.textContent = '';
- } else {
- loadPreviewQuizAndStart();
- }
- } else {
- playQuizPhaseLocal = null;
- playQuizText = 'รอคำถามจากโฮสต์…';
- playQuizPhaseEndsAt = 0;
- playQuizQuestionIndex = 0;
- playQuizQuestionTotal = 0;
- const phaseEl = document.getElementById('quiz-game-phase-label');
- if (phaseEl) phaseEl.textContent = 'แมพตอบคำถาม';
- const qEl = document.getElementById('quiz-game-question');
- if (qEl) qEl.textContent = 'เข้าร่วมห้องแล้ว — เมื่อโฮสต์เริ่มเกม ข้อความและเวลาจะอัปเดตที่นี่ (เล่นจริงแนะนำผ่าน room-lobby)';
- if (leg) leg.textContent = 'โซนสีบนแผนที่คือจุดตอบเหมือนใน Lobby';
- const tEl = document.getElementById('quiz-game-timer');
- if (tEl) tEl.textContent = '';
- }
- if (isQuiz() && !isQuizCarry()) {
- (async () => {
- try {
- let s = {};
- const r = await fetch(BASE + '/api/quiz-settings?_=' + Date.now(), { cache: 'no-store' });
- if (r.ok) {
- const raw = await r.text();
- const trimmed = (raw || '').trim();
- if (trimmed.startsWith('{') && trimmed.endsWith('}')) {
- try {
- s = JSON.parse(trimmed);
- } catch (e) { /* ignore */ }
- }
- }
- s = await mergeQuizCarrySettingsFromDisk(s && typeof s === 'object' ? s : {});
- setQuizMapPanelThemeFromApi(s);
- try {
- syncPlayQuizMapPanel();
- } catch (e2) { /* ignore */ }
- } catch (e) { /* ignore */ }
- })();
- }
- }
-
- /** อัปเดตแถบคำถาม quiz จากเซิร์ฟเวอร์ — แยกไว้ให้ภารกิจ mng8a80o เรียกหลังจบ countdown */
- function applyQuizPhaseFromServer(p) {
- if (!p || !mapData || !isQuiz()) return;
- if (p.text) playQuizText = p.text;
- quizBetweenActive = false; /* คำถามใหม่มา → ออกจากช่วงพัก */
- playQuizPhaseLocal = p.phase;
- playQuizPhaseEndsAt = p.endsAt || 0;
- playQuizQuestionIndex = Math.max(0, Number(p.questionIndex) || 0);
- playQuizQuestionTotal = Math.max(0, Number(p.questionTotal) || 0);
- const phaseEl = document.getElementById('quiz-game-phase-label');
- const qEl = document.getElementById('quiz-game-question');
- if (phaseEl) {
- phaseEl.textContent = p.phase === 'read'
- ? ('อ่านคำถาม ข้อ ' + (p.questionIndex || '') + '/' + (p.questionTotal || ''))
- : ('เดินไปโซน ถูก / ผิด — ข้อ ' + (p.questionIndex || '') + '/' + (p.questionTotal || ''));
- }
- if (qEl) qEl.textContent = playQuizText || '';
- const ov = document.getElementById('quiz-game-overlay');
- if (isQuizQuestionMissionHudActivePlay()) {
- if (ov) ov.classList.add('is-hidden');
- } else if (ov) {
- ov.classList.remove('is-hidden');
- }
- if (playQuizTimerInterval) clearInterval(playQuizTimerInterval);
- playQuizTimerInterval = setInterval(updatePlayQuizTimerDisplay, 200);
- updatePlayQuizTimerDisplay();
- if (!previewMode && isQuiz() && !Object.keys(playLiveQuizScores).length) initPlayLiveQuizScoresZeros();
- if (!previewMode && isQuiz() && p.phase === 'read' && Number(p.questionIndex) === 1) playQuizEverWrong = {};
- try {
- syncPlayQuizMapPanel();
- } catch (eQm) { /* ignore */ }
- }
-
- function isFrogger() { return mapData && mapData.gameType === 'frogger'; }
- /* net-ready badge: emit client-ready ครั้งเดียวเมื่อฉากพร้อม */
- let playClientReadyEmitted = false;
- /* วาด badge "กำลังโหลด…" เหนือหัว peer ที่ยังโหลดไม่เสร็จ (netReady=false) — คนอื่นรู้ว่าไม่ได้ค้าง */
- function drawNetLoadingBadgePlay(axTile, ayTile, w2s, zDrawIn) {
- try {
- const fw = getCharacterFootprintWH(mapData);
- const cxw = (axTile + (fw.cw || 1) * 0.5) * tileSize;
- const topYw = ayTile * tileSize;
- const scr = w2s(cxw, topYw);
- const sx = scr[0], sy = scr[1];
- const now = Date.now();
- const spin = ['◐', '◓', '◑', '◒'][Math.floor(now / 180) % 4];
- const txt = spin + ' กำลังโหลด…';
- ctx.save();
- ctx.font = '700 13px Kanit, system-ui, sans-serif';
- ctx.textAlign = 'center';
- const tw = ctx.measureText(txt).width + 12;
- const by = sy - 46, bh = 20;
- ctx.fillStyle = 'rgba(10,16,30,0.82)';
- if (ctx.roundRect) { ctx.beginPath(); ctx.roundRect(sx - tw / 2, by, tw, bh, 6); ctx.fill(); } else ctx.fillRect(sx - tw / 2, by, tw, bh);
- ctx.fillStyle = '#ffd34d'; ctx.textBaseline = 'middle';
- ctx.fillText(txt, sx, by + bh / 2 + 1);
- ctx.restore();
- } catch (e) { /* ignore */ }
- }
- /* ===== Sound (jdSound) — scene + end-sfx helpers ===== */
- var JD_SCENE_MAP = { quiz: 'mg1', gauntlet: 'mg2', stack: 'mg3', quiz_carry: 'mg4', jump_survive: 'mg5', space_shooter: 'mg6', balloon_boss: 'mg7' };
- function jdPlayScene() { var gt = mapData && mapData.gameType; return (gt && JD_SCENE_MAP[gt]) || 'mg1'; }
- /* เล่นเสียงจบเกมจากชื่อไฟล์แฟลชผล (complete/victory=ชนะ · timeup=หมดเวลา · gameover=แพ้) + หยุด BGM */
- function jdEndSfxFromFile(f) {
- if (!window.jdSound) return;
- f = String(f || ''); var s = jdPlayScene();
- if (f.indexOf('victory') >= 0 || f.indexOf('complete') >= 0) window.jdSound.playSfx('win', s);
- else if (f.indexOf('timeup') >= 0) window.jdSound.playSfx('timeup', s);
- else if (f.indexOf('gameover') >= 0) window.jdSound.playSfx('lose', s);
- try { window.jdSound.stopBgm(); } catch (e) { /* ignore */ }
- }
- /* เสียงคลิกปุ่ม (เฉพาะ element ที่เป็นปุ่มจริง) */
- document.addEventListener('click', function (e) {
- if (!window.jdSound) return;
- var t = (e.target && e.target.closest) ? e.target.closest('button, .btn, [role="button"], [class*="btn-"]') : null;
- if (t) { try { window.jdSound.playSfx('button', jdPlayScene()); } catch (err) { /* ignore */ } }
- }, true);
- function isGauntlet() { return mapData && mapData.gameType === 'gauntlet'; }
- function isGauntletFaceRightMapMno9kb07() {
- if (!isGauntlet()) return false;
- /** ใช้ currentPlayMapId (session → mapData.id → ?map=) ให้สอดคล้อง runway / timing — กัน HUD crown หลุดค้างเป็นแผงเก่าแนวตั้งทับ TIME */
- return (currentPlayMapId() || '').trim() === GAUNTLET_FACE_RIGHT_MAP_ID;
- }
- /** Crown heist rules + UI (เดียวกับหันขวา — ฉาก mno9kb07) */
- function isGauntletCrownHeistMapPlay() {
- return isGauntletFaceRightMapMno9kb07();
- }
- function isMegaVirusMissionShellMapPlay() {
- return !!(mapData && mapData.gameType === 'balloon_boss' && currentPlayMapId() === BALLOON_BOSS_MISSION_MAP_ID);
- }
- /** Crown gauntlet หรือ Mega Virus — lobby HOWTO / Ready / นับถอยหลัง / held run */
- function usesCrownLobbyShellPlay() {
- return isGauntletCrownHeistMapPlay() || isMegaVirusMissionShellMapPlay();
- }
- /** Last Light (mno9kb07) embed — ค่าเริ่มต้นเมื่อโหลดแมป (ปรับซูมได้ด้วยล้อ / [ ]) */
- const PLAY_EMBED_LAST_LIGHT_DEFAULT_ZOOM_MUL = 1.49;
- /** Stack Tower (mnn93hpi) ใน embed พรีวิว: ซูมคงที่ ×1 — ล้อ/ปุ่มไม่ปรับได้ */
- const PLAY_EMBED_STACK_TOWER_FIXED_ZOOM_MUL = 1;
- function isStackTowerEmbedZoomLockedPlay() {
- return !!(previewMode && editorEmbedReturn && mapData && isStackTowerMissionUiMapPlay());
- }
- function applyPlayEmbedZoomForCurrentMapPlay() {
- if (isStackTowerEmbedZoomLockedPlay()) {
- playEmbedUserZoomMul = PLAY_EMBED_STACK_TOWER_FIXED_ZOOM_MUL;
- } else if (previewMode && editorEmbedReturn && mapData && isGauntletCrownHeistMapPlay()) {
- playEmbedUserZoomMul = PLAY_EMBED_LAST_LIGHT_DEFAULT_ZOOM_MUL;
- }
- }
-
- /** smoothstep 0..1 */
- function stackTowerPost50SmoothstepPlay(t) {
- const x = Math.max(0, Math.min(1, t));
- return x * x * (3 - 2 * x);
- }
-
- /** Tower live + progress ≥เกณฑ์: 0→1 ระหว่าง STACK_TOWER_POST50_ANIM_MS — ใช้เฉพาะเมื่อเปิดกล้องตามหอ (ไม่งั้นฉากธรรมดาไม่เลื่อน/ซูมหลังเกณฑ์) */
- function getStackTowerPost50AnimEasePlay() {
- if (!getStackTowerCameraFollowPlayConfig().enabled) {
- stackTowerPost50AnimStartMs = null;
- return 0;
- }
- if (!isStackTowerMissionUiMapPlay() || stackTowerMissionPhase !== 'live' || !stackMini) return 0;
- const p = Number(stackMini.progressPct) || 0;
- if (p < STACK_TOWER_POST50_PROGRESS_THRESH) {
- stackTowerPost50AnimStartMs = null;
- return 0;
- }
- if (stackTowerPost50AnimStartMs == null) stackTowerPost50AnimStartMs = performance.now();
- const u = Math.min(1, Math.max(0, (performance.now() - stackTowerPost50AnimStartMs) / STACK_TOWER_POST50_ANIM_MS));
- return stackTowerPost50SmoothstepPlay(u);
- }
-
- function getStackTowerPost50ZMulPlay() {
- const e = getStackTowerPost50AnimEasePlay();
- if (e <= 0) return 1;
- return 1 + (STACK_TOWER_POST50_ZOOM_MUL - 1) * e;
- }
-
- function getStackTowerPost50BgScrollExtraPxPlay(ch) {
- const e = getStackTowerPost50AnimEasePlay();
- if (e <= 0) return 0;
- const chR = Math.max(1, Number(ch) || 720);
- return STACK_TOWER_POST50_MAP_SHIFT_SCREEN_FRAC * chR * e;
- }
-
- /**
- * Same zDraw chain as draw() (zoom, special maps, Last Light embed lock, preview embed mul).
- * Runway end checks must not rely on lastPlayZDrawForInput alone — it can lag map/canvas or default 1.4 vs real zoom.
- */
- function computePlayCameraZDrawPlay() {
- if (!canvas || !mapData) return zoom;
- const w = mapData.width || 20;
- const h = mapData.height || 15;
- let zDraw = zoom;
- if (isSpaceShooter() || isBalloonBoss()) {
- const mwPx = w * tileSize;
- const mhPx = h * tileSize;
- /* fit ทั้งแมปให้ขอบแมปอยู่ในเฟรมเสมอ → ยาน/บอทที่ clamp อยู่ในขอบแมป [22, mw-22] จะไม่หลุดออกนอกจอ
- (เดิม balloon_boss ซูมเข้าหา content-window ทำให้ขอบแมปหลุดนอกจอ = ลมกระโชกดันยาน/บอทลอยหายนอกเฟรม)
- BG วาด cover เต็มจอแล้ว (draw ~25633) ขอบดำซ้าย-ขวาจึงไม่โผล่แม้ซูมออก แค่ world rect เล็กลงเล็กน้อย */
- zDraw = Math.min(canvas.width / mwPx, canvas.height / mhPx) * 0.96;
- } else if (isJumpSurvive()) {
- /* MG5 (jump_survive) — เกมเดียวที่ตกไปใช้ zoom ดิบ 1.4 (ไม่ fit จอ = เหลือขอบซ้าย-ขวา)
- → fit ความกว้างเต็มจอ (vertical scroller เลื่อนแนวตั้งด้วย jumpSurviveCamCenterY อยู่แล้ว) */
- const mwPx = w * tileSize;
- if (mwPx > 0) zDraw = canvas.width / mwPx;
- } else if (isQuizQuestionMissionRenderLockPlay()) {
- const qmc = getQuizQuestionMissionMapCenterWorldPxPlay();
- if (qmc) {
- /* ซูมออกเล็กน้อยให้เห็นพื้นหลัง/โซน SAFE-SCAM ครบแบบ mock (0.96 เคย crop ขอบล่างบนจอแคบ) */
- zDraw = Math.min(canvas.width / qmc.mwPx, canvas.height / qmc.mhPx) * 0.90;
- }
- } else if (isQuizCarry()) {
- const mwPx = w * tileSize;
- const mhPx = h * tileSize;
- zDraw = Math.min(canvas.width / mwPx, canvas.height / mhPx) * 0.96;
- } else if (isQuizBattle()) {
- zDraw *= quizBattleUserZoomMul;
- } else if (isGauntletCrownHeistMapPlay() && !(previewMode && editorEmbedReturn)) {
- /* #1 map fit: gauntlet เกมจริง — fit "ความสูงแมป (ลู่ทั้งหมด)" ให้พอดีจอ resolution-adaptive
- (เดิมใช้ zoom ดิบ ไม่ปรับตาม resolution = ไม่พอดี) · fit สูงอย่างเดียว เพราะ runway เลื่อนแนวนอน */
- const mhPx = h * tileSize;
- const fitZ = (canvas.height / mhPx) * 1.0; /* เต็มจอบน-ล่าง (เดิม 0.96 = มีขอบดำบน-ล่าง) */
- if (Number.isFinite(fitZ) && fitZ > 0) zDraw = fitZ;
- }
- if (isStackTowerEmbedZoomLockedPlay()) {
- playEmbedUserZoomMul = PLAY_EMBED_STACK_TOWER_FIXED_ZOOM_MUL;
- }
- if (previewMode && editorEmbedReturn && mapData && !isQuizQuestionMissionHudActivePlay()) {
- zDraw *= playEmbedUserZoomMul;
- }
- if (isStackTowerMissionUiMapPlay()) {
- zDraw *= STACK_TOWER_FIXED_RENDER_Z_MUL;
- zDraw *= getStackTowerPost50ZMulPlay();
- }
- return zDraw;
- }
- let gauntletCrownHowtoVisible = false;
- /* rejoin กลางเกมที่ live แล้ว (server ส่ง res.missionLive=true) → ข้าม how-to เข้าเล่นต่อทันที
- กันเคส refresh กลางเกม แล้วค้างหน้า how-to กดต่อไม่ได้ (handshake ready→countdown ผ่านไปแล้ว) */
- let playRejoinLiveResume = false;
- /** ปิด how-to/countdown overlay ทั้งหมด (ใช้ตอน resume เข้าเกม live หลัง reconnect) */
- function hideHowtoOverlaysForLiveResumePlay() {
- try {
- const ho = document.getElementById('gauntlet-crown-howto-overlay');
- if (ho) ho.classList.add('is-hidden');
- const cd = document.getElementById('gauntlet-crown-countdown');
- if (cd) cd.classList.add('is-hidden');
- gauntletCrownHowtoVisible = false;
- } catch (_e) { /* ignore */ }
- }
- function isGauntletCrownPregameBlockingPlay() {
- if (!usesCrownLobbyShellPlay()) return false;
- if (gauntletCrownRunHeldRemote) return true;
- if (gauntletCrownPregamePhase != null && gauntletCrownPregamePhase !== 'live') return true;
- return false;
- }
-
- /**
- * Last Light (crown heist): center camera on the whole party bbox instead of only `me`
- * — reduces empty void on the side when you fall behind and keeps bots + you in frame together when possible.
- */
- function getGauntletCrownHeistGroupCameraCenterPxPlay(tileSizeRef, canvasW, canvasH, zDrawVal) {
- if (!isGauntletCrownHeistMapPlay() || !mapData) return null;
- const md = mapData;
- const { cw, ch } = getCharacterFootprintWH(md);
- const ww = md.width || 20;
- const hh = md.height || 15;
- const mapWpx = ww * tileSizeRef;
- const mapHpx = hh * tileSizeRef;
- const halfW = canvasW / (2 * zDrawVal);
- const halfH = canvasH / (2 * zDrawVal);
- const ents = [];
- if (!me.gauntletEliminated && Number.isFinite(me.x) && Number.isFinite(me.y)) {
- ents.push({ cx: (me.x + cw * 0.5) * tileSizeRef, cy: (me.y + ch * 0.5) * tileSizeRef });
- }
- others.forEach((o, id) => {
- if (!o || o.gauntletEliminated) return;
- if (!playBotsEnabled() && isPreviewBotId(id)) return;
- if (!Number.isFinite(o.x) || !Number.isFinite(o.y)) return;
- ents.push({ cx: (o.x + cw * 0.5) * tileSizeRef, cy: (o.y + ch * 0.5) * tileSizeRef });
- });
- if (!ents.length) return null;
- let minCx = Infinity;
- let maxCx = -Infinity;
- let sumCy = 0;
- for (let i = 0; i < ents.length; i++) {
- const e = ents[i];
- minCx = Math.min(minCx, e.cx);
- maxCx = Math.max(maxCx, e.cx);
- sumCy += e.cy;
- }
- let px = (minCx + maxCx) * 0.5;
- /* แกน Y ตามผู้เล่นเครื่องตัวเอง (ไม่เฉลี่ยทั้งกลุ่ม) → เลนของเราคงที่ใต้กล้อง, host/คนอื่นอยู่เลนของเขาเอง
- (เดิมเฉลี่ย Y ทั้งกลุ่ม → ทุกคนถูกเลื่อนจากเลนจริง ทำให้ host ดูมาซ้อนเลนของ client) ; ตายแล้ว → fallback เฉลี่ยกลุ่ม */
- let py = sumCy / ents.length;
- if (!me.gauntletEliminated && Number.isFinite(me.y)) {
- py = (me.y + ch * 0.5) * tileSizeRef;
- }
- const minCamX = halfW;
- const maxCamX = Math.max(minCamX, mapWpx - halfW);
- const minCamY = halfH;
- const maxCamY = Math.max(minCamY, mapHpx - halfH);
- const viewW = halfW * 2;
- const viewH = halfH * 2;
- /*
- * ถ้ามุมมองกว้าง/สูงกว่าแมป: อย่าใช้ clamp แบบ minCamX (= กล้องชิดซ้ายโลก) — จะดูเหมือนแมปติดมุมซ้ายบน (เด่นใน embed / ซูมออก)
- * ให้จัดกลางแมปแทน — ภารกิจคำถาม mng8a80o ช่วง live ใช้กล้องกลางแมปเหมือนกัน (ดู isQuizQuestionMissionHudActivePlay + draw)
- */
- /* runner แนวนอน: แมปแคบกว่าจอ → เดิมจับ "กลางจอ" (px=mapWpx*0.5) = เกิดพื้นดำขนาบซ้าย = "ช่องโหว่ข้างหลัง".
- เปลี่ยนเป็น "ชิดซ้าย" (ขอบซ้าย grid = ขอบซ้ายจอ, worldMinX=0) → ไม่มีดำซ้าย + strip scroll (S) เลื่อนขึ้น
- ทำให้พื้นดำก่อนแถบหลุดออกนอกจอซ้าย + อุปสรรคหายที่ขอบซ้ายจอพอดี. (ผู้เล่นเลือก: คงสเกล+ชิดซ้าย) */
- if (viewW >= mapWpx) px = minCamX;
- else px = Math.max(minCamX, Math.min(maxCamX, px));
- if (viewH >= mapHpx) py = mapHpx * 0.5;
- else py = Math.max(minCamY, Math.min(maxCamY, py));
- return { px, py };
- }
-
- /** Preview bots only — full tail-off loss needs server support for real humans */
- const GAUNTLET_CROWN_TAIL_OFFSCREEN_MARGIN_PX = 40;
- function maybeEliminateGauntletPreviewBotsTailOffCameraPlay(camX, camY, zDrawVal) {
- if (!playBotsEnabled() || !isMePlayHost() || !isGauntletCrownHeistMapPlay() || !mapData) return;
- if (detectiveCaseFillBots) return; /* MG2 เกมจริง: server ตัดสินการตาย/คัดออกของบอทเอง */
- if (gauntletCrownPregamePhase !== 'live') return;
- const halfW = canvas.width / (2 * zDrawVal);
- const worldMinX = camX - halfW;
- const gate = worldMinX - GAUNTLET_CROWN_TAIL_OFFSCREEN_MARGIN_PX;
- const { cw } = getCharacterFootprintWH(mapData);
- const ts = mapData.tileSize || 32;
- others.forEach((o, id) => {
- if (!isPreviewBotId(id) || !o || o.gauntletEliminated) return;
- const rightWorld = (Number(o.x) + cw) * ts;
- if (rightWorld < gate) o.gauntletEliminated = true;
- });
- }
-
- function isStack() { return mapData && mapData.gameType === 'stack'; }
- function isJumpSurvive() { return mapData && mapData.gameType === 'jump_survive'; }
- /* MG5 server-auth: server เป็นเจ้าของบอท/รอบ → host เลิก sim บอทเอง, ทุกเครื่องรับตำแหน่งบอทจาก server */
- function jumpSurviveServerAuthActive() {
- return isJumpSurvive() && (jumpSurviveServerAuthPlay || isDetectiveMinigamePlay());
- }
- /* MG6 server-auth: server เป็นเจ้าของบอท/รอบ → host เลิก sim บอท, ทุกเครื่องรับตำแหน่งบอทจาก server */
- function spaceShooterServerAuthActive() {
- return isSpaceShooter() && (spaceShooterServerAuthPlay || isDetectiveMinigamePlay());
- }
- /* MG7 server-auth: server เป็นเจ้าของบอท/รอบ/HP บอส → host เลิก sim บอท, ทุกเครื่องรับตำแหน่ง/ดาเมจบอทจาก server */
- function balloonBossServerAuthActive() {
- return isBalloonBoss() && (balloonBossServerAuthPlay || isDetectiveMinigamePlay());
- }
-
- function currentPlayMapId() {
- const q = (playSessionMapId || '').trim();
- if (q) return q;
- if (mapData && mapData.id != null && String(mapData.id).trim() !== '') return String(mapData.id).trim();
- return (playMapIdFromQuery || '').trim();
- }
-
- function isQuizQuestionMissionUiMapPlay() {
- return isQuiz() && currentPlayMapId() === QUIZ_QUESTION_MISSION_MAP_ID;
- }
-
- function isQuizQuestionMissionPregameBlockingPlay() {
- if (!isQuizQuestionMissionUiMapPlay()) return false;
- return quizQuestionMissionPhase != null && quizQuestionMissionPhase !== 'live' && quizQuestionMissionPhase !== 'ended';
- }
-
- function isStackTowerMissionUiMapPlay() {
- return isStack() && currentPlayMapId() === STACK_TOWER_MISSION_MAP_ID;
- }
-
- function getStackTowerBlockWorldScalePlay() {
- return isStackTowerMissionUiMapPlay() ? STACK_TOWER_BLOCK_WORLD_SCALE : 1;
- }
-
- function isStackTowerMissionPregameBlockingPlay() {
- if (!isStackTowerMissionUiMapPlay()) return false;
- return stackTowerMissionPhase != null && stackTowerMissionPhase !== 'live' && stackTowerMissionPhase !== 'ended';
- }
-
- function isStackTowerMissionHudActivePlay() {
- return isStackTowerMissionUiMapPlay() && stackTowerMissionPhase === 'live';
- }
-
- /** mnptfts2 Jumper — ใช้ cyber HUD แบบภารกิจคำถาม (TIME plaque + SCORE แถว QM + กรอบโปรไฟล์) */
- function isJumpSurviveMissionHudActivePlay() {
- return isJumpSurviveMissionUiMapPlay() && jumpSurviveMissionPhase === 'live';
- }
-
- /** Space Shooter mnpz6rkp — ช่วงเล่นจริง: HUD เดียวกับ Stack mission (คลาส question-mission + TIME plaque) */
- function isSpaceShooterMissionHudActivePlay() {
- return isSpaceShooterMissionUiMapPlay() && spaceShooterMissionPhase === 'live';
- }
-
- /** Mega Virus mnq1eml7 (MG7) — ช่วงเล่นจริง: ใช้ HUD/score-row แบบเดียวกับ MG6 (qm-mock)
- กันคะแนน/ชื่อใช้ layout เก่าที่ text ทับ/ซ่อน */
- function isBalloonBossMissionHudActivePlay() {
- return isMegaVirusMissionShellMapPlay() && balloonBossSessionStartMs > 0 && !balloonBossGameEnded;
- }
-
- function stackTowerAssetUrl(file) {
- return BASE + '/img/TowerBlock/' + String(file || '').replace(/^\/+/, '');
- }
-
- function ensureStackTowerSlingImagePlay() {
- if (!stackTowerSlingImg) {
- stackTowerSlingImg = new Image();
- stackTowerSlingImg.decoding = 'async';
- stackTowerSlingImg.src = stackTowerAssetUrl('sling.png');
- }
- const im = stackTowerSlingImg;
- return im && im.complete && im.naturalWidth > 0 ? im : null;
- }
-
- function ensureStackTowerScorePopupImagesPlay() {
- if (!stackTowerScorePlus10Img) {
- stackTowerScorePlus10Img = new Image();
- stackTowerScorePlus10Img.decoding = 'async';
- stackTowerScorePlus10Img.src = stackTowerAssetUrl('score+10.png');
- }
- if (!stackTowerScorePlus20Img) {
- stackTowerScorePlus20Img = new Image();
- stackTowerScorePlus20Img.decoding = 'async';
- stackTowerScorePlus20Img.src = stackTowerAssetUrl('score+20.png');
- }
- return { p10: stackTowerScorePlus10Img, p20: stackTowerScorePlus20Img };
- }
-
- function ensureStackTowerPerfectFxImagesPlay() {
- if (!stackTowerScoreLightImg) {
- stackTowerScoreLightImg = new Image();
- stackTowerScoreLightImg.decoding = 'async';
- stackTowerScoreLightImg.src = stackTowerAssetUrl('score-light.png');
- }
- if (!stackTowerScoreX2Img) {
- stackTowerScoreX2Img = new Image();
- stackTowerScoreX2Img.decoding = 'async';
- stackTowerScoreX2Img.src = stackTowerAssetUrl('scorex2.png');
- }
- return { light: stackTowerScoreLightImg, x2: stackTowerScoreX2Img };
- }
-
- /** score-light หลัง scorex2 — วาดเป็นคู่ข้างชั้นบน (mock รูป2) */
- function drawStackTowerPerfectX2ClusterPlay(ctx, lightImg, x2Img, sx, sy, drawW, drawH, nowT, fxUntil) {
- if (!x2Img || !x2Img.complete || !x2Img.naturalWidth || drawW <= 0 || drawH <= 0) return;
- const iw = x2Img.naturalWidth;
- const ih = x2Img.naturalHeight;
- const targetH = Math.max(drawH * 0.92, Math.min(drawH * 1.35, 72));
- const scale = targetH / ih;
- const dw = iw * scale;
- const dh = ih * scale;
- const cx = sx + drawW + drawW * 0.06;
- const cy = sy + drawH * 0.5;
- const life = fxUntil != null ? Math.max(0, Math.min(1, (fxUntil - nowT) / STACK_TOWER_PERFECT_X2_MS)) : 1;
- const pulse = 0.4 + 0.48 * Math.sin((1 - life) * Math.PI);
- if (lightImg && lightImg.complete && lightImg.naturalWidth) {
- const lp = 2.7;
- const lw = dw * lp;
- const lh = dh * lp;
- const lnx = lightImg.naturalWidth;
- const lny = lightImg.naturalHeight;
- /* จัดแสงให้ตรงกลางไอคอน ×2 (ไอคอนวาดเยื้องซ้าย cx - dw*0.48 → กลางไอคอน ≈ cx + dw*0.02) */
- const iconCx = cx + dw * 0.02;
- ctx.save();
- ctx.globalAlpha = Math.min(0.98, pulse + 0.34);
- ctx.globalCompositeOperation = 'screen';
- try {
- ctx.drawImage(lightImg, 0, 0, lnx, lny, iconCx - lw * 0.5, cy - lh * 0.5, lw, lh);
- } catch (e) { /* ignore */ }
- ctx.restore();
- }
- ctx.save();
- ctx.globalAlpha = 0.98;
- ctx.globalCompositeOperation = 'source-over';
- try {
- ctx.drawImage(x2Img, 0, 0, iw, ih, cx - dw * 0.48, cy - dh * 0.5, dw, dh);
- } catch (e) { /* ignore */ }
- ctx.restore();
- }
-
- function drawStackTowerScorePopupsPlay(ctx, worldToScreen, zoom, m, layerWorldH, floorY) {
- if (!m.scorePopups || !m.scorePopups.length) return;
- const now = performance.now();
- const dur = STACK_TOWER_SCORE_POPUP_MS;
- const imgs = ensureStackTowerScorePopupImagesPlay();
- m.scorePopups = m.scorePopups.filter((p) => p.until > now);
- const hidPop = getStackTowerVisualHiddenLayerCountPlay();
- for (let pi = 0; pi < m.scorePopups.length; pi++) {
- const p = m.scorePopups[pi];
- const li = Math.floor(Number(p.layerIndex)) || 0;
- if (li < 0 || li >= m.layers.length) continue;
- if (li < hidPop) continue;
- const L = m.layers[li];
- const lw = (L.w != null ? L.w : m.initialWidthTiles) * tileSize * getStackTowerBlockWorldScalePlay();
- const cxW = L.cx * tileSize;
- const yb = floorY - (li + 1) * layerWorldH;
- const xl = cxW - lw / 2;
- const [sx, sy] = worldToScreen(xl, yb);
- const drawW = lw * zoom;
- const drawH = layerWorldH * zoom;
- const t0 = p.until - dur;
- const t = Math.max(0, Math.min(1, (now - t0) / dur));
- const alpha = 0.2 + 0.78 * Math.sin(Math.PI * t);
- const rise = Math.sin((t * Math.PI) / 2) * 20 * zoom;
- const im = p.kind === '20' ? imgs.p20 : imgs.p10;
- const targetW = Math.min(drawW * 0.92, Math.max(52, 64 * zoom));
- let iw = targetW;
- let ih = targetW * 0.38;
- if (im && im.complete && im.naturalWidth > 0 && im.naturalHeight > 0) {
- ih = (targetW * im.naturalHeight) / im.naturalWidth;
- }
- const cx = sx + drawW / 2;
- const cy = sy - Math.max(8, 6 * zoom) - rise - ih * 0.5;
- ctx.save();
- ctx.globalAlpha = Math.min(0.98, Math.max(0.08, alpha));
- if (im && im.complete && im.naturalWidth > 0) {
- try {
- ctx.drawImage(im, 0, 0, im.naturalWidth, im.naturalHeight, cx - iw / 2, cy - ih / 2, iw, ih);
- } catch (e) { /* ignore */ }
- } else {
- ctx.font = 'bold ' + Math.round(Math.max(12, 15 * zoom)) + 'px ui-monospace, monospace';
- ctx.textAlign = 'center';
- ctx.textBaseline = 'middle';
- ctx.fillStyle = p.kind === '20' ? '#7af8ff' : '#b4f9cd';
- ctx.fillText(p.kind === '20' ? '+20' : '+10', cx, cy);
- }
- ctx.restore();
- }
- }
-
- /** สร้างเศษบล็อกตกจากบล็อกที่พลาด (ใช้ตำแหน่ง/หน้าตาเดิมของ stackFall) */
- function spawnStackMissDebrisPlay(sf) {
- if (!sf || !stackMini) return;
- const lh = stackMini.layerWorldH || Math.max(14, tileSize * 0.3);
- const cxW = sf.xLeft1 + sf.tw / 2;
- const landOff = sf.hit && sf.hit.landOffsetTiles ? sf.hit.landOffsetTiles : 0;
- const dir = landOff >= 0 ? 1 : -1;
- stackMissDebris.push({
- cxW,
- topY: sf.y1,
- w: sf.tw,
- h: lh,
- vx: dir * (tileSize * (1.4 + Math.random() * 0.9)),
- vy: -tileSize * (0.4 + Math.random() * 0.5),
- rot: sf.tiltMax || 0,
- vrot: dir * (2.0 + Math.random() * 1.8),
- seat: sf.actorSeat,
- heavy: !!sf.actorHeavy,
- hue: (stackMini.layers.length * 47) % 360,
- });
- while (stackMissDebris.length > 6) stackMissDebris.shift();
- _stackDebrisLastT = 0;
- }
- /** อัปเดต+วาดเศษบล็อกที่ตก (gravity + หมุน + ลอยออกข้าง) จนหลุดขอบจอล่าง */
- function drawStackMissDebrisPlay(ctx, worldToScreen, zoom, floorWorldY) {
- if (!stackMissDebris.length) return;
- const now = performance.now();
- let dt = _stackDebrisLastT ? (now - _stackDebrisLastT) / 1000 : 0.016;
- _stackDebrisLastT = now;
- if (dt > 0.05) dt = 0.05;
- const g = tileSize * 34;
- const chCv = canvas && canvas.height ? canvas.height : 720;
- const offLimit = floorWorldY + chCv / Math.max(0.2, zoom) + tileSize * 5;
- for (let i = stackMissDebris.length - 1; i >= 0; i--) {
- const d = stackMissDebris[i];
- d.vy += g * dt;
- d.topY += d.vy * dt;
- d.cxW += d.vx * dt;
- d.rot += d.vrot * dt;
- if (d.topY > offLimit) { stackMissDebris.splice(i, 1); continue; }
- const sp = worldToScreen(d.cxW - d.w / 2, d.topY);
- const drawW = d.w * zoom;
- const drawH = d.h * zoom;
- ctx.save();
- ctx.translate(sp[0] + drawW / 2, sp[1] + drawH / 2);
- ctx.rotate(d.rot);
- drawStackBlockSpriteOrHue(ctx, -drawW / 2, -drawH / 2, drawW, drawH, d.seat, d.heavy, d.hue, { missTint: true, missOverlay: true });
- ctx.restore();
- }
- }
-
- function ensureStackTowerHeartMinusImgPlay() {
- if (!stackTowerHeartMinusImg) {
- stackTowerHeartMinusImg = new Image();
- stackTowerHeartMinusImg.decoding = 'async';
- stackTowerHeartMinusImg.src = stackTowerAssetUrl('heart-1.png');
- }
- const im = stackTowerHeartMinusImg;
- return im && im.complete && im.naturalWidth > 0 ? im : null;
- }
-
- function ensureStackTowerLifeHudImagesPlay() {
- if (!stackTowerLifeBarImg) {
- stackTowerLifeBarImg = new Image();
- stackTowerLifeBarImg.decoding = 'async';
- stackTowerLifeBarImg.src = stackTowerAssetUrl('life-bar.png');
- }
- if (!stackTowerLifeHitImg) {
- stackTowerLifeHitImg = new Image();
- stackTowerLifeHitImg.decoding = 'async';
- stackTowerLifeHitImg.src = stackTowerAssetUrl('life-hit.png');
- }
- if (!stackTowerLifeFullImg) {
- stackTowerLifeFullImg = new Image();
- stackTowerLifeFullImg.decoding = 'async';
- stackTowerLifeFullImg.src = stackTowerAssetUrl('life-full.png');
- }
- }
-
- /** Space Shooter (mnpz6rkp): โหลด life HUD จาก /img/ViolentCrime/ แล้วคืน image set ให้ drawStackTowerLifeIntegrityBarPlay */
- function ensureViolentCrimeLifeHudImagesPlay() {
- if (!violentCrimeLifeBarImg) {
- violentCrimeLifeBarImg = new Image();
- violentCrimeLifeBarImg.decoding = 'async';
- violentCrimeLifeBarImg.src = violentCrimeAssetUrl('life-bar.png');
- }
- if (!violentCrimeLifeHitImg) {
- violentCrimeLifeHitImg = new Image();
- violentCrimeLifeHitImg.decoding = 'async';
- violentCrimeLifeHitImg.src = violentCrimeAssetUrl('life-hit.png');
- }
- if (!violentCrimeLifeFullImg) {
- violentCrimeLifeFullImg = new Image();
- violentCrimeLifeFullImg.decoding = 'async';
- violentCrimeLifeFullImg.src = violentCrimeAssetUrl('life-full.png');
- }
- return { bar: violentCrimeLifeBarImg, full: violentCrimeLifeFullImg, hit: violentCrimeLifeHitImg };
- }
-
- /**
- * สัดส่วนสูงของ life-bar.png ที่เป็นข้อความ "SYSTEM INTEGRITY" (ที่เหลือ = แถวหัวใจแยกวาดเอง ไม่ทับขอบ `[` `]` ใน PNG)
- */
- const STACK_TOWER_LIFE_BAR_TITLE_FRAC = 0.38;
-
- /**
- * วาดหัวข้อจาก life-bar.png (ครอปบน) + แถวหัวใจ life-full / life-hit กึ่งกลาง — คืนความสูงที่ใช้จริง
- */
- function drawStackTowerLifeIntegrityBarPlay(ctx, destX, destY, maxW, maxH, lifeSlots, livesRem, opts) {
- const imgs = (opts && opts.images)
- ? opts.images
- : (ensureStackTowerLifeHudImagesPlay(), { bar: stackTowerLifeBarImg, full: stackTowerLifeFullImg, hit: stackTowerLifeHitImg });
- const bar = imgs.bar;
- const fullIm = (imgs.full && imgs.full.complete && imgs.full.naturalWidth > 0)
- ? imgs.full
- : ensureStackTowerHeartMinusImgPlay();
- const hitIm = imgs.hit && imgs.hit.complete && imgs.hit.naturalWidth > 0
- ? imgs.hit
- : null;
- const slots = Math.max(1, Math.min(20, Math.floor(lifeSlots) || 1));
- const lives = Math.max(0, Math.min(slots, Math.floor(livesRem) || 0));
-
- if (!bar || !bar.complete || !bar.naturalWidth || maxW <= 4 || maxH <= 4) {
- ctx.save();
- ctx.fillStyle = '#bb9af7';
- ctx.font = '600 9px ui-sans-serif, system-ui, sans-serif';
- ctx.textAlign = 'left';
- ctx.textBaseline = 'middle';
- let heartStr = '';
- for (let i = 0; i < slots; i++) heartStr += i < lives ? '♥ ' : '♡ ';
- ctx.fillText('SYSTEM INTEGRITY ' + heartStr.trim(), destX, destY + maxH * 0.5);
- ctx.restore();
- return Math.min(maxH, 28);
- }
-
- const bw0 = bar.naturalWidth;
- const bh0 = bar.naturalHeight;
- const titleSrcH = Math.max(2, Math.floor(bh0 * STACK_TOWER_LIFE_BAR_TITLE_FRAC));
- const scale = Math.min(maxW / bw0, 1.45);
- const bw = bw0 * scale;
- const titleDh = titleSrcH * scale;
- const gap = 3;
- const bx = destX;
- const by0 = destY + Math.max(0, (maxH - titleDh - gap - Math.min(40, maxH * 0.45)) * 0.35);
- const heartsTop = by0 + titleDh + gap;
- const roomHearts = Math.max(10, destY + maxH - heartsTop - 2);
- const heartsH = Math.max(18, Math.min(roomHearts, 40, Math.floor(maxH * 0.5)));
-
- ctx.save();
- try {
- ctx.drawImage(bar, 0, 0, bw0, titleSrcH, bx, by0, bw, titleDh);
- } catch (e) { /* ignore */ }
-
- const cy = heartsTop + heartsH * 0.5;
- const bracketW = Math.min(14, Math.max(9, bw * 0.07));
- ctx.fillStyle = 'rgba(94, 239, 255, 0.88)';
- ctx.font = '600 ' + Math.round(Math.min(17, heartsH * 0.55)) + 'px ui-monospace, "Cascadia Mono", Consolas, monospace';
- ctx.textBaseline = 'middle';
- ctx.textAlign = 'left';
- ctx.shadowColor = 'rgba(0, 234, 255, 0.45)';
- ctx.shadowBlur = 4;
- ctx.fillText('[', bx + 1, cy);
- ctx.textAlign = 'right';
- ctx.fillText(']', bx + bw - 1, cy);
- ctx.shadowBlur = 0;
-
- const ix = bx + bracketW + 4;
- const iwInner = Math.max(24, bw - (bracketW + 4) * 2);
- const slotW = iwInner / slots;
- const iconMax = Math.min(heartsH * 0.78, slotW * 0.72, 34);
-
- for (let i = 0; i < slots; i++) {
- const cx = ix + slotW * (i + 0.5);
- const useFull = i < lives;
- const im = useFull ? fullIm : hitIm;
- if (im && im.complete && im.naturalWidth > 0 && im.naturalHeight > 0) {
- const nw = im.naturalWidth;
- const nh = im.naturalHeight;
- let ih = iconMax;
- let iw = (ih * nw) / nh;
- const capW = slotW * 0.82;
- const capH = heartsH * 0.88;
- if (iw > capW) {
- iw = capW;
- ih = (iw * nh) / nw;
- }
- if (ih > capH) {
- ih = capH;
- iw = (ih * nw) / nh;
- }
- if (iw < 6 && nh > 0) {
- iw = 6;
- ih = (iw * nh) / nw;
- if (ih > capH) {
- ih = capH;
- iw = (ih * nw) / nh;
- }
- }
- try {
- ctx.drawImage(im, 0, 0, nw, nh, cx - iw / 2, cy - ih / 2, iw, ih);
- } catch (e2) { /* ignore */ }
- } else {
- ctx.fillStyle = useFull ? '#9ece6a' : '#565f89';
- ctx.font = 'bold ' + Math.round(Math.max(10, iconMax * 0.72)) + 'px sans-serif';
- ctx.textAlign = 'center';
- ctx.textBaseline = 'middle';
- ctx.fillText(useFull ? '♥' : '♡', cx, cy);
- }
- }
- ctx.restore();
- const usedH = heartsTop + heartsH - by0 + 2;
- return Math.min(maxH, Math.max(titleDh, usedH));
- }
-
- function triggerStackTowerHeartMinusFxPlay() {
- if (!isStackTowerMissionHudActivePlay()) return;
- stackTowerHeartMinusFx = { until: performance.now() + STACK_TOWER_HEART_MINUS_FX_MS };
- }
-
- function drawStackTowerHeartMinusFxPlay(ctx, worldToScreen, zoom, m, layerWorldH, floorY, nLay) {
- if (!stackTowerHeartMinusFx) return;
- const nt = performance.now();
- if (nt >= stackTowerHeartMinusFx.until) {
- stackTowerHeartMinusFx = null;
- return;
- }
- const dur = STACK_TOWER_HEART_MINUS_FX_MS;
- const t0 = stackTowerHeartMinusFx.until - dur;
- const u = Math.max(0, Math.min(1, (nt - t0) / dur));
- const alpha = 1 - u * u;
- const worldCx = m.topCenterX * tileSize;
- const stackTopY = floorY - nLay * layerWorldH;
- const worldCy = stackTopY - tileSize * 1.55 - u * tileSize * 0.5;
- const [sx, sy] = worldToScreen(worldCx, worldCy);
- const im = ensureStackTowerHeartMinusImgPlay();
- const maxW = Math.max(72, Math.min(240, 6.8 * tileSize * zoom));
- let dw = maxW;
- let dh = maxW * 0.52;
- if (im && im.naturalWidth > 0 && im.naturalHeight > 0) {
- dh = (maxW * im.naturalHeight) / im.naturalWidth;
- }
- ctx.save();
- ctx.globalAlpha = Math.max(0, Math.min(0.98, alpha));
- if (im) {
- ctx.drawImage(im, sx - dw / 2, sy - dh / 2, dw, dh);
- } else {
- ctx.fillStyle = '#f7768e';
- ctx.font = 'bold ' + Math.round(Math.max(14, 18 * zoom)) + 'px ui-monospace, monospace';
- ctx.textAlign = 'center';
- ctx.textBaseline = 'middle';
- ctx.fillText('♥ −1', sx, sy);
- }
- ctx.restore();
- }
-
- /** Glow สี่เหลี่ยมสีเหลือง — ขอบเขตเท่ากล่องบล็อก (drawW×drawH) ไม่ล้ำออกนอกสไปรต์ */
- function drawStackTowerPerfectYellowGlowBehindBlockPlay(ctx, sx, sy, drawW, drawH, nowT, untilT) {
- if (drawW <= 0 || drawH <= 0) return;
- const life = Math.max(0, Math.min(1, (untilT - nowT) / STACK_TOWER_PERFECT_GLOW_MS));
- const pulse = 0.38 + 0.48 * Math.sin((1 - life) * Math.PI);
- ctx.save();
- ctx.globalCompositeOperation = 'source-over';
- /* เติมเหลืองทับบล็อกให้เด่น */
- ctx.globalAlpha = Math.min(0.6, 0.3 + pulse * 0.32);
- ctx.fillStyle = 'rgba(255, 224, 60, 0.55)';
- ctx.fillRect(sx, sy, drawW, drawH);
- /* กรอบเหลืองหนา "รอบ" บล็อก (เลยขอบออกมา) + เรืองแสงออกนอก → เห็นชัด */
- const pad = Math.max(3, Math.min(12, drawW * 0.05));
- const sw = Math.max(3, Math.min(9, drawW * 0.055));
- ctx.shadowColor = 'rgba(255, 196, 24, 0.98)';
- ctx.shadowBlur = Math.max(10, Math.min(30, 14 + pulse * 16));
- ctx.shadowOffsetX = 0;
- ctx.shadowOffsetY = 0;
- ctx.globalAlpha = Math.min(1, 0.62 + pulse * 0.38);
- ctx.strokeStyle = 'rgba(255, 238, 110, 1)';
- ctx.lineWidth = sw;
- ctx.strokeRect(sx - pad + sw * 0.5, sy - pad + sw * 0.5, drawW + pad * 2 - sw, drawH + pad * 2 - sw);
- /* เส้นในขาวอมเหลือง เพิ่มความคม */
- ctx.shadowBlur = 0;
- ctx.shadowColor = 'transparent';
- ctx.globalAlpha = Math.min(0.95, 0.55 + pulse * 0.4);
- ctx.strokeStyle = 'rgba(255, 252, 214, 0.96)';
- ctx.lineWidth = Math.max(1.5, sw * 0.42);
- ctx.strokeRect(sx - pad + sw, sy - pad + sw, drawW + pad * 2 - sw * 2, drawH + pad * 2 - sw * 2);
- ctx.restore();
- }
-
- /**
- * เชือกจากจุดหนีบบน (จอ) ลงจุดยึดบล็อก — รูป sling แนวตั้ง (แกน Y = สาย) ยืดตามความยาว
- */
- function drawStackSlingSegmentPlay(ctx, sx0, sy0, sx1, sy1, zoom) {
- const dx = sx1 - sx0;
- const dy = sy1 - sy0;
- const len = Math.hypot(dx, dy);
- if (len < 1.5) return;
- const sling = ensureStackTowerSlingImagePlay();
- if (sling) {
- const nw = sling.naturalWidth;
- const nh = sling.naturalHeight;
- const ropeW = Math.max(3, Math.min(40, nw * Math.min(1.1, zoom * 0.11) + 2));
- const ang = Math.atan2(dy, dx);
- ctx.save();
- ctx.translate(sx0, sy0);
- ctx.rotate(ang - Math.PI / 2);
- ctx.globalAlpha = 0.96;
- try {
- ctx.drawImage(sling, -ropeW / 2, 0, ropeW, len);
- } catch (e) { /* ignore */ }
- ctx.globalAlpha = 1;
- ctx.restore();
- } else {
- ctx.strokeStyle = 'rgba(90, 88, 86, 0.82)';
- ctx.lineWidth = Math.max(2.2, zoom * 1.4);
- ctx.beginPath();
- ctx.moveTo(sx0, sy0);
- ctx.lineTo(sx1, sy1);
- ctx.stroke();
- ctx.lineWidth = 1;
- }
- }
-
- const GCHOWTO_STACK_TOWER_CLASS = 'gauntlet-crown-howto-overlay--stack-tower';
-
- function setGauntletCrownHowtoStackTowerArtMaskPlay(on) {
- const hov = document.getElementById('gauntlet-crown-howto-overlay');
- if (!hov) return;
- hov.classList.toggle(GCHOWTO_STACK_TOWER_CLASS, !!on);
- }
-
- function hideStackTowerHowtoRulesDom() {
- /* กล่องกติกา Stack Tower ถูกถอนออกจาก DOM — เก็บชื่อฟังก์ชันเพื่อไม่ให้จุดเรียกพัง */
- }
-
- function teardownStackTowerMissionUiPlay() {
- stackTowerMissionPhase = null;
- stackTowerMissionDeferredPhase = null;
- stackTowerSessionStartAt = 0;
- stackTowerMissionEndedOnce = false;
- stackTowerPost50AnimStartMs = null;
- hideStackTowerHowtoRulesDom();
- setGauntletCrownHowtoStackTowerArtMaskPlay(false);
- if (stackTowerMissionCountdownTimer) {
- clearTimeout(stackTowerMissionCountdownTimer);
- stackTowerMissionCountdownTimer = null;
- }
- hideStackTowerResultFlashDomOnlyPlay();
- }
-
- function hideStackTowerResultFlashDomOnlyPlay() {
- if (stackTowerResultFlashTimer) {
- clearTimeout(stackTowerResultFlashTimer);
- stackTowerResultFlashTimer = null;
- }
- const ov = document.getElementById('stack-tower-result-flash');
- const img = document.getElementById('stack-tower-result-flash-img');
- if (ov) {
- ov.classList.add('is-hidden');
- ov.setAttribute('aria-hidden', 'true');
- }
- if (img) {
- img.onerror = null;
- img.removeAttribute('src');
- }
- }
-
- /** กันภาพผลโชว์ "ซ้ำ" — บางเกมจบ 2 path (เช่น MG2 local finish + server gauntlet-ended) ยิง flash 2 รอบผลต่างกัน
- → ตัวที่ 2 ถูกบล็อก (เก็บตัวแรกไว้). reset เมื่อเริ่มมินิเกมรอบใหม่ (resetMissionResultFlashGuardPlay) */
- let _missionResultFlashAt = 0;
- function missionResultFlashGuardPlay() {
- const now = Date.now();
- if (now - _missionResultFlashAt < 9500) return false; /* เพิ่งโชว์ไป → บล็อกตัวซ้ำ */
- _missionResultFlashAt = now;
- return true;
- }
- function resetMissionResultFlashGuardPlay() { _missionResultFlashAt = 0; }
-
- /** มีใครได้คะแนน ≥1 ไหม (จาก mission.ranked) — ตัดสิน complete/gameover (MG1 quiz / MG4 quiz_carry) */
- function missionAnyScorePlay(mission) {
- const r = (mission && Array.isArray(mission.ranked)) ? mission.ranked : [];
- return r.some(function (x) { return x && (Number(x.baseScore) || Number(x.finalScore) || Number(x.score) || 0) > 0; });
- }
- /** จำนวนผู้รอด (ไม่ eliminated) — ตัดสิน complete/gameover (MG2 เข้าเส้นชัย / MG5 / MG6) */
- function missionSurvivorsPlay(mission) {
- if (mission && typeof mission.survivorCount === 'number') return mission.survivorCount;
- const r = (mission && Array.isArray(mission.ranked)) ? mission.ranked : [];
- return r.filter(function (x) { return x && !x.eliminated; }).length;
- }
- /** จำนวนผู้เข้าร่วมทั้งหมด (คน+บอท) */
- function missionParticipantsPlay(mission) {
- if (mission && typeof mission.participantCount === 'number' && mission.participantCount > 0) return mission.participantCount;
- return (mission && Array.isArray(mission.ranked)) ? mission.ranked.length : 0;
- }
- /** "รอดทั้งหมด" — ทุกคนรอด ไม่มีใคร eliminated (MG5/MG6) */
- function missionAllSurvivedPlay(mission) {
- const total = missionParticipantsPlay(mission);
- return total > 0 && missionSurvivorsPlay(mission) >= total;
- }
- /** แฟลชรูปผลรูปเดียว (5s) แล้วเปิด GCM — เกมที่เดิมไม่มีแฟลช (MG1/MG2). asset ตาม skin ผ่าน gcmMissionMockAssetUrl */
- function beginSimpleResultFlashThenGcmPlay(mission, file) {
- if (!missionResultFlashGuardPlay()) return; /* กันโชว์ซ้ำ (MG2: local finish + server gauntlet-ended ยิงทั้งคู่) */
- hideStackTowerResultFlashDomOnlyPlay();
- const ov = document.getElementById('stack-tower-result-flash');
- const imgEl = document.getElementById('stack-tower-result-flash-img');
- if (!mission || !ov || !imgEl) { showGauntletCrownMissionOverlay(mission); return; }
- const finishToGcm = function () { hideStackTowerResultFlashDomOnlyPlay(); showGauntletCrownMissionOverlay(mission); };
- imgEl.onerror = function () { imgEl.onerror = null; finishToGcm(); };
- jdEndSfxFromFile(file);
- imgEl.src = gcmMissionMockAssetUrl(mission, file);
- ov.classList.remove('is-hidden');
- ov.setAttribute('aria-hidden', 'false');
- stackTowerResultFlashTimer = setTimeout(function () { stackTowerResultFlashTimer = null; finishToGcm(); }, STACK_TOWER_RESULT_FLASH_MS);
- }
-
- /** โชว์รูปผล Tower จาก TowerBlock 5 วิ แล้วเปิด GCM สรุปเดิม */
- function beginStackTowerResultFlashThenGcm(mission) {
- if (!missionResultFlashGuardPlay()) return; /* กันโชว์ผลซ้ำ */
- if (!mission || mission.uiSkin !== 'stack_tower') {
- showGauntletCrownMissionOverlay(mission);
- return;
- }
- hideStackTowerResultFlashDomOnlyPlay();
- const ov = document.getElementById('stack-tower-result-flash');
- const imgEl = document.getElementById('stack-tower-result-flash-img');
- if (!ov || !imgEl) {
- showGauntletCrownMissionOverlay(mission);
- return;
- }
- const outc = String(mission.stackTowerOutcome || 'time_up');
- let file = 'result-timeup.png';
- if (outc === 'decrypt_complete') file = 'result-complete.png';
- else if (outc === 'misses_exhausted') file = 'result-gameover.png';
- const url = stackTowerAssetUrl(file);
- const finishToGcm = function () {
- hideStackTowerResultFlashDomOnlyPlay();
- showGauntletCrownMissionOverlay(mission);
- };
- imgEl.onerror = function () {
- imgEl.onerror = null;
- finishToGcm();
- };
- jdEndSfxFromFile(file);
- imgEl.src = url;
- ov.classList.remove('is-hidden');
- ov.setAttribute('aria-hidden', 'false');
- stackTowerResultFlashTimer = setTimeout(function () {
- stackTowerResultFlashTimer = null;
- finishToGcm();
- }, STACK_TOWER_RESULT_FLASH_MS);
- }
-
- /** Jumper mnptfts2: มีคนรอด ≥1 = complete · ไม่รอดเลย = gameover (เกรดไม่เกี่ยว — ตามกฎใหม่) */
- function jumpSurviveMissionOutcomeImageFile(mission) {
- /* รอดทั้งหมด = complete · มีคนตาย/ตายหมด = gameover (ตามกฎใหม่) */
- return missionAllSurvivedPlay(mission) ? 'result-complete.png' : 'result-gameover.png';
- }
-
- /**
- * Jumper ภารกิจ: ใช้ #stack-tower-result-flash เหมือน Tower — time_up = timeup แล้ว outcome;
- * all_dead = ข้าม timeup แล้ว outcome อย่างเดียว แล้วค่อย GCM
- */
- function beginJumpSurviveMissionResultFlashSequenceThenGcm(mission, endKind) {
- if (!missionResultFlashGuardPlay()) return; /* กันโชว์ผลซ้ำ */
- if (!mission || mission.uiSkin !== 'jumper') {
- showGauntletCrownMissionOverlay(mission);
- return;
- }
- hideStackTowerResultFlashDomOnlyPlay();
- const ov = document.getElementById('stack-tower-result-flash');
- const imgEl = document.getElementById('stack-tower-result-flash-img');
- if (!ov || !imgEl) {
- showGauntletCrownMissionOverlay(mission);
- return;
- }
- const outcomeFile = jumpSurviveMissionOutcomeImageFile(mission);
- const finishToGcm = function () {
- hideStackTowerResultFlashDomOnlyPlay();
- showGauntletCrownMissionOverlay(mission);
- };
- const showOneFlash = function (file, onDone) {
- imgEl.onerror = function () {
- imgEl.onerror = null;
- onDone();
- };
- jdEndSfxFromFile(file);
- imgEl.src = jumperAssetUrl(file);
- ov.classList.remove('is-hidden');
- ov.setAttribute('aria-hidden', 'false');
- stackTowerResultFlashTimer = setTimeout(function () {
- stackTowerResultFlashTimer = null;
- onDone();
- }, STACK_TOWER_RESULT_FLASH_MS);
- };
- if (endKind === 'time_up') {
- showOneFlash('result-timeup.png', function () {
- hideStackTowerResultFlashDomOnlyPlay();
- showOneFlash(outcomeFile, finishToGcm);
- });
- } else {
- showOneFlash(outcomeFile, finishToGcm);
- }
- }
-
- /**
- * Space Shooter mnpz6rkp: หมดเวลา = แฟลช result-timeup แล้ว result-gameover แล้ว GCM;
- * ทุกคนตาย = แฟลช result-gameover อย่างเดียวแล้ว GCM
- */
- function beginSpaceShooterMissionResultFlashSequenceThenGcm(mission, endKind) {
- if (!missionResultFlashGuardPlay()) return; /* กันโชว์ผลซ้ำ */
- if (!mission || mission.uiSkin !== 'violent_crime') {
- showGauntletCrownMissionOverlay(mission);
- return;
- }
- hideStackTowerResultFlashDomOnlyPlay();
- const ov = document.getElementById('stack-tower-result-flash');
- const imgEl = document.getElementById('stack-tower-result-flash-img');
- if (!ov || !imgEl) {
- showGauntletCrownMissionOverlay(mission);
- return;
- }
- const finishToGcm = function () {
- hideStackTowerResultFlashDomOnlyPlay();
- showGauntletCrownMissionOverlay(mission);
- };
- const showOneFlash = function (file, onDone) {
- imgEl.onerror = function () {
- imgEl.onerror = null;
- onDone();
- };
- jdEndSfxFromFile(file);
- imgEl.src = violentCrimeAssetUrl(file);
- ov.classList.remove('is-hidden');
- ov.setAttribute('aria-hidden', 'false');
- stackTowerResultFlashTimer = setTimeout(function () {
- stackTowerResultFlashTimer = null;
- onDone();
- }, STACK_TOWER_RESULT_FLASH_MS);
- };
- if (endKind === 'time_up') {
- showOneFlash('result-timeup.png', function () {
- hideStackTowerResultFlashDomOnlyPlay();
- /* หมดเวลา: รอดทั้งหมด = complete · มีคนตาย = gameover (ตามกฎใหม่) */
- showOneFlash(missionAllSurvivedPlay(mission) ? 'result-complete.png' : 'result-gameover.png', finishToGcm);
- });
- } else {
- showOneFlash('result-gameover.png', finishToGcm); /* all_dead */
- }
- }
-
- /**
- * Mega Virus (balloon_boss shell): แฟลชรูปเดียวแล้วค่อย GCM
- * — แพ้ (ทุกคนตาย / หมดเวลา) = result-gameover.png (TowerBlock เหมือนภารกิจอื่น — รูป2 flow)
- * — ชนะ = end-victory-2.png ใน MegaVirus
- */
- function beginBalloonBossMegaVirusResultFlashSequenceThenGcm(mission, endReason) {
- if (!missionResultFlashGuardPlay()) return; /* กันโชว์ผลซ้ำ */
- if (!mission || mission.uiSkin !== 'mega_virus') {
- showGauntletCrownMissionOverlay(mission);
- return;
- }
- hideStackTowerResultFlashDomOnlyPlay();
- const ov = document.getElementById('stack-tower-result-flash');
- const imgEl = document.getElementById('stack-tower-result-flash-img');
- if (!ov || !imgEl) {
- showGauntletCrownMissionOverlay(mission);
- return;
- }
- const finishToGcm = function () {
- hideStackTowerResultFlashDomOnlyPlay();
- showGauntletCrownMissionOverlay(mission);
- };
- const showOneFlash = function (url, onDone) {
- imgEl.onerror = function () { imgEl.onerror = null; onDone(); };
- jdEndSfxFromFile(url);
- imgEl.src = url;
- ov.classList.remove('is-hidden');
- ov.setAttribute('aria-hidden', 'false');
- stackTowerResultFlashTimer = setTimeout(function () { stackTowerResultFlashTimer = null; onDone(); }, STACK_TOWER_RESULT_FLASH_MS);
- };
- if (endReason === 'victory') {
- if (window.jdSound) { try { window.jdSound.playSfx('boss-elim', 'mg7'); } catch (e) { /* ignore */ } }
- /* ฆ่าบอส HP=0 → end-victory-2.png (MegaVirus) */
- showOneFlash(megaVirusAssetUrl('end-victory-2.png'), finishToGcm);
- } else if (endReason === 'time') {
- /* หมดเวลา บอสยังไม่ตาย → result-timeup → result-gameover (MegaVirus ไม่มี timeup ใช้ TowerBlock) */
- showOneFlash(stackTowerAssetUrl('result-timeup.png'), function () {
- hideStackTowerResultFlashDomOnlyPlay();
- showOneFlash(stackTowerAssetUrl('result-gameover.png'), finishToGcm);
- });
- } else {
- /* ตายหมด → result-gameover */
- showOneFlash(stackTowerAssetUrl('result-gameover.png'), finishToGcm);
- }
- }
-
- function stackTowerMissionTimeLimitSecPlay() {
- const t = Number(playStackTowerMissionTimeSec);
- if (Number.isFinite(t) && t > 0) return Math.max(10, Math.min(7200, Math.floor(t)));
- return 90;
- }
-
- function stackTowerProgressBlocksPlay() {
- const n = Number(playStackTowerProgressBlocks);
- if (Number.isFinite(n) && n >= 1) return Math.max(1, Math.min(500, Math.floor(n)));
- return 50;
- }
-
- function stackTowerDecryptPctPlay() {
- if (!stackMini) return 0;
- if (isStackTowerMissionUiMapPlay()) {
- const p = Number(stackMini.progressPct);
- const x = Math.min(100, Math.max(0, Number.isFinite(p) ? p : 0));
- if (x >= 99.999) return 100;
- return Math.floor(x);
- }
- const teamScore = stackMini.score || 0;
- return Math.min(100, Math.floor((stackMini.layers.length || 0) * 11 + Math.min(40, teamScore * 3)));
- }
-
- function stackTowerMissionElapsedSecPlay() {
- /* ยึดเวลาเริ่มจริงของ server (playMissionLiveBeginsAt) + serverNow() → ทุกจอเห็น TIME ตรงกัน
- แม้เข้า/reconnect ช้า (เดิมใช้ performance.now() local = จอที่เข้าทีหลังนับเวลาเริ่มใหม่ → TIME 90 vs 8) */
- if (playMissionLiveBeginsAt > 0) {
- const el = (serverNow() - playMissionLiveBeginsAt) / 1000;
- if (Number.isFinite(el) && el >= 0) return el;
- }
- if (stackTowerSessionStartAt <= 0) return 0;
- return (performance.now() - stackTowerSessionStartAt) / 1000;
- }
-
- function applyStackTowerMissionPanelImages() {
- const howtoBg = document.querySelector('#gauntlet-crown-howto-overlay .gch-bg');
- if (howtoBg) {
- howtoBg.src = stackTowerAssetUrl('popup-Howto.png');
- howtoBg.onerror = function () {
- this.onerror = null;
- this.src = BASE + '/img/gauntlet-assets/popup-Howto.png';
- };
- }
- const resBg = document.querySelector('#gauntlet-crown-mission-overlay .gcm-bg');
- if (resBg) {
- resBg.src = stackTowerAssetUrl('popup-result.png');
- resBg.onerror = function () {
- this.onerror = null;
- this.src = BASE + '/img/gauntlet-assets/popup-result.png';
- };
- }
- ensureStackTowerSlingImagePlay();
- }
-
- function showStackTowerMissionHowtoOverlay() {
- if (!isStackTowerMissionUiMapPlay()) return;
- if (playRejoinLiveResume) { stackTowerMissionPhase = 'live'; hideHowtoOverlaysForLiveResumePlay(); return; }
- hideConflictingOverlaysForGauntletCrown();
- applyStackTowerMissionPanelImages();
- if (stackTowerMissionCountdownTimer) {
- clearTimeout(stackTowerMissionCountdownTimer);
- stackTowerMissionCountdownTimer = null;
- }
- const cd = document.getElementById('gauntlet-crown-countdown');
- if (cd) cd.classList.add('is-hidden');
- stackTowerMissionPhase = 'howto';
- const ov = document.getElementById('gauntlet-crown-howto-overlay');
- if (!ov) return;
- gauntletCrownHowtoVisible = true;
- ov.classList.remove('is-hidden');
- setGauntletCrownHowtoStackTowerArtMaskPlay(true);
- const st = document.getElementById('gauntlet-crown-howto-status');
- if (st) st.classList.remove('gch-status--jumper');
- const btn = document.getElementById('btn-gch-ready');
- const humans = quizCarryPregameHumanIds();
- const totPlayers = Math.max(1, quizCarryPregameTotalPlayers());
- const soleParticipant = totPlayers === 1;
- if (soleParticipant) {
- if (st) {
- st.textContent = '';
- st.classList.add('is-hidden');
- }
- if (btn) {
- const canGo = isMePlayHost() || humans.length === 1;
- btn.classList.remove('is-start-phase');
- btn.classList.toggle('is-read-only', !canGo);
- btn.disabled = !canGo;
- btn.title = canGo ? 'READY — เริ่มนับถอยหลัง' : 'รอโฮสต์ · Wait for host';
- btn.setAttribute('aria-pressed', 'false');
- }
- } else {
- if (socket && socket.connected) socket.emit('gauntlet-crown-lobby-sync-request');
- gauntletCrownSyncGuestReadyIfNeeded();
- updateStackTowerMissionHowtoHud();
- }
- }
-
- /** Stack Tower mnn93hpi — Ready Status / ปุ่ม แบบ quiz mission (mng8a80o) */
- function updateStackTowerMissionHowtoHud() {
- if (!isStackTowerMissionUiMapPlay() || stackTowerMissionPhase !== 'howto') return;
- const st = document.getElementById('gauntlet-crown-howto-status');
- const btn = document.getElementById('btn-gch-ready');
- if (!st || !btn) return;
- applyGauntletCrownReadyButtonPlay(st, btn);
- }
-
- /** Jump Survival mnptfts2 — Ready Status / ปุ่ม เดียวกับ Stack Tower */
- function updateJumpSurviveMissionHowtoHud() {
- if (!isJumpSurviveMissionUiMapPlay() || jumpSurviveMissionPhase !== 'howto') return;
- const st = document.getElementById('gauntlet-crown-howto-status');
- const btn = document.getElementById('btn-gch-ready');
- if (!st || !btn) return;
- applyGauntletCrownReadyButtonPlay(st, btn);
- }
-
- /** Space Shooter mnpz6rkp — Ready Status / ปุ่ม เดียวกับ Jumper */
- function updateSpaceShooterMissionHowtoHud() {
- if (!isSpaceShooterMissionUiMapPlay() || spaceShooterMissionPhase !== 'howto') return;
- const st = document.getElementById('gauntlet-crown-howto-status');
- const btn = document.getElementById('btn-gch-ready');
- if (!st || !btn) return;
- applyGauntletCrownReadyButtonPlay(st, btn);
- }
-
- function beginStackTowerMissionCountdownThenRun() {
- if (!isStackTowerMissionUiMapPlay()) return;
- if (stackTowerMissionCountdownTimer) {
- clearTimeout(stackTowerMissionCountdownTimer);
- stackTowerMissionCountdownTimer = null;
- }
- stackTowerMissionPhase = 'countdown';
- const howto = document.getElementById('gauntlet-crown-howto-overlay');
- if (howto) {
- howto.classList.add('is-hidden');
- howto.classList.remove(GCHOWTO_STACK_TOWER_CLASS);
- }
- gauntletCrownHowtoVisible = false;
- hideReadyAvatarsFloat(); /* ซ่อนแถวหน้าตัวละคร ready ตอนเริ่มเกม (กันค้างบนจอระหว่างเล่น) */
- hideStackTowerHowtoRulesDom();
- const st = document.getElementById('gauntlet-crown-howto-status');
- if (st) {
- st.classList.add('is-hidden');
- st.classList.remove('gch-status--jumper');
- }
- const cd = document.getElementById('gauntlet-crown-countdown');
- const numEl = document.getElementById('gauntlet-crown-countdown-num');
- const runFinish = function () {
- if (cd) cd.classList.add('is-hidden');
- if (stackTowerMissionCountdownTimer) {
- clearTimeout(stackTowerMissionCountdownTimer);
- stackTowerMissionCountdownTimer = null;
- }
- stackTowerMissionPhase = 'live';
- stackTowerMissionEndedOnce = false;
- stackTowerSessionStartAt = performance.now();
- lastStackTickMs = performance.now();
- resetStackMinigameState();
- };
- if (!cd || !numEl) {
- runFinish();
- return;
- }
- cd.classList.remove('is-hidden');
- syncGauntletCrownCountdownMg2ModePlay(cd);
- runAlignedCountdownPlay(
- function (n) { setCountdown321QuestionAssetGraphic(numEl, n); },
- runFinish,
- function (id) { stackTowerMissionCountdownTimer = id; }
- );
- }
-
- function stackTowerMissionBuildPayload(endOpts) {
- const outcome = endOpts && endOpts.outcome ? String(endOpts.outcome) : 'decrypt_complete';
- const rows = [];
- const teamPts = Math.max(0, Number(stackMini && stackMini.score) || 0);
- function pushEnt(id, nickname, characterId, score) {
- rows.push({
- id: id,
- nickname: (nickname && String(nickname).trim()) ? String(nickname).trim() : String(id),
- characterId: characterId ?? null,
- baseScore: Math.max(0, Number(score) || 0),
- eliminated: false,
- hadQuizWrong: false,
- rankBonus: 0,
- finalScore: Math.max(0, Number(score) || 0),
- });
- }
- if (playBotsEnabled() && stackPreviewTurnOrder && stackPreviewTurnOrder.length === STACK_PREVIEW_TURN_COUNT) {
- if (myId != null) {
- pushEnt(myId, (me.nickname || nick || 'คุณ').trim() || 'คุณ', me.characterId || getPlayCharacterId(), me.stackPreviewHumanPts || 0);
- }
- stackPreviewTurnOrder.forEach(function (entry) {
- if (!entry) return;
- if (entry.kind === 'bot' && entry.botId) {
- const o = others.get(entry.botId);
- pushEnt(entry.botId, o ? o.nickname : entry.botId, o ? o.characterId : null, o ? (o.stackBotScore || 0) : 0);
- } else if (entry.kind === 'human' && entry.id != null && String(entry.id) !== String(myId)) {
- /* คนจริงคนอื่น — ใส่ในสรุปด้วย ใช้คะแนนเฉพาะตัว (เดิมมีแต่ me+bots) */
- const oh = others.get(entry.id) || others.get(String(entry.id));
- pushEnt(String(entry.id), oh ? (oh.nickname || String(entry.id).slice(0, 6)) : String(entry.id).slice(0, 6), oh ? oh.characterId : null, oh ? (oh.stackPreviewHumanPts || 0) : 0);
- }
- });
- } else {
- if (myId != null) {
- pushEnt(myId, (me.nickname || nick || 'คุณ').trim() || 'คุณ', me.characterId || getPlayCharacterId(), teamPts);
- }
- others.forEach(function (o, id) {
- if (!o) return;
- if (playBotsEnabled() && isPreviewBotId(id)) return;
- pushEnt(id, o.nickname, o.characterId, teamPts);
- });
- }
- const seen = new Set();
- const uniq = [];
- rows.forEach(function (r) {
- const sid = String(r.id);
- if (seen.has(sid)) return;
- seen.add(sid);
- uniq.push(r);
- });
- uniq.sort(function (a, b) {
- if (b.baseScore !== a.baseScore) return b.baseScore - a.baseScore;
- return String(a.nickname).localeCompare(String(b.nickname), 'th') || String(a.id).localeCompare(String(b.id));
- });
- const top = uniq.slice(0, 6);
- const ranked = top.map(function (row, idx) {
- const pos = idx + 1;
- return {
- id: row.id,
- nickname: row.nickname,
- characterId: row.characterId,
- baseScore: row.baseScore,
- eliminated: false,
- hadQuizWrong: false,
- rank: pos,
- rankLabel: pos === 1 ? '1st' : pos === 2 ? '2nd' : pos === 3 ? '3rd' : String(pos),
- rankBonus: 0,
- finalScore: row.baseScore,
- };
- });
- const totalParts = ranked.map(function (r) { return r.baseScore; });
- const totalSum = totalParts.reduce(function (s, n) { return s + n; }, 0);
- const n = ranked.length || 1;
- const averageScore = Math.floor(totalSum / n);
- let grade = averageScore >= 80 ? 'A' : averageScore >= 60 ? 'B' : 'C';
- if (totalSum <= 0 && uniq.length) grade = 'F';
- const rewardCard = grade === 'F' ? null : gauntletCrownRollRewardCardLocal(grade);
- return {
- ranked: ranked,
- totalSum: totalSum,
- averageScore: averageScore,
- grade: grade,
- rewardCard: rewardCard,
- totalParts: totalParts,
- uiSkin: 'stack_tower',
- survivorCount: uniq.length,
- participantCount: uniq.length,
- stackTowerOutcome: outcome,
- };
- }
-
- function stackTowerMissionMergePreviewBotsMission(mission) {
- if (!mission || mission.uiSkin !== 'stack_tower' || !playBotsEnabled() || !others || typeof others.forEach !== 'function') return mission;
- const seen = new Set();
- (mission.ranked || []).forEach(function (r) {
- if (r && r.id != null) seen.add(String(r.id));
- });
- const baseRows = (mission.ranked || []).map(function (r) {
- return {
- id: r.id,
- nickname: r.nickname,
- characterId: r.characterId,
- baseScore: Math.max(0, Number(r.baseScore) || 0),
- eliminated: false,
- hadQuizWrong: false,
- rankBonus: 0,
- finalScore: Math.max(0, Number(r.finalScore != null ? r.finalScore : r.baseScore) || 0),
- };
- });
- others.forEach(function (o, id) {
- if (!o || !isPreviewBotId(id)) return;
- const sid = String(id);
- if (seen.has(sid)) return;
- seen.add(sid);
- baseRows.push({
- id: id,
- nickname: (o.nickname && String(o.nickname).trim()) ? String(o.nickname).trim() : sid,
- characterId: o.characterId ?? null,
- baseScore: Math.max(0, Number(o.stackBotScore) || 0),
- eliminated: false,
- hadQuizWrong: false,
- rankBonus: 0,
- finalScore: Math.max(0, Number(o.stackBotScore) || 0),
- });
- });
- baseRows.sort(function (a, b) {
- if (b.baseScore !== a.baseScore) return b.baseScore - a.baseScore;
- return String(a.nickname).localeCompare(String(b.nickname), 'th') || String(a.id).localeCompare(String(b.id));
- });
- const top = baseRows.slice(0, 6);
- const ranked = top.map(function (row, idx) {
- const pos = idx + 1;
- const bs = Math.max(0, Number(row.baseScore) || 0);
- return {
- id: row.id,
- nickname: row.nickname,
- characterId: row.characterId,
- baseScore: bs,
- eliminated: false,
- hadQuizWrong: false,
- rank: pos,
- rankLabel: pos === 1 ? '1st' : pos === 2 ? '2nd' : pos === 3 ? '3rd' : String(pos),
- rankBonus: 0,
- finalScore: bs,
- };
- });
- const totalParts = ranked.map(function (r) { return r.baseScore; });
- const totalSum = totalParts.reduce(function (s, n) { return s + n; }, 0);
- const n2 = ranked.length || 1;
- const averageScore = Math.floor(totalSum / n2);
- let grade = averageScore >= 80 ? 'A' : averageScore >= 60 ? 'B' : 'C';
- if (totalSum <= 0 && baseRows.length) grade = 'F';
- const rewardCard = grade === 'F' ? null : gauntletCrownRollRewardCardLocal(grade);
- return {
- ranked: ranked,
- totalSum: totalSum,
- averageScore: averageScore,
- grade: grade,
- rewardCard: rewardCard,
- totalParts: totalParts,
- uiSkin: 'stack_tower',
- survivorCount: baseRows.length,
- participantCount: baseRows.length,
- stackTowerOutcome: mission.stackTowerOutcome,
- };
- }
-
- function stackTowerMissionMaybeEndPlay() {
- if (!isStackTowerMissionUiMapPlay()) return;
- if (stackTowerMissionPhase !== 'live') return;
- if (stackTowerMissionEndedOnce) return;
- if (stackServerAuthPlay) return; /* server-auth: server ตัดสินจบ + ส่ง stack-over */
- const pct = stackTowerDecryptPctPlay();
- const elapsed = stackTowerMissionElapsedSecPlay();
- const timeLim = stackTowerMissionTimeLimitSecPlay();
- const missesOut = stackMini && stackMini.teamMissesLeft != null && stackMini.teamMissesLeft <= 0;
- const timeOut = elapsed >= timeLim;
- if (pct < 100 && !timeOut && !missesOut) return;
- let outcome = 'time_up';
- if (pct >= 100) outcome = 'decrypt_complete';
- else if (missesOut) outcome = 'misses_exhausted';
- /* เล่นจริง: host เป็นคนตัดสินจบ + broadcast → ทุกเครื่องจบพร้อมกัน (เดิมต่างคนต่างจับเวลา local → จบไม่พร้อม) */
- if (detectiveCaseFillBots && !isMePlayHost()) return; /* non-host รอ stack-over จาก host */
- if (detectiveCaseFillBots && socket && myId != null) {
- try { socket.emit('stack-over', { outcome: outcome }); } catch (e) { /* ignore */ }
- }
- finishStackTowerMissionLocalPlay(outcome);
- }
-
- /** จบรอบ MG3 จริง (host เรียกเอง / non-host เรียกตอนรับ stack-over) */
- function finishStackTowerMissionLocalPlay(outcome) {
- if (stackTowerMissionEndedOnce || !isStackTowerMissionUiMapPlay()) return;
- stackTowerMissionEndedOnce = true;
- stackTowerMissionPhase = 'ended';
- applyStackTowerMissionPanelImages();
- beginStackTowerResultFlashThenGcm(stackTowerMissionBuildPayload({ outcome: outcome || 'time_up' }));
- }
-
- function isJumpSurviveMissionUiMapPlay() {
- return isJumpSurvive() && currentPlayMapId() === JUMP_SURVIVE_MISSION_MAP_ID;
- }
-
- function isJumpSurviveMissionPregameBlockingPlay() {
- if (!isJumpSurviveMissionUiMapPlay()) return false;
- return jumpSurviveMissionPhase != null && jumpSurviveMissionPhase !== 'live' && jumpSurviveMissionPhase !== 'ended';
- }
-
- function jumperAssetUrl(file) {
- return BASE + '/img/Jumper/' + file;
- }
-
- function hideConflictingOverlaysForJumpSurviveMission() {
- hideConflictingOverlaysForGauntletCrown();
- }
-
- /* [2026-07-17] MG5 ช่วงท้ายเลื่อนเร็วขึ้น ×2 (user request) — 15 วิสุดท้าย.
- ⚠️ ต้องตรงกับ server เป๊ะ (server.js:jsScrollPxAt · ค่าคงที่ชุดเดียวกัน) ไม่งั้นแท่นคนละที่ = ชนไม่ตรงกัน */
- const JS_ENDGAME_BOOST_SEC = 15;
- const JS_ENDGAME_BOOST_MUL = 2;
- function jsBoostStartSecPlay() {
- const total = jumpSurviveTimeLimitSecForMission();
- return Math.max(0, (Number(total) || 0) - JS_ENDGAME_BOOST_SEC);
- }
- function jsScrollPxAtPlay(elapsedSec, risePerSec) {
- const total = jumpSurviveTimeLimitSecForMission();
- const t0 = jsBoostStartSecPlay();
- if (!(Number(total) > 0) || elapsedSec <= t0) return elapsedSec * risePerSec;
- return (t0 * risePerSec) + ((elapsedSec - t0) * risePerSec * JS_ENDGAME_BOOST_MUL);
- }
- /** ความเร็วเลื่อน "ณ ตอนนี้" — ใช้กับคนที่ยืนบนแท่น (ต้องจมตามแท่น ไม่งั้นพอ boost แท่นหนีลงไปคนลอยค้าง) */
- function jsRiseVelNowPlay(md) {
- const v = Number(md && md.jumpSurviveRisePxPerSec) > 0 ? Number(md.jumpSurviveRisePxPerSec) : 42;
- if (!(jumpSurviveLiveAnchorServerMs > 0)) return v;
- const el = Math.max(0, (serverNow() - jumpSurviveLiveAnchorServerMs) / 1000);
- return el > jsBoostStartSecPlay() ? v * JS_ENDGAME_BOOST_MUL : v;
- }
- function jumpSurviveTimeLimitSecForMission() {
- const m = Number(mapData && mapData.jumpSurviveTimeSec);
- if (Number.isFinite(m) && m > 0 && m < 7200) return Math.floor(m);
- const j = Number(playJumpSurviveMissionTimeSec);
- if (Number.isFinite(j) && j > 0 && j < 7200) return Math.floor(j);
- return 60;
- }
-
- function jumpSurviveRemainingSecMission() {
- if (!isJumpSurviveMissionUiMapPlay() || jumpSurviveMissionPhase !== 'live' || jumpSurviveSessionStartMs <= 0) return null;
- const lim = jumpSurviveTimeLimitSecForMission();
- if (!(lim > 0)) return null;
- /* นับเวลาจาก anchor server (serverNow) → จบพร้อมกันทุกเครื่อง; fallback local ถ้ายังไม่มี anchor */
- const elapsed = jumpSurviveLiveAnchorServerMs > 0
- ? (serverNow() - jumpSurviveLiveAnchorServerMs) / 1000
- : (performance.now() - jumpSurviveSessionStartMs) / 1000;
- return Math.max(0, Math.ceil(lim - elapsed));
- }
-
- function applyJumpSurviveJumperPanelImages() {
- const howtoBg = document.querySelector('#gauntlet-crown-howto-overlay .gch-bg');
- if (howtoBg) {
- howtoBg.src = jumperAssetUrl('popup-Howto.png');
- howtoBg.onerror = function () {
- this.onerror = null;
- this.src = BASE + '/img/gauntlet-assets/popup-Howto.png';
- };
- }
- const resBg = document.querySelector('#gauntlet-crown-mission-overlay .gcm-bg');
- if (resBg) {
- resBg.src = jumperAssetUrl('popup-result.png');
- resBg.onerror = function () {
- this.onerror = null;
- this.src = BASE + '/img/gauntlet-assets/popup-result.png';
- };
- }
- }
-
- function showJumpSurviveMissionHowtoOverlay() {
- if (!isJumpSurviveMissionUiMapPlay()) return;
- if (playRejoinLiveResume) { jumpSurviveMissionPhase = 'live'; hideHowtoOverlaysForLiveResumePlay(); return; }
- hideConflictingOverlaysForJumpSurviveMission();
- applyJumpSurviveJumperPanelImages();
- if (jumperMissionCountdownTimer) {
- clearTimeout(jumperMissionCountdownTimer);
- jumperMissionCountdownTimer = null;
- }
- const cd = document.getElementById('gauntlet-crown-countdown');
- if (cd) cd.classList.add('is-hidden');
- jumpSurviveMissionPhase = 'howto';
- const ov = document.getElementById('gauntlet-crown-howto-overlay');
- if (!ov) return;
- gauntletCrownHowtoVisible = true;
- ov.classList.remove('is-hidden');
- const st = document.getElementById('gauntlet-crown-howto-status');
- if (st) st.classList.remove('gch-status--jumper');
- const btn = document.getElementById('btn-gch-ready');
- const humans = quizCarryPregameHumanIds();
- const totPlayers = Math.max(1, quizCarryPregameTotalPlayers());
- const soleParticipant = totPlayers === 1;
- if (soleParticipant) {
- if (st) {
- st.textContent = '';
- st.classList.add('is-hidden');
- }
- if (btn) {
- const canGo = humans.length === 1 || isMePlayHost();
- btn.classList.remove('is-start-phase');
- btn.classList.toggle('is-read-only', !canGo);
- btn.disabled = !canGo;
- btn.title = canGo ? 'READY — เริ่มนับถอยหลัง' : 'รอโฮสต์ · Wait for host';
- btn.setAttribute('aria-pressed', 'false');
- }
- } else {
- if (socket && socket.connected) socket.emit('gauntlet-crown-lobby-sync-request');
- gauntletCrownSyncGuestReadyIfNeeded();
- updateJumpSurviveMissionHowtoHud();
- }
- }
-
- function beginJumpSurviveMissionCountdownThenRun() {
- if (!isJumpSurviveMissionUiMapPlay()) return;
- if (jumperMissionCountdownTimer) {
- clearTimeout(jumperMissionCountdownTimer);
- jumperMissionCountdownTimer = null;
- }
- jumpSurviveMissionPhase = 'countdown';
- const howto = document.getElementById('gauntlet-crown-howto-overlay');
- if (howto) howto.classList.add('is-hidden');
- gauntletCrownHowtoVisible = false;
- hideReadyAvatarsFloat(); /* ซ่อนแถวหน้าตัวละคร ready ตอนเริ่มเกม (กันค้างบนจอระหว่างเล่น) */
- const st = document.getElementById('gauntlet-crown-howto-status');
- if (st) {
- st.classList.add('is-hidden');
- st.classList.remove('gch-status--jumper');
- }
- const cd = document.getElementById('gauntlet-crown-countdown');
- const numEl = document.getElementById('gauntlet-crown-countdown-num');
- const runFinish = function () {
- if (cd) cd.classList.add('is-hidden');
- if (jumperMissionCountdownTimer) {
- clearTimeout(jumperMissionCountdownTimer);
- jumperMissionCountdownTimer = null;
- }
- jumpSurviveMissionPhase = 'live';
- jumpSurviveGameEnded = false;
- jumpSurviveEliminated = false;
- /* anchor เวลาเริ่ม live = liveBeginsAt ของ server (ถ้ามี) → scroll/timer ของทุกเครื่องอ้างอิงจุดเดียวกัน */
- jumpSurviveLiveAnchorServerMs = playMissionLiveBeginsAt > 0 ? playMissionLiveBeginsAt : serverNow();
- jumpSurvivePlatformScrollPx = 0;
- applyJumpSurvivePreviewSpawnLayout(false);
- };
- if (!cd || !numEl) {
- runFinish();
- return;
- }
- cd.classList.remove('is-hidden');
- syncGauntletCrownCountdownMg2ModePlay(cd);
- runAlignedCountdownPlay(
- function (n) { setCountdown321QuestionAssetGraphic(numEl, n); },
- runFinish,
- function (id) { jumperMissionCountdownTimer = id; }
- );
- }
-
- /** Jumper ภารกิจ mnptfts2: เกรดจากจำนวนผู้รอด — 6=A … 3=D; น้อยกว่า 2 = F; พอดี 2 คน = E */
- function jumpSurviveGradeFromSurvivorCount(survivors) {
- const s = Math.max(0, Math.floor(Number(survivors) || 0));
- if (s >= 6) return 'A';
- if (s === 5) return 'B';
- if (s === 4) return 'C';
- if (s === 3) return 'D';
- if (s === 2) return 'E';
- return 'F';
- }
-
- function jumpSurviveRollRewardCardForGrade(grade) {
- if (grade === 'F') return null;
- const r = Math.random();
- if (grade === 'A' || grade === 'B') {
- if (r < 0.35) return { kind: 'bail', th: 'เหรียญประกัน · Bail Coin', en: 'Bail Coin' };
- if (r < 0.7) return { kind: 'rare', th: 'การ์ด Rare', en: 'Rare card' };
- return { kind: 'common', th: 'การ์ดธรรมดา', en: 'Common card' };
- }
- if (grade === 'C' || grade === 'D') {
- if (r < 0.25) return { kind: 'bail', th: 'เหรียญประกัน · Bail Coin', en: 'Bail Coin' };
- if (r < 0.45) return { kind: 'rare', th: 'การ์ด Rare', en: 'Rare card' };
- return { kind: 'common', th: 'การ์ดธรรมดา', en: 'Common card' };
- }
- if (grade === 'E') {
- if (r < 0.12) return { kind: 'rare', th: 'การ์ด Rare', en: 'Rare card' };
- return { kind: 'common', th: 'การ์ดธรรมดา', en: 'Common card' };
- }
- if (r < 0.25) return { kind: 'bail', th: 'เหรียญประกัน · Bail Coin', en: 'Bail Coin' };
- if (r < 0.45) return { kind: 'rare', th: 'การ์ด Rare', en: 'Rare card' };
- return { kind: 'common', th: 'การ์ดธรรมดา', en: 'Common card' };
- }
-
- function jumpSurviveMissionTotalParticipants() {
- let n = myId != null ? 1 : 0;
- if (others && typeof others.size === 'number') n += others.size;
- return n;
- }
-
- function jumpSurviveMissionCountAlive() {
- let n = 0;
- if (myId != null && !jumpSurviveEliminated) n++;
- if (others && typeof others.forEach === 'function') {
- others.forEach(function (o) {
- if (o && !o.jumpSurviveEliminated) n++;
- });
- }
- return n;
- }
-
- /** จบทันทีเมื่อไม่มีผู้รอด — เหลือคนสุดท้ายยังเล่นต่อจนหมดเวลา (ไม่จบเร็วแบบ “ชนะขาดลอย”) */
- function jumpSurviveMissionMaybeEarlyFinish() {
- if (!isJumpSurviveMissionUiMapPlay() || jumpSurviveMissionPhase !== 'live' || jumpSurviveGameEnded) return;
- const alive = jumpSurviveMissionCountAlive();
- if (alive === 0) {
- endJumpSurviveMissionRound('all_dead');
- }
- }
-
- function jumpSurviveBuildMissionPayload() {
- const rows = [];
- const pushEnt = function (id, nickname, characterId, eliminated) {
- const alive = !eliminated;
- const baseScore = alive ? 100 : 0;
- rows.push({
- id: id,
- nickname: (nickname && String(nickname).trim()) ? String(nickname).trim() : String(id),
- characterId: characterId ?? null,
- baseScore: baseScore,
- eliminated: !!eliminated,
- rankBonus: 0,
- finalScore: baseScore,
- });
- };
- if (myId != null) {
- pushEnt(myId, (me.nickname || nick || 'คุณ').trim() || 'คุณ', me.characterId || getPlayCharacterId(), jumpSurviveEliminated);
- }
- others.forEach(function (o, id) {
- if (!o) return;
- pushEnt(id, o.nickname, o.characterId, !!o.jumpSurviveEliminated);
- });
- rows.sort(function (a, b) {
- if (b.baseScore !== a.baseScore) return b.baseScore - a.baseScore;
- return String(a.nickname).localeCompare(String(b.nickname), 'th') || String(a.id).localeCompare(String(b.id));
- });
- let survivorCount = 0;
- for (let si = 0; si < rows.length; si++) {
- if (rows[si] && !rows[si].eliminated) survivorCount++;
- }
- const participantCount = rows.length;
- const grade = jumpSurviveGradeFromSurvivorCount(survivorCount);
- const top = missionEnsureHumanInTopRanked(rows, 5);
- const ranked = top.map(function (row, idx) {
- const pos = idx + 1;
- return {
- id: row.id,
- nickname: row.nickname,
- characterId: row.characterId,
- baseScore: row.baseScore,
- eliminated: row.eliminated,
- rank: pos,
- rankLabel: pos === 1 ? '1st' : pos === 2 ? '2nd' : pos === 3 ? '3rd' : String(pos),
- rankBonus: 0,
- finalScore: row.baseScore,
- };
- });
- const totalParts = ranked.map(function (r) { return r.baseScore; });
- const totalSum = totalParts.reduce(function (s, n) { return s + n; }, 0);
- const n = ranked.length || 1;
- const averageScore = Math.floor(totalSum / n);
- const rewardCard = jumpSurviveRollRewardCardForGrade(grade);
- return {
- ranked: ranked,
- totalSum: totalSum,
- averageScore: averageScore,
- grade: grade,
- rewardCard: rewardCard,
- totalParts: totalParts,
- uiSkin: 'jumper',
- survivorCount: survivorCount,
- participantCount: participantCount,
- };
- }
-
- function jumpSurviveMergePreviewBotsMission(mission) {
- if (!mission || mission.uiSkin !== 'jumper' || !playBotsEnabled() || !others || typeof others.forEach !== 'function') return mission;
- const seen = new Set();
- (mission.ranked || []).forEach(function (r) {
- if (r && r.id != null) seen.add(String(r.id));
- });
- const baseRows = (mission.ranked || []).map(function (r) {
- return {
- id: r.id,
- nickname: r.nickname,
- characterId: r.characterId,
- baseScore: Math.max(0, Number(r.baseScore) || 0),
- eliminated: !!r.eliminated,
- rankBonus: 0,
- };
- });
- others.forEach(function (o, id) {
- if (!o || !isPreviewBotId(id)) return;
- const sid = String(id);
- if (seen.has(sid)) return;
- seen.add(sid);
- baseRows.push({
- id: id,
- nickname: (o.nickname && String(o.nickname).trim()) ? String(o.nickname).trim() : sid,
- characterId: o.characterId ?? null,
- baseScore: o.jumpSurviveEliminated ? 0 : 100,
- eliminated: !!o.jumpSurviveEliminated,
- rankBonus: 0,
- });
- });
- baseRows.sort(function (a, b) {
- if (b.baseScore !== a.baseScore) return b.baseScore - a.baseScore;
- return String(a.nickname).localeCompare(String(b.nickname), 'th') || String(a.id).localeCompare(String(b.id));
- });
- let survivorCount = 0;
- for (let si = 0; si < baseRows.length; si++) {
- if (baseRows[si] && !baseRows[si].eliminated) survivorCount++;
- }
- const participantCount = baseRows.length;
- const grade = jumpSurviveGradeFromSurvivorCount(survivorCount);
- const top = baseRows.slice(0, 6);
- const ranked = top.map(function (row, idx) {
- const pos = idx + 1;
- const bs = Math.max(0, Number(row.baseScore) || 0);
- return {
- id: row.id,
- nickname: row.nickname,
- characterId: row.characterId,
- baseScore: bs,
- eliminated: !!row.eliminated,
- rank: pos,
- rankLabel: pos === 1 ? '1st' : pos === 2 ? '2nd' : pos === 3 ? '3rd' : String(pos),
- rankBonus: 0,
- finalScore: bs,
- };
- });
- const totalParts = ranked.map(function (r) { return r.baseScore; });
- const totalSum = totalParts.reduce(function (s, n) { return s + n; }, 0);
- const n = ranked.length || 1;
- const averageScore = Math.floor(totalSum / n);
- return {
- ranked: ranked,
- totalSum: totalSum,
- averageScore: averageScore,
- grade: grade,
- rewardCard: jumpSurviveRollRewardCardForGrade(grade),
- totalParts: totalParts,
- uiSkin: 'jumper',
- survivorCount: survivorCount,
- participantCount: participantCount,
- };
- }
-
- function endJumpSurviveMissionRound(endKind) {
- if (!isJumpSurviveMissionUiMapPlay() || jumpSurviveGameEnded) return;
- jumpSurviveGameEnded = true;
- jumpSurviveMissionPhase = 'ended';
- applyJumpSurviveJumperPanelImages();
- const mission = jumpSurviveBuildMissionPayload();
- const kind = endKind === 'all_dead' ? 'all_dead' : 'time_up';
- beginJumpSurviveMissionResultFlashSequenceThenGcm(mission, kind);
- }
- function isSpaceShooter() { return mapData && mapData.gameType === 'space_shooter'; }
-
- function isSpaceShooterMissionUiMapPlay() {
- return isSpaceShooter() && currentPlayMapId() === SPACE_SHOOTER_MISSION_MAP_ID;
- }
-
- function isSpaceShooterMissionPregameBlockingPlay() {
- if (!isSpaceShooterMissionUiMapPlay()) return false;
- return spaceShooterMissionPhase != null && spaceShooterMissionPhase !== 'live' && spaceShooterMissionPhase !== 'ended';
- }
-
- function violentCrimeAssetUrl(file) {
- return BASE + '/img/ViolentCrime/' + String(file || '').replace(/^\//, '');
- }
-
- function megaVirusAssetUrl(file) {
- return BASE + '/img/MegaVirus/' + String(file || '').replace(/^\//, '');
- }
-
- function applyGauntletCrownHeistMissionPanelImages() {
- const howtoOv = document.getElementById('gauntlet-crown-howto-overlay');
- if (howtoOv) {
- const tfHowto = isGauntletCrownHeistMapPlay();
- howtoOv.classList.toggle('gch-quiz-tf-mock', tfHowto);
- howtoOv.classList.toggle('gch-mg2-mock', tfHowto);
- if (tfHowto) {
- ensureQuizTfScaleResizeListener();
- updateGchTfMockScale(howtoOv);
- } else {
- howtoOv.style.removeProperty('--gch-tf-scale');
- }
- }
- const howtoBg = document.querySelector('#gauntlet-crown-howto-overlay .gch-bg');
- if (howtoBg) {
- howtoBg.src = missionMockHudAssetUrl('popup-Howto.png');
- howtoBg.onerror = function () {
- this.onerror = null;
- this.src = BASE + '/img/gauntlet-assets/popup-Howto.png';
- };
- }
- const resBg = document.querySelector('#gauntlet-crown-mission-overlay .gcm-bg');
- if (resBg && isGauntletCrownHeistMapPlay()) {
- resBg.src = missionMockHudAssetUrl('popup-result.png');
- resBg.onerror = function () {
- this.onerror = null;
- this.src = BASE + '/img/gauntlet-assets/popup-result.png';
- };
- }
- }
-
- function applyMegaVirusMissionPanelImages() {
- const howtoBg = document.querySelector('#gauntlet-crown-howto-overlay .gch-bg');
- if (howtoBg) {
- howtoBg.src = megaVirusAssetUrl('popup-Howto.png');
- howtoBg.onerror = function () {
- this.onerror = null;
- this.src = BASE + '/img/gauntlet-assets/popup-Howto.png';
- };
- }
- const resBg = document.querySelector('#gauntlet-crown-mission-overlay .gcm-bg');
- if (resBg) {
- resBg.src = megaVirusAssetUrl('popup-result.png');
- resBg.onerror = function () {
- this.onerror = null;
- this.src = BASE + '/img/gauntlet-assets/popup-result.png';
- };
- }
- }
-
- function applySpaceShooterMissionPanelImages() {
- const howtoBg = document.querySelector('#gauntlet-crown-howto-overlay .gch-bg');
- if (howtoBg) {
- howtoBg.src = violentCrimeAssetUrl('popup-Howto.png');
- howtoBg.onerror = function () {
- this.onerror = null;
- this.src = BASE + '/img/gauntlet-assets/popup-Howto.png';
- };
- }
- const resBg = document.querySelector('#gauntlet-crown-mission-overlay .gcm-bg');
- if (resBg) {
- resBg.src = violentCrimeAssetUrl('popup-result.png');
- resBg.onerror = function () {
- this.onerror = null;
- this.src = BASE + '/img/gauntlet-assets/popup-result.png';
- };
- }
- }
-
- function showSpaceShooterMissionHowtoOverlay() {
- if (!isSpaceShooterMissionUiMapPlay()) return;
- if (playRejoinLiveResume) { spaceShooterMissionPhase = 'live'; hideHowtoOverlaysForLiveResumePlay(); return; }
- hideConflictingOverlaysForGauntletCrown();
- applySpaceShooterMissionPanelImages();
- if (spaceShooterMissionCountdownTimer) {
- clearTimeout(spaceShooterMissionCountdownTimer);
- spaceShooterMissionCountdownTimer = null;
- }
- const cd = document.getElementById('gauntlet-crown-countdown');
- if (cd) cd.classList.add('is-hidden');
- spaceShooterMissionPhase = 'howto';
- const ov = document.getElementById('gauntlet-crown-howto-overlay');
- if (!ov) return;
- gauntletCrownHowtoVisible = true;
- ov.classList.remove('is-hidden');
- const st = document.getElementById('gauntlet-crown-howto-status');
- if (st) st.classList.remove('gch-status--jumper');
- const btn = document.getElementById('btn-gch-ready');
- const humans = quizCarryPregameHumanIds();
- const totPlayers = Math.max(1, quizCarryPregameTotalPlayers());
- const soleParticipant = totPlayers === 1;
- if (soleParticipant) {
- if (st) {
- st.textContent = '';
- st.classList.add('is-hidden');
- }
- if (btn) {
- const canGo = humans.length === 1 || isMePlayHost();
- btn.classList.remove('is-start-phase');
- btn.classList.toggle('is-read-only', !canGo);
- btn.disabled = !canGo;
- btn.title = canGo ? 'READY — เริ่มนับถอยหลัง' : 'รอโฮสต์ · Wait for host';
- btn.setAttribute('aria-pressed', 'false');
- }
- } else {
- if (socket && socket.connected) socket.emit('gauntlet-crown-lobby-sync-request');
- gauntletCrownSyncGuestReadyIfNeeded();
- updateSpaceShooterMissionHowtoHud();
- }
- spaceShooterResetMissionShipStateForAllPlay();
- }
-
- function beginSpaceShooterMissionCountdownThenRun() {
- if (!isSpaceShooterMissionUiMapPlay()) return;
- if (spaceShooterMissionCountdownTimer) {
- clearTimeout(spaceShooterMissionCountdownTimer);
- spaceShooterMissionCountdownTimer = null;
- }
- spaceShooterMissionPhase = 'countdown';
- const howto = document.getElementById('gauntlet-crown-howto-overlay');
- if (howto) howto.classList.add('is-hidden');
- gauntletCrownHowtoVisible = false;
- hideReadyAvatarsFloat(); /* ซ่อนแถวหน้าตัวละคร ready ตอนเริ่มเกม (กันค้างบนจอระหว่างเล่น) */
- const st = document.getElementById('gauntlet-crown-howto-status');
- if (st) {
- st.classList.add('is-hidden');
- st.classList.remove('gch-status--jumper');
- }
- const cd = document.getElementById('gauntlet-crown-countdown');
- const numEl = document.getElementById('gauntlet-crown-countdown-num');
- const runFinish = function () {
- if (cd) cd.classList.add('is-hidden');
- if (spaceShooterMissionCountdownTimer) {
- clearTimeout(spaceShooterMissionCountdownTimer);
- spaceShooterMissionCountdownTimer = null;
- }
- spaceShooterMissionPhase = 'live';
- spaceShooterGameEnded = false;
- spaceShooterBullets = [];
- spaceShooterAsteroids = [];
- spaceShooterAsteroidExplosions = [];
- spaceShooterPopups = [];
- spaceShooterLastTickMs = performance.now();
- spaceShooterSpawnAccMs = 0;
- spaceShooterSpawnCount = 0;
- /* anchor = liveBeginsAt ของ server (ทุกเครื่องได้ค่าเดียวกัน) → spawn/timer อ้างอิงจุดเดียวกัน */
- spaceShooterLiveAnchorServerMs = playMissionLiveBeginsAt > 0 ? playMissionLiveBeginsAt : serverNow();
- spaceShooterFireCd = 0;
- spaceShooterSessionStartMs = performance.now();
- spaceShooterLastMoveEmit = 0;
- if (myId != null) me.spaceShooterScore = 0;
- others.forEach(function (o) {
- if (o) o.spaceShooterScore = 0;
- });
- spaceShooterResetMissionShipStateForAllPlay();
- if (mapData) applySpaceShooterSpawnLayoutPlay();
- };
- if (!cd || !numEl) {
- runFinish();
- return;
- }
- cd.classList.remove('is-hidden');
- syncGauntletCrownCountdownMg2ModePlay(cd);
- runAlignedCountdownPlay(
- function (n) { setCountdown321QuestionAssetGraphic(numEl, n); },
- runFinish,
- function (id) { spaceShooterMissionCountdownTimer = id; }
- );
- }
-
- function spaceShooterBuildMissionPayload() {
- const rows = [];
- function pushEnt(id, nickname, characterId, score, eliminated) {
- rows.push({
- id: id,
- nickname: (nickname && String(nickname).trim()) ? String(nickname).trim() : String(id),
- characterId: characterId ?? null,
- baseScore: Math.max(0, Number(score) || 0),
- eliminated: !!eliminated,
- rankBonus: 0,
- finalScore: Math.max(0, Number(score) || 0),
- });
- }
- if (myId != null) {
- pushEnt(myId, (me.nickname || nick || 'คุณ').trim() || 'คุณ', me.characterId || getPlayCharacterId(), me.spaceShooterScore, !!me.spaceShooterEliminated);
- }
- others.forEach(function (o, id) {
- if (!o) return;
- pushEnt(id, o.nickname, o.characterId, o.spaceShooterScore, !!o.spaceShooterEliminated);
- });
- rows.sort(function (a, b) {
- if (b.baseScore !== a.baseScore) return b.baseScore - a.baseScore;
- return String(a.nickname).localeCompare(String(b.nickname), 'th') || String(a.id).localeCompare(String(b.id));
- });
- const top = rows.slice(0, 6);
- const ranked = top.map(function (row, idx) {
- const pos = idx + 1;
- /* โบนัสอยู่รอดจนจบเกม = +20 (เฉพาะคนไม่ตาย) — รวมใน finalScore เหมือน rankBonus ของ MG2 */
- const surviveBonus = row.eliminated ? 0 : 20;
- return {
- id: row.id,
- nickname: row.nickname,
- characterId: row.characterId,
- baseScore: row.baseScore,
- eliminated: !!row.eliminated,
- rank: pos,
- rankLabel: pos === 1 ? '1st' : pos === 2 ? '2nd' : pos === 3 ? '3rd' : String(pos),
- rankBonus: surviveBonus,
- finalScore: row.baseScore + surviveBonus,
- };
- });
- const totalParts = ranked.map(function (r) { return r.finalScore; });
- const totalSum = totalParts.reduce(function (s, n) { return s + n; }, 0);
- const n = ranked.length || 1;
- const averageScore = Math.floor(totalSum / n);
- const survivorCount = rows.filter(function (r) { return !r.eliminated; }).length;
- let grade = averageScore >= 80 ? 'A' : averageScore >= 60 ? 'B' : 'C';
- if (survivorCount <= 0) grade = 'F';
- const rewardCard = grade === 'F' ? null : gauntletCrownRollRewardCardLocal(grade);
- return {
- ranked: ranked,
- totalSum: totalSum,
- averageScore: averageScore,
- grade: grade,
- rewardCard: rewardCard,
- totalParts: totalParts,
- uiSkin: 'violent_crime',
- survivorCount: survivorCount,
- participantCount: rows.length,
- };
- }
-
- function spaceShooterMergePreviewBotsMission(mission) {
- if (!mission || mission.uiSkin !== 'violent_crime' || !playBotsEnabled() || !others || typeof others.forEach !== 'function') return mission;
- const seen = new Set();
- (mission.ranked || []).forEach(function (r) {
- if (r && r.id != null) seen.add(String(r.id));
- });
- const baseRows = (mission.ranked || []).map(function (r) {
- return {
- id: r.id,
- nickname: r.nickname,
- characterId: r.characterId,
- baseScore: Math.max(0, Number(r.baseScore) || 0),
- eliminated: !!r.eliminated,
- rankBonus: 0,
- finalScore: Math.max(0, Number(r.finalScore != null ? r.finalScore : r.baseScore) || 0),
- };
- });
- others.forEach(function (o, id) {
- if (!o || !isPreviewBotId(id)) return;
- const sid = String(id);
- if (seen.has(sid)) return;
- seen.add(sid);
- baseRows.push({
- id: id,
- nickname: (o.nickname && String(o.nickname).trim()) ? String(o.nickname).trim() : sid,
- characterId: o.characterId ?? null,
- baseScore: Math.max(0, Number(o.spaceShooterScore) || 0),
- eliminated: !!o.spaceShooterEliminated,
- rankBonus: 0,
- finalScore: Math.max(0, Number(o.spaceShooterScore) || 0),
- });
- });
- baseRows.sort(function (a, b) {
- if (b.baseScore !== a.baseScore) return b.baseScore - a.baseScore;
- return String(a.nickname).localeCompare(String(b.nickname), 'th') || String(a.id).localeCompare(String(b.id));
- });
- const top = baseRows.slice(0, 6);
- const ranked = top.map(function (row, idx) {
- const pos = idx + 1;
- const bs = Math.max(0, Number(row.baseScore) || 0);
- return {
- id: row.id,
- nickname: row.nickname,
- characterId: row.characterId,
- baseScore: bs,
- eliminated: !!row.eliminated,
- rank: pos,
- rankLabel: pos === 1 ? '1st' : pos === 2 ? '2nd' : pos === 3 ? '3rd' : String(pos),
- rankBonus: 0,
- finalScore: bs,
- };
- });
- const totalParts = ranked.map(function (r) { return r.baseScore; });
- const totalSum = totalParts.reduce(function (s, n) { return s + n; }, 0);
- const n2 = ranked.length || 1;
- const averageScore = Math.floor(totalSum / n2);
- const survivorCount = baseRows.filter(function (r) { return !r.eliminated; }).length;
- let grade = averageScore >= 80 ? 'A' : averageScore >= 60 ? 'B' : 'C';
- if (survivorCount <= 0) grade = 'F';
- const rewardCard = grade === 'F' ? null : gauntletCrownRollRewardCardLocal(grade);
- return {
- ranked: ranked,
- totalSum: totalSum,
- averageScore: averageScore,
- grade: grade,
- rewardCard: rewardCard,
- totalParts: totalParts,
- uiSkin: 'violent_crime',
- survivorCount: survivorCount,
- participantCount: baseRows.length,
- };
- }
-
- function balloonBossMergePreviewBotsMission(mission) {
- if (!mission || mission.uiSkin !== 'mega_virus' || !playBotsEnabled() || !others || typeof others.forEach !== 'function') return mission;
- const seen = new Set();
- (mission.ranked || []).forEach(function (r) {
- if (r && r.id != null) seen.add(String(r.id));
- });
- const baseRows = (mission.ranked || []).map(function (r) {
- return {
- id: r.id,
- nickname: r.nickname,
- characterId: r.characterId,
- baseScore: Math.max(0, Number(r.baseScore) || 0),
- eliminated: !!r.eliminated,
- rankBonus: 0,
- finalScore: Math.max(0, Number(r.finalScore != null ? r.finalScore : r.baseScore) || 0),
- };
- });
- others.forEach(function (o, id) {
- if (!o || !isPreviewBotId(id)) return;
- const sid = String(id);
- if (seen.has(sid)) return;
- seen.add(sid);
- baseRows.push({
- id: id,
- nickname: (o.nickname && String(o.nickname).trim()) ? String(o.nickname).trim() : sid,
- characterId: o.characterId ?? null,
- baseScore: Math.max(0, Number(o.balloonBossScore) || 0),
- eliminated: !!o.balloonBossEliminated,
- rankBonus: 0,
- finalScore: Math.max(0, Number(o.balloonBossScore) || 0),
- });
- });
- baseRows.sort(function (a, b) {
- if (b.baseScore !== a.baseScore) return b.baseScore - a.baseScore;
- return String(a.nickname).localeCompare(String(b.nickname), 'th') || String(a.id).localeCompare(String(b.id));
- });
- const top = baseRows.slice(0, 6);
- /* โบนัสจบเกม: ฆ่าบอส(+100)→ทุกคนที่ร่วมเล่น · รอดชีวิต(+10)→เฉพาะคนไม่ตาย (รวมใน finalScore, clamp ≥0) */
- const endRBonus = mission && mission.balloonBossEndReason;
- const killBonusAll = endRBonus === 'victory' ? 100 : 0;
- const ranked = top.map(function (row, idx) {
- const pos = idx + 1;
- const bs = Math.max(0, Number(row.baseScore) || 0);
- const bonus = killBonusAll + (row.eliminated ? 0 : 10);
- return {
- id: row.id,
- nickname: row.nickname,
- characterId: row.characterId,
- baseScore: bs,
- eliminated: !!row.eliminated,
- rank: pos,
- rankLabel: pos === 1 ? '1st' : pos === 2 ? '2nd' : pos === 3 ? '3rd' : String(pos),
- rankBonus: bonus,
- finalScore: Math.max(0, bs + bonus),
- };
- });
- const totalParts = ranked.map(function (r) { return r.finalScore; });
- const totalSum = totalParts.reduce(function (s, n) { return s + n; }, 0);
- const n2 = ranked.length || 1;
- const averageScore = Math.floor(totalSum / n2);
- const maxHp = balloonBossMaxHpPlay();
- let bossDmgSum = Math.max(0, me.balloonBossBossDmg | 0);
- others.forEach(function (o) {
- if (o) bossDmgSum += Math.max(0, o.balloonBossBossDmg | 0);
- });
- const progress = Math.min(1, bossDmgSum / Math.max(1, maxHp));
- const score100 = Math.min(100, Math.floor(progress * 100));
- let grade = 'C';
- const endR = mission && mission.balloonBossEndReason;
- if (endR === 'victory' || progress >= 1) grade = 'A';
- else if (endR === 'all_dead') grade = 'F';
- else if (score100 >= 50) grade = 'B';
- else if (totalSum <= 0) grade = 'F';
- const rewardCard = grade === 'F' ? null : gauntletCrownRollRewardCardLocal(grade);
- return {
- ranked: ranked,
- totalSum: totalSum,
- averageScore: averageScore,
- grade: grade,
- rewardCard: rewardCard,
- totalParts: totalParts,
- uiSkin: 'mega_virus',
- survivorCount: baseRows.filter(function (r) { return !r.eliminated; }).length,
- participantCount: baseRows.length,
- balloonBossEndReason: mission.balloonBossEndReason,
- };
- }
-
- function balloonBossBuildMissionPayloadPlay(reason) {
- const rows = [];
- if (myId != null) {
- rows.push({
- id: myId,
- nickname: ((me.nickname || nick || 'คุณ').trim() || 'คุณ'),
- characterId: me.characterId ?? null,
- baseScore: Math.max(0, me.balloonBossScore | 0),
- eliminated: !!me.balloonBossEliminated,
- });
- }
- others.forEach((o, id) => {
- rows.push({
- id: id,
- nickname: (o && o.nickname) ? String(o.nickname).trim() : id,
- characterId: o && o.characterId != null ? o.characterId : null,
- baseScore: Math.max(0, o.balloonBossScore | 0),
- eliminated: !!(o && o.balloonBossEliminated),
- });
- });
- rows.sort((a, b) => b.baseScore - a.baseScore
- || String(a.nickname).localeCompare(String(b.nickname), 'th')
- || String(a.id).localeCompare(String(b.id)));
- const top = rows.slice(0, 6);
- /* โบนัสจบเกม: ฆ่าบอส(+100)→ทุกคนที่ร่วมเล่น · รอดชีวิต(+10)→เฉพาะคนไม่ตาย (รวมใน finalScore, clamp ≥0) */
- const killBonusAll = reason === 'victory' ? 100 : 0;
- const ranked = top.map((row, idx) => {
- const pos = idx + 1;
- const bs = Math.max(0, Number(row.baseScore) || 0);
- const bonus = killBonusAll + (row.eliminated ? 0 : 10);
- return {
- id: row.id,
- nickname: row.nickname,
- characterId: row.characterId,
- baseScore: bs,
- eliminated: !!row.eliminated,
- rank: pos,
- rankLabel: pos === 1 ? '1st' : pos === 2 ? '2nd' : pos === 3 ? '3rd' : String(pos),
- rankBonus: bonus,
- finalScore: Math.max(0, bs + bonus),
- };
- });
- const totalParts = ranked.map((r) => r.finalScore);
- const totalSum = totalParts.reduce((s, n) => s + n, 0);
- const n2 = ranked.length || 1;
- const averageScore = Math.floor(totalSum / n2);
- const maxHp = balloonBossMaxHpPlay();
- let bossDmgSum = Math.max(0, me.balloonBossBossDmg | 0);
- others.forEach((o) => {
- if (o) bossDmgSum += Math.max(0, o.balloonBossBossDmg | 0);
- });
- const progress = Math.min(1, bossDmgSum / Math.max(1, maxHp));
- const score100 = Math.min(100, Math.floor(progress * 100));
- let grade = 'C';
- if (reason === 'victory' || progress >= 1) grade = 'A';
- else if (reason === 'all_dead') grade = 'F';
- else if (score100 >= 50) grade = 'B';
- else if (totalSum <= 0) grade = 'F';
- const rewardCard = grade === 'F' ? null : gauntletCrownRollRewardCardLocal(grade);
- return {
- ranked: ranked,
- totalSum: totalSum,
- averageScore: averageScore,
- grade: grade,
- rewardCard: rewardCard,
- totalParts: totalParts,
- uiSkin: 'mega_virus',
- survivorCount: rows.filter((r) => !r.eliminated).length,
- participantCount: rows.length,
- balloonBossEndReason: reason,
- };
- }
-
- /* host เป็นผู้ตัดสินจบ MG6 + แนบคะแนน/สถานะสุดท้าย → ทุกเครื่องจบพร้อมกันและอันดับตรงกัน */
- function triggerSpaceShooterOverPlay(kind) {
- if (spaceShooterGameEnded) return;
- const k = (kind === 'all_dead') ? 'all_dead' : 'time_up';
- try {
- if (socket && myId != null && isMePlayHost()) {
- const scores = buildStableShipParticipantRefsPlay().map((e) => ({
- id: e.id,
- score: Math.max(0, (e.ref && (e.ref.spaceShooterScore | 0)) || 0),
- hits: Math.max(0, Number(e.ref && e.ref.spaceShooterHits) || 0),
- eliminated: !!(e.ref && e.ref.spaceShooterEliminated),
- }));
- socket.emit('space-shooter-over', { kind: k, scores: scores });
- }
- } catch (e) { /* ignore */ }
- endSpaceShooterMissionRound(k);
- }
-
- function applySpaceShooterOverScoresPlay(scores) {
- if (!Array.isArray(scores)) return;
- scores.forEach((s) => {
- if (!s || s.id == null) return;
- const sc = Math.max(0, Number(s.score) || 0);
- const hits = Math.max(0, Number(s.hits) || 0);
- const ent = (myId != null && String(s.id) === String(myId)) ? me : (others.get(String(s.id)) || others.get(s.id));
- if (!ent) return;
- ent.spaceShooterScore = sc;
- ent.spaceShooterHits = hits;
- if (s.eliminated) ent.spaceShooterEliminated = true;
- });
- }
-
- function endSpaceShooterMissionRound(endKind) {
- if (!isSpaceShooterMissionUiMapPlay() || spaceShooterGameEnded) return;
- const kind = endKind === 'all_dead' ? 'all_dead' : 'time_up';
- spaceShooterGameEnded = true;
- spaceShooterMissionPhase = 'ended';
- applySpaceShooterMissionPanelImages();
- spaceShooterBullets = [];
- spaceShooterAsteroids = [];
- spaceShooterAsteroidExplosions = [];
- spaceShooterSpawnAccMs = 0;
- spaceShooterPopups = [];
- const mission = spaceShooterBuildMissionPayload();
- mission.spaceShooterEndKind = kind;
- beginSpaceShooterMissionResultFlashSequenceThenGcm(mission, kind);
- }
-
- function questionMissionAssetUrl(file) {
- return BASE + '/img/QUESTION/' + String(file || '').replace(/^\//, '');
- }
-
- /** HUD กลางจอ (เวลา / แผ่นคำถาม) — ชื่อไฟล์คู่กับ public/img/QUESTION บนดิสก์ → URL /Game/img/QUESTION */
- function questionMissionHudAssetUrl(file) {
- if (isMissionMockHudPlay()) return missionMockHudAssetUrl(file);
- return questionMissionAssetUrl(file);
- }
-
- /** สกิน HUD แบบ mock Minigame 1–7 (fix 1920×1080 + score-bar / profile) */
- function getMissionMockHudSkinPlay() {
- if (isQuizQuestionMissionUiMapPlay()) return 'question_mission';
- if (isStackTowerMissionUiMapPlay()) return 'stack_tower';
- if (isJumpSurviveMissionUiMapPlay()) return 'jumper';
- if (isSpaceShooterMissionUiMapPlay()) return 'violent_crime';
- if (isMegaVirusMissionShellMapPlay()) return 'mega_virus';
- if (isQuizCarry() && quizCarryEmbedMissionFlowActive()) return 'quiz_carry';
- if (isGauntletCrownHeistMapPlay()) return 'gauntlet_crown';
- return '';
- }
-
- function isMissionMockHudPlay() {
- return !!getMissionMockHudSkinPlay();
- }
-
- function missionMockHudAssetUrl(file) {
- const skin = getMissionMockHudSkinPlay();
- const f = String(file || '').replace(/^\//, '');
- if (skin === 'jumper') return jumperAssetUrl(f);
- if (skin === 'violent_crime') return violentCrimeAssetUrl(f);
- if (skin === 'mega_virus') return megaVirusAssetUrl(f);
- if (skin === 'stack_tower') return stackTowerAssetUrl(f);
- if (skin === 'quiz_carry') return BASE + '/img/quiz-carry/' + f;
- if (skin === 'gauntlet_crown') return BASE + '/img/gauntlet-assets/' + f;
- return questionMissionAssetUrl(f);
- }
-
- function applyMissionMockHudCssVarsPlay(root) {
- if (!root) return;
- if (!isMissionMockHudPlay()) {
- root.style.removeProperty('--mmh-score-bar');
- root.style.removeProperty('--mmh-score-label');
- root.style.removeProperty('--mmh-score-avatar');
- root.style.removeProperty('--mmh-mic-on');
- root.style.removeProperty('--mmh-btn-ready');
- root.style.removeProperty('--mmh-btn-start');
- delete root.dataset.missionMockSkin;
- return;
- }
- const skin = getMissionMockHudSkinPlay();
- root.dataset.missionMockSkin = skin;
- if (skin === 'gauntlet_crown') {
- root.style.removeProperty('--mmh-score-bar');
- root.style.setProperty('--mmh-score-label', "url('" + missionMockHudAssetUrl('score.png') + "')");
- const crownHead = document.getElementById('play-cyber-crown-score-head');
- const crownImg = document.getElementById('play-cyber-crown-score-img');
- if (crownHead && crownImg) {
- const scoreSrc = missionMockHudAssetUrl('score.png');
- crownHead.classList.remove('is-hidden');
- crownHead.setAttribute('aria-hidden', 'false');
- if (crownImg.getAttribute('src') !== scoreSrc) crownImg.setAttribute('src', scoreSrc);
- crownImg.alt = 'SCORE :';
- crownImg.classList.add('mg2-score-label');
- }
- } else {
- root.style.removeProperty('--mmh-score-label');
- root.style.setProperty('--mmh-score-bar', "url('" + missionMockHudAssetUrl('score-bar.png') + "?v=3')");
- }
- root.style.setProperty('--mmh-score-avatar', "url('" + missionMockHudAssetUrl('score-avartar.png') + "')");
- root.style.setProperty('--mmh-mic-on', "url('" + missionMockHudAssetUrl('btn-mic_on.png') + "')");
- root.style.setProperty('--mmh-btn-ready', "url('" + missionMockHudAssetUrl('btn-ready.png') + "')");
- root.style.setProperty('--mmh-btn-start', "url('" + missionMockHudAssetUrl('btn-start.png') + "')");
- const micImg = document.getElementById('play-cyber-mic-img');
- if (micImg) {
- micImg.classList.remove('is-hidden');
- micImg.setAttribute('aria-hidden', 'false');
- const micSrc = missionMockHudAssetUrl('btn-mic_on.png');
- if (micImg.getAttribute('src') !== micSrc) micImg.setAttribute('src', micSrc);
- }
- const frameOverlay = document.getElementById('play-cyber-profile-frame-overlay');
- if (frameOverlay) {
- const frameSrc = missionMockHudAssetUrl('Avartar.png');
- if (frameOverlay.getAttribute('src') !== frameSrc) frameOverlay.setAttribute('src', frameSrc);
- }
- }
-
- function isQuizQuestionMissionHudActivePlay() {
- return isQuizQuestionMissionUiMapPlay() && quizQuestionMissionPhase === 'live';
- }
- /* [2026-07-17] เฉพาะ "การเรนเดอร์" (กล้อง+zoom) ของ MG1 — ต้องค้างเท่าตอนเล่นต่อไปแม้จบเกมแล้ว
- (user: "ตอนจบเกม ฉากเกมไม่เท่าเดิมกับตอนเล่น"). ต้นเหตุ: zoom/กล้องเดิมผูกกับ
- isQuizQuestionMissionHudActivePlay ที่เป็น phase==='live' → พอจบ phase='ended' branch หลุด
- → zDraw ตกไปใช้ `zoom` ดิบ + กล้องเด้งกลับไปตาม me = ฉากเปลี่ยนขนาดทันที.
- เกมอื่นไม่มีอาการนี้เพราะ zoom ผูกกับ "แมป" ไม่ใช่ "เฟส".
- แยกตัวนี้ออกมาเพราะ predicate เดิมคุม HUD/อินพุตอีก ~18 ที่ ซึ่ง "ต้องดับตอนจบ" ตามเดิม.
- ล็อกแค่ live|ended → howto/countdown คงพฤติกรรมเดิมเป๊ะ (ไม่มีใครบ่นถึง) */
- function isQuizQuestionMissionRenderLockPlay() {
- return isQuizQuestionMissionUiMapPlay()
- && (quizQuestionMissionPhase === 'live' || quizQuestionMissionPhase === 'ended');
- }
-
- /** ภารกิจคำถาม mng8a80o ช่วง live: กล้องกลางแมป (world px) — ไม่ตาม me */
- function getQuizQuestionMissionMapCenterWorldPxPlay() {
- if (!mapData || !isQuiz()) return null;
- const w = mapData.width || 20;
- const h = mapData.height || 15;
- const ts = tileSize;
- const mwPx = w * ts;
- const mhPx = h * ts;
- return { cx: mwPx * 0.5, cy: mhPx * 0.5, mwPx, mhPx };
- }
-
- function applyQuizQuestionMissionPanelImages() {
- /* ติดคลาส scope ให้ overlay howto (popup HOW TO PLAY) ใช้สไตล์ mockup เฉพาะ mng8a80o */
- const howtoOv = document.getElementById('gauntlet-crown-howto-overlay');
- if (howtoOv) {
- const tfHowto = isQuizQuestionMissionUiMapPlay();
- howtoOv.classList.toggle('gch-quiz-tf-mock', tfHowto);
- if (tfHowto) {
- ensureQuizTfScaleResizeListener();
- updateGchTfMockScale(howtoOv);
- } else {
- howtoOv.style.removeProperty('--gch-tf-scale');
- }
- }
- const howtoBg = document.querySelector('#gauntlet-crown-howto-overlay .gch-bg');
- if (howtoBg) {
- /* MG1 ใช้ popup-Howtominigame1.png (รูป SAFE/SCAM) — popup-Howto.png เดิมเป็นดีไซน์ MG4 ใส่ผิดที่ */
- howtoBg.src = questionMissionAssetUrl('popup-Howtominigame1.png');
- howtoBg.onerror = function () {
- this.onerror = null;
- this.src = BASE + '/img/gauntlet-assets/popup-Howto.png';
- };
- }
- const resBg = document.querySelector('#gauntlet-crown-mission-overlay .gcm-bg');
- if (resBg) {
- resBg.src = questionMissionAssetUrl('popup-result.png');
- resBg.onerror = function () {
- this.onerror = null;
- this.src = BASE + '/img/gauntlet-assets/popup-result.png';
- };
- }
- }
-
- function showQuizQuestionMissionHowtoOverlay() {
- if (!isQuizQuestionMissionUiMapPlay()) return;
- if (playRejoinLiveResume) { quizQuestionMissionPhase = 'live'; hideHowtoOverlaysForLiveResumePlay(); return; }
- hideConflictingOverlaysForGauntletCrown();
- applyQuizQuestionMissionPanelImages();
- if (quizQuestionMissionCountdownTimer) {
- clearTimeout(quizQuestionMissionCountdownTimer);
- quizQuestionMissionCountdownTimer = null;
- }
- const cd = document.getElementById('gauntlet-crown-countdown');
- if (cd) cd.classList.add('is-hidden');
- quizQuestionMissionPhase = 'howto';
- const ov = document.getElementById('gauntlet-crown-howto-overlay');
- if (!ov) return;
- gauntletCrownHowtoVisible = true;
- ov.classList.remove('is-hidden');
- const st = document.getElementById('gauntlet-crown-howto-status');
- if (st) st.classList.remove('gch-status--jumper');
- const btn = document.getElementById('btn-gch-ready');
- const humans = quizCarryPregameHumanIds();
- const totPlayers = Math.max(1, quizCarryPregameTotalPlayers());
- /** ผู้เล่นจริงในห้องคนเดียว และไม่มีบอท/peer อื่นในนับรวม — เท่านั้นที่ข้าม lobby */
- const soleParticipant = totPlayers === 1;
- if (soleParticipant) {
- if (st) {
- st.textContent = '';
- st.classList.add('is-hidden');
- }
- if (btn) {
- const canGo = isMePlayHost() || humans.length === 1;
- btn.classList.remove('is-start-phase');
- btn.classList.toggle('is-read-only', !canGo);
- btn.disabled = !canGo;
- btn.title = canGo ? 'READY — เริ่มนับถอยหลัง' : 'รอโฮสต์ · Wait for host';
- btn.setAttribute('aria-pressed', 'false');
- }
- } else {
- if (socket && socket.connected) socket.emit('gauntlet-crown-lobby-sync-request');
- gauntletCrownSyncGuestReadyIfNeeded();
- updateQuizQuestionMissionHowtoHud();
- }
- }
-
- function beginQuizQuestionMissionCountdownThenRun() {
- if (!isQuizQuestionMissionUiMapPlay()) return;
- if (quizQuestionMissionCountdownTimer) {
- clearTimeout(quizQuestionMissionCountdownTimer);
- quizQuestionMissionCountdownTimer = null;
- }
- quizQuestionMissionPhase = 'countdown';
- const howto = document.getElementById('gauntlet-crown-howto-overlay');
- if (howto) howto.classList.add('is-hidden');
- gauntletCrownHowtoVisible = false;
- hideReadyAvatarsFloat(); /* ซ่อนแถวหน้าตัวละคร ready ตอนเริ่มเกม (กันค้างบนจอระหว่างเล่น) */
- const st = document.getElementById('gauntlet-crown-howto-status');
- if (st) {
- st.classList.add('is-hidden');
- st.classList.remove('gch-status--jumper');
- }
- const cd = document.getElementById('gauntlet-crown-countdown');
- const numEl = document.getElementById('gauntlet-crown-countdown-num');
- const runFinish = function () {
- if (cd) cd.classList.add('is-hidden');
- if (quizQuestionMissionCountdownTimer) {
- clearTimeout(quizQuestionMissionCountdownTimer);
- quizQuestionMissionCountdownTimer = null;
- }
- quizQuestionMissionPhase = 'live';
- playEmbedUserZoomMul = 1;
- const qov = document.getElementById('quiz-game-overlay');
- if (qov) {
- if (isQuizQuestionMissionUiMapPlay()) qov.classList.add('is-hidden');
- else if (previewMode && editorEmbedReturn) qov.classList.add('is-hidden');
- else qov.classList.remove('is-hidden');
- }
- const dp = quizQuestionMissionDeferredPhase;
- quizQuestionMissionDeferredPhase = null;
- if (dp) applyQuizPhaseFromServer(dp);
- if (previewMode && isQuiz()) loadPreviewQuizAndStart();
- };
- if (!cd || !numEl) {
- runFinish();
- return;
- }
- cd.classList.remove('is-hidden');
- syncGauntletCrownCountdownMg2ModePlay(cd);
- runAlignedCountdownPlay(
- function (n) { setCountdown321QuestionAssetGraphic(numEl, n); },
- runFinish,
- function (id) { quizQuestionMissionCountdownTimer = id; }
- );
- }
-
- function quizQuestionMissionBuildPayload() {
- const rows = [];
- function pushEnt(id, nickname, characterId, score) {
- const sid = String(id);
- rows.push({
- id: id,
- nickname: (nickname && String(nickname).trim()) ? String(nickname).trim() : String(id),
- characterId: characterId ?? null,
- baseScore: Math.max(0, Number(score) || 0),
- eliminated: false,
- hadQuizWrong: !!playQuizEverWrong[sid],
- rankBonus: 0,
- finalScore: Math.max(0, Number(score) || 0),
- });
- }
- if (myId != null) {
- pushEnt(myId, (me.nickname || nick || 'คุณ').trim() || 'คุณ', me.characterId || getPlayCharacterId(), playLiveQuizScores[myId]);
- }
- others.forEach(function (o, id) {
- if (!o) return;
- pushEnt(id, o.nickname, o.characterId, playLiveQuizScores[id]);
- });
- rows.sort(function (a, b) {
- if (b.baseScore !== a.baseScore) return b.baseScore - a.baseScore;
- return String(a.nickname).localeCompare(String(b.nickname), 'th') || String(a.id).localeCompare(String(b.id));
- });
- const top = rows.slice(0, 6);
- const ranked = top.map(function (row, idx) {
- const pos = idx + 1;
- return {
- id: row.id,
- nickname: row.nickname,
- characterId: row.characterId,
- baseScore: row.baseScore,
- eliminated: false,
- hadQuizWrong: !!row.hadQuizWrong,
- rank: pos,
- rankLabel: pos === 1 ? '1st' : pos === 2 ? '2nd' : pos === 3 ? '3rd' : String(pos),
- rankBonus: 0,
- finalScore: row.baseScore,
- };
- });
- const totalParts = ranked.map(function (r) { return r.baseScore; });
- const totalSum = totalParts.reduce(function (s, n) { return s + n; }, 0);
- const n = ranked.length || 1;
- const averageScore = Math.floor(totalSum / n);
- let grade = averageScore >= 80 ? 'A' : averageScore >= 60 ? 'B' : 'C';
- /* เกรด F (= โชว์ Lose stamp) เฉพาะ "ไม่มีใครได้คะแนนเลย" — ดูจาก playLiveQuizScores เต็ม (ครบทุกคน)
- ไม่ใช่ totalSum ของ ranked (me+others) ที่อาจหายคนตอบถูกที่ไม่อยู่ใน others → ขัดกับ flash complete */
- const mg1FullScoreSum = Object.keys(playLiveQuizScores).reduce(function (s, k) { return s + Math.max(0, playLiveQuizScores[k] | 0); }, 0);
- if (mg1FullScoreSum <= 0 && rows.length) grade = 'F';
- const rewardCard = grade === 'F' ? null : gauntletCrownRollRewardCardLocal(grade);
- return {
- ranked: ranked,
- totalSum: totalSum,
- averageScore: averageScore,
- grade: grade,
- rewardCard: rewardCard,
- totalParts: totalParts,
- uiSkin: 'question_mission',
- survivorCount: rows.length,
- participantCount: rows.length,
- };
- }
-
- function quizQuestionMissionMergePreviewBotsMission(mission) {
- if (!mission || mission.uiSkin !== 'question_mission' || !playBotsEnabled() || !others || typeof others.forEach !== 'function') return mission;
- const seen = new Set();
- (mission.ranked || []).forEach(function (r) {
- if (r && r.id != null) seen.add(String(r.id));
- });
- const baseRows = (mission.ranked || []).map(function (r) {
- return {
- id: r.id,
- nickname: r.nickname,
- characterId: r.characterId,
- baseScore: Math.max(0, Number(r.baseScore) || 0),
- eliminated: false,
- hadQuizWrong: !!r.hadQuizWrong,
- rankBonus: 0,
- finalScore: Math.max(0, Number(r.finalScore != null ? r.finalScore : r.baseScore) || 0),
- };
- });
- others.forEach(function (o, id) {
- if (!o || !isPreviewBotId(id)) return;
- const sid = String(id);
- if (seen.has(sid)) return;
- seen.add(sid);
- baseRows.push({
- id: id,
- nickname: (o.nickname && String(o.nickname).trim()) ? String(o.nickname).trim() : sid,
- characterId: o.characterId ?? null,
- baseScore: Math.max(0, Number(playLiveQuizScores[id]) || 0),
- eliminated: false,
- hadQuizWrong: !!playQuizEverWrong[sid],
- rankBonus: 0,
- finalScore: Math.max(0, Number(playLiveQuizScores[id]) || 0),
- });
- });
- baseRows.sort(function (a, b) {
- if (b.baseScore !== a.baseScore) return b.baseScore - a.baseScore;
- return String(a.nickname).localeCompare(String(b.nickname), 'th') || String(a.id).localeCompare(String(b.id));
- });
- const top = baseRows.slice(0, 6);
- const ranked = top.map(function (row, idx) {
- const pos = idx + 1;
- const bs = Math.max(0, Number(row.baseScore) || 0);
- return {
- id: row.id,
- nickname: row.nickname,
- characterId: row.characterId,
- baseScore: bs,
- eliminated: false,
- hadQuizWrong: !!row.hadQuizWrong,
- rank: pos,
- rankLabel: pos === 1 ? '1st' : pos === 2 ? '2nd' : pos === 3 ? '3rd' : String(pos),
- rankBonus: 0,
- finalScore: bs,
- };
- });
- const totalParts = ranked.map(function (r) { return r.baseScore; });
- const totalSum = totalParts.reduce(function (s, n) { return s + n; }, 0);
- const n2 = ranked.length || 1;
- const averageScore = Math.floor(totalSum / n2);
- let grade = averageScore >= 80 ? 'A' : averageScore >= 60 ? 'B' : 'C';
- if (totalSum <= 0 && baseRows.length) grade = 'F';
- const rewardCard = grade === 'F' ? null : gauntletCrownRollRewardCardLocal(grade);
- return {
- ranked: ranked,
- totalSum: totalSum,
- averageScore: averageScore,
- grade: grade,
- rewardCard: rewardCard,
- totalParts: totalParts,
- uiSkin: 'question_mission',
- survivorCount: baseRows.length,
- participantCount: baseRows.length,
- };
- }
-
- function isBalloonBoss() { return mapData && mapData.gameType === 'balloon_boss'; }
- function isQuizCarry() { return mapData && mapData.gameType === 'quiz_carry'; }
- /** MG4: ช่วง "อ่านคำถาม" (ก่อนตัวเลือกขึ้น) → freeze ทุกคน+บอท อยู่ตรงไหนตรงนั้น */
- function quizCarryReadFreezeActive() {
- return !!(isQuizCarry() && quizCarryServerAuthActive() && !quizCarryBetweenActive
- && quizCarryOptionRevealAt && Date.now() < quizCarryOptionRevealAt);
- }
-
- /* MG4 server-authoritative: เกมจริง (detective) เท่านั้น — server เป็นเจ้าของ คำถาม/เฟส/หยิบ-ส่ง/คะแนน/บอท
- editor preview (เล่นเดี่ยว) ยังเป็น client-sim เดิม (gate เดียวกับ server: space.detectiveMinigameActive) */
- let quizCarryServerAuthPlay = false; /* ตั้ง true เมื่อรับ quiz-carry-phase (srv) ครั้งแรก — กัน edge ก่อน flag */
- function quizCarryServerAuthActive() {
- return isQuizCarry() && (quizCarryServerAuthPlay || isDetectiveMinigamePlay());
- }
-
- /** พรีวิว editor + ภารกิจสืบสวน mnorwqx1 — flow เต็ม: HOWTO/READY, นับ 3-2-1, ครบ carrySessionLength, สรุปภารกิจ */
- function quizCarryEmbedMissionFlowActive() {
- if (!isQuizCarry()) return false;
- if (previewMode && editorEmbedReturn) return true;
- return !!(isDetectiveMinigamePlay() && quizCarryUseMissionSummaryOverlay());
- }
- /** quiz_carry: จุดกลางแมป (world px) — กล้องไม่ตามตัวละคร; ใช้ร่วม draw + overlay DOM */
- function getQuizCarryMapCameraWorldCenterPxPlay() {
- if (!mapData || mapData.gameType !== 'quiz_carry') return null;
- const ww = mapData.width || 20, hh = mapData.height || 15;
- const ts = tileSize;
- return { cx: ww * ts * 0.5, cy: hh * ts * 0.5 };
- }
- function isQuizBattle() { return mapData && mapData.gameType === 'quiz_battle'; }
-
- function quizCarryNeonColorForChoice(choiceIndex) {
- const i = Math.max(0, choiceIndex | 0);
- const h = (i * 47 + 100) % 360;
- return 'hsl(' + h + ', 72%, 62%)';
- }
-
- function quizCarryMinimapOptionFillCss(ov) {
- const th = getEffectiveCarryChoicePlaqueThemeForChoice((Number(ov) | 0) - 1);
- if (th.borderMode === 'fixed' && th.fixedBorder) {
- const m = /^rgba?\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*(?:,\s*([0-9.]+)\s*)?\)$/i.exec(String(th.fixedBorder).trim());
- if (m) {
- const a0 = m[4] != null && m[4] !== '' ? Number(m[4]) : 1;
- const aa = (Number.isFinite(a0) ? Math.max(0, Math.min(1, a0)) : 1) * 0.32;
- const t = Math.round(aa * 1000) / 1000;
- return 'rgba(' + m[1] + ',' + m[2] + ',' + m[3] + ',' + t + ')';
- }
- }
- const i = Math.max(0, ov - 1);
- const h = (i * 47 + 100) % 360;
- return 'hsla(' + h + ', 58%, 52%, 0.32)';
- }
-
- function normalizeQuizCarryQuestionFromAny(q) {
- if (!q) return null;
- let text = String(q.text || q.question || q.prompt || q.title || '').trim();
- if (Array.isArray(q.choices) && q.choices.length >= 2) {
- const choices = q.choices.map((c) => String(c));
- let ci = Number(q.correctIndex);
- if (!Number.isFinite(ci) || ci < 0 || ci >= choices.length) ci = 0;
- if (!text) text = 'เลือกคำตอบที่ถูกต้อง — หยิบตัวเลือกไปวางโซนส่งคำตอบ';
- let chSlot = Number(q.countdownHighlightSlot);
- if (!Number.isFinite(chSlot) || chSlot < 1 || chSlot > 16) chSlot = null;
- else chSlot = Math.floor(chSlot);
- let choiceImageUrls = null;
- if (Array.isArray(q.choiceImageUrls) && q.choiceImageUrls.length) {
- const urls = choices.map((_, idx) => sanitizeQuizCarryImageUrlClient(q.choiceImageUrls[idx]));
- if (urls.some((u) => u)) choiceImageUrls = urls;
- }
- return { text, choices, correctIndex: ci, countdownHighlightSlot: chSlot, choiceImageUrls };
- }
- if (!text) return null;
- const t = !!q.answerTrue;
- return { text, choices: ['จริง', 'เท็จ'], correctIndex: t ? 0 : 1, countdownHighlightSlot: null };
- }
-
- function buildQuizCarryPoolFromMap(md) {
- if (!md || !Array.isArray(md.quizQuestions)) return [];
- const out = [];
- for (let i = 0; i < md.quizQuestions.length; i++) {
- const n = normalizeQuizCarryQuestionFromAny(md.quizQuestions[i]);
- if (n) out.push(n);
- }
- return out;
- }
-
- function getQuizCarryHubTileBounds(md) {
- if (!md || md.gameType !== 'quiz_carry') return null;
- const grid = md.quizCarryHubArea;
- if (!grid || !grid.length) return null;
- let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
- for (let yy = 0; yy < grid.length; yy++) {
- const row = grid[yy];
- if (!row) continue;
- for (let xx = 0; xx < row.length; xx++) {
- if (row[xx] === 1) {
- if (xx < minX) minX = xx;
- if (yy < minY) minY = yy;
- if (xx > maxX) maxX = xx;
- if (yy > maxY) maxY = yy;
- }
- }
- }
- if (minX === Infinity) return null;
- return { minX, minY, maxX, maxY };
- }
-
- /** จุดกลางโซนตัวเลือกหยิบมาวาง (ค่า grid 1..N = ลำดับ choices) เพื่อวาดข้อความบนแผนที่ */
- function getQuizCarryOptionClusterBounds(md, slot1toN) {
- const g = md && md.quizCarryOptionArea;
- if (!g || !g.length) return null;
- let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
- let n = 0, sumX = 0, sumY = 0;
- for (let yy = 0; yy < g.length; yy++) {
- const row = g[yy];
- if (!row) continue;
- for (let xx = 0; xx < row.length; xx++) {
- if (Number(row[xx]) === slot1toN) {
- if (xx < minX) minX = xx;
- if (yy < minY) minY = yy;
- if (xx > maxX) maxX = xx;
- if (yy > maxY) maxY = yy;
- sumX += xx + 0.5;
- sumY += yy + 0.5;
- n++;
- }
- }
- }
- if (!n || minX === Infinity) return null;
- return {
- minX, minY, maxX, maxY,
- cx: sumX / n,
- cy: sumY / n,
- };
- }
-
- function canvasWordWrapLines(ctx, text, maxWidth) {
- const raw = String(text || '').trim();
- if (!raw) return [];
- const words = raw.split(/\s+/);
- const lines = [];
- let cur = words[0];
- for (let i = 1; i < words.length; i++) {
- const w = words[i];
- const test = cur + ' ' + w;
- if (ctx.measureText(test).width <= maxWidth) cur = test;
- else {
- lines.push(cur);
- cur = w;
- }
- }
- lines.push(cur);
- return lines;
- }
-
- /** ตัดบรรทัดระดับตัวอักษรให้แต่ละบรรทัดพอดีกว้าง (รองรับคำไทยยาวไม่มีช่องว่าง) — คืนทุกบรรทัด */
- function quizCarryWrapLinesFit(ctx, text, maxWidth) {
- const raw = String(text || '').trim();
- if (!raw) return [];
- const lines = [];
- let cur = '';
- for (const chr of raw) {
- if (chr === '\n') { lines.push(cur); cur = ''; continue; }
- const test = cur + chr;
- if (cur === '' || ctx.measureText(test).width <= maxWidth) cur = test;
- else { lines.push(cur); cur = chr; }
- }
- if (cur) lines.push(cur);
- return lines;
- }
-
- function quizCarryOptionHeldByAnyone(optionIdx) {
- if (optionIdx == null || optionIdx < 0) return false;
- if (me.quizCarryHeld === optionIdx) return true;
- for (const o of others.values()) {
- if (o && o.quizCarryHeld === optionIdx) return true;
- }
- return false;
- }
-
- /** สไปรต์ทับช่องโซนกลาง (ม่วง) อย่างน้อย 1 ช่อง */
- function spriteOverlapsQuizCarryHubArea(md, sp) {
- if (!md || md.gameType !== 'quiz_carry' || !sp) return false;
- const hub = md.quizCarryHubArea;
- if (!hub || !hub.length) return false;
- const mw = md.width || 20, mh = md.height || 15;
- const x0 = sp.x | 0, y0 = sp.y | 0, ww = sp.w | 0, hh = sp.h | 0;
- for (let yy = y0; yy < y0 + hh; yy++) {
- if (yy < 0 || yy >= mh) continue;
- const row = hub[yy];
- if (!row) continue;
- for (let xx = x0; xx < x0 + ww; xx++) {
- if (xx < 0 || xx >= mw) continue;
- if (row[xx] === 1) return true;
- }
- }
- return false;
- }
-
- /** ตัวเลือกหนึ่งข้อ — มีคนถือป้ายอยู่ได้แค่คนเดียว (หยิบซ้ำไม่ได้) */
- function pickQuizCarryTargetOptionIndexAvoidingTaken(preferredIdx) {
- const n = quizCarryCurrent && quizCarryCurrent.choices ? quizCarryCurrent.choices.length : 0;
- if (n < 1) return null;
- let p = preferredIdx | 0;
- if (p < 0 || p >= n) p = 0;
- if (!quizCarryOptionHeldByAnyone(p)) return p;
- const avail = [];
- for (let i = 0; i < n; i++) {
- if (!quizCarryOptionHeldByAnyone(i)) avail.push(i);
- }
- if (!avail.length) return null;
- return avail[Math.floor(Math.random() * avail.length)];
- }
-
- /**
- * วาดป้ายมุมมน + ขอบเรือง + ข้อความ (รูปแบบเดียวกันทั้งแมปและติดตัว) — สีจาก carryChoicePlaqueThemes[choiceIndex] · รูปจาก plaqueExtra.imageUrl
- * @param tether ถ้ามี วาดเส้นขาวจาก (x0,y0) ถึง (x1,y1) ก่อนป้าย
- * @param plaqueExtra optional { imageUrl }
- */
- function drawQuizCarryNeonPlaque(ctx, signX, signY, w, h, lines, lineH, padY, choiceIndex, tether, plaqueExtra) {
- const th = getEffectiveCarryChoicePlaqueThemeForChoice(choiceIndex);
- const neon = th.borderMode === 'fixed' ? th.fixedBorder : quizCarryNeonColorForChoice(choiceIndex);
- const fillCol = th.fillBg || 'rgba(12, 10, 20, 0.88)';
- const textCol = th.textColor || '#f8f9ff';
- const baseLw = Math.max(0.5, Math.min(8, Number(th.borderWidthPx)));
- const imgUrl = plaqueExtra && plaqueExtra.imageUrl ? String(plaqueExtra.imageUrl) : '';
- const elImg = plaqueExtra && plaqueExtra.imageElement;
- const imgFromEl = (elImg && elImg.complete && elImg.naturalWidth > 0) ? elImg : null;
- const img = !imgFromEl && imgUrl ? getQuizCarryChoiceImageCached(imgUrl) : null;
- const drawPlaqueImg = imgFromEl || ((img && img.complete && img.naturalWidth > 0) ? img : null);
- const rr = Math.max(6, Math.min(12, Math.min(w, h) * 0.2));
- const simplePreviewPlaque = previewMode && editorEmbedReturn;
- function pathBoard() {
- ctx.beginPath();
- if (typeof ctx.roundRect === 'function') ctx.roundRect(signX, signY, w, h, rr);
- else ctx.rect(signX, signY, w, h);
- }
- if (!simplePreviewPlaque) {
- for (let g = 4; g >= 1; g--) {
- ctx.strokeStyle = neon;
- ctx.globalAlpha = 0.07 + g * 0.06;
- ctx.lineWidth = baseLw + g * 3.2;
- pathBoard();
- ctx.stroke();
- }
- }
- ctx.globalAlpha = 1;
- ctx.fillStyle = fillCol;
- pathBoard();
- ctx.fill();
- if (drawPlaqueImg) {
- ctx.save();
- pathBoard();
- ctx.clip();
- const padImg = Math.max(2, padY * 0.65);
- const ix = signX + padImg;
- const iy = signY + padImg;
- const iw = Math.max(0, w - padImg * 2);
- const ih = Math.max(0, h - padImg * 2);
- if (iw > 0 && ih > 0) {
- const nw = drawPlaqueImg.naturalWidth;
- const nh = drawPlaqueImg.naturalHeight;
- const ir = nw / nh;
- let dw;
- let dh;
- if (iw / ih > ir) {
- dh = ih;
- dw = dh * ir;
- } else {
- dw = iw;
- dh = dw / ir;
- }
- const dx = ix + (iw - dw) / 2;
- const dy = iy + (ih - dh) / 2;
- ctx.drawImage(drawPlaqueImg, 0, 0, nw, nh, dx, dy, dw, dh);
- }
- ctx.restore();
- }
- ctx.strokeStyle = neon;
- if (simplePreviewPlaque) {
- ctx.lineWidth = Math.max(1, baseLw * 0.85);
- ctx.shadowBlur = 0;
- pathBoard();
- ctx.stroke();
- } else {
- ctx.lineWidth = baseLw;
- ctx.shadowColor = neon;
- ctx.shadowBlur = 14;
- pathBoard();
- ctx.stroke();
- ctx.shadowBlur = 8;
- pathBoard();
- ctx.stroke();
- ctx.shadowBlur = 0;
- }
- const attachX = signX + w / 2;
- ctx.textAlign = 'center';
- ctx.textBaseline = 'middle';
- ctx.fillStyle = textCol;
- const lh = lineH || 12;
- if (!simplePreviewPlaque && lines && lines.length) {
- ctx.shadowColor = 'rgba(0,0,0,0.55)';
- ctx.shadowBlur = 3;
- }
- if (lines && lines.length) {
- const n = lines.length;
- const textBlockH = n * lh;
- const y0 = signY + Math.max(padY, (h - textBlockH) / 2);
- const firstLineCenterY = y0 + lh / 2;
- for (let li = 0; li < n; li++) {
- ctx.fillText(lines[li], attachX, firstLineCenterY + li * lh);
- }
- }
- ctx.shadowBlur = 0;
- if (tether && Number.isFinite(tether.x0) && Number.isFinite(tether.y0)) {
- ctx.strokeStyle = 'rgba(255,255,255,0.95)';
- ctx.lineWidth = 1.5;
- ctx.lineCap = 'round';
- ctx.lineJoin = 'round';
- ctx.shadowBlur = 0;
- ctx.beginPath();
- ctx.moveTo(tether.x0, tether.y0);
- ctx.lineTo(tether.x1, tether.y1);
- ctx.stroke();
- }
- }
-
- /**
- * กล่องป้ายบนจอ (signX, signY, w, h) ให้ตรงกับ drawQuizCarryChoiceLabels สำหรับช่อง idx 0-based
- */
- function computeQuizCarryChoicePlaqueScreenRect(ctx, worldToScreen, zoom, idx0Based) {
- if (!isQuizCarry() || !mapData || !quizCarryCurrent) return null;
- const q = quizCarryCurrent;
- const choices = q.choices;
- if (!choices || !choices.length || idx0Based < 0 || idx0Based >= choices.length) return null;
- const i = idx0Based;
- const b = getQuizCarryOptionClusterBounds(mapData, i + 1);
- if (!b) return null;
- const ts = tileSize * zoom;
- const ps = quizCarryPlaqueMapScaleClampedPlay();
- const choiceText = String(choices[i] || '').trim();
- const imgUrl = getQuizCarryPlaqueImageUrlForIndex(q, i);
- const gridIdleEl = findQuizCarryGridIdleImgForChoiceIndex(i);
- const plaqueExtra = imgUrl ? { imageUrl: imgUrl }
- : (gridIdleEl && gridIdleEl.complete && gridIdleEl.naturalWidth ? { imageElement: gridIdleEl } : {});
- if (!choiceText && !plaqueExtra.imageUrl && !plaqueExtra.imageElement) return null;
- const tileSpanX = (b.maxX - b.minX + 1);
- const tileSpanY = (b.maxY - b.minY + 1);
- const minPlaqueW = Math.ceil(Math.max(72, tileSpanX * ts - 16) * ps);
- const minPlaqueH = Math.ceil(Math.max(52, tileSpanY * ts - 12) * ps);
- const wx = b.cx * tileSize;
- const wy = b.cy * tileSize;
- const [sx, sy] = worldToScreen(wx, wy);
- ctx.save();
- let signX;
- let signY;
- let w;
- let h;
- if (!choiceText && (plaqueExtra.imageUrl || plaqueExtra.imageElement)) {
- const minW = minPlaqueW;
- const minH = minPlaqueH;
- signX = sx - minW / 2;
- signY = sy - minH / 2;
- w = minW;
- h = minH;
- ctx.restore();
- return { signX, signY, w, h };
- }
- const line = choiceText;
- const fontPx = Math.max(10, Math.min(24, ts * 0.24 * ps));
- ctx.font = '600 ' + fontPx + 'px system-ui, "Segoe UI", "Kanit", sans-serif';
- let maxW = Math.max(56, tileSpanX * ts - 14);
- const lineH = fontPx * 1.2;
- let textLines = canvasWordWrapLines(ctx, line, maxW);
- if (!textLines.length) textLines = [line];
- if (textLines.length * lineH > tileSpanY * ts - 8 && textLines.length > 1) {
- const fp2 = Math.max(9, fontPx * 0.85);
- ctx.font = '600 ' + fp2 + 'px system-ui, "Segoe UI", "Kanit", sans-serif';
- const lh2 = fp2 * 1.2;
- maxW = Math.max(48, maxW - 4);
- textLines = canvasWordWrapLines(ctx, line, maxW);
- if (textLines.length * lh2 > tileSpanY * ts - 8) {
- textLines = textLines.slice(0, Math.max(1, Math.floor((tileSpanY * ts - 8) / lh2)));
- }
- for (let ti = 0; ti < textLines.length; ti++) {
- let s = textLines[ti];
- if (ctx.measureText(s).width <= maxW) continue;
- while (s.length > 2 && ctx.measureText(s + '…').width > maxW) s = s.slice(0, -1);
- textLines[ti] = s + '…';
- }
- const maxLineW = Math.max(...textLines.map((t) => ctx.measureText(t).width), 40);
- const padX = 10;
- const padY = 8;
- w = Math.ceil(maxLineW + padX * 2);
- h = Math.ceil(textLines.length * lh2 + padY * 2);
- if (imgUrl || plaqueExtra.imageElement) {
- w = Math.max(w, minPlaqueW);
- h = Math.max(h, minPlaqueH);
- }
- signX = sx - w / 2;
- signY = sy - h / 2;
- ctx.restore();
- return { signX, signY, w, h };
- }
- for (let ti = 0; ti < textLines.length; ti++) {
- let s = textLines[ti];
- if (ctx.measureText(s).width <= maxW) continue;
- while (s.length > 2 && ctx.measureText(s + '…').width > maxW) s = s.slice(0, -1);
- textLines[ti] = s + '…';
- }
- let maxLineW = 0;
- for (let ti = 0; ti < textLines.length; ti++) {
- const lw = ctx.measureText(textLines[ti]).width;
- if (lw > maxLineW) maxLineW = lw;
- }
- const padX = 10;
- const padY = 8;
- w = Math.ceil(Math.max(maxLineW, 52) + padX * 2);
- h = Math.ceil(textLines.length * lineH + padY * 2);
- if (imgUrl || plaqueExtra.imageElement) {
- w = Math.max(w, minPlaqueW);
- h = Math.max(h, minPlaqueH);
- }
- signX = sx - w / 2;
- signY = sy - h / 2;
- ctx.restore();
- return { signX, signY, w, h };
- }
-
- /**
- * ขอบเรืองรอบช่องตัวเลือก (carryEmbedCountdownHighlight + carryEmbedCountdownHighlightColor)
- * ขนาดกรอบเท่าป้ายบนแมป (เดียวกับ drawQuizCarryChoiceLabels) ไม่ใช่ทั้ง cluster กริด
- */
- function drawQuizCarryEmbedCountdownHighlight(ctx, worldToScreen, zoom, timeMs) {
- if (!isQuizCarry() || !mapData) return;
- if (mapData.carryEmbedCountdownHighlight === false) return;
- const optIdx = getQuizCarryLocalGrabbableOptionIndex();
- if (optIdx == null) return;
- const pr = computeQuizCarryChoicePlaqueScreenRect(ctx, worldToScreen, zoom, optIdx);
- if (!pr || pr.w < 4 || pr.h < 4) return;
- const rx = pr.signX;
- const ry = pr.signY;
- const rw = pr.w;
- const rh = pr.h;
- const rr = Math.max(6, Math.min(16, Math.min(rw, rh) * 0.14));
- const colRaw = mapData.carryEmbedCountdownHighlightColor;
- const strokeBase = typeof colRaw === 'string' && /^#[0-9a-fA-F]{6}$/.test(colRaw.trim()) ? colRaw.trim() : '#ffb44a';
- const pulse = 0.55 + 0.45 * Math.sin((timeMs || 0) / 180);
- ctx.save();
- function pathRr() {
- ctx.beginPath();
- if (typeof ctx.roundRect === 'function') ctx.roundRect(rx, ry, rw, rh, rr);
- else ctx.rect(rx, ry, rw, rh);
- }
- pathRr();
- ctx.fillStyle = strokeBase;
- ctx.globalAlpha = 0.12 * pulse;
- ctx.fill();
- for (let g = 6; g >= 1; g--) {
- ctx.strokeStyle = strokeBase;
- ctx.globalAlpha = (0.07 + g * 0.055) * pulse;
- ctx.lineWidth = 2.5 + g * 4;
- pathRr();
- ctx.stroke();
- }
- ctx.globalAlpha = 0.98;
- ctx.strokeStyle = strokeBase;
- ctx.lineWidth = 4;
- ctx.shadowColor = strokeBase;
- ctx.shadowBlur = 22 * pulse;
- pathRr();
- ctx.stroke();
- ctx.shadowBlur = 12 * pulse;
- pathRr();
- ctx.stroke();
- ctx.shadowBlur = 0;
- ctx.globalAlpha = 1;
- ctx.restore();
- }
-
- function drawQuizCarryChoiceLabels(ctx, worldToScreen, zoom) {
- if (!isQuizCarry() || !mapData || !quizCarryCurrent) return;
- if (!quizCarryOptionsPickableNow()) return;
- const choices = quizCarryCurrent.choices;
- if (!choices || !choices.length) return;
- const maxSlots = choices.length;
- const ts = tileSize * zoom;
- const ps = quizCarryPlaqueMapScaleClampedPlay();
- ctx.save();
- for (let i = 0; i < Math.min(choices.length, maxSlots); i++) {
- if (quizCarryOptionHeldByAnyone(i)) continue;
- const b = getQuizCarryOptionClusterBounds(mapData, i + 1);
- if (!b) continue;
- const choiceText = String(choices[i] || '').trim();
- const imgUrl = getQuizCarryPlaqueImageUrlForIndex(quizCarryCurrent, i);
- const gridIdleEl = findQuizCarryGridIdleImgForChoiceIndex(i);
- const plaqueExtra = imgUrl ? { imageUrl: imgUrl }
- : (gridIdleEl && gridIdleEl.complete && gridIdleEl.naturalWidth ? { imageElement: gridIdleEl } : {});
- if (!choiceText && !plaqueExtra.imageUrl && !plaqueExtra.imageElement) continue;
- const tileSpanX = (b.maxX - b.minX + 1);
- const tileSpanY = (b.maxY - b.minY + 1);
- const minPlaqueW = Math.ceil(Math.max(72, tileSpanX * ts - 16) * ps);
- const minPlaqueH = Math.ceil(Math.max(52, tileSpanY * ts - 12) * ps);
- if (!choiceText && (plaqueExtra.imageUrl || plaqueExtra.imageElement)) {
- const fontPx = Math.max(10, Math.min(24, ts * 0.24 * ps));
- const lineH = fontPx * 1.2;
- const padY = 8;
- const minW = minPlaqueW;
- const minH = minPlaqueH;
- const wx = b.cx * tileSize;
- const wy = b.cy * tileSize;
- const [sx, sy] = worldToScreen(wx, wy);
- drawQuizCarryNeonPlaque(ctx, sx - minW / 2, sy - minH / 2, minW, minH, [], lineH, padY, i, null, plaqueExtra);
- continue;
- }
- const line = choiceText;
- let fontPx = Math.max(10, Math.min(24, ts * 0.24 * ps));
- let maxW = Math.max(96, tileSpanX * ts * 1.5 - 14);
- ctx.font = '600 ' + fontPx + 'px system-ui, "Segoe UI", "Kanit", sans-serif';
- /* คำตอบไทยมักเป็น "คำเดียวยาว" (ไม่มีช่องว่าง → wrap ไม่ได้) → ย่อฟอนต์ให้พอดีกว้าง + ปล่อยป้ายกว้างได้ กันโดนตัด "…" */
- while (fontPx > 8 && ctx.measureText(line).width > maxW) {
- fontPx -= 1;
- ctx.font = '600 ' + fontPx + 'px system-ui, "Segoe UI", "Kanit", sans-serif';
- }
- const lineH = fontPx * 1.2;
- let textLines = canvasWordWrapLines(ctx, line, maxW);
- if (!textLines.length) textLines = [line];
- if (textLines.length * lineH > tileSpanY * ts - 8 && textLines.length > 1) {
- const fp2 = Math.max(9, fontPx * 0.85);
- ctx.font = '600 ' + fp2 + 'px system-ui, "Segoe UI", "Kanit", sans-serif';
- const lh2 = fp2 * 1.2;
- maxW = Math.max(48, maxW - 4);
- textLines = canvasWordWrapLines(ctx, line, maxW);
- if (textLines.length * lh2 > tileSpanY * ts - 8) {
- textLines = textLines.slice(0, Math.max(1, Math.floor((tileSpanY * ts - 8) / lh2)));
- }
- for (let ti = 0; ti < textLines.length; ti++) {
- let s = textLines[ti];
- if (ctx.measureText(s).width <= maxW) continue;
- while (s.length > 2 && ctx.measureText(s + '…').width > maxW) s = s.slice(0, -1);
- textLines[ti] = s + '…';
- }
- const maxLineW = Math.max(...textLines.map((t) => ctx.measureText(t).width), 40);
- const padX = 10;
- const padY = 8;
- let w = Math.ceil(maxLineW + padX * 2);
- let h = Math.ceil(textLines.length * lh2 + padY * 2);
- if (imgUrl || plaqueExtra.imageElement) {
- w = Math.max(w, minPlaqueW);
- h = Math.max(h, minPlaqueH);
- }
- const wx = b.cx * tileSize;
- const wy = b.cy * tileSize;
- const [sx, sy] = worldToScreen(wx, wy);
- const signX = sx - w / 2;
- const signY = sy - h / 2;
- drawQuizCarryNeonPlaque(ctx, signX, signY, w, h, textLines, lh2, padY, i, null, plaqueExtra);
- continue;
- }
- for (let ti = 0; ti < textLines.length; ti++) {
- let s = textLines[ti];
- if (ctx.measureText(s).width <= maxW) continue;
- while (s.length > 2 && ctx.measureText(s + '…').width > maxW) s = s.slice(0, -1);
- textLines[ti] = s + '…';
- }
- let maxLineW = 0;
- for (let ti = 0; ti < textLines.length; ti++) {
- const lw = ctx.measureText(textLines[ti]).width;
- if (lw > maxLineW) maxLineW = lw;
- }
- const padX = 10;
- const padY = 8;
- let w = Math.ceil(Math.max(maxLineW, 52) + padX * 2);
- let h = Math.ceil(textLines.length * lineH + padY * 2);
- if (imgUrl || plaqueExtra.imageElement) {
- w = Math.max(w, minPlaqueW);
- h = Math.max(h, minPlaqueH);
- }
- const wx = b.cx * tileSize;
- const wy = b.cy * tileSize;
- const [sx, sy] = worldToScreen(wx, wy);
- const signX = sx - w / 2;
- const signY = sy - h / 2;
- drawQuizCarryNeonPlaque(ctx, signX, signY, w, h, textLines, lineH, padY, i, null, plaqueExtra);
- }
- ctx.restore();
- }
-
- function quizCarryHubCellPlay(md, tx, ty) {
- const g = md && md.quizCarryHubArea;
- return !!(g && g[ty] && g[ty][tx] === 1);
- }
-
- function quizCarryInteractiveCellPlay(md, tx, ty) {
- const g = md && md.interactive;
- return !!(g && g[ty] && g[ty][tx] === 1);
- }
-
- function quizCarryMapHasAnswerInteractive(md) {
- if (!md || !md.interactive || !md.interactive.length) return false;
- const h = md.height || 15, w = md.width || 20;
- for (let y = 0; y < h; y++) {
- const row = md.interactive[y];
- if (!row) continue;
- for (let x = 0; x < w; x++) {
- if (row[x] === 1) return true;
- }
- }
- return false;
- }
-
- /** @returns {number|null} index ใน choices จากช่องหมายเลข 1..N บนแมป */
- function quizCarryOptionIndexAtPlay(md, tx, ty) {
- const g = md && md.quizCarryOptionArea;
- if (!g || !g[ty]) return null;
- const v = g[ty][tx];
- if (v < 1 || v > QUIZ_CARRY_MAX_OPTION_SLOTS) return null;
- const idx = v - 1;
- const n = quizCarryCurrent && quizCarryCurrent.choices ? quizCarryCurrent.choices.length : 0;
- if (n < 1 || idx >= n) return null;
- return idx;
- }
-
- /** ร่างตัวละครทับช่องโซนกลาง (ม่วง) — ใช้บล็อกการเดิน */
- function quizCarryFootprintOverlapsHub(px, py) {
- if (!mapData || !isQuizCarry()) return false;
- const md = mapData;
- for (const k of quizTilesFootprintPlay(px, py)) {
- const p = k.split(',');
- const tx = +p[0], ty = +p[1];
- if (quizCarryHubCellPlay(md, tx, ty)) return true;
- }
- return false;
- }
-
- /** ยืนข้างนอกแต่ชิดโซนกลาง — ใช้ให้กด F ส่งคำตอบได้โดยไม่ต้องย่ำบนม่วง */
- function quizCarryFootprintAdjacentToHub(md, px, py) {
- if (!md) return false;
- const dirs = [[1, 0], [-1, 0], [0, 1], [0, -1]];
- for (const k of quizTilesFootprintPlay(px, py)) {
- const p = k.split(',');
- const tx = +p[0], ty = +p[1];
- if (quizCarryHubCellPlay(md, tx, ty)) continue;
- for (let di = 0; di < dirs.length; di++) {
- const nx = tx + dirs[di][0], ny = ty + dirs[di][1];
- if (quizCarryHubCellPlay(md, nx, ny)) return true;
- }
- }
- return false;
- }
-
- function quizCarryCanSubmitAtHub(md, px, py) {
- if (!md) return false;
- return quizCarryFootprintOverlapsHub(px, py) || quizCarryFootprintAdjacentToHub(md, px, py);
- }
-
- function quizCarryFootprintOverlapsInteractive(md, px, py) {
- if (!md) return false;
- for (const k of quizTilesFootprintPlay(px, py)) {
- const p = k.split(',');
- const tx = +p[0], ty = +p[1];
- if (quizCarryInteractiveCellPlay(md, tx, ty)) return true;
- }
- return false;
- }
-
- function quizCarryFootprintAdjacentToInteractive(md, px, py) {
- if (!md) return false;
- const dirs = [[1, 0], [-1, 0], [0, 1], [0, -1]];
- for (const k of quizTilesFootprintPlay(px, py)) {
- const p = k.split(',');
- const tx = +p[0], ty = +p[1];
- if (quizCarryInteractiveCellPlay(md, tx, ty)) continue;
- for (let di = 0; di < dirs.length; di++) {
- const nx = tx + dirs[di][0], ny = ty + dirs[di][1];
- if (quizCarryInteractiveCellPlay(md, nx, ny)) return true;
- }
- }
- return false;
- }
-
- function quizCarryCanSubmitAtInteractiveZone(md, px, py) {
- if (!md) return false;
- return quizCarryFootprintOverlapsInteractive(md, px, py) || quizCarryFootprintAdjacentToInteractive(md, px, py);
- }
-
- /** ส่งคำตอบ: ถ้ามีโซน interactive (เขียว) ในแมป ใช้โซนนั้น — ไม่มี fallback ชิดโซนกลาง */
- function quizCarryCanSubmitAnswerAt(md, px, py) {
- if (!md) return false;
- if (quizCarryMapHasAnswerInteractive(md)) {
- return quizCarryCanSubmitAtInteractiveZone(md, px, py);
- }
- return quizCarryCanSubmitAtHub(md, px, py);
- }
-
- /** ข้อความใน HUD / โซนคำถาม — ไม่รวมตัวเลือก (แสดงบนแผนที่ตามจุดสี) */
- function formatQuizCarryQuestionHud(q) {
- if (!q) return '';
- return String(q.text || q.question || q.prompt || q.title || '').trim();
- }
-
- function quizCarryRestoreEmbedPhaseLabel() {
- const phaseEl = document.getElementById('quiz-game-phase-label');
- if (!phaseEl || !mapData) return;
- phaseEl.textContent = quizCarryMapHasAnswerInteractive(mapData)
- ? 'กด F หรือปุ่ม GRAB หยิบบนโซนตัวเลือก · ส่งที่โซน interactive (เขียว) — เล่นพร้อมกันได้'
- : 'กด F หรือปุ่ม GRAB หยิบบนโซนตัวเลือก · ส่งเมื่อชิดโซนกลาง (ม่วงเป็นกำแพง) — เล่นพร้อมกันได้';
- }
-
- function isQuizCarryEmbedCountdownBlockingMovement() {
- if (!quizCarryEmbedMissionFlowActive()) return false;
- const now = Date.now();
- return (quizCarryEmbedCountdownEndAt > now) || (quizCarryEmbedPreOptionCountdownEndAt > now);
- }
-
- function isQuizCarryEmbedLobbyBlockingMovement() {
- return !!(quizCarryEmbedMissionFlowActive() && quizCarryPregameActive);
- }
-
- /* ผู้ถูกแบนรอบนี้ (Card 3 Ban) เข้ามาดูเฉยๆ ไม่ต้อง Ready → ไม่นับใน gate เริ่มเกม
- (ไม่งั้น host จะค้าง N/N+1 เพราะ banned ไม่เคย ready) */
- function isQuizCarryPregameBannedId(id) {
- const o = others.get(id) || others.get(String(id));
- return !!(o && o.bannedSpectator);
- }
-
- function quizCarryPregameHumanIds() {
- const set = new Set();
- if (myId != null && !isPreviewBotId(myId) && !playBannedSpectator) set.add(String(myId));
- /* นับจาก readyMap ของ server (authoritative + ตัด banned แล้ว) + ตัวเราเท่านั้น
- → host/client นับ "จำนวนผู้เล่น" ตรงกันเสมอ (เดิมวน others ซึ่ง membership ต่างกันชั่วคราว → ready ไม่ตรง)
- การรอให้ client เข้าครบใช้ expectedActive (gauntletCrownPregameExpectedHumans) แทน */
- [quizCarryLobbyReadyMap, gauntletCrownLobbyReadyMap].forEach((rm) => {
- if (rm && typeof rm === 'object') {
- Object.keys(rm).forEach((id) => {
- if (id && !isPreviewBotId(id) && !isQuizCarryPregameBannedId(id)) set.add(String(id));
- });
- }
- });
- return [...set];
- }
-
- function quizCarryPregameBotCount() {
- let n = 0;
- others.forEach((_, id) => {
- if (isPreviewBotId(id)) n++;
- });
- return n;
- }
-
- function quizCarryPregameReadyNumerator() {
- let n = quizCarryPregameBotCount();
- quizCarryPregameHumanIds().forEach((id) => {
- if (quizCarryLobbyReadyMap[id]) n++;
- });
- return n;
- }
-
- function quizCarryPregameTotalPlayers() {
- return quizCarryPregameHumanIds().length + quizCarryPregameBotCount();
- }
-
- function isMePlayHost() {
- if (myId == null) return false;
- if (playHostId == null) return true; /* fallback (load-bearing): host พึ่งตอน null — อย่าเปลี่ยน (เคยทำ MG3 ready ค้าง 4/5 + MG2 spawn ทับ) */
- return String(playHostId) === String(myId);
- }
-
- /* บอทเติมช่อง (fill-bot) ใน 7 มินิเกมต้องเดิน/เล่น/คะแนนตรงกันทุก client:
- host เป็นผู้จำลอง bot ทั้งหมด (AI/ฟิสิกส์/คะแนน) แล้ว broadcast state — client อื่นปิด local sim แล้ว render ตาม
- (เดิม: ทุกเครื่องสุ่ม Math.random() แยกกัน → บอทตัวเดียวกันอยู่คนละที่/คนละคะแนนบนแต่ละจอ) */
- function fbNum(v) { return (typeof v === 'number' && Number.isFinite(v)) ? Math.round(v * 100) / 100 : undefined; }
- function broadcastFillBotState() {
- if (!playBotsEnabled() || !isMePlayHost() || !mapData) return;
- if (isQuiz() && detectiveCaseFillBots) return; /* quiz เกมจริง: server เป็นเจ้าของบอท (quiz-bot-move) → ห้าม host ส่งทับ = บอทวาป/ผีหลุด area */
- if (isGauntlet() && detectiveCaseFillBots) return; /* MG2 เกมจริง: server เป็นเจ้าของบอท (gauntlet-sync) → ห้าม host ส่งทับ */
- if (quizCarryServerAuthActive()) return; /* MG4 เกมจริง: server เป็นเจ้าของบอท (quiz-carry-bot-move) → ห้าม host ส่งทับ */
- if (jumpSurviveServerAuthActive()) return; /* MG5 เกมจริง: server เป็นเจ้าของบอท (jump-survive-bot-move) → ห้าม host ส่งทับ */
- if (spaceShooterServerAuthActive()) return; /* MG6 เกมจริง: server เป็นเจ้าของบอท (space-shooter-bot-move) → ห้าม host ส่งทับ */
- if (balloonBossServerAuthActive()) return; /* MG7 เกมจริง: server เป็นเจ้าของบอท (balloon-boss-bot-move) → ห้าม host ส่งทับ */
- const arr = [];
- others.forEach((o, id) => {
- if (!isPreviewBotId(id) || !o) return;
- const row = { id: id, x: fbNum(o.x), y: fbNum(o.y), direction: o.direction || 'down', walking: !!o.botIsWalking };
- if (o.characterId != null) row.cid = o.characterId; /* ให้ client สร้างบอทที่ขาดได้ → ชุดบอท host-authoritative */
- if (o.botTier != null) row.tier = o.botTier; /* tier (ฉลาด/กลาง/พลาดบ่อย) — host เป็นเจ้าของ ให้ label/พฤติกรรมตรงกันทุกเครื่อง (เดิมสุ่ม local → ป้ายไม่ตรง) */
- if (o.gauntletScore != null) row.gScore = o.gauntletScore;
- if (o.gauntletEliminated != null) row.gElim = !!o.gauntletEliminated;
- if (o.gauntletJumpTicks != null) row.gJump = o.gauntletJumpTicks;
- if (o.gauntletJumpVis != null) row.gJumpVis = fbNum(o.gauntletJumpVis);
- if (o.jumpSurviveEliminated != null) row.jsElim = !!o.jumpSurviveEliminated;
- if (o.spaceShooterCx != null) row.ssCx = fbNum(o.spaceShooterCx);
- if (o.spaceShooterCy != null) row.ssCy = fbNum(o.spaceShooterCy);
- if (o.spaceShooterScore != null) row.ssScore = o.spaceShooterScore;
- if (o.spaceShooterEliminated != null) row.ssElim = !!o.spaceShooterEliminated;
- if (o.balloonBossCx != null) row.bbCx = fbNum(o.balloonBossCx);
- if (o.balloonBossCy != null) row.bbCy = fbNum(o.balloonBossCy);
- if (o.balloonBossScore != null) row.bbScore = o.balloonBossScore;
- if (o.balloonBossBossDmg != null) row.bbDmg = o.balloonBossBossDmg;
- if (o.balloonBossBalloons != null) row.bbBalloons = o.balloonBossBalloons;
- if (o.balloonBossEliminated != null) row.bbElim = !!o.balloonBossEliminated;
- if (o.quizCarryHeld !== undefined && !(isQuizCarry() && quizCarryServerAuthActive())) row.qcHeld = o.quizCarryHeld;
- /* MG1 quiz: สถานะล็อก (ตอบผิด=ผี) + คะแนนบอท → host เป็นเจ้าของ ส่งให้ทุกเครื่องตรงกัน
- (เดิมไม่ส่งเลย → non-host เห็นบอทล็อก/respawn/คะแนนคนละแบบ) */
- if (isQuiz()) {
- if (o.quizCannotTrue != null) row.qct = !!o.quizCannotTrue;
- if (o.quizCannotFalse != null) row.qcf = !!o.quizCannotFalse;
- }
- /* คะแนนบอท MG1 (quiz) + MG4 (quiz_carry) → host เป็นเจ้าของ ส่งให้ทุกเครื่องตรงกัน
- (เดิม MG4 ไม่ส่ง → non-host sim บอทเอง ด้วย RNG ต่างกัน = คะแนนบอทไม่ตรง 2 จอ) */
- if (isQuiz() || isQuizCarry()) {
- const qsc = playLiveQuizScores[id];
- if (qsc != null) row.qsc = Math.max(0, qsc | 0);
- }
- /* สีบอท (host เป็นเจ้าของ) — แนบไปด้วยเพื่อให้ทุก client แสดงสีตรงกัน
- (เดิมแต่ละเครื่องคำนวณสีเองจาก theme/sessionStorage → สีบอทไม่ตรงกันเมื่อ sync ธีมมาช้า) */
- if (o.playTint && o.playTint.body) {
- row.tint = { head: o.playTint.head, hair: o.playTint.hair, body: o.playTint.body };
- }
- arr.push(row);
- });
- /* รายชื่อ "คนจริง" ที่ host เห็น (= myId(host) + others ที่ไม่ใช่บอท) — ให้ non-host force ลบผีที่ host ไม่มี
- (humans ไม่ถูก sync แบบบอท → ผี reconnect ค้างบน client; id-based ไม่ชนชื่อ default) */
- const humanRoster = [];
- if (myId != null) humanRoster.push(String(myId));
- others.forEach((o, id) => { if (!isPreviewBotId(id) && o) humanRoster.push(String(id)); });
- if (arr.length) socket.emit('fill-bot-state', { bots: arr, humans: humanRoster });
- }
- setInterval(broadcastFillBotState, 80); /* ~12.5Hz — self-gate ถ้าไม่ใช่ host หรือไม่มีบอท */
-
- /* ===== Server-time sync + เวลาเริ่มเล่นจริงร่วมกัน (liveBeginsAt) =====
- แก้ปัญหา "เวลาในเกมไม่เท่ากัน เริ่ม/จบไม่พร้อมกัน": เดิมแต่ละเครื่องนับ 3-2-1 เองด้วย setTimeout
- และจับเวลารอบด้วย performance.now() ของตัวเอง → GO และจุดจบไม่ตรงกัน
- แก้: sync นาฬิกากับ server (serverNow) แล้วทุกคนนับไปหา "liveBeginsAt" (server epoch) จุดเดียวกัน
- เมื่อ GO พร้อมกัน → นาฬิการอบ (performance.now ตั้งแต่ GO) ก็ sync กันเองอัตโนมัติ */
- let playClockOffset = 0; /* serverTime - clientTime (ms) */
- let playClockBestRtt = null;
- let playClockSyncInterval = null;
- let playClockEstablished = false; /* sync ครั้งแรกแล้วหรือยัง — ครั้งแรก hard-set, re-sync ถัดไป blend (กันกระโดด) */
- function serverNow() { return Date.now() + playClockOffset; }
- function syncPlayClock(round) {
- round = round || 0;
- if (!socket || !socket.connected) return;
- /* เริ่ม burst ใหม่ทุกครั้ง → รีเซ็ต best RTT เพื่อ "re-establish" offset ใหม่ทั้งหมด
- ไม่งั้น best RTT ที่ค้างไว้จะทำให้ re-sync ครั้งหลังถูกข้าม แก้ clock drift ไม่ได้
- (เวลาในเกม MG6/MG7 จะเพี้ยนสะสมเพราะ serverNow ของแต่ละเครื่องไม่ตรงกัน) */
- if (round === 0) playClockBestRtt = null;
- const t0 = Date.now();
- socket.emit('time-sync', (res) => {
- const t1 = Date.now();
- if (res && Number.isFinite(res.t)) {
- const rtt = t1 - t0;
- if (playClockBestRtt == null || rtt <= playClockBestRtt) {
- playClockBestRtt = rtt;
- const newOffset = res.t + rtt / 2 - t1; /* ชดเชยครึ่งหนึ่งของ round-trip latency */
- if (!playClockEstablished) {
- playClockOffset = newOffset; /* ครั้งแรก: ตั้งตรง ๆ ให้ baseline แม่น */
- playClockEstablished = true;
- } else {
- /* re-sync ถัดไป: เกลี่ยเข้าค่าใหม่แบบนุ่ม → serverNow ไม่กระโดดทุก 12 วิ (= ไม่ทำเฟส MG3/timer สะดุด).
- ก้าวใหญ่ >250ms = สแน็ป (drift จริง/เปลี่ยน server) กัน lag ค้าง; ก้าวเล็ก = blend 25% */
- const dOff = newOffset - playClockOffset;
- playClockOffset += (Math.abs(dOff) > 250) ? dOff : dOff * 0.25;
- }
- }
- }
- if (round < 5) setTimeout(function () { syncPlayClock(round + 1); }, 300);
- });
- }
- /* re-sync นาฬิกาเป็นระยะ → กัน clock drift ระหว่างเล่นยาว ๆ ทำให้ serverNow ทุกเครื่องตรงกันเสมอ
- (ฐานเวลาเดียวกัน → timer/boss/aim/spawn ของทุก minigame sync กัน) */
- function startPeriodicClockSync() {
- if (playClockSyncInterval) return;
- playClockSyncInterval = setInterval(function () {
- try { if (socket && socket.connected) syncPlayClock(0); } catch (_e) { /* ignore */ }
- }, 12000);
- }
-
- /* ───────────────────────────────────────────────────────────────────────
- ตัวบอกสถานะเน็ต (เพิ่มล้วน — ไม่แตะ game logic): ป้าย "เน็ตหน่วง"/"กำลังเชื่อมต่อใหม่"
- แสดงมุมขวาบน. วัด RTT เองด้วย time-sync (server มี handler อยู่แล้ว ไม่ต้องแก้ server)
- ───────────────────────────────────────────────────────────────────────── */
- const NET_RTT_WARN_MS = 320; /* เกินนี้ = เน็ตหน่วง (เหลือง) */
- const NET_RTT_BAD_MS = 700; /* เกินนี้ = แย่มาก (แดง) */
- let netStatusEl = null;
- let netLastRtt = null;
- let netReconnecting = false;
- let netPingTimer = null;
- let netOkHideTimer = null;
- /* เน็ตแย่ = กด Ready มินิเกมไม่ได้ (กันเริ่มเกมตอน sync ยังไม่พร้อม) — มี safety กันค้าง */
- let netBadSinceMs = 0;
- const NET_READY_BLOCK_SAFETY_MS = 15000; /* เน็ตแย่ต่อเนื่องเกินนี้ → ปลดล็อกให้กดได้ (กัน soft-lock) */
- function isNetBadNowPlay() {
- return netReconnecting || (socket && socket.connected === false) || (netLastRtt != null && netLastRtt >= NET_RTT_BAD_MS);
- }
- /** true = เน็ตแย่จน "ยังไม่ควรให้กด Ready" (แต่ถ้าแย่ต่อเนื่องเกิน safety → คืน false ปลดล็อก) */
- function isNetTooBadToReadyPlay() {
- if (!isNetBadNowPlay()) return false;
- if (!netBadSinceMs) return true; /* เพิ่งแย่ */
- return (Date.now() - netBadSinceMs) < NET_READY_BLOCK_SAFETY_MS;
- }
- let _netWaitToastAt = 0;
- function showNetWaitToastPlay() {
- const now = Date.now();
- if (now - _netWaitToastAt < 1500) return; /* กันสแปม */
- _netWaitToastAt = now;
- try { showCrownStartBlockedNoticePlay({ error: 'กำลังรอสัญญาณให้เสถียร… อีกครู่กดพร้อมได้' }); } catch (_e) { /* ignore */ }
- try { setNetStatus('bad', 'กำลังปรับสัญญาณให้ลื่นขึ้น — รอสักครู่ค่อยกดพร้อม', true); } catch (_e2) { /* ignore */ }
- try { gamelogPost(gameLogCatForPlay(), 'net-ready-block', '[TC175] เน็ตแย่ → บล็อกกด Ready (block+safety 15วิ) · rtt=' + (netLastRtt == null ? '?' : Math.round(netLastRtt)) + ' reconn=' + netReconnecting); } catch (_e3) { /* ignore */ }
- }
- function ensureNetStatusEl() {
- if (netStatusEl) return netStatusEl;
- const css = document.createElement('style');
- css.textContent = ''
- + '#play-net-status{position:fixed;top:10px;right:12px;z-index:9400;display:none;align-items:center;gap:7px;'
- + 'padding:7px 13px;border-radius:11px;font-family:inherit;font-weight:700;font-size:14px;line-height:1;'
- + 'color:#fff;box-shadow:0 4px 16px rgba(0,0,0,.42);pointer-events:none;backdrop-filter:blur(2px);'
- + 'transition:opacity .25s;letter-spacing:.2px;}'
- + '#play-net-status.is-warn{background:linear-gradient(135deg,#c9831a,#e0a52b);}'
- + '#play-net-status.is-bad{background:linear-gradient(135deg,#b3231d,#d84038);}'
- + '#play-net-status.is-ok{background:linear-gradient(135deg,#1b9e4b,#13c06a);}'
- + '#play-net-status .pns-dot{width:9px;height:9px;border-radius:50%;background:#fff;opacity:.92;}'
- + '#play-net-status.is-bad .pns-spin{width:13px;height:13px;border:2px solid rgba(255,255,255,.4);'
- + 'border-top-color:#fff;border-radius:50%;animation:pnsSpin .8s linear infinite;}'
- + '@keyframes pnsSpin{to{transform:rotate(360deg);}}';
- document.head.appendChild(css);
- const el = document.createElement('div');
- el.id = 'play-net-status';
- el.innerHTML = ' ';
- document.body.appendChild(el);
- netStatusEl = el;
- return el;
- }
- function setNetStatus(kind, text, withSpin) {
- const el = ensureNetStatusEl();
- if (netOkHideTimer) { clearTimeout(netOkHideTimer); netOkHideTimer = null; }
- if (kind === 'hidden') { el.style.display = 'none'; return; }
- el.className = 'is-' + kind;
- const icon = el.querySelector('.pns-icon');
- if (icon) icon.innerHTML = withSpin ? ' ' : ' ';
- const t = el.querySelector('.pns-text');
- if (t) t.textContent = text;
- el.style.display = 'flex';
- el.style.opacity = '1';
- if (kind === 'ok') {
- netOkHideTimer = setTimeout(function () { el.style.opacity = '0'; setTimeout(function () { if (netStatusEl) netStatusEl.style.display = 'none'; }, 280); }, 1600);
- }
- }
- function refreshNetStatus() {
- /* จับ/ปล่อยเวลาเริ่มแย่ (ใช้คุม safety ปลดล็อกปุ่ม Ready) + refresh ปุ่ม how-to ให้ปลดล็อกเองเมื่อเน็ตกลับมา */
- const badNow = isNetBadNowPlay();
- if (badNow && !netBadSinceMs) netBadSinceMs = Date.now();
- else if (!badNow && netBadSinceMs) netBadSinceMs = 0;
- try { if (typeof syncGauntletCrownJumpButton === 'function') { /* no-op guard */ } if (typeof refreshGauntletCrownHowtoReadyButtonsPlay === 'function') refreshGauntletCrownHowtoReadyButtonsPlay(); } catch (_e) { /* ignore */ }
- if (netReconnecting || (socket && socket.connected === false)) {
- setNetStatus('bad', 'กำลังเชื่อมต่อใหม่…', true);
- return;
- }
- if (netLastRtt != null && netLastRtt >= NET_RTT_BAD_MS) {
- setNetStatus('bad', 'เน็ตหน่วงมาก (' + Math.round(netLastRtt) + ' ms)', false);
- } else if (netLastRtt != null && netLastRtt >= NET_RTT_WARN_MS) {
- setNetStatus('warn', 'เน็ตหน่วง (' + Math.round(netLastRtt) + ' ms)', false);
- } else {
- setNetStatus('hidden');
- }
- }
- function netPingOnce() {
- if (!socket || !socket.connected) return;
- const t0 = Date.now();
- let done = false;
- try {
- socket.emit('time-sync', function () {
- if (done) return; done = true;
- netLastRtt = Date.now() - t0;
- refreshNetStatus();
- });
- } catch (_e) { /* ignore */ }
- setTimeout(function () { if (!done) { done = true; netLastRtt = Math.max(netLastRtt || 0, NET_RTT_BAD_MS); refreshNetStatus(); } }, 2500);
- }
- function setupNetStatusIndicator() {
- if (netPingTimer) return;
- try {
- socket.on('disconnect', function () { netReconnecting = true; refreshNetStatus(); });
- socket.on('connect', function () {
- if (netReconnecting) { netReconnecting = false; setNetStatus('ok', 'เชื่อมต่อแล้ว', false); }
- else { netReconnecting = false; }
- netPingOnce();
- });
- if (socket.io && socket.io.on) {
- socket.io.on('reconnect_attempt', function () { netReconnecting = true; refreshNetStatus(); });
- socket.io.on('reconnect', function () { netReconnecting = false; setNetStatus('ok', 'เชื่อมต่อแล้ว', false); });
- }
- } catch (_e) { /* ignore */ }
- netPingTimer = setInterval(netPingOnce, 4000);
- netPingOnce();
- }
-
- /* #20 แสดงเลข version มุมขวาล่าง — อ่านจาก ?v= ของ
-
+
v —
-
-
-
-
-
-
-
-
วิธีเล่นเบื้องต้น
-
-
-
-
-
-
-
-
-
-
-
ข้อเสนอลับ ตัวป่วน
-
-
-
-
-
-
15
-
-
-
-
-
-
-
-
เลือกผู้ต้องสงสัย
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
เลือกการ์ดผู้ต้องสงสัยก่อน แล้วกดเริ่มสืบสวน
-
-
-
-
-
-
-
-
-
-
-
-
-
เลือกระดับและคดี
-
-
-
-
-
-
-
เลือกระดับความท้าทายตามความเชี่ยวชาญของคุณ
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
อนุญาต
-
-
-
-
-
-
-
-
TIME : —
-
- Quiz — -
-
-
-
-
-
-
-
-
-
-
-
ช่องเขียว · กด F / แป้นไทย ด โต้ตอบ
-
- PLAYERS : 0/10
-
-
- เลือกผู้ต้องสงสัย
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
×
-
-
-
-
-
-
- 150
-
-
-
-
-
PLAYER
-
-
-
-
-
-
AGENT ID : 001998
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
×
-
-
-
-
-
-
สรุปจำนวน : 0 ผู้เล่น + 0 Bot
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Room ID :
- —
- 🔒
-
-
-
-
-
-
-
-
-
-
-
-
-
-
🎤 ขอสิทธิ์ไมค์
-
👂 เปิดรับเสียง
-
-
เลือกฉาก (สำหรับเล่น) โหลด...
-
เริ่มเกม
-
-
-
รอ host เลือกฉากและเริ่มเกม
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- v —
-
-