handling situations with no ammo left

This commit is contained in:
catarrh committed 2026-07-28 00:37:55 +03:00
1 parent 737acb1c99
commit 5e5c8920b1
1 file changed
+8 -2
+8 -2
View File
@@ -806,7 +806,7 @@ function update() {
for (let player of players) { for (let player of players) {
player.weapons = player.weapons.filter(x => x.ammo > 0); player.weapons = player.weapons.filter(x => x.ammo > 0);
player.tools = player.tools.filter(x => x.ammo > 0); player.tools = player.tools.filter(x => x.ammo > 0);
player.currentWeapon = wrap(0, player.currentWeapon, player.weapons.length-1); player.currentWeapon = player.weapons.length > 0 ? wrap(0, player.currentWeapon, player.weapons.length-1) : 0;
if (player.shield && player.shield.energy <= 0) { if (player.shield && player.shield.energy <= 0) {
player.shield.ammo--; player.shield.ammo--;
if (player.shield.ammo > 0) { if (player.shield.ammo > 0) {
@@ -818,9 +818,14 @@ function update() {
player.fallHeight = 0; player.fallHeight = 0;
} }
const canShoot = players.some(x => !x.dead && x.weapons.length > 0);
if (!canShoot) {
return state = 'round-end';
}
for (let p=0; p<players.length; p++) { for (let p=0; p<players.length; p++) {
const i = wrap(0, currentPlayer+p+1, players.length-1); const i = wrap(0, currentPlayer+p+1, players.length-1);
if (!players[i].dead) {currentPlayer = i; break} if (!players[i].dead && players[i].weapons.length > 0) {currentPlayer = i; break}
} }
fadeTrajectories(); fadeTrajectories();
@@ -1713,6 +1718,7 @@ function drawStatus() {
const player = players[currentPlayer]; const player = players[currentPlayer];
const {currentWeapon} = player; const {currentWeapon} = player;
const weapon = player.weapons[currentWeapon]; const weapon = player.weapons[currentWeapon];
if (!weapon) return;
const weaponType = WEAPON_TYPES[weapon.type]; const weaponType = WEAPON_TYPES[weapon.type];
drawText(foreground, `${player.name} NRG:${Math.round(player.energy)} AIM:${player.a} PWR:${player.p} SHD:${player.shield?Math.round(player.shield.energy):0} ${clamp(0, weapon.ammo, 99)} ${weaponType.name}`, 8, 8, player.c, 'left'); drawText(foreground, `${player.name} NRG:${Math.round(player.energy)} AIM:${player.a} PWR:${player.p} SHD:${player.shield?Math.round(player.shield.energy):0} ${clamp(0, weapon.ammo, 99)} ${weaponType.name}`, 8, 8, player.c, 'left');
drawText(foreground, `WIND: ${wind<=0?'<':''}${Math.abs(wind)}${wind>=0?'>':''}`, W-8, 8, 'white', 'right'); drawText(foreground, `WIND: ${wind<=0?'<':''}${Math.abs(wind)}${wind>=0?'>':''}`, W-8, 8, 'white', 'right');