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();