- stats.js (window.MatchStats): statistik pemain 1 per pertandingan versus (juga 2 pemain, Arcade, Survival, Bayangan; latihan tidak): damage keluar/diterima (selisih HP per langkah), kombo terpanjang, counter hit, parry, blok, lempar, akurasi serangan dasar/skill 1/skill 2/ultimate (jurus dihitung mengenai sekali per pemakaian), ronde dan durasi (jumlah waktu fase fight, waktu simulasi tanpa Date.now)
- game.js: kait satu baris di startMatch/reset (reset), advanceMatch (tick), cast/startAttack (cast), hitDummy/dotDamage (hit lewat hitSource), heroGuard (parry/block), event 'complete' (finish -> info.stats)
- vs.js + stats.css: tombol STATISTIK di kepala layar hasil membuka kartu 4x3 di atas tombol aksi (digulir sendiri bila ruang kurang, Esc menutup), muat di 520 px dan ponsel lanskap; tanpa info.stats tidak ada tombol
- meta.js: award memanggil commit ke Meta.save.stats (kunci baru dmgDealt, dmgTaken, parries, blocks, throws, counters, rounds, playSec, statMatches; simpanan lama terbaca 0; bestCombo ikut naik ke kombo terbaik seluruh ronde); tab Koleksi menampilkan ringkasan seumur hidup
- index.html: dua tag baru di baris sendiri; catatan mesin diperbarui. Mode ringan: node --check dan smoke lulus, tampilan dan angka diuji manual oleh pemilik
Konflik index.html dan meta.js diselesaikan dengan mempertahankan kedua sisi: mystery.css dimuat sesudah story.css, content/mystery.js dan mystery.js dimuat di antara touch.js dan menu.js seperti di cabangnya, dan daftar pencapaian tersembunyi di Koleksi memuat penasaran_berat sekaligus reuni.
Konflik game.js di startMatch diselesaikan dengan mempertahankan kedua sisi: refreshPassives(matchStyles(...)) dari pasif dijalankan dulu, lalu setShadowFoe(...), dan info layar VS membawa styles sekaligus shadow. Urutan pengali di dotDamage dan receiveHit: pengali pasif dulu, lalu +10% Bayangan.
Konflik index.html, meta.js, vs.js diselesaikan dengan mempertahankan kedua sisi: urutan skrip content/passives.js, passives.js, content/quotes.js, content/dialogs.js sebelum vs.js; Meta mengekspor styleOf, setStyle, dan pairEgg; VS.show memanggil Passives.decorateVS lalu memakai durasi dur milik dialog.
- content/mystery.js: 5 slot dengan 3-4 petunjuk tiap slot (19 total); syarat dibaca dari Meta.save (menang, Survival, Arcade tamat, kombo, menang bersih, pencapaian, kejutan, dialog rahasia, barang toko). Teks samar dan lucu tanpa nama tokoh nyata.
- mystery.js dan mystery.css: siluet SVG sebaris dari bentuk locked.svg yang makin tajam tiap petunjuk terbuka, benda khas muncul di dua tahap terakhir, tanda tanya berubah, lencana n/total, titik BARU dan toast. Panel pratinjau memuat petunjuk terbuka, syarat petunjuk berikutnya dengan bilah progres, dan nomor slot.
- menu.js: empat pengait kecil (panel, dekorasi petak, pratinjau teks bawah roster, pesan saat ditekan). Slot tetap tidak bisa dipilih dan tetap data-fighter locked-N sehingga easter egg penasaran tetap jalan.
- meta.js: pencapaian tersembunyi PENASARAN BERAT bila semua petunjuk terbuka.
- ?mystery=N atau all di URL mempratinjau tahap tanpa menyimpan apa pun. Catatan mesin dan README diperbarui. Mode ringan: tanpa berkas uji baru, diuji manual oleh pemilik.
- vs.js + vs.css: layar VS sekitar 2,2 detik (dua potret, nama, tag, kutipan pembuka, teks VS, bisa dilewati klik/Spasi/Enter/Esc), hanya untuk versus/Arcade/Survival/dua pemain, tidak di latihan. Cue Round 1 ditunda sampai layar selesai; urutan intro, FIGHT, dan announcer tetap utuh
- ResultView: pemenang besar dengan kutipan menang, yang kalah redup dengan kutipan kalah, rincian koin per baris, statistik singkat, tombol Main lagi / Pilih ulang / Ke toko / Menu utama; akhir Arcade/Survival memakai tampilan yang sama
- Meta.award menyimpan rincian koin di Meta.lastAward tanpa mengubah jumlah koin
- content/quotes.js: kutipan intro/win/lose untuk 7 karakter; build_precache.py ikut memuat folder content/
- tests/t2-vsresult.mjs: uji headless VS, lewati/batal, hasil, Arcade/Survival, jalur menu, ponsel lanskap