From 22fcdae8ccd86bf2db6200429fe3c7db6b51a4a3 Mon Sep 17 00:00:00 2001 From: onpon4 Date: Sat, 7 Mar 2015 12:19:35 -0500 Subject: [PATCH] Several adjustments for difficulty purposes. Started out adjusting prices, then ended up doing other things while testing. Committing this now before I start doing other random stuff! But all of the changes are related to balancing difficulty, mostly with prices, except for a couple bugfixes in the shop. Most notably: * Ammo now costs $10, not $50. You no longer have to worry about saving ammo quite as much as a result. * Plasma upgrades' cost is now calculated differently, and the result is slightly lower prices than before. * Easy mode now grants the player more max ammo than other difficulties. * Increasing max plasma ammo now costs less at the start, and increases in cost faster. * You increase max plasma ammo by 25 at a time, not 10. (10 was just too small of a number.) * Destroying enemy ships no longer gives you money. I found that, even in hard mode, I had *way* too much money coming in, and this cuts it down substantially. It also makes the shield bonus at the end of missions much more significant. To compensate for the loss of massive bonuses bosses used to give, these bosses now drop a lot more stuff. * Kline has decreased health in his first encounter, and increased health in his last two encounters (the numbers have been reversed). --- src/Starfighter.cpp | 68 ++++++++++---------------------------------- src/aliens.cpp | 8 +++--- src/bullets.cpp | 20 ++++++------- src/collectable.cpp | 20 +++++++++---- src/game.cpp | 6 ++-- src/intermission.cpp | 11 +++++++ src/player.cpp | 11 ------- src/shop.cpp | 39 ++++++++++++++++++------- src/structs.h | 3 +- 9 files changed, 86 insertions(+), 100 deletions(-) diff --git a/src/Starfighter.cpp b/src/Starfighter.cpp index ba75dcc..454a327 100644 --- a/src/Starfighter.cpp +++ b/src/Starfighter.cpp @@ -125,7 +125,6 @@ int main(int argc, char **argv) alien_defs[CD_DUALFIGHTER].weaponType[1] = W_ROCKETS; alien_defs[CD_DUALFIGHTER].chance[0] = 100; alien_defs[CD_DUALFIGHTER].chance[1] = 1; - alien_defs[CD_DUALFIGHTER].score = 25; alien_defs[CD_DUALFIGHTER].collectChance = 50; alien_defs[CD_DUALFIGHTER].collectType = P_ANYTHING; alien_defs[CD_DUALFIGHTER].collectValue = 50; @@ -143,7 +142,6 @@ int main(int argc, char **argv) alien_defs[CD_MISSILEBOAT].weaponType[1] = W_DOUBLE_ROCKETS; alien_defs[CD_MISSILEBOAT].chance[0] = 25; alien_defs[CD_MISSILEBOAT].chance[1] = 4; - alien_defs[CD_MISSILEBOAT].score = 250; alien_defs[CD_MISSILEBOAT].collectChance = 25; alien_defs[CD_MISSILEBOAT].collectType = P_ANYTHING; alien_defs[CD_MISSILEBOAT].collectValue = 75; @@ -161,7 +159,6 @@ int main(int argc, char **argv) alien_defs[CD_PROTOFIGHTER].weaponType[1] = P_ANYTHING; alien_defs[CD_PROTOFIGHTER].chance[0] = 100; alien_defs[CD_PROTOFIGHTER].chance[1] = 1; - alien_defs[CD_PROTOFIGHTER].score = 50; alien_defs[CD_PROTOFIGHTER].collectChance = 50; alien_defs[CD_PROTOFIGHTER].collectType = P_ANYTHING; alien_defs[CD_PROTOFIGHTER].collectValue = 50; @@ -179,7 +176,6 @@ int main(int argc, char **argv) alien_defs[CD_FRIEND].weaponType[1] = W_HOMING_MISSILE; alien_defs[CD_FRIEND].chance[0] = 100; alien_defs[CD_FRIEND].chance[1] = 5; - alien_defs[CD_FRIEND].score = 0; alien_defs[CD_FRIEND].collectChance = 0; alien_defs[CD_FRIEND].collectType = P_CASH; alien_defs[CD_FRIEND].collectValue = 0; @@ -197,10 +193,9 @@ int main(int argc, char **argv) alien_defs[CD_FRIGATE].weaponType[1] = W_ENERGYRAY; alien_defs[CD_FRIGATE].chance[0] = 100; alien_defs[CD_FRIGATE].chance[1] = 85; - alien_defs[CD_FRIGATE].score = 500; alien_defs[CD_FRIGATE].collectChance = 100; alien_defs[CD_FRIGATE].collectType = P_CASH; - alien_defs[CD_FRIGATE].collectValue = 250; + alien_defs[CD_FRIGATE].collectValue = 500; alien_defs[CD_FRIGATE].flags = FL_WEAPCO; alien_defs[CD_FRIGATE_WING1].classDef = CD_FRIGATE_WING1; @@ -214,7 +209,6 @@ int main(int argc, char **argv) alien_defs[CD_FRIGATE_WING1].weaponType[1] = W_ROCKETS; alien_defs[CD_FRIGATE_WING1].chance[0] = 100; alien_defs[CD_FRIGATE_WING1].chance[1] = 10; - alien_defs[CD_FRIGATE_WING1].score = 500; alien_defs[CD_FRIGATE_WING1].collectChance = 100; alien_defs[CD_FRIGATE_WING1].collectType = P_ANYTHING; alien_defs[CD_FRIGATE_WING1].collectValue = 250; @@ -231,7 +225,6 @@ int main(int argc, char **argv) alien_defs[CD_FRIGATE_WING2].weaponType[1] = W_ROCKETS; alien_defs[CD_FRIGATE_WING2].chance[0] = 100; alien_defs[CD_FRIGATE_WING2].chance[1] = 10; - alien_defs[CD_FRIGATE_WING2].score = 500; alien_defs[CD_FRIGATE_WING2].collectChance = 100; alien_defs[CD_FRIGATE_WING2].collectType = P_ANYTHING; alien_defs[CD_FRIGATE_WING2].collectValue = 250; @@ -249,7 +242,6 @@ int main(int argc, char **argv) alien_defs[CD_TRANSPORTSHIP].weaponType[1] = W_DOUBLE_SHOT; alien_defs[CD_TRANSPORTSHIP].chance[0] = 0; alien_defs[CD_TRANSPORTSHIP].chance[1] = 0; - alien_defs[CD_TRANSPORTSHIP].score = 25; alien_defs[CD_TRANSPORTSHIP].collectChance = 100; alien_defs[CD_TRANSPORTSHIP].collectType = P_WEAPONS; alien_defs[CD_TRANSPORTSHIP].collectValue = 30; @@ -267,7 +259,6 @@ int main(int argc, char **argv) alien_defs[CD_CARGOSHIP].weaponType[1] = W_DOUBLE_SHOT; alien_defs[CD_CARGOSHIP].chance[0] = 0; alien_defs[CD_CARGOSHIP].chance[1] = 0; - alien_defs[CD_CARGOSHIP].score = 25; alien_defs[CD_CARGOSHIP].collectChance = 50; alien_defs[CD_CARGOSHIP].collectType = P_ANYTHING; alien_defs[CD_CARGOSHIP].collectValue = 100; @@ -285,7 +276,6 @@ int main(int argc, char **argv) alien_defs[CD_MINER].weaponType[1] = W_DOUBLE_SHOT; alien_defs[CD_MINER].chance[0] = 0; alien_defs[CD_MINER].chance[1] = 0; - alien_defs[CD_MINER].score = 100; alien_defs[CD_MINER].collectChance = 100; alien_defs[CD_MINER].collectType = P_ANYTHING; alien_defs[CD_MINER].collectValue = 30; @@ -295,15 +285,14 @@ int main(int argc, char **argv) alien_defs[CD_KLINE].classDef = CD_KLINE; alien_defs[CD_KLINE].AIType = AI_OFFENSIVE; alien_defs[CD_KLINE].speed = 5; - alien_defs[CD_KLINE].maxShield = 750; - alien_defs[CD_KLINE].shield = 750; + alien_defs[CD_KLINE].maxShield = 500; + alien_defs[CD_KLINE].shield = 500; alien_defs[CD_KLINE].imageIndex[0] = 18; alien_defs[CD_KLINE].imageIndex[1] = 19; alien_defs[CD_KLINE].weaponType[0] = W_TRIPLE_SHOT; alien_defs[CD_KLINE].weaponType[1] = W_MICRO_ROCKETS; alien_defs[CD_KLINE].chance[0] = 100; alien_defs[CD_KLINE].chance[1] = 2; - alien_defs[CD_KLINE].score = 0; alien_defs[CD_KLINE].collectChance = 0; alien_defs[CD_KLINE].collectType = P_ANYTHING; alien_defs[CD_KLINE].collectValue = 0; @@ -321,7 +310,6 @@ int main(int argc, char **argv) alien_defs[CD_AIMFIGHTER].weaponType[1] = W_AIMED_SHOT; alien_defs[CD_AIMFIGHTER].chance[0] = 7; alien_defs[CD_AIMFIGHTER].chance[1] = 1; - alien_defs[CD_AIMFIGHTER].score = 50; alien_defs[CD_AIMFIGHTER].collectChance = 75; alien_defs[CD_AIMFIGHTER].collectType = P_ANYTHING; alien_defs[CD_AIMFIGHTER].collectValue = 100; @@ -339,7 +327,6 @@ int main(int argc, char **argv) alien_defs[CD_SLAVETRANSPORT].weaponType[1] = W_DOUBLE_SHOT; alien_defs[CD_SLAVETRANSPORT].chance[0] = 0; alien_defs[CD_SLAVETRANSPORT].chance[1] = 0; - alien_defs[CD_SLAVETRANSPORT].score = 25; alien_defs[CD_SLAVETRANSPORT].collectChance = 100; alien_defs[CD_SLAVETRANSPORT].collectType = P_SLAVES; alien_defs[CD_SLAVETRANSPORT].collectValue = 25; @@ -357,7 +344,6 @@ int main(int argc, char **argv) alien_defs[CD_GOODTRANSPORT].weaponType[1] = W_AIMED_SHOT; alien_defs[CD_GOODTRANSPORT].chance[0] = 100; alien_defs[CD_GOODTRANSPORT].chance[1] = 100; - alien_defs[CD_GOODTRANSPORT].score = 0; alien_defs[CD_GOODTRANSPORT].collectChance = 0; alien_defs[CD_GOODTRANSPORT].collectType = P_ANYTHING; alien_defs[CD_GOODTRANSPORT].collectValue = 0; @@ -375,7 +361,6 @@ int main(int argc, char **argv) alien_defs[CD_SID].weaponType[1] = W_IONCANNON; alien_defs[CD_SID].chance[0] = 100; alien_defs[CD_SID].chance[1] = 0; - alien_defs[CD_SID].score = 0; alien_defs[CD_SID].collectChance = 0; alien_defs[CD_SID].collectType = P_ANYTHING; alien_defs[CD_SID].collectValue = 0; @@ -393,10 +378,9 @@ int main(int argc, char **argv) alien_defs[CD_MINEBOSS].weaponType[1] = W_SPREADSHOT; alien_defs[CD_MINEBOSS].chance[0] = 0; alien_defs[CD_MINEBOSS].chance[1] = 0; - alien_defs[CD_MINEBOSS].score = 1000; alien_defs[CD_MINEBOSS].collectChance = 100; alien_defs[CD_MINEBOSS].collectType = P_ANYTHING; - alien_defs[CD_MINEBOSS].collectValue = 255; + alien_defs[CD_MINEBOSS].collectValue = 1000; alien_defs[CD_MINEBOSS].flags = FL_WEAPCO | FL_IMMORTAL; alien_defs[CD_BOSS2_WING1].classDef = CD_BOSS2_WING1; @@ -410,10 +394,9 @@ int main(int argc, char **argv) alien_defs[CD_BOSS2_WING1].weaponType[1] = W_SPREADSHOT; alien_defs[CD_BOSS2_WING1].chance[0] = 0; alien_defs[CD_BOSS2_WING1].chance[1] = 0; - alien_defs[CD_BOSS2_WING1].score = 1000; alien_defs[CD_BOSS2_WING1].collectChance = 100; alien_defs[CD_BOSS2_WING1].collectType = P_ANYTHING; - alien_defs[CD_BOSS2_WING1].collectValue = 255; + alien_defs[CD_BOSS2_WING1].collectValue = 250; alien_defs[CD_BOSS2_WING1].flags = FL_WEAPCO | FL_DAMAGEOWNER; alien_defs[CD_BOSS2_WING2].classDef = CD_BOSS2_WING2; @@ -427,10 +410,9 @@ int main(int argc, char **argv) alien_defs[CD_BOSS2_WING2].weaponType[1] = W_SPREADSHOT; alien_defs[CD_BOSS2_WING2].chance[0] = 0; alien_defs[CD_BOSS2_WING2].chance[1] = 0; - alien_defs[CD_BOSS2_WING2].score = 1000; alien_defs[CD_BOSS2_WING2].collectChance = 100; alien_defs[CD_BOSS2_WING2].collectType = P_ANYTHING; - alien_defs[CD_BOSS2_WING2].collectValue = 255; + alien_defs[CD_BOSS2_WING2].collectValue = 250; alien_defs[CD_BOSS2_WING2].flags = FL_WEAPCO | FL_DEPLOYDRONES | FL_DAMAGEOWNER; alien_defs[CD_BOSS2_WING3].classDef = CD_BOSS2_WING3; @@ -444,10 +426,9 @@ int main(int argc, char **argv) alien_defs[CD_BOSS2_WING3].weaponType[1] = W_SPREADSHOT; alien_defs[CD_BOSS2_WING3].chance[0] = 0; alien_defs[CD_BOSS2_WING3].chance[1] = 0; - alien_defs[CD_BOSS2_WING3].score = 1000; alien_defs[CD_BOSS2_WING3].collectChance = 100; alien_defs[CD_BOSS2_WING3].collectType = P_ANYTHING; - alien_defs[CD_BOSS2_WING3].collectValue = 255; + alien_defs[CD_BOSS2_WING3].collectValue = 250; alien_defs[CD_BOSS2_WING3].flags = FL_WEAPCO | FL_DEPLOYDRONES | FL_DAMAGEOWNER; alien_defs[CD_BOSS2_WING4].classDef = CD_BOSS2_WING4; @@ -461,10 +442,9 @@ int main(int argc, char **argv) alien_defs[CD_BOSS2_WING4].weaponType[1] = W_SPREADSHOT; alien_defs[CD_BOSS2_WING4].chance[0] = 0; alien_defs[CD_BOSS2_WING4].chance[1] = 0; - alien_defs[CD_BOSS2_WING4].score = 1000; alien_defs[CD_BOSS2_WING4].collectChance = 100; alien_defs[CD_BOSS2_WING4].collectType = P_ANYTHING; - alien_defs[CD_BOSS2_WING4].collectValue = 255; + alien_defs[CD_BOSS2_WING4].collectValue = 250; alien_defs[CD_BOSS2_WING4].flags = FL_WEAPCO | FL_DAMAGEOWNER; // Drone @@ -479,7 +459,6 @@ int main(int argc, char **argv) alien_defs[CD_DRONE].weaponType[1] = W_LASER; alien_defs[CD_DRONE].chance[0] = 100; alien_defs[CD_DRONE].chance[1] = 0; - alien_defs[CD_DRONE].score = 0; alien_defs[CD_DRONE].collectChance = 10; alien_defs[CD_DRONE].collectType = P_SHIELD; alien_defs[CD_DRONE].collectValue = 1; @@ -497,10 +476,9 @@ int main(int argc, char **argv) alien_defs[CD_CLOAKFIGHTER].weaponType[1] = W_DOUBLE_ROCKETS; alien_defs[CD_CLOAKFIGHTER].chance[0] = 100; alien_defs[CD_CLOAKFIGHTER].chance[1] = 5; - alien_defs[CD_CLOAKFIGHTER].score = 550; alien_defs[CD_CLOAKFIGHTER].collectChance = 100; alien_defs[CD_CLOAKFIGHTER].collectType = P_CASH; - alien_defs[CD_CLOAKFIGHTER].collectValue = 255; + alien_defs[CD_CLOAKFIGHTER].collectValue = 1000; alien_defs[CD_CLOAKFIGHTER].flags = FL_WEAPCO | FL_CANCLOAK | FL_RUNSAWAY; // Evil Ursula @@ -515,7 +493,6 @@ int main(int argc, char **argv) alien_defs[CD_EVILURSULA].weaponType[1] = W_HOMING_MISSILE; alien_defs[CD_EVILURSULA].chance[0] = 100; alien_defs[CD_EVILURSULA].chance[1] = 100; - alien_defs[CD_EVILURSULA].score = 500; alien_defs[CD_EVILURSULA].collectChance = 100; alien_defs[CD_EVILURSULA].collectType = P_ESCAPEPOD; alien_defs[CD_EVILURSULA].collectValue = 1; @@ -533,10 +510,9 @@ int main(int argc, char **argv) alien_defs[CD_KRASS].weaponType[1] = W_CHARGER; alien_defs[CD_KRASS].chance[0] = 100; alien_defs[CD_KRASS].chance[1] = 0; - alien_defs[CD_KRASS].score = 2000; alien_defs[CD_KRASS].collectChance = 100; alien_defs[CD_KRASS].collectType = P_ANYTHING; - alien_defs[CD_KRASS].collectValue = 255; + alien_defs[CD_KRASS].collectValue = 2250; alien_defs[CD_KRASS].flags = FL_FRIEND | FL_IMMORTAL; // Executive Transport @@ -551,10 +527,9 @@ int main(int argc, char **argv) alien_defs[CD_EXEC].weaponType[1] = W_HOMING_MISSILE; alien_defs[CD_EXEC].chance[0] = 0; alien_defs[CD_EXEC].chance[1] = 0; - alien_defs[CD_EXEC].score = 2000; alien_defs[CD_EXEC].collectChance = 0; alien_defs[CD_EXEC].collectType = P_ANYTHING; - alien_defs[CD_EXEC].collectValue = 0; + alien_defs[CD_EXEC].collectValue = 2000; alien_defs[CD_EXEC].flags = FL_WEAPCO | FL_NOFIRE; // Asteroid @@ -569,7 +544,6 @@ int main(int argc, char **argv) alien_defs[CD_ASTEROID].weaponType[1] = W_HOMING_MISSILE; alien_defs[CD_ASTEROID].chance[0] = 0; alien_defs[CD_ASTEROID].chance[1] = 0; - alien_defs[CD_ASTEROID].score = 0; alien_defs[CD_ASTEROID].collectChance = 25; alien_defs[CD_ASTEROID].collectType = P_ORE; alien_defs[CD_ASTEROID].collectValue = 1; @@ -586,7 +560,6 @@ int main(int argc, char **argv) alien_defs[CD_ASTEROID2].weaponType[1] = W_HOMING_MISSILE; alien_defs[CD_ASTEROID2].chance[0] = 0; alien_defs[CD_ASTEROID2].chance[1] = 0; - alien_defs[CD_ASTEROID2].score = 0; alien_defs[CD_ASTEROID2].collectChance = 25; alien_defs[CD_ASTEROID2].collectType = P_ORE; alien_defs[CD_ASTEROID2].collectValue = 1; @@ -604,7 +577,6 @@ int main(int argc, char **argv) alien_defs[CD_ESCORT].weaponType[1] = W_LASER; alien_defs[CD_ESCORT].chance[0] = 25; alien_defs[CD_ESCORT].chance[1] = 25; - alien_defs[CD_ESCORT].score = 450; alien_defs[CD_ESCORT].collectChance = 100; alien_defs[CD_ESCORT].collectType = P_ANYTHING; alien_defs[CD_ESCORT].collectValue = 100; @@ -622,10 +594,9 @@ int main(int argc, char **argv) alien_defs[CD_MOBILE_RAY].weaponType[1] = W_ENERGYRAY; alien_defs[CD_MOBILE_RAY].chance[0] = 50; alien_defs[CD_MOBILE_RAY].chance[1] = 50; - alien_defs[CD_MOBILE_RAY].score = 1000; alien_defs[CD_MOBILE_RAY].collectChance = 75; alien_defs[CD_MOBILE_RAY].collectType = P_SHIELD; - alien_defs[CD_MOBILE_RAY].collectValue = 2; + alien_defs[CD_MOBILE_RAY].collectValue = 100; alien_defs[CD_MOBILE_RAY].flags = FL_WEAPCO; // Rebel Carrier @@ -640,7 +611,6 @@ int main(int argc, char **argv) alien_defs[CD_REBELCARRIER].weaponType[1] = W_MICRO_ROCKETS; alien_defs[CD_REBELCARRIER].chance[0] = 50; alien_defs[CD_REBELCARRIER].chance[1] = 2; - alien_defs[CD_REBELCARRIER].score = 0; alien_defs[CD_REBELCARRIER].collectChance = 0; alien_defs[CD_REBELCARRIER].collectType = P_SHIELD; alien_defs[CD_REBELCARRIER].collectValue = 0; @@ -658,10 +628,9 @@ int main(int argc, char **argv) alien_defs[CD_PLUTOBOSS].weaponType[1] = W_MICRO_ROCKETS; alien_defs[CD_PLUTOBOSS].chance[0] = 50; alien_defs[CD_PLUTOBOSS].chance[1] = 2; - alien_defs[CD_PLUTOBOSS].score = 1000; alien_defs[CD_PLUTOBOSS].collectChance = 0; alien_defs[CD_PLUTOBOSS].collectType = P_SHIELD; - alien_defs[CD_PLUTOBOSS].collectValue = 0; + alien_defs[CD_PLUTOBOSS].collectValue = 1000; alien_defs[CD_PLUTOBOSS].flags = FL_WEAPCO; // Pluto Boss Barrier @@ -676,7 +645,6 @@ int main(int argc, char **argv) alien_defs[CD_BARRIER].weaponType[1] = W_MICRO_ROCKETS; alien_defs[CD_BARRIER].chance[0] = 0; alien_defs[CD_BARRIER].chance[1] = 0; - alien_defs[CD_BARRIER].score = 1000; alien_defs[CD_BARRIER].collectChance = 100; alien_defs[CD_BARRIER].collectType = P_ANYTHING; alien_defs[CD_BARRIER].collectValue = 25; @@ -694,10 +662,9 @@ int main(int argc, char **argv) alien_defs[CD_NEPTUNEBOSS].weaponType[1] = W_MICRO_ROCKETS; alien_defs[CD_NEPTUNEBOSS].chance[0] = 100; alien_defs[CD_NEPTUNEBOSS].chance[1] = 0; - alien_defs[CD_NEPTUNEBOSS].score = 1000; alien_defs[CD_NEPTUNEBOSS].collectChance = 100; alien_defs[CD_NEPTUNEBOSS].collectType = P_ANYTHING; - alien_defs[CD_NEPTUNEBOSS].collectValue = 25; + alien_defs[CD_NEPTUNEBOSS].collectValue = 1000; alien_defs[CD_NEPTUNEBOSS].flags = FL_WEAPCO; // Mobile Shield @@ -712,7 +679,6 @@ int main(int argc, char **argv) alien_defs[CD_MOBILESHIELD].weaponType[1] = W_MICRO_ROCKETS; alien_defs[CD_MOBILESHIELD].chance[0] = 0; alien_defs[CD_MOBILESHIELD].chance[1] = 0; - alien_defs[CD_MOBILESHIELD].score = 250; alien_defs[CD_MOBILESHIELD].collectChance = 100; alien_defs[CD_MOBILESHIELD].collectType = P_ANYTHING; alien_defs[CD_MOBILESHIELD].collectValue = 25; @@ -730,7 +696,6 @@ int main(int argc, char **argv) alien_defs[CD_FIREFLY].weaponType[1] = W_DOUBLE_ROCKETS; alien_defs[CD_FIREFLY].chance[0] = 100; alien_defs[CD_FIREFLY].chance[1] = 5; - alien_defs[CD_FIREFLY].score = 500; alien_defs[CD_FIREFLY].collectChance = 100; alien_defs[CD_FIREFLY].collectType = P_ANYTHING; alien_defs[CD_FIREFLY].collectValue = 250; @@ -748,10 +713,9 @@ int main(int argc, char **argv) alien_defs[CD_URANUSBOSS].weaponType[1] = W_DOUBLE_ROCKETS; alien_defs[CD_URANUSBOSS].chance[0] = 100; alien_defs[CD_URANUSBOSS].chance[1] = 5; - alien_defs[CD_URANUSBOSS].score = 500; alien_defs[CD_URANUSBOSS].collectChance = 100; alien_defs[CD_URANUSBOSS].collectType = P_ANYTHING; - alien_defs[CD_URANUSBOSS].collectValue = 250; + alien_defs[CD_URANUSBOSS].collectValue = 500; alien_defs[CD_URANUSBOSS].flags = FL_WEAPCO; // Uranus Boss Wing 1 @@ -766,7 +730,6 @@ int main(int argc, char **argv) alien_defs[CD_URANUSBOSSWING1].weaponType[1] = W_DOUBLE_ROCKETS; alien_defs[CD_URANUSBOSSWING1].chance[0] = 5; alien_defs[CD_URANUSBOSSWING1].chance[1] = 0; - alien_defs[CD_URANUSBOSSWING1].score = 500; alien_defs[CD_URANUSBOSSWING1].collectChance = 100; alien_defs[CD_URANUSBOSSWING1].collectType = P_ANYTHING; alien_defs[CD_URANUSBOSSWING1].collectValue = 250; @@ -784,7 +747,6 @@ int main(int argc, char **argv) alien_defs[CD_URANUSBOSSWING2].weaponType[1] = W_DOUBLE_ROCKETS; alien_defs[CD_URANUSBOSSWING2].chance[0] = 5; alien_defs[CD_URANUSBOSSWING2].chance[1] = 0; - alien_defs[CD_URANUSBOSSWING2].score = 500; alien_defs[CD_URANUSBOSSWING2].collectChance = 100; alien_defs[CD_URANUSBOSSWING2].collectType = P_ANYTHING; alien_defs[CD_URANUSBOSSWING2].collectValue = 250; diff --git a/src/aliens.cpp b/src/aliens.cpp index 05412aa..7f91ff3 100644 --- a/src/aliens.cpp +++ b/src/aliens.cpp @@ -416,17 +416,17 @@ void alien_setAI(object *alien) void alien_setKlineAttackMethod(object *alien) { - alien->maxShield -= 500; + alien->maxShield -= 750; if (alien->maxShield == 0) alien->flags &= ~FL_CANNOTDIE; - if (alien->maxShield == 1000) + if (alien->maxShield == 1500) { setRadioMessage(FACE_KLINE, "Very good, Bainfield. Now let's get a little more serious...", 1); alien->weaponType[0] = W_SPREADSHOT; alien->chance[1] = 40; } - else if (alien->maxShield == 500) + else if (alien->maxShield == 750) { setRadioMessage(FACE_KLINE, "Your ability to stay alive irritates me!! Try dodging some of these!!", 1); alien->weaponType[0] = W_DIRSHOCKMISSILE; @@ -445,7 +445,7 @@ void alien_setKlineAttackMethod(object *alien) alien->chance[1] = 2; } - alien->shield = 500; + alien->shield = 750; } /* diff --git a/src/bullets.cpp b/src/bullets.cpp index c2ad17e..6f4aec6 100644 --- a/src/bullets.cpp +++ b/src/bullets.cpp @@ -202,7 +202,8 @@ void fireBullet(object *attacker, int weaponType) } } - // Reset the weapon reload time. Double it if it is not friendly or a boss or Kline + // Reset the weapon reload time. Double it if it is not friendly or + // a boss or Kline attacker->reload[weaponType] = theWeapon->reload[0]; if ((attacker->flags & FL_WEAPCO) && (attacker != &aliens[WC_BOSS]) && (attacker != &aliens[WC_KLINE]) && (theWeapon->id != W_LASER)) attacker->reload[weaponType] *= 2; @@ -215,7 +216,7 @@ void fireBullet(object *attacker, int weaponType) if (player.ammo[0] > 0) { player.ammo[0]--; - if (player.ammo[0] == 0) + if (player.ammo[0] <= 0) { weapon[W_PLAYER_WEAPON].ammo[0] = currentGame.minPlasmaOutput; weapon[W_PLAYER_WEAPON].damage = currentGame.minPlasmaDamage; @@ -302,12 +303,7 @@ static void alien_destroy(object *alien, object *attacker) { if (attacker == &player) { - // Once again, stop point leeching - if (currentGame.area != MAX_MISSIONS - 1) - currentGame.cash += alien->score; - currentGame.cashEarned += alien->score; currentGame.totalKills++; - updateMissionRequirements(M_COLLECT, P_CASH, alien->score); } else if (attacker->classDef == CD_PHOEBE) { @@ -345,7 +341,7 @@ static void alien_destroy(object *alien, object *attacker) { value = (10 + (rand() % alien->collectValue)); if (value > alien->collectValue) - value =alien->collectValue; + value = alien->collectValue; addCollectable(alien->x, alien->y, alien->collectType, value, 600); alien->collectValue -= value; } @@ -578,7 +574,8 @@ void doBullets() okayToHit = true; if ((bullet->flags & WF_WEAPCO) && (alien->flags & FL_FRIEND)) okayToHit = true; - if ((bullet->id == WT_ROCKET) || (bullet->id == WT_LASER) || (bullet->id == WT_CHARGER)) + if ((bullet->id == WT_ROCKET) || (bullet->id == WT_LASER) || + (bullet->id == WT_CHARGER)) okayToHit = true; if (bullet->owner == alien->owner) @@ -591,7 +588,8 @@ void doBullets() if (bullet->owner == &player) { currentGame.hits++; - if ((alien->classDef == CD_PHOEBE) || (alien->classDef == CD_URSULA)) + if ((alien->classDef == CD_PHOEBE) || + (alien->classDef == CD_URSULA)) getMissFireMessage(alien); } @@ -617,7 +615,7 @@ void doBullets() alien->flags |= FL_LEAVESECTOR; alien->flags &= ~FL_CIRCLES; if (currentGame.area == 11) - setRadioMessage(FACE_KLINE, "Seems I underestimated you, Bainfield! We'll meet again!", 1); + setRadioMessage(FACE_KLINE, "Seems I underestimated you, Bainfield. We'll meet again!", 1); else if (currentGame.area == 25) setRadioMessage(FACE_SID, "Chris, Kethlan is getting away!", 1); } diff --git a/src/collectable.cpp b/src/collectable.cpp index 7ea6ff6..41f1bc2 100644 --- a/src/collectable.cpp +++ b/src/collectable.cpp @@ -61,7 +61,7 @@ void addCollectable(float x, float y, int type, int value, int life) } if (type == P_SUPER) - value = 1; + value = max(value, 1); if (value == 0) return; // don't bother! @@ -224,11 +224,13 @@ void addCollectable(float x, float y, int type, int value, int life) static void explodeMine(collectables *collectable) { - if ((collectable->x >= 0) && (collectable->x <= 800) && (collectable->y >= 0) && (collectable->y <= 600)) + if ((collectable->x >= 0) && (collectable->x <= screen->w) && + (collectable->y >= 0) && (collectable->y <= screen->h)) playSound(SFX_EXPLOSION, collectable->x); for (int i = 0 ; i < 10 ; i++) - addExplosion(collectable->x + rand() % 25 - rand() % 25, collectable->y + rand() % 25 - rand() % 25, E_BIG_EXPLOSION); + addExplosion(collectable->x + rand() % 25 - rand() % 25, + collectable->y + rand() % 25 - rand() % 25, E_BIG_EXPLOSION); if (checkPlayerShockDamage(collectable->x, collectable->y)) setInfoLine("Warning: Mine damage to shield!!", FONT_RED); @@ -303,7 +305,10 @@ void doCollectables() if (collectable->active) { - if ((collectable->x + collectable->image->w > 0) && (collectable->x < 800) && (collectable->y + collectable->image->h > 0) && (collectable->y < 600)) + if ((collectable->x + collectable->image->w > 0) && + (collectable->x < screen->w) && + (collectable->y + collectable->image->h > 0) && + (collectable->y < screen->h)) blit(collectable->image, (int)collectable->x, (int)collectable->y); collectable->x += engine.ssx + engine.smx; @@ -435,7 +440,8 @@ void doCollectables() break; } - updateMissionRequirements(M_COLLECT, collectable->type, collectable->value); + updateMissionRequirements(M_COLLECT, collectable->type, + collectable->value); collectable->active = false; if (collectable->type != P_MINE) @@ -460,7 +466,9 @@ void doCollectables() if (collectable->life < 1) { collectable->active = false; - if ((collectable->type == P_CARGO) || (collectable->type == P_ESCAPEPOD) || (collectable->type == P_SLAVES)) + if ((collectable->type == P_CARGO) || + (collectable->type == P_ESCAPEPOD) || + (collectable->type == P_SLAVES)) updateMissionRequirements(M_PROTECT_PICKUP, collectable->type, 1); } diff --git a/src/game.cpp b/src/game.cpp index e5ea71a..c14c8ba 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -87,6 +87,8 @@ void newGame() currentGame.maxPlasmaRate = 3; currentGame.maxPlasmaOutput = 3; currentGame.maxPlasmaDamage = 3; + currentGame.maxPlasmaAmmo = 150; + currentGame.maxRocketAmmo = 20; currentGame.minPlasmaRateLimit = 3; currentGame.minPlasmaDamageLimit = 3; @@ -111,7 +113,7 @@ void newGame() player.shield = player.maxShield; player.ammo[0] = 0; - player.ammo[1] = 5; + player.ammo[1] = currentGame.maxRocketAmmo / 2; player.weaponType[0] = W_PLAYER_WEAPON; player.weaponType[1] = W_ROCKETS; @@ -194,7 +196,7 @@ int mainGameLoop() { aliens[WC_KLINE].target = &player; if (currentGame.area == 25) - aliens[WC_KLINE].shield = 500; + aliens[WC_KLINE].shield = 750; } if (aliens[index].classDef == CD_CLOAKFIGHTER) diff --git a/src/intermission.cpp b/src/intermission.cpp index bc3baaf..ac36e43 100644 --- a/src/intermission.cpp +++ b/src/intermission.cpp @@ -535,6 +535,17 @@ int galaxyMap() bool movePlanets = true; signed char saveSlot = -1; + // Remove the Supercharge, if it is there + if (currentGame.difficulty > DIFFICULTY_EASY) + { + weapon[W_PLAYER_WEAPON].reload[0] = max(weapon[W_PLAYER_WEAPON].reload[0], + rate2reload[currentGame.maxPlasmaRate]); + weapon[W_PLAYER_WEAPON].ammo[0] = min(weapon[W_PLAYER_WEAPON].ammo[0], + currentGame.maxPlasmaOutput); + weapon[W_PLAYER_WEAPON].damage = min(weapon[W_PLAYER_WEAPON].damage, + currentGame.maxPlasmaDamage); + } + if (currentGame.system > 0) interceptionChance = (300 / currentGame.system); diff --git a/src/player.cpp b/src/player.cpp index cebdcbe..30d41cb 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -80,17 +80,6 @@ void exitPlayer() if (player.weaponType[1] == W_LASER) player.ammo[1] = 0; - - // Remove the Supercharge, if it is there - if (currentGame.difficulty > DIFFICULTY_EASY) - { - weapon[W_PLAYER_WEAPON].reload[0] = max(weapon[W_PLAYER_WEAPON].reload[0], - rate2reload[currentGame.maxPlasmaRate]); - weapon[W_PLAYER_WEAPON].ammo[0] = min(weapon[W_PLAYER_WEAPON].ammo[0], - currentGame.maxPlasmaOutput); - weapon[W_PLAYER_WEAPON].damage = min(weapon[W_PLAYER_WEAPON].damage, - currentGame.maxPlasmaDamage); - } } void doPlayer() diff --git a/src/shop.cpp b/src/shop.cpp index 28db9fa..facfeb6 100644 --- a/src/shop.cpp +++ b/src/shop.cpp @@ -72,13 +72,19 @@ static void drawSecondaryWeaponSurface() static void adjustShopPrices() { - shopItems[SHOP_PLASMA_MAX_OUTPUT].price = (1500 * currentGame.maxPlasmaOutput); - shopItems[SHOP_PLASMA_MAX_DAMAGE].price = (1500 * currentGame.maxPlasmaDamage); - shopItems[SHOP_PLASMA_MAX_RATE].price = (1500 * currentGame.maxPlasmaRate); + shopItems[SHOP_PLASMA_MAX_OUTPUT].price = (1000 * + (currentGame.maxPlasmaOutput + 1)); + shopItems[SHOP_PLASMA_MAX_DAMAGE].price = (1000 * + (currentGame.maxPlasmaDamage + 1)); + shopItems[SHOP_PLASMA_MAX_RATE].price = (1000 * + (currentGame.maxPlasmaRate + 1)); - shopItems[SHOP_PLASMA_MIN_OUTPUT].price = (4000 * currentGame.minPlasmaOutput); - shopItems[SHOP_PLASMA_MIN_DAMAGE].price = (4000 * currentGame.minPlasmaDamage); - shopItems[SHOP_PLASMA_MIN_RATE].price = (4000 * currentGame.minPlasmaRate); + shopItems[SHOP_PLASMA_MIN_OUTPUT].price = (2000 * + (currentGame.minPlasmaOutput + 1)); + shopItems[SHOP_PLASMA_MIN_DAMAGE].price = (2000 * + (currentGame.minPlasmaDamage + 1)); + shopItems[SHOP_PLASMA_MIN_RATE].price = (2000 * + (currentGame.minPlasmaRate + 1)); if (currentGame.maxPlasmaOutput <= currentGame.minPlasmaOutput) shopItems[SHOP_PLASMA_MIN_OUTPUT].price += shopItems[SHOP_PLASMA_MAX_OUTPUT].price; @@ -87,7 +93,7 @@ static void adjustShopPrices() if (currentGame.maxPlasmaRate <= currentGame.minPlasmaRate) shopItems[SHOP_PLASMA_MIN_RATE].price += shopItems[SHOP_PLASMA_MAX_RATE].price; - shopItems[SHOP_PLASMA_MAX_AMMO].price = (5 * currentGame.maxPlasmaAmmo); + shopItems[SHOP_PLASMA_MAX_AMMO].price = (10 * (currentGame.maxPlasmaAmmo - 75)); shopItems[SHOP_ROCKET_MAX_AMMO].price = (25 * currentGame.maxRocketAmmo); if (currentGame.maxPlasmaOutput >= currentGame.maxPlasmaOutputLimit) @@ -310,12 +316,12 @@ void initShop() "Increases plasma firing rate"); shopItems[SHOP_PLASMA_MAX_RATE].image = 11; - shopItems[SHOP_PLASMA_AMMO].price = 50; + shopItems[SHOP_PLASMA_AMMO].price = 10; strcpy(shopItems[SHOP_PLASMA_AMMO].name, "10 Plasma cells"); strcpy(shopItems[SHOP_PLASMA_AMMO].description, "Plasma ammunition"); shopItems[SHOP_PLASMA_AMMO].image = 12; - shopItems[SHOP_ROCKET_AMMO].price = 50; + shopItems[SHOP_ROCKET_AMMO].price = 10; strcpy(shopItems[SHOP_ROCKET_AMMO].name, "Rocket Ammo"); strcpy(shopItems[SHOP_ROCKET_AMMO].description, "High velocity dumb fire rocket"); @@ -612,7 +618,7 @@ static void buy(int i) shopSelectedItem = -3; return; } - limitCharAdd(¤tGame.maxPlasmaAmmo, 10, 0, 250); + currentGame.maxPlasmaAmmo += 25; break; case SHOP_ROCKET_MAX_AMMO: @@ -817,6 +823,8 @@ static void sell(int i) return; } currentGame.minPlasmaOutput--; + if (player.ammo[0] <= 0) + weapon[W_PLAYER_WEAPON].ammo[0] = currentGame.minPlasmaOutput; break; case SHOP_PLASMA_MIN_DAMAGE: @@ -826,6 +834,8 @@ static void sell(int i) return; } currentGame.minPlasmaDamage--; + if (player.ammo[0] <= 0) + weapon[W_PLAYER_WEAPON].damage = currentGame.minPlasmaDamage; break; case SHOP_PLASMA_MIN_RATE: @@ -835,6 +845,8 @@ static void sell(int i) return; } currentGame.minPlasmaRate--; + if (player.ammo[0] <= 0) + weapon[W_PLAYER_WEAPON].reload[0] = rate2reload[currentGame.minPlasmaRate]; break; case SHOP_PLASMA_AMMO: @@ -846,7 +858,12 @@ static void sell(int i) if (player.ammo[0] > 10) player.ammo[0] -= 10; else + { player.ammo[0] = 0; + weapon[W_PLAYER_WEAPON].ammo[0] = currentGame.minPlasmaOutput; + weapon[W_PLAYER_WEAPON].damage = currentGame.minPlasmaDamage; + weapon[W_PLAYER_WEAPON].reload[0] = rate2reload[currentGame.minPlasmaRate]; + } break; case SHOP_ROCKET_AMMO: @@ -864,7 +881,7 @@ static void sell(int i) shopSelectedItem = -1; return; } - currentGame.maxPlasmaAmmo -= 10; + currentGame.maxPlasmaAmmo -= 25; while (player.ammo[0] > currentGame.maxPlasmaAmmo) sell(SHOP_PLASMA_AMMO); diff --git a/src/structs.h b/src/structs.h index b6296f1..34374cc 100644 --- a/src/structs.h +++ b/src/structs.h @@ -38,7 +38,6 @@ struct object { signed char speed; unsigned char damage; // Contact damage for bullets - int score; // How much a kill of this is worth unsigned char ammo[2]; // Ammo for 2nd weapon. signed char face; // Either 0 or 1 @@ -59,7 +58,7 @@ struct object { signed char collectChance; // Chance of dropping the object signed char collectType; // What the object is carrying - unsigned char collectValue; // What it is worth + unsigned int collectValue; // What it is worth int flags; // Various flags for an object