- 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.
Konflik index.html diselesaikan per token: teks Indonesia, kutipan loading, dan skrip brand dari brand; meter ultimate, panel jeda dua kolom, vs.css, dan skrip quotes/vs dari HUD dan vsresult dipertahankan.
Konflik index.html: baris skrip akhir dan panel jeda; dipertahankan panel jeda dua kolom dari HUD dan ditambahkan content/quotes.js serta vs.js dari vsresult.
- Latar menu utama dan About: kolase tujuh potret petarung dengan CSS (lapisan miring, cahaya, gerak lambat yang menghormati prefers-reduced-motion); video dan banner game asal tidak dipakai lagi (berkas aset tetap ada)
- Teks sisa AETHER/ARCO/FENR/Mecha/Demi-Human dibersihkan dari index.html, tag arena, pengaturan, label aksesibilitas, dan dokumen; kredit Bang Tutorial tetap di About dan README
- brand.js, content/loading.js: kutipan acak berbahasa Indonesia di layar boot dan loading, berganti tiap dimuat
- brand.js, content/changelog.js: panel Yang baru di About dan toast Ada yang baru satu kali saat versi berubah
- README ditulis ulang untuk Konoha Fighting, DEPLOY.md dan catatan mesin diperbarui
- tests/t2-brand.mjs: 51 pemeriksaan
- 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
Meter ultimate tipis di bawah HP pemain dan lawan: terisi mengikuti cooldown ultimate, berdenyut berlabel SIAP, dan menjadi bar waktu mode yang menyusut (nama mode, warna aura) untuk 6 karakter berbasis data, mode mengamuk Bro Wo, bentuk Senator A Nice, serta feral FENR. Data sama untuk CPU dan P2.
Menu jeda memuat bagian Daftar gerakan yang dapat dilipat: tombol dasar, gerakan perintah, nama skill dan mode karakter, kontrol P2. Teks jeda dan bantuan kontrol dibuat berbahasa Indonesia.
Tombol tambahan sentuh dikecilkan pada tinggi 361-400 px agar tidak menimpa meter lawan. Uji headless tests/t2-hud.mjs.
- feel.js baru: tabel FEEL terpusat per jenis serangan (ringan, sedang, berat, ultimate, guard, parry, counter),
getaran searah pukulan, riak, kilat putih pada sprite yang kena (pemain dan lawan CPU)
- K.O. memperlambat simulasi visual (0,25x ~0,9 dtk; K.O. akhir 0,2x ~1,5 dtk) dengan zoom ke yang kalah dan vignette;
jam ronde dan penutup K.O. tetap memakai waktu nyata
- angka damage pop dengan warna per jenis (counter oranye + teks COUNTER, parry biru, guard abu), dibatasi 8 aktif
- peringkat kombo C/B/A/S di tengah layar, memantul tiap pukulan dan beranimasi saat naik peringkat
- tests/t1-feel.mjs: skenario headless (53 pemeriksaan) dengan screenshot
Fighter bawaan (kecuali ARCO dan FENR yang masih menjadi tulang punggung mesin dan CPU) dihapus beserta aset,
kit, suara announcer, dan seni menu. Menu default memakai karakter pertama yang tersedia. Gambar slot terkunci
diganti tanda tanya. Daftar aset dihitung ulang.
Setelah ultimate A Nice berubah menjadi sosok kekar dengan skill pengganti (Tackle Senator, Gelombang Nano,
Ledakan Nanomesin). Wajah A Nice dibuat dengan foto sebagai acuan.
Wajah dibuat dengan foto sebagai acuan kemiripan (gaya pixel art proporsi natural). Gelombang cairan,
ledakan area, stampede ombak, dan mode (Percikan Api, Botol Meledak, Ledakan Bioetanol dengan pilar api).
Karakter data-driven dengan lemparan labu asam dan genangan beracun, gelombang suara, hujan asam bertanda,
dan mode (Semprot Asam, Genangan Luas, Badai Asam). HUD kini memperkecil nama panjang dan menampilkan
nama lawan dengan benar.
Karakter data-driven (window.FIGHTERS): dash banteng, gelombang suara menembus, ultimate stampede celeng
dengan kamera sinematik. Lengkap dengan potret, ikon, cut-in, efek, dan gambar pilih karakter.
Karakter karikatur pixel art dengan tiga jurus (Pohon Sawit, Joget Gemoy, Hutan Sawit),
potret, ikon, cut-in, efek, dan gambar pilih karakter. Didaftarkan di game.js, menu.js,
index.html, dan style.css.