1 #ifndef __QUESTS_H 2 #define __QUESTS_H 3 4 #include "Campaign_Types.h" 5 #include "Facts.h" 6 #include "StrategicMap.h" 7 8 9 // Quest.ubStatus values 10 #define QUESTNOTSTARTED 0 11 #define QUESTINPROGRESS 1 12 #define QUESTDONE 2 13 14 #define MAX_QUESTS 30 15 #define MAX_FACTS 65536 16 #define NUM_FACTS 500 //If you increase this number, add entries to the fact text list in QuestText.c 17 18 19 #define MAP_ROW_A 1 20 #define MAP_ROW_B 2 21 #define MAP_ROW_C 3 22 #define MAP_ROW_D 4 23 #define MAP_ROW_E 5 24 #define MAP_ROW_F 6 25 #define MAP_ROW_G 7 26 #define MAP_ROW_H 8 27 #define MAP_ROW_I 9 28 #define MAP_ROW_J 10 29 #define MAP_ROW_K 11 30 #define MAP_ROW_L 12 31 #define MAP_ROW_M 13 32 #define MAP_ROW_N 14 33 #define MAP_ROW_O 15 34 #define MAP_ROW_P 16 35 36 37 38 39 40 41 // -------------------------------------------------------------------------------------- 42 // Q U E S T D E F I N E S 43 // -------------------------------------------------------------------------------------- 44 45 enum Quests 46 { 47 QUEST_DELIVER_LETTER = 0, 48 QUEST_FOOD_ROUTE, 49 QUEST_KILL_TERRORISTS, 50 QUEST_KINGPIN_IDOL, 51 QUEST_KINGPIN_MONEY, 52 QUEST_RUNAWAY_JOEY, 53 QUEST_RESCUE_MARIA, 54 QUEST_CHITZENA_IDOL, 55 QUEST_HELD_IN_ALMA, 56 QUEST_INTERROGATION, 57 58 QUEST_ARMY_FARM, // 10 59 QUEST_FIND_SCIENTIST, 60 QUEST_DELIVER_VIDEO_CAMERA, 61 QUEST_BLOODCATS, 62 QUEST_FIND_HERMIT, 63 QUEST_CREATURES, 64 QUEST_CHOPPER_PILOT, 65 QUEST_ESCORT_SKYRIDER, 66 QUEST_FREE_DYNAMO, 67 QUEST_ESCORT_TOURISTS, 68 69 QUEST_FREE_CHILDREN, // 20 70 QUEST_LEATHER_SHOP_DREAM, 71 72 QUEST_KILL_DEIDRANNA = 25 73 }; 74 /* 75 // The first quest is mandatory. Player must find Miguel and deliver letter to him. The tough 76 // part is finding him. Miguel is UNDERGROUND in EAST OMERTA. Only by talking to Miguel's right 77 // hand man will the player be delivered to this hideout. This hideout will also serve as the 78 // player's HQ and inventory stash. 79 #define QUEST_DELIVER_LETTER 0 80 81 82 // This quest is triggered by Miguel. Player can liberate route from either SAN MONA or 83 // Drassen. Result allows player to hire on 2 of Miguel's guys. 84 #define QUEST_FOOD_ROUTE 1 85 86 // terrorist quests: 3 out of possible 6 per game - randomized which 3 and where. The 87 // Bounty Hunter will either appear in CAMBRIA or ALMA. He'll give a diskette with files 88 // on three of these terrorists. (we won't give files for all six since it may confuse 89 // player if ony 3 of them exist). The files will contain photographs. The terrorists will go 90 // by aliases and the photographs will be hard to tell if the NPC is really a terrorist. 91 // Bounty Hunter will give reward ($$$ CASH $$$) for proof of each death. 92 #define QUEST_KILL_TERRORISTS 2 93 #define QUEST_KILL_IMPOSTER 3 94 #define QUEST_KILL_TERRORIST3 4 95 #define QUEST_KILL_TERRORIST4 5 96 #define QUEST_KILL_TERRORIST5 6 97 #define QUEST_KILL_TERRORIST6 7 98 99 // While there'll always be one arms dealer in SAN MONA, there'll be a second one 100 // randomized in the outskirts of either: GRUMM, BARLINETTA or ESTONI. Only way player 101 // will know where to look will be to talk to certain town residents. 102 #define QUEST_FIND_ARMSDEALER 8 103 104 105 // CAMBRIA has 4 medical doctors, supplies and facilities 106 #define QUEST_MEDICAL_FACILITY 9 // Cambria 107 108 109 // A hermit will exist in each game, but in a different location. The player can try to 110 // talk to him, but he won't admit much. If the player threatens him, he gets his pet blood 111 // cats to attack the player. However, if the player talks to the hermit's brother, the brother 112 // will give valuable info (a code phrase) to the player that will allow the hermit to talk 113 // to the player, telling him about using creature blood when in the mines and giving him a 114 // vile - good enough for 3 mercs. 115 #define QUEST_FIND_HERMIT 10 116 117 118 // SAN MONA is a tough town. Player will find it tough to get any info out of any residents 119 // because they won't trust the player's mercs. SAN MONA doesn't have it as tough as any of 120 // the other towns - the local authorities (Queen's police) is as corrupt as the residents 121 // and to protect themselves they don't deal with outsiders. All residents will more or less 122 // let the player know that unless the word comes down from the top dude, no one will speak 123 // or deal with them. So, the player must seek out the top dude who'll want the player to 124 // fight his strongest bodyguard (hand to hand or knife). 125 #define QUEST_SAN_MONA_FIGHT 11 126 127 128 129 // Need a way to bring a kid giving us something into the picture. 130 131 132 // Micky returns in JA2 but with a new occupation. 133 #define QUEST_FIND_MICKY 12 134 135 136 137 #define QUEST_FREE_PRISONERS 13 // Tixa 138 139 #define QUEST_FIND_SCIENTIST 14 140 141 142 #define QUEST_KILL_BUGS 15 // Queen bug - randomized location? 143 144 // 145 #define QUEST_ESCAPE_MEDUNA 16 146 147 // Arulco farmer in F11 (Juan Erizia) is suspected of harboring a weapons cache in support 148 // of the Queen's forces. Player finds out about him in Cambria via conversation with a non 149 // family member (many of Cambria's residents are related/Erizias). So, player can go 150 // investigate. F11 must be liberated and Juan Erizia must still be alive. We randomize 151 // between QUEST_WEAPON_FARM and QUEST_SICK_WIFE. Player goes to talk to Juan. If he arrives 152 // during nighttime, there won't be too many cousins hanging around, but player has to be 153 // careful 154 //any attempt to 155 // investigate will awaken everyone, a battle will ensue. 156 157 158 // Player finds out through conversation in Cambria that Juan suspected of harboring weapons 159 // cache. 160 161 // Juan is very protective of his farm. 162 // Juan has 3 sons, 4 nephews and a sick wife. 163 // Juan refuses attempts to inspect his farm unless his brother has arranged it. 164 // Brother Emile is in Cambria. 165 // Player can investigate at night as long as he doesn't wake anyone. 166 // If player has talked to Emile, Juan will give him permission to investigate everywhere 167 // except his bedroom (citing a sick wife). 168 169 170 171 172 #define QUEST_WEAPON_FARM 17 173 174 #define QUEST_SICK_WIFE 18 175 176 177 // Queen has removed a national & historic treasure from the ruins of Chitzena. It is 178 // believed a wealthy supporter of the Queen purchased the item and that it is located in 179 // his home in Balime. Returning the treasure to Chitzena boosts loyalty points. 180 #define QUEST_RUIN_ARTIFACT 19 181 182 183 // In Cambria, there is a serial killer on the loose, attacking miners. This will only 184 // start to happen once player has control over the city & mine. It affects the number 185 // of residents willing to work in the mines (loyalty basically). 186 #define QUEST_MURDERER 20 187 188 // Find the chopper pilot near Drassen(?) and get him to work for you. 189 #define QUEST_CHOPPER_PILOT 21 190 191 #define QUEST_KILL_DEIDRANNA 29 // Meduna 192 193 194 195 // -------------------------------------------------------------------------------------- 196 */ 197 198 199 #define PABLOS_STOLEN_DEST_GRIDNO 1 200 #define LOST_SHIPMENT_GRIDNO 2 201 202 #define START_SECTOR SEC_A9 203 #define START_SECTOR_LEAVE_EQUIP_GRIDNO 4868 204 205 // NB brothel rooms 88-90 removed because they are the antechamber 206 #define IN_BROTHEL( room ) (gWorldSectorX == 5 && gWorldSectorY == MAP_ROW_C && (room) >= 91 && (room) <= 119) 207 #define IN_BROTHEL_GUARD_ROOM( room ) ( room == 110 ) 208 209 #define IN_KINGPIN_HOUSE( room ) ( gWorldSectorX == 5 && gWorldSectorY == MAP_ROW_D && (room) >= 30 && (room) <= 39 ) 210 211 #define LOYALTY_LOW_THRESHOLD 30 212 #define LOYALTY_OK_THRESHOLD 50 213 #define LOYALTY_HIGH_THRESHOLD 80 214 215 extern UINT8 gubQuest[MAX_QUESTS]; 216 extern UINT8 gubFact[NUM_FACTS]; 217 218 extern void SetFactTrue(Fact); 219 extern void SetFactFalse(Fact); 220 extern BOOLEAN CheckFact(Fact, UINT8 ubProfileID); 221 222 extern void StartQuest( UINT8 ubQuest, INT16 sSectorX, INT16 sSectorY ); 223 extern void EndQuest( UINT8 ubQuest, INT16 sSectorX, INT16 sSectorY ); 224 225 extern void InternalStartQuest( UINT8 ubQuest, INT16 sSectorX, INT16 sSectorY, BOOLEAN fUpdateHistory ); 226 extern void InternalEndQuest( UINT8 ubQuest, INT16 sSectorX, INT16 sSectorY, BOOLEAN fUpdateHistory ); 227 228 229 extern void CheckForQuests( UINT32 uiDay ); 230 231 void InitQuestEngine(void); 232 233 void LoadQuestInfoFromSavedGameFile(HWFILE); 234 void SaveQuestInfoToSavedGameFile(HWFILE); 235 236 BOOLEAN NPCInRoom(UINT8 ubProfileID, UINT8 ubRoomID); 237 238 #endif 239