diff --git a/src/collectable.cpp b/src/collectable.cpp index f2edf99..541e9ee 100644 --- a/src/collectable.cpp +++ b/src/collectable.cpp @@ -109,13 +109,24 @@ void addCollectable(float x, float y, int type, int value, int life) } } - /* - No cash or ammo on interceptions. Stops point leeching(!) - */ - if ((currentGame.area == MAX_MISSIONS - 1) && - ((type == P_CASH) || (type == P_PLASMA_AMMO) || (type == P_ROCKET))) + if (currentGame.difficulty == DIFFICULTY_ORIGINAL) { - return; + // Cash is just rare in the original game. You can still grind, + // just not as much. + if ((currentGame.area == MAX_MISSIONS - 1) && (type == P_CASH)) + { + if (rand() % 10 > 0) + return; + } + } + else + { + // No cash or ammo on interceptions. Completely stops grinding. + if ((currentGame.area == MAX_MISSIONS - 1) && + ((type == P_CASH) || (type == P_PLASMA_AMMO) || (type == P_ROCKET))) + { + return; + } } collectables *collectable = new collectables; @@ -324,9 +335,11 @@ void doCollectables() case P_PLASMA_RATE: currentGame.powerups++; if ((currentGame.area != MAX_MISSIONS - 1) || + (currentGame.difficulty == DIFFICULTY_ORIGINAL) || (player.ammo[0] > 0)) { - if (currentGame.area != MAX_MISSIONS - 1) + if ((currentGame.area != MAX_MISSIONS - 1) || + (currentGame.difficulty == DIFFICULTY_ORIGINAL)) LIMIT_ADD(player.ammo[0], collectable->value, 0, currentGame.maxPlasmaAmmo); @@ -347,9 +360,11 @@ void doCollectables() case P_PLASMA_SHOT: currentGame.powerups++; if ((currentGame.area != MAX_MISSIONS - 1) || + (currentGame.difficulty == DIFFICULTY_ORIGINAL) || (player.ammo[0] > 0)) { - if (currentGame.area != MAX_MISSIONS - 1) + if ((currentGame.area != MAX_MISSIONS - 1) || + (currentGame.difficulty == DIFFICULTY_ORIGINAL)) LIMIT_ADD(player.ammo[0], collectable->value, 0, currentGame.maxPlasmaAmmo); @@ -370,9 +385,11 @@ void doCollectables() case P_PLASMA_DAMAGE: currentGame.powerups++; if ((currentGame.area != MAX_MISSIONS - 1) || + (currentGame.difficulty == DIFFICULTY_ORIGINAL) || (player.ammo[0] > 0)) { - if (currentGame.area != MAX_MISSIONS - 1) + if ((currentGame.area != MAX_MISSIONS - 1) || + (currentGame.difficulty == DIFFICULTY_ORIGINAL)) LIMIT_ADD(player.ammo[0], collectable->value, 0, currentGame.maxPlasmaAmmo); @@ -392,9 +409,11 @@ void doCollectables() case P_SUPER: currentGame.powerups++; if ((currentGame.area != MAX_MISSIONS - 1) || + (currentGame.difficulty == DIFFICULTY_ORIGINAL) || (player.ammo[0] > 0)) { - if (currentGame.area != MAX_MISSIONS - 1) + if ((currentGame.area != MAX_MISSIONS - 1) || + (currentGame.difficulty == DIFFICULTY_ORIGINAL)) LIMIT_ADD(player.ammo[0], collectable->value, 0, currentGame.maxPlasmaAmmo); diff --git a/src/player.cpp b/src/player.cpp index e6c716f..8ff47a5 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -57,10 +57,7 @@ void initPlayer() engine.lowShield = (player.maxShield >= 3) ? (player.maxShield / 3) : 1; engine.averageShield = engine.lowShield + engine.lowShield; - if (player.weaponType[1] == W_CHARGER) - player.ammo[1] = 0; - - if (player.weaponType[1] == W_LASER) + if ((player.weaponType[1] == W_CHARGER) || (player.weaponType[1] == W_LASER)) player.ammo[1] = 0; } @@ -75,10 +72,7 @@ void exitPlayer() { charger_fired = false; - if (player.weaponType[1] == W_CHARGER) - player.ammo[1] = 0; - - if (player.weaponType[1] == W_LASER) + if ((player.weaponType[1] == W_CHARGER) || (player.weaponType[1] == W_LASER)) player.ammo[1] = 0; } @@ -129,16 +123,25 @@ void doPlayer() if (player.weaponType[1] == W_CHARGER) { - if (engine.keyState[KEY_ALTFIRE] && !(engine.keyState[KEY_FIRE])) + if (engine.keyState[KEY_ALTFIRE] && + ((currentGame.difficulty == DIFFICULTY_ORIGINAL) || + !(engine.keyState[KEY_FIRE]))) { if (!charger_fired) { - LIMIT_ADD(player.ammo[1], 1, 0, 150); - if (player.ammo[1] >= 150) + if (currentGame.difficulty == DIFFICULTY_ORIGINAL) { - ship_fireBullet(&player, 1); - player.ammo[1] = 0; - charger_fired = true; + LIMIT_ADD(player.ammo[1], 1, 0, 200); + } + else + { + LIMIT_ADD(player.ammo[1], 1, 0, 150); + if (player.ammo[1] >= 150) + { + ship_fireBullet(&player, 1); + player.ammo[1] = 0; + charger_fired = true; + } } } }