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:
parent
f7aab48a56
commit
6dad38bd20
45
src/game.cpp
45
src/game.cpp
|
@ -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] = MAX(player.ammo[0], 50);
|
||||||
|
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))
|
(player.ammo[0] > 0))
|
||||||
{
|
{
|
||||||
if ((game.area != MISN_INTERCEPTION) ||
|
if (game.area != MISN_INTERCEPTION)
|
||||||
(game.difficulty == DIFFICULTY_ORIGINAL))
|
|
||||||
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] = MAX(player.ammo[0], 50);
|
||||||
|
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))
|
(player.ammo[0] > 0))
|
||||||
{
|
{
|
||||||
if ((game.area != MISN_INTERCEPTION) ||
|
if (game.area != MISN_INTERCEPTION)
|
||||||
(game.difficulty == DIFFICULTY_ORIGINAL))
|
|
||||||
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] = MAX(player.ammo[0], 50);
|
||||||
|
weapon[W_PLAYER_WEAPON].damage = MIN(
|
||||||
|
game.maxPlasmaDamage, weapon[W_PLAYER_WEAPON].damage + 1);
|
||||||
|
}
|
||||||
|
else if ((game.area != MISN_INTERCEPTION) ||
|
||||||
(player.ammo[0] > 0))
|
(player.ammo[0] > 0))
|
||||||
{
|
{
|
||||||
if ((game.area != MISN_INTERCEPTION) ||
|
if (game.area != MISN_INTERCEPTION)
|
||||||
(game.difficulty == DIFFICULTY_ORIGINAL))
|
|
||||||
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);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue