Made Classic difficulty almost exactly like the original.

There are only a couple changes that I've left in:

1. On normal missions, the edge of the screen still doesn't slow you down.
2. The shop still does not have the old bug where selling was based on the price of the next item.
3. Not sure about this, but some powerups don't spawn if they're of no use to you; I believe this was not in the original, but it's been left in anyway.
4. Not sure about this either, but I believe the original had the 3-way spread much wider. This has not been adjusted for Classic difficulty.

Other than those three, Classic difficulty is now exactly the same,
including a re-implementation of the whole "score" system where destroying
a ship nets you money instantly and the absurd system where you buy only
10 plasma capacity at a time. I might adjust 1, 3, and/or 4 above later
on.
This commit is contained in:
Julie Marchant 2019-05-21 13:17:07 -04:00
parent 838722590c
commit e398440a56
5 changed files with 160 additions and 16 deletions

View File

@ -129,6 +129,9 @@ void alien_defs_init()
alien_defs[CD_DUALFIGHTER].collectChance = 50; alien_defs[CD_DUALFIGHTER].collectChance = 50;
alien_defs[CD_DUALFIGHTER].collectType = P_ANYTHING; alien_defs[CD_DUALFIGHTER].collectType = P_ANYTHING;
alien_defs[CD_DUALFIGHTER].collectValue = 50; alien_defs[CD_DUALFIGHTER].collectValue = 50;
alien_defs[CD_DUALFIGHTER].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_DUALFIGHTER].collectValueOriginal = 50;
alien_defs[CD_DUALFIGHTER].score = 25;
alien_defs[CD_DUALFIGHTER].flags = FL_WEAPCO; alien_defs[CD_DUALFIGHTER].flags = FL_WEAPCO;
// Missile Boat // Missile Boat
@ -146,6 +149,9 @@ void alien_defs_init()
alien_defs[CD_MISSILEBOAT].collectChance = 25; alien_defs[CD_MISSILEBOAT].collectChance = 25;
alien_defs[CD_MISSILEBOAT].collectType = P_ANYTHING; alien_defs[CD_MISSILEBOAT].collectType = P_ANYTHING;
alien_defs[CD_MISSILEBOAT].collectValue = 75; alien_defs[CD_MISSILEBOAT].collectValue = 75;
alien_defs[CD_MISSILEBOAT].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_MISSILEBOAT].collectValueOriginal = 75;
alien_defs[CD_MISSILEBOAT].score = 250;
alien_defs[CD_MISSILEBOAT].flags = FL_WEAPCO; alien_defs[CD_MISSILEBOAT].flags = FL_WEAPCO;
//Prototype fighter //Prototype fighter
@ -163,6 +169,9 @@ void alien_defs_init()
alien_defs[CD_PROTOFIGHTER].collectChance = 50; alien_defs[CD_PROTOFIGHTER].collectChance = 50;
alien_defs[CD_PROTOFIGHTER].collectType = P_ANYTHING; alien_defs[CD_PROTOFIGHTER].collectType = P_ANYTHING;
alien_defs[CD_PROTOFIGHTER].collectValue = 50; alien_defs[CD_PROTOFIGHTER].collectValue = 50;
alien_defs[CD_PROTOFIGHTER].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_PROTOFIGHTER].collectValueOriginal = 50;
alien_defs[CD_PROTOFIGHTER].score = 50;
alien_defs[CD_PROTOFIGHTER].flags = FL_WEAPCO; alien_defs[CD_PROTOFIGHTER].flags = FL_WEAPCO;
// Phoebe and Ursula // Phoebe and Ursula
@ -180,6 +189,9 @@ void alien_defs_init()
alien_defs[CD_FRIEND].collectChance = 0; alien_defs[CD_FRIEND].collectChance = 0;
alien_defs[CD_FRIEND].collectType = P_CASH; alien_defs[CD_FRIEND].collectType = P_CASH;
alien_defs[CD_FRIEND].collectValue = 0; alien_defs[CD_FRIEND].collectValue = 0;
alien_defs[CD_FRIEND].collectTypeOriginal = P_CASH;
alien_defs[CD_FRIEND].collectValueOriginal = 0;
alien_defs[CD_FRIEND].score = 0;
alien_defs[CD_FRIEND].flags = FL_FRIEND; alien_defs[CD_FRIEND].flags = FL_FRIEND;
// Boss 1 // Boss 1
@ -197,6 +209,9 @@ void alien_defs_init()
alien_defs[CD_FRIGATE].collectChance = 100; alien_defs[CD_FRIGATE].collectChance = 100;
alien_defs[CD_FRIGATE].collectType = P_CASH; alien_defs[CD_FRIGATE].collectType = P_CASH;
alien_defs[CD_FRIGATE].collectValue = 500; alien_defs[CD_FRIGATE].collectValue = 500;
alien_defs[CD_FRIGATE].collectTypeOriginal = P_CASH;
alien_defs[CD_FRIGATE].collectValueOriginal = 250;
alien_defs[CD_FRIGATE].score = 500;
alien_defs[CD_FRIGATE].flags = FL_WEAPCO | FL_NOBANTER; alien_defs[CD_FRIGATE].flags = FL_WEAPCO | FL_NOBANTER;
alien_defs[CD_FRIGATE_WING1].classDef = CD_FRIGATE_WING1; alien_defs[CD_FRIGATE_WING1].classDef = CD_FRIGATE_WING1;
@ -213,6 +228,9 @@ void alien_defs_init()
alien_defs[CD_FRIGATE_WING1].collectChance = 100; alien_defs[CD_FRIGATE_WING1].collectChance = 100;
alien_defs[CD_FRIGATE_WING1].collectType = P_ANYTHING; alien_defs[CD_FRIGATE_WING1].collectType = P_ANYTHING;
alien_defs[CD_FRIGATE_WING1].collectValue = 250; alien_defs[CD_FRIGATE_WING1].collectValue = 250;
alien_defs[CD_FRIGATE_WING1].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_FRIGATE_WING1].collectValueOriginal = 250;
alien_defs[CD_FRIGATE_WING1].score = 500;
alien_defs[CD_FRIGATE_WING1].flags = FL_WEAPCO | FL_DAMAGEOWNER; alien_defs[CD_FRIGATE_WING1].flags = FL_WEAPCO | FL_DAMAGEOWNER;
alien_defs[CD_FRIGATE_WING2].classDef = CD_FRIGATE_WING2; alien_defs[CD_FRIGATE_WING2].classDef = CD_FRIGATE_WING2;
@ -229,6 +247,9 @@ void alien_defs_init()
alien_defs[CD_FRIGATE_WING2].collectChance = 100; alien_defs[CD_FRIGATE_WING2].collectChance = 100;
alien_defs[CD_FRIGATE_WING2].collectType = P_ANYTHING; alien_defs[CD_FRIGATE_WING2].collectType = P_ANYTHING;
alien_defs[CD_FRIGATE_WING2].collectValue = 250; alien_defs[CD_FRIGATE_WING2].collectValue = 250;
alien_defs[CD_FRIGATE_WING2].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_FRIGATE_WING2].collectValueOriginal = 250;
alien_defs[CD_FRIGATE_WING2].score = 500;
alien_defs[CD_FRIGATE_WING2].flags = FL_WEAPCO | FL_DAMAGEOWNER; alien_defs[CD_FRIGATE_WING2].flags = FL_WEAPCO | FL_DAMAGEOWNER;
// Transport ship // Transport ship
@ -246,6 +267,9 @@ void alien_defs_init()
alien_defs[CD_TRANSPORTSHIP].collectChance = 100; alien_defs[CD_TRANSPORTSHIP].collectChance = 100;
alien_defs[CD_TRANSPORTSHIP].collectType = P_WEAPONS; alien_defs[CD_TRANSPORTSHIP].collectType = P_WEAPONS;
alien_defs[CD_TRANSPORTSHIP].collectValue = 40; alien_defs[CD_TRANSPORTSHIP].collectValue = 40;
alien_defs[CD_TRANSPORTSHIP].collectTypeOriginal = P_WEAPONS;
alien_defs[CD_TRANSPORTSHIP].collectValueOriginal = 30;
alien_defs[CD_TRANSPORTSHIP].score = 25;
alien_defs[CD_TRANSPORTSHIP].flags = FL_WEAPCO | FL_NOFIRE; alien_defs[CD_TRANSPORTSHIP].flags = FL_WEAPCO | FL_NOFIRE;
// Cargo ship // Cargo ship
@ -263,6 +287,9 @@ void alien_defs_init()
alien_defs[CD_CARGOSHIP].collectChance = 50; alien_defs[CD_CARGOSHIP].collectChance = 50;
alien_defs[CD_CARGOSHIP].collectType = P_ANYTHING; alien_defs[CD_CARGOSHIP].collectType = P_ANYTHING;
alien_defs[CD_CARGOSHIP].collectValue = 100; alien_defs[CD_CARGOSHIP].collectValue = 100;
alien_defs[CD_CARGOSHIP].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_CARGOSHIP].collectValueOriginal = 100;
alien_defs[CD_CARGOSHIP].score = 25;
alien_defs[CD_CARGOSHIP].flags = FL_WEAPCO | FL_NOFIRE; alien_defs[CD_CARGOSHIP].flags = FL_WEAPCO | FL_NOFIRE;
// Weapco Miner // Weapco Miner
@ -280,6 +307,9 @@ void alien_defs_init()
alien_defs[CD_MINER].collectChance = 100; alien_defs[CD_MINER].collectChance = 100;
alien_defs[CD_MINER].collectType = P_ANYTHING; alien_defs[CD_MINER].collectType = P_ANYTHING;
alien_defs[CD_MINER].collectValue = 30; alien_defs[CD_MINER].collectValue = 30;
alien_defs[CD_MINER].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_MINER].collectValueOriginal = 30;
alien_defs[CD_MINER].score = 100;
alien_defs[CD_MINER].flags = FL_WEAPCO | FL_NOFIRE | FL_DROPMINES; alien_defs[CD_MINER].flags = FL_WEAPCO | FL_NOFIRE | FL_DROPMINES;
// Kline // Kline
@ -297,6 +327,9 @@ void alien_defs_init()
alien_defs[CD_KLINE].collectChance = 0; alien_defs[CD_KLINE].collectChance = 0;
alien_defs[CD_KLINE].collectType = P_ANYTHING; alien_defs[CD_KLINE].collectType = P_ANYTHING;
alien_defs[CD_KLINE].collectValue = 0; alien_defs[CD_KLINE].collectValue = 0;
alien_defs[CD_KLINE].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_KLINE].collectValueOriginal = 0;
alien_defs[CD_KLINE].score = 0;
alien_defs[CD_KLINE].flags = FL_WEAPCO | FL_ALWAYSFACE | FL_CIRCLES | FL_NOBANTER; alien_defs[CD_KLINE].flags = FL_WEAPCO | FL_ALWAYSFACE | FL_CIRCLES | FL_NOBANTER;
// Aim Fighter // Aim Fighter
@ -314,6 +347,9 @@ void alien_defs_init()
alien_defs[CD_AIMFIGHTER].collectChance = 75; alien_defs[CD_AIMFIGHTER].collectChance = 75;
alien_defs[CD_AIMFIGHTER].collectType = P_ANYTHING; alien_defs[CD_AIMFIGHTER].collectType = P_ANYTHING;
alien_defs[CD_AIMFIGHTER].collectValue = 100; alien_defs[CD_AIMFIGHTER].collectValue = 100;
alien_defs[CD_AIMFIGHTER].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_AIMFIGHTER].collectValueOriginal = 100;
alien_defs[CD_AIMFIGHTER].score = 50;
alien_defs[CD_AIMFIGHTER].flags = FL_WEAPCO | FL_AIMS; alien_defs[CD_AIMFIGHTER].flags = FL_WEAPCO | FL_AIMS;
// Slave ship // Slave ship
@ -331,6 +367,9 @@ void alien_defs_init()
alien_defs[CD_SLAVETRANSPORT].collectChance = 100; alien_defs[CD_SLAVETRANSPORT].collectChance = 100;
alien_defs[CD_SLAVETRANSPORT].collectType = P_SLAVES; alien_defs[CD_SLAVETRANSPORT].collectType = P_SLAVES;
alien_defs[CD_SLAVETRANSPORT].collectValue = 25; alien_defs[CD_SLAVETRANSPORT].collectValue = 25;
alien_defs[CD_SLAVETRANSPORT].collectTypeOriginal = P_SLAVES;
alien_defs[CD_SLAVETRANSPORT].collectValueOriginal = 25;
alien_defs[CD_SLAVETRANSPORT].score = 25;
alien_defs[CD_SLAVETRANSPORT].flags = FL_WEAPCO | FL_NOFIRE | FL_NOBANTER; alien_defs[CD_SLAVETRANSPORT].flags = FL_WEAPCO | FL_NOFIRE | FL_NOBANTER;
// Good Transport // Good Transport
@ -348,6 +387,9 @@ void alien_defs_init()
alien_defs[CD_GOODTRANSPORT].collectChance = 0; alien_defs[CD_GOODTRANSPORT].collectChance = 0;
alien_defs[CD_GOODTRANSPORT].collectType = P_ANYTHING; alien_defs[CD_GOODTRANSPORT].collectType = P_ANYTHING;
alien_defs[CD_GOODTRANSPORT].collectValue = 0; alien_defs[CD_GOODTRANSPORT].collectValue = 0;
alien_defs[CD_GOODTRANSPORT].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_GOODTRANSPORT].collectValueOriginal = 0;
alien_defs[CD_GOODTRANSPORT].score = 0;
alien_defs[CD_GOODTRANSPORT].flags = FL_FRIEND | FL_NOFIRE | FL_AIMS; alien_defs[CD_GOODTRANSPORT].flags = FL_FRIEND | FL_NOFIRE | FL_AIMS;
// Sid Wilson // Sid Wilson
@ -365,6 +407,9 @@ void alien_defs_init()
alien_defs[CD_SID].collectChance = 0; alien_defs[CD_SID].collectChance = 0;
alien_defs[CD_SID].collectType = P_ANYTHING; alien_defs[CD_SID].collectType = P_ANYTHING;
alien_defs[CD_SID].collectValue = 0; alien_defs[CD_SID].collectValue = 0;
alien_defs[CD_SID].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_SID].collectValueOriginal = 0;
alien_defs[CD_SID].score = 0;
alien_defs[CD_SID].flags = FL_FRIEND | FL_AIMS; alien_defs[CD_SID].flags = FL_FRIEND | FL_AIMS;
// Mining Vessel Boss // Mining Vessel Boss
@ -382,6 +427,9 @@ void alien_defs_init()
alien_defs[CD_MINEBOSS].collectChance = 100; alien_defs[CD_MINEBOSS].collectChance = 100;
alien_defs[CD_MINEBOSS].collectType = P_ANYTHING; alien_defs[CD_MINEBOSS].collectType = P_ANYTHING;
alien_defs[CD_MINEBOSS].collectValue = 1000; alien_defs[CD_MINEBOSS].collectValue = 1000;
alien_defs[CD_MINEBOSS].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_MINEBOSS].collectValueOriginal = 255;
alien_defs[CD_MINEBOSS].score = 1000;
alien_defs[CD_MINEBOSS].flags = FL_WEAPCO | FL_IMMORTAL | FL_NOBANTER; alien_defs[CD_MINEBOSS].flags = FL_WEAPCO | FL_IMMORTAL | FL_NOBANTER;
alien_defs[CD_BOSS2_WING1].classDef = CD_BOSS2_WING1; alien_defs[CD_BOSS2_WING1].classDef = CD_BOSS2_WING1;
@ -398,6 +446,9 @@ void alien_defs_init()
alien_defs[CD_BOSS2_WING1].collectChance = 100; alien_defs[CD_BOSS2_WING1].collectChance = 100;
alien_defs[CD_BOSS2_WING1].collectType = P_ANYTHING; alien_defs[CD_BOSS2_WING1].collectType = P_ANYTHING;
alien_defs[CD_BOSS2_WING1].collectValue = 250; alien_defs[CD_BOSS2_WING1].collectValue = 250;
alien_defs[CD_BOSS2_WING1].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_BOSS2_WING1].collectValueOriginal = 255;
alien_defs[CD_BOSS2_WING1].score = 1000;
alien_defs[CD_BOSS2_WING1].flags = FL_WEAPCO | FL_DAMAGEOWNER | FL_NOBANTER; alien_defs[CD_BOSS2_WING1].flags = FL_WEAPCO | FL_DAMAGEOWNER | FL_NOBANTER;
alien_defs[CD_BOSS2_WING2].classDef = CD_BOSS2_WING2; alien_defs[CD_BOSS2_WING2].classDef = CD_BOSS2_WING2;
@ -414,6 +465,9 @@ void alien_defs_init()
alien_defs[CD_BOSS2_WING2].collectChance = 100; alien_defs[CD_BOSS2_WING2].collectChance = 100;
alien_defs[CD_BOSS2_WING2].collectType = P_ANYTHING; alien_defs[CD_BOSS2_WING2].collectType = P_ANYTHING;
alien_defs[CD_BOSS2_WING2].collectValue = 250; alien_defs[CD_BOSS2_WING2].collectValue = 250;
alien_defs[CD_BOSS2_WING2].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_BOSS2_WING2].collectValueOriginal = 255;
alien_defs[CD_BOSS2_WING2].score = 1000;
alien_defs[CD_BOSS2_WING2].flags = FL_WEAPCO | FL_DEPLOYDRONES | FL_DAMAGEOWNER | FL_NOBANTER; alien_defs[CD_BOSS2_WING2].flags = FL_WEAPCO | FL_DEPLOYDRONES | FL_DAMAGEOWNER | FL_NOBANTER;
alien_defs[CD_BOSS2_WING3].classDef = CD_BOSS2_WING3; alien_defs[CD_BOSS2_WING3].classDef = CD_BOSS2_WING3;
@ -430,6 +484,9 @@ void alien_defs_init()
alien_defs[CD_BOSS2_WING3].collectChance = 100; alien_defs[CD_BOSS2_WING3].collectChance = 100;
alien_defs[CD_BOSS2_WING3].collectType = P_ANYTHING; alien_defs[CD_BOSS2_WING3].collectType = P_ANYTHING;
alien_defs[CD_BOSS2_WING3].collectValue = 250; alien_defs[CD_BOSS2_WING3].collectValue = 250;
alien_defs[CD_BOSS2_WING3].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_BOSS2_WING3].collectValueOriginal = 255;
alien_defs[CD_BOSS2_WING3].score = 1000;
alien_defs[CD_BOSS2_WING3].flags = FL_WEAPCO | FL_DEPLOYDRONES | FL_DAMAGEOWNER | FL_NOBANTER; alien_defs[CD_BOSS2_WING3].flags = FL_WEAPCO | FL_DEPLOYDRONES | FL_DAMAGEOWNER | FL_NOBANTER;
alien_defs[CD_BOSS2_WING4].classDef = CD_BOSS2_WING4; alien_defs[CD_BOSS2_WING4].classDef = CD_BOSS2_WING4;
@ -446,6 +503,9 @@ void alien_defs_init()
alien_defs[CD_BOSS2_WING4].collectChance = 100; alien_defs[CD_BOSS2_WING4].collectChance = 100;
alien_defs[CD_BOSS2_WING4].collectType = P_ANYTHING; alien_defs[CD_BOSS2_WING4].collectType = P_ANYTHING;
alien_defs[CD_BOSS2_WING4].collectValue = 250; alien_defs[CD_BOSS2_WING4].collectValue = 250;
alien_defs[CD_BOSS2_WING4].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_BOSS2_WING4].collectValueOriginal = 255;
alien_defs[CD_BOSS2_WING4].score = 1000;
alien_defs[CD_BOSS2_WING4].flags = FL_WEAPCO | FL_DAMAGEOWNER | FL_NOBANTER; alien_defs[CD_BOSS2_WING4].flags = FL_WEAPCO | FL_DAMAGEOWNER | FL_NOBANTER;
// Drone // Drone
@ -463,6 +523,9 @@ void alien_defs_init()
alien_defs[CD_DRONE].collectChance = 10; alien_defs[CD_DRONE].collectChance = 10;
alien_defs[CD_DRONE].collectType = P_SHIELD; alien_defs[CD_DRONE].collectType = P_SHIELD;
alien_defs[CD_DRONE].collectValue = 1; alien_defs[CD_DRONE].collectValue = 1;
alien_defs[CD_DRONE].collectTypeOriginal = P_SHIELD;
alien_defs[CD_DRONE].collectValueOriginal = 1;
alien_defs[CD_DRONE].score = 0;
alien_defs[CD_DRONE].flags = FL_WEAPCO | FL_NOBANTER; alien_defs[CD_DRONE].flags = FL_WEAPCO | FL_NOBANTER;
// Experimental Fighter // Experimental Fighter
@ -480,6 +543,9 @@ void alien_defs_init()
alien_defs[CD_CLOAKFIGHTER].collectChance = 100; alien_defs[CD_CLOAKFIGHTER].collectChance = 100;
alien_defs[CD_CLOAKFIGHTER].collectType = P_CASH; alien_defs[CD_CLOAKFIGHTER].collectType = P_CASH;
alien_defs[CD_CLOAKFIGHTER].collectValue = 250; alien_defs[CD_CLOAKFIGHTER].collectValue = 250;
alien_defs[CD_CLOAKFIGHTER].collectTypeOriginal = P_CASH;
alien_defs[CD_CLOAKFIGHTER].collectValueOriginal = 255;
alien_defs[CD_CLOAKFIGHTER].score = 550;
alien_defs[CD_CLOAKFIGHTER].flags = FL_WEAPCO | FL_CANCLOAK | FL_RUNSAWAY; alien_defs[CD_CLOAKFIGHTER].flags = FL_WEAPCO | FL_CANCLOAK | FL_RUNSAWAY;
// Evil Ursula // Evil Ursula
@ -497,6 +563,9 @@ void alien_defs_init()
alien_defs[CD_EVILURSULA].collectChance = 100; alien_defs[CD_EVILURSULA].collectChance = 100;
alien_defs[CD_EVILURSULA].collectType = P_ESCAPEPOD; alien_defs[CD_EVILURSULA].collectType = P_ESCAPEPOD;
alien_defs[CD_EVILURSULA].collectValue = 1; alien_defs[CD_EVILURSULA].collectValue = 1;
alien_defs[CD_EVILURSULA].collectTypeOriginal = P_ESCAPEPOD;
alien_defs[CD_EVILURSULA].collectValueOriginal = 1;
alien_defs[CD_EVILURSULA].score = 500;
alien_defs[CD_EVILURSULA].flags = FL_WEAPCO | FL_NOBANTER; alien_defs[CD_EVILURSULA].flags = FL_WEAPCO | FL_NOBANTER;
// Mercenary // Mercenary
@ -514,6 +583,9 @@ void alien_defs_init()
alien_defs[CD_KRASS].collectChance = 100; alien_defs[CD_KRASS].collectChance = 100;
alien_defs[CD_KRASS].collectType = P_ANYTHING; alien_defs[CD_KRASS].collectType = P_ANYTHING;
alien_defs[CD_KRASS].collectValue = 2250; alien_defs[CD_KRASS].collectValue = 2250;
alien_defs[CD_KRASS].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_KRASS].collectValueOriginal = 255;
alien_defs[CD_KRASS].score = 2000;
alien_defs[CD_KRASS].flags = FL_FRIEND | FL_IMMORTAL | FL_NOBANTER; alien_defs[CD_KRASS].flags = FL_FRIEND | FL_IMMORTAL | FL_NOBANTER;
// Executive Transport // Executive Transport
@ -530,7 +602,10 @@ void alien_defs_init()
alien_defs[CD_EXEC].chance[1] = 0; alien_defs[CD_EXEC].chance[1] = 0;
alien_defs[CD_EXEC].collectChance = 0; alien_defs[CD_EXEC].collectChance = 0;
alien_defs[CD_EXEC].collectType = P_ANYTHING; alien_defs[CD_EXEC].collectType = P_ANYTHING;
alien_defs[CD_EXEC].collectValue = 2000; alien_defs[CD_EXEC].collectValue = 0;
alien_defs[CD_EXEC].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_EXEC].collectValueOriginal = 0;
alien_defs[CD_EXEC].score = 2000;
alien_defs[CD_EXEC].flags = FL_WEAPCO | FL_NOFIRE | FL_NOBANTER; alien_defs[CD_EXEC].flags = FL_WEAPCO | FL_NOFIRE | FL_NOBANTER;
// Asteroid // Asteroid
@ -548,6 +623,9 @@ void alien_defs_init()
alien_defs[CD_ASTEROID].collectChance = 25; alien_defs[CD_ASTEROID].collectChance = 25;
alien_defs[CD_ASTEROID].collectType = P_ORE; alien_defs[CD_ASTEROID].collectType = P_ORE;
alien_defs[CD_ASTEROID].collectValue = 1; alien_defs[CD_ASTEROID].collectValue = 1;
alien_defs[CD_ASTEROID].collectTypeOriginal = P_ORE;
alien_defs[CD_ASTEROID].collectValueOriginal = 1;
alien_defs[CD_ASTEROID].score = 0;
alien_defs[CD_ASTEROID].flags = FL_WEAPCO | FL_NOBANTER; alien_defs[CD_ASTEROID].flags = FL_WEAPCO | FL_NOBANTER;
alien_defs[CD_ASTEROID2].classDef = CD_ASTEROID2; alien_defs[CD_ASTEROID2].classDef = CD_ASTEROID2;
@ -564,6 +642,9 @@ void alien_defs_init()
alien_defs[CD_ASTEROID2].collectChance = 25; alien_defs[CD_ASTEROID2].collectChance = 25;
alien_defs[CD_ASTEROID2].collectType = P_ORE; alien_defs[CD_ASTEROID2].collectType = P_ORE;
alien_defs[CD_ASTEROID2].collectValue = 1; alien_defs[CD_ASTEROID2].collectValue = 1;
alien_defs[CD_ASTEROID2].collectTypeOriginal = P_ORE;
alien_defs[CD_ASTEROID2].collectValueOriginal = 1;
alien_defs[CD_ASTEROID2].score = 0;
alien_defs[CD_ASTEROID2].flags = FL_WEAPCO | FL_NOBANTER; alien_defs[CD_ASTEROID2].flags = FL_WEAPCO | FL_NOBANTER;
// Escort // Escort
@ -581,6 +662,9 @@ void alien_defs_init()
alien_defs[CD_ESCORT].collectChance = 100; alien_defs[CD_ESCORT].collectChance = 100;
alien_defs[CD_ESCORT].collectType = P_ANYTHING; alien_defs[CD_ESCORT].collectType = P_ANYTHING;
alien_defs[CD_ESCORT].collectValue = 100; alien_defs[CD_ESCORT].collectValue = 100;
alien_defs[CD_ESCORT].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_ESCORT].collectValueOriginal = 100;
alien_defs[CD_ESCORT].score = 450;
alien_defs[CD_ESCORT].flags = FL_WEAPCO; alien_defs[CD_ESCORT].flags = FL_WEAPCO;
// Mobile Ray Cannon // Mobile Ray Cannon
@ -598,6 +682,9 @@ void alien_defs_init()
alien_defs[CD_MOBILE_RAY].collectChance = 75; alien_defs[CD_MOBILE_RAY].collectChance = 75;
alien_defs[CD_MOBILE_RAY].collectType = P_ANYTHING; alien_defs[CD_MOBILE_RAY].collectType = P_ANYTHING;
alien_defs[CD_MOBILE_RAY].collectValue = 100; alien_defs[CD_MOBILE_RAY].collectValue = 100;
alien_defs[CD_MOBILE_RAY].collectTypeOriginal = P_SHIELD;
alien_defs[CD_MOBILE_RAY].collectValueOriginal = 2;
alien_defs[CD_MOBILE_RAY].score = 1000;
alien_defs[CD_MOBILE_RAY].flags = FL_WEAPCO; alien_defs[CD_MOBILE_RAY].flags = FL_WEAPCO;
// Rebel Carrier // Rebel Carrier
@ -615,6 +702,9 @@ void alien_defs_init()
alien_defs[CD_REBELCARRIER].collectChance = 0; alien_defs[CD_REBELCARRIER].collectChance = 0;
alien_defs[CD_REBELCARRIER].collectType = P_SHIELD; alien_defs[CD_REBELCARRIER].collectType = P_SHIELD;
alien_defs[CD_REBELCARRIER].collectValue = 0; alien_defs[CD_REBELCARRIER].collectValue = 0;
alien_defs[CD_REBELCARRIER].collectTypeOriginal = P_SHIELD;
alien_defs[CD_REBELCARRIER].collectValueOriginal = 0;
alien_defs[CD_REBELCARRIER].score = 0;
alien_defs[CD_REBELCARRIER].flags = FL_FRIEND; alien_defs[CD_REBELCARRIER].flags = FL_FRIEND;
// Pluto Boss // Pluto Boss
@ -629,9 +719,12 @@ void alien_defs_init()
alien_defs[CD_PLUTOBOSS].weaponType[1] = W_MICRO_ROCKETS; alien_defs[CD_PLUTOBOSS].weaponType[1] = W_MICRO_ROCKETS;
alien_defs[CD_PLUTOBOSS].chance[0] = 50; alien_defs[CD_PLUTOBOSS].chance[0] = 50;
alien_defs[CD_PLUTOBOSS].chance[1] = 2; alien_defs[CD_PLUTOBOSS].chance[1] = 2;
alien_defs[CD_PLUTOBOSS].collectChance = 0; alien_defs[CD_PLUTOBOSS].collectChance = 100;
alien_defs[CD_PLUTOBOSS].collectType = P_ANYTHING; alien_defs[CD_PLUTOBOSS].collectType = P_ANYTHING;
alien_defs[CD_PLUTOBOSS].collectValue = 1000; alien_defs[CD_PLUTOBOSS].collectValue = 1000;
alien_defs[CD_PLUTOBOSS].collectTypeOriginal = P_SHIELD;
alien_defs[CD_PLUTOBOSS].collectValueOriginal = 0;
alien_defs[CD_PLUTOBOSS].score = 1000;
alien_defs[CD_PLUTOBOSS].flags = FL_WEAPCO | FL_NOBANTER; alien_defs[CD_PLUTOBOSS].flags = FL_WEAPCO | FL_NOBANTER;
// Pluto Boss Barrier // Pluto Boss Barrier
@ -649,6 +742,9 @@ void alien_defs_init()
alien_defs[CD_BARRIER].collectChance = 100; alien_defs[CD_BARRIER].collectChance = 100;
alien_defs[CD_BARRIER].collectType = P_ANYTHING; alien_defs[CD_BARRIER].collectType = P_ANYTHING;
alien_defs[CD_BARRIER].collectValue = 25; alien_defs[CD_BARRIER].collectValue = 25;
alien_defs[CD_BARRIER].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_BARRIER].collectValueOriginal = 25;
alien_defs[CD_BARRIER].score = 1000;
alien_defs[CD_BARRIER].flags = FL_WEAPCO | FL_NOFIRE | FL_NOBANTER; alien_defs[CD_BARRIER].flags = FL_WEAPCO | FL_NOFIRE | FL_NOBANTER;
// Neptune Boss // Neptune Boss
@ -666,6 +762,9 @@ void alien_defs_init()
alien_defs[CD_NEPTUNEBOSS].collectChance = 100; alien_defs[CD_NEPTUNEBOSS].collectChance = 100;
alien_defs[CD_NEPTUNEBOSS].collectType = P_ANYTHING; alien_defs[CD_NEPTUNEBOSS].collectType = P_ANYTHING;
alien_defs[CD_NEPTUNEBOSS].collectValue = 1000; alien_defs[CD_NEPTUNEBOSS].collectValue = 1000;
alien_defs[CD_NEPTUNEBOSS].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_NEPTUNEBOSS].collectValueOriginal = 25;
alien_defs[CD_NEPTUNEBOSS].score = 1000;
alien_defs[CD_NEPTUNEBOSS].flags = FL_WEAPCO | FL_NOBANTER; alien_defs[CD_NEPTUNEBOSS].flags = FL_WEAPCO | FL_NOBANTER;
// Mobile Shield // Mobile Shield
@ -683,6 +782,9 @@ void alien_defs_init()
alien_defs[CD_MOBILESHIELD].collectChance = 100; alien_defs[CD_MOBILESHIELD].collectChance = 100;
alien_defs[CD_MOBILESHIELD].collectType = P_ANYTHING; alien_defs[CD_MOBILESHIELD].collectType = P_ANYTHING;
alien_defs[CD_MOBILESHIELD].collectValue = 25; alien_defs[CD_MOBILESHIELD].collectValue = 25;
alien_defs[CD_MOBILESHIELD].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_MOBILESHIELD].collectValueOriginal = 25;
alien_defs[CD_MOBILESHIELD].score = 250;
alien_defs[CD_MOBILESHIELD].flags = FL_WEAPCO | FL_NOFIRE | FL_NOBANTER; alien_defs[CD_MOBILESHIELD].flags = FL_WEAPCO | FL_NOFIRE | FL_NOBANTER;
// Firefly // Firefly
@ -700,6 +802,9 @@ void alien_defs_init()
alien_defs[CD_FIREFLY].collectChance = 100; alien_defs[CD_FIREFLY].collectChance = 100;
alien_defs[CD_FIREFLY].collectType = P_ANYTHING; alien_defs[CD_FIREFLY].collectType = P_ANYTHING;
alien_defs[CD_FIREFLY].collectValue = 250; alien_defs[CD_FIREFLY].collectValue = 250;
alien_defs[CD_FIREFLY].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_FIREFLY].collectValueOriginal = 250;
alien_defs[CD_FIREFLY].score = 500;
alien_defs[CD_FIREFLY].flags = FL_WEAPCO | FL_NOBANTER; alien_defs[CD_FIREFLY].flags = FL_WEAPCO | FL_NOBANTER;
// Uranus Boss // Uranus Boss
@ -717,6 +822,9 @@ void alien_defs_init()
alien_defs[CD_URANUSBOSS].collectChance = 100; alien_defs[CD_URANUSBOSS].collectChance = 100;
alien_defs[CD_URANUSBOSS].collectType = P_ANYTHING; alien_defs[CD_URANUSBOSS].collectType = P_ANYTHING;
alien_defs[CD_URANUSBOSS].collectValue = 500; alien_defs[CD_URANUSBOSS].collectValue = 500;
alien_defs[CD_URANUSBOSS].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_URANUSBOSS].collectValueOriginal = 250;
alien_defs[CD_URANUSBOSS].score = 500;
alien_defs[CD_URANUSBOSS].flags = FL_WEAPCO | FL_NOBANTER; alien_defs[CD_URANUSBOSS].flags = FL_WEAPCO | FL_NOBANTER;
// Uranus Boss Wing 1 // Uranus Boss Wing 1
@ -734,6 +842,9 @@ void alien_defs_init()
alien_defs[CD_URANUSBOSSWING1].collectChance = 100; alien_defs[CD_URANUSBOSSWING1].collectChance = 100;
alien_defs[CD_URANUSBOSSWING1].collectType = P_ANYTHING; alien_defs[CD_URANUSBOSSWING1].collectType = P_ANYTHING;
alien_defs[CD_URANUSBOSSWING1].collectValue = 250; alien_defs[CD_URANUSBOSSWING1].collectValue = 250;
alien_defs[CD_URANUSBOSSWING1].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_URANUSBOSSWING1].collectValueOriginal = 250;
alien_defs[CD_URANUSBOSSWING1].score = 500;
alien_defs[CD_URANUSBOSSWING1].flags = FL_WEAPCO | FL_IMMORTAL | FL_DAMAGEOWNER; alien_defs[CD_URANUSBOSSWING1].flags = FL_WEAPCO | FL_IMMORTAL | FL_DAMAGEOWNER;
// Uranus Boss Wing 2 // Uranus Boss Wing 2
@ -751,6 +862,9 @@ void alien_defs_init()
alien_defs[CD_URANUSBOSSWING2].collectChance = 100; alien_defs[CD_URANUSBOSSWING2].collectChance = 100;
alien_defs[CD_URANUSBOSSWING2].collectType = P_ANYTHING; alien_defs[CD_URANUSBOSSWING2].collectType = P_ANYTHING;
alien_defs[CD_URANUSBOSSWING2].collectValue = 250; alien_defs[CD_URANUSBOSSWING2].collectValue = 250;
alien_defs[CD_URANUSBOSSWING2].collectTypeOriginal = P_ANYTHING;
alien_defs[CD_URANUSBOSSWING2].collectValueOriginal = 250;
alien_defs[CD_URANUSBOSSWING2].score = 500;
alien_defs[CD_URANUSBOSSWING2].flags = FL_WEAPCO | FL_IMMORTAL | FL_DAMAGEOWNER; alien_defs[CD_URANUSBOSSWING2].flags = FL_WEAPCO | FL_IMMORTAL | FL_DAMAGEOWNER;
} }
@ -1760,6 +1874,7 @@ Fill in later...
void alien_destroy(Object *alien, Object *attacker) void alien_destroy(Object *alien, Object *attacker)
{ {
int r; int r;
int collect_type, collect_value, value;
audio_playSound(SFX_EXPLOSION, alien->x, alien->y); audio_playSound(SFX_EXPLOSION, alien->x, alien->y);
@ -1785,6 +1900,15 @@ void alien_destroy(Object *alien, Object *attacker)
if (attacker == &player) if (attacker == &player)
{ {
game.totalKills++; game.totalKills++;
if (game.difficulty == DIFFICULTY_ORIGINAL)
{
if (game.area != MISN_INTERCEPTION)
{
game.cash += alien->score;
game.cashEarned += alien->score;
}
}
if (CHANCE(1 / 16.) && (alien->flags & FL_WEAPCO) && if (CHANCE(1 / 16.) && (alien->flags & FL_WEAPCO) &&
(!(alien->flags & FL_NOBANTER))) (!(alien->flags & FL_NOBANTER)))
{ {
@ -1823,18 +1947,27 @@ void alien_destroy(Object *alien, Object *attacker)
if (CHANCE(alien->collectChance / 100.)) if (CHANCE(alien->collectChance / 100.))
{ {
int value; if (game.difficulty == DIFFICULTY_ORIGINAL)
{
collect_type = alien->collectTypeOriginal;
collect_value = alien->collectValueOriginal;
}
else
{
collect_type = alien->collectType;
collect_value = alien->collectValue;
}
if (CHANCE(1 / 10.)) if (CHANCE(1 / 10.))
alien->collectValue *= 2; collect_value *= 2;
while (alien->collectValue > 0) while (collect_value > 0)
{ {
value = RANDRANGE(10, 100); value = RANDRANGE(10, 100);
if (value > alien->collectValue) if (value > collect_value)
value = alien->collectValue; value = collect_value;
collectable_add(alien->x, alien->y, alien->collectType, value, MAX(600, 2 * alien->collectValue)); collectable_add(alien->x, alien->y, collect_type, value, MAX(600, 2 * collect_value));
alien->collectValue -= value; collect_value -= value;
} }
} }

View File

@ -66,7 +66,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define Y_VIEW_BORDER 100 #define Y_VIEW_BORDER 100
#define CAMERA_MAX_SPEED 3. #define CAMERA_MAX_SPEED 3.
#define MAX_HOMING 20 #define MAX_HOMING 20
#define MAX_DOUBLE_HOMING 15 #define MAX_DOUBLE_HOMING (game.difficulty != DIFFICULTY_ORIGINAL ? 15 : 10)
#define MAX_MICRO_HOMING 10 #define MAX_MICRO_HOMING 10
#define RAY_DAMAGE_DELAY 10 #define RAY_DAMAGE_DELAY 10

View File

@ -339,9 +339,6 @@ static void game_doCollectables()
switch(collectable->type) switch(collectable->type)
{ {
case P_CASH: case P_CASH:
if (game.difficulty == DIFFICULTY_ORIGINAL)
collectable->value = collectable->value * 3 / 2;
game.cash += collectable->value; game.cash += collectable->value;
game.cashEarned += collectable->value; game.cashEarned += collectable->value;
sprintf(temp, "Got $%d ", collectable->value); sprintf(temp, "Got $%d ", collectable->value);

View File

@ -125,7 +125,11 @@ static void adjustShopPrices()
shopItems[SHOP_PLASMA_MIN_RATE].price += shopItems[SHOP_PLASMA_MAX_RATE].price; shopItems[SHOP_PLASMA_MIN_RATE].price += shopItems[SHOP_PLASMA_MAX_RATE].price;
} }
if (game.difficulty == DIFFICULTY_ORIGINAL)
shopItems[SHOP_PLASMA_MAX_AMMO].price = (5 * game.maxPlasmaAmmo);
else
shopItems[SHOP_PLASMA_MAX_AMMO].price = (10 * (game.maxPlasmaAmmo - 75)); shopItems[SHOP_PLASMA_MAX_AMMO].price = (10 * (game.maxPlasmaAmmo - 75));
shopItems[SHOP_ROCKET_MAX_AMMO].price = (25 * game.maxRocketAmmo); shopItems[SHOP_ROCKET_MAX_AMMO].price = (25 * game.maxRocketAmmo);
if (game.maxPlasmaOutput >= game.maxPlasmaOutputLimit) if (game.maxPlasmaOutput >= game.maxPlasmaOutputLimit)
@ -664,6 +668,9 @@ static void buy(int i)
shopSelectedItem = -3; shopSelectedItem = -3;
return; return;
} }
if (game.difficulty == DIFFICULTY_ORIGINAL)
game.maxPlasmaAmmo += 10;
else
game.maxPlasmaAmmo += 25; game.maxPlasmaAmmo += 25;
break; break;
@ -938,6 +945,9 @@ static void sell(int i)
shopSelectedItem = -1; shopSelectedItem = -1;
return; return;
} }
if (game.difficulty == DIFFICULTY_ORIGINAL)
game.maxPlasmaAmmo -= 10;
else
game.maxPlasmaAmmo -= 25; game.maxPlasmaAmmo -= 25;
while (player.ammo[0] > game.maxPlasmaAmmo) while (player.ammo[0] > game.maxPlasmaAmmo)

View File

@ -62,6 +62,10 @@ typedef struct Object_ {
int collectType; // What the Object is carrying int collectType; // What the Object is carrying
int collectValue; // What it is worth int collectValue; // What it is worth
int collectTypeOriginal; // collectType in Classic difficulty
int collectValueOriginal; // collectValue in Classic difficulty
int score; // Classic difficulty only; money earned by killing
unsigned long int flags; // Various flags for an Object unsigned long int flags; // Various flags for an Object
float x, y, dx, dy; float x, y, dx, dy;