tower babel done

This commit is contained in:
2026-05-07 15:51:51 +00:00
parent c826d5a216
commit 1d6370c12e
2 changed files with 14 additions and 14 deletions
+13 -13
View File
@@ -43,15 +43,15 @@
const STACK_TOWER_ROPE_DRAW_T1 = 1.0;
/** ปลายบนเชือก (จอ): ยืดเหนือขอบบนแคนวาสเป็นเศษส่วนของความสูง (เช่น 0.25 = 25% นอกจอด้านบน) */
const STACK_TOWER_ROPE_TOP_ABOVE_CANVAS_FRAC = 0.25;
/** progress ≥ นี้: แอนิเมตซูม + เลื่อนแมป (ครั้งเดียวต่อรอบ stack) */
const STACK_TOWER_POST50_PROGRESS_THRESH = 50;
/** 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;
/** หลัง 50%: เลื่อนกล้องลงในมุมมองจอเท่าเศษส่วนของความสูงแคนวาส (เช่น 0.25 = 25% ของความสูงจอ) */
/** หลังเกณฑ์ 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';
@@ -70,20 +70,20 @@
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 ≥50%: ลดความกว้างบล็อก 40% (เหลือ 60%) — ความสูงชั้น `layerWorldH` เท่าเดิม */
/** 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 towerPost50 =
const towerHeavyNarrow =
!!heavy &&
isStackTowerMissionUiMapPlay() &&
getStackTowerCameraFollowPlayConfig().enabled &&
stackTowerMissionPhase === 'live' &&
stackMini &&
Number.isFinite(Number(stackMini.progressPct)) &&
Number(stackMini.progressPct) >= 50;
if (towerPost50) {
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));
}
@@ -282,11 +282,11 @@
function pickStackBlockHeavyVisual(seat) {
const slot = Math.max(0, Math.min(5, (Math.floor(Number(seat)) || 1) - 1));
const hU = normalizeGauntletAssetUrlForPlay(playStackBlockHeavyUrls[slot] || '');
/** Tower mnn93hpi: ตั้งแต่ 50% ของ Progress 100% (ตาม stackTowerProgressBlocks) → ใช้รูป heavy จาก admin — นอก live ไม่สุ่ม heavy */
/** 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 < 50) return false;
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)));
@@ -2270,7 +2270,7 @@
let stackTowerMissionDeferredPhase = null;
let stackTowerSessionStartAt = 0;
let stackTowerMissionEndedOnce = false;
/** progress ข้าม 50%: เริ่มแอนิเมตซูม+เลื่อนแมป — null ยังไม่ข้าม, ตัวเลข = performance.now() ตอนเริ่ม */
/** progress ข้ามเกณฑ์ Tower: เริ่มแอนิเมตซูม+เลื่อนแมป — null ยังไม่ข้าม, ตัวเลข = performance.now() ตอนเริ่ม */
let stackTowerPost50AnimStartMs = null;
/** แฟลชรูปผล Tower (timeup / gameover / complete) ก่อน GCM 5 วิ */
let stackTowerResultFlashTimer = null;
@@ -4380,7 +4380,7 @@
return x * x * (3 - 2 * x);
}
/** Tower live + progress ≥50%: 0→1 ระหว่าง STACK_TOWER_POST50_ANIM_MS — ใช้เฉพาะเมื่อเปิดกล้องตามหอ (ไม่งั้นฉากธรรมดาไม่เลื่อน/ซูมหลัง 50%) */
/** Tower live + progress ≥เกณฑ์: 0→1 ระหว่าง STACK_TOWER_POST50_ANIM_MS — ใช้เฉพาะเมื่อเปิดกล้องตามหอ (ไม่งั้นฉากธรรมดาไม่เลื่อน/ซูมหลังเกณฑ์) */
function getStackTowerPost50AnimEasePlay() {
if (!getStackTowerCameraFollowPlayConfig().enabled) {
stackTowerPost50AnimStartMs = null;
@@ -8813,7 +8813,7 @@
}
/**
* progress 50% + นพอ: ไมวาดชนลาง (าม draw) ตำแหน Y งใชนจร (floorY-(i+1)*h)
* progress เกณฑ Tower + นพอ: ไมวาดชนลาง (าม draw) ตำแหน Y งใชนจร (floorY-(i+1)*h)
* เพอไมใหกองลอยหลดจากฐานแมปเมอเทยบกร
*/
function getStackTowerVisualHiddenLayerCountPlay() {
+1 -1
View File
@@ -3203,7 +3203,7 @@
</div>
<script src="/Game/socket.io/socket.io.js"></script>
<script src="js/version.js?v=0.0306"></script>
<script src="js/play.js?v=0.0408"></script>
<script src="js/play.js?v=0.0409"></script>
<div class="version-tag">v —</div>
</body>
</html>