Tambah karakter Son of Solo Man: sprite 15 state, Asam Sulfat, Teriakan, ultimate Hujan Asam, dan Mode Asam
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.
|
After Width: | Height: | Size: 88 KiB |
|
After Width: | Height: | Size: 776 KiB |
|
After Width: | Height: | Size: 383 KiB |
|
After Width: | Height: | Size: 364 KiB |
|
After Width: | Height: | Size: 67 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 128 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 69 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 42 KiB |
8
game.js
|
|
@ -2120,17 +2120,19 @@
|
|||
if(id==='mira')return {name:'MIRA',cls:'MECHA',deck:'MIRA',title:'CANDY PILOT',portrait:'assets/mira/ui/portrait.webp',names:M.names,icons:['basic','skill1','skill2','ultimate'].map(s=>'assets/mira/ui/icon-'+s+'.webp')};
|
||||
return {name:'ARCO',cls:'MECHA',deck:'ARCO',title:'AETHER ARM',portrait:'assets/ui/arco-avatar.webp',names:['IRON CHAIN','AETHER BOLT','SEISMIC DRIVE','HELIOS SQUADRON'],icons:['attack','skill1','skill2','squadron-icon'].map(s=>'assets/ui/'+s+'.webp')};
|
||||
}
|
||||
// Long fighter names (SON OF SOLO MAN) shrink so they stay on one line above the health bar.
|
||||
function hudFit(el, name) { el.style.fontSize = ''; if (name.length > 10) { const fs = parseFloat(getComputedStyle(el).fontSize); if (fs) el.style.fontSize = (fs * Math.min(1, 10 / name.length) * 1.05) + 'px'; } }
|
||||
function updateFighterIdentity() {
|
||||
if(!F)return;
|
||||
const identity=selectedCharacter+(bwx.rage.player>0&&modeOf(selectedCharacter)?'*mode':'')+':'+hero.form+':'+opponentCharacter+':'+dummy.form;
|
||||
if(identity!==hudIdentity) {
|
||||
hudIdentity=identity;const me=fighterInfo(selectedCharacter,hero.form),rival=fighterInfo(opponentCharacter,dummy.form);
|
||||
if(bwx.rage.player>0&&modeOf(selectedCharacter)){const M=modeOf(selectedCharacter);me.names=M.names;me.icons=M.icons.map(n=>'assets/'+selectedCharacter+'/ui/icon-'+n+'.webp');}
|
||||
$('#player-name').textContent=me.name;$('#player-class').textContent=me.cls;$('#deck-character').textContent=me.deck;
|
||||
$('#player-name').textContent=me.name;hudFit($('#player-name'),me.name);$('#player-class').textContent=me.cls;$('#deck-character').textContent=me.deck;
|
||||
$('#player-title').textContent=me.title;
|
||||
$('#player-portrait').src=me.portrait;$('#player-portrait').alt='Portrait '+me.name;
|
||||
$('#enemy-portrait').src=rival.portrait;$('#enemy-portrait').alt='Portrait '+opponentCharacter.toUpperCase();$('#enemy-class').textContent=rival.cls;
|
||||
$('#enemy-name').textContent=opponentCharacter.toUpperCase();$('#enemy-title').textContent=rival.title;
|
||||
$('#enemy-portrait').src=rival.portrait;$('#enemy-portrait').alt='Portrait '+rival.name;$('#enemy-class').textContent=rival.cls;
|
||||
$('#enemy-name').textContent=rival.name;hudFit($('#enemy-name'),rival.name);$('#enemy-title').textContent=rival.title;
|
||||
$('.fighter-two').setAttribute('aria-label','Status lawan '+opponentCharacter.toUpperCase());
|
||||
document.querySelectorAll('.skill-card').forEach((card,i)=>{card.querySelector('.skill-name').textContent=me.names[i];card.querySelector('img').src=me.icons[i];card.setAttribute('aria-label',me.names[i]+', '+['Spasi','I','O','P'][i]);});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@
|
|||
</div></section><div class="stage-sign"><span id="stage-name">BELLORA</span><small id="stage-subtitle">COURTYARD</small><i></i></div><section class="training-data" aria-label="Hasil latihan"><div><span>TOTAL DAMAGE</span><strong id="total-damage">0 <small>DMG</small></strong></div><div><span>BEST CHAIN</span><strong id="best-combo">0 <small>HITS</small></strong></div><small class="reset-hint">R · RESET<span>ESC · PAUSE</span></small></section></footer>
|
||||
<section id="touch-controls" aria-hidden="true"><div class="dpad"><button class="dbtn dbtn-up" data-key="w" tabindex="-1" aria-label="Atas / lompat"><i></i></button><button class="dbtn dbtn-left" data-key="a" tabindex="-1" aria-label="Kiri"><i></i></button><button class="dbtn dbtn-down" data-key="s" tabindex="-1" aria-label="Bawah / jongkok"><i></i></button><button class="dbtn dbtn-right" data-key="d" tabindex="-1" aria-label="Kanan"><i></i></button></div><div class="action-pad"><button class="tbtn tbtn-attack" data-key=" " data-slot="attack" tabindex="-1"><img src="assets/ui/attack.webp" alt=""></button><button class="tbtn tbtn-skill tbtn-s1" data-key="i" data-slot="skill1" tabindex="-1"><img src="assets/ui/skill1.webp" alt=""><span class="cooldown-wipe"></span><em class="cooldown-num"></em></button><button class="tbtn tbtn-skill tbtn-s2" data-key="o" data-slot="skill2" tabindex="-1"><img src="assets/ui/skill2.webp" alt=""><span class="cooldown-wipe"></span><em class="cooldown-num"></em></button><button class="tbtn tbtn-skill tbtn-ult" data-key="p" data-slot="ultimate" tabindex="-1"><img src="assets/ui/squadron-icon.webp" alt=""><span class="cooldown-wipe"></span><em class="cooldown-num"></em></button></div></section>
|
||||
<div id="load-state" class="load-state"><span class="loading-glyph">✦</span><strong>AETHER CLASH</strong><span id="load-message">Menyiapkan arena…</span></div>
|
||||
<dialog id="settings-panel"><div class="dialog-kicker">AETHER CLASH / SETTINGS</div><h2>Pengaturan arena</h2><p>Atur audio, tampilan, dan kontrol permainan.</p><label class="setting-row training-only"><span>Karakter pemain<small>Mengganti karakter memulai ulang latihan</small></span><select id="character-select"><option value="arco">ARCO · Mecha</option><option value="fenr">FENR · Demi-Human</option><option value="mira">MIRA · Mecha</option><option value="cora">CORA · Demi-Human</option><option value="naja">NAJA · Demi-Human</option><option value="haldor">HALDOR · Mecha</option><option value="zanni">ZANNI · Mecha</option><option value="isolde">ISOLDE · Mecha</option><option value="rhea">RHEA · Mecha</option><option value="solan">SOLAN · Demi-Human</option><option value="browo">BRO WO · Human</option><option value="megachan">MEGA CHAN · Human</option><option value="nib">NIB · Demi-Human</option><option value="edda">EDDA · Demi-Human</option></select></label><label class="setting-row training-only"><span>Lawan aktif<small>Aktifkan serangan CPU saat latihan</small></span><input type="checkbox" id="ai-toggle" checked></label><label class="setting-row"><span>Visualisasi hitbox<small>Area tubuh dan jangkauan serangan</small></span><input type="checkbox" id="hitbox-toggle"></label><label class="setting-row"><span>Audio aktif<small>Suara karakter, benturan, dan skill</small></span><input type="checkbox" id="sound-toggle" checked></label><label class="setting-row"><span>Musik latar<small>Midday Showdown, diputar berulang di menu dan arena</small></span><input type="checkbox" id="music-toggle" checked></label><label class="volume-row"><span>Musik</span><input type="range" id="music-slider" min="0" max="100" value="5" aria-label="Volume musik"><output id="music-value">5%</output></label><label class="setting-row"><span>Animasi latar menu<small>Video loop pada main menu</small></span><input type="checkbox" id="menu-video-toggle" checked></label><label class="volume-row"><span>Suara</span><input type="range" id="volume-slider" min="0" max="100" value="45" aria-label="Volume audio"><output id="volume-value">45%</output></label><div class="dialog-buttons"><button id="sound-test">Tes audio</button><button id="fullscreen-btn">Layar penuh</button></div><details class="controls-help"><summary>Kontrol keyboard</summary><p>A / D · Gerak 2× A / D · Lari<br>W · Lompat S · Menunduk / turun cepat<br>2× S · Salto SPACE · Kombo 3 pukulan<br>I / O · Skill P · Ultimate</p></details><button class="primary-button" id="close-settings">Kembali ke arena <span>↗</span></button></dialog>
|
||||
<dialog id="settings-panel"><div class="dialog-kicker">AETHER CLASH / SETTINGS</div><h2>Pengaturan arena</h2><p>Atur audio, tampilan, dan kontrol permainan.</p><label class="setting-row training-only"><span>Karakter pemain<small>Mengganti karakter memulai ulang latihan</small></span><select id="character-select"><option value="arco">ARCO · Mecha</option><option value="fenr">FENR · Demi-Human</option><option value="mira">MIRA · Mecha</option><option value="cora">CORA · Demi-Human</option><option value="naja">NAJA · Demi-Human</option><option value="haldor">HALDOR · Mecha</option><option value="zanni">ZANNI · Mecha</option><option value="isolde">ISOLDE · Mecha</option><option value="rhea">RHEA · Mecha</option><option value="solan">SOLAN · Demi-Human</option><option value="browo">BRO WO · Human</option><option value="sonofsolo">SON OF SOLO MAN · Human</option><option value="megachan">MEGA CHAN · Human</option><option value="nib">NIB · Demi-Human</option><option value="edda">EDDA · Demi-Human</option></select></label><label class="setting-row training-only"><span>Lawan aktif<small>Aktifkan serangan CPU saat latihan</small></span><input type="checkbox" id="ai-toggle" checked></label><label class="setting-row"><span>Visualisasi hitbox<small>Area tubuh dan jangkauan serangan</small></span><input type="checkbox" id="hitbox-toggle"></label><label class="setting-row"><span>Audio aktif<small>Suara karakter, benturan, dan skill</small></span><input type="checkbox" id="sound-toggle" checked></label><label class="setting-row"><span>Musik latar<small>Midday Showdown, diputar berulang di menu dan arena</small></span><input type="checkbox" id="music-toggle" checked></label><label class="volume-row"><span>Musik</span><input type="range" id="music-slider" min="0" max="100" value="5" aria-label="Volume musik"><output id="music-value">5%</output></label><label class="setting-row"><span>Animasi latar menu<small>Video loop pada main menu</small></span><input type="checkbox" id="menu-video-toggle" checked></label><label class="volume-row"><span>Suara</span><input type="range" id="volume-slider" min="0" max="100" value="45" aria-label="Volume audio"><output id="volume-value">45%</output></label><div class="dialog-buttons"><button id="sound-test">Tes audio</button><button id="fullscreen-btn">Layar penuh</button></div><details class="controls-help"><summary>Kontrol keyboard</summary><p>A / D · Gerak 2× A / D · Lari<br>W · Lompat S · Menunduk / turun cepat<br>2× S · Salto SPACE · Kombo 3 pukulan<br>I / O · Skill P · Ultimate</p></details><button class="primary-button" id="close-settings">Kembali ke arena <span>↗</span></button></dialog>
|
||||
<dialog id="pause-panel"><div class="dialog-kicker">AETHER CLASH / PAUSE</div><h2>PAUSED</h2><p>Pertarungan dijeda. Siap melanjutkan?</p><button class="primary-button" id="resume-btn">Lanjut bertarung <span>↗</span></button><button class="text-button" id="restart-btn">Mulai ulang</button><button class="text-button" id="back-menu">Kembali ke main menu</button></dialog>
|
||||
</main><section id="front-menu" aria-label="Main menu Aether Clash"></section><script src="assets/mecha/manifest.js"></script><script src="assets/stage-config.js"></script><script src="assets/ui/drone-config.js"></script><script src="assets/fenr/human/manifest.js"></script><script src="assets/fenr/wolf/manifest.js"></script><script src="fenr.js"></script><script src="assets/mira/manifest.js"></script><script src="mira.js"></script><script src="assets/cora/manifest.js"></script><script src="cora.js"></script><script src="assets/naja/manifest.js"></script><script src="naja.js"></script><script src="assets/haldor/manifest.js"></script><script src="haldor.js"></script><script src="assets/zanni/manifest.js"></script><script src="zanni.js"></script><script src="assets/isolde/manifest.js"></script><script src="isolde.js"></script><script src="assets/rhea/manifest.js"></script><script src="rhea.js"></script><script src="assets/solan/manifest.js"></script><script src="solan.js"></script><script src="assets/browo/manifest.js"></script><script src="browo.js"></script><script src="assets/nib/manifest.js"></script><script src="nib.js"></script><script src="assets/edda/manifest.js"></script><script src="edda.js"></script><script src="assets/megachan/manifest.js"></script><script src="assets/audio/announcer/manifest.js"></script><script src="announcer.js"></script><script src="match.js"></script><script>window.FRONTEND_ENABLED=true;</script><script src="game.js"></script><script src="touch.js"></script><script src="assets/showcase/showcase.js"></script><script src="menu.js"></script></body></html>
|
||||
</main><section id="front-menu" aria-label="Main menu Aether Clash"></section><script src="assets/mecha/manifest.js"></script><script src="assets/stage-config.js"></script><script src="assets/ui/drone-config.js"></script><script src="assets/fenr/human/manifest.js"></script><script src="assets/fenr/wolf/manifest.js"></script><script src="fenr.js"></script><script src="assets/mira/manifest.js"></script><script src="mira.js"></script><script src="assets/cora/manifest.js"></script><script src="cora.js"></script><script src="assets/naja/manifest.js"></script><script src="naja.js"></script><script src="assets/haldor/manifest.js"></script><script src="haldor.js"></script><script src="assets/zanni/manifest.js"></script><script src="zanni.js"></script><script src="assets/isolde/manifest.js"></script><script src="isolde.js"></script><script src="assets/rhea/manifest.js"></script><script src="rhea.js"></script><script src="assets/solan/manifest.js"></script><script src="solan.js"></script><script src="assets/browo/manifest.js"></script><script src="browo.js"></script><script src="assets/nib/manifest.js"></script><script src="nib.js"></script><script src="assets/edda/manifest.js"></script><script src="edda.js"></script><script src="assets/megachan/manifest.js"></script><script src="assets/sonofsolo/manifest.js"></script><script src="assets/audio/announcer/manifest.js"></script><script src="announcer.js"></script><script src="match.js"></script><script>window.FRONTEND_ENABLED=true;</script><script src="game.js"></script><script src="touch.js"></script><script src="assets/showcase/showcase.js"></script><script src="menu.js"></script></body></html>
|
||||
|
||||
|
||||
|
|
|
|||