//Compile out Title Update changes to header functions. //Must be before includes. //CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R. USING "rage_builtins.sch" USING "globals.sch" USING "commands_camera.sch" USING "commands_pad.sch" USING "commands_script.sch" USING "commands_vehicle.sch" USING "commands_path.sch" USING "flow_public_core_override.sch" USING "commands_ped.sch" USING "commands_task.sch" USING "selector_public.sch" using "dialogue_public.sch" USING "commands_audio.sch" USING "drunk_public.sch" USING "beam_effect.sch" USING "CompletionPercentage_public.sch" USING "vehicle_gen_public.sch" USING "commands_recording.sch" //using "cutscene_builder.sch" USING "replay_public.sch" using "ped_component_public.sch" USING "script_blips.sch" USING "chase_hint_cam.sch" USING "flow_special_event_checks.sch" USING "script_ped.sch" USING "locates_public.sch" USING "commands_cutscene.sch" //USING "replay_public.sch" #IF IS_DEBUG_BUILD USING "scripted_cam_editor_public.sch" #ENDIF USING "player_ped_public.sch" using "mission_stat_public.sch" USING "cutscene_public.sch" using "help_at_location.sch" using "seamless_cuts.sch" USING "CompletionPercentage_public.sch" USING "clearmissionarea.sch" USING "script_misc.sch" USING "timelapse.sch" USING "script_blips.sch" using "commands_pad.sch" USING "building_control_public.sch" USING "buddy_head_track_public.sch" USING "flow_public_game.sch" #IF IS_DEBUG_BUILD USING "select_mission_stage.sch" CONST_INT MAX_SKIP_MENU_LENGTH 14 MissionStageMenuTextStruct SkipMenuStruct[MAX_SKIP_MENU_LENGTH] #ENDIF string sVehicleRecordingLibrary CONST_INT MAX_CONDITIONS 49 CONST_INT MAX_DIALOGUES 25 CONST_INT MAX_INSTRUCTIONS 8 CONST_INT MAX_ACTIONS 36 //float testHeading enum enumClenup CLEANUP_PASS, CLEANUP_FAIL, CLEANUP_FAIL_DEATH, CLEANUP_SKIP endenum ENUM enumLamarProgress Lprogress_NULL, Lprogress_Approaching_Gate, Lprogress_Climbing_Gate, Lprogress_Advancing_Towards_Bum, Lprogress_Interracting_with_bum, Lprogress_Advancing_after_bum, Lprogress_Observing_Car, Lprogress_Advancing_after_car, Lprogress_At_garages ENDENUM enumLamarProgress lamarProgress //NEW MISSION CONTROLLER ENUM enumActions ACT_NULL, //drive to alley ACT_LAMAR_RUNS_UP_TO_CAR, ACT_LAMAR_FOLLOWS_PLAYER, ACT_SET_GARAGE_DOORS_LOCKED, ACT_STOP_FOLLOWING_LAMAR_DOWN_ALLEY, ACT_GET_PLAYER_CAR, ACT_GPS_CUSTOM_ROUTE, ACT_SIMEON, ACT_SET_PLAYER_THROUGH_DRIVER_DOOR, ACT_TURN_ON_CAR_RADIO, ACT_LOCK_SHOWROOM_CARS, ACT_AUDIO_SCENE_ARM_2_DRIVE_TO_ALLEY, ACT_SET_GARAGE_VEHICLES_AS_NO_LONGER_NEEDED, ACT_RELEASE_MISSION_TRIGGER, ACT_SPAWN_FAIL_RESPONSE_ELSALVS, ACT_BUDDY_HEAD_TRACKING, //advance down alley ACT_LEMAR_EXITS_CAR, action_LEMAR_APPROACHES_GATE, action_player_exits_car, ACTION_BUM_STAGGERS_FROM_GARAGE, ACTION_LEMAR_WALKS_TOWARDS_BUM, ACTION_LEMAR_INTERRACTS_WITH_BUM, ACTION_LEMAR_IGNORES_BUM_IF_HIT, ACTION_BUM_RETURNS_TO_GARAGE, ACTION_WAIT_FOR_PLAYER_TO_CLIMB_GATE, ACTION_VEHICLE_DRIVES_OFF, ACTION_PLAYER_LOOK_ABOUT, ACTION_LEMAR_LOOKS_AT_PASSING_CAR, ACTION_DRUNK_GETS_UP_AFTER_LEMAR_INTERACTION, ACTION_VEHICLE_BLOCKED_BY_PLAYER, ACTION_VEHICLE_CONTINUES_DRIVING, ACTION_LEMAR_REACTS_TO_PLAYER_BLOCKING_ELSAL, ACTION_LEMAR_WAITS_FOR_PLAYER, ACTION_LEMAR_RESUMES_WALK_DOWN_ALLEY, ACTION_LEMAR_FOLLOWS_PLAYER_AT_GARAGES, ACTION_PLAY_IDLES, ACT_STOP_LAMAR_ENTERING_PLAYER_CAR, ACTION_LOAD_CUTSCENE, ACTION_OPEN_GARAGE_1, ACTION_OPEN_GARAGE_2, ACTION_OPEN_GARAGE_3, ACTION_LOCK_GARAGE_3, ACTION_MUSIC_AT_BUM, ACTION_INITIALISE_DRIVEOFF_VEHICLE, ACT_UNFREEZE_DRIVEOFF_CAR, ACT_LAMAR_LOOK_AT_GARAGES_ON_APPROACH, ACT_REDUCE_PLAYER_SPEED, ACT_ADUIO_END_ARM_2_DRIVE_TO_ALLEY, ACTION_UPDATE_LAMAR_PROGRESS, ACT_DRIVERS_LOOK_AT_PLAYER, //cutscene ACTION_LOCK_OPEN_GARAGE_3, ACTION_BLOOD_DAMAGE, //shootout stage ACTION_LEMAR_EXITS_GARAGE, ACTION_LEMAR_ADVANCES_TO_POST, ACTION_MAKE_LAMAR_INVINCIBLE, ACTION_LEMAR_ADVANCES_TO_PORTALOO, ACTION_LEMAR_DIVERTS_TO_BISON, ACTION_LEMAR_REACTS_TO_EXPLOSION, ACTION_LEMAR_REACTS_TO_GUNFIRE, ACTION_LEMAR_ADVANCES_AFTER_PORTALOO, ACTION_LEMAR_MOVES_TO_COVER, ACTION_LAMAR_SHOOTS_CAR, acTION_lemar_RUN_TOWARDS_GATE, ACTION_FORCE_GARAGE, action_make_balcony_destructible, ACTION_MAKE_CAR_TYRE_BURST, ACTION_SET_STAGE_STUFF, ACTION_ENEMY_BACKS_OFF, ACTION_ENEMY_BY_BISON, ACTION_ENEMY_FROM_LEFT, ACTION_ENEMY_FROM_SKIP, ACTION_ENEMY_FROM_SCAFFOLD, ACTION_SCAFFOLD_PED_DROPS, ACTION_ENEMY_AFTER_SCAFFOLD, ACTION_ENEMY_ON_VERANDA, ACTION_ENEMY_ON_BALCONY, ACTION_ENEMY_FROM_DOOR, ACTION_DRIVER_RUNS_TO_CAR, ACTION_DRIVER_DRIVES_OFF, ACTION_FLEEING_CAR_DAMAGE, ACTION_PETROL_TRAIL, ACTION_EXPLODE_CAR, ACTION_LOCK_ON_TO_GAS, ACTION_LOCK_ON_TO_GAS_TRAIL, ACTION_FINAL_WAVE_SPAWNS, //Adjust MAX_ACTIONS after this ACTION_MUSIC_SHOOTOUT, ACTION_UNFREEZE_FLEE_CAR_IF_ENTERED, ACT_STAT_PROPANE, ACT_STAT_BIKER_DOWN, ACT_TRIGGER_GATE_MUSIC, ACT_MUSIC_HINT_CAM, ACT_AUDIO_AT_RAYFIRE_END, //max actions = 35 //chase biker ACTION_REMOVE_ALLEYWAY_ASSETS, ACTION_PREP_CHASE_STAGE, ACTION_DEAL_WITH_STUCK_BIKER, ACTION_BIKER_FLEES, ACTION_LEMAR_FOLLOW_PLAYER, ACTION_BIKER_REACTS_TO_PLAYER_CLOSING_IN, ACTION_BIKER_REACTS_TO_BEING_JACKED, ACTION_BIKER_REACTS_TO_COMING_OFF_BIKE, ACTION_MUSIC_CHASE, ACTION_MUSIC_IN_CAR, ACTION_MUSIC_BIKER_DOWN, ACTION_ENSURE_LAMAR_CLIMBS_GATE, ACTION_LAMAR_GETS_IN_PLAYER_CAR, ACT_LAMAR_LOOKS_AT_PLAYER_APPROACH, ACT_UPDATE_PROP_EMPLOYEE, ACT_RESET_WANTED_LEVELS, //drive back home ACT_SET_LAMAR_FOR_STAGE, ACT_LAMAR_GETS_IN_DRIVER_SEAT, ACT_LAMAR_HEADS_BACK_HOME, ACT_LAMAR_DRIVES_FAST, ACT_LAMAR_DRIVES_BACK_TO_HOME, ACT_LAMAR_EXITS_UNDRIVEABLE_CAR, ACT_LAMAR_GETS_IN_ANY_CAR, ACT_STOP_LAMAR_IF_IN_COMBAT_OR_NEARER_CAR, ACT_STUCK_BIKE_CHECK, ACT_LOAD_CUTSENE, ACT_WARP_LAMAR_BACK, ACT_STAT_BIKE_DAMAGE, ACT_DO_HINT_CAM, ACT_CUTSCENE_LEAD_IN ENDENUM ENUM enumInstructions INS_NULL, //drive to alley INS_GET_TO_VESPUCCI_BEACH, INS_EXIT_ALLEY, INS_LOSE_COPS, INS_WAIT_FOR_LEMAR, INS_HELP_DRIVING_VIEW, //down alley INS_FOLLOW_LAMAR, INS_OPEN_GARAGE, INS_GET_BACK_TO_LAMAR, INS_CLIMB, INS_FIRST_PERSON_HELP, INS_GET_GUN, INS_ATTACK_ENEMY, INS_WEAPON_HELP, INS_GET_IN_COVER_HELP, INS_COVER_HELP, INS_SHOOT_GAS, INS_SELECT_BEST_WEAPON, INS_MOVE_CAR, //chase stage INS_GET_THE_BIKE, INS_BIKE_HINT, INS_MAP_HELP, INS_HEALTH_HELP, INS_GO_BACK_FOR_LAMAR, INS_REMIND_ABOUT_PLAYE_SPECIAL_ABILITY, //on bike back to house INS_DO_WHEELIE, ins_drive_home, ins_get_on_the_bike ENDENUM ENUM enumconditions COND_NULL, //0 // === START DRIVE STAGE === COND_START_DRIVE, //Chase biker stage COND_BANTER_STATUS_SAVED, COND_PLAYER_AND_LEMAR_AT_DESTINATION, COND_PLAYER_LEAVING_PLAYER_CAR_AREA, COND_START_CHASE, COND_PLAYER_IN_VEHICLE, COND_WANTED_LEVEL, COND_PLAYER_30M_FROM_LAMAR, COND_LEMAR_IS_IN_A_CAR, COND_PLAYER_OUT_OF_RANGE_OF_LAST_CAR, COND_PLAYER_IN_CAR_LAMAR_NOT, COND_PLAYER_IN_A_DIFFERENT_CAR_TO_LEMAR, COND_PLAYER_AND_LEMAR_IN_SAME_CAR, COND_PLAYER_CAR_DOESNT_EXIST, COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_LEAVING_CAR, COND_LEMAR_WANT_TO_COMMENT_ON_PLAYER_GETTING_BACK_IN_CAR, COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_RUNNING_AWAY_FROM_CAR, COND_LEMAR_WANTS_TO_COMMENT_ON_WANTED_LEVEL, COND_PLAYER_LEAVING_LAMAR_NOT_IN_GROUP, COND_PLAYER_200M_FROM_GARAGE, COND_SHOWROOM_RAMPAGE, COND_LAMAR_FOLLOW_CONDITIONS, COND_PLAYER_ENTERED_ALLEYWAY_UNALOWED, COND_PLAYER_WILL_FAIL_FOR_ENTERING_ALLEY, COND_PLAYER_IN_A_CAR_IN_ALLEYWAY_TOO_EARLY, COND_ENEMY_VAGOS_SPAWNED, COND_ALLEY_PEDS_ALERTED, COND_DRIVE_OFF_PEDS_FAIL_DUPE, COND_END_DRIVE, COND_LEMAR_CLIMBED_OUT_OF_ALLEY, COND_CHASE_BANTER_STATUS_SAVED, COND_LEMAR_TOO_FAR_AWAY, COND_PLAYER_CAR_NEARBY_LEMAR, COND_PLAYER_CLOSING_IN_ON_BIKER, COND_BIKER_JACKED, COND_PLAYER_20M_FROM_LAMAR, COND_BIKER_NOT_ON_BIKE, COND_PLAYER_BY_GATE_OR_NOT_IN_ALLEY, COND_PLAYER_NOT_ENTERED_CAR_FOR_A_WHILE, COND_LAMAR_CAN_FOLLOW_PLAYER, COND_FIRE_UNDER_SHOOTOUTCAR, COND_START_ALLEY_STAGE, COND_DRIVE_OFF_PEDS_FAIL, COND_LAMAR_NO_TASKS, COND_END_CHASE, // ====== STart alley stage ===== COND_PLAYER_ALERTS_ELSALVS, cond_vehicle_come_to_stop, COND_trigger_bum, COND_lemar_climbed_gate, COND_lemar_at_bum, COND_player_hit_bum, COND_lemar_began_bum_interaction, COND_player_interupted_anim, COND_LEMAR_APPROACHING_GATE, COND_PLAYER_IN_ALLEYWAY, COND_DIA_BIKE_IN_LOCKUP, COND_DIA_BUM_SHOUTS_PLAYED, COND_LEMAR_HEADING_TOWARDS_BUM, COND_PLAYER_CLIMBING_GATE, COND_PLAYER_WITHIN_50M_OF_LAMAR, COND_LEMAR_IN_RANGE_OF_CAR, COND_CAR_CLOSING_ON_LEMAR, COND_LEMAR_LOOKING_AT_PASSING_CAR, COND_PLAYER_STOOD_INFRONT_OF_CAR, COND_LEMAR_CONTINUES_WALKING_DOWN_ALLEY_AFTER_CAR_BLOCK, COND_DRUNK_KICK_ANIM_COMPLETED, COND_BUM_RETURNED_TO_GARAGE_FROM_ANIM, COND_VEHICLE_STOPPED, COND_PLAYER_FAIL_CAR_ALARM, COND_PLAYER_LAGS_AS_LAMAR_HEADS_TO_ALLEY_END, COND_PLAYER_TOO_FAR_BEHIND_LEMAR, COND_IN_END_ALLEY_RANGE, COND_LEMAR_NEAR_GARAGE, COND_CAR_PASSED_LEMAR, COND_FIRST_GARAGE_OPENED, COND_TWO_GARAGES_OPENED, COND_PLAYER_NEXT_TO_ELSAL_CAR, COND_PLAYER_AT_GARAGE1, COND_PLAYER_AT_GARAGE2, COND_PLAYER_AT_GARAGE3, COND_FRANKLIN_HIT_BY_CAR, COND_PLAYER_TOLD_TO_OPEN_GARAGES, COND_LEMAR_REACHED_END_AND_WAITING, COND_PLAYER_FAIL_BLOCKING_CAR, COND_DELAY_AFTER_PLAYER_ATTACKS_CAR, COND_CAR_BLOCKING_GATE, COND_PLAYER_BLOCKING_GATE, COND_LEMAR_TRIGGER_BUM_DIALOGUE_RANGE, COND_END_ALLEY_STAGE, COND_START_SHOOTOUT, COND_HEARD_VAGOS, COND_LAMAR_REACTED, COND_PLAYER_LEFT_GARAGE, COND_PLAYER_HAS_A_GUN, COND_INSTRUCTIONS_GIVEN, COND_PLAYER_ADVANCES_PORTALOO, COND_ONE_ENEMY_LEFT, COND_ELSAL_ON_LEFT_SPAWNED, COND_NO_ELSAL_ALIVE, COND_NO_ELSAL_BY_PORTALOO, COND_SCAFFOLD_BLOWN, COND_LEMAR_BEING_SHOT_AT_FROM_SCAFFOLD, COND_BLOCK_TAUNTS, COND_LAMAR_IS_REACTING_TO_GUNFIRE, COND_ELSAL_ON_SCAFFOLD_SPAWNED, COND_PLAYER_BLOCKING_PORTALOO, COND_LEMAR_HEADING_FOR_PORTALOO, COND_IS_LEMAR_IN_COVER_AT_PORTALOO, COND_SCAFFOLD_PED_FALLS, COND_FIRST_WAVE_DEAD, COND_PLAYER_PASSED_SKIP, COND_SECOND_WAVE_FIRST_PED_DEAD, COND_VERANDA_PED_DEAD, COND_ROOf_PED_DEAD, COND_SECOND_WAVE_DEAD, COND_LEMAR_ADVANCED_TO_SKIP, COND_CAR_DRIVING_AWAY, COND_DRIVER_CAN_DRIVE_CAR, COND_FINAL_WAVE_CAN_TRIGGER, COND_DIA_FINAL_WAVE, COND_ALL_VAGOS_DEAD, COND_EXPLODING_CAR_KILLED_SOMEONE, COND_LEMAR_IN_END_LOCATION, COND_DIA_SHOOT_GAS_CAN, COND_PLAYER_ARMED, COND_PLAYER_ENTERED_COVER, COND_FLEE_CAR_LAYING_PETROL, COND_FLEE_CAR_DISRUPTED, COND_SHOTGUN_PICKED_UP, COND_GAS_COMMENT_MADE, COND_PLAYER_NEAR_SHOTGUN, COND_PLAYER_LEAVING_LAMAR, COND_PLAYER_LEAVING_LAMAR_AT_END, COND_FIRE_UNDER_CAR, COND_DIA_LETS_GO_PLAYED, COND_END_SHOOTOUT, COND_START_ON_BIKE, COND_LAMAR_PASSENGER_WITH_PLAYER, COND_LAMAR_PASSENGER_WITHOUT_PLAYER, COND_LAMAR_WARPED_BACK, COND_LAMAR_IN_A_CAR, COND_LAMAR_IN_UNDRIVEABLE_CAR, COND_LAMAR_IN_CAR_AS_DRIVER, COND_LAMAR_HAS_NO_TASKS, COND_PLAYER_ON_BIKE, COND_LAMAR_ATTEMPTING_TO_ENTER_DRIVER_SEAT, COND_LAMAR_FOCUS_CAR_DRIVING_AWAY, COND_BIKE_UPSIDE_DOWN, COND_LAMAR_10M_FROM_PLAYER, COND_PLAYER_100M_FROM_LAMAR, COND_PLAYER_AT_DESTINATION, COND_LAMAR_GOING_FOR_EMPTY_CAR, COND_PLAYER_NEAR_LAMAR_AT_CARWASH, COND_PLAYER_STILL_ON_BIKE, COND_BIKE_FAR_FROM_LAMAR, COND_END_ON_BIKE ENDENUM enum enumDialogue DIA_NULL, //get to alley DIA_SWITCH_TO_SUBTITLES, DIA_YOU_DRIVE, DIA_DRIVE_BANTER, DIA_GETTING_CLOSE, DIA_WANTED_LEVEL, DIA_PLAYER_LEFT_CAR, DIA_PLAYER_RUNS_OFF, DIA_PLAYER_GETS_BACK_IN_CAR, DIA_STOPPED_IN_CAR, DIA_SIMEON_TALKS_IF_PLAYER_APPROACHES, DIA_PLAYER_GOES_DOWN_ALLEY_EARLY, DIA_FAIL_ENTERING_ALLEYWAY, DIA_ARRIVE_AT_ALLEY, DIA_WATCH_ME_CLIMB_GATE, DIA_BUM_SHOUTS_OUT, DIA_MY_RECTAL_GLAND, DIA_LEMAR_TALKS_TO_BUM, DIA_PLAYER_INTERUPTS_LEMAR_BUM, DIA_LAMAR_WAIT_ON_PLAYER, DIA_LAMAR_SEES_SALV_CAR, DIA_SALVS_RESPOND_TO_PLAYER_IN_WAY, DIA_LEMAR_TELLS_PLAYER_TO_MOVE_AWAY_FROM_CAR, DIA_PLAYER_DAMAGES_DRIVING_OFF_CAR, DIA_LEMAR_AFTER_PLAYER_BLOCKED_CAR, DIA_CAR_PEDS_CHATTING, DIA_LAMAR_TELLS_PLAYER_TO_HURRY_NEAR_ALLEY_END, DIA_WALKING_DOWN_END_OF_ALLEY_CHAT, DIA_LAMAR_SAYS_OPEN_GARAGE, DIA_LAMAR_SAYS_OPEN_NEXT_GARAGE, DIA_LAMAR_SAYS_OPEN_LAST_GARAGE, DIA_LAMAR_SAYS_OPEN_GARAGE_AGAIN, DIA_LAMAR_WAIT_ON_PLAYER_AFTER_BUM, DIA_PLAYER_APPROACHES_STOPPED_ELSAL_CAR, DIA_FRANKLIN_HIT_BY_CAR, DIA_LAMAR_IF_CUTSCENE_NOT_LOADED, DIA_LAMAR_IMPATIENT_WAITING_AT_END, DIA_LAMAR_SAYS_STOP_MESSING_ABOUT, DIA_LAMAR_SAYS_STOP_BLOCKING_GATE_WITH_CAR, DIA_LAMAR_WALKS_PASS_SALV_CAR, //shootout starts DIA_SHOOTOUT_START, DIA_LAMAR_REACTS, DIA_PLAYER_STAYS_IN_GARAGE, DIA_GET_GUN, DIA_ON_LEFT, DIA_TAKE_COVER_BEHIND_BISON, DIA_LEMAR_SHOT_AT_HIT_GAS, DIA_LEMAR_SHOT_AT_NO_GAS, DIA_COMBAT_BANTER, DIA_GAS_BLOWS_UP, DIA_KEEP_GOING_PASSED_SKIP, DIA_SEE_MORE_ELSAL, DIA_ON_THE_VERANDA, DIA_UP_ON_BALCONY, DIA_COMING_OUT_DOOR, DIA_CAR_DRIVING_OFF, DIA_FINAL_WAVE, DIA_SHOOT_GAS, DIA_LETS_GET_OUT_OF_HERE, DIA_THERES_THE_BIKE, DIA_EXPLODING_CAR_DEATHS, DIA_GET_SHOTGUN, DIA_COME_BACK, //chase stage DIA_GET_THE_BIKE, DIA_PLAYER_GETS_BACK_IN_CAR_IN_CHASE, DIA_CHASE_BIKE_BANTER, DIA_BIKER_SHOUTS_AT_PLAYER, DIA_PLAYER_NOT_GOT_IN_CAR_AT_CHASE_START, DIA_PLAYER_LEFT_CAR_IN_CHASE, //bike back to lockup DIA_AFTER_BIKER_DOWN, DIA_BYE, DIA_GETTING_A_CAR, DIA_PLAYER_AT_CARWASH_WITHOUT_BIKE, DIA_PLAYER_AT_CARWASH_WITHOUT_BIKE_FAR ENDENUM bool bBanterOngoing bool bLastConvoWithoutSubtitles enum enumFails FAIL_NULL, FAIL_DRIVER_IMPATIENT, FAIL_ATTACK_DRIVE_OFF_PEDS, FAIL_CAR_ALARM_GOES_OFF, FAIL_SMASH_OPEN_GATE, FAIL_DAMAGE_IN_SHOWROOM, FAIL_LEFT_LAMAR_BEHIND, FAIL_LEFT_BIKE_BEHIND, FAIL_LOST_THE_BIKER, FAIL_LAMAR_DIED, FAIL_SIMEON_DIED, FAIL_BIKE_UPSIDE_DOWN, FAIL_ALERTING_ELSALVS, FAIL_SHOOTING_IN_ALLEY, FAIL_ENTERED_ALLEY_TO_EARLY, FAIL_CAR_BLOCKING_ELSALVS endenum // =============================================== ASSETS enum eMissionAssets ASSET_MODEL_LAMAR, ASSET_MODEL_SALVAS, ASSET_WEAPONS, ASSET_BUM, ASSET_MODEL_BIKE, ASSET_MISSION_ANIMS, ASSET_BIKE_ARRIVE_ANIMS, ASSET_TWO_BISONS, ASSET_FLEE_CAR, ASSET_REC_DRIVE_AWAY_CAR, ASSET_REC_FLEE_CAR, ASSET_WAYPOINT_FROM_DOOR, ASSET_MODEL_GASDUMMY, ASSET_WAYPOINT_FROM_BUM, ASSET_WAYPOINT_LAMAR_RUNS_OUT_ALLEYWAY, ASSET_ANIM_IDLES, ASSET_AUDIO_BANKS, ASSET_SIMEON, ASSET_BULLET_DODGE, ASSET_FRONT_GATES endenum enum eAssetStage ASSETS_STAGE_STARTUP, ASSETS_STAGE_DRIVE_TO_ALLEY, ASSETS_STAGE_LOAD_ALLEY, ASSETS_STAGE_DRUNK_RUNS_OUT, ASSETS_STAGE_CAR_DRIVES_OFF, ASSETS_STAGE_OPEN_GARAGES, ASSETS_STAGE_SHOOTOUT, ASSETS_STAGE_CHASE_BIKE, ASSETS_STAGE_ALLEY_ENDS, ASSETS_STAGE_RETURN_BIKE, ASSETS_STAGE_FINAL_CUTSCENE, ASSETS_STAGE_GAME_OVER endenum enum eAssetLoadStage LS_NULL, LS_REQUIRED, LS_REQUESTED, LS_LOADED, LS_RELEASE endenum struct structAssets eAssetStage loadFor eAssetStage releaseOn eAssetLoadStage loadStage = LS_NULL endstruct structAssets ASSETS[count_of(eMissionAssets)] eAssetStage currentAssetStage bool bAssetChageInProgress bool anAssetIsLoading WEAPON_type storedWeapon // =============================================== END ASSETS TEXT_LABEL_23 currentConv,lastConv TEXT_LABEL_23 restartLine, RESTARTROOT INTERIOR_INSTANCE_INDEX intGarage struct structDialogue enumDialogue dial = DIA_NULL bool bCompleted bool bStarted int flag int intA,intB endstruct structDialogue dia[MAX_DIALOGUES] struct structInstructions enumInstructions ins = INS_NULL bool bCompleted int flag int intA endstruct float bikerNoiseTime = 0.45 structInstructions instr[MAX_INSTRUCTIONS] ENUM enumACTIONplayout PLAYOUT_ON_TRIGGER, PLAYOUT_ON_COND, SKIP_SET_TO_COMPLETE endenum STRUCT structactions enumActions action = ACT_NULL bool active bool ongoing bool completed bool needsCleanup bool trackCondition int flag int intA,intB float floatA ENDSTRUCT structactions actions[MAX_ACTIONS] enum andOrEnum cFORCEtrue, cIGNORE, cIF, cIFnot, cAND, cAndNOT, cOR, cWasTrueNowFalse, cORbracket endenum bool conditionsTrue bool bracketOpen struct structConditions enumconditions condition = COND_NULL bool active bool returns bool wasTrue int flag int intA float floatA endstruct structConditions conditions[MAX_CONDITIONS] int iCheckTimer //USING "BoltsCommonCommands.sch" INT iDisableReplayCameraTimer //Fix for bug 2223403 //music //sync scene //int thisScene CONST_INT VAGOS_START_HEALTH 130 //navmesh blocking int int navblockA int navblockB PICKUP_INDEX pickup_Armour //other int iConvTracker[10] //conversation tracking int iLastConvo=-1 int iSpeaker[4] //tracking cars int iOpenedGarages object_index objFakeGarage[2],oPropEmployeeOld,oPropEmployeeNew object_index o_brickWall //bits int bitStoreChase int missionFailDelay = 0 //Globa bool bUpdateElsalCount = TRUE int iLivingelsal bool bBuddyKilledDrunk //bool bCanShootScaffold bool bPetrolBurning //door hashes CONST_INT iGarage1Hash HASH("iGarage1Hash") CONST_INT iGarage2Hash HASH("iGarage2Hash") #if IS_DEBUG_BUILD bool bLoopFocus #endif //object_index objGarage[5] // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : Armenian2.sc // AUTHOR : Kev Bolt // DESCRIPTION : Get the car from the El Salvador gang. // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // **************************** IMPORTANT NOTES ******************************************** // // The mission flow generally follows a linear path of events and objectives which are // organised within the missionFlow() procedure. // Any events that may take place outside of this flow - such that they may prevent the // mission from not correctly progressing - are defined as events. See the procesure // control_events(). CONST_INT MAX_OBJECT_COUNT 6 CONST_INT MAX_PED_COUNT 27 CONST_INT MAX_VEH_COUNT 10 CONST_INT MAX_BRAIN_TRACKERS 4 //defunct - but still required for compile to work //ped index, for use with PED[] array //0 = player CONST_INT PED_SIMEON 3 CONST_INT ped_franklin 0 CONST_INT PED_BUDDY 2 CONST_INT ped_drunk 3 CONST_INT ped_driver 4 CONST_INT ELSAL_PASSENGER 5 CONST_INT ped_pilot 7 CONST_INT ped_bikeman 8 CONST_INT ped_scenario_hangoutA 9 CONST_INT ped_scenario_hangoutB 10 CONST_INT ELSAL_AT_GARAGE 9 //this is checked specifically in cleanup during the mission. If changing this value please change it where necessary in script CONST_INT ELSAL_BEHIND_BISON 10 CONST_INT ELSAL_FROM_LEFT 11 CONST_INT ELSAL_FROM_SKIP 12 CONST_INT ELSAL_SCAFFOLDA 13 CONST_INT ELSAL_SCAFFOLDB 14 CONST_INT ELSAL_SCAFFOLDC 15 //removed CONST_INT ELSAL_BEFORE_CAR_LEFT 16 CONST_INT ELSAL_BEFORE_CAR_RIGHT 17 //removed CONST_INT ELSAL_BALCONY 18 CONST_INT ELSAL_ROOF 19 CONST_INT ELSAL_CAR 20 CONST_INT ELSAL_EXIT_DOOR 21 CONST_INT ELSAL_VANDRIVER 22 CONST_INT ELSAL_VANPASSENGER 23 CONST_INT ELSAL_VANREARA 24 CONST_INT ELSAL_VANREARB 25 CONST_INT ELSAL_ALLEYEND_LEFTA 22 CONST_INT ELSAL_ALLEYEND_LEFTB 23 CONST_INT ELSAL_ALLEYEND_RIGHTA 24 CONST_INT ELSAL_ALLEYEND_RIGHTB 25 //this is checked specifically in cleanup during the mission. If changing this value please change it where necessary in script //Vehicle IDs CONST_INT VEH_PLAYER 0 CONST_INT VEH_DRIVEOFF 1 CONST_INT veh_bison 2 CONST_INT ENEMY_VAN 3 CONST_INT VEH_OBJECTIVE 4 CONST_INT VEH_CHOPPER 5 CONST_INT VEH_FLEE 6 CONST_INT VEH_TEMP 7 CONST_INT VEH_BUDDY 8 //************************************************************************************************************************************* // Data system for storing assets and when they can be loaded or released. //************************************************************************************************************************************* ENUM enumMissionStage STAGE_MEET_lamar, //0 STAGE_DRIVE_TO_ALLEYWAY, //1 STAGE_ADVANCE_DOWN_ALLEYWAY, //2 STAGE_BEAT_UP_DRUNK, //3 STAGE_VEHICLE_DRIVE_OFF, //4 STAGE_OPEN_GARAGES, //5 STAGE_DRUG_GARAGE, //6 STAGE_START_SHOOTOUT, //7 STAGE_COVER_BY_SKIP, //8 STAGE_CHASE_AFTER_BIKE, //9 STAGE_TAKE_BIKE_BACK_TO_LOCKUP, //10 STAGE_FINAL_CUTSCENE, //11 STAGE_GAME_OVER, //12 STAGE_CLEANUP, //13 STAGE_NULL //14 ENDENUM enumMissionStage missionProgress enum enumEvents EVENTS_NULL = 0, //0 EVENTS_SPAWN_ALLEYWAY, //1 events_shooting_help, EVENTS_RAYFIRE_SCAFFOLD, events_reset_bricks, events_lemar_anim_set, events_make_Lemar_run, events_make_player_run, EVENTS_CHECK_PLAYER_FAILS, EVENTS_REMOVE_RANDOM_PEDS_IN_AREA, EVENTS_DEAL_WITH_PLAYER_CAR, events_make_player_walk, events_check_for_dealership_rampage ENDENUM CONST_INT MAX_EVENTS 20 enum enumAction action_none, action_spawn, action_wait_in_car, action_drive_away, action_player_blocking_car, action_lamar_look_at_elsal_car, action_lamar_warn_player, ACTION_LEMAR_EXIT_GARAGE, action_attack_from_post, action_Lemar_at_portaloo, action_lemar_run_passed_scaffold, action_lemar_shoot_car, action_lemar_incoming_van, action_lemar_bike_cutscene, action_advance_to_portaloo, ACTION_BACKOFF_FROM_GARAGE, ACTION_COVER_BEHIND_BISON, ACTION_COVER_BEHIND_PORTALOO, ACTION_RUN_IN_FROM_SKIP, ACTION_SCAFFOLD_ATTACK_A, ACTION_SCAFFOLD_ATTACK_B, ACTION_SCAFFOLD_ATTACK_C, ACTION_BEFORE_CAR_FROM_LEFT, ACTION_BEFORE_CAR_FROM_RIGHT, ACTION_ON_BALCONY, ACTION_ON_ROOF, ACTION_EXIT_DOOR, ACTION_DRIVE_FLEE, ACTION_DRIVE_DOWN_ALLEY, ACTION_ATTACK_FROM_VAN, ACTION_RUN_BEHIND_BIN, ACTION_RUN_PASSED_CARSH_CAR, ACTION_RUN_TO_WHEELIES, ACTION_COVER_BEHIND_WALL, action_DIE, ACTION_DEAD endenum USING "BoltsCommonCommands.sch" #if IS_DEBUG_BUILD INT iReturnStage #endif COVERPOINT_INDEX buddy_cover,coverForcedAtWall1,coverForcedAtWall2,coverForcedAtWall3,coverForcedAtWall4,coverForBackoffPed,enemySpawnCover //=============== vehicle damage data //ped index ped_index dead_ped1,dead_ped2,dead_ped3 //cut cam stuff //CAMERA_INDEX cutCam //bool bTracker CONST_INT MAX_DAMAGE_TYPES 9 enum enumVehicleDamage SMASH_WINDSHIELD, SMASH_REAR_WINDOW, BURST_FRONT_RIGHT_TYRE, REDUCE_ENGINE_HEALTH, SMASH_FRONT_RIGHT_WINDOW, POP_BOOT, POP_RIGHT_DOOR, POP_LEFT_DOOR, CRUMPLE_BOOT ENDENUM struct structVehicleDamage int time bool bActivated enumVehicleDamage damage ENDSTRUCT structVehicleDamage damageEvent[MAX_DAMAGE_TYPES] //events are specific events that might be required to run non-concurrently with the main mission flow and objectives // CAMERAS //RAYFIRE RAYFIRE_INDEX rfScaffold OBJECT_INDEX dummyGasCanister,dummyGasTrail object_index openGarage,openGarageb object_index model_phone,objWeapon //destructible objects //object_index obj_railing STRING nextCutscene LOCATES_HEADER_DATA sLocatesData //int setupFlag = 0 //int ipad[4] //======== shotgun pickup pickup_index pickup_shotgun, pickup_gar1 //=====chopper beam======= //vector vBeamRot, vGroundLoc struct bezier float fTime vector vcontrol vector vPos endstruct //vehicle_index last_car // TIME OF DAY VARIABLES structTimelapse sTimelapse vehicle_index vehiclearray[25] vehicle_index parkedCar[5] //enemy van //cove rpoibnt COVERPOINT_INDEX covA, covB //===============| BLIPS |=============== BLIP_INDEX mission_blip BLIP_INDEX pickup_gar1_blip BLIP_INDEX garage_1_blip,garage_2_blip,garage_3_blip MODEL_NAMES model_lamar //bool alertGroupAlerted[MAX_ALERT_GROUPS] vector elsalUnseenSpawn[10] // =======================| scenario blocking ============================= //Petrol trail vars int iOilTime INT iFireStart int iFireFlag bezier newBez[3] struct structPetrolTrail PTFX_ID pfx bool made int time ENDSTRUCT structPetrolTrail petrolTrail[31] FIRE_INDEX petrolFire[31] STRING NextChaseLine // random peds //=========| AI VARIABLES |============ //int pedTalkingToPlayer=-1 //============= COVER POINTS ============= //COVERPOINT_INDEX buddy_cover // dialogue //TEXT_LABEL_15 dialogueLabel //====================| models |==================== MODEL_NAMES model_tramp,model_salvas,model_salvasB //===================| vars |================= bool bTurnOnVerandaLight bool bTurnOnBalconyLight INT PlacementFlags int ientry INT iLamarWarpTimer = -1 BOOL bLockedToWalk //synced scens int sceneDrunkGetup //groups //temp vars float fTemp //debug tracking //vars to be made global PED_COMP_STYLE_ENUM eStyleHair CHASE_HINT_CAM_STRUCT localChaseHintCamStruct //widget debug #IF IS_DEBUG_BUILD WIDGET_GROUP_ID arm2_widget bool bShowActions bool bScreenConditions,bScreenActionsA,bScreenActionsB,bscreenDialogue,bScreenInstructions,bShowAssets bool bGateState = FALSE //bool bTempCrashFix #ENDIF vector vTramp = <<-1110.3101, -1603.0426, 3.6765>> float trampHeading = 95 float trampPhase = 0.27 // =========================================================================================================== // Termination // =========================================================================================================== //AUDIO /* enum enumAudioEvents ARM_2_Repo_Car_Collision // car reverse impact ARM_2_Repo_Car_Collision_Fence // car hits fence ARM_2_Repo_Cars_Explosion // Cars blow up ARM_2_Repo_Gas_Explosion // Gas cylinder blows ARM_2_Repo_Ignite_Petrol // Petrol trail ignites ARM_2_REPO_CHOPPER // SCENE for chopper ARM_2_REPO_SHOOT_PETROL_TRAIL //scene for petrol trail ENDENUM enumAudioEvents audioEvents structAudio audioEvents[5] proc CONTROL_AUDIO() int i repeat COUNT_OF(audioEvents) i SWITCH ENDSWITCH ENDREPEAT ENDPROC */ PROC SAFEWAIT(int identifyFlag, int waittime=0) identifyFlag=identifyFlag #if IS_DEBUG_BUILD IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F)) TERMINATE_THIS_THREAD() ENDIF //cprintln(debug_Trevor3,"Safewait: ",identifyFlag) #endif WAIT(waittime) ENDPROC FUNC float GET_RELATIVE_ANGLE_FROM_ENTITY_TO_COORD(ENTITY_INDEX ent, vector lookAtCoord) if DOES_ENTITY_EXIST(ent) if not IS_ENTITY_DEAD(ent) float fHeading = GET_HEADING_FROM_COORDS(GET_ENTITY_COORDS(ent,FALSE),lookAtCoord) RETURN fHeading-GET_ENTITY_HEADING(ent) endif ELSE SCRIPT_ASSERT("GET_RELATIVE_ANGLE_FROM_ENTITY_TO_COORD(), entity does not exist.") ENDIF RETURN 0.0 ENDFUNC FUNC float GET_RELATIVE_ANGLE_FROM_ENTITY_TO_ENTITY(ENTITY_INDEX ent, ENTITY_INDEX entLookAt) if DOES_ENTITY_EXIST(ent) and DOES_ENTITY_EXIST(entLookAt) RETURN GET_RELATIVE_ANGLE_FROM_ENTITY_TO_COORD(ent,GET_ENTITY_COORDS(entLookAt,FALSE)) ENDIF RETURN 0.0 ENDFUNC FUNC STRING GET_COND_TEXT(enumconditions thisCond) string sCond SWITCH thisCond CASE COND_NULL sCond = " COND_NULL " BREAK CASE COND_START_DRIVE sCond = " COND_START_DRIVE " BREAK CASE COND_BANTER_STATUS_SAVED sCond = " COND_BANTER_STATUS_SAVED " BREAK CASE COND_PLAYER_AND_LEMAR_AT_DESTINATION sCond = " COND_PLAYER_AND_LEMAR_AT_DESTINATION " BREAK CASE COND_START_CHASE sCond = " COND_START_CHASE " BREAK CASE COND_PLAYER_IN_VEHICLE sCond = " COND_PLAYER_IN_VEHICLE " BREAK CASE COND_WANTED_LEVEL sCond = " COND_WANTED_LEVEL " BREAK CASE COND_PLAYER_30M_FROM_LAMAR sCond = " COND_PLAYER_30M_FROM_LAMAR " BREAK CASE COND_LEMAR_IS_IN_A_CAR sCond = " COND_LEMAR_IS_IN_A_CAR " BREAK CASE COND_PLAYER_OUT_OF_RANGE_OF_LAST_CAR sCond = " COND_PLAYER_OUT_OF_RANGE_OF_LAST_CAR " BREAK CASE COND_PLAYER_IN_CAR_LAMAR_NOT sCond = " COND_PLAYER_IN_CAR_LAMAR_NOT " BREAK CASE COND_PLAYER_IN_A_DIFFERENT_CAR_TO_LEMAR sCond = " COND_PLAYER_IN_A_DIFFERENT_CAR_TO_LEMAR " BREAK CASE COND_PLAYER_AND_LEMAR_IN_SAME_CAR sCond = " COND_PLAYER_AND_LEMAR_IN_SAME_CAR " BREAK CASE COND_PLAYER_CAR_DOESNT_EXIST sCond = " COND_PLAYER_CAR_DOESNT_EXIST " BREAK CASE COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_LEAVING_CAR sCond = " COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_LEAVING_CAR " BREAK CASE COND_LEMAR_WANT_TO_COMMENT_ON_PLAYER_GETTING_BACK_IN_CAR sCond = " COND_LEMAR_WANT_TO_COMMENT_ON_PLAYER_GETTING_BACK_IN_CAR " BREAK CASE COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_RUNNING_AWAY_FROM_CAR sCond = " COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_RUNNING_AWAY_FROM_CAR " BREAK CASE COND_LEMAR_WANTS_TO_COMMENT_ON_WANTED_LEVEL sCond = " COND_LEMAR_WANTS_TO_COMMENT_ON_WANTED_LEVEL " BREAK CASE COND_PLAYER_LEAVING_LAMAR_NOT_IN_GROUP sCond = " COND_PLAYER_LEAVING_LAMAR_NOT_IN_GROUP " BREAK CASE COND_PLAYER_200M_FROM_GARAGE sCond = " COND_PLAYER_200M_FROM_GARAGE " BREAK CASE COND_SHOWROOM_RAMPAGE sCond = " COND_SHOWROOM_RAMPAGE " BREAK CASE COND_LAMAR_FOLLOW_CONDITIONS sCond = " COND_LAMAR_FOLLOW_CONDITIONS " BREAK CASE COND_PLAYER_ENTERED_ALLEYWAY_UNALOWED sCond = " COND_PLAYER_ENTERED_ALLEYWAY_UNALOWED " BREAK CASE COND_PLAYER_WILL_FAIL_FOR_ENTERING_ALLEY sCond = " COND_PLAYER_WILL_FAIL_FOR_ENTERING_ALLEY " BREAK CASE COND_PLAYER_IN_A_CAR_IN_ALLEYWAY_TOO_EARLY sCond = " COND_PLAYER_IN_A_CAR_IN_ALLEYWAY_TOO_EARLY " BREAK CASE COND_ENEMY_VAGOS_SPAWNED sCond = " COND_ENEMY_VAGOS_SPAWNED " BREAK CASE COND_ALLEY_PEDS_ALERTED sCond = " COND_ALLEY_PEDS_ALERTED " BREAK CASE COND_DRIVE_OFF_PEDS_FAIL_DUPE sCond = " COND_DRIVE_OFF_PEDS_FAIL_DUPE " BREAK CASE COND_END_DRIVE sCond = " COND_END_DRIVE " BREAK CASE COND_LEMAR_CLIMBED_OUT_OF_ALLEY sCond = " COND_LEMAR_CLIMBED_OUT_OF_ALLEY " BREAK CASE COND_CHASE_BANTER_STATUS_SAVED sCond = " COND_CHASE_BANTER_STATUS_SAVED " BREAK CASE COND_LEMAR_TOO_FAR_AWAY sCond = " COND_LEMAR_TOO_FAR_AWAY " BREAK CASE COND_PLAYER_CAR_NEARBY_LEMAR sCond = " COND_PLAYER_CAR_NEARBY_LEMAR " BREAK CASE COND_PLAYER_CLOSING_IN_ON_BIKER sCond = " COND_PLAYER_CLOSING_IN_ON_BIKER " BREAK CASE COND_BIKER_JACKED sCond = " COND_BIKER_JACKED " BREAK CASE COND_PLAYER_20M_FROM_LAMAR sCond = " COND_PLAYER_20M_FROM_LAMAR " BREAK CASE COND_BIKER_NOT_ON_BIKE sCond = " COND_BIKER_NOT_ON_BIKE " BREAK CASE COND_PLAYER_BY_GATE_OR_NOT_IN_ALLEY sCond = " COND_PLAYER_BY_GATE_OR_NOT_IN_ALLEY " BREAK CASE COND_FIRE_UNDER_SHOOTOUTCAR sCond = " COND_FIRE_UNDER_SHOOTOUTCAR " BREAK CASE COND_START_ALLEY_STAGE sCond = " COND_START_ALLEY_STAGE " BREAK CASE COND_DRIVE_OFF_PEDS_FAIL sCond = " COND_DRIVE_OFF_PEDS_FAIL " BREAK CASE COND_LAMAR_NO_TASKS sCond = " COND_LAMAR_NO_TASKS " BREAK CASE COND_END_CHASE sCond = " COND_END_CHASE " BREAK CASE COND_PLAYER_ALERTS_ELSALVS sCond = " COND_PLAYER_ALERTS_ELSALVS " BREAK CASE cond_vehicle_come_to_stop sCond = " cond_vehicle_come_to_stop " BREAK CASE COND_trigger_bum sCond = " COND_trigger_bum " BREAK CASE COND_lemar_climbed_gate sCond = " COND_lemar_climbed_gate " BREAK CASE COND_lemar_at_bum sCond = " COND_lemar_at_bum " BREAK CASE COND_player_hit_bum sCond = " COND_player_hit_bum " BREAK CASE COND_lemar_began_bum_interaction sCond = " COND_lemar_began_bum_interaction " BREAK CASE COND_player_interupted_anim sCond = " COND_player_interupted_anim " BREAK CASE COND_LEMAR_APPROACHING_GATE sCond = " COND_LEMAR_APPROACHING_GATE " BREAK CASE COND_PLAYER_IN_ALLEYWAY sCond = " COND_PLAYER_IN_ALLEYWAY " BREAK CASE COND_DIA_BIKE_IN_LOCKUP sCond = " COND_DIA_BIKE_IN_LOCKUP " BREAK CASE COND_DIA_BUM_SHOUTS_PLAYED sCond = " COND_DIA_BUM_SHOUTS_PLAYED " BREAK CASE COND_LEMAR_HEADING_TOWARDS_BUM sCond = " COND_LEMAR_HEADING_TOWARDS_BUM " BREAK CASE COND_PLAYER_CLIMBING_GATE sCond = " COND_PLAYER_CLIMBING_GATE " BREAK CASE COND_PLAYER_WITHIN_50M_OF_LAMAR sCond = " COND_PLAYER_WITHIN_50M_OF_LAMAR " BREAK CASE COND_LEMAR_IN_RANGE_OF_CAR sCond = " COND_LEMAR_IN_RANGE_OF_CAR " BREAK CASE COND_CAR_CLOSING_ON_LEMAR sCond = " COND_CAR_CLOSING_ON_LEMAR " BREAK CASE COND_LEMAR_LOOKING_AT_PASSING_CAR sCond = " COND_LEMAR_LOOKING_AT_PASSING_CAR " BREAK CASE COND_PLAYER_STOOD_INFRONT_OF_CAR sCond = " COND_PLAYER_STOOD_INFRONT_OF_CAR " BREAK CASE COND_LEMAR_CONTINUES_WALKING_DOWN_ALLEY_AFTER_CAR_BLOCK sCond = " COND_LEMAR_CONTINUES_WALKING_DOWN_ALLEY_AFTER_CAR_BLOCK " BREAK CASE COND_DRUNK_KICK_ANIM_COMPLETED sCond = " COND_DRUNK_KICK_ANIM_COMPLETED " BREAK CASE COND_BUM_RETURNED_TO_GARAGE_FROM_ANIM sCond = " COND_BUM_RETURNED_TO_GARAGE_FROM_ANIM " BREAK CASE COND_VEHICLE_STOPPED sCond = " COND_VEHICLE_STOPPED " BREAK CASE COND_PLAYER_FAIL_CAR_ALARM sCond = " COND_PLAYER_FAIL_CAR_ALARM " BREAK CASE COND_PLAYER_LAGS_AS_LAMAR_HEADS_TO_ALLEY_END sCond = " COND_PLAYER_LAGS_AS_LAMAR_HEADS_TO_ALLEY_END " BREAK CASE COND_PLAYER_TOO_FAR_BEHIND_LEMAR sCond = " COND_PLAYER_TOO_FAR_BEHIND_LEMAR " BREAK CASE COND_IN_END_ALLEY_RANGE sCond = " COND_IN_END_ALLEY_RANGE " BREAK CASE COND_LEMAR_NEAR_GARAGE sCond = " COND_LEMAR_NEAR_GARAGE " BREAK CASE COND_CAR_PASSED_LEMAR sCond = " COND_CAR_PASSED_LEMAR " BREAK CASE COND_FIRST_GARAGE_OPENED sCond = " COND_FIRST_GARAGE_OPENED " BREAK CASE COND_TWO_GARAGES_OPENED sCond = " COND_TWO_GARAGES_OPENED " BREAK CASE COND_PLAYER_NEXT_TO_ELSAL_CAR sCond = " COND_PLAYER_NEXT_TO_ELSAL_CAR " BREAK CASE COND_PLAYER_AT_GARAGE1 sCond = " COND_PLAYER_AT_GARAGE1 " BREAK CASE COND_PLAYER_AT_GARAGE2 sCond = " COND_PLAYER_AT_GARAGE2 " BREAK CASE COND_PLAYER_AT_GARAGE3 sCond = " COND_PLAYER_AT_GARAGE3 " BREAK CASE COND_FRANKLIN_HIT_BY_CAR sCond = " COND_FRANKLIN_HIT_BY_CAR " BREAK CASE COND_PLAYER_TOLD_TO_OPEN_GARAGES sCond = " COND_PLAYER_TOLD_TO_OPEN_GARAGES " BREAK CASE COND_LEMAR_REACHED_END_AND_WAITING sCond = " COND_LEMAR_REACHED_END_AND_WAITING " BREAK CASE COND_PLAYER_FAIL_BLOCKING_CAR sCond = " COND_PLAYER_FAIL_BLOCKING_CAR " BREAK CASE COND_DELAY_AFTER_PLAYER_ATTACKS_CAR sCond = " COND_DELAY_AFTER_PLAYER_ATTACKS_CAR " BREAK CASE COND_CAR_BLOCKING_GATE sCond = " COND_CAR_BLOCKING_GATE " BREAK CASE COND_PLAYER_BLOCKING_GATE sCond = " COND_PLAYER_BLOCKING_GATE " BREAK CASE COND_LEMAR_TRIGGER_BUM_DIALOGUE_RANGE sCond = " COND_LEMAR_TRIGGER_BUM_DIALOGUE_RANGE " BREAK CASE COND_END_ALLEY_STAGE sCond = " COND_END_ALLEY_STAGE " BREAK CASE COND_START_SHOOTOUT sCond = " COND_START_SHOOTOUT " BREAK CASE COND_HEARD_VAGOS sCond = " COND_HEARD_VAGOS " BREAK CASE COND_LAMAR_REACTED sCond = " COND_LAMAR_REACTED " BREAK CASE COND_PLAYER_LEFT_GARAGE sCond = " COND_PLAYER_LEFT_GARAGE " BREAK CASE COND_PLAYER_HAS_A_GUN sCond = " COND_PLAYER_HAS_A_GUN " BREAK CASE COND_INSTRUCTIONS_GIVEN sCond = " COND_INSTRUCTIONS_GIVEN " BREAK CASE COND_PLAYER_ADVANCES_PORTALOO sCond = " COND_PLAYER_ADVANCES_PORTALOO " BREAK CASE COND_ONE_ENEMY_LEFT sCond = " COND_ONE_ENEMY_LEFT " BREAK CASE COND_ELSAL_ON_LEFT_SPAWNED sCond = " COND_ELSAL_ON_LEFT_SPAWNED " BREAK CASE COND_NO_ELSAL_ALIVE sCond = " COND_NO_ELSAL_ALIVE " BREAK CASE COND_NO_ELSAL_BY_PORTALOO sCond = " COND_NO_ELSAL_BY_PORTALOO " BREAK CASE COND_SCAFFOLD_BLOWN sCond = " COND_SCAFFOLD_BLOWN " BREAK CASE COND_LEMAR_BEING_SHOT_AT_FROM_SCAFFOLD sCond = " COND_LEMAR_BEING_SHOT_AT_FROM_SCAFFOLD " BREAK CASE COND_BLOCK_TAUNTS sCond = " COND_BLOCK_TAUNTS " BREAK CASE COND_LAMAR_IS_REACTING_TO_GUNFIRE sCond = " COND_LAMAR_IS_REACTING_TO_GUNFIRE " BREAK CASE COND_ELSAL_ON_SCAFFOLD_SPAWNED sCond = " COND_ELSAL_ON_SCAFFOLD_SPAWNED " BREAK CASE COND_PLAYER_BLOCKING_PORTALOO sCond = " COND_PLAYER_BLOCKING_PORTALOO " BREAK CASE COND_LEMAR_HEADING_FOR_PORTALOO sCond = " COND_LEMAR_HEADING_FOR_PORTALOO " BREAK CASE COND_IS_LEMAR_IN_COVER_AT_PORTALOO sCond = " COND_IS_LEMAR_IN_COVER_AT_PORTALOO " BREAK CASE COND_SCAFFOLD_PED_FALLS sCond = " COND_SCAFFOLD_PED_FALLS " BREAK CASE COND_FIRST_WAVE_DEAD sCond = " COND_FIRST_WAVE_DEAD " BREAK CASE COND_PLAYER_PASSED_SKIP sCond = " COND_PLAYER_PASSED_SKIP " BREAK CASE COND_SECOND_WAVE_FIRST_PED_DEAD sCond = " COND_SECOND_WAVE_FIRST_PED_DEAD " BREAK CASE COND_VERANDA_PED_DEAD sCond = " COND_VERANDA_PED_DEAD " BREAK CASE COND_ROOf_PED_DEAD sCond = " COND_ROOf_PED_DEAD " BREAK CASE COND_SECOND_WAVE_DEAD sCond = " COND_SECOND_WAVE_DEAD " BREAK CASE COND_LEMAR_ADVANCED_TO_SKIP sCond = " COND_LEMAR_ADVANCED_TO_SKIP " BREAK CASE COND_CAR_DRIVING_AWAY sCond = " COND_CAR_DRIVING_AWAY " BREAK CASE COND_DRIVER_CAN_DRIVE_CAR sCond = " COND_DRIVER_CAN_DRIVE_CAR " BREAK CASE COND_FINAL_WAVE_CAN_TRIGGER sCond = " COND_FINAL_WAVE_CAN_TRIGGER " BREAK CASE COND_DIA_FINAL_WAVE sCond = " COND_DIA_FINAL_WAVE " BREAK CASE COND_ALL_VAGOS_DEAD sCond = " COND_ALL_VAGOS_DEAD " BREAK CASE COND_EXPLODING_CAR_KILLED_SOMEONE sCond = " COND_EXPLODING_CAR_KILLED_SOMEONE " BREAK CASE COND_LEMAR_IN_END_LOCATION sCond = " COND_LEMAR_IN_END_LOCATION " BREAK CASE COND_DIA_SHOOT_GAS_CAN sCond = " COND_DIA_SHOOT_GAS_CAN " BREAK CASE COND_PLAYER_ARMED sCond = " COND_PLAYER_ARMED " BREAK CASE COND_PLAYER_ENTERED_COVER sCond = " COND_PLAYER_ENTERED_COVER " BREAK CASE COND_FLEE_CAR_LAYING_PETROL sCond = " COND_FLEE_CAR_LAYING_PETROL " BREAK CASE COND_FLEE_CAR_DISRUPTED sCond = " COND_FLEE_CAR_DISRUPTED " BREAK CASE COND_SHOTGUN_PICKED_UP sCond = " COND_SHOTGUN_PICKED_UP " BREAK CASE COND_GAS_COMMENT_MADE sCond = " COND_GAS_COMMENT_MADE " BREAK CASE COND_PLAYER_NEAR_SHOTGUN sCond = " COND_PLAYER_NEAR_SHOTGUN " BREAK CASE COND_PLAYER_LEAVING_LAMAR sCond = " COND_PLAYER_LEAVING_LAMAR " BREAK CASE COND_PLAYER_LEAVING_LAMAR_AT_END sCond = " COND_PLAYER_LEAVING_LAMAR_AT_END " BREAK CASE COND_FIRE_UNDER_CAR sCond = " COND_FIRE_UNDER_CAR " BREAK CASE COND_DIA_LETS_GO_PLAYED sCond = " COND_DIA_LETS_GO_PLAYED " BREAK CASE COND_END_SHOOTOUT sCond = " COND_END_SHOOTOUT " BREAK CASE COND_START_ON_BIKE sCond = " COND_START_ON_BIKE " BREAK CASE COND_LAMAR_PASSENGER_WITH_PLAYER sCond = " COND_LAMAR_PASSENGER_WITH_PLAYER " BREAK CASE COND_LAMAR_PASSENGER_WITHOUT_PLAYER sCond = " COND_LAMAR_PASSENGER_WITHOUT_PLAYER " BREAK CASE COND_LAMAR_WARPED_BACK sCond = " COND_LAMAR_WARPED_BACK " BREAK CASE COND_LAMAR_IN_A_CAR sCond = " COND_LAMAR_IN_A_CAR " BREAK CASE COND_LAMAR_IN_UNDRIVEABLE_CAR sCond = " COND_LAMAR_IN_UNDRIVEABLE_CAR " BREAK CASE COND_LAMAR_IN_CAR_AS_DRIVER sCond = " COND_LAMAR_IN_CAR_AS_DRIVER " BREAK CASE COND_LAMAR_HAS_NO_TASKS sCond = " COND_LAMAR_HAS_NO_TASKS " BREAK CASE COND_PLAYER_ON_BIKE sCond = " COND_PLAYER_ON_BIKE " BREAK CASE COND_LAMAR_ATTEMPTING_TO_ENTER_DRIVER_SEAT sCond = " COND_LAMAR_ATTEMPTING_TO_ENTER_DRIVER_SEAT " BREAK CASE COND_LAMAR_FOCUS_CAR_DRIVING_AWAY sCond = " COND_LAMAR_FOCUS_CAR_DRIVING_AWAY " BREAK CASE COND_BIKE_UPSIDE_DOWN sCond = " COND_BIKE_UPSIDE_DOWN " BREAK CASE COND_LAMAR_10M_FROM_PLAYER sCond = " COND_LAMAR_10M_FROM_PLAYER " BREAK CASE COND_PLAYER_100M_FROM_LAMAR sCond = " COND_PLAYER_100M_FROM_LAMAR " BREAK CASE COND_PLAYER_AT_DESTINATION sCond = " COND_PLAYER_AT_DESTINATION " BREAK CASE COND_LAMAR_GOING_FOR_EMPTY_CAR sCond = " COND_LAMAR_GOING_FOR_EMPTY_CAR " BREAK CASE COND_PLAYER_NEAR_LAMAR_AT_CARWASH sCond = " COND_PLAYER_NEAR_LAMAR_AT_CARWASH " BREAK CASE COND_PLAYER_STILL_ON_BIKE sCond = " COND_PLAYER_STILL_ON_BIKE " BREAK CASE COND_BIKE_FAR_FROM_LAMAR sCond = " COND_BIKE_FAR_FROM_LAMAR " BREAK CASE COND_END_ON_BIKE sCond = " COND_END_ON_BIKE " BREAK DEFAULT sCond = " -NOT DEFINED-" BREAK ENDSWITCH RETURN sCond ENDFUNC // =============================================== Asssets FUNC BOOL IS_ASSET_READY(eMissionAssets ethisAsset) int thisAsset = enum_to_int(ethisAsset) if assets[thisAsset].loadStage = LS_REQUESTED OR assets[thisAsset].loadStage = LS_LOADED SWITCH int_to_enum(eMissionAssets,thisAsset) CASE ASSET_MODEL_LAMAR IF HAS_MODEL_LOADED(model_lamar) RETURN TRUE ENDIF BREAK CASE ASSET_MODEL_SALVAS IF HAS_MODEL_LOADED(model_salvas) RETURN TRUE ENDIF BREAK CASE ASSET_WEAPONS IF HAS_WEAPON_ASSET_LOADED(WEAPONTYPE_PISTOL) AND HAS_WEAPON_ASSET_LOADED(WEAPONTYPE_MICROSMG) AND HAS_WEAPON_ASSET_LOADED(WEAPONTYPE_PUMPSHOTGUN) RETURN TRUE ENDIF BREAK CASE ASSET_BUM IF HAS_MODEL_LOADED(model_tramp) RETURN TRUE ENDIF BREAK CASE ASSET_MODEL_BIKE IF HAS_MODEL_LOADED(BAGGER) RETURN TRUE ENDIF BREAK CASE ASSET_MISSION_ANIMS IF HAS_ANIM_DICT_LOADED("MISSARMENIAN2") RETURN TRUE ENDIF BREAK CASE ASSET_BIKE_ARRIVE_ANIMS IF HAS_ANIM_DICT_LOADED("missarmenian2_mcs_5") AND HAS_ANIM_DICT_LOADED("reaction@points@") RETURN TRUE ENDIF BREAK CASE ASSET_TWO_BISONS IF HAS_MODEL_LOADED(BISON) RETURN TRUE ENDIF BREAK CASE ASSET_FLEE_CAR IF HAS_MODEL_LOADED(PENUMBRA) RETURN TRUE ENDIF BREAK CASE ASSET_REC_DRIVE_AWAY_CAR IF HAS_VEHICLE_RECORDING_BEEN_LOADED(1,sVehicleRecordingLibrary) RETURN TRUE ENDIF BREAK CASE ASSET_REC_FLEE_CAR IF HAS_VEHICLE_RECORDING_BEEN_LOADED(6,sVehicleRecordingLibrary) AND HAS_VEHICLE_RECORDING_BEEN_LOADED(11,sVehicleRecordingLibrary) RETURN TRUE ENDIF BREAK CASE ASSET_WAYPOINT_FROM_DOOR IF GET_IS_WAYPOINT_RECORDING_LOADED("arm2_15") RETURN TRUE ENDIF BREAK CASE ASSET_MODEL_GASDUMMY IF HAS_MODEL_LOADED(PROP_LD_TEST_01)RETURN TRUE ENDIF BREAK CASE ASSET_WAYPOINT_FROM_BUM IF GET_IS_WAYPOINT_RECORDING_LOADED("ARM2") RETURN TRUE ENDIF BREAK CASE ASSET_WAYPOINT_LAMAR_RUNS_OUT_ALLEYWAY IF GET_IS_WAYPOINT_RECORDING_LOADED("ARM2_FIRE") RETURN TRUE ENDIF BREAK CASE ASSET_ANIM_IDLES IF HAS_ANIM_DICT_LOADED("missarmenian2lamar_idles") RETURN TRUE ENDIF BREAK CASE ASSET_AUDIO_BANKS IF REQUEST_SCRIPT_AUDIO_BANK("ARM_2_REPO_01") AND REQUEST_SCRIPT_AUDIO_BANK("ARM_2_GAS_EXPLOSION") AND REQUEST_SCRIPT_AUDIO_BANK("ARM_2_GARAGE_DOORS") AND REQUEST_SCRIPT_AUDIO_BANK("ARM_2_BIKER_DRIVE_OFF") RETURN TRUE ENDIF BREAK CASE ASSET_SIMEON IF HAS_MODEL_LOADED(IG_SIEMONYETARIAN) RETURN TRUE ENDIF BREAK CASE ASSET_BULLET_DODGE IF HAS_ANIM_DICT_LOADED("missarmenian2lamar_in_cover") RETURN TRUE ENDIF BREAK CASE ASSET_FRONT_GATES IF HAS_MODEL_LOADED(PROP_ARM_GATE_L) RETURN TRUE ENDIF BREAK ENDSWITCH ENDIF //cprintln(debug_trevor3,"Asset not ready: ",ethisAsset) RETURN FALSE ENDFUNC FUNC BOOL IS_ASSET_STAGE_READY(eAssetStage thisStage) IF NOT bAssetChageInProgress AND currentAssetStage = thisStage RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC BOOL HANDLE_ASSET_LOADING() int iAssetArray bAssetChageInProgress = FALSE REPEAT COUNT_OF(assets) iAssetArray IF assets[iAssetArray].loadStage = LS_REQUESTED IF IS_ASSET_READY(int_to_enum(eMissionAssets,iAssetArray)) assets[iAssetArray].loadStage = LS_LOADED anAssetIsLoading = FALSE ENDIF ELSE IF assets[iAssetArray].loadStage = LS_REQUIRED AND NOT anAssetIsLoading cprintln(debug_Trevor3,"LOAD ASSETS: ",iAssetArray) //load assets SWITCH int_to_enum(eMissionAssets,iAssetArray) CASE ASSET_MODEL_LAMAR REQUEST_MODEL(model_lamar) BREAK CASE ASSET_MODEL_SALVAS REQUEST_MODEL(model_salvas) REQUEST_MODEL(model_salvasB) BREAK CASE ASSET_WEAPONS REQUEST_WEAPON_ASSET(WEAPONTYPE_PISTOL) REQUEST_WEAPON_ASSET(WEAPONTYPE_MICROSMG) REQUEST_WEAPON_ASSET(WEAPONTYPE_PUMPSHOTGUN) BREAK CASE ASSET_BUM REQUEST_MODEL(model_tramp) BREAK CASE ASSET_MODEL_BIKE REQUEST_MODEL(BAGGER) BREAK CASE ASSET_MISSION_ANIMS REQUEST_ANIM_DICT("MISSARMENIAN2") BREAK CASE ASSET_BIKE_ARRIVE_ANIMS REQUEST_ANIM_DICT("missarmenian2_mcs_5") REQUEST_ANIM_DICT("reaction@points@") BREAK CASE ASSET_TWO_BISONS REQUEST_MODEL(BISON) BREAK CASE ASSET_FLEE_CAR REQUEST_MODEL(PENUMBRA) BREAK CASE ASSET_REC_DRIVE_AWAY_CAR REQUEST_VEHICLE_RECORDING(1,sVehicleRecordingLibrary) BREAK CASE ASSET_REC_FLEE_CAR REQUEST_VEHICLE_RECORDING(6,sVehicleRecordingLibrary) REQUEST_VEHICLE_RECORDING(11,sVehicleRecordingLibrary) BREAK CASE ASSET_WAYPOINT_FROM_DOOR REQUEST_WAYPOINT_RECORDING("arm2_15") BREAK CASE ASSET_MODEL_GASDUMMY REQUEST_MODEL(PROP_LD_TEST_01) BREAK CASE ASSET_WAYPOINT_FROM_BUM REQUEST_WAYPOINT_RECORDING("ARM2") BREAK CASE ASSET_WAYPOINT_LAMAR_RUNS_OUT_ALLEYWAY REQUEST_WAYPOINT_RECORDING("ARM2_FIRE") BREAK CASE ASSET_ANIM_IDLES REQUEST_ANIM_DICT("missarmenian2lamar_idles") BREAK // CASE ASSET_PTFX REQUEST_PTFX_ASSET() BREAK CASE ASSET_AUDIO_BANKS // REQUEST_SCRIPT_AUDIO_BANK("ARM_2_REPO_01") // REQUEST_SCRIPT_AUDIO_BANK("ARM_2_GAS_EXPLOSION") BREAK CASE ASSET_SIMEON REQUEST_MODEL(IG_SIEMONYETARIAN) BREAK CASE ASSET_BULLET_DODGE REQUEST_ANIM_DICT("missarmenian2lamar_in_cover") BREAK CASE ASSET_FRONT_GATES REQUEST_MODEL(PROP_ARM_GATE_L) BREAK ENDSWITCH assets[iAssetArray].loadStage = LS_REQUESTED anAssetIsLoading = TRUE ENDIF ENDIF IF assets[iAssetArray].loadStage = LS_REQUESTED OR assets[iAssetArray].loadStage = LS_REQUIRED bAssetChageInProgress = TRUE ENDIF endrepeat IF NOT bAssetChageInProgress RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC BOOL HANDLE_ASSETS() IF bAssetChageInProgress IF HANDLE_ASSET_LOADING() bAssetChageInProgress = FALSE RETURN TRUE ELSE RETURN FALSE ENDIF ENDIF RETURN FALSE ENDFUNC PROC LOAD_AND_RELEASE_ASSETS(eAssetStage newAssetStage) //cprintln(debug_Trevor3,"LOAD_AND_RELEASE_ASSETS: ",newAssetStage) int iAssetArray REPEAT COUNT_OF(assets) iAssetArray IF newAssetStage >= assets[iAssetArray].loadFor AND newAssetStage < assets[iAssetArray].releaseOn assets[iAssetArray].loadStage = LS_REQUIRED ELSE //release assets IF assets[iAssetArray].loadStage = LS_REQUESTED OR assets[iAssetArray].loadStage = LS_LOADED SWITCH int_to_enum(eMissionAssets,iAssetArray) CASE ASSET_MODEL_LAMAR SET_MODEL_AS_NO_LONGER_NEEDED(model_lamar) BREAK CASE ASSET_MODEL_SALVAS SET_MODEL_AS_NO_LONGER_NEEDED(model_salvas) BREAK CASE ASSET_WEAPONS REMOVE_WEAPON_ASSET(WEAPONTYPE_PISTOL) REMOVE_WEAPON_ASSET(WEAPONTYPE_MICROSMG) REMOVE_WEAPON_ASSET(WEAPONTYPE_PUMPSHOTGUN) BREAK CASE ASSET_BUM SET_MODEL_AS_NO_LONGER_NEEDED(model_tramp) BREAK CASE ASSET_MODEL_BIKE SET_MODEL_AS_NO_LONGER_NEEDED(BAGGER) BREAK CASE ASSET_MISSION_ANIMS REMOVE_ANIM_DICT("MISSARMENIAN2") BREAK CASE ASSET_BIKE_ARRIVE_ANIMS REMOVE_ANIM_DICT("missarmenian2_mcs_5") REMOVE_ANIM_DICT("reaction@points@") BREAK CASE ASSET_TWO_BISONS SET_MODEL_AS_NO_LONGER_NEEDED(BISON) BREAK CASE ASSET_FLEE_CAR SET_MODEL_AS_NO_LONGER_NEEDED(PENUMBRA) BREAK CASE ASSET_REC_DRIVE_AWAY_CAR REMOVE_VEHICLE_RECORDING(1,sVehicleRecordingLibrary) BREAK CASE ASSET_REC_FLEE_CAR REMOVE_VEHICLE_RECORDING(6,sVehicleRecordingLibrary) REMOVE_VEHICLE_RECORDING(11,sVehicleRecordingLibrary) BREAK CASE ASSET_WAYPOINT_FROM_DOOR REMOVE_WAYPOINT_RECORDING("arm2_15") BREAK CASE ASSET_MODEL_GASDUMMY SET_MODEL_AS_NO_LONGER_NEEDED(PROP_LD_TEST_01) BREAK CASE ASSET_WAYPOINT_FROM_BUM REMOVE_WAYPOINT_RECORDING("ARM2") BREAK CASE ASSET_WAYPOINT_LAMAR_RUNS_OUT_ALLEYWAY REMOVE_WAYPOINT_RECORDING("ARM2_FIRE") BREAK CASE ASSET_ANIM_IDLES REMOVE_ANIM_DICT("missarmenian2lamar_idles") BREAK CASE ASSET_AUDIO_BANKS RELEASE_SCRIPT_AUDIO_BANK() BREAK CASE ASSET_SIMEON SET_MODEL_AS_NO_LONGER_NEEDED(IG_SIEMONYETARIAN) BREAK CASE ASSET_BULLET_DODGE REMOVE_ANIM_DICT("missarmenian2lamar_in_cover") BREAK CASE ASSET_FRONT_GATES SET_MODEL_AS_NO_LONGER_NEEDED(PROP_ARM_GATE_L) BREAK ENDSWITCH assets[iAssetArray].loadStage = LS_NULL ENDIF ENDIF ENDREPEAT ENDPROC PROC SET_ASSET_STAGE(eAssetStage newAssetStage) cprintln(debug_Trevor3,"Set Asset Stage") bAssetChageInProgress = TRUE anAssetIsLoading = FALSE currentAssetStage = newAssetStage LOAD_AND_RELEASE_ASSETS(newAssetStage) ENDPROC PROC FORCE_ASSET_STAGE(eAssetStage newAssetStage) //cprintln(debug_Trevor3,"FORCE_ASSET_STAGE: ",newAssetStage) bAssetChageInProgress = TRUE anAssetIsLoading = FALSE currentAssetStage = newAssetStage LOAD_AND_RELEASE_ASSETS(newAssetStage) WHILE bAssetChageInProgress HANDLE_ASSETS() safewait(0) ENDWHILE ENDPROC PROC PREP_ASSET(eMissionAssets assetType, eAssetStage startAt, eAssetStage endOn) ASSETS[enum_to_int(assetType)].loadFor = startAt ASSETS[enum_to_int(assetType)].releaseOn = endOn ENDPROC //end assets PROC RESET_CONDITIONS() int i REPEAT COUNT_OF(conditions) i conditions[i].condition = COND_NULL conditions[i].active = FALSE conditions[i].returns = FALSE conditions[i].wasTrue = FALSE conditions[i].flag = 0 ENDREPEAT ENDPROC #IF IS_DEBUG_BUILD proc reset_vehicle_damage() int i repeat COUNT_OF(damageEvent) i damageEvent[i].bActivated=FALSE ENDREPEAT ENDPROC #ENDIF // music bool bNewMusicRequest,bRequiresPreload,bPreloadRequest string sMusicToPlay,sPreloadMusic proc playMusic(string musicToPlay, bool bPreload, string musicToLoadNext) bNewMusicRequest = TRUE bRequiresPreload = bPreload sMusicToPlay = musictoPlay sPreloadMusic = musicToLoadNext cprintln(debug_Trevor3,"Wants music: ",musicToPlay) endproc PROC control_music() If bNewMusicRequest //cprintln(debug_Trevor3,"MUSIC REQUIRED: ",sMusicToPlay) cprintln(debug_Trevor3,"New music request: ",sMusicToPlay) If bRequiresPreload IF PREPARE_MUSIC_EVENT(sMusicToPlay) IF TRIGGER_MUSIC_EVENT(sMusicToPlay) cprintln(debug_Trevor3,"Triggered music: ",sMusicToPlay) bNewMusicRequest = FALSE bRequiresPreload = FALSE ENDIF ENDIf ELSE IF TRIGGER_MUSIC_EVENT(sMusicToPlay) cprintln(debug_Trevor3,"Triggered music b: ",sMusicToPlay) //cprintln(debug_Trevor3,"MUSIC TRIGGERED: ",sMusicToPlay) bNewMusicRequest = FALSE ENDIF ENDIF ELSE If bPreloadRequest IF PREPARE_MUSIC_EVENT(sPreloadMusic) cprintln(debug_Trevor3,"PREPARE_MUSIC_EVENT: ",sMusicToPlay) bPreloadRequest=FALSE ENDIf ENDIF ENDIF endproc /* PROC SET_PED_ACTION(int id, enumAction action, int flagValue=0) ped[id].action = action ped[id].actionFlag = flagValue ped[id].floatA = 0.0 endproc */ // ============================================= Handling dialogue =========================================== ped_index pedInSlot[10] func PED_INDEX ped_in_slot(int slot) return pedInSlot[slot] ENDFUNC func bool IS_CONV_ROOT_PLAYING(string conv_root_to_check) TEXT_LABEL_23 txt txt = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT() IF ARE_STRINGS_EQUAL(txt,conv_root_to_check) RETURN TRUE ENDIF RETURN FALSE endfunc PROC ADD_PED_FOR_DIALOGUE_EXTRA(int speakerIndex, ped_index speaker, string speakerLabel) int iJ repeat count_of(pedInSlot) iJ if pedInSlot[iJ] = speaker //there should never be more than one situation for this REMOVE_PED_FOR_DIALOGUE(MyLocalPedStruct,iJ) pedInSlot[iJ] = null endif endrepeat if pedInSlot[speakerIndex] != null REMOVE_PED_FOR_DIALOGUE(MyLocalPedStruct,speakerIndex) ENDIF ADD_PED_FOR_DIALOGUE(MyLocalPedStruct,speakerIndex,speaker, speakerLabel) pedInSlot[speakerIndex] = speaker ENDPROC string remlastConv PROC REMOVE_INACTIVE_SPEAKERS(string thisConv, int iSp1,int iSp2, int iSp3, int iSp4) cprintln(debug_trevor3, isp1," ",isp2," ",isp3," ",isp4) int i IF IS_STRING_NULL_OR_EMPTY(remlastConv) OR NOT ARE_STRINGS_EQUAL(remlastConv,thisConv) remlastConv = thisConv FOR i = 0 to 15 IF MyLocalPedStruct.PedInfo[i].ActiveInConversation IF i != iSp1 AND i != iSp2 AND i != iSp3 AND i != isp4 CPRINTLN(DEBUG_TREVOR3,"remove pexd at dialogue: ",I," label: ",MyLocalPedStruct.PedInfo[i].VoiceID) REMOVE_PED_FOR_DIALOGUE(MyLocalPedStruct,i) ENDIF ENDIF ENDFOR ENDIF ENDPROC func bool CREATE_CONVERSATION_EXTRA_NO_SUBTITLES(string Label, int speakerOne, ped_index pedSpeakerOne, string speakerOneLabel, int speakerTwo=-1, ped_index pedSpeakerTwo=null, string speakerTwoLabel = null, int speakerThree=-1, ped_index pedSpeakerThree=null, string speakerThreeLabel = null, enumConversationPriority convPriority = CONV_PRIORITY_MEDIUM) //PRINTLN("Wants to create conv: ",Label) REMOVE_INACTIVE_SPEAKERS(Label,speakerOne,speakerTwo,speakerThree,-1) ADD_PED_FOR_DIALOGUE_EXTRA(speakerOne,pedSpeakerOne,speakerOneLabel) if speakerTwo != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerTwo,pedSpeakerTwo,speakerTwoLabel) ENDIF if speakerThree != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerThree,pedSpeakerThree,speakerThreeLabel) ENDIF if CREATE_CONVERSATION(MyLocalPedStruct, convBlock, Label, convPriority,DO_NOT_DISPLAY_SUBTITLES) // update_active_speaking_peds(pedSpeakerOne,pedSpeakerTwo,pedSpeakerThree) return true ENDIF return FALSE ENDFUNC func bool CREATE_CONVERSATION_EXTRA(string Label, int speakerOne, ped_index pedSpeakerOne, string speakerOneLabel, int speakerTwo=-1, ped_index pedSpeakerTwo=null, string speakerTwoLabel = null, int speakerThree=-1, ped_index pedSpeakerThree=null, string speakerThreeLabel = null, int speakerFour=-1, ped_index pedSpeakerFour=null, string speakerFourLabel = null, enumConversationPriority convPriority = CONV_PRIORITY_HIGH) //PRINTLN("Wants to create conv: ",Label) //IF NOT IS_MESSAGE_BEING_DISPLAYED() //OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0 cprintln(debug_Trevor3,"CREATE_CONVERSATION_EXTRA()") IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() cprintln(debug_Trevor3,"no convo ongoing") REMOVE_INACTIVE_SPEAKERS(Label,speakerOne,speakerTwo,speakerThree,speakerFour) ADD_PED_FOR_DIALOGUE_EXTRA(speakerOne,pedSpeakerOne,speakerOneLabel) if speakerTwo != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerTwo,pedSpeakerTwo,speakerTwoLabel) ENDIF if speakerThree != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerThree,pedSpeakerThree,speakerThreeLabel) ENDIF if speakerFour != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerFour,pedSpeakerFour,speakerFourLabel) ENDIF IF IS_MESSAGE_BEING_DISPLAYED() ANd IS_SUBTITLE_PREFERENCE_SWITCHED_ON() cprintln(debug_Trevor3,"create convo now a") if CREATE_CONVERSATION(MyLocalPedStruct, convBlock, Label, convPriority,DO_NOT_DISPLAY_SUBTITLES) bLastConvoWithoutSubtitles = TRUE PRINTLN("Conv ",Label," a success") return true ENDIF else cprintln(debug_Trevor3,"create convo now b") if CREATE_CONVERSATION(MyLocalPedStruct, convBlock, Label, convPriority) bLastConvoWithoutSubtitles = FALSE PRINTLN("Conv ",Label," a success") return true ENDIF endif ENDIF return FALSE ENDFUNC func bool CREATE_CONVERSATION_EXTRA_WAIT_ON_INSTRUCTIONS(string Label, int speakerOne, ped_index pedSpeakerOne, string speakerOneLabel, int speakerTwo=-1, ped_index pedSpeakerTwo=null, string speakerTwoLabel = null, int speakerThree=-1, ped_index pedSpeakerThree=null, string speakerThreeLabel = null, int speakerFour=-1, ped_index pedSpeakerFour=null, string speakerFourLabel = null, enumConversationPriority convPriority = CONV_PRIORITY_HIGH) IF NOT IS_MESSAGE_BEING_DISPLAYED() if CREATE_CONVERSATION_EXTRA(Label, speakerOne, pedSpeakerOne, speakerOneLabel, speakerTwo, pedSpeakerTwo, speakerTwoLabel, speakerThree, pedSpeakerThree, speakerThreeLabel , speakerFour, pedSpeakerFour, speakerFourLabel, convPriority) return true endif ENDIF return false endfunc func bool CREATE_CONVERSATION_FROM_SPECIFIC_LINE_EXTRA(string Label, string line, int speakerOne, ped_index pedSpeakerOne, string speakerOneLabel, int speakerTwo=-1, ped_index pedSpeakerTwo=null, string speakerTwoLabel = null, int speakerThree=-1, ped_index pedSpeakerThree=null, string speakerThreeLabel = null, enumConversationPriority convPriority = CONV_PRIORITY_HIGH) IF NOT IS_MESSAGE_BEING_DISPLAYED() OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON() REMOVE_INACTIVE_SPEAKERS(Label,speakerOne,speakerTwo,speakerThree,-1) ADD_PED_FOR_DIALOGUE_EXTRA(speakerOne,pedSpeakerOne,speakerOneLabel) if speakerTwo != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerTwo,pedSpeakerTwo,speakerTwoLabel) ENDIF if speakerThree != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerThree,pedSpeakerThree,speakerThreeLabel) ENDIF IF CREATE_CONVERSATION_FROM_SPECIFIC_LINE(MyLocalPedStruct,convBlock,Label,line,convPriority) RETURN TRUE ENDIF ENDIF RETURN FALSE endfunc func bool PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(string Label, string line, int speakerOne, ped_index pedSpeakerOne, string speakerOneLabel, int speakerTwo=-1, ped_index pedSpeakerTwo=null, string speakerTwoLabel = null, int speakerThree=-1, ped_index pedSpeakerThree=null, string speakerThreeLabel = null, enumConversationPriority convPriority = CONV_PRIORITY_HIGH) IF NOT IS_MESSAGE_BEING_DISPLAYED() OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON() REMOVE_INACTIVE_SPEAKERS(Label,speakerOne,speakerTwo,speakerThree,-1) ADD_PED_FOR_DIALOGUE_EXTRA(speakerOne,pedSpeakerOne,speakerOneLabel) if speakerTwo != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerTwo,pedSpeakerTwo,speakerTwoLabel) ENDIF if speakerThree != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerThree,pedSpeakerThree,speakerThreeLabel) ENDIF IF PLAY_SINGLE_LINE_FROM_CONVERSATION(MyLocalPedStruct,convBlock,Label,line,convPriority) RETURN TRUE ENDIF ENDIF return false ENDFUNC func bool PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA_NO_SUBS(string Label, string line, int speakerOne, ped_index pedSpeakerOne, string speakerOneLabel, int speakerTwo=-1, ped_index pedSpeakerTwo=null, string speakerTwoLabel = null, int speakerThree=-1, ped_index pedSpeakerThree=null, string speakerThreeLabel = null, enumConversationPriority convPriority = CONV_PRIORITY_HIGH) IF NOT IS_MESSAGE_BEING_DISPLAYED() OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON() REMOVE_INACTIVE_SPEAKERS(Label,speakerOne,speakerTwo,speakerThree,-1) ADD_PED_FOR_DIALOGUE_EXTRA(speakerOne,pedSpeakerOne,speakerOneLabel) if speakerTwo != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerTwo,pedSpeakerTwo,speakerTwoLabel) ENDIF if speakerThree != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerThree,pedSpeakerThree,speakerThreeLabel) ENDIF IF PLAY_SINGLE_LINE_FROM_CONVERSATION(MyLocalPedStruct,convBlock,Label,line,convPriority,DO_NOT_DISPLAY_SUBTITLES) RETURN TRUE ENDIF ENDIF return false ENDFUNC PROC ADD_NON_CRITICAL_STANDARD_CONVERSATION_TO_BUFFER_EXTRA(string Label, int speakerOne, ped_index pedSpeakerOne, string speakerOneLabel, int speakerTwo=-1, ped_index pedSpeakerTwo=null, string speakerTwoLabel = null, int speakerThree=-1, ped_index pedSpeakerThree=null, string speakerThreeLabel = null, enumConversationPriority convPriority = CONV_PRIORITY_HIGH) REMOVE_INACTIVE_SPEAKERS(Label,speakerOne,speakerTwo,speakerThree,-1) ADD_PED_FOR_DIALOGUE_EXTRA(speakerOne,pedSpeakerOne,speakerOneLabel) if speakerTwo != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerTwo,pedSpeakerTwo,speakerTwoLabel) ENDIF if speakerThree != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerThree,pedSpeakerThree,speakerThreeLabel) ENDIF ADD_NON_CRITICAL_STANDARD_CONVERSATION_TO_BUFFER(MyLocalPedStruct, convBlock, Label, convPriority) endproc PROC ADD_NON_CRITICAL_STANDARD_CONVERSATION_TO_BUFFER_EXTRA_NO_SUBS(string Label, int speakerOne, ped_index pedSpeakerOne, string speakerOneLabel, int speakerTwo=-1, ped_index pedSpeakerTwo=null, string speakerTwoLabel = null, int speakerThree=-1, ped_index pedSpeakerThree=null, string speakerThreeLabel = null, enumConversationPriority convPriority = CONV_PRIORITY_HIGH) REMOVE_INACTIVE_SPEAKERS(Label,speakerOne,speakerTwo,speakerThree,-1) ADD_PED_FOR_DIALOGUE_EXTRA(speakerOne,pedSpeakerOne,speakerOneLabel) if speakerTwo != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerTwo,pedSpeakerTwo,speakerTwoLabel) ENDIF if speakerThree != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerThree,pedSpeakerThree,speakerThreeLabel) ENDIF ADD_NON_CRITICAL_STANDARD_CONVERSATION_TO_BUFFER(MyLocalPedStruct, convBlock, Label, convPriority,DO_NOT_DISPLAY_SUBTITLES) endproc bool bCloseForFirstTime int timeForNextComment enum enumChaseState CHASE_INACTIVE, CHASE_INSTRUCTIONS, CHASE_STARTED, CHASE_CLOSE_FOR_FIRST_TIME, CHASE_IN_DIALGOUE, CHASE_WAIT_FOR_NEXT_DIALOGUE, CHASE_RAGE_INSTRUCTIONS, CHASE_SHOOT_INSTRUCTIONS, CHASE_MORE_SHOOT_INSTRUCTIONS, CHASE_RAM_INSTRUCTIONS, CHASE_FAR, CHASE_CLOSE ENDENUM enumChaseState chaseState = CHASE_INACTIVE enumChaseState lastStateforDialogue int iStartLine=-1 proc do_chase_dialogue(bool reset=FALSE) if reset = TRUE chaseState = CHASE_INSTRUCTIONS timeForNextComment=0 bCloseForFirstTime = true lastStateforDialogue = CHASE_FAR bitStoreChase=0 ELSE if not IS_PED_INJURED(ped[ped_bikeman].id) and IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) //if IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehicle[VEH_PLAYER].id) if IS_ENTITY_AT_ENTITY(PLAYER_PED_ID(),vehicle[VEH_OBJECTIVE].id,<>) if bCloseForFirstTime = true chaseState = CHASE_CLOSE_FOR_FIRST_TIME KILL_FACE_TO_FACE_CONVERSATION() ENDIF ENDIF //first chase line switch chaseState case CHASE_STARTED //if get_print_status("ARM2_INS12") = PRN_FINISHED IF iStartLine=-1 iStartLine = GET_RANDOM_INT_IN_RANGE(0,2) ENDIf IF iStartLine = 0 if CREATE_CONVERSATION_EXTRA("AR2_AN09",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") iStartLine=-1 chaseState = CHASE_IN_DIALGOUE ENDIF ELSE if CREATE_CONVERSATION_EXTRA("ARM2_BIKE",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") iStartLine=-1 chaseState = CHASE_IN_DIALGOUE ENDIF ENDIF //ENDIF BREAK case CHASE_IN_DIALGOUE IF NOT IS_STRING_NULL_OR_EMPTY(NextChaseLine) if CREATE_CONVERSATION_EXTRA(NextChaseLine,0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") NextChaseLine = "" ENDIF ELSE if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() timeForNextComment = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(4000,6000) chaseState = CHASE_WAIT_FOR_NEXT_DIALOGUE ENDIF ENDIF BREAK case CHASE_WAIT_FOR_NEXT_DIALOGUE if GET_GAME_TIMER() > timeForNextComment if GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(),ped[ped_bikeman].id) < 50.0 lastStateforDialogue = CHASE_CLOSE //dialogue: There he is. Get him. //if CREATE_CONVERSATION_EXTRA("AR2_AN13",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") chaseState = CHASE_IN_DIALGOUE NextChaseLine = "AR2_AN13" //ENDIF ELSE if GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(),ped[ped_bikeman].id) > 100.0 if lastStateforDialogue = CHASE_CLOSE //dialogue: He's getting away. if CREATE_CONVERSATION_EXTRA("AR2_lost",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") chaseState = CHASE_IN_DIALGOUE lastStateforDialogue = CHASE_FAR ENDIF ELSE //dialogue for catching up with bike IF NOT IS_STRING_NULL_OR_EMPTY(NextChaseLine) ELSe if GET_UNUSED_RANDOM_ENTRY(iEntry,bitStoreChase,0,2) if iEntry=0 NextChaseLine = "AR2_AN10" ELIF iEntry=1 NextChaseLine = "AR2_AN11" ELIF iEntry=2 NextChaseLine = "AR2_AN12" ENDIF chaseState = CHASE_IN_DIALGOUE ENDIF ENDIF lastStateforDialogue = CHASE_FAR ENDIF ENDIf ENDIF ENDIF BREAK case CHASE_CLOSE_FOR_FIRST_TIME bCloseForFirstTime = FALSE PRINTLN("***************** CHECK RAM OR SHOOT ************************") IF GET_BEST_PED_WEAPON(player_ped_id()) != WEAPONTYPE_UNARMED PRINTLN("================== SHOOT ======================") if CREATE_CONVERSATION_EXTRA("AR2_AN15",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") chaseState=CHASE_SHOOT_INSTRUCTIONS ENDIF ELSE if CREATE_CONVERSATION_EXTRA("AR2_AN15b",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") chaseState=CHASE_RAM_INSTRUCTIONS ENDIF ENDIF break CASE CHASE_SHOOT_INSTRUCTIONS if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() // PRINT_NOW("ARM2_INS17",6000,1) add_event(events_shooting_help) chaseState=CHASE_WAIT_FOR_NEXT_DIALOGUE //if get_print_status("ARM2_INS17") = PRN_FINISHED // chaseState=CHASE_MORE_SHOOT_INSTRUCTIONS //CHASE_WAIT_FOR_NEXT_DIALOGUE //ENDIF ENDIF break CASE CHASE_MORE_SHOOT_INSTRUCTIONS // IF NOT IS_THIS_PRINT_BEING_DISPLAYED("ARM2_INS17") chaseState=CHASE_WAIT_FOR_NEXT_DIALOGUE // ENDIF BREAK CASE CHASE_RAM_INSTRUCTIONS if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() /* if get_print_status("ARM2_INS17b") = PRN_NEVER_DISPLAYED PRINT_NOW("ARM2_INS17b",6000,1) ENDIF if get_print_status("ARM2_INS17b") = PRN_FINISHED chaseState=CHASE_WAIT_FOR_NEXT_DIALOGUE ENDIF */ chaseState=CHASE_WAIT_FOR_NEXT_DIALOGUE ENDIF break case CHASE_INSTRUCTIONS if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() // PRINT_NOW("ARM2_INS12",6000,1) //set_help_text("ARM2_HLP20",DEFAULT_GOD_TEXT_TIME) //set_help_text("ARM2_HLP18") chaseState = CHASE_STARTED ENDIF BREAK ENDSWITCH //ENDIF ENDIF ENDIF ENDPROC int idleState proc play_idles(int &iBitSet, int &iTimerUntilNext) IF NOT IS_PED_INJURED(ped[ped_buddy].id) SWITCH idleState CASE 0 int iIdle IF NOT GET_UNUSED_RANDOM_ENTRY(iIdle,iBitSet,0,5,false) iBitSet = 0 ELSE SWITCH iIdle CASE 0 TASK_PLAY_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_look_behind_left",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1, AF_USE_KINEMATIC_PHYSICS) idleState = 1 BREAK CASE 1 TASK_PLAY_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_look_behind_right",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1, AF_USE_KINEMATIC_PHYSICS) idleState = 1 BREAK CASE 2 SWITCH GET_RANDOM_INT_IN_RANGE(0,2) CASE 0 TASK_PLAY_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_look_left",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1, AF_USE_KINEMATIC_PHYSICS) idleState = 1 BREAK CASE 1 TASK_PLAY_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_look_right",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1, AF_USE_KINEMATIC_PHYSICS) idleState = 1 BREAK ENDSWITCH BREAK CASE 3 TASK_PLAY_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_a",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1, AF_USE_KINEMATIC_PHYSICS) idleState = 1 BREAK CASE 4 TASK_PLAY_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_b",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1, AF_USE_KINEMATIC_PHYSICS) idleState = 1 BREAK CASE 5 TASK_PLAY_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_c",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1, AF_USE_KINEMATIC_PHYSICS) idleState = 1 BREAK CASE 6 TASK_PLAY_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_d",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1, AF_USE_KINEMATIC_PHYSICS) idleState = 1 BREAK CASE 7 TASK_PLAY_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_e",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1, AF_USE_KINEMATIC_PHYSICS) idleState = 1 BREAK CASE 8 TASK_PLAY_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_f",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1, AF_USE_KINEMATIC_PHYSICS) idleState = 1 BREAK CASE 9 IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<-1079.229370,-1659.551758,1.961159>>, <<-1103.881226,-1626.431885,10.148659>>, 11.750000) TASK_PLAY_ANIM(ped[ped_buddy].id,"missarmenian2","arm2_lamar_idle_02",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1, AF_USE_KINEMATIC_PHYSICS) idleState = 1 ELSE idleState = 0 ENDIF BREAK CASE 10 IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<-1079.229370,-1659.551758,1.961159>>, <<-1103.881226,-1626.431885,10.148659>>, 11.750000) TASK_PLAY_ANIM(ped[ped_buddy].id,"missarmenian2","arm2_lamar_idle_03",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1, AF_USE_KINEMATIC_PHYSICS) idleState = 1 ELSE idleState = 0 ENDIF BREAK ENDSWITCH ENDIF BREAK CASE 1 IF IS_ENTITY_PLAYING_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_a") iTimerUntilNext = GET_GAME_TIMER() + 500 + floor(GET_ENTITY_ANIM_TOTAL_TIME(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_a")) idleState = 2 ENDIF IF IS_ENTITY_PLAYING_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_b") iTimerUntilNext = GET_GAME_TIMER() + 500 + floor(GET_ENTITY_ANIM_TOTAL_TIME(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_b")) idleState = 2 ENDIF IF IS_ENTITY_PLAYING_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_c") iTimerUntilNext = GET_GAME_TIMER() + 500 + floor(GET_ENTITY_ANIM_TOTAL_TIME(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_c")) idleState = 2 ENDIF IF IS_ENTITY_PLAYING_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_d") iTimerUntilNext = GET_GAME_TIMER() + 500 + floor(GET_ENTITY_ANIM_TOTAL_TIME(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_d")) idleState = 2 ENDIF IF IS_ENTITY_PLAYING_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_e") iTimerUntilNext = GET_GAME_TIMER() + 500 + floor(GET_ENTITY_ANIM_TOTAL_TIME(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_e")) idleState = 2 ENDIF IF IS_ENTITY_PLAYING_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_f") iTimerUntilNext = GET_GAME_TIMER() + 500 + floor(GET_ENTITY_ANIM_TOTAL_TIME(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_f")) idleState = 2 ENDIF IF IS_ENTITY_PLAYING_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_look_behind_left") iTimerUntilNext = GET_GAME_TIMER() + 500 + floor(GET_ENTITY_ANIM_TOTAL_TIME(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_look_behind_left")) idleState = 2 ENDIF IF IS_ENTITY_PLAYING_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_look_behind_right") iTimerUntilNext = GET_GAME_TIMER() + 500 + floor(GET_ENTITY_ANIM_TOTAL_TIME(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_look_behind_right")) idleState = 2 ENDIF IF IS_ENTITY_PLAYING_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_look_left") iTimerUntilNext = GET_GAME_TIMER() + 500 + floor(GET_ENTITY_ANIM_TOTAL_TIME(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_look_left")) idleState = 2 ENDIF IF IS_ENTITY_PLAYING_ANIM(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_look_right") iTimerUntilNext = GET_GAME_TIMER() + 500 + floor(GET_ENTITY_ANIM_TOTAL_TIME(ped[ped_buddy].id,"missarmenian2lamar_idles","idle_look_right")) idleState = 2 ENDIF IF IS_ENTITY_PLAYING_ANIM(ped[ped_buddy].id,"missarmenian2","arm2_lamar_idle_02") iTimerUntilNext = GET_GAME_TIMER() + 500 + floor(GET_ENTITY_ANIM_TOTAL_TIME(ped[ped_buddy].id,"missarmenian2","arm2_lamar_idle_02")) idleState = 2 ENDIF IF IS_ENTITY_PLAYING_ANIM(ped[ped_buddy].id,"missarmenian2","arm2_lamar_idle_03") iTimerUntilNext = GET_GAME_TIMER() + 500 + floor(GET_ENTITY_ANIM_TOTAL_TIME(ped[ped_buddy].id,"missarmenian2","arm2_lamar_idle_03")) idleState = 2 ENDIF BREAK CASE 2 IF GET_GAME_TIMER() > iTimerUntilNext idleState = 0 ENDIF BREAK ENDSWITCH ENDIF endproc FUNC VEHICLE_INDEX FIND_CLOSEST_CAR_FOR_LAMAR() vehicle_index vehEmpty, vehClosest int iCounter icounter = GET_PED_NEARBY_VEHICLES(ped[ped_buddy].id,vehiclearray) int iTmp float fDistFull fDistFull = 1000 For iTmp = 0 to icounter-1 IF DOES_ENTITY_EXIST(vehiclearray[iTmp]) IF IS_VEHICLE_DRIVEABLE(vehiclearray[iTmp]) AND NOT IS_ENTITY_UPSIDEDOWN(vehiclearray[iTmp]) AND NOT IS_ENTITY_ON_FIRE(vehiclearray[iTmp]) IF NOT IS_THIS_MODEL_A_PLANE(GET_ENTITY_MODEL(vehiclearray[iTmp])) AND NOT IS_THIS_MODEL_A_HELI(GET_ENTITY_MODEL(vehiclearray[iTmp])) AND NOT IS_PED_IN_VEHICLE(player_ped_id(),vehiclearray[iTmp],TRUE) AND NOT IS_MODEL_POLICE_VEHICLE(GET_ENTITY_MODEL(vehiclearray[iTmp])) // AND vehiclearray[iTmp] != vehicle[veh_player].id //not sure why this set AND vehiclearray[iTmp] != vehicle[VEH_OBJECTIVE].id float fDist fdist = GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_buddy].id,vehiclearray[iTmp]) IF IS_VEHICLE_EMPTY(vehiclearray[iTmp]) // AND GET_ENTITY_SPEED(vehiclearray[iTmp]) = 0 IF fdist < fDistFull fDistFull = fdist vehEmpty = vehiclearray[iTmp] ENDIF ELSE IF fdist < fDistFull fDistFull = fdist vehClosest = vehiclearray[iTmp] ENDIF ENDIF ENDIF ENDIF ENDIf ENDFOR IF IS_VEHICLE_DRIVEABLE(vehEmpty) RETURN vehEmpty ELIF IS_VEHICLE_DRIVEABLE(vehClosest) RETURN vehClosest ELSE RETURN NULL ENDIF ENDFUNC PROC SPECIAL_SETUP_FOR_PLAYER_VEHICLE_AT_END_OF_ALLEY() cprintln(debug_trevor3,"special player veh setup") bool bTweakReplayPos IF IS_REPLAY_CHECKPOINT_VEHICLE_AVAILABLE() cprintln(debug_trevor3,"replay veh available") IF NOT IS_REPLAY_VEHICLE_MODEL_UNDER_SIZE_LIMIT(GET_REPLAY_CHECKPOINT_VEHICLE_MODEL(),<<13,30,20>>) cprintln(debug_trevor3,"veh too big") bTweakReplayPos = TRUE ENDIF ENDIF IF bTweakReplayPos CREATE_VEHICLE_FOR_REPLAY(vehicle[VEH_PLAYER].id, <<-1149.3313, -1587.6368, 3.4344>>,305,false,false,true,false) ELSE CREATE_VEHICLE_FOR_REPLAY(vehicle[VEH_PLAYER].id, << -1133.4789, -1574.0167, 3.3788 >>,300,false,false,true,false) ENDIF vector vSizeMin,vSizeMax GET_VEHICLE_SIZE(vehicle[VEH_PLAYER].id,vSizeMin,vSizeMax) cprintln(debug_trevor3,"veh size: ",vSizeMin," ",vSizeMax) ENDPROC proc set_bezier_node(bezier &aBez, float time, vector vPos, vector vControl) aBez.fTime = time aBez.vPos = vpos aBez.vcontrol = vControl endproc proc getBezCoord(float time, bezier bez1, bezier bez2, vector &vReturn) //vector v0, vector v1, vector v2, vector v3, float t) vector v0,v1,v2,v3,vR float t=time-to_float(floor(time)) if not are_vectors_equal(bez1.vpos,bez2.vpos) v0 = bez1.vPos v1 = bez1.vPos + bez1.vControl //bezVcontrol[bezNode] v2 = bez2.vPos - bez2.vControl v3 = bez2.vPos vR.x = (((1-t)*(1-t)*(1-t))*v0.x) + (3*((1-t)*(1-t))*t*v1.x) + (3*(1-t)*(t*t)*v2.x) + ((t*t*t)*v3.x) vR.y = (((1-t)*(1-t)*(1-t))*v0.y) + (3*((1-t)*(1-t))*t*v1.y) + (3*(1-t)*(t*t)*v2.y) + ((t*t*t)*v3.y) vR.z = (((1-t)*(1-t)*(1-t))*v0.z) + (3*((1-t)*(1-t))*t*v1.z) + (3*(1-t)*(t*t)*v2.z) + ((t*t*t)*v3.z) vReturn = vR ELSE vReturn = bez1.vpos ENDIF endproc sequence_index sequence proc seq() OPEN_SEQUENCE_TASK(sequence) PRINTLN("SEQ OPENED") ENDPROC proc endSeq(PED_INDEX aPed, bool MakeRepeat=FALSE) if MakeRepeat SET_SEQUENCE_TO_REPEAT(sequence,REPEAT_FOREVER) ENDIF CLOSE_SEQUENCE_TASK(sequence) if not IS_PED_INJURED(aPed) TASK_PERFORM_SEQUENCE(aPed,sequence) ENDIF CLEAR_SEQUENCE_TASK(sequence) PRINTLN("SEQ CLOSED") ENDPROC func bool is_ped_engaged(int pedID) if IS_PLAYER_PLAYING(PLAYER_ID()) if not is_ped_injured(ped[pedID].id) if HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(ped[pedID].id,PLAYER_PED_ID()) or IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(),ped[pedID].id) return true ENDIF ELSE if DOES_ENTITY_EXIST(ped[pedID].id) return true ENDIF ENDIF ENDIF return FALSE ENDFUNC int livingEnemyRem=0 func bool HAS_ELSAL_BEEN_KILLED() int i int livingEnemy=0 REPEAT COUNT_OF(ped) i IF NOT IS_PED_INJURED(ped[i].id) IF GET_PED_RELATIONSHIP_GROUP_HASH(ped[i].id) = HASH_FOE_GROUP livingEnemy++ ENDIF ENDIF ENDREPEAT if livingEnemy < livingEnemyRem livingEnemyRem = livingEnemy return TRUE ELSE livingEnemyRem = livingEnemy return FALSE ENDIF ENDFUNC func bool ARE_ANY_ELSAL_ALIVE() int i REPEAT COUNT_OF(ped) i IF NOT IS_PED_INJURED(ped[i].id) IF GET_PED_RELATIONSHIP_GROUP_HASH(ped[i].id) = HASH_FOE_GROUP RETURN TRUE ENDIF ENDIF ENDREPEAT RETURN FALSE ENDFUNC func int ELSAL_ALIVE_COUNT() IF bUpdateElsalCount bUpdateElsalCount = FALSE int i iLivingelsal = 0 REPEAT COUNT_OF(ped) i IF NOT IS_PED_INJURED(ped[i].id) IF GET_PED_RELATIONSHIP_GROUP_HASH(ped[i].id) = HASH_FOE_GROUP iLivingelsal++ ENDIF ENDIF ENDREPEAT ENDIF RETURN iLivingelsal endfunc func int GET_LIVING_ELSAL() int i REPEAT COUNT_OF(ped) i IF NOT IS_PED_INJURED(ped[i].id) IF GET_PED_RELATIONSHIP_GROUP_HASH(ped[i].id) = HASH_FOE_GROUP return i ENDIF ENDIF ENDREPEAT return -1 endfunc int helpTimer=0 //string currentHelp proc Help_text_special_case() //if HAS_HELP_TEXT_SPECIAL_CASE(helpTextSpecialCase) = true if IS_HELP_MESSAGE_BEING_DISPLAYED() or IS_ANY_FLOATING_HELP_BEING_DISPLAYED() ////debugMessage(debug_help,"Help_text_special_case: HAS_HELP_TEXT_SPECIAL_CASE: TRUE") //WEAPON_TYPE wep IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() helpTimer = 0 ELSE if helpTimer = 0 helpTimer = GET_GAME_TIMER() + 3000 ENDIF ENDIF /* IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP07") if IS_PLAYER_PLAYING(PLAYER_ID()) if GET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),wep) if wep != WEAPONTYPE_UNARMED and get_game_timer() > helpTimer PRINTLN("Force clearing help07 at ",GET_GAME_TIMER()) CLEAR_HELP() ENDIF ENDIF ENDIF ENDIF*/ /* IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP08") //remove take cover help text if IS_PLAYER_PLAYING(PLAYER_ID()) IF IS_PED_IN_COVER(PLAYER_PED_ID()) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< -1071.2921, -1662.9900, 4.5 >>) < 3.0 IF IS_PED_IN_COVER(player_ped_id()) CLEAR_HELP()//("ARM2_HLP08") IF IS_PED_ARMED(PLAYER_PED_ID(),WF_INCLUDE_GUN) PRINT_HELP("ARM2_HLP09") ENDIF ENDIF ENDIF ELif ped[ped_buddy].action = action_advance_to_portaloo CLEAR_HELP()//CLEAR_THIS_FLOATING_HELP("ARM2_HLP08") ENDIF ENDIF ENDIF */ IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP09") //remove press LT button to aim weapon help text if IS_PLAYER_PLAYING(PLAYER_ID()) if IS_PED_IN_COVER(PLAYER_PED_ID()) IF IS_CONTROL_PRESSED(PLAYER_CONTROL,input_aim) //and get_game_timer() > helpTimer CLEAR_HELP(FALSE) IF IS_PED_ARMED(PLAYER_PED_ID(),WF_INCLUDE_GUN) PRINT_HELP("ARM2_HLP19",DEFAULT_HELP_TEXT_TIME+2000) ENDIF ENDIF ELSE CLEAR_HELP() ENDIF ENDIF ENDIF /* IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP15") //remove take cover help text IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< -1078.6370, -1653.7733, 4.9451 >>) < 3.0 OR NOT DOES_ENTITY_EXIST(dummyGasCanister) OR ped[ped_buddy].action = action_lemar_run_passed_scaffold CLEAR_HELP() ENDIF ENDIf */ IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP19") //remove zoom in help text if IS_PLAYER_PLAYING(PLAYER_ID()) and get_game_timer() > helpTimer weapon_type pedWeapon GET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),pedWeapon) IF (IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_AIM) AND IS_PED_ARMED(PLAYER_PED_ID(),WF_INCLUDE_GUN) AND IS_AIM_CAM_ACTIVE_IN_ACCURATE_MODE()) or IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), << -1091.0858 , -1671.0470 , 3.0388 >> , << -1069.4282 , -1653.9392 , 6.0045 >> , 9.6250 ) CLEAR_HELP() ENDIF ENDIF ENDIF IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP16") //shoot gas canister if is_event_complete(EVENTS_RAYFIRE_SCAFFOLD) or (IS_ENTITY_DEAD(ped[ELSAL_SCAFFOLDA].id) and IS_ENTITY_DEAD(ped[ELSAL_SCAFFOLDB].id)) //and IS_ENTITY_DEAD(ped[ELSAL_SCAFFOLDC].id)) if get_game_timer() > helpTimer CLEAR_HELP() ENDIF ENDIF ENDIF IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP13") //shoot petrol trail IF GET_NUMBER_OF_FIRES_IN_RANGE(<< -1100.5414, -1634.1962, 3.5236 >>,20) > 2 //if get_event_flag(EVENTS_CONTROL_PETROL_FIRE) = 2 //if get_game_timer() > helpTimer //CLEAR_HELP() IF DOES_ENTITY_EXIST(dummyGasTrail) DELETE_OBJECT(dummyGasTrail) ENDIF //ENDIF ENDIF ENDIF ENDIF ENDPROC FUNC STRING GET_ACTION_STRING(enumActions thisAct) string sAct SWITCH thisAct CASE ACT_NULL sAct = " ACT_NULL " BREAK CASE ACT_LAMAR_RUNS_UP_TO_CAR sAct = " ACT_LAMAR_RUNS_UP_TO_CAR " BREAK CASE ACT_LAMAR_FOLLOWS_PLAYER sAct = " ACT_LAMAR_FOLLOWS_PLAYER " BREAK CASE ACT_SET_GARAGE_DOORS_LOCKED sAct = " ACT_SET_GARAGE_DOORS_LOCKED " BREAK CASE ACT_STOP_FOLLOWING_LAMAR_DOWN_ALLEY sAct = " ACT_STOP_FOLLOWING_LAMAR_DOWN_ALLEY " BREAK CASE ACT_GET_PLAYER_CAR sAct = " ACT_GET_PLAYER_CAR " BREAK CASE ACT_GPS_CUSTOM_ROUTE sAct = " ACT_GPS_CUSTOM_ROUTE " BREAK CASE ACT_SIMEON sAct = " ACT_SIMEON " BREAK CASE ACT_SET_PLAYER_THROUGH_DRIVER_DOOR sAct = " ACT_SET_PLAYER_THROUGH_DRIVER_DOOR " BREAK CASE ACT_TURN_ON_CAR_RADIO sAct = " ACT_TURN_ON_CAR_RADIO " BREAK CASE ACT_LOCK_SHOWROOM_CARS sAct = " ACT_LOCK_SHOWROOM_CARS " BREAK CASE ACT_AUDIO_SCENE_ARM_2_DRIVE_TO_ALLEY sAct = " ACT_AUDIO_SCENE_ARM_2_DRIVE_TO_ALLEY " BREAK CASE ACT_SET_GARAGE_VEHICLES_AS_NO_LONGER_NEEDED sAct = " ACT_SET_GARAGE_VEHICLES_AS_NO_LONGER_NEEDED " BREAK CASE ACT_RELEASE_MISSION_TRIGGER sAct = " ACT_RELEASE_MISSION_TRIGGER " BREAK CASE ACT_SPAWN_FAIL_RESPONSE_ELSALVS sAct = " ACT_SPAWN_FAIL_RESPONSE_ELSALVS " BREAK CASE ACT_BUDDY_HEAD_TRACKING sAct = " ACT_BUDDY_HEAD_TRACKING " BREAK CASE ACT_LEMAR_EXITS_CAR sAct = " ACT_LEMAR_EXITS_CAR " BREAK CASE action_LEMAR_APPROACHES_GATE sAct = " action_LEMAR_APPROACHES_GATE " BREAK CASE action_player_exits_car sAct = " action_player_exits_car " BREAK CASE ACTION_BUM_STAGGERS_FROM_GARAGE sAct = " ACTION_BUM_STAGGERS_FROM_GARAGE " BREAK CASE ACTION_LEMAR_WALKS_TOWARDS_BUM sAct = " ACTION_LEMAR_WALKS_TOWARDS_BUM " BREAK CASE ACTION_LEMAR_INTERRACTS_WITH_BUM sAct = " ACTION_LEMAR_INTERRACTS_WITH_BUM " BREAK CASE ACTION_LEMAR_IGNORES_BUM_IF_HIT sAct = " ACTION_LEMAR_IGNORES_BUM_IF_HIT " BREAK CASE ACTION_BUM_RETURNS_TO_GARAGE sAct = " ACTION_BUM_RETURNS_TO_GARAGE " BREAK CASE ACTION_WAIT_FOR_PLAYER_TO_CLIMB_GATE sAct = " ACTION_WAIT_FOR_PLAYER_TO_CLIMB_GATE " BREAK CASE ACTION_VEHICLE_DRIVES_OFF sAct = " ACTION_VEHICLE_DRIVES_OFF " BREAK CASE ACTION_PLAYER_LOOK_ABOUT sAct = " ACTION_PLAYER_LOOK_ABOUT " BREAK CASE ACTION_LEMAR_LOOKS_AT_PASSING_CAR sAct = " ACTION_LEMAR_LOOKS_AT_PASSING_CAR " BREAK CASE ACTION_DRUNK_GETS_UP_AFTER_LEMAR_INTERACTION sAct = " ACTION_DRUNK_GETS_UP_AFTER_LEMAR_INTERACTION " BREAK CASE ACTION_VEHICLE_BLOCKED_BY_PLAYER sAct = " ACTION_VEHICLE_BLOCKED_BY_PLAYER " BREAK CASE ACTION_VEHICLE_CONTINUES_DRIVING sAct = " ACTION_VEHICLE_CONTINUES_DRIVING " BREAK CASE ACTION_LEMAR_REACTS_TO_PLAYER_BLOCKING_ELSAL sAct = " ACTION_LEMAR_REACTS_TO_PLAYER_BLOCKING_ELSAL " BREAK CASE ACTION_LEMAR_WAITS_FOR_PLAYER sAct = " ACTION_LEMAR_WAITS_FOR_PLAYER " BREAK CASE ACTION_LEMAR_RESUMES_WALK_DOWN_ALLEY sAct = " ACTION_LEMAR_RESUMES_WALK_DOWN_ALLEY " BREAK CASE ACTION_LEMAR_FOLLOWS_PLAYER_AT_GARAGES sAct = " ACTION_LEMAR_FOLLOWS_PLAYER_AT_GARAGES " BREAK CASE ACTION_PLAY_IDLES sAct = " ACTION_PLAY_IDLES " BREAK CASE ACTION_LOAD_CUTSCENE sAct = " ACTION_LOAD_CUTSCENE " BREAK CASE ACTION_OPEN_GARAGE_1 sAct = " ACTION_OPEN_GARAGE_1 " BREAK CASE ACTION_OPEN_GARAGE_2 sAct = " ACTION_OPEN_GARAGE_2 " BREAK CASE ACTION_OPEN_GARAGE_3 sAct = " ACTION_OPEN_GARAGE_3 " BREAK CASE ACTION_LOCK_GARAGE_3 sAct = " ACTION_LOCK_GARAGE_3 " BREAK CASE ACTION_MUSIC_AT_BUM sAct = " ACTION_MUSIC_AT_BUM " BREAK CASE ACTION_INITIALISE_DRIVEOFF_VEHICLE sAct = " ACTION_INITIALISE_DRIVEOFF_VEHICLE " BREAK CASE ACT_UNFREEZE_DRIVEOFF_CAR sAct = " ACT_UNFREEZE_DRIVEOFF_CAR " BREAK CASE ACT_LAMAR_LOOK_AT_GARAGES_ON_APPROACH sAct = " ACT_LAMAR_LOOK_AT_GARAGES_ON_APPROACH " BREAK CASE ACT_REDUCE_PLAYER_SPEED sAct = " ACT_REDUCE_PLAYER_SPEED " BREAK CASE ACT_ADUIO_END_ARM_2_DRIVE_TO_ALLEY sAct = " ACT_ADUIO_END_ARM_2_DRIVE_TO_ALLEY " BREAK CASE ACTION_UPDATE_LAMAR_PROGRESS sAct = " ACTION_UPDATE_LAMAR_PROGRESS " BREAK CASE ACT_DRIVERS_LOOK_AT_PLAYER sAct = " ACT_DRIVERS_LOOK_AT_PLAYER " BREAK CASE ACTION_LOCK_OPEN_GARAGE_3 sAct = " ACTION_LOCK_OPEN_GARAGE_3 " BREAK CASE ACTION_LEMAR_EXITS_GARAGE sAct = " ACTION_LEMAR_EXITS_GARAGE " BREAK CASE ACTION_LEMAR_ADVANCES_TO_POST sAct = " ACTION_LEMAR_ADVANCES_TO_POST " BREAK CASE ACTION_MAKE_LAMAR_INVINCIBLE sAct = " ACTION_MAKE_LAMAR_INVINCIBLE " BREAK CASE ACTION_LEMAR_ADVANCES_TO_PORTALOO sAct = " ACTION_LEMAR_ADVANCES_TO_PORTALOO " BREAK CASE ACTION_LEMAR_DIVERTS_TO_BISON sAct = " ACTION_LEMAR_DIVERTS_TO_BISON " BREAK CASE ACTION_LEMAR_REACTS_TO_GUNFIRE sAct = " ACTION_LEMAR_REACTS_TO_GUNFIRE " BREAK CASE ACTION_LEMAR_ADVANCES_AFTER_PORTALOO sAct = " ACTION_LEMAR_ADVANCES_AFTER_PORTALOO " BREAK CASE ACTION_LEMAR_MOVES_TO_COVER sAct = " ACTION_LEMAR_MOVES_TO_COVER " BREAK CASE ACTION_LAMAR_SHOOTS_CAR sAct = " ACTION_LAMAR_SHOOTS_CAR " BREAK CASE acTION_lemar_RUN_TOWARDS_GATE sAct = " acTION_lemar_RUN_TOWARDS_GATE " BREAK CASE ACTION_FORCE_GARAGE sAct = " ACTION_FORCE_GARAGE " BREAK CASE action_make_balcony_destructible sAct = " action_make_balcony_destructible " BREAK CASE ACTION_MAKE_CAR_TYRE_BURST sAct = " ACTION_MAKE_CAR_TYRE_BURST " BREAK CASE ACTION_SET_STAGE_STUFF sAct = " ACTION_SET_STAGE_STUFF " BREAK CASE ACTION_ENEMY_BACKS_OFF sAct = " ACTION_ENEMY_BACKS_OFF " BREAK CASE ACTION_ENEMY_BY_BISON sAct = " ACTION_ENEMY_BY_BISON " BREAK CASE ACTION_ENEMY_FROM_LEFT sAct = " ACTION_ENEMY_FROM_LEFT " BREAK CASE ACTION_ENEMY_FROM_SKIP sAct = " ACTION_ENEMY_FROM_SKIP " BREAK CASE ACTION_ENEMY_FROM_SCAFFOLD sAct = " ACTION_ENEMY_FROM_SCAFFOLD " BREAK CASE ACTION_SCAFFOLD_PED_DROPS sAct = " ACTION_SCAFFOLD_PED_DROPS " BREAK CASE ACTION_ENEMY_AFTER_SCAFFOLD sAct = " ACTION_ENEMY_AFTER_SCAFFOLD " BREAK CASE ACTION_ENEMY_ON_VERANDA sAct = " ACTION_ENEMY_ON_VERANDA " BREAK CASE ACTION_ENEMY_ON_BALCONY sAct = " ACTION_ENEMY_ON_BALCONY " BREAK CASE ACTION_ENEMY_FROM_DOOR sAct = " ACTION_ENEMY_FROM_DOOR " BREAK CASE ACTION_DRIVER_RUNS_TO_CAR sAct = " ACTION_DRIVER_RUNS_TO_CAR " BREAK CASE ACTION_DRIVER_DRIVES_OFF sAct = " ACTION_DRIVER_DRIVES_OFF " BREAK CASE ACTION_FLEEING_CAR_DAMAGE sAct = " ACTION_FLEEING_CAR_DAMAGE " BREAK CASE ACTION_PETROL_TRAIL sAct = " ACTION_PETROL_TRAIL " BREAK CASE ACTION_EXPLODE_CAR sAct = " ACTION_EXPLODE_CAR " BREAK CASE ACTION_LOCK_ON_TO_GAS sAct = " ACTION_LOCK_ON_TO_GAS " BREAK CASE ACTION_LOCK_ON_TO_GAS_TRAIL sAct = " ACTION_LOCK_ON_TO_GAS_TRAIL " BREAK CASE ACTION_FINAL_WAVE_SPAWNS //Adjust MAX_ACTIONS after this sAct = " ACTION_FINAL_WAVE_SPAWNS //Adjust MAX_ACTIONS after this " BREAK CASE ACTION_MUSIC_SHOOTOUT sAct = " ACTION_MUSIC_SHOOTOUT " BREAK CASE ACTION_UNFREEZE_FLEE_CAR_IF_ENTERED sAct = " ACTION_UNFREEZE_FLEE_CAR_IF_ENTERED " BREAK CASE ACT_STAT_PROPANE sAct = " ACT_STAT_PROPANE " BREAK CASE ACT_AUDIO_AT_RAYFIRE_END //max actions = 35 sAct = " ACT_AUDIO_AT_RAYFIRE_END //max actions = 35 " BREAK CASE ACTION_REMOVE_ALLEYWAY_ASSETS sAct = " ACTION_REMOVE_ALLEYWAY_ASSETS " BREAK CASE ACTION_PREP_CHASE_STAGE sAct = " ACTION_PREP_CHASE_STAGE " BREAK CASE ACTION_DEAL_WITH_STUCK_BIKER sAct = " ACTION_DEAL_WITH_STUCK_BIKER " BREAK CASE ACTION_BIKER_FLEES sAct = " ACTION_BIKER_FLEES " BREAK CASE ACTION_LEMAR_FOLLOW_PLAYER sAct = " ACTION_LEMAR_FOLLOW_PLAYER " BREAK CASE ACTION_BIKER_REACTS_TO_PLAYER_CLOSING_IN sAct = " ACTION_BIKER_REACTS_TO_PLAYER_CLOSING_IN " BREAK CASE ACTION_BIKER_REACTS_TO_BEING_JACKED sAct = " ACTION_BIKER_REACTS_TO_BEING_JACKED " BREAK CASE ACTION_BIKER_REACTS_TO_COMING_OFF_BIKE sAct = " ACTION_BIKER_REACTS_TO_COMING_OFF_BIKE " BREAK CASE ACTION_MUSIC_CHASE sAct = " ACTION_MUSIC_CHASE " BREAK CASE ACTION_MUSIC_IN_CAR sAct = " ACTION_MUSIC_IN_CAR " BREAK CASE ACTION_MUSIC_BIKER_DOWN sAct = " ACTION_MUSIC_BIKER_DOWN " BREAK CASE ACTION_ENSURE_LAMAR_CLIMBS_GATE sAct = " ACTION_ENSURE_LAMAR_CLIMBS_GATE " BREAK CASE ACTION_LAMAR_GETS_IN_PLAYER_CAR sAct = " ACTION_LAMAR_GETS_IN_PLAYER_CAR " BREAK CASE ACT_SET_LAMAR_FOR_STAGE sAct = " ACT_SET_LAMAR_FOR_STAGE " BREAK CASE ACT_LAMAR_GETS_IN_DRIVER_SEAT sAct = " ACT_LAMAR_GETS_IN_DRIVER_SEAT " BREAK CASE ACT_LAMAR_HEADS_BACK_HOME sAct = " ACT_LAMAR_HEADS_BACK_HOME " BREAK CASE ACT_LAMAR_DRIVES_BACK_TO_HOME sAct = " ACT_LAMAR_DRIVES_BACK_TO_HOME " BREAK CASE ACT_LAMAR_EXITS_UNDRIVEABLE_CAR sAct = " ACT_LAMAR_EXITS_UNDRIVEABLE_CAR " BREAK CASE ACT_LAMAR_GETS_IN_ANY_CAR sAct = " ACT_LAMAR_GETS_IN_ANY_CAR " BREAK CASE ACT_STUCK_BIKE_CHECK sAct = " ACT_STUCK_BIKE_CHECK " BREAK CASE ACT_LOAD_CUTSENE sAct = " ACT_LOAD_CUTSENE " BREAK CASE ACT_WARP_LAMAR_BACK sAct = " ACT_WARP_LAMAR_BACK " BREAK CASE ACT_STAT_BIKE_DAMAGE sAct = " ACT_STAT_BIKE_DAMAGE " BREAK CASE ACT_DO_HINT_CAM sAct = " ACT_DO_HINT_CAM " BREAK CASE ACT_CUTSCENE_LEAD_IN sAct = " ACT_CUTSCENE_LEAD_IN " BREAK DEFAULT sAct = " -NOT DEFINED-" BREAK ENDSWITCH RETURN sAct ENDFUNC enum enumGateState gate_init, gate_pending, gate_instantShutLocked, gate_instantOpenUnlocked, gate_slowOpen, gate_slowCloseAndLock, gate_unlockClosed, gate_release, gate_unlocked, gate_bashed_open endenum enumGateState gateState = gate_init int gateFlag float gateRot CONST_INT iGateHashL HASH("iGateHashL") CONST_INT iGateHashR HASH("iGateHashR") CONST_INT iGarHash HASH("iGarHash") PROC controlFrontGate() //debugMessage(debug_user1,"run controlFrontGate()") //PRINT_GATE_STATE() switch gateState case gate_init // IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iGateHashL) // OR NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iGateHashR) ADD_DOOR_TO_SYSTEM(iGateHashL,PROP_ARM_GATE_L,<<-1127.1,-1586.96,5.09>>,FALSE) ADD_DOOR_TO_SYSTEM(iGateHashR,PROP_ARM_GATE_L,<<-1131.99,-1590.4,5.09>>,FALSE) // ELSE gateState = gate_pending // ENDIF break case gate_instantShutLocked IF IS_DOOR_REGISTERED_WITH_SYSTEM(iGateHashL) AND IS_DOOR_REGISTERED_WITH_SYSTEM(iGateHashR) DOOR_SYSTEM_SET_OPEN_RATIO(iGateHashL,0.0,false,false) DOOR_SYSTEM_SET_DOOR_STATE(iGateHashL,DOORSTATE_FORCE_LOCKED_THIS_FRAME,false,true) DOOR_SYSTEM_SET_OPEN_RATIO(iGateHashR,0.0,false,false) DOOR_SYSTEM_SET_DOOR_STATE(iGateHashR,DOORSTATE_FORCE_LOCKED_THIS_FRAME,false,true) gateState = gate_pending ELSE IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iGateHashL) ADD_DOOR_TO_SYSTEM(iGateHashL,PROP_ARM_GATE_L,<<-1127.1,-1586.96,5.09>>,FALSE) ENDIF IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iGateHashR) ADD_DOOR_TO_SYSTEM(iGateHashR,PROP_ARM_GATE_L,<<-1131.99,-1590.4,5.09>>,FALSE) ENDIF ENDIF break case gate_instantOpenUnlocked //OR_SYSTEM_SET_OPEN_RATIO(iGateHashL,1.0,false,true) DOOR_SYSTEM_SET_DOOR_STATE(iGateHashL,DOORSTATE_UNLOCKED,false,true) DOOR_SYSTEM_SET_DOOR_STATE(iGateHashR,DOORSTATE_UNLOCKED,false,true) gateState = gate_pending break case gate_slowCloseAndLock switch gateFlag case 0 gateRot = 1.0 gateFlag = 1 break case 1 if not is_ped_injured(ped[ped_driver].id) IF NOT IS_ENTITY_IN_ANGLED_AREA( ped[ped_driver].id, <<-1133.817993,-1583.409912,2.790712>>, <<-1123.055176,-1598.920532,5.836129>>, 7.625000) gateFlag = 2 endif endif break case 2 gateRot += -0.13 * TIMESTEP() if gateRot <= 0.0 gateRot = 0.0 gateState = gate_pending endif DOOR_SYSTEM_SET_OPEN_RATIO(iGateHashL,gateRot,false,true) //DOOR_SYSTEM_SET_DOOR_STATE(iGateHashL,DOORSTATE_FORCE_LOCKED_THIS_FRAME,false,true) DOOR_SYSTEM_SET_OPEN_RATIO(iGateHashR,gateRot*-1.0,false,true) //DOOR_SYSTEM_SET_DOOR_STATE(iGateHashR,DOORSTATE_FORCE_LOCKED_THIS_FRAME,false,true) break endswitch break case gate_slowOpen //only if van in range if not is_ped_injured(ped[ped_driver].id) switch gateFlag case 0 gateRot = 0.0 gateFlag = 1 break case 1 if IS_ENTITY_IN_ANGLED_AREA( ped[ped_driver].id, <<-1129.023438,-1590.408325,2.945500>>, <<-1123.055176,-1598.920532,5.836129>>, 7.625000) gateRot += 0.13 * TIMESTEP() if gateRot >= 1.0 gateRot = 1.0 gateState = gate_slowCloseAndLock endif DOOR_SYSTEM_SET_OPEN_RATIO(iGateHashL,gateRot,false,true) //DOOR_SYSTEM_SET_DOOR_STATE(iGateHashL,DOORSTATE_FORCE_LOCKED_THIS_FRAME,false,true) DOOR_SYSTEM_SET_OPEN_RATIO(iGateHashR,gateRot*-1.0,false,true) //DOOR_SYSTEM_SET_DOOR_STATE(iGateHashR,DOORSTATE_FORCE_LOCKED_THIS_FRAME,false,true) ENDIF break endswitch endif break case gate_unlockClosed DOOR_SYSTEM_SET_OPEN_RATIO(iGateHashL,0.0,false,false) DOOR_SYSTEM_SET_DOOR_STATE(iGateHashL,DOORSTATE_UNLOCKED,false,true) DOOR_SYSTEM_SET_OPEN_RATIO(iGateHashR,0.0,false,false) DOOR_SYSTEM_SET_DOOR_STATE(iGateHashR,DOORSTATE_UNLOCKED,false,true) gateState = gate_pending break case gate_release DOOR_SYSTEM_SET_DOOR_STATE(iGateHashL,DOORSTATE_UNLOCKED,false,true) DOOR_SYSTEM_SET_DOOR_STATE(iGateHashR,DOORSTATE_UNLOCKED,false,true) gateState = gate_pending //added in for cleanup check break case gate_unlocked FALLTHRU CASE gate_bashed_open FALLTHRU case gate_pending IF DOES_ENTITY_EXIST(ped[ped_driver].id) IF NOT IS_PED_INJURED(ped[ped_driver].id) if IS_ENTITY_IN_ANGLED_AREA( ped[ped_driver].id, <<-1129.023438,-1590.408325,2.945500>>, <<-1123.055176,-1598.920532,5.836129>>, 7.625000) gateState = gate_slowOpen endif endif ENDIF IF IS_PED_IN_ANY_VEHICLE(player_ped_id()) IF GET_ENTITY_SPEED(GET_VEHICLE_PED_IS_IN(player_ped_id())) > 7.0 IF gateState != gate_unlocked and gateState != gate_bashed_open gateState = gate_unlocked DOOR_SYSTEM_SET_DOOR_STATE(iGateHashL,DOORSTATE_UNLOCKED,false,true) DOOR_SYSTEM_SET_DOOR_STATE(iGateHashR,DOORSTATE_UNLOCKED,false,true) ENDIF ELSE IF gateState = gate_unlocked and gateState != gate_bashed_open gateState = gate_instantShutLocked ENDIF ENDIF ELSE IF gateState = gate_unlocked and gateState != gate_bashed_open gateState = gate_instantShutLocked ENDIF ENDIF IF gateState = gate_unlocked OR gateState = gate_pending OR gateState = gate_instantShutLocked //added for bug 1365025 to stop gate going in to instant_shut _locked state every other frame bool bLock bLock=bLock //so this command isn't called so often each frame IF GET_GAME_TIMER() > iCheckTimer GET_STATE_OF_CLOSEST_DOOR_OF_TYPE(PROP_ARM_GATE_L,<<-1131.99,-1590.4,5.09>>,bLock,gateRot) IF absf(gateRot) > 0.02 gateState = gate_bashed_open ENDIF GET_STATE_OF_CLOSEST_DOOR_OF_TYPE(PROP_ARM_GATE_L,<<-1127,-1587,5>>,bLock,gateRot) IF absf(gateRot) > 0.02 gateState = gate_bashed_open ENDIF iCheckTimer = GET_GAME_TIMER() + 200 ENDIF ENDIF /* If missionProgress < STAGE_COVER_BY_SKIP GET_STATE_OF_CLOSEST_DOOR_OF_TYPE(PROP_ARM_GATE_L,<<-1127,-1587,5>>,bLock,gateRot) PRINTLN(bLock , " " , gateRot) IF bLock = FALSE OR gateRot > 0.05 gateState = gate_instantShutLocked ENDIF GET_STATE_OF_CLOSEST_DOOR_OF_TYPE(PROP_ARM_GATE_L,<<-1132,-1590,5>>,bLock,gateRot) PRINTLN(bLock , " " , gateRot) IF bLock = FALSE OR gateRot >= 0.05 gateState = gate_instantShutLocked ENDIF endif */ break endswitch ENDPROC proc set_gate(enumGateState setGateState) gateState = setGateState gateFlag = 0 endproc FUNC STRING GET_GATE_STATE() switch gateState CASE gate_init RETURN("gate_init") BREAK CASE gate_pending RETURN("gate_pending") BREAK CASE gate_instantShutLocked RETURN("gate_instantShutLocked") BREAK CASE gate_instantOpenUnlocked RETURN("gate_instantOpenUnlocked") BREAK CASE gate_slowOpen RETURN("gate_slowOpen") BREAK CASE gate_slowCloseAndLock RETURN("gate_slowCloseAndLock") BREAK CASE gate_unlockClosed RETURN("gate_unlockClosed") BREAK CASE gate_release RETURN("gate_release") BREAK CASE gate_unlocked RETURN("gate_unlocked") BREAK CASE gate_bashed_open RETURN("gate_bashed_open") BREAK ENDSWITCH RETURN "" ENDFUNC PROC PRINT_GATE_STATE() //cprintln(debug_Trevor3,GET_GATE_STATE()) ENDPROC PROC SET_ACTION_FLAG(int iArray, enumActions actionToSet, int iNewFlagValue) IF actions[iArray].action = actionToSet actions[iArray].flag = iNewFlagValue ELSE TEXT_LABEL_63 txt txt = "" txt += "SET_ACTION_FLAG() fail:" txt += GET_ACTION_STRING(actionToSet) SCRIPT_ASSERT(txt) ENDIF ENDPROC FUNC BOOL controlPetrolFire(bool &bIsBurning) bPetrolBurning = FALSE int node=0 int j float ft=0 bool allFiresRemoved vector vOil float fPetrolDistLaidSoFar IF iFireFlag = 0 IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_FLEE].id) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[VEH_FLEE].id) fPetrolDistLaidSoFar = (GET_TIME_POSITION_IN_RECORDING(vehicle[VEH_FLEE].id) - 4255) / 2300.0 IF fPetrolDistLaidSoFar < 0 fPetrolDistLaidSoFar = 0 endif if fPetrolDistLaidSoFar > 1 fPetrolDistLaidSoFar = 1 endif fPetrolDistLaidSoFar *= 2.0 ENDIF ELSE fPetrolDistLaidSoFar = 2.0 ENDIF ENDIF If fPetrolDistLaidSoFar >= 1.9 OR iFireFlag = 1 fPetrolDistLaidSoFar = 2.0 iFireFlag = 1 ENDIF SWITCH iFireFlag CASE 0 FALLTHRU CASE 1 int tempSound while ft <= 2.0 IF ft < fPetrolDistLaidSoFar node = floor(fT) getBezCoord(ft,newBez[CLAMP_INT(node,0,2)],newBez[CLAMP_INT(node+1,0,2)],voil) if IS_BULLET_IN_AREA(vOil,0.4,TRUE) iFireStart=floor(ft*15) for j = 0 to 30 petrolTrail[j].time = GET_GAME_TIMER() + (100*(ABSI(j-iFireStart))) ENDFOR iFireflag=2 bIsBurning = TRUE tempSound = GET_SOUND_ID() PLAY_SOUND_FROM_COORD(-1,"ARM_2_Repo_Ignite_Petrol",<< -1099.0699, -1636.1121, 3.7352 >>) SET_VARIABLE_ON_SOUND(tempSound, "TargetPan", GET_HEADING_FROM_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),<< -1105.9711, -1628.7932, 3.8508 >>,FALSE)) ft = 5.0 endif ft+=0.1 ELSE ft = 5.0 ENDIF endwhile BREAK CASE 2 bIsBurning = TRUE allFiresRemoved = TRUE for j = 0 to 30 if petrolTrail[j].made = FALSE if GET_GAME_TIMER() > petrolTrail[j].time AND GET_GAME_TIMER() - petrolTrail[j].time < 1000 node = floor(to_float(j)/15.0) getBezCoord(to_float(j)/15.0,newBez[CLAMP_INT(node,0,2)],newBez[CLAMP_INT(node+1,0,2)],voil) if not DOES_PARTICLE_FX_LOOPED_EXIST(petrolTrail[j].pfx) //petrolTrail[j].pfx = START_PARTICLE_FX_LOOPED_AT_COORD("scr_petrol_trail_fire",voil,<<0,0,0>>) petrolFire[j] = START_SCRIPT_FIRE(voil,0,true) ENDIF //REMOVE_DECALS_IN_RANGE(voil,0.4) FADE_DECALS_IN_RANGE(voil,1.0,1.0) petrolTrail[j].made = true cprintln(debug_Trevor3,"made = ",j) ENDIF ENDIF if petrolTrail[j].made = true allFiresRemoved = FALSE iOilTime = GET_GAME_TIMER() - petrolTrail[j].time if iOilTime > 2000 REMOVE_SCRIPT_FIRE(petrolFire[j]) petrolTrail[j].pfx = null petrolTrail[j].made = FALSE ENDIF ENDIF ENDFOR IF allFiresRemoved = TRUE RETURN TRUE ENDIF BREAK endSWITCH RETURN FALSE endfunc proc SET_LEMAR_DEFAULTS(bool set_variation) IF NOT IS_PED_DEAD_OR_DYING(ped[PED_BUDDY].id) SET_PED_CAN_BE_TARGETTED(ped[PED_BUDDY].id,FALSE) //SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(ped[PED_BUDDY].id,true) SET_PED_RELATIONSHIP_GROUP_HASH(ped[PED_BUDDY].id,GET_PED_RELATIONSHIP_GROUP_HASH(PLAYER_PED_ID())) SET_PED_COMBAT_ATTRIBUTES(ped[PED_BUDDY].id,CA_PLAY_REACTION_ANIMS,FALSE) SET_PED_COMBAT_ATTRIBUTES(ped[PED_BUDDY].id,CA_MOVE_TO_LOCATION_BEFORE_COVER_SEARCH,TRUE) //to get Lamar to go straight to defensive areas without looking for cover first. SET_COMBAT_FLOAT(ped[PED_BUDDY].id,CCF_TIME_TO_INVALIDATE_INJURED_TARGET,3.0) SET_PED_COMBAT_RANGE(ped[PED_BUDDY].id,CR_FAR) SET_PED_HEARING_RANGE(ped[PED_BUDDY].id,50.0) SET_PED_SEEING_RANGE(ped[PED_BUDDY].id,50.0) SET_PED_MAX_HEALTH(ped[PED_BUDDY].id,500) SET_ENTITY_HEALTH(ped[PED_BUDDY].id,500) SET_PED_SUFFERS_CRITICAL_HITS(ped[PED_BUDDY].id,FALSE) SET_RAGDOLL_BLOCKING_FLAGS(ped[PED_BUDDY].id,RBF_BULLET_IMPACT | RBF_PLAYER_IMPACT) SET_PED_CONFIG_FLAG(ped[PED_BUDDY].id, PCF_DisableHurt, TRUE) SET_PED_CONFIG_FLAG(ped[PED_BUDDY].id, PCF_LawWillOnlyAttackIfPlayerIsWanted, TRUE) SET_PED_RESET_FLAG( ped[PED_BUDDY].id, PRF_BlockWeaponReactionsUnlessDead, TRUE ) HANDLE_BUDDY_PERMANENT_HEAD_TRACk(ped[PED_BUDDY].id) If missionProgress <= STAGE_CHASE_AFTER_BIKE add_event(events_lemar_anim_set,STAGE_TAKE_BIKE_BACK_TO_LOCKUP) endif SET_PED_ACCURACY(ped[PED_BUDDY].id,15) IF set_variation IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) WHILE NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(ped[PED_BUDDY].id) safewait(1) IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) //this is here cos otherwise HAVE_ALL_STREAMING_REQUESTS_COMPLETED will assert for not checking if Lemar is alive. ENDIF ENDWHILE IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) SET_PED_DEFAULT_COMPONENT_VARIATION(ped[PED_BUDDY].id) SET_PED_COMPONENT_VARIATION(ped[PED_BUDDY].id, INT_TO_ENUM(PED_COMPONENT,0), 0, 0, 0) //(head) SET_PED_COMPONENT_VARIATION(ped[PED_BUDDY].id, INT_TO_ENUM(PED_COMPONENT,1), 1, 0, 0) //(berd) SET_PED_COMPONENT_VARIATION(ped[PED_BUDDY].id, INT_TO_ENUM(PED_COMPONENT,2), 2, 0, 0) //(hair) SET_PED_COMPONENT_VARIATION(ped[PED_BUDDY].id, INT_TO_ENUM(PED_COMPONENT,3), 2, 0, 0) //(uppr) SET_PED_COMPONENT_VARIATION(ped[PED_BUDDY].id, INT_TO_ENUM(PED_COMPONENT,4), 3, 0, 0) //(lowr) SET_PED_COMPONENT_VARIATION(ped[PED_BUDDY].id, INT_TO_ENUM(PED_COMPONENT,5), 0, 0, 0) //(hand) SET_PED_COMPONENT_VARIATION(ped[PED_BUDDY].id, INT_TO_ENUM(PED_COMPONENT,6), 1, 0, 0) //(feet) SET_PED_COMPONENT_VARIATION(ped[PED_BUDDY].id, INT_TO_ENUM(PED_COMPONENT,7), 0, 0, 0) //(teef) SET_PED_COMPONENT_VARIATION(ped[PED_BUDDY].id, INT_TO_ENUM(PED_COMPONENT,8), 0, 0, 0) //(accs) SET_PED_COMPONENT_VARIATION(ped[PED_BUDDY].id, INT_TO_ENUM(PED_COMPONENT,9), 0, 0, 0) //(task) ENDIF ENDIF endif SET_PED_CONFIG_FLAG(ped[PED_BUDDY].id,PCF_RunFromFiresAndExplosions,FALSE) SET_PED_CONFIG_FLAG(ped[PED_BUDDY].id,PCF_WillFlyThroughWindscreen,FALSE) SET_PED_CONFIG_FLAG(ped[PED_BUDDY].id,PCF_UseKinematicModeWhenStationary,TRUE) SET_PED_TARGET_LOSS_RESPONSE(ped[PED_BUDDY].id,TLR_NEVER_LOSE_TARGET) SET_PED_CONFIG_FLAG(ped[PED_BUDDY].id,PCF_RunFromFiresAndExplosions,false) SET_PED_COMBAT_ATTRIBUTES(ped[PED_BUDDY].id, CA_DISABLE_ENTRY_REACTIONS, TRUE) //stop Lamar from reacting to aimed at events SET_PED_GROUP_MEMBER_PASSENGER_INDEX(ped[PED_BUDDY].id,VS_FRONT_RIGHT) SET_ENTITY_PROOFS(ped[PED_BUDDY].id,false,true,false,false,false) DISABLE_PED_INJURED_ON_GROUND_BEHAVIOUR(ped[PED_BUDDY].id) SET_PED_CAN_BE_TARGETTED(ped[PED_BUDDY].id,FALSE) ENDIF //SET_ENTITY_LOAD_COLLISION_FLAG(ped[PED_BUDDY].id,true) ENDPROC func bool create_shootout_ped(int pedID, vector vCoords, float fHeading, WEAPON_TYPE weapon = WEAPONTYPE_PISTOL, bool bStationary=FALSE, VEHICLE_INDEX veh=null, VEHICLE_SEAT seat = VS_DRIVER) MODEL_NAMES elsalModel IF GET_RANDOM_INT_IN_RANGE(0,2) = 0 elsalModel = model_salvas ELSe elsalModel = model_salvasB ENDIF if DOES_ENTITY_EXIST(ped[pedID].id) SET_ped_AS_NO_LONGER_NEEDED(ped[pedID].id) ENDIF if veh= NULL ped[pedID].id = CREATE_PED(PEDTYPE_MISSION,elsalModel,vCoords,fHeading) ELSE if not IS_ENTITY_DEAD(veh) if IS_VEHICLE_SEAT_FREE(veh,seat) ped[pedID].id = CREATE_PED_INSIDE_VEHICLE(veh,PEDTYPE_MISSION,elsalModel,seat) ENDIF ENDIF ENDIF GIVE_WEAPON_TO_PED(ped[pedID].id,weapon,1000,true) SET_PED_RELATIONSHIP_GROUP_HASH(ped[pedID].id,HASH_FOE_GROUP) //ped[pedID].blip = CREATE_BLIP_FOR_ENTITY(ped[pedID].id,true) //ped[pedID].blip = ADD_STEALTH_BLIP_FOR_PED(ped[pedID].id) if bStationary = true // SET_PED_COMBAT_MOVEMENT(ped[pedID].id,CM_STATIONARY) ELSE // SET_PED_COMBAT_MOVEMENT(ped[pedID].id,CM_WILLADVANCE) // SET_PED_COMBAT_ATTRIBUTES(ped[pedID].id,CA_AGGRESSIVE,true) // SET_PED_COMBAT_ATTRIBUTES(ped[pedID].id,CA_CAN_INVESTIGATE,true) // SET_PED_COMBAT_ATTRIBUTES(ped[pedID].id,CA_USE_COVER,true) // SET_PED_COMBAT_ATTRIBUTES(ped[pedID].id,CA_BLIND_FIRE_IN_COVER,true) SET_PED_COMBAT_ATTRIBUTES(ped[pedID].id,CA_PLAY_REACTION_ANIMS, FALSE) SET_PED_COMBAT_ATTRIBUTES(ped[pedID].id,CA_WILL_SCAN_FOR_DEAD_PEDS, FALSE) SET_PED_CONFIG_FLAG(ped[pedID].id,PCF_RunFromFiresAndExplosions,false) ENDIF SET_PED_DIES_WHEN_INJURED(ped[pedID].id,TRUE) SET_ENTITY_HEALTH(ped[pedID].id,VAGOS_START_HEALTH) SET_PED_MAX_HEALTH(ped[pedID].id,VAGOS_START_HEALTH) REGISTER_HATED_TARGETS_AROUND_PED(ped[pedID].id,100) SET_PED_TARGET_LOSS_RESPONSE(ped[pedID].id,TLR_NEVER_LOSE_TARGET) SET_PED_ACCURACY(ped[pedID].id,30) INFORM_MISSION_STATS_OF_HEADSHOT_WATCH_ENTITY(ped[pedID].id) IF NOT IS_PED_INJURED(ped[ped_buddy].id) REGISTER_HATED_TARGETS_AROUND_PED(ped[ped_buddy].id,100) ENDIF //SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(ped[pedID].id,true) iDisableReplayCameraTimer = GET_GAME_TIMER() + 1000 //Fix for bug 2223403 return true ENDFUNC /* PROC SPAWN_PED(int pedID,enumAction action) ped[pedID].storedAction = action SET_PED_ACTION(pedID,action_spawn) endproc */ FUNC BOOL SET_CONDITION_STATE(enumconditions thisCondition, bool setReturns) int j REPEAT COUNT_OF(conditions) j IF thisCondition = conditions[j].condition IF setReturns = TRUE conditions[j].returns = TRUE ELSE conditions[j].returns = FALSE ENDIF RETURN TRUE ENDIF ENDREPEAT RETURN FALSE ENDFUNC FUNC BOOL IS_ACTION_ONGOING(int iAction, enumActions actionToCheck) IF actions[iAction].action = actionToCheck IF actions[iAction].active = TRUE AND actions[iAction].ongoing = TRUE IF actions[iAction].completed = FALSE RETURN TRUE ENDIF ENDIF ENDIF RETURN FALSE ENDFUNC // ====================== conversation management proc CONTROL_EVENTS(enumEvents specificEvent=EVENTS_NULL) int i int startEvent = 0 int endEvent = MAX_EVENTS-1 if specificEvent != EVENTS_NULL for i = 0 to MAX_EVENTS-1 if events[i].thisEvent = specificEvent startEvent = i endEvent = i ENDIF ENDFOR ENDIF ////cprintln(debug_Trevor3,"startEvent = ",startEvent," end event = ",endEvent) if IS_PLAYER_PLAYING(PLAYER_ID()) ////cprintln(debug_Trevor3,"IS_PLAYER_PLAYING ") for i = startEvent to endEvent ////cprintln(debug_Trevor3,"i ",i) if events[i].active = TRUE ////cprintln(debug_Trevor3,"events[i].active = TRUE playing event:",events[i].thisEvent) //if mission has progressed past this event's defined final mission stage, clean it up. if enum_to_int(missionProgress) >= enum_to_int(events[i].ForceCleanupStage) events[i].flag = CLEANUP ENDIF switch events[i].thisEvent CASE EVENTS_SPAWN_ALLEYWAY ////cprintln(debug_trevor3,"flag: ",events[i].flag," asset stage: ",currentAssetStage," bAssetChageInProgress: ",bAssetChageInProgress) SWITCH events[i].flag case 0 //if IS_PLAYER_PLAYING(PLAYER_ID()) IF ENUM_TO_INT(missionProgress) = ENUM_TO_INT(STAGE_DRIVE_TO_ALLEYWAY) if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),<< -1139.0737, -1575.9607, 3.3289 >>) < 200 SET_ASSET_STAGE(ASSETS_STAGE_LOAD_ALLEY) events[i].flag++ ENDIF ELSE IF currentAssetStage < ASSETS_STAGE_LOAD_ALLEY SET_ASSET_STAGE(ASSETS_STAGE_LOAD_ALLEY) ENDIF events[i].flag++ ENDIF BREAK CASE 1 IF NOT bAssetChageInProgress ////cprintln(debug_trevor3,"DO ALLEYWAY CREATION") // initPedOnFoot(dummyPed,model_salvas,<< -1068.8792, -1657.1261, 6.2312 >>, 134.0154,pedrole_no_ai,WEAPONTYPE_MICROSMG ) // SET_ENTITY_COORDS_NO_OFFSET(ped[dummyPed].id,<< -1068.8792, -1657.1261, 6.2312 >>) // GIVE_WEAPON_TO_PED(ped[dummyPed].id,WEAPONTYPE_PUMPSHOTGUN,1,FALSE) // GIVE_WEAPON_TO_PED(ped[dummyPed].id,WEAPONTYPE_PISTOL,1,FALSE) // SET_CURRENT_PED_WEAPON(ped[dummyPed].id,WEAPONTYPE_MICROSMG ,true) // FREEZE_ENTITY_POSITION(ped[dummyPed].id,true) // SET_PED_CAN_BE_TARGETTED(ped[dummyPed].id,FALSE) CLEAR_AREA(<< -1101.8131, -1618.1290, 3.5544 >>,3.0,true) add_event(EVENTS_RAYFIRE_SCAFFOLD) SET_PED_PATHS_IN_AREA(<<-1131.870605,-1586.095581,3.943655>>-<<5.562500,6.687500,1.125000>>,<<-1131.870605,-1586.095581,3.943655>>+<<5.562500,6.687500,1.125000>>,FALSE) SET_PED_PATHS_IN_AREA(<<-1090.723022,-1656.140381,4.110459>>-<<2.125000,2.125000,1.000000>>,<<-1090.723022,-1656.140381,4.110459>>+<<2.125000,2.125000,1.000000>>,FALSE) if not IS_PED_INJURED(ped[PED_BUDDY].id) SET_ENTITY_LOAD_COLLISION_FLAG(ped[PED_BUDDY].id,true) ENDIF //spawn drunk ped //-1115.3 -1606.16 //-1115.53 -1606.43 // ADD_SCENARIO_BLOCKING_AREA( << -1100.1963, -1630.8409, 4.3462 >> - <<100,100,20>>, << -1100.1963, -1630.8409, 4.3462 >> + <<100,100,20>>) //url:bugstar:2004628 - Adjusted scenario blocking areas to free up a space in the middle for cat scenarios. ADD_SCENARIO_BLOCKING_AREA( <<-1078.01, -1719.19,4.728500>> - <<50, 50, 20>>, <<-1078.01, -1719.19,4.728500>> + <<50, 50, 20>>) ADD_SCENARIO_BLOCKING_AREA( <<-1077.122437,-1595.976318,4.712814>> - <<50, 50, 20>>, <<-1077.122437,-1595.976318,4.712814>> + <<50, 50, 20>>) ADD_SCENARIO_BLOCKING_AREA( <<-1144.853271,-1649.836792,4.623703>> - <<50, 50, 20>>, <<-1144.853271,-1649.836792,4.623703>> + <<50, 50, 20>>) ADD_SCENARIO_BLOCKING_AREA( <<-1018.07, -1654.28,4.776398>> - <<50, 50, 20>>, <<-1018.07, -1654.28,4.776398>> + <<50, 50, 20>>) ADD_SCENARIO_BLOCKING_AREA( <<-2000,-1846,68>>,<<-1120,-580,83>>) //SET_SCENARIO_PED_DENSITY_MULTIPLIER(0.0,0.0) CLEAR_AREA(<< -1090.9822, -1632.9275, 3.7328 >>,2.0,true) CLEAR_AREA(<< -1100.8934, -1618.5619, 3.7723 >>,5.0,true) IF ENUM_TO_INT(missionProgress) <= ENUM_TO_INT(STAGE_VEHICLE_DRIVE_OFF) //vehicle[veh_driveoff].id = CREATE_VEHICLE(BISON,<< -1090.0382, -1634.9688, 4.1764 >>,125.6) initVehicle(veh_driveoff,BISON,<< -1090.0382, -1634.9688, 4.1764 >>,125.6) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehicle[veh_driveoff].id,TRUE) SET_VEHICLE_COLOURS(vehicle[veh_driveoff].id,58,63) ped[ped_driver].id = CREATE_PED_INSIDE_VEHICLE(vehicle[veh_driveoff].id,PEDTYPE_MISSION,model_salvas) ped[ELSAL_PASSENGER].id = CREATE_PED_INSIDE_VEHICLE(vehicle[veh_driveoff].id,PEDTYPE_MISSION,model_salvas,VS_FRONT_RIGHT) SET_PED_COMBAT_ATTRIBUTES(ped[ped_driver].id,CA_LEAVE_VEHICLES,FALSE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_PASSENGER].id,CA_LEAVE_VEHICLES,FALSE) SET_VEHICLE_LIGHTS(vehicle[veh_driveoff].id,FORCE_VEHICLE_LIGHTS_OFF) SET_VEHICLE_ENGINE_ON(vehicle[veh_driveoff].id,FALSE,true) SET_VEHICLE_DOORS_LOCKED(vehicle[veh_driveoff].id,VEHICLELOCK_LOCKOUT_PLAYER_ONLY) //1474174 SET_PED_COMBAT_ATTRIBUTES(ped[ped_driver].id,CA_CAN_INVESTIGATE,FALSE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_PASSENGER].id,CA_CAN_INVESTIGATE,FALSE) //SET_PED_ACTION(ELSAL_PASSENGER,action_wait_in_car) ENDIF ADD_DOOR_TO_SYSTEM(iGarHash,prop_gar_door_03_LD,<<-1074.65,-1676.13,4.66>>,FALSE) //vehicle[veh_bison].id = CREATE_VEHICLE(BISON,<<-1078.227783,-1651.632324,4.192808>>, -56.018101) initVehicle(veh_bison,BISON,<<-1078.227783,-1651.632324,4.192808>>, -56.018101) SET_VEHICLE_COLOURS(vehicle[veh_bison].id,124,124) SET_VEHICLE_DOORS_LOCKED(vehicle[veh_bison].id,VEHICLELOCK_LOCKED_BUT_CAN_BE_DAMAGED) SET_VEHICLE_ALARM(vehicle[veh_bison].id,TRUE) IF ENUM_TO_INT(missionProgress) <= ENUM_TO_INT(STAGE_COVER_BY_SKIP) //vehicle[VEH_FLEE].id = CREATE_VEHICLE(penumbra,<< -1090.6084, -1631.2157, 3.7328 >>,307.1) initVehicle(VEH_FLEE,penumbra,<< -1090.6084, -1631.2157, 3.7328 >>,307.1) SET_DISABLE_VEHICLE_PETROL_TANK_FIRES(vehicle[VEH_FLEE].id,true) SET_VEHICLE_COLOURS(vehicle[VEH_FLEE].id,73,73) SET_VEHICLE_DOORS_LOCKED(vehicle[VEH_FLEE].id,VEHICLELOCK_LOCKED_BUT_CAN_BE_DAMAGED) SET_VEHICLE_ALARM(vehicle[VEH_FLEE].id,TRUE) //cprintln(debug_trevor3,"ALARM SET") FREEZE_ENTITY_POSITION(vehicle[VEH_FLEE].id,true) ENDIF PRINTLN("ADD NAVMESH BLOCKING") navblockA = ADD_NAVMESH_BLOCKING_OBJECT(<<-1090.411,-1648.120,3.507>>,<<2.225,3.1754,1>>,DEG_TO_RAD(36)) navblockB = ADD_NAVMESH_BLOCKING_OBJECT(<<-1095,-1655.000,4.000 >>,<<14.648,8.071,2.000>>,DEG_TO_RAD(33.480)) //cprintln(debug_trevor3,"END ALLEYWAY CREATION") SET_DOOR_STATE(DOORNAME_ARM2_GARAGE_01,DOORSTATE_FORCE_LOCKED_THIS_FRAME) SET_DOOR_STATE(DOORNAME_ARM2_GARAGE_02,DOORSTATE_FORCE_LOCKED_THIS_FRAME) if DOES_PICKUP_EXIST(pickup_Armour) REMOVE_PICKUP(pickup_Armour) ENDIF PlacementFlags = 0 // SET_BIT(PlacementFlags, ENUM_TO_INT(PLACEMENT_FLAG_ORIENT_TO_GROUND)) SET_BIT(PlacementFlags, ENUM_TO_INT(PLACEMENT_FLAG_FIXED)) // SET_BIT(PlacementFlags, ENUM_TO_INT(PLACEMENT_FLAG_SNAP_TO_GROUND)) pickup_Armour = CREATE_PICKUP_ROTATE(PICKUP_ARMOUR_STANDARD,<<-1064.4390, -1664.4841, 3.6409>>, <<-90.0000, 0.0000, 83.8800>>, PlacementFlags) events[i].flag++ endif BREAK CASE 2 IF NOT DOES_ENTITY_EXIST(openGarage) openGarage = GET_CLOSEST_OBJECT_OF_TYPE(<<-1067,-1665.61,4.79>>,1.0,PROP_GAR_DOOR_01) ENDIF IF NOT DOES_ENTITY_EXIST(openGarageb) openGarageb = GET_CLOSEST_OBJECT_OF_TYPE(<<-1064.76,-1668.76,4.79>>,1.0,PROP_GAR_DOOR_02) ENDIF IF DOES_ENTITY_EXIST(openGarage) AND DOES_ENTITY_EXIST(openGarageb) SET_ENTITY_INVINCIBLE(openGarage,TRUE) SET_ENTITY_INVINCIBLE(openGarageb,TRUE) events[i].active = FALSE ENDIF BREAK ENDSWITCH BREAK case events_shooting_help weapon_type wepTemp weptemp = WEAPONTYPE_UNARMED switch events[i].flag case 0 // GET_CURRENT_PED_WEAPON(player_ped_id(),wepTemp) // IF weptemp = WEAPONTYPE_UNARMED // PRINT_HELP("ARM2_HLP18b") // events[i].timer = get_game_timer() events[i].flag++ // ELSE // events[i].flag=2 // ENDIF BREAK CASE 1 GET_CURRENT_PED_WEAPON(player_ped_id(),wepTemp) IF weptemp != WEAPONTYPE_UNARMED events[i].flag++ ENDIF BREAK CASE 2 IF get_game_timer() > events[i].timer + 3000 OR NOT IS_HELP_MESSAGE_BEING_DISPLAYED() // IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP18b") // CLEAR_HELP() // ENDIF IF GET_IS_USING_ALTERNATE_DRIVEBY() PRINT_HELP("ARM2_HLP18ALT",DEFAULT_HELP_TEXT_TIME+2000) ELSE PRINT_HELP("ARM2_HLP18",DEFAULT_HELP_TEXT_TIME+2000) ENDIF events[i].flag++ ENDIF BREAK CASE 3 IF IS_PED_SHOOTING(player_ped_id()) OR IS_PED_INJURED(ped[ped_bikeman].id) events[i].flag++ events[i].timer = get_game_timer() + 1000 ENDIF BREAK case 4 IF get_game_timer() > events[i].timer IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP18") OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP18ALT") CLEAR_HELP() ENDIF events[i].active = FALSE ENDIF break ENDSWITCH break case events_reset_bricks IF DOES_ENTITY_EXIST(o_brickWall) IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfScaffold) AND GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfScaffold) = RFMO_STATE_END OR missionProgress = STAGE_CHASE_AFTER_BIKE //cprintln(debug_Trevor3,GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfScaffold)) cprintln(debug_Trevor3,"wall end") RESET_DISABLE_BREAKING(o_brickWall) // SET_DISABLE_BREAKING(o_brickWall,false) events[i].active = FALSE ENDIF ENDIF break CASE EVENTS_RAYFIRE_SCAFFOLD SWITCH events[i].flag CASE 0 IF missionProgress > STAGE_DRIVE_TO_ALLEYWAY rfScaffold = GET_RAYFIRE_MAP_OBJECT(<<-1093.4,-1653.1,3.0>>, 10, "DES_Scaffolding") IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfScaffold) SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfScaffold, RFMO_STATE_STARTING) SET_BUILDING_STATE(BUILDINGNAME_IPL_ARM2_SCAFFOLDING, BUILDINGSTATE_NORMAL) events[i].flag++ ENDIF ENDIF BREAK CASE 1 IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfScaffold) if GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfScaffold) = RFMO_STATE_START SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfScaffold, RFMO_STATE_PRIMING) ENDIF endif IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfScaffold) if GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfScaffold) = RFMO_STATE_PRIMED //debugMessage(debug_event,"rayfire waiting for bullet") events[i].flag=2 ENDIF ENDIF BREAK CASE 2 IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfScaffold) if GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfScaffold) = RFMO_STATE_PRIMED //if missionProgress >= STAGE_START_SHOOTOUT //and bCanShootScaffold = true if IS_BULLET_IN_ANGLED_AREA(<<-1087.801392,-1655.349121,6.6>>, <<-1089.400879,-1654.463501,7.555488>>, 1.000000) o_brickWall = GET_CLOSEST_OBJECT_OF_TYPE(<<-1081.0177, -1647.6060, 4.1603 >>,0.5,prop_wallchunk_01) IF DOES_ENTITY_EXIST(o_brickWall) IF NOT IS_ENTITY_DEAD(o_brickWall) SET_DISABLE_BREAKING(o_brickWall,true) ENDIF ENDIF events[i].timer = GET_GAME_TIMER() + 250 events[i].flag=3 ENDIF IF IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_DONTCARE,<<-1087.801392,-1655.349121,6.691953>>, <<-1089.400879,-1654.463501,7.555488>>, 1.000000) If IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_GRENADE,<<-1087.801392,-1655.349121,6.691953>>, <<-1089.400879,-1654.463501,7.555488>>, 1.000000) OR IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_ROCKET,<<-1087.801392,-1655.349121,6.691953>>, <<-1089.400879,-1654.463501,7.555488>>, 1.000000) OR IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_GRENADELAUNCHER,<<-1087.801392,-1655.349121,6.691953>>, <<-1089.400879,-1654.463501,7.555488>>, 1.000000) OR IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_STICKYBOMB,<<-1087.801392,-1655.349121,6.691953>>, <<-1089.400879,-1654.463501,7.555488>>, 1.000000) o_brickWall = GET_CLOSEST_OBJECT_OF_TYPE(<<-1081.0177, -1647.6060, 4.1603 >>,0.5,prop_wallchunk_01) IF DOES_ENTITY_EXIST(o_brickWall) IF NOT IS_ENTITY_DEAD(o_brickWall) SET_DISABLE_BREAKING(o_brickWall,true) ENDIF ENDIF events[i].timer = GET_GAME_TIMER() + 250 events[i].flag=3 ENDIF ENDIF IF events[i].flag=3 REPLAY_START_EVENT() ENDIF ELSE events[i].flag=0 ENDIF ENDIF BREAK CASE 3 IF GET_GAME_TIMER() > events[i].timer IF DOES_ENTITY_EXIST(dummyGasCanister) if DOES_ENTITY_HAVE_DRAWABLE(dummyGasCanister) SET_OBJECT_TARGETTABLE(dummyGasCanister,false) DELETE_OBJECT(dummyGasCanister) ELSE SET_OBJECT_TARGETTABLE(dummyGasCanister,false) SET_OBJECT_AS_NO_LONGER_NEEDED(dummyGasCanister) ENDIF ENDIF SET_CONDITION_STATE(COND_SCAFFOLD_BLOWN,TRUE) //add stat result if ped killed by gas explosion IF NOT IS_PED_INJURED(ped[ELSAL_SCAFFOLDA].id) SET_ACTION_FLAG(33,ACT_STAT_PROPANE,1) ENDIf events[i].flag=4 ENDIF BREAK CASE 4 IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfScaffold) IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfScaffold) = RFMO_STATE_PRIMED SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfScaffold, RFMO_STATE_START_ANIM) START_AUDIO_SCENE("ARM_2_RAYFIRE") events[i].flag++ ENDIF ENDIF BREAK CASE 5 IF GET_GAME_TIMER() > events[i].timer if not IS_PED_INJURED(ped[PED_BUDDY].id) SET_ENTITY_PROOFS(ped[PED_BUDDY].id,FALSE,true,true,true,FALSE) ENDIF IF IS_VEHICLE_DRIVEABLE(vehicle[veh_bison].id) SET_ENTITY_PROOFS(vehicle[veh_bison].id,FALSE,FALSE,TRUE,FALSE,FALSE) ENDIF IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-1090.74, -1654.78, 3.40>>) > 4.875 SET_ENTITY_PROOFS(player_ped_id(),FALSE,FALSE,TRUE,FALSE,FALSE) ENDIF ADD_EXPLOSION(<<-1091.244751,-1653.531250,7.070650>>,EXP_TAG_GAS_TANK,4.0,false,true) ADD_EXPLOSION(<<-1088.8958, -1654.3989, 4.2178>>,EXP_TAG_GAS_TANK,3.5,false,true) //PLAY_SOUND_FROM_COORD(-1,"ARM_2_Repo_Gas_Explosion",<< -1088.8005, -1655.5457, 7.3146 >>) PLAY_SOUND_FROM_COORD(-1, "Gas_Explosion", << -1088.8005, -1655.5457, 7.3146 >>, "ARM_2_REPO_SOUNDS") iDisableReplayCameraTimer = GET_GAME_TIMER() + 1500 //Fix for bug 2223403 IF NOT is_ped_injured(ped[ELSAL_SCAFFOLDA].id) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[ELSAL_SCAFFOLDA].id,<<-1091.244751,-1653.531250,7.070650>>) < 4 SET_PED_TO_RAGDOLL(ped[ELSAL_SCAFFOLDA].id,5000,5000,TASK_RELAX) SET_ENTITY_HEALTH(ped[ELSAL_SCAFFOLDA].id,0) START_ENTITY_FIRE(ped[ELSAL_SCAFFOLDA].id) ENDIF ENDIF /* IF NOT is_ped_injured(ped[ELSAL_SCAFFOLDA].id) FREEZE_ENTITY_POSITION(ped[ELSAL_SCAFFOLDA].id,FALSE) SET_PED_TO_RAGDOLL(ped[ELSAL_SCAFFOLDA].id,5000,5000,TASK_RELAX) SET_ENTITY_HEALTH(ped[ELSAL_SCAFFOLDA].id,0) ENDIF IF NOT is_ped_injured(ped[ELSAL_SCAFFOLDB].id) FREEZE_ENTITY_POSITION(ped[ELSAL_SCAFFOLDB].id,FALSE) SET_PED_TO_RAGDOLL(ped[ELSAL_SCAFFOLDB].id,5000,5000,TASK_RELAX) SET_ENTITY_HEALTH(ped[ELSAL_SCAFFOLDB].id,0) ENDIF * /*IF NOT is_ped_injured(ped[ELSAL_SCAFFOLDC].id) FREEZE_ENTITY_POSITION(ped[ELSAL_SCAFFOLDC].id,FALSE) SET_PED_TO_RAGDOLL(ped[ELSAL_SCAFFOLDC].id,5000,5000,TASK_RELAX) SET_ENTITY_HEALTH(ped[ELSAL_SCAFFOLDC].id,0) ENDIF*/ events[i].timer = GET_GAME_TIMER() + 1000 events[i].flag++ ENDIF BREAK CASE 6 IF GET_GAME_TIMER() > events[i].timer SET_ENTITY_PROOFS(player_ped_id(),FALSE,FALSE,FALSE,FALSE,FALSE) IF IS_VEHICLE_DRIVEABLE(vehicle[veh_bison].id) SET_ENTITY_PROOFS(vehicle[veh_bison].id,FALSE,FALSE,FALSE,FALSE,FALSE) ENDIF events[i].active = FALSE ENDIF BREAK ENDSWITCH BREAK CASE events_lemar_anim_set IF missionProgress >= STAGE_ADVANCE_DOWN_ALLEYWAY switch events[i].flag case 0 REQUEST_ANIM_SET("ANIM_GROUP_MOVE_LEMAR_ALLEY") events[i].flag++ BREAK CASE 1 IF HAS_ANIM_SET_LOADED("ANIM_GROUP_MOVE_LEMAR_ALLEY") IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) SET_PED_MOVEMENT_CLIPSET(ped[PED_BUDDY].id, "ANIM_GROUP_MOVE_LEMAR_ALLEY") events[i].active = FALSE ENDIF ENDIF BREAK ENDSWITCH endif BREAK CASE events_make_Lemar_run IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) SWITCH events[i].flag CASE 0 IF IS_CUTSCENE_PLAYING() events[i].flag++ ENDIF BREAK CASE 1 if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Lamar",GET_ENTITY_MODEL(ped[PED_BUDDY].id)) OR HAS_CUTSCENE_FINISHED() IF HAS_CUTSCENE_FINISHED() //if player shit skipped here FORCE_PED_MOTION_STATE(ped[PED_BUDDY].id,MS_ON_FOOT_RUN) ELSE FORCE_PED_MOTION_STATE(ped[PED_BUDDY].id,MS_ON_FOOT_RUN,FALSE,FAUS_CUTSCENE_EXIT) ENDIF SET_PED_MIN_MOVE_BLEND_RATIO(ped[PED_BUDDY].id,PEDMOVE_RUN) SET_PED_PATH_CLIMB_COST_MODIFIER(ped[PED_BUDDY].id,0.1) IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) seq() TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1130.3208, -1589.8260, 3.3891>>,pedmove_run,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,39) TASK_CLIMB(null,TRUE) endseq(ped[PED_BUDDY].id) ENDIF events[i].flag=2 events[i].timer = GET_GAME_TIMER() + 2000 ENDIF BREAK CASE 2 if GET_GAME_TIMER() < events[i].timer SET_PED_MIN_MOVE_BLEND_RATIO(ped[PED_BUDDY].id,PEDMOVE_RUN) ELSE events[i].active=FALSE ENDIF BREAK ENDSWITCH ENDIF break CASE events_make_player_run SWITCH events[i].flag CASE 0 IF IS_CUTSCENE_PLAYING() events[i].flag++ ENDIF BREAK CASE 1 if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklin") OR HAS_CUTSCENE_FINISHED() //for shit skip to this stage IF NOT IS_CUTSCENE_PLAYING() //if player shit skipped here FORCE_PED_MOTION_STATE(PLAYER_PED_ID(),MS_ON_FOOT_RUN) ELSE FORCE_PED_MOTION_STATE(PLAYER_PED_ID(),MS_ON_FOOT_RUN,FALSE,FAUS_CUTSCENE_EXIT) ENDIF SET_PED_MIN_MOVE_BLEND_RATIO(PLAYER_PED_ID(),PEDMOVE_RUN) //TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(),<< -1123.6796, -1596.0865, 3.3602 >>,pedmove_run) events[i].flag=2 events[i].timer = GET_GAME_TIMER() + 2000 ENDIF BREAK CASE 2 if GET_GAME_TIMER() < events[i].timer SET_PED_MIN_MOVE_BLEND_RATIO(PLAYER_PED_ID(),PEDMOVE_RUN) ELSE events[i].active=FALSE ENDIF BREAK ENDSWITCH break CASE EVENTS_CHECK_PLAYER_FAILS // if GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(),vehicle[VEH_OBJECTIVE].id) > 650.0 // FailMission("ARM2_F06") // ENDIF IF DOES_ENTITY_EXIST(vehicle[VEH_OBJECTIVE].id) if not IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) FailMission("ARM2_F03") ELSE IF IS_VEHICLE_STUCK_TIMER_UP(vehicle[VEH_OBJECTIVE].id, VEH_STUCK_JAMMED, JAMMED_TIME) OR IS_VEHICLE_STUCK_TIMER_UP(vehicle[VEH_OBJECTIVE].id, VEH_STUCK_HUNG_UP, HUNG_UP_TIME) OR IS_VEHICLE_STUCK_TIMER_UP(vehicle[VEH_OBJECTIVE].id, VEH_STUCK_ON_ROOF, ROOF_TIME) FailMission("ARM2_F03") ENDIF ENDIF ENDIF //player shoots chopper IF missionProgress >= STAGE_ADVANCE_DOWN_ALLEYWAY and missionProgress < STAGE_CHASE_AFTER_BIKE If GET_PLAYER_WANTED_LEVEL(player_id()) > 0 FailMission("ARM2_F04") ENDIf endif BREAK CASE EVENTS_REMOVE_RANDOM_PEDS_IN_AREA IF events[i].flag = 0 SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(1.0) SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(1.0) SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME(1.0,1.0) if IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<-1121.811157,-1599.718506,1.023538>>, <<-1066.708252,-1676.495239,11.544231>>, 34.437500) events[i].flag = 1 ENDIF ELIF events[i].flag = 1 SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0) SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0.0) SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0,0.0) if not IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<-1121.811157,-1599.718506,1.023538>>, <<-1066.708252,-1676.495239,11.544231>>, 34.437500) events[i].flag = 0 ENDIF ENDIF BREAK CASE EVENTS_DEAL_WITH_PLAYER_CAR If events[i].flag = 0 IF IS_CUTSCENE_PLAYING() //just in front of entrance RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<-19.289612,-1085.294678,25.310959>>, <<-35.263798,-1079.358521,30.068470>>, 12.625000,<<-27.3711, -1082.1107, 25.5890>>, 249.7235,<<4,20,10>>) //? RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<-29.770571,-1086.699951,24.113047>>, <<-33.119946,-1094.056396,29.047302>>, 6.312500,<<-27.3711, -1082.1107, 25.5890>>, 249.7235,<<4,20,10>>) //in showroom by Simeon's office RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT( <<-31.779169,-1094.770386,25.109842>>, <<-35.304180,-1104.366577,28.234842>>, 5.937500,<<-27.3711, -1082.1107, 25.5890>>, 249.7235,<<4,20,10>>) //by three cars spawned RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<-20.769154,-1077.898926,24.251143>>, <<-4.940775,-1083.378906,29.297075>>, 5.812500,<<-14.9697, -1085.4008, 25.6721>>, 238.0370,<<6,10,10>>) vehicle[VEH_PLAYER].id = GET_PLAYERS_LAST_VEHICLE() IF DOES_ENTITY_EXIST(vehicle[VEH_PLAYER].id) IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) SET_ENTITY_AS_MISSION_ENTITY(vehicle[veh_player].id,TRUE,TRUE) //1413288 SET_ENTITY_HEALTH(vehicle[VEH_PLAYER].id,1800) ENDIF ENDIF CLEAR_AREA(<<-12.8803, -1080.6093, 25.6721>>,20,TRUE) //clear area where three new cars are going to be placed. events[i].active = FALSE //ENDIF ENDIF ENDIF BREAK CASE events_make_player_walk SWITCH events[i].flag CASE 0 IF IS_CUTSCENE_PLAYING() events[i].flag++ ENDIF BREAK CASE 1 if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklin") OR HAS_CUTSCENE_FINISHED() //for shit skip to this stage /* IF NOT IS_CUTSCENE_PLAYING() //if player shit skipped here cprintln(debug_Trevor3,"BLEND A") FORCE_PED_MOTION_STATE(PLAYER_PED_ID(),MS_ON_FOOT_WALK) ELSE cprintln(debug_Trevor3,"BLEND B") FORCE_PED_MOTION_STATE(PLAYER_PED_ID(),MS_ON_FOOT_WALK,FALSE,FAUS_CUTSCENE_EXIT) ENDIF */ //modified for first person CPRINTLN(debug_trevor3,"new first person walk solution") IF IS_PLAYER_IN_FIRST_PERSON_CAMERA() FORCE_PED_MOTION_STATE(player_ped_id(), MS_AIMING, true, FAUS_DEFAULT ) SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVEBLENDRATIO_WALK, 2000) ELSE FORCE_PED_MOTION_STATE(player_ped_id(), MS_ON_FOOT_WALK, true, FAUS_DEFAULT ) SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVEBLENDRATIO_WALK, 1000) ENDIF //TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(),<< -1123.6796, -1596.0865, 3.3602 >>,pedmove_run) events[i].flag=2 events[i].timer = GET_GAME_TIMER() + 1000 ENDIF BREAK CASE 2 if GET_GAME_TIMER() < events[i].timer //SET_PED_MIN_MOVE_BLEND_RATIO(PLAYER_PED_ID(),PEDMOVE_WALK) ELSE events[i].active=FALSE ENDIF BREAK ENDSWITCH break case events_check_for_dealership_rampage //check bullet impacted IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-39.627991,-1099.240112,25.252590>>) < 150.5 IF HAS_BULLET_IMPACTED_IN_AREA(<<-39.627991,-1099.240112,25.252590>> ,26.5) //cprintln(debug_Trevor3,"fail a") FailMission("ARM2_F07") ENDIF //check explosions IF IS_EXPLOSION_IN_SPHERE(EXP_TAG_DONTCARE,<<-39.627991,-1099.240112,25.252590>> ,26.5) //cprintln(debug_Trevor3,"fail b") FailMission("ARM2_F07") ENDIF //check damage to vehicles in area IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-39.627991,-1099.240112,25.252590>>) < 26.5 IF IS_PED_SHOOTING(player_ped_id()) WEAPON_TYPE wep wep = WEAPONTYPE_UNARMED GET_CURRENT_PED_WEAPON(player_ped_id(),wep) SWITCH wep CASE WEAPONTYPE_BAT FALLTHRU CASE WEAPONTYPE_CROWBAR FALLTHRU CASE WEAPONTYPE_HAMMER FALLTHRU CASE WEAPONTYPE_KNIFE FALLTHRU // CASE WEAPONTYPE_LASSO // FALLTHRU CASE WEAPONTYPE_NIGHTSTICK FALLTHRU CASE WEAPONTYPE_PETROLCAN FALLTHRU CASE WEAPONTYPE_STICKYBOMB FALLTHRU CASE WEAPONTYPE_GRENADE FALLTHRU CASE WEAPONTYPE_DLC_BOTTLE BREAK DEFAULT //cprintln(debug_Trevor3,"fail c") FailMission("ARM2_F07") BREAK ENDSWITCH ENDIF ENDIF ENDIF BREAK ENDSWITCH if events[i].flag = CLEANUP events[i].active = FALSE ENDIF ENDIF ENDFOR ENDIF ENDPROC proc control_lights() if bTurnOnVerandaLight = true DRAW_LIGHT_WITH_RANGE(<< -1089.7656, -1631.0648, 8.9467 >>,255,255,200,7.0,1.0) ENDIF if bTurnOnBalconyLight = true DRAW_LIGHT_WITH_RANGE(<< -1085.9570, -1662.7239, 8.6111 >>,255,255,200,7.0,1.0) ENDIF ENDPROC FUNC BOOL IS_CONDITION_TRUE(enumconditions conditiontoCheck) int iArray = enum_to_int(conditiontoCheck) - enum_to_int(conditions[0].condition) #if is_debug_build IF iArray < 0 Or iArray > count_of(conditions) //cprintln(debug_trevor3,"Bad array cond: :",GET_COND_TEXT(conditiontoCheck)) endif #endif IF conditions[iArray].condition = conditiontoCheck IF conditions[iArray].active AND conditions[iArray].returns RETURN TRUE ENDIF ELSE //cprintln(debug_Trevor3,"Cond = ",GET_COND_TEXT(conditiontoCheck) ) SCRIPT_ASSERT("SCRIPT: IS_CONDITION_TRUE() : condition stored in array is not equal to value stored in conditionArrayEntry[]") ENDIF RETURN FALSE ENDFUNC FUNC BOOL IS_CONDITION_FALSE(enumconditions conditiontoCheck) int iArray = enum_to_int(conditiontoCheck) - enum_to_int(conditions[0].condition) IF conditions[iArray].condition = conditiontoCheck IF conditions[iArray].active AND NOT conditions[iArray].returns RETURN TRUE ENDIF ELSE SCRIPT_ASSERT("SCRIPT: IS_CONDITION_TRUE() : condition stored in array is not equal to value stored in conditionArrayEntry[]") ENDIF RETURN FALSE ENDFUNC FUNC BOOL WAS_CONDITION_TRUE(enumconditions conditiontoCheck) int iArray = enum_to_int(conditiontoCheck) - enum_to_int(conditions[0].condition) IF conditions[iArray].condition = conditiontoCheck IF conditions[iArray].active AND conditions[iArray].wasTrue RETURN TRUE ENDIF ELSE SCRIPT_ASSERT("SCRIPT: IS_CONDITION_TRUE() : condition stored in array is not equal to value stored in conditionArrayEntry[]") ENDIF RETURN FALSE ENDFUNC PROC SET_CONDITION_WAS_TRUE(enumconditions conditiontoCheck) int iArray = enum_to_int(conditiontoCheck) - enum_to_int(conditions[0].condition) IF conditions[iArray].condition = conditiontoCheck conditions[iArray].wasTrue = TRUE ELSE SCRIPT_ASSERT("SCRIPT: IS_CONDITION_TRUE() : condition stored in array is not equal to value stored in conditionArrayEntry[]") ENDIF ENDPROC FUNC bool andOrReturns(bool &pconditionsTrue, bool &pbracketOpen, andorEnum andOr, enumconditions cond) //IF NOT pbracketOpen //OR (NOT pconditionsTrue AND pbracketOpen) SWITCH andOr CASE cFORCEtrue pconditionsTrue = TRUE BREAK CASE cIGNORE RETURN FALSE BREAK CASE cIF IF (cond = COND_NULL OR (cond != COND_NULL AND IS_CONDITION_TRUE(cond))) pconditionsTrue = TRUE ENDIF BREAK CASE cIFnot IF (cond = COND_NULL OR (cond != COND_NULL AND IS_CONDITION_FALSE(cond))) pconditionsTrue = TRUE ENDIF BREAK CASE cOR IF (cond = COND_NULL OR (cond != COND_NULL AND IS_CONDITION_TRUE(cond))) pconditionsTrue = TRUE ENDIF BREAK CASE cORbracket IF pconditionsTrue RETURN FALSE ELSE pbracketOpen = TRUE IF (cond = COND_NULL OR (cond != COND_NULL AND IS_CONDITION_TRUE(cond))) pconditionsTrue = TRUE ENDIF ENDIF BREAK CASE cAND IF (cond != COND_NULL AND IS_CONDITION_FALSE(cond)) pconditionsTrue = FALSE ENDIF BREAK CASE cANDNOT IF (cond != COND_NULL AND IS_CONDITION_TRUE(cond)) pconditionsTrue = FALSE ENDIF BREAK CASE cWasTrueNowFalse IF WAS_CONDITION_TRUE(cond) IF IS_CONDITION_FALSE(COND) pconditionsTrue = TRUE ELSE pconditionsTrue = FALSE ENDIF ELSE IF IS_CONDITION_TRUE(cond) SET_CONDITION_WAS_TRUE(COND) ENDIF pconditionsTrue = FALSE ENDIF BREAK ENDSWITCH RETURN TRUE ENDFUNC FUNC bool checkANDOR(andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3 = COND_NULL, andorEnum andOr4=cIGNORE, enumconditions cond4 = COND_NULL, andorEnum andOr5=cIGNORE, enumconditions cond5 = COND_NULL) conditionsTrue = FALSE bracketOpen = FALSE IF andOrReturns(conditionsTrue,bracketOpen,andOr1,cond1) IF andOrReturns(conditionsTrue,bracketOpen,andOr2,cond2) IF andOrReturns(conditionsTrue,bracketOpen,andOr3,cond3) IF andOrReturns(conditionsTrue,bracketOpen,andOr4,cond4) IF andOrReturns(conditionsTrue,bracketOpen,andOr5,cond5) //the if statements are only to prevent every single andOrReturns() function being called if they're not all necessary. ENDIF ENDIF ENDIF ENDIF ENDIF IF conditionsTrue RETURN TRUE ENDIF RETURN FALSE ENDFUNC // ====================================== ACTION CHECK ======================================== PROC FORCE_ACTION_STATE(int thisI, enumActions thisAction, bool setCompleted=TRUE, bool ongoing=FALSE) actions[thisI].action = thisAction actions[thisI].active = TRUE actions[thisI].completed = setCompleted actions[thisI].ongoing = ongoing actions[thisI].flag = 0 actions[thisI].needsCleanup = FALSE actions[thisI].intA = 0 actions[thisI].intB = 0 actions[thisI].floatA = 0 ENDPROC FUNC BOOL GET_THIS_ACTION_ID(enumActions actionToCheck, int &iReturn) int i REPEAT COUNT_OF(actions) i IF actions[i].action = actionToCheck iReturn = i RETURN TRUE ENDIF ENDREPEAT RETURN FALSE ENDFUNC FUNC BOOL HAS_DIALOGUE_FINISHED(int thisI,enumDialogue thisDia) IF dia[thisI].dial = thisDia IF dia[thisI].bCompleted RETURN TRUE ENDIF ELSE IF dia[thisI].dial != DIA_NULL SCRIPT_ASSERT("HAS_DIALOGUE_FINISHED() has wrong entry value") ENDIF ENDIF RETURN FALSE ENDFUNC FUNC INT GET_DIALOGUE_FLAG(int iDia,enumDialogue thisDia) IF dia[iDia].dial = thisDia RETURN dia[iDia].flag ENDIF //ENDREPEAT RETURN 0 ENDFUNC PROC SET_ACTION_INTB(int iAction, enumActions actionToCheck, int iNewValue) IF actions[iAction].action = actionToCheck actions[iAction].intB = iNewValue ELSE SCRIPT_ASSERT("SET_ACTION_INTB() Action does not match entry.") ENDIF ENDPROC FUNC INT GET_ACTION_INTB(int iAction, enumActions actionToCheck) IF actions[iAction].action = actionToCheck RETURN actions[iAction].intB ELSE SCRIPT_ASSERT("GET_ACTION_INTB() Action does not match entry.") ENDIF RETURN -1 ENDFUNC FUNC INT GET_ACTION_FLAG(int iAction, enumActions actionToCheck) IF actions[iAction].action = actionToCheck RETURN actions[iAction].flag ENDIF RETURN -1 endfunc FUNC BOOL IS_ACTION_COMPLETE(int iAction, enumActions actionToCheck) IF actions[iAction].action = actionToCheck IF actions[iAction].completed = TRUE RETURN TRUE ENDIF ENDIF RETURN FALSE ENDFUNC FUNC BOOL HAS_ACTION_STARTED(enumActions actionToCheck) int i REPEAT COUNT_OF(actions) i IF actions[i].action = actionToCheck IF actions[i].active = TRUE AND actions[i].ongoing = TRUE RETURN TRUE ENDIF ENDIF ENDREPEAT RETURN FALSE ENDFUNC PROC FORCE_END_ACTION(enumActions actionToEnd) int i REPEAT COUNT_OF(actions) i IF actions[i].action = actionToEnd IF actions[i].active = TRUE actions[i].completed = TRUE ENDIF ENDIF ENDREPEAT ENDPROC PROC RESET_ACTION(int thisAct, enumActions actionToReset) IF actions[thisAct].action = actionToReset IF actions[thisAct].active = TRUE actions[thisAct].completed = FALSE actions[thisAct].ongoing = FALSE actions[thisAct].flag = 0 actions[thisAct].intA = 0 actions[thisAct].intB = 0 actions[thisAct].floatA = 0 actions[thisAct].trackCondition = FALSE ENDIF ELSE SCRIPT_ASSERT("RESET_ACTION() entry incorrect") ENDIF ENDPROC PROC SET_ACTION_NEEDS_CLEANUP(int iClean) actions[iClean].needsCleanup = TRUE ENDPROC /// Kenneth R. /// - I moved this switch case into a procedure to fix the folloing compiler issue: /// X:\gta5\src\dev\rage\script\tools\scriptcompiler\node.cpp(1696): Error: distance >= -32768 && distance <= 32767: Jump is 32797 away from target, too far. Start of jump PC is 223221. Destination PC is 256018 /// - The ACTION proc is has too many cases that are nested causing the compiler to complain. PROC TEMP_PROC_FOR_COMPILER_FIX(INT thisI) SWITCH actions[thisI].flag CASE 0 IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[veh_flee].id) AND GET_TIME_POSITION_IN_RECORDING(vehicle[veh_flee].id) > 1600) OR NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[veh_flee].id) SET_PED_PATH_AVOID_FIRE(ped[ped_buddy].id, FALSE) FORCE_ACTION_STATE(14,ACTION_LEMAR_ADVANCES_AFTER_PORTALOO,TRUE) FORCE_ACTION_STATE(20,ACTION_LEMAR_MOVES_TO_COVER,TRUE) FORCE_ACTION_STATE(30,ACTION_LAMAR_SHOOTS_CAR,TRUE) IF NOT HAS_DIALOGUE_FINISHED(17,DIA_LETS_GET_OUT_OF_HERE) seq() TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(null,<<-1094.1544, -1640.4307, 3.3985>>,<<-1112.1978, -1614.2959, 5.2204>>,pedmove_walk,false) TASK_AIM_GUN_AT_COORD(null,<<-1094.1544, -1640.4307, 3.3985>>,3000) TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(null,<<-1095.3619, -1640.8287, 3.3985>>,<<-1090.0018, -1625.8185, 5.0720>>,pedmove_walk,false) TASK_AIM_GUN_AT_COORD(null,<<-1090.0018, -1625.8185, 5.0720>>,4000) TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(null,<<-1095.3619, -1640.8287, 3.3985>>,<<-1090.0018, -1625.8185, 5.0720>>,pedmove_walk,false) TASK_AIM_GUN_AT_COORD(null,<<-1090.0018, -1625.8185, 5.0720>>,3000) endseq(ped[ped_buddy].id,true) ENDIF actions[thisI].flag ++ ENDIF BREAK CASE 1 //IF IS_CONV_ROOT_PLAYING("AR2_safe") IF HAS_DIALOGUE_FINISHED(17,DIA_LETS_GET_OUT_OF_HERE) actions[thisI].flag=3 SET_CURRENT_PED_WEAPON(ped[ped_buddy].id,WEAPONTYPE_UNARMED,true) seq() TASK_FOLLOW_WAYPOINT_RECORDING(null,"arm2_fire") TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< -1114.0529, -1612.6786, 3.2403 >>,pedmove_run,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_NO_STOPPING) SET_PED_MAX_MOVE_BLEND_RATIO(ped[ped_buddy].id,pedmove_run) endseq(ped[ped_buddy].id) actions[thisI].intA = GET_GAME_TIMER() + 4800 actions[thisI].intB = 0 ENDIF BREAK CASE 3 IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF actions[thisI].intB = 0 SET_PED_MAX_MOVE_BLEND_RATIO(ped[ped_buddy].id,pedmove_run) IF IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(ped[ped_buddy].id) IF GET_PED_WAYPOINT_PROGRESS(ped[ped_buddy].id) > 8 TASK_FOLLOW_NAV_MESH_TO_COORD(ped[ped_buddy].id,<< -1114.0529, -1612.6786, 3.2403 >>,pedmove_run,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_NO_STOPPING) SET_PED_MIN_MOVE_BLEND_RATIO(ped[ped_buddy].id,pedmove_run) actions[thisI].intB = 1 ENDIF ENDIF ELSE SET_PED_MIN_MOVE_BLEND_RATIO(ped[ped_buddy].id,pedmove_run) SET_PED_MAX_MOVE_BLEND_RATIO(ped[ped_buddy].id,pedmove_run) ENDIF ENDIF IF GET_GAME_TIMER() > actions[thisI].intA AND HAS_MODEL_LOADED(BAGGER) IF CREATE_PLAYER_VEHICLE(vehicle[VEH_OBJECTIVE].id, CHAR_FRANKLIN, << -1126.0166, -1575.3572, 3.3486 >>,301,true,VEHICLE_TYPE_BIKE) SET_VEHICLE_TYRES_CAN_BURST(vehicle[VEH_OBJECTIVE].id,FALSE) initPed(ped_bikeman,model_salvasb,vNull,0,vehicle[VEH_OBJECTIVE].id) SET_PED_COMPONENT_VARIATION(ped[ped_bikeman].id, INT_TO_ENUM(PED_COMPONENT,0), 1, 2, 0) //(head) SET_PED_MONEY(ped[ped_bikeman].id,80) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_bikeman].id,TRUE) actions[thisI].intA = CREATE_SYNCHRONIZED_SCENE(<< -1126.460, -1584.626, 3.437 >> , << 0.000, 0.000, -139.680 >>) SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(actions[thisI].intA,TRUE) TASK_SYNCHRONIZED_SCENE (ped[ped_bikeman].id, actions[thisI].intA, "missarmenian2_mcs_5", "_rider", INSTANT_BLEND_IN, INSTANT_BLEND_OUT ) PLAY_SYNCHRONIZED_ENTITY_ANIM(vehicle[VEH_OBJECTIVE].id,actions[thisI].intA,"_bike","missarmenian2_mcs_5",INSTANT_BLEND_IN) SET_ENTITY_HEALTH(ped[ped_bikeman].id,1000) SET_PED_CAN_BE_TARGETTED(ped[ped_bikeman].id,FALSE) actions[thisI].flag++ ENDIF ENDIF BREAK CASE 4 IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) AND IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) SET_PED_MAX_MOVE_BLEND_RATIO(ped[ped_buddy].id,pedmove_run) IF IS_ENTITY_IN_ANGLED_AREA( vehicle[VEH_OBJECTIVE].id, <<-1129.596069,-1588.691040,-0.139362>>, <<-1141.043945,-1572.930420,7.562129>>, 9.250000) SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT(ped[PED_BUDDY].id,FALSE) playMusic("ARM2_FIGHT_END",FALSE,"ARM2_CHASE_START") IF IS_AUDIO_SCENE_ACTIVE("ARM_2_SHOOTOUT") STOP_AUDIO_SCENE("ARM_2_SHOOTOUT") ENDIF if not IS_PED_INJURED(ped[PED_BUDDY].id) CLEAR_PED_ALTERNATE_WALK_ANIM(ped[PED_BUDDY].id) RESET_PED_MOVEMENT_CLIPSET(ped[PED_BUDDY].id) endif REPLAY_RECORD_BACK_FOR_TIME(2.0, 7.5, REPLAY_IMPORTANCE_HIGHEST) seq() TASK_PAUSE(null,500) TASK_LOOK_AT_ENTITY(null,player_ped_id(),5000,SLF_EXTEND_YAW_LIMIT | SLF_USE_TORSO) TASK_PLAY_ANIM(null,"reaction@points@","loop_0",4,walk_blend_out,3500,AF_TAG_SYNC_IN | AF_TAG_SYNC_OUT | AF_UPPERBODY) TASK_PAUSE(null,100) //TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1126.3621, -1593.1338, 3.3364>>,pedmove_run) TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1130.3208, -1589.8260, 3.3891>>,pedmove_run,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,39) TASK_CLIMB(null,TRUE) endseq(ped[PED_BUDDY].id) actions[thisI].intB = 0 actions[thisI].flag ++ ENDIF ENDIF BREAK CASE 5 IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) IF IS_ENTITY_PLAYING_ANIM(ped[PED_BUDDY].id,"reaction@points@","loop_0") IF GET_ENTITY_HEADING(ped[PED_BUDDY].id) < 20 OR GET_ENTITY_HEADING(ped[PED_BUDDY].id) > 40 STOP_ANIM_TASK(ped[PED_BUDDY].id,"reaction@points@","loop_0",FAST_BLEND_OUT) ENDIF ENDIF ENDIF IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intA) OR (IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intA) AND GET_SYNCHRONIZED_SCENE_PHASE(actions[thisI].intA) >= 0.811) IF IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intA) STOP_SYNCHRONIZED_ENTITY_ANIM(vehicle[VEH_OBJECTIVE].id,INSTANT_BLEND_IN,true) ENDIF IF NOT IS_PED_INJURED(ped[ped_bikeman].id) CLEAR_PED_TASKS_IMMEDIATELY(ped[ped_bikeman].id) SET_PED_INTO_VEHICLE(ped[ped_bikeman].id,vehicle[VEH_OBJECTIVE].id) SET_ENTITY_HEADING(vehicle[VEH_OBJECTIVE].id,302) SET_VEHICLE_FORWARD_SPEED(vehicle[VEH_OBJECTIVE].id,10.0) ENDIF actions[thisI].completed = TRUe ENDIF ENDIF IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) IF NOT IS_PED_INJURED(ped[ped_bikeman].id) IF NOT IS_PED_IN_ANY_VEHICLE(ped[ped_bikeman].id,TRUE) IF GET_SCRIPT_TASK_STATUS(ped[ped_bikeman].id,SCRIPT_TASK_SYNCHRONIZED_SCENE) != PERFORMING_TASK IF IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intA) STOP_SYNCHRONIZED_ENTITY_ANIM(vehicle[VEH_OBJECTIVE].id,2,true) actions[thisI].completed = TRUe ENDIF ENDIF ENDIF ELSE IF IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intA) STOP_SYNCHRONIZED_ENTITY_ANIM(vehicle[VEH_OBJECTIVE].id,2,true) actions[thisI].completed = TRUe ENDIF ENDIF ENDIF IF actions[thisI].intB = 0 IF IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intA) IF GET_SYNCHRONIZED_SCENE_PHASE(actions[thisI].intA) >= bikerNoiseTime PLAY_SOUND_FROM_COORD(-1, "Biker_Ride_Off",<<-1130.7015, -1584.5844, 4.1201>>, "ARM_2_REPO_SOUNDS") actions[thisI].intB = 1 ENDIF ENDIF ENDIF BREAK ENDSWITCH //STOP LAMAR FROM BURNING IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) STOP_ENTITY_FIRE(ped[PED_BUDDY].id) SET_ENTITY_PROOFS(ped[PED_BUDDY].id,false,true,false,false,false) ENDIF IF NOT IS_PED_INJURED(PLAYER_PED_ID()) STOP_ENTITY_FIRE(PLAYER_PED_ID()) ENDIF //STOP_FIRE_IN_RANGE(<<-1104.916748,-1628.079712,3.086158>>,1.938) //STOP_FIRE_IN_RANGE(<< -1106.8345, -1625.8141, 3.5015 >>,1.5) //STOP_FIRE_IN_RANGE(<<-1109.099487,-1624.477783,3.086158>>,1.5) ENDPROC PROC ACTION(int thisI, enumActions thisAction, enumACTIONplayout playout=PLAYOUT_ON_TRIGGER, andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3 = COND_NULL, andorEnum andOr4=cIGNORE, enumconditions cond4 = COND_NULL, andorEnum andOr5=cIGNORE, enumconditions cond5 = COND_NULL) #if IS_DEBUG_BUILD IF thisI >= MAX_ACTIONS SCRIPT_ASSERT("SCRIPT: INCREASE MAX_ACTIONS") ENDIF #endif IF actions[thisI].action != thisAction OR actions[thisI].active = FALSE actions[thisI].action = thisAction actions[thisI].active = TRUE actions[thisI].completed = FALSE actions[thisI].flag = 0 actions[thisI].needsCleanup = FALSE actions[thisI].intA = 0 actions[thisI].intB = 0 actions[thisI].floatA = 0 ENDIF bool actionConditionCheck IF actions[thisI].ongoing AND playout = PLAYOUT_ON_TRIGGER actionConditionCheck = TRUE ELSE actionConditionCheck = checkANDOR(andOr1,cond1,andOr2,cond2,andOr3,cond3,andOr4,cond4,andOr5,cond5) ENDIF IF playout = PLAYOUT_ON_COND AND NOT actionConditionCheck actions[thisI].ongoing = FALSE ENDIF IF NOT bMakeMissionFail OR actions[thisI].flag = CLEANUP IF actions[thisI].completed = FALSE OR actions[thisI].flag = CLEANUP IF actionConditionCheck = TRUE IF NOT actions[thisI].ongoing actions[thisI].ongoing = TRUE ENDIF SWITCH actions[thisI].action //drive to alley CASE ACT_LAMAR_FOLLOWS_PLAYER IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF NOT IS_PED_IN_GROUP(ped[ped_buddy].id) IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_buddy].id) < 50.0 SET_PED_AS_GROUP_MEMBER(ped[ped_buddy].id,GET_PED_GROUP_INDEX(player_ped_id())) SET_GROUP_SEPARATION_RANGE(GET_PED_GROUP_INDEX(player_ped_id()),100.0) ENDIF ENDIF ENDIF BREAK CASE ACT_SET_GARAGE_DOORS_LOCKED IF IS_DOOR_REGISTERED_WITH_SYSTEM(iGarHash) DOOR_SYSTEM_SET_OPEN_RATIO(iGarHash,0.0,false,true) DOOR_SYSTEM_SET_DOOR_STATE(iGarHash,DOORSTATE_FORCE_LOCKED_THIS_FRAME,false,true) actions[thisI].completed = FALSE ENDIF BREAK CASE ACT_STOP_FOLLOWING_LAMAR_DOWN_ALLEY actions[1].ongoing = FALSE //ACT_LAMAR_FOLLOWS_PLAYER IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_PED_IN_GROUP(ped[ped_buddy].id) REMOVE_PED_FROM_GROUP(ped[ped_buddy].id) ENDIF ENDIF BREAK CASE ACT_LAMAR_RUNS_UP_TO_CAR SWITCH actions[thisI].flag CASE 0 IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) // IF IS_ENTITY_IN_ANGLED_AREA( ped[ped_buddy].id, <<-20.603750,-1084.057983,24.318178>>, <<-35.182205,-1078.617188,29.653179>>, 10.375000) TASK_ENTER_VEHICLE(ped[ped_buddy].id,vehicle[VEH_PLAYER].id) actions[thisI].flag++ // ENDIF ENDIF ELSE actions[thisI].completed = TRUE ENDIF BREAK CASE 1 IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) AND NOT IS_PED_INJURED(ped[PED_BUDDY].id) IF IS_PED_IN_VEHICLE(ped[ped_buddy].id,vehicle[VEH_PLAYER].id) actions[thisI].completed = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK CASE ACT_GET_PLAYER_CAR IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) IF GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID()) != vehicle[veh_player].id IF DOES_ENTITY_EXIST(vehicle[veh_player].id) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[veh_player].id) ENDIF vehicle[veh_player].id = GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID()) SET_ENTITY_AS_MISSION_ENTITY(vehicle[veh_player].id,TRUE,TRUE) ENDIF ENDIF BREAK CASE ACT_AUDIO_SCENE_ARM_2_DRIVE_TO_ALLEY IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) START_AUDIO_SCENE("ARM_2_DRIVE_TO_ALLEY") actions[thisI].completed = TRUE ENDIF BREAK CASE ACT_SET_GARAGE_VEHICLES_AS_NO_LONGER_NEEDED int ij REPEAT COUNT_OF(parkedCar) ij IF DOES_ENTITY_EXIST(parkedCar[ij]) IF IS_VEHICLE_DRIVEABLE(parkedCar[ij]) IF vehicle[VEH_PLAYER].id != parkedCar[ij] SET_VEHICLE_AS_NO_LONGER_NEEDED(parkedCar[ij]) ENDIF ENDIF ENDIF ENDREPEAT SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-43.781937,-1098.931885,25.859827>>-<<9.750000,6.750000,2.562500>>,<<-43.781937,-1098.931885,25.859827>>+<<9.750000,6.750000,2.562500>>,TRUE) actions[thisI].completed = TRUE BREAK CASE ACT_RELEASE_MISSION_TRIGGER MISSION_FLOW_RELEASE_TRIGGER_SCENE_ASSETS(SP_MISSION_ARMENIAN_2) actions[thisI].completed = TRUE BREAK CASE ACT_SPAWN_FAIL_RESPONSE_ELSALVS SWITCH actions[thisI].flag CASE 0 float fRange float fClosest int iClosest,iScan fClosest = 1000 REPEAT COUNT_OF(elsalUnseenSpawn) iScan IF NOT IS_SPHERE_VISIBLE(elsalUnseenSpawn[iScan],2) fRange = GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),elsalUnseenSpawn[iScan]) IF fRange < fclosest AND fRange > 10 fclosest = fRange iClosest = iScan ENDIF ENDIF ENDREPEAT IF fClosest != 1000 create_shootout_ped(ELSAL_ALLEYEND_LEFTA,elsalUnseenSpawn[iClosest]-<<0.5,0.5,0>>,GET_HEADING_FROM_COORDS(elsalUnseenSpawn[iClosest],get_entity_coords(player_ped_id())),WEAPONTYPE_PISTOL) create_shootout_ped(ELSAL_ALLEYEND_LEFTB,elsalUnseenSpawn[iClosest]-<<0.5,0.5,0>>,GET_HEADING_FROM_COORDS(elsalUnseenSpawn[iClosest],get_entity_coords(player_ped_id())),WEAPONTYPE_PISTOL) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE,GET_PED_RELATIONSHIP_GROUP_HASH(PLAYER_PED_ID()),HASH_FOE_GROUP) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE,HASH_FOE_GROUP,GET_PED_RELATIONSHIP_GROUP_HASH(PLAYER_PED_ID())) SET_PED_TARGET_LOSS_RESPONSE(ped[ELSAL_ALLEYEND_LEFTA].id,TLR_NEVER_LOSE_TARGET) SET_PED_TARGET_LOSS_RESPONSE(ped[ELSAL_ALLEYEND_LEFTB].id,TLR_NEVER_LOSE_TARGET) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ELSAL_ALLEYEND_LEFTA].id,150) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ELSAL_ALLEYEND_LEFTB].id,150) SET_COMBAT_FLOAT(ped[ELSAL_ALLEYEND_LEFTA].id,CCF_MAX_SHOOTING_DISTANCE,6) SET_COMBAT_FLOAT(ped[ELSAL_ALLEYEND_LEFTA].id,CCF_MIN_DISTANCE_TO_TARGET,5) SET_COMBAT_FLOAT(ped[ELSAL_ALLEYEND_LEFTB].id,CCF_MAX_SHOOTING_DISTANCE,6) SET_COMBAT_FLOAT(ped[ELSAL_ALLEYEND_LEFTB].id,CCF_MIN_DISTANCE_TO_TARGET,5) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_ALLEYEND_LEFTA].id,CA_CAN_CHARGE,TRUE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_ALLEYEND_LEFTB].id,CA_CAN_CHARGE,TRUE) if does_blip_exist(MISSION_BLIP) REMOVE_BLIP(MISSION_BLIP) ENDIF actions[thisI].flag++ actions[thisI].intA = GET_GAME_TIMER() + 1500 ELSE actions[thisI].flag++ ENDIF BREAK CASE 1 IF GET_GAME_TIMER() > actions[thisI].intA IF NOT IS_PED_INJURED(ped[ped_buddy].id) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_buddy].id,FALSE) GIVE_WEAPON_TO_PED(ped[PED_BUDDY].id,WEAPONTYPE_MICROSMG ,2000,true) CLEAR_PED_TASKS(ped[ped_buddy].id) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ped_buddy].id,150) actions[thisI].flag++ actions[thisI].intA = GET_GAME_TIMER() + 1500 ENDIF ENDIf BREAK CASE 2 IF GET_GAME_TIMER() > actions[thisI].intA IF NOT IS_PED_INJURED(ped[ELSAL_ALLEYEND_LEFTA].id) SET_COMBAT_FLOAT(ped[ELSAL_ALLEYEND_LEFTA].id,CCF_MAX_SHOOTING_DISTANCE,100) ENDIF IF NOT IS_PED_INJURED(ped[ELSAL_ALLEYEND_LEFTB].id) SET_COMBAT_FLOAT(ped[ELSAL_ALLEYEND_LEFTB].id,CCF_MAX_SHOOTING_DISTANCE,100) ENDIF actions[thisI].completed = TRUE ENDIF BREAK ENDSWITCH BREAK CASE ACT_GPS_CUSTOM_ROUTE SWITCH actions[thisI].flag CASE 0 IF DOES_BLIP_EXIST(mission_blip) vector vCoord vCoord = GET_BLIP_INFO_ID_COORD(mission_blip) IF ARE_VECTORS_EQUAL(vCoord,<<-1141.0928, -1576.7594, 3.3048>>) IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<-39.159054,-1078.176025,23.773207>>, <<-3.364391,-1091.280762,40.839222>>, 23.812500) START_GPS_MULTI_ROUTE(HUD_COLOUR_OBJECTIVE_ROUTE, TRUE) ADD_POINT_TO_GPS_CUSTOM_ROUTE(<<-13.4450, -1090.9459, 25.6721>>) ADD_POINT_TO_GPS_CUSTOM_ROUTE(<< -23.5158, -1119.8385, 25.8719 >>) ADD_POINT_TO_GPS_CUSTOM_ROUTE(<<-1141.0928, -1576.7594, 3.3048>>) SET_GPS_MULTI_ROUTE_RENDER(TRUE) SET_BLIP_ROUTE(mission_blip, false) actions[thisI].flag++ ELSE actions[thisI].flag++ ENDIF ENDIF ENDIF BREAK CASE 1 IF DOES_BLIP_EXIST(mission_blip) vector vCoord vCoord = GET_BLIP_INFO_ID_COORD(mission_blip) IF NOT ARE_VECTORS_EQUAL(vCoord,<<-1141.0928, -1576.7594, 3.3048>>) actions[thisI].flag = 0 ELSE IF not IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<-39.159054,-1078.176025,23.773207>>, <<-3.364391,-1091.280762,40.839222>>, 23.812500) SET_GPS_MULTI_ROUTE_RENDER(FALSE) SET_BLIP_ROUTE(mission_blip, true) actions[thisI].completed = TRUE ENDIF ENDIF ENDIF BREAK ENDSWITCH BREAK CASE ACT_SIMEON switch actions[thisi].flag case 0 IF IS_ASSET_READY(ASSET_SIMEON) IF NOT DOES_ENTITY_EXIST(ped[ped_simeon].id) ped[ped_simeon].id = CREATE_PED(PEDTYPE_MISSION,IG_SIEMONYETARIAN,<<-31.4785, -1107.0975, 25.4223>>, 7.5788 ) SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_simeon].id) SET_PED_COMPONENT_VARIATION(ped[ped_simeon].id, INT_TO_ENUM(PED_COMPONENT,0), 0, 0, 0) //(head) SET_PED_COMPONENT_VARIATION(ped[ped_simeon].id, INT_TO_ENUM(PED_COMPONENT,3), 0, 1, 0) //(uppr) SET_PED_COMPONENT_VARIATION(ped[ped_simeon].id, INT_TO_ENUM(PED_COMPONENT,4), 0, 0, 0) //(lowr) SET_PED_COMPONENT_VARIATION(ped[ped_simeon].id, INT_TO_ENUM(PED_COMPONENT,5), 0, 0, 0) //(hand) SET_PED_COMPONENT_VARIATION(ped[ped_simeon].id, INT_TO_ENUM(PED_COMPONENT,7), 0, 0, 0) //(teef) ENDIF IF NOT IS_PED_INJURED(ped[ped_simeon].id) //ped[ped_simeon].id = CREATE_PED(PEDTYPE_MISSION,IG_SIEMONYETARIAN,<<-31.6922, -1106.5552, 25.4223>>, 233.5788 ) SET_ENTITY_COORDS(ped[ped_simeon].id,<<-31.4785, -1107.0975, 25.4223>>) SET_ENTITY_HEADING(ped[ped_simeon].id,7) TASK_START_SCENARIO_IN_PLACE(ped[ped_simeon].id,"WORLD_HUMAN_STAND_MOBILE") // TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(ped[ped_simeon].id,<<-31.1684, -1107.2993, 25.4223>>,3.0) OBJECT_INDEX objOfficeDoor IF DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS(<<-31.72,-1101.85,26.57>>, 1.0, v_ilev_fib_door1) objOfficeDoor = GET_CLOSEST_OBJECT_OF_TYPE(<<-31.72,-1101.85,26.57>>, 1.0, v_ilev_fib_door1, FALSE) IF objOfficeDoor != NULL IF DOES_ENTITY_HAVE_DRAWABLE(objOfficeDoor) STOP_SYNCHRONIZED_MAP_ENTITY_ANIM(<<-31.72,-1101.85,26.57>>,1.0,v_ilev_fib_door1,INSTANT_BLEND_OUT) ENDIF ENDIF ENDIF //Commented out as the door seems to close faster by doing nothing, with this uncommented the player could run into the room before it closes. //DOOR_SYSTEM_SET_DOOR_STATE(ENUM_TO_INT(DOORHASH_ARM2_SIMEON_OFFICE), DOORSTATE_FORCE_CLOSED_THIS_FRAME, DEFAULT, TRUE) actions[thisi].flag++ ENDIF ENDIF BREAK CASE 1 IF ABSF(DOOR_SYSTEM_GET_OPEN_RATIO(ENUM_TO_INT(DOORHASH_ARM2_SIMEON_OFFICE))) < 0.05 AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-32.476147,-1104.298706,25.443802>>, <<-27.751446,-1106.000122,27.922344>>, 6.000000) SET_DOOR_STATE(DOORNAME_ARM2_SIMEON_OFFICE, DOORSTATE_FORCE_LOCKED_UNTIL_OUT_OF_AREA) actions[thisi].flag++ ENDIF BREAK CASE 2 IF GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_simeon].id,player_ped_id()) > 200 IF DOES_ENTITY_EXIST(ped[ped_simeon].id) DELETE_PED(ped[ped_simeon].id) SET_MODEL_AS_NO_LONGER_NEEDED(IG_SIEMONYETARIAN) actions[thisi].completed = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK CASE ACT_SET_PLAYER_THROUGH_DRIVER_DOOR SET_PED_RESET_FLAG(player_ped_id(),PRF_ForcePlayerToEnterVehicleThroughDirectDoorOnly,TRUE) IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) IF missionProgress = STAGE_CHASE_AFTER_BIKE SET_PED_RESET_FLAG(ped[PED_BUDDY].id,PRF_ForcePlayerToEnterVehicleThroughDirectDoorOnly,TRUE) ENDIF ENDIF // actions[thisI].completed = TRUE BREAK CASE ACT_TURN_ON_CAR_RADIO if IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) IF IS_PED_IN_VEHICLE(player_ped_id(),vehicle[VEH_PLAYER].id) SET_VEHICLE_RADIO_ENABLED(vehicle[VEH_PLAYER].id,TRUE) actions[thisI].completed = TRUE ENDIF ENDIF BREAK CASE ACT_LOCK_SHOWROOM_CARS switch actions[thisI].flag CASE 0 intGarage = GET_INTERIOR_AT_COORDS_WITH_TYPE(<<-41.3822, -1101.6371, 26.6294>>, "v_carshowroom") IF IS_INTERIOR_READY(intGarage) actions[thisI].flag++ ENDIF BREAK CASE 1 IF intGarage <> NULL IF GET_INTERIOR_FROM_ENTITY(PLAYER_PED_ID()) = intGarage vehicle_index aVeh IF NOT IS_BIT_SET(actions[thisI].intA,0) aVeh = GET_CLOSEST_VEHICLE(<<-36.5853, -1101.4738, 26.3444>>, 5.0, BJXL, VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES) IF IS_VEHICLE_DRIVEABLE(aVeh) SET_VEHICLE_DOORS_LOCKED(aVeh, VEHICLELOCK_CANNOT_ENTER) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(aVeh, FALSE) SET_BIT(actions[thisI].intA,0) ENDIF ENDIF IF NOT IS_BIT_SET(actions[thisI].intA,1) aVeh = GET_CLOSEST_VEHICLE(<<-46.2594, -1097.8386, 26.3444>>, 5.0, BJXL, VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES) IF IS_VEHICLE_DRIVEABLE(aVeh) SET_VEHICLE_DOORS_LOCKED(aVeh, VEHICLELOCK_CANNOT_ENTER) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(aVeh, FALSE) SET_BIT(actions[thisI].intA,1) ENDIF ENDIF IF NOT IS_BIT_SET(actions[thisI].intA,2) aVeh = GET_CLOSEST_VEHICLE(<<-50.0800, -1094.4625, 26.0671>>, 5.0, TAILGATER, VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES) IF IS_VEHICLE_DRIVEABLE(aVeh) SET_VEHICLE_DOORS_LOCKED(aVeh, VEHICLELOCK_CANNOT_ENTER) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(aVeh, FALSE) SET_BIT(actions[thisI].intA,2) ENDIF ENDIF IF NOT IS_BIT_SET(actions[thisI].intA,3) aVeh = GET_CLOSEST_VEHICLE(<<-37.4128, -1088.5618, 26.0671>>, 5.0, TAILGATER, VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES) IF IS_VEHICLE_DRIVEABLE(aVeh) SET_VEHICLE_DOORS_LOCKED(aVeh, VEHICLELOCK_CANNOT_ENTER) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(aVeh, FALSE) SET_BIT(actions[thisI].intA,3) ENDIF ENDIF IF NOT IS_BIT_SET(actions[thisI].intA,4) aVeh = GET_CLOSEST_VEHICLE(<<-41.4259, -1099.6481, 26.0534>>, 5.0, TAILGATER, VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES) IF IS_VEHICLE_DRIVEABLE(aVeh) SET_VEHICLE_DOORS_LOCKED(aVeh, VEHICLELOCK_CANNOT_ENTER) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(aVeh, FALSE) SET_BIT(actions[thisI].intA,4) ENDIF ENDIF ENDIF ENDIF BREAK ENDSWITCH BREAK CASE ACT_BUDDY_HEAD_TRACKING HANDLE_BUDDY_HEAD_TRACK_WHILE_ENTERING_VEHICLE() BREAK //advance down alley CASE action_player_exits_car IF IS_PLAYER_PLAYING(PLAYER_ID()) seq() TASK_LEAVE_ANY_VEHICLE(null) TASK_LOOK_AT_COORD(null,<< -1129.6185, -1588.3438, 4.7752 >>,5000) ped_index aPed aped = player_ped_id() endseq(aPed) actions[thisI].completed = TRUE REPLAY_RECORD_BACK_FOR_TIME(2.0, 2.0, REPLAY_IMPORTANCE_HIGHEST) ENDIF BREAK CASE ACT_LEMAR_EXITS_CAR TASK_LEAVE_ANY_VEHICLE(ped[PED_BUDDY].id) CANCEL_BUDDY_PERMANENT_HEAD_TRACK(ped[ped_buddy].id) actions[thisi].completed = TRUE BREAK CASE ACTION_LEMAR_APPROACHES_GATE if not IS_PED_INJURED(ped[PED_BUDDY].id) IF NOT IS_PED_IN_ANY_VEHICLE(ped[PED_BUDDY].id) bool bLeftBlocked,bRightBlocked IF NOT CHECK_AREA_NEAR_TO_PED_FREE_OF_CARS(ped[PED_BUDDY].id,<<-1128.192383,-1587.600464,3.266370>>, <<-1128.882080,-1584.653320,5.953067>>, 1.250000) bLeftBlocked = TRUE ENDIF IF NOT CHECK_AREA_NEAR_TO_PED_FREE_OF_CARS(ped[PED_BUDDY].id,<<-1131.292603,-1590.194092,3.252203>>, <<-1134.276123,-1587.548950,5.917865>>, 1.250000) bRightBlocked = TRUE ENDIF IF bLeftBlocked OR bRightBlocked SET_CONDITION_STATE(COND_CAR_BLOCKING_GATE,TRUE) ELSE SET_CONDITION_STATE(COND_CAR_BLOCKING_GATE,FALSE) ENDIF switch actions[thisi].flag CASE 0 // IF CHECK_AREA_NEAR_TO_PED_FREE_OF_CARS(ped[PED_BUDDY].id,<<-1133.036621,-1583.802734,2.556583>>, <<-1129.521118,-1588.629517,6.842000>>, 5.125000) IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[PED_BUDDY].id) > 1.5 // IF CHECK_AREA_NEAR_TO_PED_FREE_OF_CARS(ped[PED_BUDDY].id,<<-1128.192383,-1587.600464,3.266370>>, <<-1128.882080,-1584.653320,5.953067>>, 1.250000) //IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-1128.4171, -1587.4418,4.3875>>) > 1.0 IF NOT IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1129.458496,-1585.962769,3.079151>>, <<-1125.516968,-1591.643921,7.022579>>, 3.062500) AND NOT bLeftBlocked //TASK_FOLLOW_NAV_MESH_TO_COORD(ped[PED_BUDDY].id,<< -1131.3984, -1588.9161, 4.547 >>,pedmove_walk,DEFAULT_TIME_BEFORE_WARP,0.2,ENAV_DEFAULT,221) TASK_FOLLOW_NAV_MESH_TO_COORD(ped[PED_BUDDY].id,<<-1128.4171, -1587.4418, 3.3875>>,pedmove_walk,DEFAULT_TIME_BEFORE_WARP,0.2,ENAV_DEFAULT,221) actions[thisi].flag = 2 ELSE //IF CHECK_AREA_NEAR_TO_PED_FREE_OF_CARS(ped[PED_BUDDY].id,<<-1131.292603,-1590.194092,3.252203>>, <<-1134.276123,-1587.548950,5.917865>>, 1.250000) IF NOT IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1132.341675,-1587.769165,3.071801>>, <<-1127.967651,-1593.953247,6.907060>>, 3.062500) AND NOT bRightBlocked //IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-1131.7043, -1589.4529, 4.3934>>) > 1.0 TASK_FOLLOW_NAV_MESH_TO_COORD(ped[PED_BUDDY].id,<<-1131.7043, -1589.4529, 3.3934>>,pedmove_walk,DEFAULT_TIME_BEFORE_WARP,0.2,ENAV_DEFAULT,221) actions[thisi].flag = 3 ELSE actions[thisi].flag = 5 TASK_TURN_PED_TO_FACE_ENTITY(ped[PED_BUDDY].id,player_ped_id(),-1) ENDIF ENDIF ELSE IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-1131.7043, -1589.4529, 4.3934>>) > GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-1128.4171, -1587.4418, 3.3875>>) TASK_FOLLOW_NAV_MESH_TO_COORD(ped[PED_BUDDY].id,<<-1131.7043, -1589.4529, 3.3934>>,pedmove_walk,DEFAULT_TIME_BEFORE_WARP,0.2,ENAV_DEFAULT,221) actions[thisi].flag = 3 ELSE actions[thisi].flag = 2 TASK_FOLLOW_NAV_MESH_TO_COORD(ped[PED_BUDDY].id,<<-1128.4171, -1587.4418, 3.3875>>,pedmove_walk,DEFAULT_TIME_BEFORE_WARP,0.2,ENAV_DEFAULT,221) ENDIF ENDIF BREAK CASE 2 FALLTHRU CASE 3 //IF CHECK_AREA_NEAR_TO_PED_FREE_OF_CARS(ped[PED_BUDDY].id,<<-1133.036621,-1583.802734,2.556583>>, <<-1129.521118,-1588.629517,6.842000>>, 5.125000) IF (actions[thisi].flag=2 AND NOT bLeftBlocked AND NOT IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1129.458496,-1585.962769,3.079151>>, <<-1125.516968,-1591.643921,7.022579>>, 3.062500)) OR (actions[thisi].flag=3 AND NOT bRightBlocked AND NOT IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1132.341675,-1587.769165,3.071801>>, <<-1127.967651,-1593.953247,6.907060>>, 3.062500)) if IS_ENTITY_IN_ANGLED_AREA( ped[PED_BUDDY].id, <<-1132.485352,-1590.005127,2.394994>>, <<-1127.201050,-1586.460205,6.384637>>, 1.500000) IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[PED_BUDDY].id) > 1.5 fTemp = ABSF(RESTRICT_HEADING(GET_ENTITY_HEADING(ped[PED_BUDDY].id)-221)) //showFloatOnScreen(0.1,0.1,fTemp) if fTemp < 20.0 TASK_CLIMB(ped[PED_BUDDY].id,FALSE) actions[thisi].flag = 4 ELSE seq() TASK_ACHIEVE_HEADING(null,221) endseq(ped[PED_BUDDY].id) ENDIF ELSE IF GET_SCRIPT_TASK_STATUS(ped[PED_BUDDY].id,script_TASK_FOLLOW_NAV_MESH_TO_COORD) = FINISHED_TASK SET_CONDITION_STATE(COND_PLAYER_BLOCKING_GATE,TRUE) actions[thisi].flag=0 clear_ped_Tasks(ped[PED_BUDDY].id) ENDIF ENDIF ELSE IF GET_SCRIPT_TASK_STATUS(ped[PED_BUDDY].id,script_TASK_FOLLOW_NAV_MESH_TO_COORD) = FINISHED_TASK actions[thisi].flag = 0 ENDIF ENDIF ELSE //player is blocking gate actions[thisi].flag=0 clear_ped_Tasks(ped[PED_BUDDY].id) ENDIF //ELSE // actions[thisi].flag=0 //ENDIF BREAK CASE 4 if GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_CLIMB) = DORMANT_TASK IF NOT IS_CONDITION_TRUE(COND_lemar_climbed_gate) actions[thisi].flag = 0 ELSE actions[thisi].completed = TRUE ENDIF ELSE if GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_CLIMB) = finished_task IF IS_CONDITION_TRUE(COND_lemar_climbed_gate) REPLAY_RECORD_BACK_FOR_TIME(3.0, 6.0, REPLAY_IMPORTANCE_HIGHEST) actions[thisi].completed = TRUE ELSE actions[thisi].flag = 0 ENDIF // TASK_PLAY_ANIM(ped[ped_buddy].id,"missarmenian2","jump_fence_loop_lemar",0.5,0.5,-1,AF_LOOPING) ENDIF ENDIF BREAK CASE 5 IF NOT bleftblocked OR not bRightblocked TASK_FOLLOW_NAV_MESH_TO_COORD(ped[PED_BUDDY].id,<<-1128.4171, -1587.4418, 3.3875>>,pedmove_walk,DEFAULT_TIME_BEFORE_WARP,0.2,ENAV_DEFAULT,221) actions[thisi].flag = 0 ENDIF BREAK ENDSWITCH ENDIF ENDIF BREAK CASE ACTION_LEMAR_WALKS_TOWARDS_BUM IF NOT IS_CONDITION_TRUE(COND_lemar_at_bum) IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) IF NOT IS_ENTITY_IN_AIR(ped[PED_BUDDY].id) seq() //TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1117.73938, -1601.90320, 3.39776>>,PEDMOVE_WALK,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS, ENAV_NO_STOPPING) TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1116.379, -1603.855, 4.439>>,PEDMOVE_WALK,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS, ENAV_NO_STOPPING) //TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1115.41528, -1605.23694, 3.44196>>,PEDMOVE_WALK,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS, ENAV_NO_STOPPING) endseq(ped[PED_BUDDY].id) //cprintln(DEBUG_TREVOR3,"Lemar walks towards bum") actions[thisi].completed = TRUE actions[thisi].flag++ ENDIF ENDIF ELSE actions[thisi].completed = TRUE ENDIF BREAK CASE ACTION_LEMAR_INTERRACTS_WITH_BUM IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) AND NOT IS_PED_INJURED(ped[ped_drunk].id) switch actions[thisi].flag CASE 0 IF NOT IS_ENTITY_ATTACHED(ped[PED_BUDDY].id) AND NOT IS_ENTITY_ATTACHED(ped[ped_drunk].id) // sceneDrunkKick = CREATE_SYNCHRONIZED_SCENE(<< -1112.983, -1606.170, 4.439 >>, << 0.000, 0.000, 173.520 >>) // TASK_SYNCHRONIZED_SCENE(ped[PED_BUDDY].id, sceneDrunkKick, "missarmenian2","drunk_kick_lamardavis", WALK_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_TAG_SYNC_OUT, RBF_NONE, WALK_BLEND_IN) SET_ENTITY_HEADING(ped[PED_BUDDY].id,220) TASK_PLAY_ANIM(ped[PED_BUDDY].id,"missarmenian2","fake_punch_walk_by_lamar",WALK_BLEND_IN,WALK_BLEND_OUT,-1,AF_TAG_SYNC_IN | AF_TAG_SYNC_OUT) TASK_PLAY_ANIM(ped[ped_drunk].id,"missarmenian2","PUNCH_REACTION_&_FALL_DRUNK",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1,AF_NOT_INTERRUPTABLE) // TASK_SYNCHRONIZED_SCENE(ped[ped_drunk].id, sceneDrunkKick, "missarmenian2","drunk_kick_tramp", WALK_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS, RBF_NONE, WALK_BLEND_IN) //SYNCED_SCENE_USE_PHYSICS adding back in or player can walk through anims // SET_PED_MIN_MOVE_BLEND_RATIO(ped[PED_BUDDY].id,1.0) actions[thisi].flag++ ENDIF BREAK CASE 1 SET_PED_MIN_MOVE_BLEND_RATIO(ped[PED_BUDDY].id,1.0) bool bPassed if HAS_ANIM_EVENT_FIRED(ped[PED_BUDDY].id,GET_HASH_KEY("Alternate_Walk_Finished")) bPassed = TRUE cprintln(debug_Trevor3,"passed event hit") ENDIF IF NOT IS_ENTITY_PLAYING_ANIM(ped[PED_BUDDY].id,"missarmenian2","fake_punch_walk_by_lamar") bPassed = TRUE cprintln(debug_Trevor3,"passed anim finished") ENDIF IF bPassed FORCE_PED_MOTION_STATE(ped[PED_BUDDY].id, MS_ON_FOOT_WALK, true, FAUS_DEFAULT ) seq() TASK_FOLLOW_WAYPOINT_RECORDING(null,"arm2",0,EWAYPOINT_START_FROM_CLOSEST_POINT) //TASK_FOLLOW_WAYPOINT_RECORDING(null,"arm2_13",0,EWAYPOINT_START_FROM_CLOSEST_POINT) endseq(ped[ped_buddy].id) actions[thisi].completed = TRUE ENDIF BREAK ENDSWITCH ENDIF BREAK CASE ACTION_LEMAR_IGNORES_BUM_IF_HIT IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) //cprintln(DEBUG_TREVOR3,"Lemar ignores bum") CLEAR_PED_TASKS(ped[PED_BUDDY].id) seq() TASK_FOLLOW_WAYPOINT_RECORDING(null,"arm2",0,EWAYPOINT_START_FROM_CLOSEST_POINT | EWAYPOINT_NAVMESH_BACK_TO_WAYPOINT_IF_LEFT_ROUTE) endseq(ped[ped_buddy].id) actions[thisi].completed = TRUE ENDIF BREAK CASE ACTION_BUM_STAGGERS_FROM_GARAGE switch actions[thisi].flag CASE 0 SET_ASSET_STAGE(ASSETS_STAGE_DRUNK_RUNS_OUT) actions[thisi].flag++ BREAK CASE 1 REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2269366 IF IS_ASSET_STAGE_READY(ASSETS_STAGE_DRUNK_RUNS_OUT) IF HAS_MODEL_LOADED(model_tramp) //cprintln(debug_trevor3,"THE TRAMP MODEL IS LOADED") ELSE //cprintln(debug_trevor3,"WHERE IS THE TRAMP MODEL?") ENDIF //actions[thisi].intA = CREATE_SYNCHRONIZED_SCENE(<< -1108.990, -1602.559, 3.677 >>, << 2.000, 0.000, 2.500 >>) initPedOnFoot(ped_drunk,model_tramp,vTramp,trampHeading,pedrole_no_ai) SET_PED_CONFIG_FLAG(ped[ped_drunk].id,PCF_DontInfluenceWantedLevel,TRUE) actions[thisi].flag++ ENDIF BREAK CASE 2 REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2269366 IF NOT IS_PED_INJURED(ped[ped_drunk].id) IF NOT IS_PED_FALLING(ped[ped_drunk].id) SET_ENTITY_HEADING(ped[ped_drunk].id,trampHeading) SET_PED_CAN_BE_TARGETTED(ped[ped_drunk].id,TRUE) SET_PED_CONFIG_FLAG( ped[ped_drunk].id,PCF_DisableMelee,TRUE) STOP_PED_SPEAKING(ped[ped_drunk].id,TRUE) ////cprintln(DEBUG_TREVOR3,"Start: ", pedStartPosition) seq() TASK_PLAY_ANIM(null,"missarmenian2","exit_garage_drunk") TASK_PLAY_ANIM(null,"missarmenian2","standing_idle_loop_drunk",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_LOOPING) endseq(ped[ped_drunk].id) // TASK_SYNCHRONIZED_SCENE(ped[ped_drunk].id, actions[thisi].intA, "missarmenian2","drunk_exit_garage_intro", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT) actions[thisi].flag++ ENDIF ENDIF BREAK case 3 IF NOT IS_PED_INJURED(ped[ped_drunk].id) IF IS_ENTITY_PLAYING_ANIM(ped[ped_drunk].id,"missarmenian2","exit_garage_drunk") SET_ENTITY_ANIM_CURRENT_TIME( ped[ped_drunk].id,"missarmenian2","exit_garage_drunk",trampPhase) actions[thisi].flag++ //actions[thisi].completed = TRUE ENDIF ENDIF break case 4 IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) AND NOT IS_PED_INJURED(ped[ped_drunk].id) IF IS_ENTITY_PLAYING_ANIM(ped[ped_drunk].id,"missarmenian2","PUNCH_REACTION_&_FALL_DRUNK") //triggered elsewhere //now triggered at same time as Lamar's above //TASK_PLAY_ANIM(ped[ped_drunk].id,"missarmenian2","PUNCH_REACTION_&_FALL_DRUNK",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1,AF_NOT_INTERRUPTABLE) // if HAS_ANIM_EVENT_FIRED(ped[PED_BUDDY].id,GET_HASH_KEY("PUNCHREACT")) // seq() // TASK_PLAY_ANIM(null,"missarmenian2","PUNCH_REACTION_&_FALL_DRUNK",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1,AF_NOT_INTERRUPTABLE) // TASK_PLAY_ANIM(null,"missarmenian2","lying_idle_loop_drunk",NORMAL_BLEND_IN,SLOW_BLEND_OUT,-1,AF_LOOPING) // endseq(ped[ped_drunk].id) actions[thisi].flag++ ENDIF endif break case 5 IF NOT IS_PED_INJURED(ped[ped_drunk].id) IF IS_ENTITY_PLAYING_ANIM(ped[ped_drunk].id,"missarmenian2","PUNCH_REACTION_&_FALL_DRUNK") IF GET_ENTITY_ANIM_CURRENT_TIME(ped[ped_drunk].id,"missarmenian2","PUNCH_REACTION_&_FALL_DRUNK") > 0.155 CLEAR_PED_TASKS(ped[ped_drunk].id) //SET_PED_TO_RAGDOLL(ped[ped_drunk].id,1500,1500,TASK_RELAX,FALSE) SET_HIGH_FALL_TASK(ped[ped_drunk].id,13000,15000,HIGHFALL_TEETER_EDGE) actions[thisi].completed = TRUE ENDIF ENDIF ENDIF //cprintln(DEBUG_TREVOR3,GET_SCRIPT_TASK_STATUS(ped[ped_drunk].id,SCRIPT_TASK_PERFORM_SEQUENCE)) break /* CASE 2 if not IS_PED_INJURED(ped[ped_drunk].id) IF IS_ENTITY_PLAYING_ANIM(ped[ped_drunk].id,"missarmenian2","exit_garage_drunk") IF GET_SYNCHRONIZED_SCENE_PHASE(actions[thisi].intA) = 1.0 if not IS_PED_INJURED(ped[ped_drunk].id) SET_SYNCHRONIZED_SCENE_PHASE(actions[thisi].intA,0.0) SET_SYNCHRONIZED_SCENE_LOOPED(actions[thisi].intA,TRUE) TASK_SYNCHRONIZED_SCENE(ped[ped_drunk].id, actions[thisi].intA, "missarmenian2","drunk_exit_garage_loop", SLOW_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT) actions[thisi].completed = TRUE //don't fail at this point as this event gets called again as a safety for the player z-skipping to a ltarer stage. ENDIF ENDIF ENDIF endif BREAK*/ endswitch BREAK case ACTION_BUM_RETURNS_TO_GARAGE if not IS_PED_INJURED(ped[ped_drunk].id) IF NOT IS_PED_RAGDOLL(ped[ped_drunk].id) // CLEAR_PED_TASKS(ped[ped_drunk].id) Make_Ped_Drunk_Constant(ped[ped_drunk].id) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_drunk].id,TRUE) seq() TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< -1105.9116, -1601.9027, 3.6709 >>,pedmove_walk) TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< -1105.2798, -1601.1309, 3.6709 >>,pedmove_walk) TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< -1106.2308, -1601.9624, 3.6709 >>,pedmove_walk) TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< -1108.1498, -1601.9852, 3.6680 >>,pedmove_walk) TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< -1107.3807, -1603.7518, 3.6879 >>,pedmove_walk) TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< -1104.6519, -1601.9994, 3.6709 >>,pedmove_walk) endseq(ped[ped_drunk].id,TRUE) actions[thisi].completed = TRUE ENDIF endif break CASE ACTION_WAIT_FOR_PLAYER_TO_CLIMB_GATE IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_CONV_ROOT_PLAYING("AR2_BU12") IF GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_PLAY_ANIM) != PERFORMING_TASK TASK_PLAY_ANIM(ped[ped_buddy].id,"MISSARMENIAN2","lamar_impatient_c") ENDIF ELSE TASK_TURN_PED_TO_FACE_ENTITY(ped[ped_buddy].id,player_ped_id()) IF IS_CONDITION_TRUE(COND_PLAYER_IN_ALLEYWAY) IF IS_CONDITION_TRUE(COND_player_interupted_anim) seq() TASK_FOLLOW_WAYPOINT_RECORDING(null,"arm2",0,EWAYPOINT_START_FROM_CLOSEST_POINT | EWAYPOINT_NAVMESH_BACK_TO_WAYPOINT_IF_LEFT_ROUTE) endseq(ped[ped_buddy].id) ELSE seq() TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1117.73938, -1601.90320, 3.39776>>,PEDMOVE_WALK,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS, ENAV_NO_STOPPING) TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1115.41528, -1605.23694, 3.44196>>,PEDMOVE_WALK,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS, ENAV_NO_STOPPING) endseq(ped[PED_BUDDY].id) ENDIF actions[thisi].completed = TRUE ENDIF ENDIF endif BREAK CASE ACTION_VEHICLE_DRIVES_OFF IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_DRIVEOFF].id) SWITCH actions[thisi].flag case 0 SET_ASSET_STAGE(ASSETS_STAGE_CAR_DRIVES_OFF) actions[thisi].flag++ BREAK CASE 1 IF IS_ASSET_STAGE_READY(ASSETS_STAGE_CAR_DRIVES_OFF) IF NOT IS_ENTITY_DEAD(vehicle[VEH_DRIVEOFF].id) if not IS_PED_INJURED(ped[ped_driver].id) AND not IS_PED_INJURED(ped[ELSAL_PASSENGER].id) // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[VEH_DRIVEOFF].id) SET_VEHICLE_LIGHTS(vehicle[VEH_DRIVEOFF].id,FORCE_VEHICLE_LIGHTS_ON) SET_VEHICLE_ENGINE_ON(vehicle[VEH_DRIVEOFF].id,true,true) SET_VEHICLE_RADIO_ENABLED(vehicle[VEH_DRIVEOFF].id,true) SET_VEHICLE_RADIO_LOUD(vehicle[VEH_DRIVEOFF].id,true) UNPAUSE_PLAYBACK_RECORDED_VEHICLE(vehicle[VEH_DRIVEOFF].id) IF not IS_PED_INJURED(ped[ped_driver].id) and not IS_PED_INJURED(ped[ELSAL_PASSENGER].id) TASK_PLAY_ANIM(ped[ped_driver].id,"missarmenian2","car_react_gang_ds",1) TASK_PLAY_ANIM(ped[ELSAL_PASSENGER].id,"missarmenian2","car_react_gang_ps",1) ENDIF START_AUDIO_SCENE("ARM_2_GANG_DRIVE_PAST") SET_VEH_RADIO_STATION(vehicle[VEH_DRIVEOFF].id, "RADIO_03_HIPHOP_NEW") ADD_ENTITY_TO_AUDIO_MIX_GROUP(vehicle[VEH_DRIVEOFF].id,"ARM_2_GANG_CAR_GROUP") set_gate(gate_pending) actions[thisi].flag++ ENDIF ENDIF ENDIF BREAK CASE 2 //move player car if it's blocking gate IF IS_CONDITION_TRUE(COND_CAR_BLOCKING_GATE) IF NOT IS_POINT_VISIBLE(<<-1133.9783, -1581.5763, 5.2445>>,20,150) IF actions[thisi].intA = 0 actions[thisi].intA = GET_GAME_TIMER() + 7000 ELSE IF GET_GAME_TIMER() > actions[thisi].intA IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) SET_ENTITY_COORDS(vehicle[VEH_PLAYER].id,<<-1139.0104, -1575.6481, 3.3153>>) SET_ENTITY_HEADING(vehicle[VEH_PLAYER].id,304) ENDIF ENDIF ENDIF ELSE actions[thisi].intA = 0 ENDIF ENDIF IF NOT IS_ENTITY_DEAD(vehicle[VEH_DRIVEOFF].id) IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_DRIVEOFF].id) IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[VEH_DRIVEOFF].id) if not IS_PED_INJURED(ped[ped_driver].id) TASK_VEHICLE_DRIVE_TO_COORD(ped[ped_driver].id,vehicle[VEH_DRIVEOFF].id,<<-1114.7998, -1567.4254, 3.3492>>,7.0,DRIVINGSTYLE_NORMAL,DUMMY_MODEL_FOR_SCRIPT,DRIVINGMODE_AVOIDCARS,5.0,5) ENDIF actions[thisi].flag++ IF IS_AUDIO_SCENE_ACTIVE("ARM_2_GANG_DRIVE_PAST") STOP_AUDIO_SCENE("ARM_2_GANG_DRIVE_PAST") REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehicle[VEH_DRIVEOFF].id) ENDIF //events[i].active = FALSE ENDIF ENDIF ENDIF BREAK CASE 3 IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_DRIVEOFF].id) if not IS_PED_INJURED(ped[ped_driver].id) IF GET_SCRIPT_TASK_STATUS(ped[ped_driver].id,SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD) != PERFORMING_TASK TASK_VEHICLE_DRIVE_WANDER(ped[ped_driver].id,vehicle[VEH_DRIVEOFF].id,15,DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS) SET_PED_KEEP_TASK(ped[ped_driver].id,true) //SET_VEHICLE_LOD_MULTIPLIER(vehicle[VEH_DRIVEOFF].id, 1) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[VEH_DRIVEOFF].id) SET_PED_AS_NO_LONGER_NEEDED(ped[ped_driver].id) IF NOT IS_PED_INJURED(ped[ELSAL_PASSENGER].id) TASK_PAUSE(ped[ELSAL_PASSENGER].id,-1) SET_PED_KEEP_TASK(ped[ELSAL_PASSENGER].id,true) SET_PED_AS_NO_LONGER_NEEDED(ped[ELSAL_PASSENGER].id) ENDIF actions[thisi].flag++ ENDIF ENDIF ENDIF BREAK ENDSWITCH ENDIF BREAK CASE ACTION_PLAYER_LOOK_ABOUT SWITCH actions[thisi].flag case 0 IF NOT IS_PED_INJURED(ped[ped_buddy].id) and not IS_PED_IN_ANY_VEHICLE(player_ped_id()) TASK_LOOK_AT_ENTITY(player_ped_id(),ped[ped_buddy].id,5000) actions[thisi].flag++ ENDIF BREAK CASE 1 IF IS_CONDITION_TRUE(COND_DIA_BUM_SHOUTS_PLAYED) IF NOT IS_PED_INJURED(ped[ped_drunk].id) TASK_LOOK_AT_ENTITY(player_ped_id(),ped[ped_drunk].id,9000) actions[thisi].flag++ ENDIF ENDIF BREAK CASE 2 IF IS_CONDITION_TRUE(COND_lemar_began_bum_interaction) IF NOT IS_PED_INJURED(ped[ped_drunk].id) TASK_LOOK_AT_ENTITY(player_ped_id(),ped[ped_drunk].id,15000) actions[thisi].flag++ ENDIF ENDIF BREAK CASE 3 IF IS_CONDITION_TRUE(COND_LEMAR_IN_RANGE_OF_CAR) IF NOT IS_PED_INJURED(ped[ped_driver].id) TASK_LOOK_AT_ENTITY(player_ped_id(),ped[ped_driver].id,10000) actions[thisi].flag++ ENDIF ENDIF BREAK ENDSWITCH BREAK CASE ACTION_LEMAR_LOOKS_AT_PASSING_CAR if not IS_PED_INJURED(ped[PED_BUDDY].id) SWITCH actions[thisi].flag case 0 //cprintln(debug_Trevor3,"alternate walk anim") SET_PED_ALTERNATE_WALK_ANIM(ped[PED_BUDDY].id,"missarmenian2","car_react",1,FALSE) actions[thisi].flag++ actions[thisi].intA = GET_GAME_TIMER() + 10000 BREAK CASE 1 if HAS_ANIM_EVENT_FIRED(ped[PED_BUDDY].id,GET_HASH_KEY("Alternate_Walk_Finished")) CLEAR_PED_ALTERNATE_WALK_ANIM(ped[PED_BUDDY].id) ENDIF BREAK ENDSWITCH endif BREAK CASE ACTION_DRUNK_GETS_UP_AFTER_LEMAR_INTERACTION SWITCH actions[thisi].flag case 0 IF NOT IS_PED_INJURED(ped[ped_drunk].id) vector drunkStartPosition vector drunkStartRotation drunkStartPosition = GET_ANIM_INITIAL_OFFSET_POSITION("missarmenian2","drunk_getup",GET_ENTITY_COORDS(ped[ped_drunk].id), << 0.000, 0.000, GET_ENTITY_HEADING(ped[ped_drunk].id) >>, 0.0) drunkStartRotation = GET_ANIM_INITIAL_OFFSET_ROTATION("missarmenian2","drunk_getup",GET_ENTITY_COORDS(ped[ped_drunk].id), << 0.000, 0.000, GET_ENTITY_HEADING(ped[ped_drunk].id) >>, 0.0) sceneDrunkGetup = CREATE_SYNCHRONIZED_SCENE(drunkStartPosition, drunkStartRotation) TASK_SYNCHRONIZED_SCENE(ped[ped_drunk].id, sceneDrunkGetup, "missarmenian2","drunk_getup", SLOW_BLEND_IN, SLOW_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_NONE) actions[thisi].flag++ ENDIF BREAK CASE 1 if IS_SYNCHRONIZED_SCENE_RUNNING(sceneDrunkGetup) if GET_SYNCHRONIZED_SCENE_PHASE(sceneDrunkGetup) >= 1.0 actions[thisi].completed = TRUE ENDIF endif break endswitch BREAK CASE ACTION_VEHICLE_BLOCKED_BY_PLAYER IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_DRIVEOFF].id) SWITCH actions[thisi].flag CASE 0 actions[thisi].floatA = 1.0 actions[thisi].flag++ BREAK CASE 1 actions[thisi].floatA -= TIMESTEP() IF actions[thisi].floatA < 0.0 actions[thisi].floatA = 0.0 actions[thisi].completed = TRUE RESET_ACTION(12,ACTION_VEHICLE_CONTINUES_DRIVING) ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[VEH_DRIVEOFF].id) SET_PLAYBACK_SPEED(vehicle[VEH_DRIVEOFF].id,actions[thisi].floatA) ENDIF BREAK ENDSWITCH ENDIF BREAK CASE ACTION_VEHICLE_CONTINUES_DRIVING IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_DRIVEOFF].id) SWITCH actions[thisi].flag CASE 0 actions[thisi].floatA = 0.0 actions[thisi].flag++ BREAK CASE 1 actions[thisi].floatA += TIMESTEP() IF actions[thisi].floatA >= 1.0 actions[thisi].floatA = 1.0 actions[thisi].completed = TRUE RESET_ACTION(11,ACTION_VEHICLE_BLOCKED_BY_PLAYER) ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[VEH_DRIVEOFF].id) SET_PLAYBACK_SPEED(vehicle[VEH_DRIVEOFF].id,actions[thisi].floatA) ENDIF BREAK ENDSWITCH ENDIF BREAK CASE ACTION_LEMAR_REACTS_TO_PLAYER_BLOCKING_ELSAL IF NOT IS_PED_INJURED(ped[ped_buddy].id) SWITCH actions[thisi].flag CASE 0 CLEAR_PED_ALTERNATE_WALK_ANIM(ped[ped_buddy].id) FORCE_ACTION_STATE(9,ACTION_LEMAR_LOOKS_AT_PASSING_CAR) TASK_TURN_PED_TO_FACE_ENTITY(ped[ped_buddy].id,player_ped_id(),4000) IF IS_CONV_ROOT_PLAYING("move") actions[thisi].flag++ ENDIf IF IS_CONV_ROOT_PLAYING("AR2_BU12") actions[thisi].flag = 3 ENDIF BREAK CASE 1 TASK_PLAY_ANIM(ped[ped_buddy].id,"MISSARMENIAN2","lamar_impatient_c",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_UPPERBODY | AF_SECONDARY) actions[thisi].flag++ BREAK CASE 2 IF IS_CONV_ROOT_PLAYING("AR2_BU12") TASK_FOLLOW_WAYPOINT_RECORDING(ped[ped_buddy].id,"arm2",0,EWAYPOINT_START_FROM_CLOSEST_POINT) actions[thisi].completed = TRUE ENDIF BREAK CASE 3 TASK_FOLLOW_WAYPOINT_RECORDING(ped[ped_buddy].id,"arm2",0,EWAYPOINT_START_FROM_CLOSEST_POINT) actions[thisi].completed = TRUE BREAK ENDSWITCH ENDIF BREAK CASE ACTION_LEMAR_WAITS_FOR_PLAYER //cprintln(debug_Trevor3,enum_to_int(lamarProgress)) SWITCH actions[thisi].flag CASE 0 IF lamarProgress = Lprogress_Advancing_after_bum or lamarProgress = Lprogress_Advancing_after_car or lamarProgress = Lprogress_Advancing_Towards_Bum IF IS_CONDITION_TRUE(COND_PLAYER_TOO_FAR_BEHIND_LEMAR) actions[thisi].flag++ ENDIF ENDIF BREAK CASE 1 IF IS_CONDITION_TRUE(COND_PLAYER_TOO_FAR_BEHIND_LEMAR) IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_TURN_PED_TO_FACE_ENTITY) = PERFORMING_TASK Or GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_TURN_PED_TO_FACE_ENTITY) = DORMANT_TASK Or GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_TURN_PED_TO_FACE_ENTITY) = WAITING_TO_START_TASK TASK_TURN_PED_TO_FACE_ENTITY(ped[ped_buddy].id,player_ped_id(),1000) else CLEAR_PED_TASKS(ped[ped_buddy].id) CLEAR_PED_ALTERNATE_WALK_ANIM(ped[ped_buddy].id) FORCE_ACTION_STATE(9,ACTION_LEMAR_LOOKS_AT_PASSING_CAR) TASK_TURN_PED_TO_FACE_ENTITY(ped[ped_buddy].id,player_ped_id(),1000) ENDIF ENDIF ELSE SWITCH lamarProgress CASE Lprogress_Advancing_Towards_Bum vector vLamar vLamar = GET_ENTITY_COORDS(ped[ped_buddy].id) IF vLamar.y < -1601.90320 seq() TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1115.41528, -1605.23694, 3.44196>>,PEDMOVE_WALK,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS, ENAV_NO_STOPPING) endseq(ped[ped_buddy].id) ELSE seq() TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1117.73938, -1601.90320, 3.39776>>,PEDMOVE_WALK,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS, ENAV_NO_STOPPING) TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1115.41528, -1605.23694, 3.44196>>,PEDMOVE_WALK,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS, ENAV_NO_STOPPING) endseq(ped[PED_BUDDY].id) ENDIF actions[thisi].flag = 0 BREAK CASE Lprogress_Advancing_after_bum FALLTHRU CASE Lprogress_Advancing_after_car seq() TASK_FOLLOW_WAYPOINT_RECORDING(null,"arm2",0,EWAYPOINT_START_FROM_CLOSEST_POINT) endseq(ped[ped_buddy].id) actions[thisi].flag = 0 BREAK ENDSWITCH ENDIF BREAK ENDSWITCH BREAK CASE ACTION_LEMAR_RESUMES_WALK_DOWN_ALLEY IF NOT IS_PED_INJURED(ped[ped_buddy].id) //cprintln(debug_trevor3,"RESUMES_WALK") TASK_FOLLOW_WAYPOINT_RECORDING(ped[ped_buddy].id,"arm2",0,EWAYPOINT_START_FROM_CLOSEST_POINT) actions[thisi].completed = TRUE ENDIF BREAK CASE ACTION_LEMAR_FOLLOWS_PLAYER_AT_GARAGES IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) SWITCH actions[thisi].flag CASE 0 IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1065.348145,-1667.966431,2.260047>>, <<-1074.575439,-1676.186157,6.517583>>, 11.875000) AND NOT IS_PED_IN_ANY_VEHICLE(player_ped_id(),true) SET_PED_AS_GROUP_MEMBER(ped[PED_BUDDY].id,GET_PED_GROUP_INDEX(player_ped_id())) actions[thisi].flag++ ENDIF BREAK CASE 1 IF NOT IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1065.348145,-1667.966431,2.260047>>, <<-1074.575439,-1676.186157,6.517583>>, 11.875000) OR IS_PED_IN_ANY_VEHICLE(player_ped_id(),true) TASK_TURN_PED_TO_FACE_ENTITY(ped[PED_BUDDY].id,player_ped_id(),3000) REMOVE_PED_FROM_GROUP(ped[PED_BUDDY].id) actions[thisi].flag=0 ENDIF BREAK ENDSWITCH ENDIF BREAK CASE ACTION_OPEN_GARAGE_1 SWITCH actions[thisi].flag CASE CLEANUP /* IF NOT IS_ENTITY_DEAD(openGarage) IF IS_ENTITY_PLAYING_ANIM(openGarage,"MISSARMENIAN2","open_garage_door") STOP_ENTITY_ANIM(openGarage,"open_garage_door","MISSARMENIAN2",-1.0) ENDIF ENDIF*/ BREAK CASE 0 //get player to within 1m of garage REQUEST_MODEL(PROP_GAR_DOOR_PLUG) IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id()) SET_PLAYER_CONTROL(player_id(),FALSE,SPC_LEAVE_CAMERA_CONTROL_ON) ped[ped_franklin].id = player_ped_id() seq() TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1067.02, -1665.66, 3.55>>+<<-0.63,-0.78,0>>,pedmove_walk,DEFAULT_TIME_BEFORE_WARP,0.1,ENAV_STOP_EXACTLY | ENAV_DONT_ADJUST_TARGET_POSITION,-55) TASK_SWAP_WEAPON(null,false) TASK_PLAY_ANIM(null,"MISSARMENIAN2","open_garage_franklin",SLOW_BLEND_IN,2) endseq(ped[ped_franklin].id) //openGarage = GET_CLOSEST_OBJECT_OF_TYPE(<<-1067,-1665.61,4.79>>,1.0,PROP_GAR_DOOR_01) actions[thisi].flag++ // ENDIF REQUEST_MODEL(PROP_GAR_DOOR_PLUG) REPLAY_RECORD_BACK_FOR_TIME(3.0, 3.0, REPLAY_IMPORTANCE_HIGH) ENDIF BREAK CASE 1 IF IS_ENTITY_PLAYING_ANIM(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") float animTime animTime = GET_ENTITY_ANIM_CURRENT_TIME(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") animTime /= GET_ENTITY_ANIM_TOTAL_TIME(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") IF animTime < 0 or animTime > 1.0 animTime = 0.0 ENDIF PLAY_ENTITY_ANIM(openGarage,"open_garage_door","MISSARMENIAN2",FAST_BLEND_IN,FALSE,TRUE) SET_ENTITY_COLLISION(openGarage,FALSE) SET_PED_USING_ACTION_MODE(PLAYER_PED_ID(),FALSE) //cprintln(DEBUG_TREVOR3,"PLAY_ENTITY_ANIM") objFakeGarage[0] = create_object(PROP_GAR_DOOR_PLUG,<<-1066.72, -1665.41, 4.5>>) SET_ENTITY_ROTATION(objFakeGarage[0],<<-90.00, 0.00, -55.93>>) SET_ENTITY_VISIBLE(objFakeGarage[0],FALSE) FREEZE_ENTITY_POSITION(objFakeGarage[0],TRUE) REPLAY_RECORD_BACK_FOR_TIME(3.0, 3.0, REPLAY_IMPORTANCE_HIGH) actions[thisi].flag=2 ENDIF BREAK CASE 2 IF IS_ENTITY_PLAYING_ANIM(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") float animTime animTime = GET_ENTITY_ANIM_CURRENT_TIME(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") animTime /= GET_ENTITY_ANIM_TOTAL_TIME(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") IF animTime < 0 or animTime > 1.0 animTime = 0.0 ENDIF IF NOT IS_ENTITY_DEAD(openGarage) IF IS_ENTITY_PLAYING_ANIM(openGarage,"MISSARMENIAN2","open_garage_door") SET_ENTITY_ANIM_CURRENT_TIME(openGarage,"MISSARMENIAN2","open_garage_door",animTime) ENDIF ENDIF actions[thisi].flag=3 ENDIF //SET_ENTITY_ROTATION(openGarage,<<0,0,fZRot>>) break CASE 3 IF NOT IS_ENTITY_DEAD(objFakeGarage[0]) aND NOT IS_ENTITY_DEAD(openGarageb) SET_ENTITY_COORDS(objFakeGarage[0],GET_ENTITY_COORDS(openGarage)) SET_ENTITY_ROTATION(objFakeGarage[0],GET_ENTITY_ROTATION(openGarage)) vector v1,v2 v1 = GET_ENTITY_COORDS(openGarage) v2 = GET_ENTITY_ROTATION(openGarage) cprintln(debug_trevor3,v1," ",v2) ENDIF IF IS_ENTITY_PLAYING_ANIM(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") IF GET_ENTITY_ANIM_CURRENT_TIME(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") > 0.22 PLAY_SOUND_FROM_COORD(-1, "Garage_Open_01", <<-1066.9491, -1665.6501, 4.7981>>, "ARM_2_REPO_SOUNDS") actions[thisi].flag=4 ENDIF ENDIF BREAK CASE 4 // IF NOT IS_ENTITY_DEAD(openGarage) // SET_ENTITY_ROTATION(openGarage,<<0,0,fZRot>>) // ENDIF IF HAS_MODEL_LOADED(PROP_GAR_DOOR_PLUG) IF IS_ENTITY_PLAYING_ANIM(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") IF GET_ENTITY_ANIM_CURRENT_TIME(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") > 0.77 // IF GET_SCRIPT_TASK_STATUS(player_ped_id(),SCRIPT_TASK_PERFORM_SEQUENCE) != PERFORMING_TASK CLEAR_PED_TASKS(player_ped_id()) IF DOES_BLIP_EXIST(garage_1_blip) REMOVE_BLIP(garage_1_blip) ENDIf SET_PLAYER_CONTROL(player_id(),TRUE) TASK_LOOK_AT_COORD(player_ped_id(),<<-1064.0494, -1663.4165, 4.8837>>,3000) IF NOT IS_ENTITY_DEAD(objFakeGarage[0]) SET_ENTITY_COORDS(objFakeGarage[0],<<-1066.72, -1665.41, 5.73>>) SET_ENTITY_ROTATION(objFakeGarage[0],<<-90.00, 0.00, -55.93>>) ENDIF // SET_OBJECT_AS_NO_LONGER_NEEDED(openGarage) iOpenedGarages++ actions[thisi].completed=TRUE ENDIF ENDIF ENDIF BREAK ENDSWITCH BREAK CASE ACTION_OPEN_GARAGE_2 SWITCH actions[thisi].flag CASE CLEANUP /*IF NOT IS_ENTITY_DEAD(openGarageb) IF IS_ENTITY_PLAYING_ANIM(openGarageb,"MISSARMENIAN2","open_garage_door") STOP_ENTITY_ANIM(openGarageb,"open_garage_door","MISSARMENIAN2",-1.0) ENDIF ENDIF*/ BREAK CASE 0 //get player to within 1m of garage IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id()) REQUEST_MODEL(PROP_GAR_DOOR_PLUG) //find nearest point on line to player's current pios SET_PLAYER_CONTROL(player_id(),FALSE,SPC_LEAVE_CAMERA_CONTROL_ON) ped[ped_franklin].id = player_ped_id() seq() TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1064.81, -1668.82, 3.55>>+<<-0.63,-0.78,0>>,pedmove_walk,DEFAULT_TIME_BEFORE_WARP,0.1,ENAV_STOP_EXACTLY | ENAV_DONT_ADJUST_TARGET_POSITION,-55) TASK_SWAP_WEAPON(null,false) TASK_PLAY_ANIM(null,"MISSARMENIAN2","open_garage_franklin",SLOW_BLEND_IN) endseq(ped[ped_franklin].id) REPLAY_RECORD_BACK_FOR_TIME(2.5, 3.5, REPLAY_IMPORTANCE_HIGHEST) actions[thisi].flag++ ENDIF BREAK CASE 1 IF IS_ENTITY_PLAYING_ANIM(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") float animTime animTime = GET_ENTITY_ANIM_CURRENT_TIME(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") animTime /= GET_ENTITY_ANIM_TOTAL_TIME(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") IF animTime < 0 or animTime > 1.0 animTime = 0.0 ENDIF PLAY_ENTITY_ANIM(openGarageb,"open_garage_door","MISSARMENIAN2",FAST_BLEND_IN,FALSE,TRUE) SET_ENTITY_COLLISION(openGarageb,FALSE) SET_PED_USING_ACTION_MODE(PLAYER_PED_ID(),FALSE) actions[thisi].flag=2 ENDIF BREAK CASE 2 IF IS_ENTITY_PLAYING_ANIM(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") float animTime animTime = GET_ENTITY_ANIM_CURRENT_TIME(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") animTime /= GET_ENTITY_ANIM_TOTAL_TIME(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") IF animTime < 0 or animTime > 1.0 animTime = 0.0 ENDIF IF NOT IS_ENTITY_DEAD(openGarageb) IF IS_ENTITY_PLAYING_ANIM(openGarageb,"MISSARMENIAN2","open_garage_door") SET_ENTITY_ANIM_CURRENT_TIME(openGarageb,"MISSARMENIAN2","open_garage_door",animTime) ENDIF ENDIF IF HAS_MODEL_LOADED(PROP_GAR_DOOR_PLUG) objFakeGarage[1] = create_object(PROP_GAR_DOOR_PLUG,<<-1064.45, -1668.56, 4.5>>) SET_ENTITY_ROTATION(objFakeGarage[1],<<-90.00, 0.00, -55.93>>) SET_ENTITY_VISIBLE(objFakeGarage[1],FALSE) FREEZE_ENTITY_POSITION(objFakeGarage[1],TRUE) ENDIF //cprintln(debug_trevor3,animTime) actions[thisi].flag=3 ENDIF break CASE 3 IF NOT IS_ENTITY_DEAD(objFakeGarage[1]) aND NOT IS_ENTITY_DEAD(openGarageb) SET_ENTITY_COORDS(objFakeGarage[1],GET_ENTITY_COORDS(openGarageb)) SET_ENTITY_ROTATION(objFakeGarage[1],GET_ENTITY_ROTATION(openGarageb)) vector v1,v2 v1 = GET_ENTITY_COORDS(openGarageb) v2 = GET_ENTITY_ROTATION(openGarageb) cprintln(debug_trevor3,v1," ",v2) ENDIF IF IS_ENTITY_PLAYING_ANIM(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") IF GET_ENTITY_ANIM_CURRENT_TIME(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") > 0.25 PLAY_SOUND_FROM_COORD(-1, "Garage_Open_02", <<-1064.6320, -1668.9810, 4.8996>>, "ARM_2_REPO_SOUNDS") actions[thisi].flag=4 ENDIF ENDIF BREAK CASE 4 IF IS_ENTITY_PLAYING_ANIM(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") IF GET_ENTITY_ANIM_CURRENT_TIME(player_ped_id(),"MISSARMENIAN2","open_garage_franklin") > 0.77 CLEAR_PED_TASKS(player_ped_id()) IF DOES_BLIP_EXIST(garage_2_blip) REMOVE_BLIP(garage_2_blip) ENDIf SET_PLAYER_CONTROL(player_id(),TRUE) iOpenedGarages++ // SET_OBJECT_AS_NO_LONGER_NEEDED(openGarage) TASK_LOOK_AT_COORD(player_ped_id(),<<-1063.1434, -1667.3312, 4.9339>>,3000) IF NOT IS_ENTITY_DEAD(objFakeGarage[1]) aND NOT IS_ENTITY_DEAD(openGarageb) SET_ENTITY_COORDS(objFakeGarage[1],<<-1064.45, -1668.56, 5.73>>) SET_ENTITY_ROTATION(objFakeGarage[1],<<-90.00, 0.00, -55.93>>) ENDIF // SET_ENTITY_VISIBLE(objFakeGarage[1],FALSE) actions[thisi].completed=TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK CASE ACTION_OPEN_GARAGE_3 IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id()) vector vOut vOut = <<0,0,0>> IF GET_LINE_PLANE_INTERSECT(vOut,<<-1076.16296, -1673.72266, 3.61753>>,<<-1073.06995, -1678.33948, 3.59893>>,NORMALISE_VECTOR(<<1.41,-2,0>>),GET_ENTITY_COORDS(PLAYER_PED_ID())) // IF IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL,INPUT_SCRIPT_RUP) actions[thisi].completed=TRUE // ENDIF ENDIF ENDIF BREAK CASE ACTION_LOCK_GARAGE_3 IF IS_DOOR_REGISTERED_WITH_SYSTEM(iGarHash) DOOR_SYSTEM_SET_OPEN_RATIO(iGarHash,0.0,false,true) DOOR_SYSTEM_SET_DOOR_STATE(iGarHash,DOORSTATE_FORCE_LOCKED_THIS_FRAME,false,true) ENDIF BREAK CASE ACTION_LOCK_OPEN_GARAGE_3 IF IS_DOOR_REGISTERED_WITH_SYSTEM(iGarHash) DOOR_SYSTEM_SET_OPEN_RATIO(iGarHash,1.0,false,true) DOOR_SYSTEM_SET_DOOR_STATE(iGarHash,DOORSTATE_FORCE_LOCKED_THIS_FRAME,false,true) ENDIF BREAK CASE ACTION_BLOOD_DAMAGE IF IS_CUTSCENE_PLAYING() IF GET_CUTSCENE_TIME() > 16757 IF NOT IS_PED_INJURED(dead_ped1) //APPLY_PED_DAMAGE_DECAL(dead_ped1, PDZ_TORSO, 0.426, 0.755, 218.157, 1.0, 1.0, 3, TRUE, "bruise") APPLY_PED_BLOOD_SPECIFIC(dead_ped1, ENUM_TO_INT(PDZ_TORSO), 0.875, 0.758, 279.331, 1.000, 6, 0.00, "BulletLarge") actions[thisi].completed = TRUE //APPLY_PED_DAMAGE_DECAL(dead_ped1, PDZ_TORSO, 0.875, 0.758, 279.331, 1.000, 1.00, 6, TRUE, "Shot_wound") ENDIF ENDIF ENDIF BREAK CASE ACTION_MUSIC_AT_BUM playMusic("ARM2_MISSION_START",false,"ARM2_FIGHT_START") START_AUDIO_SCENE("ARM_2_SEARCH_FOR_BIKE") actions[thisi].completed = TRUE BREAK CASE ACTION_INITIALISE_DRIVEOFF_VEHICLE IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_DRIVEOFF].id) SWITCH actions[thisi].flag CASE 0 IF IS_ASSET_READY(ASSET_REC_DRIVE_AWAY_CAR) START_PLAYBACK_RECORDED_VEHICLE(vehicle[VEH_DRIVEOFF].id,1,"ARM2") actions[thisi].flag++ ENDIF BREAK CASE 1 IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[VEH_DRIVEOFF].id) PAUSE_PLAYBACK_RECORDED_VEHICLE(vehicle[VEH_DRIVEOFF].id) actions[thisi].completed = TRUE ENDIF BREAK ENDSWITCH ENDIF BREAK CASE ACT_UNFREEZE_DRIVEOFF_CAR IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_FLEE].id) SWITCH actions[thisi].flag CASE 0 //IF IS_PED_GETTING_INTO_A_VEHICLE(player_ped_id()) //OR IS_PED_IN_VEHICLE(player_ped_id(),vehicle[VEH_FLEE].id) IF GET_VEHICLE_PED_IS_ENTERING(player_ped_id()) = vehicle[VEH_FLEE].id OR GET_VEHICLE_PED_IS_USING(player_ped_id()) = vehicle[VEH_FLEE].id FREEZE_ENTITY_POSITION(vehicle[VEH_FLEE].id,false) actions[thisi].flag++ ENDIF BREAK CASE 1 IF NOT IS_PED_GETTING_INTO_A_VEHICLE(player_ped_id()) AND NOT IS_PED_IN_VEHICLE(player_ped_id(),vehicle[VEH_FLEE].id) FREEZE_ENTITY_POSITION(vehicle[VEH_FLEE].id,true) actions[thisi].flag=0 ENDIF BREAK endswitch endif BREAK CASE ACT_ADUIO_END_ARM_2_DRIVE_TO_ALLEY IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id()) IF IS_AUDIO_SCENE_ACTIVE("ARM_2_DRIVE_TO_ALLEY") STOP_AUDIO_SCENE("ARM_2_DRIVE_TO_ALLEY") actions[thisi].completed = TRUE ELSE actions[thisi].completed = TRUE ENDIF ENDIF BREAK CASE ACT_DRIVERS_LOOK_AT_PLAYER IF GET_GAME_TIMER() > actions[thisi].intA IF NOT IS_PED_INJURED(ped[ped_driver].id) AND NOT IS_PED_INJURED(ped[ELSAL_PASSENGER].id) IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_driver].id) < 15 TASK_LOOK_AT_ENTITY(ped[ped_driver].id,player_ped_id(),15000) TASK_LOOK_AT_ENTITY(ped[ELSAL_PASSENGER].id,player_ped_id(),15000) actions[thisi].intA = GET_GAME_TIMER() + 15000 ENDIF ENDIF ENDIF BREAK CASE ACTION_UPDATE_LAMAR_PROGRESS SWITCH actions[thisi].flag CASE 0 lamarProgress = Lprogress_Approaching_Gate actions[thisi].flag++ BREAK CASE 1 IF IS_CONDITION_TRUE(COND_lemar_climbed_gate) lamarProgress = Lprogress_Advancing_Towards_Bum actions[thisi].flag++ ENDIF BREAK CASE 2 vector vLamar vLamar = GET_ENTITY_COORDS(ped[ped_buddy].id) IF IS_ENTITY_PLAYING_ANIM(ped[PED_BUDDY].id,"missarmenian2","fake_punch_walk_by_lamar") OR vLamar.y < -1601 OR GET_DIALOGUE_FLAG(4,DIA_LEMAR_TALKS_TO_BUM) > 0 lamarProgress = Lprogress_Interracting_with_bum actions[thisi].flag++ ELSE IF IS_CONDITION_TRUE(COND_player_interupted_anim) actions[thisi].flag = 4 lamarProgress = Lprogress_Advancing_after_bum ENDIF ENDIF BREAK CASE 3 IF IS_CONDITION_TRUE(COND_player_interupted_anim) OR IS_ACTION_COMPLETE(3,ACTION_LEMAR_INTERRACTS_WITH_BUM) actions[thisi].flag = 4 lamarProgress = Lprogress_Advancing_after_bum ENDIF BREAK CASE 4 IF IS_CONDITION_TRUE(COND_CAR_CLOSING_ON_LEMAR) AND NOT IS_CONDITION_TRUE(COND_PLAYER_STOOD_INFRONT_OF_CAR) actions[thisi].flag = 5 lamarProgress = Lprogress_Observing_Car ENDIF BREAK case 5 IF IS_CONDITION_TRUE(COND_PLAYER_STOOD_INFRONT_OF_CAR) OR IS_ACTION_COMPLETE(9,ACTION_LEMAR_LOOKS_AT_PASSING_CAR) actions[thisi].flag = 6 lamarProgress = Lprogress_Advancing_after_car ENDIF break ENDSWITCH BREAK CASE ACT_LAMAR_LOOK_AT_GARAGES_ON_APPROACH IF NOT IS_PED_INJURED(ped[ped_buddy].id) SWITCH actions[thisi].flag CASE 0 TASK_LOOK_AT_COORD(ped[ped_buddy].id,<<-1074.4366, -1674.6985, 5.0856>>,3000) actions[thisi].flag++ actions[thisi].intA = GET_GAME_TIMER() + 3000 BREAK CASE 1 IF GET_GAME_TIMER() > 3000 TASK_LOOK_AT_COORD(ped[ped_buddy].id,<<-1068.4233, -1665.6406, 4.9303>>,3000) actions[thisi].flag++ actions[thisi].intA = GET_GAME_TIMER() + 3000 ENDIF BREAK CASE 2 IF GET_GAME_TIMER() > 3000 actions[thisi].completed = TRUE ENDIF BREAK ENDSWITCH ENDIF BREAK CASE ACT_REDUCE_PLAYER_SPEED bool forcedWalk IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1066.287598,-1675.861694,2.403591>>, <<-1074.153809,-1664.753174,8.428232>>, 13.437500) forcedWalk = TRUE SET_PED_MAX_MOVE_BLEND_RATIO(player_ped_id(),PEDMOVE_WALK) ENDIF // url:bugstar:2001714 - Need to lock the player to a walk here down the alley // Ahead of Lamar in alley during correct stages, force Franklin to walk. IF ENUM_TO_INT(missionProgress) > ENUM_TO_INT(STAGE_DRIVE_TO_ALLEYWAY) AND ENUM_TO_INT(missionProgress) < ENUM_TO_INT(STAGE_DRUG_GARAGE) IF NOT IS_PED_IN_COMBAT(PLAYER_PED_ID()) AND ((NOT IS_PED_INJURED(ped[PED_BUDDY].id) AND IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), GET_ENTITY_COORDS(ped[PED_BUDDY].id, FALSE) - <<0,0,2>>, <<-1064.002686,-1679.902710,7.516632>>, 52.500000))OR bLockedToWalk) SET_PED_MAX_MOVE_BLEND_RATIO(PLAYER_PED_ID(), PEDMOVE_WALK) IF GET_FOLLOW_PED_CAM_VIEW_MODE() = CAM_VIEW_MODE_FIRST_PERSON bLockedToWalk = TRUE ENDIF forcedWalk = TRUE ENDIF ENDIF IF bLockedToWalk // 2105269 - fix jitter on walk FLOAT fLamarDistanceFromEnd fLamarDistanceFromEnd = GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(ped[PED_BUDDY].id), <<-1064.002686,-1679.902710,7.516632>>, FALSE) FLOAT fPlayerDistanceFromEnd fPlayerDistanceFromEnd = GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<-1064.002686,-1679.902710,7.516632>>, FALSE) IF fPlayerDistanceFromEnd > fLamarDistanceFromEnd + 3 OR GET_FOLLOW_PED_CAM_VIEW_MODE() <> CAM_VIEW_MODE_FIRST_PERSON bLockedToWalk = FALSE ENDIF ENDIF IF NOT forcedWalk SET_PED_MAX_MOVE_BLEND_RATIO(player_ped_id(),PEDMOVE_SPRINT) bLockedToWalk = FALSE ENDIF BREAK CASE ACTION_PLAY_IDLES actions[thisi].flag = 2 SWITCH actions[thisi].flag CASE 0 IF NOT IS_PED_INJURED(ped[ped_buddy].id) TASK_GO_STRAIGHT_TO_COORD(ped[PED_BUDDY].id,<< -1074.4803, -1673.2312, 3.4137 >>,pedmove_walk) IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) SET_PED_ALTERNATE_WALK_ANIM(ped[ped_buddy].id,"missarmenian2","LEMAR_INDICATE_GARAGE") ENDIF if does_blip_exist(mission_blip) REMOVE_BLIP(mission_blip) ENDIF mission_blip = CREATE_BLIP_FOR_COORD(<< -1073.5753, -1675.6047, 3.4401 >> ) actions[thisi].flag++ ENDIF BREAK CASE 1 IF GET_SCRIPT_TASK_STATUS(ped[PED_BUDDY].id,SCRIPT_TASK_GO_STRAIGHT_TO_COORD) = FINISHED_TASK actions[thisi].flag++ ENDIF BREAK CASE 2 IF IS_ASSET_READY(ASSET_ANIM_IDLES) IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(),ped[ped_buddy].id) < 5.0 AND NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID(),TRUE) // or not IS_PED_IN_GROUP(ped[ped_buddy].id) if not IS_PED_INJURED(ped[PED_BUDDY].id) IF NOT IS_PED_IN_ANY_VEHICLE(ped[PED_BUDDY].id) AND NOT IS_PED_GETTING_INTO_A_VEHICLE(ped[PED_BUDDY].id) IF IS_PED_STOPPED(ped[PED_BUDDY].id) if not IS_ENTITY_PLAYING_ANIM(ped[PED_BUDDY].id,"missarmenian2","GARAGE_POINT_lemar") play_idles(actions[thisi].intB,actions[thisi].intA) ENDIF ENDIF ENDIF ENDIF ELSE IF GET_SCRIPT_TASK_STATUS(ped[PED_BUDDY].id,SCRIPT_TASK_PLAY_ANIM) = PERFORMING_TASK CLEAR_PED_TASKS(ped[PED_BUDDY].id) ENDIF ENDIF ENDIF BREAK ENDSWITCH BREAK CASE ACT_STOP_LAMAR_ENTERING_PLAYER_CAR IF IS_CONDITION_TRUE(COND_PLAYER_AND_LEMAR_IN_SAME_CAR) actions[thisi].completed = TRUE ELSE if not IS_PED_INJURED(ped[PED_BUDDY].id) CLEAR_PED_TASKS(ped[PED_BUDDY].id) IF IS_PED_IN_ANY_VEHICLE(ped[PED_BUDDY].id) TASK_LEAVE_ANY_VEHICLE(ped[PED_BUDDY].id) ENDIF ENDIF CLEAR_BIT(slocatesData.iLocatesBitSet, BS_BUDDIES_WALK_TO_NEAREST_VEHICLE_AT_START) actions[thisi].completed = TRUE ENDIF BREAK CASE ACTION_LOAD_CUTSCENE SWITCH actions[thisi].flag CASE 0 SET_ASSET_STAGE(ASSETS_STAGE_OPEN_GARAGES) REQUEST_CUTSCENE("Arm_2_mcs_4") actions[thisi].flag++ BREAK CASE 1 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Franklin", PLAYER_PED_ID()) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR",INT_TO_ENUM(PED_COMPONENT,0), 0, 0) //(head) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,1), 0, 0) //(berd) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,2), 2, 0) //(hair) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,3), 2, 0) //(uppr) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,4), 3, 0) //(lowr) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,5), 0, 0) //(hand) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,6), 1, 0) //(feet) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,7), 0, 0) //(teef) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,8), 0, 0) //(accs) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,9), 0, 0) //(task) actions[thisi].completed = TRUE ENDIF BREAK ENDSWITCH BREAK CASE ACTION_SET_STAGE_STUFF // IF NOT IS_PED_INJURED(player_ped_id()) // SET_PED_USING_ACTION_MODE(player_ped_id(),TRUE) // ENDIF //delete bum IF NOT IS_PED_INJURED(ped[ped_drunk].id) DELETE_PED(ped[ped_drunk].id) ENDIF if IS_PLAYER_PLAYING(PLAYER_ID()) SET_WANTED_LEVEL_MULTIPLIER(0.0) SET_MAX_WANTED_LEVEL(0) SET_PLAYER_WANTED_LEVEL(PLAYER_ID(),0) ENDIF IF NOT is_ped_injured(ped[PED_BUDDY].id) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE,GET_PED_RELATIONSHIP_GROUP_HASH(PLAYER_PED_ID()),HASH_FOE_GROUP) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE,HASH_FOE_GROUP,GET_PED_RELATIONSHIP_GROUP_HASH(PLAYER_PED_ID())) SET_PED_ACCURACY(ped[PED_BUDDY].id,15) REMOVE_PED_FROM_GROUP(ped[PED_BUDDY].id) ENDIF if IS_PLAYER_PLAYING(PLAYER_ID()) and not is_ped_injured(ped[PED_BUDDY].id) if IS_PLAYER_PLAYING(PLAYER_ID()) and not is_ped_injured(ped[PED_BUDDY].id) SET_PED_RELATIONSHIP_GROUP_HASH(ped[PED_BUDDY].id,GET_PED_RELATIONSHIP_GROUP_HASH(PLAYER_PED_ID())) ENDIF ENDIF if not is_ped_injured(ped[PED_BUDDY].id) if not DOES_BLIP_EXIST(ped[PED_BUDDY].blip) ped[PED_BUDDY].blip = CREATE_BLIP_FOR_PED(ped[PED_BUDDY].id) ENDIF ENDIF SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_SHOOTING) SET_PED_USING_ACTION_MODE(player_ped_id(),TRUE) PlacementFlags = 0 SET_BIT(PlacementFlags, enum_to_int(PLACEMENT_FLAG_SNAP_TO_GROUND)) SET_BIT(PlacementFlags, enum_to_int(PLACEMENT_FLAG_ORIENT_TO_GROUND)) pickup_shotgun = CREATE_PICKUP(PICKUP_WEAPON_PUMPSHOTGUN,<< -1082.8522, -1651.9196, 3.3987 >>,PlacementFlags,40) // coverPortaloo = ADD_COVER_POINT(<<-1086.276245,-1654.161133,3.68673>>,211.9025,COVUSE_WALLTORIGHT,COVHEIGHT_TOOHIGH,COVARC_120) coverForcedAtWall1 = ADD_COVER_POINT(<<-1071.3256, -1663.0614, 3.4888>>,27,COVUSE_WALLTORIGHT,COVHEIGHT_LOW,COVARC_120,TRUE) coverForcedAtWall2 = ADD_COVER_POINT(<<-1082.3966, -1649.0983, 3.5038>>,27,COVUSE_WALLTORIGHT,COVHEIGHT_LOW,COVARC_120,TRUE) coverForcedAtWall3 = ADD_COVER_POINT(<<-1089.4329, -1639.4565, 3.4724>>,27,COVUSE_WALLTORIGHT,COVHEIGHT_LOW,COVARC_120,TRUE) coverForBackoffPed = ADD_COVER_POINT(<<-1073.5054, -1657.7539, 3.3940>>, 226.1309,COVUSE_WALLTOLEFT,COVHEIGHT_TOOHIGH,COVARC_180,TRUE) coverForcedAtWall4 = ADD_COVER_POINT(<<-1079.18, -1653.95, 3.40>>,27,COVUSE_WALLTORIGHT,COVHEIGHT_LOW,COVARC_120,TRUE) START_AUDIO_SCENE("ARM_2_SHOOTOUT") HANDLE_BUDDY_PERMANENT_HEAD_TRACK(ped[ped_buddy].id) add_Event(events_reset_bricks) actions[thisI].completed = TRUE BREAK CASE ACTION_MAKE_CAR_TYRE_BURST if IS_VEHICLE_DRIVEABLE(vehicle[veh_bison].id) if HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehicle[veh_bison].id,PLAYER_PED_ID()) if GET_ENTITY_HEALTH(vehicle[veh_bison].id) < 950 SET_VEHICLE_TYRE_BURST(vehicle[veh_bison].id,SC_WHEEL_CAR_REAR_RIGHT) actions[thisI].completed = TRUE ENDIF ENDIF ENDIF BREAK CASE ACTION_MAKE_LAMAR_INVINCIBLE SWITCH actions[thisI].flag CASE 0 IF NOT IS_PED_INJURED(ped[ped_buddy].id) SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(ped[ped_buddy].id,TRUE) actions[thisI].intA = GET_GAME_TIMER() + 9000 actions[thisI].flag++ ENDIF BREAK CASE 1 IF GET_GAME_TIMER() > actions[thisI].intA IF NOT IS_PED_INJURED(ped[ped_buddy].id) SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(ped[ped_buddy].id,FALSE) actions[thisI].completed = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK CASE action_make_balcony_destructible SWITCH actions[thisI].flag CASE 0 REQUEST_MODEL(Prop_LD_BalcFnc_02b) actions[thisI].flag = 1 BREAK CASE 1 if HAS_MODEL_LOADED(Prop_LD_BalcFnc_02b) object_index obj_fence //obj_fence = GET_CLOSEST_OBJECT_OF_TYPE(<< -1089.8, -1637.8, 7.3 >>,1.0,Prop_LD_BalcFnc_02a) CREATE_MODEL_HIDE(<< -1089.8, -1637.8, 7.3 >>,1.0,Prop_LD_BalcFnc_02a,TRUE) obj_fence = CREATE_OBJECT_NO_OFFSET(Prop_LD_BalcFnc_02b,<< -1089.83, -1637.81, 7.35 >>) SET_ENTITY_ROTATION(obj_fence,<<0,0,32.65>>) actions[thisI].completed = TRUE /* IF DOES_ENTITY_EXIST(obj_fence) SET_ENTITY_VISIBLE(obj_fence,FALSE) SET_ENTITY_COLLISION(obj_fence,FALSE) vector vCoord vCoord = GET_ENTITY_COORDS(obj_fence) float fAng fAng = GET_ENTITY_HEADING(obj_fence) obj_fence = CREATE_OBJECT(Prop_LD_BalcFnc_02b,vCoord) SET_ENTITY_HEADING(obj_fence,fAng) actions[thisI].completed = TRUE ENDIF*/ // CREATE_MODEL_SWAP(<< -1089.8, -1637.8, 7.3 >>, 2.0, Prop_LD_BalcFnc_02a, Prop_LD_BalcFnc_02b, TRUE) ENDIF BREAK ENDSWITCH BREAK case ACTION_LEMAR_EXITS_GARAGE //Lamar now runs out of the garage in the cutscene SWITCH actions[thisI].flag CASE 0 SET_CURRENT_PED_WEAPON(ped[PED_BUDDY].id,GET_BEST_PED_WEAPON(ped[PED_BUDDY].id)) buddy_cover = ADD_COVER_POINT(<<-1076.6744, -1671.3015, 3.4290>>+<<-0.10, -0.29, 0.03>>,31.0,COVUSE_WALLTOLEFT,COVHEIGHT_LOW,COVARC_120) SET_PED_SPHERE_DEFENSIVE_AREA(ped[PED_BUDDY].id,<<-1076.6666, -1671.3312, 3.4299>> ,2.0) seq() TASK_SEEK_COVER_TO_COVER_POINT(null,buddy_cover,<< -1087.8435, -1645.8905, 3.3987 >>,30000,TRUE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(null,50.0) endseq(ped[PED_BUDDY].id) actions[thisI].completed = TRUE BREAK ENDSWITCH BREAK CASE ACTION_LEMAR_ADVANCES_TO_POST SWITCH actions[thisI].flag CASE 0 IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) REMOVE_COVER_POINT(buddy_cover) buddy_cover = ADD_COVER_POINT(<<-1081.2190, -1667.3441, 3.8438 >>,16.0,COVUSE_WALLTOLEFT,COVHEIGHT_TOOHIGH,COVARC_0TO60) SET_PED_SPHERE_DEFENSIVE_AREA(ped[PED_BUDDY].id,<<-1082.5115, -1666.6372,3.483845>> ,2.437) // SET_PED_CONFIG_FLAG(ped[PED_BUDDY].id,ped_config_flags SET_PED_COMBAT_ATTRIBUTES(ped[PED_BUDDY].id,CA_MOVE_TO_LOCATION_BEFORE_COVER_SEARCH,TRUE) TASK_SEEK_COVER_TO_COVER_POINT(ped[PED_BUDDY].id,buddy_cover,<<-1085.3137, -1653.0310, 4.7843>>,-1,TRUE) actions[thisI].flag++ ENDIF BREAK CASE 1 IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[PED_BUDDY].id,<<-1083.49, -1667.09, 3.71>>) < 2.8 actions[thisI].completed = TRUE ENDIF BREAK /* IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) IF GET_SCRIPT_TASK_STATUS(ped[PED_BUDDY].id,SCRIPT_TASK_ANY) != PERFORMING_TASK // seq() // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,TRUE) // TASK_AIM_GUN_AT_COORD(null,<<-1087.1493, -1646.5332, 4.6620>>,1200) // TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(null,<<-1075.4221, -1674.8333, 3.5807>>,<<-1071.8187, -1664.1731, 4.9062>>,pedmove_walk,false) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,FALSE) TASK_SEEK_COVER_TO_COVER_POINT(ped[PED_BUDDY].id,buddy_cover,<<-1085.3137, -1653.0310, 4.7843>>,-1,TRUE) actions[thisI].flag++ actions[thisI].completed = TRUE ENDIF ENDIF BREAK case 2 break*/ ENDSWITCH BREAK CASE ACTION_LEMAR_ADVANCES_TO_PORTALOO IF IS_CONDITION_FALSE(COND_FIRST_WAVE_DEAD) IF IS_ACTION_COMPLETE(7,ACTION_LEMAR_ADVANCES_TO_POST) IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) SWITCH actions[thisI].flag CASE 0 REMOVE_COVER_POINT(buddy_cover) buddy_cover = ADD_COVER_POINT(<<-1085.27, -1655.59, 3.40>>,16.0,COVUSE_WALLTORIGHT,COVHEIGHT_TOOHIGH,COVARC_300TO0) SET_PED_SPHERE_DEFENSIVE_AREA(ped[PED_BUDDY].id,<<-1084.749878,-1656.765503,3.398659>> ,6) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[PED_BUDDY].id,TRUE) seq() // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,true) // TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1084.0151, -1658.5989, 3.3987>>,pedmove_run) TASK_SEEK_COVER_TO_COVER_POINT(null,buddy_cover,<<-1085.27, -1655.59, 3.40>>,-1,FALSE) TASK_STAY_IN_COVER(null) endseq(ped[PED_BUDDY].id) actions[thisI].flag++ BREAK CASE 1 IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[PED_BUDDY].id,<<-1084.749878,-1656.765503,3.398659>>) < 3.0 IF NOT IS_PED_INJURED(ped[ELSAL_SCAFFOLDA].id) IF DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<-1085.27, -1655.59, 3.40>>) // SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[PED_BUDDY].id,TRUE) actions[thisI].intA = GET_GAME_TIMER() + 1000 ELSE ENDIF // seq() // TASK_SEEK_COVER_TO_COVER_POINT(null,buddy_cover,<< -1087.8435, -1645.8905, 3.3987 >>,-1,FALSE) //TASK_STAY_IN_COVER(null) // endseq(ped[PED_BUDDY].id) ELSE ENDIF actions[thisI].flag++ ENDIF BREAK case 2 // IF IS_PED_IN_COVER(ped[PED_BUDDY].id) IF DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<-1085.27, -1655.59, 3.40>>) // url:bugstar:2113022 - Fixing the 'check entity is alive this frame' assert IS_ENTITY_DEAD(ped[ELSAL_SCAFFOLDA].id) IF (DOES_ENTITY_EXIST(ped[ELSAL_SCAFFOLDA].id) AND HAS_ENTITY_BEEN_DAMAGED_BY_ANY_PED(ped[ELSAL_SCAFFOLDA].id)) OR IS_CONDITION_TRUE(COND_SCAFFOLD_PED_FALLS) OR IS_CONDITION_TRUE(COND_SCAFFOLD_BLOWN) //lamar can still be shot at in cover with the scaffold blown REMOVE_COVER_POINT(buddy_cover) CLEAR_PED_TASKS(ped[PED_BUDDY].id) seq() TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(null,<<-1084.2192, -1657.1465, 3.3987>>,<<-1088.6019, -1655.9978, 6.9797>>,pedmove_walk,false) TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(null,100) endseq(ped[PED_BUDDY].id) FORCE_ACTION_STATE(12,ACTION_LEMAR_REACTS_TO_GUNFIRE) actions[thisI].completed = TRUE ENDIF ELSE SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[PED_BUDDY].id,FALSE) CLEAR_PED_TASKS(ped[PED_BUDDY].id) seq() TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(null,<<-1084.2192, -1657.1465, 3.3987>>,<<-1088.6019, -1655.9978, 6.9797>>,pedmove_walk,false) TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(null,100) endseq(ped[PED_BUDDY].id) FORCE_ACTION_STATE(12,ACTION_LEMAR_REACTS_TO_GUNFIRE) actions[thisI].completed = TRUE ENDIF // ENDIF //IF GET_GAME_TIMER() > actions[thisI].intA //OR IS_PED_IN_COVER(ped[PED_BUDDY].id) //actions[thisI].completed = TRUE //ENDIF break ENDSWITCH ENDIF ENDIF ELSE actions[thisI].completed = TRUE ENDIF BREAK CASE ACTION_LEMAR_DIVERTS_TO_BISON clear_ped_tasks(ped[PED_BUDDY].id) SET_PED_SPHERE_DEFENSIVE_AREA(ped[PED_BUDDY].id,<<-1085.27, -1655.59, 3.40>> ,3.0) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[PED_BUDDY].id,FALSE) actions[thisI].completed = TRUE BREAK CASE ACTION_LEMAR_REACTS_TO_EXPLOSION SWITCH actions[thisI].flag CASE 0 IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[PED_BUDDY].id,<<-1089.20, -1655.05, 3.42>>,false) < 6.375 FORCE_ACTION_STATE(3,ACTION_LEMAR_EXITS_GARAGE,TRUE) FORCE_ACTION_STATE(7,ACTION_LEMAR_ADVANCES_TO_POST,TRUE) FORCE_ACTION_STATE(10,ACTION_LEMAR_ADVANCES_TO_PORTALOO,TRUE) FORCE_ACTION_STATE(12,ACTION_LEMAR_REACTS_TO_GUNFIRE,TRUE) FORCE_ACTION_STATE(13,ACTION_LEMAR_DIVERTS_TO_BISON,TRUE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[PED_BUDDY].id,TRUE) TASK_PLAY_ANIM(ped[PED_BUDDY].id,"missarmenian2lamar_in_cover","lamar_explosion_react",NORMAL_BLEND_IN,-1,-1,AF_FORCE_START | AF_NOT_INTERRUPTABLE) REPLAY_RECORD_BACK_FOR_TIME(3.0, 4.0, REPLAY_IMPORTANCE_HIGHEST) actions[thisI].flag++ ELSE actions[thisI].completed = TRUE ENDIF BREAK CASE 1 IF GET_SCRIPT_TASK_STATUS(ped[PED_BUDDY].id,SCRIPT_TASK_PLAY_ANIM) = FINISHED_TASK OR (GET_SCRIPT_TASK_STATUS(ped[PED_BUDDY].id,SCRIPT_TASK_PLAY_ANIM) = PERFORMING_TASK AND GET_ENTITY_ANIM_CURRENT_TIME(ped[PED_BUDDY].id,"missarmenian2lamar_in_cover","lamar_explosion_react") > 0.78) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[PED_BUDDY].id,FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[PED_BUDDY].id,100) actions[thisI].completed = TRUE ENDIF BREAK ENDSWITCH BREAK CASE ACTION_LEMAR_REACTS_TO_GUNFIRE IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) SWITCH actions[thisI].flag CASE 0 //set_entity_heading(ped[PED_BUDDY].id,GET_ENTITY_HEADING(ped[PED_BUDDY].id)+180) seq() TASK_PLAY_ANIM(null,"missarmenian2lamar_in_cover","lamar_cover_intro",SLOW_BLEND_IN,SLOW_BLEND_OUT) TASK_PLAY_ANIM(null,"missarmenian2lamar_in_cover","lamar_cover_idle_a",SLOW_BLEND_IN,SLOW_BLEND_OUT) task_play_Anim(null,"missarmenian2lamar_in_cover","lamar_cover_loop",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1,AF_LOOPING) endseq(ped[ped_buddy].id) actions[thisI].intA = get_game_timer() + GET_RANDOM_INT_IN_RANGE(800,2800) actions[thisI].intB = get_game_timer() + GET_RANDOM_INT_IN_RANGE(3800,6800) REPLAY_RECORD_BACK_FOR_TIME(3.0, 1.0, REPLAY_IMPORTANCE_HIGHEST) SET_COMBAT_FLOAT(ped[ped_buddy].id,CCF_STRAFE_WHEN_MOVING_CHANCE,1.0) actions[thisI].flag++ BREAK CASE 1 IF GET_GAME_TIMER() > actions[thisI].intA IF IS_ACTION_COMPLETE(14,ACTION_LEMAR_ADVANCES_AFTER_PORTALOO) //task_play_Anim(ped[PED_BUDDY].id,"missarmenian2lamar_in_cover","pinned_r_corner_outro",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS) //clear_ped_tasks(ped[ped_buddy].id) //this causing Lamar to lose his tasks actions[thisI].completed = TRUE ELSE IF IS_CONDITION_FALSE(COND_LEMAR_BEING_SHOT_AT_FROM_SCAFFOLD) IF NOT IS_ACTION_ONGOING(14,ACTION_LEMAR_ADVANCES_AFTER_PORTALOO) IF NOT IS_PED_IN_COVER(ped[ped_buddy].id) OR (IS_PED_IN_COVER(ped[ped_buddy].id) AND GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[ped_buddy].id,<<-1085.27, -1655.59, 3.40>>) > 1.0) IF DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<-1085.27, -1655.59, 3.40>>) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[PED_BUDDY].id,FALSE) //seq() //task_play_Anim(null,"missarmenian2lamar_in_cover","pinned_l_corner_outro",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS) TASK_SEEK_COVER_TO_COVER_POINT(ped[PED_BUDDY].id,buddy_cover,<<-1085.27, -1655.59, 3.40>>,-1,FALSE) ENDIF ENDIF ENDIF actions[thisI].completed = TRUE ENDIF endif ENDIF IF GET_GAME_TIMER() > actions[thisI].intB IF NOT IS_ACTION_ONGOING(14,ACTION_LEMAR_ADVANCES_AFTER_PORTALOO) AND NOT IS_ACTION_COMPLETE(14,ACTION_LEMAR_ADVANCES_AFTER_PORTALOO) seq() IF GET_RANDOM_INT_IN_RANGE(0,2) = 0 TASK_PLAY_ANIM(null,"missarmenian2lamar_in_cover","lamar_cover_idle_a",SLOW_BLEND_IN,SLOW_BLEND_OUT) ELSe TASK_PLAY_ANIM(null,"missarmenian2lamar_in_cover","lamar_cover_idle_b",SLOW_BLEND_IN,SLOW_BLEND_OUT) ENDIF task_play_Anim(null,"missarmenian2lamar_in_cover","lamar_cover_loop",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1,AF_LOOPING) endseq(ped[ped_buddy].id) actions[thisI].intB = get_game_timer() + GET_RANDOM_INT_IN_RANGE(3800,6800) ELSE actions[thisI].completed = TRUE ENDIF ENDIF BREAK ENDSWITCH ENDIF BREAK CASE ACTION_LEMAR_ADVANCES_AFTER_PORTALOO IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) IF NOT IS_ACTION_ONGOING(35,ACTION_LEMAR_REACTS_TO_EXPLOSION) FORCE_ACTION_STATE(3,ACTION_LEMAR_EXITS_GARAGE,TRUE) FORCE_ACTION_STATE(7,ACTION_LEMAR_ADVANCES_TO_POST,TRUE) FORCE_ACTION_STATE(10,ACTION_LEMAR_ADVANCES_TO_PORTALOO,TRUE) FORCE_ACTION_STATE(12,ACTION_LEMAR_REACTS_TO_GUNFIRE,TRUE) FORCE_ACTION_STATE(13,ACTION_LEMAR_DIVERTS_TO_BISON,TRUE) REMOVE_COVER_POINT(buddy_cover) buddy_cover = ADD_COVER_POINT(<<-1086.16, -1651.64, 3.40>>,40.0,COVUSE_WALLTOLEFT,COVHEIGHT_TOOHIGH,COVARC_120) SET_COMBAT_FLOAT(ped[PED_BUDDY].id, CCF_TIME_BETWEEN_BURSTS_IN_COVER, 0.5) SET_COMBAT_FLOAT(ped[PED_BUDDY].id, CCF_TIME_BETWEEN_PEEKS, 1000.0) SET_COMBAT_FLOAT(ped[PED_BUDDY].id, CCF_BLIND_FIRE_CHANCE, 0) SET_PED_SPHERE_DEFENSIVE_AREA(ped[PED_BUDDY].id,<<-1086.11, -1651.80, 3.40>> ,3.0) seq() IF IS_ENTITY_AT_COORD(ped[PED_BUDDY].id, <<-1085.514771,-1656.071411,4.398660>>,<<0.750000,0.812500,1.000000>>) TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,TRUE) TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(null,<<-1084.2192, -1657.1465, 3.3987>>,<<-1087.1493, -1646.5332, 4.6620>>,pedmove_walk,false) ENDIF TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(null,50.0) endseq(ped[PED_BUDDY].id) actions[thisI].completed = TRUE ENDIF ENDIF BREAK CASE ACTION_FORCE_GARAGE //DOOR_SYSTEM_SET_OPEN_RATIO(iGarHash,0.5,false,true) SWITCH actions[thisI].flag CASE 0 IF IS_DOOR_REGISTERED_WITH_SYSTEM(iGarHash) DOOR_SYSTEM_SET_OPEN_RATIO(iGarHash,1.0,false,true) DOOR_SYSTEM_SET_DOOR_STATE(iGarHash,DOORSTATE_FORCE_LOCKED_THIS_FRAME,false,true) actions[thisI].flag++ ENDIF BREAK case 1 IF IS_DOOR_REGISTERED_WITH_SYSTEM(iGarHash) IF DOOR_SYSTEM_GET_OPEN_RATIO(iGarHash) > 0.8 actions[thisI].completed = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK CASE ACTION_ENEMY_BACKS_OFF create_shootout_ped(ELSAL_AT_GARAGE,<< -1075.8479, -1663.6470, 3.3987 >>, 175.1524) SET_PED_SPHERE_DEFENSIVE_AREA(ped[ELSAL_AT_GARAGE].id,<<-1073.720703,-1657.575562,3.401901>> ,3) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_AT_GARAGE].id,CA_JUST_SEEK_COVER,TRUE) seq() TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,true) TASK_SHOOT_AT_COORD(null,<<-1075.5133, -1679.8137, 4.9952>>,1500,FIRING_TYPE_RANDOM_BURSTS) // TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(null,<<-1073.8463, -1656.3380, 3.4286>>,<<-1078.2629, -1678.4562, 3.5754>>,pedmove_run,true) // TASK_SEEK_COVER_TO_COORDS(null,<<-1073.4315, -1657.8086, 3.3913>>,<<-1069.8765, -1670.7845, 4.0850>>,-1,true) TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,false) TASK_COMBAT_HATED_TARGETS_AROUND_PED(null,50.0) endseq(ped[ELSAL_AT_GARAGE].id) //SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_AT_GARAGE].id,CA_CAN_CHARGE,TRUE) actions[thisI].completed = TRUE BREAK CASE ACTION_ENEMY_BY_BISON SWITCH actions[thisI].flag CASE 0 create_shootout_ped(ELSAL_BEHIND_BISON,<< -1080.6929, -1650.7874, 3.4234 >>,196) SET_COMBAT_FLOAT(ped[ELSAL_BEHIND_BISON].id, CCF_TIME_BETWEEN_BURSTS_IN_COVER, 0.5) SET_COMBAT_FLOAT(ped[ELSAL_BEHIND_BISON].id, CCF_TIME_BETWEEN_PEEKS, 1000.0) SET_COMBAT_FLOAT(ped[ELSAL_BEHIND_BISON].id, CCF_BLIND_FIRE_CHANCE, 0) SET_PED_CONFIG_FLAG(ped[ELSAL_BEHIND_BISON].id,PCF_DisableHurt,TRUE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_BEHIND_BISON].id,CA_BLIND_FIRE_IN_COVER,FALSE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_BEHIND_BISON].id,CA_PLAY_REACTION_ANIMS,FALSE) SET_PED_PINNED_DOWN(ped[ELSAL_BEHIND_BISON].id,false,-1) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_BEHIND_BISON].id,CA_CAN_USE_PEEKING_VARIATIONS,FALSE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_BEHIND_BISON].id,CA_CAN_CHARGE,TRUE) //Imran requested addition // SET_PED_SPHERE_DEFENSIVE_AREA(ped[ELSAL_BEHIND_BISON].id,<< -1080.6929, -1650.7874, 3.4234 >>,2.0) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ELSAL_BEHIND_BISON].id,50.0) actions[thisI].flag++ BREAK CASE 1 IF DOES_ENTITY_EXIST(ped[ELSAL_FROM_SKIP].id) AND IS_PED_INJURED(ped[ELSAL_FROM_SKIP].id) IF NOT IS_PED_INJURED(ped[ELSAL_BEHIND_BISON].id) SET_PED_SPHERE_DEFENSIVE_AREA(ped[ELSAL_BEHIND_BISON].id,<<-1084.3212, -1648.2567, 3.3987>>,2.0) actions[thisI].completed = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK CASE ACTION_ENEMY_FROM_LEFT create_shootout_ped(ELSAL_FROM_LEFT,<< -1092.9165, -1660.4343, 3.5354 >>,296) SET_PED_SPHERE_DEFENSIVE_AREA(ped[ELSAL_FROM_LEFT].id,<<-1081.759277,-1657.340820,3.398672>> ,2.25) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_FROM_LEFT].id,CA_CAN_CHARGE,TRUE) SET_PED_COMBAT_MOVEMENT(ped[ELSAL_FROM_LEFT].id,CM_DEFENSIVE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_FROM_LEFT].id,CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED,TRUE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ELSAL_FROM_LEFT].id,50.0) actions[thisI].completed = TRUE BREAK CASE ACTION_ENEMY_FROM_SKIP //set ped spawn position to always be behind the portaloo vector vSpawn, vDistance vDistance = <<-1088.97, -1649.87, 4.47>> - GET_ENTITY_COORDS(PLAYER_PED_ID()) vDistance = NORMALISE_VECTOR(vDistance) vDistance *= 4.48 vSpawn = <<-1088.97, -1649.87, 3.4>> + <> enemySpawnCover = ADD_COVER_POINT(vSpawn,-148,COVUSE_WALLTOBOTH,COVHEIGHT_low,COVARC_180) create_shootout_ped(ELSAL_FROM_SKIP,vSpawn,222) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_FROM_SKIP].id,CA_MOVE_TO_LOCATION_BEFORE_COVER_SEARCH,TRUE) // SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_FROM_SKIP].id,CA_OPEN_COMBAT_WHEN_DEFENSIVE_AREA_IS_REACHED ,TRUE) SET_PED_SPHERE_DEFENSIVE_AREA(ped[ELSAL_FROM_SKIP].id,<<-1085.302246,-1653.679565,3.469686>> ,2.125) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_FROM_SKIP].id,CA_CAN_CHARGE,TRUE) SET_PED_COMBAT_MOVEMENT(ped[ELSAL_FROM_SKIP].id,CM_DEFENSIVE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_FROM_SKIP].id,CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED,TRUE) seq() TASK_PUT_PED_DIRECTLY_INTO_COVER(null,<<-1089.0614, -1648.2094, 3.3985>>,500,false,-1,true,false,enemySpawnCover) TASK_COMBAT_HATED_TARGETS_AROUND_PED(null,50.0) endseq(ped[ELSAL_FROM_SKIP].id) FORCE_PED_AI_AND_ANIMATION_UPDATE(ped[ELSAL_FROM_SKIP].id,true) actions[thisI].completed = TRUE BREAK CASE ACTION_ENEMY_FROM_SCAFFOLD switch actions[thisI].flag CASE 0 IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfScaffold) IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfScaffold) = RFMO_STATE_ANIMATING create_shootout_ped(ELSAL_SCAFFOLDA,<<-1104.9807, -1665.0115, 6.3488>>,307,WEAPONTYPE_MICROSMG) ELSE create_shootout_ped(ELSAL_SCAFFOLDA,<< -1098.2137, -1660.4208, 6.2581 >>,307,WEAPONTYPE_MICROSMG) ENDIF ELSE create_shootout_ped(ELSAL_SCAFFOLDA,<< -1098.2137, -1660.4208, 6.2581 >>,307,WEAPONTYPE_MICROSMG) ENDIF set_ped_accuracy(ped[ELSAL_SCAFFOLDA].id,0) SET_PED_SPHERE_DEFENSIVE_AREA(ped[ELSAL_SCAFFOLDA].id,<<-1089.65, -1655.94, 6.36>>,1.875) IF IS_CONDITION_TRUE(COND_SCAFFOLD_BLOWN) seq() TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,true) TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1089.7052, -1656.5057, 6.3482>>,pedmove_run) TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,false) TASK_SHOOT_AT_ENTITY(null,ped[PED_BUDDY].id,-1,FIRING_TYPE_CONTINUOUS) endseq(ped[ELSAL_SCAFFOLDA].id) actions[thisI].completed = TRUE ELSE SET_PED_ACCURACY(ped[ELSAL_SCAFFOLDA].id,0) seq() TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,true) // TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1089.7052, -1656.5057, 6.3482>>,pedmove_run,DEFAULT_TIME_BEFORE_WARP,6.0) TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY(null,<<-1089.7052, -1656.5057, 6.3482>>,ped[ped_buddy].id,pedmove_run,true,0.25) TASK_SHOOT_AT_ENTITY(null,ped[PED_BUDDY].id,-1,FIRING_TYPE_CONTINUOUS) //TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,false) //TASK_FOLLOW_WAYPOINT_RECORDING(null,"arm2_11",0,EWAYPOINT_START_FROM_CLOSEST_POINT) //TASK_AIM_AT_ENTITY(null,ped[PED_BUDDY].id,-1,FIRING_TYPE_CONTINUOUS) //TASK_AIM_GUN_AT_ENTITY(null,ped[PED_BUDDY].id,-1) endseq(ped[ELSAL_SCAFFOLDA].id) SET_PED_MIN_MOVE_BLEND_RATIO(ped[ELSAL_SCAFFOLDA].id,pedmove_run) ENDIF FORCE_PED_MOTION_STATE(ped[ELSAL_SCAFFOLDA].id,MS_ON_FOOT_RUN) REPLAY_RECORD_BACK_FOR_TIME(1.0, 3.0, REPLAY_IMPORTANCE_HIGH) actions[thisI].flag++ ENDIF BREAK CASE 1 //SET_PED_MIN_MOVE_BLEND_RATIO(ped[ELSAL_SCAFFOLDA].id,pedmove_run) /* IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[ped_buddy].id,<<-1085.27, -1655.59, 3.40>>) > 3.0 actions[thisI].intA = 1 ELSE actions[thisI].intA = 2 ENDIF ENDIF IF NOT IS_PED_INJURED(ped[ELSAL_SCAFFOLDA].id) IF GET_SCRIPT_TASK_STATUS(ped[ELSAL_SCAFFOLDA].id,SCRIPT_TASK_ANY) != PERFORMING_TASK AND GET_SCRIPT_TASK_STATUS(ped[ELSAL_SCAFFOLDA].id,SCRIPT_TASK_ANY) != WAITING_TO_START_TASK IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[ELSAL_SCAFFOLDA].id,<<-1089.7052, -1656.5057, 7.0>>) > 2.5 seq() TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,true) // TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1089.7052, -1656.5057, 6.3482>>,pedmove_run,DEFAULT_TIME_BEFORE_WARP,2.5) TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY(null,<<-1089.7052, -1656.5057, 6.3482>>,ped[ped_buddy].id,pedmove_walk,true,0.25) TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,false) TASK_AIM_GUN_AT_ENTITY(null,ped[PED_BUDDY].id,-1) endseq(ped[ELSAL_SCAFFOLDA].id) ELSE IF (GET_SCRIPT_TASK_STATUS(ped[ELSAL_SCAFFOLDA].id,SCRIPT_TASK_PERFORM_SEQUENCE) != PERFORMING_TASK AND GET_SCRIPT_TASK_STATUS(ped[ELSAL_SCAFFOLDA].id,SCRIPT_TASK_PERFORM_SEQUENCE) != WAITING_TO_START_TASK ) OR actions[thisI].intA != actions[thisI].intB IF actions[thisI].intA = 2 SET_PED_ACCURACY(ped[ELSAL_SCAFFOLDA].id,0) seq() TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,true) TASK_SHOOT_AT_ENTITY(null,ped[PED_BUDDY].id,-1,FIRING_TYPE_CONTINUOUS) /* TASK_SHOOT_AT_COORD(null,<<-1083.0519, -1656.4125, 3.3116>>,1000,FIRING_TYPE_1_BURST) TASK_SHOOT_AT_COORD(null,<<-1085.1349, -1655.2434, 5.6317>>,1000,FIRING_TYPE_CONTINUOUS) TASK_SHOOT_AT_COORD(null,<<-1086.4506, -1655.7079, 4.1567>>,1000,FIRING_TYPE_RANDOM_BURSTS) TASK_SHOOT_AT_COORD(null,<<-1085.6595, -1656.5803, 3.4241>>,1000,FIRING_TYPE_CONTINUOUS) TASK_SHOOT_AT_COORD(null,<<-1083.1820, -1655.5637, 4.6418>>,1000,FIRING_TYPE_RANDOM_BURSTS) */ /*endseq(ped[ELSAL_SCAFFOLDA].id,true) ELSE seq() TASK_SHOOT_AT_ENTITY(null,ped[PED_BUDDY].id,-1,FIRING_TYPE_CONTINUOUS) endseq(ped[ELSAL_SCAFFOLDA].id) ENDIF actions[thisI].intB = actions[thisI].intA ENDIF ENDIF ENDIF ENDIF*/ IF IS_PED_INJURED(ped[ELSAL_SCAFFOLDA].id) actions[thisI].completed = TRUE ELSE IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-1089.865234,-1656.486084,6.202436>>) < 4.625 OR HAS_ENTITY_BEEN_DAMAGED_BY_ANY_PED(ped[ELSAL_SCAFFOLDA].id) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ELSAL_SCAFFOLDA].id,FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ELSAL_SCAFFOLDA].id,70) SET_PED_ACCURACY(ped[ELSAL_SCAFFOLDA].id,30) actions[thisI].completed = TRUE ENDIF ENDIF BREAK case 2 IF IS_PED_INJURED(ped[ELSAL_SCAFFOLDA].id) actions[thisI].completed = TRUE ELSE IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-1089.865234,-1656.486084,6.202436>>) < 4.625 OR HAS_ENTITY_BEEN_DAMAGED_BY_ANY_PED(ped[ELSAL_SCAFFOLDA].id) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ELSAL_SCAFFOLDA].id,FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ELSAL_SCAFFOLDA].id,70) SET_PED_ACCURACY(ped[ELSAL_SCAFFOLDA].id,30) actions[thisI].completed = TRUE ENDIF ENDIF break ENDSWITCH BREAK CASE ACTION_SCAFFOLD_PED_DROPS IF NOT IS_PED_INJURED(ped[ELSAL_SCAFFOLDA].id) SET_PED_SPHERE_DEFENSIVE_AREA(ped[ELSAL_SCAFFOLDA].id,GET_ENTITY_COORDS(ped[ELSAL_SCAFFOLDA].id) ,5.25) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ELSAL_SCAFFOLDA].id,50.0) actions[thisI].completed = TRUE ENDIF BREAK CASE ACTION_ENEMY_AFTER_SCAFFOLD create_shootout_ped(ELSAL_BEFORE_CAR_LEFT,<<-1108.8895, -1637.4775, 3.6162>>,300) SET_PED_SPHERE_DEFENSIVE_AREA(ped[ELSAL_BEFORE_CAR_LEFT].id,<< -1098.4191, -1629.1586, 3.3987 >>,2.5) //SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_BEFORE_CAR_LEFT].id,CA_OPEN_COMBAT_WHEN_DEFENSIVE_AREA_IS_REACHED,TRUE) SET_PED_COMBAT_MOVEMENT(ped[ELSAL_BEFORE_CAR_LEFT].id,CM_DEFENSIVE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_BEFORE_CAR_LEFT].id,CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED,TRUE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_BEFORE_CAR_LEFT].id,CA_CAN_CHARGE,TRUE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ELSAL_BEFORE_CAR_LEFT].id,100.0) actions[thisI].completed = TRUE BREAK CASE ACTION_ENEMY_ON_VERANDA SWITCH actions[thisI].flag CASE 0 create_shootout_ped(ELSAL_BALCONY,<< -1090.4824, -1635.0518, 6.7641 >>,167) SET_COMBAT_FLOAT(ped[ELSAL_BALCONY].id, CCF_TIME_BETWEEN_PEEKS, 10.0) SET_PED_TARGET_LOSS_RESPONSE(ped[ELSAL_BALCONY].id,TLR_NEVER_LOSE_TARGET) SET_PED_CONFIG_FLAG(ped[ELSAL_BALCONY].id,PCF_DisableHurt,TRUE) SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(ped[ELSAL_BALCONY].id,FALSE) //SET_PED_ANGLED_DEFENSIVE_AREA(ped[ELSAL_BALCONY].id, <<-1091.212769,-1637.338257,6.716470>>, <<-1089.535889,-1636.204712,7.707654>>, 2.000000) SET_PED_SPHERE_DEFENSIVE_AREA(ped[ELSAL_BALCONY].id,<<-1090.146484,-1636.203613,6.716715>>,2.375) SET_ENTITY_HEALTH(ped[ELSAL_BALCONY].id,350) SET_PED_MAX_HEALTH(ped[ELSAL_BALCONY].id,350) FORCE_PED_MOTION_STATE(ped[ELSAL_BALCONY].id, MS_ON_FOOT_RUN, true, FAUS_DEFAULT ) REGISTER_HATED_TARGETS_AROUND_PED(ped[ELSAL_BALCONY].id,150) seq() TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,TRUE) TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< -1090.2764, -1637.3666, 6.7641 >>,pedmove_run,DEFAULT_TIME_BEFORE_WARP,0.4) TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(null,150.0) endseq(ped[ELSAL_BALCONY].id) actions[thisI].flag++ BREAK CASE 1 IF NOT IS_PED_INJURED(ped[ELSAL_BALCONY].id) IF IS_PED_RAGDOLL(ped[ELSAL_BALCONY].id) SET_ENTITY_HEALTH(ped[ELSAL_BALCONY].id,0) actions[thisI].completed = TRUE ELSE IF GET_SCRIPT_TASK_STATUS(ped[ELSAL_BALCONY].id,SCRIPT_TASK_ANY) != PERFORMING_TASK //cprintln(Debug_Trevor3,"FORCE VERANDA PED TO ENTER COMBAT ",GET_GAME_TIMER()) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ELSAL_BALCONY].id,150.0) ENDIF ENDIF ELSE actions[thisI].completed = TRUE ENDIF IF actions[thisI].intA = 0 If IS_CONDITION_TRUE(COND_ONE_ENEMY_LEFT) IF NOT IS_PED_INJURED(ped[ELSAL_BALCONY].id) SET_PED_ALLOWED_TO_DUCK(ped[ELSAL_BALCONY].id,FALSE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_BALCONY].id,CA_BLIND_FIRE_IN_COVER,FALSE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_BALCONY].id,CA_USE_COVER,FALSE) ENDIF actions[thisI].intA=1 endif else If IS_CONDITION_FALSE(COND_ONE_ENEMY_LEFT) IF NOT IS_PED_INJURED(ped[ELSAL_BALCONY].id) SET_PED_ALLOWED_TO_DUCK(ped[ELSAL_BALCONY].id,TRUE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_BALCONY].id,CA_BLIND_FIRE_IN_COVER,TRUE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_BALCONY].id,CA_USE_COVER,TRUE) ENDIF actions[thisI].intA = 0 ENDIF endif BREAK ENDSWITCH BREAK CASE ACTION_ENEMY_ON_BALCONY SWITCH actions[thisI].flag CASE 0 create_shootout_ped(ELSAL_ROOF,<< -1098.6907, -1626.7164, 9.9315 >>, 209.2257) SET_CURRENT_PED_VEHICLE_WEAPON(ped[ELSAL_ROOF].id,GET_BEST_PED_WEAPON(ped[ELSAL_ROOF].id)) SET_PED_ANGLED_DEFENSIVE_AREA( ped[ELSAL_ROOF].id, <<-1095.918457,-1630.073730,9.936975>>, <<-1097.003418,-1630.831177,10.911861>>, 1.000000) FORCE_PED_MOTION_STATE(ped[ELSAL_ROOF].id, MS_ON_FOOT_RUN, true, FAUS_DEFAULT ) SET_PED_CONFIG_FLAG(ped[ELSAL_ROOF].id,PCF_DisableHurt,TRUE) SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(ped[ELSAL_ROOF].id,TRUE) SET_PED_ALLOWED_TO_DUCK(ped[ELSAL_ROOF].id,FALSE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_ROOF].id,CA_BLIND_FIRE_IN_COVER,FALSE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_ROOF].id,CA_USE_COVER,FALSE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_ROOF].id,CA_MOVE_TO_LOCATION_BEFORE_COVER_SEARCH,FALSE) SET_RAGDOLL_BLOCKING_FLAGS(ped[ELSAL_ROOF].id) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ELSAL_ROOF].id,150.0) actions[thisI].flag++ BREAK CASE 1 IF NOT IS_PED_INJURED(ped[ELSAL_ROOF].id) //url:bugstar:2001717 - Set ped to be stationary once he reaches his defensive position. IF IS_ENTITY_IN_ANGLED_AREA(ped[ELSAL_ROOF].id, <<-1095.918457,-1630.073730,9.936975>>, <<-1097.003418,-1630.831177,10.911861>>, 1.000000) IF GET_PED_COMBAT_MOVEMENT(ped[ELSAL_ROOF].id) <> CM_STATIONARY SET_PED_COMBAT_MOVEMENT(ped[ELSAL_ROOF].id, CM_STATIONARY) ENDIF ENDIF IF IS_PED_RAGDOLL(ped[ELSAL_ROOF].id) SET_ENTITY_HEALTH(ped[ELSAL_ROOF].id,0) actions[thisI].completed = TRUE ENDIF ELSE actions[thisI].completed = TRUE ENDIF BREAK ENDSWITCH BREAK CASE ACTION_ENEMY_FROM_DOOR IF DOES_ENTITY_EXIST(ped[ELSAL_EXIT_DOOR].id) IF IS_PED_INJURED(ped[ELSAL_EXIT_DOOR].id) REMOVE_WAYPOINT_RECORDING("arm2_15") actions[thisI].completed = TRUE ENDIF ENDIF actions[thisI].floatA += -2.0 * TIMESTEP() IF actions[thisI].floatA <= -1.0 actions[thisI].floatA = -1.0 ENDIF set_door_lock(PROP_MAP_DOOR_01,<<-1104.6572,-1638.4814,4.6754>>,true,actions[thisI].floatA) switch actions[thisI].flag CASE CLEANUP // SET_DOOR_STATE(DOORNAME_ARM2_HENCH_01, DOORSTATE_FORCE_LOCKED_THIS_FRAME) BREAK case 0 REQUEST_WAYPOINT_RECORDING("arm2_15") // SET_DOOR_STATE(DOORNAME_ARM2_HENCH_01, DOORSTATE_UNLOCKED) actions[thisI].flag++ actions[thisI].needsCleanup = TRUE BREAK CASE 1 IF GET_IS_WAYPOINT_RECORDING_LOADED("arm2_15") create_shootout_ped(ELSAL_EXIT_DOOR,<< -1106.8759, -1638.6997, 3.6407 >>, 288.3654) // SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_EXIT_DOOR].id,CA_OPEN_COMBAT_WHEN_DEFENSIVE_AREA_IS_REACHED,TRUE) SET_PED_SPHERE_DEFENSIVE_AREA(ped[ELSAL_EXIT_DOOR].id,<<-1100.476929,-1641.042114,3.616217>>,2.75) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_EXIT_DOOR].id,CA_MOVE_TO_LOCATION_BEFORE_COVER_SEARCH,FALSE) SET_PED_COMBAT_MOVEMENT(ped[ELSAL_EXIT_DOOR].id,CM_DEFENSIVE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_EXIT_DOOR].id,CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED,TRUE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_EXIT_DOOR].id,CA_CAN_CHARGE,TRUE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ELSAL_EXIT_DOOR].id,100.0) PLAY_SOUND_FROM_COORD(-1,"ARM_2_REPO_DOOR_KICK_OPEN",<<-1104.359375,-1637.574829,2.366156>>) /* seq() TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,TRUE) TASK_FOLLOW_WAYPOINT_RECORDING(null,"arm2_15",0,EWAYPOINT_START_FROM_CLOSEST_POINT) TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(null,100.0) endseq(ped[ELSAL_EXIT_DOOR].id) */ actions[thisI].flag++ ENDIF BREAK case 2/* if not IS_PED_INJURED(ped[ELSAL_EXIT_DOOR].id) SET_PED_CAPSULE(ped[ELSAL_EXIT_DOOR].id,1.0) IF IS_ENTITY_IN_ANGLED_AREA( ped[ELSAL_EXIT_DOOR].id, <<-1104.359375,-1637.574829,2.366156>>, <<-1105.298950,-1638.249146,6.828245>>, 1.562500) PLAY_SOUND_FROM_COORD(-1,"ARM_2_REPO_DOOR_KICK_OPEN",<<-1104.359375,-1637.574829,2.366156>>) actions[thisI].flag++ ENDIF Endif*/ break CASE 3 if not IS_PED_INJURED(ped[ELSAL_EXIT_DOOR].id) SET_PED_CAPSULE(ped[ELSAL_EXIT_DOOR].id,1.0) IF IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(ped[ELSAL_EXIT_DOOR].id) WAYPOINT_PLAYBACK_START_AIMING_AT_PED(ped[ELSAL_EXIT_DOOR].id,PLAYER_PED_ID(),FALSE) actions[thisI].flag++ ENDIF ENDIF BREAK CASE 4 if not IS_PED_INJURED(ped[ELSAL_EXIT_DOOR].id) SET_PED_CAPSULE(ped[ELSAL_EXIT_DOOR].id,1.0) IF IS_ENTITY_IN_ANGLED_AREA( ped[ELSAL_EXIT_DOOR].id, <<-1104.359375,-1637.574829,2.366156>>, <<-1105.298950,-1638.249146,6.828245>>, 1.562500) PLAY_SOUND_FROM_COORD(-1,"ARM_2_REPO_DOOR_KICK_OPEN",<<-1104.359375,-1637.574829,2.366156>>) actions[thisI].flag++ ENDIF ENDIF BREAK CASE 5 if not IS_PED_INJURED(ped[ELSAL_EXIT_DOOR].id) SET_PED_CAPSULE(ped[ELSAL_EXIT_DOOR].id,1.0) IF IS_ENTITY_IN_ANGLED_AREA(ped[ELSAL_EXIT_DOOR].id, <<-1103.139038,-1638.564941,2.803717>>, <<-1104.735107,-1636.179810,4.803716>>, 1.375000) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ELSAL_EXIT_DOOR].id,FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ELSAL_EXIT_DOOR].id,100.0) SET_DOOR_STATE(DOORNAME_ARM2_HENCH_01, DOORSTATE_FORCE_LOCKED_THIS_FRAME) actions[thisI].completed=TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK CASE ACTION_LEMAR_MOVES_TO_COVER IF NOT IS_PED_INJURED(ped[ped_buddy].id) SET_PED_ANGLED_DEFENSIVE_AREA( ped[ped_buddy].id, <<-1100.693604,-1647.659668,2.457902>>, <<-1092.784058,-1647.704102,5.398660>>, 2.375000) actions[thisI].completed=TRUE ENDIF BREAK CASE ACTION_DRIVER_RUNS_TO_CAR SWITCH actions[thisI].flag CASE 0 IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_FLEE].id) ped[ELSAL_CAR].id = CREATE_PED(PEDTYPE_MISSION,model_salvas,<< -1084.3834, -1633.0228, 3.7424 >>,81) SET_PED_CAN_BE_TARGETTED(ped[ELSAL_CAR].id,FALSE) SET_VEHICLE_DOORS_LOCKED(vehicle[VEH_FLEE].id,VEHICLELOCK_UNLOCKED) SET_VEHICLE_ALARM(vehicle[VEH_FLEE].id,FALSE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ELSAL_CAR].id,TRUE) TASK_ENTER_VEHICLE(ped[ELSAL_CAR].id,vehicle[VEH_FLEE].id,DEFAULT_TIME_BEFORE_WARP,vs_driver,pedmove_run,ECF_USE_RIGHT_ENTRY) FREEZE_ENTITY_POSITION( vehicle[VEH_FLEE].id,false) actions[thisI].flag++ ENDIF BREAK CASE 1 IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_FLEE].id) IF NOT IS_PED_INJURED(ped[ELSAL_CAR].id) IF IS_PED_SITTING_IN_VEHICLE(ped[ELSAL_CAR].id,vehicle[VEH_FLEE].id) task_play_anim(ped[ELSAL_CAR].id,"missarmenian2","In_Car_Nervous",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_LOOPING) actions[thisI].flag++ ELSE IF GET_SCRIPT_TASK_STATUS(ped[ELSAL_CAR].id,SCRIPT_TASK_ENTER_VEHICLE) = FINISHED_TASK TASK_ENTER_VEHICLE(ped[ELSAL_CAR].id,vehicle[VEH_FLEE].id,DEFAULT_TIME_BEFORE_WARP,vs_driver,pedmove_run,ECF_USE_RIGHT_ENTRY) ENDIF ENDIF ENDIF ENDIF BREAK CASE 2 IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_FLEE].id) IF NOT IS_PED_INJURED(ped[ELSAL_CAR].id) IF NOT IS_PED_SITTING_IN_VEHICLE(ped[ELSAL_CAR].id,vehicle[VEH_FLEE].id) TASK_SMART_FLEE_PED(ped[ELSAL_CAR].id,player_ped_id(),70.0,-1) SET_PED_KEEP_TASK(ped[ELSAL_CAR].id,TRUE) SET_PED_AS_NO_LONGER_NEEDED(ped[ELSAL_CAR].id) actions[thisI].completed = TRUE ENDIF ELSE actions[thisI].completed = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK case ACTION_DRIVER_DRIVES_OFF IF NOT IS_PED_INJURED(ped[ELSAL_CAR].id) SWITCH actions[thisI].flag case 0 IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_FLEE].id) IF IS_PED_SITTING_IN_VEHICLE(ped[ELSAL_CAR].id,vehicle[VEH_FLEE].id) IF ABSF(GET_ENTITY_HEADING(vehicle[VEH_FLEE].id)-307.1) < 0.5 //307.1 SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_CAR].id,CA_LEAVE_VEHICLES,FALSE) SET_ENTITY_PROOFS(ped[ELSAL_CAR].id,true,false,false,false,false) SET_PED_RELATIONSHIP_GROUP_HASH(ped[ELSAL_CAR].id,HASH_FOE_GROUP) SET_PED_CONFIG_FLAG(ped[ELSAL_CAR].id,PCF_GetOutBurningVehicle,FALSE) FREEZE_ENTITY_POSITION(vehicle[VEH_FLEE].id,FALSE) START_PLAYBACK_RECORDED_VEHICLE(vehicle[VEH_FLEE].id,6,"ARM2") ENABLE_VEHICLE_EXHAUST_POPS(vehicle[VEH_FLEE].id,FALSE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ELSAL_CAR].id,true) START_AUDIO_SCENE("ARM_2_GAS_TRAIL") ADD_ENTITY_TO_AUDIO_MIX_GROUP(vehicle[VEH_FLEE].id,"ARM_2_GAS_TRAIL_CAR_GROUP") REPLAY_RECORD_BACK_FOR_TIME(2.0, 7.0, REPLAY_IMPORTANCE_HIGHEST) //307.1 actions[thisI].flag++ ELSE TASK_SMART_FLEE_PED(ped[ELSAL_CAR].id,player_ped_id(),100.0,100000) SET_PED_KEEP_TASK(ped[ELSAL_CAR].id,TRUE) SET_PED_AS_NO_LONGER_NEEDED(ped[ELSAL_CAR].id) actions[thisI].completed = TRUE ENDIF ELSE TASK_SMART_FLEE_PED(ped[ELSAL_CAR].id,player_ped_id(),100.0,100000) SET_PED_KEEP_TASK(ped[ELSAL_CAR].id,TRUE) SET_PED_AS_NO_LONGER_NEEDED(ped[ELSAL_CAR].id) actions[thisI].completed = TRUE ENDIF ELSE TASK_SMART_FLEE_PED(ped[ELSAL_CAR].id,player_ped_id(),100.0,100000) SET_PED_KEEP_TASK(ped[ELSAL_CAR].id,TRUE) SET_PED_AS_NO_LONGER_NEEDED(ped[ELSAL_CAR].id) actions[thisI].completed = TRUE ENDIF break case 1 IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_FLEE].id) IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[VEH_FLEE].id) SET_ENTITY_INVINCIBLE(ped[ELSAL_CAR].id,false) SET_ENTITY_HEALTH(ped[ELSAL_CAR].id,0) actions[thisI].completed = TRUE endif endif break ENDSWITCH ENDIF BREAK CASE ACTION_FLEEING_CAR_DAMAGE SWITCH actions[thisI].flag CASE 0 actions[thisI].intA = GET_GAME_TIMER() actions[thisI].flag++ BREAK CASE 1 IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_FLEE].id) if GET_ENTITY_HEALTH(vehicle[VEH_FLEE].id)<300 SET_ENTITY_HEALTH(vehicle[VEH_FLEE].id,300) ENDIF if GET_VEHICLE_ENGINE_HEALTH(vehicle[VEH_FLEE].id) < 200 SET_VEHICLE_ENGINE_HEALTH(vehicle[VEH_FLEE].id,200) ENDIF if GET_VEHICLE_PETROL_TANK_HEALTH(vehicle[VEH_FLEE].id) < 150 SET_VEHICLE_PETROL_TANK_HEALTH(vehicle[VEH_FLEE].id,150) ENDIF actions[thisI].intB = get_game_timer() - actions[thisI].intA int iE iE = 0 for iE = 0 to MAX_DAMAGE_TYPES-1 if actions[thisI].intB > damageEvent[iE].time if damageEvent[ie].bActivated = FALSE damageEvent[ie].bActivated = true SWITCH damageEvent[ie].damage case SMASH_WINDSHIELD POP_OUT_VEHICLE_WINDSCREEN(vehicle[VEH_FLEE].id) break case SMASH_REAR_WINDOW SMASH_VEHICLE_WINDOW(vehicle[VEH_FLEE].id,SC_WINDOW_REAR_RIGHT) break case BURST_FRONT_RIGHT_TYRE SET_VEHICLE_TYRE_BURST(vehicle[VEH_FLEE].id,SC_WHEEL_CAR_FRONT_RIGHT) break case REDUCE_ENGINE_HEALTH SET_VEHICLE_CAN_LEAK_PETROL(vehicle[VEH_FLEE].id,true) SET_VEHICLE_ENGINE_HEALTH(vehicle[VEH_FLEE].id,200) SET_VEHICLE_PETROL_TANK_HEALTH(vehicle[VEH_FLEE].id,150) SET_VEHICLE_DOORS_LOCKED(vehicle[VEH_FLEE].id,VEHICLELOCK_LOCKED) BREAK case SMASH_FRONT_RIGHT_WINDOW SMASH_VEHICLE_WINDOW(vehicle[VEH_FLEE].id,SC_WINDOW_front_RIGHT) break CASE POP_BOOT SET_VEHICLE_DOOR_LATCHED(vehicle[VEH_FLEE].id,SC_DOOR_BOOT,FALSE,FALSE) SET_VEHICLE_DOOR_CONTROL(vehicle[VEH_FLEE].id,SC_DOOR_BOOT,DT_DOOR_BASHED_AND_SWINGING_FREE,0.25) //PLAY_SOUND_FROM_COORD(-1,"ARM_2_Repo_Car_Collision",<< -1095.4073, -1645.1753, 4.4626 >>) //SET_VEHICLE_DOOR_BROKEN(vehicle[VEH_FLEE].id,SC_DOOR_BOOT,FALSE) //SET_VEHICLE_DOOR_BROKEN(vehicle[VEH_FLEE].id,SC_DOOR_BONNET,FALSE) //SET_VEHICLE_CAN_LEAK_PETROL(vehicle[VEH_FLEE].id,true) break case POP_LEFT_DOOR SET_VEHICLE_DOOR_BROKEN(vehicle[VEH_FLEE].id,SC_DOOR_REAR_LEFT,FALSE) actions[thisI].completed = TRUE BREAK case POP_RIGHT_DOOR SET_VEHICLE_DOOR_BROKEN(vehicle[VEH_FLEE].id,SC_DOOR_REAR_RIGHT,FALSE) BREAK case CRUMPLE_BOOT SET_VEHICLE_DAMAGE(vehicle[VEH_FLEE].id,<<0,-2,0>>,5.0,0.3,true) // PLAY_SOUND_FROM_COORD(-1,"ARM_2_Repo_Car_Collision_Fence",<< -1106.8208, -1627.2595, 4.0951 >>) IF NOT IS_PED_INJURED(ped[ELSAL_CAR].id) SET_PED_PLAYS_HEAD_ON_HORN_ANIM_WHEN_DIES_IN_VEHICLE(ped[ELSAL_CAR].id, TRUE) SET_ENTITY_HEALTH(ped[ELSAL_CAR].id, 0) ENDIF break ENDSWITCH ENDIF ENDIF ENDFOR ENDIF BREAK ENDSWITCH BREAK CASE ACTION_FINAL_WAVE_SPAWNS create_shootout_ped(ELSAL_ALLEYEND_LEFTA,<< -1117.1775, -1625.5195, 3.4419 >>, 289.3430,WEAPONTYPE_PISTOL) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_ALLEYEND_LEFTA].id,CA_MOVE_TO_LOCATION_BEFORE_COVER_SEARCH,TRUE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_ALLEYEND_LEFTA].id,CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED,TRUE) SET_PED_SPHERE_DEFENSIVE_AREA(ped[ELSAL_ALLEYEND_LEFTA].id,<<-1105.6226, -1627.5686, 3.4014>>,3.0) REGISTER_HATED_TARGETS_AROUND_PED(ped[ELSAL_ALLEYEND_LEFTA].id,200) SET_PED_TARGET_LOSS_RESPONSE(ped[ELSAL_ALLEYEND_LEFTA].id,TLR_NEVER_LOSE_TARGET) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ELSAL_ALLEYEND_LEFTA].id,100.0) /* create_shootout_ped(ELSAL_ALLEYEND_LEFTB,<< -1119.3691, -1624.2604, 3.3987 >>, 320.5258,WEAPONTYPE_PISTOL) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_ALLEYEND_LEFTB].id,CA_MOVE_TO_LOCATION_BEFORE_COVER_SEARCH,TRUE) SET_PED_ANGLED_DEFENSIVE_AREA( ped[ELSAL_ALLEYEND_LEFTB].id, <<-1102.839600,-1639.208740,3.116216>>, <<-1107.835205,-1634.820068,5.303717>>, 5.500000) REGISTER_HATED_TARGETS_AROUND_PED(ped[ELSAL_ALLEYEND_LEFTB].id,200) SET_PED_TARGET_LOSS_RESPONSE(ped[ELSAL_ALLEYEND_LEFTB].id,TLR_NEVER_LOSE_TARGET) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ELSAL_ALLEYEND_LEFTB].id,100.0)*/ create_shootout_ped(ELSAL_ALLEYEND_RIGHTA,<< -1100.0413, -1619.9288, 3.7226 >>, 115.4267,WEAPONTYPE_PISTOL) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_ALLEYEND_RIGHTA].id,CA_MOVE_TO_LOCATION_BEFORE_COVER_SEARCH,TRUE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_ALLEYEND_RIGHTA].id,CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED,TRUE) SET_PED_SPHERE_DEFENSIVE_AREA(ped[ELSAL_ALLEYEND_RIGHTA].id,<<-1107.3348, -1630.7046, 3.5958>>,3.0) REGISTER_HATED_TARGETS_AROUND_PED(ped[ELSAL_ALLEYEND_RIGHTA].id,200) SET_PED_TARGET_LOSS_RESPONSE(ped[ELSAL_ALLEYEND_RIGHTA].id,TLR_NEVER_LOSE_TARGET) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ELSAL_ALLEYEND_RIGHTA].id,100.0) SET_ASSET_STAGE(ASSETS_STAGE_CHASE_BIKE) /* create_shootout_ped(ELSAL_ALLEYEND_RIGHTB,<< -1099.3923, -1617.2227, 3.7135 >>, 149.6431,WEAPONTYPE_PISTOL) SET_PED_ANGLED_DEFENSIVE_AREA( ped[ELSAL_ALLEYEND_RIGHTB].id, <<-1104.441772,-1625.506592,2.086172>>, <<-1101.540649,-1623.050659,5.807435>>, 4.500000) REGISTER_HATED_TARGETS_AROUND_PED(ped[ELSAL_ALLEYEND_RIGHTB].id,200) SET_PED_TARGET_LOSS_RESPONSE(ped[ELSAL_ALLEYEND_RIGHTB].id,TLR_NEVER_LOSE_TARGET) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ELSAL_ALLEYEND_RIGHTB].id,100.0) actions[thisI].completed = TRUE*/ actions[thisI].completed = TRUE BREAK CASE ACTION_MUSIC_SHOOTOUT playMusic("ARM2_FIGHT_START",TRUE,"ARM2_CAR") actions[thisI].completed = TRUE BREAK CASE ACTION_UNFREEZE_FLEE_CAR_IF_ENTERED IF IS_VEHICLE_DRIVEABLE(vehicle[veh_flee].id) FREEZE_ENTITY_POSITION(vehicle[veh_flee].id,FALSE) actions[thisI].completed = TRUE ENDIF BREAK CASE ACT_STAT_PROPANE SWITCH actions[thisI].flag CASE 0//do nothing BREAK CASE 1 //set elsewhere in script IF NOT IS_PED_INJURED(ped[ELSAL_SCAFFOLDA].id) actions[thisI].flag++ actions[thisI].intA = GET_GAME_TIMER() + 500 //cprintln(DEBUG_TREVOR3,"PED ALIVE") ELSE //cprintln(DEBUG_TREVOR3,"STAT GIVEN") //INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(ARM2_GAS_EXPLOSION) //This stat is gone actions[thisI].completed = TRUE ENDIF BREAK CASE 2 IF GET_GAME_TIMER() > actions[thisI].intA //cprintln(DEBUG_TREVOR3,"TIME RUN OUT FOFR PED TO DIE") actions[thisI].completed = TRUE ELSE IF IS_PED_INJURED(ped[ELSAL_SCAFFOLDA].id) //cprintln(DEBUG_TREVOR3,"STAT GIVEN") //INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(ARM2_GAS_EXPLOSION) actions[thisI].completed = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK CASE ACT_STAT_BIKER_DOWN cprintln(debug_Trevor3,"Check crash?") IF DOES_ENTITY_EXIST(ped[ped_bikeman].id) IF NOT IS_PED_INJURED(ped[ped_bikeman].id) IF NOT HAS_PED_BEEN_DAMAGED_BY_WEAPON(ped[ped_bikeman].id,WEAPONTYPE_INVALID,GENERALWEAPON_TYPE_ANYWEAPON) cprintln(debug_Trevor3,"CRASH A") INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(ARM2_CRASH_BIKER) ENDIF ELSE IF GET_PED_CAUSE_OF_DEATH(ped[ped_bikeman].id) = WEAPONTYPE_INVALID cprintln(debug_Trevor3,"CRASH B") INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(ARM2_CRASH_BIKER) ENDIF ENDIF ENDIF REPLAY_RECORD_BACK_FOR_TIME(3.0, 5.0, REPLAY_IMPORTANCE_HIGHEST) actions[thisI].completed = TRUE BREAK CASE ACT_TRIGGER_GATE_MUSIC playMusic("ARM2_GATE",FALSE,"ARM2_CHASE_START") actions[thisI].completed = TRUE BREAK CASE ACT_MUSIC_HINT_CAM IF IS_GAMEPLAY_HINT_ACTIVE() AND IS_CONDITION_TRUE(COND_PLAYER_IN_VEHICLE) IF actions[thisI].intA = 0 IF START_AUDIO_SCENE("ARM_2_FOCUS_ON_BIKE") actions[thisI].intA = 1 ENDIF ENDIF ELSE IF actions[thisI].intA = 1 IF IS_AUDIO_SCENE_ACTIVE("ARM_2_FOCUS_ON_BIKE") STOP_AUDIO_SCENE("ARM_2_FOCUS_ON_BIKE") ENDIF actions[thisI].intA = 0 ENDIF ENDIF BREAK CASE ACT_AUDIO_AT_RAYFIRE_END IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfScaffold) if GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfScaffold) = RFMO_STATE_END IF IS_AUDIO_SCENE_ACTIVE("ARM_2_RAYFIRE") STOP_AUDIO_SCENE("ARM_2_RAYFIRE") ELSE REPLAY_STOP_EVENT() actions[thisI].completed = true ENDIF ENDIF ENDIF BREAK CASE ACTION_PETROL_TRAIL SWITCH actions[thisI].flag CASE 0 set_bezier_node(newBez[0],0,<<-1095.3407, -1643.9155, 3.4784>>,<<-1.0505, 2.4131, 0.0000>>) set_bezier_node(newBez[1],1,<<-1097.3011, -1637.0286, 3.4630>>,<<0.0203, 2.7398, 0.0000>>) set_bezier_node(newBez[2],2,<<-1104.4421, -1629.7052, 3.4128>>,<<-4.9086, 2.1790, 0.0000>>) actions[thisI].flag++ break case 1 IF controlPetrolFire(bPetrolBurning) actions[thisI].completed = TRUE ENDIF IF bPetrolBurning INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(ARM2_PETROL_FIRE) actions[thisI].flag++ ENDIF break case 2 IF controlPetrolFire(bPetrolBurning) actions[thisI].completed = TRUE ENDIF break ENDSWITCH BREAK CASE ACTION_EXPLODE_CAR SWITCH actions[thisI].flag CASE 0 actions[thisI].intA = GET_GAME_TIMER() + 2200 actions[thisI].flag++ BREAK CASE 1 IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_FLEE].id) if GET_GAME_TIMER() > actions[thisI].intA IF IS_AUDIO_SCENE_ACTIVE("ARM_2_GAS_TRAIL") STOP_AUDIO_SCENE("ARM_2_GAS_TRAIL") REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehicle[VEH_FLEE].id) ENDIF // START_RECORDING_VEHICLE(vehicle[VEH_FLEE].id,11,"ARM2",true) //int iCarFlag //iCarFlag = CONTINUE_RECORDING_IF_CAR_DESTROYED START_PLAYBACK_RECORDED_VEHICLE_WITH_FLAGS(vehicle[VEH_FLEE].id,11,"ARM2",ENUM_TO_INT(CONTINUE_RECORDING_IF_CAR_DESTROYED)) network_explode_vehicle(vehicle[VEH_FLEE].id) REPLAY_RECORD_BACK_FOR_TIME(3.0, 4.0, REPLAY_IMPORTANCE_HIGHEST) actions[thisI].flag++ ENDIF ENDIF BREAK case 2 playMusic("ARM2_CAR",TRUE,"ARM2_CHASE_START") actions[thisI].completed = TRUE /* IF IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL,INPUT_ATTACK) STOP_RECORDING_ALL_VEHICLES() actions[thisI].completed = TRUE ENDIF*/ //if PREPARE_MUSIC_EVENT("ARM2_CAR") // if TRIGGER_MUSIC_EVENT("ARM2_CAR") // PREPARE_MUSIC_EVENT("ARM2_CHASE_MID") // ENDIF //endif break ENDSWITCH BREAK CASE ACTION_LAMAR_SHOOTS_CAR seq() TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,TRUE) TASK_SHOOT_AT_ENTITY(null,vehicle[veh_flee].id,4000,FIRING_TYPE_CONTINUOUS) TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(null,60) endseq(ped[ped_buddy].id) actions[thisI].completed = TRUE BREAK CASE acTION_lemar_RUN_TOWARDS_GATE TEMP_PROC_FOR_COMPILER_FIX(thisI) BREAK CASE ACTION_LOCK_ON_TO_GAS SWITCH actions[thisI].flag CASE 0 dummyGasCanister= CREATE_OBJECT_NO_OFFSET(PROP_LD_TEST_01,<<-1087.8252, -1655.3612, 7.1638>>) //PROP_GASCYL_04A SET_ENTITY_VISIBLE(dummyGasCanister,FALSE) FREEZE_ENTITY_POSITION(dummyGasCanister,true) SET_ENTITY_PROOFS(dummyGasCanister,true,true,true,true,true) SET_ENTITY_INVINCIBLE(dummyGasCanister,true) SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(dummyGasCanister,true) SET_ENTITY_COLLISION(dummyGasCanister,FALSE) SET_OBJECT_TARGETTABLE(dummyGasCanister,TRUE) SET_ENTITY_IS_TARGET_PRIORITY(dummyGasCanister,TRUE,30) actions[thisI].flag ++ BREAK CASE 1 IF IS_CONDITION_TRUE(COND_FIRST_WAVE_DEAD) IF DOES_ENTITY_EXIST(dummyGasCanister) DELETE_OBJECT(dummyGasCanister) actions[thisI].completed = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK CASE ACTION_LOCK_ON_TO_GAS_TRAIL SWITCH actions[thisI].flag CASE 0 dummyGasTrail= CREATE_OBJECT_NO_OFFSET(PROP_LD_TEST_01,<<-1097.36, -1636.76, 3.40>>) //PROP_GASCYL_04A SET_ENTITY_VISIBLE(dummyGasTrail,FALSE) FREEZE_ENTITY_POSITION(dummyGasTrail,true) SET_ENTITY_PROOFS(dummyGasTrail,true,true,true,true,true) SET_ENTITY_INVINCIBLE(dummyGasTrail,true) SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(dummyGasTrail,true) SET_ENTITY_COLLISION(dummyGasTrail,FALSE) SET_OBJECT_TARGETTABLE(dummyGasTrail,TRUE) SET_ENTITY_IS_TARGET_PRIORITY(dummyGasTrail,TRUE,30) actions[thisI].flag ++ BREAK CASE 1 IF IS_CONDITION_TRUE(COND_ALL_VAGOS_DEAD) OR bPetrolBurning IF DOES_ENTITY_EXIST(dummyGasTrail) DELETE_OBJECT(dummyGasTrail) actions[thisI].completed = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK //chase biker stage CASE ACTION_REMOVE_ALLEYWAY_ASSETS IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-1106.28, -1624.36, 3.40>>) > 70 int iT REPEAT COUNT_OF(ped) iT IF iT != PED_BUDDY AND iT != ped_franklin AND iT != ped_bikeman if DOES_entity_EXIST(ped[iT].id) IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(ped[iT].id,false) SET_PED_AS_NO_LONGER_NEEDED(ped[iT].id) ENDIF ENDIF endif ENDREPEAT REPEAT COUNT_OF(vehicle) iT IF iT != VEH_PLAYER AND iT != VEH_OBJECTIVE if DOES_ENTITY_EXIST(vehicle[iT].id) IF IS_ENTITY_A_MISSION_ENTITY(vehicle[iT].id) IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehicle[iT].id,false) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[iT].id) ENDIF ENDIF ENDIF ENDIF ENDREPEAT SET_MODEL_AS_NO_LONGER_NEEDED(prop_bin_07c) SET_MODEL_AS_NO_LONGER_NEEDED(G_M_Y_MEXGOON_01) SET_MODEL_AS_NO_LONGER_NEEDED(G_M_Y_MEXGOON_03) SET_MODEL_AS_NO_LONGER_NEEDED(BISON) actions[thisI].completed = TRUE ENDIF BREAK CASE ACTION_PREP_CHASE_STAGE //if player vehicle destroyed IF NOT IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) vehicle[VEH_TEMP].id = CREATE_VEHICLE(BISON,<<-1149.3323, -1593.0240, 3.2546>>, 307.5245) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[VEH_TEMP].id) ELSE IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(vehicle[VEH_PLAYER].id,<<-1139.456421,-1579.800781,3.365427>>) > 32.8 IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehicle[VEH_PLAYER].id) SET_ENTITY_AS_MISSION_ENTITY(vehicle[VEH_PLAYER].id) DELETE_VEHICLE(vehicle[VEH_PLAYER].id) ENDIF vehicle[VEH_TEMP].id = CREATE_VEHICLE(BISON,<<-1149.3323, -1593.0240, 3.2546>>, 307.5245) ENDIF ENDIF SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_DRIVING) HIDE_PED_WEAPON_FOR_SCRIPTED_CUTSCENE(PLAYER_PED_ID(),FALSE) if not IS_PED_INJURED(ped[PED_BUDDY].id) HIDE_PED_WEAPON_FOR_SCRIPTED_CUTSCENE(ped[PED_BUDDY].id,FALSE) ENDIF SET_CREATE_RANDOM_COPS(TRUE) if not DOES_ENTITY_EXIST(vehicle[VEH_OBJECTIVE].id) //only in debug skip will it not exist while NOT CREATE_PLAYER_VEHICLE(vehicle[VEH_OBJECTIVE].id, CHAR_FRANKLIN,<< -1134.0778, -1582.0682, 3.2928 >>,300,true,VEHICLE_TYPE_BIKE) SAFEWAIT(2) ENDWHILE ENDIF if IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) SET_ENTITY_LOAD_COLLISION_FLAG(vehicle[VEH_OBJECTIVE].id,true) ENDIF SET_ROADS_IN_ANGLED_AREA(<<-966.159363,-1187.304077,-0.770555>>, <<-1094.655273,-964.723083,15.130554>>, 10.312500,FALSE,FALSE) if DOES_BLIP_EXIST(ped[PED_BUDDY].blip) REMOVE_BLIP(ped[PED_BUDDY].blip) ENDIF //SET_WANTED_LEVEL_MULTIPLIER(1.0) if IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) vehicle[VEH_OBJECTIVE].blip = CREATE_BLIP_FOR_VEHICLE(vehicle[VEH_OBJECTIVE].id) endif if IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) START_AUDIO_SCENE("ARM_2_GET_TO_THE_CAR") ADD_ENTITY_TO_AUDIO_MIX_GROUP(vehicle[VEH_OBJECTIVE].id,"ARM_2_BAGGER_GROUP") ENDIF IF NOT IS_PED_INJURED(ped[ped_buddy].id) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_buddy].id,TRUE) ENDIF IF IS_AUDIO_SCENE_ACTIVE("ARM_2_GAS_TRAIL") STOP_AUDIO_SCENE("ARM_2_GAS_TRAIL") REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehicle[VEH_FLEE].id) ENDIF SET_ASSET_STAGE(ASSETS_STAGE_ALLEY_ENDS) actions[thisI].completed = TRUE BREAK CASE ACTION_DEAL_WITH_STUCK_BIKER BREAK CASE ACTION_BIKER_FLEES REQUEST_PATH_NODES_IN_AREA_THIS_FRAME(-1549, -1712,-950,-100) SWITCH actions[thisI].flag CASE 0 IF ARE_NODES_LOADED_FOR_AREA(-1549, -1712,-950,-100) seq() TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,TRUE) TASK_VEHICLE_DRIVE_TO_COORD(null,vehicle[VEH_OBJECTIVE].id,<< -1082.1672, -1544.5271, 3.5825 >>,25.0,DRIVINGSTYLE_RACING,DUMMY_MODEL_FOR_SCRIPT,DRIVINGMODE_AVOIDCARS_RECKLESS | DF_AvoidHighways | DF_UseStringPullingAtJunctions | DF_SteerAroundPeds,10,5) TASK_VEHICLE_DRIVE_TO_COORD(null,vehicle[VEH_OBJECTIVE].id,<< -1068.1123, -1535.1061, 3.8693 >>,25.0,DRIVINGSTYLE_RACING,DUMMY_MODEL_FOR_SCRIPT,DRIVINGMODE_AVOIDCARS_RECKLESS | DF_AvoidHighways | DF_UseStringPullingAtJunctions | DF_SteerAroundPeds,10,5) TASK_VEHICLE_DRIVE_TO_COORD(null,vehicle[VEH_OBJECTIVE].id,<< -1106.4408, -943.8071, 1.5151 >>,25.0,DRIVINGSTYLE_RACING,DUMMY_MODEL_FOR_SCRIPT,DRIVINGMODE_AVOIDCARS_RECKLESS | DF_AvoidHighways | DF_UseStringPullingAtJunctions | DF_SteerAroundPeds,10,5) TASK_VEHICLE_DRIVE_TO_COORD(null,vehicle[VEH_OBJECTIVE].id,<<-1188.9546, -728.5704, 19.7766>>,25.0,DRIVINGSTYLE_RACING,DUMMY_MODEL_FOR_SCRIPT,DRIVINGMODE_AVOIDCARS_RECKLESS | DF_AvoidHighways | DF_UseStringPullingAtJunctions | DF_SteerAroundPeds,10,5) TASK_VEHICLE_DRIVE_TO_COORD(null,vehicle[VEH_OBJECTIVE].id, <<-1322.4620, -579.8076, 28.4281>>,25.0,DRIVINGSTYLE_RACING,DUMMY_MODEL_FOR_SCRIPT,DRIVINGMODE_AVOIDCARS_RECKLESS | DF_AvoidHighways | DF_UseStringPullingAtJunctions | DF_SteerAroundPeds,10,5) TASK_VEHICLE_DRIVE_WANDER(null,vehicle[VEH_OBJECTIVE].id,25.0,DRIVINGMODE_AVOIDCARS | DF_AvoidHighways) endseq(ped[ped_bikeman].id) if not IS_ENTITY_DEAD(vehicle[VEH_OBJECTIVE].id) SET_VEHICLE_TYRES_CAN_BURST(vehicle[VEH_OBJECTIVE].id,FALSE) SET_VEHICLE_FORWARD_SPEED(vehicle[VEH_OBJECTIVE].id,5.0) ENDIF IF NOT IS_PED_INJURED(ped[ped_bikeman].id) //SET_PED_CAN_BE_KNOCKED_OFF_BIKE(ped[ped_bikeman].id,KNOCKOFFBIKE_) //removed because you can never knock him off now. SET_ENTITY_HEALTH(ped[ped_bikeman].id,100) //reset biker health SET_PED_CAN_BE_TARGETTED(ped[ped_bikeman].id,TRUE) SET_ENTITY_PROOFS(ped[ped_bikeman].id,FALSE,FALSE,FALSE,FALSE,FALSE) // SET_ENTITY_HEALTH(ped[ped_bikeman].id,250) ENDIF REPLAY_RECORD_BACK_FOR_TIME(4.0, 5.0, REPLAY_IMPORTANCE_HIGHEST) actions[thisI].flag++ ENDIF BREAK ENDSWITCH BREAK CASE ACTION_LEMAR_FOLLOW_PLAYER IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) IF NOT IS_PED_GROUP_MEMBER(ped[PED_BUDDY].id,GET_PED_GROUP_INDEX(player_ped_id())) IF GET_DISTANCE_BETWEEN_ENTITIES(ped[PED_BUDDY].id,player_ped_id()) < 30.0 SET_PED_AS_GROUP_MEMBER(ped[PED_BUDDY].id,GET_PED_GROUP_INDEX(player_ped_id())) SET_GROUP_SEPARATION_RANGE(GET_PED_GROUP_INDEX(player_ped_id()),45.0) SET_PED_CAN_TELEPORT_TO_GROUP_LEADER(ped[PED_BUDDY].id, GET_PED_GROUP_INDEX(player_ped_id()), TRUE) SET_PED_GROUP_MEMBER_PASSENGER_INDEX(ped[PED_BUDDY].id,VS_FRONT_RIGHT) SET_PED_CONFIG_FLAG(ped[PED_BUDDY].id,PCF_TeleportToLeaderVehicle,TRUE) ENDIF ENDIF ENDIF BREAK CASE ACTION_BIKER_REACTS_TO_PLAYER_CLOSING_IN IF ARE_NODES_LOADED_FOR_AREA(-1549, -1712,-950,-100) IF NOT IS_PED_INJURED(ped[ped_bikeman].id) if GET_SCRIPT_TASK_STATUS(ped[ped_bikeman].id,SCRIPT_TASK_PERFORM_SEQUENCE) = PERFORMING_TASK //add below tasks depending on which stage of progress reached seq() if GET_SEQUENCE_PROGRESS(ped[ped_bikeman].id) <= 0 TASK_VEHICLE_DRIVE_TO_COORD(null,vehicle[VEH_OBJECTIVE].id,<< -1061.8494, -1530.7161, 4.0065 >>,30.0,DRIVINGSTYLE_RACING,DUMMY_MODEL_FOR_SCRIPT,DRIVINGMODE_AVOIDCARS_RECKLESS | DF_AvoidHighways | DF_UseStringPullingAtJunctions | DF_SteerAroundPeds,5,5) endif if GET_SEQUENCE_PROGRESS(ped[ped_bikeman].id) <= 1 TASK_VEHICLE_DRIVE_TO_COORD(null,vehicle[VEH_OBJECTIVE].id,<< -1068.1123, -1535.1061, 3.8693 >>,30.0,DRIVINGSTYLE_RACING,DUMMY_MODEL_FOR_SCRIPT,DRIVINGMODE_AVOIDCARS_RECKLESS | DF_AvoidHighways | DF_UseStringPullingAtJunctions | DF_SteerAroundPeds,5,5) endif if GET_SEQUENCE_PROGRESS(ped[ped_bikeman].id) <= 2 TASK_VEHICLE_DRIVE_TO_COORD(null,vehicle[VEH_OBJECTIVE].id,<< -1106.4408, -943.8071, 1.5151 >>,30.0,DRIVINGSTYLE_RACING,DUMMY_MODEL_FOR_SCRIPT,DRIVINGMODE_AVOIDCARS_RECKLESS | DF_AvoidHighways | DF_UseStringPullingAtJunctions | DF_SteerAroundPeds,5,5) endif if GET_SEQUENCE_PROGRESS(ped[ped_bikeman].id) <= 3 TASK_VEHICLE_DRIVE_TO_COORD(null,vehicle[VEH_OBJECTIVE].id,<<-1188.9546, -728.5704, 19.7766>>,30.0,DRIVINGSTYLE_RACING,DUMMY_MODEL_FOR_SCRIPT,DRIVINGMODE_AVOIDCARS_RECKLESS | DF_AvoidHighways | DF_UseStringPullingAtJunctions | DF_SteerAroundPeds,5,5) ENDIF if GET_SEQUENCE_PROGRESS(ped[ped_bikeman].id) <= 4 TASK_VEHICLE_DRIVE_TO_COORD(null,vehicle[VEH_OBJECTIVE].id, <<-1322.4620, -579.8076, 28.4281>>,30.0,DRIVINGSTYLE_RACING,DUMMY_MODEL_FOR_SCRIPT,DRIVINGMODE_AVOIDCARS_RECKLESS | DF_AvoidHighways | DF_UseStringPullingAtJunctions | DF_SteerAroundPeds,5,5) endif TASK_VEHICLE_MISSION_PED_TARGET(null,GET_VEHICLE_PED_IS_USING(ped[ped_bikeman].id),PLAYER_PED_ID(),MISSION_FLEE,25.0,DRIVINGMODE_AVOIDCARS_RECKLESS | DF_AvoidHighways,10, 15) endseq(ped[ped_bikeman].id) actions[thisI].completed = TRUE ELSE TASK_VEHICLE_MISSION_PED_TARGET(ped[ped_bikeman].id,GET_VEHICLE_PED_IS_USING(ped[ped_bikeman].id),PLAYER_PED_ID(),MISSION_FLEE,25.0,DRIVINGMODE_AVOIDCARS_RECKLESS | DF_AvoidHighways | DF_UseStringPullingAtJunctions | DF_SteerAroundPeds,10, 15) actions[thisI].completed = TRUE ENDIF ENDIF ENDIF BREAK CASE ACTION_BIKER_REACTS_TO_BEING_JACKED IF NOT IS_PED_INJURED(ped[ped_bikeman].id) IF IS_PED_BEING_JACKED(ped[ped_bikeman].id) TASK_SMART_FLEE_PED(ped[ped_bikeman].id,player_ped_id(),100.0,100000) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_bikeman].id,FALSE) SET_PED_KEEP_TASK(ped[ped_bikeman].id,TRUE) SET_PED_AS_NO_LONGER_NEEDED(ped[ped_bikeman].id) SET_PED_CAN_BE_TARGETTED(ped[ped_bikeman].id,TRUE) actions[thisI].completed = TRUE ENDIf ENDIF BREAK CASE ACTION_BIKER_REACTS_TO_COMING_OFF_BIKE IF NOT IS_PED_INJURED(ped[ped_bikeman].id) TASK_SMART_FLEE_PED(ped[ped_bikeman].id,player_ped_id(),100.0,100000) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_bikeman].id,FALSE) SET_PED_KEEP_TASK(ped[ped_bikeman].id,TRUE) SET_PED_CAN_BE_TARGETTED(ped[ped_bikeman].id,TRUE) SET_PED_AS_NO_LONGER_NEEDED(ped[ped_bikeman].id) // SET_ENTITY_HEALTH(ped[ped_bikeman].id,0) actions[thisI].completed = TRUE ENDIF BREAK CASE ACTION_MUSIC_CHASE playMusic("ARM2_CHASE_START",FALSE,"ARM2_CHASE_MID") actions[thisI].completed = TRUE BREAK CASE ACTION_MUSIC_IN_CAR playMusic("ARM2_CHASE_MID",TRUE,"ARM2_STOP_TRACK") IF IS_AUDIO_SCENE_ACTIVE("ARM_2_GET_TO_THE_CAR") STOP_AUDIO_SCENE("ARM_2_GET_TO_THE_CAR") // REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehicle[VEH_OBJECTIVE].id) //removed as per bug 1514520 ENDIF START_AUDIO_SCENE("ARM_2_CHASE_THE_BIKE") actions[thisI].completed = TRUE BREAK CASE ACTION_MUSIC_BIKER_DOWN IF NOT bPreloadRequest playMusic("ARM2_STOP_TRACK",TRUE,"") IF IS_AUDIO_SCENE_ACTIVE("ARM_2_CHASE_THE_BIKE") STOP_AUDIO_SCENE("ARM_2_CHASE_THE_BIKE") ENDIF actions[thisI].completed = TRUE ENDIF BREAK CASE ACTION_ENSURE_LAMAR_CLIMBS_GATE IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) IF GET_SCRIPT_TASK_STATUS(ped[PED_BUDDY].id,script_task_perform_sequence) = FINISHED_TASK seq() TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1130.3208, -1589.8260, 3.3891>>,pedmove_run,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,39) TASK_CLIMB(null,TRUE) endseq(ped[PED_BUDDY].id) ENDIF ENDIF BREAK CASE ACTION_LAMAR_GETS_IN_PLAYER_CAR IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) IF NOT IS_PED_IN_GROUP(ped[PED_BUDDY].id) IF IS_VEHICLE_DRIVEABLE(vehicle[veh_player].id) TASK_ENTER_VEHICLE(ped[PED_BUDDY].id,vehicle[veh_player].id,DEFAULT_TIME_NEVER_WARP,VS_FRONT_RIGHT) //removed default time before warp because player was seen to warp in to car url:bugstar:1428472 actions[thisI].completed = TRUE ENDIF ENDIF ENDIF BREAK CASE ACT_LAMAR_LOOKS_AT_PLAYER_APPROACH IF GET_GAME_TIMER() > actions[thisI].intA IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) TASK_LOOK_AT_ENTITY(ped[PED_BUDDY].id,player_ped_id(),3000) actions[thisI].intA = GET_GAME_TIMER() + 2500 ENDIF ENDIF BREAK CASE ACT_UPDATE_PROP_EMPLOYEE vector vPlayC vPlayC = GET_ENTITY_COORDS(player_ped_id()) IF vPlayC.x > -77 AND vPlayC.y > -1107.3765 SWITCH actions[thisI].flag CASE 0 REQUEST_MODEL(Prop_Employee_Month_02) actions[thisI].flag++ BREAK CASE 1 IF HAS_MODEL_LOADED(Prop_Employee_Month_02) oPropEmployeeOld = GET_CLOSEST_OBJECT_OF_TYPE(<<-29.13,-1102.377,27.26>>,0.5,Prop_Employee_Month_01) IF DOES_ENTITY_EXIST(oPropEmployeeOld) IF IS_ENTITY_VISIBLE(oPropEmployeeOld) SET_ENTITY_VISIBLE(oPropEmployeeOld,false) oPropEmployeeNew = CREATE_OBJECT_NO_OFFSET(prop_employee_month_02,GET_ENTITY_COORDS(oPropEmployeeOld)) SET_ENTITY_ROTATION(oPropEmployeeNew,<<0,0,-20>>) actions[thisI].flag++ ENDIF ENDIF ENDIF BREAK ENDSWITCH ELSE SWITCH actions[thisI].flag CASE 1 SET_MODEL_AS_NO_LONGER_NEEDED(Prop_Employee_Month_02) actions[thisI].flag = 0 BREAK CASE 2 IF DOES_ENTITY_EXIST(oPropEmployeeNew) DELETE_OBJECT(oPropEmployeeNew) SET_MODEL_AS_NO_LONGER_NEEDED(Prop_Employee_Month_02) ENDIF IF DOES_ENTITY_EXIST(oPropEmployeeOld) SET_ENTITY_VISIBLE(oPropEmployeeOld,true) SET_OBJECT_AS_NO_LONGER_NEEDED(oPropEmployeeOld) ENDIF actions[thisI].flag = 0 BREAK ENDSWITCH ENDIF BREAK CASE ACT_RESET_WANTED_LEVELS SET_WANTED_LEVEL_MULTIPLIER(1.0) SET_MAX_WANTED_LEVEL(6) actions[thisI].completed = TRUE BREAK CASE ACT_SET_LAMAR_FOR_STAGE IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_PED_IN_GROUP(ped[ped_buddy].id) REMOVE_PED_FROM_GROUP(ped[ped_buddy].id) SET_PED_GET_OUT_UPSIDE_DOWN_VEHICLE(ped[ped_buddy].id,TRUE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_buddy].id,TRUE) actions[thisI].completed = TRUE ENDIF ENDIF BREAK CASE ACT_LAMAR_GETS_IN_DRIVER_SEAT SWITCH actions[thisI].flag CASE 0 IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_PED_IN_ANY_VEHICLE(ped[ped_buddy].id) vehicle_index vehtemp vehtemp = GET_VEHICLE_PED_IS_USING(ped[ped_buddy].id) IF IS_PED_SITTING_IN_VEHICLE(ped[ped_buddy].id,vehtemp) IF GET_PED_VEHICLE_SEAT(ped[ped_buddy].id,vehtemp) = VS_FRONT_RIGHT IF IS_VEHICLE_SEAT_FREE(vehtemp,VS_DRIVER) actions[thisI].flag++ actions[thisI].intA = GET_GAME_TIMER() + 1000 ENDIF ENDIF ENDIF ENDIF ENDIf BREAK CASE 1 IF GET_GAME_TIMER() > actions[thisI].intA vehicle_index vehtemp vehtemp = GET_VEHICLE_PED_IS_USING(ped[ped_buddy].id) IF IS_VEHICLE_SEAT_FREE(vehtemp,VS_DRIVER) AND NOT IS_PED_GETTING_INTO_A_VEHICLE(player_ped_id()) IF NOT IS_THIS_MODEL_A_PLANE(GET_ENTITY_MODEL(vehtemp)) AND NOT IS_THIS_MODEL_A_HELI(GET_ENTITY_MODEL(vehtemp)) AND GET_ENTITY_MODEL(vehtemp) != BUS IF CAN_SHUFFLE_SEAT(vehtemp,VS_FRONT_RIGHT) cprintln(debug_Trevor3,"Shuffle") TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT(ped[ped_buddy].id,vehtemp) //TASK_ENTER_VEHICLE(ped[ped_buddy].id,vehtemp) actions[thisI].completed = TRUE ELSE cprintln(debug_Trevor3,"Enter vehicle") TASK_ENTER_VEHICLE(ped[ped_buddy].id,vehtemp) actions[thisI].completed = TRUE ENDIF ELSE IF NOT IS_ENTITY_IN_AIR(vehtemp) TASK_LEAVE_ANY_VEHICLE(ped[ped_buddy].id) actions[thisI].completed = TRUE ENDIF ENDIF ENDIF ENDIF BREAK endswitch BREAK CASE ACT_LAMAR_HEADS_BACK_HOME IF NOT IS_PED_INJURED(ped[ped_buddy].id) SWITCH actions[thisI].flag CASE 0 IF IS_CONDITION_TRUE(COND_LAMAR_HAS_NO_TASKS) IF IS_PED_SITTING_IN_ANY_VEHICLE(ped[ped_buddy].id) vehicle_index aVehicle aVehicle = GET_VEHICLE_PED_IS_IN(ped[ped_buddy].id) vehicle[veh_buddy].id = aVehicle IF IS_VEHICLE_DRIVEABLE(aVehicle) IF GET_PED_VEHICLE_SEAT(ped[ped_buddy].id,aVehicle) = VS_DRIVER TASK_VEHICLE_DRIVE_WANDER(ped[PED_BUDDY].id,aVehicle,10,DRIVINGMODE_STOPFORCARS | DF_SteerAroundPeds) actions[thisI].intA = GET_GAME_TIMER() + 5000 actions[thisI].flag++ ENDIF ENDIF ENDIF ENDIF BREAK CASE 1 IF GET_GAME_TIMER() > actions[thisI].intA IF IS_PED_SITTING_IN_ANY_VEHICLE(ped[ped_buddy].id) vehicle_index aVehicle aVehicle = GET_VEHICLE_PED_IS_IN(ped[ped_buddy].id) IF IS_VEHICLE_DRIVEABLE(aVehicle) IF GET_PED_VEHICLE_SEAT(ped[ped_buddy].id,aVehicle) = VS_DRIVER IF GET_PLAYER_WANTED_LEVEL(player_id()) > 0 seq() TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(null,aVehicle,<<-230.4853, -888.2496, 28.9850>>,20.0,DRIVINGMODE_AVOIDCARS_RECKLESS | DF_SteerAroundPeds,5) TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(null,aVehicle,<<-472.5658, -1092.5901, 25.8562>>,20.0,DRIVINGMODE_AVOIDCARS_RECKLESS | DF_SteerAroundPeds,5) endseq(ped[PED_BUDDY].id,TRUE) actions[thisI].flag=3 ELSE seq() TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(null,aVehicle,<<-230.4853, -888.2496, 28.9850>>,12.0,DRIVINGMODE_STOPFORCARS,5) TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(null,aVehicle,<<-472.5658, -1092.5901, 25.8562>>,12.0,DRIVINGMODE_STOPFORCARS,5) endseq(ped[PED_BUDDY].id,TRUE) actions[thisI].flag++ ENDIF ENDIF ENDIF ENDIF ENDIF BREAK CASE 2 IF IS_PED_SITTING_IN_ANY_VEHICLE(ped[ped_buddy].id) vehicle_index aVehicle aVehicle = GET_VEHICLE_PED_IS_IN(ped[ped_buddy].id) IF IS_VEHICLE_DRIVEABLE(aVehicle) IF GET_PED_VEHICLE_SEAT(ped[ped_buddy].id,aVehicle) = VS_DRIVER IF GET_PLAYER_WANTED_LEVEL(player_id()) > 0 seq() TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(null,aVehicle,<<-230.4853, -888.2496, 28.9850>>,20.0,DRIVINGMODE_AVOIDCARS_RECKLESS,5) TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(null,aVehicle,<<-472.5658, -1092.5901, 25.8562>>,20.0,DRIVINGMODE_AVOIDCARS_RECKLESS,5) endseq(ped[PED_BUDDY].id,TRUE) actions[thisI].flag=3 ENDIF ENDIF ENDIF ENDIF BREAK ENDSWITCH ENDIF BREAK CASE ACT_LAMAR_EXITS_UNDRIVEABLE_CAR IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF GET_SCRIPT_TASK_STATUS(ped[PED_BUDDY].id,SCRIPT_TASK_LEAVE_ANY_VEHICLE) = FINISHED_TASK IF NOT IS_ENTITY_IN_AIR(ped[PED_BUDDY].id) TASK_LEAVE_ANY_VEHICLE(ped[PED_BUDDY].id) ENDIF ENDIF ENDIF BREAK CASE ACT_STUCK_BIKE_CHECK // ADD_VEHICLE_UPSIDEDOWN_CHECK(vehicle[VEH_OBJECTIVE].id) actions[thisi].completed = TRUE BREAK CASE ACT_LAMAR_GETS_IN_ANY_CAR IF NOT IS_PED_INJURED(ped[ped_buddy].id) vehicle_index vehClosest vehClosest = FIND_CLOSEST_CAR_FOR_LAMAR() IF IS_VEHICLE_DRIVEABLE(vehClosest) SET_CONDITION_STATE(COND_LAMAR_GOING_FOR_EMPTY_CAR,TRUE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehClosest, false) TASK_ENTER_VEHICLE(ped[ped_buddy].id,vehClosest,DEFAULT_TIME_NEVER_WARP,vs_driver,pedmove_run,ECF_RESUME_IF_INTERRUPTED | ECF_JACK_ANYONE) SET_ACTION_FLAG(2,ACT_LAMAR_HEADS_BACK_HOME,0) vehicle[veh_buddy].id = vehClosest ELSE IF GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_ANY) != PERFORMING_TASK AND GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_ANY) != WAITING_TO_START_TASK AND GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_ANY) != DORMANT_TASK TASK_WANDER_STANDARD(ped[ped_buddy].id) SET_PED_MIN_MOVE_BLEND_RATIO(ped[ped_buddy].id,pedmove_run) ENDIF ENDIF //SET_ENTITY_AS_MISSION_ENTITY(vehiclearray[i]) // vehicle[veh_player].id = // TASK_ENTER_VEHICLE(player_ped_id(), //TASK_GO_TO_COORD_ANY_MEANS(ped[PED_BUDDY].id,<< -25.1429, -1445.8756, 29.6544 >>,pedmove_run,null) ENDIF BREAK CASE ACT_STOP_LAMAR_IF_IN_COMBAT_OR_NEARER_CAR IF NOT IS_PED_INJURED(ped[ped_buddy].id) SWITCH actions[thisI].flag CASE 0 IF IS_PED_IN_COMBAT(ped[ped_buddy].id) actions[thisI].flag++ actions[thisI].intA = GET_GAME_TIMER() + 5000 ENDIF IF GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_ENTER_VEHICLE) = PERFORMING_TASK IF GET_GAME_TIMER() > actions[thisI].intB actions[thisI].intB = GET_GAME_TIMER() + 5000 vehicle_index aCAr aCar= FIND_CLOSEST_CAR_FOR_LAMAR() IF aCar != GET_VEHICLE_PED_IS_ENTERING(ped[ped_buddy].id) CLEAR_PED_TASKS(ped[ped_buddy].id) ENDIF ENDIF ENDIF BREAK CASE 1 CLEAR_PED_TASKS(ped[ped_buddy].id) actions[thisI].flag = 0 BREAK ENDSWITCH ENDIF BREAK CASE ACT_LOAD_CUTSENE SWITCH actions[thisI].flag CASE 0 IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< -19.0794, -1452.7043, 29.5240 >>) < DEFAULT_CUTSCENE_LOAD_DIST + 100 REQUEST_ANIM_DICT("MISSARMENIAN2LeadInOutMCS_6") actions[thisI].flag++ ENDIF BREAK CASE 1 IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< -19.0794, -1452.7043, 29.5240 >>) < DEFAULT_CUTSCENE_LOAD_DIST AND NOT IS_PLAYER_CHANGING_CLOTHES() REQUEST_CUTSCENE("Armenian_2_mcs_6") SET_ASSET_STAGE(ASSETS_STAGE_FINAL_CUTSCENE) actions[thisI].flag++ ENDIF BREAK CASE 2 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Franklin", PLAYER_PED_ID()) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR",INT_TO_ENUM(PED_COMPONENT,0), 0, 0) //(head) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,1), 0, 0) //(berd) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,2), 2, 0) //(hair) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,3), 2, 0) //(uppr) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,4), 3, 0) //(lowr) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,5), 0, 0) //(hand) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,6), 1, 0) //(feet) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,7), 0, 0) //(teef) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,8), 0, 0) //(accs) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,9), 0, 0) //(task) actions[thisI].flag++ ENDIF BREAK CASE 3 IF actions[thisI].intB = 0 REMOVE_PED_FOR_DIALOGUE(MyLocalPedStruct,1) ADD_PED_FOR_DIALOGUE_EXTRA(1,player_ped_id(),"Franklin") actions[thisI].intB = 1 ELIF actions[thisI].intB = 1 IF PRELOAD_CONVERSATION(MyLocalPedStruct, "AR2AUD","AR2_MCS6_LI",CONV_PRIORITY_MEDIUM) actions[thisI].intB = 2 ENDIF ENDIF IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< -19.0794, -1452.7043, 29.5240 >>) > DEFAULT_CUTSCENE_LOAD_DIST + 100 OR IS_PLAYER_CHANGING_CLOTHES() REMOVE_CUTSCENE() actions[thisI].flag = 1 ENDIF BREAK ENDSWITCH BREAK CASE ACT_WARP_LAMAR_BACK SWITCH actions[thisI].flag CASE 0 IF iLamarWarpTimer < 0 iLamarWarpTimer = GET_GAME_TIMER() ENDIF //cprintln(debug_Trevor3,"Attempting to warp Lamar") IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) if not IS_ENTITY_ON_SCREEN(ped[PED_BUDDY].id) AND (IS_PED_IN_ANY_VEHICLE(ped[PED_BUDDY].id) OR GET_GAME_TIMER() >= iLamarWarpTimer + 15000 OR IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-4.03, -1401.22, 28.28>>, <<200,200,200>>, FALSE, FALSE)) CLEAR_AREA_OF_VEHICLES(<<-17.2737, -1401.2848, 28.3354>>,5.0) vehicle_index aVeh IF IS_VEHICLE_DRIVEABLE(vehicle[veh_player].id) IF NOT IS_PED_IN_VEHICLE(player_ped_id(),vehicle[veh_player].id) IF IS_VEHICLE_A_PLAYER_PERSONAL_VEHICLE(vehicle[veh_player].id) AND GET_ENTITY_MODEL(vehicle[veh_player].id) = GET_PLAYER_VEH_MODEL(CHAR_FRANKLIN,VEHICLE_TYPE_CAR) SET_ENTITY_COORDS(vehicle[veh_player].id,<<-17.3470, -1401.3712, 28.3343>>) SET_ENTITY_HEADING(vehicle[veh_player].id,270) // SET_VEHICLE_GEN_VEHICLE(VEHGEN_FRANKLIN_SAVEHOUSE_CAR, vehicle[veh_player].id) SET_MISSION_VEHICLE_GEN_VEHICLE(vehicle[veh_player].id,<<-17.3470, -1401.3712, 28.3343>>,270,VEHGEN_MISSION_VEH) SET_ENTITY_LOAD_COLLISION_FLAG(vehicle[veh_player].id,TRUE) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehicle[veh_player].id,TRUE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehicle[veh_player].id, true) // FREEZE_ENTITY_POSITION(vehicle[veh_player].id,TRUE) //cprintln(DEBUG_TREVOR3,"WARP PLAYER CAR") ELSE IF IS_PED_IN_ANY_VEHICLE(ped[PED_BUDDY].id) aVEh = GET_VEHICLE_PED_IS_IN(ped[PED_BUDDY].id) //CHECK IF BUDDY DROVE BACK IN PLAYER CAR OR ANOTHER VEHICLE IF aVEh = vehicle[veh_player].id IF NOT IS_THIS_MODEL_A_PLANE(GET_ENTITY_MODEL(vehicle[veh_player].id)) AND NOT IS_THIS_MODEL_A_HELI(GET_ENTITY_MODEL(vehicle[veh_player].id)) SET_ENTITY_AS_MISSION_ENTITY(vehicle[veh_player].id) SET_ENTITY_COORDS(vehicle[veh_player].id,<<-17.3470, -1401.3712, 28.3343>>) SET_ENTITY_HEADING(vehicle[veh_player].id,270) SET_ENTITY_LOAD_COLLISION_FLAG(vehicle[veh_player].id,TRUE) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehicle[veh_player].id,TRUE) // IF IS_SRL_LOADED() FREEZE_ENTITY_POSITION(vehicle[veh_player].id,TRUE) ENDIF SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehicle[veh_player].id, true) SET_MISSION_VEHICLE_GEN_VEHICLE(vehicle[veh_player].id, <<0.0,0.0,0.0>>, 0.0) ELSE IF NOT IS_THIS_MODEL_A_PLANE(GET_ENTITY_MODEL(vehicle[veh_player].id)) AND NOT IS_THIS_MODEL_A_HELI(GET_ENTITY_MODEL(vehicle[veh_player].id)) SET_ENTITY_AS_MISSION_ENTITY(vehicle[veh_player].id) ENDIF SET_MISSION_VEHICLE_GEN_VEHICLE(vehicle[veh_player].id, <<0.0,0.0,0.0>>, 0.0) if IS_VEHICLE_DRIVEABLE(aVEh) SET_ENTITY_AS_MISSION_ENTITY(aVEh,true,true) SET_ENTITY_COORDS(aVEh,<<-17.3470, -1401.3712, 28.3343>>) SET_ENTITY_HEADING(aVEh,270) SET_ENTITY_LOAD_COLLISION_FLAG(aVEh,TRUE) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(aVEh,TRUE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(aVEh, true) // FREEZE_ENTITY_POSITION(aVEh,TRUE) endif ENDIF endif ENDIF ENDIF //SCRIPT_ASSERT("locking car") //SET_VEHICLE_DOORS_LOCKED(aVeh, VEHICLELOCK_LOCKED) endif //recreate Lemar standing outside // initPed(PED_BUDDY,model_lamar,<< -17.0916, -1451.4877, 29.5705 >>, 166.9221) SET_ENTITY_COORDS(ped[ped_buddy].id,<<-4.03, -1401.22, 28.28>>) SET_ENTITY_HEADING(ped[ped_buddy].id,77.9221) SET_LEMAR_DEFAULTS(FALSE) CLEAR_PED_TASKS_IMMEDIATELY(ped[ped_buddy].id) FORCE_ACTION_STATE(1,ACT_LAMAR_GETS_IN_DRIVER_SEAT) FORCE_ACTION_STATE(2,ACT_LAMAR_HEADS_BACK_HOME) FORCE_ACTION_STATE(3,ACT_LAMAR_DRIVES_BACK_TO_HOME) FORCE_ACTION_STATE(4,ACT_LAMAR_EXITS_UNDRIVEABLE_CAR) FORCE_ACTION_STATE(5,ACT_LAMAR_GETS_IN_ANY_CAR) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_buddy].id,TRUE) SET_CONDITION_STATE(COND_LAMAR_WARPED_BACK,TRUE) ADD_SCENARIO_BLOCKING_AREA(<<25.3192, -1391.9436, 28.5742>>-<<40,40,20>>,<<25.3192, -1391.9436, 28.5742>>+<<40,40,20>>) // actions[thisI].completed = TRUE actions[thisI].flag++ endif endif BREAK case 1 RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<-9.370698,-1402.745361,26.931702>>, <<-9.507262,-1386.303345,32.583607>>, 9.937500,<<-17.3840, -1406.2609, 28.3184>>,0,<<6,20,10>>) REQUEST_MODEL(PROP_NPC_PHONE) actions[thisI].flag++ BREAK CASE 2 IF HAS_MODEL_LOADED(PROP_NPC_PHONE) IF NOT IS_PED_INJURED(ped[ped_buddy].id) model_phone = CREATE_OBJECT(PROP_NPC_PHONE,<<-4.7755, -1402.0266, 28.2746>>) ATTACH_ENTITY_TO_ENTITY(model_phone,ped[ped_buddy].id,GET_PED_BONE_INDEX(PED[ped_buddy].id, BONETAG_PH_L_HAND),vNull,vNull) TASK_PLAY_ANIM(ped[ped_buddy].id,"missarmenian2","lamar_texting",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_LOOPING | AF_USE_KINEMATIC_PHYSICS) ENDIF actions[thisI].flag++ ENDIF BREAK case 3 IF GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,script_task_play_anim) = FINISHED_TASK AND GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_PERFORM_SEQUENCE) = FINISHED_TASK IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[PED_BUDDY].id,<<-4.03, -1401.22, 28.28>>,FALSE) <= 0.5 TASK_PLAY_ANIM(ped[ped_buddy].id,"missarmenian2","lamar_texting",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_LOOPING) ENDIF ENDIF IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[PED_BUDDY].id,<<-4.03, -1401.22, 28.28>>,FALSE) > 0.5 IF GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_PERFORM_SEQUENCE) = FINISHED_TASK seq() TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-4.03, -1401.22, 28.28>>,pedmove_walk) TASK_ACHIEVE_HEADING(null,77.9221) endseq(ped[ped_buddy].id) ENDIF ENDIF break endSWITCH BREAK CASE ACT_STAT_BIKE_DAMAGE IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) actions[thisI].completed = TRUE ENDIF BREAK CASE ACT_DO_HINT_CAM //cprintln(debug_trevor3,"Hint: ") SWITCH actions[thisI].flag CASE 0 IF NOT IS_PED_INJURED(ped[ped_buddy].id) AND GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_BIKE) <> CAM_VIEW_MODE_FIRST_PERSON// Fix for url:bugstar:1999400 - Checking the player isn't in first person camera on approach to cutscene trigger. SET_GAMEPLAY_COORD_HINT(GET_ENTITY_COORDS(ped[ped_buddy].id), -1, 5000) SET_GAMEPLAY_HINT_FOLLOW_DISTANCE_SCALAR(0.510) SET_GAMEPLAY_HINT_CAMERA_RELATIVE_SIDE_OFFSET(0.4) SET_GAMEPLAY_HINT_CAMERA_RELATIVE_VERTICAL_OFFSET(-0.925) SET_GAMEPLAY_HINT_FOV(30.00) //SET_GAMEPLAY_ENTITY_HINT(PLAYER_PED_ID(),vFocusOffset,TRUE,10000,6000,DEFAULT_INTERP_OUT_TIME,HINTTYPE_ARM2_MCS6_VEHICLE) actions[thisI].flag++ ENDIF BREAK CASE 1 IF IS_GAMEPLAY_HINT_ACTIVE() IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id()) STOP_GAMEPLAY_HINT() actions[thisI].completed = TRUE ENDIF ELSE actions[thisI].completed = TRUE ENDIF BREAK ENDSWITCH BREAK CASE ACT_CUTSCENE_LEAD_IN SWITCH actions[thisI].flag CASE 0 SET_PLAYER_CONTROL(player_id(),false,SPC_LEAVE_CAMERA_CONTROL_ON) IF BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehicle[VEH_OBJECTIVE].id,4,2) IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id()) actions[thisI].completed = TRUE ELSE IF HAS_ANIM_DICT_LOADED("MISSARMENIAN2LeadInOutMCS_6") seq() TASK_LOOK_AT_ENTITY(null,ped[ped_buddy].id,12000) TASK_PLAY_ANIM(null,"MISSARMENIAN2LeadInOutMCS_6","_leadin_fra",normal_blend_in,normal_blend_out,-1,AF_HOLD_LAST_FRAME) endseq(player_ped_id()) actions[thisI].flag=2 ELSE REQUEST_ANIM_DICT("MISSARMENIAN2LeadInOutMCS_6") actions[thisI].flag++ ENDIF ENDIF ENDIF BREAK CASE 1 IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id()) actions[thisI].completed = TRUE ELSE IF HAS_ANIM_DICT_LOADED("MISSARMENIAN2LeadInOutMCS_6") IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id()) actions[thisI].completed = TRUE ELSE seq() TASK_LOOK_AT_ENTITY(null,ped[ped_buddy].id,12000) TASK_PLAY_ANIM(null,"MISSARMENIAN2LeadInOutMCS_6","_leadin_fra",normal_blend_in,normal_blend_out,-1,AF_HOLD_LAST_FRAME) endseq(player_ped_id()) actions[thisI].flag++ ENDIF ENDIF ENDIF BREAK CASE 2 BEGIN_PRELOADED_CONVERSATION() //IF CREATE_CONVERSATION_EXTRA("AR2_MCS6_LI",1,player_ped_id(),"Franklin") actions[thisI].flag++ //ENDIF BREAK CASE 3 IF IS_ENTITY_PLAYING_ANIM(player_ped_id(),"MISSARMENIAN2LeadInOutMCS_6","_leadin_fra") IF GET_ENTITY_ANIM_CURRENT_TIME(player_ped_id(),"MISSARMENIAN2LeadInOutMCS_6","_leadin_fra") = 1.0 actions[thisI].completed = TRUE ENDIF ELSE actions[thisI].completed = TRUE ENDIF BREAK ENDSWITCH BREAK ENDSWITCH IF actions[thisI].flag = CLEANUP actions[thisI].completed = TRUE actions[thisI].flag = 0 actions[thisI].active = FALSE ////cprintln(debug_trevor3,"a3") ENDIF ENDIF ENDIF ENDIF ENDPROC PROC ACTION_ON_ACTION(int thisI, enumActions thisiAction, int insiAction, enumActions thisAction,andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3 = COND_NULL) IF actions[thisI].action != thisiAction OR actions[thisI].active = FALSE actions[thisI].action = thisiAction actions[thisI].active = TRUE actions[thisI].ongoing = FALSE actions[thisI].completed = FALSE actions[thisI].flag = 0 actions[thisI].needsCleanup = FALSE actions[thisI].intA = 0 actions[thisI].intB = 0 actions[thisI].floatA = 0 ENDIF IF actions[thisI].completed = FALSE IF actions[insiAction].completed thisAction=thisAction action(thisI,thisiAction,playout_on_trigger,andOr1,cond1,andOr2,cond2,andOr3,cond3) ENDIF ENDIF ENDPROC PROC ACTION_ON_DIALOGUE(int thisI, enumActions thisAction, int diaEntry, enumDialogue thisDia) IF actions[thisI].action != thisAction OR actions[thisI].active = FALSE actions[thisI].action = thisAction actions[thisI].active = TRUE actions[thisI].completed = FALSE actions[thisI].flag = 0 actions[thisI].ongoing = FALSE actions[thisI].needsCleanup = FALSE actions[thisI].intA = 0 ENDIF IF actions[thisI].completed = FALSE IF dia[diaEntry].bCompleted thisDia=thisDia action(thisI,thisAction) ENDIF ENDIF ENDPROC // ----------------------------------------------------------------------------------------------------------- // Mission Cleanup // ----------------------------------------------------------------------------------------------------------- PROC RESET_ACTIONS() int i REPEAT COUNT_OF(actions) i //tell action to play its cleanup flag IF actions[i].needsCleanup actions[i].active = TRUE actions[i].flag = CLEANUP ACTION(i,actions[i].action,PLAYOUT_ON_TRIGGER) ENDIF //reset action actions[i].action = ACT_NULL actions[i].active = FALSE actions[i].ongoing = FALSE actions[i].completed = FALSE actions[i].flag = 0 actions[i].needsCleanup = FALSE actions[i].trackCondition = FALSE actions[i].intA = 0 ENDREPEAT ENDPROC // ================================================ SETUP Instructions ======================================== PROC RESET_INSTRUCTIONS() int i REPEAT COUNT_OF(instr) i instr[i].ins = INS_NULL instr[i].bCompleted = FALSE instr[i].flag = 0 instr[i].intA = 0 ENDREPEAT ENDPROC // ================================================ Setup Dialogue ============================================ PROC RESET_DIALOGUE() int i REPEAT COUNT_OF(dia) i dia[i].dial = DIA_NULL dia[i].bCompleted = FALSE dia[i].flag = 0 dia[i].bStarted = FALSE ENDREPEAT ENDPROC proc remove_objects() IF NOT IS_ENTITY_DEAD(openGarage) IF IS_ENTITY_PLAYING_ANIM(openGarage,"MISSARMENIAN2","open_garage_door") STOP_ENTITY_ANIM(openGarage,"open_garage_door","MISSARMENIAN2",-1.0) ENDIF SET_ENTITY_COLLISION(openGarage,TRUE) SET_OBJECT_AS_NO_LONGER_NEEDED(openGarage) ENDIF IF NOT IS_ENTITY_DEAD(openGarageb) IF IS_ENTITY_PLAYING_ANIM(openGarageb,"MISSARMENIAN2","open_garage_door") STOP_ENTITY_ANIM(openGarageb,"open_garage_door","MISSARMENIAN2",-1.0) ENDIF SET_ENTITY_COLLISION(openGarageb,TRUE) SET_OBJECT_AS_NO_LONGER_NEEDED(openGarageb) ENDIF IF DOES_ENTITY_EXIST(model_phone) DELETE_OBJECT(model_phone) ENDIF ENDPROC PROC DELETE_EVERYTHING(enumClenup cleanupState) int i //skip MISSION_FLOW_RELEASE_TRIGGER_SCENE_ASSETS(SP_MISSION_ARMENIAN_2) IF cleanupState != CLEANUP_PaSS WHILE NOT TRIGGER_MUSIC_EVENT("ARM2_MISSION_FAIL") safewait(4) ENDWHILE endif RESET_CONDITIONS() RESET_ACTIONS() RESET_INSTRUCTIONS() RESET_DIALOGUE() //RESET_FAILS() WHILE IS_CUTSCENE_ACTIVE() IF IS_CUTSCENE_PLAYING() STOP_CUTSCENE(TRUE) ELSE REMOVE_CUTSCENE() ENDIF SAFEWAIT(3) ENDWHILE // REMOVE_CUTSCENE() //CANCEL_MUSIC_EVENT("sPlayingMusic") CLEAR_WEATHER_TYPE_PERSIST() IF cleanupState != CLEANUP_SKIP SET_ALL_VEHICLE_GENERATORS_ACTIVE() SET_VEHICLE_MODEL_IS_SUPPRESSED(BAGGER,false) ENDIF STOP_STREAM() IF NOT IS_PED_INJURED(player_ped_id()) SET_ENTITY_PROOFS(player_ped_id(),FALSE,FALSE,FALSE,FALSE,FALSE) ENDIF IF cleanupState != CLEANUP_SKIP IF NOT IS_PED_INJURED(player_ped_id()) SET_PED_HELMET(PLAYER_PED_ID(),TRUE) ENDIF ENDIF IF NOT IS_PED_INJURED(player_ped_id()) IF IS_ENTITY_PLAYING_ANIM(player_ped_id(),"MISSARMENIAN2LeadInOutMCS_6","_leadin_fra") CLEAR_PED_TASKS(player_ped_id()) ENDIF ENDIF bNewMusicRequest=FALSE bRequiresPreload=FALSe bPreloadRequest=FALSe sMusicToPlay="" sPreloadMusic="" lamarProgress = Lprogress_NULL if DOES_PICKUP_EXIST(pickup_Armour) REMOVE_PICKUP(pickup_Armour) endif SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) SET_PLAYER_CONTROL(PLAYER_ID(),true) RENDER_SCRIPT_CAMS(FALSE,FALSE) DESTROY_ALL_CAMS() DISPLAY_RADAR(TRUE) DISPLAY_HUD(TRUE) // IF cleanupstate = CLEANUP_SKIP KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() KILL_ANY_CONVERSATION() STOP_SCRIPTED_CONVERSATION(TRUE) //ELSE // KILL_FACE_TO_FACE_CONVERSATION() //added this due to bug 951097 // KILL_ANY_CONVERSATION() //STOP_SCRIPTED_CONVERSATION(TRUE) //ENDIF //reset veariables bBanterOngoing = FALSE bLastConvoWithoutSubtitles = FALSE bBuddyKilledDrunk = FALSE bBuddyKilledDrunk=bBuddyKilledDrunk bPetrolBurning = FALSE clear_help_text() CLEAR_PRINTS() kill_all_events(TRUE) CONTROL_EVENTS(EVENTS_NULL) //this allows events to run their cleanup procedure. IF cleanupState != CLEANUP_SKIP REMOVE_ALL_COVER_BLOCKING_AREAS() SET_PED_ALLOW_HURT_COMBAT_FOR_ALL_MISSION_PEDS(TRUE) IF DOES_ENTITY_EXIST(openGarage) SET_ENTITY_INVINCIBLE(openGarage,FALSE) ENDIF IF DOES_ENTITY_EXIST(openGarageb) SET_ENTITY_INVINCIBLE(openGarageb,FALSE) ENDIF ENDIF //1992006 - If the player died then use the delayed cleanup system to close the door. IF IS_PLAYER_PLAYING(PLAYER_ID()) SET_DOOR_STATE(DOORNAME_ARM2_HENCH_01, DOORSTATE_FORCE_CLOSED_THIS_FRAME) set_door_lock(PROP_MAP_DOOR_01,<<-1104.6572,-1638.4814,4.6754>>,true,0) ELSE SET_CLEANUP_TO_RUN_ON_RESPAWN(RCI_ARMENIAN2) ENDIF REMOVE_SCENARIO_BLOCKING_AREAS() SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_NONE) IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(navblockA) REMOVE_NAVMESH_BLOCKING_OBJECT(navblockA) ENDIf IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(navblockB) REMOVE_NAVMESH_BLOCKING_OBJECT(navblockB) ENDIF KILL_CHASE_HINT_CAM(localChaseHintCamStruct) for i = 0 to MAX_VEH_COUNT-1 if DOES_ENTITY_EXIST(vehicle[i].id) IF IS_VEHICLE_DRIVEABLE(vehicle[i].id) FREEZE_ENTITY_POSITION(vehicle[i].id,FALSE) ENDIF /* IF cleanupState = CLEANUP_PASS AND i = VEH_PLAYER IF IS_VEHICLE_DRIVEABLE(vehicle[i].id) FREEZE_ENTITY_POSITION(vehicle[i].id,FALSE) IF g_sVehicleGenNSData.vehicleID[VEHGEN_FRANKLIN_SAVEHOUSE_CAR] = vehicle[i].id SET_VEHICLE_GEN_VEHICLE(VEHGEN_FRANKLIN_SAVEHOUSE_CAR, vehicle[i].id) ELSE IF IS_VEHICLE_DRIVEABLE(vehicle[i].id) IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehicle[i].id) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[i].id) ENDIF ENDIF ENDIF ////cprintln(DEBUG_TREVOR3,"SET CAR GEN CAR") ENDIF ELSE */ IF cleanupState = CLEANUP_SKIP IF DOES_BLIP_EXIST(vehicle[i].blip) remove_blip(vehicle[i].blip) ENDIF IF IS_VEHICLE_DRIVEABLE(vehicle[i].id) IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehicle[i].id) SET_ENTITY_AS_MISSION_ENTITY(vehicle[i].id,TRUE,TRUE) ENDIF DELETE_VEHICLE(vehicle[i].id) ELSE IF DOES_ENTITY_EXIST(vehicle[i].id) DELETE_VEHICLE(vehicle[i].id) ENDIF ENDIF ENDIF /* ELSE /////cprintln(DEBUG_TREVOR3,"NOT SET CAR GEN CAR") IF IS_VEHICLE_DRIVEABLE(vehicle[i].id) IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehicle[i].id) SET_ENTITY_AS_MISSION_ENTITY(vehicle[i].id,TRUE,TRUE) ENDIF ENDIf IF i != VEH_PLAYER SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[i].id) ENDIF ENDIF ENDIF*/ ENDIF ENDFOR int ij REPEAT COUNT_OF(parkedCar) ij IF DOES_ENTITY_EXIST(parkedCar[ij]) IF IS_VEHICLE_DRIVEABLE(parkedCar[ij]) DELETE_VEHICLE(parkedCar[ij]) ENDIF ENDIF ENDREPEAT REMOVE_OBJECTS() RESET_MISSION_STATS_ENTITY_WATCH() repeat COUNT_OF(damageEvent) i damageEvent[i].bActivated = FALSE ENDREPEAT for i = 1 to MAX_PED_COUNT-1 if DOES_ENTITY_EXIST(ped[i].id) IF cleanupstate = CLEANUP_FAIL_DEATH IF NOT IS_PED_INJURED(ped[i].id) IF IS_PED_IN_GROUP(ped[i].id) REMOVE_PED_FROM_GROUP(ped[i].id) ENDIF SET_PED_KEEP_TASK(ped[i].id,TRUE) ENDIF SET_PED_AS_NO_LONGER_NEEDED(ped[i].id) ELSE DELETE_PED(ped[i].id) ENDIF ENDIF ENDFOR IF DOES_ENTITY_EXIST(dead_ped1) DELETE_PED(dead_ped1) ENDIF IF DOES_ENTITY_EXIST(dead_ped2) DELETE_PED(dead_ped2) ENDIF IF DOES_ENTITY_EXIST(dead_ped3) DELETE_PED(dead_ped3) ENDIF IF DOES_ENTITY_EXIST(dummyGasCanister) SET_OBJECT_TARGETTABLE(dummyGasCanister,false) DELETE_OBJECT(dummyGasCanister) ENDIF IF DOES_BLIP_EXIST(pickup_gar1_blip) REMOVE_BLIP(pickup_gar1_blip) ENDIF IF DOES_BLIP_EXIST(garage_1_blip) REMOVE_BLIP(garage_1_blip) ENDIF IF DOES_BLIP_EXIST(garage_2_blip) REMOVE_BLIP(garage_2_blip) ENDIF IF DOES_BLIP_EXIST(mission_blip) REMOVE_BLIP(mission_blip) ENDIF IF DOES_BLIP_EXIST(garage_3_blip) REMOVE_BLIP(garage_3_blip) ENDIF if DOES_ENTITY_EXIST(dummyGasTrail) delete_OBJECT(dummyGasTrail) endif IF DOES_ENTITY_EXIST(objFakeGarage[0]) DELETE_OBJECT(objFakeGarage[0]) ENDIF IF DOES_ENTITY_EXIST(objFakeGarage[1]) DELETE_OBJECT(objFakeGarage[1]) ENDIF IF DOES_ENTITY_EXIST(oPropEmployeeOld) SET_ENTITY_VISIBLE(oPropEmployeeOld,TRUE) ENDIF IF DOES_ENTITY_EXIST(oPropEmployeeNew) DELETE_OBJECT(oPropEmployeeNew) ENDIF SET_MODEL_AS_NO_LONGER_NEEDED(PROP_GAR_DOOR_PLUG) SET_CREATE_RANDOM_COPS(TRUE) bitStoreChase = 0 iOpenedGarages = 0 NextChaseLine = "" iFireFlag=0 livingEnemyRem = 0 IF DOES_PICKUP_EXIST(pickup_gar1) REMOVE_PICKUP(pickup_gar1) ENDIF IF DOES_PICKUP_EXIST(pickup_shotgun) REMOVE_PICKUP(pickup_shotgun) ENDIF REMOVE_ALL_PICKUPS_OF_TYPE(PICKUP_WEAPON_PISTOL) CLEAR_MISSION_LOCATE_STUFF(sLocatesData,true) CLEAR_GPS_MULTI_ROUTE() IF cleanupState = CLEANUP_SKIP SET_DOOR_STATE(DOORNAME_ARM2_GARAGE_01,DOORSTATE_FORCE_LOCKED_THIS_FRAME) SET_DOOR_STATE(DOORNAME_ARM2_GARAGE_02,DOORSTATE_FORCE_LOCKED_THIS_FRAME) SET_DOOR_STATE(DOORNAME_ARM2_GARAGE_01,DOORSTATE_FORCE_CLOSED_THIS_FRAME) SET_DOOR_STATE(DOORNAME_ARM2_GARAGE_02,DOORSTATE_FORCE_CLOSED_THIS_FRAME) ELSE IF cleanupState = CLEANUP_PASS SET_DOOR_STATE(DOORNAME_ARM2_GARAGE_01,DOORSTATE_UNLOCKED) SET_DOOR_STATE(DOORNAME_ARM2_GARAGE_02,DOORSTATE_UNLOCKED) ELSE SET_DOOR_STATE(DOORNAME_ARM2_GARAGE_01,DOORSTATE_FORCE_LOCKED_THIS_FRAME) SET_DOOR_STATE(DOORNAME_ARM2_GARAGE_02,DOORSTATE_FORCE_LOCKED_THIS_FRAME) ENDIF ENDIF IF IS_DOOR_REGISTERED_WITH_SYSTEM(iGarHash) REMOVE_DOOR_FROM_SYSTEM(iGarHash) ENDIF REMOVE_COVER_POINT(buddy_cover) REMOVE_COVER_POINT(covA) REMOVE_COVER_POINT(covB) // REMOVE_COVER_POINT(coverPortaloo) REMOVE_COVER_POINT(coverForcedAtWall1) REMOVE_COVER_POINT(coverForcedAtWall2) REMOVE_COVER_POINT(coverForcedAtWall3) REMOVE_COVER_POINT(coverForcedAtWall4) REMOVE_COVER_POINT(coverForBackoffPed) REMOVE_COVER_POINT(enemySpawnCover) IF IS_AUDIO_SCENE_ACTIVE("ARM_2_DRIVE_TO_ALLEY") STOP_AUDIO_SCENE("ARM_2_DRIVE_TO_ALLEY") ENDIF IF IS_AUDIO_SCENE_ACTIVE("ARM_2_SEARCH_FOR_BIKE") STOP_AUDIO_SCENE("ARM_2_SEARCH_FOR_BIKE") ENDIF IF IS_AUDIO_SCENE_ACTIVE("ARM_2_GANG_DRIVE_PAST") STOP_AUDIO_SCENE("ARM_2_GANG_DRIVE_PAST") ENDIF IF IS_AUDIO_SCENE_ACTIVE("ARM_2_SHOOTOUT") STOP_AUDIO_SCENE("ARM_2_SHOOTOUT") ENDIF IF IS_AUDIO_SCENE_ACTIVE("ARM_2_RAYFIRE") STOP_AUDIO_SCENE("ARM_2_RAYFIRE") ENDIF IF IS_AUDIO_SCENE_ACTIVE("ARM_2_GAS_TRAIL") STOP_AUDIO_SCENE("ARM_2_GAS_TRAIL") ENDIF IF IS_AUDIO_SCENE_ACTIVE("ARM_2_GET_TO_THE_CAR") STOP_AUDIO_SCENE("ARM_2_GET_TO_THE_CAR") ENDIF IF IS_AUDIO_SCENE_ACTIVE("ARM_2_CHASE_THE_BIKE") STOP_AUDIO_SCENE("ARM_2_CHASE_THE_BIKE") ENDIF IF IS_AUDIO_SCENE_ACTIVE("ARM_2_RIDE_BIKE_BACK") STOP_AUDIO_SCENE("ARM_2_RIDE_BIKE_BACK") ENDIF int j for j = 0 to 30 if petrolTrail[j].pfx != null REMOVE_PARTICLE_FX(petrolTrail[j].pfx ) ENDIF petrolTrail[j].made = FALSE petrolTrail[j].time=0 petrolTrail[j].pfx=NULL ENDFOR iFlag=0 IF NOT IS_PED_INJURED(player_ped_id()) SET_PED_USING_ACTION_MODE(player_ped_id(),FALSE) ENDIF IF cleanupState = CLEANUP_SKIP CLEAR_ANGLED_AREA_OF_VEHICLES(<<-1061.553589,-1683.209473,3.436779>>, <<-1141.413574,-1572.998169,8.292084>>, 66.750000) CLEAR_ANGLED_AREA_OF_VEHICLES(<<-17.617701,-958.483826,11.382870>>, <<-90.494781,-1259.337769,76.551682>>, 250.000000) CLEAR_AREA_OF_PEDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),100.0) CLEAR_AREA_OF_OBJECTS(<< -1094.1509, -1641.6750, 3.4598 >>,80.0) CLEAR_AREA(GET_ENTITY_COORDS(PLAYER_PED_ID()),200.0,TRUE) //to ensure the wrecked flee car is deleted if z-skipping back to start of shootout set_gate(gate_instantShutLocked) ELSE set_gate(gate_release) ENDIF IF NOT IS_PED_INJURED(player_ped_id()) SET_PED_USING_ACTION_MODE(player_ped_id(),FALSE) ENDIF ENABLE_CONTROL_ACTION(player_control,INPUT_MELEE_ATTACK_LIGHT) ENABLE_CONTROL_ACTION(player_control,INPUT_MELEE_ATTACK_HEAVY) IF cleanupState != CLEANUP_SKIP SET_ROADS_IN_AREA(<< 12.0272, -1443.6243, 33.4360 >>,<< -58.0394, -1501.2678, 29.8437 >>,TRUE) SET_ROADS_IN_AREA(<< -1159.5867, -1594.7542, 0.2391 >>,<< -1119.5867, -1554.7542, 13.2391 >>,TRUE) SET_ROADS_BACK_TO_ORIGINAL_IN_ANGLED_AREA(<<-966.159363,-1187.304077,-0.770555>>, <<-1094.655273,-964.723083,15.130554>>, 10.312500) SET_PED_PATHS_BACK_TO_ORIGINAL(<< -21.8129, -1454.3429, 20.7942 >>,<< -17.8129, -1450.3429, 40.7942 >>) SET_PED_PATHS_BACK_TO_ORIGINAL(<<-1131.870605,-1586.095581,3.943655>>-<<5.562500,6.687500,1.125000>>,<<-1131.870605,-1586.095581,3.943655>>+<<5.562500,6.687500,1.125000>>) SET_PED_PATHS_BACK_TO_ORIGINAL(<<-1090.723022,-1656.140381,4.110459>>-<<2.125000,2.125000,1.000000>>,<<-1090.723022,-1656.140381,4.110459>>+<<2.125000,2.125000,1.000000>>) CLEAR_PED_NON_CREATION_AREA() ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT,TRUE) ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT,TRUE) SET_WANTED_LEVEL_MULTIPLIER(1.0) SET_MAX_WANTED_LEVEL(6) SET_VEHICLE_MODEL_IS_SUPPRESSED(TAILGATER,FALSE) REMOVE_MODEL_HIDE(<< -1089.8, -1637.8, 7.3 >>,1.0,Prop_LD_BalcFnc_02a,TRUE) g_propGarDoorBit = 0 //resets state of all ambient garage doors. ENDIF REMOVE_VEHICLE_ASSET(BURRITO) IF cleanupState != CLEANUP_SKIP #IF IS_DEBUG_BUILD if DOES_WIDGET_GROUP_EXIST(arm2_widget) DELETE_WIDGET_GROUP(arm2_widget) ENDIF #ENDIF ENDIF IF cleanupState = CLEANUP_SKIP IF NOT IS_PED_INJURED(player_ped_id()) SET_ENTITY_COORDS(player_ped_id(),GET_ENTITY_COORDS(player_ped_id())) ENDIF ENDIF IF NOT IS_PED_INJURED(player_ped_id()) IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1062.002441,-1662.212891,3.562896>>, <<-1066.942261,-1665.528687,6.366508>>, 3.312500) SET_ENTITY_COORDS(player_ped_id(), <<-1072.0076, -1670.0237, 3.4501>>) SET_ENTITY_HEADING(player_ped_id(), 32.8933) ENDIF IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1065.11841, -1668.92834, 6.39261>>, <<-1058.99023, -1664.48389, 3.43099>>, 4.0) SET_ENTITY_COORDS(player_ped_id(), <<-1072.0076, -1670.0237, 3.4501>>) SET_ENTITY_HEADING(player_ped_id(), 32.8933) ENDIF IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1104.534790,-1638.887695,3.640529>>, <<-1109.648315,-1642.474854,6.453030>>, 4.875000) SET_ENTITY_COORDS(player_ped_id(), <<-1102.9540, -1636.6654, 3.5846>>) SET_ENTITY_HEADING(player_ped_id(), 7.4969) ENDIF ENDIF IF cleanupState = CLEANUP_FAIL IF IS_SCREEN_FADED_OUT() vector vReturn IF IS_PLAYER_USING_A_TAXI() IF GET_SAFE_COORD_FOR_PED(GET_ENTITY_COORDS(player_ped_id()),true,vReturn) SET_ENTITY_COORDS(player_ped_id(),vReturn) ENDIF ENDIF ENDIF ENDIF SET_SCENARIO_GROUP_ENABLED("ARMENIAN_CATS",FALSE) //bug 2023887 //CLEAR_AREA(GET_ENTITY_COORDS(player_ped_id()),50,TRUE) //this was causing cops to be cleared. SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-43.781937,-1098.931885,25.859827>>-<<9.750000,6.750000,2.562500>>,<<-43.781937,-1098.931885,25.859827>>+<<9.750000,6.750000,2.562500>>,TRUE) //SET_GPS_ACTIVE(FALSE) ENDPROC PROC Mission_Cleanup(enumClenup cleanupState) //comented out as not sure of purpose //IF NOT forceCleanup //manageActions() //ENDIF DELETE_EVERYTHING(cleanupState) TERMINATE_THIS_THREAD() ENDPROC // ----------------------------------------------------------------------------------------------------------- // Mission Pass // ----------------------------------------------------------------------------------------------------------- PROC Mission_Passed() // if IS_CUTSCENE_ACTIVE() // STOP_CUTSCENE() // ENDIF SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_UNARMED) //debugMessage(DEBUG_MISSION,"Print mission passed") CLEAR_PRINTS() Mission_Flow_Mission_Passed() Mission_Cleanup(CLEANUP_PASS) ENDPROC // ----------------------------------------------------------------------------------------------------------- // Mission Fail // ----------------------------------------------------------------------------------------------------------- PROC Mission_Failed(String failText=null, int failDelay = 0) WHILE NOT TRIGGER_MUSIC_EVENT("ARM2_MISSION_FAIL") safewait(21) ENDWHILE IF IS_STRING_NULL(failText) failText = "ARM2_FAIL" ENDIF int failTime = get_game_timer() + failDelay IF failDelay > 0 WHILE GET_GAME_TIMER() < failTime WAIT(0) ENDWHILE ENDIF MISSION_FLOW_MISSION_FAILED_WITH_REASON(failText) WHILE NOT GET_MISSION_FLOW_SAFE_TO_CLEANUP() //Maintain anything that could look weird during fade out (e.g. enemies walking off). WAIT(0) ENDWHILE // check if we need to respawn the player in a different position, // if so call MISSION_FLOW_SET_FAIL_WARP_LOCATION() + SET_REPLAY_DECLINED_VEHICLE_WARP_LOCATION here Mission_Cleanup(CLEANUP_FAIL) // must only take 1 frame and terminate the thread ENDPROC PROC Mission_Failed_with_dialogue(String failText=null,string failDialogue=null) KILL_FACE_TO_FACE_CONVERSATION() WHILE NOT CREATE_CONVERSATION_EXTRA(failDialogue,0,player_ped_id(),"Franklin",3,ped[ped_buddy].id,"Lamar") safewait(18) ENDWHILE WHILE NOT IS_CONV_ROOT_PLAYING(failDialogue) safewait(19) ENDWHILE WHILE IS_CONV_ROOT_PLAYING(failDialogue) safewait(20) ENDWHILE WHILE NOT TRIGGER_MUSIC_EVENT("ARM2_MISSION_FAIL") safewait(21) ENDWHILE MISSION_FLOW_MISSION_FAILED_WITH_REASON(failText) WHILE NOT GET_MISSION_FLOW_SAFE_TO_CLEANUP() //Maintain anything that could look weird during fade out (e.g. enemies walking off). WAIT(0) ENDWHILE // check if we need to respawn the player in a different position, // if so call MISSION_FLOW_SET_FAIL_WARP_LOCATION() + SET_REPLAY_DECLINED_VEHICLE_WARP_LOCATION here Mission_Cleanup(CLEANUP_FAIL) ENDPROC proc trackCombatPeds() int i repeat COUNT_OF(ped) i //blips if DOES_BLIP_EXIST(ped[i].blip) if DOES_ENTITY_EXIST(ped[i].id) if is_ped_injured(ped[i].id) REMOVE_BLIP(ped[i].blip) ENDIF ELSE REMOVE_BLIP(ped[i].blip) ENDIF ENDIF ENDREPEAT ENDPROC // =================================== CHECK INSTRUCTIONS ======================================== FUNC BOOL IS_INSTRUCTION_COMPLETE(int iInsEntry, enumInstructions instructionToCheck) IF instr[iInsEntry].ins = instructionToCheck IF instr[iInsEntry].bCompleted = TRUE RETURN TRUE ENDIF ENDIF RETURN FALSE ENDFUNC // =================================== SET UP CONDITIONS ======================================== // Conditions setup FUNC BOOL IS_DIALOGUE_COMPLETE(enumDialogue thisDia) int i repeat count_of(dia) i IF dia[i].dial = thisDia IF dia[i].bCompleted RETURN TRUE ENDIF ENDIF ENDREPEAT RETURN FALSE ENDFUNC FUNC BOOL HAS_DIALOGUE_STARTED(int iAt, enumDialogue thisDia) IF dia[iAt].dial = thisDia IF dia[iAt].bStarted = TRUE RETURN TRUE ENDIF ENDIF RETURN FALSE ENDFUNC //======================================================= VARIABLES FOR NEW TEST ON TREVOR GET IN CHOPPER STAGE ============================= // ====================================== ACTION SETUP ==================================== int FailTime PROC FAIL(enumFails thisFailToCheck,andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL,andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL) IF checkANDOR(andOr1,cond1,andOr2,cond2) SWITCH thisFailToCheck CASE FAIL_DRIVER_IMPATIENT IF NOT IS_PED_INJURED(ped[ped_driver].id) GIVE_WEAPON_TO_PED(ped[ped_driver].id,WEAPONTYPE_PISTOL,INFINITE_AMMO,TRUE) seq() TASK_LEAVE_ANY_VEHICLE(null) TASK_COMBAT_PED(null,player_ped_id()) endseq(ped[ped_driver].id) ENDIF IF NOT IS_PED_INJURED(ped[ELSAL_PASSENGER].id) GIVE_WEAPON_TO_PED(ped[ELSAL_PASSENGER].id,WEAPONTYPE_PISTOL,INFINITE_AMMO,TRUE) seq() TASK_LEAVE_ANY_VEHICLE(null) TASK_COMBAT_PED(null,player_ped_id()) endseq(ped[ELSAL_PASSENGER].id) ENDIF Mission_Failed("ARM2_F01",2000) BREAK CASE FAIL_ATTACK_DRIVE_OFF_PEDS IF NOT IS_PED_INJURED(ped[ped_driver].id) GIVE_WEAPON_TO_PED(ped[ped_driver].id,WEAPONTYPE_PISTOL,INFINITE_AMMO,TRUE) SET_PED_COMBAT_ATTRIBUTES(ped[ped_driver].id,CA_DO_DRIVEBYS,TRUE) seq() IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),GET_PED_BONE_COORDS(ped[ped_driver].id,bonetag_root,<<0,0,0>>)) > 1.4 TASK_LEAVE_ANY_VEHICLE(null) ENDIF TASK_COMBAT_PED(null,player_ped_id()) endseq(ped[ped_driver].id) ENDIF IF NOT IS_PED_INJURED(ped[ELSAL_PASSENGER].id) GIVE_WEAPON_TO_PED(ped[ELSAL_PASSENGER].id,WEAPONTYPE_PISTOL,INFINITE_AMMO,TRUE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_PASSENGER].id,CA_DO_DRIVEBYS,TRUE) seq() IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),GET_PED_BONE_COORDS(ped[ELSAL_PASSENGER].id,bonetag_root,<<0,0,0>>)) > 1.4 TASK_LEAVE_ANY_VEHICLE(null) ENDIF TASK_COMBAT_PED(null,player_ped_id()) endseq(ped[ELSAL_PASSENGER].id) ENDIF Mission_Failed("ARM2_F01",1500) BREAK case FAIL_ENTERED_ALLEY_TO_EARLY Mission_Failed("ARM2_F01",2000) break CASE FAIL_CAR_BLOCKING_ELSALVS IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_DRIVEOFF].id) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[VEH_DRIVEOFF].id) IF gateState = gate_slowOpen AND gateRot = 1.0 IF NOT CHECK_AREA_NEAR_TO_PED_FREE_OF_CARS(ped[PED_BUDDY].id,<<-1133.036621,-1583.802734,2.556583>>, <<-1129.521118,-1588.629517,6.842000>>, 5.125000) IF NOT IS_PED_INJURED(ped[ped_driver].id) GIVE_WEAPON_TO_PED(ped[ped_driver].id,WEAPONTYPE_PISTOL,INFINITE_AMMO,TRUE) seq() TASK_LEAVE_ANY_VEHICLE(null) TASK_COMBAT_PED(null,player_ped_id()) endseq(ped[ped_driver].id) ENDIF IF NOT IS_PED_INJURED(ped[ELSAL_PASSENGER].id) GIVE_WEAPON_TO_PED(ped[ELSAL_PASSENGER].id,WEAPONTYPE_PISTOL,INFINITE_AMMO,TRUE) seq() TASK_LEAVE_ANY_VEHICLE(null) TASK_COMBAT_PED(null,player_ped_id()) endseq(ped[ELSAL_PASSENGER].id) ENDIF while not CREATE_CONVERSATION_EXTRA("AR2_BLOCK2",3,ped[ped_buddy].id,"LAMAR") wait(0) endwhile Mission_Failed("ARM2_F01",2000) ENDIF ENDIF ENDIF ENDIF BREAK CASE FAIL_CAR_ALARM_GOES_OFF Mission_Failed("ARM2_F01",2000) BREAK CASE FAIL_SMASH_OPEN_GATE IF gateState = gate_bashed_open create_shootout_ped(ELSAL_ALLEYEND_LEFTA,<<-1128.1415, -1605.5200, 3.3985>>, 341.9648,WEAPONTYPE_PISTOL) create_shootout_ped(ELSAL_ALLEYEND_LEFTB,<<-1127.1313, -1607.1345, 3.3985>>, 2.1088,WEAPONTYPE_PISTOL) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE,GET_PED_RELATIONSHIP_GROUP_HASH(PLAYER_PED_ID()),HASH_FOE_GROUP) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE,HASH_FOE_GROUP,GET_PED_RELATIONSHIP_GROUP_HASH(PLAYER_PED_ID())) SET_PED_TARGET_LOSS_RESPONSE(ped[ELSAL_ALLEYEND_LEFTA].id,TLR_NEVER_LOSE_TARGET) SET_PED_TARGET_LOSS_RESPONSE(ped[ELSAL_ALLEYEND_LEFTB].id,TLR_NEVER_LOSE_TARGET) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ELSAL_ALLEYEND_LEFTA].id,150) TASK_COMBAT_HATED_TARGETS_AROUND_PED(ped[ELSAL_ALLEYEND_LEFTB].id,150) SET_COMBAT_FLOAT(ped[ELSAL_ALLEYEND_LEFTA].id,CCF_MAX_SHOOTING_DISTANCE,6) SET_COMBAT_FLOAT(ped[ELSAL_ALLEYEND_LEFTA].id,CCF_MIN_DISTANCE_TO_TARGET,5) SET_COMBAT_FLOAT(ped[ELSAL_ALLEYEND_LEFTB].id,CCF_MAX_SHOOTING_DISTANCE,6) SET_COMBAT_FLOAT(ped[ELSAL_ALLEYEND_LEFTB].id,CCF_MIN_DISTANCE_TO_TARGET,5) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_ALLEYEND_LEFTA].id,CA_CAN_CHARGE,TRUE) SET_PED_COMBAT_ATTRIBUTES(ped[ELSAL_ALLEYEND_LEFTB].id,CA_CAN_CHARGE,TRUE) CREATE_BLIP_FOR_PED(ped[ELSAL_ALLEYEND_LEFTA].id,true) CREATE_BLIP_FOR_PED(ped[ELSAL_ALLEYEND_LEFTB].id,true) KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() clear_prints() while not CREATE_CONVERSATION_EXTRA("ARM2_GET4",8,ped[ELSAL_ALLEYEND_LEFTA].id,"ARM2VAGOS4") wait(0) endwhile Mission_Failed("ARM2_F11",2000) ENDIF BREAK CASE FAIL_LEFT_LAMAR_BEHIND IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_buddy].id) > ABANDON_BUDDY_FAIL_RANGE AND NOT IS_PLAYER_IN_ANY_SHOP() Mission_Failed("ARM2_F05") ENDIF //if still in shootout stage, do not allow player to enter the location where the biker drives in. IF missionProgress < STAGE_CHASE_AFTER_BIKE AND missionProgress >= STAGE_START_SHOOTOUT IF IS_ENTITY_IN_ANGLED_AREA(player_ped_id(),<<-1136.171875,-1579.050293,2.681220>>, <<-1129.542847,-1588.644775,7.067074>>, 56.750000) Mission_Failed("ARM2_F05") ENDIF ENDIF ENDIF BREAK CASE FAIL_LOST_THE_BIKER IF DOES_ENTITY_EXIST(vehicle[VEH_OBJECTIVE].id) IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),vehicle[VEH_OBJECTIVE].id) > 500 Mission_Failed_with_dialogue("ARM2_F06","ARM2_LOSEB") ENDIF ENDIF ENDIF BREAK CASE FAIL_LEFT_BIKE_BEHIND IF DOES_ENTITY_EXIST(vehicle[VEH_OBJECTIVE].id) IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),vehicle[VEH_OBJECTIVE].id) > 500 Mission_Failed("ARM2_F09") ENDIF ENDIF ENDIF BREAK CASE FAIL_DAMAGE_IN_SHOWROOM Mission_Failed("ARM2_F07") BREAK CASE FAIL_LAMAR_DIED IF DOES_ENTITY_EXIST(ped[PED_BUDDY].id) IF IS_PED_INJURED(ped[PED_BUDDY].id) // STOP_SYNCHRONIZED_ENTITY_ANIM(ped[PED_BUDDY].id,NORMAL_BLEND_OUT,true) Mission_Failed("ARM2_F02") ENDIF ENDIF BREAK CASE FAIL_SIMEON_DIED IF DOES_ENTITY_EXIST(ped[PED_SIMEON].id) IF IS_PED_INJURED(ped[PED_SIMEON].id) Mission_Failed("ARM2_F10") ENDIF ENDIF BREAK CASE FAIL_BIKE_UPSIDE_DOWN BREAK CASE FAIL_ALERTING_ELSALVS //this check will pass true the second time it gets here. If no enemy peds have been created, just fail the mission. IF FailTime > 0 IF NOT DOES_ENTITY_EXIST(ped[ELSAL_ALLEYEND_LEFTA].id) FailTime = -1 ENDIF ENDIF IF FailTime = 0 failTime = GET_GAME_TIMER() + 4000 ENDIF IF GET_GAME_TIMER() > failtime Mission_Failed("ARM2_F01",0) ENDIF BREAK CASE FAIL_SHOOTING_IN_ALLEY IF IS_PED_SHOOTING(player_ped_id()) Mission_Failed("ARM2_F01",0) ENDIF BREAK ENDSWITCH ENDIF ENDPROC PROC FORCE_DIALOGUE_STATE(int thisI, enumDialogue thisDialogue, bool setCompleted=TRUE) dia[thisI].bCompleted = setCompleted dia[thisI].dial = thisDialogue ENDPROC PROC FORCE_INSTRUCTION_STATE(int thisI, enumInstructions thisInstruction, bool setCompleted=TRUE) instr[thisI].bCompleted = setCompleted instr[thisI].ins = thisInstruction ENDPROC // =============================================== CONTROL ACTIONS, DIALOGUE AND CONDITIONS ================================ // ================================================ Conditions ================================== PROC checkConditions(enumconditions firstCondition, enumconditions lastCondition) //IF count_of(enumconditions) > NO_OF_CONDITIONS //SCRIPT_ASSERT("INCREASE CONST_INT NO_OF_CONDITIONS") //ENDIF int iLastArray = enum_to_int(lastCondition) - enum_to_int(firstCondition) IF conditions[0].condition != firstCondition AND conditions[iLastArray].condition != lastCondition int j int enumCounter = 0 REPEAT COUNT_OF(conditions) j IF j <= iLastArray conditions[j].condition = int_to_enum(enumconditions,enum_to_int(firstCondition) + enumCounter) conditions[j].active = TRUE conditions[j].returns = FALSE conditions[j].wasTrue = FALSE conditions[j].flag = 0 conditions[j].intA = 0 conditions[j].floatA = 0 enumCounter++ ELSE conditions[j].active = FALSE ENDIF ENDREPEAT ENDIF int i REPEAT COUNT_OF(conditions) i IF conditions[i].active SWITCH conditions[i].condition //drive to allet CASE COND_PLAYER_IN_VEHICLE IF IS_PED_IN_ANY_VEHICLE(player_ped_id(),TRUE) conditions[i].returns = TRUE ELSE conditions[i].returns = FALSE ENDIF BREAK case COND_PLAYER_30M_FROM_LAMAR conditions[i].returns = FALSE IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_buddy].id) > 30 conditions[i].returns = TRUE ENDIF ENDIF break CASE COND_WANTED_LEVEL conditions[i].returns = FALSE IF GET_PLAYER_WANTED_LEVEL(player_id()) != 0 conditions[i].returns = TRUE ENDIF BREAK CASE COND_LEMAR_IS_IN_A_CAR IF IS_VEHICLE_DRIVEABLE(vehicle[veh_player].id) AND NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_PED_IN_VEHICLE(ped[ped_buddy].id,vehicle[veh_player].id) OR IS_PED_GETTING_INTO_A_VEHICLE(ped[ped_buddy].id) conditions[i].returns = TRUE ELSE conditions[i].returns = FALSE ENDIF ENDIF BREAK CASE COND_PLAYER_OUT_OF_RANGE_OF_LAST_CAR SWITCH conditions[i].flag case 0 IF IS_VEHICLE_DRIVEABLE(vehicle[veh_player].id) IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),vehicle[veh_player].id) < 8 conditions[i].flag++ ENDIF ENDIF BREAK CASE 1 conditions[i].returns = FALSE IF IS_VEHICLE_DRIVEABLE(vehicle[veh_player].id) IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),vehicle[veh_player].id) > 12.0 conditions[i].returns = TRUE ENDIf ENDIF BREAK ENDSWITCH BREAK CASE COND_PLAYER_IN_CAR_LAMAR_NOT conditions[i].returns = FALSE IF IS_CONDITION_TRUE(COND_PLAYER_IN_VEHICLE) AND NOT IS_CONDITION_TRUE(COND_LEMAR_IS_IN_A_CAR) conditions[i].returns = TRUE ENDIF BREAK CASE COND_PLAYER_IN_A_DIFFERENT_CAR_TO_LEMAR conditions[i].returns = FALSE IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_PED_IN_ANY_VEHICLE(ped[ped_buddy].id) AND IS_PED_IN_ANY_VEHICLE(player_ped_id()) IF GET_VEHICLE_PED_IS_USING(player_ped_id()) != GET_VEHICLE_PED_IS_USING(ped[ped_buddy].id) //cprintln(DEBUG_TREVOR3,"DIFF CAR") conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_PLAYER_AND_LEMAR_IN_SAME_CAR conditions[i].returns = FALSE IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_PED_IN_ANY_VEHICLE(ped[ped_buddy].id) AND IS_PED_IN_ANY_VEHICLE(player_ped_id()) IF GET_VEHICLE_PED_IS_USING(player_ped_id()) = GET_VEHICLE_PED_IS_USING(ped[ped_buddy].id) conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_PLAYER_CAR_DOESNT_EXIST IF NOT IS_VEHICLE_DRIVEABLE(vehicle[veh_player].id) conditions[i].returns = TRUE ELSE conditions[i].returns = FALSE ENDIF BREAK CASE COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_LEAVING_CAR SWITCH conditions[i].flag CASE 0 IF IS_CONDITION_TRUE(COND_PLAYER_AND_LEMAR_IN_SAME_CAR) conditions[i].returns = FALSE conditions[i].flag++ ENDIF BREAK CASE 1 IF IS_CONDITION_FALSE(COND_PLAYER_AND_LEMAR_IN_SAME_CAR) conditions[i].flag=0 conditions[i].returns = TRUE ENDIF BREAK ENDSWITCH BREAK CASE COND_LEMAR_WANT_TO_COMMENT_ON_PLAYER_GETTING_BACK_IN_CAR SWITCH conditions[i].flag CASE 0 if IS_CONDITION_TRUE(COND_PLAYER_AND_LEMAR_IN_SAME_CAR) conditions[i].flag++ ENDIF break CASE 1 if IS_CONDITION_false(COND_PLAYER_AND_LEMAR_IN_SAME_CAR) conditions[i].flag++ conditions[i].returns = false ENDIF BREAK CASE 2 if IS_CONDITION_TRUE(COND_PLAYER_AND_LEMAR_IN_SAME_CAR) conditions[i].returns = TRUE conditions[i].flag=1 ENDIF BREAK ENDSWITCH BREAK CASE COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_RUNNING_AWAY_FROM_CAR SWITCH conditions[i].flag CASE 0 if IS_CONDITION_TRUE(COND_PLAYER_OUT_OF_RANGE_OF_LAST_CAR) OR IS_CONDITION_TRUE(COND_PLAYER_IN_A_DIFFERENT_CAR_TO_LEMAR) conditions[i].returns = TRUE conditions[i].flag++ endif break case 1 if IS_CONDITION_FALSE(COND_PLAYER_OUT_OF_RANGE_OF_LAST_CAR) and IS_CONDITION_FALSE(COND_PLAYER_IN_A_DIFFERENT_CAR_TO_LEMAR) conditions[i].returns = false conditions[i].flag=0 endif break endswitch BREAK CASE COND_LEMAR_WANTS_TO_COMMENT_ON_WANTED_LEVEL SWITCH conditions[i].flag CASE 0 if IS_CONDITION_TRUE(COND_WANTED_LEVEL) conditions[i].returns = TRUE conditions[i].flag++ endif break case 1 if IS_CONDITION_FALSE(COND_WANTED_LEVEL) conditions[i].returns = false conditions[i].flag=0 endif break endswitch BREAK CASE COND_PLAYER_AND_LEMAR_AT_DESTINATION SWITCH conditions[i].flag CASE 0 IF IS_CONDITION_FALSE(COND_WANTED_LEVEL) IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_ENTITY_AT_COORD(player_ped_id(),<<-1141.0928, -1576.7594, 3.3048>>,g_vAnyMeansLocate,true) AND IS_ENTITY_AT_COORD(ped[ped_buddy].id,<<-1141.0928, -1576.7594, 3.3048>>,g_vAnyMeansLocate) IF IS_CONDITION_TRUE(COND_PLAYER_AND_LEMAR_IN_SAME_CAR) conditions[i].flag = 1 ELSE conditions[i].returns = true conditions[i].flag = 2 ENDIF ENDIF ENDIF ENDIF BREAK CASE 1 IF IS_CONDITION_FALSE(COND_WANTED_LEVEL) IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) IF BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehicle[VEH_PLAYER].id,4.0) conditions[i].returns = true ENDIF ENDIF ELSE SET_PLAYER_CONTROL(player_id(),TRUE) conditions[i].flag = 0 ENDIF BREAK endswitch BREAK CASE COND_PLAYER_LEAVING_PLAYER_CAR_AREA IF NOT conditions[i].returns IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-17.20, -1083.98, 25.66>>) < 6 OR GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-39.38, -1078.51, 25.65>>) < 6 conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_BLOCK_TAUNTS IF IS_CONDITION_TRUE(COND_PLAYER_LEAVING_LAMAR) conditions[i].returns = true ELSE conditions[i].returns = false ENDIF BREAK CASE COND_PLAYER_LEAVING_LAMAR_NOT_IN_GROUP conditions[i].returns = false IF NOT IS_PED_INJURED(ped[PED_BUDdy].id) IF NOT IS_PED_IN_GROUP(ped[PED_BUDdy].id) IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_buddy].id) > 4.0 conditions[i].returns = true ENDIf ENDIF ENDIF BREAK CASE COND_PLAYER_200M_FROM_GARAGE IF NOT conditions[i].returns IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-58.0408, -1114.9807, 25.4358>>) > 200 conditions[i].returns = true ENDIF ENDIF BREAK CASE COND_SHOWROOM_RAMPAGE vehicle_index thisVeh conditions[i].flag = conditions[i].intA conditions[i].intA = 0 thisVeh = GET_CLOSEST_VEHICLE(<<-36.5853, -1101.4738, 26.3444>>, 5.0, BJXL, VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES) IF IS_VEHICLE_DRIVEABLE(thisVeh) conditions[i].intA += GET_ENTITY_HEALTH(thisVeh) ENDIF thisVeh = GET_CLOSEST_VEHICLE(<<-46.2594, -1097.8386, 26.3444>>, 5.0, SCHWARZER, VEHICLE_SEARCH_FLAG_RETURN_MISSION_VEHICLES) IF IS_VEHICLE_DRIVEABLE(thisVeh) conditions[i].intA += GET_ENTITY_HEALTH(thisVeh) ENDIF thisVeh = GET_CLOSEST_VEHICLE(<<-50.0800, -1094.4625, 26.0671>>, 5.0, TAILGATER, VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES) IF IS_VEHICLE_DRIVEABLE(thisVeh) conditions[i].intA += GET_ENTITY_HEALTH(thisVeh) ENDIF thisVeh = GET_CLOSEST_VEHICLE(<<-37.4128, -1088.5618, 26.0671>>, 5.0, TAILGATER, VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES) IF IS_VEHICLE_DRIVEABLE(thisVeh) conditions[i].intA += GET_ENTITY_HEALTH(thisVeh) ENDIF thisVeh = GET_CLOSEST_VEHICLE(<<-41.4259, -1099.6481, 26.0534>>, 5.0, BALLER, VEHICLE_SEARCH_FLAG_RETURN_MISSION_VEHICLES) IF IS_VEHICLE_DRIVEABLE(thisVeh) conditions[i].intA += GET_ENTITY_HEALTH(thisVeh) ENDIF IF GET_PED_RESET_FLAG(player_ped_id(),PRF_MeleeStrikeAgainstNonPed) IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-59.357796,-1092.619507,24.917713>>, <<-27.430742,-1104.519043,28.711697>>, 16.250000) conditions[i].returns = TRUE ENDIF ENDIF IF DOES_ENTITY_EXIST(ped[PED_SIMEON].id) IF not IS_PED_INJURED(ped[PED_SIMEON].id) if GET_SCRIPT_TASK_STATUS(ped[PED_SIMEON].id,SCRIPT_TASK_START_SCENARIO_IN_PLACE) = DORMANT_TASK // OR GET_SCRIPT_TASK_STATUS(ped[PED_SIMEON].id,SCRIPT_TASK_START_SCENARIO_IN_PLACE) = finished_task conditions[i].returns = TRUE endif endif endif IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-39.627991,-1099.240112,25.252590>>) < 150.5 IF HAS_BULLET_IMPACTED_IN_AREA(<<-39.627991,-1099.240112,25.252590>> ,26.5) conditions[i].returns = TRUE ENDIF //check explosions IF IS_EXPLOSION_IN_SPHERE(EXP_TAG_DONTCARE,<<-39.627991,-1099.240112,25.252590>> ,26.5) conditions[i].returns = TRUE ENDIF //check damage to vehicles in area IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-39.627991,-1099.240112,25.252590>>) < 26.5 IF IS_PED_SHOOTING(player_ped_id()) WEAPON_TYPE wep wep = WEAPONTYPE_UNARMED GET_CURRENT_PED_WEAPON(player_ped_id(),wep) SWITCH wep CASE WEAPONTYPE_BAT FALLTHRU CASE WEAPONTYPE_CROWBAR FALLTHRU CASE WEAPONTYPE_HAMMER FALLTHRU CASE WEAPONTYPE_KNIFE FALLTHRU // CASE WEAPONTYPE_LASSO // FALLTHRU CASE WEAPONTYPE_NIGHTSTICK FALLTHRU CASE WEAPONTYPE_PETROLCAN FALLTHRU CASE WEAPONTYPE_STICKYBOMB FALLTHRU CASE WEAPONTYPE_GRENADE FALLTHRU CASE WEAPONTYPE_DLC_BOTTLE BREAK DEFAULT conditions[i].returns = TRUE BREAK ENDSWITCH ENDIF ENDIF ENDIF If conditions[i].flag != 0 IF absi(conditions[i].flag - conditions[i].intA) < 200 AND absi(conditions[i].flag - conditions[i].intA) > 10 conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_LAMAR_FOLLOW_CONDITIONS IF IS_ACTION_COMPLETE(0,ACT_LAMAR_RUNS_UP_TO_CAR) conditions[i].returns = FALSE IF IS_CONDITION_TRUE(COND_PLAYER_IN_A_DIFFERENT_CAR_TO_LEMAR) OR IS_CONDITION_TRUE(COND_PLAYER_OUT_OF_RANGE_OF_LAST_CAR) OR IS_CONDITION_TRUE(COND_PLAYER_AND_LEMAR_IN_SAME_CAR) OR IS_CONDITION_TRUE(COND_PLAYER_IN_CAR_LAMAR_NOT) OR IS_CONDITION_TRUE(COND_PLAYER_LEAVING_LAMAR_NOT_IN_GROUP) IF IS_CONDITION_FALSE(COND_PLAYER_ENTERED_ALLEYWAY_UNALOWED) conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_PLAYER_ENTERED_ALLEYWAY_UNALOWED conditions[i].returns = FALSE IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1073.539795,-1666.452271,3.126540>>, <<-1120.645996,-1599.496338,21.711151>>, 51.000000) OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1061.875488,-1671.453735,1.990468>>, <<-1073.057495,-1659.666748,21.700609>>, 40.062500) conditions[i].returns = TRUE ENDIF BREAK CASE COND_PLAYER_WILL_FAIL_FOR_ENTERING_ALLEY IF NOT conditions[i].returns IF IS_CONDITION_TRUE(COND_PLAYER_ENTERED_ALLEYWAY_UNALOWED) IF conditions[i].intA = 0 conditions[i].intA = GET_GAME_TIMER() + 4000 ELSE IF GET_GAME_TIMER() > conditions[i].intA conditions[i].returns = TRUE ENDIF ENDIF ELSE conditions[i].intA = 0 ENDIF ENDIF BREAK CASE COND_ENEMY_VAGOS_SPAWNED IF NOT IS_PED_INJURED(ped[ELSAL_ALLEYEND_LEFTA].id) conditions[i].returns = TRUE ENDIF BREAK CASE COND_PLAYER_IN_A_CAR_IN_ALLEYWAY_TOO_EARLY vehicle_index bVeh bVeh= GET_LAST_DRIVEN_VEHICLE() IF DOES_ENTITY_EXIST(bVeh) IF IS_VEHICLE_DRIVEABLE(bVeh) IF IS_ENTITY_IN_ANGLED_AREA(bVeh, <<-1130.123535,-1589.142700,2.211170>>, <<-1067.226074,-1677.451050,9.856807>>, 33.062500) OR IS_ENTITY_IN_ANGLED_AREA(bVeh, <<-1126.999878,-1586.846680,2.961027>>, <<-1132.133789,-1590.443237,7.032865>>, 1.437500) conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_ALLEY_PEDS_ALERTED IF IS_ACTION_COMPLETE(12,ACT_SPAWN_FAIL_RESPONSE_ELSALVS) conditions[i].returns = TRUE ENDIF BREAK CASE COND_BANTER_STATUS_SAVED IF IS_CONDITION_TRUE(COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_LEAVING_CAR) OR IS_CONDITION_TRUE(COND_LEMAR_WANT_TO_COMMENT_ON_PLAYER_GETTING_BACK_IN_CAR) OR IS_CONDITION_TRUE(COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_RUNNING_AWAY_FROM_CAR) OR IS_CONDITION_TRUE(COND_LEMAR_WANTS_TO_COMMENT_ON_WANTED_LEVEL) if bBanterOngoing IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() restartLine = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION() if not is_string_void(restartLine) restartRoot = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT() ENDIF KILL_FACE_TO_FACE_CONVERSATION() bBanterOngoing = TRUE endif bBanterOngoing = FALSE conditions[i].returns = TRUE else conditions[i].returns = TRUE endif ENDIF BREAK CASE COND_CHASE_BANTER_STATUS_SAVED IF IS_CONDITION_TRUE(COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_LEAVING_CAR) OR IS_CONDITION_TRUE(COND_LEMAR_WANT_TO_COMMENT_ON_PLAYER_GETTING_BACK_IN_CAR) OR IS_CONDITION_TRUE(COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_RUNNING_AWAY_FROM_CAR) OR IS_CONDITION_TRUE(COND_LEMAR_WANTS_TO_COMMENT_ON_WANTED_LEVEL) if bBanterOngoing IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() restartLine = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION() if not is_string_void(restartLine) restartRoot = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT() ENDIF KILL_FACE_TO_FACE_CONVERSATION() bBanterOngoing = TRUE endif bBanterOngoing = FALSE conditions[i].returns = TRUE else conditions[i].returns = TRUE endif ENDIF BREAK //advance down alley CASE cond_vehicle_come_to_stop if not conditions[i].returns IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_PED_IN_ANY_VEHICLE(ped[ped_buddy].id) VEHICLE_INDEX niceveh niceveh = GET_VEHICLE_PED_IS_IN(ped[ped_buddy].id) IF IS_VEHICLE_DRIVEABLE(niceveh) IF GET_ENTITY_SPEED(niceveh) < 1.0 conditions[i].returns = TRUE ENDIF ENDIF endif ENDIF endif BREAK case COND_trigger_bum IF NOT conditions[i].returns IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_ENTITY_IN_ANGLED_AREA( ped[ped_buddy].id, <<-1127.089844,-1586.754272,4.648631>>, <<-1132.246338,-1590.346802,6.931557>>, 1.875000) //IS_ENTITY_IN_ANGLED_AREA( ped[ped_buddy].id, <<-1129.465332,-1588.786987,2.398673>>, <<-1109.243408,-1619.051636,5.773672>>, 25.750000) OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1129.465332,-1588.786987,2.398673>>, <<-1109.243408,-1619.051636,5.773672>>, 25.750000) conditions[i].returns = TRUE ENDIF ENDIF ENDIF break CASE COND_lemar_climbed_gate IF NOT conditions[i].returns IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_ENTITY_IN_ANGLED_AREA( ped[ped_buddy].id, <<-1129.465332,-1588.786987,2.398673>>, <<-1109.243408,-1619.051636,5.773672>>, 25.750000) conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_lemar_at_bum IF NOT conditions[i].returns IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_ENTITY_IN_ANGLED_AREA( ped[ped_buddy].id, <<-1112.393799,-1602.359741,2.913989>>, <<-1119.862915,-1607.588013,6.320321>>, 2.187500) //if IS_ENTITY_AT_COORD(ped[PED_BUDDY].id,<< -1116.379, -1603.855, 4.439 >>,<<0.4,0.4,2.0>>) conditions[i].returns = TRUE endif endif endif BREAK CASE COND_player_hit_bum IF NOT conditions[i].returns SWITCH conditions[i].flag CASE 0 IF DOES_ENTITY_EXIST(ped[ped_drunk].id) IF NOT IS_PED_INJURED(ped[ped_drunk].id) IF GET_SCRIPT_TASK_STATUS(ped[ped_drunk].id,SCRIPT_TASK_PERFORM_SEQUENCE) = PERFORMING_TASK conditions[i].flag++ ENDIF ELSE conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE 1 IF NOT IS_PED_INJURED(ped[ped_drunk].id) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(ped[ped_drunk].id,player_ped_id()) OR GET_SCRIPT_TASK_STATUS(ped[ped_drunk].id,SCRIPT_TASK_PERFORM_SEQUENCE) = DORMANT_TASK conditions[i].returns = TRUE ENDIF ELSE conditions[i].returns = TRUE ENDIF BREAK ENDSWITCH ENDIF BREAK CASE COND_player_interupted_anim IF NOT conditions[i].returns IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_CONDITION_TRUE(COND_player_hit_bum) OR GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_PLAY_ANIM) = DORMANT_TASK OR (IS_CONDITION_TRUE(COND_lemar_at_bum) AND IS_PED_RAGDOLL(ped[ped_buddy].id)) IF NOT IS_ACTION_COMPLETE(1,ACTION_BUM_STAGGERS_FROM_GARAGE) conditions[i].returns = TRUE ENDIF ENDIF ENDIF ENDIF BREAK CASE COND_lemar_began_bum_interaction IF IS_ACTION_ONGOING(3,ACTION_LEMAR_INTERRACTS_WITH_BUM) //IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) // if HAS_ANIM_EVENT_FIRED(ped[PED_BUDDY].id,GET_HASH_KEY("PUNCHREACT")) conditions[i].returns = TRUE // ENDIF endif BREAK CASE COND_LEMAR_APPROACHING_GATE IF NOT conditions[i].returns IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_ENTITY_IN_ANGLED_AREA( ped[ped_buddy].id, <<-1127.826904,-1584.664795,1.898767>>, <<-1133.975342,-1589.041260,5.765991>>, 4.250000) conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_PLAYER_IN_ALLEYWAY conditions[i].returns = FALSE IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<-1130.123535,-1589.142700,2.211170>>, <<-1067.226074,-1677.451050,9.856807>>, 33.062500) OR (IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<-1126.999878,-1586.846680,2.961027>>, <<-1132.133789,-1590.443237,7.032865>>, 1.437500) AND IS_PLAYER_CLIMBING(player_id())) conditions[i].returns = TRUE ENDIF BREAK CASE COND_DIA_BIKE_IN_LOCKUP IF NOT conditions[i].returns SWITCH conditions[i].flag CASE 0 IF IS_CONV_ROOT_PLAYING("AR2_BU03") REPLAY_RECORD_BACK_FOR_TIME(0.5, 4.0) conditions[i].flag++ ENDIF BREAK CASE 1 IF NOT IS_CONV_ROOT_PLAYING("AR2_BU03") conditions[i].returns = TRUE ENDIF BREAK ENDSWITCH ENDIF BREAK CASE COND_DIA_BUM_SHOUTS_PLAYED IF NOT conditions[i].returns IF IS_CONV_ROOT_PLAYING("AR2_AN04") conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_LEMAR_HEADING_TOWARDS_BUM conditions[i].returns = FALSE IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_ENTITY_IN_ANGLED_AREA( ped[ped_buddy].id, <<-1125.593140,-1595.335815,3.075586>>, <<-1117.487671,-1606.939575,7.334638>>, 6.875000) conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_PLAYER_CLIMBING_GATE conditions[i].returns = FALSE IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1129.233154,-1587.623901,4.697088>>, <<-1128.405518,-1588.806763,7.398672>>, 6.875000) conditions[i].returns = TRUE ENDIF BREAK CASE COND_PLAYER_WITHIN_50M_OF_LAMAR conditions[i].returns = FALSE IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_buddy].id) < 50 conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_LEMAR_IN_RANGE_OF_CAR IF NOT conditions[i].returns IF NOT IS_PED_INJURED(ped[ped_buddy].id) if IS_ENTITY_IN_ANGLED_AREA( ped[PED_BUDDY].id, <<-1111.918579,-1608.710205,2.749123>>, <<-1107.077026,-1615.714844,6.152816>>, 22.437500) conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_CAR_CLOSING_ON_LEMAR IF NOT conditions[i].returns IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_DRIVEOFF].id) and not IS_PED_INJURED(ped[PED_BUDDY].id) IF GET_DISTANCE_BETWEEN_ENTITIES(vehicle[VEH_DRIVEOFF].id,ped[PED_BUDDY].id) < 20 conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_LEMAR_LOOKING_AT_PASSING_CAR IF IS_ACTION_ONGOING(9,ACTION_LEMAR_LOOKS_AT_PASSING_CAR) AND NOT IS_ACTION_COMPLETE(9,ACTION_LEMAR_LOOKS_AT_PASSING_CAR) conditions[i].returns = TRUE ELSE conditions[i].returns = FALSE ENDIF BREAK CASE COND_PLAYER_STOOD_INFRONT_OF_CAR conditions[i].returns = FALSE IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_DRIVEOFF].id) SWITCH conditions[i].flag CASE 0 if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[VEH_DRIVEOFF].id) conditions[i].flag++ ENDIF BREAK CASE 1 IF IS_ENTITY_APPROACHING_ENTITY(vehicle[VEH_DRIVEOFF].id,PLAYER_PED_ID(),fTemp,15.0,2.4,0.0) AND IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1131.669189,-1587.065552,0.197111>>, <<-1083.116943,-1654.017334,6.711177>>, 18.437500) conditions[i].returns = TRUE ENDIF BREAK ENDSWITCH //endif ENDIF BREAK CASE COND_PLAYER_NEXT_TO_ELSAL_CAR conditions[i].returns = FALSE IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_DRIVEOFF].id) IF GET_ENTITY_SPEED(vehicle[VEH_DRIVEOFF].id) < 1.0 IF GET_DISTANCE_BETWEEN_ENTITIES(vehicle[VEH_DRIVEOFF].id,player_ped_id()) < 3.0 conditions[i].returns = TRUE ENDIF ENDIF ELSE conditions[i].active = FALSE ENDIF BREAK CASE COND_PLAYER_AT_GARAGE1 IF IS_CONDITION_TRUE(COND_PLAYER_TOLD_TO_OPEN_GARAGES) IF NOT IS_CONDITION_TRUE(COND_PLAYER_AT_GARAGE1) float fAngToA fAngToA = absf(GET_ENTITY_HEADING(player_ped_id()) - GET_HEADING_FROM_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),<<-1067.1561,-1665.47168,3.55>>)) IF fAngToA > 180 fAngToA = ABSF(fAngToA-360) ENDIF float fHitangA fHitangA = 60.0 - fAngToA If fHitangA < 0 fHitAngA = 0 ENDIF fHitAngA *= 0.0433 IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1068.670654,-1664.626831,3.045230>>, <<-1066.666748,-1667.668335,5.714818>>, 1.4 + fHitAngA) AND fAngToA < 90 conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_PLAYER_AT_GARAGE2 IF IS_CONDITION_TRUE(COND_PLAYER_TOLD_TO_OPEN_GARAGES) IF NOT IS_CONDITION_TRUE(COND_PLAYER_AT_GARAGE2) float fAngToB fAngToB = absf(GET_ENTITY_HEADING(player_ped_id()) - GET_HEADING_FROM_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),<<-1064.92,-1668.621155,3.546325>>)) IF fAngToB > 180 fAngToB = ABSF(fAngToB-360) ENDIF float fHitangB fHitangB= 60.0 - fAngToB If fHitangB < 0 fHitAngB = 0 ENDIF fHitAngB *= 0.0433 IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1064.560181,-1670.806763,3.018936>>, <<-1066.666748,-1667.668335,5.714818>>, 1.4 + fHitAngB) AND fAngToB < 90 conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_PLAYER_AT_GARAGE3 conditions[i].returns = FALSE IF IS_CONDITION_TRUE(COND_IN_END_ALLEY_RANGE) IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1071.809937,-1677.795410,1.909934>>, <<-1075.767700,-1672.885620,5.900661>>, 3.250000) conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_FRANKLIN_HIT_BY_CAR IF NOT conditions[i].returns IF IS_CONDITION_TRUE(COND_LEMAR_IN_RANGE_OF_CAR) IF IS_PED_RAGDOLL(player_ped_id()) IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_DRIVEOFF].id) IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),vehicle[VEH_DRIVEOFF].id) < 5.0 conditions[i].returns = TRUE ENDIF ENDIF ENDIF ENDIF ENDIF BREAK CASE COND_LEMAR_CONTINUES_WALKING_DOWN_ALLEY_AFTER_CAR_BLOCK IF NOT conditions[i].returns IF IS_ACTION_COMPLETE(13,ACTION_LEMAR_REACTS_TO_PLAYER_BLOCKING_ELSAL) conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_DRUNK_KICK_ANIM_COMPLETED //what?!!! IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) IF IS_CONDITION_TRUE(COND_player_interupted_anim) OR IS_ACTION_COMPLETE(3,ACTION_LEMAR_INTERRACTS_WITH_BUM) conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_BUM_RETURNED_TO_GARAGE_FROM_ANIM if IS_ACTION_COMPLETE(1,ACTION_BUM_STAGGERS_FROM_GARAGE) conditions[i].returns = TRUE ENDIF BREAK CASE COND_VEHICLE_STOPPED conditions[i].returns = FALSE IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_DRIVEOFF].id) if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[VEH_DRIVEOFF].id) IF IS_ACTION_COMPLETE(11,ACTION_VEHICLE_BLOCKED_BY_PLAYER) conditions[i].returns = TRUE ENDIF endif ENDIF BREAK CASE COND_PLAYER_FAIL_BLOCKING_CAR SWITCH conditions[i].flag CASE 0 IF IS_CONV_ROOT_PLAYING("ARM2_OUT4") OR IS_DIALOGUE_COMPLETE(DIA_PLAYER_APPROACHES_STOPPED_ELSAL_CAR) conditions[i].flag++ ENDIF BREAK CASE 1 IF IS_DIALOGUE_COMPLETE(DIA_SALVS_RESPOND_TO_PLAYER_IN_WAY) OR IS_DIALOGUE_COMPLETE(DIA_PLAYER_APPROACHES_STOPPED_ELSAL_CAR) conditions[i].returns = TRUE ENDIF BREAK ENDSWITCH BREAK CASE COND_PLAYER_FAIL_CAR_ALARM IF IS_VEHICLE_DRIVEABLE(vehicle[veh_flee].id) IF IS_VEHICLE_ALARM_ACTIVATED(vehicle[veh_flee].id) // IF GET_VEHICLE_DOOR_ANGLE_RATIO(vehicle[veh_bison].id,SC_DOOR_FRONT_LEFT) > 0.01 // OR GET_VEHICLE_DOOR_ANGLE_RATIO(vehicle[veh_bison].id,SC_DOOR_FRONT_RIGHT) > 0.01 // OR GET_VEHICLE_DOOR_ANGLE_RATIO(vehicle[veh_bison].id,SC_DOOR_REAR_LEFT) > 0.01 // OR GET_VEHICLE_DOOR_ANGLE_RATIO(vehicle[veh_bison].id,SC_DOOR_REAR_RIGHT) > 0.01 conditions[i].returns = TRUE ENDIF ENDIF IF IS_VEHICLE_DRIVEABLE(vehicle[veh_bison].id) IF IS_VEHICLE_ALARM_ACTIVATED(vehicle[veh_bison].id) // IF GET_VEHICLE_DOOR_ANGLE_RATIO(vehicle[veh_bison].id,SC_DOOR_FRONT_LEFT) > 0.01 // OR GET_VEHICLE_DOOR_ANGLE_RATIO(vehicle[veh_bison].id,SC_DOOR_FRONT_RIGHT) > 0.01 // OR GET_VEHICLE_DOOR_ANGLE_RATIO(vehicle[veh_bison].id,SC_DOOR_REAR_LEFT) > 0.01 // OR GET_VEHICLE_DOOR_ANGLE_RATIO(vehicle[veh_bison].id,SC_DOOR_REAR_RIGHT) > 0.01 conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_PLAYER_LAGS_AS_LAMAR_HEADS_TO_ALLEY_END SWITCH conditions[i].flag CASE 0 IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_ENTITY_IN_ANGLED_AREA(ped[ped_buddy].id, <<-1098.358276,-1632.922241,-0.601469>>, <<-1065.555298,-1675.355103,24.193195>>, 19.750000) IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_buddy].id) > 20.0 /* float fAng fAng = GET_HEADING_FROM_ENTITIES(player_ped_id(),ped[ped_buddy].id) IF fAng > 127 AND fAng < 307 //cprintln(DEBUG_TREVOR3,"PLAYER LAGS TRUE") conditions[i].returns = TRUE conditions[i].flag++ ENDIF */ conditions[i].returns = TRUE conditions[i].flag++ ENDIF ENDIF ENDIF BREAK CASE 1 IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_buddy].id) < 15.0 conditions[i].returns = FALSE conditions[i].flag=0 ENDIF ENDIF BREAK ENDSWITCH BREAK CASE COND_PLAYER_TOO_FAR_BEHIND_LEMAR IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF NOT conditions[i].returns IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_buddy].id) > 20.0 //float fAng //fAng = GET_HEADING_FROM_ENTITIES(player_ped_id(),ped[ped_buddy].id) //IF fAng > 127 AND fAng < 307 conditions[i].returns = TRUE //ENDIF ENDIF ELSE IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_buddy].id) < 15.0 conditions[i].returns = FALSE ENDIF ENDIF ENDIF BREAK CASE COND_IN_END_ALLEY_RANGE conditions[i].returns = FALSE IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD( ped[ped_buddy].id,<<-1071.489502,-1672.068481,3.709275>>) < 48.75 conditions[i].returns = TRUE ENDIF BREAK CASE COND_LEMAR_NEAR_GARAGE IF NOT conditions[i].returns IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[ped_buddy].id,<<-1073.109375,-1670.528320,3.468073>>) < 12.8125 conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_CAR_PASSED_LEMAR IF NOT conditions[i].returns IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_DRIVEOFF].id) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[VEH_DRIVEOFF].id) IF GET_TIME_POSITION_IN_RECORDING(vehicle[VEH_DRIVEOFF].id) > 5000.0 conditions[i].returns = TRUE ENDIF ENDIF ENDIf ENDIF BREAK CASE COND_PLAYER_TOLD_TO_OPEN_GARAGES IF NOT conditions[i].returns SWITCH conditions[i].flag CASE 0 IF IS_CONDITION_TRUE(COND_LEMAR_NEAR_GARAGE) IF IS_THIS_PRINT_BEING_DISPLAYED("ARM2_INS07b") conditions[i].intA = get_Game_timer() + 1000 conditions[i].flag++ ENDIF ENDIF BREAK CASE 1 IF GET_GAME_TIMER() > conditions[i].intA conditions[i].returns = TRUE ENDIF BREAK ENDSWITCH endif BREAK CASE COND_LEMAR_REACHED_END_AND_WAITING SWITCH conditions[i].flag CASE 0 IF IS_CONDITION_TRUE(COND_LEMAR_NEAR_GARAGE) conditions[i].intA = GET_GAME_TIMER() + 12000 conditions[i].flag++ ENDIF BREAK CASE 1 IF GET_GAME_TIMER() > conditions[i].intA IF NOT IS_CONDITION_TRUE(COND_FIRST_GARAGE_OPENED) AND NOT IS_CONDITION_TRUE(COND_TWO_GARAGES_OPENED) conditions[i].returns = TRUE ELSE conditions[i].returns = FALSE ENDIF ENDIF BREAK ENDSWITCH BREAK CASE COND_LAMAR_NO_TASKS conditions[i].returns = FALSE IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_ANY) = FINISHED_TASK OR GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_ANY) = VACANT_STAGE conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_DRIVE_OFF_PEDS_FAIL IF DOES_ENTITY_EXIST(vehicle[VEH_DRIVEOFF].id) IF DOES_ENTITY_EXIST(ped[ped_driver].id) IF NOT IS_PED_INJURED(ped[ped_driver].id) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(ped[ped_driver].id,PLAYER_PED_ID()) conditions[i].returns = TRUE ENDIF IF NOT IS_ENTITY_DEAD(vehicle[VEH_DRIVEOFF].id) IF GET_VEHICLE_PED_IS_USING(player_ped_id()) = vehicle[VEH_DRIVEOFF].id IF GET_VEHICLE_DOOR_ANGLE_RATIO(vehicle[VEH_DRIVEOFF].id,SC_DOOR_FRONT_RIGHT) > 0.0 OR GET_VEHICLE_DOOR_ANGLE_RATIO(vehicle[VEH_DRIVEOFF].id,SC_DOOR_FRONT_LEFt) > 0.0 OR GET_VEHICLE_DOOR_ANGLE_RATIO(vehicle[VEH_DRIVEOFF].id,SC_DOOR_REAR_LEFT) > 0.0 OR GET_VEHICLE_DOOR_ANGLE_RATIO(vehicle[VEH_DRIVEOFF].id,SC_DOOR_REAR_RIGHT) > 0.0 conditions[i].returns = TRUE ENDIF ENDIF ENDIF IF IS_PED_IN_COMBAT(ped[ped_driver].id,PLAYER_PED_ID()) conditions[i].returns = TRUE ENDIF ELSE conditions[i].returns = TRUE ENDIF ENDIF IF missionProgress < STAGE_START_SHOOTOUT IF DOES_ENTITY_EXIST(ped[ELSAL_PASSENGER].id) IF NOT IS_PED_INJURED(ped[ELSAL_PASSENGER].id) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(ped[ELSAL_PASSENGER].id,PLAYER_PED_ID()) conditions[i].returns = TRUE ENDIF IF NOT IS_ENTITY_DEAD(vehicle[VEH_DRIVEOFF].id) IF NOT IS_PED_IN_VEHICLE(ped[ELSAL_PASSENGER].id,vehicle[VEH_DRIVEOFF].id) IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(),ped[ELSAL_PASSENGER].id) < 10.0 conditions[i].returns = TRUE ENDIF ENDIF ENDIF IF IS_PED_IN_COMBAT(ped[ELSAL_PASSENGER].id,PLAYER_PED_ID()) conditions[i].returns = TRUE ENDIF ELSE conditions[i].returns = TRUE ENDIF ENDIF ENDIF IF NOT IS_ENTITY_DEAD(vehicle[VEH_DRIVEOFF].id) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehicle[VEH_DRIVEOFF].id,PLAYER_PED_ID()) conditions[i].returns = TRUE ENDIF IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_DRIVEOFF].id) //check if player is standing on a vehicle IF IS_PED_ON_SPECIFIC_VEHICLE(PLAYER_PED_ID(),vehicle[VEH_DRIVEOFF].id) OR IS_ENTITY_TOUCHING_ENTITY(PLAYER_PED_ID(),vehicle[VEH_DRIVEOFF].id) conditions[i].returns = TRUE ENDIF ENDIF ENDIF ENDIF BREAK CASE COND_DRIVE_OFF_PEDS_FAIL_DUPE //dupe of above cos that's just how it has to be. IF DOES_ENTITY_EXIST(vehicle[VEH_DRIVEOFF].id) IF DOES_ENTITY_EXIST(ped[ped_driver].id) IF NOT IS_PED_INJURED(ped[ped_driver].id) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(ped[ped_driver].id,PLAYER_PED_ID()) conditions[i].returns = TRUE ENDIF IF NOT IS_ENTITY_DEAD(vehicle[VEH_DRIVEOFF].id) IF GET_VEHICLE_PED_IS_USING(player_ped_id()) = vehicle[VEH_DRIVEOFF].id IF GET_VEHICLE_DOOR_ANGLE_RATIO(vehicle[VEH_DRIVEOFF].id,SC_DOOR_FRONT_RIGHT) > 0.0 OR GET_VEHICLE_DOOR_ANGLE_RATIO(vehicle[VEH_DRIVEOFF].id,SC_DOOR_FRONT_LEFt) > 0.0 OR GET_VEHICLE_DOOR_ANGLE_RATIO(vehicle[VEH_DRIVEOFF].id,SC_DOOR_REAR_LEFT) > 0.0 OR GET_VEHICLE_DOOR_ANGLE_RATIO(vehicle[VEH_DRIVEOFF].id,SC_DOOR_REAR_RIGHT) > 0.0 conditions[i].returns = TRUE ENDIF ENDIF ENDIF IF IS_PED_IN_COMBAT(ped[ped_driver].id,PLAYER_PED_ID()) conditions[i].returns = TRUE ENDIF ELSE conditions[i].returns = TRUE ENDIF ENDIF IF missionProgress < STAGE_START_SHOOTOUT IF DOES_ENTITY_EXIST(ped[ELSAL_PASSENGER].id) IF NOT IS_PED_INJURED(ped[ELSAL_PASSENGER].id) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(ped[ELSAL_PASSENGER].id,PLAYER_PED_ID()) conditions[i].returns = TRUE ENDIF IF NOT IS_ENTITY_DEAD(vehicle[VEH_DRIVEOFF].id) IF NOT IS_PED_IN_VEHICLE(ped[ELSAL_PASSENGER].id,vehicle[VEH_DRIVEOFF].id) IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(),ped[ELSAL_PASSENGER].id) < 10.0 conditions[i].returns = TRUE ENDIF ENDIF ENDIF IF IS_PED_IN_COMBAT(ped[ELSAL_PASSENGER].id,PLAYER_PED_ID()) conditions[i].returns = TRUE ENDIF ELSE conditions[i].returns = TRUE ENDIF ENDIF ENDIF IF NOT IS_ENTITY_DEAD(vehicle[VEH_DRIVEOFF].id) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehicle[VEH_DRIVEOFF].id,PLAYER_PED_ID()) conditions[i].returns = TRUE ENDIF IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_DRIVEOFF].id) //check if player is standing on a vehicle IF IS_PED_ON_SPECIFIC_VEHICLE(PLAYER_PED_ID(),vehicle[VEH_DRIVEOFF].id) conditions[i].returns = TRUE ENDIF ENDIF ENDIF ENDIF BREAK CASE COND_DELAY_AFTER_PLAYER_ATTACKS_CAR IF IS_CONDITION_TRUE(COND_DRIVE_OFF_PEDS_FAIL) IF conditions[i].intA = 0 conditions[i].intA = GET_GAME_TIMER() + 4000 ELSE IF GET_GAME_TIMER() > conditions[i].intA conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_LEMAR_TRIGGER_BUM_DIALOGUE_RANGE IF NOT conditions[i].returns IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_ENTITY_IN_ANGLED_AREA(ped[ped_buddy].id, <<-1123.673462,-1597.102539,3.370230>>, <<-1118.749023,-1604.270264,6.259631>>, 10.250000) conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_PLAYER_ALERTS_ELSALVS vehicle_index aVeh aveh= GET_LAST_DRIVEN_VEHICLE() IF DOES_ENTITY_EXIST(aveh) IF IS_VEHICLE_DRIVEABLE(aVeh) IF IS_ENTITY_IN_ANGLED_AREA(aVeh, <<-1130.123535,-1589.142700,2.211170>>, <<-1067.226074,-1677.451050,9.856807>>, 33.062500) OR IS_ENTITY_IN_ANGLED_AREA(aVeh, <<-1126.999878,-1586.846680,2.961027>>, <<-1132.133789,-1590.443237,7.032865>>, 1.437500) conditions[i].returns = TRUE ENDIF ENDIF ENDIF IF IS_PED_SHOOTING(player_ped_id()) IF IS_CONDITION_TRUE(COND_PLAYER_IN_ALLEYWAY) conditions[i].returns = TRUE ELSE IF IS_BULLET_IN_ANGLED_AREA(<<-1067.559937,-1677.333130,1.841916>>, <<-1130.009033,-1588.986450,11.979240>>, 33.125000) conditions[i].returns = TRUE ENDIF ENDIF ENDIF entity_index anEnt anEnt = null IF GET_PLAYER_TARGET_ENTITY(player_id(),anEnt) IF IS_ENTITY_A_PED(anEnt) ped_index aPed aPed = GET_PED_INDEX_FROM_ENTITY_INDEX(anEnt) IF NOT IS_PED_INJURED(aPed) IF aPed = ped[ped_driver].id OR aPed = ped[ELSAL_PASSENGER].id IF absf(GET_RELATIVE_ANGLE_FROM_ENTITY_TO_ENTITY(aPed,PLAYER_PED_ID())) < 70 IF GET_DISTANCE_BETWEEN_ENTITIES(aped,player_ped_id()) < 30 conditions[i].returns = TRUE ENDIF ENDIf ENDIF ENDIF ENDIF ENDIF IF GET_ENTITY_PLAYER_IS_FREE_AIMING_AT(player_id(),anEnt) cprintln(debug_Trevor3,"B") IF IS_ENTITY_A_PED(anEnt) ped_index aPed aPed = GET_PED_INDEX_FROM_ENTITY_INDEX(anEnt) IF NOT IS_PED_INJURED(aPed) IF aPed = ped[ped_driver].id OR aPed = ped[ELSAL_PASSENGER].id IF absf(GET_RELATIVE_ANGLE_FROM_ENTITY_TO_ENTITY(aPed,PLAYER_PED_ID())) < 70 IF GET_DISTANCE_BETWEEN_ENTITIES(aped,player_ped_id()) < 30 conditions[i].returns = TRUE ENDIF ENDIf ENDIF ENDIF ENDIF ENDIF BREAK CASE COND_FIRST_GARAGE_OPENED If iOpenedGarages = 1 conditions[i].returns = TRUE endif BREAK CASE COND_TWO_GARAGES_OPENED If iOpenedGarages = 2 conditions[i].returns = TRUE endif BREAK CASE COND_HEARD_VAGOS IF NOT conditions[i].returns IF IS_CONV_ROOT_PLAYING("ARM2_GET") conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_LAMAR_REACTED IF NOT conditions[i].returns SWITCH conditions[i].flag CASE 0 IF IS_CONV_ROOT_PLAYING("ARM2_ATTACK") conditions[i].returns = TRUE ENDIF BREAK CASE 1 IF NOT IS_CONV_ROOT_PLAYING("ARM2_ATTACK") conditions[i].returns = TRUE ENDIF BREAK ENDSWITCH ENDIF BREAK CASE COND_PLAYER_HAS_A_GUN IF NOT conditions[i].returns IF NOT DOES_PICKUP_EXIST(pickup_gar1) OR HAS_PED_GOT_LOADED_FIREARM(player_ped_id()) IF DOES_PICKUP_EXIST(pickup_gar1) REMOVE_BLIP(pickup_gar1_blip) ENDIF conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_PLAYER_LEFT_GARAGE IF NOT conditions[i].returns IF NOT IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1074.780151,-1676.197388,3.137903>>, <<-1080.753174,-1680.327515,5.637903>>, 7.000000) conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_INSTRUCTIONS_GIVEN IF NOT conditions[i].returns = TRUE SWITCH conditions[i].flag CASE 0 IF IS_THIS_PRINT_BEING_DISPLAYED("ARM2_INS09") conditions[i].flag++ ENDIF BREAK CASE 1 IF NOT IS_THIS_PRINT_BEING_DISPLAYED("ARM2_INS09") conditions[i].returns = TRUE ENDIF BREAK ENDSWITCH ENDIF BREAK CASE COND_PLAYER_ADVANCES_PORTALOO IF NOT conditions[i].returns IF NOT IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1066.281128,-1677.048340,-0.401059>>, <<-1076.836060,-1663.627686,5.898672>>, 27.812500) conditions[i].returns = TRUE ENDIf ENDIF BREAK CASE COND_ONE_ENEMY_LEFT conditions[i].returns = FALSE IF ELSAL_ALIVE_COUNT() <= 1 conditions[i].returns = TRUE ENDIF BREAK CASE COND_ELSAL_ON_LEFT_SPAWNED IF NOT IS_PED_INJURED(ped[ELSAL_FROM_LEFT].id) conditions[i].returns = TRUE ENDIF BREAK CASE COND_NO_ELSAL_ALIVE conditions[i].returns = FALSE IF ELSAL_ALIVE_COUNT() = 0 conditions[i].returns = TRUE ENDIF BREAK CASE COND_NO_ELSAL_BY_PORTALOO IF DOES_ENTITY_EXIST(ped[ELSAL_AT_GARAGE].id) AND IS_PED_INJURED(ped[ELSAL_AT_GARAGE].id) AND (DOES_ENTITY_EXIST(ped[ELSAL_AT_GARAGE].id) AND IS_PED_INJURED(ped[ELSAL_BEHIND_BISON].id)) AND (DOES_ENTITY_EXIST(ped[ELSAL_AT_GARAGE].id)AND IS_PED_INJURED(ped[ELSAL_FROM_LEFT].id)) AND (DOES_ENTITY_EXIST(ped[ELSAL_AT_GARAGE].id) AND IS_PED_INJURED(ped[ELSAL_FROM_SKIP].id)) conditions[i].returns = TRUE ENDIF BREAK CASE COND_SCAFFOLD_BLOWN //set elsewhere /* IF NOT conditions[i].returns IF is_event_complete(EVENTS_RAYFIRE_SCAFFOLD) conditions[i].returns = TRUE ENDIF ENDIF*/ BREAK CASE COND_LEMAR_BEING_SHOT_AT_FROM_SCAFFOLD IF NOT conditions[i].returns IF NOT IS_PED_INJURED(ped[ELSAL_SCAFFOLDA].id) SWITCH conditions[i].flag CASE 0 IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_PED_SHOOTING(ped[ELSAL_SCAFFOLDA].id) conditions[i].returns = TRUE ENDIF ENDIF BREAK /* CASE 1 IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[ped_buddy].id,<<-1085.2633, -1656.0336, 3.3987>>) < 1.5 IF HAS_BULLET_IMPACTED_IN_AREA(<<-1085.743408,-1655.647095,4.544960>> ,2.5,false) conditions[i].returns = TRUE ENDIF ENDIF BREAK*/ ENDSWITCH ELSE IF DOES_ENTITY_EXIST(ped[ELSAL_SCAFFOLDA].id) conditions[i].returns = FALSE ENDIF ENDIF ELSE IF IS_PED_INJURED(ped[ELSAL_SCAFFOLDA].id) conditions[i].returns = FALSE ENDIF ENDIF BREAK CASE COND_IS_LEMAR_IN_COVER_AT_PORTALOO IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_PED_IN_COVER(ped[ped_buddy].id) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[ped_buddy].id,<< -1085.6464, -1655.8777, 3.687 >>) < 3.0 conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_ELSAL_ON_SCAFFOLD_SPAWNED IF NOT conditions[i].returns IF DOES_ENTITY_EXIST(ped[ELSAL_SCAFFOLDA].id) conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_LEMAR_HEADING_FOR_PORTALOO IF IS_ACTION_ONGOING(10,ACTION_LEMAR_ADVANCES_TO_PORTALOO) conditions[i].returns = TRUE ENDIF BREAK CASE COND_PLAYER_BLOCKING_PORTALOO conditions[i].returns = FALSE IF IS_CONDITION_TRUE(COND_LEMAR_HEADING_FOR_PORTALOO) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-1085.2633, -1656.0336, 3.3987>>) < 1.5 conditions[i].returns = TRUE ENDIf ENDIF BREAK CASE COND_LAMAR_IS_REACTING_TO_GUNFIRE IF IS_ACTION_ONGOING(12,ACTION_LEMAR_REACTS_TO_GUNFIRE) conditions[i].returns = TRUE ENDIF BREAK CASE COND_SCAFFOLD_PED_FALLS IF NOT IS_PED_INJURED(ped[ELSAL_SCAFFOLDA].id) vector vPedZ vPedZ = GET_ENTITY_COORDS(ped[ELSAL_SCAFFOLDA].id) If vPedZ.z < 6.6 conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_FIRST_WAVE_DEAD IF NOT conditions[i].returns IF IS_CONDITION_TRUE(COND_ELSAL_ON_SCAFFOLD_SPAWNED) IF IS_PED_INJURED(ped[ELSAL_SCAFFOLDA].id) AND IS_PED_INJURED(ped[ELSAL_AT_GARAGE].id) AND IS_PED_INJURED(ped[ELSAL_BEHIND_BISON].id) AND IS_PED_INJURED(ped[ELSAL_FROM_LEFT].id) AND IS_PED_INJURED(ped[ELSAL_FROM_SKIP].id) conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_PLAYER_PASSED_SKIP IF NOT conditions[i].returns vector vTemp vTemp = GET_ENTITY_COORDS(player_ped_id()) IF NOT IS_ENTITY_IN_ANGLED_AREA(player_ped_id(), <<-1062.196167,-1672.282593,2.088862>>, <<-1090.901489,-1644.200073,17.336174>>, 48.312500) OR vTemp.z > 6.0 conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_SECOND_WAVE_FIRST_PED_DEAD IF NOT conditions[i].returns IF IS_CONDITION_TRUE(COND_FIRST_WAVE_DEAD) IF DOES_ENTITY_EXIST(ped[ELSAL_BEFORE_CAR_LEFT].id) IF IS_PED_INJURED(ped[ELSAL_BEFORE_CAR_LEFT].id) conditions[i].returns = TRUE ENDIF ENDIF ENDIF ENDIF BREAK CASE COND_VERANDA_PED_DEAD IF NOT conditions[i].returns IF IS_CONDITION_TRUE(COND_FIRST_WAVE_DEAD) IF DOES_ENTITY_EXIST(ped[ELSAL_BALCONY].id) IF IS_PED_INJURED(ped[ELSAL_BALCONY].id) conditions[i].returns = TRUE ENDIF ENDIF ENDIF ENDIF BREAK CASE COND_ROOf_PED_DEAD IF NOT conditions[i].returns IF IS_CONDITION_TRUE(COND_FIRST_WAVE_DEAD) IF DOES_ENTITY_EXIST(ped[ELSAL_ROOF].id) IF IS_PED_INJURED(ped[ELSAL_ROOF].id) conditions[i].returns = TRUE ENDIF ENDIF ENDIF ENDIF BREAK CASE COND_SECOND_WAVE_DEAD IF NOT conditions[i].returns IF DOES_ENTITY_EXIST(ped[ELSAL_EXIT_DOOR].id) AND DOES_ENTITY_EXIST(ped[ELSAL_BALCONY].id) AND DOES_ENTITY_EXIST(ped[ELSAL_ROOF].id) AND DOES_ENTITY_EXIST(ped[ELSAL_BEFORE_CAR_LEFT].id) IF IS_PED_INJURED(ped[ELSAL_EXIT_DOOR].id) AND IS_PED_INJURED(ped[ELSAL_BALCONY].id) AND IS_PED_INJURED(ped[ELSAL_ROOF].id) AND IS_PED_INJURED(ped[ELSAL_BEFORE_CAR_LEFT].id) conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_ALL_VAGOS_DEAD IF IS_CONDITION_TRUE(COND_FIRST_WAVE_DEAD) AND IS_CONDITION_TRUE(COND_SECOND_WAVE_DEAD) IF DOES_ENTITY_EXIST(ped[ELSAL_ALLEYEND_LEFTA].id) AND DOES_ENTITY_EXIST(ped[ELSAL_ALLEYEND_RIGHTA].id) IF IS_PED_INJURED(ped[ELSAL_ALLEYEND_LEFTA].id) AND IS_PED_INJURED(ped[ELSAL_ALLEYEND_RIGHTA].id) conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK case COND_EXPLODING_CAR_KILLED_SOMEONE IF DOES_ENTITY_EXIST(ped[ELSAL_ALLEYEND_LEFTA].id) AND DOES_ENTITY_EXIST(ped[ELSAL_ALLEYEND_RIGHTA].id) int iTempCount iTempCount = conditions[i].intA conditions[i].intA = 0 IF NOT IS_PED_INJURED(ped[ELSAL_ALLEYEND_LEFTA].id) conditions[i].intA++ ENDIF IF NOT IS_PED_INJURED(ped[ELSAL_ALLEYEND_RIGHTA].id) conditions[i].intA++ ENDIF IF conditions[i].intA < iTempCount IF conditions[i].flag != 0 IF get_Game_timer() - conditions[i].flag < 400 conditions[i].returns = TRUE ENDIF ENDIF ENDIF IF IS_EXPLOSION_IN_SPHERE(EXP_TAG_DONTCARE,<<-1107.71, -1629.62, 3.57>>,5) conditions[i].flag = get_Game_timer() ENDIF ENDIF break CASE COND_LEMAR_ADVANCED_TO_SKIP IF NOT conditions[i].returns IF IS_CONDITION_TRUE(COND_FIRST_WAVE_DEAD) IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_ENTITY_IN_ANGLED_AREA( ped[ped_buddy].id, <<-1083.303223,-1651.250122,1.586172>>, <<-1086.856812,-1646.735718,6.398672>>, 5.625000) conditions[i].returns = TRUE ENDIF ENDIF ENDIF ENDIF BREAK CASE COND_CAR_DRIVING_AWAY SWITCH conditions[i].flag CASE 0 IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_FLEE].id) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[VEH_FLEE].id) conditions[i].intA = GET_GAME_TIMER() + 1000 conditions[i].flag++ ENDIF ENDIF BREAK CASE 1 IF GET_GAME_TIMER() > conditions[i].intA conditions[i].returns = TRUE conditions[i].flag++ ENDIF BREAK ENDSWITCH BREAK CASE COND_DRIVER_CAN_DRIVE_CAR IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_FLEE].id) AND NOT IS_PED_INJURED(ped[ELSAL_CAR].id) IF IS_PED_SITTING_IN_VEHICLE_SEAT(ped[ELSAL_CAR].id,vehicle[VEH_FLEE].id,VS_DRIVER) conditions[i].returns = TRUE ENDIF ELSE conditions[i].returns = FALSE ENDIF BREAK CASE COND_FINAL_WAVE_CAN_TRIGGER IF NOT conditions[i].returns SWITCH conditions[i].flag CASE 0 IF IS_CONDITION_TRUE(COND_PLAYER_PASSED_SKIP) conditions[i].returns = TRUE ELSE IF IS_CONDITION_TRUE(COND_SECOND_WAVE_DEAD) IF IS_CONDITION_TRUE(COND_DRIVER_CAN_DRIVE_CAR) IF IS_CONDITION_TRUE(COND_CAR_DRIVING_AWAY) conditions[i].flag++ conditions[i].intA = GET_GAME_TIMER() + 2000 ENDIF ELSE conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE 1 IF GET_GAME_TIMER() > conditions[i].intA conditions[i].returns = TRUE ENDIF BREAK ENDSWITCH ENDIF BREAK CASE COND_DIA_FINAL_WAVE IF IS_CONDITION_TRUE(COND_SECOND_WAVE_DEAD) IF IS_DIALOGUE_COMPLETE(DIA_FINAL_WAVE) conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_DIA_LETS_GO_PLAYED IF NOT conditions[i].returns IF HAS_DIALOGUE_FINISHED(17,DIA_LETS_GET_OUT_OF_HERE) conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_FIRE_UNDER_CAR FALLTHRU CASE COND_FIRE_UNDER_SHOOTOUTCAR SWITCH conditions[i].flag CASE 0 IF missionProgress = STAGE_CHASE_AFTER_BIKE conditions[i].flag++ ELIF IS_CONDITION_TRUE(COND_CAR_DRIVING_AWAY) conditions[i].flag++ ENDIF BREAK CASE 1 IF bPetrolBurning IF conditions[i].intA != 0 IF GET_GAME_TIMER() > conditions[i].intA IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_FLEE].id) IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[VEH_FLEE].id) conditions[i].returns = TRUE ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_FLEE].id) IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[VEH_FLEE].id) //if GET_NUMBER_OF_FIRES_IN_RANGE(GET_ENTITY_COORDS(vehicle[VEH_FLEE].id),4.0) > 1 or IS_ENTITY_ON_FIRE(vehicle[VEH_FLEE].id) VECTOR Vtempf Vtempf = <<0,0,0>> GET_CLOSEST_FIRE_POS(Vtempf,GET_ENTITY_COORDS(vehicle[VEH_FLEE].id)) if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(vehicle[VEH_FLEE].id,Vtempf) < 3.0 conditions[i].returns = TRUE endif else IF conditions[i].intA = 0 conditions[i].intA = GET_GAME_TIMER() + 7000 ENDIF ENDIF ENDIF BREAK ENDSWITCH BREAK CASE COND_LEMAR_IN_END_LOCATION conditions[i].returns = FALSE if not is_ped_injured(ped[PED_BUDDY].id) if IS_ENTITY_IN_ANGLED_AREA( ped[PED_BUDDY].id, <<-1119.603027,-1625.578369,3.098616>>, <<-1101.015747,-1613.749023,11.687337>>, 7.500000) or not IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-1105.940796,-1627.411621,2.648617>>, <<-1083.992798,-1658.702271,7.711175>>, 25.937500) conditions[i].returns = TRUE endif endif BREAK CASE COND_DIA_SHOOT_GAS_CAN IF NOT conditions[i].returns IF HAS_DIALOGUE_STARTED(6,DIA_LEMAR_SHOT_AT_HIT_GAS) conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_PLAYER_ARMED IF NOT conditions[i].returns weapon_type wep wep = WEAPONTYPE_UNARMED IF GET_CURRENT_PED_WEAPON(player_ped_id(),wep) conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_PLAYER_ENTERED_COVER IF NOT conditions[i].returns IF IS_PED_IN_COVER(player_ped_id()) conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_FLEE_CAR_LAYING_PETROL IF NOT conditions[i].returns IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_FLEE].id) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[VEH_FLEE].id) IF GET_TIME_POSITION_IN_RECORDING(vehicle[VEH_FLEE].id) > 4503 conditions[i].returns = TRUE ENDIF ENDIF ENDIF ENDIF BREAK CASE COND_FLEE_CAR_DISRUPTED IF NOT conditions[i].returns IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_FLEE].id) IF IS_PED_IN_VEHICLE(player_ped_id(),vehicle[VEH_FLEE].id,TRUE) conditions[i].returns = TRUE ENDIF ELSE conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_SHOTGUN_PICKED_UP SWITCH conditions[i].flag CASE 0 IF DOES_PICKUP_EXIST(pickup_shotgun) conditions[i].flag++ ENDIF BREAK CASE 1 IF HAS_PICKUP_BEEN_COLLECTED(pickup_shotgun) conditions[i].flag++ conditions[i].returns = TRUE ENDIF BREAK ENDSWITCH BREAK CASE COND_PLAYER_NEAR_SHOTGUN conditions[i].returns = FALSE IF DOES_PICKUP_EXIST(pickup_shotgun) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),GET_PICKUP_COORDS(pickup_shotgun)) < 10 conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_PLAYER_LEAVING_LAMAR IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_buddy].id) > 40 conditions[i].returns = TRUE ENDIF BREAK CASE COND_PLAYER_LEAVING_LAMAR_AT_END IF IS_CONDITION_TRUE(COND_ALL_VAGOS_DEAD) conditions[i].returns = FALSE IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_buddy].id) > 17 conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_LEMAR_CLIMBED_OUT_OF_ALLEY IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) IF IS_ENTITY_IN_ANGLED_AREA( ped[PED_BUDDY].id, <<-1126.620728,-1585.545654,2.137227>>, <<-1132.656616,-1589.750488,15.009974>>, 1.625000) conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_LEMAR_TOO_FAR_AWAY SWITCH conditions[i].flag CASE 0 IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_PED_IN_GROUP(ped[ped_buddy].id) conditions[i].flag++ conditions[i].returns = FALSE ENDIF ENDIF BREAK CASE 1 IF NOT IS_PED_IN_GROUP(ped[ped_buddy].id) conditions[i].returns = TRUE conditions[i].flag=0 ENDIF BREAK ENDSWITCH BREAK CASE COND_PLAYER_CAR_NEARBY_LEMAR IF NOT conditions[i].returns IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[PED_BUDDY].id) < 25 conditions[i].returns = TRUE ENDIF ENDIF ENDIF ENDIF BREAK CASE COND_PLAYER_CLOSING_IN_ON_BIKER conditions[i].returns = FALSE if IS_PLAYER_PLAYING(PLAYER_ID()) and IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) if IS_ENTITY_AT_ENTITY(PLAYER_PED_ID(),vehicle[VEH_OBJECTIVE].id,<>) conditions[i].returns = TRUE endif ENDIF endif BREAK CASE COND_BIKER_JACKED IF NOT conditions[i].returns IF NOT IS_PED_INJURED(ped[ped_bikeman].id) IF IS_PED_BEING_JACKED(ped[ped_bikeman].id) conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_PLAYER_20M_FROM_LAMAR conditions[i].returns = FALSE IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[PED_BUDDY].id) > 20 conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_PLAYER_BY_GATE_OR_NOT_IN_ALLEY IF NOT IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1068.803955,-1672.535034,1.794577>>, <<-1129.458862,-1588.839355,18.698132>>, 42.937500) conditions[i].returns = TRUE ENDIF BREAK CASE COND_PLAYER_NOT_ENTERED_CAR_FOR_A_WHILE SWITCH conditions[i].flag CASE 0 conditions[i].intA = GET_GAME_TIMER() + 15000 conditions[i].flag++ BREAK CASE 1 IF IS_PED_IN_ANY_VEHICLE(player_ped_id()) conditions[i].flag++ ELSE IF GET_GAME_TIMER() > conditions[i].intA conditions[i].returns = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK CASE COND_LAMAR_CAN_FOLLOW_PLAYER IF NOT conditions[i].returns IF IS_CONDITION_TRUE(COND_LEMAR_CLIMBED_OUT_OF_ALLEY) AND IS_CONDITION_TRUE(COND_PLAYER_BY_GATE_OR_NOT_IN_ALLEY) IF IS_CONDITION_TRUE(COND_PLAYER_AND_LEMAR_IN_SAME_CAR) OR IS_CONDITION_TRUE(COND_PLAYER_CAR_DOESNT_EXIST) OR IS_CONDITION_TRUE(COND_PLAYER_20M_FROM_LAMAR) OR IS_CONDITION_TRUE(COND_PLAYER_IN_A_DIFFERENT_CAR_TO_LEMAR) conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_BIKER_NOT_ON_BIKE IF NOT conditions[i].returns IF NOT IS_PED_INJURED(ped[ped_bikeman].id) IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) IF NOT IS_PED_IN_VEHICLE(ped[ped_bikeman].id,vehicle[VEH_OBJECTIVE].id) conditions[i].returns = TRUE ENDIF ENDIF ELSE // IF DOES_ENTITY_EXIST(ped[ped_bikeman].id) conditions[i].returns = TRUE // ENDIF ENDIF ENDIF BREAK CASE COND_PLAYER_ON_BIKE IF NOT conditions[i].returns IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) #if is_Debug_build IF bLoopFocus IF NOT IS_PED_IN_VEHICLE(player_ped_id(),vehicle[VEH_OBJECTIVE].id) SET_PED_INTO_VEHICLE(player_ped_id(),vehicle[VEH_OBJECTIVE].id) ENDIF SET_ENTITY_COORDS(vehicle[VEH_OBJECTIVE].id,<<-5.5275, -1395.6422, 28.2774>>) SET_ENTITY_HEADING(vehicle[VEH_OBJECTIVE].id, 162.6142) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-5) ENDIF #endif IF IS_PED_IN_VEHICLE(player_ped_id(),vehicle[VEH_OBJECTIVE].id) conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_PLAYER_STILL_ON_BIKE conditions[i].returns = FALSE IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) IF IS_PED_IN_VEHICLE(player_ped_id(),vehicle[VEH_OBJECTIVE].id) conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_BIKE_FAR_FROM_LAMAR conditions[i].returns = FALSE IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(vehicle[VEH_OBJECTIVE].id,<<-12.81, -1402.07, 28.32>>) > 18 conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_LAMAR_PASSENGER_WITH_PLAYER conditions[i].returns = FALSE IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_PED_IN_ANY_VEHICLE(ped[ped_buddy].id) vehicle_index vehtemp vehtemp = GET_VEHICLE_PED_IS_USING(ped[ped_buddy].id) IF IS_PED_SITTING_IN_VEHICLE(ped[ped_buddy].id,vehtemp) IF GET_PED_VEHICLE_SEAT(ped[ped_buddy].id,vehtemp) != VS_DRIVER IF IS_PED_SITTING_IN_VEHICLE(player_ped_id(),vehtemp) IF GET_PED_VEHICLE_SEAT(player_ped_id(),vehtemp) = VS_DRIVER conditions[i].returns = TRUE ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF BREAK CASE COND_LAMAR_PASSENGER_WITHOUT_PLAYER conditions[i].returns = FALSE IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_PED_IN_ANY_VEHICLE(ped[ped_buddy].id) vehicle_index vehtemp vehtemp = GET_VEHICLE_PED_IS_USING(ped[ped_buddy].id) IF IS_PED_SITTING_IN_VEHICLE(ped[ped_buddy].id,vehtemp) IF GET_PED_VEHICLE_SEAT(ped[ped_buddy].id,vehtemp) != VS_DRIVER IF NOT IS_PED_IN_VEHICLE(player_ped_id(),vehtemp) conditions[i].returns = TRUE ENDIF ENDIF ENDIF ENDIF ENDIF BREAK CASE COND_LAMAR_IN_A_CAR conditions[i].returns = FALSE IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_PED_IN_ANY_VEHICLE(ped[ped_buddy].id,TRUE) conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_LAMAR_IN_CAR_AS_DRIVER conditions[i].returns = FALSE IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_PED_IN_ANY_VEHICLE(ped[ped_buddy].id) vehicle_index vehtemp vehtemp = GET_VEHICLE_PED_IS_IN(ped[ped_buddy].id) IF IS_PED_SITTING_IN_VEHICLE(ped[ped_buddy].id,vehtemp) IF GET_PED_VEHICLE_SEAT(ped[ped_buddy].id,vehtemp)= VS_DRIVER conditions[i].returns = TRUE ENDIF ENDIF IF vehicle[veh_buddy].id != vehtemp IF DOES_ENTITY_EXIST(vehicle[veh_buddy].id) if not IS_ENTITY_A_MISSION_ENTITY(vehicle[veh_buddy].id) OR NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehicle[veh_buddy].id,false) SET_ENTITY_AS_MISSION_ENTITY(vehicle[veh_buddy].id,TRUE,TRUE) ENDIF SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[veh_buddy].id) ENDIF vehicle[veh_buddy].id = vehtemp if IS_VEHICLE_DRIVEABLE(vehicle[veh_buddy].id) if not IS_ENTITY_A_MISSION_ENTITY(vehicle[veh_buddy].id) OR NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehicle[veh_buddy].id,false) SET_ENTITY_AS_MISSION_ENTITY(vehicle[veh_buddy].id,TRUE,TRUE) ENDIF SET_VEHICLE_WILL_FORCE_OTHER_VEHICLES_TO_STOP(vehicle[veh_buddy].id,TRUE) ///ADD_VEHICLE_UPSIDEDOWN_CHECK(vehicle[veh_buddy].id) //removed due to bug url:bugstar:1471060 ENDIF ENDIF ENDIF ENDIF BREAK CASE COND_LAMAR_ATTEMPTING_TO_ENTER_DRIVER_SEAT conditions[i].returns = FALSE IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF IS_PED_GETTING_INTO_A_VEHICLE(ped[ped_buddy].id) conditions[i].returns = TRUE ENDIF // IF GET_SEAT_PED_IS_TRYING_TO_ENTER(ped[ped_buddy].id) = ENUM_TO_INT(VS_FRONT_RIGHT) // conditions[i].returns = TRUE // ENDIF IF GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT) = PERFORMING_TASK OR GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT) = DORMANT_TASK OR GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_ENTER_VEHICLE) = PERFORMING_TASK OR GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_ENTER_VEHICLE) = DORMANT_TASK conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_LAMAR_HAS_NO_TASKS conditions[i].returns = FALSE //cprintln(DEBUG_TREVOR3,GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_ANY)) IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_ANY) = FINISHED_TASK OR GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_ANY) = VACANT_STAGE OR GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_WANDER_STANDARD) = PERFORMING_TASK // IF GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_ANY) != PERFORMING_TASK // AND GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_ANY) != DORMANT_TASK conditions[i].returns = TRUE ENDIf ENDIf BREAK CASE COND_LAMAR_IN_UNDRIVEABLE_CAR //also presume that a flown or large vehicle also counts as undriveable conditions[i].returns = FALSE IF DOES_ENTITY_EXIST(vehicle[veh_buddy].id) IF NOT IS_VEHICLE_DRIVEABLE(vehicle[veh_buddy].id) OR IS_ACTION_COMPLETE(7,ACT_WARP_LAMAR_BACK) conditions[i].returns = TRUE ELSE IF IS_ENTITY_UPSIDEDOWN(vehicle[veh_buddy].id) conditions[i].returns = TRUE ENDIf ENDIF IF IS_VEHICLE_DRIVEABLE(vehicle[veh_buddy].id) MODEL_NAMES vehicle_model vehicle_model = GET_ENTITY_MODEL(vehicle[veh_buddy].id) IF IS_THIS_MODEL_A_PLANE(vehicle_model) OR IS_THIS_MODEL_A_HELI(vehicle_model) conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_LAMAR_FOCUS_CAR_DRIVING_AWAY conditions[i].returns = FALSE int iTargetCar IF NOT IS_PED_INJURED(ped[ped_buddy].id) iTargetCar = GET_VEHICLE_PED_IS_TRYING_TO_ENTER(ped[ped_buddy].id) ENDIF vehicle_index vehFocus vehFocus = INT_TO_NATIVE(VEHICLE_INDEX,iTargetCar) IF IS_VEHICLE_DRIVEABLE(vehFocus) //cprintln(DEBUG_TREVOR3,"Focus car exists") IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF conditions[i].floatA = 0 conditions[i].floatA = GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_buddy].id,vehFocus) ELSE IF GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_buddy].id,vehFocus) > conditions[i].floatA conditions[i].intA += floor(timestep()*1000.0) conditions[i].floatA = GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_buddy].id,vehFocus) ELSE conditions[i].floatA = GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_buddy].id,vehFocus) conditions[i].intA = 0 ENDIF IF conditions[i].intA > 4000 conditions[i].returns = TRUE ENDIF ENDIF //cprintln(DEBUG_TREVOR3,"Focus car timer:",conditions[i].intA) ENDIF ELSE conditions[i].floatA = 0 conditions[i].intA = 0 ENDIF BREAK CASE COND_BIKE_UPSIDE_DOWN IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) SWITCH conditions[i].flag CASE 0 ADD_VEHICLE_UPSIDEDOWN_CHECK(vehicle[VEH_OBJECTIVE].id) conditions[i].flag++ BREAK CASE 1 IF IS_ENTITY_UPSIDEDOWN(vehicle[VEH_OBJECTIVE].id) conditions[i].returns = TRUE ENDIF BREAK ENDSWITCH ENDIF BREAK CASE COND_LAMAR_10M_FROM_PLAYER conditions[i].returns = FALSE IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_buddy].id,player_ped_id()) > 10 conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_PLAYER_100M_FROM_LAMAR IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_buddy].id,player_ped_id()) > 100 conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_PLAYER_AT_DESTINATION IF IS_INSTRUCTION_COMPLETE(1,ins_drive_home) conditions[i].returns = TRUE ENDIF BREAK CASE COND_PLAYER_NEAR_LAMAR_AT_CARWASH SWITCH conditions[i].flag CASE 0 IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[PED_BUDDY].id,<<-4.03, -1401.22, 28.28>>) < 5.0 conditions[i].flag++ ENDIF ENDIF BREAK CASE 1 IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) conditions[i].returns = FALSE IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[PED_BUDDY].id) < 8.0 conditions[i].returns = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK ENDSWITCH ENDIF ENDREPEAT //////cprintln(DEBUG_TREVOR3,"conditions[5].returns = ",conditions[5].returns) ENDPROC // ================================================ Instructions ======================================== PROC SET_INSTRUCTION_NOT_COMPLETE(enumInstructions eInstruction) int j REPEAT COUNT_OF(instr) j IF instr[j].ins = eInstruction instr[j].bCompleted = FALSE ENDIF ENDREPEAT ENDPROC PROC INSTRUCTIONS(int thisI, enumInstructions eInstruction, andorEnum andOr1=cFORCEtrue, enumconditions cond1=COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2=COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3=COND_NULL) //reset if instructino is new IF instr[thisI].ins != eInstruction instr[thisI].bCompleted = FALSE instr[thisI].ins = eInstruction ENDIF IF NOT instr[thisI].bCompleted IF checkANDOR(andOr1,cond1,andOr2,cond2,andOr3,cond3) SWITCH instr[thisI].ins //drive to alley CASE INS_GET_TO_VESPUCCI_BEACH #IF IS_DEBUG_BUILD DONT_DO_J_SKIP(sLocatesData) #endif IF DOES_BLIP_EXIST(mission_blip) REMOVE_BLIP(mission_blip) ENDIF SWITCH instr[thisI].flag CASE 0 IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) SET_LOCATES_BUDDIES_TO_GET_INTO_NEAREST_CAR(sLocatesData,vehicle[VEH_PLAYER].id) ENDIF instr[thisI].flag++ BREAK CASE 1 IF IS_PLAYER_AT_LOCATION_WITH_BUDDY_ANY_MEANS(sLocatesData,<<-1141.0928, -1576.7594, 3.3048>>,g_vAnyMeansLocate,true,ped[ped_buddy].id,"ARM2_INS02","ARM2_INS18",FALSE,TRUE) //1322140 CLEAR_MISSION_LOCATE_STUFF(sLocatesData) CLEAR_MISSION_LOCATION_BLIP(sLocatesData) instr[thisI].flag++ ENDIF BREAK CASE 2 IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) AND IS_PED_IN_VEHICLE(player_ped_id(),vehicle[VEH_PLAYER].id) IF BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehicle[VEH_PLAYER].id,4.0) instr[thisI].bCompleted = TRUE ENDIF ELSE instr[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE INS_EXIT_ALLEY IF NOT DOES_BLIP_EXIST(mission_blip) if not does_entity_exist(PED[ELSAL_ALLEYEND_LEFTA].ID) CLEAR_MISSION_LOCATE_STUFF(sLocatesData) CLEAR_MISSION_LOCATION_BLIP(sLocatesData) IF NOT IS_THIS_PRINT_BEING_DISPLAYED("ARM2_INS18") PRINT("ARM2_INS18",DEFAULT_GOD_TEXT_TIME,1) ENDIF mission_blip = CREATE_BLIP_FOR_ENTITY(ped[ped_buddy].id) endif ENDIF BREAK CASE INS_HELP_DRIVING_VIEW SWITCH instr[thisI].flag CASE 0 IF IS_PED_IN_ANY_VEHICLE(player_ped_id()) instr[thisI].flag++ instr[thisI].intA = GET_GAME_TIMER() + 10000 ENDIF BREAK CASE 1 IF IS_PED_IN_ANY_VEHICLE(player_ped_id()) IF GET_GAME_TIMER() > instr[thisI].intA PRINT_HELP("ARM2_HLP29",DEFAULT_HELP_TEXT_TIME+2000) instr[thisI].flag++ ENDIF ENDIF BREAK case 2 IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP29") IF IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL,INPUT_NEXT_CAMERA) clear_help() ENDIF ELSE instr[thisI].bCompleted = TRUE ENDIF break ENDSWITCH BREAK CASE INS_LOSE_COPS SWITCH instr[thisI].flag CASE 0 PRINT_NOW("LOSE_WANTED",DEFAULT_GOD_TEXT_TIME,1) IF DOES_BLIP_EXIST(mission_blip) REMOVE_BLIP(mission_blip) ENDIF instr[thisI].flag++ BREAK CASE 1 IF DOES_BLIP_EXIST(mission_blip) REMOVE_BLIP(mission_blip) ENDIF BREAK ENDSWITCH BREAK CASE INS_WAIT_FOR_LEMAR SWITCH instr[thisI].flag CASE 0 IF NOT IS_MESSAGE_BEING_DISPLAYED() IF DOES_BLIP_EXIST(mission_blip) REMOVE_BLIP(mission_blip) ENDIF SET_GPS_MULTI_ROUTE_RENDER(FALSE) mission_blip = CREATE_BLIP_FOR_ENTITY(ped[ped_buddy].id) PRINT("ARM2_INS18",DEFAULT_GOD_TEXT_TIME,1) instr[thisI].flag++ ENDIF BREAK CASE 1 vector vCoord vCoord = GET_BLIP_INFO_ID_COORD(mission_blip) IF ARE_VECTORS_EQUAL(vCoord,<<-1141.0928, -1576.7594, 3.3048>>) IF DOES_BLIP_EXIST(mission_blip) REMOVE_BLIP(mission_blip) ENDIF mission_blip = CREATE_BLIP_FOR_ENTITY(ped[ped_buddy].id) ENDIF BREAK ENDSWITCH BREAK //go down alley CASE INS_FOLLOW_LAMAR SWITCH instr[thisI].flag CASE 0 PRINT_NOW("ARM2_INS03",3000,1) IF DOES_BLIP_EXIST(mission_blip) REMOVE_BLIP(mission_blip) ENDIF mission_blip = CREATE_BLIP_FOR_ENTITY(ped[ped_buddy].id) instr[thisI].flag++ BREAK CASE 1 IF IS_CONDITION_TRUE(COND_PLAYER_IN_ALLEYWAY) IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_INS05") CLEAR_HELP() instr[thisI].bCompleted = TRUE ELSE instr[thisI].bCompleted = TRUE ENDIF ENDIF BREAK CASE 2 PRINT_HELP("ARM2_HLP22",DEFAULT_HELP_TEXT_TIME+2000) instr[thisI].bCompleted = TRUE BREAK ENDSWITCH BREAK CASE INS_OPEN_GARAGE SWITCH instr[thisI].flag CASE 0 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() PRINT_NOW("ARM2_INS07b",DEFAULT_GOD_TEXT_TIME,1) // PRINT_HELP("ARM2_HLP04",DEFAULT_GOD_TEXT_TIME) garage_1_blip = CREATE_BLIP_FOR_COORD(<< -1067.4984, -1665.7689, 3.5431 >>) garage_2_blip = CREATE_BLIP_FOR_COORD(<< -1064.8322, -1669.3130, 3.5348 >>) garage_3_blip = CREATE_BLIP_FOR_COORD(<< -1073.8386, -1675.4724, 3.5162 >>) IF does_blip_exist(mission_blip) REMOVE_BLIP(mission_blip) ENDIF IF does_blip_exist(ped[ped_buddy].blip) REMOVE_BLIP(ped[ped_buddy].blip) endif instr[thisI].intA = GET_GAME_TIMER() + 2000 instr[thisI].flag++ ENDIF BREAK CASE 1 IF GET_GAME_TIMER() > instr[thisI].intA instr[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE INS_GET_BACK_TO_LAMAR IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) SWITCH instr[thisI].flag CASE 0 IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_buddy].id) > 70 OR (missionProgress = STAGE_ADVANCE_DOWN_ALLEYWAY AND GET_ACTION_FLAG(14,ACTION_LEMAR_WAITS_FOR_PLAYER) > 0 AND NOT IS_CONDITION_TRUE(COND_LEMAR_NEAR_GARAGE)) OR (missionProgress >= STAGE_START_SHOOTOUT AND IS_CONDITION_TRUE(COND_PLAYER_LEAVING_LAMAR_AT_END)) IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() instr[thisI].intA = 0 IF DOES_BLIP_EXIST(garage_1_blip) SET_BIT(instr[thisI].intA,0) REMOVE_BLIP(garage_1_blip) ENDIF IF DOES_BLIP_EXIST(garage_2_blip) SET_BIT(instr[thisI].intA,1) REMOVE_BLIP(garage_2_blip) ENDIF IF DOES_BLIP_EXIST(garage_3_blip) SET_BIT(instr[thisI].intA,2) REMOVE_BLIP(garage_3_blip) ENDIF IF instr[thisI].intA != 0 mission_blip = CREATE_BLIP_FOR_ENTITY(ped[ped_buddy].id) ENDIF PRINT("CMN_LLEAVE",-1,1) instr[thisI].flag++ ENDIF ENDIF BREAK CASE 1 IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_buddy].id) < 30 IF (missionProgress >= STAGE_ADVANCE_DOWN_ALLEYWAY AND missionProgress < STAGE_DRUG_GARAGE AND GET_ACTION_FLAG(14,ACTION_LEMAR_WAITS_FOR_PLAYER) = 0) OR (missionProgress >= STAGE_START_SHOOTOUT AND NOT IS_CONDITION_TRUE(COND_PLAYER_LEAVING_LAMAR_AT_END)) IF IS_BIT_SET(instr[thisI].intA,0) IF DOES_BLIP_EXIST(mission_blip) REMOVE_BLIP(mission_blip) ENDIF garage_1_blip = CREATE_BLIP_FOR_COORD(<< -1067.4984, -1665.7689, 3.5431 >>) ENDIF IF IS_BIT_SET(instr[thisI].intA,1) garage_2_blip = CREATE_BLIP_FOR_COORD(<< -1064.8322, -1669.3130, 3.5348 >>) ENDIF IF IS_BIT_SET(instr[thisI].intA,2) garage_3_blip = CREATE_BLIP_FOR_COORD(<< -1073.8386, -1675.4724, 3.5162 >>) ENDIF CLEAR_PRINTS() instr[thisI].flag = 0 ENDIF ENDIF BREAK ENDSWITCH endif BREAK CASE INS_CLIMB SWITCH instr[thisI].flag CASE 0 IF NOT IS_PED_INJURED(player_ped_id()) IF IS_THIS_PRINT_BEING_DISPLAYED("ARM2_INS03") instr[thisI].flag++ ENDIF IF IS_CONDITION_TRUE(COND_PLAYER_CLIMBING_GATE) instr[thisI].bCompleted = TRUE ENDIF ENDIF BREAK CASE 1 IF IS_ENTITY_IN_ANGLED_AREA(player_ped_id(), <<-1126.573242,-1581.503540,2.723826>>, <<-1137.804443,-1589.276611,6.146455>>, 10.625000) PRINT_HELP("ARM2_INS05",DEFAULT_HELP_TEXT_TIME+2000) instr[thisI].flag++ instr[thisI].intA = GET_GAME_TIMER() + 2000 ENDIF BREAK CASE 2 IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_INS05") //climbing fence if IS_CONDITION_TRUE(COND_PLAYER_IN_ALLEYWAY) or IS_PLAYER_CLIMBING(PLAYER_ID()) IF GET_GAME_TIMER() > instr[thisI].intA clear_help() instr[thisI].bCompleted = TRUE ENDIF ENDIF ELSE instr[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH /* SWITCH instr[thisI].flag CASE 0 IF NOT IS_PED_INJURED(ped[ped_buddy].id) IF GET_SCRIPT_TASK_STATUS(ped[ped_buddy].id,SCRIPT_TASK_CLIMB) = PERFORMING_TASK instr[thisI].flag = GET_GAME_TIMER() + 800 ENDIF ENDIF BREAK DEFAULT IF GET_GAME_TIMER() > instr[thisI].flag //IF NOT HAS_ONE_TIME_HELP_DISPLAYED(FHM_CLIMB_HELP) PRINT_HELP("ARM2_INS05") // SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_CLIMB_HELP) instr[thisI].bCompleted = TRUE //ENDIF ENDIF BREAK ENDSWITCH*/ BREAK CASE INS_FIRST_PERSON_HELP SWITCH instr[thisI].flag CASE 0 IF NOT IS_PLAYER_CLIMBING(player_id()) IF NOT GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_PLAYER_HAS_USED_FP_VIEW) IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() PRINT_HELP("CMN_FPSHELP", DEFAULT_HELP_TEXT_TIME) instr[thisI].flag++ ENDIF ELSE instr[thisI].bCompleted = TRUE ENDIF ENDIF BREAK CASE 1 //Clear once they use first-person. IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_PLAYER_HAS_USED_FP_VIEW) IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CMN_FPSHELP") CLEAR_HELP() ENDIF instr[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE INS_ATTACK_ENEMY CLEAR_PRINTS() PRINT("ARM2_INS09",3000,1) instr[thisI].bCompleted = TRUE BREAK CASE INS_GET_GUN switch instr[thisI].flag case 0 IF NOT IS_CONDITION_TRUE(COND_PLAYER_HAS_A_GUN) IF IS_CONV_ROOT_PLAYING("AR2_MCS_4_LO") PRINT_HELP("ARM2_HLP06",DEFAULT_HELP_TEXT_TIME+2000) PRINT("ARM2_INS08",DEFAULT_GOD_TEXT_TIME,1) instr[thisI].flag++ ENDIF ENDIF BREAK CASE 1 IF IS_THIS_PRINT_BEING_DISPLAYED("ARM2_INS08") IF DOES_PICKUP_EXIST(pickup_gar1) IF HAS_PICKUP_BEEN_COLLECTED(pickup_gar1) g_bGunPickedUp = TRUE instr[thisI].bCompleted = TRUE CLEAR_PRINTS() IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP06") CLEAR_HELP() ENDIF ENDIF ENDIF ELSE instr[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE INS_WEAPON_HELP IF NOT IS_CONDITION_TRUE(COND_PLAYER_ARMED) switch instr[thisI].flag case 0 instr[thisI].flag++ BREAK case 1 if not IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PU_QS_HLP") if GET_GAME_TIMER() > instr[thisI].intA CLEAR_HELP() PRINT_HELP("ARM2_HLP07",DEFAULT_HELP_TEXT_TIME+2000) instr[thisI].intA = get_game_timer()+1500 instr[thisI].flag++ endif endif BREAK CASE 2 if IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP07") if IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_SELECT_WEAPON) instr[thisI].flag++ endif else //if previous message clears without using weapon wheel, show next weapon wheel help anyway. PRINT_HELP("ARM2_HLP07b",DEFAULT_HELP_TEXT_TIME+2000) instr[thisI].flag++ endif break case 3 if GET_GAME_TIMER() > instr[thisI].intA clear_help() //if NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP07b") PRINT_HELP("ARM2_HLP07b",DEFAULT_HELP_TEXT_TIME+2000) //ENDIF instr[thisI].flag++ endif break case 4 if IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP07b") IF IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_SELECT_WEAPON) instr[thisI].intA = get_game_timer()+3000 instr[thisI].flag++ ENDIF ELSE instr[thisI].bCompleted = TRUE ENDIF BREAK CASE 5 if GET_GAME_TIMER() > instr[thisI].intA if IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP07b") CLEAR_HELP() ENDIF instr[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH ELSE IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP07") OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP07b") CLEAR_HELP() instr[thisI].bCompleted = TRUE ENDIF ENDIF BREAK CASE INS_COVER_HELP switch instr[thisI].flag case 0 IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP08") CLEAR_HELP() ENDIF IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() PRINT_HELP("ARM2_HLP14",DEFAULT_HELP_TEXT_TIME+2000) instr[thisI].flag++ ENDIF BREAK CASE 1 IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP14") IF IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_ATTACK) AND NOT IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_AIM) CLEAR_HELP() instr[thisI].bCompleted = TRUE ENDIF ELSE instr[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE INS_SHOOT_GAS switch instr[thisI].flag case 0 instr[thisI].intA = get_game_timer() + 1500 instr[thisI].flag++ BREAK CASE 1 IF get_game_timer() > instr[thisI].intA IF bPetrolBurning instr[thisI].bCompleted = TRUE ELSE clear_help() PRINT_HELP("ARM2_HLP13",DEFAULT_HELP_TEXT_TIME+2000) ENDIF //PRINT_HELP("ARM2_HLP13") instr[thisI].flag++ instr[thisI].intA = GET_GAME_TIMER() ELSE IF bPetrolBurning instr[thisI].bCompleted = TRUE ENDIF ENDIF BREAK CASE 2 IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP13") //shoot petrol trail IF bPetrolBurning IF GET_GAME_TIMER() - instr[thisI].intA > 2000 CLEAR_HELP() instr[thisI].bCompleted = TRUE ENDIF ENDIF ELSE instr[thisI].bCompleted = TRUE ENDIF BREAK CASE 3 //set elsewhere IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP13") //shoot petrol trail IF GET_GAME_TIMER() - instr[thisI].intA > 2000 CLEAR_HELP() instr[thisI].bCompleted = TRUE ENDIF ELSE instr[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE INS_SELECT_BEST_WEAPON PRINT_HELP("ARM2_HLP07b",DEFAULT_HELP_TEXT_TIME+2000) //bug 1478972 - give instructions about changing a weapon again instr[thisI].bCompleted = TRUE BREAK CASE INS_GET_THE_BIKE PRINT_NOW("ARM2_INS12",5000,1) instr[thisI].bCompleted = TRUE BREAK CASE INS_BIKE_HINT switch instr[thisI].flag case 0 IF g_savedGlobals.sAmbient.iChaseHelpTextDisplayed_mission >= iCHASE_HINT_HELP_DISPLAY_MAX g_savedGlobals.sAmbient.iChaseHelpTextDisplayed_mission = iCHASE_HINT_HELP_DISPLAY_MAX-1 ENDIF // IF NOT IS_HELP_MESSAGE_ON_SCREEN() // PRINT_HELP("CMN_HINT") instr[thisI].flag++ // ENDIF BREAK CASE 1 IF IS_CONDITION_TRUE(COND_PLAYER_IN_VEHICLE) if not is_ped_injured(ped[ped_bikeman].id) CONTROL_PED_CHASE_HINT_CAM_IN_VEHICLE(localChaseHintCamStruct, ped[ped_bikeman].id) ELSE KILL_CHASE_HINT_CAM(localChaseHintCamStruct) instr[thisI].bCompleted = TRUE ENDIF ELSE KILL_CHASE_HINT_CAM(localChaseHintCamStruct) instr[thisI].flag++ ENDIF BREAK CASE 2 if not is_ped_injured(ped[ped_bikeman].id) IF IS_CONDITION_TRUE(COND_PLAYER_IN_VEHICLE) instr[thisI].flag = 1 ENDIF ELSE instr[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE INS_MAP_HELP switch instr[thisI].flag case 0 IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() instr[thisI].intA += floor(TIMESTEP()*1000) IF instr[thisI].intA > 5000 PRINT_HELP("ARM2_HLP27",DEFAULT_HELP_TEXT_TIME+2000) instr[thisI].flag++ ENDIF ELSE instr[thisI].intA = 0 ENDIF BREAK CASE 1 IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP27") IF IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_HUD_SPECIAL) CLEAR_HELP() instr[thisI].bCompleted = TRUE ENDIF ELSE instr[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE INS_HEALTH_HELP PRINT_HELP("ARM2_HLP30",DEFAULT_HELP_TEXT_TIME+2000) instr[thisI].bCompleted = TRUE BREAK CASE INS_GO_BACK_FOR_LAMAR switch instr[thisI].flag case 0 IF IS_CONDITION_TRUE(COND_LEMAR_TOO_FAR_AWAY) CLEAR_PRINTS() PRINT_NOW("ARM2_INS22",5000,1) ped[ped_buddy].blip = CREATE_BLIP_FOR_ENTITY(ped[ped_buddy].id) IF DOES_BLIP_EXIST(vehicle[VEH_OBJECTIVE].blip) REMOVE_BLIP(vehicle[VEH_OBJECTIVE].blip) ENDIF instr[thisI].flag++ ENDIF break case 1 IF NOT IS_PED_INJURED(ped[ped_buddy].id) AND IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) IF IS_PED_IN_GROUP(ped[ped_buddy].id) IF DOES_BLIP_EXIST(ped[ped_buddy].blip) REMOVE_BLIP(ped[ped_buddy].blip) vehicle[VEH_OBJECTIVE].blip = CREATE_BLIP_FOR_ENTITY(vehicle[VEH_OBJECTIVE].id) instr[thisI].flag = 0 ENDIF ENDIF ENDIF break endswitch BREAK CASE INS_REMIND_ABOUT_PLAYE_SPECIAL_ABILITY SWITCH instr[thisI].flag CASE 0 IF IS_PED_IN_ANY_VEHICLE(player_ped_id()) vehicle_index Alleyveh Alleyveh = GET_VEHICLE_PED_IS_IN(player_ped_id()) IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) AND IS_VEHICLE_DRIVEABLE(Alleyveh) IF IS_PED_IN_VEHICLE(ped[PED_BUDDY].id,Alleyveh) instr[thisI].intA = get_game_timer() + 30000 instr[thisI].flag++ ENDIF ENDIF ENDIF BREAK CASE 1 IF get_game_timer() > instr[thisI].intA IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) IF NOT IS_PED_INJURED(ped[ped_bikeman].id) IF IS_PED_IN_VEHICLE(ped[ped_bikeman].id,vehicle[VEH_OBJECTIVE].id) IF CREATE_CONVERSATION_EXTRA("drive_good",3,ped[ped_buddy].id,"Lamar") IF IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL) PRINT_HELP("ARM2_HLP21_KM",DEFAULT_GOD_TEXT_TIME+2000) ELSE PRINT_HELP("ARM2_HLP21",DEFAULT_GOD_TEXT_TIME+2000) ENDIF instr[thisI].bCompleted = TRUE ENDIF ENDIF ENDIf ENDIF ENDIF BREAK ENDSWITCH BREAK CASE INS_DO_WHEELIE SWITCH instr[thisI].flag CASE 0 instr[thisI].intA = GET_GAME_TIMER() + 2000 instr[thisI].flag++ BREAK CASE 1 IF GET_GAME_TIMER() > instr[thisI].intA PRINT_HELP("ARM2_HLP24",DEFAULT_HELP_TEXT_TIME+2000) instr[thisI].flag++ ENDIF BREAK CASE 2 IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP24") instr[thisI].intA = GET_GAME_TIMER() + 500 instr[thisI].flag++ ENDIF BREAK CASE 3 IF GET_GAME_TIMER() > instr[thisI].intA PRINT_HELP("ARM2_HLP25",DEFAULT_HELP_TEXT_TIME+2000) instr[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE ins_drive_home SWITCH instr[thisI].flag CASE 0 // PRINT_NOW("ARM2_INS14",5000,1) if DOES_BLIP_EXIST(vehicle[VEH_OBJECTIVE].blip) REMOVE_BLIP(vehicle[VEH_OBJECTIVE].blip) ENDIF START_AUDIO_SCENE("ARM_2_RIDE_BIKE_BACK") instr[thisI].flag++ BREAK CASE 1 DONT_DO_SAFE_FOR_CUTSCENE_CHECK(sLocatesData) IF IS_PLAYER_AT_LOCATION_IN_VEHICLE(sLocatesData,<<-6.62, -1393.36, 28.32>>,<>,TRUE,vehicle[VEH_OBJECTIVE].id,"ARM2_INS13","CMN_GENGETINBK","CMN_GENGETBCKBK",TRUE) SET_PLAYER_CONTROL(player_id(),false,SPC_LEAVE_CAMERA_CONTROL_ON) instr[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE ins_get_on_the_bike SWITCH instr[thisI].flag CASE 0 IF IS_DIALOGUE_COMPLETE(DIA_AFTER_BIKER_DOWN) IF NOT IS_MESSAGE_BEING_DISPLAYED() AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() PRINT_NOW("ARM2_INS14",5000,1) instr[thisI].flag++ instr[thisI].intA = get_game_timer() + 2000 ENDIF ENDIF BREAK CASE 1 IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) IF IS_PED_IN_VEHICLE(player_ped_id(),vehicle[VEH_OBJECTIVE].id) IF IS_THIS_PRINT_BEING_DISPLAYED("ARM2_INS14") IF GET_GAME_TIMER() > instr[thisI].intA CLEAR_PRINTS() instr[thisI].bCompleted = TRUE ENDIF ELSE instr[thisI].bCompleted = TRUE ENDIF ENDIF ENDIF BREAK ENDSWITCH break case INS_GET_IN_COVER_HELP IF NOT IS_INSTRUCTION_COMPLETE(7,INS_SELECT_BEST_WEAPON) SWITCH instr[thisI].flag CASE 0 instr[thisI].intA = GET_GAME_TIMER() + 1500 instr[thisI].flag++ BREAK CASE 1 IF GET_GAME_TIMER() > instr[thisI].intA IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() PRINT_HELP("ARM2_HLP08",DEFAULT_HELP_TEXT_TIME+2000) instr[thisI].flag++ ENDIF ENDIF BREAK case 2 IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM2_HLP08") IF IS_PED_IN_COVER(player_ped_id()) clear_help() ENDIF ELSE instr[thisI].bCompleted = TRUE ENDIF break ENDSWITCH ELSE instr[thisI].bCompleted = TRUE ENDIF break ENDSWITCH ENDIF ENDIF ENDPROC PROC INSTRUCTIONS_ON_INSTRUCTION(int thisI, enumInstructions thisInstruction, int targetIns, enumInstructions thisTargetIns,andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3 = COND_NULL) IF instr[thisI].ins != thisInstruction instr[thisI].ins = thisInstruction instr[thisI].bCompleted = FALSE instr[thisI].flag = 0 instr[thisI].intA = 0 ENDIF IF instr[thisI].bCompleted = FALSE IF instr[targetIns].bCompleted thisTargetIns=thisTargetIns INSTRUCTIONS(thisI,thisInstruction,andOr1,cond1,andOr2,cond2,andOr3,cond3) ENDIF ENDIF ENDPROC PROC INSTRUCTIONS_ON_DIALOGUE(int thisI, enumInstructions thisInstruction,int diaEntry,enumDialogue checkDia) IF instr[thisI].ins != thisInstruction instr[thisI].ins = thisInstruction instr[thisI].bCompleted = FALSE instr[thisI].flag = 0 instr[thisI].intA = 0 ENDIF IF HAS_DIALOGUE_FINISHED(diaEntry,checkDia) IF instr[thisI].bCompleted = FALSE INSTRUCTIONS(thisI,thisInstruction) ENDIF ENDIF ENDPROC // ================================================ Dialogue ============================================ PROC SET_DIALOGUE_AS_ENDED(enumDialogue thisDia) int i repeat count_of(dia) i IF dia[i].dial = thisDia dia[i].bCompleted = TRUE ENDIF ENDREPEAT ENDPROC PROC DIALOGUE(int thisI, enumDialogue thisDia, andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3 = COND_NULL, andorEnum andOr4=cIGNORE, enumconditions cond4 = COND_NULL) //IF thisI = 22 //cprintln(debug_trevor3,"AAA") ENDIF IF dia[thisI].dial != thisDia //IF thisI = 22 //cprintln(debug_trevor3,"BBB") ENDIF dia[thisI].bCompleted = FALSE dia[thisI].dial = thisDia ENDIF IF NOT dia[thisI].bCompleted //IF thisI = 22 //cprintln(debug_trevor3,"CCC") ENDIF IF checkANDOR(andOr1,cond1,andOr2,cond2,andOr3,cond3,andOr4,cond4) AND NOT bMakeMissionFail //IF thisI = 22 //cprintln(debug_trevor3,"DDD") ENDIF IF NOT dia[thisI].bStarted dia[thisI].bStarted=TRUE ENDIF SWITCH dia[thisI].dial CASE DIA_NULL //If CREATE_CONVERSATION_EXTRA("NHH_C22",0,PED[ped_franklin].id,"Franklin",1,PED[ped_michael].id,"Michael",2,PED[ped_trevor].id,"Trevor") //dia[thisI].bCompleted = TRUE //ENDIF BREAK CASE DIA_SWITCH_TO_SUBTITLES SWITCH dia[thisI].flag CASE 0 If bLastConvoWithoutSubtitles IF IS_SCRIPTED_CONVERSATION_ONGOING() IF NOT IS_MESSAGE_BEING_DISPLAYED() restartLine = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION() if not is_string_void(restartLine) restartRoot = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT() ENDIF KILL_FACE_TO_FACE_CONVERSATION() dia[thisI].flag++ endif ENDIF ENDIF BREAK CASE 1 IF NOT IS_SCRIPTED_CONVERSATION_ONGOING() dia[thisI].flag = 0 ENDIF BREAK ENDSWITCH BREAK //drive to alley CASE DIA_YOU_DRIVE SWITCH dia[thisI].flag CASE 0 If CREATE_CONVERSATION_EXTRA("AR2_BU01b",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].flag++ dia[thisI].intA = GET_GAME_TIMER() + 3000 ENDIF BREAK CASE 1 IF GET_GAME_TIMER() > dia[thisI].intA IF Get_Mission_Flow_Bitset_Bit_State(FLOWBITSET_FRANKLIN_CHANGED_HAIRCUT, BITS_CHARACTER_REQUEST_ACTIVE) //Check if hair has been cut yet. IF Get_Mission_Flow_Bitset_Bit_State(FLOWBITSET_FRANKLIN_CHANGED_HAIRCUT, BITS_CHARACTER_REQUEST_COMPLETE) //Hair has been cut, look at new hair style and make comment. eStyleHair = GET_PLAYABLE_PED_COMPONENT_STYLE(PLAYER_PED_ID(), COMP_TYPE_HAIR) if eStyleHair = COMP_STYLE_STYLISH IF CREATE_CONVERSATION_EXTRA("AR2_BU27",3,ped[ped_buddy].id,"Lamar",0,ped[ped_franklin].id,"Franklin") bBanterOngoing = TRUE Set_Mission_Flow_Bitset_Bit_State(FLOWBITSET_FRANKLIN_CHANGED_HAIRCUT, BITS_CHARACTER_REQUEST_ACTIVE, FALSE) dia[thisI].flag++ ENDIF ENDIF if eStyleHair = COMP_STYLE_CRAZY IF CREATE_CONVERSATION_EXTRA("AR2_BU27b",3,ped[ped_buddy].id,"Lamar",0,ped[ped_franklin].id,"Franklin") bBanterOngoing = TRUE Set_Mission_Flow_Bitset_Bit_State(FLOWBITSET_FRANKLIN_CHANGED_HAIRCUT, BITS_CHARACTER_REQUEST_ACTIVE, FALSE) dia[thisI].flag++ ENDIF ENDIF if eStyleHair = COMP_STYLE_SENSIBLE IF CREATE_CONVERSATION_EXTRA("AR2_BU27",3,ped[ped_buddy].id,"Lamar",0,ped[ped_franklin].id,"Franklin") bBanterOngoing = TRUE Set_Mission_Flow_Bitset_Bit_State(FLOWBITSET_FRANKLIN_CHANGED_HAIRCUT, BITS_CHARACTER_REQUEST_ACTIVE, FALSE) dia[thisI].flag++ ENDIF ENDIF if eStyleHair = COMP_STYLE_UGLY IF CREATE_CONVERSATION_EXTRA("AR2_BU27b",3,ped[ped_buddy].id,"Lamar",0,ped[ped_franklin].id,"Franklin") bBanterOngoing = TRUE Set_Mission_Flow_Bitset_Bit_State(FLOWBITSET_FRANKLIN_CHANGED_HAIRCUT, BITS_CHARACTER_REQUEST_ACTIVE, FALSE) dia[thisI].flag++ ENDIF ENDIF //Deactivate request. ELSE //Comment that he’s still not changed his hair. IF CREATE_CONVERSATION_EXTRA("AR2_BU31",3,ped[ped_buddy].id,"Lamar",0,ped[ped_franklin].id,"Franklin") bBanterOngoing = TRUE dia[thisI].flag++ ENDIF ENDIF ENDIF ENDIF BREAK CASE 2 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() dia[thisI].intA = GET_GAME_TIMER() + 3000 dia[thisI].flag++ ENDIF BREAK CASE 3 IF IS_CONDITION_TRUE(COND_PLAYER_IN_VEHICLE) OR IS_PED_GETTING_INTO_A_VEHICLE(PLAYER_PED_ID()) dia[thisI].bCompleted = TRUE ELSE IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) If CREATE_CONVERSATION_EXTRA("inCar",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].flag++ dia[thisI].intA = GET_GAME_TIMER() + 9000 ENDIF ELSe IF GET_GAME_TIMER() > dia[thisI].intA If CREATE_CONVERSATION_EXTRA("get_wheels",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].flag++ dia[thisI].intA = GET_GAME_TIMER() + 11000 ENDIF ENDIF ENDIF ENDIF BREAK CASE 4 //player taking ages IF IS_PED_IN_ANY_VEHICLE(player_ped_id()) dia[thisI].bCompleted = TRUE ELSE IF GET_GAME_TIMER() > dia[thisI].intA If CREATE_CONVERSATION_EXTRA("ARM2_NODRIVE",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].intA = GET_GAME_TIMER() + 10000 + (dia[thisI].intB * 7000) dia[thisI].intB++ IF dia[thisI].intB = 3 dia[thisI].bCompleted = TRUE ENDIF ENDIF ENDIF ENDIF BREAK ENDSWITCH BREAK CASE DIA_SIMEON_TALKS_IF_PLAYER_APPROACHES SWITCH dia[thisI].flag CASE 0 IF NOT IS_PED_INJURED(ped[PED_SIMEON].id) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-31.3082, -1102.6906, 25.4223>>) < 3.250 If CREATE_CONVERSATION_EXTRA("AR2_SIEMON",5,ped[PED_SIMEON].id,"SIMEON") dia[thisI].flag++ dia[thisI].intA = GET_GAME_TIMER() + 10000 dia[thisI].intB++ ENDIF ENDIF ENDIF BREAK CASE 1 IF GET_GAME_TIMER() > dia[thisI].intA IF dia[thisI].intB = 3 dia[thisI].bCompleted = TRUE ELSE dia[thisI].flag = 0 ENDIF ENDIF BREAK ENDSWITCH BREAK CASE DIA_PLAYER_GOES_DOWN_ALLEY_EARLY If CREATE_CONVERSATION_EXTRA("AR2_MESS",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_FAIL_ENTERING_ALLEYWAY IF NOT IS_PED_INJURED(ped[ELSAL_ALLEYEND_LEFTA].id) CLEAR_PRINTS() KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() IF NOT IS_MESSAGE_BEING_DISPLAYED() If CREATE_CONVERSATION_EXTRA("ARM2_GET4",8,ped[ELSAL_ALLEYEND_LEFTA].id,"ARM2VAGOS4") dia[thisI].bCompleted = TRUE ENDIF ENDIF ENDIF BREAK CASE DIA_WANTED_LEVEL IF dia[thisI].intA < 2 If CREATE_CONVERSATION_EXTRA("ARM2_WANT",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") SET_CONDITION_STATE(COND_LEMAR_WANTS_TO_COMMENT_ON_WANTED_LEVEL,FALSE) dia[thisI].intA++ ENDIF ELIF dia[thisI].intA < 6 If CREATE_CONVERSATION_EXTRA("ARM2_WANTb",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") SET_CONDITION_STATE(COND_LEMAR_WANTS_TO_COMMENT_ON_WANTED_LEVEL,FALSE) dia[thisI].intA++ ENDIF ENDIF BREAK CASE DIA_PLAYER_LEFT_CAR IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) IF IS_THIS_MODEL_A_BIKE(GET_ENTITY_MODEL(vehicle[VEH_PLAYER].id)) IF dia[thisI].intB < 2 If CREATE_CONVERSATION_EXTRA("AR2_GETON",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") SET_CONDITION_STATE(COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_LEAVING_CAR,FALSE) dia[thisI].intB++ ENDIF ENDIF ELSE IF dia[thisI].intA < 5 If CREATE_CONVERSATION_EXTRA("ARM2_OUTCAR",3,ped[ped_buddy].id,"Lamar") SET_CONDITION_STATE(COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_LEAVING_CAR,FALSE) dia[thisI].intA++ ENDIF ENDIF ENDIF ENDIF BREAK CASE DIA_PLAYER_LEFT_CAR_IN_CHASE IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) IF IS_THIS_MODEL_A_BIKE(GET_ENTITY_MODEL(vehicle[VEH_PLAYER].id)) IF dia[thisI].intB < 2 If CREATE_CONVERSATION_EXTRA("AR2_GETON",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") SET_CONDITION_STATE(COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_LEAVING_CAR,FALSE) dia[thisI].intB++ ENDIF ENDIF ELSE IF dia[thisI].intA < 5 If CREATE_CONVERSATION_EXTRA("ARM2_BACKCH",3,ped[ped_buddy].id,"Lamar") SET_CONDITION_STATE(COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_LEAVING_CAR,FALSE) dia[thisI].intA++ ENDIF ENDIF ENDIF ENDIF BREAK CASE DIA_PLAYER_RUNS_OFF //AR2_GETON IF IS_VEHICLE_DRIVEABLE(vehicle[veh_player].id) IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_buddy].id) < 10.0 IF dia[thisI].intA < 5 If CREATE_CONVERSATION_EXTRA("ARM2_OUTCARB",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") SET_CONDITION_STATE(COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_RUNNING_AWAY_FROM_CAR,FALSE) dia[thisI].intA++ ENDIF ENDIF ENDIF ENDIF BREAK CASE DIA_PLAYER_GETS_BACK_IN_CAR IF dia[thisI].intA < 5 If CREATE_CONVERSATION_EXTRA("ARM2_BACKIN",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") SET_CONDITION_STATE(COND_LEMAR_WANT_TO_COMMENT_ON_PLAYER_GETTING_BACK_IN_CAR,FALSE) dia[thisI].intA++ ENDIF ENDIF BREAK CASE DIA_PLAYER_GETS_BACK_IN_CAR_IN_CHASE IF dia[thisI].intA < 5 //If CREATE_CONVERSATION_EXTRA("ARM2_BACKCH",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") SET_CONDITION_STATE(COND_LEMAR_WANT_TO_COMMENT_ON_PLAYER_GETTING_BACK_IN_CAR,FALSE) // dia[thisI].intA++ //ENDIF ENDIF BREAK CASE DIA_DRIVE_BANTER IF IS_CONDITION_TRUE(COND_BANTER_STATUS_SAVED) AND NOT IS_STRING_NULL_OR_EMPTY(restartRoot) IF CREATE_CONVERSATION_FROM_SPECIFIC_LINE_EXTRA(restartRoot,restartLine,3,ped[ped_buddy].id,"Lamar",0,ped[ped_franklin].id,"Franklin") bBanterOngoing = TRUE restartRoot = "" restartLine = "" SET_CONDITION_STATE(COND_BANTER_STATUS_SAVED,FALSE) ENDIF ELSE IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-1134.2,-1574.5,5.1>>) > 60 SWITCH dia[thisI].flag case 0 //find some dialogue to play IF GET_MISSION_COMPLETE_STATE(SP_MISSION_LAMAR) if CREATE_CONVERSATION_EXTRA("AR2_BU02d",3,ped[ped_buddy].id,"Lamar",0,ped[ped_franklin].id,"Franklin") //first dialogue on drive to alleyway bBanterOngoing = TRUE dia[thisI].flag=4 ENDIF ELIF GET_MISSION_COMPLETE_STATE(SP_MISSION_FRANKLIN_0) if CREATE_CONVERSATION_EXTRA("AR2_BU02c",3,ped[ped_buddy].id,"Lamar",0,ped[ped_franklin].id,"Franklin") //first dialogue on drive to alleyway bBanterOngoing = TRUE dia[thisI].flag=4 ENDIF ELSE if CREATE_CONVERSATION_EXTRA("AR2_BU02",3,ped[ped_buddy].id,"Lamar",0,ped[ped_franklin].id,"Franklin") //first dialogue on drive to alleyway bBanterOngoing = TRUE dia[thisI].flag=3 ENDIF ENDIF BREAK case 3 //more dialogue if CREATE_CONVERSATION_EXTRA("AR2_BU02b",3,ped[ped_buddy].id,"Lamar",0,ped[ped_franklin].id,"Franklin") //first dialogue on drive to alleyway bBanterOngoing = TRUE dia[thisI].flag++ ENDIF BREAK case 4 //more car banter if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() dia[thisI].flag=7 ENDIF break case 7 if CREATE_CONVERSATION_EXTRA("driveBant",3,ped[ped_buddy].id,"Lamar",0,ped[ped_franklin].id,"Franklin") //first dialogue on drive to alleyway bBanterOngoing = TRUE dia[thisI].flag++ ENDIF BREAK case 9 //getting close dialogue IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() KILL_FACE_TO_FACE_CONVERSATION() dia[thisI].flag++ ENDIF BREAK CASE 10 if CREATE_CONVERSATION_EXTRA("DriveApp1",3,ped[ped_buddy].id,"Lamar",0,ped[ped_franklin].id,"Franklin") //first dialogue on drive to alleyway bBanterOngoing = TRUE dia[thisI].flag++ ENDIF BREAK ENDSWITCH ELSE KILL_FACE_TO_FACE_CONVERSATION() bBanterOngoing = FALSE dia[thisI].bCompleted = TRUE ENDIF ENDIF BREAK //advance down alley CASE DIA_WATCH_ME_CLIMB_GATE If CREATE_CONVERSATION_EXTRA("AR2_BU04",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_ARRIVE_AT_ALLEY SWITCH dia[thisI].flag case 0 KILL_FACE_TO_FACE_CONVERSATION() dia[thisI].flag++ BREAK CASE 1 If CREATE_CONVERSATION_EXTRA("AR2_BU03",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].flag++ ENDIF BREAK CASE 2 IF NOT IS_CONV_ROOT_PLAYING("AR2_BU03") dia[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE DIA_BUM_SHOUTS_OUT If CREATE_CONVERSATION_EXTRA("AR2_AN04",3,ped[ped_buddy].id,"Lamar",1,ped[ped_drunk].id,"Arm2bum") dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_MY_RECTAL_GLAND SWITCH dia[thisI].flag CASE 0 //cprintln(debug_Trevor3,"Rectal glasnds") // If CREATE_CONVERSATION_EXTRA("AR2_AN04a",3,ped[ped_buddy].id,"Lamar",1,ped[ped_drunk].id,"Arm2bum") // dia[thisI].bCompleted = TRUE // ENDIF If PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA("AR2_AN04b","AR2_AN04b_1",3,ped[ped_buddy].id,"Lamar",1,ped[ped_drunk].id,"Arm2bum") dia[thisI].flag++ endif break case 1 If PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA("AR2_AN04b","AR2_AN04b_2",3,ped[ped_buddy].id,"Lamar",1,ped[ped_drunk].id,"Arm2bum") dia[thisI].bCompleted = TRUE endif break endswitch // AR2_AN04b BREAK CASE DIA_LEMAR_TALKS_TO_BUM SWITCH dia[thisI].flag CASE 0 dia[thisI].intA = GET_GAME_TIMER() + 1000 dia[thisI].flag++ BREAK CASE 1 IF GET_GAME_TIMER() > dia[thisI].intA If PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA("AR2_AN04b","AR2_AN04b_4",3,ped[ped_buddy].id,"Lamar",1,ped[ped_drunk].id,"Arm2bum") //If CREATE_CONVERSATION_EXTRA("AR2_IG22P0",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF ENDIF BREAK /*CASE 1 IF IS_CONV_ROOT_PLAYING("AR2_AN04b") IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() = 3 KILL_FACE_TO_FACE_CONVERSATION() dia[thisI].flag++ ENDIF ENDIF BREAK*/ CASE 2 IF NOT IS_CONV_ROOT_PLAYING("AR2_AN04b") PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(ped[ped_drunk].id, "AR2_DFAH", "ARM2bum", "SPEECH_PARAMS_FORCE_SHOUTED") dia[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE DIA_PLAYER_INTERUPTS_LEMAR_BUM SWITCH dia[thisI].flag CASE 0 KILL_FACE_TO_FACE_CONVERSATION() dia[thisI].flag++ BREAK CASE 1 If CREATE_CONVERSATION_EXTRA("AR2_AN04d",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE DIA_LAMAR_SEES_SALV_CAR SWITCH dia[thisI].flag CASE 0 dia[thisI].intA = GET_GAME_TIMER() + 1000 dia[thisI].flag++ BREAK CASE 1 IF GET_GAME_TIMER() > dia[thisI].intA If CREATE_CONVERSATION_EXTRA("AR2_see",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK CASE DIA_LAMAR_WALKS_PASS_SALV_CAR IF NOT IS_CONDITION_TRUE(COND_PLAYER_STOOD_INFRONT_OF_CAR) IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_DRIVEOFF].id) IF NOT IS_PED_INJURED(ped[ped_buddy].id) SWITCH dia[thisI].flag CASE 0 IF GET_DISTANCE_BETWEEN_ENTITIES(vehicle[VEH_DRIVEOFF].id,ped[ped_buddy].id) < 6 dia[thisI].flag++ ENDIF BREAK CASE 1 If CREATE_CONVERSATION_EXTRA("AR2_AN05",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH ENDIF ENDIF ELSE dia[thisI].bCompleted = TRUE ENDIF BREAK case DIA_SALVS_RESPOND_TO_PLAYER_IN_WAY SWITCH dia[thisI].flag CASE 0 If CREATE_CONVERSATION_EXTRA("ARM2_OUT",4,PED[ped_driver].ID,"arm2VAGOSCAR") dia[thisI].flag++ ENDIF BREAK CASE 1 IF IS_CONV_ROOT_PLAYING("move") dia[thisI].flag++ ENDIF BREAK CASE 2 IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_DRIVEOFF].id) IF GET_ENTITY_SPEED(vehicle[VEH_DRIVEOFF].id) > 1 If CREATE_CONVERSATION_EXTRA("ARM2_OUT2",4,PED[ped_driver].ID,"arm2VAGOSCAR") dia[thisI].flag++ ENDIF ELSE IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA("ARM2_OUT2","ARM2_OUT2_2",4,PED[ped_driver].ID,"arm2VAGOSCAR") dia[thisI].flag++ endif ENDIF ENDIF BREAK CASE 3 If CREATE_CONVERSATION_EXTRA("ARM2_OUT3",4,PED[ped_driver].ID,"arm2VAGOSCAR") dia[thisI].flag++ ENDIF BREAK CASE 4 If CREATE_CONVERSATION_EXTRA("ARM2_OUT4",4,PED[ped_driver].ID,"arm2VAGOSCAR") dia[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH break CASE DIA_PLAYER_DAMAGES_DRIVING_OFF_CAR If CREATE_CONVERSATION_EXTRA("ARM2_GET4",8,PED[ped_driver].ID,"arm2VAGOS4") IF NOT IS_PED_INJURED(ped[ped_driver].id) GIVE_WEAPON_TO_PED(ped[ped_driver].id,WEAPONTYPE_PISTOL,INFINITE_AMMO,TRUE) seq() TASK_LEAVE_ANY_VEHICLE(null) TASK_COMBAT_PED(null,player_ped_id()) endseq(ped[ped_driver].id) ENDIF IF NOT IS_PED_INJURED(ped[ELSAL_PASSENGER].id) GIVE_WEAPON_TO_PED(ped[ELSAL_PASSENGER].id,WEAPONTYPE_PISTOL,INFINITE_AMMO,TRUE) seq() TASK_LEAVE_ANY_VEHICLE(null) TASK_COMBAT_PED(null,player_ped_id()) endseq(ped[ELSAL_PASSENGER].id) ENDIF IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_DRIVEOFF].id) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[VEH_DRIVEOFF].id) vector vVehSpeed vVehSpeed = GET_ENTITY_VELOCITY(vehicle[VEH_DRIVEOFF].id) STOP_PLAYBACK_RECORDED_VEHICLE(vehicle[VEH_DRIVEOFF].id) SET_ENTITY_VELOCITY(vehicle[VEH_DRIVEOFF].id,vVehSpeed) ENDIF ENDIF dia[thisI].bCompleted = TRUE ENDIF BREAK case DIA_LEMAR_TELLS_PLAYER_TO_MOVE_AWAY_FROM_CAR SWITCH dia[thisI].flag CASE 0 IF IS_CONV_ROOT_PLAYING("ARM2_OUT") dia[thisI].flag++ ENDIf BREAK CASE 1 If CREATE_CONVERSATION_EXTRA("move",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH break CASE DIA_LEMAR_AFTER_PLAYER_BLOCKED_CAR If CREATE_CONVERSATION_EXTRA("AR2_BU12",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_CAR_PEDS_CHATTING IF NOT IS_PED_INJUREd(ped[ped_driver].id) AND NOT IS_PED_INJUREd(ped[ELSAL_PASSENGER].id) IF NOT IS_AMBIENT_SPEECH_DISABLED(ped[ELSAL_PASSENGER].id) STOP_PED_SPEAKING(ped[ELSAL_PASSENGER].id,true) ENDIF IF NOT IS_AMBIENT_SPEECH_DISABLED(ped[ped_driver].id) STOP_PED_SPEAKING(ped[ped_driver].id,true) ENDIF SWITCH dia[thisI].flag CASE 0 IF GET_GAME_TIMER() > dia[thisI].intA IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_driver].id) < 15 IF GET_RANDOM_INT_IN_RANGE(0,2) = 0 PLAY_PED_AMBIENT_SPEECH_NATIVE(ped[ped_driver].id, "CHAT_STATE", "SPEECH_PARAMS_FORCE") dia[thisI].flag=2 ELSE PLAY_PED_AMBIENT_SPEECH_NATIVE(ped[ELSAL_PASSENGER].id, "CHAT_STATE", "SPEECH_PARAMS_FORCE") dia[thisI].flag=3 ENDIF ENDIF ENDIF BREAK CASE 2 IF NOT IS_AMBIENT_SPEECH_PLAYING(ped[ped_driver].id) PLAY_PED_AMBIENT_SPEECH_NATIVE(ped[ELSAL_PASSENGER].id, "CHAT_RESP", "SPEECH_PARAMS_FORCE") dia[thisI].flag = 4 ENDIF BREAK CASE 3 IF NOT IS_AMBIENT_SPEECH_PLAYING(ped[ELSAL_PASSENGER].id) PLAY_PED_AMBIENT_SPEECH_NATIVE(ped[ped_driver].id, "CHAT_RESP", "SPEECH_PARAMS_FORCE") dia[thisI].flag = 4 ENDIF BREAK CASE 4 IF NOT IS_AMBIENT_SPEECH_PLAYING(ped[ped_driver].id) AND NOT IS_AMBIENT_SPEECH_PLAYING(ped[ELSAL_PASSENGER].id) dia[thisI].intA = GET_GAME_TIMER() + 9000 dia[thisI].flag = 0 ENDIF //dia[thisI].bCompleted = TRUE BREAK ENDSWITCH ENDIF BREAK CASE DIA_LAMAR_TELLS_PLAYER_TO_HURRY_NEAR_ALLEY_END If CREATE_CONVERSATION_EXTRA("AR2_BU12",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_WALKING_DOWN_END_OF_ALLEY_CHAT SWITCH dia[thisI].flag CASE 0 dia[thisI].intA = GET_GAME_TIMER() + 10000 dia[thisI].flag++ BREAK CASE 1 IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_buddy].id) < 15.0 If CREATE_CONVERSATION_EXTRA("AR2_BU07",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF ELSE IF GET_GAME_TIMER() > dia[thisI].intA dia[thisI].bCompleted = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK CASE DIA_LAMAR_SAYS_OPEN_GARAGE If CREATE_CONVERSATION_EXTRA("ARM2_adoor",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_LAMAR_SAYS_OPEN_NEXT_GARAGE If CREATE_CONVERSATION_EXTRA("ARM2_nextone",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_LAMAR_SAYS_OPEN_LAST_GARAGE If CREATE_CONVERSATION_EXTRA("ARM2_last",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_LAMAR_SAYS_OPEN_GARAGE_AGAIN SWITCH dia[thisI].flag CASE 0 IF IS_THIS_PRINT_BEING_DISPLAYED("ARM2_INS07") dia[thisI].flag++ ENDIF BREAK CASE 1 IF dia[thisI].intA < 3 IF CREATE_CONVERSATION_EXTRA("WaitAtGar",3,ped[ped_buddy].id,"Lamar") dia[thisI].flag++ dia[thisI].intA++ dia[thisI].flag = GET_GAME_TIMER() + 4000 IF NOT IS_PED_INJURED(ped[ped_buddy].id) CANCEL_BUDDY_PERMANENT_HEAD_TRACK(ped[ped_buddy].id) TASK_LOOK_AT_ENTITY(ped[ped_buddy].id,player_ped_id(),4000) ENDIf ENDIF ELSE dia[thisI].bCompleted = TRUE ENDIF BREAK DEFAULT IF GET_GAME_TIMER() > dia[thisI].flag HANDLE_BUDDY_PERMANENT_HEAD_TRACK(ped[ped_buddy].id) dia[thisI].flag = 1 ENDIF BREAK ENDSWITCH BREAK CASE DIA_LAMAR_WAIT_ON_PLAYER SWITCH dia[thisI].flag CASE 0 IF GET_ACTION_FLAG(14,ACTION_LEMAR_WAITS_FOR_PLAYER) > 0 IF NOT IS_CONDITION_TRUE(COND_PLAYER_IN_ALLEYWAY) If CREATE_CONVERSATION_EXTRA("AR2_BU12",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].flag = 1 ENDIF ELSE IF IS_ENTITY_IN_ANGLED_AREA(player_ped_id(), GET_ENTITY_COORDS(ped[ped_buddy].id)-<<0,0,5>>, <<-1065.555298,-1675.355103,24.193195>>, 150.000000) If CREATE_CONVERSATION_EXTRA("AR2_LEAVE2",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].flag = 1 ENDIF ELSE If CREATE_CONVERSATION_EXTRA("AR2_LEAVE1",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].flag = 1 ENDIF ENDIF ENDIF ENDIF BREAK CASE 1 IF GET_ACTION_FLAG(14,ACTION_LEMAR_WAITS_FOR_PLAYER) = 0 dia[thisI].flag = 0 ENDIF BREAK ENDSWITCH BREAK CASE DIA_PLAYER_APPROACHES_STOPPED_ELSAL_CAR If CREATE_CONVERSATION_EXTRA("ARM2_UPTO",4,ped[ped_driver].id,"ARM2VAGOSCAR") dia[thisI].intA++ ENDIF If dia[thisI].intA >= 5 dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_FRANKLIN_HIT_BY_CAR SWITCH dia[thisI].flag CASE 0 dia[thisI].intA = GET_GAME_TIMER()+3000 dia[thisI].flag++ BREAK CASE 1 IF GET_GAME_TIMER() > dia[thisI].intA dia[thisI].bCompleted = TRUE ENDIF If CREATE_CONVERSATION_EXTRA("frank_hit",0,player_ped_id(),"FRANKLIN") dia[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE DIA_LAMAR_IMPATIENT_WAITING_AT_END SWITCH dia[thisI].flag CASE 0 dia[thisI].intA = GET_GAME_TIMER() + 10000 dia[thisI].flag++ BREAK CASE 1 IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() dia[thisI].intA = GET_GAME_TIMER() + 10000 ENDIF IF GET_GAME_TIMER() > dia[thisI].intA dia[thisI].flag++ ENDIF BREAK CASE 2 If CREATE_CONVERSATION_EXTRA_WAIT_ON_INSTRUCTIONS("ARM2_HURRY",3,ped[ped_buddy].id,"LAMAR") dia[thisI].flag++ dia[thisI].intA = GET_GAME_TIMER() + 12000 ENDIF BREAK CASE 3 IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() dia[thisI].intA = GET_GAME_TIMER() + 10000 ENDIF IF GET_GAME_TIMER() > dia[thisI].intA dia[thisI].flag++ ENDIF BREAK CASE 4 If CREATE_CONVERSATION_EXTRA_WAIT_ON_INSTRUCTIONS("openit",3,ped[ped_buddy].id,"LAMAR") dia[thisI].flag=1 dia[thisI].intA = GET_GAME_TIMER() + 12000 dia[thisI].intB++ IF dia[thisI].intB = 2 dia[thisI].bCompleted = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK CASE DIA_LAMAR_SAYS_STOP_MESSING_ABOUT IF dia[thisI].intB < 6 IF GET_GAME_TIMER() > dia[thisI].intA If CREATE_CONVERSATION_EXTRA("AR2_MESS",3,ped[ped_buddy].id,"LAMAR") //cprintln(debug_trevor3,"Crazy") SET_CONDITION_STATE(COND_PLAYER_BLOCKING_GATE,FALSE) dia[thisI].intA = GET_GAME_TIMER() + 5000 dia[thisI].intB++ ENDIF ENDIF ELSE dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_LAMAR_SAYS_STOP_BLOCKING_GATE_WITH_CAR IF dia[thisI].intB < 2 IF GET_GAME_TIMER() > dia[thisI].intA If CREATE_CONVERSATION_EXTRA("AR2_BLOCK",3,ped[ped_buddy].id,"LAMAR") SET_CONDITION_STATE(COND_CAR_BLOCKING_GATE,FALSE) dia[thisI].intA = GET_GAME_TIMER() + 8000 dia[thisI].intB++ ENDIF ENDIF ELSE dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_SHOOTOUT_START If CREATE_CONVERSATION_EXTRA("ARM2_GET",5,ped[ELSAL_AT_GARAGE].id,"ARM2VAGOS1") dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_LAMAR_REACTS SWITCH dia[thisI].flag CASE 0 If CREATE_CONVERSATION_EXTRA_NO_SUBTITLES("ARM2_ATTACK",3,ped[ped_buddy].id,"LAMAR") dia[thisI].flag++ ENDIF BREAK CASE 1 IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA("ARM2_COVER","ARM2_COVER_1",3,ped[ped_buddy].id,"LAMAR") dia[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE DIA_GET_GUN If CREATE_CONVERSATION_EXTRA_NO_SUBTITLES("AR2_MCS_4_LO",0,ped[ped_buddy].id,"LAMAR") dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_PLAYER_STAYS_IN_GARAGE If CREATE_CONVERSATION_EXTRA("AR2_HELP",3,ped[ped_buddy].id,"LAMAR") dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_ON_LEFT SWITCH dia[thisI].flag CASE 0 dia[thisI].intA = GET_GAME_TIMER() + 3000 dia[thisI].flag++ BREAK CASE 1 IF NOT IS_PED_INJURED(ped[ELSAL_FROM_LEFT].id) AND GET_GAME_TIMER() < dia[thisI].intA If CREATE_CONVERSATION_EXTRA("AR2_BU40",3,ped[ped_buddy].id,"LAMAR") //bu40 dia[thisI].bCompleted = TRUE ENDIF ELSe dia[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE DIA_TAKE_COVER_BEHIND_BISON SWITCH dia[thisI].flag CASE 0 //SET_CONDITION_STATE(COND_BLOCK_TAUNTS,TRUE) If CREATE_CONVERSATION_EXTRA("ARM2_MORE",3,ped[ped_buddy].id,"LAMAR") //bu40 dia[thisI].flag++ ENDIF BREAK CASE 1 If CREATE_CONVERSATION_EXTRA("AR2_BU18",3,ped[ped_buddy].id,"LAMAR") //bu40 PRINT_HELP("ARM2_HLP15",DEFAULT_HELP_TEXT_TIME+2000) dia[thisI].bCompleted = TRUE // SET_CONDITION_STATE(COND_BLOCK_TAUNTS,FALSE) ENDIF BREAK ENDSWITCH BREAK CASE DIA_LEMAR_SHOT_AT_HIT_GAS If CREATE_CONVERSATION_EXTRA("AR2_BU37",3,ped[ped_buddy].id,"LAMAR") //bu40 SET_CONDITION_STATE(COND_GAS_COMMENT_MADE,TRUE) dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_LEMAR_SHOT_AT_NO_GAS IF NOT IS_PED_INJURED(ped[ELSAL_SCAFFOLDA].id) // IF CAN_PED_SEE_HATED_PED(ped[ped_buddy].id,ped[ELSAL_SCAFFOLDA].id) If PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA("AR2_BU37b","AR2_BU37b_2",3,ped[ped_buddy].id,"LAMAR") //bu40 SET_CONDITION_STATE(COND_GAS_COMMENT_MADE,TRUE) dia[thisI].bCompleted = TRUE ENDIF // ENDIF ELSe dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_COMBAT_BANTER SWITCH dia[thisI].flag CASE 0 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(8000,14000) dia[thisI].flag++ ENDIF BREAK CASE 1 IF GET_GAME_TIMER() > dia[thisI].intA dia[thisI].flag++ ELSE IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() dia[thisI].flag = 0 ENDIF ENDIF BREAK CASE 2 //if player got a kill in last 2 secs //else int iSpeakers iSpeakers = 0 If iConvTracker[0] < 8 and iLastConvo != 0 iSpeaker[0] = 0 iSpeakers++ endif If iConvTracker[1] = 0 or iConvTracker[2] = 0 or iConvTracker[3] = 0 or iConvTracker[4] = 0 If iLastConvo != 1 iSpeaker[iSpeakers] = 1 iSpeakers++ ENDIF endif If iConvTracker[5] < 3 or iConvTracker[6] < 3 or iConvTracker[7] < 3 or iConvTracker[8] < 3 If iLastConvo != 2 iSpeaker[iSpeakers] = 2 iSpeakers++ ENDIF endif If iConvTracker[9] < 8 and iLastConvo != 3 iSpeaker[iSpeakers] = 3 iSpeakers++ endif IF iSpeakers > 0 dia[thisI].intA = iSpeaker[GET_RANDOM_INT_IN_RANGE(0,iSpeakers)] dia[thisI].flag++ ELSE IF iLastConvo = -1 dia[thisI].bCompleted = TRUE endif ENDIf iLastConvo = -1 //-30% Franklin shouts to Vagos (ARM2_SHOUT) //30-50% Banter Franklin/Lamar //shtchat1(to 4) //50-70% Vagos shout out //70-100% Lamar shouts at Vagos (AR2_tnt) // franklin gets a kill comment AR2_KILL BREAK CASE 3 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() SWITCH dia[thisI].intA CASE 0 //Franklin shouts out IF CREATE_CONVERSATION_EXTRA("ARM2_SHOUT",0,player_ped_id(),"FRANKLIN") dia[thisI].flag = 0 iConvTracker[0]++ iLastConvo = 0 ENDIF BREAK CASE 1 //Franklin/Lamar Banter int iBantCount int iSelectedConvob iBantCount = GET_RANDOM_INT_IN_RANGE(0,12) WHILE iBantCount > 0 SWITCH iBantCount %4 CASE 0 IF iConvTracker[1] = 0 iSelectedConvob = 0 ENDIF BREAK CASE 1 IF iConvTracker[2] = 0 iSelectedConvob = 1 ENDIF BREAk CASE 2 IF iConvTracker[3] = 0 iSelectedConvob = 2 ENDIF BREAK CASE 3 IF iConvTracker[4] = 0 iSelectedConvob = 3 ENDIF BREAK ENDSWITCH iBantCount-- ENDWHILE dia[thisI].flag = 4 iLastConvo=1 dia[thisI].intA = iSelectedConvob BREAK CASE 2 //salvo dialogue int iBantCountb int iSelectedConvo int iSafetyCounter iSafetyCounter = 0 iSelectedConvo = -1 iBantCountb = GET_RANDOM_INT_IN_RANGE(0,4) WHILE iSelectedConvo = -1 iSafetyCounter++ SWITCH iBantCountb CASE 0 IF iConvTracker[5] < 3 iSelectedConvo = 0 ELSE iBantCountb++ ENDIF BREAK CASE 1 IF iConvTracker[6] < 3 iSelectedConvo = 1 ELSE iBantCountb++ ENDIF BREAk CASE 2 IF iConvTracker[7] < 3 iSelectedConvo = 2 ELSE iBantCountb++ ENDIF BREAK CASE 3 IF iConvTracker[8] < 3 iSelectedConvo = 3 ELSE iBantCountb=0 ENDIF BREAK ENDSWITCH If iSafetyCounter = 5 iSelectedConvo = 10 ENDIF ENDWHILE If iSelectedConvo != 10 dia[thisI].flag = 5 iLastConvo=2 dia[thisI].intA = iSelectedConvo else dia[thisI].flag = 0 endif BREAK CASE 3 //Franklin shouts out IF CREATE_CONVERSATION_EXTRA("AR2_tnt",3,ped[ped_buddy].id,"LAMAR") dia[thisI].flag = 0 iConvTracker[9]++ iLastConvo=3 ENDIF BREAK ENDSWITCH ELSE dia[thisI].flag = 0 ENDIF BREAK CASE 4 //convo franklin/lamar SWITCH dia[thisI].intA CASE 0 IF CREATE_CONVERSATION_EXTRA("shtchat1",0,player_ped_id(),"FRANKLIN",2,ped[ped_buddy].id,"LAMAR") dia[thisI].flag = 0 iConvTracker[1] = 1 ENDIF BREAK CASE 1 IF CREATE_CONVERSATION_EXTRA("shtchat2",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"LAMAR") dia[thisI].flag = 0 iConvTracker[2] = 1 ENDIF BREAK CASE 2 IF CREATE_CONVERSATION_EXTRA("shtchat3",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"LAMAR") dia[thisI].flag = 0 iConvTracker[3] = 1 ENDIF BREAK CASE 3 IF CREATE_CONVERSATION_EXTRA("shtchat4",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"LAMAR") dia[thisI].flag = 0 iConvTracker[4] = 1 ENDIF BREAK ENDSWITCH BREAK CASE 5 //salvo shouts int iLivingSalvo iLivingSalvo = GET_LIVING_ELSAL() If iLivingSalvo != -1 SWITCH dia[thisI].intA CASE 0 IF CREATE_CONVERSATION_EXTRA("ARM2_GET",5,ped[iLivingSalvo].id,"ARM2VAGOS1") dia[thisI].flag = 0 iConvTracker[5]++ ENDIF BREAK CASE 1 IF GET_RANDOM_INT_IN_RANGE(0,2) = 0 IF CREATE_CONVERSATION_EXTRA("ARM2_GET2",6,ped[iLivingSalvo].id,"ARM2VAGOS2") dia[thisI].flag = 0 iConvTracker[6]++ ENDIF ELSE IF CREATE_CONVERSATION_EXTRA("ARM2_NOGO",5,ped[iLivingSalvo].id,"ARM2VAGOS1") dia[thisI].flag = 0 iConvTracker[6]++ ENDIF ENDIF BREAK CASE 2 IF CREATE_CONVERSATION_EXTRA("ARM2_GET3",7,ped[iLivingSalvo].id,"ARM2VAGOS3") dia[thisI].flag = 0 iConvTracker[7]++ ENDIF BREAK CASE 3 IF CREATE_CONVERSATION_EXTRA("ARM2_GET4",8,ped[iLivingSalvo].id,"ARM2VAGOS4") dia[thisI].flag = 0 iConvTracker[8]++ ENDIF BREAK ENDSWITCH ENDIF BREAK ENDSWITCH BREAK CASE DIA_GAS_BLOWS_UP SWITCH dia[thisI].flag CASE 0 IF IS_CONV_ROOT_PLAYING("AR2_BU37") KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() ENDIF IF CREATE_CONVERSATION_EXTRA("AR2_BLOWUP",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF dia[thisI].intA = GET_GAME_TIMER() + 670 dia[thisI].flag++ BREAK CASE 1 IF GET_GAME_TIMER() > dia[thisI].intA dia[thisI].bCompleted = TRUE ELSE IF CREATE_CONVERSATION_EXTRA("AR2_BLOWUP",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK CASE DIA_KEEP_GOING_PASSED_SKIP IF IS_CONDITION_TRUE(COND_SCAFFOLD_BLOWN) IF CREATE_CONVERSATION_EXTRA("AR2_godst",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF ELSE IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA("AR2_godst","AR2_godst_3",1,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF ENDIF BREAK CASE DIA_SEE_MORE_ELSAL SWITCH dia[thisI].flag CASE 0 IF CREATE_CONVERSATION_EXTRA("AR2_BU19",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].flag++ ENDIF BREAK CASE 1 IF CREATE_CONVERSATION_EXTRA("AR2_BU19b",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE DIA_ON_THE_VERANDA IF DOES_ENTITY_EXIST(ped[ELSAL_BALCONY].id) IF NOT IS_PED_INJURED(ped[ELSAL_BALCONY].id) IF CREATE_CONVERSATION_EXTRA("ARM2_BALCON",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF ELSE dia[thisI].bCompleted = TRUE ENDIF ENDIF BREAK CASE DIA_UP_ON_BALCONY SWITCH dia[thisI].flag CASE 0 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() //added this to ensure this conversatino doesn't end up queued and playing when the ped dies dia[thisI].flag++ ENDIF BREAK CASE 1 IF DOES_ENTITY_EXIST(ped[ELSAL_ROOF].id) IF NOT IS_PED_INJURED(ped[ELSAL_ROOF].id) IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA("AR2_BU20b","AR2_BU20b_1",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF ELSE dia[thisI].bCompleted = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK CASE DIA_COMING_OUT_DOOR IF DOES_ENTITY_EXIST(ped[ELSAL_EXIT_DOOR].id) IF NOT IS_PED_INJURED(ped[ELSAL_EXIT_DOOR].id) IF CREATE_CONVERSATION_EXTRA("AR2_DOOR",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF ELSE dia[thisI].bCompleted = TRUE ENDIF ENDIF BREAK CASE DIA_CAR_DRIVING_OFF IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_FLEE].id) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[VEH_FLEE].id) IF CREATE_CONVERSATION_EXTRA("AR2_BU26",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF ELSE dia[thisI].bCompleted = TRUE ENDIF ELSE dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_SHOOT_GAS IF bPetrolBurning dia[thisI].bCompleted = TRUE ELSE IF CREATE_CONVERSATION_EXTRA("AR2_BU36",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF ENDIF BREAK CASE DIA_FINAL_WAVE SWITCH dia[thisI].flag CASE 0 IF CREATE_CONVERSATION_EXTRA("ARM2_MORE2",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].flag++ ENDIF BREAK CASE 1 IF CREATE_CONVERSATION_EXTRA("ARM2_MORE2",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE DIA_LETS_GET_OUT_OF_HERE SWITCH dia[thisI].flag CASE 0 dia[thisI].intA = get_Game_timer() + 500 dia[thisI].flag++ BREAK CASE 1 IF get_Game_timer() > dia[thisI].intA IF CREATE_CONVERSATION_EXTRA("AR2_safe",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF ENDIF //failsafe IF get_Game_timer() > dia[thisI].intA + 4000 dia[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK CASE DIA_THERES_THE_BIKE SWITCH dia[thisI].flag CASE 0 IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) IF IS_ENTITY_IN_ANGLED_AREA( vehicle[VEH_OBJECTIVE].id, <<-1129.596069,-1588.691040,-0.139362>>, <<-1141.043945,-1572.930420,7.562129>>, 25.250000) dia[thisI].flag++ endif ENDIF BREAK CASE 1 IF CREATE_CONVERSATION_EXTRA("AR2_MCS5_LI",0,player_ped_id(),"FRANKLIN",1,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK // chase stage CASE DIA_GET_THE_BIKE SWITCH dia[thisI].flag CASE 0 IF CREATE_CONVERSATION_EXTRA("AR2_BU23",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].flag++ ENDIF BREAK CASE 1 IF CREATE_CONVERSATION_EXTRA("ARM2_GOBIKE",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].flag++ ENDIF BREAK CASE 2 IF IS_CONDITION_TRUE(COND_LEMAR_CLIMBED_OUT_OF_ALLEY) IF IS_CONDITION_FALSE(COND_PLAYER_CAR_NEARBY_LEMAR) // IF GET_DISTANCE_BETWEEN_EN if CREATE_CONVERSATION_EXTRA("get_wheels",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF ELSE dia[thisI].bCompleted = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK case DIA_EXPLODING_CAR_DEATHS IF CREATE_CONVERSATION_EXTRA("ARM2_burn",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_GET_SHOTGUN SWITCH dia[thisI].flag CASE 0 dia[thisI].intA = GET_GAME_TIMER() + 4500 dia[thisI].flag++ BREAK CASE 1 IF GET_GAME_TIMER() > dia[thisI].intA IF IS_CONDITION_FALSE(COND_SCAFFOLD_BLOWN) AND IS_CONDITION_FALSE(COND_FIRST_WAVE_DEAD) IF CREATE_CONVERSATION_EXTRA("AR2_BU24",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF ELSE dia[thisI].bCompleted = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK CASE DIA_COME_BACK IF CREATE_CONVERSATION_EXTRA("AR2_LEAVE3",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_CHASE_BIKE_BANTER IF IS_CONDITION_TRUE(COND_CHASE_BANTER_STATUS_SAVED) AND NOT IS_STRING_NULL_OR_EMPTY(restartRoot) IF CREATE_CONVERSATION_FROM_SPECIFIC_LINE_EXTRA(restartRoot,restartLine,3,ped[ped_buddy].id,"Lamar",0,ped[ped_franklin].id,"Franklin") bBanterOngoing = TRUE restartRoot = "" restartLine = "" SET_CONDITION_STATE(COND_CHASE_BANTER_STATUS_SAVED,FALSE) ENDIF ELSE SWITCH dia[thisI].flag CASE 0 do_chase_dialogue(true) dia[thisI].flag++ BREAK CASE 1 do_chase_dialogue(false) BREAK ENDSWITCH ENDIF BREAK CASE DIA_BIKER_SHOUTS_AT_PLAYER IF NOT IS_PED_INJURED(ped[ped_bikeman].id) IF GET_GAME_TIMER() > dia[thisI].intA IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_bikeman].id) < 40 SET_AMBIENT_VOICE_NAME(ped[ped_bikeman].id, "G_M_Y_SalvaGoon_02_SALVADORIAN_MINI_02") PLAY_PED_AMBIENT_SPEECH(ped[ped_bikeman].id,"GENERIC_INSULT_HIGH",SPEECH_PARAMS_FORCE_SHOUTED_CLEAR) dia[thisI].flag++ dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(2500,4000) ENDIF ENDIF ENDIF BREAK CASE DIA_PLAYER_NOT_GOT_IN_CAR_AT_CHASE_START if CREATE_CONVERSATION_EXTRA("ARM2_GETIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE endif BREAK CASE DIA_AFTER_BIKER_DOWN SWITCH dia[thisI].flag CASE 0 KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() dia[thisI].flag=100 BREAK CASE 100 if CREATE_CONVERSATION_EXTRA("AR2_AN14",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].flag=1 endif break CASe 1 if CREATE_CONVERSATION_EXTRA("AR2_BU34",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE endif break endswitch BREAK CASE DIA_BYE if CREATE_CONVERSATION_EXTRA("AR2_bye",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE endif BREAK CASE DIA_GETTING_A_CAR if CREATE_CONVERSATION_EXTRA("AR2_FINDCAR",0,player_ped_id(),"FRANKLIN",3,ped[ped_buddy].id,"Lamar") dia[thisI].bCompleted = TRUE endif BREAK CASE DIA_PLAYER_AT_CARWASH_WITHOUT_BIKE IF dia[thisI].intB < 3 IF GET_GAME_TIMER() > dia[thisI].intA IF GET_ACTION_INTB(6,ACT_LOAD_CUTSENE) = 2 KILL_ANY_CONVERSATION() ENDIF If CREATE_CONVERSATION_EXTRA("AR2_BRING",3,ped[ped_buddy].id,"LAMAR") SET_ACTION_INTB(6,ACT_LOAD_CUTSENE,0) dia[thisI].intA = GET_GAME_TIMER() + 8000 dia[thisI].intB++ ENDIF ENDIF ELSE dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_PLAYER_AT_CARWASH_WITHOUT_BIKE_FAR cprintln(debug_trevor3,"dia[thisI].intB = ",dia[thisI].intB," dia[thisI].intA = ",dia[thisI].intA," GET_GAME_TIMER() = ",GET_GAME_TIMER()) IF dia[thisI].intB < 3 IF GET_GAME_TIMER() > dia[thisI].intA IF GET_ACTION_INTB(6,ACT_LOAD_CUTSENE) = 2 KILL_ANY_CONVERSATION() ENDIF If CREATE_CONVERSATION_EXTRA("AR2_NOBIKE",3,ped[ped_buddy].id,"LAMAR") SET_ACTION_INTB(6,ACT_LOAD_CUTSENE,0) dia[thisI].intA = GET_GAME_TIMER() + 8000 dia[thisI].intB++ ENDIF ENDIF ELSE dia[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH ENDIF ENDIF IF IS_SCRIPTED_CONVERSATION_ONGOING() currentConv = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT() ELSE lastConv = currentConv lastConv = lastConv ENDIF ENDPROC PROC DIALOGUE_ON_ACTION(int thisI, enumDialogue thisDia, int actEntry, enumActions checkAction, andorEnum andOr1=cIGNORE, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3 = COND_NULL, andorEnum andOr4=cIGNORE, enumconditions cond4 = COND_NULL) IF dia[thisI].dial != thisDia dia[thisI].bCompleted = FALSE dia[thisI].dial = thisDia ENDIF IF actions[actEntry].action = checkAction IF NOT dia[thisI].bCompleted IF actions[actEntry].completed DIALOGUE(thisI,thisDia,andOr1,cond1,andOr2,cond2,andOr3,cond3,andOr4,cond4) ENDIF ENDIF ELSE IF actions[actEntry].action != ACT_NULL TEXT_LABEL_63 txt txt = "" txt += "DIALOGUE_ON_ACTION():" txt += actEntry SCRIPT_ASSERT(txt) ENDIF ENDIF ENDPROC PROC DIALOGUE_ON_DIALOGUE(int thisI, enumDialogue thisDia, int diaEntry, enumDialogue checkDia, andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3 = COND_NULL, andorEnum andOr4=cIGNORE, enumconditions cond4 = COND_NULL) IF NOT dia[thisI].bCompleted IF HAS_DIALOGUE_FINISHED(diaEntry,checkDia) DIALOGUE(thisI,thisDia,andOr1,cond1,andOr2,cond2,andOr3,cond3,andOr4,cond4) ENDIF ENDIF ENDPROC // ====================================== DEBUG ================================================ #if IS_DEBUG_BUILD PROC PRINT_CONDITION_DATA(int iCon) string sCond enumConditions thisCond = conditions[iCon].condition sCond = GET_COND_TEXT(thisCond) SET_TEXT_SCALE(0.25,0.25) IF iCon > 35 IF conditions[iCon].returns SET_TEXT_COLOUR(0,0,255,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.5,0.1+((iCon-35)*0.02),"STRING",sCond) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_SCALE(0.25,0.25) DISPLAY_TEXT_WITH_LITERAL_STRING(0.8,0.1+((iCon-35)*0.02),"STRING","TRUE") ELSE SET_TEXT_COLOUR(255,0,0,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.5,0.1+((iCon-35)*0.02),"STRING",sCond) SET_TEXT_COLOUR(255,0,0,255) SET_TEXT_SCALE(0.25,0.25) DISPLAY_TEXT_WITH_LITERAL_STRING(0.8,0.1+((iCon-35)*0.02),"STRING","FALSE") ENDIF ELSE IF conditions[iCon].returns SET_TEXT_COLOUR(0,0,255,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iCon*0.02),"STRING",sCond) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_SCALE(0.25,0.25) DISPLAY_TEXT_WITH_LITERAL_STRING(0.4,0.1+(iCon*0.02),"STRING","TRUE") ELSE SET_TEXT_COLOUR(255,0,0,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iCon*0.02),"STRING",sCond) SET_TEXT_COLOUR(255,0,0,255) SET_TEXT_SCALE(0.25,0.25) DISPLAY_TEXT_WITH_LITERAL_STRING(0.4,0.1+(iCon*0.02),"STRING","FALSE") ENDIF ENDIF ENDPROC PROC PRINT_DIALOGUE_DATA(int iDia) string sDia enumDialogue thisDia = dia[iDia].dial SWITCH thisDia CASE DIA_NULL sDia = " DIA_NULL " BREAK CASE DIA_SWITCH_TO_SUBTITLES sDia = " DIA_SWITCH_TO_SUBTITLES " BREAK CASE DIA_YOU_DRIVE sDia = " DIA_YOU_DRIVE " BREAK CASE DIA_DRIVE_BANTER sDia = " DIA_DRIVE_BANTER " BREAK CASE DIA_GETTING_CLOSE sDia = " DIA_GETTING_CLOSE " BREAK CASE DIA_WANTED_LEVEL sDia = " DIA_WANTED_LEVEL " BREAK CASE DIA_PLAYER_LEFT_CAR sDia = " DIA_PLAYER_LEFT_CAR " BREAK CASE DIA_PLAYER_RUNS_OFF sDia = " DIA_PLAYER_RUNS_OFF " BREAK CASE DIA_PLAYER_GETS_BACK_IN_CAR sDia = " DIA_PLAYER_GETS_BACK_IN_CAR " BREAK CASE DIA_STOPPED_IN_CAR sDia = " DIA_STOPPED_IN_CAR " BREAK CASE DIA_SIMEON_TALKS_IF_PLAYER_APPROACHES sDia = " DIA_SIMEON_TALKS_IF_PLAYER_APPROACHES " BREAK CASE DIA_PLAYER_GOES_DOWN_ALLEY_EARLY sDia = " DIA_PLAYER_GOES_DOWN_ALLEY_EARLY " BREAK CASE DIA_FAIL_ENTERING_ALLEYWAY sDia = " DIA_FAIL_ENTERING_ALLEYWAY " BREAK CASE DIA_ARRIVE_AT_ALLEY sDia = " DIA_ARRIVE_AT_ALLEY " BREAK CASE DIA_WATCH_ME_CLIMB_GATE sDia = " DIA_WATCH_ME_CLIMB_GATE " BREAK CASE DIA_BUM_SHOUTS_OUT sDia = " DIA_BUM_SHOUTS_OUT " BREAK CASE DIA_MY_RECTAL_GLAND sDia = " DIA_MY_RECTAL_GLAND " BREAK CASE DIA_LEMAR_TALKS_TO_BUM sDia = " DIA_LEMAR_TALKS_TO_BUM " BREAK CASE DIA_PLAYER_INTERUPTS_LEMAR_BUM sDia = " DIA_PLAYER_INTERUPTS_LEMAR_BUM " BREAK CASE DIA_LAMAR_WAIT_ON_PLAYER sDia = " DIA_LAMAR_WAIT_ON_PLAYER " BREAK CASE DIA_LAMAR_SEES_SALV_CAR sDia = " DIA_LAMAR_SEES_SALV_CAR " BREAK CASE DIA_SALVS_RESPOND_TO_PLAYER_IN_WAY sDia = " DIA_SALVS_RESPOND_TO_PLAYER_IN_WAY " BREAK CASE DIA_LEMAR_TELLS_PLAYER_TO_MOVE_AWAY_FROM_CAR sDia = " DIA_LEMAR_TELLS_PLAYER_TO_MOVE_AWAY_FROM_CAR " BREAK CASE DIA_PLAYER_DAMAGES_DRIVING_OFF_CAR sDia = " DIA_PLAYER_DAMAGES_DRIVING_OFF_CAR " BREAK CASE DIA_LEMAR_AFTER_PLAYER_BLOCKED_CAR sDia = " DIA_LEMAR_AFTER_PLAYER_BLOCKED_CAR " BREAK CASE DIA_CAR_PEDS_CHATTING sDia = " DIA_CAR_PEDS_CHATTING " BREAK CASE DIA_LAMAR_TELLS_PLAYER_TO_HURRY_NEAR_ALLEY_END sDia = " DIA_LAMAR_TELLS_PLAYER_TO_HURRY_NEAR_ALLEY_END " BREAK CASE DIA_WALKING_DOWN_END_OF_ALLEY_CHAT sDia = " DIA_WALKING_DOWN_END_OF_ALLEY_CHAT " BREAK CASE DIA_LAMAR_SAYS_OPEN_GARAGE sDia = " DIA_LAMAR_SAYS_OPEN_GARAGE " BREAK CASE DIA_LAMAR_SAYS_OPEN_NEXT_GARAGE sDia = " DIA_LAMAR_SAYS_OPEN_NEXT_GARAGE " BREAK CASE DIA_LAMAR_SAYS_OPEN_LAST_GARAGE sDia = " DIA_LAMAR_SAYS_OPEN_LAST_GARAGE " BREAK CASE DIA_LAMAR_SAYS_OPEN_GARAGE_AGAIN sDia = " DIA_LAMAR_SAYS_OPEN_GARAGE_AGAIN " BREAK CASE DIA_LAMAR_WAIT_ON_PLAYER_AFTER_BUM sDia = " DIA_LAMAR_WAIT_ON_PLAYER_AFTER_BUM " BREAK CASE DIA_PLAYER_APPROACHES_STOPPED_ELSAL_CAR sDia = " DIA_PLAYER_APPROACHES_STOPPED_ELSAL_CAR " BREAK CASE DIA_FRANKLIN_HIT_BY_CAR sDia = " DIA_FRANKLIN_HIT_BY_CAR " BREAK CASE DIA_LAMAR_IF_CUTSCENE_NOT_LOADED sDia = " DIA_LAMAR_IF_CUTSCENE_NOT_LOADED " BREAK CASE DIA_LAMAR_IMPATIENT_WAITING_AT_END sDia = " DIA_LAMAR_IMPATIENT_WAITING_AT_END " BREAK CASE DIA_LAMAR_SAYS_STOP_MESSING_ABOUT sDia = " DIA_LAMAR_SAYS_STOP_MESSING_ABOUT " BREAK CASE DIA_LAMAR_SAYS_STOP_BLOCKING_GATE_WITH_CAR sDia = " DIA_LAMAR_SAYS_STOP_BLOCKING_GATE_WITH_CAR " BREAK CASE DIA_LAMAR_WALKS_PASS_SALV_CAR sDia = " DIA_LAMAR_WALKS_PASS_SALV_CAR " BREAK CASE DIA_SHOOTOUT_START sDia = " DIA_SHOOTOUT_START " BREAK CASE DIA_LAMAR_REACTS sDia = " DIA_LAMAR_REACTS " BREAK CASE DIA_PLAYER_STAYS_IN_GARAGE sDia = " DIA_PLAYER_STAYS_IN_GARAGE " BREAK CASE DIA_GET_GUN sDia = " DIA_GET_GUN " BREAK CASE DIA_ON_LEFT sDia = " DIA_ON_LEFT " BREAK CASE DIA_TAKE_COVER_BEHIND_BISON sDia = " DIA_TAKE_COVER_BEHIND_BISON " BREAK CASE DIA_LEMAR_SHOT_AT_HIT_GAS sDia = " DIA_LEMAR_SHOT_AT_HIT_GAS " BREAK CASE DIA_LEMAR_SHOT_AT_NO_GAS sDia = " DIA_LEMAR_SHOT_AT_NO_GAS " BREAK CASE DIA_COMBAT_BANTER sDia = " DIA_COMBAT_BANTER " BREAK CASE DIA_GAS_BLOWS_UP sDia = " DIA_GAS_BLOWS_UP " BREAK CASE DIA_KEEP_GOING_PASSED_SKIP sDia = " DIA_KEEP_GOING_PASSED_SKIP " BREAK CASE DIA_SEE_MORE_ELSAL sDia = " DIA_SEE_MORE_ELSAL " BREAK CASE DIA_ON_THE_VERANDA sDia = " DIA_ON_THE_VERANDA " BREAK CASE DIA_UP_ON_BALCONY sDia = " DIA_UP_ON_BALCONY " BREAK CASE DIA_COMING_OUT_DOOR sDia = " DIA_COMING_OUT_DOOR " BREAK CASE DIA_CAR_DRIVING_OFF sDia = " DIA_CAR_DRIVING_OFF " BREAK CASE DIA_FINAL_WAVE sDia = " DIA_FINAL_WAVE " BREAK CASE DIA_SHOOT_GAS sDia = " DIA_SHOOT_GAS " BREAK CASE DIA_LETS_GET_OUT_OF_HERE sDia = " DIA_LETS_GET_OUT_OF_HERE " BREAK CASE DIA_THERES_THE_BIKE sDia = " DIA_THERES_THE_BIKE " BREAK CASE DIA_EXPLODING_CAR_DEATHS sDia = " DIA_EXPLODING_CAR_DEATHS " BREAK CASE DIA_GET_SHOTGUN sDia = " DIA_GET_SHOTGUN " BREAK CASE DIA_COME_BACK sDia = " DIA_COME_BACK " BREAK CASE DIA_GET_THE_BIKE sDia = " DIA_GET_THE_BIKE " BREAK CASE DIA_PLAYER_GETS_BACK_IN_CAR_IN_CHASE sDia = " DIA_PLAYER_GETS_BACK_IN_CAR_IN_CHASE " BREAK CASE DIA_CHASE_BIKE_BANTER sDia = " DIA_CHASE_BIKE_BANTER " BREAK CASE DIA_BIKER_SHOUTS_AT_PLAYER sDia = " DIA_BIKER_SHOUTS_AT_PLAYER " BREAK CASE DIA_PLAYER_LEFT_CAR_IN_CHASE sDia = " DIA_PLAYER_LEFT_CAR_IN_CHASE " BREAK CASE DIA_AFTER_BIKER_DOWN sDia = " DIA_AFTER_BIKER_DOWN " BREAK CASE DIA_BYE sDia = " DIA_BYE " BREAK CASE DIA_GETTING_A_CAR sDia = " DIA_GETTING_A_CAR " BREAK CASE DIA_PLAYER_AT_CARWASH_WITHOUT_BIKE sDia = " DIA_PLAYER_AT_CARWASH_WITHOUT_BIKE " BREAK CASE DIA_PLAYER_AT_CARWASH_WITHOUT_BIKE_FAR sDia = " DIA_PLAYER_AT_CARWASH_WITHOUT_BIKE_FAR " BREAK DEFAULT sDia = " -NOT DEFINED-" BREAK ENDSWITCH SET_TEXT_SCALE(0.35,0.35) IF dia[iDia].bCompleted SET_TEXT_COLOUR(255,0,0,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iDia*0.03),"STRING",sDia) SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(255,0,0,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.4,0.1+(iDia*0.03),"STRING","TRUE") ELSE SET_TEXT_COLOUR(0,0,255,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iDia*0.03),"STRING",sDia) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_SCALE(0.35,0.35) DISPLAY_TEXT_WITH_LITERAL_STRING(0.4,0.1+(iDia*0.03),"STRING","FALSE") ENDIF SET_TEXT_SCALE(0.35,0.35) IF dia[iDia].bStarted SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(255,0,0,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.45,0.1+(iDia*0.03),"STRING","TRUE") ELSE SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_SCALE(0.35,0.35) DISPLAY_TEXT_WITH_LITERAL_STRING(0.45,0.1+(iDia*0.03),"STRING","FALSE") ENDIF SET_TEXT_COLOUR(255,0,0,255) showIntOnScreen(0.5,0.1+(iDia*0.03),dia[iDia].flag,"",0.35) ENDPROC PROC PRINT_INSTRUCTION_DATA(int iData) string sInst enumInstructions thisInst = instr[iData].ins SWITCH thisInst CASE INS_NULL sInst = "DIA_NULL" BREAK DEFAULT sInst = " -NOT DEFINED-" BREAK ENDSWITCH IF instr[iData].bCompleted SET_TEXT_COLOUR(255,0,0,255) SET_TEXT_SCALE(0.35,0.35) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iData*0.03),"STRING",sInst) SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(255,0,0,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.43,0.1+(iData*0.03),"STRING","TRUE") ELSE SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_SCALE(0.35,0.35) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iData*0.03),"STRING",sInst) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_SCALE(0.35,0.35) DISPLAY_TEXT_WITH_LITERAL_STRING(0.43,0.1+(iData*0.03),"STRING","FALSE") ENDIF showIntOnScreen(0.5,0.1+(iData*0.03),instr[iData].flag,"",0.35) showIntOnScreen(0.55,0.1+(iData*0.03),instr[iData].intA,"",0.35) ENDPROC PROC PRINT_ACTION_DATA(int iData,bool shiftUp=FALSE) string sAct enumActions thisAct = actions[iData].action sAct = GET_ACTION_STRING(thisAct) TEXT_LABEL_63 txt txt = "" IF actions[iData].ongoing txt += " TRUE " ELSE txt += " FALSE " ENDIF IF actions[iData].completed txt += " TRUE " ELSE txt += " FALSE " ENDIF txt += actions[iData].flag txt += " " txt += actions[iData].intA float shiftY IF shiftUp shiftY = -0.36 ENDIF IF actions[iData].completed SET_TEXT_COLOUR(255,100,100,255) SET_TEXT_SCALE(0.3,0.3) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iData*0.025)+shiftY,"STRING",sAct) ELIF actions[iData].ongoing SET_TEXT_COLOUR(0,255,0,255) SET_TEXT_SCALE(0.3,0.3) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iData*0.025)+shiftY,"STRING",sAct) ELSE SET_TEXT_COLOUR(100,100,255,255) SET_TEXT_SCALE(0.3,0.3) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iData*0.025)+shiftY,"STRING",sAct) ENDIF SET_TEXT_SCALE(0.3,0.3) SET_TEXT_COLOUR(255,255,255,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.43,0.1+(iData*0.025)+shiftY,"STRING",txt) ENDPROc FUNC STRING GET_ASSET_STRING(int iAss, bool name, bool state) IF name SWITCH int_to_enum(eMissionAssets,iAss) CASE ASSET_MODEL_LAMAR RETURN " ASSET_MODEL_LAMAR " BREAK CASE ASSET_MODEL_SALVAS RETURN " ASSET_MODEL_SALVAS " BREAK CASE ASSET_WEAPONS RETURN " ASSET_WEAPONS " BREAK CASE ASSET_BUM RETURN " ASSET_BUM " BREAK CASE ASSET_MODEL_BIKE RETURN " ASSET_MODEL_BIKE " BREAK CASE ASSET_MISSION_ANIMS RETURN " ASSET_MISSION_ANIMS " BREAK CASE ASSET_BIKE_ARRIVE_ANIMS RETURN " ASSET_BIKE_ARRIVE_ANIMS " BREAK CASE ASSET_TWO_BISONS RETURN " ASSET_TWO_BISONS " BREAK CASE ASSET_FLEE_CAR RETURN " ASSET_FLEE_CAR " BREAK CASE ASSET_REC_DRIVE_AWAY_CAR RETURN " ASSET_REC_DRIVE_AWAY_CAR " BREAK CASE ASSET_REC_FLEE_CAR RETURN " ASSET_REC_FLEE_CAR " BREAK CASE ASSET_WAYPOINT_FROM_DOOR RETURN " ASSET_WAYPOINT_FROM_DOOR " BREAK CASE ASSET_MODEL_GASDUMMY RETURN " ASSET_MODEL_GASDUMMY " BREAK CASE ASSET_WAYPOINT_FROM_BUM RETURN " ASSET_WAYPOINT_FROM_BUM " BREAK CASE ASSET_ANIM_IDLES RETURN " ASSET_ANIM_IDLES " BREAK CASE ASSET_AUDIO_BANKS RETURN " ASSET_AUDIO_BANKS " BREAK CASE ASSET_SIMEON RETURN " ASSET_SIMEON " BREAK CASE ASSET_BULLET_DODGE RETURN " ASSET_BULLET_DODGE " BREAK CASE ASSET_FRONT_GATES RETURN " ASSET_FRONT_GATES " BREAK ENDSWITCH ENDIF IF state SWITCH assets[iAss].loadStage CASE LS_NULL RETURN "LS_NULL" BREAK CASE LS_REQUIRED RETURN "LS_REQUIRED" BREAK CASE LS_REQUESTED RETURN "LS_REQUESTED" BREAK CASE LS_LOADED RETURN "LS_LOADED" BREAK CASE LS_RELEASE RETURN "LS_RELEASE" BREAK ENDSWITCH ENDIF RETURN "VOID" ENDFUNC PROC PRINT_ASSET_DATA(int iAss) SET_TEXT_SCALE(0.3,0.3) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_CENTRE(FALSE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iAss*0.025),"STRING",GET_ASSET_STRING(iAss,true,false)) SET_TEXT_SCALE(0.3,0.3) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_CENTRE(FALSE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.3,0.1+(iAss*0.025),"STRING",GET_ASSET_STRING(iAss,false,true)) ENDPROC #endif proc CHECK_MISSION_SKIP(bool bDoSkip = FALSE, bool bIsReplay = FALSE, bool bIsRepeatPlay=FALSE)//enumMissionStage eSkipPoint=STAGE_SKIP, bool resetEntities=FALSE) #IF IS_DEBUG_BUILD IF LAUNCH_MISSION_STAGE_MENU(SkipMenuStruct,iReturnStage,iReturnStage) //debugMessage(DEBUG_MISSION,"LAUNCH_MISSION_STAGE_MENU() = true") bDoSkip = true missionProgress = INT_TO_ENUM(enumMissionStage,iReturnStage) ELSE If IS_KEYBOARD_KEY_JUST_PRESSED(KEY_P) iReturnStage = enum_to_int(missionProgress) bDoSkip = true iReturnStage-- missionProgress = INT_TO_ENUM(enumMissionStage,iReturnStage) ENDIF If IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J) iReturnStage = enum_to_int(missionProgress) bDoSkip = true iReturnStage++ missionProgress = INT_TO_ENUM(enumMissionStage,iReturnStage) ENDIF ENDIF #ENDIF If bDoSkip = true //cprintln(DEBUG_TREVOR3,"A") DELETE_EVERYTHING(CLEANUP_SKIP) SET_WEATHER_TYPE_NOW_PERSIST("EXTRASUNNY") SWITCH missionProgress /* case STAGE_STARTUP if IS_PLAYER_PLAYING(PLAYER_ID()) SET_ENTITY_COORDS(PLAYER_PED_ID(),<< -62.2685, -1109.9596, 25.4296 >>) SET_ENTITY_HEADING(PLAYER_PED_ID(),234) ENDIF FORCE_ASSET_STAGE(ASSETS_STAGE_STARTUP) BREAK*/ CASE STAGE_MEET_lamar //CLEAR_AREA(<< -60.8903, -1111.1042, 25.4353 >>,5.0,TRUE) CLEAR_AREA(<< -36.7690, -1097.2094, 25.6430 >>,100.0,true) SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-43.781937,-1098.931885,25.859827>>-<<9.750000,6.750000,2.562500>>,<<-43.781937,-1098.931885,25.859827>>+<<9.750000,6.750000,2.562500>>,FALSE) FORCE_ASSET_STAGE(ASSETS_STAGE_STARTUP) REQUEST_CUTSCENE("Armenian_2_int") WHILE NOT HAS_CUTSCENE_LOADED() safewait(57) ENDWHILE set_gate(gate_instantShutLocked) if IS_PLAYER_PLAYING(PLAYER_ID()) SET_ENTITY_COORDS(PLAYER_PED_ID(),<<-32.5669, -1094.2974, 25.4223>>) SET_ENTITY_HEADING(PLAYER_PED_ID(),141) ENDIF //the mission is being replayed or relaunched IF IS_REPEAT_PLAY_ACTIVE() REQUEST_MODEL(BALLER) REQUEST_MODEL(SCHWARZER) REQUEST_MODEL(BULLET) REQUEST_MODEL(Prop_Employee_Month_02) WHILE NOT HAS_MODEL_LOADED(BALLER) OR NOT HAS_MODEL_LOADED(SCHWARZER) OR NOT HAS_MODEL_LOADED(BULLET) safewait(65) ENDWHILE CLEAR_AREA_OF_VEHICLES(<< -11.3885, -1080.6869, 25.6721 >>,8) parkedCar[0] = CREATE_VEHICLE(BALLER,<< -7.6801, -1082.4365, 25.6721 >>, 159.3786) SET_VEHICLE_COLOURS(parkedCar[0],3,1) parkedCar[1] = CREATE_VEHICLE(SCHWARZER,<< -11.3885, -1080.6869, 25.6721 >>, 160.6359) SET_VEHICLE_COLOURS(parkedCar[1],37,37) parkedCar[2] = CREATE_VEHICLE(BULLET,<< -17.3168, -1079.2955, 25.6721 >>, 204.3207) SET_VEHICLE_COLOURS(parkedCar[2],52,10) CLEAR_AREA_OF_VEHICLES(<<-41.4259, -1099.6481, 26.0534>>,4) CLEAR_AREA_OF_VEHICLES(<<-46.2594, -1097.8386, 26.3444>>,4) parkedCar[3] = CREATE_VEHICLE(BALLER,<<-41.4259, -1099.6481, 26.0534>>, 132.3786) SET_VEHICLE_DOORS_LOCKED(parkedCar[3], VEHICLELOCK_CANNOT_ENTER) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(parkedCar[3], FALSE) SET_VEHICLE_COLOURS(parkedCar[3],25,16) parkedCar[4] = CREATE_VEHICLE(SCHWARZER,<<-46.2594, -1097.8386, 26.3444>>, 113.3786) SET_VEHICLE_DOORS_LOCKED(parkedCar[4], VEHICLELOCK_CANNOT_ENTER) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(parkedCar[4], FALSE) SET_VEHICLE_COLOURS(parkedCar[4],32,17) SET_MODEL_AS_NO_LONGER_NEEDED(BALLER) SET_MODEL_AS_NO_LONGER_NEEDED(SCHWARZER) SET_MODEL_AS_NO_LONGER_NEEDED(BULLET) ENDIF IF bIsRepeatPlay OR bIsReplay cprintln(debug_trevor3,"Try swap poster") oPropEmployeeOld = GET_CLOSEST_OBJECT_OF_TYPE(<<-29.13,-1102.377,27.26>>,0.5,Prop_Employee_Month_01) IF DOES_ENTITY_EXIST(oPropEmployeeOld) SET_ENTITY_VISIBLE(oPropEmployeeOld,false) oPropEmployeeNew = CREATE_OBJECT_NO_OFFSET(prop_employee_month_02,GET_ENTITY_COORDS(oPropEmployeeOld)) SET_ENTITY_ROTATION(oPropEmployeeNew,<<0,0,-20>>) SET_MODEL_AS_NO_LONGER_NEEDED(Prop_Employee_Month_02) ENDIF ENDIF BREAK case STAGE_DRIVE_TO_ALLEYWAY ///blah /// IF HAS_MODEL_LOADED(prop_employee_month_02) /// IF bIsReplay START_REPLAY_SETUP(<<-27.8988, -1083.5280, 25.5772>>,284) ENDIF SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-43.781937,-1098.931885,25.859827>>-<<9.750000,6.750000,2.562500>>,<<-43.781937,-1098.931885,25.859827>>+<<9.750000,6.750000,2.562500>>,FALSE) FORCE_ASSET_STAGE(ASSETS_STAGE_DRIVE_TO_ALLEY) CLEAR_AREA_OF_PEDS(<< -11.3885, -1080.6869, 25.6721 >>,100.0) add_event(events_spawn_alleyway,STAGE_CHASE_AFTER_BIKE) REQUEST_MODEL(BALLER) REQUEST_MODEL(SCHWARZER) REQUEST_MODEL(BULLET) REQUEST_MODEL(Prop_Employee_Month_02) WHILE NOT HAS_MODEL_LOADED(BALLER) OR NOT HAS_MODEL_LOADED(SCHWARZER) OR NOT HAS_MODEL_LOADED(BULLET) OR NOT HAS_MODEL_LOADED(Prop_Employee_Month_02) safewait(65) ENDWHILE // b* 2367024, added new param to not allow planes as replay vehicles CREATE_VEHICLE_FOR_REPLAY(vehicle[VEH_PLAYER].id, << -23.2436, -1083.2417, 25.5872 >>, 250.0066,FALSE,FALSE,FALSE,FALSE,FALSE, DEFAULT, DEFAULT, DEFAULT, FALSE) //WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[VEH_PLAYER].id, CHAR_FRANKLIN, << -23.2436, -1083.2417, 25.5872 >>, 250.0066) IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) SET_ENTITY_HEALTH(vehicle[VEH_PLAYER].id,1600) IF GET_VEHICLE_MODEL_NUMBER_OF_SEATS(GET_ENTITY_MODEL(vehicle[VEH_PLAYER].id)) > 1 WHILE NOT CREATE_NPC_PED_INSIDE_VEHICLE(ped[PED_BUDDY].id,CHAR_LAMAR,vehicle[VEH_PLAYER].id,VS_FRONT_RIGHT) safewait(5) ENDWHILE SET_PED_INTO_VEHICLE(player_ped_id(),vehicle[VEH_PLAYER].id) ELSE WHILE NOT CREATE_NPC_PED_ON_FOOT(ped[PED_BUDDY].id,CHAR_LAMAR,<<-27.3368, -1084.9879, 25.5727>>, 275.7097) safewait(6) ENDWHILE ENDIF ELSE WHILE NOT CREATE_NPC_PED_ON_FOOT(ped[PED_BUDDY].id,CHAR_LAMAR,<<-27.3368, -1084.9879, 25.5727>>, 275.7097) safewait(6) ENDWHILE IF NOT bIsReplay SET_ENTITY_COORDS(player_ped_id(),<<-27.8988, -1083.5280, 25.5772>>) SET_ENTITY_HEADING(player_ped_id(),284) ENDIF ENDIF //if IS_PLAYER_PLAYING(PLAYER_ID()) // CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID()) // SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehicle[VEH_PLAYER].id) //ENDIF SET_LEMAR_DEFAULTS(true) set_gate(gate_instantShutLocked) IF bIsReplay END_REPLAY_SETUP() ENDIF vehicle_index aVeh CLEAR_AREA_OF_VEHICLES(<< -11.3885, -1080.6869, 25.6721 >>,8) aVeh = CREATE_VEHICLE(BALLER,<< -7.6801, -1082.4365, 25.6721 >>, 159.3786) SET_VEHICLE_COLOURS(aVeh,3,1) SET_VEHICLE_AS_NO_LONGER_NEEDED(aVeh) aVeh = CREATE_VEHICLE(SCHWARZER,<< -11.3885, -1080.6869, 25.6721 >>, 160.6359) SET_VEHICLE_COLOURS(aVeh,37,37) SET_VEHICLE_AS_NO_LONGER_NEEDED(aVeh) aVeh = CREATE_VEHICLE(BULLET,<< -17.3168, -1079.2955, 25.6721 >>, 204.3207) SET_VEHICLE_COLOURS(aVeh,52,10) SET_VEHICLE_AS_NO_LONGER_NEEDED(aVeh) CLEAR_AREA_OF_VEHICLES(<<-41.4259, -1099.6481, 26.0534>>,4) CLEAR_AREA_OF_VEHICLES(<<-46.2594, -1097.8386, 26.3444>>,4) aVeh = CREATE_VEHICLE(BALLER,<<-41.4259, -1099.6481, 26.0534>>, 132.3786) SET_VEHICLE_DOORS_LOCKED(aVeh, VEHICLELOCK_CANNOT_ENTER) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(aVeh, FALSE) SET_VEHICLE_COLOURS(aVeh,25,16) SET_VEHICLE_AS_NO_LONGER_NEEDED(aVeh) aVeh = CREATE_VEHICLE(SCHWARZER,<<-46.2594, -1097.8386, 26.3444>>, 113.3786) SET_VEHICLE_DOORS_LOCKED(aVeh, VEHICLELOCK_CANNOT_ENTER) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(aVeh, FALSE) SET_VEHICLE_COLOURS(aVeh,32,17) SET_VEHICLE_AS_NO_LONGER_NEEDED(aVeh) SET_MODEL_AS_NO_LONGER_NEEDED(BALLER) SET_MODEL_AS_NO_LONGER_NEEDED(SCHWARZER) SET_MODEL_AS_NO_LONGER_NEEDED(BULLET) IF bIsRepeatPlay OR bIsReplay oPropEmployeeOld = GET_CLOSEST_OBJECT_OF_TYPE(<<-29.13,-1102.377,27.26>>,0.5,Prop_Employee_Month_01) IF DOES_ENTITY_EXIST(oPropEmployeeOld) SET_ENTITY_VISIBLE(oPropEmployeeOld,false) oPropEmployeeNew = CREATE_OBJECT_NO_OFFSET(prop_employee_month_02,GET_ENTITY_COORDS(oPropEmployeeOld)) SET_ENTITY_ROTATION(oPropEmployeeNew,<<0,0,-20>>) SET_MODEL_AS_NO_LONGER_NEEDED(Prop_Employee_Month_02) ENDIF ENDIF BREAK CASE STAGE_ADVANCE_DOWN_ALLEYWAY IF bIsReplay START_REPLAY_SETUP(<<-1133.8412, -1578.5286, 3.4006>>,198) ELSE SET_ENTITY_COORDS(PLAYER_PED_ID(),<<-1133.8412, -1578.5286, 3.4006>>) SET_ENTITY_HEADING(PLAYER_PED_ID(),198) LOAD_SCENE(<< -1133.0406, -1574.6030, 3.3957 >>) wait(10) ENDIF add_event(events_spawn_alleyway,STAGE_CHASE_AFTER_BIKE) //WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[VEH_PLAYER].id, CHAR_FRANKLIN, << -1133.4789, -1574.0167, 3.3788 >>, 134.0009) // WAIT(0) //ENDWHILE clear_Area(<< -1133.0406, -1574.6030, 3.3957 >>,120,true) FORCE_ASSET_STAGE(ASSETS_STAGE_LOAD_ALLEY) SPECIAL_SETUP_FOR_PLAYER_VEHICLE_AT_END_OF_ALLEY() SET_ENTITY_HEALTH(vehicle[VEH_PLAYER].id,1600) IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) REQUEST_VEHICLE_ASSET(GET_ENTITY_MODEL(vehicle[VEH_PLAYER].id)) WHILE NOT HAS_VEHICLE_ASSET_LOADED(GET_ENTITY_MODEL(vehicle[VEH_PLAYER].id)) WAIT(0) ENDWHILE ENDIF IF IS_REPLAY_CHECKPOINT_VEHICLE_AVAILABLE() IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) //cprintln(debug_trevor3,"Replay vehicle exists") SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehicle[VEH_PLAYER].id,vs_driver) SET_VEHICLE_ENGINE_ON(vehicle[VEH_PLAYER].id,TRUE,TRUE) // initPed(PED_BUDDY,model_lamar,<< -1138.0582, -1573.4115, 3.2598 >>, 192.0564,vehicle[VEH_PLAYER].id,VS_FRONT_RIGHT ) while not CREATE_NPC_PED_INSIDE_VEHICLE(ped[PED_BUDDY].id,CHAR_LAMAR,vehicle[VEH_PLAYER].id,VS_FRONT_RIGHT) safewait(7) endwhile ENDIF ELSE WHILE NOT CREATE_NPC_PED_ON_FOOT(ped[PED_BUDDY].id,CHAR_LAMAR,<<-1136.0333, -1579.8708, 3.3956>>,187) safewait(8) ENDWHILE ENDIF SET_LEMAR_DEFAULTS(true) CANCEL_BUDDY_PERMANENT_HEAD_TRACK(ped[ped_buddy].id) set_gate(gate_instantShutLocked) WHILE gateState != gate_pending controlFrontGate() safewait(9) ENDWHILE IF bIsReplay END_REPLAY_SETUP() ENDIF BREAK CASE STAGE_BEAT_UP_DRUNK add_event(events_spawn_alleyway,STAGE_CHASE_AFTER_BIKE) SPECIAL_SETUP_FOR_PLAYER_VEHICLE_AT_END_OF_ALLEY() // WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[VEH_PLAYER].id, CHAR_FRANKLIN, << -1134.0919, -1572.1919, 3.3169 >>,123) // WAIT(0) // ENDWHILE SET_ENTITY_HEALTH(vehicle[VEH_PLAYER].id,1600) if IS_PLAYER_PLAYING(PLAYER_ID()) SET_ENTITY_COORDS(PLAYER_PED_ID(),<< -1125.6288, -1593.4801, 3.3550 >>) SET_ENTITY_HEADING(PLAYER_PED_ID(),189) clear_Area(<< -1125.6288, -1593.4801, 3.3550 >>,120,true) // LOAD_SCENE(<< -1125.6288, -1593.4801, 3.3550 >>) wait(1) ENDIF FORCE_ASSET_STAGE(ASSETS_STAGE_DRUNK_RUNS_OUT) while not CREATE_NPC_PED_ON_FOOT(ped[PED_BUDDY].id,CHAR_LAMAR,<< -1129.5408, -1590.5742, 3.3645 >>,201) safewait(7) endwhile SET_LEMAR_DEFAULTS(true) if not DOES_BLIP_EXIST(ped[PED_BUDDY].blip) ped[PED_BUDDY].blip = CREATE_BLIP_FOR_PED(ped[PED_BUDDY].id) ENDIF set_gate(gate_instantShutLocked) checkConditions(COND_START_ALLEY_STAGE,COND_END_ALLEY_STAGE) SET_CONDITION_STATE(COND_DIA_BUM_SHOUTS_PLAYED,TRUE) SET_CONDITION_STATE(COND_lemar_climbed_gate,TRUE) FORCE_ACTION_STATE(0,action_LEMAR_APPROACHES_GATE,TRUE) FORCE_ACTION_STATE(1,ACTION_BUM_STAGGERS_FROM_GARAGE,FALSE,TRUE) FORCE_ACTION_STATE(6,ACTION_WAIT_FOR_PLAYER_TO_CLIMB_GATE,TRUE) FORCE_ACTION_STATE(10,ACTION_UPDATE_LAMAR_PROGRESS,FALSE,TRUE) SET_ACTION_FLAG(10,ACTION_UPDATE_LAMAR_PROGRESS,1) FORCE_DIALOGUE_STATE(0,DIA_ARRIVE_AT_ALLEY,TRUE) FORCE_DIALOGUE_STATE(1,DIA_WATCH_ME_CLIMB_GATE,TRUE) FORCE_DIALOGUE_STATE(2,DIA_BUM_SHOUTS_OUT,TRUE) SET_CONDITION_STATE(COND_DIA_BUM_SHOUTS_PLAYED,TRUE) CANCEL_BUDDY_PERMANENT_HEAD_TRACK(ped[ped_buddy].id) BREAK CASE STAGE_VEHICLE_DRIVE_OFF add_event(events_spawn_alleyway,STAGE_CHASE_AFTER_BIKE) FORCE_ASSET_STAGE(ASSETS_STAGE_CAR_DRIVES_OFF) SPECIAL_SETUP_FOR_PLAYER_VEHICLE_AT_END_OF_ALLEY() //WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[VEH_PLAYER].id, CHAR_FRANKLIN, << -1134.0919, -1572.1919, 3.3169 >>,123) //WAIT(0) //ENDWHILE SET_ENTITY_HEALTH(vehicle[VEH_PLAYER].id,1600) if IS_PLAYER_PLAYING(PLAYER_ID()) SET_ENTITY_COORDS(PLAYER_PED_ID(),<< -1115.0737, -1604.6517, 3.4684 >>) SET_ENTITY_HEADING(PLAYER_PED_ID(),208) clear_Area(<< -1115.0737, -1604.6517, 3.4684 >>,120,true) LOAD_SCENE(<< -1115.0737, -1604.6517, 3.4684 >>) wait(10) ENDIF while not CREATE_NPC_PED_ON_FOOT(ped[PED_BUDDY].id,CHAR_LAMAR,<< -1109.8315, -1610.5250, 3.5653 >>,215) safewait(7) endwhile SET_LEMAR_DEFAULTS(true) seq() TASK_FOLLOW_WAYPOINT_RECORDING(null,"arm2") endseq(ped[ped_buddy].id) if not DOES_BLIP_EXIST(ped[PED_BUDDY].blip) ped[PED_BUDDY].blip = CREATE_BLIP_FOR_PED(ped[PED_BUDDY].id) ENDIF set_gate(gate_instantShutLocked) checkConditions(COND_START_ALLEY_STAGE,COND_END_ALLEY_STAGE) SET_CONDITION_STATE(COND_DIA_BUM_SHOUTS_PLAYED,TRUE) SET_CONDITION_STATE(COND_BUM_RETURNED_TO_GARAGE_FROM_ANIM,TRUE) FORCE_ACTION_STATE(0,action_LEMAR_APPROACHES_GATE) FORCE_ACTION_STATE(1,ACTION_BUM_STAGGERS_FROM_GARAGE) FORCE_ACTION_STATE(2,ACTION_LEMAR_WALKS_TOWARDS_BUM) FORCE_ACTION_STATE(3,ACTION_LEMAR_INTERRACTS_WITH_BUM) FORCE_ACTION_STATE(4,ACTION_LEMAR_IGNORES_BUM_IF_HIT) FORCE_ACTION_STATE(6,ACTION_WAIT_FOR_PLAYER_TO_CLIMB_GATE) FORCE_ACTION_STATE(24,ACTION_MUSIC_AT_BUM) FORCE_DIALOGUE_STATE(0,DIA_ARRIVE_AT_ALLEY) FORCE_DIALOGUE_STATE(1,DIA_WATCH_ME_CLIMB_GATE) FORCE_DIALOGUE_STATE(2,DIA_BUM_SHOUTS_OUT) FORCE_DIALOGUE_STATE(3,DIA_MY_RECTAL_GLAND) FORCE_DIALOGUE_STATE(4,DIA_LEMAR_TALKS_TO_BUM) FORCE_DIALOGUE_STATE(5,DIA_PLAYER_INTERUPTS_LEMAR_BUM) FORCE_DIALOGUE_STATE(6,DIA_LAMAR_WAIT_ON_PLAYER) FORCE_ACTION_STATE(10,ACTION_UPDATE_LAMAR_PROGRESS,FALSE,TRUE) SET_ACTION_FLAG(10,ACTION_UPDATE_LAMAR_PROGRESS,4) lamarProgress = Lprogress_Advancing_after_bum playMusic("ARM2_DRIVE_RESTART",FALSE,"ARM2_FIGHT_START") CANCEL_BUDDY_PERMANENT_HEAD_TRACK(ped[ped_buddy].id) BREAK CASE STAGE_OPEN_GARAGES // ADD_DOOR_TO_SYSTEM(iGarHash,PROP_GAR_DOOR_03,<<-1074.65,-1676.13,4.66>>,FALSE) add_event(events_spawn_alleyway,STAGE_CHASE_AFTER_BIKE) FORCE_ASSET_STAGE(ASSETS_STAGE_OPEN_GARAGES) SPECIAL_SETUP_FOR_PLAYER_VEHICLE_AT_END_OF_ALLEY() //WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[VEH_PLAYER].id, CHAR_FRANKLIN, << -1134.0919, -1572.1919, 3.3169 >>,123) // WAIT(0) //ENDWHILE SET_ENTITY_HEALTH(vehicle[VEH_PLAYER].id,1600) if IS_PLAYER_PLAYING(PLAYER_ID()) SET_ENTITY_COORDS(PLAYER_PED_ID(),<< -1078.0042, -1661.6893, 3.3987 >>) SET_ENTITY_HEADING(PLAYER_PED_ID(),204.7912) clear_Area(<< -1077.4958, -1679.3835, 3.5754 >>,120,true) LOAD_SCENE(<< -1078.0042, -1661.6893, 3.3987 >>) wait(1) ENDIF while not CREATE_NPC_PED_ON_FOOT(ped[PED_BUDDY].id,CHAR_LAMAR,<< -1074.5681, -1666.2999, 3.4449 >>, 218.3193) safewait(7) endwhile SET_LEMAR_DEFAULTS(true) if not DOES_BLIP_EXIST(ped[PED_BUDDY].blip) ped[PED_BUDDY].blip = CREATE_BLIP_FOR_PED(ped[PED_BUDDY].id) ENDIF set_gate(gate_instantShutLocked) checkConditions(COND_START_ALLEY_STAGE,COND_END_ALLEY_STAGE) SET_CONDITION_STATE(COND_DIA_BUM_SHOUTS_PLAYED,TRUE) SET_CONDITION_STATE(COND_BUM_RETURNED_TO_GARAGE_FROM_ANIM,TRUE) FORCE_ACTION_STATE(0,action_LEMAR_APPROACHES_GATE) FORCE_ACTION_STATE(1,ACTION_BUM_STAGGERS_FROM_GARAGE) FORCE_ACTION_STATE(2,ACTION_LEMAR_WALKS_TOWARDS_BUM) FORCE_ACTION_STATE(3,ACTION_LEMAR_INTERRACTS_WITH_BUM) FORCE_ACTION_STATE(4,ACTION_LEMAR_IGNORES_BUM_IF_HIT) FORCE_ACTION_STATE(6,ACTION_WAIT_FOR_PLAYER_TO_CLIMB_GATE) FORCE_ACTION_STATE(7,ACTION_VEHICLE_DRIVES_OFF) FORCE_ACTION_STATE(9,ACTION_LEMAR_LOOKS_AT_PASSING_CAR) FORCE_ACTION_STATE(10,ACTION_DRUNK_GETS_UP_AFTER_LEMAR_INTERACTION) FORCE_ACTION_STATE(11,ACTION_VEHICLE_BLOCKED_BY_PLAYER) FORCE_ACTION_STATE(12,ACTION_VEHICLE_CONTINUES_DRIVING) FORCE_ACTION_STATE(13,ACTION_LEMAR_REACTS_TO_PLAYER_BLOCKING_ELSAL) //FORCE_ACTION_STATE(14,ACTION_LEMAR_WAITS_FOR_PLAYER) FORCE_ACTION_STATE(15,ACTION_LEMAR_RESUMES_WALK_DOWN_ALLEY) FORCE_ACTION_STATE(18,ACTION_LEMAR_WAITS_FOR_PLAYER) FORCE_ACTION_STATE(19,ACTION_LEMAR_RESUMES_WALK_DOWN_ALLEY) FORCE_DIALOGUE_STATE(0,DIA_ARRIVE_AT_ALLEY) FORCE_DIALOGUE_STATE(1,DIA_WATCH_ME_CLIMB_GATE) FORCE_DIALOGUE_STATE(2,DIA_BUM_SHOUTS_OUT) FORCE_DIALOGUE_STATE(3,DIA_MY_RECTAL_GLAND) FORCE_DIALOGUE_STATE(4,DIA_LEMAR_TALKS_TO_BUM) FORCE_DIALOGUE_STATE(5,DIA_PLAYER_INTERUPTS_LEMAR_BUM) FORCE_DIALOGUE_STATE(6,DIA_LAMAR_WAIT_ON_PLAYER) FORCE_DIALOGUE_STATE(7,DIA_LAMAR_SEES_SALV_CAR) FORCE_DIALOGUE_STATE(8,DIA_SALVS_RESPOND_TO_PLAYER_IN_WAY) FORCE_DIALOGUE_STATE(9,DIA_LEMAR_TELLS_PLAYER_TO_MOVE_AWAY_FROM_CAR) FORCE_DIALOGUE_STATE(10,DIA_LEMAR_AFTER_PLAYER_BLOCKED_CAR) FORCE_DIALOGUE_STATE(11,DIA_LAMAR_TELLS_PLAYER_TO_HURRY_NEAR_ALLEY_END) FORCE_DIALOGUE_STATE(12,DIA_WALKING_DOWN_END_OF_ALLEY_CHAT) FORCE_DIALOGUE_STATE(16,DIA_LAMAR_WAIT_ON_PLAYER_AFTER_BUM) FORCE_ACTION_STATE(24,ACTION_MUSIC_AT_BUM) FORCE_ACTION_STATE(10,ACTION_UPDATE_LAMAR_PROGRESS,FALSE,TRUE) SET_ACTION_FLAG(10,ACTION_UPDATE_LAMAR_PROGRESS,6) lamarProgress = Lprogress_Advancing_after_car playMusic("ARM2_GARAGES_RESTART",FALSE,"ARM2_FIGHT_START") CANCEL_BUDDY_PERMANENT_HEAD_TRACK(ped[ped_buddy].id) BREAK CASE STAGE_DRUG_GARAGE IF bIsReplay START_REPLAY_SETUP(<< -1072.4558, -1675.5233, 3.4485 >>,113) ELSE if IS_PLAYER_PLAYING(PLAYER_ID()) SET_ENTITY_COORDS(PLAYER_PED_ID(),<< -1072.4558, -1675.5233, 3.4485 >>) SET_ENTITY_HEADING(PLAYER_PED_ID(),113) LOAD_SCENE(<< -1072.4558, -1675.5233, 3.4485 >>) wait(10) ENDIF ENDIF clear_Area(<< -1077.4958, -1679.3835, 3.5754 >>,120,true) // ADD_DOOR_TO_SYSTEM(iGarHash,PROP_GAR_DOOR_03,<<-1074.65,-1676.13,4.66>>,FALSE) add_event(events_spawn_alleyway,STAGE_CHASE_AFTER_BIKE) SPECIAL_SETUP_FOR_PLAYER_VEHICLE_AT_END_OF_ALLEY() //WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[VEH_PLAYER].id, CHAR_FRANKLIN, << -1134.0919, -1572.1919, 3.3169 >>,123) //WAIT(0) //ENDWHILE SET_ENTITY_HEALTH(vehicle[VEH_PLAYER].id,1600) FORCE_ASSET_STAGE(ASSETS_STAGE_OPEN_GARAGES) //nextCutscene = "Arm_2_mcs_4" //REQUEST_CUTSCENE(nextCutscene) while not CREATE_NPC_PED_ON_FOOT(ped[PED_BUDDY].id,CHAR_LAMAR,<< -1074.4803, -1673.2312, 3.4137 >>,130) safewait(7) endwhile SET_LEMAR_DEFAULTS(true) if not DOES_BLIP_EXIST(ped[PED_BUDDY].blip) ped[PED_BUDDY].blip = CREATE_BLIP_FOR_PED(ped[PED_BUDDY].id) ENDIF set_gate(gate_instantShutLocked) playMusic("ARM2_DOOR_RESTART",FALSE,"ARM2_FIGHT_START") CANCEL_BUDDY_PERMANENT_HEAD_TRACK(ped[ped_buddy].id) IF bIsReplay END_REPLAY_SETUP() ENDIF BREAK CASE STAGE_START_SHOOTOUT IF bIsReplay START_REPLAY_SETUP(<< -1077.8508, -1678.8998, 3.5754 >>,346) ELSE SET_ENTITY_COORDS(PLAYER_PED_ID(),<< -1077.8508, -1678.8998, 3.5754 >>) SET_ENTITY_HEADING(PLAYER_PED_ID(),346.6853) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) LOAD_SCENE(<< -1077.4958, -1679.3835, 3.5754 >>) wait(10) ENDIF CLEAR_AREA_OF_PEDS(<< -1077.8508, -1678.8998, 3.5754 >>,100.0) SET_CREATE_RANDOM_COPS(FALSE) ////cprintln(debug_Trevor3,"Skip to shootout") instant_add_or_reset_event(events_spawn_alleyway,STAGE_CHASE_AFTER_BIKE) SPECIAL_SETUP_FOR_PLAYER_VEHICLE_AT_END_OF_ALLEY() //WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[VEH_PLAYER].id, CHAR_FRANKLIN, << -1134.0919, -1572.1919, 3.3169 >>,123) //WAIT(0) //ENDWHILE IF NOT g_bGunPickedUp pickup_gar1 = CREATE_PICKUP_ROTATE(PICKUP_WEAPON_PISTOL,<<-1075.7982, -1675.7168, 3.5903>>,<<-90,0,-15>>,0,145)//,PlacementFlags,145) IF NOT HAS_PED_GOT_LOADED_FIREARM(player_ped_id()) //only blip if player hs no weapon? pickup_gar1_blip = CREATE_BLIP_FOR_PICKUP(pickup_gar1) ENDIF ENDIF SET_ENTITY_HEALTH(vehicle[VEH_PLAYER].id,1600) if IS_PLAYER_PLAYING(PLAYER_ID()) IF g_bGunPickedUp int ammoToGive if HAS_PED_GOT_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_PISTOL) ammoToGive = 75 - GET_AMMO_IN_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_PISTOL) ELSE ammoToGive = 75 ENDIF if ammoToGive > 0 GIVE_WEAPON_TO_PED(PLAYER_PED_ID(),WEAPONTYPE_PISTOL,ammoToGive,true) ENDIF SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_PISTOL,true) ENDIF clear_Area(<< -1077.4958, -1679.3835, 3.5754 >>,120,true) ENDIF FORCE_ASSET_STAGE(ASSETS_STAGE_SHOOTOUT) // ADD_DOOR_TO_SYSTEM(iGarHash,PROP_GAR_DOOR_03,<<-1074.65,-1676.13,4.66>>,FALSE) WHILE NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iGarHash) CONTROL_EVENTS(events_spawn_alleyway) safewait(10) ENDWHILE action(8,ACTION_FORCE_GARAGE) while not is_Action_complete(8,ACTION_FORCE_GARAGE) action(8,ACTION_FORCE_GARAGE) safewait(11) endwhile // create dead elsalvs IF NOT IS_PED_INJURED(player_ped_id()) SET_PED_USING_ACTION_MODE(player_ped_id(),TRUE) ENDIf REQUEST_ANIM_DICT("DEAD") WHILE NOT HAS_ANIM_DICT_LOADED("DEAD") SAFEWAIT(17) ENDWHILE dead_ped1 = CREATE_PED(PEDTYPE_MISSION,model_salvas,<<-1070.1689, -1672.8701, 3.4807>>,121) DISABLE_PED_PAIN_AUDIO(dead_ped1,true) SET_PED_DEFAULT_COMPONENT_VARIATION(dead_ped1) TASK_PLAY_ANIM(dead_ped1,"dead", "dead_a",INSTANT_BLEND_IN,INSTANT_BLEND_OUT,-1,AF_LOOPING) FORCE_PED_AI_AND_ANIMATION_UPDATE(dead_ped1,TRUE) SAFEWAIT(12) IF NOT IS_PED_DEAD_OR_DYING(dead_ped1) SET_ENTITY_HEALTH(dead_ped1,0) ENDIF REMOVE_ANIM_DICT("DEAD") // SET_PED_AS_NO_LONGER_NEEDED(dead_ped1) //initPed(PED_BUDDY,model_lamar, <<-1077.8018, -1677.2123, 3.5754>>,312.6190) WHILE NOT CREATE_NPC_PED_ON_FOOT(ped[PED_BUDDY].id,CHAR_LAMAR,<<-1077.8018, -1677.2123, 3.5754>>,312.6190) safewait(13) ENDWHILE SET_LEMAR_DEFAULTS(true) FORCE_PED_MOTION_STATE(ped[PED_BUDDY].id,MS_ON_FOOT_RUN,FALSE,FAUS_DEFAULT) FORCE_PED_AI_AND_ANIMATION_UPDATE(ped[PED_BUDDY].id) GIVE_WEAPON_TO_PED(ped[PED_BUDDY].id,WEAPONTYPE_MICROSMG ,2000,true) if not DOES_BLIP_EXIST(ped[PED_BUDDY].blip) ped[PED_BUDDY].blip = CREATE_BLIP_FOR_PED(ped[PED_BUDDY].id) ENDIF FORCE_ACTION_STATE(31,ACTION_MUSIC_SHOOTOUT) IF g_bGunPickedUp FORCE_INSTRUCTION_STATE(2,INS_WEAPON_HELP) ENDIF playMusic("ARM2_FIGHT_RESTART",FALSE,"ARM2_CAR") // PREPARE_MUSIC_EVENT("ARM2_CAR") IF bIsReplay END_REPLAY_SETUP() ENDIF BREAK CASE STAGE_COVER_BY_SKIP SET_CREATE_RANDOM_COPS(FALSE) add_event(events_spawn_alleyway,STAGE_CHASE_AFTER_BIKE) SPECIAL_SETUP_FOR_PLAYER_VEHICLE_AT_END_OF_ALLEY() // WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[VEH_PLAYER].id, CHAR_FRANKLIN, << -1134.0919, -1572.1919, 3.3169 >>,123) //WAIT(0) //ENDWHI/LE SET_ENTITY_HEALTH(vehicle[VEH_PLAYER].id,1600) if IS_PLAYER_PLAYING(PLAYER_ID()) SET_ENTITY_COORDS(PLAYER_PED_ID(),<< -1085.5415, -1647.4877, 3.3985 >>) SET_ENTITY_HEADING(PLAYER_PED_ID(),51.1491) clear_Area(<< -1077.4958, -1679.3835, 3.5754 >>,120,true) LOAD_SCENE(<< -1089.8136, -1649.0557, 3.3986 >>) wait(10) //SET_PED_DUCKING(PLAYER_PED_ID(),true) IF NOT bIsReplay if not HAS_PED_GOT_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_PISTOL) GIVE_WEAPON_TO_PED(PLAYER_PED_ID(),WEAPONTYPE_PISTOL,200) ENDIF if not HAS_PED_GOT_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_PUMPSHOTGUN) GIVE_WEAPON_TO_PED(PLAYER_PED_ID(),WEAPONTYPE_PUMPSHOTGUN,200) ENDIF ENDIF ENDIF FORCE_ASSET_STAGE(ASSETS_STAGE_SHOOTOUT) if IS_PLAYER_PLAYING(PLAYER_ID()) SET_WANTED_LEVEL_MULTIPLIER(0.0) SET_MAX_WANTED_LEVEL(0) SET_PLAYER_WANTED_LEVEL(PLAYER_ID(),0) ENDIF // create_shootout_ped(ELSAL_DUSTA,<< -1091.4205, -1639.2395, 3.3986 >>,210) // create_shootout_ped(ELSAL_DUSTB,<< -1094.4943, -1642.6161, 3.3986 >>,209) // SET_ENTITY_HEALTH(ped[ELSAL_DUSTA].id,0) // SET_ENTITY_HEALTH(ped[ELSAL_DUSTB].id,0) while not CREATE_NPC_PED_ON_FOOT(ped[PED_BUDDY].id,CHAR_LAMAR,<< -1086.4666, -1649.2032, 3.3985 >>, 51.1439) safewait(7) endwhile SET_LEMAR_DEFAULTS(true) IF NOT IS_PED_INJURED(player_ped_id()) SET_PED_USING_ACTION_MODE(player_ped_id(),TRUE) ENDIf GIVE_WEAPON_TO_PED(ped[PED_BUDDY].id,WEAPONTYPE_MICROSMG ,2000,true) SET_PED_DUCKING(ped[PED_BUDDY].id,true) //iFlag=97 if DOES_BLIP_EXIST(mission_blip) REMOVE_BLIP(mission_blip) ENDIF if not DOES_BLIP_EXIST(ped[PED_BUDDY].blip) ped[PED_BUDDY].blip = CREATE_BLIP_FOR_PED(ped[PED_BUDDY].id) ENDIF int ammoToGive if HAS_PED_GOT_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_PISTOL) ammoToGive = 75 - GET_AMMO_IN_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_PISTOL) ELSE ammoToGive = 75 ENDIF if ammoToGive > 0 GIVE_WEAPON_TO_PED(PLAYER_PED_ID(),WEAPONTYPE_PISTOL,ammoToGive,true) ENDIF bTurnOnVerandaLight = true checkConditions(COND_START_SHOOTOUT,COND_END_SHOOTOUT) SET_CONDITION_STATE(COND_FIRST_WAVE_DEAD,TRUE) SET_CONDITION_STATE(COND_HEARD_VAGOS,TRUE) SET_CONDITION_STATE(COND_LAMAR_REACTED,TRUE) SET_CONDITION_STATE(COND_PLAYER_LEFT_GARAGE,TRUE) SET_CONDITION_STATE(COND_PLAYER_HAS_A_GUN,TRUE) SET_CONDITION_STATE(COND_INSTRUCTIONS_GIVEN,TRUE) SET_CONDITION_STATE(COND_PLAYER_ADVANCES_PORTALOO,TRUE) SET_CONDITION_STATE(COND_ELSAL_ON_LEFT_SPAWNED,TRUE) SET_CONDITION_STATE(COND_LEMAR_HEADING_FOR_PORTALOO,TRUE) SET_CONDITION_STATE(COND_FIRST_WAVE_DEAD,TRUE) SET_CONDITION_STATE(COND_DIA_SHOOT_GAS_CAN,TRUE) SET_CONDITION_STATE(COND_PLAYER_ARMED,TRUE) SET_CONDITION_STATE(COND_PLAYER_LEAVING_LAMAR,FALSE) FORCE_ACTION_STATE(3,ACTION_LEMAR_EXITS_GARAGE) FORCE_ACTION_STATE(7,ACTION_LEMAR_ADVANCES_TO_POST) FORCE_ACTION_STATE(10,ACTION_LEMAR_ADVANCES_TO_PORTALOO) FORCE_ACTION_STATE(12,ACTION_LEMAR_REACTS_TO_GUNFIRE) FORCE_ACTION_STATE(13,ACTION_LEMAR_DIVERTS_TO_BISON) FORCE_ACTION_STATE(4,ACTION_ENEMY_BACKS_OFF) FORCE_ACTION_STATE(5,ACTION_ENEMY_BY_BISON) FORCE_ACTION_STATE(6,ACTION_ENEMY_FROM_LEFT) FORCE_ACTION_STATE(9,ACTION_ENEMY_FROM_SKIP) FORCE_ACTION_STATE(11,ACTION_ENEMY_FROM_SCAFFOLD) FORCE_ACTION_STATE(15,ACTION_SCAFFOLD_PED_DROPS) FORCE_DIALOGUE_STATE(0,DIA_SHOOTOUT_START) FORCE_DIALOGUE_STATE(1,DIA_LAMAR_REACTS) FORCE_DIALOGUE_STATE(2,DIA_GET_GUN) FORCE_DIALOGUE_STATE(3,DIA_PLAYER_STAYS_IN_GARAGE) FORCE_DIALOGUE_STATE(4,DIA_ON_LEFT) FORCE_DIALOGUE_STATE(6,DIA_LEMAR_SHOT_AT_HIT_GAS) FORCE_DIALOGUE_STATE(7,DIA_LEMAR_SHOT_AT_NO_GAS) FORCE_DIALOGUE_STATE(8,DIA_TAKE_COVER_BEHIND_BISON) FORCE_DIALOGUE_STATE(9,DIA_GAS_BLOWS_UP) FORCE_DIALOGUE_STATE(23,DIA_KEEP_GOING_PASSED_SKIP) FORCE_INSTRUCTION_STATE(0,INS_GET_GUN) FORCE_INSTRUCTION_STATE(1,INS_ATTACK_ENEMY) FORCE_INSTRUCTION_STATE(2,INS_WEAPON_HELP) FORCE_INSTRUCTION_STATE(3,INS_COVER_HELP) set_gate(gate_instantShutLocked) playMusic("ARM2_SKIP_RESTART",TRUE,"ARM2_CAR") BREAK CASE STAGE_CHASE_AFTER_BIKE IF bIsReplay START_REPLAY_SETUP(<< -1118.2053, -1602.7607, 3.3986 >>,30) ELSE if IS_PLAYER_PLAYING(PLAYER_ID()) SET_ENTITY_COORDS(PLAYER_PED_ID(),<< -1118.2053, -1602.7607, 3.3986 >>) SET_ENTITY_HEADING(PLAYER_PED_ID(),30) LOAD_SCENE(<< -1118.2053, -1602.7607, 3.3986 >>) SET_PLAYER_CONTROL(player_id(),FALSE) wait(10) ENDIF ENDIF set_gate(gate_instantShutLocked) add_event(events_spawn_alleyway,STAGE_TAKE_BIKE_BACK_TO_LOCKUP) CLEAR_AREA(<< -1118.2053, -1602.7607, 3.3986 >>,100,TRUE) FORCE_ASSET_STAGE(ASSETS_STAGE_CHASE_BIKE) set_gate(gate_instantShutLocked) SPECIAL_SETUP_FOR_PLAYER_VEHICLE_AT_END_OF_ALLEY() //WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[VEH_PLAYER].id, CHAR_FRANKLIN, << -1134.0919, -1572.1919, 3.3169 >>,300,true,VEHICLE_TYPE_CAR) //SAFEWAIT() //ENDWHILE SET_ENTITY_HEALTH(vehicle[VEH_PLAYER].id,1600) WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[VEH_OBJECTIVE].id, CHAR_FRANKLIN, << -1126.0166, -1575.3572, 3.3486 >>,301,true,VEHICLE_TYPE_BIKE) SAFEWAIT(14) ENDWHILE REQUEST_MODEL(model_salvas) //cprintln(DEBUG_TREVOR3,"SKIP: ALLEYWAY spawned") while not CREATE_NPC_PED_ON_FOOT(ped[PED_BUDDY].id,CHAR_LAMAR,<< -1121.5697, -1603.1362, 3.3986 >>,38) safewait(7) endwhile SET_LEMAR_DEFAULTS(true) CLEAR_PED_TASKS_IMMEDIATELY(ped[PED_BUDDY].id) GIVE_WEAPON_TO_PED(ped[PED_BUDDY].id,WEAPONTYPE_MICROSMG ,2000,true) // TASK_ENTER_VEHICLE(ped[PED_BUDDY].id,vehicle[VEH_PLAYER].id,-1,VS_FRONT_RIGHT) add_event(events_make_Lemar_run) add_event(events_make_player_run) set_event_flag(events_make_Lemar_run,1) set_event_flag(events_make_player_run,1) CONTROL_EVENTS(events_make_Lemar_run) CONTROL_EVENTS(events_make_player_run) // initVehicle(VEH_OBJECTIVE,BAGGER,<< -1067.0568, -1501.7664, 4.0590 >>,40) IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) WHILE NOT HAS_MODEL_LOADED(model_salvas) safewait(16) ENDWHILE initPed(ped_bikeman,model_salvasb,vNull,0,vehicle[VEH_OBJECTIVE].id) SET_ENTITY_HEALTH(ped[ped_bikeman].id,100) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_bikeman].id,TRUE) SET_PED_MONEY(ped[ped_bikeman].id,80) ENDIF // seq() // TASK_VEHICLE_DRIVE_TO_COORD(null,vehicle[VEH_OBJECTIVE].id,<< -1106.4408, -943.8071, 1.5151 >>,12.0,DRIVINGSTYLE_NORMAL,DUMMY_MODEL_FOR_SCRIPT,DRIVINGMODE_AVOIDCARS,10,10) // TASK_VEHICLE_DRIVE_WANDER(null,vehicle[VEH_OBJECTIVE].id,18.0,DRIVINGMODE_AVOIDCARS) // endseq(ped[ped_bikeman].id) if not IS_ENTITY_DEAD(vehicle[VEH_OBJECTIVE].id) SET_VEHICLE_TYRES_CAN_BURST(vehicle[VEH_OBJECTIVE].id,FALSE) ENDIF int ammoToGiveB if HAS_PED_GOT_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_PISTOL) ammoToGiveB = 75 - GET_AMMO_IN_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_PISTOL) ELSE ammoToGiveB = 75 ENDIF if ammoToGiveB > 0 GIVE_WEAPON_TO_PED(PLAYER_PED_ID(),WEAPONTYPE_PISTOL,ammoToGiveB,true) ENDIF // add_event(events_ensure_lamar_enters_vehicle) FORCE_ACTION_STATE(7,ACTION_MUSIC_CHASE) playMusic("ARM2_FIGHT_END_RESTART",FALSE,"ARM2_CHASE_START") IF bIsReplay END_REPLAY_SETUP() ELSE SET_PLAYER_CONTROL(player_id(),TRUE) ENDIF BREAK CASE STAGE_TAKE_BIKE_BACK_TO_LOCKUP IF bIsReplay START_REPLAY_SETUP(<< -1002.0295, -1263.1501, 4.8810 >>,113) ENDIF CLEAR_AREA(<< -1002.0295, -1263.1501, 4.8810 >>,100,TRUE) set_gate(gate_instantShutLocked) CREATE_VEHICLE_FOR_REPLAY(vehicle[VEH_PLAYER].id, << -1000.0295, -1263.1501, 4.8810 >>,301,false,false,true,false) //WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[VEH_PLAYER].id, CHAR_FRANKLIN, << -1000.0295, -1263.1501, 4.8810 >>,301) //WAIT(0) //ENDWHILE SET_ENTITY_HEALTH(vehicle[VEH_PLAYER].id,1600) WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[VEH_OBJECTIVE].id, CHAR_FRANKLIN, << -991.7125, -1257.0267, 4.7688 >>,281,true,VEHICLE_TYPE_BIKE) WAIT(0) ENDWHILE FORCE_ASSET_STAGE(ASSETS_STAGE_RETURN_BIKE) //initVehicle(VEH_OBJECTIVE,BAGGER,<< -991.7125, -1257.0267, 4.7688 >>,281) if not IS_ENTITY_DEAD(vehicle[VEH_OBJECTIVE].id) SET_VEHICLE_TYRES_CAN_BURST(vehicle[VEH_OBJECTIVE].id,FALSE) vehicle[VEH_OBJECTIVE].blip = CREATE_BLIP_FOR_ENTITY(vehicle[VEH_OBJECTIVE].id) ENDIF if not IS_ENTITY_DEAD(vehicle[VEH_PLAYER].id) if IS_PLAYER_PLAYING(PLAYER_ID()) SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehicle[VEH_PLAYER].id) ENDIF while not CREATE_NPC_PED_INSIDE_VEHICLE(ped[PED_BUDDY].id,CHAR_LAMAR,vehicle[VEH_PLAYER].id,VS_FRONT_RIGHT) safewait(7) endwhile SET_LEMAR_DEFAULTS(true) ENDIF IF bIsReplay END_REPLAY_SETUP() ENDIF BREAK CASE STAGE_FINAL_CUTSCENE IF bIsReplay START_REPLAY_SETUP(<<-19.0893, -1404.9318, 28.3219>>,113) ELSE SET_ENTITY_COORDS(PLAYER_PED_ID(),<<-19.0893, -1404.9318, 28.3219>>) SET_ENTITY_HEADING(PLAYER_PED_ID(),113) LOAD_SCENE(<<-17.0893, -1404.9318, 28.3219>>) wait(10) ENDIF CLEAR_AREA(<<-19.0893, -1404.9318, 28.3219>>,100,TRUE) set_gate(gate_instantShutLocked) //CREATE_VEHICLE_FOR_REPLAY(vehicle[VEH_PLAYER].id, << -1000.0295, -1263.1501, 4.8810 >>,301) WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[VEH_PLAYER].id, CHAR_FRANKLIN, <<-17.0893, -1404.9318, 28.3219>>,270) WAIT(0) ENDWHILE WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[VEH_OBJECTIVE].id, CHAR_FRANKLIN, <<-5.8908, -1391.7681, 28.3421>>, 185.9740,true,VEHICLE_TYPE_BIKE) WAIT(0) ENDWHILE FORCE_ASSET_STAGE(ASSETS_STAGE_FINAL_CUTSCENE) IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) SET_ENTITY_HEALTH(vehicle[VEH_PLAYER].id,1600) ENDIF if not IS_ENTITY_DEAD(vehicle[VEH_OBJECTIVE].id) SET_VEHICLE_TYRES_CAN_BURST(vehicle[VEH_OBJECTIVE].id,FALSE) if IS_PLAYER_PLAYING(PLAYER_ID()) SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehicle[VEH_OBJECTIVE].id) ENDIF ENDIF IF bIsReplay END_REPLAY_SETUP() ENDIF break CASE STAGE_GAME_OVER if IS_PLAYER_PLAYING(PLAYER_ID()) /*SET_ENTITY_COORDS*/ SET_ENTITY_COORDS(PLAYER_PED_ID(),<< -19.9686, -1454.1509, 29.5843 >>) SET_ENTITY_HEADING(PLAYER_PED_ID(),231.0765) ENDIF WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[VEH_PLAYER].id, CHAR_FRANKLIN, <<-17.0893, -1404.9318, 28.3219>>,270.1911) WAIT(0) ENDWHILE IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) SET_ENTITY_HEALTH(vehicle[VEH_PLAYER].id,1600) ENDIF FORCE_ASSET_STAGE(ASSETS_STAGE_GAME_OVER) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[VEH_PLAYER].id) LOAD_SCENE(<< -19.9686, -1454.1509, 29.5843 >>) wait(10) BREAK ENDSWITCH CLEAR_AREA_OF_PEDS(GET_ENTITY_COORDS(player_ped_id()),200) WAIT(0) // CONTROL_EVENTS(EVENTS_NULL,TRUE) SET_GAMEPLAY_CAM_RELATIVE_HEADING() SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) ENDIF ENDPROC #IF IS_DEBUG_BUILD int iProgress proc debug() iProgress = ENUM_TO_INT(missionProgress) CHECK_MISSION_SKIP() IF bGateState //cprintln(debug_Trevor3,"Gate Sate = ",GET_GATE_STATE()) endif if bShowActions int iPedMin,iPedMax iPedMin = 0 iPedMax = count_of(ped)-1 //count_of(ped) - 1 //find which ped is closest to middle of screen float fX,fY,fDist float fClosest = 10000.0 int iClosePed = -1 int IR REPEAT COUNT_OF(ped) iR if DOES_ENTITY_EXIST(ped[iR].id) IF GET_SCREEN_COORD_FROM_WORLD_COORD(GET_ENTITY_COORDS(ped[ir].id,FALSE),fx,fy) fx -= 0.5 fy -= 0.5 fDist = SQRT((fx*fx)+(fy*fy)) if fDist < fClosest fClosest = fDist iClosePed = iR ENDIF ENDIF ENDIF ENDREPEAT REPEAT COUNT_OF(ped) iR IF iR >= iPedMin and iR <= iPedMax fy = 0.1+(iR * 0.025) SET_TEXT_SCALE(0.4,0.4) IF iClosePed = iR SET_TEXT_COLOUR(0,255,0,255) ELSE IF DOES_ENTITY_EXIST(ped[iR].id) IF IS_PED_INJURED(ped[iR].id) SET_TEXT_COLOUR(255,0,0,255) ELSE SET_TEXT_COLOUR(255,255,255,255) ENDIF ENDIF ENDIF IF iClosePed = iR SET_TEXT_COLOUR(0,255,0,255) ELSE IF DOES_ENTITY_EXIST(ped[iR].id) IF IS_PED_INJURED(ped[iR].id) SET_TEXT_COLOUR(255,0,0,255) ELSE SET_TEXT_COLOUR(255,255,255,255) ENDIF ENDIF ENDIF showIntOnScreen(0.47,fy,ped[iR].actionFlag) endif ENDREPEAT ENDIF ENDPROC PROC debug_keys() // Check for Pass IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S)) Mission_Passed() ENDIF // Check for Fail IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F)) Mission_Failed() ENDIF ENDPROC #ENDIF FUNC BOOL setupMission() cprintln(debug_trevor3,"Armenian 2 starts: ",get_Game_timer()) SET_VEHICLE_MODEL_IS_SUPPRESSED(BAGGER,true) IF NOT IS_PED_INJURED(player_ped_id()) SET_PED_HELMET(PLAYER_PED_ID(),FALSE) ENDIF SET_PED_NON_CREATION_AREA(<<-1099.031860,-1633.074341,9.711103>>-<<46.375000,63.250000,7.812500>>,<<-1099.031860,-1633.074341,9.711103>>+<<46.375000,63.250000,7.812500>>) set_gate(gate_instantShutLocked) g_savedGlobals.sPlayerData.iFranklinOriginalOutfitID = GET_CORE_OUTFIT_ID_FROM_PED(PLAYER_PED_ID()) //clear areas CLEAR_AREA(<< -60.8903, -1111.1042, 25.4353 >>,5.0,TRUE,TRUE) CLEAR_AREA(<< -1098.6625, -1634.2100, 3.5739 >>,100.0,TRUE,TRUE) //commenting out below line due to bug 338056 //SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-27.323641,-1083.066650,26.786686>>,<<8.062500,6.812500,1.687500>>,FALSE) ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT,FALSE) ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT,FALSE) REQUEST_ADDITIONAL_TEXT("ARM2",MISSION_TEXT_SLOT) //this was commented out. Uncommenting to ensure mission text loads before first instructions are printed. //except this is causing a delay before the cutscene can start to play? SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<< -1081.5468 , -1657.6860 , 4.7111 >>-<<11,10,4>>,<< -1081.5468 , -1657.6860 , 4.7111 >>+<<11,10,4>>,FALSE) SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<< -1113.8973, -1615.6180, 3.5395 >>-<<1.6,1.8,2>>,<< -1113.8973, -1615.6180, 3.5395 >>+<<1.6,1.8,2>>,FALSE) SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-1070.387939,-1671.848267,5.211141>>-<<9.250000,8.937500,2.125000>>,<<-1070.387939,-1671.848267,5.211141>>+<<9.250000,8.937500,2.125000>>,FALSE) SET_ROADS_IN_AREA(<< -1159.5867, -1594.7542, 0.2391 >>,<< -1119.5867, -1554.7542, 13.2391 >>,FALSE) ADD_COVER_BLOCKING_AREA(<<-1079,-1654.1,3.4>>-<<1,1,1>>,<<-1079,-1654.1,3.4>>+<<1,1,1>>,TRUE,TRUE,TRUE) SET_SCENARIO_GROUP_ENABLED("ARMENIAN_CATS",TRUE) //vehicle damage data damageEvent[0].time = 1000 damageEvent[0].bActivated = FALSE damageEvent[0].damage = SMASH_WINDSHIELD damageEvent[1].time = 1600 damageEvent[1].bActivated = FALSE damageEvent[1].damage = SMASH_REAR_WINDOW damageEvent[2].time = 2200 damageEvent[2].bActivated = FALSE damageEvent[2].damage = BURST_FRONT_RIGHT_TYRE damageEvent[3].time = 2700 damageEvent[3].bActivated = FALSE damageEvent[3].damage = REDUCE_ENGINE_HEALTH damageEvent[4].time = 3000 damageEvent[4].bActivated = FALSE damageEvent[4].damage = POP_BOOT damageEvent[5].time = 3400 damageEvent[5].bActivated = FALSE damageEvent[5].damage = SMASH_FRONT_RIGHT_WINDOW damageEvent[6].time = 4000 damageEvent[6].bActivated = FALSE damageEvent[6].damage = POP_RIGHT_DOOR // damageEvent[7].time = 6000 // damageEvent[7].bActivated = FALSE // damageEvent[7].damage = CRUMPLE_BOOT damageEvent[7].time = 6500 damageEvent[7].bActivated = FALSE damageEvent[7].damage = POP_LEFT_DOOR elsalUnseenSpawn[0] = <<-1118.9967, -1591.6809, 3.5760>> elsalUnseenSpawn[1] = <<-1128.4098, -1608.9891, 3.3985>> elsalUnseenSpawn[2] = <<-1104.1390, -1613.4166, 3.7148>> elsalUnseenSpawn[3] = <<-1108.5714, -1632.4420, 3.6161>> elsalUnseenSpawn[4] = <<-1088.9132, -1632.3376, 3.7329>> elsalUnseenSpawn[5] = <<-1095.3610, -1648.2563, 3.3985>> elsalUnseenSpawn[6] = <<-1076.7117, -1651.3168, 3.5013>> elsalUnseenSpawn[7] = <<-1083.7156, -1672.5491, 3.7051>> elsalUnseenSpawn[8] = <<-1067.6807, -1662.1759, 3.6078>> elsalUnseenSpawn[9] = <<-1067.0642, -1670.2799, 3.4729>> add_event(EVENTS_CHECK_PLAYER_FAILS,STAGE_GAME_OVER,TRUE) add_event(EVENTS_REMOVE_RANDOM_PEDS_IN_AREA,STAGE_GAME_OVER,TRUE) SET_VEHICLE_MODEL_IS_SUPPRESSED(GET_PLAYER_VEH_MODEL(CHAR_FRANKLIN),true) #IF IS_DEBUG_BUILD DONT_DO_J_SKIP(sLocatesData) #endif return true ENDFUNC func bool stage_changeTime() switch iFlag case 0 nextCutscene = "Armenian_2_int" REQUEST_CUTSCENE(nextCutscene) iFlag++ break case 1 // IF DO_TIMELAPSE(SP_MISSION_ARMENIAN_2,sTimelapse) RETURN TRUE // ENDIF break ENDSWITCH return false endfunc func bool stageMeetlamar() switch iFlag case 0 //IF IS_SCREEN_FADED_IN() nextCutscene = "Armenian_2_int" clear_help_text() REQUEST_CUTSCENE(nextCutscene) iFlag=1002 //ENDIF break case 1002 IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE() //clear area for cutscne and reposition player vehicle if needed add_event(EVENTS_DEAL_WITH_PLAYER_CAR,STAGE_ADVANCE_DOWN_ALLEYWAY) CONTROL_EVENTS(EVENTS_DEAL_WITH_PLAYER_CAR) add_event(events_make_player_walk) IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.ped[0]) ped[PED_SIMEON].id = g_sTriggerSceneAssets.ped[0] SET_ENTITY_AS_MISSION_ENTITY(ped[PED_SIMEON].id,true,true) REGISTER_ENTITY_FOR_CUTSCENE(ped[PED_SIMEON].id,"Siemon",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,IG_SIEMONYETARIAN) ELSE REGISTER_ENTITY_FOR_CUTSCENE(null,"Siemon",CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY,IG_SIEMONYETARIAN) ENDIF REGISTER_ENTITY_FOR_CUTSCENE(NULL,"Lamar",CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY,model_lamar) //1265104 changed from false to true //CLEAR_AREA_OF_VEHICLES(<<-39.09239, -1101.45605, 25.42230>> ,5.0,FALSE) //car gen cars in showroom //1265104 //CLEAR_AREA_OF_VEHICLES(<<-47.71390, -1096.54077, 25.42230>> ,5.0,FALSE) //car gen cars in showroom //1265104 SET_DOOR_STATE(DOORNAME_ARM2_SIMEON_OFFICE,DOORSTATE_UNLOCKED) //Calling this allows the mission triggerer thread to clean up and shut down after you //have grabbed ownership of trigger scene assets. It should be called if your mission has //a lead-in sequence. It will gives your mission more memory to play with. -BenR //MISSION_FLOW_RELEASE_TRIGGER_SCENE_ASSETS(SP_MISSION_ARMENIAN_2) //removing here because cars were being removed too early. This happens later on in the mission. SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) START_CUTSCENE() REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST) IF g_bPlayerLockedInToTrigger CLEAR_PLAYER_TRIGGER_SCENE_LOCK_IN() ENDIF SET_ASSET_STAGE(ASSETS_STAGE_DRIVE_TO_ALLEY) SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_UNARMED) SETTIMERB(0) SET_CUTSCENE_CAN_BE_SKIPPED(FALSE) IF IS_REPEAT_PLAY_ACTIVE() IF IS_SCREEN_FADED_OUT() AND NOT IS_SCREEN_FADING_IN() DO_SCREEN_FADE_IN(500) ENDIF ENDIF //create vehicles out back of garage iFlag=1005 ENDIF break case 1004 IF is_event_complete(EVENTS_DEAL_WITH_PLAYER_CAR) AND IS_ASSET_STAGE_READY(ASSETS_STAGE_DRIVE_TO_ALLEY) STOP_GAMEPLAY_HINT(true) iFlag++ endif BREAK CASE 1005 SET_CUTSCENE_CAN_BE_SKIPPED(TRUE) IF NOT DOES_ENTITY_EXIST(ped[PED_BUDDY].id) IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Lamar")) ped[PED_BUDDY].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Lamar")) ENDIF ENDIF IF NOT DOES_ENTITY_EXIST(ped[PED_SIMEON].id) IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Siemon")) ped[PED_SIMEON].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Siemon")) ENDIF ENDIF if CAN_SET_EXIT_STATE_FOR_CAMERA() REPLAY_STOP_EVENT() SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) ENDIF IF DOES_ENTITY_EXIST(ped[PED_BUDDY].id) IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Lamar") SET_TODS_CUTSCENE_RUNNING(sTimelapse, FALSE,FALSE,2000,FALSE,FALSE) IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) // TASK_ENTER_VEHICLE(ped[PED_BUDDY].id,vehicle[VEH_PLAYER].id,DEFAULT_TIME_BEFORE_WARP,VS_FRONT_RIGHT,pedmove_walk) TASK_FOLLOW_NAV_MESH_TO_COORD(ped[PED_BUDDY].id,<<-25.9450, -1084.2780, 25.5736>>,pedmove_walk,DEFAULT_TIME_BEFORE_WARP,0.1,ENAV_SUPPRESS_EXACT_STOP) endif if not IS_PED_INJURED(ped[PED_BUDDY].id) FORCE_PED_MOTION_STATE(ped[PED_BUDDY].id,MS_ON_FOOT_WALK,FALSE,FAUS_CUTSCENE_EXIT) ENDIF SET_PED_COMPONENT_VARIATION(ped[PED_BUDDY].id, INT_TO_ENUM(PED_COMPONENT,1), 1, 0, 0) //(berd) //dog tag on SET_LEMAR_DEFAULTS(false) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[PED_BUDDY].id,FALSE) iFlag++ ENDIF ENDIF ENDIF BREAK case 1006 if not IS_CUTSCENE_ACTIVE() //REMOVE_CUTSCENE() SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) //SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_UNARMED) //SET_PLAYER_CONTROL(PLAYER_ID(),true) // CLEAR_AREA_OF_VEHICLES(<< -25.8248, -1080.9767, 25.6558 >>,10.0,TRUE) if IS_VEHICLE_DRIVEABLE(vehicle[VEH_PLAYER].id) SET_VEHICLE_ENGINE_ON(vehicle[VEH_PLAYER].id,true,true) // SET_VEHICLE_RADIO_ENABLED(vehicle[VEH_PLAYER].id,FALSE) ENDIF REMOVE_SCENARIO_BLOCKING_AREAS() add_event(events_spawn_alleyway,STAGE_CHASE_AFTER_BIKE) SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-43.781937,-1098.931885,25.859827>>-<<9.750000,6.750000,2.562500>>,<<-43.781937,-1098.931885,25.859827>>+<<9.750000,6.750000,2.562500>>,TRUE) RETURN TRUE ENDIF break ENDSWITCH return FALSE ENDFUNC func bool stageDriveToAlleyway() //checkSpawnGates() checkConditions(COND_START_DRIVE,COND_END_DRIVE) INSTRUCTIONS(0,INS_GET_TO_VESPUCCI_BEACH,cIFnot,COND_ENEMY_VAGOS_SPAWNED) INSTRUCTIONS(1,INS_HELP_DRIVING_VIEW) //INSTRUCTIONS(2,INS_EXIT_ALLEY,cIF,COND_PLAYER_ENTERED_ALLEYWAY_UNALOWED) //INSTRUCTIONS(1,INS_LOSE_COPS,cIF,COND_WANTED_LEVEL) //INSTRUCTIONS(2,INS_WAIT_FOR_LEMAR,cIF,COND_PLAYER_30M_FROM_LAMAR) // INS_WAIT_FOR_LEMAR,cIF,COND_PLAYER_IN_A_DIFFERENT_CAR_TO_LEMAR,cORbracket,COND_PLAYER_IN_VEHICLE,cANDnot,COND_LEMAR_IS_IN_A_CAR) ACTION(0,ACT_SET_GARAGE_DOORS_LOCKED) //ACTION(1,ACT_LAMAR_FOLLOWS_PLAYER,PLAYOUT_ON_TRIGGER,cIF,COND_LAMAR_FOLLOW_CONDITIONS) ACTION(11,ACT_STOP_FOLLOWING_LAMAR_DOWN_ALLEY,PLAYOUT_ON_COND,cIF,COND_PLAYER_ENTERED_ALLEYWAY_UNALOWED) ACTION(2,ACT_GET_PLAYER_CAR) ACTION(3,ACT_GPS_CUSTOM_ROUTE) ACTION(4,ACT_SIMEON) ACTION(5,ACT_SET_PLAYER_THROUGH_DRIVER_DOOR) ACTION(6,ACT_TURN_ON_CAR_RADIO,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_CAR_LAMAR_NOT) ACTION(7,ACT_LOCK_SHOWROOM_CARS) ACTION(8,ACT_BUDDY_HEAD_TRACKING) ACTION(9,ACT_AUDIO_SCENE_ARM_2_DRIVE_TO_ALLEY) ACTION(10,ACT_SET_GARAGE_VEHICLES_AS_NO_LONGER_NEEDED,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_200M_FROM_GARAGE) ACTION(1,ACT_RELEASE_MISSION_TRIGGER,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_200M_FROM_GARAGE) ACTION(12,ACT_SPAWN_FAIL_RESPONSE_ELSALVS,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_WILL_FAIL_FOR_ENTERING_ALLEY,cOR,COND_PLAYER_IN_A_CAR_IN_ALLEYWAY_TOO_EARLY) ACTION(13,ACT_DRIVERS_LOOK_AT_PLAYER) action(14,ACTION_PLAY_IDLES) action(15,ACT_STOP_LAMAR_ENTERING_PLAYER_CAR,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_LEAVING_PLAYER_CAR_AREA) DIALOGUE(0,DIA_YOU_DRIVE) DIALOGUE(1,DIA_SWITCH_TO_SUBTITLES) DIALOGUE(2,DIA_SIMEON_TALKS_IF_PLAYER_APPROACHES) DIALOGUE(3,DIA_WANTED_LEVEL,cIF,COND_LEMAR_WANTS_TO_COMMENT_ON_WANTED_LEVEL,cAND,COND_BANTER_STATUS_SAVED) DIALOGUE(4,DIA_PLAYER_LEFT_CAR,cIF,COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_LEAVING_CAR,cAND,COND_BANTER_STATUS_SAVED) DIALOGUE(5,DIA_PLAYER_RUNS_OFF,cIF,COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_RUNNING_AWAY_FROM_CAR,cOR,COND_PLAYER_IN_A_DIFFERENT_CAR_TO_LEMAR,cAND,COND_BANTER_STATUS_SAVED) DIALOGUE(6,DIA_PLAYER_GETS_BACK_IN_CAR,cIF,COND_LEMAR_WANT_TO_COMMENT_ON_PLAYER_GETTING_BACK_IN_CAR,cAND,COND_BANTER_STATUS_SAVED) DIALOGUE(8,DIA_DRIVE_BANTER,cIF,COND_PLAYER_AND_LEMAR_IN_SAME_CAR,cANDNOT,COND_WANTED_LEVEL) DIALOGUE(9,DIA_PLAYER_GOES_DOWN_ALLEY_EARLY,cIF,COND_PLAYER_ENTERED_ALLEYWAY_UNALOWED) DIALOGUE(10,DIA_FAIL_ENTERING_ALLEYWAY,cIF,COND_PLAYER_WILL_FAIL_FOR_ENTERING_ALLEY,cOR,COND_PLAYER_IN_A_CAR_IN_ALLEYWAY_TOO_EARLY) FAIL(FAIL_LEFT_LAMAR_BEHIND) FAIL(FAIL_DAMAGE_IN_SHOWROOM,cIF,COND_SHOWROOM_RAMPAGE) FAIL(FAIL_LAMAR_DIED) FAIL(FAIL_SIMEON_DIED) FAIL(FAIL_ENTERED_ALLEY_TO_EARLY,cIF,COND_ALLEY_PEDS_ALERTED) FAIL(FAIL_ALERTING_ELSALVS,cIF,COND_PLAYER_IN_A_CAR_IN_ALLEYWAY_TOO_EARLY) FAIL(FAIL_ATTACK_DRIVE_OFF_PEDS,cIF,COND_DRIVE_OFF_PEDS_FAIL_DUPE) //INSTRUCTIONS(1,INS_WAIT_FOR_LEMAR) //INSTRUCTIONS(2,INS_LOSE_THE_COPS) IF IS_INSTRUCTION_COMPLETE(0,INS_GET_TO_VESPUCCI_BEACH) IF DOES_BLIP_EXIST(mission_blip) CLEAR_GPS_MULTI_ROUTE() REMOVE_BLIP(mission_blip) ENDIF CLEAR_MISSION_LOCATION_BLIP(sLocatesData) CLEAR_MISSION_LOCATE_STUFF(sLocatesData) mission_blip = CREATE_BLIP_FOR_ENTITY(ped[ped_buddy].id) IF NOT IS_PED_INJURED(ped[ped_buddy].id) REMOVE_PED_FROM_GROUP(ped[ped_buddy].id) ENDIF KILL_ANY_CONVERSATION() RETURN TRUE ENDIF return FALSE ENDFUNC func bool stageAdvanceDownAlleyway() checkConditions(COND_START_ALLEY_STAGE,COND_END_ALLEY_STAGE) if failtime = 0 //a fail timer is not in progress action(0,action_LEMAR_APPROACHES_GATE,PLAYOUT_ON_TRIGGER) action(26,ACT_LEMAR_EXITS_CAR,PLAYOUT_ON_TRIGGER,cIF,cond_vehicle_come_to_stop) action(1,ACTION_BUM_STAGGERS_FROM_GARAGE,PLAYOUT_ON_TRIGGER,cIF,COND_trigger_bum) action(2,ACTION_LEMAR_WALKS_TOWARDS_BUM,PLAYOUT_ON_COND,cIF,COND_lemar_climbed_gate,cANDNOT,COND_player_interupted_anim) ACTION(3,ACTION_LEMAR_INTERRACTS_WITH_BUM,PLAYOUT_ON_TRIGGER,cIF,COND_lemar_at_bum,cAndNOT,COND_player_interupted_anim,cANDNOT,COND_PLAYER_STOOD_INFRONT_OF_CAR) ACTION(4,ACTION_LEMAR_IGNORES_BUM_IF_HIT,PLAYOUT_ON_TRIGGER,cIF,COND_player_interupted_anim,cAND,COND_lemar_climbed_gate) ACTION(5,ACTION_BUM_RETURNS_TO_GARAGE,PLAYOUT_ON_TRIGGER,cIF,COND_player_interupted_anim,cOR,COND_BUM_RETURNED_TO_GARAGE_FROM_ANIM) ACTION(6,ACTION_WAIT_FOR_PLAYER_TO_CLIMB_GATE,PLAYOUT_ON_TRIGGER,cIF,COND_LEMAR_HEADING_TOWARDS_BUM,cANDNOT,COND_PLAYER_IN_ALLEYWAY,cANDNOT,COND_lemar_began_bum_interaction) ACTION(7,ACTION_VEHICLE_DRIVES_OFF,PLAYOUT_ON_TRIGGER,cIF,COND_LEMAR_IN_RANGE_OF_CAR,cANDNOT,COND_PLAYER_TOO_FAR_BEHIND_LEMAR) ACTION(8,ACTION_PLAYER_LOOK_ABOUT) ACTION(9,ACTION_LEMAR_LOOKS_AT_PASSING_CAR,PLAYOUT_ON_TRIGGER,cIF,COND_CAR_CLOSING_ON_LEMAR,cANDNOT,COND_PLAYER_STOOD_INFRONT_OF_CAR) ACTION(11,ACTION_VEHICLE_BLOCKED_BY_PLAYER,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_STOOD_INFRONT_OF_CAR) ACTION(12,ACTION_VEHICLE_CONTINUES_DRIVING,PLAYOUT_ON_TRIGGER,cIF,COND_VEHICLE_STOPPED,cANDNOT,COND_PLAYER_STOOD_INFRONT_OF_CAR) ACTION(13,ACTION_LEMAR_REACTS_TO_PLAYER_BLOCKING_ELSAL,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_STOOD_INFRONT_OF_CAR) ACTION(14,ACTION_LEMAR_WAITS_FOR_PLAYER) ACTION(16,ACTION_PLAY_IDLES,PLAYOUT_ON_TRIGGER,cIF,COND_LEMAR_NEAR_GARAGE) ACTION(17,ACTION_LOAD_CUTSCENE,PLAYOUT_ON_TRIGGER,cIF,COND_IN_END_ALLEY_RANGE) ACTION(18,ACT_DRIVERS_LOOK_AT_PLAYER) ACTION(20,ACTION_LEMAR_FOLLOWS_PLAYER_AT_GARAGES,PLAYOUT_ON_TRIGGER,cIF,COND_LEMAR_NEAR_GARAGE) ACTION(21,ACTION_OPEN_GARAGE_1,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_AT_GARAGE1,cAND,COND_PLAYER_TOLD_TO_OPEN_GARAGES) ACTION(22,ACTION_OPEN_GARAGE_2,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_AT_GARAGE2,cAND,COND_PLAYER_TOLD_TO_OPEN_GARAGES) ACTION(23,ACTION_LOCK_GARAGE_3,PLAYOUT_ON_COND,cIFNOT,COND_PLAYER_AT_GARAGE3,cIFNOT,COND_PLAYER_TOLD_TO_OPEN_GARAGES) ACTION(24,ACTION_MUSIC_AT_BUM,PLAYOUT_ON_TRIGGER,cIF,COND_DRUNK_KICK_ANIM_COMPLETED,cOR,COND_player_hit_bum) ACTION(25,ACTION_OPEN_GARAGE_3,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_AT_GARAGE3,cAND,COND_PLAYER_TOLD_TO_OPEN_GARAGES) action(27,ACTION_INITIALISE_DRIVEOFF_VEHICLE) action(28,ACT_UNFREEZE_DRIVEOFF_CAR) ACTION(29,ACT_ADUIO_END_ARM_2_DRIVE_TO_ALLEY) ACTION(30,ACT_LAMAR_LOOK_AT_GARAGES_ON_APPROACH,PLAYOUT_ON_TRIGGER,cIF,COND_LEMAR_NEAR_GARAGE) action(31,ACT_REDUCE_PLAYER_SPEED) action(10,ACTION_UPDATE_LAMAR_PROGRESS) DIALOGUE(0,DIA_ARRIVE_AT_ALLEY) DIALOGUE_ON_DIALOGUE(1,DIA_WATCH_ME_CLIMB_GATE,0,DIA_ARRIVE_AT_ALLEY,cIF,COND_LEMAR_APPROACHING_GATE,cAndNOT,COND_player_in_alleyway,cANDnot,COND_lemar_climbed_gate,cANDNOT,COND_PLAYER_CLIMBING_GATE) DIALOGUE(2,DIA_BUM_SHOUTS_OUT,cIF,COND_trigger_bum) DIALOGUE(3,DIA_MY_RECTAL_GLAND,cIF,COND_DIA_BUM_SHOUTS_PLAYED,cANDNOT,COND_player_interupted_anim,cAND,COND_LEMAR_TRIGGER_BUM_DIALOGUE_RANGE) DIALOGUE(4,DIA_LEMAR_TALKS_TO_BUM,cIF,COND_lemar_began_bum_interaction,cANDNOT,COND_player_interupted_anim) DIALOGUE(5,DIA_PLAYER_INTERUPTS_LEMAR_BUM,cIF,COND_player_interupted_anim,cANDNOT,COND_LEMAR_IN_RANGE_OF_CAR) DIALOGUE(6,DIA_LAMAR_WAIT_ON_PLAYER) //,cIF,COND_LEMAR_HEADING_TOWARDS_BUM,cANDNOT,COND_PLAYER_IN_ALLEYWAY,cANDNOT,COND_PLAYER_CLIMBING_GATE,cAND,COND_PLAYER_WITHIN_50M_OF_LAMAR) DIALOGUE(7,DIA_LAMAR_SEES_SALV_CAR,cIF,COND_LEMAR_IN_RANGE_OF_CAR,cANDNOT,COND_PLAYER_TOO_FAR_BEHIND_LEMAR,cANDNOT,COND_CAR_PASSED_LEMAR) DIALOGUE_ON_DIALOGUE(23,DIA_LAMAR_WALKS_PASS_SALV_CAR,7,DIA_LAMAR_SEES_SALV_CAR) DIALOGUE(8,DIA_SALVS_RESPOND_TO_PLAYER_IN_WAY,cIF,COND_PLAYER_STOOD_INFRONT_OF_CAR) DIALOGUE(9,DIA_LEMAR_TELLS_PLAYER_TO_MOVE_AWAY_FROM_CAR,cIF,COND_PLAYER_STOOD_INFRONT_OF_CAR) DIALOGUE(10,DIA_LEMAR_AFTER_PLAYER_BLOCKED_CAR,cWasTrueNowFalse,COND_PLAYER_STOOD_INFRONT_OF_CAR) DIALOGUE(11,DIA_CAR_PEDS_CHATTING,cIFNOT,COND_LEMAR_IN_RANGE_OF_CAR,cANDNOT,COND_PLAYER_STOOD_INFRONT_OF_CAR) DIALOGUE(12,DIA_WALKING_DOWN_END_OF_ALLEY_CHAT,cIF,COND_IN_END_ALLEY_RANGE,CANDNOT,COND_PLAYER_LAGS_AS_LAMAR_HEADS_TO_ALLEY_END,cANDNOT,COND_PLAYER_STOOD_INFRONT_OF_CAR) DIALOGUE(13,DIA_LAMAR_SAYS_OPEN_GARAGE,cIF,COND_LEMAR_NEAR_GARAGE,cANDNOT,COND_PLAYER_TOO_FAR_BEHIND_LEMAR) DIALOGUE(14,DIA_LAMAR_SAYS_OPEN_NEXT_GARAGE,cIF,COND_FIRST_GARAGE_OPENED) DIALOGUE(15,DIA_LAMAR_SAYS_OPEN_LAST_GARAGE,cIF,COND_TWO_GARAGES_OPENED) DIALOGUE(17,DIA_PLAYER_APPROACHES_STOPPED_ELSAL_CAR,cIF,COND_PLAYER_NEXT_TO_ELSAL_CAR) DIALOGUE(18,DIA_FRANKLIN_HIT_BY_CAR,cIF,COND_FRANKLIN_HIT_BY_CAR) DIALOGUE(20,DIA_LAMAR_IMPATIENT_WAITING_AT_END,cIF,COND_LEMAR_NEAR_GARAGE) DIALOGUE(21,DIA_PLAYER_DAMAGES_DRIVING_OFF_CAR,cIF,COND_DRIVE_OFF_PEDS_FAIL) DIALOGUE(22,DIA_LAMAR_SAYS_STOP_MESSING_ABOUT,cIF,COND_PLAYER_BLOCKING_GATE) DIALOGUE(24,DIA_LAMAR_SAYS_STOP_BLOCKING_GATE_WITH_CAR,cIF,COND_CAR_BLOCKING_GATE) INSTRUCTIONS(0,INS_FOLLOW_LAMAR,cIF,COND_DIA_BIKE_IN_LOCKUP) INSTRUCTIONS(1,INS_OPEN_GARAGE,cIF,COND_LEMAR_NEAR_GARAGE) INSTRUCTIONS(2,INS_CLIMB)//DIA_WATCH_ME_CLIMB_GATE) INSTRUCTIONS(3,INS_GET_BACK_TO_LAMAR) INSTRUCTIONS(4,INS_FIRST_PERSON_HELP,cIF,COND_PLAYER_IN_ALLEYWAY,cANDNOT,COND_PLAYER_CLIMBING_GATE) ELSE ACTION(15,ACT_SPAWN_FAIL_RESPONSE_ELSALVS,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_ALERTS_ELSALVS) DIALOGUE(16,DIA_FAIL_ENTERING_ALLEYWAY,cIF,COND_PLAYER_ALERTS_ELSALVS) ENDIF FAIL(FAIL_DRIVER_IMPATIENT,CIF,COND_PLAYER_FAIL_BLOCKING_CAR) FAIL(FAIL_CAR_ALARM_GOES_OFF,cIF,COND_PLAYER_FAIL_CAR_ALARM) FAIL(FAIL_SMASH_OPEN_GATE) FAIL(FAIL_LEFT_LAMAR_BEHIND) FAIL(FAIL_ATTACK_DRIVE_OFF_PEDS,cIF,COND_DRIVE_OFF_PEDS_FAIL) FAIL(FAIL_LAMAR_DIED) FAIL(FAIL_ALERTING_ELSALVS,cIF,COND_PLAYER_ALERTS_ELSALVS) FAIL(FAIL_CAR_BLOCKING_ELSALVS) //IF IS_CONDITION_TRUE(COND_PLAYER_AT_GARAGE3) //AND IS_CONDITION_TRUE(COND_PLAYER_TOLD_TO_OPEN_GARAGES) //AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF IS_ACTION_COMPLETE(25,ACTION_OPEN_GARAGE_3) if does_blip_exist(mission_blip) REMOVE_BLIP(mission_blip) ENDIF IF DOES_BLIP_EXIST(garage_1_blip) REMOVE_BLIP(garage_1_blip) ENDIF IF DOES_BLIP_EXIST(garage_3_blip) REMOVE_BLIP(garage_3_blip) ENDIF IF DOES_BLIP_EXIST(garage_2_blip) REMOVE_BLIP(garage_2_blip) ENDIF KILL_ANY_CONVERSATION() CLEAR_PRINTS() clear_help_text() return true ENDIF RETURN FALSE endfunc func bool stageDrugGarage() ACTION(1,ACTION_BLOOD_DAMAGE) switch iFlag case 0 SET_ASSET_STAGE(ASSETS_STAGE_SHOOTOUT) SET_CREATE_RANDOM_COPS(FALSE) clear_help_text() IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) CLEAR_PED_ALTERNATE_WALK_ANIM(ped[ped_buddy].id) ENDIF IF NOT HAS_CUTSCENE_LOADED() //incase cutscene was preivouisly loaded in the shit skip. REQUEST_CUTSCENE("Arm_2_mcs_4") ENDIf iFlag=1 BREAK CASE 1 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Franklin", PLAYER_PED_ID()) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR",INT_TO_ENUM(PED_COMPONENT,0), 0, 0) //(head) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,1), 0, 0) //(berd) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,2), 2, 0) //(hair) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,3), 2, 0) //(uppr) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,4), 3, 0) //(lowr) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,5), 0, 0) //(hand) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,6), 1, 0) //(feet) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,7), 0, 0) //(teef) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,8), 0, 0) //(accs) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,9), 0, 0) //(task) ENDIF IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE() //cprintln(debug_trevor3,"HAS_CUTSCENE_LOADED()") playMusic("ARM2_OPEN_DOOR",FALSE,"ARM2_FIGHT_START") iFlag=2 ENDIF BREAK case 2 IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE() // clear_area(<< -1074.6082, -1676.5455, 3.9465 >>,10.0,true) // CLEAR_AREA_OF_VEHICLES(<< -1074.6082, -1676.5455, 3.9465 >>,10.0) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) if not IS_PED_INJURED(ped[PED_BUDDY].id) // REGISTER_ENTITY_FOR_CUTSCENE(ped[PED_BUDDY].id,"CS_LamarDavis",CU_ANIMATE_EXISTING_SCRIPT_ENTITY) ENDIF // REGISTER_ENTITY_FOR_CUTSCENE(NULL,"Garageguy_gets_looted",CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY,model_salvas) // REGISTER_ENTITY_FOR_CUTSCENE(NULL,"Garageguy_middle",CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY,model_salvasb) IF NOT is_ped_injured(ped[PED_BUDDY].id) GIVE_WEAPON_TO_PED(ped[PED_BUDDY].id,WEAPONTYPE_MICROSMG ,2000,true) SET_CURRENT_PED_WEAPON(ped[PED_BUDDY].id, WEAPONTYPE_MICROSMG, TRUE) objWeapon = CREATE_WEAPON_OBJECT_FROM_CURRENT_PED_WEAPON_WITH_COMPONENTS(ped[PED_BUDDY].id) ENDIF REGISTER_ENTITY_FOR_CUTSCENE(null, "Franklins_weapon", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY,GET_WEAPONTYPE_MODEL(WEAPONTYPE_PISTOL)) REGISTER_ENTITY_FOR_CUTSCENE(objWeapon, "Lamars_weapon", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(NULL,"Mexgoon_1",CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY,G_M_Y_MEXGOON_01) REGISTER_ENTITY_FOR_CUTSCENE(ped[PED_BUDDY].id,"Lamar",CU_ANIMATE_EXISTING_SCRIPT_ENTITY) IF IS_AUDIO_SCENE_ACTIVE("ARM_2_SEARCH_FOR_BIKE") STOP_AUDIO_SCENE("ARM_2_SEARCH_FOR_BIKE") ENDIF START_CUTSCENE(CUTSCENE_DELAY_ENABLING_PLAYER_CONTROL_FOR_UP_TO_DATE_GAMEPLAY_CAMERA) storedWeapon = WEAPONTYPE_UNARMED GET_CURRENT_PED_WEAPON(player_ped_id(),storedWeapon) // SET_SEAMLESS_CUTS_ACTIVE(bTracker) //SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_UNARMED) IF DOES_BLIP_EXIST(garage_3_blip) remove_blip(garage_3_blip) ENDIF SET_PED_USING_ACTION_MODE(player_ped_id(),TRUE) REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST) iFlag=3 ENDIF BREAK case 3 FALLTHRU CASE 4 //special cutscene skip settings if NOT DOES_ENTITY_EXIST(dead_ped1) IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Mexgoon_1")) cprintln(debug_trevor3,"Picked up dead ped 1") dead_ped1 = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Mexgoon_1")) ENDIF ENDIF if NOT IS_PED_INJURED(ped[ped_buddy].id) IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Lamar") SET_CURRENT_PED_WEAPON(ped[PED_BUDDY].id,WEAPONTYPE_MICROSMG,TRUE) ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Lamars_weapon") IF DOES_ENTITY_EXIST(objWeapon) DELETE_OBJECT(objWeapon) ENDIF SET_CURRENT_PED_WEAPON(ped[PED_BUDDY].id,GET_BEST_PED_WEAPON(ped[PED_BUDDY].id)) ENDIF if NOT IS_PED_INJURED(dead_ped1) IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Mexgoon_1",G_M_Y_MEXGOON_01) // SET_PED_TO_RAGDOLL(dead_ped1, 1000, 3000, TASK_RELAX) SET_ENTITY_HEALTH(dead_ped1, 0) ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklins_weapon") PlacementFlags=0 pickup_gar1 = CREATE_PICKUP_ROTATE(PICKUP_WEAPON_PISTOL,<<-1075.7982, -1675.7168, 3.5903>>,<<-90,0,-15>>,0,145)//,PlacementFlags,145) IF NOT HAS_PED_GOT_LOADED_FIREARM(player_ped_id()) //only blip if player hs no weapon? pickup_gar1_blip = CREATE_BLIP_FOR_PICKUP(pickup_gar1) ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklin") TASK_FOLLOW_NAV_MESH_TO_COORD(player_ped_id(),<<-1077.5081, -1677.0575, 3.5752>>,pedmove_walk,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_NO_STOPPING) ENDIF ACTION(0,ACTION_LOCK_OPEN_GARAGE_3) IF NOT WAS_CUTSCENE_SKIPPED() IF IS_SCREEN_FADED_OUT() AND NOT IS_SCREEN_FADING_IN() DO_SCREEN_FADE_IN(500) cprintln(debug_trevor3,"Fade In") ENDIF ELSE iFlag=4 ENDIF IF CAN_SET_EXIT_STATE_FOR_CAMERA() SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) ENDIF IF HAS_CUTSCENE_FINISHED() cprintln(debug_trevor3,"b") REPLAY_STOP_EVENT() IF NOT IS_PED_INJURED(ped[ped_buddy].id) REMOVE_PED_FROM_GROUP(ped[ped_buddy].id) ENDIF SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) CLEAR_AREA_OF_VEHICLES(<<-1069.323120,-1668.117554,3.055831>> ,8.5) REMOVE_CUTSCENE() SET_CURRENT_PED_WEAPON(player_ped_id(),storedWeapon) //add weapon blips if player doesn't have a weapon // IF NOT HAS_PED_GOT_LOADED_FIREARM(player_ped_id()) ///why is this in? The gun will always be there from the cutscene? return true ENDIF BREAK ENDSWITCH return FALSE ENDFUNC FUNC bool stageStartShootout() bUpdateElsalCount = TRUE checkConditions(COND_START_SHOOTOUT,COND_END_SHOOTOUT) action(0,ACTION_SET_STAGE_STUFF) action(1,ACTION_MAKE_CAR_TYRE_BURST) action(2,ACTION_MAKE_LAMAR_INVINCIBLE) action(8,ACTION_FORCE_GARAGE) action(28,ACTION_LOCK_ON_TO_GAS,PLAYOUT_ON_TRIGGER,cIF,COND_DIA_SHOOT_GAS_CAN) action(29,ACTION_LOCK_ON_TO_GAS_TRAIL,PLAYOUT_ON_TRIGGER,cIF,COND_CAR_DRIVING_AWAY,cAND,COND_DIA_FINAL_WAVE,cAND,COND_FLEE_CAR_LAYING_PETROL) action(31,ACTION_MUSIC_SHOOTOUT) action(32,ACTION_UNFREEZE_FLEE_CAR_IF_ENTERED,PLAYOUT_ON_TRIGGER,cIF,COND_FLEE_CAR_DISRUPTED) action(33,ACT_STAT_PROPANE) ACTION(34,ACT_AUDIO_AT_RAYFIRE_END) //Lemar actions action(3,ACTION_LEMAR_EXITS_GARAGE) action_on_Action(7,ACTION_LEMAR_ADVANCES_TO_POST,3,ACTION_LEMAR_EXITS_GARAGE,cIF,COND_ELSAL_ON_LEFT_SPAWNED) action_on_action(10,ACTION_LEMAR_ADVANCES_TO_PORTALOO,7,ACTION_LEMAR_ADVANCES_TO_POST,cIF,COND_ELSAL_ON_LEFT_SPAWNED,cAND,COND_NO_ELSAL_ALIVE,cOR,COND_PLAYER_ADVANCES_PORTALOO) //,cAND,COND_NO_ELSAL_BY_PORTALOO) action(12,ACTION_LEMAR_REACTS_TO_GUNFIRE,PLAYOUT_ON_TRIGGER,cIF,COND_LEMAR_BEING_SHOT_AT_FROM_SCAFFOLD,cAND,COND_IS_LEMAR_IN_COVER_AT_PORTALOO) action(13,ACTION_LEMAR_DIVERTS_TO_BISON,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_BLOCKING_PORTALOO,cAND,COND_LEMAR_HEADING_FOR_PORTALOO) action(35,ACTION_LEMAR_REACTS_TO_EXPLOSION,PLAYOUT_ON_TRIGGER,cIF,COND_SCAFFOLD_BLOWN,cANDNOT,COND_FIRST_WAVE_DEAD) action(14,ACTION_LEMAR_ADVANCES_AFTER_PORTALOO,PLAYOUT_ON_TRIGGER,cIF,COND_FIRST_WAVE_DEAD) action(20,ACTION_LEMAR_MOVES_TO_COVER,PLAYOUT_ON_TRIGGER,cIF,COND_FIRST_WAVE_DEAD,cAND,COND_VERANDA_PED_DEAD) action(30,ACTION_LAMAR_SHOOTS_CAR,PLAYOUT_ON_TRIGGER,cIF,COND_CAR_DRIVING_AWAY,cANDNOT,COND_ALL_VAGOS_DEAD) ACTION(27,acTION_lemar_RUN_TOWARDS_GATE,PLAYOUT_ON_TRIGGER,cIF,COND_ALL_VAGOS_DEAD) //Enemy actions action(4,ACTION_ENEMY_BACKS_OFF) action(5,ACTION_ENEMY_BY_BISON) action(6,ACTION_ENEMY_FROM_LEFT,PLAYOUT_ON_TRIGGER,cIF,COND_LAMAR_REACTED,cAND,COND_ONE_ENEMY_LEFT,cOR,COND_PLAYER_ADVANCES_PORTALOO) action(9,ACTION_ENEMY_FROM_SKIP,PLAYOUT_ON_TRIGGER,cIF,COND_ELSAL_ON_LEFT_SPAWNED,cAND,COND_ONE_ENEMY_LEFT,cOR,COND_PLAYER_ADVANCES_PORTALOO) action(11,ACTION_ENEMY_FROM_SCAFFOLD,PLAYOUT_ON_TRIGGER,cIF,COND_ELSAL_ON_LEFT_SPAWNED,cAND,COND_NO_ELSAL_ALIVE,cOR,COND_PLAYER_ADVANCES_PORTALOO) action(15,ACTION_SCAFFOLD_PED_DROPS,PLAYOUT_ON_TRIGGER,cIF,COND_SCAFFOLD_PED_FALLS) action(16,ACTION_ENEMY_AFTER_SCAFFOLD,PLAYOUT_ON_TRIGGER,cIF,COND_FIRST_WAVE_DEAD,cOR,COND_PLAYER_PASSED_SKIP) action(17,ACTION_ENEMY_ON_VERANDA,PLAYOUT_ON_TRIGGER,cIF,COND_FIRST_WAVE_DEAD,cAND,COND_SECOND_WAVE_FIRST_PED_DEAD,cOR,COND_PLAYER_PASSED_SKIP) action(18,ACTION_ENEMY_ON_BALCONY,PLAYOUT_ON_TRIGGER,cIF,COND_FIRST_WAVE_DEAD,cAND,COND_VERANDA_PED_DEAD,cOR,COND_PLAYER_PASSED_SKIP) action(19,ACTION_ENEMY_FROM_DOOR,PLAYOUT_ON_TRIGGER,cIF,COND_FIRST_WAVE_DEAD,cAND,COND_ROOf_PED_DEAD,cOR,COND_PLAYER_PASSED_SKIP) action(21,ACTION_DRIVER_RUNS_TO_CAR,PLAYOUT_ON_TRIGGER,cIF,COND_FIRST_WAVE_DEAD,cOR,COND_PLAYER_PASSED_SKIP) action(22,ACTION_DRIVER_DRIVES_OFF,PLAYOUT_ON_TRIGGER,cIF,COND_FIRST_WAVE_DEAD,cAND,COND_DRIVER_CAN_DRIVE_CAR,cAND,COND_SECOND_WAVE_DEAD,cORbracket,COND_FINAL_WAVE_CAN_TRIGGER,cAND,COND_DRIVER_CAN_DRIVE_CAR) action(23,ACTION_FINAL_WAVE_SPAWNS,PLAYOUT_ON_TRIGGER,cIF,COND_FINAL_WAVE_CAN_TRIGGER) action(24,ACTION_FLEEING_CAR_DAMAGE,PLAYOUT_ON_TRIGGER,cIF,COND_CAR_DRIVING_AWAY) ACTION(25,ACTION_PETROL_TRAIL,PLAYOUT_ON_TRIGGER,cIF,COND_DRIVER_CAN_DRIVE_CAR) ACTION(26,ACTION_EXPLODE_CAR,PLAYOUT_ON_TRIGGER,cIF,COND_FIRE_UNDER_CAR) DIALOGUE(2,DIA_GET_GUN,cIFNot,COND_PLAYER_HAS_A_GUN) DIALOGUE(0,DIA_SHOOTOUT_START) DIALOGUE(1,DIA_LAMAR_REACTS,cIF,COND_HEARD_VAGOS,cAND,COND_PLAYER_HAS_A_GUN) DIALOGUE(3,DIA_PLAYER_STAYS_IN_GARAGE,cIF,COND_PLAYER_HAS_A_GUN,cANDNOT,COND_PLAYER_LEFT_GARAGE,cAND,COND_INSTRUCTIONS_GIVEN) DIALOGUE(4,DIA_ON_LEFT,cIF,COND_ELSAL_ON_LEFT_SPAWNED) //AR2_BU40 DIALOGUE(5,DIA_COMBAT_BANTER,cIF,COND_LAMAR_REACTED,cANDNOT,COND_BLOCK_TAUNTS,cANDNOT,COND_ALL_VAGOS_DEAD) DIALOGUE(6,DIA_LEMAR_SHOT_AT_HIT_GAS,cIF,COND_LAMAR_IS_REACTING_TO_GUNFIRE,cANDNOT,COND_SCAFFOLD_BLOWN,cANDNOT,COND_SCAFFOLD_PED_FALLS,cANDNOT,COND_GAS_COMMENT_MADE) DIALOGUE(7,DIA_LEMAR_SHOT_AT_NO_GAS,cIF,COND_SCAFFOLD_BLOWN,cANDNOT,COND_SCAFFOLD_PED_FALLS,cANDNOT,COND_GAS_COMMENT_MADE) DIALOGUE(8,DIA_TAKE_COVER_BEHIND_BISON,cIF,COND_ELSAL_ON_SCAFFOLD_SPAWNED,cANDNOT,COND_PLAYER_ADVANCES_PORTALOO,cANDNOT,COND_SCAFFOLD_BLOWN,cANDNOT,COND_FIRST_WAVE_DEAD) DIALOGUE(9,DIA_GAS_BLOWS_UP,cIF,COND_SCAFFOLD_BLOWN,cAND,COND_IS_LEMAR_IN_COVER_AT_PORTALOO) DIALOGUE(23,DIA_KEEP_GOING_PASSED_SKIP,cIF,COND_FIRST_WAVE_DEAD) DIALOGUE(10,DIA_SEE_MORE_ELSAL,cIF,COND_FIRST_WAVE_DEAD,cAND,COND_LEMAR_ADVANCED_TO_SKIP) DIALOGUE(11,DIA_ON_THE_VERANDA,cIF,COND_SECOND_WAVE_FIRST_PED_DEAD,cANDNOT,COND_VERANDA_PED_DEAD) DIALOGUE(12,DIA_UP_ON_BALCONY,cIF,COND_VERANDA_PED_DEAD,cANDNOT,COND_ROOf_PED_DEAD) DIALOGUE(13,DIA_COMING_OUT_DOOR,cIF,COND_ROOf_PED_DEAD,cANDNOT,COND_SECOND_WAVE_DEAD) DIALOGUE(14,DIA_CAR_DRIVING_OFF,cIF,COND_CAR_DRIVING_AWAY) DIALOGUE(15,DIA_FINAL_WAVE,cIF,COND_FINAL_WAVE_CAN_TRIGGER) DIALOGUE(16,DIA_SHOOT_GAS,cIF,COND_FLEE_CAR_LAYING_PETROL,cANDNOT,COND_ALL_VAGOS_DEAD) DIALOGUE(17,DIA_LETS_GET_OUT_OF_HERE,cIF,COND_ALL_VAGOS_DEAD,cANDNOT,COND_PLAYER_LEAVING_LAMAR_AT_END) DIALOGUE(18,DIA_EXPLODING_CAR_DEATHS,cIF,COND_EXPLODING_CAR_KILLED_SOMEONE) DIALOGUE(19,DIA_GET_SHOTGUN,cIF,COND_PLAYER_NEAR_SHOTGUN,cAND,COND_GAS_COMMENT_MADE) DIALOGUE(20,DIA_COME_BACK,cIF,COND_PLAYER_LEAVING_LAMAR,cANDNOT,COND_ALL_VAGOS_DEAD) DIALOGUE(21,DIA_COME_BACK,cIF,COND_PLAYER_LEAVING_LAMAR_AT_END,cAND,COND_ALL_VAGOS_DEAD,caNDNOT,COND_DIA_LETS_GO_PLAYED) DIALOGUE_ON_DIALOGUE(22,DIA_THERES_THE_BIKE,17,DIA_LETS_GET_OUT_OF_HERE) INSTRUCTIONS(0,INS_GET_GUN) INSTRUCTIONS(1,INS_ATTACK_ENEMY,cIF,COND_LAMAR_REACTED,cAND,COND_PLAYER_HAS_A_GUN) INSTRUCTIONS(2,INS_WEAPON_HELP,cIF,COND_PLAYER_HAS_A_GUN) INSTRUCTIONS(3,INS_COVER_HELP,cIF,COND_PLAYER_ARMED,cAND,COND_PLAYER_ENTERED_COVER) INSTRUCTIONS(4,INS_SHOOT_GAS,cIF,COND_FLEE_CAR_LAYING_PETROL) INSTRUCTIONS_ON_INSTRUCTION(5,INS_GET_IN_COVER_HELP,2,INS_WEAPON_HELP,cIFNOT,COND_PLAYER_ENTERED_COVER) INSTRUCTIONS(6,INS_GET_BACK_TO_LAMAR,cIFNOT,COND_DIA_LETS_GO_PLAYED) INSTRUCTIONS(7,INS_SELECT_BEST_WEAPON,cIF,COND_SHOTGUN_PICKED_UP) FAIL(FAIL_LEFT_LAMAR_BEHIND) FAIL(FAIL_LAMAR_DIED) /* IF IS_CONDITION_TRUE(COND_LEMAR_IN_END_LOCATION) AND IS_CONDITION_TRUE(COND_ALL_VAGOS_DEAD) IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() KILL_FACE_TO_FACE_CONVERSATION() ELSE RETURN TRUE ENDIF ENDIF*/ IF IS_ACTION_COMPLETE(27,acTION_lemar_RUN_TOWARDS_GATE) RETURN TRUE ENDIF //FAIL(FAIL_CAR_ALARM_GOES_OFF,cIF,COND_PLAYER_FAIL_CAR_ALARM) RETURN FALSE ENDFUNC func bool stageChaseAfterBike() checkConditions(COND_START_CHASE,COND_END_CHASE) REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2269568 action(0,ACTION_REMOVE_ALLEYWAY_ASSETS) action(1,ACTION_PREP_CHASE_STAGE) action(2,ACTION_DEAL_WITH_STUCK_BIKER) ACTION(3,ACTION_BIKER_FLEES) ACTION(4,ACTION_LEMAR_FOLLOW_PLAYER,PLAYOUT_ON_TRIGGER,cIF,COND_LAMAR_CAN_FOLLOW_PLAYER) ACTION(5,ACTION_BIKER_REACTS_TO_BEING_JACKED,PLAYOUT_ON_TRIGGER,cIF,COND_BIKER_JACKED) ACTION(6,ACTION_BIKER_REACTS_TO_COMING_OFF_BIKE,PLAYOUT_ON_TRIGGER,cIF,COND_BIKER_NOT_ON_BIKE,cANDNOT,COND_BIKER_JACKED) ACTION(7,ACTION_MUSIC_CHASE,PLAYOUT_ON_TRIGGER,cIFNOT,COND_BIKER_NOT_ON_BIKE) ACTION(8,ACTION_MUSIC_IN_CAR,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_VEHICLE,cANDNOT,COND_BIKER_NOT_ON_BIKE) ACTION(9,ACTION_MUSIC_BIKER_DOWN,PLAYOUT_ON_TRIGGER,cIF,COND_BIKER_NOT_ON_BIKE) ACTION(10,ACTION_ENSURE_LAMAR_CLIMBS_GATE,PLAYOUT_ON_COND,cIFNOT,COND_LEMAR_CLIMBED_OUT_OF_ALLEY) ACTION(11,ACTION_LAMAR_GETS_IN_PLAYER_CAR,PLAYOUT_ON_TRIGGER,cIF,COND_LEMAR_CLIMBED_OUT_OF_ALLEY,cANDNOT,COND_PLAYER_20M_FROM_LAMAR,cAND,COND_PLAYER_CAR_NEARBY_LEMAR) ACTION(12,ACTION_BIKER_REACTS_TO_PLAYER_CLOSING_IN,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_CLOSING_IN_ON_BIKER) ACTION(13,ACT_BUDDY_HEAD_TRACKING) ACTION(14,ACT_SET_PLAYER_THROUGH_DRIVER_DOOR) ACTION(15,ACTION_EXPLODE_CAR,PLAYOUT_ON_TRIGGER,cIF,COND_FIRE_UNDER_SHOOTOUTCAR) ACTION(16,ACT_STAT_BIKER_DOWN,PLAYOUT_ON_TRIGGER,cIF,COND_BIKER_NOT_ON_BIKE) ACTION(17,ACT_TRIGGER_GATE_MUSIC,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_BY_GATE_OR_NOT_IN_ALLEY) ACTION(18,ACT_MUSIC_HINT_CAM,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_VEHICLE) INSTRUCTIONS(0,INS_GET_THE_BIKE) INSTRUCTIONS(1,INS_GO_BACK_FOR_LAMAR) INSTRUCTIONS(2,INS_BIKE_HINT) INSTRUCTIONS(3,INS_MAP_HELP,cIF,COND_PLAYER_IN_VEHICLE) INSTRUCTIONS(4,INS_HEALTH_HELP,cIFNOT,COND_PLAYER_IN_VEHICLE) DIALOGUE(0,DIA_GET_THE_BIKE) DIALOGUE(1,DIA_SWITCH_TO_SUBTITLES) DIALOGUE(2,DIA_PLAYER_LEFT_CAR_IN_CHASE,cIF,COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_LEAVING_CAR,cAND,COND_CHASE_BANTER_STATUS_SAVED) DIALOGUE(3,DIA_PLAYER_RUNS_OFF,cIF,COND_LEMAR_WANTS_TO_COMMENT_ON_PLAYER_RUNNING_AWAY_FROM_CAR,cOR,COND_PLAYER_IN_A_DIFFERENT_CAR_TO_LEMAR,cAND,COND_CHASE_BANTER_STATUS_SAVED) DIALOGUE(4,DIA_PLAYER_GETS_BACK_IN_CAR_IN_CHASE,cIF,COND_LEMAR_WANT_TO_COMMENT_ON_PLAYER_GETTING_BACK_IN_CAR,cAND,COND_CHASE_BANTER_STATUS_SAVED) DIALOGUE(5,DIA_CHASE_BIKE_BANTER,cIF,COND_PLAYER_AND_LEMAR_IN_SAME_CAR,cANDNOT,COND_WANTED_LEVEL) DIALOGUE(6,DIA_BIKER_SHOUTS_AT_PLAYER) DIALOGUE(7,DIA_PLAYER_NOT_GOT_IN_CAR_AT_CHASE_START,cIF,COND_PLAYER_NOT_ENTERED_CAR_FOR_A_WHILE) FAIL(FAIL_LOST_THE_BIKER) FAIL(FAIL_LEFT_LAMAR_BEHIND) FAIL(FAIL_LAMAR_DIED) IF IS_CONDITION_TRUE(COND_BIKER_NOT_ON_BIKE) SET_ASSET_STAGE(ASSETS_STAGE_RETURN_BIKE) KILL_CHASE_HINT_CAM(localChaseHintCamStruct) return true ENDIF return FALSE ENDFUNC FUNC bool stageTakeBikeBacktoLockup() checkConditions(COND_START_ON_BIKE,COND_END_ON_BIKE) SET_ALL_RANDOM_PEDS_FLEE_THIS_FRAME(player_id()) //to stop Lamar ending up in a gun fight. INSTRUCTIONS(0,ins_do_wheelie,cIF,COND_PLAYER_ON_BIKE) INSTRUCTIONS(1,ins_drive_home,cIF,COND_PLAYER_ON_BIKE) instructions(2,ins_get_on_the_bike,cIFNOT,COND_PLAYER_ON_BIKE) action(0,ACT_SET_LAMAR_FOR_STAGE) action(1,ACT_LAMAR_GETS_IN_DRIVER_SEAT,PLAYOUT_ON_COND,cIF,COND_LAMAR_PASSENGER_WITHOUT_PLAYER,cANDNOT,COND_LAMAR_WARPED_BACK,cAND,COND_LAMAR_HAS_NO_TASKS) action(2,ACT_LAMAR_HEADS_BACK_HOME,PLAYOUT_ON_TRIGGER,cIF,COND_LAMAR_IN_CAR_AS_DRIVER,cANDNOT,COND_LAMAR_WARPED_BACK)//,PLAYOUT_ON_COND,cIF,COND_LAMAR_HAS_NO_TASKS,cANDNOT,COND_LAMAR_IN_A_CAR) action(3,ACT_LAMAR_GETS_IN_ANY_CAR,PLAYOUT_ON_COND,cIFNOT,COND_LAMAR_IN_A_CAR,cAND,COND_LAMAR_HAS_NO_TASKS,cANDNOT,COND_LAMAR_WARPED_BACK) action(14,ACT_STOP_LAMAR_IF_IN_COMBAT_OR_NEARER_CAR) action(4,ACT_LAMAR_EXITS_UNDRIVEABLE_CAR,PLAYOUT_ON_COND,cIF,COND_LAMAR_IN_A_CAR,cAND,COND_LAMAR_IN_UNDRIVEABLE_CAR,cANDNOT,COND_LAMAR_WARPED_BACK) action(7,ACT_WARP_LAMAR_BACK,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_100M_FROM_LAMAR) action(6,ACT_LOAD_CUTSENE) action(8,ACT_STAT_BIKE_DAMAGE,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_ON_BIKE) action(9,ACT_CUTSCENE_LEAD_IN,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_AT_DESTINATION) action(10,ACT_DO_HINT_CAM,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_AT_DESTINATION) action(5,ACT_STUCK_BIKE_CHECK) action(11,ACTION_REMOVE_ALLEYWAY_ASSETS) action(12,ACT_LAMAR_LOOKS_AT_PLAYER_APPROACH,PLAYOUT_ON_COND,cIF,COND_PLAYER_NEAR_LAMAR_AT_CARWASH) action(13,ACT_RESET_WANTED_LEVELS,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_ON_BIKE) action(15,ACT_UPDATE_PROP_EMPLOYEE) DIALOGUE(0,DIA_AFTER_BIKER_DOWN) DIALOGUE_ON_DIALOGUE(1,DIA_BYE,0,DIA_AFTER_BIKER_DOWN,cIF,COND_LAMAR_IN_CAR_AS_DRIVER,cOR,COND_LAMAR_10M_FROM_PLAYER) DIALOGUE_ON_DIALOGUE(2,DIA_GETTING_A_CAR,0,DIA_AFTER_BIKER_DOWN,cIF,COND_LAMAR_GOING_FOR_EMPTY_CAR) DIALOGUE(3,DIA_PLAYER_AT_CARWASH_WITHOUT_BIKE,cIF,COND_PLAYER_NEAR_LAMAR_AT_CARWASH,cANDNOT,COND_PLAYER_STILL_ON_BIKE,cANDNOT,COND_BIKE_FAR_FROM_LAMAR) DIALOGUE(4,DIA_PLAYER_AT_CARWASH_WITHOUT_BIKE_FAR,cIF,COND_PLAYER_NEAR_LAMAR_AT_CARWASH,cAND,COND_BIKE_FAR_FROM_LAMAR) FAIL(FAIL_LEFT_BIKE_BEHIND) FAIL(FAIL_LAMAR_DIED) #if IS_DEBUG_BUILD IF bLoopFocus IF IS_ACTION_COMPLETE(9,ACT_CUTSCENE_LEAD_IN) FORCE_ACTION_STATE(9,ACT_CUTSCENE_LEAD_IN,false,false) SET_ACTION_FLAG(9,ACT_CUTSCENE_LEAD_IN,0) FORCE_ACTION_STATE(10,ACT_DO_HINT_CAM,false,false) STOP_GAMEPLAY_HINT(TRUE) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-5) CLEAR_PED_TASKS_IMMEDIATELY(player_ped_id()) IF IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) SET_PED_INTO_VEHICLE(player_ped_id(),vehicle[VEH_OBJECTIVE].id) ENDIF ENDIF ELSE #endif IF IS_ACTION_COMPLETE(9,ACT_CUTSCENE_LEAD_IN) RETURN TRUE ENDIF #if is_Debug_build ENDIF #endif return FALSE ENDFUNC func bool stageFinalCutscene() SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.2) SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0.2) if WAS_CUTSCENE_SKIPPED() SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_UNARMED) iFlag=3 ENDIF switch iFlag case 0 nextCutscene = "Armenian_2_mcs_6" clear_help_text() REQUEST_CUTSCENE(nextCutscene) iFlag=1 BREAK case 1 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Franklin", PLAYER_PED_ID()) IF NOT IS_PED_INJURED(ped[PED_BUDDY].id) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR",INT_TO_ENUM(PED_COMPONENT,0), 0, 0) //(head) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,1), 0, 0) //(berd) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,2), 2, 0) //(hair) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,3), 2, 0) //(uppr) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,4), 3, 0) //(lowr) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,5), 0, 0) //(hand) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,7), 0, 0) //(teef) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,8), 0, 0) //(accs) SET_CUTSCENE_PED_COMPONENT_VARIATION("LAMAR", INT_TO_ENUM(PED_COMPONENT,9), 0, 0) //(task) ENDIF ENDIF IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE() SET_ASSET_STAGE(ASSETS_STAGE_GAME_OVER) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) //this was commented out and // SET_ENTITY_COORDS(PLAYER_PED_ID(),GET_ENTITY_COORDS(PLAYER_PED_ID())+<<0,0,1>>) if IS_VEHICLE_DRIVEABLE(vehicle[VEH_OBJECTIVE].id) SET_ENTITY_INVINCIBLE(vehicle[VEH_OBJECTIVE].id,TRUE) REGISTER_ENTITY_FOR_CUTSCENE(vehicle[VEH_OBJECTIVE].id,"Armenian_bike",CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY,BAGGER) ENDIF IF DOES_ENTITY_EXIST(ped[ped_buddy].id) IF NOT IS_PED_INJURED(ped[ped_buddy].id) REGISTER_ENTITY_FOR_CUTSCENE(ped[ped_buddy].id,"Lamar",CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY,IG_LAMARDAVIS,CEO_PRESERVE_BODY_BLOOD_DAMAGE|CEO_PRESERVE_FACE_BLOOD_DAMAGE) ENDIF ENDIF IF DOES_ENTITY_EXIST(model_phone) DELETE_OBJECT(model_phone) ENDIF // IF DOES_ENTITY_EXIST(vehicle[VEH_PLAYER].id) // DELETE_VEHICLE(vehicle[VEH_PLAYER].id) // ENDIF IF IS_AUDIO_SCENE_ACTIVE("ARM_2_RIDE_BIKE_BACK") STOP_AUDIO_SCENE("ARM_2_RIDE_BIKE_BACK") ENDIF START_CUTSCENE() REMOVE_SCENARIO_BLOCKING_AREAS() ADD_SCENARIO_BLOCKING_AREA(<< -21.8129, -1454.3429, 20.7942 >>,<< -17.8129, -1450.3429, 40.7942 >>) SET_PED_PATHS_IN_AREA(<< -21.8129, -1454.3429, 20.7942 >>,<< -17.8129, -1450.3429, 40.7942 >>,FALSE) SET_SCENARIO_PEDS_SPAWN_IN_SPHERE_AREA(<< -12.5851, -1471.3190, 30.9463 >>,6.0,1) REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST) iFlag=2 ENDIF BREAK case 2 if IS_CUTSCENE_ACTIVE() cprintln(debug_trevor3,"A") IF IS_VEHICLE_DRIVEABLE(vehicle[veh_player].id) cprintln(debug_trevor3,"B") RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<-9.370698,-1402.745361,26.931702>>, <<-9.507262,-1386.303345,32.583607>>, 270.3900,<<-17.2307, -1412.0204, 28.3117>>,0,<<6,20,10>>) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(vehicle[veh_player].id,<<-5.3,-1396,29>>) < 7.0 cprintln(debug_trevor3,"C") CLEAR_AREA(<<-17.3470, -1401.3712, 28.3343>>,3.0,true) SET_ENTITY_COORDS(vehicle[veh_player].id,<<-17.3470, -1401.3712, 28.3343>>) SET_ENTITY_HEADING(vehicle[veh_player].id,270) ENDIF ENDIF CLEAR_AREA(<<-5.3,-1396,29>>,5.0,true) IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(500) ENDIF STOP_GAMEPLAY_HINT(TRUE) SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_UNARMED) /* IF IS_VEHICLE_DRIVEABLE(vehicle[veh_player].id) IF IS_VEHICLE_A_PLAYER_PERSONAL_VEHICLE(vehicle[veh_player].id) AND GET_ENTITY_MODEL(vehicle[veh_player].id) = GET_PLAYER_VEH_MODEL(CHAR_FRANKLIN,VEHICLE_TYPE_CAR) SET_ENTITY_COORDS(vehicle[veh_player].id,<<-25.3513, -1442.2336, 29.6552>>) SET_ENTITY_HEADING(vehicle[veh_player].id,180) SET_VEHICLE_GEN_VEHICLE(VEHGEN_FRANKLIN_SAVEHOUSE_CAR, vehicle[veh_player].id) ELSE SET_ENTITY_AS_MISSION_ENTITY(vehicle[veh_player].id) CLEAR_AREA_OF_VEHICLES(<<-18.0107, -1467.4829, 29.4965>>,5.0) SET_ENTITY_COORDS(vehicle[veh_player].id,<<-18.0107, -1467.4829, 29.4965>>) SET_ENTITY_HEADING(vehicle[veh_player].id,274.8903) ENDIF endif*/ CLEAR_AREA_OF_PROJECTILES(<< -17.0167, -1456.2312, 29.6774 >>,40.0) CLEAR_AREA_OF_VEHICLES(<< -17.0167, -1456.2312, 29.6774 >>,40.0) CLEAR_AREA_OF_PEDS(<< -17.0167, -1456.2312, 29.6774 >>,8.0) IF NOT IS_PED_INJURED(player_ped_id()) SET_PED_USING_ACTION_MODE(player_ped_id(),FALSE) ENDIF //removed due to bug 1537146 //RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<-2.620358,-1393.815430,27.137239>>, <<-12.617375,-1415.872681,31.440741>>, 10.000000,<<-14.5147, -1391.3651, 28.3839>>, 351.7235,<<4,12,10>>) iFlag=3 ENDIF break case 3 IF IS_SCREEN_FADED_OUT() cprintln(debug_trevor3,"CUT HIT") SET_PLAYER_CONTROL(player_id(),true) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) ENDIF IF HAS_CUTSCENE_FINISHED() SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) //REMOVE_CUTSCENE() REPLAY_STOP_EVENT() RETURN TRUE ENDIF break ENDSWITCH /* if IS_CUTSCENE_SKIP_BUTTON_JUST_PRESSED() and ARE_CAM_PANS_PLAYING() if iCuttime > 2000 CHECK_MISSION_SKIP(TRUE) ENDIF ENDIF */ return FALSE ENDFUNC PROC advanceStage(enumMissionStage skiptoStage=stage_null) int i IF missionProgress >= STAGE_ADVANCE_DOWN_ALLEYWAY AND missionProgress < STAGE_DRUG_GARAGE skiptoStage = STAGE_DRUG_GARAGE ELSE IF missionProgress >= STAGE_START_SHOOTOUT AND missionProgress <= STAGE_COVER_BY_SKIP skiptoStage = STAGE_CHASE_AFTER_BIKE ELSE i = ENUM_TO_INT(missionProgress) i++ ENDIF ENDIF IF skiptoStage = stage_null missionProgress = INT_TO_ENUM(enumMissionStage,i) ELSE missionProgress = skiptoStage ENDIF RESET_CONDITIONS() RESET_ACTIONS() RESET_INSTRUCTIONS() RESET_DIALOGUE() iFlag = 0 ENDPROC PROC missionFlow() #IF IS_DEBUG_BUILD debug_keys() #ENDIF SWITCH missionProgress /* case STAGE_STARTUP if stage_changeTime() advanceStage() endif BREAK */ CASE STAGE_MEET_lamar if stageMeetlamar() advanceStage() ENDIF break case STAGE_DRIVE_TO_ALLEYWAY if stageDriveToAlleyway() advanceStage() ENDIF BREAK CASE STAGE_ADVANCE_DOWN_ALLEYWAY if stageAdvanceDownAlleyway() advanceStage() ENDIF BREAK CASE STAGE_BEAT_UP_DRUNK if stageAdvanceDownAlleyway() advanceStage() ENDIF BREAK CASE STAGE_VEHICLE_DRIVE_OFF if stageAdvanceDownAlleyway() advanceStage() ENDIF BREAK CASE STAGE_OPEN_GARAGES if stageAdvanceDownAlleyway() advanceStage() ENDIF BREAK CASE STAGE_DRUG_GARAGE if stageDrugGarage() advanceStage() ENDIF BREAK CASE STAGE_START_SHOOTOUT if stageStartShootout() advanceStage() ENDIF BREAK CASE STAGE_COVER_BY_SKIP if stageStartShootout() advanceStage() ENDIF BREAK CASE STAGE_CHASE_AFTER_BIKE if stageChaseAfterBike() advanceStage() ENDIF BREAK CASE STAGE_TAKE_BIKE_BACK_TO_LOCKUP if stageTakeBikeBackToLockup() advanceStage() ENDIF BREAK CASE STAGE_FINAL_CUTSCENE if stageFinalCutscene() advanceStage() ENDIF BREAK CASE STAGE_GAME_OVER Mission_Passed() BREAK ENDSWITCH //debugMessage(DEBUG_FUNC_CALLS,"Armenian 2: controlCameras()") //controlCameras() #IF IS_DEBUG_BUILD //debugMessage(DEBUG_FUNC_CALLS,"Armenian 2: controlBezier(aBezier)") //debugMessage(DEBUG_FUNC_CALLS,"Armenian 2: debug()") debug() #ENDIF ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT,FALSE) ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT,FALSE) //control_conversations() control_lights() // CUTSCENE_DIRECTOR(#IF IS_DEBUG_BUILD arm2_widget#endif) control_events() ENDPROC // =========================================================================================================== // Script Loop // =========================================================================================================== #if IS_DEBUG_BUILD proc SHOW_DEBUG_SCRIPT_DATA() int iR IF bScreenConditions SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(TRUE) bscreenDialogue = FALSE SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(255,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.4,0.05,"STRING","Returns") REPEAT COUNT_OF(conditions) iR IF conditions[iR].active PRINT_CONDITION_DATA(iR) ENDIF ENDREPEAT ENDIF IF bscreenDialogue SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(TRUE) SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(255,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.42,0.05,"STRING","Complete") SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(255,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.47,0.05,"STRING","started") REPEAT COUNT_OF(dia) iR PRINT_DIALOGUE_DATA(iR) ENDREPEAT ENDIF IF bscreenInstructions SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(TRUE) SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(255,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.4,0.05,"STRING","Complete") REPEAT COUNT_OF(instr) iR PRINT_INSTRUCTION_DATA(iR) ENDREPEAT ENDIF IF bScreenActionsA SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(TRUE) SET_TEXT_SCALE(0.3,0.3) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.43,0.05,"STRING","Ongoing") SET_TEXT_SCALE(0.3,0.3) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.5,0.05,"STRING","Complete") SET_TEXT_SCALE(0.3,0.3) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.57,0.05,"STRING","Flag") SET_TEXT_SCALE(0.3,0.3) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.62,0.05,"STRING","IntA") FOR iR = 0 to 22 IF actions[iR].active PRINT_ACTION_DATA(iR) ENDIF ENDFOR ENDIF IF bScreenActionsB SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(TRUE) SET_TEXT_SCALE(0.3,0.3) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.43,0.05,"STRING","Ongoing") SET_TEXT_SCALE(0.3,0.3) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.5,0.05,"STRING","Complete") SET_TEXT_SCALE(0.3,0.3) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.57,0.05,"STRING","Flag") SET_TEXT_SCALE(0.3,0.3) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.62,0.05,"STRING","IntA") FOR iR = 23 to COUNT_OF(actions)-1 IF actions[iR].active PRINT_ACTION_DATA(iR,TRUE) ENDIF ENDFOR ENDIF IF bShowAssets SET_TEXT_SCALE(0.3,0.3) SET_TEXT_CENTRE(FALSE) IF bAssetChageInProgress SET_TEXT_COLOUR(0,255,0,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.05,0.05,"STRING","Asset change in progress") ELSE SET_TEXT_COLOUR(255,0,0,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.05,0.05,"STRING","No assets loading") ENDIF SET_TEXT_SCALE(0.3,0.3) SET_TEXT_CENTRE(FALSE) IF anAssetIsLoading SET_TEXT_COLOUR(0,255,0,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.2,0.05,"STRING","An asset is loading") ELSE SET_TEXT_COLOUR(255,0,0,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.2,0.05,"STRING","No assets loading") ENDIF REPEAT COUNT_OF(assets) iR PRINT_ASSET_DATA(iR) ENDREPEAT ENDIF endproc #endif proc INIT_DEBUG_WIDGET #IF IS_DEBUG_BUILD if not DOES_WIDGET_GROUP_EXIST(arm2_widget) arm2_widget = START_WIDGET_GROUP("ARMENIAN 2") //ADD_WIDGET_FLOAT_SLIDER("Test Heading",testHeading,0,360.0,0.01) ADD_WIDGET_BOOL("Gate state",bGateState) ADD_WIDGET_BOOL("Show asset status",bShowAssets) ADD_WIDGET_BOOL("Show Conditions",bScreenConditions) ADD_WIDGET_BOOL("Show Actions 0-12",bScreenActionsA) ADD_WIDGET_BOOL("Show Actions 12+",bScreenActionsB) ADD_WIDGET_BOOL("Show Dialogue",bscreenDialogue) ADD_WIDGET_BOOL("Show Instructions",bScreenInstructions) ADD_WIDGET_INT_READ_ONLY("Mission Progress",iProgress) ADD_WIDGET_INT_READ_ONLY("iFlag",iFlag) //ADD_WIDGET_INT_READ_ONLY("missionProgress",missionProgress) //ADD_WIDGET_INT_READ_ONLY("iJumpFlag",iJumpFlag) ADD_WIDGET_BOOL("Show Actions",bShowActions) ADD_WIDGET_BOOL("Loop Focus Cam",bLoopFocus) ADD_WIDGET_FLOAT_SLIDER("biker Noise Time",bikerNoiseTime,0,1.0,0.01) STOP_WIDGET_GROUP() SET_LOCATES_HEADER_WIDGET_GROUP(arm2_widget) ENDIF #ENDIF ENDPROC PROC INIT_ASSETS() #IF IS_DEBUG_BUILD INIT_DEBUG_WIDGET() #ENDIF INIT_REL_GROUPS() sVehicleRecordingLibrary = "ARM2" convBlock = "AR2AUD" model_tramp = U_M_O_Tramp_01 model_salvas = G_M_Y_MexGoon_01 model_salvasB = G_M_Y_MEXGOON_03 model_lamar = IG_LAMARDAVIS ped[ped_franklin].id = PLAYER_PED_ID() PREP_ASSET(ASSET_SIMEON,ASSETS_STAGE_STARTUP,ASSETS_STAGE_LOAD_ALLEY) PREP_ASSET(ASSET_MODEL_LAMAR,ASSETS_STAGE_STARTUP,ASSETS_STAGE_GAME_OVER) PREP_ASSET(ASSET_MODEL_SALVAS,ASSETS_STAGE_LOAD_ALLEY,ASSETS_STAGE_RETURN_BIKE) PREP_ASSET(ASSET_WEAPONS,ASSETS_STAGE_LOAD_ALLEY,ASSETS_STAGE_ALLEY_ENDS) PREP_ASSET(ASSET_BUM,ASSETS_STAGE_DRUNK_RUNS_OUT,ASSETS_STAGE_CAR_DRIVES_OFF) PREP_ASSET(ASSET_MODEL_BIKE,ASSETS_STAGE_CHASE_BIKE,ASSETS_STAGE_FINAL_CUTSCENE) PREP_ASSET(ASSET_MISSION_ANIMS,ASSETS_STAGE_STARTUP,ASSETS_STAGE_GAME_OVER) PREP_ASSET(ASSET_BIKE_ARRIVE_ANIMS,ASSETS_STAGE_CHASE_BIKE,ASSETS_STAGE_ALLEY_ENDS) PREP_ASSET(ASSET_TWO_BISONS,ASSETS_STAGE_LOAD_ALLEY,ASSETS_STAGE_RETURN_BIKE) PREP_ASSET(ASSET_FLEE_CAR,ASSETS_STAGE_LOAD_ALLEY,ASSETS_STAGE_ALLEY_ENDS) PREP_ASSET(ASSET_REC_DRIVE_AWAY_CAR,ASSETS_STAGE_LOAD_ALLEY,ASSETS_STAGE_SHOOTOUT) PREP_ASSET(ASSET_REC_FLEE_CAR,ASSETS_STAGE_SHOOTOUT,ASSETS_STAGE_ALLEY_ENDS) PREP_ASSET(ASSET_WAYPOINT_FROM_DOOR,ASSETS_STAGE_SHOOTOUT,ASSETS_STAGE_ALLEY_ENDS) PREP_ASSET(ASSET_MODEL_GASDUMMY,ASSETS_STAGE_LOAD_ALLEY,ASSETS_STAGE_ALLEY_ENDS) PREP_ASSET(ASSET_WAYPOINT_FROM_BUM,ASSETS_STAGE_LOAD_ALLEY,ASSETS_STAGE_SHOOTOUT) PREP_ASSET(ASSET_WAYPOINT_LAMAR_RUNS_OUT_ALLEYWAY,ASSETS_STAGE_SHOOTOUT,ASSETS_STAGE_ALLEY_ENDS) PREP_ASSET(ASSET_ANIM_IDLES,ASSETS_STAGE_STARTUP,ASSETS_STAGE_SHOOTOUT) // PREP_ASSET(ASSET_PTFX,ASSETS_STAGE_SHOOTOUT,ASSETS_STAGE_ALLEY_ENDS) PREP_ASSET(ASSET_AUDIO_BANKS,ASSETS_STAGE_CAR_DRIVES_OFF,ASSETS_STAGE_ALLEY_ENDS) PREP_ASSET(ASSET_BULLET_DODGE,ASSETS_STAGE_SHOOTOUT,ASSETS_STAGE_ALLEY_ENDS) PREP_ASSET(ASSET_FRONT_GATES,ASSETS_STAGE_LOAD_ALLEY,ASSETS_STAGE_SHOOTOUT) //ADD_AUDIO_ASSET(STAGE_ADVANCE_DOWN_ALLEYWAY,STAGE_BIKE_ARRIVE_CUTSCENE,"ARM_2_REPO_01") //ADD_AUDIO_ASSET(STAGE_ADVANCE_DOWN_ALLEYWAY,STAGE_BIKE_ARRIVE_CUTSCENE,"ARM_2_GAS_EXPLOSION") #IF IS_DEBUG_BUILD SkipMenuStruct[0].sTxtLabel = "Meet Lemar (Armenian_2_int)" // Stage 0 Name SkipMenuStruct[1].sTxtLabel = "Drive to alley" // Stage 1 Name SkipMenuStruct[2].sTxtLabel = "Arrive at alley" // Stage 2 Name SkipMenuStruct[3].sTxtLabel = "Beat up drunk" // Stage 3 Name SkipMenuStruct[4].sTxtLabel = "Vehicle drives by" // Stage 4 Name SkipMenuStruct[5].sTxtLabel = "Open garages" // Stage 5 Name SkipMenuStruct[6].sTxtLabel = "Open dog fight garage (Arm_2_mcs_4)" // Stage 5 Name SkipMenuStruct[7].sTxtLabel = "Shootout starts" SkipMenuStruct[8].sTxtLabel = "Take cover behind skip" SkipMenuStruct[9].sTxtLabel = "Chase bike" SkipMenuStruct[10].sTxtLabel = "Take bike back to lockup" SkipMenuStruct[11].sTxtLabel = "Final Cutscene (Armenian_2_mcs_6)" SkipMenuStruct[12].sTxtLabel = "Mission Passed" #ENDIF //add_event(events_check_for_dealership_rampage,STAGE_GAME_OVER,true) SET_PED_ALLOW_HURT_COMBAT_FOR_ALL_MISSION_PEDS(FALSE) ENDPROC int iStoredLastReplay PROC SET_REPLAY_STAGE() switch iStoredLastReplay case 0 IF missionProgress >= STAGE_ADVANCE_DOWN_ALLEYWAY SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1,"Follow Lemar down the alley") iStoredLastReplay++ //cprintln(debug_Trevor3,"set replay stage: ",1) ENDIF BREAK CASE 1 IF missionProgress >= STAGE_START_SHOOTOUT SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(2,"Alleyway shootout") iStoredLastReplay++ //cprintln(debug_Trevor3,"set replay stage: ",2) ENDIF BREAK CASE 2 IF missionProgress >= STAGE_CHASE_AFTER_BIKE SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(3,"Chase bike",TRUE) iStoredLastReplay++ //cprintln(debug_Trevor3,"set replay stage: ",3) ENDIF BREAK ENDSWITCH ENDPROC /* proc testHelpCol() bool update if IS_BUTTON_JUST_PRESSED(PAD1,DPADLEFT) helpcol-- update = true ENDIF if IS_BUTTON_JUST_PRESSED(PAD1,DPADRIGHT) helpcol++ update = true ENDIF if helpcol < 0 helpcol = 58 ENDIF if helpcol > 58 helpcol = 0 ENDIF showIntOnScreen(0.1,0.1,helpcol) if update set_help_text_3D("ARM2_INS05",<< -1129.5245, -1588.6405, 5.7865 >>,HELP_TEXT_SOUTH) ENDIF ENDPROC */ proc updateAIBlips() int i IF missionProgress >= STAGE_DRIVE_TO_ALLEYWAY AND missionProgress <= STAGE_COVER_BY_SKIP REPEAt count_of(ped) i IF DOES_ENTITY_EXIST(ped[i].id) IF GET_PED_RELATIONSHIP_GROUP_HASH(ped[i].id) = HASH_FOE_GROUP IF IS_PED_INJURED(ped[i].id) IF NOT ped[i].registeredKilled ped[i].registeredKilled = TRUE INFORM_MISSION_STATS_OF_INCREMENT(ARM2_KILLS) ENDIF ENDIF IF missionProgress < STAGE_START_SHOOTOUT UPDATE_AI_PED_BLIP(ped[i].id, ped[i].aiBlip,-1,null,TRUE) ELSE UPDATE_AI_PED_BLIP(ped[i].id, ped[i].aiBlip) ENDIF ENDIF ENDIF endrepeat ENDIF endproc SCRIPT //08462538023 001236 SET_MISSION_FLAG(TRUE) CPRINTLN(debug_Trevor3,"LAUNCH ARMENIAN 2 TEST") PRINTLN("Armenian 2. Launch Test 3") //SET_PLAYER_CONTROL(player_id(),FALSE) //SET_PROFILING_OF_THIS_SCRIPT(TRUE) IF HAS_FORCE_CLEANUP_OCCURRED() // REQUEST_SCRIPT("buddyDeathResponse.sc") // WHILE NOT HAS_SCRIPT_LOADED("buddyDeathResponse.sc") // safewait() // REQUEST_SCRIPT("buddyDeathResponse.sc") // ENDWHILE // START_NEW_SCRIPT("buddyDeathResponse.sc", DEFAULT_STACK_SIZE) Mission_Flow_Mission_Force_Cleanup() Mission_Cleanup(CLEANUP_FAIL_DEATH) ENDIF //INFORM_MISSION_STATS_OF_MISSION_START_ARMENIAN_TWO() //iReturnStage = iReturnStage //SET_WEATHER_TYPE_NOW_PERSIST("EXTRASUNNY") SET_WEATHER_TYPE_OVERTIME_PERSIST("EXTRASUNNY",45) missionProgress = STAGE_MEET_lamar INIT_ASSETS() //IF IS_SHITSKIP_MESSAGE_PRIMED() //AKNOWLEDGE_SHITSKIP_PRIMED() //QUERY_SHITSKIP_RESOLUTION_STATE setupMission() bool bDoNotFadeIn If Is_Replay_In_Progress() // Your mission is being replayed INT myStage = Get_Replay_Mid_Mission_Stage() WHILE NOT HAS_ADDITIONAL_TEXT_LOADED(MISSION_TEXT_SLOT) WAIT(0) ENDWHILE //cprintln(debug_Trevor3,"stage: ",myStage) IF g_bShitskipAccepted = TRUE myStage++ ENDIF SWITCH myStage case 0 //skip to start location #if IS_DEBUG_BUILD iReturnStage = enum_to_int(STAGE_DRIVE_TO_ALLEYWAY) #endif missionProgress = STAGE_DRIVE_TO_ALLEYWAY CHECK_MISSION_SKIP(TRUE,TRUE) BREAK case 1 //slip to walk down alleyway #if IS_DEBUG_BUILD iReturnStage = enum_to_int(STAGE_ADVANCE_DOWN_ALLEYWAY) #endif missionProgress = STAGE_ADVANCE_DOWN_ALLEYWAY CHECK_MISSION_SKIP(TRUE,TRUE) BREAK case 2 #if IS_DEBUG_BUILD iReturnStage = enum_to_int(STAGE_START_SHOOTOUT) #endif IF g_bShitskipAccepted bDoNotFadeIn = TRUE missionProgress = STAGE_DRUG_GARAGE ELSE missionProgress = STAGE_START_SHOOTOUT ENDIF CHECK_MISSION_SKIP(TRUE,TRUE) BREAK case 3 missionProgress = STAGE_CHASE_AFTER_BIKE CHECK_MISSION_SKIP(TRUE,TRUE) BREAK case 4 IF g_bShitskipAccepted bDoNotFadeIn = TRUE ENDIF missionProgress = STAGE_FINAL_CUTSCENE CHECK_MISSION_SKIP(TRUE,TRUE) BREAK ENDSWITCH ELIF IS_REPEAT_PLAY_ACTIVE() WHILE NOT HAS_ADDITIONAL_TEXT_LOADED(MISSION_TEXT_SLOT) WAIT(0) ENDWHILE missionProgress = STAGE_MEET_lamar CHECK_MISSION_SKIP(TRUE,FALSE,TRUE) bDoNotFadeIn = TRUE ELSE SET_ASSET_STAGE(ASSETS_STAGE_STARTUP) ENDIF IF NOT bDoNotFadeIn //IF NOT IS_REPEAT_PLAY_ACTIVE() //1420435 - script was played through repeat play so not fading in due to this line IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(500) ENDIF //ENDIF ENDIF WHILE (TRUE) SET_ALL_RANDOM_PEDS_FLEE_THIS_FRAME(player_id()) //to stop Lamar ending up in a gun fight. #IF IS_DEBUG_BUILD //debugMessage(DEBUG_FUNC_CALLS,"Armenian 2: boltDebug(arm2_widget)") boltDebug(arm2_widget) SHOW_DEBUG_SCRIPT_DATA() #ENDIF //Check if the player has used first-person mode yet. IF NOT GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_PLAYER_HAS_USED_FP_VIEW) IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_IN_VEHICLE) = CAM_VIEW_MODE_FIRST_PERSON OR GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = CAM_VIEW_MODE_FIRST_PERSON SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_PLAYER_HAS_USED_FP_VIEW, TRUE) ENDIF ENDIF HANDLE_ASSETS() updateAIBLips() missionFlow() SET_REPLAY_STAGE() trackCombatPeds() Help_text_special_case() controlFrontGate() control_music() REPLAY_CHECK_FOR_EVENT_THIS_FRAME("m_Repossession") IF iDisableReplayCameraTimer > GET_GAME_TIMER() REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2223403 ENDIF INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(PLAYER_PED_ID(), ARM2_PLAYER_DAMAGE) IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), ARM2_CAR_DAMAGE) INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), ARM2_MAX_SPEED) ELSE INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(NULL, ARM2_CAR_DAMAGE) INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(NULL, ARM2_MAX_SPEED) ENDIF //RUN_SEAMLESS_CUTSCENE(cutCam, bTracker) //CONTROL_AUDIO() IF bMakeMissionFail Mission_Failed(sFailMessage, missionFailDelay) ENDIF WAIT(0) ENDWHILE // Script should never reach here. Always terminate with cleanup function. ENDSCRIPT