diff --git a/src/game.cpp b/src/game.cpp index 28d3480..306a5c2 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -1209,7 +1209,10 @@ static void game_doPlayer() // With ammo cheat, cause the charge cannon to // fire at full blast immediately. if (engine.cheatAmmo) + { + player_chargerAlloc = 200; player.ammo[1] = 200; + } if (game.difficulty == DIFFICULTY_ORIGINAL) { @@ -1217,12 +1220,23 @@ static void game_doPlayer() } else { - LIMIT_ADD(player.ammo[1], 1, 0, 150); - if (player.ammo[1] >= 150) + player.ammo[1] += 1; + if (player.ammo[1] > player_chargerAlloc) { - ship_fireBullet(&player, 1); - player.ammo[1] = 0; - player_chargerFired = true; + if ((player_chargerAlloc < 150) && + (player.ammo[0] > 0)) + { + player.ammo[0] -= 1; + player_chargerAlloc += 30; + } + else + { + player.ammo[1] = player_chargerAlloc; + ship_fireBullet(&player, 1); + player_chargerAlloc = 0; + player.ammo[1] = 0; + player_chargerFired = true; + } } } } @@ -1231,6 +1245,7 @@ static void game_doPlayer() { if (player.ammo[1] > 0) ship_fireBullet(&player, 1); + player_chargerAlloc = 0; player.ammo[1] = 0; player_chargerFired = false; } diff --git a/src/player.cpp b/src/player.cpp index 9a24e96..26a30c4 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -20,6 +20,7 @@ along with this program. If not, see . #include "Starfighter.h" object player; +int player_chargerAlloc = 0; bool player_chargerFired = false; /* @@ -95,6 +96,7 @@ void player_checkShockDamage(float x, float y) void exitPlayer() { + player_chargerAlloc = 0; player_chargerFired = false; if ((player.weaponType[1] == W_CHARGER) || (player.weaponType[1] == W_LASER)) diff --git a/src/player.h b/src/player.h index 9e3e388..0dae91f 100644 --- a/src/player.h +++ b/src/player.h @@ -21,6 +21,7 @@ along with this program. If not, see . #define PLAYER_H extern object player; +extern int player_chargerAlloc; extern bool player_chargerFired; extern void initPlayer();