📄 missions.cpp
字号:
fscanf(fp, "%d", &value); fscanf(fp, "%d", &time); fscanf(fp, "%d%*c", &complete); strcpy(missions[i].secondaryObjective[j], objective); missions[i].secondaryType[j] = type; missions[i].target2[j] = target; missions[i].targetValue2[j] = value; missions[i].timeLimit2[j] = time; missions[i].completed2[j] = complete; } fscanf(fp, "%d", &add); missions[i].addAliens = add; fclose(fp); }}void initMissions(){loadMissions();}#elsevoid 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 placedinto 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 + -