Made powerups in Classic difficulty behave the same as the original.

There are two aspects to this:

1. They now simply make sure your plasma ammo is at a minimum of
   50, rather than adding to your plasma ammo as in the other
   difficulties.

2. Added a simulation of a bug in Starfighter 1.1 which caused
   each aspect of the Supercharge to be lost when you picked up
   a different associated powerup. Even though this was a bug,
   without it, the Supercharge becomes extraordinarily more
   game-breaking, since it's the only thing that sort of limits
   its longevity.
This commit is contained in:
onpon4 2016-01-07 06:44:03 -05:00
parent f7aab48a56
commit 6dad38bd20
1 changed files with 33 additions and 18 deletions

View File

@ -291,12 +291,17 @@ static void game_doCollectables()
case P_PLASMA_RATE: case P_PLASMA_RATE:
game.powerups++; game.powerups++;
if ((game.area != MISN_INTERCEPTION) || if (game.difficulty == DIFFICULTY_ORIGINAL)
(game.difficulty == DIFFICULTY_ORIGINAL) ||
(player.ammo[0] > 0))
{ {
if ((game.area != MISN_INTERCEPTION) || player.ammo[0] = MAX(player.ammo[0], 50);
(game.difficulty == DIFFICULTY_ORIGINAL)) weapon[W_PLAYER_WEAPON].reload[0] = MAX(
rate2reload[game.maxPlasmaRate],
weapon[W_PLAYER_WEAPON].reload[0] - 2);
}
else if ((game.area != MISN_INTERCEPTION) ||
(player.ammo[0] > 0))
{
if (game.area != MISN_INTERCEPTION)
LIMIT_ADD(player.ammo[0], collectable->value, LIMIT_ADD(player.ammo[0], collectable->value,
0, game.maxPlasmaAmmo); 0, game.maxPlasmaAmmo);
@ -316,12 +321,16 @@ static void game_doCollectables()
case P_PLASMA_SHOT: case P_PLASMA_SHOT:
game.powerups++; game.powerups++;
if ((game.area != MISN_INTERCEPTION) || if (game.difficulty == DIFFICULTY_ORIGINAL)
(game.difficulty == DIFFICULTY_ORIGINAL) ||
(player.ammo[0] > 0))
{ {
if ((game.area != MISN_INTERCEPTION) || player.ammo[0] = MAX(player.ammo[0], 50);
(game.difficulty == DIFFICULTY_ORIGINAL)) weapon[W_PLAYER_WEAPON].ammo[0] = MIN(
game.maxPlasmaOutput, weapon[W_PLAYER_WEAPON].ammo[0] + 1);
}
else if ((game.area != MISN_INTERCEPTION) ||
(player.ammo[0] > 0))
{
if (game.area != MISN_INTERCEPTION)
LIMIT_ADD(player.ammo[0], collectable->value, LIMIT_ADD(player.ammo[0], collectable->value,
0, game.maxPlasmaAmmo); 0, game.maxPlasmaAmmo);
@ -341,18 +350,23 @@ static void game_doCollectables()
case P_PLASMA_DAMAGE: case P_PLASMA_DAMAGE:
game.powerups++; game.powerups++;
if ((game.area != MISN_INTERCEPTION) || if (game.difficulty == DIFFICULTY_ORIGINAL)
(game.difficulty == DIFFICULTY_ORIGINAL) ||
(player.ammo[0] > 0))
{ {
if ((game.area != MISN_INTERCEPTION) || player.ammo[0] = MAX(player.ammo[0], 50);
(game.difficulty == DIFFICULTY_ORIGINAL)) weapon[W_PLAYER_WEAPON].damage = MIN(
game.maxPlasmaDamage, weapon[W_PLAYER_WEAPON].damage + 1);
}
else if ((game.area != MISN_INTERCEPTION) ||
(player.ammo[0] > 0))
{
if (game.area != MISN_INTERCEPTION)
LIMIT_ADD(player.ammo[0], collectable->value, LIMIT_ADD(player.ammo[0], collectable->value,
0, game.maxPlasmaAmmo); 0, game.maxPlasmaAmmo);
if (weapon[W_PLAYER_WEAPON].damage >= game.maxPlasmaDamage) if (weapon[W_PLAYER_WEAPON].damage >= game.maxPlasmaDamage)
sprintf(temp, "Plasma damage already at maximum"); sprintf(temp, "Plasma damage already at maximum");
else { else
{
weapon[W_PLAYER_WEAPON].damage++; weapon[W_PLAYER_WEAPON].damage++;
sprintf(temp, "Plasma damage increased"); sprintf(temp, "Plasma damage increased");
} }
@ -369,8 +383,9 @@ static void game_doCollectables()
(game.difficulty == DIFFICULTY_ORIGINAL) || (game.difficulty == DIFFICULTY_ORIGINAL) ||
(player.ammo[0] > 0)) (player.ammo[0] > 0))
{ {
if ((game.area != MISN_INTERCEPTION) || if (game.difficulty == DIFFICULTY_ORIGINAL)
(game.difficulty == DIFFICULTY_ORIGINAL)) player.ammo[0] = MAX(player.ammo[0], 50);
else if (game.area != MISN_INTERCEPTION)
LIMIT_ADD(player.ammo[0], collectable->value, LIMIT_ADD(player.ammo[0], collectable->value,
0, game.maxPlasmaAmmo); 0, game.maxPlasmaAmmo);