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).
This commit is contained in:
onpon4 2015-03-07 12:19:35 -05:00
parent a3efbc06cc
commit 22fcdae8cc
9 changed files with 86 additions and 100 deletions

View File

@ -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;

View File

@ -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;
}
/*

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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)

View File

@ -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);

View File

@ -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()

View File

@ -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(&currentGame.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);

View File

@ -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