📄 missions.cpp
字号:
missions[i].completed2[j] = complete;
}
fscanf(fp, "%d", &add);
missions[i].addAliens = add;
fclose(fp);
}
}
void initMissions(){loadMissions();}
#else
void saveMissions()
{
FILE *fp;
char filename[65];
for (int i = 0 ; i < MAX_MISSIONS ; i++)
{
strcpy(filename, "");
sprintf(filename, "data/mission%.2d.dat", i);
//WRITE MISSION DATA
fp = fopen(filename, "wb");
if (fp == NULL)
{
printf("Unable to write Mission Data File (%s)\n", filename);
exit(1);
}
for (int j = 0 ; j < 3 ; j++)
{
fprintf(fp, "%s\n", missions[i].primaryObjective[j]);
fprintf(fp, "%d ", missions[i].primaryType[j]);
fprintf(fp, "%d ", missions[i].target1[j]);
fprintf(fp, "%d ", missions[i].targetValue1[j]);
fprintf(fp, "%d ", missions[i].timeLimit1[j]);
fprintf(fp, "%d\n", missions[i].completed1[j]);
}
for (int j = 0 ; j < 3 ; j++)
{
fprintf(fp, "%s\n", missions[i].secondaryObjective[j]);
fprintf(fp, "%d ", missions[i].secondaryType[j]);
fprintf(fp, "%d ", missions[i].target2[j]);
fprintf(fp, "%d ", missions[i].targetValue2[j]);
fprintf(fp, "%d ", missions[i].timeLimit2[j]);
fprintf(fp, "%d\n", missions[i].completed2[j]);
}
fprintf(fp, "%d ", missions[i].addAliens);
// Put an extra line for the PAK file "just in case"
fprintf(fp, "\n");
fclose(fp);
}
}
/*
This is where all the missions are defined. This will be placed
into a data file when the game is finished.
*/
void initMissions()
{
clearAllMissions();
// Seconds to wait between attempting to add an enemy
int SOMETIMES = 40 * 60;
int NORMAL = 15 * 60;
int FREQUENT = 5 * 60;
int ALWAYS = 1 * 60;
int NEVER = -1;
// Mission 0
sprintf(missions[0].primaryObjective[0], "Escape from WEAPCO Persuit");
missions[0].primaryType[0] = M_DESTROY_ALL_TARGETS;
missions[0].completed1[0] = OB_INCOMPLETE;
// Mission 1
sprintf(missions[1].primaryObjective[0], "Collect $500 to pay Mercenary for FIREFLY");
missions[1].primaryType[0] = M_COLLECT;
missions[1].target1[0] = P_CASH;
missions[1].targetValue1[0] = 500;
missions[1].completed1[0] = OB_INCOMPLETE;
sprintf(missions[1].primaryObjective[1], "Destroy all remaining WEAPCO fighters");
missions[1].primaryType[1] = M_DESTROY_ALL_TARGETS;
missions[1].completed1[1] = OB_INCOMPLETE;
missions[1].addAliens = FREQUENT;
// Mission 2
sprintf(missions[2].primaryObjective[0], "Collect 6 Cargo Pods");
missions[2].primaryType[0] = M_COLLECT;
missions[2].target1[0] = P_CARGO;
missions[2].targetValue1[0] = 6;
missions[2].completed1[0] = OB_INCOMPLETE;
sprintf(missions[2].primaryObjective[1], "Do not destroy *ANY* Cargo Pods");
missions[2].primaryType[1] = M_PROTECT_PICKUP;
missions[2].target1[1] = P_CARGO;
missions[2].targetValue1[1] = 0;
missions[2].completed1[1] = OB_CONDITION;
sprintf(missions[2].secondaryObjective[0], "Destroy all remaining WEAPCO fighters");
missions[2].secondaryType[0] = M_DESTROY_ALL_TARGETS;
missions[2].completed2[0] = OB_INCOMPLETE;
missions[2].addAliens = FREQUENT;
// Mission 3
sprintf(missions[3].primaryObjective[0], "Destroy 5 WEAPCO Missile Boats");
missions[3].primaryType[0] = M_DESTROY_TARGET_TYPE;
missions[3].target1[0] = CD_MISSILEBOAT;
missions[3].targetValue1[0] = 5;
missions[3].completed1[0] = OB_INCOMPLETE;
sprintf(missions[3].secondaryObjective[0], "Destroy all remaining WEAPCO fighters");
missions[3].secondaryType[0] = M_DESTROY_ALL_TARGETS;
missions[3].completed2[0] = OB_INCOMPLETE;
missions[3].addAliens = NORMAL;
// Mission 4
sprintf(missions[4].primaryObjective[0], "Destroy 9 WEAPCO Miners");
missions[4].primaryType[0] = M_DESTROY_TARGET_TYPE;
missions[4].target1[0] = CD_MINER;
missions[4].targetValue1[0] = 9;
missions[4].completed1[0] = OB_INCOMPLETE;
sprintf(missions[4].secondaryObjective[0], "Destroy all remaining WEAPCO fighters");
missions[4].secondaryType[0] = M_DESTROY_ALL_TARGETS;
missions[4].completed2[0] = OB_INCOMPLETE;
missions[4].addAliens = NORMAL;
// Mission 5
sprintf(missions[5].primaryObjective[0], "Destroy WEAPCO Frigate");
missions[5].primaryType[0] = M_DESTROY_TARGET_TYPE;
missions[5].target1[0] = CD_BOSS;
missions[5].targetValue1[0] = 1;
missions[5].completed1[0] = OB_INCOMPLETE;
missions[5].timeLimit1[0] = 3;
missions[5].addAliens = SOMETIMES;
/*
Mission 6 is the rescue 250 slaves mission. It doesn't actually
count in this list. This is just here as a place holder
*/
// Mission 7
sprintf(missions[7].primaryObjective[0], "Rescue Phoebe Lexx");
missions[7].primaryType[0] = M_DESTROY_TARGET_TYPE;
missions[7].target1[0] = CD_CARGOSHIP;
missions[7].targetValue1[0] = 1;
missions[7].completed1[0] = OB_INCOMPLETE;
sprintf(missions[7].primaryObjective[1], "Do not allow Phoebe to be killed");
missions[7].primaryType[1] = M_PROTECT_TARGET;
missions[7].target1[1] = CD_PHOEBE;
missions[7].targetValue1[1] = 0;
missions[7].completed1[1] = OB_CONDITION;
sprintf(missions[7].primaryObjective[2], "Destroy all WEAPCO forces");
missions[7].primaryType[2] = M_DESTROY_TARGET_TYPE;
missions[7].target1[2] = CD_ANY;
missions[7].targetValue1[2] = 35;
missions[7].completed1[2] = OB_INCOMPLETE;
missions[7].addAliens = ALWAYS;
// Mission 8
sprintf(missions[8].primaryObjective[0], "Assist medical supply craft");
missions[8].primaryType[0] = M_ESCAPE_TARGET;
missions[8].target1[0] = CD_GOODTRANSPORT;
missions[8].targetValue1[0] = 0;
missions[8].completed1[0] = OB_INCOMPLETE;
sprintf(missions[8].primaryObjective[1], "Do not allow supply craft to be destroyed");
missions[8].primaryType[1] = M_PROTECT_TARGET;
missions[8].target1[1] = CD_GOODTRANSPORT;
missions[8].targetValue1[1] = 0;
missions[8].completed1[1] = OB_CONDITION;
sprintf(missions[8].secondaryObjective[0], "Destroy all remaining WEAPCO fighters");
missions[8].secondaryType[0] = M_DESTROY_ALL_TARGETS;
missions[8].completed2[0] = OB_INCOMPLETE;
missions[8].addAliens = FREQUENT;
// Mission 9
sprintf(missions[9].primaryObjective[0], "Disable five WEAPCO supply craft");
missions[9].primaryType[0] = M_DISABLE_TARGET;
missions[9].target1[0] = CD_CARGOSHIP;
missions[9].targetValue1[0] = 5;
missions[9].completed1[0] = OB_INCOMPLETE;
sprintf(missions[9].primaryObjective[1], "Destroy all remaining WEAPCO fighters");
missions[9].primaryType[1] = M_DESTROY_ALL_TARGETS;
missions[9].completed1[1] = OB_INCOMPLETE;
sprintf(missions[9].primaryObjective[2], "Protect supply craft AND Sid Wilson");
missions[9].primaryType[2] = M_PROTECT_TARGET;
missions[9].target1[2] = CD_CARGOSHIP;
missions[9].targetValue1[2] = 0;
missions[9].completed1[2] = OB_CONDITION;
missions[9].addAliens = FREQUENT;
// Mission 10
sprintf(missions[10].primaryObjective[0], "Locate doctor's escape pod");
missions[10].primaryType[0] = M_COLLECT;
missions[10].target1[0] = P_ESCAPEPOD;
missions[10].targetValue1[0] = 1;
missions[10].completed1[0] = OB_INCOMPLETE;
sprintf(missions[10].primaryObjective[1], "Do not destroy doctor's escape pod");
missions[10].primaryType[1] = M_PROTECT_PICKUP;
missions[10].target1[1] = P_ESCAPEPOD;
missions[10].targetValue1[1] = 1; // DONE ON PURPOSE!! DO NOT CHANGE THIS!!!!
missions[10].completed1[1] = OB_CONDITION;
sprintf(missions[10].secondaryObjective[0], "Collect 10 pieces of Ore");
missions[10].secondaryType[0] = M_COLLECT;
missions[10].target2[0] = P_ORE;
missions[10].targetValue2[0] = 10;
missions[10].completed2[0] = OB_INCOMPLETE;
missions[10].addAliens = ALWAYS;
missions[10].timeLimit1[0] = 3;
missions[10].timeLimit2[0] = 3;
// Mission 11 (hmmm, that was too easy...)
sprintf(missions[11].primaryObjective[0], "Destroy WEAPCO ore mining craft");
missions[11].primaryType[0] = M_DESTROY_TARGET_TYPE;
missions[11].target1[0] = CD_BOSS;
missions[11].targetValue1[0] = 1;
missions[11].completed1[0] = OB_INCOMPLETE;
sprintf(missions[11].secondaryObjective[0], "Save present slaves");
missions[11].secondaryType[0] = M_PROTECT_PICKUP;
missions[11].target2[0] = P_SLAVES;
missions[11].completed2[0] = OB_CONDITION;
sprintf(missions[11].primaryObjective[1], "Battle Kline");
missions[11].primaryType[1] = M_ESCAPE_TARGET;
missions[11].target1[1] = CD_KLINE;
missions[11].targetValue1[1] = 1;
missions[11].completed1[1] = OB_HIDDEN;
missions[11].addAliens = NEVER;
/*
Mission 12 is the Destroy Experimental Fighter mission
this is just a place holder
*/
// Mission 13
sprintf(missions[13].primaryObjective[0], "Destroy Ursula's ship");
missions[13].primaryType[0] = M_DESTROY_TARGET_TYPE;
missions[13].target1[0] = CD_EVILURSULA;
missions[13].targetValue1[0] = 0;
missions[13].completed1[0] = OB_INCOMPLETE;
sprintf(missions[13].primaryObjective[1], "Capture Ursula's escape pod");
missions[13].primaryType[1] = M_COLLECT;
missions[13].target1[1] = P_ESCAPEPOD;
missions[13].targetValue1[1] = 1;
missions[13].completed1[1] = OB_INCOMPLETE;
sprintf(missions[13].primaryObjective[2], "Do not kill Ursula");
missions[13].primaryType[2] = M_PROTECT_PICKUP;
missions[13].target1[2] = P_ESCAPEPOD;
missions[13].targetValue1[2] = 0;
missions[13].completed1[2] = OB_CONDITION;
sprintf(missions[13].secondaryObjective[0], "Destroy all remaining WEAPCO fighters");
missions[13].secondaryType[0] = M_DESTROY_ALL_TARGETS;
missions[13].completed2[0] = OB_INCOMPLETE;
missions[13].addAliens = FREQUENT;
// Mission 14
sprintf(missions[14].primaryObjective[0], "Assist attack on WEAPCO ore mining craft");
missions[14].primaryType[0] = M_DESTROY_TARGET_TYPE;
missions[14].target1[0] = CD_BOSS;
missions[14].targetValue1[0] = 1;
missions[14].completed1[0] = OB_INCOMPLETE;
sprintf(missions[14].primaryObjective[1], "At least 1 rebel craft must survive");
missions[14].primaryType[1] = M_PROTECT_TARGET;
missions[14].target1[1] = CD_REBELCARRIER;
missions[14].targetValue1[1] = 2;
missions[14].completed1[1] = OB_CONDITION;
sprintf(missions[14].primaryObjective[2], "Destroy all present WEAPCO forces");
missions[14].primaryType[2] = M_DESTROY_ALL_TARGETS;
missions[14].completed1[2] = OB_INCOMPLETE;
missions[14].addAliens = ALWAYS;
// Mission 15
sprintf(missions[15].primaryObjective[0], "Collect 25 pieces of Ore");
missions[15].primaryType[0] = M_COLLECT;
missions[15].target1[0] = P_ORE;
missions[15].targetValue1[0] = 25;
missions[15].completed1[0] = OB_INCOMPLETE;
sprintf(missions[15].secondaryObjective[0], "Collect 25 pieces of Ore");
missions[15].secondaryType[0] = M_COLLECT;
missions[15].target2[0] = P_ORE;
missions[15].targetValue2[0] = 25;
missions[15].completed2[0] = OB_INCOMPLETE;
missions[15].addAliens = ALWAYS;
// Mission 16
sprintf(missions[16].primaryObjective[0], "Collect $2000 to pay mercenary");
missions[16].primaryType[0] = M_COLLECT;
missions[16].target1[0] = P_CASH;
missions[16].targetValue1[0] = 2000;
missions[16].completed1[0] = OB_INCOMPLETE;
sprintf(missions[16].primaryObjective[1], "Destroy all remaining WEAPCO fighters");
missions[16].primaryType[1] = M_DESTROY_ALL_TARGETS;
missions[16].completed1[1] = OB_INCOMPLETE;
missions[16].addAliens = ALWAYS;
// Mission 17
sprintf(missions[17].primaryObjective[0], "Destroy escorts");
missions[17].primaryType[0] = M_DESTROY_TARGET_TYPE;
missions[17].target1[0] = CD_ESCORT;
missions[17].targetValue1[0] = 5;
missions[17].completed1[0] = OB_INCOMPLETE;
sprintf(missions[17].primaryObjective[1], "Disable executive transport");
missions[17].primaryType[1] = M_ESCAPE_TARGET;
missions[17].target1[1] = CD_BOSS;
missions[17].targetValue1[1] = 1;
missions[17].completed1[1] = OB_INCOMPLETE;
sprintf(missions[17].primaryObjective[2], "Destroy all remaining WEAPCO fighters");
missions[17].primaryType[2] = M_DESTROY_ALL_TARGETS;
missions[17].completed1[2] = OB_INCOMPLETE;
missions[17].addAliens = NORMAL;
// Mission 18
sprintf(missions[18].primaryObjective[0], "Destroy executive transport");
missions[18].primaryType[0] = M_DESTROY_TARGET_TYPE;
missions[18].target1[0] = CD_BOSS;
missions[18].targetValue1[0] = 1;
missions[18].completed1[0] = OB_INCOMPLETE;
missions[18].addAliens = ALWAYS;
// Mission 19
sprintf(missions[19].primaryObjective[0], "Destroy planetary guardian");
missions[19].primaryType[0] = M_DESTROY_TARGET_TYPE;
missions[19].target1[0] = CD_PLUTOBOSS;
missions[19].targetValue1[0] = 1;
missions[19].completed1[0] = OB_INCOMPLETE;
sprintf(missions[19].primaryObjective[1], "Destroy all remaining WEAPCO fighters");
missions[19].primaryType[1] = M_DESTROY_ALL_TARGETS;
missions[19].completed1[1] = OB_INCOMPLETE;
missions[19].timeLimit1[0] = 5;
missions[19].timeLimit1[1] = 5;
missions[19].addAliens = ALWAYS;
// Mission 20
sprintf(missions[20].primaryObjective[0], "Destroy planetary guardian");
missions[20].primaryType[0] = M_DESTROY_TARGET_TYPE;
missions[20].target1[0] = CD_NEPTUNEBOSS;
missions[20].targetValue1[0] = 1;
missions[20].completed1[0] = OB_INCOMPLETE;
sprintf(missions[20].primaryObjective[1], "Destroy all remaining WEAPCO fighters");
missions[20].primaryType[1] = M_DESTROY_ALL_TARGETS;
missions[20].completed1[1] = OB_INCOMPLETE;
missions[20].timeLimit1[0] = 5;
missions[20].timeLimit1[1] = 5;
missions[20].addAliens = ALWAYS;
// Mission 21
sprintf(missions[21].primaryObjective[0], "Destroy all present WEAPCO forces");
missions[21].primaryType[0] = M_DESTROY_TARGET_TYPE;
missions[21].target1[0] = CD_URANUSBOSS;
missions[21].targetValue1[0] = 1;
missions[21].completed1[0] = OB_INCOMPLETE;
sprintf(missions[21].primaryObjective[1], "Destroy all remaining WEAPCO fighters");
missions[21].primaryType[1] = M_DESTROY_ALL_TARGETS;
missions[21].completed1[1] = OB_INCOMPLETE;
missions[21].timeLimit1[0] = 5;
missions[21].timeLimit1[1] = 5;
missions[21].addAliens = ALWAYS;
// Mission 22
sprintf(missions[22].primaryObjective[0], "Destroy outer defence systems");
missions[22].primaryType[0] = M_DESTROY_TARGET_TYPE;
missions[22].target1[0] = CD_MOBILE_RAY;
missions[22].targetValue1[0] = 6;
missions[22].completed1[0] = OB_INCOMPLETE;
sprintf(missions[22].primaryObjective[1], "Destroy all remaining WEAPCO craft");
missions[22].primaryType[1] = M_DESTROY_ALL_TARGETS;
missions[22].completed1[1] = OB_INCOMPLETE;
missions[22].addAliens = NORMAL;
// Mission 23
sprintf(missions[23].primaryObjective[0], "Investigate distress call");
missions[23].primaryType[0] = M_DESTROY_ALL_TARGETS;
missions[23].completed1[0] = OB_CONDITION;
sprintf(missions[23].primaryObjective[1], "Defeat Krass Tyler");
missions[23].primaryType[1] = M_DESTROY_TARGET_TYPE;
missions[23].target1[1] = CD_KRASS;
missions[23].targetValue1[1] = 1;
missions[23].completed1[1] = OB_HIDDEN;
sprintf(missions[23].primaryObjective[2], "Destroy Krass' support group");
missions[23].primaryType[2] = M_DESTROY_ALL_TARGETS;
missions[23].target1[1] = CD_FIREFLY;
missions[23].targetValue1[1] = 4;
missions[23].completed1[2] = OB_HIDDEN;
missions[23].addAliens = ALWAYS;
// Mission 24
sprintf(missions[24].primaryObjective[0], "Navigate asteroid belt");
missions[24].primaryType[0] = M_DESTROY_TARGET_TYPE;
missions[24].target1[0] = CD_BOSS;
missions[24].targetValue1[0] = 1;
missions[24].completed1[0] = OB_INCOMPLETE;
missions[24].timeLimit1[0] = 2;
missions[24].addAliens = ALWAYS;
// Mission 25
sprintf(missions[25].primaryObjective[0], "Destroy WEAPCO frontline forces");
missions[25].primaryType[0] = M_DESTROY_TARGET_TYPE;
missions[25].target1[0] = CD_ANY;
missions[25].targetValue1[0] = 100;
missions[25].completed1[0] = OB_INCOMPLETE;
missions[25].addAliens = ALWAYS;
// Mission 26
sprintf(missions[26].primaryObjective[0], "Defeat Kline");
missions[26].primaryType[0] = M_DESTROY_ALL_TARGETS;
missions[26].completed1[0] = OB_INCOMPLETE;
// Interception Mission
strcpy(missions[MAX_MISSIONS - 1].primaryObjective[0], "");
missions[MAX_MISSIONS - 1].primaryType[0] = M_DESTROY_ALL_TARGETS;
missions[MAX_MISSIONS - 1].completed1[0] = OB_INCOMPLETE;
saveMissions();
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -