灵符lingfu

soul-symphony-ling

↓ 0 downloads

Soul Symphony — Ling Edition. A spiritual 3D adventure in the soul realm: collect the letters of the world-song, clear the monster lattice, and duel in the arcade arena. Wind Waker-style toon renderer with volumetric light pools, SSAO, bloom and oil-slick tilt-shift — all ling-lang vectors.

Keywords game, 3d, toon, music, soul-symphony
lingfu install soul-symphony-ling
AuthorsLing Lin <taellinglin@gmail.com>
READMECode / FilesVersionsDependency GraphDependentsSecurityBuildsSettings

Code / Files (1947)

game/scenes/intro.ling
# ═════════════════════════════════════════════════════════════════════════════
# intro.ling — ฉากอินโทร: บทกวี 24 บรรทัดในสโนว์โกลบ (ฉากแรกสุดของเกม)
# ═════════════════════════════════════════════════════════════════════════════
# ลำดับเรื่อง: ฉากนี้ → ด่านทิวทอเรียล → บอส → บทโหมโรง (post_level1) → บท 1-8
#
# เดิมโค้ดฉากนี้ฝังอยู่ในบล็อก ST_CINE ของ main.ling ย้ายออกมาเป็นโมดูลฉากให้
# เข้าแพตเทิร์นเดียวกับ scenes/chapterN.ling — พรีวิวเดี่ยว/พรีวิวรวมจึงเรียกได้
# พฤติกรรมในเกมเหมือนเดิมทุกอย่าง (รวมทั้งข้ามได้ด้วย esc อย่างเดียวตามเดิม)
#
# สถานะที่ต้องส่งกลับเข้ามาทุกเฟรม: บรรทัดก่อน (ระฆัง/เสียงพากย์ยิงครั้งเดียว),
# purified (สติง purify ยิงครั้งเดียว), flashAmt (แฟลชจังหวะจากเบส — สลายตัวเอง)
# คืน [บรรทัดก่อน, purified, flashAmt, ออก]

# ระยะเวลาเล่นต่อบรรทัดของบทกวีอินโทร (24 บรรทัด) ตามภาษาพากย์เสียงจริง —
# แพตเทิร์นเดียวกับ ฉากบทหนึ่ง_ระยะเวลา ใน scenes/chapter1.ling (ที่มาของตัวเลข:
# วัดจาก tools/voiceover/progress.json ตอนอัด). ภาษาที่ยังไม่มีเสียงพากย์ใช้
# จังหวะเดิม 3.4 วิ/บรรทัดไปก่อน
ฟังก์ชัน บทกวี_ระยะเวลา(lang) {
    ถ้า lang == "en" { คืน [1.70, 1.94, 2.50, 2.34, 2.82, 2.50, 1.94, 2.18, 2.58, 2.50, 2.18, 2.82, 2.02, 2.74, 2.42, 2.18, 3.30, 2.18, 2.58, 2.26, 2.58, 2.74, 2.34, 2.66] }
    ถ้า lang == "ko" { คืน [2.74, 4.18, 4.74, 4.18, 3.62, 3.62, 4.02, 3.30, 4.42, 6.18, 4.26, 5.54, 4.50, 3.14, 3.06, 2.50, 3.70, 2.90, 3.62, 3.14, 2.90, 4.18, 24.34, 4.58] }
    ถ้า lang == "ja" { คืน [3.06, 3.46, 3.30, 4.18, 5.70, 3.62, 2.02, 3.14, 3.38, 3.06, 2.74, 3.94, 8.34, 3.70, 4.10, 4.98, 3.94, 2.26, 2.50, 3.94, 3.46, 3.94, 4.50, 5.06] }
    ถ้า lang == "zh" { คืน [2.34, 2.74, 2.42, 3.86, 4.02, 3.46, 2.74, 1.86, 3.70, 2.50, 2.98, 2.10, 2.82, 2.90, 3.46, 2.42, 2.50, 2.82, 2.82, 2.26, 3.14, 2.82, 2.58, 2.82] }
    ถ้า lang == "daemon" { คืน [2.18, 2.50, 3.78, 2.26, 3.14, 2.90, 2.26, 2.26, 3.62, 2.58, 5.54, 3.78, 2.74, 2.74, 2.82, 2.66, 2.18, 2.90, 3.30, 2.34, 2.50, 4.58, 3.94, 4.42] }
    ถ้า lang == "th" { คืน [2.96, 2.84, 3.22, 3.20, 3.28, 2.76, 2.74, 3.28, 2.30, 3.14, 2.98, 3.40, 2.96, 3.36, 2.74, 3.14, 2.98, 2.56, 3.44, 2.88, 3.44, 3.00, 3.40, 3.36] }
    ถ้า lang == "ko" { คืน [2.74, 4.18, 4.74, 4.18, 3.62, 3.62, 4.02, 3.30, 4.42, 6.18, 4.26, 5.54, 4.50, 3.14, 3.06, 2.50, 3.70, 2.90, 3.62, 3.14, 2.90, 4.18, 24.34, 4.58] }
    ถ้า lang == "ja" { คืน [3.06, 3.46, 3.30, 4.18, 5.70, 3.62, 2.02, 3.14, 3.38, 3.06, 2.74, 3.94, 8.34, 3.70, 4.10, 4.98, 3.94, 2.26, 2.50, 3.94, 3.46, 3.94, 4.50, 5.06] }
    ถ้า lang == "zh" { คืน [2.34, 2.74, 2.42, 3.86, 4.02, 3.46, 2.74, 1.86, 3.70, 2.50, 2.98, 2.10, 2.82, 2.90, 3.46, 2.42, 2.50, 2.82, 2.82, 2.26, 3.14, 2.82, 2.58, 2.82] }
    ถ้า lang == "daemon" { คืน [2.18, 2.50, 3.78, 2.26, 3.14, 2.90, 2.26, 2.26, 3.62, 2.58, 5.54, 3.78, 2.74, 2.74, 2.82, 2.66, 2.18, 2.90, 3.30, 2.34, 2.50, 4.58, 3.94, 4.42] }
    bind d = 3.4;  bind out = []
    bind i = 0
    ขณะที่ i < 24 { bind out = list_push(out, d);  bind i = i + 1 }
    คืน out
}

# บทกวีอินโทรผู้พูดเดียว (narrator) ทั้ง 24 บรรทัด — ใช้สร้างพาธไฟล์เสียงพากย์
ฟังก์ชัน บทกวี_ผู้พูดรหัส() {
    bind out = []
    bind i = 0
    ขณะที่ i < 24 { bind out = list_push(out, "narrator");  bind i = i + 1 }
    คืน out
}

# ── บทกวีอินโทร 24 บรรทัด ตามภาษาที่เลือก (0 Daemon, 2 Thai, 3 Korean, 4 Japanese, 5 Chinese, อื่น ๆ English) ──
ฟังก์ชัน บทกวี_บทพูดกลิฟ(ภาษา) {
    ถ้า ภาษา == 0 {
        คืน [
            [9, 16, 14, 16, 20, 16, 20, 14, 14, 26, 4, 20, 16, 3, -1, 24, 21, 20, 14, 26, -1, 14, 8, -1, 8, 25, 25, 8, 5],
            [12, 9, 26, 23, 16, -1, 24, 26, 25, 8, 3, -1, 23, 8, 16, 25, 21, -1, 20, 21, -1, 20, 21, 25, 21, 5],
            [28, 8, 23, 26, 11, 21, 3, -1, 17, 12, 20, 25, 21, 23, 26, -1, 9, 8, 23, 8, 20, 24, 26, 4, 11, 12, -1, 24, 26, 22, 16, 20, 4, 24, 15, 16, 25, 8, 5],
            [19, 8, 26, 20, 25, 12, 20, -1, 15, 8, 19, 26, 3, -1, 23, 16, 9, 8, -1, 23, 8, 16, 19, 26, 5],
            [21, 23, 26, -1, 19, 21, 20, 21, 3, -1, 28, 8, 20, 4, 11, 12, -1, 15, 8, 19, 21, 20, 16, 4, 20, 16, -1, 19, 26, 9, 26, 5],
            [24, 21, 23, 12, 18, 8, 23, 8, -1, 24, 8, 16, 23, 12, 20, 24, 26, 3, -1, 24, 26, 18, 8, 16, -1, 18, 26, 23, 8, 18, 18, 26, 5],
            [14, 26, 23, 12, 16, 25, 21, -1, 18, 21, 11, 21, 3, -1, 8, 20, 11, 8, 20, -1, 18, 16, 25, 8, 5],
            [14, 8, 18, 18, 16, 4, 25, 8, 10, 15, 16, 3, -1, 11, 8, 18, 26, 4, 20, 16, -1, 24, 26, 18, 29, 8, 25, 25, 8, 5],
            [11, 21, 23, 8, 19, 26, 3, -1, 13, 26, 23, 26, 25, 21, 3, -1, 24, 15, 16, 23, 26, 9, 8, -1, 24, 26, 25, 21, 23, 16, 20, 14, 26, 5],
            [18, 8, 18, 26, 4, 28, 8, 20, 3, -1, 25, 21, 16, -1, 24, 26, 25, 8, 4, 20, 16, -1, 23, 21, 24, 26, 25, 21, 5],
            [20, 21, 25, 21, 4, 25, 8, 10, 15, 16, 3, -1, 13, 21, 14, 12, 25, 25, 21, 3, -1, 18, 8, 23, 12, 4, 20, 21, -1, 12, 16, 24, 15, 16, 8, 20, 25, 21, -1, 20, 12, 19, 26, 5],
            [24, 21, 24, 15, 16, 25, 12, -1, 9, 8, 23, 8, 20, 24, 26, 3, -1, 24, 26, 23, 16, 22, 16, 20, 14, 26, -1, 24, 26, 25, 21, 20, 4, 20, 16, -1, 13, 21, 23, 26, 5],
            [11, 12, 19, 21, 3, -1, 28, 8, 20, -1, 25, 21, 20, 3, -1, 23, 16, 19, 12, 16, 20, 5],
            [13, 12, 16, 20, 25, 21, 3, -1, 28, 8, 20, 11, 8, 23, 16, 20, 14, 26, -1, 24, 21, 23, 26, 4, 20, 21, -1, 20, 8, 18, 8, 5],
            [8, 20, 8, 25, 8, 3, -1, 19, 8, 11, 8, -1, 24, 21, 20, 14, 26, -1, 18, 16, 18, 12, 23, 26, 5],
            [8, 20, 8, 25, 8, 3, -1, 25, 21, 20, -1, 19, 21, 20, 21, -1, 14, 29, 8, 30, 8, 4, 24, 26, 9, 12, 18, 16, 5],
            [11, 21, 20, -1, 20, 21, -1, 19, 26, 18, 21, 3, -1, 11, 21, 23, 8, 19, 26, -1, 13, 8, 16, 20, 11, 21, 5],
            [19, 16, 24, 26, 25, 21, -1, 20, 21, -1, 20, 8, 18, 8, 3, -1, 13, 26, 23, 26, 25, 21, -1, 13, 8, 16, 20, 11, 21, 5],
            [24, 26, 13, 16, 8, -1, 9, 8, 16, 20, 11, 11, 21, -1, 24, 26, 25, 21, 23, 16, 20, 14, 26, -1, 13, 8, 16, 20, 11, 21, 5],
            [12, 9, 26, 23, 16, -1, 20, 21, 25, 21, 3, -1, 15, 21, 19, 26, 4, 20, 16, -1, 23, 16, 25, 8, 20, -1, 24, 8, 24, 12, 29, 21, 5],
            [8, 24, 26, -1, 25, 21, -1, 24, 26, 18, 8, 16, -1, 20, 21, -1, 18, 21, 11, 21, 3, -1, 23, 16, 24, 26, 25, 21, 8, 5],
            [24, 21, 24, 15, 16, 25, 12, -1, 28, 8, 23, 26, 11, 21, 3, -1, 24, 8, 16, 23, 12, 20, 25, 21, -1, 24, 26, 25, 21, 20, -1, 18, 8, 23, 8, -1, 28, 12, 16, 18, 26, 5],
            [18, 21, 20, 21, -1, 18, 28, 8, 16, 12, 25, 25, 21, -1, 24, 21, 20, 14, 26, 3, -1, 8, 20, 8, 25, 8, 4, 20, 21, -1, 20, 8, 18, 8, 4, 20, 16, -1, 18, 29, 8, 23, 16, 5],
            [16, 19, 8, 3, -1, 28, 8, 23, 12, 28, 8, 23, 12, -1, 8, 20, 8, 25, 8, 4, 21, -1, 18, 21, 20, 21, -1, 28, 8, 23, 26, 11, 21, 4, 20, 16, -1, 24, 12, 20, 11, 21, 4, 24, 26, 9, 12, 18, 16, 5],
        ]
    }
    ถ้า ภาษา == 1 {
        คืน [
            [21, 26, -1, 32, 20, 17, -1, 14, 17, 19, 21, 26, 26, 21, 26, 19, -1, 32, 20, 17, 30, 17, -1, 35, 13, 31, -1, 13, -1, 31, 27, 26, 19],
            [17, 34, 17, 30, 37, -1, 31, 32, 13, 30, -1, 13, -1, 26, 27, 32, 17, -1, 27, 18, -1, 24, 21, 19, 20, 32],
            [32, 20, 17, -1, 35, 27, 30, 24, 16, -1, 31, 28, 33, 26, -1, 21, 26, -1, 19, 17, 26, 32, 24, 17, -1, 14, 13, 24, 13, 26, 15, 17],
            [25, 27, 33, 26, 32, 13, 21, 26, 31, -1, 20, 33, 25, 25, 17, 16, -1, 13, 26, 16, -1, 30, 21, 34, 17, 30, 31, -1, 30, 20, 37, 25, 17, 16],
            [13, 24, 24, -1, 32, 20, 21, 26, 19, 31, -1, 25, 27, 34, 17, 16, -1, 13, 31, -1, 27, 26, 17, -1, 21, 26, -1, 20, 13, 30, 25, 27, 26, 37],
            [32, 20, 17, 26, -1, 13, -1, 31, 21, 24, 17, 26, 15, 17, -1, 15, 30, 13, 15, 23, 17, 16, -1, 32, 20, 17, -1, 31, 23, 37],
            [32, 20, 17, -1, 19, 30, 17, 13, 32, -1, 15, 20, 27, 30, 16, -1, 15, 13, 25, 17, -1, 33, 26, 16, 27, 26, 17],
            [32, 20, 17, -1, 21, 26, 31, 32, 30, 33, 25, 17, 26, 32, 31, -1, 31, 15, 13, 32, 32, 17, 30, 17, 16, -1, 32, 27, -1, 32, 20, 17, -1, 16, 13, 30, 23],
            [32, 20, 17, -1, 16, 30, 33, 25, -1, 32, 20, 17, -1, 18, 24, 33, 32, 17, -1, 32, 20, 17, -1, 31, 21, 24, 34, 17, 30, -1, 31, 32, 30, 21, 26, 19],
            [17, 13, 15, 20, -1, 27, 26, 17, -1, 24, 27, 31, 32, -1, 21, 26, -1, 13, -1, 16, 21, 31, 32, 13, 26, 32, -1, 31, 32, 13, 30],
            [32, 20, 17, -1, 26, 27, 32, 17, 31, -1, 18, 27, 30, 19, 27, 32, -1, 32, 20, 17, 21, 30, -1, 13, 26, 15, 21, 17, 26, 32, -1, 26, 13, 25, 17, 31],
            [13, 26, 16, -1, 14, 13, 24, 13, 26, 15, 17, -1, 18, 17, 24, 24, -1, 32, 27, -1, 31, 24, 17, 17, 28, 21, 26, 19, -1, 31, 32, 27, 26, 17],
            [37, 17, 32, -1, 13, -1, 31, 21, 26, 19, 24, 17, -1, 32, 27, 26, 17, -1, 30, 17, 25, 13, 21, 26, 31],
            [18, 13, 21, 26, 32, -1, 21, 26, 31, 21, 16, 17, -1, 13, -1, 35, 13, 26, 16, 17, 30, 21, 26, 19, -1, 31, 27, 33, 24],
            [37, 27, 33, -1, 35, 20, 27, -1, 31, 32, 21, 24, 24, -1, 15, 13, 26, -1, 20, 17, 13, 30, -1, 32, 20, 17, -1, 31, 27, 26, 19],
            [37, 27, 33, -1, 25, 33, 31, 32, -1, 19, 13, 32, 20, 17, 30, -1, 35, 20, 13, 32, -1, 35, 13, 31, -1, 32, 27, 30, 26],
            [18, 21, 26, 16, -1, 32, 20, 17, -1, 16, 30, 33, 25, -1, 14, 17, 37, 27, 26, 16, -1, 32, 20, 17, -1, 16, 13, 35, 26],
            [18, 21, 26, 16, -1, 32, 20, 17, -1, 18, 24, 33, 32, 17, -1, 13, 25, 27, 26, 19, -1, 32, 20, 17, -1, 25, 21, 31, 32],
            [18, 21, 26, 16, -1, 32, 20, 17, -1, 31, 32, 30, 21, 26, 19, -1, 32, 20, 13, 32, -1, 14, 21, 26, 16, 31, -1, 32, 20, 17, -1, 31, 28, 20, 17, 30, 17, 31],
            [24, 17, 32, -1, 17, 34, 17, 30, 37, -1, 26, 27, 32, 17, -1, 30, 17, 32, 33, 30, 26, -1, 32, 27, -1, 20, 27, 25, 17],
            [30, 17, 31, 32, 27, 30, 17, -1, 32, 20, 17, -1, 15, 20, 27, 30, 16, -1, 27, 18, -1, 17, 13, 30, 32, 20, -1, 13, 26, 16, -1, 31, 23, 37],
            [13, 26, 16, -1, 35, 13, 23, 17, -1, 32, 20, 17, -1, 35, 27, 30, 24, 16, -1, 18, 30, 27, 25, -1, 31, 21, 24, 17, 26, 32, -1, 31, 32, 27, 26, 17],
            [15, 13, 30, 30, 37, -1, 32, 20, 21, 31, -1, 29, 33, 21, 17, 32, -1, 31, 27, 26, 19, -1, 35, 21, 32, 20, 21, 26, -1, 37, 27, 33],
            [26, 27, 35, -1, 35, 17, -1, 25, 33, 31, 32, -1, 31, 17, 26, 16, -1, 37, 27, 33, -1, 32, 27, -1, 32, 20, 21, 31, -1, 35, 27, 30, 24, 16],
        ]
    }
    ถ้า ภาษา == 2 {
        คืน [
            [152, 57, 6, 133, 101, 149, 93, 136, 84, 150, 93, 6, 84, 138, 62, 51, 149, 76, 101, 20, 119, 57, 144, 20],
            [38, 133, 107, 52, 6, 38, 107, 20, 13, 146, 123, 151, 61, 42, 150, 120, 20, 150, 113, 20],
            [151, 101, 6, 119, 85, 57, 153, 65, 152, 57, 13, 107, 133, 84, 113, 84, 39, 101, 123, 130, 57, 125, 123, 57, 151, 88, 57],
            [83, 149, 10, 133, 128, 130, 84, 149, 76, 101, 20, 150, 101, 129, 150, 86, 61, 134, 10, 130, 62, 10, 133, 57],
            [52, 6, 113, 136, 20, 149, 13, 101, 147, 123, 57, 153, 119, 107, 149, 65, 155, 57, 119, 57, 144, 20, 149, 38, 138, 88, 107, 123, 91, 133, 20, 6, 101, 84, 6, 101, 146, 57],
            [150, 106, 107, 13, 107, 133, 84, 149, 20, 138, 88, 62, 6, 155, 72, 133, 55, 123, 20, 81, 133],
            [13, 123, 93, 156, 38, 123, 130, 57, 88, 136, 20, 152, 119, 33, 150, 42, 6, 113, 101, 133, 88],
            [149, 13, 93, 147, 123, 20, 38, 57, 42, 93, 138, 6, 93, 129, 21, 130, 38, 6, 93, 129, 21, 133, 88, 116, 13, 107, 133, 84, 84, 146, 38],
            [6, 101, 123, 20, -1, 10, 103, 88, -1, 150, 101, 129, 113, 133, 88, 149, 20, 135, 57],
            [150, 45, 101, 129, 27, 137, 57, 115, 32, 119, 133, 88, 152, 57, 38, 133, 107, 153, 6, 101, 151, 78, 57],
            [151, 61, 42, 149, 76, 101, 20, 101, 146, 84, 27, 147, 123, 151, 62, 93, 133, 37, 10, 123, 20, 42, 57],
            [150, 101, 129, 13, 107, 133, 84, 113, 84, 39, 101, 6, 155, 98, 107, 20, 116, 119, 135, 57, 51, 139, 119, 101, 130, 62, 152, 119, 101],
            [150, 45, 88, 130, 20, 84, 138, 149, 113, 138, 88, 20, 119, 57, 144, 20, 51, 139, 119, 101, 20, 149, 119, 101, 146, 123, 123, 90],
            [150, 72, 107, 149, 62, 133, 123, 90, 152, 57, 38, 107, 20, 107, 135, 32, 32, 133, 37, 51, 139, 93, 129, 149, 119, 149, 98, 98, 123, 57],
            [149, 25, 133, 71, 88, 130, 20, 153, 41, 88, 135, 57, 62, 51, 149, 76, 101, 20, 57, 140],
            [149, 25, 133, 46, 123, 20, 93, 107, 62, 93, 107, 84, 113, 136, 20, 51, 139, 150, 42, 6, 113, 101, 133, 88, 153, 65],
            [21, 20, 119, 133, 6, 101, 123, 20, 51, 139, 123, 90, 78, 57, 95, 20, 123, 94, 37],
            [21, 20, 119, 133, 10, 103, 88, 54, 133, 84, 6, 101, 133, 20, 119, 84, 123, 6],
            [21, 20, 119, 133, 113, 133, 88, 51, 139, 70, 6, 151, 88, 20, 38, 107, 20, 38, 133, 107, 51, 132, 20, 119, 101, 133, 88],
            [21, 20, 152, 121, 52, 6, 151, 61, 42, 6, 101, 130, 62, 13, 146, 57, 116, 64, 133, 57],
            [21, 20, 79, 148, 57, 80, 13, 123, 93, 156, 38, 150, 120, 20, 68, 146, 57, 38, 135, 57, 150, 101, 129, 55, 123, 20, 81, 133],
            [150, 101, 129, 65, 102, 6, 151, 101, 6, 152, 121, 42, 147, 57, 21, 133, 6, 119, 135, 57, 123, 130, 57, 149, 20, 138, 88, 62, 20, 130, 57],
            [21, 20, 149, 6, 155, 62, 62, 51, 149, 76, 101, 20, 123, 130, 57, 113, 20, 62, 57, 140, 153, 109, 152, 57, 152, 21, 149, 25, 133],
            [62, 130, 38, 57, 140, 149, 93, 133, 46, 123, 20, 117, 20, 149, 25, 133, 153, 65, 88, 130, 20, 151, 101, 6, 152, 62, 57, 140],
        ]
    }
    ถ้า ภาษา == 3 {
        คืน [
            [479, 453, 349, -1, 105, 179, 17, -1, 393, 348, 120],
            [229, 151, -1, 260, 382, -1, 276, 385, -1, 384, 495, 355, 120],
            [298, 288, 382, -1, 267, 149, 184, 370, -1, 59, 517, -1, 303, 349, 292, -1, 136, 333, 120],
            [285, 382, -1, 534, 344, 28, 206, 43, -1, 23, 382, -1, 370, 380, 383, -1, 217, 455, 348, 120],
            [213, 240, 382, -1, 502, 86, 17, -1, 140, 340, -1, 414, 523, 199, 33, -1, 372, 428, 355, 120],
            [60, 184, 120, -1, 463, 237, 386, -1, 502, 116, 383, -1, 20, 174, 108, 333, 120],
            [378, 127, 503, -1, 523, 384, 386, -1, 496, 340, 412, -1, 254, 195, 120],
            [328, 65, 153, 382, -1, 340, 146, -1, 303, 381, 197, -1, 535, 340, 413, 120],
            [268, 49, -1, 500, 206, 362, -1, 382, 276, -1, 515],
            [18, 18, 386, -1, 218, 86, 220, -1, 260, -1, 303, 349, 292, -1, 67, 383, -1, 390, 348, 120],
            [384, 495, 153, 382, -1, 396, 318, 385, -1, 359, 179, 141, -1, 386, 204, 383, -1, 395, 348, 120],
            [60, 206, 43, -1, 59, 517, 382, -1, 400, 151, -1, 136, -1, 303, 381, 197, -1, 167, 340, 413, 120],
            [60, 184, 86, -1, 122, -1, 502, 86, 385, -1, 384, 386, -1, 89, 327, 393, 120],
            [252, 525, 502, 115, -1, 356, 520, -1, 303, 349, -1, 536, 243, 502, 33],
            [327, 428, -1, 60, -1, 105, 179, 203, -1, 153, 383, -1, 307, -1, 393, 115, -1, 60, 127, 351],
            [438, 35, 429, -1, 32, 153, 383, -1, 229, 327, 336, -1, 503, 120],
            [289, 258, -1, 98, 218, 385, -1, 268, 383, -1, 444, 327, 174],
            [329, 27, -1, 303, 385, -1, 500, 206, 203, -1, 444, 327, 174],
            [447, 53, 153, 383, -1, 238, 115, -1, 515, 383, -1, 444, 327, 174],
            [229, 151, -1, 384, 495, 17, -1, 433, 381, 197, -1, 136, 327, 17, 33, -1, 502, 174],
            [162, 49, -1, 502, 116, 385, -1, 523, 384, 383, -1, 140, 286, 192, 174],
            [60, 206, 43, -1, 43, 367, 503, -1, 136, 349, 292, -1, 298, 288, 383, -1, 73, 374, 174],
            [386, -1, 43, 367, 503, -1, 105, 179, 203, -1, 60, 127, -1, 329, 349, -1, 497, 340, 174],
            [386, 411, -1, 369, 206, 115, -1, 60, 127, 203, -1, 386, -1, 298, 288, 381, 197, -1, 261, 93, 336, -1, 503, 120],
        ]
    }
    ถ้า ภาษา == 4 {
        คืน [
            [50, 28, 59, 70, 46, 6, 123, 39, 49, 393, 17, 11, 38, 35],
            [29, 56, 41, 49, 364, 50, 167, 49, 605, 475, 36, 38, 35],
            [132, 441, 50, 467, 65, 16, 45, 224, 523, 49, 134, 42, 216, 38, 41, 12, 35],
            [276, 8, 50, 194, 30, 26, 60, 6, 277, 8, 50, 606, 75, 546, 76, 36],
            [126, 430, 50, 123, 39, 43, 45, 70, 6, 538, 206, 49, 13, 37, 46, 184, 12, 41, 12, 35],
            [65, 17, 41, 6, 402, 624, 17, 468, 75, 179, 70, 524, 12, 35],
            [158, 237, 45, 206, 605, 17, 57, 44, 22, 41, 12, 38, 35],
            [386, 213, 35, 37, 50, 588, 49, 134, 55, 43, 352, 69, 51, 38, 35],
            [239, 625, 43, 6, 474, 43, 6, 577, 49, 291],
            [33, 72, 34, 72, 17, 572, 12, 364, 49, 134, 42, 558, 249, 46, 45, 38, 35],
            [605, 475, 35, 37, 50, 195, 49, 199, 75, 309, 72, 41, 27, 59, 38, 35],
            [33, 27, 41, 224, 523, 50, 6, 450, 71, 455, 49, 134, 55, 43, 517, 37, 41, 12, 38, 35],
            [33, 72, 42, 63, 6, 123, 39, 49, 605, 36, 22, 17, 397, 38, 41, 12, 71],
            [26, 59, 68, 13, 619, 49, 134, 46, 6, 16, 29, 16, 46],
            [33, 49, 393, 75, 59, 36, 503, 20, 24, 43, 17, 42, 18, 71, 6, 11, 45, 35, 68],
            [290, 18, 524, 16, 72, 35, 63, 49, 75, 6, 11, 45, 35, 17, 595, 62, 48, 51, 45, 69, 45, 12],
            [235, 363, 22, 49, 201, 24, 13, 46, 11, 71, 239, 625, 75, 527, 39, 22, 68],
            [601, 49, 134, 46, 11, 71, 474, 75, 527, 39, 22, 68],
            [238, 436, 75, 488, 53, 39, 22, 71, 291, 75, 527, 39, 22, 68],
            [29, 56, 41, 49, 605, 475, 75, 6, 262, 55, 43, 281, 27, 41, 11, 23, 68],
            [237, 223, 43, 468, 49, 206, 605, 75, 193, 70, 323, 31],
            [33, 27, 41, 6, 402, 624, 29, 71, 455, 16, 69, 132, 441, 75, 448, 528, 62, 26, 31, 68],
            [24, 49, 603, 16, 45, 393, 75, 6, 11, 45, 35, 49, 134, 46, 332, 12, 41],
            [143, 6, 322, 8, 50, 11, 45, 35, 75, 24, 49, 132, 441, 55, 559, 70, 176, 26, 48, 51, 45, 69, 45, 12],
        ]
    }
    ถ้า ภาษา == 5 {
        คืน [
            [238, 120, 32, 432, 850, 449, 11, 833, 480],
            [489, 11, 826, 434, 750, 775, 436, 93, 573, 819, 616],
            [20, 567, 216, 519, 464, 573, 301, 702, 25, 426, 742],
            [659, 286, 71, 168, 850, 497, 501, 386, 820],
            [13, 549, 179, 726, 217, 700, 27, 11, 73, 850, 98, 161, 509, 742],
            [664, 163, 850, 11, 548, 270, 815, 116, 590, 38, 237, 607],
            [66, 236, 573, 179, 319, 289, 711, 38],
            [34, 202, 204, 418, 41, 842, 441, 32, 25],
            [844, 850, 615, 850, 754, 449, 773, 785, 683, 573, 319],
            [489, 11, 58, 775, 758, 240, 216, 771, 757, 573, 434, 750, 779],
            [819, 616, 57, 339, 715, 38, 677, 293, 155, 662, 573, 162, 252],
            [301, 702, 220, 94, 38, 499, 585, 573, 287, 589],
            [543, 664, 850, 51, 449, 11, 24, 819, 569, 253, 38, 16, 457],
            [335, 320, 217, 253, 216, 41, 11, 24, 526, 503, 573, 535, 838, 32, 25],
            [78, 850, 773, 51, 673, 171, 707, 755, 833, 480, 573, 48, 191],
            [78, 337, 822, 413, 809, 773, 44, 703, 410, 704, 573, 591, 548],
            [146, 274, 378, 841, 433, 32, 232, 573, 773, 818, 844],
            [146, 274, 378, 758, 813, 32, 25, 573, 773, 412, 615],
            [146, 274, 378, 773, 468, 647, 629, 434, 560, 573, 319],
            [713, 489, 11, 24, 819, 616, 775, 205, 322, 267, 208],
            [780, 314, 236, 217, 18, 237, 607, 573, 179, 319],
            [303, 275, 20, 567, 52, 499, 843, 573, 287, 589, 25, 188, 777],
            [275, 755, 833, 815, 727, 573, 480, 296, 216, 78, 336, 25],
            [556, 216, 850, 367, 57, 337, 822, 760, 78, 126, 329, 755, 24, 20, 567],
        ]
    }
    คืน []
}

ฟังก์ชัน บทกวี_บทพูด(ภาษา) {
    ถ้า ภาษา == 0 {
        คืน [
            "bigininggu-ni, songu ga atta.",
            "eburi suta, raito no noto.",
            "warudo, jentoru baransu-de supin-shita.",
            "maunten hamu, riba raimu.",
            "oru mono, wan-de hamoni-ni mubu.",
            "sorekara sairensu, sukai kurakku.",
            "gureito kodo, andan kita.",
            "gakki-tachi, daku-ni sukyatta.",
            "doramu, furuto, shiruba sutoringu.",
            "kaku-wan, toi suta-ni rosuto.",
            "noto-tachi, fogetto, kare-no eishianto nemu.",
            "soshite baransu, suripingu suton-ni foru.",
            "demo, wan ton, rimein.",
            "feinto, wandaringu soru-no naka.",
            "anata, mada songu kikeru.",
            "anata, ton mono gyaza-subeki.",
            "don no muko, doramu faindo.",
            "misuto no naka, furuto faindo.",
            "sufia bainddo sutoringu faindo.",
            "eburi noto, homu-ni ritan saseyo.",
            "asu to sukai no kodo, risutoa.",
            "soshite warudo, sairento suton kara weiku.",
            "kono kwaietto songu, anata-no naka-ni kyari.",
            "ima, wareware anata-o kono warudo-ni sendo-subeki."
        ]
    }
    ถ้า ภาษา == 2 {
        คืน [
            "ในกาลเริ่มแรกมีบทเพลงหนึ่ง",
            "ดาวทุกดวงคือโน้ตแห่งแสง",
            "โลกหมุนไปในความสมดุลอันอ่อนโยน",
            "ภูเขาฮัมเพลงและแม่น้ำขับขาน",
            "ทุกสิ่งเคลื่อนไหวเป็นหนึ่งเดียวอย่างกลมกลืน",
            "แล้วความเงียบก็ผ่าท้องฟ้า",
            "คอร์ดอันยิ่งใหญ่แตกสลาย",
            "เครื่องดนตรีกระจัดกระจายสู่ความมืด",
            "กลอง ขลุ่ย และสายเงิน",
            "แต่ละชิ้นสูญหายในดาวไกลโพ้น",
            "โน้ตเพลงลืมชื่อโบราณของตน",
            "และความสมดุลก็ร่วงสู่หินที่หลับใหล",
            "แต่โน้ตเดียวยังคงอยู่",
            "แผ่วเบาในดวงวิญญาณผู้ระเหเร่ร่อน",
            "เจ้าผู้ยังได้ยินบทเพลงนี้",
            "เจ้าต้องรวบรวมสิ่งที่ถูกฉีกกระจาย",
            "จงหากลองที่อยู่พ้นรุ่งอรุณ",
            "จงหาขลุ่ยท่ามกลางหมอก",
            "จงหาสายที่ผูกโยงดวงดาวไว้ด้วยกัน",
            "จงให้ทุกโน้ตกลับคืนสู่บ้าน",
            "จงฟื้นฟูคอร์ดแห่งผืนดินและท้องฟ้า",
            "และปลุกโลกให้ตื่นจากหินอันเงียบงัน",
            "จงเก็บบทเพลงอันเงียบสงบนี้ไว้ในใจเจ้า",
            "บัดนี้เราต้องส่งเจ้าไปยังโลกใบนี้"
        ]
    }
    ถ้า ภาษา == 3 {
        คืน [
            "태초에 노래가 있었다",
            "모든 별은 빛의 음표였다",
            "세상은 부드러운 균형 속에서 돌았다",
            "산은 흥얼거리고 강은 운율을 맞추었다",
            "만물은 하나가 되어 조화롭게 움직였다",
            "그러다 침묵이 하늘을 갈라놓았다",
            "위대한 화음이 풀어져 버렸다",
            "악기들은 어둠 속으로 흩어졌다",
            "북과 피리와 은빛 현",
            "각각이 머나먼 별 속에서 길을 잃었다",
            "음표들은 자신의 오래된 이름을 잊었다",
            "그리고 균형은 잠든 돌 속으로 떨어졌다",
            "그러나 단 하나의 음이 남아있다",
            "방황하는 영혼 속에 희미하게",
            "아직 그 노래를 들을 수 있는 그대여",
            "찢겨진 것들을 모아야 한다",
            "새벽 너머의 북을 찾아라",
            "안개 속의 피리를 찾아라",
            "천구를 묶는 현을 찾아라",
            "모든 음표를 집으로 돌려보내라",
            "땅과 하늘의 화음을 복원하라",
            "그리고 잠든 돌에서 세상을 깨우라",
            "이 고요한 노래를 그대 안에 품으라",
            "이제 우리는 그대를 이 세상으로 보내야 한다"
        ]
    }
    ถ้า ภาษา == 4 {
        คืน [
            "はじまりに、一つの歌があった",
            "すべての星は光の音符だった",
            "世界は穏やかな均衡の中で回っていた",
            "山々は口ずさみ、川々は韻を踏んだ",
            "万物は一つとなり、調和のうちに動いていた",
            "やがて、沈黙が空を切り裂いた",
            "偉大な和音がほどけていった",
            "楽器たちは闇の中へと散らばった",
            "太鼓と、笛と、銀の弦",
            "それぞれが遠い星の中で迷子になった",
            "音符たちは古の名を忘れてしまった",
            "そして均衡は、眠る石の中へと落ちていった",
            "それでも、一つの音だけが残っている",
            "さまよう魂の中に、かすかに",
            "その歌をまだ聞くことができる、あなたよ",
            "引き裂かれたものを、あなたが集めねばならない",
            "夜明けの向こうにある太鼓を見つけよ",
            "霧の中の笛を見つけよ",
            "天球を結ぶ弦を見つけよ",
            "すべての音符を家へ帰そう",
            "大地と空の和音を取り戻せ",
            "そして眠る石から世界を目覚めさせよ",
            "この静かな歌をあなたの中に抱きなさい",
            "今、私たちはあなたをこの世界へ送らねばならない"
        ]
    }
    ถ้า ภาษา == 5 {
        คืน [
            "太初之时,有一首歌",
            "每一颗星辰都是光的音符",
            "世界在温柔的平衡中旋转",
            "群山低吟,江河押韵",
            "万物和谐地融为一体,共同流转",
            "而后,一片寂静划破了天空",
            "伟大的和弦崩解了",
            "乐器四散于黑暗之中",
            "鼓,笛,还有那银色的弦",
            "每一件都迷失在遥远的星辰里",
            "音符们忘记了自己古老的名字",
            "平衡坠入了沉睡的岩石",
            "然而,仍有一个音留存了下来",
            "微弱地存在于一个漂泊的灵魂之中",
            "你,那仍能听见这首歌的人啊",
            "你必须收集那些被撕裂的碎片",
            "去寻找黎明之外的那面鼓",
            "去寻找迷雾之中的那支笛",
            "去寻找那根维系星球的弦",
            "让每一个音符都回归家园",
            "重建大地与天空的和弦",
            "并将世界从沉默的岩石中唤醒",
            "将这首静谧的歌带在你心中",
            "现在,我们必须送你前往这个世界"
        ]
    }
    คืน [
        "in the beginning there was a song",
        "every star a note of light",
        "the world spun in gentle balance",
        "mountains hummed and rivers rhymed",
        "all things moved as one in harmony",
        "then a silence cracked the sky",
        "the great chord came undone",
        "the instruments scattered to the dark",
        "the drum the flute the silver string",
        "each one lost in a distant star",
        "the notes forgot their ancient names",
        "and balance fell to sleeping stone",
        "yet a single tone remains",
        "faint inside a wandering soul",
        "you who still can hear the song",
        "you must gather what was torn",
        "find the drum beyond the dawn",
        "find the flute among the mist",
        "find the string that binds the spheres",
        "let every note return to home",
        "restore the chord of earth and sky",
        "and wake the world from silent stone",
        "carry this quiet song within you",
        "now we must send you to this world"
    ]
}


# ── ฉากหลัก ─────────────────────────────────────────────────────────────────
# ฟังก์ชันมองไม่เห็น local ใน do-block ของ main → รับทุกอย่างเป็นพารามิเตอร์
ฟังก์ชัน เล่นฉากอินโทร(t, cineStart, prevLine, purified, flashAmt, musicOn, ปริมาณBGM, ปริมาณSFX, เพลงหลัก, fftCalls, kCutMesh, qCutMesh, liq, particlesOn, คอร์ดระฆัง, ภาษา, แสดงบทพูด, ภาษาบทพูด, ระยะเวลาไดนามิก) {
        bind clock = t - cineStart
        bind cineDur = ระยะเวลาไดนามิก
        bind cineCum = [0.0]
        bind cci2 = 0
        ขณะที่ cci2 < 24 {
            bind cineCum = list_push(cineCum, list_get(cineCum, cci2) + list_get(cineDur, cci2))
            bind cci2 = cci2 + 1
        }
        bind totalCine = list_get(cineCum, 24)      # ผลรวมจริงของ 24 บรรทัด (เดิม 24*SECPER ตายตัว)
        bind fadeStart = totalCine - 3.4
        เบลอเฟรม(0.958)                          # หางแสงค้าง ~1.25 วิ (ธีมเดียวกับคัตซีนบท) — hook เปลี่ยนฉากรีเซ็ตให้

        ถ้า musicOn == 1 { ระดับเพลง(ปริมาณBGM * 0.33) }   # หรี่ BGM เหลือ 1/3 — เสียงพากย์บทกวีต้องเด่นกว่า (ไม่กระทบ FFT ที่ใช้ขับภาพ)

        # FFT ของ Soul Symphony (WAV) — audio-reactive (อ่านฝั่ง Rust ไม่ใช่ global ใหญ่)
        bind bands = สเปกตรัมเพลง(เพลงหลัก, fftCalls)
        # จังหวะ (beat) จากย่านเบส → แฟลชจาง
        bind flashAmt = flashAmt * 0.85
        bind bassNow = list_get(bands, 0) + list_get(bands, 1)
        ถ้า bassNow > 1.1 { bind flashAmt = 1.0 }

        # เฟดขาวช่วงท้าย + แฟลชจังหวะ
        bind wf = 0.0
        ถ้า clock > fadeStart { bind wf = (clock - fadeStart) / 3.4 }
        ถ้า wf > 1.0 { bind wf = 1.0 }
        bind skyFade = 1.0 - wf
        bind bgv = floor(wf * 255.0) + floor(flashAmt * 45.0)
        ถ้า bgv > 255.0 { bind bgv = 255.0 }
        เติม(bgv, bgv, bgv)
        ตั้งแสงรอบข้าง(0.5)
        โหมดผสม(1)

        # กล้องล่องลอยในสโนว์โกลบ; ช่วงท้ายเข้าหาดาวเคราะห์ (ลูก)
        bind endf = 0.0
        ถ้า clock > totalCine - 16.0 { bind endf = (clock - (totalCine - 16.0)) / 16.0 }
        ถ้า endf > 1.0 { bind endf = 1.0 }
        bind ccx = ไซน์(clock * 0.06) * 6.0
        bind ccy = ไซน์(clock * 0.04) * 4.0 - 2.0
        bind ccz = โคไซน์(clock * 0.06) * 6.0
        bind tgx = ไซน์(clock * 0.06 + 1.5) * 25.0
        bind tgy = ไซน์(clock * 0.03) * 8.0
        bind tgz = โคไซน์(clock * 0.06 + 1.5) * 25.0
        # ดาวเคราะห์ที่ (0,-14,0): กล้อง/เป้าเลื่อนเข้าหามันช่วงท้าย
        bind ccx = ccx * (1.0 - endf) + โคไซน์(clock*0.2) * 11.0 * endf
        bind ccz = ccz * (1.0 - endf) + ไซน์(clock*0.2) * 11.0 * endf
        bind ccy = ccy * (1.0 - endf) + (0.0-16.0) * endf
        bind tgx = tgx * (1.0 - endf) + 0.0
        bind tgy = tgy * (1.0 - endf) + (0.0-14.0) * endf
        bind tgz = tgz * (1.0 - endf) + 0.0
        ตั้งกล้องมอง(ccx, ccy, ccz, tgx, tgy, tgz)
        ตั้งระยะห่าง(1.9)

        # ดาว + เครื่องดนตรี (gather = endf → รวมเข้าหาดาวเคราะห์ช่วงท้าย)
        เมฆดาว(t, skyFade, endf)
        flush_3d()

        # ── ราชา: ปรากฏร่างใหญ่อยู่หลังดาวเคราะห์ (เผยตอนกล้องเข้าหา endf) ──
        ถ้า endf > 0.02 {
            โหมดผสม(0)
            mesh_draw(kCutMesh, 0.0, 0.0-30.0, 0.0, 18.0, clock*0.07, 0.0, 0.0, 0.0, 0.0, 0.0)
            flush_3d()
            โหมดผสม(1)
        }

        # ดาวเคราะห์ (ลูกของเหลว)
        liquid_step(liq, 0.016)
        liquid_splat(liq, 28.0 + ไซน์(t)*12.0, 28.0 + โคไซน์(t*1.1)*12.0, 1.0, 0.2, 4.0)
        liquid_draw_surface(liq, 1, 0.0, 0.0-14.0, 0.0, 5.0, 5.0)
        ถ้า particlesOn > 0.5 {
            bind ดาวCol = วนสีอ่อน(200*skyFade, 180*skyFade, 255*skyFade, t*0.85, 0.45)
            อนุภาคทรงกลม(0.0, 0.0-14.0, 0.0, 4.6, 120.0, t, list_get(ดาวCol,0), list_get(ดาวCol,1), list_get(ดาวCol,2))
        }
        flush_3d()

        # ── ราชินี: วิญญาณภายในลูก (ตาข่าย + ริกเรืองแสง) หมุนช้า — เผยพร้อมราชา ──
        ถ้า endf > 0.02 {
            bind kqYaw = clock * 0.28
            โหมดผสม(0)
            mesh_draw(qCutMesh, 0.0, 0.0-18.0, 0.0, 7.0, kqYaw, 0.0, 0.0, 0.0, 0.0, 0.0)
            flush_3d()
            โหมดผสม(1)
            วาดQueenริก(0.0, 0.0-18.0, 0.0, 2.33, kqYaw, floor(150*endf)+70, floor(90*endf)+45, floor(220*endf)+35)
            flush_3d()
        }

        # ดาวหางดนตรี — พุ่งเร็วสุ่มทิศ; ปลายฉากสไปรัลเข้าโคจรดาวเคราะห์
        เมฆดาวหาง(t, 0, list_get(bands, 0), skyFade, endf)
        เมฆดาวหาง(t, 1, list_get(bands, 1), skyFade, endf)
        เมฆดาวหาง(t, 2, list_get(bands, 2), skyFade, endf)
        เมฆดาวหาง(t, 3, list_get(bands, 3), skyFade, endf)
        เมฆดาวหาง(t, 4, list_get(bands, 4), skyFade, endf)
        เมฆดาวหาง(t, 5, list_get(bands, 5), skyFade, endf)
        เมฆดาวหาง(t, 6, list_get(bands, 6), skyFade, endf)
        เมฆดาวหาง(t, 7, list_get(bands, 7), skyFade, endf)
        flush_3d()

        # นกหวีด + purify ตอนปลายฉาก (ดาวหางสไปรัลเข้า)
        ถ้า musicOn == 1 { ถ้า endf > 0.15 {
            เป่านกหวีด(8,  1046.0, endf, list_get(bands, 0))
            เป่านกหวีด(9,  1174.0, endf, list_get(bands, 1))
            เป่านกหวีด(10, 1318.0, endf, list_get(bands, 2))
            เป่านกหวีด(11, 1568.0, endf, list_get(bands, 3))
            เป่านกหวีด(12, 1760.0, endf, list_get(bands, 4))
            เป่านกหวีด(13, 1046.0, endf, list_get(bands, 5))
            เป่านกหวีด(14, 1174.0, endf, list_get(bands, 6))
            เป่านกหวีด(15, 1318.0, endf, list_get(bands, 7))
        } }
        # purify SFX (ครั้งเดียว เมื่อเริ่มเฟดขาว)
        ถ้า clock > fadeStart { ถ้า purified == 0 {
            เสียงเอฟเฟกต์(0,0,0, 1.0, 880.0,  0.40, 3.0, "sine")
            เสียงเอฟเฟกต์(0,0,0, 1.0, 1320.0, 0.32, 3.0, "sine")
            เสียงเอฟเฟกต์(0,0,0, 2.0, 1760.0, 0.26, 3.5, "triangle")
            เสียงเอฟเฟกต์(0,0,0, 2.0, 2640.0, 0.20, 3.5, "sine")
            bind purified = 1
        } }

        # ทวิงเคิล
        ประกาย(380.0, 240.0, 480.0, 340.0, 22.0, t)
        ประกาย(1240.0, 720.0, 520.0, 360.0, 22.0, t)

        # ── บทกวี (โอเวอร์เลย์ล่าง) + ระฆังต่อบรรทัด ──
        bind lineIdx = 0
        bind cineScan = 1
        ขณะที่ cineScan == 1 {
            ถ้า lineIdx >= 23 { bind cineScan = 0 }
            มิฉะนั้น { ถ้า clock < list_get(cineCum, lineIdx + 1) { bind cineScan = 0 }
            มิฉะนั้น { bind lineIdx = lineIdx + 1 } }
        }
        bind SECPER = list_get(cineDur, lineIdx)     # ระยะเวลาบรรทัดปัจจุบัน (ใช้แทนค่าคงที่ด้านล่าง)
        ถ้า lineIdx > prevLine {
            ถ้า lineIdx < 24 {
                bind deg = lineIdx - floor(lineIdx / 5.0) * 5.0
                เสียงเอฟเฟกต์(0.0, 0.0, 0.0, 1.0, list_get(คอร์ดระฆัง, deg), 0.4, 1.4, "sine")
                เล่นเสียงพากย์("intro", lineIdx, "narrator", ภาษา, ปริมาณSFX)
            }
            bind prevLine = lineIdx
        }
        ถ้า lineIdx < 24 {
            bind line = list_get(บทกวี_บทพูด(ภาษาแสดงผล(ภาษา)), lineIdx)
            bind localT = clock - list_get(cineCum, lineIdx)
            bind lf = 1.0
            ถ้า localT < 0.7 { bind lf = localT / 0.7 }
            ถ้า localT > SECPER - 0.7 { bind lf = (SECPER - localT) / 0.7 }
            ถ้า lf < 0.0 { bind lf = 0.0 }
            ตั้งกล้องมอง(0.0, 0.0, -22.0, 0.0, 0.0, 0.0)
            ตั้งระยะห่าง(2.8)
            bind cv = floor(235.0 * lf)
            ถ้า แสดงบทพูด == 1 {
                # ซับใช้ ภาษาบทพูด (แยกจาก ภาษา ที่เป็นภาษาพากย์) เหมือนทุกฉากอื่น —
                # เดิมฉากนี้ใช้ ภาษา ทั้งคู่ --sub จึงไม่มีผลกับอินโทร ฉากเดียวในเกม
                bind บทกวีกลิฟบรรทัด = list_get(บทกวี_บทพูดกลิฟ(ภาษาบทพูด), lineIdx)
                วาดสตริงบทพูดบากขอบ(บทกวีกลิฟบรรทัด, ภาษาบทพูด, 0.0, 8.5, 0.0, 0.66)
                # เฟดขาว: เปลี่ยนตัวอักษรเป็นเข้มบนพื้นขาว
                ถ้า wf > 0.5 { สีดินสอ(floor(40.0*lf), floor(40.0*lf), floor(60.0*lf)) }
                มิฉะนั้น { สีดินสอ(cv, cv, cv) }
                วาดสตริงบทพูดบาก(บทกวีกลิฟบรรทัด, ภาษาบทพูด, 0.0, 8.5, 0.0, 0.66)
            }
            flush_3d()
        }

        แสดงผล()

        # จบ / ข้าม → เข้าเล่น
        bind ออกคัต = 0
        ถ้า clock >= totalCine { bind ออกคัต = 1 }
        ถ้า กดปุ่ม("escape") { bind ออกคัต = 1 }
        ถ้า ออกคัต == 1 {
            # ปิดเสียงนกหวีดทั้ง 8 ช่อง (ไม่ให้ค้างเข้าเกม)
            bind ms = 0
            ขณะที่ ms < 8 { เสียงโทน(8+ms, 0,0,0, 1.0, 220.0, 0.0, 0.0, 0.0);  bind ms = ms + 1 }
            เบลอเฟรม(0.0)
        }
    คืน [prevLine, purified, flashAmt, ออกคัต]
}

← Back to index