diff --git a/src/bullet.cpp b/src/bullet.cpp index ca68793..0a60851 100644 --- a/src/bullet.cpp +++ b/src/bullet.cpp @@ -425,7 +425,7 @@ void doBullets() } } - if ((currentGame.difficulty > DIFFICULTY_EASY) && + if ((currentGame.difficulty != DIFFICULTY_EASY) && ((bullet->owner == &player) || (bullet->id == WT_ROCKET))) { for (int j = 0 ; j < 20 ; j++) diff --git a/src/collectable.cpp b/src/collectable.cpp index eaeab3c..f2edf99 100644 --- a/src/collectable.cpp +++ b/src/collectable.cpp @@ -50,8 +50,9 @@ void addCollectable(float x, float y, int type, int value, int life) { type = P_PLASMA_RATE; - if ((currentGame.difficulty >= DIFFICULTY_NIGHTMARE) || - ((currentGame.difficulty > DIFFICULTY_EASY) && + if ((currentGame.difficulty == DIFFICULTY_NIGHTMARE) || + ((currentGame.difficulty != DIFFICULTY_EASY) && + (currentGame.difficulty != DIFFICULTY_ORIGINAL) && ((currentGame.area == 5) || (currentGame.area == 11) || (currentGame.area == 18) || (currentGame.area == 25)))) { diff --git a/src/defs.h b/src/defs.h index e2416a7..318a71e 100644 --- a/src/defs.h +++ b/src/defs.h @@ -374,10 +374,12 @@ enum { // Difficulties enum { - DIFFICULTY_EASY, + DIFFICULTY_EASY = 0, DIFFICULTY_NORMAL, DIFFICULTY_HARD, - DIFFICULTY_NIGHTMARE + DIFFICULTY_NIGHTMARE, + DIFFICULTY_ORIGINAL, + DIFFICULTY_MAX }; extern const char *systemNames[]; diff --git a/src/game.cpp b/src/game.cpp index 337650b..ea91bd4 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -106,6 +106,16 @@ void newGame() player.maxShield = 1; currentGame.maxRocketAmmo = 5; break; + case DIFFICULTY_ORIGINAL: + player.maxShield = 25; + + currentGame.minPlasmaRateLimit = 3; + currentGame.minPlasmaDamageLimit = 3; + currentGame.minPlasmaOutputLimit = 3; + currentGame.maxPlasmaRateLimit = 5; + currentGame.maxPlasmaDamageLimit = 5; + currentGame.maxPlasmaOutputLimit = 5; + break; } player.shield = player.maxShield; diff --git a/src/intermission.cpp b/src/intermission.cpp index 0e69c8a..4c8ce96 100644 --- a/src/intermission.cpp +++ b/src/intermission.cpp @@ -527,7 +527,8 @@ int galaxyMap() signed char saveSlot = -1; // Remove the Supercharge, if it is there - if (currentGame.difficulty > DIFFICULTY_EASY) + if ((currentGame.difficulty != DIFFICULTY_EASY) && + (currentGame.difficulty != DIFFICULTY_ORIGINAL)) { weapon[W_PLAYER_WEAPON].reload[0] = MAX( weapon[W_PLAYER_WEAPON].reload[0], diff --git a/src/missions.cpp b/src/missions.cpp index a881389..b494136 100644 --- a/src/missions.cpp +++ b/src/missions.cpp @@ -158,6 +158,9 @@ void updateSystemStatus() currentGame.area = 6; strcpy(currentGame.stationedName, "Nerod"); initPlanetMissions(currentGame.system); + + if (currentGame.difficulty == DIFFICULTY_ORIGINAL) + player.maxShield = 50; } else if (currentGame.area == 11) { @@ -166,6 +169,9 @@ void updateSystemStatus() currentGame.area = 12; strcpy(currentGame.stationedName, "Odeon"); initPlanetMissions(currentGame.system); + + if (currentGame.difficulty == DIFFICULTY_ORIGINAL) + player.maxShield = 75; } else if (currentGame.area == 18) { @@ -174,6 +180,9 @@ void updateSystemStatus() currentGame.area = 19; strcpy(currentGame.stationedName, "Pluto"); initPlanetMissions(currentGame.system); + + if (currentGame.difficulty == DIFFICULTY_ORIGINAL) + player.maxShield = 100; } else // Update the mission for the planet { diff --git a/src/player.cpp b/src/player.cpp index 3c9a372..fae8195 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -244,7 +244,7 @@ void doPlayer() player.x = screen->w - xViewBorder; } } - else + else if (currentGame.difficulty != DIFFICULTY_ORIGINAL) { cd = player.x - screen->w / 2; if (cd < 0) @@ -273,7 +273,7 @@ void doPlayer() player.y = screen->h - yViewBorder; } } - else + else if (currentGame.difficulty != DIFFICULTY_ORIGINAL) { cd = player.y - screen->h / 2; if (cd < 0) diff --git a/src/title.cpp b/src/title.cpp index de2c566..5af6c19 100644 --- a/src/title.cpp +++ b/src/title.cpp @@ -73,6 +73,8 @@ static void createDifficultyMenu() textSurface(TS_DIFFICULTY, "DIFFICULTY - HARD", -1, 370, FONT_WHITE); else if (currentGame.difficulty == DIFFICULTY_NIGHTMARE) textSurface(TS_DIFFICULTY, "DIFFICULTY - NIGHTMARE!", -1, 370, FONT_WHITE); + else if (currentGame.difficulty == DIFFICULTY_ORIGINAL) + textSurface(TS_DIFFICULTY, "DIFFICULTY - ORIGINAL", -1, 370, FONT_WHITE); else textSurface(TS_DIFFICULTY, "DIFFICULTY - NORMAL", -1, 370, FONT_WHITE); } @@ -430,8 +432,7 @@ int doTitle() else if (selectedOption == 2) { currentGame.difficulty++; - if (currentGame.difficulty > DIFFICULTY_NIGHTMARE) - currentGame.difficulty = DIFFICULTY_EASY; + currentGame.difficulty %= DIFFICULTY_MAX; } else if (selectedOption == listLength) {