1 #ifndef __INTERFACE_DIALOGUE_H 2 #define __INTERFACE_DIALOGUE_H 3 4 #include "Button_System.h" 5 #include "MouseSystem.h" 6 #include "NPC.h" 7 8 #include <string_theory/string> 9 10 11 extern UINT8 gubSrcSoldierProfile; 12 13 14 // Structure used in Tactical display of NPC dialogue 15 struct NPC_DIALOGUE_TYPE 16 { 17 FACETYPE *face; 18 INT16 sX; 19 INT16 sY; 20 INT16 sPopupX; 21 INT16 sPopupY; 22 UINT8 ubPopupOrientation; 23 UINT8 ubCharNum; 24 SGPVObject* uiPanelVO; 25 BUTTON_PICS* iButtonImages; 26 GUIButtonRef uiCancelButton; 27 INT8 bCurSelect; 28 INT8 bOldCurSelect; 29 UINT16 usWidth; 30 UINT16 usHeight; 31 MOUSE_REGION Regions[ 6 ]; 32 MOUSE_REGION BackRegion; 33 MOUSE_REGION NameRegion; 34 MOUSE_REGION ScreenRegion; 35 MOUSE_REGION TextRegion; 36 BOOLEAN fTextRegionOn; 37 BOOLEAN fOnName; 38 SGPVSurface* uiSaveBuffer; 39 BOOLEAN fHandled; 40 BOOLEAN fHandledTalkingVal; 41 BOOLEAN fHandledCanDeleteVal; 42 BOOLEAN fRenderSubTitlesNow; 43 BOOLEAN fSetupSubTitles; 44 ST::string zQuoteStr; //QIALOGUE_SIZE is in dialog control which includes this file... 45 }; 46 47 48 // GLOBAL NPC STRUCT 49 extern NPC_DIALOGUE_TYPE gTalkPanel; 50 51 52 BOOLEAN InitiateConversationFull(SOLDIERTYPE* pDestSoldier, SOLDIERTYPE* pSrcSoldier, Approach bApproach, UINT8 approach_record, OBJECTTYPE* approach_object); 53 BOOLEAN InitiateConversation(SOLDIERTYPE* pDestSoldier, SOLDIERTYPE* pSrcSoldier, Approach); 54 55 // Begins quote of NPC Dialogue 56 void TalkingMenuDialogue(UINT16 usQuoteNum); 57 58 59 // Removes memory allocated for structure, removes face... 60 void DeleteTalkingMenu(void); 61 62 BOOLEAN HandleTalkingMenu(void); 63 64 void RenderTalkingMenu(void); 65 66 BOOLEAN HandleTalkingMenuEscape( BOOLEAN fCanDelete , BOOLEAN fFromEscKey ); 67 68 // NPC goto gridno 69 void NPCGotoGridNo(ProfileID ubTargetNPC, UINT16 usGridNo, UINT8 ubQuoteNum); 70 // NPC Do action 71 void NPCDoAction(ProfileID ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum); 72 73 void HandleWaitTimerForNPCTrigger(void); 74 75 76 void HandleNPCItemGiven( UINT8 ubNPC, OBJECTTYPE *pObject, INT8 bInvPos ); 77 void HandleNPCTriggerNPC(UINT8 ubTargetNPC, UINT8 ubTargetRecord, BOOLEAN fShowDialogueMenu, Approach ubTargetApproach); 78 void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum ); 79 80 bool ProfileCurrentlyTalkingInDialoguePanel(UINT8 ubProfile); 81 82 void InternalInitTalkingMenu(UINT8 ubCharacterNum, INT16 sX, INT16 sY); 83 84 85 enum 86 { 87 NPC_ACTION_NONE = 0, 88 NPC_ACTION_DONT_ACCEPT_ITEM, 89 NPC_ACTION_FACE_CLOSEST_PLAYER, 90 NPC_ACTION_OPEN_CLOSEST_DOOR, 91 NPC_ACTION_RECRUIT, 92 NPC_ACTION_THREATENINGLY_RAISE_GUN, 93 NPC_ACTION_LOWER_GUN, 94 NPC_ACTION_READY_GUN, 95 NPC_ACTION_START_RUNNING, 96 NPC_ACTION_STOP_RUNNING, 97 NPC_ACTION_BOOST_TOWN_LOYALTY, // 10 98 NPC_ACTION_PENALIZE_TOWN_LOYALTY, 99 NPC_ACTION_STOP_PLAYER_GIVING_FIRST_AID, 100 NPC_ACTION_FACE_NORTH, 101 NPC_ACTION_FACE_NORTH_EAST, 102 NPC_ACTION_FACE_EAST, 103 NPC_ACTION_FACE_SOUTH_EAST, 104 NPC_ACTION_FACE_SOUTH, 105 NPC_ACTION_FACE_SOUTH_WEST, 106 NPC_ACTION_FACE_WEST, 107 NPC_ACTION_FACE_NORTH_WEST, // 20 108 NPC_ACTION_TRIGGER_FRIEND_WITH_HOSTILE_QUOTE, 109 NPC_ACTION_BECOME_ENEMY, 110 NPC_ACTION_RECRUIT_WITH_SALARY, 111 NPC_ACTION_CLOSE_DIALOGUE_PANEL, 112 NPC_ACTION_ENTER_COMBAT, // 25 113 NPC_ACTION_TERRORIST_REVEALS_SELF, 114 NPC_ACTION_OPEN_CLOSEST_CABINET, 115 NPC_ACTION_SLAP, 116 NPC_ACTION_TRIGGER_QUEEN_BY_CITIES_CONTROLLED, 117 NPC_ACTION_SEND_SOLDIERS_TO_DRASSEN, // 30 118 NPC_ACTION_SEND_SOLDIERS_TO_BATTLE_LOCATION, 119 NPC_ACTION_TRIGGER_QUEEN_BY_SAM_SITES_CONTROLLED, 120 NPC_ACTION_PUNCH_PC_SLOT_0, 121 NPC_ACTION_PUNCH_PC_SLOT_1, 122 NPC_ACTION_PUNCH_PC_SLOT_2, // 35 123 NPC_ACTION_FRUSTRATED_SLAP, 124 NPC_ACTION_PUNCH_FIRST_LIVING_PC, 125 NPC_ACTION_SHOOT_ELLIOT, 126 NPC_ACTION_PLAYER_SAYS_NICE_LATER, 127 NPC_ACTION_GET_ITEMS_FROM_CLOSEST_CABINET, // 40 128 NPC_ACTION_INITIATE_SHOPKEEPER_INTERFACE, 129 NPC_ACTION_GET_OUT_OF_WHEELCHAIR, 130 NPC_ACTION_GET_OUT_OF_WHEELCHAIR_AND_BECOME_HOSTILE, 131 NPC_ACTION_PLAYER_SAYS_NASTY_LATER, // 44 132 133 NPC_ACTION_GRANT_EXPERIENCE_1 = 50, 134 NPC_ACTION_GRANT_EXPERIENCE_2, 135 NPC_ACTION_GRANT_EXPERIENCE_3, 136 NPC_ACTION_GRANT_EXPERIENCE_4, 137 NPC_ACTION_GRANT_EXPERIENCE_5, 138 139 NPC_ACTION_GOTO_HIDEOUT = 100, 140 NPC_ACTION_FATIMA_GIVE_LETTER, 141 NPC_ACTION_LEAVE_HIDEOUT, 142 NPC_ACTION_TRAVERSE_MAP_EAST, 143 NPC_ACTION_TRAVERSE_MAP_SOUTH, 144 NPC_ACTION_TRAVERSE_MAP_WEST, 145 NPC_ACTION_TRAVERSE_MAP_NORTH, 146 NPC_ACTION_REPORT_SHIPMENT_SIZE, 147 NPC_ACTION_RETURN_STOLEN_SHIPMENT_ITEMS, 148 NPC_ACTION_SET_PABLO_BRIBE_DELAY, 149 NPC_ACTION_ASK_ABOUT_ESCORTING_EPC, // 110 150 NPC_ACTION_DRINK_DRINK_DRINK, 151 NPC_ACTION_TRIGGER_END_OF_FOOD_QUEST, 152 NPC_ACTION_SEND_PACOS_INTO_HIDING, 153 NPC_ACTION_HAVE_PACOS_FOLLOW, 154 NPC_ACTION_SET_DELAYED_PACKAGE_TIMER, // 115 155 NPC_ACTION_SET_RANDOM_PACKAGE_DAMAGE_TIMER, 156 NPC_ACTION_FREE_KIDS, 157 NPC_ACTION_CHOOSE_DOCTOR, 158 NPC_ACTION_REPORT_BALANCE, 159 NPC_ACTION_ASK_ABOUT_PAYING_RPC, 160 NPC_ACTION_DELAYED_MAKE_BRENDA_LEAVE, 161 NPC_ACTION_SEX, 162 NPC_ACTION_KYLE_GETS_MONEY, 163 NPC_ACTION_LAYLA_GIVEN_WRONG_AMOUNT_OF_CASH, // 124 164 NPC_ACTION_SET_GIRLS_AVAILABLE, 165 NPC_ACTION_SET_DELAY_TILL_GIRLS_AVAILABLE, 166 NPC_ACTION_SET_WAITED_FOR_GIRL_FALSE, 167 NPC_ACTION_TRIGGER_LAYLA_13_14_OR_15, 168 NPC_ACTION_OPEN_CARLAS_DOOR, 169 NPC_ACTION_OPEN_CINDYS_DOOR, // 130 170 NPC_ACTION_OPEN_BAMBIS_DOOR, 171 NPC_ACTION_OPEN_MARIAS_DOOR, 172 NPC_ACTION_POSSIBLY_ADVERTISE_CINDY, 173 NPC_ACTION_POSSIBLY_ADVERTISE_BAMBI, 174 NPC_ACTION_DARREN_REQUESTOR, // 135 175 NPC_ACTION_ADD_JOEY_TO_WORLD, 176 NPC_ACTION_MARK_KINGPIN_QUOTE_0_USED, 177 NPC_ACTION_START_BOXING_MATCH, 178 NPC_ACTION_ENABLE_CAMBRIA_DOCTOR_BONUS,// OBSOLETE, NO LONGER DELAYED 179 NPC_ACTION_MARTHA_DIES, // 140 180 NPC_ACTION_DARREN_GIVEN_CASH, 181 NPC_ACTION_ANGEL_GIVEN_CASH, 182 NPC_ACTION_TRIGGER_ANGEL_17_OR_18, 183 NPC_ACTION_BUY_LEATHER_KEVLAR_VEST, 184 NPC_ACTION_TRIGGER_MARIA, // 145 185 NPC_ACTION_TRIGGER_ANGEL_16_OR_19, 186 NPC_ACTION_ANGEL_LEAVES_DEED, 187 NPC_ACTION_TRIGGER_ANGEL_21_OR_22, 188 NPC_ACTION_UN_RECRUIT_EPC, 189 NPC_ACTION_TELEPORT_NPC, // 150 190 NPC_ACTION_REMOVE_DOREEN, 191 NPC_ACTION_RESET_SHIPMENT_ARRIVAL_STUFF, 192 // 153 Fix helicopter by next morning? 193 NPC_ACTION_DECIDE_ACTIVE_TERRORISTS = 154, 194 NPC_ACTION_TRIGGER_FATHER_18_20_OR_15, 195 NPC_ACTION_CHECK_LAST_TERRORIST_HEAD, 196 NPC_ACTION_CARMEN_LEAVES_FOR_C13, 197 NPC_ACTION_CARMEN_LEAVES_FOR_GOOD, 198 NPC_ACTION_CARMEN_LEAVES_ON_NEXT_SECTOR_LOAD, 199 NPC_ACTION_TRIGGER_VINCE_BY_LOYALTY, // 160 200 NPC_ACTION_MEDICAL_REQUESTOR, 201 NPC_ACTION_MEDICAL_REQUESTOR_2, 202 NPC_ACTION_CHECK_DOCTORING_MONEY_GIVEN, // handled in NPC.c 203 NPC_ACTION_START_DOCTORING, 204 NPC_ACTION_VINCE_UNRECRUITABLE, // 165 205 NPC_ACTION_END_COMBAT, 206 NPC_ACTION_BECOME_FRIENDLY_END_COMBAT, 207 NPC_ACTION_SET_EPC_TO_NPC, 208 NPC_ACTION_BUY_VEHICLE_REQUESTOR, 209 NPC_ACTION_END_MEANWHILE,// 170 210 NPC_ACTION_START_BLOODCAT_QUEST, 211 NPC_ACTION_START_MINE, 212 NPC_ACTION_STOP_MINE, 213 NPC_ACTION_RESET_MINE_CAPTURED, 214 NPC_ACTION_SET_OSWALD_RECORD_13_USED, // 175 215 NPC_ACTION_SET_CALVIN_RECORD_13_USED, 216 NPC_ACTION_SET_CARL_RECORD_13_USED, 217 NPC_ACTION_SET_FRED_RECORD_13_USED, 218 NPC_ACTION_SET_MATT_RECORD_13_USED, 219 NPC_ACTION_TRIGGER_MATT, // 180 220 NPC_ACTION_REDUCE_CONRAD_SALARY_CONDITIONS, 221 NPC_ACTION_REMOVE_CONRAD, 222 NPC_ACTION_KROTT_REQUESTOR, 223 NPC_ACTION_KROTT_ALIVE_LOYALTY_BOOST, // Delayed loyalty effects elimininated. Sep.12/98. ARM 224 NPC_ACTION_TRIGGER_YANNI, // 185 225 NPC_ACTION_TRIGGER_MARY_OR_JOHN_RECORD_9, 226 NPC_ACTION_TRIGGER_MARY_OR_JOHN_RECORD_10, 227 NPC_ACTION_ADD_JOHNS_GUN_SHIPMENT, 228 // 189 ?? 229 NPC_ACTION_TRIGGER_KROTT_11_OR_12 = 190, // 190 Trigger record 11 or 12 for Krott 230 NPC_ACTION_MADLAB_GIVEN_GUN = 191, 231 NPC_ACTION_MADLAB_GIVEN_CAMERA, 232 NPC_ACTION_MADLAB_ATTACHES_GOOD_CAMERA, 233 NPC_ACTION_READY_ROBOT, 234 NPC_ACTION_WALTER_GIVEN_MONEY_INITIALLY, 235 NPC_ACTION_WALTER_GIVEN_MONEY, 236 NPC_ACTION_MAKE_NPC_FIRST_BARTENDER = 197, 237 NPC_ACTION_MAKE_NPC_SECOND_BARTENDER, 238 NPC_ACTION_MAKE_NPC_THIRD_BARTENDER, 239 NPC_ACTION_MAKE_NPC_FOURTH_BARTENDER,//200 240 NPC_ACTION_GERARD_GIVEN_CASH, 241 NPC_ACTION_FILL_UP_CAR, // obsolete? 242 NPC_ACTION_JOE_GIVEN_CASH, 243 NPC_ACTION_TRIGGER_ELLIOT_9_OR_10 = 204, // obsolete? 244 NPC_ACTION_HANDLE_END_OF_FIGHT,// 205 245 NPC_ACTION_DARREN_PAYS_PLAYER, 246 NPC_ACTION_FIGHT_AGAIN_REQUESTOR, 247 NPC_ACTION_TRIGGER_SPIKE_OR_DARREN, 248 // 209 is blank 249 NPC_ACTION_CHANGE_MANNY_POSITION = 210, 250 NPC_ACTION_TIMER_FOR_VEHICLE, // 211 251 NPC_ACTION_ASK_ABOUT_PAYING_RPC_WITH_DAILY_SALARY,//212 252 NPC_ACTION_TRIGGER_MICKY_BY_SCI_FI, // 213 253 // 214 is blank 254 NPC_ACTION_TRIGGER_ELLIOT_BY_BATTLE_RESULT = 215, 255 NPC_ACTION_TRIGGER_ELLIOT_BY_SAM_DISABLED, 256 NPC_ACTION_LAYLAS_NEXT_LINE_AFTER_CARLA, 257 NPC_ACTION_LAYLAS_NEXT_LINE_AFTER_CINDY, 258 NPC_ACTION_LAYLAS_NEXT_LINE_AFTER_BAMBI, 259 NPC_ACTION_LAYLAS_NEXT_LINE_AFTER_MARIA, 260 NPC_ACTION_PROMPT_PLAYER_TO_LIE, // 221 261 NPC_ACTION_REMOVE_JOE_QUEEN, // 222 262 NPC_ACTION_REMOVE_ELLIOT_END_MEANWHILE, // 223 263 NPC_ACTION_NO_SCI_FI_END_MEANWHILE, //224 264 // 225 is obsolete 265 NPC_ACTION_TRIGGER_MARRY_DARYL_PROMPT = 226, 266 NPC_ACTION_HAVE_MARRIED_NPC_LEAVE_TEAM, 267 NPC_ACTION_KINGPIN_GIVEN_MONEY, // actually handled in item-acceptance code, NPC.c 268 NPC_ACTION_KINGPIN_TRIGGER_25_OR_14, 269 NPC_ACTION_SEND_ENRICO_MIGUEL_EMAIL, 270 NPC_ACTION_END_DEMO,// 231, 271 NPC_ACTION_INVOKE_CONVERSATION_MODE, // 232 272 // 233 is obsolete 273 NPC_ACTION_START_TIMER_ON_KEITH_GOING_OUT_OF_BUSINESS = 234, 274 NPC_ACTION_KEITH_GOING_BACK_IN_BUSINESS, 275 NPC_ACTION_MAKE_RAT_DISAPPEAR, 276 NPC_ACTION_DOCTOR_ESCORT_PATIENTS, 277 NPC_ACTION_ELLIOT_DECIDE_WHICH_QUOTE_FOR_PLAYER_ATTACK, 278 NPC_ACTION_QUEEN_DECIDE_WHICH_QUOTE_FOR_PLAYER_ATTACK, 279 NPC_ACTION_CANCEL_WAYPOINTS, // 240 280 // 241 currently obsolete, CJC Oct 14 281 NPC_ACTION_SHOW_TIXA = 242, 282 NPC_ACTION_SHOW_ORTA, 283 NPC_ACTION_DRINK_WINE, 284 NPC_ACTION_DRINK_BOOZE, 285 NPC_ACTION_TRIGGER_ANGEL_22_OR_24, 286 NPC_ACTION_SET_FACT_105_FALSE, // 247 287 NPC_ACTION_MAKE_BRENDA_STATIONARY, // 248 288 NPC_ACTION_TRIGGER_DARREN_OR_KINGPIN_IMPRESSED = 249, 289 NPC_ACTION_TRIGGER_KINGPIN_IMPRESSED, // 250 290 NPC_ACTION_ADD_RAT, 291 292 NPC_ACTION_ENDGAME_STATE_1 = 253, 293 NPC_ACTION_ENDGAME_STATE_2, 294 NPC_ACTION_MAKE_MIGUEL_STATIONARY, 295 NPC_ACTION_MAKE_ESTONI_A_FUEL_SITE, // 256 296 NPC_ACTION_24_HOURS_SINCE_JOEY_RESCUED,// 257 297 NPC_ACTION_24_HOURS_SINCE_DOCTORS_TALKED_TO,// 258 298 NPC_ACTION_SEND_SOLDIERS_TO_OMERTA,// 259 299 NPC_ACTION_ADD_MORE_ELITES,// 260 300 NPC_ACTION_GIVE_KNOWLEDGE_OF_ALL_MERCS,// 261 301 NPC_ACTION_REMOVE_MERC_FOR_MARRIAGE, 302 NPC_ACTION_TRIGGER_JOE_32_OR_33, 303 NPC_ACTION_REMOVE_NPC, 304 NPC_ACTION_HISTORY_GOT_ROCKET_RIFLES, 305 NPC_ACTION_HISTORY_DEIDRANNA_DEAD_BODIES, 306 NPC_ACTION_HISTORY_BOXING_MATCHES, 307 NPC_ACTION_HISTORY_SOMETHING_IN_MINES, 308 NPC_ACTION_HISTORY_DEVIN, 309 NPC_ACTION_HISTORY_MIKE,// 270 310 NPC_ACTION_HISTORY_TONY, 311 NPC_ACTION_HISTORY_KROTT, 312 NPC_ACTION_HISTORY_KYLE, 313 NPC_ACTION_HISTORY_MADLAB, 314 NPC_ACTION_HISTORY_GABBY, 315 NPC_ACTION_HISTORY_KEITH_OUT_OF_BUSINESS, 316 NPC_ACTION_HISTORY_HOWARD_CYANIDE, 317 NPC_ACTION_HISTORY_KEITH, 318 NPC_ACTION_HISTORY_HOWARD, 319 NPC_ACTION_HISTORY_PERKO,// 280 320 NPC_ACTION_HISTORY_SAM, 321 NPC_ACTION_HISTORY_FRANZ, 322 NPC_ACTION_HISTORY_ARNOLD, 323 NPC_ACTION_HISTORY_FREDO, 324 NPC_ACTION_HISTORY_RICHGUY_BALIME,// 285 325 NPC_ACTION_HISTORY_JAKE, 326 NPC_ACTION_HISTORY_BUM_KEYCARD, 327 NPC_ACTION_HISTORY_WALTER, 328 NPC_ACTION_HISTORY_DAVE, 329 NPC_ACTION_HISTORY_PABLO,// 290 330 NPC_ACTION_HISTORY_KINGPIN_MONEY, 331 NPC_ACTION_SEND_TROOPS_TO_SAM, 332 NPC_ACTION_PUT_PACOS_IN_BASEMENT, 333 NPC_ACTION_HISTORY_ASSASSIN, 334 NPC_ACTION_TRIGGER_HANS_BY_ROOM, // 295 335 NPC_ACTION_TRIGGER_MADLAB_31, 336 NPC_ACTION_TRIGGER_MADLAB_32, 337 NPC_ACTION_TRIGGER_BREWSTER_BY_WARDEN_PROXIMITY, // 298 338 339 NPC_ACTION_TURN_TO_FACE_NEAREST_MERC = 500, 340 NPC_ACTION_TURN_TO_FACE_PROFILE_ID_0, 341 342 NPC_ACTION_LAST_TURN_TO_FACE_PROFILE = 650 343 }; 344 345 #define HOSPITAL_PATIENT_DISTANCE 9 346 347 extern INT32 giHospitalTempBalance; 348 extern INT32 giHospitalRefund; 349 extern INT8 gbHospitalPriceModifier; 350 351 UINT32 CalcPatientMedicalCost(const SOLDIERTYPE* s); 352 extern UINT32 CalcMedicalCost( UINT8 ubId ); 353 354 extern BOOLEAN gfInTalkPanel; 355 356 void HandleTalkingMenuBackspace(void); 357 358 void HandlePendingInitConv(void); 359 360 extern BOOLEAN gfWaitingForTriggerTimer; 361 extern MercPopUpBox* g_interface_dialogue_box; 362 363 #endif 364