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