Files
2025-09-29 00:52:08 +02:00

12692 lines
443 KiB
Python
Executable File

//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 "commands_graphics.sch"
USING "script_blips.sch"
USING "script_ped.sch"
USING "replay_public.sch"
USING "select_mission_stage.sch"
USING "mission_stat_public.sch"
USING "clearMissionArea.sch"
USING "locates_public.sch"
USING "net_include.sch"
using "rGeneral_include.sch"
using "usefulCommands.sch"
USING "building_control_public.sch"
USING "script_blips.sch"
USING "taxi_functions.sch"
USING "commands_recording.sch"
string remlastConv
USING "ped_player_reactions.sch"
//USING "AI_Sweep.sch"
#IF IS_DEBUG_BUILD
USING "scripted_cam_editor_public.sch"
#ENDIF
vehicle_index cutscene_player_vehicle
// ================================ preset flag values ======================
CONST_INT TAO_EVENT_ANIM_PLAYING 900
CONST_INT MAX_TRAIL_POINTS 61
USING "gas_trails.sch"
// ================================================ DATA FOR PEDS ===============================================
CONST_INT MAX_PEDS 26
int iNextPedVariation
CONST_INT ped_taos_translator 10
CONST_INT ped_tao 11
CONST_INT ped_janet 12
CONST_INT ped_oldMan1 13
CONST_INT ped_oldMan2 14
vector vehicleSpeed
enum enumClenup
CLEANUP_PASS,
CLEANUP_FAIL,
CLEANUP_FAIL_DEATH, //to make sure peds are not deleted on death fail
CLEANUP_SKIP
endenum
ENUM enumAction
action_none, // 0
action_spawn, // 1
action_roll_barrels, // 2
action_roll_barrels_at_front_of_house,
action_shoot_cans, // 3
action_balcony_guard_patrol, // 4
action_balcony_guard_chat, // 5
action_chatting, // 6
action_guarding, // 7
action_patrol, // 8
action_respond_to_dead_ped, // 9
action_respond_to_bullet, // 10
action_alert_buddies, // 11
action_looking_about, // 12
action_smoke, // 13
action_binoculars,
action_drinking,
action_pissing,
action_move_inside_house,
action_chicken, // 14
action_respond_to_nearby_alerted_ped, // 15
action_respond_to_adjacent_alerted_ped, // 16
action_alerted, // 17
action_advance_on_hill, //18
action_wait_on_player_advance_to_house, //19
action_sit, //21
action_combat,
action_flee,
action_cooking,
action_drugs,
action_meth_lab,
action_meth_lab_respond_to_player,
action_hum,
action_get_in_car
ENDENUM
ENUM enumRole
role_chicken,
role_guard_outside,
role_guard_house,
role_worker,
role_cook,
role_innocent
ENDENUM
enum enumPlacement
pos_balcony_far_left,
pos_balcony_doorway,
pos_balcony_veranda_walk,
pos_porch,
pos_barrels_1,
pos_barrels_2,
pos_garden_chat_1,
pos_garden_chat_2,
pos_shooting_bottle_1,
pos_shooting_bottle_2,
pos_inside_right_window,
pos_inside_utility_room,
pos_inside_seated1,
pos_inside_seated2,
pos_inside_seated3,
pos_inside_cards1,
pos_inside_cards2,
pos_inside_cards3,
pos_inside_kitchen1,
pos_inside_kitchen2,
pos_inside_bystairs1,
pos_inside_bystairs2,
pos_innocent_chef,
pos_innocent_drugden,
pos_emergency_attacker,
pos_none
ENDENUM
struct structPedData
ped_index id
enumRole role
enumPlacement placement
enumAction action
enumAction lastAction
int actionFlag = 0
vector vpos, vPosB
float floatA, floatB
int intA, intB, pedOfInterest
bool nearbyreactingPed
WEAPON_TYPE weapon = DUMMY_MODEL_FOR_SCRIPT
BLIP_INDEX blip
OBJECT_INDEX obj
bool sniped
bool alerted
bool registeredKilled
REL_GROUP_HASH rel
AI_BLIP_STRUCT aiBlip
// enum_state myState = STATE_SPAWN
ENDSTRUCT
structPedData zPED[max_peds]
int iStagger
//relationship groups
REL_GROUP_HASH HASH_FRIEND_GROUP
REL_GROUP_HASH HASH_FOE_GROUP
REL_GROUP_HASH HASH_IGNORE_GROUP
REL_GROUP_HASH taorelgroup
// ped reactions
//ped reaction stuff
structCheckState pedReactionState[MAX_PEDS]
diaData diAlertAllSeen, diAlertAllUnseen, diSeePlayer, diHearPlayer,diHearPlayerAgain, diLostPlayer, diBullet, diDeadBody, diExplosion, diFoundPlayer
vector vDefAreas[21]
string convBlock = "CHI2AUD"
// final cutscene data
bool editCutscene
bool resetCutscene
bool cutsceneRunning
bool bOutputCut
struct structCamShot
vector camStartPos,camStartRot
vector camEndPos,camEndRot
float camDuration,totalDuration
float camStartFOV,camEndFOV
int camPanType
int flameNode = -1
endstruct
struct StructcutEvent
bool triggered
int triggerShot
float triggerTime
string name
int flag
int timer
endstruct
StructcutEvent CutEvent[6]
structCamShot camShot[4]
float cutDurationTime
int iCurrentCamShot
bool bSetCamA[4],bSetCamB[4]
#if is_debug_build
WIDGET_GROUP_ID cutsceneWidget
#endif
vector basementFlames[13]
int basementFlame
// =================================================== vehicles ====================================================
vehicle_index vehPlayer
VEHICLE_INDEX BarrelVan
VEHICLE_INDEX vehBlazer
VEHICLE_INDEX vehOneil
//navmesh bloc
INT navblockA
// ============================================== MISSION STAGES ====================================================
CONST_INT MAX_SKIP_MENU_LENGTH 11
ENUM mission_stage_flag
init_mission=0,
intro_cut,
drive_to_farm,
farm_cutscene,
snipe_from_hill,
get_to_house,
inside_house,
do_petrol_trail,
explosion_cut,
end_mission,
missionPassed,
stage_null
ENDENUM
mission_stage_flag missionStage
int stageFlag
#IF IS_DEBUG_BUILD
MissionStageMenuTextStruct SkipMenuStruct[MAX_SKIP_MENU_LENGTH]
#ENDIF
string sFailReason
bool bFailMission
// ====================================================== Data for events ==============================================
enum EnumEvents
events_resolve_vehicles_at_start,
events_give_sniper,
events_trevor_phonecall,
events_trevor_rants,
events_stop_and_leave_vehicle,
events_spawn_house,
events_reset_house_rayfire,
events_release_bottle_shooting_anims,
events_remove_vehicles_and_peds,
events_control_dispatch,
events_petrol_help,
events_explode_petrol_can,
events_house_explodes_rayfire,
events_play_audio_stream,
events_Trevor_walks_in_final_cutscene,
events_kill_alerted_ped_help,
events_check_petrol_trail,
events_check_player_out_front,
events_check_trail_burning_safe,
events_check_trail_burning_fail,
events_detach_barrels_from_peds,
events_never_do_locates_skips,
events_pin_interior,
events_spawn_bottles,
events_unfreeze_pallet,
events_continuous_stats_tracking,
events_animate_bar,
events_force_farm_doors_drawing,
events_set_Radio,
events_fails
ENDENUM
struct structEvents
EnumEvents event
bool active
int flag
bool persists
bool boolA
int intA
ENDSTRUCT
CONST_INT max_events 20
CONST_INT CLEANUP -1
structEvents events[max_events]
// ====================================================== DIALOGUE STUFF ==========================================
enum enumConvProgress
CONV_EMPTY,
CONV_SEEK,
CONV_PANC,
CONV_PANC2
ENDENUM
//enumConvProgress LAST_CONVERSATION = CONV_EMPTY
//INT CONVERSATION_GAP
//int random_lines_played
//enumComments nextSweepCommentToPlay = COMMENT_NONE
rel_group_hash relGroupBar
// ======================================================== cutscenes =============================================
CAMERA_INDEX cam1
int iCamSync
float fShakeValue
int cutChangeTime
int safeSkipTime
ped_index tempPed
ped_index ped_oneil1, ped_oneil2
//int sceneBOOM
int iCamFlag
bool bSneakyPass
bool bCutsceneWasSkipped
enum ENUM_CUTSCENE_FIRST_SHOT
SHOT_NONE,
SHOT_BASEMENT,
SHOT_HOUSE_EXPLOSION,
SHOT_NORMAL
endenum
ENUM_CUTSCENE_FIRST_SHOT CUTSCENE_FIRST_SHOT = SHOT_NONE
// =================================================== Debug variables ==========================================
#if IS_DEBUG_BUILD
bool bExplodeHouseLoop,bExplodeHouseLoopShort
bool bShowActionsA,bShowActionsB,bShowEvents,bSkipDrive,bShowFocus
bool bRecordPedData
int iRecordedPed
bool bKillOutsidePeds
bool bRecordPed
int iPedToRecord
bool bAllowShitskip
bool bScreenConditions,bScreenActionsA,bScreenInstructions,bSshowDialogue
#ENDIF
// =========================================================== Fuel can ==========================================
int gasInCan
PICKUP_INDEX health_pickup
PICKUP_INDEX piPickups[5]
// ===================================== shoot cans ===============================================
object_index oCans[10]
// ============================================================ fire trail ======================================
int iFireIgniteSound
vector vIgnitePos
// ========================================================= Rayfire
RAYFIRE_INDEX rfThisRayfire
bool bRayfireTriggered
float fSlowMoPhase
// ===================================================== All other variables =========================================
PICKUP_INDEX pickup_gas
int iRadSound = -1
BLIP_INDEX missionBlip
//INTERIOR_INSTANCE_INDEX houseInterior
INTERIOR_INSTANCE_INDEX int_farm
OBJECT_INDEX oGasCan
object_index obja,objb
object_index obj_cellphone
LOCATES_HEADER_DATA locatesData
structPedsForConversation dChinese2
int iSyncStandingLoop,iSyncStandUp,iSyncCower,iStandAlternative,iGrabGun
object_index objShotgun
bool bBlockShooterDialogue
bool bcutscenePLaying
bool bForceAnimTimeA,bForceAnimTimeB, bPlayerOnHill
#if IS_DEBUG_BUILD
WIDGET_GROUP_ID widget_debug
#ENDIF
int iNavBlock=-1
//int failReason =-1
int iBarrels1,iBarrels2
int thisSnipeCount
int iRandomCounter //counter for random rant lines from Trevor
vector cellar_explosions[9]
// ==================================================== define actions ====================================================
CONST_INT MAX_ACTIONS 20
CONST_INT MAX_CONDITIONS 27
CONST_INT MAX_INSTRUCTIONS 5
CONST_INT MAX_DIALOGUES 17
ENUM enumconditions
COND_NULL,
COND_GO_TO_FARM_START,
COND_INITIAL_INSTRUCTIONS_PLAYED,
COND_PLAYER_IN_ANY_CAR,
COND_GO_TO_FARM_END,
COND_START_FARM_ASSAULT,
COND_BULLET_IMPACTED_BY_BARRELS,
COND_SHOOTING_PED_DEAD,
COND_ENEMY_PED_REACTING,
COND_ALL_ENEMY_ALERTED,
COND_ALL_OUTSIDE_ENEMY_DEAD,
COND_PLAYER_IN_METH_LAB,
COND_PLAYER_IN_HOUSE,
COND_PLAYER_DOWNSTAIRS,
COND_PLAYER_APPROACHING_HOUSE,
COND_BASEMENT_PED_DEAD_IN_BASEMENT,
COND_ATTACKERS_ALL_DEAD,
COND_TREVOR_NEAR_BASEMENT,
COND_TREVOR_NEAR_STAIRS,
COND_TREVOR_AT_STAIRS,
COND_PISSING_DIALOGUE_CAN_PLAY,
COND_TREVOR_SEEN,
COND_RESPOND_TO_BULLET,
COND_ONE_ATTACKER_LEFT_OUTSIDE,
COND_FAIL_FOR_LEAVING_FARM,
COND_BARREL_ROLL_PEDS_IN_VAN,
COND_CARD_PLAYING_PEDS_STILL_NEAR_TABLE,
COND_BASEMENT_PEDS_LEAVING_AND_OBSERVED,
COND_START_PETROL_TRAIL,
COND_PLAYER_HAS_PETROL_CAN,
COND_JERRY_CAN_DESTROYED, //allows this condition to span across both mission stages
COND_END_FARM_ASSAULT,
COND_PLAYER_OUT_FRONT,
COND_OUT_OF_GAS,
COND_GAS_TRAIL_COMPLETE,
COND_LAST_BLIP_POURED_ON,
COND_PLAYER_POURING_GAS,
COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE,
COND_GAS_TRAIL_REACHED_DOORWAY,
COND_GAS_TRAIL_IGNITED_INCORRECTLY,
COND_TREVOR_INSIDE_HOUSE,
COND_GAS_IGNITED_IN_HOUSE_WILL_BURN_OK,
COND_40M_FARM_WARNING,
COND_60M_FARM_FAIL,
COND_EXPLOSION_IN_BASEMENT,
COND_END_PETROL_TRAIL,
COND_FARM_LEAVE_START,
COND_GET_WANTED_LEVEL,
COND_PLAYER_300_FROM_FARM,
COND_PLAYER_500_FROM_FARM,
COND_GOT_WANTED_LEVEL,
COND_BUILDING_STATE_SWAPPED,
COND_FARM_LEAVE_END
ENDENUM
ENUM enumInstructions
INS_NULL,
INS_SPECIAL_ABILITY_BOOST,
INS_DESTROY_METH_LAB,
ins_enemy_reacting,
INS_SPECIAL_ABILITY,
ins_all_enemy_reacting,
INS_QUICK_KILL_HELP,
INS_PICK_UP_GAS_CAN,
INS_USING_GAS_CAN,
ins_missed_a_bit,
ins_dont_abandon_farm,
ins_fast_stealth,
INS_GET_CLEAR_OF_FARM,
INS_LOSE_WANTED_LEVEL
ENDENUM
enum enumDialogue
DIA_NULL,
//drive to meet
dia_whatnow,
dia_trevor_rage_comments,
dia_stop_trevor_getting_to_basement,
dia_cook_sees_ped_die,
dia_dont_let_him_down,
dia_hes_in_meth_lab,
dia_trevor_see_basement_peds_leave,
dia_pissing_guy,
dia_trevor_spotted_outside,
dia_find_trevor,
dia_attacking_trevor_outside,
dia_attacking_trevor_inside,
DIA_RESPOND_TO_ALERT,
dia_trevor_seen_inside_house,
DIA_RESPOND_TO_BULLET,
dia_last_man_standing,
dia_trevor_approaches_house,
dia_shooting_Barrels,
Dia_TREVOR_SAYS_HARD_WAY,
Dia_stay_in_house,
DIA_PICKED_UP_JERRY_CAN,
DIA_POURING_PETROL,
DIA_LIGHT_FUEL,
DIA_EXPLODE_HOUSE,
DIA_FUEL_BURN,
DIA_MISSED_A_BIT,
DIA_BOOM
ENDENUM
enum enumActions
act_null,
act_get_stalls,
ACT_AUDIO_SCENE_DRIVE_TO_FARMHOUSE,
ACT_REMOVE_BAR_PEDS,
ACT_LOAD_FRUSTROM,
ACT_LOAD_SOUNDSET,
ACT_MAKE_BAR_PEDS_FLEE,
ACT_BAR_PEDS_LOOK_AT_TREVOR,
ACT_SLOW_DOWN_PLAYER_IN_CHOPPER,
ACT_BLEND_OUT_OF_TREVOR_RAGE,
ACT_LOAD_END_CUT_FRUSTROM,
ACT_BOMB_IN_BASEMENT,
act_shooting_peds_witness_impact_at_barrels,
act_stat_double_kill,
act_MUSIC_start_snipe,
act_MUSIC_approach_house_or_alert,
act_create_petrol_can_with_blip,
act_stage_prep,
act_snipe_cams,
act_remove_initial_assets,
act_outside_peds_flee,
act_remove_upstairs_peds,
act_MUSIC_enter_house,
act_remaining_peds_flee,
act_window_ped_walks_inside,
act_put_player_in_action_mode,
act_end_stealth_audio_Scene,
act_enemy_alerted_audio_Scene,
act_end_enemy_alerted_audio_Scene,
act_modify_ped_seeing_range,
act_spawn_blazer,
ACT_PREP_PETROL_POUR,
ACT_CONTROL_PETROL_BLIPS,
ACT_PETROL_ASSIST_ROUTE,
ACT_FUDGE_RADAR_ZOOM,
ACT_MUSIC_PICKS_UP_JERRY_CAM,
ACT_MUSIC_TRAIL_IGNITED,
ACT_AUDIO_SCENE_WITH_CAN,
ACT_PREP_EXPLOSION_AUDIO,
act_remove_barrel_peds,
act_player_got_to_basement_sneakily,
ACT_ANIMATE_CHINESE,
ACT_RADIO_SOUND,
act_remove_van_peds,
act_audio_scene_in_house,
act_reset_bottle_shooting_ped_accuracy,
act_basement_ped,
ACT_WHIMPERING,
ACT_GET_WANTED_LEVEL,
ACT_CHANGE_BUILDING_STATE,
ACT_STAT_POUR_GAS,
ACT_FUDGE_GAS_AMMO,
ACT_STOP_MUSIC,
ACT_FIRE_AUDIO,
ACT_ENABLE_TAXI,
ACT_RESET_STUFF,
ACT_REMOVE_SOME_ASSETS
endenum
ENUM enumFails
FAIL_OUT_OF_GAS,
FAIL_GAS_TRAIL_IGNITED_EARLY,
FAIL_GAS_TRAIL_NOT_COMPLETE,
fail_kill_cheng_or_translator,
FAIL_ABANDONED_FARM,
FAIL_JERRY_CAN_DESTROYED
ENDENUM
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,intB
float floatA
endstruct
structConditions conditions[MAX_CONDITIONS]
struct structInstructions
enumInstructions ins = INS_NULL
bool bCompleted
int flag
int intA
#if IS_DEBUG_BUILD bool CONDTRUE #endif
endstruct
structInstructions instr[MAX_INSTRUCTIONS]
struct structDialogue
enumDialogue dial = DIA_NULL
bool bCompleted
bool bStarted
int flag
int intA,intB,intC
#if IS_DEBUG_BUILD bool condTrue #endif
endstruct
structDialogue dia[MAX_DIALOGUES]
struct convStoreStruct
int speakerNo
ped_index pedIndex
string speakerLabel
endstruct
convStoreStruct convStore[4]
bool bLastConvoWithoutSubtitles
TEXT_LABEL_23 restartSubtitleLine,restartSubtitleRoot
PROC SAFEWAIT(int waitDebug,bool bAllowTerminateThread=TRUE)
waitDebug=waitDebug
bAllowTerminateThread=bAllowTerminateThread
#if IS_DEBUG_BUILD
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F))
IF bAllowTerminateThread
TERMINATE_THIS_THREAD()
ENDIF
ENDIF
#endif
//cprintln(debug_trevor3,"wait: ",waitDebug)
WAIT(0)
ENDPROC
FUNC BOOL IS_VEHICLE_VALID_AND_DRIVEABLE(vehicle_INDEX vehID)
IF DOES_ENTITY_EXIST(vehID)
IF IS_VEHICLE_DRIVEABLE(vehID)
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
// ==================================================== Prep peds ==================================================
proc INIT_REL_GROUPS()
ADD_RELATIONSHIP_GROUP("MYFRIEND",HASH_FRIEND_GROUP)
ADD_RELATIONSHIP_GROUP("FOE",HASH_FOE_GROUP)
ADD_RELATIONSHIP_GROUP("IGNORE",HASH_IGNORE_GROUP)
ADD_RELATIONSHIP_GROUP("BARpeds", relGroupBar)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_DISLIKE,relGroupBar,RELGROUPHASH_PLAYER)
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_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,HASH_FRIEND_GROUP,HASH_IGNORE_GROUP)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,HASH_FOE_GROUP,HASH_IGNORE_GROUP)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,HASH_IGNORE_GROUP,GET_PED_RELATIONSHIP_GROUP_HASH(player_ped_id()))
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,HASH_IGNORE_GROUP,HASH_FOE_GROUP)
ENDPROC
proc prep_ped(enumRole pedRole,enumAction pedAction,enumPlacement placement)
int iPos = ENUM_TO_INT(placement)
zPED[iPos].role = pedRole
zPED[iPos].action = pedAction
zPED[iPos].placement = placement
zPED[iPos].actionFlag = 0
ENDPROC
// shooting cans
FUNC BOOL FIND_CAN_TO_HIT(int &iCanToHit)
iCanToHit = 0
int iCount
iCount = 0
iCanToHit = GET_RANDOM_INT_IN_RANGE(0,10)
bool bFound
bFound=FALSE
WHILE NOT bFound
IF DOES_ENTITY_EXIST(ocans[iCanToHit])
AND IS_ENTITY_IN_ANGLED_AREA( ocans[iCanToHit], <<2495.017090,4970.170410,44.218082>>, <<2493.500732,4971.556152,45.402481>>, 1.375000)
RETURN TRUE
ELSE
iCanToHit++
iCount++
IF iCanToHit = COUNT_OF(oCans)
iCanToHit = 0
ENDIF
ENDIF
IF iCount = 10
RETURN FALSE
ENDIF
ENDWHILE
RETURN FALSE
ENDFUNC
FUNC BOOL IS_PLAYER_PRESSING_A_CONTROL_BUTTON()
IF GET_CONTROL_VALUE(FRONTEND_CONTROL,INPUT_MOVE_LR) != 127
OR GET_CONTROL_VALUE(FRONTEND_CONTROL,INPUT_MOVE_UD) != 127
OR IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_ATTACK)
OR IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_AIM)
OR GET_CONTROL_VALUE(FRONTEND_CONTROL,INPUT_LOOK_UD) != 127
OR GET_CONTROL_VALUE(FRONTEND_CONTROL,INPUT_LOOK_LR) != 127
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
// ========================================================= FUEL TRAIL =======================================
PROC REMOVE_DEAD_PEDS_ON_TRAIL_ROUTE()
INT i, j
vector vpos
REPEAT COUNT_OF(gasTrail) i
IF NOT ARE_VECTORS_EQUAL(gasTrail[i].coord, <<0.0, 0.0, 0.0>>)
STOP_FIRE_IN_RANGE(gasTrail[i].coord,4.0)
clear_Area(gasTrail[i].coord,2.0,true)
REPEAT COUNT_OF(zped) j
IF DOES_ENTITY_EXIST(zped[j].id)
vPos = GET_ENTITY_COORDS(zped[j].id, FALSE)
IF VDIST2(vPos, gasTrail[i].coord) < 2.0
AND vPos.z > 43.9
// IF NOT IS_ENTITY_ON_SCREEN(zped[j].id)
// IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),zped[j].id) > 10
DELETE_PED(zped[j].id)
// ENDIF
// ENDIF
ENDIF
ENDIF
ENDREPEAT
ENDIF
ENDREPEAT
ENDPROC
PROC PURGE_CONVERSATIONS(bool letConversationFinish)
bLastConvoWithoutSubtitles = FALSE
IF letConversationFinish
KILL_FACE_TO_FACE_CONVERSATION()
ELSe
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
ENDIF
ENDPROC
///INTERIOR GUBBINS
/// bool
INTERIOR_INSTANCE_INDEX pinnedInterior
bool bPinningInterior
PROC PIN_INTERIOR(vector vInterior)
pinnedInterior = GET_INTERIOR_AT_COORDS(vInterior)
bPinningInterior = TRUE
ENDPROC
PROC INTERIOR_PINNING()
IF bPinningInterior
IF IS_INTERIOR_READY(pinnedInterior)
PIN_INTERIOR_IN_MEMORY(pinnedInterior)
bPinningInterior = FALSE
ENDIF
ENDIF
ENDPROC
// ===================================== music ========================================
// music
bool bNewMusicRequest,bRequiresPreload,bPreloadRequest
string sMusicToPlay,sPreloadMusic
proc playMusic(string musicToPlay, bool bPreload, string musicToLoadNext)
bNewMusicRequest = TRUE
bRequiresPreload = bPreload
sMusicToPlay = musictoPlay
sPreloadMusic = musicToLoadNext
endproc
FUNC BOOL control_music()
If bNewMusicRequest
If bRequiresPreload
////cprintln(debug_Trevor3,"Want to play ",sMusicToPlay," with preload")
IF PREPARE_MUSIC_EVENT(sMusicToPlay)
IF TRIGGER_MUSIC_EVENT(sMusicToPlay)
bNewMusicRequest = FALSE
bRequiresPreload = FALSE
RETURN TRUE
ENDIF
ENDIf
ELSE
////cprintln(debug_Trevor3,"Want to play ",sMusicToPlay)
IF TRIGGER_MUSIC_EVENT(sMusicToPlay)
bNewMusicRequest = FALSE
RETURN TRUE
ENDIF
ENDIF
ELSE
If bPreloadRequest
IF PREPARE_MUSIC_EVENT(sPreloadMusic)
bPreloadRequest=FALSE
ENDIf
ENDIF
ENDIF
return false
endfunc
// ======================================================== MISC PROCS ==========================================
PROC FAIL_MISSION(string thisFailReason)
sFailReason = thisFailReason
bFailMission = TRUE
endproc
func int findSeenDeadPed(int iPedLooking)
int ie
float fHeading
int iClosest = -1
float fClosestDistance = 999999.0
float fDistance
REPEAT COUNT_OF(zPED) ie
if does_entity_exist(zPED[ie].id)
if IS_PED_INJURED(zPED[ie].id)
fHeading = GET_HEADING_FROM_COORDS(GET_ENTITY_COORDS(zPED[iPedLooking].id,FALSE),GET_ENTITY_COORDS(zPED[ie].id,FALSE))
if ABSF(fHeading-GET_ENTITY_HEADING(zPED[iPedLooking].id)) < 90.0
fDistance = GET_DISTANCE_BETWEEN_ENTITIES(zPED[iPedLooking].id,zPED[ie].id)
if fDistance < fClosestDistance
fClosestDistance = fDistance
iClosest = ie
ENDIF
ENDIF
ENDIF
ENDIF
ENDREPEAT
if iClosest != -1
return iClosest
ENDIF
return -1
ENDFUNC
proc set_event_int(EnumEvents eventToAdd, int iValue)
int iE
REPEAT COUNT_OF(events) iE
if events[iE].active = TRUE
if events[iE].event = eventToAdd
events[iE].intA = iValue
iE = COUNT_OF(events)
ENDIF
ENDIF
ENDREPEAT
endproc
FUNC bool set_event_flag(enumEvents event, int iFlagValue)
int i
for i = 0 to MAX_EVENTS-1
if events[i].event = event
if events[i].active = true
events[i].flag = iFlagValue
RETURN TRUE
ENDIF
ENDIF
ENDFOR
RETURN FALSE
ENDFUNC
func bool add_event(EnumEvents eventToAdd, bool persists_stage_skipping=FALSE)
int iE
REPEAT COUNT_OF(events) iE
if events[iE].active = TRUE
if events[iE].event = eventToAdd
return FALSE
ENDIF
ENDIF
ENDREPEAT
REPEAT COUNT_OF(events) iE
if events[iE].active = FALSE
events[iE].active = TRUE
events[iE].event = eventToAdd
events[iE].flag = 0
events[iE].persists = persists_stage_skipping
events[iE].boolA = FALSE
events[iE].intA = 0
return TRUE
ENDIF
ENDREPEAT
SCRIPT_ASSERT("Ran out of script events. Increase MAX_EVENTS")
return FALSE
ENDFUNC
FUNC BOOL kill_event(EnumEvents eventToKill, bool bLetCleanup = TRUE)
int iE
REPEAT COUNT_OF(events) iE
IF events[iE].event = eventToKill
events[iE].flag = -1
IF NOT bLetCleanup
events[iE].active = FALSE
ENDIF
return TRUE
ENDIF
ENDREPEAT
return FALSE
endFUNC
func bool is_event_active(EnumEvents eventToCheck)
int iE
REPEAT COUNT_OF(events) iE
if events[iE].active = TRUE
if events[iE].event = eventToCheck
return TRUE
ENDIF
ENDIF
ENDREPEAT
return FALSE
endfunc
func int GET_EVENT_FLAG(EnumEvents eventToCheck)
int iE
REPEAT COUNT_OF(events) iE
if events[iE].active = TRUE
if events[iE].event = eventToCheck
return events[iE].flag
ENDIF
ENDIF
ENDREPEAT
return -1
endfunc
FUNC STRING GET_ROLE_STRING(int iPEd)
switch zPED[iPed].role
case role_chicken RETURN("role_chicken") BREAK
case role_guard_outside RETURN("role_guard_outside") BREAK
case role_guard_house RETURN("role_guard_house") BREAK
case role_worker RETURN("role_worker") BREAK
case role_cook RETURN("role_cook") BREAK
case role_innocent RETURN("role_innocent") BREAK
endswitch
return ""
ENDFUNC
FUNC STRING GET_PLACEMENT_STRING(int iPed)
switch zPED[iPed].placement
case pos_none RETURN("pos_none") BREAK
case pos_balcony_far_left RETURN "pos_balcony_far_left" BREAK
case pos_balcony_doorway RETURN "pos_balcony_doorway" BREAK
case pos_balcony_veranda_walk RETURN "pos_balcony_veranda_walk" BREAK
case pos_porch RETURN "pos_porch" BREAK
case pos_barrels_1 RETURN "pos_barrels_1" BREAK
case pos_barrels_2 RETURN "pos_barrels_2" BREAK
case pos_garden_chat_1 RETURN "pos_garden_chat_1" BREAK
case pos_garden_chat_2 RETURN "pos_garden_chat_2" BREAK
case pos_shooting_bottle_1 RETURN "pos_shooting_bottle_1" BREAK
case pos_shooting_bottle_2 RETURN "pos_shooting_bottle_2" BREAK
case pos_inside_right_window RETURN "pos_inside_right_window" BREAK
case pos_inside_utility_room RETURN "pos_inside_utility_room" BREAK
case pos_inside_seated1 RETURN "pos_inside_seated1" BREAK
case pos_inside_seated2 RETURN "pos_inside_seated2" BREAK
case pos_inside_seated3 RETURN "pos_inside_seated3" BREAK
case pos_inside_cards1 RETURN "pos_inside_cards1" BREAK
case pos_inside_cards2 RETURN "pos_inside_cards2" BREAK
case pos_inside_cards3 RETURN "pos_inside_cards3" BREAK
case pos_inside_kitchen1 RETURN "pos_inside_kitchen1" BREAK
case pos_inside_kitchen2 RETURN "pos_inside_kitchen2" BREAK
case pos_inside_bystairs1 RETURN "pos_inside_bystairs1" BREAK
case pos_inside_bystairs2 RETURN "pos_inside_bystairs2" BREAK
case pos_innocent_chef RETURN "pos_innocent_chef" BREAK
case pos_innocent_drugden RETURN "pos_innocent_drugden" BREAK
ENDSWITCH
return ""
ENDFUNC
FUNC STRING GET_THIS_STATE_STRING(int iPED)
SWITCH pedReactionState[iPED].State
CASE STATE_AMBIENT
RETURN("STATE_AMBIENT")
BREAK
CASE STATE_COMBAT
RETURN("STATE_COMBAT")
BREAK
CASE STATE_REACT
RETURN("STATE_REACT")
BREAK
CASE STATE_SEEK
RETURN("STATE_SEEK")
BREAK
CASE STATE_SPAWN
RETURN("STATE_SPAWN")
BREAK
ENDSWITCH
return("")
ENDFUNC
FUNC STRING GET_ACTION_STRING(int iPED)
switch zPED[iPed].action
case action_none RETURN "action_none" BREAK // 0
case action_spawn RETURN "action_spawn" BREAK // 1
case action_roll_barrels RETURN "action_roll_barrels" BREAK // 2
case action_shoot_cans RETURN "action_shoot_cans" BREAK // 3
case action_balcony_guard_patrol RETURN "action_balcony_guard_patrol" BREAK // 4
case action_balcony_guard_chat RETURN "action_balcony_guard_chat" BREAK // 5
case action_chatting RETURN "action_chatting" BREAK // 6
case action_guarding RETURN "action_guarding" BREAK // 7
case action_patrol RETURN "action_patrol" BREAK // 8
case action_respond_to_dead_ped RETURN "action_respond_to_dead_ped" BREAK // 9
case action_respond_to_bullet RETURN "action_respond_to_bullet" BREAK // 10
case action_alert_buddies RETURN "action_alert_buddies" BREAK // 11
case action_looking_about RETURN "action_looking_about" BREAK // 12
case action_smoke RETURN "action_smoke" BREAK // 13
case action_move_inside_house RETURN "action_move_inside_house" BREAK
case action_chicken RETURN "action_chicken" BREAK // 14
case action_respond_to_nearby_alerted_ped RETURN "action_respond_to_nearby_alerted_ped" BREAK // 15
case action_respond_to_adjacent_alerted_ped RETURN "action_respond_to_adjacent_alerted_ped" BREAK // 16
case action_alerted RETURN "action_alerted" BREAK // 17
case action_advance_on_hill RETURN "action_advance_on_hill" BREAK //18
case action_wait_on_player_advance_to_house RETURN "action_wait_on_player_advance_to_house" BREAK //19
case action_sit RETURN "action_sit" BREAK //21
case action_combat RETURN "action_combat" BREAK
case action_flee RETURN "action_flee" BREAK
case action_meth_lab RETURN "action_meth_lab" BREAK
case action_meth_lab_respond_to_player RETURN "action_meth_lab_respond_to_player" BREAK
CASE action_hum RETURN "action_hum" BREAK
case action_get_in_car RETURN "action_get_in_carm" BREAK
endswitch
return ""
endfunc
FUNC STRING GET_THIS_EVENT_STRING(int iEvent)
switch events[iEvent].event
case events_resolve_vehicles_at_start RETURN "events_resolve_vehicles_at_start" BREAK
case events_give_sniper RETURN "events_give_sniper" BREAK
case events_trevor_phonecall RETURN "events_trevor_phonecall" BREAK
case events_trevor_rants RETURN "events_trevor_rants" BREAK
case events_stop_and_leave_vehicle RETURN "events_stop_and_leave_vehicle" BREAK
case events_spawn_house RETURN "events_spawn_house" BREAK
case events_reset_house_rayfire RETURN "events_reset_house_rayfire" BREAK
case events_release_bottle_shooting_anims RETURN "events_release_bottle_shooting_anims" BREAK
case events_remove_vehicles_and_peds RETURN "events_remove_vehicles_and_peds" BREAK
case events_control_dispatch RETURN "events_control_dispatch" BREAK
case events_petrol_help RETURN "events_petrol_help" BREAK
case events_explode_petrol_can RETURN "events_explode_petrol_can" BREAK
case events_house_explodes_rayfire RETURN "events_house_explodes_rayfire" BREAK
case events_Trevor_walks_in_final_cutscene RETURN "events_Trevor_walks_in_final_cutscene" BREAK
case events_kill_alerted_ped_help RETURN "events_kill_alerted_ped_help" BREAK
case events_check_petrol_trail RETURN "events_check_petrol_trail" BREAK
case events_check_player_out_front RETURN "events_check_player_out_front" BREAK
case events_detach_barrels_from_peds RETURN "events_detach_barrels_from_peds" BREAK
case events_never_do_locates_skips RETURN "events_never_do_locates_skips" BREAK
case events_pin_interior RETURN "events_pin_interior" BREAK
case events_spawn_bottles RETURN "events_spawn_bottles" BREAK
case events_unfreeze_pallet RETURN "events_unfreeze_pallet" BREAK
case events_force_farm_doors_drawing RETURN "events_force_farm_doors_drawing" BREAK
case events_fails RETURN "events_fails" BREAK
case events_animate_bar RETURN "events_animate_bar" BREAK
ENDSWITCH
RETURN ""
ENDFUNC
func int get_ped_with_action(enumAction findAction, int count=0, bool onlyReturnIfAlive=FALSE)
int ie
repeat COUNT_OF(zPED) ie
if zPED[ie].action = findAction
if count = 0
IF onlyReturnIfAlive = FALSE OR (onlyReturnIfAlive=TRUE AND NOT IS_PED_INJURED(zPED[ie].id))
return ie
ENDIF
ELSE
IF onlyReturnIfAlive = FALSE OR (onlyReturnIfAlive=TRUE AND NOT IS_PED_INJURED(zPED[ie].id))
count--
ENDIF
ENDIF
ENDIF
ENDREPEAT
return -1
ENDFUNC
func int get_ped_with_actions(enumAction findActionA, enumAction findActionB=action_none, enumAction findActionC=action_none)
int ie
repeat COUNT_OF(zPED) ie
if zPED[ie].action = findActionA
OR (zPED[ie].action = findActionB AND findActionB != action_none)
OR (zPED[ie].action = findActionC AND findActionC != action_none)
RETURN ie
ENDIF
ENDREPEAT
return -1
endfunc
func int get_ped_with_role(enumRole findRole, enumPlacement withPlacement=pos_none)
int ie
repeat COUNT_OF(zPED) ie
if zPED[ie].role = findRole
if withPlacement != pos_none
if zPED[ie].placement = withPlacement
return ie
ENDIF
ELSE
return ie
ENDIF
ENDIF
ENDREPEAT
SCRIPT_ASSERT("get_ped_with_role(): Couldn't find ped with specified action")
return -1
ENDFUNC
func int get_ped_with_placement(enumPlacement placement)
int iR
REPEAT COUNT_OF(zPED) iR
if zPED[iR].placement = placement
return iR
ENDIF
ENDREPEAT
return -1
endfunc
func bool FIND_CLOSEST_PED_OF_ROLE(int &iReturnSpeaker,enumRole findRole,bool onlyReturnLivingPeds = false)
int i
float fRange, fClosest = 9999.0
iReturnSpeaker=-1
repeat count_of(zPED) i
IF zPED[i].role = findRole
IF onlyReturnLivingPeds = FALSE
OR (onlyReturnLivingPeds = TRUE AND NOT IS_PED_INJURED(zPED[i].id))
fRange = GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),zPED[i].id)
If fRange < fClosest
fClosest = fRange
iReturnSpeaker = i
endif
ENDIF
ENDIF
ENDREPEAT
IF iReturnSpeaker != -1
RETURN TRUE
ENDIF
return FALSE
endfunc
PROC set_ped_action(int iPed, enumAction nextAction, int actionFlag=0, int intA = 0)
IF NOT IS_PED_INJURED(zPED[iPed].id)
IF iPed >= 0
zPED[iPed].lastAction = zPED[iPed].action
zPED[iPed].action = nextAction
zPED[iPed].actionFlag = actionFlag
zPED[iPed].vpos = <<0,0,0>>
zPED[iPed].vposB = <<0,0,0>>
zPED[iPed].floatA = 0
zPED[iPed].floatB = 0
zPED[iPed].intA = intA
zPED[iPed].intB = 0
pedReactionState[iPed].State = STATE_AMBIENT
ENDIF
ENDIF
ENDPROC
func bool IS_PED_IN_VIEWING_ARC_FROM_PED(ped_index pedViewer, PED_INDEX pedToView, float viewingArc, float viewingRange, bool includeLOScheck=FALSE)
vector vPedA, vPedB
if not IS_ENTITY_DEAD(pedViewer)
vPedA = GET_ENTITY_COORDS(pedViewer)
if IS_ENTITY_DEAD(pedToView)
vPedB = /*WITH DEADCHECK=FALSE*/ GET_ENTITY_COORDS(pedToView)
ELSE
vPedB = GET_ENTITY_COORDS(pedToView)
ENDIF
if ABSF(GET_ENTITY_HEADING(pedViewer) - GET_HEADING_FROM_COORDS(vPedA,vPedB,true)) < viewingArc/2
if GET_DISTANCE_BETWEEN_COORDS(vPedB,vPedB) < viewingRange
if includeLOScheck = TRUE
if HAS_ENTITY_CLEAR_LOS_TO_ENTITY(pedViewer,pedToView)
return true
ELSE
return FALSE
ENDIF
ELSE
return TRUE
ENDIF
ENDIF
ENDIF
ENDIF
return FALSE
ENDFUNC
/*
proc check_alerted_nearby_peds(int iAlertedPed)
//if zPED[iAlertedPed].actionFlag = 0
IF zPED[iAlertedPed].placement != pos_balcony_far_left
AND zPED[iAlertedPed].placement != pos_porch
int iR
REPEAT COUNT_OF(zPED) iR
if iR != iAlertedPed
if DOES_ENTITY_EXIST(zPED[iR].id)
IF zPED[iR].role = role_guard_outside
if zPED[iR].action != action_alert_buddies and zPED[iR].action != action_alerted and zPED[iR].action != action_respond_to_bullet and zPED[iR].action != action_respond_to_dead_ped and zPED[iR].action != action_respond_to_nearby_alerted_ped and zPED[iR].action != action_respond_to_adjacent_alerted_ped
if not IS_PED_INJURED(zPED[iR].id)
if GET_DISTANCE_BETWEEN_ENTITIES(zPED[iAlertedPed].id,zPED[iR].id) < 3.0
set_ped_action(iR,action_respond_to_adjacent_alerted_ped)
zPED[iR].intA = iAlertedPed
ELIF GET_DISTANCE_BETWEEN_ENTITIES(zPED[iAlertedPed].id,zPED[iR].id) < 19.0
AND IS_PED_IN_VIEWING_ARC_FROM_PED(zPED[iR].id,zPED[iAlertedPed].id,60,19.0)
vector v1,v2
if not IS_PED_INJURED(zPED[iAlertedPed].id)
v1 = GET_ENTITY_COORDS(zPED[iAlertedPed].id)
v2 = GET_ENTITY_COORDS(zPED[iR].id)
IF absf(v1.z-v2.z) < 2.0
set_ped_action(iR,action_respond_to_nearby_alerted_ped)
ENDIF
ENDIF
ELSE
IF zPED[iAlertedPed].placement = pos_barrels_1
OR zPED[iAlertedPed].placement = pos_barrels_2
OR zPED[iAlertedPed].placement = pos_garden_chat_1
OR zPED[iAlertedPed].placement = pos_garden_chat_2
IF zPED[iR].placement = pos_barrels_1
OR zPED[iR].placement = pos_barrels_2
OR zPED[iR].placement = pos_garden_chat_1
OR zPED[iR].placement = pos_garden_chat_2
set_ped_action(iR,action_respond_to_nearby_alerted_ped)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDREPEAT
ENDIF
//ENDIF
ENDPROC
*/
PROC LOOK_AT_SOMETHING(int iPed)
zPED[iPed].intB += floor(timestep() * 1000 )
SWITCH zped[iPed].placement
CASE pos_garden_chat_2
IF zPED[iPed].intB > 2000
AND NOT IS_BIT_SET(zPED[iPed].intA,0)
TASK_LOOK_AT_COORD(zPED[iPed].id,<<2505.6335, 4996.9937, 46.6624>>,4000)
SET_BIT(zPED[iPed].intA,0)
ELIF zPED[iPed].intB > 8000
AND NOT IS_BIT_SET(zPED[iPed].intA,1)
TASK_LOOK_AT_COORD(zPED[iPed].id,<<2472.2966, 4962.6865, 47.2297>>,6000)
SET_BIT(zPED[iPed].intA,1)
ENDIF
BREAK
CASE pos_barrels_2
IF zPED[iPed].intB > 3000
AND NOT IS_BIT_SET(zPED[iPed].intA,0)
IF NOT IS_PED_INJURED(zPed[enum_to_int(pos_garden_chat_1)].id)
TASK_LOOK_AT_ENTITY(zPED[iPed].id,zPed[enum_to_int(pos_garden_chat_1)].id,4000)
SET_BIT(zPED[iPed].intA,0)
ENDIF
ELIF zPED[iPed].intB > 11000
AND NOT IS_BIT_SET(zPED[iPed].intA,1)
TASK_LOOK_AT_COORD(zPED[iPed].id,<<2494.6335, 5001.9937, 46.6624>>,7000)
SET_BIT(zPED[iPed].intA,1)
ELIF zPED[iPed].intB > 20000
AND NOT IS_BIT_SET(zPED[iPed].intA,2)
TASK_LOOK_AT_COORD(zPED[iPed].id,<<2477.6335, 4966.9937, 46.6624>>,7000)
SET_BIT(zPED[iPed].intA,2)
ENDIF
BREAK
CASE pos_barrels_1
cprintln(debug_Trevor3,"Time : ",zPED[iPed].intB)
IF zPED[iPed].intB > 3000
AND NOT IS_BIT_SET(zPED[iPed].intA,0)
TASK_LOOK_AT_COORD(zPED[iPed].id,<<2505.6335, 4996.9937, 46.6624>>,5000)
SET_BIT(zPED[iPed].intA,0)
cprintln(debug_Trevor3,"LOOK A")
ELIF zPED[iPed].intB > 10000
AND NOT IS_BIT_SET(zPED[iPed].intA,1)
TASK_LOOK_AT_COORD(zPED[iPed].id,<<2461.4495, 4977.4805, 51.7483>>,6000)
SET_BIT(zPED[iPed].intA,1)
cprintln(debug_Trevor3,"LOOK B")
ELIF zPED[iPed].intB > 18000
AND NOT IS_BIT_SET(zPED[iPed].intA,2)
TASK_LOOK_AT_COORD(zPED[iPed].id,<<2505.6335, 4996.9937, 46.6624>>,6000)
SET_BIT(zPED[iPed].intA,2)
ENDIF
BREAK
ENDSWITCH
/*
int iLook
IF zPED[iPed].intB = 0
IF GET_SCRIPT_TASK_STATUS(zPED[iPed].id,SCRIPT_TASK_LOOK_AT_COORD) != PERFORMING_TASK
AND GET_SCRIPT_TASK_STATUS(zPED[iPed].id,SCRIPT_TASK_LOOK_AT_ENTITY) != PERFORMING_TASK
zPED[iPed].intB = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(4000,7000)
ENDIF
ELSE
IF GET_GAME_TIMER() > zPED[iPed].intB
zPED[iPed].intB = 0
iLook = GET_RANDOM_INT_IN_RANGE(0,3)
SWITCH iLook
CASE 0 //look left
TASK_LOOK_AT_COORD(zPED[iPed].id,<<2505.6335, 4996.9937, 46.6624>>,GET_RANDOM_INT_IN_RANGE(2000,5000))
BREAK
CASE 1 //look left
TASK_LOOK_AT_COORD(zPED[iPed].id,<<2472.2966, 4962.6865, 47.2297>>,GET_RANDOM_INT_IN_RANGE(2000,5000))
BREAK
CASE 2 //look at someone
SWITCH zped[iPed].placement
CASE pos_garden_chat_2
TASK_LOOK_AT_COORD(zPED[iPed].id,<<2492.4648, 4977.3994, 46.8259>>,GET_RANDOM_INT_IN_RANGE(2000,5000))
BREAK
CASE pos_barrels_2
IF NOT IS_PED_INJURED(zPed[enum_to_int(pos_garden_chat_2)].id)
TASK_LOOK_AT_ENTITY(zPED[iPed].id,zPed[enum_to_int(pos_garden_chat_2)].id,GET_RANDOM_INT_IN_RANGE(2000,5000))
ENDIF
BREAK
CASE pos_barrels_1
IF NOT IS_PED_INJURED(zPed[enum_to_int(pos_barrels_2)].id)
TASK_LOOK_AT_ENTITY(zPED[iPed].id,zPed[enum_to_int(pos_barrels_2)].id,GET_RANDOM_INT_IN_RANGE(2000,5000))
ENDIF
BREAK
ENDSWITCH
BREAK
ENDSWITCH
ENDIF
ENDIF*/
ENDPROC
FUNC BOOL ped_aims_at_sphere(int iPed, vector vSphere, float radius, int duration=0)
WEAPON_TYPE thisWeapon
GET_CURRENT_PED_WEAPON(zped[iPed].id,thisWeapon)
If thisWeapon != WEAPONTYPE_UNARMED
if duration !=0
if zPED[iPed].intB = 0
zPED[iPed].intB = GET_GAME_TIMER() + duration
ENDIF
if GET_GAME_TIMER() > zPED[iPed].intB
zPED[iPed].intB = 0
return TRUE
ENDIF
ENDIF
bool bTrue
IF NOT IS_PED_INJURED(zPED[iPed].id)
if GET_SCRIPT_TASK_STATUS(zPED[iPed].id,script_task_perform_sequence) = FINISHED_TASK
bTrue = TRUE
ENDIF
IF GET_SCRIPT_TASK_STATUS(zPED[iPed].id,script_TASK_AIM_GUN_AT_COORD) = PERFORMING_TASK
bTrue = FALSE
ENDIF
IF GET_SCRIPT_TASK_STATUS(zPED[iPed].id,SCRIPT_TASK_SWAP_WEAPON) != FINISHED_TASK
bTrue = FALSE
ENDIF
IF bTrue
zPED[iPed].vposB = GET_RANDOM_POINT_IN_DISC_UNIFORM(vSphere,radius,0.3)
vector vtemp
vTemp = get_entity_coords(zped[iped].id)
zPED[iPed].vposB.z = vTemp.z + 1.0
if IS_VECTOR_ZERO(zPED[iPed].vPos)
zPED[iPed].vPos = zPED[iPed].vposB
ENDIF
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zped[iped].id,zPED[iPed].vposB) < 2.0
zPED[iPed].vposB.x += 2.0
ENDIF
zPED[iPed].vpos = zPED[iPed].vpos + ((zPED[iPed].vPosB - zPED[iPed].vpos) * TIMESTEP() * 2.0)
TASK_AIM_GUN_AT_COORD(zPED[iPed].id,zPED[iPed].vpos,GET_RANDOM_INT_IN_RANGE(3000,5000))
ENDIF
ENDIF
else
SET_CURRENT_PED_WEAPON(zPED[iPed].id,GET_BEST_PED_WEAPON(zPED[iPed].id),true)
endif
RETURN FALSE
ENDFUNC
FUNC BOOL PED_MOVE_AIMING_AT_SPHERE(int iPed, vector moveTo, vector vSphere, float radius)
IF NOT IS_PED_INJURED(zPED[iPed].id)
WEAPON_TYPE thisWeapon
GET_CURRENT_PED_WEAPON(zped[iPed].id,thisWeapon)
If thisWeapon != WEAPONTYPE_UNARMED
if GET_SCRIPT_TASK_STATUS(zPED[iPed].id,script_task_perform_sequence) = FINISHED_TASK
and get_game_timer() > zPED[iPed].intB
zPED[iPed].intB = get_game_timer() + GET_RANDOM_INT_IN_RANGE(4000,5000)
zPED[iPed].vpos = GET_RANDOM_POINT_IN_DISC_UNIFORM(vSphere,radius,0.3)
TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(zPED[iPed].id,moveTo,zPED[iPed].vpos,PEDMOVE_RUN,FALSE,0.5,2.0)
ENDIF
if IS_ENTITY_AT_COORD(zPED[iPed].id,moveTo,<<0.5,0.5,2.0>>)
return TRUE
ENDIF
ELSE
SET_CURRENT_PED_WEAPON(zPED[iPed].id,GET_BEST_PED_WEAPON(zPED[iPed].id),true)
ENDIF
ENDIF
return FALSE
ENDFUNC
proc SET_DEFENSIVE_AREA_BETWEEN_HOUSE_AND_PLAYER(int iPed)
IF NOT IS_PED_INJURED(player_ped_id())
float heading
float playerDistToHouse
playerDistToHouse = GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2444.890381,4975.631836,56.160000>>,false)
IF playerDistToHouse < 30.0 //player is within close range of the house
IF zped[iPed].intA = 0
zped[iPed].intA = 1
heading = GET_HEADING_FROM_COORDS(<<2444.890381,4975.631836,56.160000>>,GET_ENTITY_COORDS(player_ped_id()),FALSE)
heading = GET_RANDOM_FLOAT_IN_RANGE(heading-30.0,heading+30.0)
SET_PED_SPHERE_DEFENSIVE_AREA(zped[iPed].id,<<2444.890381+(SIN(heading)*30.0),4975.631836+(COS(heading)*30.0),45.160000>>,5.0)
endif
ELSE
IF IS_VECTOR_ZERO(zped[iPed].vpos)
heading = GET_HEADING_FROM_COORDS(<<2444.890381,4975.631836,56.160000>>,GET_ENTITY_COORDS(player_ped_id()),FALSE)
heading = GET_RANDOM_FLOAT_IN_RANGE(heading-30.0,heading+30.0)
playerDistToHouse = GET_RANDOM_FLOAT_IN_RANGE(30.0,playerDistToHouse)
zped[iPed].vpos = <<2444.890381+(SIN(heading)*playerDistToHouse),4975.631836+(COS(heading)*playerDistToHouse),45.160000>>
SET_PED_SPHERE_DEFENSIVE_AREA(zped[iPed].id,zped[iPed].vpos,8.0)
ELSE
//IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2444.890381,4975.631836,56.160000>>,false) < GET_DISTANCE_BETWEEN_COORDS(<<2444.890381,4975.631836,56.160000>>,zped[iPed].vpos)
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),zped[iPed].vpos) > 20.0
heading = GET_HEADING_FROM_COORDS(<<2444.890381,4975.631836,56.160000>>,GET_ENTITY_COORDS(player_ped_id()),FALSE)
heading = GET_RANDOM_FLOAT_IN_RANGE(heading-30.0,heading+30.0)
playerDistToHouse = GET_RANDOM_FLOAT_IN_RANGE(30.0,playerDistToHouse)
zped[iPed].vpos = <<2444.890381+(SIN(heading)*playerDistToHouse),4975.631836+(COS(heading)*playerDistToHouse),45.160000>>
endif
endif
endif
endif
endproc
// ================================================== Manage Dialogue ==========================================
ped_index rpedInSlot[10]
structPedsForConversation CHI2CONV
bool convAlreadyCalledThisFrame
func PED_INDEX rped_in_slot(int slot)
return rpedInSlot[slot]
ENDFUNC
PROC ADD_PED_FOR_DIALOGUE_EXTRA(int speakerIndex, ped_index speaker, string speakerLabel)
//may be a problem if aped gets added multiple times in different slots. Fix below:
int iJ
repeat count_of(rpedInSlot) iJ
if rpedInSlot[iJ] = speaker
//there should never be more than one situation for this
REMOVE_PED_FOR_DIALOGUE(CHI2CONV,iJ)
rpedInSlot[iJ] = null
endif
endrepeat
if rpedInSlot[speakerIndex] != null
REMOVE_PED_FOR_DIALOGUE(CHI2CONV,speakerIndex)
ENDIF
//if speakerIndex = 0
//SCRIPT_ASSERT("Use a non-zero speaker index") //cos this function won't work otherwise
//ENDIF
ADD_PED_FOR_DIALOGUE(CHI2CONV,speakerIndex,speaker, speakerLabel)
rpedInSlot[speakerIndex] = speaker
ENDPROC
/*
PROC REMOVE_INACTIVE_SPEAKERS(string thisConv, int iSp1,int iSp2, int iSp3, int iSp4)
cprintln(debug_trevor3, isp1," ",isp2," ",isp3," ",isp4)
int ij
IF IS_STRING_NULL_OR_EMPTY(remlastConv)
OR NOT ARE_STRINGS_EQUAL(remlastConv,thisConv)
remlastConv = thisConv
FOR ij = 0 to 15
IF CHI2CONV.PedInfo[ij].ActiveInConversation
IF ij != iSp1
AND ij != iSp2
AND ij != iSp3
AND ij != isp4
CPRINTLN(DEBUG_TREVOR3,"remove pexd at dialogue: ",Ij," label: ",CHI2CONV.PedInfo[ij].VoiceID)
REMOVE_PED_FOR_DIALOGUE(CHI2CONV,ij)
ENDIF
ENDIF
ENDFOR
ENDIF
ENDPROC*/
func bool PLAYER_CALL_CHAR_CELLPHONE_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)
IF NOT IS_MESSAGE_BEING_DISPLAYED()
OR IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
if rped_in_slot(speakerOne) != pedSpeakerOne or pedSpeakerOne = null
ADD_PED_FOR_DIALOGUE_EXTRA(speakerOne,pedSpeakerOne,speakerOneLabel)
ENDIF
if speakerTwo != -1
if rped_in_slot(speakerTwo) != pedSpeakerTwo or pedSpeakerTwo = null
ADD_PED_FOR_DIALOGUE_EXTRA(speakerTwo,pedSpeakerTwo,speakerTwoLabel)
ENDIF
ENDIF
if speakerThree != -1
if rped_in_slot(speakerThree) != pedSpeakerThree or pedSpeakerThree = null
ADD_PED_FOR_DIALOGUE_EXTRA(speakerThree,pedSpeakerThree,speakerThreeLabel)
ENDIF
ENDIF
IF CHAR_CALL_PLAYER_CELLPHONE(CHI2CONV,CHAR_ONEIL,"CHI2AUD",Label,CONV_PRIORITY_VERY_HIGH)
return TRUE
ENDIF
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)
IF NOT convAlreadyCalledThisFrame
convAlreadyCalledThisFrame = TRUE
convStore[0].speakerNo = speakerOne
convStore[0].pedIndex = pedSpeakerOne
convStore[0].speakerLabel = speakerOneLabel
convStore[1].speakerNo = speakerTwo
convStore[1].pedIndex = pedSpeakerTwo
convStore[1].speakerLabel = speakerTwoLabel
convStore[2].speakerNo = speakerThree
convStore[2].pedIndex = pedSpeakerThree
convStore[2].speakerLabel = speakerThreeLabel
convStore[3].speakerNo = speakerFour
convStore[3].pedIndex = pedSpeakerFour
convStore[3].speakerLabel = speakerFourLabel
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 NOT IS_PHONE_ACTIVE_OR_OVERLAPPING_HUD_ITEMS()
IF IS_MESSAGE_BEING_DISPLAYED()
ANd IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
if CREATE_CONVERSATION(CHI2CONV, "CHI2AUD", Label, convPriority,DO_NOT_DISPLAY_SUBTITLES)
bLastConvoWithoutSubtitles = TRUE
return true
ENDIF
else
if CREATE_CONVERSATION(CHI2CONV, "CHI2AUD", Label, convPriority)
bLastConvoWithoutSubtitles = FALSE
return true
ENDIF
endif
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_MEDIUM)
REMOVE_INACTIVE_SPEAKERS(Label,speakerOne,speakerTwo,speakerThree)
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(CHI2CONV, "CHI2AUD", Label, convPriority)
endproc
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,int speakerFour=-1,ped_index pedSpeakerFour=null, string speakerFourLabel = null,enumConversationPriority convPriority = CONV_PRIORITY_HIGH)
IF NOT IS_MESSAGE_BEING_DISPLAYED()
OR IS_SUBTITLE_PREFERENCE_SWITCHED_ON() = FALSE
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 CREATE_CONVERSATION_FROM_SPECIFIC_LINE(CHI2CONV, "CHI2AUD",Label,line,convPriority)
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
endfunc
PROC CONTROL_CONVERSATION_SUBTITLES()
If bLastConvoWithoutSubtitles
IF IS_STRING_NULL_OR_EMPTY(restartSubtitleRoot)
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF IS_SCRIPTED_CONVERSATION_ONGOING()
IF NOT IS_MESSAGE_BEING_DISPLAYED()
restartSubtitleLine = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
restartSubtitleRoot = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
restartSubtitleRoot = ""
////cprintln(DEBUG_TREVOR3,restartSubtitleLine) //trying to find why ped in basement repeats his "IM NEARLY FINSHED" line
if not IS_STRING_NULL_OR_EMPTY(restartSubtitleLine)
AND NOT ARE_STRINGS_EQUAL(restartSubtitleLine,"NULL")
restartSubtitleRoot = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
KILL_FACE_TO_FACE_CONVERSATION()
ELSE
bLastConvoWithoutSubtitles = FALSE
restartSubtitleRoot = ""
restartSubtitleLine = ""
ENDIF
ENDIF
ENDIF
ELSE
bLastConvoWithoutSubtitles = FALSE
restartSubtitleRoot = ""
restartSubtitleLine = ""
ENDIF
ELSE
IF IS_SCRIPTED_CONVERSATION_ONGOING()
IF NOT IS_CONV_ROOT_PLAYING(restartSubtitleRoot)
bLastConvoWithoutSubtitles = FALSE
restartSubtitleRoot = ""
restartSubtitleLine = ""
ENDIF
ENDIF
IF NOT IS_STRING_NULL_OR_EMPTY(restartSubtitleRoot)
////cprintln(DEBUG_TREVOR3,"REPLAY CONVERSATION WITH SUBS")
convStore[0] = convStore[0]
/*
IF CREATE_CONVERSATION_FROM_SPECIFIC_LINE_EXTRA(restartSubtitleRoot,restartSubtitleLine,convStore[0].speakerNo,convStore[0].pedIndex,convStore[0].speakerLabel,
convStore[1].speakerNo,convStore[1].pedIndex,convStore[1].speakerLabel,
convStore[2].speakerNo,convStore[2].pedIndex,convStore[2].speakerLabel,
convStore[3].speakerNo,convStore[3].pedIndex,convStore[3].speakerLabel)
restartSubtitleRoot = ""
restartSubtitleLine = ""
bLastConvoWithoutSubtitles = FALSE
ENDIF
*/
ENDIF
ENDIF
ENDIF
ENDPROC
/*
PROC manage_dialogue()
SWITCH AWARENESS_STATE
CASE AWARE_AND_ALERTING
// need bit in here to make another ped run to shout for backup if the ped doing it was killed.
FALLTHRU
CASE SEEKING_TREVOR
enumComments currentSweepComment
ped_index ped_speaking
currentSweepComment = SWEEP_DIALOGUE_ALERT(ped_speaking)
if currentSweepComment != COMMENT_NONE
nextSweepCommentToPlay = currentSweepComment
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
ENDIF
if nextSweepCommentToPlay != COMMENT_NONE
if not is_ped_injured(ped_speaking)
switch nextSweepCommentToPlay
case COMMENT_JUSTGONE
if CREATE_CONVERSATION_EXTRA("FLEE",1,ped_speaking,"CHIN2goon1")
nextSweepCommentToPlay = COMMENT_NONE
ENDIF
BREAK
case COMMENT_NOT_HERE
if CREATE_CONVERSATION_EXTRA("LOST",1,ped_speaking,"CHIN2goon1")
nextSweepCommentToPlay = COMMENT_NONE
ENDIF
BREAK
case COMMENT_SPOTTED
if CREATE_CONVERSATION_EXTRA("SPOT",1,ped_speaking,"CHIN2goon1")
nextSweepCommentToPlay = COMMENT_NONE
ENDIF
BREAK
ENDSWITCH
ELSE
nextSweepCommentToPlay = COMMENT_NONE
ENDIF
ENDIF
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
and currentSweepComment = COMMENT_NONE
if GET_GAME_TIMER() > CONVERSATION_GAP
int convPed1
int convPed2
convPed1 = get_ped_with_action(action_alerted,0)
convPed2 = get_ped_with_action(action_alerted,1)
if convPed1 >= 0 and convPed2 >= 0
IF NOT IS_PED_INJURED(zPED[convPed1].id) AND NOT IS_PED_INJURED(zPED[convPed2].id)
SWITCH LAST_CONVERSATION
CASE CONV_EMPTY
IF CREATE_CONVERSATION_EXTRA("SEEK",1,zPED[convPed1].id,"CHIN2goon1",2,zPED[convPed2].id,"CHIN2goon2")
LAST_CONVERSATION = CONV_SEEK
add_event(events_trigger_investigate_treeline)
ENDIF
BREAK
CASE CONV_SEEK
IF CREATE_CONVERSATION_EXTRA("PANC",1,zPED[convPed1].id,"CHIN2goon1",2,zPED[convPed2].id,"CHIN2goon2")
LAST_CONVERSATION = CONV_PANC
ENDIF
BREAK
CASE CONV_PANC
IF CREATE_CONVERSATION_EXTRA("PANC2",1,zPED[convPed1].id,"CHIN2goon1")
random_lines_played++
IF random_lines_played = 5
random_lines_played = 0
LAST_CONVERSATION = CONV_PANC2
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDIF
ENDIF
ENDIF
ELSE
CONVERSATION_GAP = GET_GAME_TIMER() + 2500
ENDIF
BREAK
ENDSWITCH
ENDPROC
*/
// ===================================================== Manage Events ==========================================
FUNC BOOL HAS_DIALOGUE_FINISHED(int iEntry,enumDialogue thisDia)
IF dia[iEntry].dial = thisDia
IF dia[iEntry].bCompleted
RETURN TRUE
ENDIF
ELSE
IF dia[iEntry].dial != DIA_NULL
SCRIPT_ASSERT("HAS_DIALOGUE_FINISHED() has wrong entry value")
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
PROC delete_all_house()
IF DOES_ENTITY_EXIST(BarrelVan)
DELETE_VEHICLE(BarrelVan)
ENDIF
int i
REPEAT count_of(zped) i
IF DOES_ENTITY_EXIST(zped[i].id)
delete_ped(zped[i].id)
ENDIF
IF DOES_ENTITY_EXIST(zped[i].obj)
DELETE_OBJECT(zped[i].obj)
ENDIF
zPED[i].action = action_none
zPED[i].lastaction = action_none
zPED[i].vpos = <<0,0,0>>
zPED[i].vPosB = <<0,0,0>>
zPED[i].placement = pos_none
zPED[i].actionFlag = 0
zPED[i].floatA = 0
zPED[i].floatB = 0
zPED[i].intA = 0
zPED[i].intB = 0
zPED[i].nearbyreactingPed = FALSE
zPED[i].pedOfInterest = 0
zPED[i].sniped = FALSE
zPED[i].alerted = FALSE
pedReactionState[i].State = STATE_SPAWN
ENDREPEAT
IF DOES_PICKUP_EXIST(health_pickup)
REMOVE_PICKUP(health_pickup)
ENDIF
REPEAT COUNT_OF(piPickups) i
IF DOES_PICKUP_EXIST(piPickups[i])
REMOVE_PICKUP(piPickups[i])
ENDIF
ENDREPEAT
REPEAT count_of(oCans) i
IF DOES_ENTITY_EXIST(oCans[i])
delete_object(oCans[i])
ENDIF
ENDREPEAT
RESET_REACT_ARRAY(pedReactionState,dChinese2,convBlock,12,<<2482.1965, 4975.3667, 44.7288>>,121,STATE_SPAWN)
ENDPROC
proc do_spawn_house()
//int j
add_event(events_force_farm_doors_drawing)
CLEAR_AREA(<<2479.874756,4980.867676,44.820522>>,60.0,TRUE)
BarrelVan = CREATE_VEHICLE(BURRITO, << 2479.5789, 4980.5029, 44.8051 >>, 341.8158)
SET_VEHICLE_COLOUR_COMBINATION(BarrelVan,1)
SET_VEHICLE_LIVERY(BarrelVan,2)
SET_VEHICLE_ON_GROUND_PROPERLY(BarrelVan)
IF missionStage < get_to_house
prep_ped(role_guard_outside,action_spawn,pos_barrels_1)
prep_ped(role_guard_outside,action_spawn,pos_barrels_2)
prep_ped(role_guard_outside,action_spawn,pos_balcony_veranda_walk) //patrolling balcony
prep_ped(role_guard_outside,action_spawn,pos_balcony_doorway) //on balcony chats to patroling ped
prep_ped(role_guard_outside,action_spawn,pos_garden_chat_1)
prep_ped(role_guard_outside,action_spawn,pos_garden_chat_2)
prep_ped(role_guard_outside,action_spawn,pos_porch) //on lower porch
prep_ped(role_guard_outside,action_spawn,pos_balcony_far_left) //on balcony to left
prep_ped(role_guard_outside,action_spawn,pos_shooting_bottle_1)
prep_ped(role_guard_outside,action_spawn,pos_shooting_bottle_2)
// prep_ped(role_guard_outside,action_spawn,pos_pissing_ped)
endif
if missionStage < inside_house
prep_ped(role_guard_house,action_spawn,pos_inside_right_window)
prep_ped(role_guard_house,action_spawn,pos_inside_utility_room)
prep_ped(role_guard_house,action_spawn,pos_inside_kitchen1)
prep_ped(role_guard_house,action_spawn,pos_inside_kitchen2)
endif
if missionStage < do_petrol_trail
prep_ped(role_guard_house,action_spawn,pos_inside_seated1)
prep_ped(role_guard_house,action_spawn,pos_inside_seated2)
prep_ped(role_guard_house,action_spawn,pos_inside_seated3)
prep_ped(role_guard_house,action_spawn,pos_inside_cards1)
prep_ped(role_guard_house,action_spawn,pos_inside_cards2)
prep_ped(role_guard_house,action_spawn,pos_inside_cards3)
prep_ped(role_guard_house,action_spawn,pos_inside_bystairs1)
// prep_ped(role_guard_house,action_spawn,pos_inside_bystairs2)
prep_ped(role_innocent,action_spawn,pos_innocent_drugden)
// prep_ped(role_innocent,action_spawn,pos_innocent_chef)
endif
if missionStage = do_petrol_trail
REQUEST_ANIM_DICT("DEAD")
WHILE NOT HAS_ANIM_DICT_LOADED("DEAD")
safewait(323)
ENDWHILE
zped[15].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01, <<2436.9011, 4959.0996, 45.8106>>, 209.7559)
TASK_PLAY_ANIM(zped[15].id,"DEAD","DEAD_C",INSTANT_BLEND_IN,INSTANT_BLEND_OUT,-1,AF_LOOPING)
FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[15].id,true)
DISABLE_PED_PAIN_AUDIO(zped[15].id,true)
zped[16].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_01,<<2440.2661, 4970.7051, 45.8306>>, 15.7982)
TASK_PLAY_ANIM(zped[16].id,"DEAD","DEAD_D",INSTANT_BLEND_IN,INSTANT_BLEND_OUT,-1,AF_LOOPING)
FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[16].id,true)
DISABLE_PED_PAIN_AUDIO(zped[16].id,true)
zped[17].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_02,<<2443.4197, 4974.5234, 45.8106>>, 121.8340)
TASK_PLAY_ANIM(zped[17].id,"DEAD","DEAD_E",INSTANT_BLEND_IN,INSTANT_BLEND_OUT,-1,AF_LOOPING)
FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[17].id,true)
DISABLE_PED_PAIN_AUDIO(zped[17].id,true)
zped[18].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01,<<2448.8877, 4971.5605, 45.8106>>, 194.7676)
TASK_PLAY_ANIM(zped[18].id,"DEAD","DEAD_G",INSTANT_BLEND_IN,INSTANT_BLEND_OUT,-1,AF_LOOPING)
FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[18].id,true)
DISABLE_PED_PAIN_AUDIO(zped[18].id,true)
WHILE NOT IS_ENTITY_PLAYING_ANIM(zped[15].id,"DEAD","DEAD_C")
OR NOT IS_ENTITY_PLAYING_ANIM(zped[16].id,"DEAD","DEAD_D")
OR NOT IS_ENTITY_PLAYING_ANIM(zped[17].id,"DEAD","DEAD_E")
OR NOT IS_ENTITY_PLAYING_ANIM(zped[18].id,"DEAD","DEAD_G")
safewait(54343)
IF NOT IS_PED_INJURED(zped[15].id)
AND NOT IS_PED_INJURED(zped[16].id)
AND NOT IS_PED_INJURED(zped[17].id)
AND NOT IS_PED_INJURED(zped[18].id)
ENDIF
ENDWHILE
SET_ENTITY_HEALTH(zped[15].id,0)
SET_ENTITY_HEALTH(zped[16].id,0)
SET_ENTITY_HEALTH(zped[17].id,0)
SET_ENTITY_HEALTH(zped[18].id,0)
REMOVE_ANIM_DICT("DEAD")
endif
//cans
//CLEAR_AREA(<<2494.6641, 4970.2280, 44.5430>>,5.0,true)
add_event(events_spawn_bottles)
int PlacementFlags
PlacementFlags = 0
SET_BIT(PlacementFlags, enum_to_int(PLACEMENT_FLAG_SNAP_TO_GROUND))
SET_BIT(PlacementFlags, enum_to_int(PLACEMENT_FLAG_UPRIGHT))
SET_BIT(PlacementFlags, enum_to_int(PLACEMENT_FLAG_FIXED))
SET_BIT(PlacementFlags, ENUM_TO_INT(PLACEMENT_FLAG_REGENERATES)) // You might not want this?
SET_BIT(PlacementFlags, ENUM_TO_INT(PLACEMENT_FLAG_ORIENT_TO_GROUND))
health_pickup = CREATE_PICKUP(PICKUP_HEALTH_STANDARD,<<2446.8962, 4990.9722, 45.5477>>,PlacementFlags)
//navemsh block around NG bush
IF NOT DOES_NAVMESH_BLOCKING_OBJECT_EXIST(navblockA)
navblockA = ADD_NAVMESH_BLOCKING_OBJECT(<<2464.956299,4990.050781,44.484150>>,<<2.500000,3.125000,2.062500>>,0)
ENDIF
cprintln(debug_Trevor3,"Add pickup")
piPickups[0] = CREATE_PICKUP_ROTATE(PICKUP_HEALTH_STANDARD, <<2444.4974, 4975.9562, 50.5650>>, << 0,0,100 >>, PlacementFlags)
ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(piPickups[0], "V_8_Bed1Rm")
piPickups[1] = CREATE_PICKUP_ROTATE(PICKUP_HEALTH_STANDARD, <<2443.4000, 4978.5199, 46.8107>>, << 0,0,100 >>, PlacementFlags)
ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(piPickups[1], "V_8_KitchnRm")
piPickups[3] = CREATE_PICKUP_ROTATE(PICKUP_HEALTH_STANDARD, << 2441.0281, 4963.8511, 46.5605 >>, << 0, 0, -80.6 >>, PlacementFlags)
ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(piPickups[3], "V_8_StudyRm")
piPickups[4] = CREATE_PICKUP_ROTATE(PICKUP_HEALTH_STANDARD, << 2435.1650, 4971.4668, 45.9100 >>, << 0, 0, -50.4 >>, PlacementFlags)
ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(piPickups[4], "V_8_Hall2Rm")
// Set sawn-off placement flags
PlacementFlags = 0
SET_BIT(PlacementFlags, ENUM_TO_INT(PLACEMENT_FLAG_REGENERATES)) // You might not want this?
SET_BIT(PlacementFlags, ENUM_TO_INT(PLACEMENT_FLAG_FIXED))
SET_BIT(PlacementFlags, ENUM_TO_INT(PLACEMENT_FLAG_SNAP_TO_GROUND))
CPRINTLN(debug_trevor3,"Add pickup shotgun")
piPickups[2] = CREATE_PICKUP_ROTATE(PICKUP_WEAPON_SAWNOFFSHOTGUN, <<2438.7878, 4970.7896, 50.5650>>, <<0,0,0>>, PlacementFlags)
ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(piPickups[2], "V_8_Bed1Rm")
ENDPROC
proc manage_events()
int iE
REPEAT COUNT_OF(events) iE
if events[iE].active = TRUE
switch events[iE].event
case events_resolve_vehicles_at_start
switch events[iE].flag
case 0
IF IS_CUTSCENE_PLAYING()
events[iE].flag++
ENDIF
BREAK
CASE 1
////cprintln(debug_Trevor3,"Resolve vehicles")
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<1992.804077,3053.310303,45.777145>>, <<1989.681274,3055.295410,49.090008>>, 3.250000,<<1995.2018, 3062.1565, 46.0491>>, 59.7235,<<10,20,9>>) //position where chinese peds are after cutscene
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<1994.427368,3045.135986,45.340134>>, <<1981.902832,3053.235107,49.791527>>, 9.500000,<<1995.2018, 3062.1565, 46.0491>>, 59.7235,<<10,20,9>>) //inside the bar, incase player drives bike in
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<1985.403687,3075.057129,44.849529>>, <<2017.101685,3057.434814,53.718960>>, 33.000000,<<1995.2018, 3062.1565, 46.0491>>, 59.7235,<<10,20,9>>) //car park area, as per bug 1001450
vehPlayer = GET_PLAYERS_LAST_VEHICLE()
IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer)
AND GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(vehPlayer,<<1995.2018, 3062.1565, 46.0491>>) < 5.0
REQUEST_VEHICLE_ASSET(get_entity_model(vehPlayer))
ENDIF
// CLEAR_AREA(GET_ENTITY_COORDS(player_ped_id()),15,TRUE) //this was removing player car
// CLEAR_PED_TASKS_IMMEDIATELY(player_ped_id()) //removed this due to bug 1234882
events[iE].active = FALSE
break
endswitch
break
case events_trevor_phonecall
IF missionStage >=farm_cutscene
events[iE].flag = CLEANUP
ENDIF
switch events[iE].flag
case CLEANUP
KILL_ANY_CONVERSATION()
KILL_PHONE_CONVERSATION()
//////cprintln(DEBUG_TREVOR3,"KIL PHONE CALL")
BREAK
case 0
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2442.55, 4967.51, 54.35>>) < 1300
OR IS_CALLING_CONTACT(CHAR_ONEIL)
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2442.55, 4967.51, 54.35>>) > 500
//If IS_MESSAGE_BEING_DISPLAYED()
events[iE].flag++
ENDIF
ENDIF
BREAK
case 1
//If not IS_MESSAGE_BEING_DISPLAYED()
//need to set up speakers for this
//////cprintln(DEBUG_TREVOR3,"LOADING PHONE CALL")
if PLAYER_CALL_CHAR_CELLPHONE_EXTRA("PHN2",1,player_ped_id(),"Trevor",8,null,"ONEIL")
//////cprintln(DEBUG_TREVOR3,"PHONE CALL PLAYING")
events[iE].flag++
ENDIF
//ENDIF
BREAK
case 2
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION_EXTRA("CHI2_ONEILPH",1,player_ped_id(),"Trevor") //CHI2_ONEILPH
events[iE].active = FALSE
ENDIF
ENDIF
break
ENDSWITCH
BREAK
case events_trevor_rants
//IF NOT is_event_active(events_trevor_phonecall)
IF missionStage >=farm_cutscene
events[iE].flag = CLEANUP
events[iE].active = FALSE
ENDIF
switch events[iE].flag
case 0
IF CREATE_CONVERSATION_EXTRA("CHI2_boom",1,player_ped_id(),"Trevor")
events[iE].flag++
ENDIF
iRandomCounter = 0
events[iE].intA = GET_GAME_TIMER() + 3000
//events[iE].flag++
break
CASE 1
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF NOT IS_PLAYER_IN_ANY_SHOP()
IF NOT (IS_PED_IN_ANY_VEHICLE(player_ped_id()))
IF GET_GAME_TIMER() > events[iE].intA
IF iRandomCounter < 13
IF CREATE_CONVERSATION_EXTRA("DRI1",2,player_ped_id(),"Trevor")
iRandomCounter++
events[iE].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(4000,10000)
ENDIF
ELSE
events[iE].active = FALSE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
//ENDIF
break
case events_stop_and_leave_vehicle
if IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
VEHICLE_INDEX thisVeh
thisVeh = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())
IF NOT IS_ENTITY_IN_AIR(thisVeh)
if STOP_MY_VEHICLE(6,2)
TASK_LEAVE_ANY_VEHICLE(PLAYER_PED_ID())
events[iE].active = FALSE
ENDIF
ENDIF
ELSE
events[iE].active = FALSE
ENDIF
BREAK
case events_spawn_house
switch events[iE].flag
case -20
if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),<< 2460.0728, 4964.1758, 46.2405 >>) < 250.0
REQUEST_MODEL(A_M_M_Hillbilly_01)
REQUEST_MODEL(PROP_PALLET_PILE_01)
events[iE].flag++
endif
break
case -19
IF HAS_MODEL_LOADED(A_M_M_Hillbilly_01)
AND HAS_MODEL_LOADED(PROP_PALLET_PILE_01)
REQUEST_MODEL(A_M_M_Hillbilly_02)
events[iE].flag++
ENDIF
break
case -18
IF HAS_MODEL_LOADED(A_M_M_Hillbilly_02)
REQUEST_MODEL(BURRITO)
events[iE].flag++
ENDIF
BREAK
CASE -17
IF HAS_MODEL_LOADED(BURRITO)
REQUEST_MODEL(A_M_Y_MethHead_01)
events[iE].flag++
ENDIF
BREAK
CASE -16
IF HAS_MODEL_LOADED(A_M_Y_MethHead_01)
REQUEST_MODEL(PROP_LD_CAN_01)
REQUEST_MODEL(Prop_CS_Fertilizer)
REQUEST_MODEL(PROP_CS_BEER_BOT_01)
REQUEST_MODEL(PROP_PHONE_ING)
REQUEST_MODEL(DUBSTA)
REQUEST_ANIM_DICT("misschinese2_bank5")
REQUEST_ANIM_DICT("misschinese2_bank1")
REQUEST_ANIM_DICT("reaction@male_stand@big_variations@b")
REQUEST_ANIM_DICT("reaction@male_stand@big_intro@left")
REQUEST_ANIM_DICT("reaction@male_stand@big_intro@right")
REQUEST_ANIM_DICT("reaction@male_stand@big_intro@backward")
REQUEST_ANIM_DICT("misschinese2_barrelRoll")
REQUEST_ANIM_SET("move_m@gangster@var_e")
REQUEST_ANIM_SET("move_m@gangster@var_f")
REQUEST_ANIM_SET("move_m@gangster@generic")
events[iE].flag++
ENDIF
break
CASE -15
IF HAS_MODEL_LOADED(DUBSTA)
add_event(events_pin_interior)
add_event(events_remove_vehicles_and_peds)
SET_ROADS_IN_AREA(<<2469.9854, 4961.0449, 44.8113>>-<<100,100,100>>,<<2469.9854, 4961.0449, 44.8113>>+<<100,100,100>>,FALSE)
events[iE].flag=1
ENDIF
BREAK
case 0
if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),<< 2460.0728, 4964.1758, 46.2405 >>) < 250.0
REQUEST_MODEL(A_M_M_Hillbilly_01)
REQUEST_MODEL(A_M_M_Hillbilly_02)
REQUEST_MODEL(A_M_Y_MethHead_01)
request_model(PROP_LD_CAN_01)
REQUEST_MODEL(Prop_CS_Fertilizer)
REQUEST_MODEL(BURRITO)
REQUEST_MODEL(PROP_CS_BEER_BOT_01)
IF missionStage <= farm_cutscene
REQUEST_MODEL(PROP_PHONE_ING)
REQUEST_MODEL(DUBSTA)
ENDIF
REQUEST_ANIM_DICT("misschinese2_bank5")
REQUEST_ANIM_DICT("misschinese2_bank1")
REQUEST_ANIM_DICT("reaction@male_stand@big_variations@b")
REQUEST_ANIM_DICT("reaction@male_stand@big_intro@left")
REQUEST_ANIM_DICT("reaction@male_stand@big_intro@right")
REQUEST_ANIM_DICT("reaction@male_stand@big_intro@backward")
REQUEST_ANIM_DICT("misschinese2_barrelRoll")
REQUEST_ANIM_SET("move_m@gangster@var_e")
REQUEST_ANIM_SET("move_m@gangster@var_f")
REQUEST_ANIM_SET("move_m@gangster@generic")
add_event(events_pin_interior)
add_event(events_remove_vehicles_and_peds)
SET_ROADS_IN_AREA(<<2469.9854, 4961.0449, 44.8113>>-<<100,100,100>>,<<2469.9854, 4961.0449, 44.8113>>+<<100,100,100>>,FALSE)
events[iE].flag++
ENDIF
BREAK
case 1
if HAS_MODEL_LOADED(A_M_M_Hillbilly_01)
and HAS_MODEL_LOADED(A_M_M_Hillbilly_02)
and HAS_MODEL_LOADED(A_M_Y_MethHead_01)
and HAS_MODEL_LOADED(BURRITO)
and HAS_MODEL_LOADED(Prop_CS_Fertilizer)
and HAS_MODEL_LOADED(PROP_CS_BEER_BOT_01)
and has_model_loaded(PROP_LD_CAN_01)
and HAS_ANIM_DICT_LOADED("misschinese2_bank5")
and HAS_ANIM_DICT_LOADED("misschinese2_bank1")
and HAS_ANIM_DICT_LOADED("misschinese2_barrelRoll")
and HAS_ANIM_DICT_LOADED("reaction@male_stand@big_variations@b")
and HAS_ANIM_DICT_LOADED("reaction@male_stand@big_intro@left")
and HAS_ANIM_DICT_LOADED("reaction@male_stand@big_intro@right")
and HAS_ANIM_DICT_LOADED("reaction@male_stand@big_intro@backward")
and ((missionStage <= farm_cutscene AND has_model_loaded(PROP_PHONE_ING)) OR missionStage > farm_cutscene)
and ((missionStage <= farm_cutscene AND has_model_loaded(DUBSTA)) OR missionStage > farm_cutscene)
events[iE].flag=4
ENDIF
if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),<< 2460.0728, 4964.1758, 46.2405 >>) > 300.0
SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_Hillbilly_01)
SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_Hillbilly_02)
SET_MODEL_AS_NO_LONGER_NEEDED(A_M_Y_MethHead_01)
SET_MODEL_AS_NO_LONGER_NEEDED(BURRITO)
SET_MODEL_AS_NO_LONGER_NEEDED(Prop_CS_Fertilizer)
SET_MODEL_AS_NO_LONGER_NEEDED(PROP_CS_BEER_BOT_01)
SET_MODEL_AS_NO_LONGER_NEEDED(PROP_LD_CAN_01)
REMOVE_ANIM_DICT("misschinese2_bank5")
REMOVE_ANIM_DICT("misschinese2_bank1")
REMOVE_ANIM_DICT("reaction@male_stand@big_variations@b")
REMOVE_ANIM_DICT("reaction@male_stand@big_intro@left")
REMOVE_ANIM_DICT("reaction@male_stand@big_intro@right")
REMOVE_ANIM_DICT("reaction@male_stand@big_intro@backward")
REMOVE_ANIM_DICT("misschinese2_barrelRoll")
REMOVE_ANIM_SET("move_m@gangster@var_e")
REMOVE_ANIM_SET("move_m@gangster@var_f")
REMOVE_ANIM_SET("move_m@gangster@generic")
SET_MODEL_AS_NO_LONGER_NEEDED(PROP_PHONE_ING)
SET_MODEL_AS_NO_LONGER_NEEDED(DUBSTA)
SET_ROADS_IN_AREA(<<2469.9854, 4961.0449, 44.8113>>-<<100,100,100>>,<<2469.9854, 4961.0449, 44.8113>>+<<100,100,100>>,TRUE)
kill_event(events_pin_interior)
kill_event(events_remove_vehicles_and_peds)
IF int_farm != NULL
UNPIN_INTERIOR(int_farm)
int_farm = null
ENDIF
events[iE].flag=-20
ENDIF
BREAK/*
case 2
houseInterior = GET_INTERIOR_AT_COORDS(<< 2440.3916, 4967.5122, 52.3472 >>)
IF IS_VALID_INTERIOR(houseInterior) //and IS_INTERIOR_READY(interior)
PIN_INTERIOR_IN_MEMORY(houseInterior)
events[iE].flag++
ENDIF
BREAK
case 3
IF IS_INTERIOR_READY(houseInterior)
events[iE].flag++
endif
break*/
case 4
if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),<< 2460.0728, 4964.1758, 46.2405 >>) > 300.0
events[iE].flag=1
ELSe
IF missionStage >= farm_cutscene
AND NOT is_event_active(events_pin_interior)
do_spawn_house()
//events[iE].active = FALSE
//events[iE].flag=5
events[iE].active = FALSE
ENDIF
ENDIF
break
case 5
break
ENDSWITCH
BREAK
case events_pin_interior
//adding because of bug 499704
switch events[iE].flag
CASE CLEANUP
IF int_farm != null
UNPIN_INTERIOR(int_farm)
endif
int_farm = null
BREAK
case 0
int_farm = GET_INTERIOR_AT_COORDS(<< 2440.4924, 4969.9482, 52.5247 >>)
events[iE].flag++
break
case 1
IF NOT IS_VALID_INTERIOR(int_farm)
int_farm = GET_INTERIOR_AT_COORDS(<< 2440.4924, 4969.9482, 52.5247 >>)
ELSE
PIN_INTERIOR_IN_MEMORY(int_farm)
events[iE].flag++
ENDIF
break
case 2
// IF IS_INTERIOR_READY(int_farm)
// SET_INTERIOR_ACTIVE(int_farm, TRUE)
events[iE].active = false
// ENDIF
break
ENDSWITCH
break
case events_reset_house_rayfire
SWITCH events[iE].flag
CASE 0
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE, BUILDINGSTATE_NORMAL)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP1, BUILDINGSTATE_NORMAL)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP2, BUILDINGSTATE_NORMAL)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP3, BUILDINGSTATE_NORMAL)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_INTERIOR, BUILDINGSTATE_DESTROYED)
events[iE].flag++
BREAK
CASE 1
BREAK
/*
rfThisRayfire = GET_RAYFIRE_MAP_OBJECT(<<2457.15, 4968.79, 48.677>>, 45, "DES_FarmHs")
IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfThisRayfire)
//SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_STARTING)
// SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_STARTING)
////cprintln(DEBUG_TREVOR3,"RESET MODEL GLASS")
REMOVE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_ret_fhglassfrm,false)
REMOVE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGLASSFRMSML,false)
REMOVE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGlassairfrm,false)
events[iE].active = FALSE
endif*/
ENDSWITCH
BREAK
CASE events_release_bottle_shooting_anims
IF events[iE].flag = 0 //so it won't run this in cleanup
int iPed
iPed = get_ped_with_placement(pos_shooting_bottle_1)
IF iPed != -1
IF NOT IS_PED_INJURED(zped[iPed].id)
IF GET_SCRIPT_TASK_STATUS(zped[iPed].id,script_TASK_SYNCHRONIZED_SCENE) = FINISHED_TASK
iPed = get_ped_with_placement(pos_shooting_bottle_2)
IF iPed != -1
IF NOT IS_PED_INJURED(zped[iPed].id)
IF GET_SCRIPT_TASK_STATUS(zped[iPed].id,script_TASK_SYNCHRONIZED_SCENE) = FINISHED_TASK
REMOVE_ANIM_DICT("misschinese2_bank5")
events[iE].active = FALSE
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
iPed = get_ped_with_placement(pos_shooting_bottle_2)
IF iPed != -1
IF NOT IS_PED_INJURED(zped[iPed].id)
IF GET_SCRIPT_TASK_STATUS(zped[iPed].id,script_TASK_SYNCHRONIZED_SCENE) = FINISHED_TASK
REMOVE_ANIM_DICT("misschinese2_bank5")
events[iE].active = FALSE
ENDIF
ELSE
REMOVE_ANIM_DICT("misschinese2_bank5")
ENDIF
ENDIF
ENDIF
ENDIF
ENDIf
BREAK
CASE events_remove_vehicles_and_peds
switch events[iE].flag
case -1 //cleanup
REMOVE_SCENARIO_BLOCKING_AREAS()
BREAK
case 0
ADD_SCENARIO_BLOCKING_AREA(<<2445.654053,4972.897461,58.617897>>-<<100,100,100>>,<<2445.654053,4972.897461,58.617897>>+<<100,100,100>>)
events[iE].flag++
BREAK
CASE 1
IF NOT IS_PED_INJURED(player_ped_id())
if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID(),FALSE),<<2473.061035,4981.482422,24.645840>> ) < 250.0
events[iE].flag++
ENDIF
ENDIF
BREAK
case 2
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 GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID(),FALSE),<<2473.061035,4981.482422,24.645840>> ) > 250.0
events[iE].flag++
ENDIF
BREAK
ENDSWITCH
BREAK
CASE events_control_dispatch
switch events[iE].flag
case -1 //cleanup
ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT,TRUE)
ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT,TRUE)
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE,TRUE)
ENABLE_DISPATCH_SERVICE(DT_POLICE_VEHICLE_REQUEST,TRUE)
BREAK
case 0
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(PLAYER_PED_ID(),<< 2578.5234, 4982.2837, 51.4416 >>) < 500.0
ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT,FALSE)
ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT,FALSE)
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE,FALSE)
ENABLE_DISPATCH_SERVICE(DT_POLICE_VEHICLE_REQUEST,FALSE)
events[iE].flag++
endif
break
case 1
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(PLAYER_PED_ID(),<< 2578.5234, 4982.2837, 51.4416 >>) > 500.0
ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT,TRUE)
ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT,TRUE)
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE,TRUE)
ENABLE_DISPATCH_SERVICE(DT_POLICE_VEHICLE_REQUEST,TRUE)
events[iE].flag=0
endif
break
ENDSWITCH
break
case events_continuous_stats_tracking
switch events[iE].flag
CASE 0
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(player_ped_id(),CHI2_UNMARKED)
events[iE].flag++
BREAK
CASE 1
IF IS_PED_IN_ANY_VEHICLE(player_ped_id())
vehicle_index aVeh
aVeh = GET_VEHICLE_PED_IS_IN(player_ped_id())
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(aVeh,CHI2_CAR_DAMAGE)
INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(aVeh)
events[iE].flag++
ENDIF
BREAK
CASE 2
IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id())
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(null,CHI2_CAR_DAMAGE)
INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(null)
events[iE].flag=1
ENDIF
BREAK
ENDSWITCH
break
case events_petrol_help
/*
switch events[iE].flag
case 0
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
PRINT_HELP("FRMPET2")
events[iE].active=false
endif
break
ENDSWITCH
*/
break
case events_explode_petrol_can
/*
IF DOES_ENTITY_EXIST(oFuelCan)
IF NOT IS_ENTITY_DEAD(oFuelCan)
IF HAS_ENTITY_BEEN_DAMAGED_BY_ANY_PED(oFuelCan)
ADD_EXPLOSION(GET_ENTITY_COORDS(oFuelCan),EXP_TAG_HI_OCTANE)
SET_ENTITY_HEALTH(oFuelCan,0)
events[iE].active = false
ENDIF
ENDIF
ENDIF*/
break
case events_Trevor_walks_in_final_cutscene
switch events[iE].flag
case 0
#if IS_DEBUG_BUILD
IF bExplodeHouseLoopShort
events[iE].intA = 0
ELSE
events[iE].intA = get_game_timer()+6800
ENDIF
#endif
#IF IS_FINAL_BUILD
events[iE].intA = get_game_timer()+7000
#endif
events[iE].flag++
break
case 1
if get_game_timer() > events[iE].intA
SET_ENTITY_COORDS(player_ped_id(),<< 2466.3850, 4953.0957, 44.1228 >>)
SET_ENTITY_HEADING(player_ped_id(),221)
TASK_GO_STRAIGHT_TO_COORD(player_ped_id(),<< 2475.0747, 4945.9653, 44.0228 >>,pedmove_walk)
FORCE_PED_MOTION_STATE(player_ped_id(),MS_ON_FOOT_WALK)
events[iE].active = false
endif
break
ENDSWITCH
break
case events_play_audio_stream
IF LOAD_STREAM("CHINESE2_FARMHOUSE_EXPLOSION_MOLOTOV_MASTER")
PLAY_STREAM_FRONTEND()
events[iE].active = false
ENDIF
BREAK
case events_house_explodes_rayfire
switch events[iE].flag
CASE 0
rfThisRayfire = GET_RAYFIRE_MAP_OBJECT(<<2457.15, 4968.79, 48.677>>, 45, "DES_FarmHs")
IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfThisRayfire)
SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_STARTING)
events[iE].flag++
endif
break
case 1
IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire) = RFMO_STATE_START
SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_PRIMING)
events[iE].flag++
ENDIF
break
case 2
IF bRayfireTriggered=TRUE
IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire) = RFMO_STATE_PRIMED
SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_START_ANIM)
START_AUDIO_SCENE("CHI_2_RAYFIRE")
CREATE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_ret_fhglassfrm,true)
CREATE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGLASSFRMSML,true)
CREATE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGlassairfrm,false)
events[iE].flag++
ENDIF
ENDIF
BREAK
case 3
playmusic("CHN2_EXPLODE",TRUE,"CHN2_EXPLODE")
events[iE].active=false
break
ENDSWITCH
BREAK
case events_check_petrol_trail
IF events[iE].flag != CLEANUP
IF NOT HAS_PED_GOT_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN)
OR NOT DOES_PICKUP_EXIST(pickup_gas)
oGasCan = GET_CLOSEST_OBJECT_OF_TYPE(GET_ENTITY_COORDS(player_ped_id()),20.0,GET_WEAPONTYPE_MODEL(WEAPONTYPE_PETROLCAN),FALSE)
IF oGasCan != null
if does_blip_exist(missionBlip)
REMOVE_BLIP(missionBlip)
endif
missionBlip = CREATE_BLIP_FOR_OBJECT(oGasCan)
HIDE_GAS_TRAIL()
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME)
endif
ELSE
events[iE].intA = 0
HIDE_GAS_TRAIL(FALSE)
if does_blip_exist(missionBlip)
REMOVE_BLIP(missionBlip)
endif
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(CHI2_GAS_POUR_TIME)
IF gasInCan = 0
gasInCan = GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN)
ELSE
INFORM_MISSION_STATS_OF_INCREMENT(CHI2_GAS_USED,gasInCan - GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN),TRUE)
ENDIF
ENDIF
IF IS_GAS_TRAIL_COMPLETE()
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME)
events[iE].active = false
add_event(events_check_player_out_front)
ENDIF
ENDIF
break
case events_check_trail_burning_safe
//gas trail is burning
//player is not inside house
//point from fire to cellar is a complete trail
BREAK
case events_check_player_out_front
IF IS_ENTITY_IN_ANGLED_AREA(player_ped_id(), <<2447.671387,4951.438477,43.255756>>, <<2454.663818,4957.855957,47.891174>>, 6.812500)
and GET_GAME_TIMER() > events[iE].intA
IF DOES_BLIP_EXIST(missionBlip)
REMOVE_BLIP(missionBlip)
endif
events[iE].active = FALSE
else
switch events[iE].flag
case 0
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
PRINT("FRMSHP",DEFAULT_GOD_TEXT_TIME,1)
events[iE].intA = GET_GAME_TIMER() + 2000
missionBlip = CREATE_BLIP_FOR_COORD(<<2450,4954,45>>)
events[iE].flag++
ENDIF
break
endswitch
endif
break
case events_detach_barrels_from_peds
//0 = does barrel 1 ped exist
//1 = does barrel 2 ped exist
//0 = barrel ped 1 has barrel atttached and is playing anim
//1 = barrel ped 2 has barrel attached and is playing anim
//
IF NOT IS_BIT_SET(events[iE].intA,0)
iBarrels1 = get_ped_with_placement(pos_barrels_1)
If iBarrels1 != -1
set_bit(events[iE].intA,0)
ENDIF
ELSE
IF NOT IS_BIT_SET(events[iE].intA,1) //barrel not attached
IF NOT IS_PED_INJURED(zped[iBarrels1].id)
AND DOES_ENTITY_EXIST(zPED[iBarrels1].obj)
IF IS_ENTITY_PLAYING_ANIM(zPED[iBarrels1].id, "misschinese2_barrelroll", "barrel_roll_loop_B")
AND IS_ENTITY_ATTACHED(zPED[iBarrels1].obj)
set_bit(events[iE].intA,1)
ENDIF
ENDIF
ELSE
IF NOT IS_BIT_SET(events[iE].intA,2) //barrel not attached
IF IS_PED_INJURED(zPED[iBarrels1].id)
SET_BIT(events[iE].intA,2)
ENDIF
IF NOT IS_PED_INJURED(zPED[iBarrels1].id)
IF NOT IS_ENTITY_PLAYING_ANIM(zPED[iBarrels1].id, "misschinese2_barrelroll", "barrel_roll_loop_B") //this alone won't work as peds are still considered playing an anim even when they're reactin
SET_BIT(events[iE].intA,2)
ENDIF
IF GET_SCRIPT_TASK_STATUS(zPED[iBarrels1].id,script_task_play_anim) = DORMANT_TASK
OR GET_SCRIPT_TASK_STATUS(zPED[iBarrels1].id,script_task_play_anim) = FINISHED_TASK
SET_BIT(events[iE].intA,2)
ENDIF
IF IS_PED_IN_COMBAT(zPED[iBarrels1].id,player_ped_id())
OR pedReactionState[iBarrels1].state > state_ambient
SET_BIT(events[iE].intA,2)
ENDIF
ENDIF
ELSE
IF DOES_ENTITY_EXIST(zPED[iBarrels1].obj)
AND IS_ENTITY_ATTACHED(zPED[iBarrels1].obj)
////cprintln(debug_Trevor3,"detach barrel 1")
DETACH_ENTITY(zPED[iBarrels1].obj,FALSE,FALSE)
////cprintln(debug_Trevor3,"barrel 1 detached")
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT IS_BIT_SET(events[iE].intA,4)
iBarrels2 = get_ped_with_placement(pos_barrels_2)
If iBarrels2 != -1
set_bit(events[iE].intA,4)
ENDIF
ELSE
IF NOT IS_BIT_SET(events[iE].intA,5) //barrel not attached
IF NOT IS_PED_INJURED(zped[iBarrels2].id)
IF DOES_ENTITY_EXIST(zPED[iBarrels2].obj)
IF IS_ENTITY_PLAYING_ANIM(zPED[iBarrels2].id, "misschinese2_barrelroll", "barrel_roll_loop_A")
IF IS_ENTITY_ATTACHED(zPED[iBarrels2].obj)
set_bit(events[iE].intA,5)
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF NOT IS_BIT_SET(events[iE].intA,6) //barrel not attached
IF IS_PED_INJURED(zPED[iBarrels2].id)
SET_BIT(events[iE].intA,6)
ENDIF
IF NOT IS_PED_INJURED(zPED[iBarrels2].id)
IF NOT IS_ENTITY_PLAYING_ANIM(zPED[iBarrels2].id, "misschinese2_barrelroll", "barrel_roll_loop_A") //this alone won't work as peds are still considered playing an anim even when they're reactin
SET_BIT(events[iE].intA,6)
ENDIF
IF GET_SCRIPT_TASK_STATUS(zPED[iBarrels2].id,script_task_play_anim) = DORMANT_TASK
OR GET_SCRIPT_TASK_STATUS(zPED[iBarrels2].id,script_task_play_anim) = FINISHED_TASK
SET_BIT(events[iE].intA,6)
ENDIF
IF IS_PED_IN_COMBAT(zPED[iBarrels2].id,player_ped_id())
OR pedReactionState[iBarrels2].state > state_ambient
SET_BIT(events[iE].intA,6)
ENDIF
ENDIF
ELSE
IF DOES_ENTITY_EXIST(zPED[iBarrels2].obj)
AND IS_ENTITY_ATTACHED(zPED[iBarrels2].obj)
////cprintln(debug_Trevor3,"detach barrel 2")
DETACH_ENTITY(zPED[iBarrels2].obj,FALSE,FALSE)
////cprintln(debug_Trevor3,"barrel 2 detached")
ENDIF
ENDIF
ENDIF
ENDIF
break
case events_never_do_locates_skips
#IF IS_DEBUG_BUILD DONT_DO_J_SKIP(locatesData) #endif
break
case events_spawn_bottles
int j
j=0
switch events[iE].flag
case 1
oCans[0] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2494.4958, 4970.9160, 44.5112>>)
SET_ENTITY_ROTATION(oCans[0],<<-3.4400, -0.0000, 38.8800>>)
oCans[1] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2494.8630, 4970.5952, 44.5425>>)
SET_ENTITY_ROTATION(oCans[1],<<-3.4400, -0.0000, 38.8800>>)
oCans[2] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2494.8955, 4970.4175, 44.5475>>)
SET_ENTITY_ROTATION(oCans[2],<<-3.4400, -0.0000, 38.8800>>)
oCans[3] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2494.7954, 4970.2456, 44.5525>>)
SET_ENTITY_ROTATION(oCans[3],<<-3.4400, -0.0000, 38.8800>>)
oCans[4] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2494.2041, 4970.2690, 44.5201>>)
SET_ENTITY_ROTATION(oCans[4],<<-3.4400, -0.0000, 38.8800>>)
oCans[5] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2494.3716, 4970.7441, 44.5100>>)
SET_ENTITY_ROTATION(oCans[5],<<-3.4400, -0.0000, 38.8800>>)
oCans[6] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2494.3716, 4971.0918, 44.4987>>)
SET_ENTITY_ROTATION(oCans[6],<<-3.4400, -0.0000, 38.8800>>)
oCans[7] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2493.7695, 4971.0000, 44.6287>>)
SET_ENTITY_ROTATION(oCans[7],<<3.9550, 0.0000, 139.6800>>)
oCans[8] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2493.9797, 4971.2793, 44.6038>>)
SET_ENTITY_ROTATION(oCans[8],<<3.9550, 0.0000, 139.6800>>)
oCans[9] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2494.1042, 4971.4375, 44.5826>>)
SET_ENTITY_ROTATION(oCans[9],<<3.9550, 0.0000, 139.6800>>)
repeat count_of(oCans) j
SET_ENTITY_DYNAMIC(oCans[j],TRUE)
FREEZE_ENTITY_POSITION(oCans[j],TRUE)
ENDREPEAT
events[iE].flag++
break
case 0
CPRINTLN(debug_Trevor3,"Attempt Pallets Frozen")
IF NOT DOES_ENTITY_EXIST(obja)
AND NOT DOES_ENTITY_EXIST(objb)
IF DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS(<<2493.5,4969.2,43.9>>,1.0,prop_barrel_pile_03)
AND DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS(<<2493.4,4971.8,43.6>>,1.0,PROP_PALLET_PILE_01)
CPRINTLN(debug_Trevor3,"Pallets Frozen")
obja = GET_CLOSEST_OBJECT_OF_TYPE(<<2493.5,4969.2,43.9>>,1.0,prop_barrel_pile_03)
FREEZE_ENTITY_POSITION(obja,TRUE)
// objb = CREATE_OBJECT_NO_OFFSET(PROP_PALLET_PILE_01,<<2493.4,4971.8,43.6>>)
// GET_CLOSEST_OBJECT_OF_TYPE(<<2493.4,4971.8,43.6>>,1.0,PROP_PALLET_PILE_01)
// FREEZE_ENTITY_POSITION(objb,TRUE)
CREATE_MODEL_HIDE(<<2493.4,4971.8,43.6>>,1.0,PROP_PALLET_PILE_01,false)
objb = CREATE_OBJECT (prop_pallet_pile_01, <<2493.427490,4971.728516,43.543625>>)
SET_ENTITY_ROTATION (objb, <<-1.436373,0.176147,-36.660099>>)
FREEZE_ENTITY_POSITION(objb,TRUE)
add_event(events_unfreeze_pallet)
events[iE].flag++
ENDIF
ELSE
cprintln(debug_Trevor3,"Recreated pallet")
DELETE_OBJECT(objb)
objb = CREATE_OBJECT (prop_pallet_pile_01, <<2493.427490,4971.728516,43.543625>>)
SET_ENTITY_ROTATION (objb, <<-1.436373,0.176147,-36.660099>>)
FREEZE_ENTITY_POSITION(objb,TRUE)
add_event(events_unfreeze_pallet)
events[iE].flag++
ENDIF
BREAK
case 2
//int counter
j=0
//counter=0
repeat count_of(oCans) j
IF DOES_ENTITY_EXIST(oCans[j])
//IF DOES_ENTITY_HAVE_PHYSICS(oCans[j])
FREEZE_ENTITY_POSITION(oCans[j],FALSE)
// counter++
//ENDIF
endif
ENDREPEAT
events[iE].active = FALSE
//IF counter = count_of(oCans)
//events[iE].flag++
events[iE].active = FALSE
//ENDIF
break
ENDSWITCH
break
case events_unfreeze_pallet
IF NOT IS_BIT_SET(events[iE].intA,0)
IF DOES_ENTITY_EXIST(obja)
IF NOT IS_PED_INJURED(player_ped_id())
IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(objA,player_ped_id())
OR GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),objA) < 30.0
FREEZE_ENTITY_POSITION(objA,FALSE)
SET_BIT(events[iE].intA,0)
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT IS_BIT_SET(events[iE].intA,1)
IF DOES_ENTITY_EXIST(objb)
IF NOT IS_PED_INJURED(player_ped_id())
IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(objb,player_ped_id())
OR GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),objb) < 30.0
FREEZE_ENTITY_POSITION(objb,FALSE)
SET_BIT(events[iE].intA,1)
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_BIT_SET(events[iE].intA,0) AND IS_BIT_SET(events[iE].intA,1)
OR missionStage = inside_house
IF DOES_ENTITY_EXIST(obja)
FREEZE_ENTITY_POSITION(objA,FALSE)
ENDIF
IF DOES_ENTITY_EXIST(objb)
FREEZE_ENTITY_POSITION(objb,FALSE)
ENDIF
events[iE].active = FALSE
ENDIF
break
case events_animate_bar
switch events[iE].flag
CASE CLEANUP
IF DOES_ENTITY_EXIST(zped[ped_janet].id)
DELETE_PED(zped[ped_janet].id)
ENDIF
IF DOES_ENTITY_EXIST(zped[ped_oldMan1].id)
DELETE_PED(zped[ped_oldMan1].id)
ENDIF
IF DOES_ENTITY_EXIST(zped[ped_oldMan2].id)
DELETE_PED(zped[ped_oldMan2].id)
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(ig_janet)
SET_MODEL_AS_NO_LONGER_NEEDED(IG_OLD_MAN1A)
SET_MODEL_AS_NO_LONGER_NEEDED(IG_OLD_MAN2)
events[iE].active = FALSE
BREAK
CASE 0
REQUEST_ANIM_DICT("MISSChinese2_crystalMazeMCS1_IG")
events[iE].flag++
BREAK
CASE 1
IF HAS_ANIM_DICT_LOADED("MISSChinese2_crystalMazeMCS1_IG")
IF HAS_CUTSCENE_FINISHED()
OR NOT IS_CUTSCENE_PLAYING()
IF DOES_ENTITY_EXIST(zped[ped_oldMan1].id) AND NOT IS_PED_injured(zped[ped_oldMan1].id)
SET_ENTITY_COORDS(zped[ped_oldMan1].id,<<1986.0602, 3051.7085, 46.2151>>)
ENDIF
IF DOES_ENTITY_EXIST(zped[ped_oldMan2].id) AND NOT IS_PED_injured(zped[ped_oldMan2].id)
SET_ENTITY_COORDS(zped[ped_oldMan2].id,<<1986.1051, 3051.6592, 46.2151>>)
ENDIF
events[iE].flag++
ENDIF
ENDIF
BREAK
CASE 2
IF DOES_SCENARIO_EXIST_IN_AREA(<<1984.89, 3052.46, 46.98>>,0.3,TRUE)
AND DOES_SCENARIO_EXIST_IN_AREA(<<1985.3221, 3053.0872, 46.98>>,0.3,TRUE)
IF NOT DOES_ENTITY_EXIST(zped[ped_oldMan1].id)
zped[ped_oldMan1].id = create_ped(PEDTYPE_MISSION,IG_OLD_MAN1A,<<1987.231,3052.741,46.214>>)
ENDIF
IF NOT DOES_ENTITY_EXIST(zped[ped_oldMan2].id)
zped[ped_oldMan2].id = create_ped(PEDTYPE_MISSION,IG_OLD_MAN2,<<1987.231,3052.741,46.214>>)
ENDIF
IF NOT DOES_ENTITY_EXIST(zped[ped_janet].id)
cprintln(debug_trevor3,"Created Janet")
zped[ped_janet].id = create_ped(PEDTYPE_MISSION,IG_JANET,<<1987.231,3052.741,46.214>>)
ENDIF
SET_BIT(events[iE].intA,1)
TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[ped_oldMan2].id,<<1984.89, 3052.46, 46.98>>,0.3)
FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[ped_oldMan2].id,true,true)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_oldMan2].id,FALSE)
cprintln(debug_trevor3,"END B")
SET_BIT(events[iE].intA,0)
TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[ped_oldMan1].id,<<1985.3221, 3053.0872, 46.98>>,0.3)
FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[ped_oldMan1].id,true,true)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_oldMan1].id,FALSE)
cprintln(debug_trevor3,"END C")
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(events[iE].intA)
events[iE].intA = CREATE_SYNCHRONIZED_SCENE(<<1987.231,3052.741,46.214>>,<<0,0,57.6>>)
SET_SYNCHRONIZED_SCENE_LOOPED(events[iE].intA,TRUE)
ENDIF
TASK_SYNCHRONIZED_SCENE(zped[ped_janet].id,events[iE].intA,"MISSChinese2_crystalMazeMCS1_IG","bar_peds_action_janet",INSTANT_BLEND_IN,INSTANT_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS)
FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[ped_janet].id,true,true)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_janet].id,FALSE)
events[iE].intA = 0
events[iE].flag++
ENDIF
BREAK
/*
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Old_Man1A")
OR (missionStage = drive_to_farm AND NOT DOES_ENTITY_EXIST(zped[ped_oldMan1].id))
cprintln(debug_trevor3,"END C1")
IF NOT DOES_ENTITY_EXIST(zped[ped_oldMan1].id)
zped[ped_oldMan1].id = create_ped(PEDTYPE_MISSION,IG_OLD_MAN1A,<<1987.231,3052.741,46.214>>)
ENDIF
IF NOT IS_PED_INJURED(zPED[ped_oldMan1].id)
cprintln(debug_trevor3,"END C2")
IF DOES_SCENARIO_EXIST_IN_AREA(<<1984.89, 3052.46, 46.98>>,0.3,TRUE)
SET_BIT(events[iE].intA,0)
TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[ped_oldMan1].id,<<1984.89, 3052.46, 46.98>>,0.3)
FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[ped_oldMan1].id,true,true)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_oldMan1].id,FALSE)
cprintln(debug_trevor3,"END C")
ELSE
SET_ENTITY_COORDS(zped[ped_oldMan1].id,<<1986.0602, 3051.7085, 46.2151>>)
ENDIF
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Old_Man2")
OR (missionStage = drive_to_farm AND NOT DOES_ENTITY_EXIST(zped[ped_oldMan2].id))
IF NOT DOES_ENTITY_EXIST(zped[ped_oldMan2].id)
zped[ped_oldMan2].id = create_ped(PEDTYPE_MISSION,IG_OLD_MAN2,<<1987.231,3052.741,46.214>>)
ENDIF
IF NOT IS_PED_INJURED(zPED[ped_oldMan2].id)
IF DOES_SCENARIO_EXIST_IN_AREA(<<1985.3221, 3053.0872, 46.98>>,0.3,TRUE)
SET_BIT(events[iE].intA,1)
TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[ped_oldMan2].id,<<1985.3221, 3053.0872, 46.98>>,0.3)
FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[ped_oldMan2].id,true,true)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_oldMan2].id,FALSE)
cprintln(debug_trevor3,"END B")
ENDIF
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Janet")
OR (missionStage = drive_to_farm AND NOT DOES_ENTITY_EXIST(zped[ped_janet].id))
cprintln(debug_trevor3,"Exit state hit Janet")
IF NOT DOES_ENTITY_EXIST(zped[ped_janet].id)
cprintln(debug_trevor3,"Created Janet")
zped[ped_janet].id = create_ped(PEDTYPE_MISSION,IG_JANET,<<1987.231,3052.741,46.214>>)
ENDIF
IF NOT IS_PED_INJURED(zPED[ped_janet].id)
////cprintln(debug_trevor3,"Janet tasked")
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(events[iE].intA)
events[iE].intA = CREATE_SYNCHRONIZED_SCENE(<<1987.231,3052.741,46.214>>,<<0,0,57.6>>)
SET_SYNCHRONIZED_SCENE_LOOPED(events[iE].intA,TRUE)
ENDIF
TASK_SYNCHRONIZED_SCENE(zped[ped_janet].id,events[iE].intA,"MISSChinese2_crystalMazeMCS1_IG","bar_peds_action_janet",INSTANT_BLEND_IN,INSTANT_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS)
FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[ped_janet].id,true,true)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_janet].id,FALSE)
cprintln(debug_trevor3,"END A")
ENDIF
ENDIF
IF HAS_CUTSCENE_FINISHED()
OR NOT IS_CUTSCENE_PLAYING()
cprintln(debug_trevor3,"cut finished")
events[iE].flag++
ENDIF
ENDIF
BREAK*/
case 3
IF HAS_CUTSCENE_FINISHED()
OR NOT IS_CUTSCENE_PLAYING()
/* IF NOT DOES_ENTITY_EXIST(zped[ped_oldMan1].id)
zped[ped_oldMan1].id = create_ped(PEDTYPE_MISSION,IG_OLD_MAN1A,<<1985.8699, 3051.3889, 46.2151>>)
ELSE
IF NOT IS_PED_INJURED(zped[ped_oldMan1].id)
SET_ENTITY_COORDS(zped[ped_oldMan1].id,<<1985.8699, 3051.3889, 46.2151>>)
ENDIF
ENDIF
IF NOT DOES_ENTITY_EXIST(zped[ped_oldMan2].id)
zped[ped_oldMan2].id = create_ped(PEDTYPE_MISSION,IG_OLD_MAN2,<<1986.9213, 3052.9172, 46.2152>>)
ELSE
IF NOT IS_PED_INJURED(zped[ped_oldMan2].id)
SET_ENTITY_COORDS(zped[ped_oldMan2].id,<<1986.9213, 3052.9172, 46.2152>>)
ENDIF
ENDIF*/
ENDIF
IF NOT IS_PED_INJURED(zped[ped_oldMan1].id)
AND NOT IS_PED_INJURED(zped[ped_oldMan2].id)
SET_PED_CONFIG_FLAG(zped[ped_oldMan1].id ,PCF_AlwaysRespondToCriesForHelp,true)
SET_PED_CONFIG_FLAG(zped[ped_oldMan2].id ,PCF_AlwaysRespondToCriesForHelp,true)
IF IS_BIT_SET(events[iE].intA,0)
AND IS_BIT_SET(events[iE].intA,1)
events[iE].flag++
ELSE
IF GET_SCRIPT_TASK_STATUS(zped[ped_oldMan1].id,SCRIPT_TASK_START_SCENARIO_IN_PLACE) != PERFORMING_TASK
IF DOES_SCENARIO_EXIST_IN_AREA(<<1984.89, 3052.46, 46.98>>,0.3,TRUE)
SET_BIT(events[iE].intA,0)
TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[ped_oldMan1].id,<<1984.89, 3052.46, 46.98>>,0.3)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_oldMan1].id,FALSE)
ENDIF
ELSE
SET_BIT(events[iE].intA,0)
ENDIF
IF GET_SCRIPT_TASK_STATUS(zped[ped_oldMan2].id,SCRIPT_TASK_START_SCENARIO_IN_PLACE) != PERFORMING_TASK
IF DOES_SCENARIO_EXIST_IN_AREA(<<1985.3221, 3053.0872, 46.98>>,0.3,TRUE)
SET_BIT(events[iE].intA,1)
TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[ped_oldMan2].id,<<1985.3221, 3053.0872, 46.98>>,0.3)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_oldMan2].id,FALSE)
ENDIF
ELSE
SET_BIT(events[iE].intA,1)
ENDIF
ENDIF
ENDIF
BREAK
CASE 4/*
IF NOT IS_PED_INJURED(zped[ped_janet].id)
IF GET_SCRIPT_TASK_STATUS(zped[ped_janet].id,SCRIPT_TASK_SYNCHRONIZED_SCENE) != PERFORMING_TASK
IF GET_SCRIPT_TASK_STATUS(zped[ped_janet].id,SCRIPT_TASK_ANY) != PERFORMING_TASK
events[iE].flag=5
ENDIF
ENDIF
ELSE
events[iE].flag=5
ENDIF
IF NOT IS_PED_INJURED(zped[ped_oldMan1].id)
IF GET_SCRIPT_TASK_STATUS(zped[ped_oldMan1].id,SCRIPT_TASK_USE_NEAREST_SCENARIO_TO_POS) != PERFORMING_TASK
IF GET_SCRIPT_TASK_STATUS(zped[ped_oldMan1].id,SCRIPT_TASK_ANY) != PERFORMING_TASK
events[iE].flag=5
ENDIF
ENDIF
ELSE
events[iE].flag=5
ENDIF
IF NOT IS_PED_INJURED(zped[ped_oldMan2].id)
IF GET_SCRIPT_TASK_STATUS(zped[ped_oldMan2].id,SCRIPT_TASK_USE_NEAREST_SCENARIO_TO_POS) != PERFORMING_TASK
IF GET_SCRIPT_TASK_STATUS(zped[ped_oldMan2].id,SCRIPT_TASK_ANY) != PERFORMING_TASK
events[iE].flag=5
ENDIF
ENDIF
ELSE
events[iE].flag=5
ENDIF
*/
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<1991.4193, 3054.9150, 47.5330>>) > 150
events[iE].flag=CLEANUP
ENDIF
BREAK
case 6
IF NOT IS_PED_INJURED(zped[ped_janet].id)
TASK_SMART_FLEE_PED(zped[ped_janet].id,player_ped_id(),100,-1)
SET_PED_KEEP_TASK(zped[ped_janet].id,TRUe)
SET_PED_AS_NO_LONGER_NEEDED(zped[ped_janet].id)
ENDIF
IF NOT IS_PED_INJURED(zped[ped_oldMan1].id)
TASK_SMART_FLEE_PED(zped[ped_oldMan1].id,player_ped_id(),100,-1)
SET_PED_KEEP_TASK(zped[ped_oldMan1].id,true)
SET_PED_AS_NO_LONGER_NEEDED(zped[ped_oldMan1].id)
ENDIF
IF NOT IS_PED_INJURED(zped[ped_oldMan2].id)
TASK_SMART_FLEE_PED(zped[ped_oldMan2].id,player_ped_id(),100,-1)
SET_PED_KEEP_TASK(zped[ped_oldMan2].id,true)
SET_PED_AS_NO_LONGER_NEEDED(zped[ped_oldMan2].id)
ENDIF
events[iE].flag=7
break
case 7
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<1991.4193, 3054.9150, 47.5330>>) > 150
events[iE].flag=CLEANUP
ENDIF
break
ENDSWITCH
break
case events_force_farm_doors_drawing
CREATE_FORCED_OBJECT(<<2444.176270,4974.076660,56.406605>>, 30, V_ILEV_FH_DOOR03, TRUE)
CREATE_FORCED_OBJECT(<<2444.176270,4974.076660,56.406605>>, 30, V_ILEV_FH_FRNTDOOR, TRUE)
events[iE].active = FALSE
break
case events_fails
/*
IF cleaningUp = FALSE
IF missionStage = do_petrol_trail
endif
//distance fail
IF missionStage >= snipe_from_hill
OR missionStage = get_to_house AND ARE_VECTORS_EQUAL(GET_BLIP_COORDS(locatesData.LocationBlip),<< 2578.5234, 4982.2837, 51.4416 >>)
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(), << 2460.8640, 4983.4932, 47.7573 >>,FALSE) > 350.0
// vector vfind
// vfind = GET_ENTITY_COORDS(player_ped_id())
FAIL_MISSION("FRMFAR")
ENDIF
ENDIF
IF is_event_active(events_animate_chinese)
IF DOES_ENTITY_EXIST(zPED[ped_tao].id)
AND DOES_ENTITY_EXIST(zPED[ped_taos_translator].id)
IF IS_ENTITY_DEAD(zPED[ped_tao].id)
FAIL_MISSION("FRMCHI")
ENDIF
IF IS_ENTITY_DEAD(zPED[ped_taos_translator].id)
FAIL_MISSION("FRMCHI2")
ENDIF
ENDIF
ENDIF
ENDIF
*/
BREAK
ENDSWITCH
if events[iE].flag = CLEANUP
events[iE].active = FALSE
events[iE].flag = 0
events[iE].persists = FALSE
events[iE].boolA = FALSE
events[iE].intA = 0
ENDIF
ENDIF
ENDREPEAT
ENDPROC
FUNC bool CREATE_GANG_PED(int ind, MODEL_NAMES mGangPedModel, VECTOR vGangPedCoord, FLOAT fGangPedHead, WEAPON_TYPE wepGang, bool bSetWeaponAsCurrent=TRUE, bool bInInterior=FALSE)
mGangPedModel=mGangPedModel
bInInterior=bInInterior
INTERIOR_INSTANCE_INDEX interior
IF zped[ind].role != role_guard_outside AND zped[ind].role != role_chicken
interior = GET_INTERIOR_AT_COORDS(vGangPedCoord)
//PIN_INTERIOR_IN_MEMORY(interior)
IF interior = null
RETURN FALSE
ELSE
IF NOT IS_INTERIOR_READY(interior)
RETURN FALSE
ENDIF
ENDIF
ENDIF
cprintln(debug_Trevor3,"Id : ",ind," variation: ",iNextPedVariation)
SWITCH iNextPedVariation
CASE 0
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_01,vGangPedCoord,fGangPedHead)
SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id)
SET_PED_COMPONENT_VARIATION(zped[ind].id, INT_TO_ENUM(PED_COMPONENT,0), 0, 1, 0) //(head)
SET_PED_COMPONENT_VARIATION(zped[ind].id, INT_TO_ENUM(PED_COMPONENT,2), 0, 1, 0) //(hair)
SET_PED_COMPONENT_VARIATION(zped[ind].id, INT_TO_ENUM(PED_COMPONENT,3), 1, 1, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(zped[ind].id, INT_TO_ENUM(PED_COMPONENT,4), 1, 1, 0) //(lowr)
BREAK
CASE 1
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_02,vGangPedCoord,fGangPedHead)
SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,2),1,0)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),0,1)
BREAK
CASE 2
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01,vGangPedCoord,fGangPedHead)
SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,1)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),1,0)
BREAK
CASE 3
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_01,vGangPedCoord,fGangPedHead)
SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,2)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,2),1,2)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),1,0)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),1,0)
BREAK
CASE 4
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_02,vGangPedCoord,fGangPedHead)
SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,2)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),1,0)
BREAK
CASE 5
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01,vGangPedCoord,fGangPedHead)
SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),1,2)
BREAK
CASE 6
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_01,vGangPedCoord,fGangPedHead)
SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,2),1,0)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),0,1)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),0,1)
BREAK
CASE 7
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_02,vGangPedCoord,fGangPedHead)
SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,1)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,2),2,0)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),2,0)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),0,2)
BREAK
CASE 8
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01,vGangPedCoord,fGangPedHead)
SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),1,0)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),1,0)
BREAK
CASE 9
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_02,vGangPedCoord,fGangPedHead)
SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,2)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),1,2)
BREAK
CASE 10
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01,vGangPedCoord,fGangPedHead)
SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),0,1)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),0,1)
BREAK
CASE 11
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_02,vGangPedCoord,fGangPedHead)
SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,2),2,0)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),2,2)
BREAK
CASE 12
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_01,vGangPedCoord,fGangPedHead)
SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,2)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,2),0,2)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),1,2)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),1,2)
BREAK
CASE 13
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_02,vGangPedCoord,fGangPedHead)
SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,1)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,2),1,0)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),1,1)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),0,2)
BREAK
CASE 14
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01,vGangPedCoord,fGangPedHead)
SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,1)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),0,2)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),0,2)
BREAK
CASE 15
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_02,vGangPedCoord,fGangPedHead)
SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,1)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,2),2,0)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),0,2)
BREAK
CASE 16
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01,vGangPedCoord,fGangPedHead)
SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,2)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),0,1)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),1,1)
BREAK
CASE 17
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_02,vGangPedCoord,fGangPedHead)
SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,2)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,2),2,0)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),1,2)
SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),0,1)
BREAK
ENDSWITCH
IF iNextPedVariation > 17
cprintln(debug_Trevor3,"FUCKERS")
zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01,vGangPedCoord,fGangPedHead)
SET_PED_RANDOM_COMPONENT_VARIATION(zped[ind].id)
ENDIF
iNextPedVariation++
//zped[ind].id = CREATE_PED (PEDTYPE_MISSION, mGangPedModel, vGangPedCoord, fGangPedHead )
IF zped[ind].role = role_innocent
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ind].id,TRUE)
SET_PED_RELATIONSHIP_GROUP_HASH(zped[ind].id, HASH_IGNORE_GROUP)
else
GIVE_WEAPON_TO_PED(zped[ind].id, wepGang, 3000, bSetWeaponAsCurrent,TRUE)
//cprintln(debug_Trevor3,"Give weapon to ped: ",GET_PLACEMENT_STRING(ind))
SET_PED_RELATIONSHIP_GROUP_HASH(zped[ind].id, HASH_FOE_GROUP)
SET_ped_AS_ENEMY(zped[ind].id, TRUE)
SET_PED_COMBAT_ATTRIBUTES(zped[ind].id,CA_WILL_SCAN_FOR_DEAD_PEDS,TRUE)
SET_PED_HEARING_RANGE(zped[ind].id,120.0)
SET_PED_SEEING_RANGE(zped[ind].id,22.0)
SET_PED_ID_RANGE(zped[ind].id,22.0)
//SET_PED_ID_RANGE(zped[ind].id,3.0)
SET_PED_CONFIG_FLAG(zped[ind].id,PCF_RunFromFiresAndExplosions,false)
SET_COMBAT_FLOAT(zped[ind].id,CCF_BULLET_IMPACT_DETECTION_RANGE,3.0)
if zped[ind].role = role_guard_house
SET_PED_ACCURACY(zped[ind].id,12)
ELSE
SET_PED_ACCURACY(zped[ind].id,45)
endif
SET_PED_DIES_WHEN_INJURED (zped[ind].id, TRUE)
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(zped[ind].id, TRUE)
SET_PED_COMBAT_ATTRIBUTES(zped[ind].id,CA_CAN_USE_RADIO,FALSE)
SET_PED_COMBAT_ATTRIBUTES(zped[ind].id,CA_ALWAYS_FLEE,FALSE)
INFORM_MISSION_STATS_OF_HEADSHOT_WATCH_ENTITY(zped[ind].id, TRUE)
endif
STOP_PED_WEAPON_FIRING_WHEN_DROPPED(zped[ind].id)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(zped[ind].id,TRUE)
// JR - seems safer to leave this on.
//SET_PED_SHOULD_IGNORE_SCENARIO_EXIT_COLLISION_CHECKS(zped[ind].id, TRUE)
SET_PED_SHOULD_PLAY_DIRECTED_NORMAL_SCENARIO_EXIT(zPED[ind].id, <<0,0,0>>)
SET_PED_SHOULD_IGNORE_SCENARIO_NAV_CHECKS(zPED[ind].id, TRUE)
SET_PED_SHOULD_PROBE_FOR_SCENARIO_EXITS_IN_ONE_FRAME(zPED[ind].id, TRUE)
SET_ENTITY_HEALTH(zped[ind].id, 150)
RETURN TRUE
ENDFUNC
// =================================================== NEW HANDLING OF GAME ====================================================================
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_CONDITION_TRUE(enumconditions conditiontoCheck)
int iArray = enum_to_int(conditiontoCheck) - enum_to_int(conditions[0].condition)
IF iArray >= 0 AND iArray < COUNT_OF(conditions)
IF conditions[iArray].condition = conditiontoCheck
IF /*conditions[iArray].active
AND */conditions[iArray].returns
RETURN TRUE
ENDIF
ELSE
IF conditions[iArray].condition != COND_NULL
SCRIPT_ASSERT("SCRIPT: IS_CONDITION_TRUE() : condition stored in array is not equal to value stored in conditionArrayEntry[]")
ENDIF
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL IS_CONDITION_FALSE(enumconditions conditiontoCheck)
int iArray = enum_to_int(conditiontoCheck) - enum_to_int(conditions[0].condition)
IF iArray >= 0 AND iArray < COUNT_OF(conditions)
IF conditions[iArray].condition = conditiontoCheck
IF /*conditions[iArray].active
AND */NOT conditions[iArray].returns
RETURN TRUE
ENDIF
ELSE
IF conditions[iArray].condition != COND_NULL
SCRIPT_ASSERT("SCRIPT: IS_CONDITION_FALSE() : condition stored in array is not equal to value stored in conditionArrayEntry[]")
ENDIF
ENDIF
ELSE
RETURN TRUE
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 IS_ACTION_COMPLETE(int iEntry, enumActions actionToCheck)
IF actions[iEntry].action = actionToCheck
IF actions[iEntry].completed = TRUE
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
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)
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)
ENDIF
ENDIF
ENDIF
ENDIF
IF conditionsTrue
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
//conditions
PROC checkConditions(enumconditions firstCondition, enumconditions lastCondition)
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
enumCounter++
ELSE
conditions[j].active = FALSE
ENDIF
ENDREPEAT
//reset which condition goes in to which array.
ENDIF
int i
REPEAT COUNT_OF(conditions) i
//IF conditions[i].active
SWITCH conditions[i].condition
CASE COND_INITIAL_INSTRUCTIONS_PLAYED
IF NOT conditions[i].returns
IF conditions[i].flag = 0
IF IS_THIS_PRINT_BEING_DISPLAYED("FRMCHSE_1")
conditions[i].flag = 1
ENDIF
ELSE
IF NOT IS_THIS_PRINT_BEING_DISPLAYED("FRMCHSE_1")
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_PLAYER_IN_ANY_CAR
conditions[i].returns = FALSE
IF IS_PED_IN_ANY_VEHICLE(player_ped_id())
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_BULLET_IMPACTED_BY_BARRELS
IF NOT conditions[i].returns
IF IS_CONDITION_FALSE(COND_SHOOTING_PED_DEAD)
IF HAS_BULLET_IMPACTED_IN_AREA(<<2493.155029,4970.314941,43.880379>>,3.25)
OR IS_BULLET_IN_AREA(<<2493.155029,4970.314941,43.880379>>,3.25)
conditions[i].returns = TRUE
ENDIF
ELSE
conditions[i].active = FALSE
ENDIF
ENDIF
BREAK
CASE COND_SHOOTING_PED_DEAD
IF NOT conditions[i].returns
switch conditions[i].flag
CASE 0
conditions[i].intA = get_ped_with_placement(pos_shooting_bottle_1)
conditions[i].intB = get_ped_with_placement(pos_shooting_bottle_2)
conditions[i].flag++
break
case 1
IF conditions[i].intA != -1
aND conditions[i].intB != -1
IF DOES_ENTITY_EXIST(zped[conditions[i].intA].id)
AND DOES_ENTITY_EXIST(zped[conditions[i].intB].id)
IF IS_PED_INJURED(zped[conditions[i].intA].id)
OR IS_PED_INJURED(zped[conditions[i].intB].id)
conditions[i].returns = TRUE
ENDIF
ENDIF
endif
BREAK
ENDSWITCH
ENDIF
BREAK
CASE COND_ALL_ENEMY_ALERTED
IF bAlertEveryone
conditions[i].returns = TRUE
conditions[i].active = FALSE
ENDIF
BREAK
CASE COND_PLAYER_IN_METH_LAB
conditions[i].returns = FALSE
IF GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) = GET_HASH_KEY("V_8_BasementRm")
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_PLAYER_IN_HOUSE
conditions[i].returns = FALSE
IF GET_INTERIOR_FROM_ENTITY(player_ped_id()) != null //player inside house
AND IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2421.330811,4954.833008,25.328293>>, <<2466.796143,4996.822266,66.070175>>, 37.187500)
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_PLAYER_DOWNSTAIRS
conditions[i].returns = FALSE
IF IS_CONDITION_TRUE(COND_PLAYER_IN_HOUSE)
IF NOT IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2457.884766,4981.169434,50.005180>>, <<2441.579834,4965.088379,56.240055>>, 34.312500)
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_PLAYER_APPROACHING_HOUSE
IF NOT conditions[i].returns
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< 2451.5173, 4973.1221, 44.2646 >>) < 50
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_BASEMENT_PED_DEAD_IN_BASEMENT
switch conditions[i].flag
CASE 0
conditions[i].intA = get_ped_with_placement(pos_inside_cards3)
IF conditions[i].intA != -1
conditions[i].flag++
ENDIF
BREAK
CASE 1
IF DOES_ENTITY_EXIST(zped[conditions[i].intA].id)
IF IS_PED_INJURED(zped[conditions[i].intA].id)
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zped[conditions[i].intA].id,<<2427.8506, 4964.9717, 43.1704>>) < 3.0
conditions[i].returns = TRUE
conditions[i].flag++
ELSE
conditions[i].active = FALSE
ENDIF
ENDIf
ENDIF
BREAK
ENDSWITCH
BREAK
CASE COND_ATTACKERS_ALL_DEAD
IF NOT conditions[i].returns
switch conditions[i].flag
CASE 0
IF NOT is_event_active(events_spawn_house)
conditions[i].flag++
ENDIF
BREAK
CASE 1
int iR
bool bEnemiesAreStillAlive
bool bOutsideEnemiesAlive
bEnemiesAreStillAlive = FALSE
bOutsideEnemiesAlive = FALSE
REPEAT COUNT_OF(zped) iR
IF NOT IS_PED_INJURED(zped[iR].id)
bEnemiesAreStillAlive = TRUE
IF zped[iR].role = role_guard_outside
bOutsideEnemiesAlive = TRUE
iR = count_of(zped) //exit
endif
endif
ENDREPEAT
IF NOT bEnemiesAreStillAlive
conditions[i].returns = TRUE
else
conditions[i].returns = false
ENDIF
IF bOutsideEnemiesAlive
SET_CONDITION_STATE(COND_ALL_OUTSIDE_ENEMY_DEAD,false)
else
SET_CONDITION_STATE(COND_ALL_OUTSIDE_ENEMY_DEAD,true)
endif
BREAK
ENDSWITCH
ENDIF
BREAK
CASE COND_ONE_ATTACKER_LEFT_OUTSIDE
//value for this set elsewhere in script using SET_CONDITION_STATE
IF NOT conditions[i].returns
IF IS_CONDITION_TRUE(COND_ALL_ENEMY_ALERTED)
conditions[i].returns = true
int iR
int deadCount
deadCount=0
REPEAT COUNT_OF(zPED) iR
if zPED[iR].role = role_guard_outside
IF NOT IS_PED_INJURED(zPED[iR].id)
deadCount++
IF deadCount > 1
conditions[i].returns = false
iR = COUNT_OF(zPED)
endif
ENDIF
ENDIF
ENDREPEAT
ENDIF
ENDIF
BREAK
CASE COND_FAIL_FOR_LEAVING_FARM
switch conditions[i].flag
case 0
vehicle_index aVeh
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2446.6738, 4977.7876, 57.4583>>) < 250
////cprintln(debug_Trevor3,"player inside 250m")
conditions[i].flag++
ENDIF
BREAK
case 1
bool bCheckOnFoot
IF IS_PED_IN_ANY_VEHICLE(player_ped_id())
aVeh = get_vehicle_ped_is_in(player_ped_id())
IF IS_THIS_MODEL_A_HELI(GET_ENTITY_MODEL(aVeh))
OR IS_THIS_MODEL_A_PLANE(GET_ENTITY_MODEL(aVeh))
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2446.6738, 4977.7876, 57.4583>>,false) > 700
conditions[i].returns = TRUE
ENDIF
ELSE
bCheckOnFoot = true
ENDIF
ELSE
bCheckOnFoot = TRUE
ENDIF
IF bCheckOnFoot
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2446.6738, 4977.7876, 57.4583>>) > 250
////cprintln(debug_Trevor3,"player inside 250m")
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
case COND_CARD_PLAYING_PEDS_STILL_NEAR_TABLE
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2441.064941,4968.819336,45.830746>>) < 2.75
IF NOT IS_PED_INJURED(zped[ENUM_TO_INT(pos_inside_cards1)].id)
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zped[ENUM_TO_INT(pos_inside_cards1)].id,<<2439.385986,4962.049316,45.904697>>) < 3
conditions[i].returns = TRUE
ENDIF
ENDIF
IF NOT IS_PED_INJURED(zped[ENUM_TO_INT(pos_inside_cards2)].id)
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zped[ENUM_TO_INT(pos_inside_cards2)].id,<<2439.385986,4962.049316,45.904697>>) < 3
conditions[i].returns = TRUE
ENDIF
ENDIF
IF NOT IS_PED_INJURED(zped[ENUM_TO_INT(pos_inside_cards3)].id)
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zped[ENUM_TO_INT(pos_inside_cards3)].id,<<2439.385986,4962.049316,45.904697>>) < 3
conditions[i].returns = TRUE
ENDIF
ENDIF
conditions[i].active = FALSE
ENDIF
break
CASE COND_BASEMENT_PEDS_LEAVING_AND_OBSERVED
SWITCH conditions[i].flag
CASE 0
IF NOT IS_PED_INJURED(zped[ENUM_TO_INT(pos_barrels_1)].id)
AND IS_PED_SITTING_IN_ANY_VEHICLE(zped[ENUM_TO_INT(pos_barrels_1)].id)
conditions[i].flag++
ENDIF
IF NOT IS_PED_INJURED(zped[ENUM_TO_INT(pos_barrels_2)].id)
AND IS_PED_SITTING_IN_ANY_VEHICLE(zped[ENUM_TO_INT(pos_barrels_2)].id)
conditions[i].flag++
ENDIF
IF NOT IS_PED_INJURED(zped[ENUM_TO_INT(pos_garden_chat_2)].id)
AND IS_PED_SITTING_IN_ANY_VEHICLE(zped[ENUM_TO_INT(pos_garden_chat_2)].id)
conditions[i].flag++
ENDIF
conditions[i].intA = GET_GAME_TIMER() + 8000
BREAK
CASE 1
IF IS_VEHICLE_DRIVEABLE(BarrelVan)
IF IS_POINT_VISIBLE(GET_ENTITY_COORDS(BarrelVan),5,150)
conditions[i].intB += floor(timestep() * 1000)
ENDIF
ENDIF
IF conditions[i].intB > 1500
conditions[i].returns = TRUE
ENDIF
IF GET_GAME_TIMER() > conditions[i].intA
conditions[i].flag++
ENDIF
BREAK
ENDSWITCH
BREAK
CASE COND_JERRY_CAN_DESTROYED
SWITCH conditions[i].flag
CASE 0
IF DOES_PICKUP_EXIST(pickup_gas)
IF DOES_PICKUP_OBJECT_EXIST(pickup_gas)
conditions[i].flag++
ENDIF
ENDIF
BREAK
CASE 1
IF DOES_PICKUP_EXIST(pickup_gas)
IF NOT DOES_PICKUP_OBJECT_EXIST(pickup_gas)
IF IS_EXPLOSION_IN_SPHERE(EXP_TAG_DONTCARE,<<2435.2524, 4966.7480, 41.3476>>,4.0)
conditions[i].returns = TRUE
ENDIF
conditions[i].flag++
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE COND_ENEMY_PED_REACTING
IF bAPedIsReacting
AND NOT bAlertEveryone
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_TREVOR_NEAR_BASEMENT
IF IS_ENTITY_IN_ANGLED_AREA(player_ped_id(), <<2442.818604,4970.283203,45.248096>>, <<2439.625244,4966.861816,48.145962>>, 3.437500)
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_TREVOR_NEAR_STAIRS
IF IS_ENTITY_IN_ANGLED_AREA(player_ped_id(), <<2434.671387,4959.104492,44.851093>>, <<2440.499756,4965.188965,48.123096>>, 3.625000)
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_TREVOR_AT_STAIRS
IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2432.467285,4959.472656,44.941334>>, <<2430.796875,4961.172852,48.309013>>, 1.562500)
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_TREVOR_SEEN
If bPlayerSeen
conditions[i].returns = TRUE
conditions[i].active = FALSE
ENDIF
BREAK
//gas pouring
CASE COND_PLAYER_OUT_FRONT
conditions[i].returns = FALSE
IF IS_ENTITY_IN_ANGLED_AREA(player_ped_id(), <<2447.671387,4951.438477,43.255756>>, <<2454.663818,4957.855957,47.891174>>, 6.812500)
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_OUT_OF_GAS
SWITCH conditions[i].flag
CASE 0
IF HAS_PED_GOT_WEAPON(player_peD_id(),WEAPONTYPE_PETROLCAN)
conditions[i].flag++
ENDIF
BREAK
CASE 1
IF NOT HAS_PED_GOT_WEAPON(player_peD_id(),WEAPONTYPE_PETROLCAN)
conditions[i].returns = TRUE
ENDIF
BREAK
ENDSWITCH
// conditions[i].intA = 1 //ped has petrol can this frame
// conditions[i].intB = GET_AMMO_IN_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_PETROLCAN)
//
// IF conditions[i].intB <= 0
// conditions[i].returns = TRUE
// ENDIF
//ELSE
// IF conditions[i].intA = 1
// IF conditions[i].intB <= 6
// conditions[i].returns = TRUE
// ELSE
// conditions[i].intA = 0
// ENDIF
// ENDIF
BREAK
CASE COND_PLAYER_HAS_PETROL_CAN
conditions[i].returns = FALSE
SWITCH conditions[i].intA
CASE 0
IF HAS_PED_GOT_WEAPON(player_peD_id(),WEAPONTYPE_PETROLCAN)
conditions[i].intA = 10
ELSE
conditions[i].intA = 20
ENDIF
BREAK
ENDSWITCH
IF HAS_PED_GOT_WEAPON(player_peD_id(),WEAPONTYPE_PETROLCAN)
IF conditions[i].intA = 20
// SET_CURRENT_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN) //commented out. Seemed to be forcing player to equip petrol cam. Why did I even add this?
ENDIF
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_GAS_TRAIL_COMPLETE
IF NOT conditions[i].returns = TRUE
IF IS_GAS_TRAIL_COMPLETE()
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME)
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_LAST_BLIP_POURED_ON
IF gasTrail[0].bPouredOn = TRUE
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_PLAYER_POURING_GAS
conditions[i].returns = FALSE
WEAPON_TYPE wep
wep = WEAPONTYPE_UNARMED
IF GET_CURRENT_PED_WEAPON(player_ped_id(),wep)
IF wep = WEAPONTYPE_PETROLCAN
IF IS_CONTROL_PRESSED(player_control,INPUT_ATTACK)
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_EXPLOSION_IN_BASEMENT
IF IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_DONTCARE,<<2435.775879,4963.066895,39.342651>>, <<2428.118408,4971.287109,43.673267>>, 11.875000)
IF NOT IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_EXTINGUISHER,<<2435.775879,4963.066895,39.342651>>, <<2428.118408,4971.287109,43.673267>>, 11.875000)
AND NOT IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_FLARE,<<2435.775879,4963.066895,39.342651>>, <<2428.118408,4971.287109,43.673267>>, 11.875000)
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
/*
CASE COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE
IF NOT IS_GAS_TRAIL_LINK_MISSING(17)
IF IS_GAS_TRAIL_BURNING()
IF GET_INTERIOR_FROM_ENTITY(player_ped_id()) = null
vector vHere
vHere = <<0,0,0>>
IF GET_CLOSEST_FIRE_POS(vHere,<<2452.7, 4970.4, 45.8104>>)
IF GET_DISTANCE_BETWEEN_COORDS(vHere,<<2452.7, 4970.4, 45.8104>>) < 1.5
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK*/
CASE COND_GAS_IGNITED_IN_HOUSE_WILL_BURN_OK
SWITCH conditions[i].flag
CASE 0
IF IS_GAS_TRAIL_BURNING_AND_CAN_THE_FIRE_BURN_OUT()
int iNode
iNode = GET_GAS_TRAIL_IGNITE_NODE()
IF iNode <= 17
SET_CONDITION_STATE(COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE,TRUE)
ELSE
conditions[i].returns = TRUE
ENDIF
conditions[i].flag++
ENDIF
BREAK
ENDSWITCH
BREAK
CASE COND_GAS_TRAIL_REACHED_DOORWAY
IF NOT conditions[i].returns
IF IS_GAS_NODE_BURNING(17)
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_TREVOR_INSIDE_HOUSE
conditions[i].returns = FALSE
IF GET_INTERIOR_FROM_ENTITY(player_ped_id()) != null
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_40M_FARM_WARNING
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2439.52, 4969.67, 52.65>>) > 42.5
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_60M_FARM_FAIL
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2439.52, 4969.67, 52.65>>) > 60
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_GAS_TRAIL_IGNITED_INCORRECTLY
IF IS_GAS_TRAIL_BURNING()
IF NOT IS_GAS_TRAIL_BURNING_AND_CAN_THE_FIRE_BURN_OUT()
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_GET_WANTED_LEVEL
SWITCH conditions[i].flag
CASE 0
conditions[i].intA = GET_GAME_TIMER() + 30000
conditions[i].flag++
BREAK
CASE 1
IF GET_GAME_TIMER() > conditions[i].intA
conditions[i].returns = TRUE
conditions[i].flag++
ENDIF
BREAK
ENDSWITCH
BREAK
CASE COND_PLAYER_300_FROM_FARM
conditions[i].returns = FALSE
IF NOT conditions[i].returns
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2448.25, 4974.92, 55.11>>) > 300
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_BUILDING_STATE_SWAPPED
IF IS_ACTION_COMPLETE(1,ACT_CHANGE_BUILDING_STATE)
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_PLAYER_500_FROM_FARM
conditions[i].returns = FALSE
IF NOT conditions[i].returns
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2448.25, 4974.92, 55.11>>) > 500
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_GOT_WANTED_LEVEL
conditions[i].returns = FALSE
IF GET_PLAYER_WANTED_LEVEL(player_id()) > 0
conditions[i].returns = TRUE
ENDIF
BREAK
ENDSWITCH
//ENDIF
ENDREPEAT
ENDPROC
//actions
FUNC INT GET_ACTION_FLAG(int iAction, enumActions actionToCheck)
IF actions[iAction].action = actionToCheck
RETURN actions[iAction].flag
ENDIF
RETURN -1
endfunc
PROC SET_ACTION_INT(int iAction, enumActions actionToSet, int iNewIntValue)
IF actions[iAction].action = actionToSet
actions[iAction].intA = iNewIntValue
ELSE
SCRIPT_ASSERT("Incorrect value passed in to GET_ACTION_INTA()")
ENDIF
endproc
PROC FORCE_ACTION_STATE(int thisI, enumActions thisAction, bool setCompleted=TRUE, bool setOngoing = TRUE)
actions[thisI].action = thisAction
actions[thisI].active = TRUE
actions[thisI].ongoing = setOngoing
actions[thisI].completed = setCompleted
actions[thisI].flag = 0
actions[thisI].needsCleanup = FALSE
actions[thisI].intA = 0
actions[thisI].intB = 0
actions[thisI].trackCondition=FALSE
actions[thisI].floatA = 0
ENDPROC
FUNC VECTOR CONVERT_ROTATION_TO_DIRECTION_VECTOR(VECTOR vRot)
RETURN <<-SIN(vRot.z) * COS(vRot.x), COS(vRot.z) * COS(vRot.x), SIN(vRot.x)>>
ENDFUNC
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)
#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)
ENDIF
IF playout = PLAYOUT_ON_COND
AND NOT actionConditionCheck
actions[thisI].ongoing = FALSE
ENDIF
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_get_stalls
/*
IF NOT IS_BIT_SET(actions[thisI].intA,0)
IF DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS(<<1985.3221,3053.0872,46.2263>>,0.3, PROP_BAR_STOOL_01)
g_sTriggerSceneAssets.object[0] = GET_CLOSEST_OBJECT_OF_TYPE(<<1985.3221,3053.0872,46.2263>>,0.3,PROP_BAR_STOOL_01,FALSE)
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.object[0])
int scriptID
IF IS_STRING_NULL_OR_EMPTY(GET_ENTITY_SCRIPT(g_sTriggerSceneAssets.object[0],scriptID))
g_sTriggerSceneAssets.object[0] = GET_CLOSEST_OBJECT_OF_TYPE(<<1985.3221,3053.0872,46.2263>>,0.3,PROP_BAR_STOOL_01,TRUE)
//cprintln(debug_Trevor3,"chinese 2 script id: ",GET_ENTITY_SCRIPT(g_sTriggerSceneAssets.object[0],scriptID))
SET_BIT(actions[thisI].intA,0)
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT IS_BIT_SET(actions[thisI].intA,1)
IF DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS(<<1984.8481,3052.4856,46.2263>>,0.3, PROP_BAR_STOOL_01)
g_sTriggerSceneAssets.object[1] = GET_CLOSEST_OBJECT_OF_TYPE(<<1984.8481,3052.4856,46.2263>>,0.3,PROP_BAR_STOOL_01,FALSE)
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.object[1])
int scriptID
IF IS_STRING_NULL_OR_EMPTY(GET_ENTITY_SCRIPT(g_sTriggerSceneAssets.object[1],scriptID))
g_sTriggerSceneAssets.object[1] = GET_CLOSEST_OBJECT_OF_TYPE(<<1984.8481,3052.4856,46.2263>>,0.3,PROP_BAR_STOOL_01,TRUE)
//cprintln(debug_Trevor3,"chinese 2 script id: ",GET_ENTITY_SCRIPT(g_sTriggerSceneAssets.object[1],scriptID))
SET_BIT(actions[thisI].intA,1)
ENDIF
ENDIF
ENDIF
ENDIF
*/
BREAK
CASE ACT_AUDIO_SCENE_DRIVE_TO_FARMHOUSE
SWITCH actions[thisI].flag
CASE 0
START_AUDIO_SCENE("CHI_2_DRIVE_TO_FARMHOUSE")
//cprintln(debug_Trevor3,"CHI_2_DRIVE_TO_FARMHOUSE called")
actions[thisI].flag++
BREAK
CASE 1
IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id())
STOP_AUDIO_SCENE("CHI_2_DRIVE_TO_FARMHOUSE")
actions[thisI].completed = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ACT_REMOVE_BAR_PEDS
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_peD_id(),<<1991.0500, 3054.2625, 46.2147>>) > 250
IF DOES_ENTITY_EXIST(zped[ped_tao].id)
DELETE_PED(zped[ped_tao].id)
ENDIF
IF DOES_ENTITY_EXIST(zped[ped_taos_translator].id)
DELETE_PED(zped[ped_taos_translator].id)
ENDIF
IF DOES_ENTITY_EXIST(zped[ped_janet].id)
DELETE_PED(zped[ped_janet].id)
ENDIF
IF DOES_ENTITY_EXIST(zped[ped_oldMan1].id)
DELETE_PED(zped[ped_oldMan1].id)
ENDIF
IF DOES_ENTITY_EXIST(zped[ped_oldMan2].id)
DELETE_PED(zped[ped_oldMan2].id)
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(ig_janet)
SET_MODEL_AS_NO_LONGER_NEEDED(IG_JANET)
SET_MODEL_AS_NO_LONGER_NEEDED(IG_OLD_MAN1A)
SET_MODEL_AS_NO_LONGER_NEEDED(IG_OLD_MAN2)
SET_MODEL_AS_NO_LONGER_NEEDED(IG_TAOCHENG)
SET_MODEL_AS_NO_LONGER_NEEDED(IG_TAOSTRANSLATOR)
REMOVE_ANIM_DICT("misschinese2_crystalmaze")
REMOVE_ANIM_DICT("MISSChinese2_crystalMazeMCS1_IG")
REMOVE_ANIM_DICT("missrampageintrooutro")
//DISABLE_NAVMESH_IN_AREA(<<1993.638428,3053.134033,45.214718>>, <<1989.650635,3055.619385,47.840214>>,FALSE)
IF iNavBlock != -1
IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(iNavBlock)
REMOVE_NAVMESH_BLOCKING_OBJECT(iNavBlock)
ENDIF
ENDIf
CLEAR_PED_NON_CREATION_AREA()
cprintln(debug_Trevor3,"Remove bar peds")
kill_event(events_animate_bar)
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_LOAD_SOUNDSET
IF LOAD_STREAM("CHI_2_FARMHOUSE_INTRO","CHINESE2_FARMHOUSE_INTRODUCTION")
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_LOAD_FRUSTROM
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_peD_id(),<<2457.489746,4977.094727,50.567833>> ) < 400
add_event(events_force_farm_doors_drawing)
SET_VEHICLE_POPULATION_BUDGET(1)
SET_PED_POPULATION_BUDGET(1)
PREFETCH_SRL("chinese2_farmhouse_cutscene")
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_BAR_PEDS_LOOK_AT_TREVOR
IF NOT IS_PED_INJURED(zped[ped_janet].id)
AND NOT IS_PED_INJURED(zped[ped_oldMan1].id)
AND NOT IS_PED_INJURED(zped[ped_oldMan2].id)
IF GET_ACTION_FLAG(6,ACT_MAKE_BAR_PEDS_FLEE) < 2
IF IS_ENTITY_IN_ANGLED_AREA(player_ped_id(),<<1981.256714,3050.721191,41.089954>>, <<1984.256958,3055.542725,49.473137>>, 3.062500)
IF GET_SCRIPT_TASK_STATUS(zped[ped_janet].id,SCRIPT_TASK_LOOK_AT_ENTITY) = FINISHED_TASK
cprintln(debug_Trevor3,"YES")
TASK_LOOK_AT_ENTITY(zped[ped_oldMan1].id,player_ped_id(),-1)
TASK_LOOK_AT_ENTITY(zped[ped_oldMan2].id,player_ped_id(),-1)
TASK_LOOK_AT_ENTITY(zped[ped_janet].id,player_ped_id(),-1)
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE ACT_SLOW_DOWN_PLAYER_IN_CHOPPER
float fDist,fMulti,fThisSpeed
fDist = GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2450.2136, 4979.2080, 60.8422>>)
IF fDist < 900
IF IS_PED_IN_ANY_VEHICLE(player_ped_id())
vehicle_index aVeh
aVeh = GET_VEHICLE_PED_IS_IN(player_ped_id())
IF IS_VEHICLE_DRIVEABLE(aVeh)
IF IS_THIS_MODEL_A_HELI(GET_ENTITY_MODEL(aVeh))
OR IS_THIS_MODEL_A_PLANE(GET_ENTITY_MODEL(aVeh))
fmulti = (900 - fDist)
IF fmulti < 0
fMulti = 0
endif
fmulti /= 900
fmulti *= 10000
fThisSpeed = GET_ENTITY_SPEED(aVeh)
fmulti *= fThisSpeed/35
IF fThisSpeed > 35
APPLY_FORCE_TO_ENTITY_CENTER_OF_MASS(aVeh,apply_type_impulse,<<0,-fmulti,0>>,0,true,false)
//showfloatOnScreen(0.1,0.1,fmulti)
//showfloatOnScreen(0.1,0.15,fThisSpeed)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE ACT_BLEND_OUT_OF_TREVOR_RAGE
IF IS_ENTITY_PLAYING_ANIM(player_ped_id(),"missrampageintrooutro","trvram_6_1h_run_outro")
actions[thisI].flag = 1
SET_PED_RESET_FLAG(player_ped_id(),PRF_SkipOnFootIdleIntro, TRUE)
//IF GET_ENTITY_ANIM_CURRENT_TIME(player_ped_id(),"missrampageintrooutro","trvram_6_1h_run_outro") > 0.75
if HAS_ANIM_EVENT_FIRED(player_ped_id(),GET_HASH_KEY("walkinterruptible"))
FORCE_PED_MOTION_STATE(player_ped_id(),MS_ON_FOOT_IDLE)
IF IS_PLAYER_PRESSING_A_CONTROL_BUTTON()
CLEAR_PED_TASKS(player_ped_id())
actions[thisI].completed = TRUE
ENDIF
ENDIF
ELSE
IF actions[thisI].flag = 1
REMOVE_ANIM_DICT("missrampageintrooutro")
actions[thisI].completed = TRUE
ENDIF
ENDIF
BREAK
CASE ACT_MAKE_BAR_PEDS_FLEE
switch actions[thisI].flag
case 0
IF NOT IS_PED_INJURED(zped[ped_janet].id)
AND NOT IS_PED_INJURED(zped[ped_oldMan1].id)
AND NOT IS_PED_INJURED(zped[ped_oldMan2].id)
//IF NOT IS_PED_INJURED(
SET_PED_RELATIONSHIP_GROUP_HASH(zped[ped_janet].id,relGroupBar)
SET_PED_RELATIONSHIP_GROUP_HASH(zped[ped_oldMan1].id,relGroupBar)
SET_PED_RELATIONSHIP_GROUP_HASH(zped[ped_oldMan2].id,relGroupBar)
SET_PED_COMBAT_ATTRIBUTES(zped[ped_janet].id,CA_ALWAYS_FLEE,TRUE)
SET_PED_COMBAT_ATTRIBUTES(zped[ped_oldMan1].id,CA_ALWAYS_FLEE,TRUE)
SET_PED_COMBAT_ATTRIBUTES(zped[ped_oldMan2].id,CA_ALWAYS_FLEE,TRUE)
CLEAR_ENTITY_LAST_DAMAGE_ENTITY(zped[ped_janet].id)
CLEAR_ENTITY_LAST_DAMAGE_ENTITY(zped[ped_oldMan1].id)
CLEAR_ENTITY_LAST_DAMAGE_ENTITY(zped[ped_oldMan2].id)
actions[thisI].flag++
ENDIF
BREAK
case 1
IF IS_PED_INJURED(zped[ped_janet].id)
OR IS_PED_INJURED(zped[ped_oldMan1].id)
OR IS_PED_INJURED(zped[ped_oldMan2].id)
actions[thisI].flag++
ENDIF
IF NOT IS_PED_INJURED(zped[ped_janet].id)
IF HAS_ENTITY_BEEN_DAMAGED_BY_ANY_PED(zped[ped_janet].id)
actions[thisI].flag=2
ENDIF
ENDIF
IF NOT IS_PED_INJURED(zped[ped_oldMan1].id)
IF HAS_ENTITY_BEEN_DAMAGED_BY_ANY_PED(zped[ped_oldMan1].id)
actions[thisI].flag=2
ENDIF
ENDIF
IF NOT IS_PED_INJURED(zped[ped_oldMan2].id)
IF HAS_ENTITY_BEEN_DAMAGED_BY_ANY_PED(zped[ped_oldMan2].id)
actions[thisI].flag=2
ENDIF
ENDIF
break
case 2
IF NOT IS_PED_INJURED(zped[ped_janet].id)
TASK_SMART_FLEE_PED(zped[ped_janet].id,player_ped_id(),100,-1)
SET_PED_KEEP_TASK(zped[ped_janet].id,TRUE)
SET_PED_AS_NO_LONGER_NEEDED(zped[ped_janet].id)
ENDIF
IF NOT IS_PED_INJURED(zped[ped_oldMan1].id)
TASK_SMART_FLEE_PED(zped[ped_oldMan1].id,player_ped_id(),100,-1)
SET_PED_KEEP_TASK(zped[ped_oldMan1].id,TRUE)
SET_PED_AS_NO_LONGER_NEEDED(zped[ped_oldMan1].id)
ENDIF
IF NOT IS_PED_INJURED(zped[ped_oldMan2].id)
TASK_SMART_FLEE_PED(zped[ped_oldMan2].id,player_ped_id(),100,-1)
SET_PED_KEEP_TASK(zped[ped_oldMan2].id,TRUE)
SET_PED_AS_NO_LONGER_NEEDED(zped[ped_oldMan2].id)
actions[thisI].completed = TRUE
ENDIF
break
ENDSWITCH
BREAK
CASE ACT_LOAD_END_CUT_FRUSTROM
//COND_GAS_TRAIL_COMPLETE
switch actions[thisI].flag
case 0
PREFETCH_SRL("chinese2_explosion_cutscene")
STOP_STREAM()
actions[thisI].flag++
BREAK
CASE 1
IF CUTSCENE_FIRST_SHOT = SHOT_BASEMENT
cprintln(debug_Trevor3,"A")
IF LOAD_STREAM("CHINESE2_FARMHOUSE_EXPLOSION_MOLOTOV_MASTER")
actions[thisI].flag++
ENDIF
ENDIF
IF CUTSCENE_FIRST_SHOT = SHOT_HOUSE_EXPLOSION
cprintln(debug_Trevor3,"B")
IF LOAD_STREAM("CHINESE2_FARMHOUSE_EXPLOSION_STICKY_BOMB_MASTER")
actions[thisI].flag++
ENDIF
ENDIF
IF CUTSCENE_FIRST_SHOT = SHOT_NORMAL
cprintln(debug_Trevor3,"C")
IF LOAD_STREAM("CHINESE2_FARMHOUSE_EXPLOSION_SHOOT_GASOLINE_MASTER")
actions[thisI].flag++
ENDIF
ENDIF
BREAK
CASE 2
IF IS_SRL_LOADED()
cprintln(debug_trevor3,"IS_SRL_LOADED")
actions[thisI].flag = 10
ENDIF
BREAK
endswitch
BREAK
case ACT_BOMB_IN_BASEMENT
switch actions[thisI].flag
case 1
IF GET_GAME_TIMER() > actions[thisI].intA
IF IS_VALID_INTERIOR(GET_INTERIOR_FROM_ENTITY(player_ped_id()))
/*float fHEading
fHeading = GET_HEADING_FROM_COORDS(get_entity_coords(player_ped_id()),<<2442.7959, 4973.3228, 46.9416>>,false)
float foMin, foMax
foMin = fHeading - 45
foMax = fHeading + 45
//cprintln(debug_Trevor3,fHeading)
fHEading = GET_RANDOM_FLOAT_IN_RANGE(foMin,foMax)
//cprintln(debug_Trevor3,fHeading,"X: ",actions[thisI].floatA*sin(fHEading),"Y: ",actions[thisI].floatA*cos(fHEading))
vector vMid
vMid = get_entity_coords(player_ped_id())+<<actions[thisI].floatA*sin(fHEading),actions[thisI].floatA*cos(fHEading),0.3>>
//cprintln(debug_Trevor3,vMid)
*/
ADD_EXPLOSION(get_entity_coords(player_ped_id())+<<GET_RANDOM_FLOAT_IN_RANGE(0,4),GET_RANDOM_FLOAT_IN_RANGE(0,4),0>>,EXP_TAG_SHIP_DESTROY,1.5)
actions[thisI].floatA -= 1
actions[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(250,520)
ELSE
actions[thisI].flag = 2
ENDIF
ENDIF
break
case 2
break
DEFAULT
int iR
REPEAT COUNT_OF(cellar_explosions) iR
IF NOT IS_BIT_SET(actions[thisI].intA,iR)
IF IS_EXPLOSION_IN_SPHERE(EXP_TAG_DONTCARE,cellar_explosions[iR],5)
SET_BIT(actions[thisI].intA,iR)
IF actions[thisI].flag = 0
actions[thisI].flag = GET_GAME_TIMER() + 1500
ENDIF
ENDIF
ENDIF
ENDREPEAT
IF GET_GAME_TIMER() > actions[thisI].intB
actions[thisI].intB = 0
REPEAT COUNT_OF(cellar_explosions) iR
IF NOT IS_BIT_SET(actions[thisI].intA,iR+9)
AND IS_BIT_SET(actions[thisI].intA,iR)
ADD_EXPLOSION(cellar_explosions[iR],EXP_TAG_SHIP_DESTROY,1.5)
SET_BIT(actions[thisI].intA,iR+9)
iR = 8
actions[thisI].intB = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(150,320)
ENDIF
ENDREPEAT
ENDIF
IF actions[thisI].flag != 0
IF GET_GAME_TIMER() > actions[thisI].flag
actions[thisI].flag = 1
actions[thisI].intA = GET_GAME_TIMER() + 300
actions[thisI].floatA = 16
ENDIF
ENDIF
BREAK
ENDSWITCH
break
CASE act_shooting_peds_witness_impact_at_barrels
int peda,pedb
peda = get_ped_with_placement(pos_shooting_bottle_1)
pedb = get_ped_with_placement(pos_shooting_bottle_2)
set_ped_action(peda,action_respond_to_nearby_alerted_ped)
set_ped_action(pedb,action_respond_to_nearby_alerted_ped)
actions[thisI].completed = TRUE
BREAK
CASE ACT_RADIO_SOUND
switch actions[thisI].flag
case 0
SET_INITIAL_PLAYER_STATION("RADIO_01_CLASS_ROCK")
actions[thisI].flag++
BREAK
CASE 1
IF IS_PED_IN_ANY_VEHICLE(player_ped_id())
IF DOES_PLAYER_VEH_HAVE_RADIO()
vehPlayer = GET_VEHICLE_PED_IS_IN(player_ped_id())
IF IS_VEHICLE_DRIVEABLE(vehPlayer)
IF NOT GET_IS_VEHICLE_ENGINE_RUNNING(vehPlayer)
actions[thisI].flag++
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 2
IF PREPARE_MUSIC_EVENT("CHN2_TREV_RADIO_1_FRTA")
actions[thisI].flag++
ENDIF
BREAK
// IF DOES_ENTITY_EXIST(vehPlayer)
// IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer)
/*
IF DOES_PLAYER_VEH_HAVE_RADIO()
IF PREPARE_MUSIC_EVENT("CHN2_TREV_RADIO_1_FRTA")
actions[thisI].flag++
ENDIF
ELSE
actions[thisI].completed = TRUE
ENDIF
ELSE
actions[thisI].completed = TRUE
ENDIF
ELSe
actions[thisI].completed = TRUE
ENDIF*/
BREAK
CASE 3
//IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer)
// IF IS_PED_IN_VEHICLE(player_ped_id(),vehPlayer)
IF TRIGGER_MUSIC_EVENT("CHN2_TREV_RADIO_1_FRTA")
actions[thisI].flag++
ENDIF
// ENDIF
//ENDIF
BREAK
CASE 4
IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer)
IF IS_PED_IN_VEHICLE(player_ped_id(),vehPlayer)
IF GET_IS_VEHICLE_ENGINE_RUNNING(vehPlayer)
actions[thisI].intA += GET_GAME_TIMER() + 7000
actions[thisI].flag++
ENDIF
ENDIF
ENDIF
BREAK
CASE 5
IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer)
IF IS_PED_IN_VEHICLE(player_ped_id(),vehPlayer)
IF GET_GAME_TIMER() > actions[thisI].intA
IF GET_PLAYER_RADIO_STATION_GENRE() != enum_to_int(RADIO_GENRE_PUNK)
AND GET_PLAYER_RADIO_STATION_GENRE() != enum_to_int(RADIO_GENRE_OFF)
iF GET_MUSIC_VOL_SLIDER() != 0
IF CREATE_CONVERSATION_EXTRA("CHI2_rad",1,player_ped_id(),"Trevor")
actions[thisI].flag++
ENDIF
else
actions[thisI].flag++
endif
ELSE
actions[thisI].intA = GET_GAME_TIMER() + 5000
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 6
IF IS_CONV_ROOT_PLAYING("CHI2_rad")
actions[thisI].flag++
ENDIF
BREAK
CASE 7
IF NOT IS_CONV_ROOT_PLAYING("CHI2_rad")
IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer)
IF IS_PED_IN_VEHICLE(player_ped_id(),vehPlayer)
IF NOT IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_VEH_RADIO_WHEEL)
IF GET_PLAYER_RADIO_STATION_GENRE() != enum_to_int(RADIO_GENRE_PUNK)
IF iRadSound = -1
iRadSound = GET_SOUND_ID()
PLAY_SOUND_FRONTEND(iRadSound,"Change_Station_Loud","Radio_Soundset")
actions[thisI].flag++
ENDIF
ELSE
actions[thisI].flag = 9
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 8
IF NOT IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_VEH_RADIO_WHEEL)
IF TRIGGER_MUSIC_EVENT("CHN2_TREV_RADIO_2_FRTA")
START_AUDIO_SCENE("CHI_2_DRIVE_ROCK_RADIO")
actions[thisI].flag++
ENDIF
ENDIF
BREAK
CASE 9
IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer)
IF IS_PED_IN_VEHICLE(player_ped_id(),vehPlayer)
IF GET_PLAYER_RADIO_STATION_GENRE() = enum_to_int(RADIO_GENRE_PUNK)
iF GET_MUSIC_VOL_SLIDER() != 0
IF CREATE_CONVERSATION_EXTRA("CHI2_radb",1,player_ped_id(),"Trevor")
actions[thisI].flag++
ENDIF
else
actions[thisI].flag++
endif
ENDIF
ENDIF
ENDIF
/* IF actions[thisI].flag = 9
STOP_AUDIO_SCENE("CHI_2_DRIVE_ROCK_RADIO")
iRadSound = -1
actions[thisI].flag = 11
ENDIF*/
BREAK
/* CASE 10 //in case the player changes the radio station
IF GET_PLAYER_RADIO_STATION_GENRE() != enum_to_int(RADIO_GENRE_PUNK)
OR NOT IS_PED_IN_ANY_VEHICLE(player_ped_id())
STOP_AUDIO_SCENE("CHI_2_DRIVE_ROCK_RADIO")
actions[thisI].flag++
ENDIF
BREAK
case 11
IF IS_PED_IN_ANY_VEHICLE(player_ped_id())
AND GET_PLAYER_RADIO_STATION_GENRE() = enum_to_int(RADIO_GENRE_PUNK)
START_AUDIO_SCENE("CHI_2_DRIVE_ROCK_RADIO")
actions[thisI].flag = 10
ENDIF
break*/
endswitch
BREAK
CASE ACT_GET_WANTED_LEVEL
kill_event(events_control_dispatch)
SET_WANTED_LEVEL_MULTIPLIER(1.0)
SET_PLAYER_WANTED_LEVEL(player_id(),2)
SET_PLAYER_WANTED_LEVEL_NOW(player_id())
SET_MAX_WANTED_LEVEL(5)
actions[thisI].completed = TRUE
BREAK
CASE ACT_CHANGE_BUILDING_STATE
IF NOT IS_POINT_VISIBLE(<<2448.25, 4974.92, 55.11>>,20,500)
OR IS_CONDITION_TRUE(COND_PLAYER_500_FROM_FARM)
IF int_farm != null
UNPIN_INTERIOR(int_farm)
ENDIF
int_farm=null
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE,BUILDINGSTATE_CLEANUP, FALSE)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP1,BUILDINGSTATE_CLEANUP, FALSE)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP2,BUILDINGSTATE_CLEANUP, FALSE)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP3,BUILDINGSTATE_CLEANUP, FALSE)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_INTERIOR, BUILDINGSTATE_DESTROYED)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_OCCLUSION, BUILDINGSTATE_DESTROYED)
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_STAT_POUR_GAS
SWITCH actions[thisI].flag
CASE 0
IF HAS_PED_GOT_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN)
actions[thisI].intA = GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN)
actions[thisI].flag++
ENDIF
BREAK
CASE 1
IF HAS_PED_GOT_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN)
int iAmmo
iAmmo = GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN)
IF iAmmo > actions[thisI].intA
cprintln(debug_Trevor3,"more ammo")
actions[thisI].intA = iAmmo
ELIF iAmmo < actions[thisI].intA
INFORM_MISSION_STATS_OF_INCREMENT(CHI2_GAS_USED,actions[thisI].intA - iAmmo,FALSE)
cprintln(debug_Trevor3,"ammo added = ",actions[thisI].intA - iAmmo)
actions[thisI].intA = iAmmo
ENDIF
ENDIF
weapon_type thisWep
IF GET_CURRENT_PED_WEAPON(player_ped_id(),thisWep)
IF thisWep = WEAPONTYPE_PETROLCAN
IF IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_ATTACK)
IF actions[thisI].intB = 0
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(CHI2_GAS_POUR_TIME)
actions[thisI].intB = 1
ENDIF
ELSE
IF actions[thisI].intB = 1
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME)
actions[thisI].intB = 0
ENDIF
ENDIF
ELSE
IF actions[thisI].intB = 1
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME)
actions[thisI].intB = 0
ENDIF
ENDIF
ELSE
IF actions[thisI].intB = 1
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME)
actions[thisI].intB = 0
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ACT_FUDGE_GAS_AMMO
SWITCH actions[thisI].flag
CASE 0
actions[thisI].intA = -1
actions[thisI].flag++
BREAK
CASE 1
weapon_type thisWep
IF GET_CURRENT_PED_WEAPON(player_ped_id(),thisWep)
IF thisWep = WEAPONTYPE_PETROLCAN
IF IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_ATTACK)
IF actions[thisI].intA = -1
actions[thisI].intA = GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN)
ENDIF
//int maxfuel
// maxFuel = floor(to_float(actions[thisI].intA) * (0.2 + (0.8* (to_float(gasNodesRemaining) / 61.0))))
IF gasNodesRemaining = 0
actions[thisI].floatA += timestep() * 2.0
ELSE
IF gasNodesRemaining < 30
AND actions[thisI].floatA < 70
actions[thisI].floatA += timestep() * 1.5
ELSE
actions[thisI].floatA += timestep()
ENDIF
ENDIF
int setAmmo
setAmmo = floor(actions[thisI].intA * (1.0 - (actions[thisI].floatA / 90.0)))
/*
IF maxfuel < setAmmo
IF maxFuel < GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN)
SET_AMMO_IN_CLIP(player_ped_id(),thisWep,maxFuel)
ENDIF
ELSE*/
IF setAmmo > 0
SET_PED_AMMO(player_ped_id(),thisWep,setAmmo)
Else
SET_PED_AMMO(player_ped_id(),thisWep,0)
// REMOVE_WEAPON_FROM_PED(player_ped_id(),thisWep)
ENDIF
// ENDIF
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ACT_STOP_MUSIC
playmusic("CHN2_STOP_TRACK",false,NULL_STRING())
actions[thisI].completed = TRUE
BREAK
CASE ACT_FIRE_AUDIO
SET_AMBIENT_ZONE_LIST_STATE("AZL_CHN2_METH_LAB_FARM_FIRE", TRUE, TRUE)
DISABLE_TAXI_HAILING(TRUE)
actions[thisI].completed = TRUE
BREAK
CASE ACT_ENABLE_TAXI
DISABLE_TAXI_HAILING(FALSE)
actions[thisI].completed = TRUE
BREAK
CASE ACT_RESET_STUFF
SET_VEHICLE_POPULATION_BUDGET(3)
SET_PED_POPULATION_BUDGET(3)
actions[thisI].completed = TRUE
BREAK
CASE ACT_REMOVE_SOME_ASSETS
switch actions[thisI].flag
case 0
IF DOES_ENTITY_EXIST(zPED[enum_to_int(pos_barrels_1)].obj)
SET_OBJECT_AS_NO_LONGER_NEEDED(zPED[enum_to_int(pos_barrels_1)].obj)
ENDIF
IF DOES_ENTITY_EXIST(zPED[enum_to_int(pos_barrels_2)].obj)
SET_OBJECT_AS_NO_LONGER_NEEDED(zPED[enum_to_int(pos_barrels_2)].obj)
ENDIF
int ij
repeat count_of(oCans) ij
IF DOES_ENTITY_EXIST(oCans[ij])
SET_OBJECT_AS_NO_LONGER_NEEDED(oCans[ij])
ENDIF
endrepeat
SET_MODEL_AS_NO_LONGER_NEEDED(PROP_CS_BEER_BOT_01)
SET_MODEL_AS_NO_LONGER_NEEDED(PROP_LD_CAN_01)
SET_MODEL_AS_NO_LONGER_NEEDED(Prop_CS_Fertilizer)
actions[thisI].flag++
BREAK
CASE 1
IF IS_PED_INJURED(zPED[enum_to_int(pos_innocent_drugden)].id)
IF DOES_ENTITY_EXIST(objShotgun)
SET_OBJECT_AS_NO_LONGER_NEEDED(objShotgun)
REMOVE_WEAPON_ASSET(WEAPONTYPE_SAWNOFFSHOTGUN)
actions[thisI].completed = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ACT_WHIMPERING
IF NOT IS_PED_INJURED(zped[ped_tao].id)
IF NOT IS_AMBIENT_SPEECH_PLAYING(zped[ped_tao].id)
IF GET_GAME_TIMER() > actions[thisI].intA
IF NOT IS_PED_INJURED(zped[ped_tao].id)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(zped[ped_tao].id,"WHIMPER","WAVELOAD_PAIN_MALE","SPEECH_PARAMS_FORCE_NORMAL")
actions[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(3500,5000)
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//CASE ACT_ANIMATE_CHINESE_AFTER_CUTSCENE
// switch actions[thisI].flag
// case 0
//BREAK
CASE ACT_ANIMATE_CHINESE
switch actions[thisI].flag
case 0
REQUEST_MODEL(IG_TAOCHENG)
REQUEST_MODEL(IG_TAOSTRANSLATOR)
REQUEST_ANIM_DICT("misschinese2_crystalmaze")
IF iNavBlock = -1
OR (iNavBlock != -1 AND NOT DOES_NAVMESH_BLOCKING_OBJECT_EXIST(iNavBlock))
iNavBlock = ADD_NAVMESH_BLOCKING_OBJECT(<<1991.081299,3054.516602,46.714745>>,<<4,4,4>>,0,false,BLOCKING_OBJECT_WANDERPATH + BLOCKING_OBJECT_SHORTESTPATH)
ENDIF
actions[thisI].flag++
BREAK
CASE 1
IF HAS_ANIM_DICT_LOADED("misschinese2_crystalmaze")
AND HAS_MODEL_LOADED(IG_TAOCHENG)
AND HAS_MODEL_LOADED(IG_TAOSTRANSLATOR)
IF NOT DOES_ENTITY_EXIST(zped[ped_tao].id )
zped[ped_tao].id = CREATE_PED(PEDTYPE_MISSION,IG_TAOCHENG,<< 1991.988, 3054.510, 46.215 >>) //these were commented out but don't know why I did that because when player restarts from beginning of mission this would halt progress because these peds never exist.
SET_PED_RELATIONSHIP_GROUP_HASH(zped[ped_tao].id,taorelgroup)
SET_PED_CAN_BE_TARGETTED(zped[ped_tao].id,FALSE)
ELSE
IF NOT IS_PED_INJURED(zped[ped_tao].id)
SET_PED_RELATIONSHIP_GROUP_HASH(zped[ped_tao].id,taorelgroup)
SET_PED_CAN_BE_TARGETTED(zped[ped_tao].id,FALSE)
ENDIF
endif
IF NOT DOES_ENTITY_EXIST(zped[ped_taos_translator].id )
zped[ped_taos_translator].id = CREATE_PED(PEDTYPE_MISSION,IG_TAOSTRANSLATOR,<< 1991.988, 3054.510, 46.215 >>) //these were commented out but don't know why I did that because when player restarts from beginning of mission this would halt progress because these peds never exist.
SET_PED_RELATIONSHIP_GROUP_HASH(zped[ped_taos_translator].id,taorelgroup)
SET_PED_CAN_BE_TARGETTED(zped[ped_taos_translator].id,FALSE)
SET_PED_PROP_INDEX(zped[ped_taos_translator].id, INT_TO_ENUM(PED_PROP_POSITION,1), 0, 1)
ELSE
IF NOT IS_PED_INJURED(zped[ped_taos_translator].id)
SET_PED_RELATIONSHIP_GROUP_HASH(zped[ped_taos_translator].id,taorelgroup)
SET_PED_CAN_BE_TARGETTED(zped[ped_taos_translator].id,FALSE)
ENDIF
endif
// IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("tao")
IF NOT IS_PED_INJURED(zPED[ped_tao].id)
////cprintln(debug_trevor3,"tao tasked")
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intA)
actions[thisI].intA = CREATE_SYNCHRONIZED_SCENE(<< 1991.988, 3054.510, 46.215 >>, << -0.000, 0.000, 50.760 >>)
SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(actions[thisI].intA,TRUE)
ENDIF
TASK_SYNCHRONIZED_SCENE (zped[ped_tao].id, actions[thisI].intA, "misschinese2_crystalmaze", "2int_Loop_A_TaoCheng", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_EXPAND_PED_CAPSULE_FROM_SKELETON, RBF_PLAYER_IMPACT )
ENDIF
// ENDIF
// IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Taos_Translator")
IF NOT IS_PED_INJURED(zPED[ped_taos_translator].id)
////cprintln(debug_trevor3,"tao trans tasked")
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intA)
actions[thisI].intA = CREATE_SYNCHRONIZED_SCENE(<< 1991.988, 3054.510, 46.215 >>, << -0.000, 0.000, 50.760 >>)
SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(actions[thisI].intA,TRUE)
ENDIF
TASK_SYNCHRONIZED_SCENE (zped[ped_taos_translator].id, actions[thisI].intA, "misschinese2_crystalmaze", "2int_Loop_A_taotranslator", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_EXPAND_PED_CAPSULE_FROM_SKELETON, RBF_PLAYER_IMPACT )
ENDIF
actions[thisI].flag++
ENDIF
BREAK
CASE 2
// ENDIF
// IF NOT IS_CUTSCENE_PLAYING()
// OR HAS_CUTSCENE_FINISHED()
IF NOT IS_PED_INJURED(zPED[ped_taos_translator].id)
AND NOT IS_PED_INJURED(zPED[ped_tao].id)
// zped[ped_tao].id = CREATE_PED(PEDTYPE_MISSION,IG_TAOCHENG,<< 1991.988, 3054.510, 46.215 >>)
// zped[ped_taos_translator].id = CREATE_PED(PEDTYPE_MISSION,IG_TAOSTRANSLATOR,<< 1991.988, 3054.510, 46.215 >>)
SET_PED_COMPONENT_VARIATION(zPED[ped_taos_translator].id,ped_comp_head,0,0)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_tao].id,true)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_taos_translator].id,true)
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intA)
actions[thisI].intA = CREATE_SYNCHRONIZED_SCENE(<< 1991.988, 3054.510, 46.215 >>, << -0.000, 0.000, 50.760 >>)
TASK_SYNCHRONIZED_SCENE (zped[ped_tao].id, actions[thisI].intA, "misschinese2_crystalmaze", "2int_Loop_A_TaoCheng", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_EXPAND_PED_CAPSULE_FROM_SKELETON, RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (zped[ped_taos_translator].id, actions[thisI].intA, "misschinese2_crystalmaze", "2int_Loop_A_taotranslator", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_EXPAND_PED_CAPSULE_FROM_SKELETON, RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(actions[thisI].intA,TRUE)
ENDIF
SET_PED_CONFIG_FLAG(zped[ped_tao].id,PCF_RunFromFiresAndExplosions,FALSE)
SET_PED_CONFIG_FLAG(zped[ped_tao].id,PCF_DisableExplosionReactions,TRUE)
SET_PED_CONFIG_FLAG(zped[ped_taos_translator].id,PCF_RunFromFiresAndExplosions,FALSE)
SET_PED_CONFIG_FLAG(zped[ped_taos_translator].id,PCF_DisableExplosionReactions,TRUE)
actions[thisI].flag=TAO_EVENT_ANIM_PLAYING
endif
// endif
break
case TAO_EVENT_ANIM_PLAYING
IF NOT IS_PED_INJURED(zped[ped_tao].id)
IF NOT IS_PED_RAGDOLL(zped[ped_tao].id)
// IF NOT IS_BIT_SET(actions[thisI].intB,0) //this seems wrong. If the translator runs off, Cheng stops his anims
IF IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intA)
IF GET_SYNCHRONIZED_SCENE_PHASE(actions[thisI].intA) = 1.0
actions[thisI].intA = CREATE_SYNCHRONIZED_SCENE(<< 1991.988, 3054.510, 46.215 >>, << -0.000, 0.000, 50.760 >>)
SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(actions[thisI].intA,TRUE)
IF GET_RANDOM_INT_IN_RANGE(0,3) < 2
TASK_SYNCHRONIZED_SCENE (zped[ped_tao].id, actions[thisI].intA, "misschinese2_crystalmaze", "2int_Loop_Base_TaoCheng", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_EXPAND_PED_CAPSULE_FROM_SKELETON, RBF_PLAYER_IMPACT )
IF NOT IS_PED_INJURED(zped[ped_taos_translator].id)
IF NOT IS_PED_RAGDOLL(zped[ped_taos_translator].id)
IF NOT IS_BIT_SET(actions[thisI].intB,0)
TASK_SYNCHRONIZED_SCENE (zped[ped_taos_translator].id, actions[thisI].intA, "misschinese2_crystalmaze", "2int_Loop_Base_taotranslator", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_EXPAND_PED_CAPSULE_FROM_SKELETON, RBF_PLAYER_IMPACT )
ENDIF
ENDIF
ENDIF
ELSE
TASK_SYNCHRONIZED_SCENE (zped[ped_tao].id, actions[thisI].intA, "misschinese2_crystalmaze", "2int_Loop_A_TaoCheng", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_EXPAND_PED_CAPSULE_FROM_SKELETON, RBF_PLAYER_IMPACT )
IF NOT IS_PED_INJURED(zped[ped_taos_translator].id)
IF NOT IS_PED_RAGDOLL(zped[ped_taos_translator].id)
IF NOT IS_BIT_SET(actions[thisI].intB,0)
TASK_SYNCHRONIZED_SCENE (zped[ped_taos_translator].id, actions[thisI].intA, "misschinese2_crystalmaze", "2int_Loop_A_taotranslator", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_EXPAND_PED_CAPSULE_FROM_SKELETON, RBF_PLAYER_IMPACT )
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
actions[thisI].intA = CREATE_SYNCHRONIZED_SCENE(<< 1991.988, 3054.510, 46.215 >>, << -0.000, 0.000, 50.760 >>)
TASK_SYNCHRONIZED_SCENE (zped[ped_tao].id, actions[thisI].intA, "misschinese2_crystalmaze", "2int_Loop_A_TaoCheng", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_EXPAND_PED_CAPSULE_FROM_SKELETON, RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(actions[thisI].intA,TRUE)
ENDIF
ENDIF
//ENDIF
ENDIF
IF NOT IS_PED_INJURED(zped[ped_taos_translator].id)
IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(zped[ped_taos_translator].id,player_ped_id())
OR IS_PED_RAGDOLL(zped[ped_taos_translator].id)
OR IS_PED_INJURED(zped[ped_tao].id)
OR ((NOT IS_PED_INJURED(zped[ped_taos_translator].id)) AND GET_SCRIPT_TASK_STATUS(zped[ped_taos_translator].id,SCRIPT_TASK_SYNCHRONIZED_SCENE) = DORMANT_TASK)
IF NOT IS_BIT_SET(actions[thisI].intB,0)
// SET_PED_TO_RAGDOLL(zped[ped_taos_translator].id, 5000, 6000, TASK_RELAX,FALSE,TRUE,TRUE) //a year. Is that long enough for you?
// SET_ENTITY_HEALTH(zped[ped_taos_translator].id,0)
// SET_PED_AS_NO_LONGER_NEEDED(zped[ped_taos_translator].id)
// zped[ped_taos_translator].id = null //so the fail condition for killing him won't be met
CLEAR_PED_TASKS(zped[ped_taos_translator].id)
startSeq()
TASK_SMART_FLEE_PED(null,player_ped_id(),30,20000)
TASK_COWER(null)
endseq(zped[ped_taos_translator].id)
SET_BIT(actions[thisI].intB,0)
ENDIF
ENDIF
ENDIF
IF NOT IS_PED_INJURED(zped[ped_tao].id)
IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(zped[ped_tao].id,player_ped_id())
OR IS_PED_RAGDOLL(zped[ped_tao].id)
OR IS_BIT_SET(actions[thisI].intB,1)
OR ((NOT IS_PED_INJURED(zped[ped_tao].id)) AND GET_SCRIPT_TASK_STATUS(zped[ped_tao].id,SCRIPT_TASK_SYNCHRONIZED_SCENE) = DORMANT_TASK)
SET_ENTITY_HEALTH(zped[ped_tao].id,0)
IF NOT IS_PED_RAGDOLL(zped[ped_tao].id)
// SET_PED_TO_RAGDOLL(zped[ped_tao].id, 50000, 60000, TASK_RELAX,FALSE,TRUE,TRUE)
// SET_BIT(actions[thisI].intB,1)
ENDIF
ENDIF
ENDIF
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< 1991.988, 3054.510, 46.215 >>) > 200.0
IF DOES_ENTITY_EXIST(zped[ped_tao].id)
AND DOES_ENTITY_EXIST(zped[ped_taos_translator].id)
DELETE_PED(zped[ped_tao].id)
DELETE_PED(zped[ped_taos_translator].id)
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(IG_TAOCHENG)
SET_MODEL_AS_NO_LONGER_NEEDED(IG_TAOSTRANSLATOR)
REMOVE_ANIM_DICT("misschinese2_crystalmaze")
// DISABLE_NAVMESH_IN_AREA(<<1993.638428,3053.134033,45.214718>>, <<1989.650635,3055.619385,47.840214>>,FALSE)
IF iNavBlock != -1
IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(iNavBlock)
REMOVE_NAVMESH_BLOCKING_OBJECT(iNavBlock)
ENDIF
ENDIF
//cprintln(debug_trevor3,"REMOVE NAVMESH b")
actions[thisI].completed = TRUE
ENDIF
break
ENDSWITCH
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<1995.1694, 3062.1624, 46.0490>>) < 7
IF NOT IS_PED_INJURED(zped[ped_tao].id)
IF GET_SCRIPT_TASK_STATUS(zped[ped_tao].id,SCRIPT_TASK_LOOK_AT_ENTITY) != PERFORMING_TASK
TASK_LOOK_AT_ENTITY(zped[ped_tao].id,player_ped_id(),4000,SLF_WIDEST_PITCH_LIMIT|SLF_WIDEST_YAW_LIMIT|SLF_WHILE_NOT_IN_FOV)
ENDIF
ENDIF
IF NOT IS_PED_INJURED(zped[ped_taos_translator].id)
IF GET_SCRIPT_TASK_STATUS(zped[ped_taos_translator].id,SCRIPT_TASK_LOOK_AT_ENTITY) != PERFORMING_TASK
TASK_LOOK_AT_ENTITY(zped[ped_taos_translator].id,player_ped_id(),4000,SLF_WIDEST_PITCH_LIMIT|SLF_WIDEST_YAW_LIMIT|SLF_WHILE_NOT_IN_FOV)
ENDIF
ENDIF
ENDIF
break
case act_stat_double_kill
int iu
iu=0
thisSnipeCount = 0
repeat count_of(zped) iu
IF DOES_ENTITY_EXIST(zped[iu].id)
IF IS_PED_INJURED(zped[iu].id)
if zPED[iu].sniped = FALSE
IF GET_PED_CAUSE_OF_DEATH(zped[iu].id) = WEAPONTYPE_DLC_ASSAULTSNIPER
OR GET_PED_CAUSE_OF_DEATH(zped[iu].id) = WEAPONTYPE_HEAVYSNIPER
OR GET_PED_CAUSE_OF_DEATH(zped[iu].id) = WEAPONTYPE_REMOTESNIPER
OR GET_PED_CAUSE_OF_DEATH(zped[iu].id) = WEAPONTYPE_SNIPERRIFLE
thisSnipeCount++
ENDIF
zPED[iu].sniped = TRUE
ENDIF
endif
endif
ENDREPEAT
IF thisSnipeCount > 0
cprintln(debug_trevor3,"SNIPED")
ENDIF
IF thisSnipeCount > 1
cprintln(debug_trevor3,"SNIPED BAM")
INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(CHI2_ONE_SHOT_TWO_KILLS)
actions[thisI].completed = true
endif
break
case act_MUSIC_start_snipe
PLAYMUSIC("CHN2_SNIPE_START",false,"CHN2_EXPLODE")
REPLAY_RECORD_BACK_FOR_TIME(4.0, 15.0, REPLAY_IMPORTANCE_HIGHEST)
actions[thisI].completed = true
BREAK
CASE act_MUSIC_approach_house_or_alert
IF IS_CONDITION_TRUE(COND_ALL_ENEMY_ALERTED)
PLAYMUSIC("CHN2_SPOTTED",false,"CHN2_EXPLODE")
ELSE
PLAYMUSIC("CHN2_TO_HOUSE",false,"CHN2_EXPLODE")
ENDIF
actions[thisI].completed = true
BREAK
case act_create_petrol_can_with_blip
IF DOES_PICKUP_EXIST(pickup_gas)
REMOVE_PICKUP(pickup_Gas)
ENDIF
int PlacementFlags
PlacementFlags = 0
SET_BIT(PlacementFlags, enum_to_int(PLACEMENT_FLAG_SNAP_TO_GROUND))
SET_BIT(PlacementFlags, enum_to_int(PLACEMENT_FLAG_UPRIGHT))
SET_BIT(PlacementFlags, enum_to_int(PLACEMENT_FLAG_FIXED))
IF NOT DOES_PICKUP_EXIST(pickup_gas)
pickup_gas = CREATE_PICKUP(PICKUP_WEAPON_PETROLCAN,<< 2436.7747, 4967.4868, 41.4 >>,PlacementFlags)
ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(pickup_gas,"V_8_BasementRm")
missionBlip = CREATE_BLIP_FOR_PICKUP(pickup_gas)
SET_BLIP_NAME_FROM_TEXT_FILE(missionBlip, "FRMBLIP")
ENDIF
actions[thisI].completed = true
break
case act_stage_prep
IF NOT is_event_active(events_spawn_house)
DISABLE_TAXI_HAILING(TRUE)
START_AUDIO_SCENE("CHI_2_SHOOTOUT_STEALTH")
SET_INSTANCE_PRIORITY_HINT( INSTANCE_HINT_SHOOTING )
actions[thisI].completed = true
ENDIF
break
case act_remove_initial_assets
REMOVE_ANIM_DICT("misschinese2_barrelRoll")
REMOVE_ANIM_SET("move_m@gangster@var_e")
REMOVE_ANIM_SET("move_m@gangster@var_f")
REMOVE_ANIM_SET("move_m@gangster@generic")
REMOVE_ANIM_DICT("misschinese2_bank5")
actions[thisI].completed = true
break
case act_outside_peds_flee
SWITCH actions[thisI].flag
CASE 0
actions[thisI].intA = GET_GAME_TIMER() + 4000
actions[thisI].flag++
BREAK
CASE 1
IF GET_GAME_TIMER() > actions[thisI].intA
repeat count_of(zped) actions[thisI].intA
IF NOT IS_PED_INJURED(zped[actions[thisI].intA].id)
IF GET_INTERIOR_FROM_ENTITY(zped[actions[thisI].intA].id) = null
zped[actions[thisI].intA].role = role_innocent
pedReactionState[actions[thisI].intA].state = STATE_FLEE
pedReactionState[actions[thisI].intA].actionFlag=0
pedReactionState[actions[thisI].intA].subFlag=0
set_ped_action(actions[thisI].intA,action_flee)
SET_PED_RELATIONSHIP_GROUP_HASH(zped[actions[thisI].intA].id,HASH_IGNORE_GROUP)
CLEANUP_AI_PED_BLIP(zped[actions[thisI].intA].aiBlip)
endif
endif
endrepeat
// actions[thisI].completed = true
ENDIF
BREAK
ENDSWITCH
BREAK
case act_remove_upstairs_peds
repeat count_of(zped) actions[thisI].intA
IF NOT IS_PED_INJURED(zped[actions[thisI].intA].id)
IF IS_ENTITY_IN_ANGLED_AREA(zped[actions[thisI].intA].id, <<2457.884766,4981.169434,50.005180>>, <<2441.579834,4965.088379,56.240055>>, 34.312500)
delete_ped(zped[actions[thisI].intA].id)
ENDIF
ENDIF
ENDREPEAT
actions[thisI].completed = true
break
case act_MUSIC_enter_house
PLAYMUSIC("CHN2_ENTER_HOUSE",false,"CHN2_EXPLODE")
actions[thisI].completed = true
break
case act_remaining_peds_flee
int iS
repeat count_of(zped) iS
IF NOT IS_PED_INJURED(zped[iS].id)
IF GET_ROOM_KEY_FROM_ENTITY(zped[iS].id) != GET_HASH_KEY("V_8_BasementRm")
set_ped_action(is,action_flee)
zped[is].role = role_innocent
pedReactionState[is].state = state_flee
zped[is].actionFlag = 0
ENDIF
ENDIF
endrepeat
actions[thisI].completed = true
break
case act_window_ped_walks_inside
SWITCH actions[thisI].flag
case 0
actions[thisI].intA = get_ped_with_placement(pos_inside_right_window)
IF actions[thisI].intA != -1
actions[thisI].flag++
ENDIF
BREAK
CASE 1
IF NOT IS_PED_INJURED(zped[actions[thisI].intA].id)
set_ped_action(actions[thisI].intA,action_move_inside_house)
actions[thisI].completed = true
ELSE
actions[thisI].completed = true
ENDIF
BREAK
ENDSWITCH
break
case act_put_player_in_action_mode
IF IS_PED_SHOOTING(player_ped_id())
OR IS_CONDITION_TRUE(COND_ALL_ENEMY_ALERTED)
SET_PED_USING_ACTION_MODE(player_ped_id(),TRUE)
actions[thisI].completed = true
ENDIF
break
case act_end_stealth_audio_Scene
STOP_AUDIO_SCENE("CHI_2_SHOOTOUT_STEALTH")
actions[thisI].completed = true
break
case act_enemy_alerted_audio_Scene
START_AUDIO_SCENE("CHI_2_SHOOTOUT_ENEMIES_ALERTED")
actions[thisI].completed = true
break
case act_end_enemy_alerted_audio_Scene
IF IS_AUDIO_SCENE_ACTIVE("CHI_2_SHOOTOUT_ENEMIES_ALERTED")
STOP_AUDIO_SCENE("CHI_2_SHOOTOUT_ENEMIES_ALERTED")
ENDIF
actions[thisI].completed = true
break
case act_audio_scene_in_house
IF NOT IS_AUDIO_SCENE_ACTIVE("CHI_2_SHOOTOUT_IN_HOUSE")
IF IS_CONDITION_TRUE(COND_PLAYER_IN_HOUSE)
START_AUDIO_SCENE("CHI_2_SHOOTOUT_IN_HOUSE")
ENDIF
ELSE
IF IS_CONDITION_FALSE(COND_PLAYER_IN_HOUSE)
STOP_AUDIO_SCENE("CHI_2_SHOOTOUT_IN_HOUSE")
ENDIF
ENDIF
break
case act_reset_bottle_shooting_ped_accuracy
IF IS_CONDITION_TRUE(COND_ALL_ENEMY_ALERTED)
OR (NOT IS_PED_INJURED(zped[enum_to_int(pos_shooting_bottle_1)].id) AND IS_PED_IN_COMBAT(zped[enum_to_int(pos_shooting_bottle_1)].id))
OR (NOT IS_PED_INJURED(zped[enum_to_int(pos_shooting_bottle_2)].id) AND IS_PED_IN_COMBAT(zped[enum_to_int(pos_shooting_bottle_2)].id))
IF NOT IS_PED_INJURED(zped[enum_to_int(pos_shooting_bottle_1)].id)
SET_PED_ACCURACY(zped[enum_to_int(pos_shooting_bottle_1)].id,45)
ENDIF
IF NOT IS_PED_INJURED(zped[enum_to_int(pos_shooting_bottle_2)].id)
SET_PED_ACCURACY(zped[enum_to_int(pos_shooting_bottle_2)].id,45)
ENDIF
actions[thisI].completed = true
ENDIF
break
case act_modify_ped_seeing_range
IF IS_CONDITION_TRUE(COND_ALL_ENEMY_ALERTED)
repeat count_of(zped) actions[thisI].intA
IF NOT IS_PED_INJURED(zped[actions[thisI].intA].id)
SET_PED_SEEING_RANGE(zped[actions[thisI].intA].id,60.0) //increased from 19
ENDIF
ENDREPEAT
actions[thisI].completed = TRUE
ELSE
switch actions[thisI].flag
case 0
IF IS_CONDITION_TRUE(COND_PLAYER_IN_HOUSE)
repeat count_of(zped) actions[thisI].intA
IF NOT IS_PED_INJURED(zped[actions[thisI].intA].id)
IF zped[actions[thisI].intA].role = role_guard_outside
SET_PED_SEEING_RANGE(zped[actions[thisI].intA].id,5.0)
ENDIF
ENDIF
ENDREPEAT
actions[thisI].flag++
ENDIF
BREAK
CASe 1
IF IS_CONDITION_FALSE(COND_PLAYER_IN_HOUSE)
repeat count_of(zped) actions[thisI].intA
IF NOT IS_PED_INJURED(zped[actions[thisI].intA].id)
IF zped[actions[thisI].intA].role = role_guard_outside
SET_PED_SEEING_RANGE(zped[actions[thisI].intA].id,30.0)
ENDIF
ENDIF
ENDREPEAT
actions[thisI].flag=0
ENDIF
BREAK
ENDSWITCH
ENDIF
break
case act_basement_ped
switch actions[thisI].flag
case 0
REQUEST_ANIM_DICT("misschinese2_crystalmaze")
actions[thisI].flag++
BREAK
CASE 1
IF HAS_ANIM_DICT_LOADED("misschinese2_crystalmaze")
IF NOT IS_PED_INJURED(zped[enum_to_int(pos_innocent_drugden)].id)
actions[thisI].intA = CREATE_SYNCHRONIZED_SCENE(<< 2435.312, 4967.087, 41.350 >>, << -0.000, 0.000, 11.400 >>)
SET_SYNCHRONIZED_SCENE_LOOPED(actions[thisI].intA,TRUE)
TASK_SYNCHRONIZED_SCENE (zped[actions[thisI].intA].id, actions[thisI].intB, "misschinese2_crystalmaze", "_stand_to_aim", INSTANT_BLEND_IN, NORMAL_BLEND_OUT )
actions[thisI].flag++
ENDIF
ENDIF
BREAK
CASE 2
BREAK
ENDSWITCH
break
case act_spawn_blazer
switch actions[thisI].flag
case 0
request_model(blazer)
actions[thisI].flag++
break
case 1
if has_model_loaded(blazer)
vehBlazer = create_vehicle(Blazer,<<2478.5867, 4941.8032, 43.6736>>, 227.2903)
SET_VEHICLE_ON_GROUND_PROPERLY(vehBlazer)
actions[thisI].completed=true
endif
break
ENDSWITCH
break
CASE ACT_PREP_PETROL_POUR
SET_PED_USING_ACTION_MODE(player_ped_id(),FALSE)
RESET_GAS_TRAIL(FALSE)
REMOVE_DEAD_PEDS_ON_TRAIL_ROUTE()
actions[thisI].completed=true
BREAK
CASE ACT_CONTROL_PETROL_BLIPS
SWITCH actions[thisI].flag
CASE 0
IF IS_CONDITION_TRUE(COND_PLAYER_HAS_PETROL_CAN)
if does_blip_exist(missionBlip)
REMOVE_BLIP(missionBlip)
endif
HIDE_GAS_TRAIL(FALSE)
IF IS_THIS_PRINT_BEING_DISPLAYED("FRMFLC")
CLEAR_PRINTS()
ENDIF
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(CHI2_GAS_POUR_TIME)
REPLAY_RECORD_BACK_FOR_TIME(3.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
IF gasInCan = 0
gasInCan = GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN)
ENDIF
actions[thisI].flag++
ENDIF
BREAK
CASE 1
IF NOT IS_CONDITION_TRUE(COND_PLAYER_HAS_PETROL_CAN)
INFORM_MISSION_STATS_OF_INCREMENT(CHI2_GAS_USED,gasInCan - GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN),TRUE)
oGasCan = GET_CLOSEST_OBJECT_OF_TYPE(GET_ENTITY_COORDS(player_ped_id()),20.0,GET_WEAPONTYPE_MODEL(WEAPONTYPE_PETROLCAN),FALSE)
IF oGasCan != null
if does_blip_exist(missionBlip)
REMOVE_BLIP(missionBlip)
endif
missionBlip = CREATE_BLIP_FOR_OBJECT(oGasCan)
HIDE_GAS_TRAIL()
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME)
endif
actions[thisI].flag=0
ENDIF
BREAK
ENDSWITCH
IF IS_GAS_TRAIL_COMPLETE()
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME)
actions[thisI].completed = true
add_event(events_check_player_out_front)
ENDIF
/*
IF NOT HAS_PED_GOT_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN)
OR NOT DOES_PICKUP_EXIST(pickup_gas)
oGasCan = GET_CLOSEST_OBJECT_OF_TYPE(GET_ENTITY_COORDS(player_ped_id()),20.0,GET_WEAPONTYPE_MODEL(WEAPONTYPE_PETROLCAN),FALSE)
IF oGasCan != null
if does_blip_exist(missionBlip)
REMOVE_BLIP(missionBlip)
endif
missionBlip = CREATE_BLIP_FOR_OBJECT(oGasCan)
HIDE_GAS_TRAIL()
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME)
endif
ELSE
HIDE_GAS_TRAIL(FALSE)
if does_blip_exist(missionBlip)
REMOVE_BLIP(missionBlip)
endif
IF IS_THIS_PRINT_BEING_DISPLAYED("FRMFLC")
CLEAR_PRINTS()
ENDIF
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(CHI2_GAS_POUR_TIME)
IF gasInCan = 0
gasInCan = GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN)
ELSE
INFORM_MISSION_STATS_OF_INCREMENT(CHI2_GAS_USED,gasInCan - GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN),TRUE)
ENDIF
ENDIF
IF IS_GAS_TRAIL_COMPLETE()
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME)
actions[thisI].completed = true
add_event(events_check_player_out_front)
ENDIF
*/
BREAK
CASE ACT_PETROL_ASSIST_ROUTE
switch actions[thisI].flag
case 0
REQUEST_WAYPOINT_RECORDING("arm2_30")
actions[thisI].flag++
break
case 1
IF GET_IS_WAYPOINT_RECORDING_LOADED("arm2_30")
IF IS_CONDITION_TRUE(COND_PLAYER_HAS_PETROL_CAN)
USE_WAYPOINT_RECORDING_AS_ASSISTED_MOVEMENT_ROUTE("arm2_30",TRUE)
ASSISTED_MOVEMENT_SET_ROUTE_PROPERTIES("arm2_30", EASSISTED_ROUTE_ACTIVE_WHEN_STRAFING)
actions[thisI].flag++
endif
endif
break
case 2
IF NOT IS_CONDITION_TRUE(COND_PLAYER_HAS_PETROL_CAN)
USE_WAYPOINT_RECORDING_AS_ASSISTED_MOVEMENT_ROUTE("arm2_30",FALSE)
actions[thisI].flag=1
ENDIF
break
ENDSWITCH
BREAK
CASE ACT_FUDGE_RADAR_ZOOM
IF NOT IS_PED_INJURED(player_ped_id())
IF GET_INTERIOR_FROM_ENTITY(player_ped_id()) = null //outside
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< 2451.0801, 4961.4634, 44.4392 >>) < 20.0
SET_RADAR_AS_INTERIOR_THIS_FRAME()
ENDIF
endif
ENDIF
BREAK
CASE ACT_MUSIC_PICKS_UP_JERRY_CAM
PlAYMUSIC("CHN2_JERRY_CAN",false,"CHN2_EXPLODE")
actions[thisI].completed = TRUE
BREAK
CASE ACT_MUSIC_TRAIL_IGNITED
playmusic("CHN2_EXIT_HOUSE",false,"CHN2_EXPLODE")
//g_eFarmhouseFireState = FARMHOUSE_IGNITE_FIRE
////cprintln(DEBUG_TREVOR3,"PLay trail sound at: ",vIgnitePos)
PLAY_SOUND_FROM_COORD(iFireIgniteSound,"FarmhouseFire_Ignite",vIgnitePos,"CHINESE2_SOUNDS")
actions[thisI].completed = TRUE
BREAK
CASE ACT_AUDIO_SCENE_WITH_CAN
START_AUDIO_SCENE("CHI_2_POUR_GAS")
actions[thisI].completed = TRUE
BREAK
CASE ACT_PREP_EXPLOSION_AUDIO
SWITCH actions[thisI].flag
CASE 0
REQUEST_SCRIPT_AUDIO_BANK("FARMHOUSE_FIRE")
REQUEST_SCRIPT_AUDIO_BANK("FARMHOUSE_FIRE_BG")
BREAK
ENDSWITCH
BREAK
case act_remove_barrel_peds
SWITCH actions[thisI].flag
CASE 0
actions[thisI].intA = get_ped_with_placement(pos_barrels_1)
actions[thisI].flag++
BREAK
CASE 1
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zped[actions[thisI].intA].id,<<2454.8953, 4950.8945, 44.1488>>) > 100
and GET_DISTANCE_BETWEEN_ENTITIES(zped[actions[thisI].intA].id,player_ped_id()) > 100
int iCleanupPEd
iCleanupPEd = get_ped_with_placement(pos_barrels_1)
CLEANUP_AI_PED_BLIP(zPED[iCleanupPEd].aiBlip)
IF NOT IS_PED_INJURED(zPED[iCleanupPEd].id)
SET_PED_KEEP_TASK(zPED[iCleanupPEd].id,TRUE)
SET_PED_AS_NO_LONGER_NEEDED(zped[iCleanupPEd].id)
ENDIF
zPED[iCleanupPEd].id = null
iCleanupPEd = get_ped_with_placement(pos_barrels_2)
CLEANUP_AI_PED_BLIP(zPED[iCleanupPEd].aiBlip)
IF NOT IS_PED_INJURED(zPED[iCleanupPEd].id)
SET_PED_KEEP_TASK(zPED[iCleanupPEd].id,TRUE)
SET_PED_AS_NO_LONGER_NEEDED(zped[iCleanupPEd].id)
ENDIF
zPED[iCleanupPEd].id = null
iCleanupPEd = get_ped_with_placement(pos_garden_chat_2)
IF NOT IS_PED_INJURED(zPED[iCleanupPEd].id)
SET_PED_KEEP_TASK(zped[iCleanupPEd].id,TRUE)
SET_PED_AS_NO_LONGER_NEEDED(zped[iCleanupPEd].id)
ENDIF
CLEANUP_AI_PED_BLIP(zPED[iCleanupPEd].aiBlip)
zPED[iCleanupPEd].id = null
IF IS_VEHICLE_DRIVEABLE(BarrelVan)
SET_VEHICLE_AS_NO_LONGER_NEEDED(BarrelVan)
ENDIF
actions[thisI].completed = TRUE
ENDIF
break
ENDSWITCH
BREAK
case act_player_got_to_basement_sneakily
// IF bPlayerSeen
IF CREATE_GANG_PED(enum_to_int(pos_emergency_attacker),A_M_M_Hillbilly_01,<<2433.1226, 4960.4702, 45.8218>>,301,WEAPONTYPE_SMG,TRUE,TRUE)
SET_PED_ACCURACY(zped[enum_to_int(pos_emergency_attacker)].id,100)
IF NOT IS_PED_INJURED(zped[enum_to_int(pos_inside_cards1)].id)
SET_PED_ACCURACY(zped[enum_to_int(pos_inside_cards1)].id,100)
ENDIF
IF NOT IS_PED_INJURED(zped[enum_to_int(pos_inside_cards2)].id)
SET_PED_ACCURACY(zped[enum_to_int(pos_inside_cards2)].id,100)
ENDIF
IF NOT IS_PED_INJURED(zped[enum_to_int(pos_inside_cards3)].id)
SET_PED_ACCURACY(zped[enum_to_int(pos_inside_cards3)].id,100)
ENDIF
TASK_COMBAT_PED(zped[enum_to_int(pos_emergency_attacker)].id,player_ped_id())
SET_PED_TARGET_LOSS_RESPONSE(zped[enum_to_int(pos_emergency_attacker)].id,TLR_NEVER_LOSE_TARGET)
SET_ENTITY_HEALTH(zped[enum_to_int(pos_emergency_attacker)].id,200)
actions[thisI].completed = TRUE
ENDIF
// endif
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
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 IS_DEBUG_BUILD instr[thisI].condTrue = FALSE #endif
IF NOT instr[thisI].bCompleted
IF checkANDOR(andOr1,cond1,andOr2,cond2,andOr3,cond3)
#if IS_DEBUG_BUILD instr[thisI].condTrue = TRUE #endif
SWITCH instr[thisI].ins
//drive to alley
CASE INS_NULL
BREAK
CASE INS_SPECIAL_ABILITY_BOOST
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
// PRINT_HELP("FRMRGE")
SET_SPECIAL_ABILITY_MULTIPLIER(2.0)
instr[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE INS_SPECIAL_ABILITY
IF IS_SPECIAL_ABILITY_METER_FULL(PLAYER_ID())
IF IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL)
PRINT_HELP("USESPEC_KM")
ELSE
PRINT_HELP("USESPEC")
ENDIF
ENDIF
instr[thisI].bCompleted = TRUE
BREAK
CASE ins_enemy_reacting
SWITCH instr[thisI].flag
CASE 0
PRINT_HELP("FRMFLE")
instr[thisI].bCompleted = TRUE
BREAK
ENDSWITCH
BREAK
CASE ins_all_enemy_reacting
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
AND NOT IS_MESSAGE_BEING_DISPLAYED()
PRINT("FRMLK",DEFAULT_GOD_TEXT_TIME,1)
instr[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE INS_DESTROY_METH_LAB
PRINT("FRMSNP",DEFAULT_GOD_TEXT_TIME,1)
instr[thisI].bCompleted = TRUE
BREAK
CASE ins_fast_stealth
switch instr[thisI].flag
case 0
IF GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID())
instr[thisI].intA = GET_GAME_TIMER() + 1000
instr[thisI].flag++
ENDIF
BREAK
CASE 1
IF GET_GAME_TIMER() > instr[thisI].intA
IF IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL)
PRINT_HELP("FRMSTLTH_KM")
ELSE
PRINT_HELP("FRMSTLTH")
ENDIF
instr[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
case INS_QUICK_KILL_HELP
switch instr[thisI].flag
case 0
IF GET_PROFILE_SETTING(PROFILE_CONTROLLER_CINEMATIC_SHOOTING) != 0
instr[thisI].intA = GET_GAME_TIMER() + 4000
instr[thisI].flag++
ENDIF
break
case 1
IF GET_GAME_TIMER() > instr[thisI].intA
weapon_type playerWeapon
playerWeapon = WEAPONTYPE_UNARMED
GET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),playerWeapon)
if playerWeapon != WEAPONTYPE_SNIPERRIFLE
and playerWeapon != WEAPONTYPE_HEAVYSNIPER
and playerWeapon != WEAPONTYPE_UNARMED
IF NOT IS_MESSAGE_BEING_DISPLAYED()
AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id())
PRINT_HELP("FRMSHOT")
instr[thisI].bCompleted = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
endif
break
ENDSWITCH
break
CASE INS_PICK_UP_GAS_CAN
PRINT("FRMFLC",DEFAULT_GOD_TEXT_TIME,1)
SET_BLIP_NAME_FROM_TEXT_FILE(missionBlip, "FRMBLIPB")
instr[thisI].bCompleted = TRUE
BREAK
CASE INS_USING_GAS_CAN
switch instr[thisI].flag
case 0
PRINT_HELP("FRMPET2")
instr[thisI].flag++
BREAK
CASE 1
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
PRINT_NOW("FRMTRL",DEFAULT_GOD_TEXT_TIME,1)
instr[thisI].flag++
ENDIF
BREAK
case 2
WEAPON_TYPE wep
wep = WEAPONTYPE_UNARMED
IF GET_CURRENT_PED_WEAPON(player_ped_id(),wep)
IF wep = WEAPONTYPE_PETROLCAN
IF IS_CONTROL_PRESSED(player_control,INPUT_ATTACK)
clear_help()
ENDIF
ENDIF
ENDIF
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
PRINT_HELP("FRMTRL2")
instr[thisI].flag++
ENDIF
break
case 3
IF IS_GAS_TRAIL_COMPLETE()
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF GET_INTERIOR_FROM_ENTITY(player_ped_id()) != null //tell player to exit house
IF NOT DOES_BLIP_EXIST(missionBlip)
CLEAR_PRINTS()
PRINT("FRMSHP",DEFAULT_GOD_TEXT_TIME,1)
missionBlip = CREATE_BLIP_FOR_COORD(<<2454.8953, 4950.8945, 44.1488>>)
ENDIF
ELSE
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2454.8953, 4950.8945, 44.1488>>) < 5
CLEAR_PRINTS()
IF DOES_BLIP_EXIST(missionBlip)
remove_blip(missionBlip)
ENDIF
PRINT("FRMIGN",DEFAULT_GOD_TEXT_TIME,1) //shoot the gas trail to ignite it
START_AUDIO_SCENE("CHI_2_SHOOT_GAS")
instr[thisI].flag++
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 4
IF IS_CONDITION_TRUE(COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE)
IF IS_THIS_PRINT_BEING_DISPLAYED("FRMIGN")
CLEAR_PRINTS()
ENDIF
ENDIF
IF GET_INTERIOR_FROM_ENTITY(player_ped_id()) != null
instr[thisI].flag = 3
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ins_missed_a_bit
PRINT_HELP("FRMMISS")
instr[thisI].bCompleted = TRUE
BREAK
case ins_dont_abandon_farm
IF IS_CONDITION_TRUE(COND_GAS_TRAIL_COMPLETE)
PRINT("FRMFRH",DEFAULT_GOD_TEXT_TIME,1)
ELSE
PRINT("FRMFRG",DEFAULT_GOD_TEXT_TIME,1)
ENDIF
instr[thisI].bCompleted = TRUE
break
case INS_GET_CLEAR_OF_FARM
PRINT("FRMLEAVE",1,1)
IF IS_CONDITION_TRUE(COND_PLAYER_300_FROM_FARM)
CLEAR_PRINTS()
instr[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE INS_LOSE_WANTED_LEVEL
PRINT("LOSE_WANTED",DEFAULT_GOD_TEXT_TIME,1)
BREAK
ENDSWITCH
ENDIF
ENDIF
ENDPROC
PROC SET_DIALOGUE_INT(int iDia, enumDialogue dialogueToSet, int iNewIntValue)
IF dia[iDia].dial = dialogueToSet
dia[iDia].intA = iNewIntValue
ELSE
SCRIPT_ASSERT("Incorrect value passed in to SET_DIALOGUE_INT()")
ENDIF
endproc
PROC SET_DIALOGUE_FLAG(int iDia, enumDialogue dialogueToSet, int iNewIntValue)
IF dia[iDia].dial = dialogueToSet
dia[iDia].flag = iNewIntValue
ELSE
SCRIPT_ASSERT("Incorrect value passed in to SET_DIALOGUE_FLAG()")
ENDIF
ENDPROC
PROC FORCE_INSTRUCTION_STATE(int thisI, enumInstructions thisInstruction, bool setCompleted=TRUE)
instr[thisI].bCompleted = setCompleted
instr[thisI].ins = thisInstruction
ENDPROC
PROC FORCE_DIALOGUE_STATE(int thisI, enumDialogue thisDialogue, bool setCompleted=TRUE)
dia[thisI].bCompleted = setCompleted
dia[thisI].dial = thisDialogue
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 dia[thisI].dial != thisDia
dia[thisI].bCompleted = FALSE
dia[thisI].dial = thisDia
ENDIF
#if IS_DEBUG_BUILD dia[thisI].condTrue = FALSE #endif
IF NOT dia[thisI].bCompleted
IF checkANDOR(andOr1,cond1,andOr2,cond2,andOr3,cond3,andOr4,cond4)
#if IS_DEBUG_BUILD dia[thisI].condTrue = TRUE #endif
IF NOT dia[thisI].bStarted dia[thisI].bStarted=TRUE ENDIF
SWITCH dia[thisI].dial
CASE DIA_NULL
BREAK
CASE dia_whatnow
IF CREATE_CONVERSATION_EXTRA("TRV_WTF",1,player_ped_id(),"TREVOR")
dia[thisI].bCompleted = TRUE
ENDIF
break
case dia_trevor_rage_comments
SWITCH dia[thisI].flag
CASE 0
//leave a puse so spotted dialogue from AI can play out
dia[thisI].intA = GET_GAME_TIMER() + 2000
dia[thisI].flag++
BREAK
CASE 1
IF get_Game_timer() > dia[thisI].intA
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
dia[thisI].intA = get_Game_timer() + 2000
ELSE
int iSpeaker
iSpeaker = 0
IF FIND_CLOSEST_PED_OF_ROLE(iSpeaker,role_guard_house,true)
IF CREATE_CONVERSATION_EXTRA("RAGE",1,player_ped_id(),"Trevor")
dia[thisI].intA = get_Game_timer() + GET_RANDOM_INT_IN_RANGE(8000,14000)
ENDIF
ELSE
dia[thisI].bCompleted=true
ENDIF
ENDIf
ENDIF
BREAK
ENDSWITCH
break
case dia_cook_sees_ped_die
dia[thisI].intA = get_ped_with_placement(pos_innocent_drugden)
IF dia[thisI].intA != -1
IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id)
IF CREATE_CONVERSATION_EXTRA("COOKSEE",3,zped[dia[thisI].intA].id,"ONEILCOOK")
dia[thisI].bCompleted=true
ENDIF
ELSE
dia[thisI].bCompleted=true
ENDIF
endif
break
case dia_stop_trevor_getting_to_basement
SWITCH dia[thisI].flag
CASE 0
dia[thisI].intA = get_ped_with_placement(pos_inside_cards1)
dia[thisI].intB = get_ped_with_placement(pos_inside_cards2)
IF dia[thisI].intA != -1 and dia[thisI].intB != -1
dia[thisI].flag++
endif
BREAK
CASE 1
IF IS_PED_INJURED(zped[dia[thisI].intA].id)
dia[thisI].intA = dia[thisI].intB
IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id)
dia[thisI].flag++
ELSE
dia[thisI].bCompleted = TRUe
ENDIF
ELSE
dia[thisI].flag++
ENDIF
BREAK
CASE 2
IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id)
IF CREATE_CONVERSATION_EXTRA("ONEILGUARD8",5,zped[dia[thisI].intA].id,"ONEILGUARD1")
dia[thisI].flag++
ENDIF
ELSE
dia[thisI].bCompleted = TRUe
ENDIF
BREAK
CASE 3
IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id)
IF CREATE_CONVERSATION_EXTRA("ONEILGUARD9",5,zped[dia[thisI].intA].id,"ONEILGUARD1")
dia[thisI].flag++
ENDIF
ELSE
dia[thisI].bCompleted = TRUe
ENDIF
BREAK
case 4
int ispeaker
IF FIND_CLOSEST_PED_OF_ROLE(iSpeaker,role_guard_house,true)
IF iSpeaker != dia[thisI].intA
dia[thisI].intA = iSpeaker
dia[thisI].flag++
ELSE
dia[thisI].bCompleted = TRUe
ENDIF
ELSe
dia[thisI].bCompleted = TRUe
ENDIF
break
case 5
IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id)
IF CREATE_CONVERSATION_EXTRA("ONEILGUARD10",5,zped[dia[thisI].intA].id,"ONEILGUARD2")
dia[thisI].bCompleted = TRUe
ENDIF
ELSE
dia[thisI].bCompleted = TRUe
ENDIf
break
ENDSWITCH
break
case dia_dont_let_him_down
dia[thisI].intA = get_ped_with_placement(pos_innocent_drugden)
IF dia[thisI].intA != -1
IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id)
IF CREATE_CONVERSATION_EXTRA("ONEILGUARD11",6,zped[dia[thisI].intA].id,"ONEILGUARD2")
dia[thisI].bCompleted = TRUe
ENDIF
ELSE
dia[thisI].bCompleted = TRUe
ENDIF
ENDIf
break
case dia_hes_in_meth_lab
dia[thisI].intA = get_ped_with_placement(pos_innocent_drugden)
IF dia[thisI].intA != -1
IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id)
IF CREATE_CONVERSATION_EXTRA("ONEILGUARD12",6,zped[dia[thisI].intA].id,"ONEILGUARD2")
dia[thisI].bCompleted = TRUe
ENDIF
ELSE
dia[thisI].bCompleted = TRUe
ENDIF
ENDIF
break
case dia_trevor_see_basement_peds_leave
IF CREATE_CONVERSATION_EXTRA("CHI2_drive",1,player_ped_id(),"TREVOR")
dia[thisI].bCompleted = TRUe
ENDIF
break
case dia_trevor_spotted_outside
//dia[thisI].intA is set elsewhere in script
SWITCH dia[thisI].flag
CASE 0
IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id)
dia[thisI].flag = GET_RANDOM_INT_IN_RANGE(1,3)
ENDIF
BREAK
CASE 1
IF CREATE_CONVERSATION_EXTRA("SEETREVOR",3,zped[dia[thisI].intA].id,"CHIN2goon1")
dia[thisI].bCompleted = TRUe
ENDIF
BREAK
CASE 2
IF CREATE_CONVERSATION_EXTRA("GOON2TREV",4,zped[dia[thisI].intA].id,"CHIN2goon2")
dia[thisI].bCompleted = TRUe
ENDIF
BREAK
ENDSWITCH
break
CASE dia_find_trevor
SWITCH dia[thisI].flag
CASE 0
IF GET_GAME_TIMER() > dia[thisI].intA
IF FIND_CLOSEST_PED_OF_ROLE(dia[thisI].intB,role_guard_outside,true)
dia[thisI].flag++
ENDIF
ENDIF
BREAK
CASE 1
IF NOT IS_PED_INJURED(zped[dia[thisI].intB].id)
IF dia[thisI].intC < 3
IF CREATE_CONVERSATION_EXTRA("ONEILGUARD5",5,zped[dia[thisI].intB].id,"ONEILGUARD1")
dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(7000,12000)
dia[thisI].intC++
dia[thisI].flag=0
ENDIF
ELIF dia[thisI].intC < 6
IF CREATE_CONVERSATION_EXTRA("ONEILGUARD6",6,zped[dia[thisI].intB].id,"ONEILGUARD2")
dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(7000,12000)
dia[thisI].intC++
dia[thisI].flag=0
ENDIF
ELSE
dia[thisI].bCompleted = TRUE
ENDIF
ELSE
dia[thisI].flag=0
ENDIF
BREAK
ENDSWITCH
BREAK
case dia_attacking_trevor_outside
//COOKATT oneilcook 3 (4)
//GOONIN chin2goon1 3 (4)
//GOON2ATTO chin2goon2 4 (4)
SWITCH dia[thisI].flag
CASE 0
IF GET_GAME_TIMER() > dia[thisI].intA
IF FIND_CLOSEST_PED_OF_ROLE(dia[thisI].intB,role_guard_outside,true)
dia[thisI].flag++
ENDIF
ENDIF
BREAK
CASE 1
IF NOT IS_PED_INJURED(zped[dia[thisI].intB].id)
SWITCH dia[thisI].intC
CASE 0
FALLTHRU
CASE 2
FALLTHRU
CASE 5
FALLTHRU
CASE 9
IF CREATE_CONVERSATION_EXTRA("COOKATT",3,zped[dia[thisI].intB].id,"oneilcook")
dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(7000,12000)
dia[thisI].intC++
dia[thisI].flag=0
ENDIF
BREAK
CASE 1
FALLTHRU
CASE 6
FALLTHRU
CASE 8
FALLTHRU
CASE 11
IF CREATE_CONVERSATION_EXTRA("GOONATT",3,zped[dia[thisI].intB].id,"chin2goon1")
dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(7000,12000)
dia[thisI].intC++
dia[thisI].flag=0
ENDIF
BREAK
CASE 3
FALLTHRU
CASE 4
FALLTHRU
CASE 7
FALLTHRU
CASE 10
IF CREATE_CONVERSATION_EXTRA("GOON2ATTO",4,zped[dia[thisI].intB].id,"chin2goon2")
dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(7000,12000)
dia[thisI].intC++
dia[thisI].flag=0
ENDIF
BREAK
CASE 12
dia[thisI].bCompleted = TRUE
BREAK
ENDSWITCH
ELSE
dia[thisI].flag=0
ENDIF
BREAK
ENDSWITCH
break
case dia_attacking_trevor_inside
SWITCH dia[thisI].flag
CASE 0
IF GET_GAME_TIMER() > dia[thisI].intA
IF FIND_CLOSEST_PED_OF_ROLE(dia[thisI].intB,role_guard_house,true)
dia[thisI].flag++
ENDIF
ENDIF
BREAK
CASE 1
IF NOT IS_PED_INJURED(zped[dia[thisI].intB].id)
SWITCH dia[thisI].intC
CASE 0
FALLTHRU
CASE 2
FALLTHRU
CASE 5
FALLTHRU
CASE 9
IF CREATE_CONVERSATION_EXTRA("GOONIN",3,zped[dia[thisI].intB].id,"chin2goon1")
dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(6000,10000)
dia[thisI].intC++
dia[thisI].flag=0
ENDIF
BREAK
CASE 1
FALLTHRU
CASE 6
FALLTHRU
CASE 8
FALLTHRU
CASE 11
IF CREATE_CONVERSATION_EXTRA("GOON2ATTI",4,zped[dia[thisI].intB].id,"chin2goon2")
dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(6000,10000)
dia[thisI].intC++
dia[thisI].flag=0
ENDIF
BREAK
CASE 3
FALLTHRU
CASE 4
FALLTHRU
CASE 7
FALLTHRU
CASE 10
IF CREATE_CONVERSATION_EXTRA("ATTACKIN",3,zped[dia[thisI].intB].id,"ONEILCOOK")
dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(6000,10000)
dia[thisI].intC++
dia[thisI].flag=0
ENDIF
BREAK
CASE 12
dia[thisI].bCompleted = TRUE
BREAK
ENDSWITCH
ELSE
dia[thisI].flag=0
ENDIF
BREAK
ENDSWITCH
break
case dia_trevor_seen_inside_house
SWITCH dia[thisI].flag
CASE 0
int ij
repeat count_of(zped) ij
IF zped[ij].role = role_guard_house
IF NOT IS_PED_INJURED(zped[ij].id)
IF IS_PED_IN_COMBAT(zped[ij].id)
IF CAN_PED_IN_COMBAT_SEE_TARGET(zped[ij].id,player_ped_id())
dia[thisI].intA = ij
// IF FIND_CLOSEST_PED_OF_ROLE(dia[thisI].intA,role_guard_house,true)
//
dia[thisI].flag++
ENDIF
ENDIF
ENDIF
ENDIF
ENDREPEAT
BREAK
CASE 1
IF CREATE_CONVERSATION_EXTRA("G2TREVIN",4,zped[dia[thisI].intA].id,"chin2goon2")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
break
case DIA_RESPOND_TO_BULLET
SWITCH dia[thisI].flag
CASE 0
IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id) //intA set elsewhere in script using SET_DIA_INT()
if CREATE_CONVERSATION_EXTRA("ONEILGUARD3",5,zped[dia[thisI].intA].id,"ONEILGUARD1")
dia[thisI].flag++
ENDIF
ENDIF
BREAK
CASE 1
IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id) //intA set elsewhere in script using SET_DIA_INT()
if CREATE_CONVERSATION_EXTRA("ONEILGUARD1",5,zped[dia[thisI].intA].id,"ONEILGUARD1")
dia[thisI].bCompleted = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
break
case dia_last_man_standing
SWITCH dia[thisI].flag
CASE 0
IF FIND_CLOSEST_PED_OF_ROLE(dia[thisI].intA,role_guard_outside,true)
dia[thisI].flag++
ENDIF
BREAK
CASE 1
IF CREATE_CONVERSATION_EXTRA("ONEILGUARD7",5,zped[dia[thisI].intA].id,"oneilguard2")
dia[thisI].flag++
ENDIF
BREAK
case 2
IF CREATE_CONVERSATION_EXTRA("CHI2_app",1,PLAYER_PED_ID(),"Trevor")
dia[thisI].bCompleted = TRUE
ENDIF
break
ENDSWITCH
break
case dia_trevor_approaches_house
IF CREATE_CONVERSATION_EXTRA("CHI2_app",1,player_ped_id(),"TREVOR")
dia[thisI].bCompleted = TRUE
ENDIF
break
case Dia_TREVOR_SAYS_HARD_WAY
SWITCH dia[thisI].flag
CASE 0
IF IS_CONV_ROOT_PLAYING("ONEILGUARD4")
OR IS_CONV_ROOT_PLAYING("SEETREVOR")
dia[thisI].flag++
ENDIF
BREAK
CASE 1
IF CREATE_CONVERSATION_EXTRA("CHI2_HARD",1,player_ped_id(),"Trevor")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
break
case Dia_stay_in_house
SWITCH dia[thisI].flag
CASE 0
IF GET_GAME_TIMER() > dia[thisI].intB
int iR
float fClose
fclose = 999
float fRange
dia[thisI].intA = -1
REPEAT COUNT_OF(zPed) iR
IF zPed[iR].role = role_guard_house
IF NOT IS_PED_INJURED(zPed[iR].id)
fRange = GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),zPed[iR].id)
If fRange < fClose
fClose = fRange
dia[thisI].intA = iR
endif
endif
endif
ENDREPEAT
IF dia[thisI].intA = -1
dia[thisI].bCompleted = TRUE
ELSE
dia[thisI].flag++
endif
endif
BREAK
CASE 1
IF NOT IS_PED_INJURED(zPed[dia[thisI].intA].id)
IF CREATE_CONVERSATION_EXTRA("CHI2_outs",5,zPed[dia[thisI].intA].id,"Oneilguard1")
dia[thisI].bCompleted = TRUE
ENDIF
ELSE
dia[thisI].intB = GET_GAME_TIMER() + 6000
dia[thisI].flag=0
ENDIF
BREAK
ENDSWITCH
break
CASE dia_shooting_Barrels
SWITCH dia[thisI].flag
CASE 0
int iR
REPEAT COUNT_OF(zPed) iR
IF zPed[iR].placement = pos_shooting_bottle_1
dia[thisI].intA = iR
ENDIF
IF zPed[iR].placement = pos_shooting_bottle_2
dia[thisI].intB = iR
ENDIF
ENDREPEAT
dia[thisI].flag++
BREAK
CASE 1
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
If IS_SYNCHRONIZED_SCENE_RUNNING(zPED[dia[thisI].intA].intA)
IF GET_SYNCHRONIZED_SCENE_PHASE(zPED[dia[thisI].intA].intA) > 0.15
IF GET_SYNCHRONIZED_SCENE_PHASE(zPED[dia[thisI].intA].intA) < 0.65
IF GET_DISTANCE_BETWEEN_ENTITIES(zPED[dia[thisI].intA].id,player_ped_id()) < 30
dia[thisI].flag=3
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 2
IF NOT IS_PED_INJURED(zPED[dia[thisI].intA].id)
// IF CREATE_CONVERSATION_EXTRA("CHI2_gncht",6,zPED[dia[thisI].intA].id,"ONEILGUARD1")
// dia[thisI].flag++
// ENDIF
dia[thisI].flag++
ELSE
dia[thisI].flag = 1
ENDIF
BREAK
CASE 3
IF NOT IS_PED_INJURED(zPED[dia[thisI].intB].id)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(zPED[dia[thisI].intB].id, "generic_cheer", "A_M_M_Hillbilly_01_White_mini_03", "SPEECH_PARAMS_FORCE_SHOUTED")
//IF CREATE_CONVERSATION_EXTRA("CHI2_gnchtb",7,zPED[dia[thisI].intB].id,"ONEILGUARD2")
dia[thisI].flag++
//ENDIF
ELSE
dia[thisI].flag = 1
ENDIF
BREAK
CASE 4
IF NOT IS_PED_INJURED(zPED[dia[thisI].intA].id)
If IS_SYNCHRONIZED_SCENE_RUNNING(zPED[dia[thisI].intA].intA)
IF GET_SYNCHRONIZED_SCENE_PHASE(zPED[dia[thisI].intA].intA) > 0.75
dia[thisI].flag=1
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
case DIA_PICKED_UP_JERRY_CAN
IF CREATE_CONVERSATION_EXTRA("CHI2_find",1,player_ped_id(),"TREVOR")
REPLAY_RECORD_BACK_FOR_TIME(5.0, 8.0, REPLAY_IMPORTANCE_HIGHEST)
dia[thisI].bCompleted = TRUE
ENDIF
break
CASE DIA_MISSED_A_BIT
IF HAVE_TRAIL_BLIPS_BEEN_MISSED()
IF CREATE_CONVERSATION_EXTRA("CHI2_pourmis",1,player_ped_id(),"TREVOR")
dia[thisI].bCompleted = TRUE
ENDIF
ENDIF
BREAK
CASE DIA_BOOM
IF CREATE_CONVERSATION_EXTRA("CHI2_boom",1,player_ped_id(),"TREVOR")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
case DIA_POURING_PETROL
switch dia[thisI].flag
case 0
dia[thisI].intA = 2500
dia[thisI].intB = 0
dia[thisI].flag = 1
break
case 1
dia[thisI].intA -= floor(TIMESTEP()*1000)
IF dia[thisI].intA <= 0
dia[thisI].flag = 2
ENDIF
break
case 2
If dia[thisI].intB < 14
IF CREATE_CONVERSATION_EXTRA("CHI2_pour",1,player_ped_id(),"TREVOR")
dia[thisI].flag=1
dia[thisI].intA = 12000 + GET_RANDOM_INT_IN_RANGE(3000,5000)
dia[thisI].intB++
ENDIF
ENDIF
break
endswitch
break
case DIA_LIGHT_FUEL
IF CREATE_CONVERSATION_EXTRA("CHI2_light",1,player_ped_id(),"TREVOR")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_EXPLODE_HOUSE
IF CREATE_CONVERSATION_EXTRA("CHI2_boom",1,player_ped_id(),"TREVOR")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_FUEL_BURN
IF CREATE_CONVERSATION_EXTRA("CHI2_burn",1,player_ped_id(),"TREVOR")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
ENDIF
ENDIF
ENDPROC
PROC DIALOGUE_ON_DIALOGUE(int thisI, enumDialogue thisDia, int diaEntry, enumDialogue checkDia, andorEnum andOr1=cIGNORE, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3 = COND_NULL)
IF NOT dia[thisI].bCompleted
IF HAS_DIALOGUE_FINISHED(diaEntry,checkDia)
DIALOGUE(thisI,thisDia,andOr1,cond1,andOr2,cond2,andOr3,cond3)
ENDIF
ENDIF
ENDPROC
// ==================================================== MISSION END ==============================================
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
conditions[i].intA = 0
ENDREPEAT
ENDPROC
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
actions[i].intB = 0
actions[i].floatA = 0
ENDREPEAT
ENDPROC
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
dia[i].intA = 0
dia[i].intB = 0
dia[i].intC = 0
#if IS_DEBUG_BUILD
dia[i].condTrue = FALSE
#endif
ENDREPEAT
ENDPROC
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
proc delete_everything(enumClenup cleanupState)
//cprintln(debug_Trevor3,"Delete everything")
RESET_ACTIONS()
RESET_CONDITIONS()
RESET_INSTRUCTIONS()
RESET_DIALOGUE()
END_SRL()
SET_VEHICLE_POPULATION_BUDGET(3)
SET_PED_POPULATION_BUDGET(3)
bLastConvoWithoutSubtitles = FALSE
gasInCan = 0
iCamFlag=0
stageflag=0
iStagger=0
int i
bSneakyPass = FALSE
bBlockShooterDialogue = FALSE
bcutscenePLaying = FALSE
WHILE IS_CUTSCENE_ACTIVE()
IF IS_CUTSCENE_PLAYING()
STOP_CUTSCENE(TRUE)
ELSE
REMOVE_CUTSCENE ()
ENDIF
SAFEWAIT(0,FALSE)
ENDWHILE
IF DOES_PICKUP_EXIST(health_pickup)
REMOVE_PICKUP(health_pickup)
ENDIF
REPEAT COUNT_OF(piPickups) i
IF DOES_PICKUP_EXIST(piPickups[i])
REMOVE_PICKUP(piPickups[i])
ENDIF
ENDREPEAT
bNewMusicRequest=FALSE
bRequiresPreload=FALSe
bPreloadRequest=FALSe
sMusicToPlay=""
sPreloadMusic=""
CLEANUP_GAS_TRAILS()
alertBulletFlag = 0
alertBuddyFlag = 0
alertSeenFlag = 0
SET_SPECIAL_ABILITY_MULTIPLIER(1.0)
RESET_MISSION_STATS_ENTITY_WATCH()
RENDER_SCRIPT_CAMS(FALSE, FALSE)
DESTROY_ALL_CAMS()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
safewait(32,FALSE)
////cprintln(debug_trevor3,"HERE_f")
SET_TIME_SCALE(1.0)
CLEAR_PRINTS()
CLEAR_MISSION_LOCATE_STUFF(locatesData,true)
KILL_ANY_CONVERSATION()
KILL_PHONE_CONVERSATION()
//cprintln(debug_Trevor3,"Delete everything got here")
//reset alert messages
REMOVE_SCENARIO_BLOCKING_AREAS()
SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_NONE)
SET_ROADS_BACK_TO_ORIGINAL(<<2469.9854, 4961.0449, 44.8113>>-<<100,100,100>>,<<2469.9854, 4961.0449, 44.8113>>+<<100,100,100>>)
IF cleanupState = CLEANUP_PASS
CREATE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_ret_fhglassfrm,true)
CREATE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGLASSFRMSML,true)
CREATE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGlassairfrm,false)
//SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP3, BUILDINGSTATE_DESTROYED, FALSE) //removing as this was being set during the mission final stage.
// Kenneth R.
// Removing these calls as we dont want the player to see it pop
/*SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE, BUILDINGSTATE_DESTROYED)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP1, BUILDINGSTATE_DESTROYED)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP2, BUILDINGSTATE_DESTROYED)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP3, BUILDINGSTATE_DESTROYED)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP4, BUILDINGSTATE_DESTROYED)*/
g_bBuildingScenarioBlocksUpdateThisFrame = TRUE
ENDIF
SET_AMBIENT_ZONE_LIST_STATE("AZL_CHN2_METH_LAB_FARM_FIRE", FALSE, TRUE)
IF cleanupState != CLEANUP_SKIP
SET_SCENARIO_GROUP_ENABLED("Chinese2_Lunch",TRUE)
SET_SCENARIO_GROUP_ENABLED("CHINESE2_HILLBILLIES",false)
ENDIF
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
IF iNavBlock != -1
IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(iNavBlock)
REMOVE_NAVMESH_BLOCKING_OBJECT(iNavBlock)
ENDIF
ENDIF
IF cleanupState = CLEANUP_FAIL
OR cleanupState = CLEANUP_FAIL_DEATH
STORE_FAIL_WEAPON(player_ped_id(),2)
ENDIF
/*
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.object[0])
IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(g_sTriggerSceneAssets.object[0])
// IF NOT IS_ENTITY_DEAD(g_sTriggerSceneAssets.object[0])
//cprintln(debug_Trevor3,"chinese 2: h set stall 0 visible")
SET_ENTITY_VISIBLE(g_sTriggerSceneAssets.object[0],TRUE)
SET_ENTITY_COLLISION(g_sTriggerSceneAssets.object[0],TRUE)
SET_OBJECT_AS_NO_LONGER_NEEDED(g_sTriggerSceneAssets.object[0])
int blah
//cprintln(debug_Trevor3,"release stall. Owner = ",GET_ENTITY_SCRIPT(g_sTriggerSceneAssets.object[0],blah))
g_sTriggerSceneAssets.object[0] = null
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.object[1])
IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(g_sTriggerSceneAssets.object[1])
// IF NOT IS_ENTITY_DEAD(g_sTriggerSceneAssets.object[1])
//cprintln(debug_Trevor3,"chinese 2: i set stall 1 visible")
SET_ENTITY_VISIBLE(g_sTriggerSceneAssets.object[1],TRUE)
SET_ENTITY_COLLISION(g_sTriggerSceneAssets.object[1],TRUE)
SET_OBJECT_AS_NO_LONGER_NEEDED(g_sTriggerSceneAssets.object[1])
g_sTriggerSceneAssets.object[1] = null
ENDIF
ENDIF
*/
REPEAT COUNT_OF(zPED) i
If i = ped_oldMan2
////cprintln(debug_Trevor3,"cleanup old man 2")
endif
if DOES_ENTITY_EXIST(zPED[i].id)
if not is_ped_injured(zPED[i].id)
IF cleanupState = CLEANUP_SKIP
CLEAR_PED_TASKS_IMMEDIATELY(zPED[i].id) //to help with cleanup of sync scenes.
ENDIF
endif
IF cleanupState = CLEANUP_PASS
OR cleanupState = CLEANUP_FAIL_DEATH
If i = ped_oldMan2
////cprintln(debug_Trevor3,"set old man 2 not needed")
endif
if not is_ped_injured(zPED[i].id)
SET_PED_KEEP_TASK(zPED[i].id,TRUE)
SET_PED_AS_NO_LONGER_NEEDED(zPED[i].id)
ENDIF
ELSE
If i = ped_oldMan2
////cprintln(debug_Trevor3,"set old man 2 not deleted")
endif
DELETE_PED(zPED[i].id)
ENDIf
ENDIF
zPED[i].action = action_none
zPED[i].lastaction = action_none
zPED[i].vpos = <<0,0,0>>
zPED[i].vPosB = <<0,0,0>>
zPED[i].placement = pos_none
zPED[i].actionFlag = 0
zPED[i].floatA = 0
zPED[i].floatB = 0
zPED[i].intA = 0
zPED[i].intB = 0
zPED[i].nearbyreactingPed = FALSE
zPED[i].pedOfInterest = 0
zPED[i].sniped = FALSE
zPED[i].alerted = FALSE
pedReactionState[i].State = STATE_SPAWN
if does_entity_exist(zPED[i].obj)
DELETE_OBJECT(zPED[i].obj)
ENDIF
REMOVE_RELATIONSHIP_GROUP(zPED[i].rel)
ENDREPEAT
IF cleanupState != CLEANUP_SKIP
TERMINATE_REACTIONS()
ELSE
RESET_REACT_ARRAY(pedReactionState,dChinese2,convBlock,12,<<2482.1965, 4975.3667, 44.7288>>,121,STATE_SPAWN)
ENDIF
IF DOES_ENTITY_EXIST(objShotgun)
DELETE_OBJECT(objShotgun)
ENDIF
IF cleanupState != CLEANUP_PASS
AND cleanupState != CLEANUP_FAIL_DEATH
CLEAR_AREA(<< 2438.4326, 4970.4155, 53.1778 >>,450.0,TRUE,FALSE)
STOP_FIRE_IN_RANGE(<< 2442.6897, 4970.3477, 46.3300 >>,30.0)
ENDIF
REPEAT COUNT_OF(events) i
if (events[i].active = TRUE and events[i].persists = FALSE) // OR cleanupState = CLEANUP_PASS)
or events[i].persists = FALSE
//NOTE: FIX FOR BUILD THIS VALUE IS NOT USED BY ANYTHING.
//string thiosEvent = GET_THIS_EVENT_STRING(i)
//active is set to false when cleanup runs
events[i].flag = CLEANUP
//events[i].active = FALSE
events[i].boolA = FALSE
events[i].intA = 0
events[i].active = false
ENDIF
ENDREPEAT
////cprintln(debug_trevor3,"HERE_e")
manage_events()
////cprintln(debug_trevor3,"HERE_d")
IF DOES_BLIP_EXIST(missionblip)
remove_blip(missionblip)
endif
//remove petrol trail blips
// LAST_CONVERSATION = CONV_EMPTY
//random_lines_played = 0
int iC
REPEAT COUNT_OF(oCans) iC
IF DOES_ENTITY_EXIST(oCans[iC])
DELETE_OBJECT(oCans[iC])
ENDIF
ENDREPEAT
if DOES_ENTITY_EXIST(vehPlayer)
IF cleanupState != CLEANUP_PASS
AND cleanupState != CLEANUP_FAIL_DEATH
IF IS_VEHICLE_DRIVEABLE(vehPlayer)
IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehPlayer)
IF IS_PED_INJURED(player_ped_id())
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehPlayer)
ELSe
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehPlayer) //should only get removed if the player hasn't passed the mission
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
if DOES_ENTITY_EXIST(BarrelVan)
IF cleanupState != CLEANUP_PASS
IF IS_PED_INJURED(player_ped_id())
SET_VEHICLE_AS_NO_LONGER_NEEDED(BarrelVan)
ELSe
SET_VEHICLE_AS_NO_LONGER_NEEDED(BarrelVan) //should only get removed if the player hasn't passed the mission
ENDIF
ELSE
SET_VEHICLE_AS_NO_LONGER_NEEDED(BarrelVan)
ENDIF
ENDIF
if DOES_ENTITY_EXIST(vehBlazer)
IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehBlazer)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehBlazer)
ENDIF
ENDIF
IF DOES_PICKUP_EXIST(pickup_gas)
//////cprintln(DEBUG_TREVOR3,"Remove blip for pickup B ",GET_GAME_TIMER())
REMOVE_PICKUP(pickup_gas)
ENDIF
IF cleanupState = CLEANUP_PASS
IF DOES_ENTITY_EXIST(obja)
FREEZE_ENTITY_POSITION(objA,FALSE)
SET_OBJECT_AS_NO_LONGER_NEEDED(obja)
ENDIF
IF DOES_ENTITY_EXIST(objb)
FREEZE_ENTITY_POSITION(objb,FALSE)
SET_OBJECT_AS_NO_LONGER_NEEDED(objb)
ENDIF
ENDIF
if DOES_ENTITY_EXIST(tempPed) delete_ped(tempPed) endif
//remove petrol trails and data
////cprintln(debug_trevor3,"HERE_c")
REMOVE_DECALS_IN_RANGE(<< 2439.6868, 4971.5405, 45.9442 >>,150.0)
IF cleanupState != CLEANUP_FAIL_DEATH
IF DOES_ENTITY_EXIST(zped[ped_janet].id)
DELETE_PED(zped[ped_janet].id)
ENDIF
IF DOES_ENTITY_EXIST(zped[ped_oldMan1].id)
DELETE_PED(zped[ped_oldMan1].id)
ENDIF
IF DOES_ENTITY_EXIST(zped[ped_oldMan2].id)
DELETE_PED(zped[ped_oldMan2].id)
ENDIF
IF DOES_ENTITY_EXIST(zped[ped_tao].id)
DELETE_PED(zped[ped_tao].id)
ENDIF
IF DOES_ENTITY_EXIST(zped[ped_taos_translator].id)
DELETE_PED(zped[ped_taos_translator].id)
ENDIF
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_Hillbilly_01)
SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_Hillbilly_02)
SET_MODEL_AS_NO_LONGER_NEEDED(Prop_CS_Fertilizer)
SET_MODEL_AS_NO_LONGER_NEEDED(BURRITO)
SET_MODEL_AS_NO_LONGER_NEEDED(ig_janet)
SET_MODEL_AS_NO_LONGER_NEEDED(IG_OLD_MAN1A)
SET_MODEL_AS_NO_LONGER_NEEDED(IG_OLD_MAN2)
SET_MODEL_AS_NO_LONGER_NEEDED(IG_TAOCHENG)
SET_MODEL_AS_NO_LONGER_NEEDED(IG_TAOSTRANSLATOR)
SET_MODEL_AS_NO_LONGER_NEEDED(IG_JANET)
//REMOVE_ANIM_DICT("gestures@male")
REMOVE_ANIM_SET("move_m@gangster@var_e")
REMOVE_ANIM_SET("move_m@gangster@var_f")
REMOVE_ANIM_SET("move_m@gangster@generic")
REMOVE_ANIM_DICT("misschinese2_barrelRoll")
REMOVE_ANIM_DICT("reaction@male_stand@big_variations@b")
REMOVE_ANIM_DICT("reaction@male_stand@big_intro@left")
REMOVE_ANIM_DICT("reaction@male_stand@big_intro@right")
REMOVE_ANIM_DICT("reaction@male_stand@big_intro@backward")
REMOVE_ANIM_DICT("misschinese2_bank1")
REMOVE_ANIM_DICT("misschinese2_bank5")
REMOVE_ANIM_DICT("misschinese2_crystalmazemcs1_ig")
IF cleanupState != CLEANUP_SKIP
IF HAS_PED_GOT_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_PETROLCAN)
REMOVE_WEAPON_FROM_PED(PLAYER_PED_ID(),WEAPONTYPE_PETROLCAN)
ENDIF
ENDIF
safeSkipTime=0
iNextPedVariation = 0
//clear all audio scenes
IF IS_AUDIO_SCENE_ACTIVE("CHI_2_DRIVE_TO_FARMHOUSE")
STOP_AUDIO_SCENE("CHI_2_DRIVE_TO_FARMHOUSE")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CHI_2_DRIVE_ROCK_RADIO")
STOP_AUDIO_SCENE("CHI_2_DRIVE_ROCK_RADIO")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CHI_2_FARMHOUSE_OVERVIEW")
STOP_AUDIO_SCENE("CHI_2_FARMHOUSE_OVERVIEW")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CHI_2_SHOOTOUT_STEALTH")
STOP_AUDIO_SCENE("CHI_2_SHOOTOUT_STEALTH")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CHI_2_SHOOTOUT_ENEMIES_ALERTED")
STOP_AUDIO_SCENE("CHI_2_SHOOTOUT_ENEMIES_ALERTED")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CHI_2_POUR_GAS")
STOP_AUDIO_SCENE("CHI_2_POUR_GAS")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CHI_2_SHOOT_GAS")
STOP_AUDIO_SCENE("CHI_2_SHOOT_GAS")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CHI_2_GAS_TRAIL_FIRE")
STOP_AUDIO_SCENE("CHI_2_GAS_TRAIL_FIRE")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CHI_2_RAYFIRE")
STOP_AUDIO_SCENE("CHI_2_RAYFIRE")
ENDIf
////cprintln(debug_trevor3,"HERE_A")
STOP_STREAM()
IF cleanupState != CLEANUP_PASS
//AND cleanupState != CLEANUP_FAIL_DEATH
PLAYMUSIC("CHN2_STOP_TRACK",false,NULL_STRING())
WHILE NOT control_music()
SAFEWAIT(0,FALSE)
endwhile
ELSE
// PLAYMUSIC("CHN2_MISSION_FAIL",false,NULL_STRING())
// WHILE NOT control_music()
// SAFEWAIT(1)
// ENDWHILE
ENDIF
IF cleanupState != CLEANUP_SKIP
DISABLE_TAXI_HAILING(FALSE)
ENDIF
IF cleanupState != CLEANUP_PASS
rfThisRayfire = GET_RAYFIRE_MAP_OBJECT(<<2457.15, 4968.79, 48.677>>, 45, "DES_FarmHs")
IF bRayfireTriggered
IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfThisRayfire)
SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_STARTING)
ENDIF
bRayfireTriggered = FALSE
ENDIF
ENDIF
ENDPROC
PROC MISSION_CLEANUP(enumClenup cleanupState)
delete_everything(cleanupState)
CASCADE_SHADOWS_ENABLE_ENTITY_TRACKER(TRUE)
SET_ALL_VEHICLE_GENERATORS_ACTIVE()
SET_WANTED_LEVEL_MULTIPLIER(1.0)
SET_MAX_WANTED_LEVEL(5)
ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT,true)
DISABLE_CELLPHONE(FALSE)
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
CLEAR_PRINTS()
//SET_VEHICLE_MODEL_IS_SUPPRESSED(bodhi2,FALSE)
IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(navblockA)
REMOVE_NAVMESH_BLOCKING_OBJECT(navblockA)
ENDIF
IF NOT IS_PED_INJURED(player_ped_id())
REMOVE_WEAPON_FROM_PED(player_ped_id(),WEAPONTYPE_PETROLCAN)
CLEAR_PED_TASKS(player_ped_id())
endif
//Move player outside house
IF NOT IS_PED_INJURED(player_ped_id())
IF GET_INTERIOR_FROM_ENTITY(player_ped_id()) != NULL
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2444.0984, 4977.7949, 48.9959>>) < 100
SET_ENTITY_COORDS(player_ped_id(),<<2463.8108, 4961.7471, 44.1760>>)
SET_ENTITY_HEADING(player_ped_id(),20)
ENDIF
ENDIF
ENDIF
//Reset building IPLs to default
IF cleanupState = CLEANUP_FAIL OR cleanupState = CLEANUP_FAIL_DEATH
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE, BUILDINGSTATE_NORMAL)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP1, BUILDINGSTATE_NORMAL)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP2, BUILDINGSTATE_NORMAL)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP3, BUILDINGSTATE_NORMAL)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_INTERIOR, BUILDINGSTATE_NORMAL)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_OCCLUSION, BUILDINGSTATE_NORMAL)
ENDIF
TERMINATE_THIS_THREAD()
ENDPROC
PROC Mission_Failed(string sFail = null)
WHILE NOT TRIGGER_MUSIC_EVENT("CHN2_MISSION_FAIL")
safewait(21)
ENDWHILE
IF NOT IS_STRING_NULL_OR_EMPTY(sFail)
sFailReason = sFail
ENDIF
If IS_STRING_NULL(sFailReason)
sFailReason = "CHFAIL"
endif
MISSION_FLOW_MISSION_FAILED_WITH_REASON(sFailReason)
WHILE NOT GET_MISSION_FLOW_SAFE_TO_CLEANUP()
//Maintain anything that could look weird during fade out (e.g. enemies walking off).
SAFEWAIT(2,FALSE)
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_Passed()
CLEAR_PRINTS()
Mission_Flow_Mission_Passed()
Mission_Cleanup(CLEANUP_PASS)
ENDPROC
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_OUT_OF_GAS
Mission_Failed("CHFAIL1")
BREAK
CASE FAIL_GAS_TRAIL_IGNITED_EARLY
Mission_Failed("FRMSOON")
BREAK
CASE FAIL_GAS_TRAIL_NOT_COMPLETE
Mission_Failed("FRMTRAI")
BREAK
CASE fail_kill_cheng_or_translator
IF DOES_ENTITY_EXIST(zped[ped_tao].id)
IF IS_PED_INJURED(zped[ped_tao].id)
Mission_Failed("FRMCHI")
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(zped[ped_taos_translator].id)
IF IS_PED_INJURED(zped[ped_taos_translator].id)
Mission_Failed("FRMCHI2")
ENDIF
ENDIF
BREAK
CASE FAIL_ABANDONED_FARM
Mission_Failed("CHFAIL2")
BREAK
CASE FAIL_JERRY_CAN_DESTROYED
Mission_Failed("FRMGASF")
BREAK
ENDSWITCH
ENDIF
ENDPROC
PROC CONTROL_BURN_PLAYER()
//front of house
vector vPlayer = GET_ENTITY_COORDS(player_ped_id())
IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2432.475586,4953.241699,43.055450>>, <<2466.340088,4986.149902,57.253029>>, 14.437500)
IF vPlayer.z < 50
IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2436.761719,4956.010742,44.490093>>, <<2443.379639,4962.624512,48.223301>>, 1.500000)
OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2447.669434,4966.553711,44.951408>>, <<2452.496582,4969.824707,48.890739>>, 2.312500)
OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2454.863037,4968.685547,44.951408>>, <<2460.504883,4974.408691,48.826408>>, 1.687500)
OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2459.058350,4977.545898,44.951408>>, <<2460.410645,4979.302246,48.826408>>, 1.687500)
OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2457.602051,4984.746094,44.736694>>, <<2461.976563,4989.490234,48.478436>>, 1.687500)
IF NOT IS_ENTITY_ON_FIRE(player_ped_id())
START_ENTITY_FIRE(player_ped_id())
ENDIF
ENDIF
ELSE
IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2454.179199,4995.281250,44.541508>>, <<2453.095947,4993.905273,48.320435>>, 1.687500)
OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2449.401123,4990.354004,44.929241>>, <<2447.717041,4988.864746,48.821293>>, 1.687500)
OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2443.906250,4990.104004,44.444595>>, <<2439.006592,4985.271484,48.304581>>, 1.687500)
OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2439.601563,4982.387207,44.951412>>, <<2440.796875,4981.365234,48.826416>>, 1.687500)
OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2440.258789,4980.671387,44.951416>>, <<2434.768799,4975.055176,48.826416>>, 1.687500)
OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2432.164551,4972.585938,44.299091>>, <<2430.113770,4970.545410,48.210857>>, 1.687500)
OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2428.460205,4968.569336,44.815968>>, <<2426.632324,4966.602539,48.293419>>, 1.687500)
IF NOT IS_ENTITY_ON_FIRE(player_ped_id())
START_ENTITY_FIRE(player_ped_id())
ENDIF
ENDIF
ENDIF
ELIF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2455.486816,4997.566406,43.110104>>, <<2423.653320,4962.837402,57.348885>>, 14.437500)
//back of house
IF vPlayer.z < 50
IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2442.913086,4965.273438,50.156872>>, <<2444.489502,4967.409668,53.817825>>, 1.687500)
OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2445.238525,4969.070313,49.942844>>, <<2450.365234,4972.188477,54.032505>>, 2.375000)
OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2452.331543,4971.817383,49.942825>>, <<2457.977295,4977.582520,53.880974>>, 2.375000)
IF NOT IS_ENTITY_ON_FIRE(player_ped_id())
START_ENTITY_FIRE(player_ped_id())
ENDIF
ENDIF
ELSE
IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2457.620605,4978.462402,49.942825>>, <<2453.931885,4982.161133,53.817825>>, 2.375000)
OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2452.054199,4984.156250,49.942825>>, <<2448.119873,4987.808594,53.813160>>, 2.375000)
OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2442.013916,4980.538574,49.942825>>, <<2435.795654,4971.944824,53.903877>>, 2.375000)
IF NOT IS_ENTITY_ON_FIRE(player_ped_id())
START_ENTITY_FIRE(player_ped_id())
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
int iStoredLastReplay
PROC SET_REPLAY_STAGE()
switch iStoredLastReplay
case 0
IF missionstage >= snipe_from_hill
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1,"Snipe from hill")
cprintln(DEBUG_TREVOR3,"Replay stage : ",1)
iStoredLastReplay++
ENDIF
BREAK
case 1
IF missionstage >= snipe_from_hill and missionstage < do_petrol_trail
//IF IS_CONDITION_TRUE(COND_ALL_ENEMY_ALERTED) //took this out as the replay setup would mean this is not true
IF IS_CONDITION_TRUE(COND_PLAYER_IN_HOUSE)
OR missionstage = inside_house
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(2,"Inside House")
cprintln(DEBUG_TREVOR3,"Replay stagea : ",2)
iStoredLastReplay++
ENDIF
else
IF missionstage = do_petrol_trail
IF HAS_PED_GOT_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN)
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(2,"Inside House")
cprintln(DEBUG_TREVOR3,"Replay stageb : ",2)
iStoredLastReplay++ //stage must be at petrol trail
ENDIF
elif missionstage > do_petrol_trail
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(2,"Inside House")
cprintln(DEBUG_TREVOR3,"Replay stagec : ",2)
iStoredLastReplay++
endif
endif
BREAK
CASE 2
IF missionstage >= do_petrol_trail
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(3,"Pour petrol trail")
cprintln(DEBUG_TREVOR3,"Replay stage : ",3)
iStoredLastReplay++
ENDIF
BREAK
CASE 3
IF missionstage = end_mission
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(4,"Leave the farm house",TRUE)
cprintln(DEBUG_TREVOR3,"Replay stage : ",4)
iStoredLastReplay++
ENDIF
BREAK
ENDSWITCH
ENDPROC
// ==================================================== DEBUGGING =============================================
PROC PREP_REPLAY(bool firstStage=false, bool letReplayPutPlayerInVehicle = FALSE, bool isRepeatPlay=FALSE)
IF firstStage
IF IS_REPLAY_START_VEHICLE_AVAILABLE()
IF IS_REPLAY_VEHICLE_MODEL_UNDER_SIZE_LIMIT(GET_REPLAY_START_VEHICLE_MODEL(),<<10,20,9>>)
REQUEST_REPLAY_START_VEHICLE_MODEL()
WHILE NOT HAS_REPLAY_START_VEHICLE_LOADED()
safewait(54455)
ENDWHILE
IF isRepeatPlay
vehPlayer = CREATE_REPLAY_START_VEHICLE(<<1994.3872, 3061.9397, 46.0491>>,50)
ELSE
vehPlayer = CREATE_REPLAY_START_VEHICLE(<<0,0,0>>,0)
ENDIF
ENDIF
ENDIF
ELSE
//cprintln(debug_Trevor3,"IS_REPLAY_CHECKPOINT_VEHICLE_AVAILABLE()")
IF IS_REPLAY_CHECKPOINT_VEHICLE_AVAILABLE()
//cprintln(debug_Trevor3,"YES")
REQUEST_REPLAY_CHECKPOINT_VEHICLE_MODEL()
WHILE NOT HAS_REPLAY_CHECKPOINT_VEHICLE_LOADED()
safewait(544)
ENDWHILE
vehPlayer = CREATE_REPLAY_CHECKPOINT_VEHICLE(<<0,0,0>>,0)
ENDIF
ENDIF
IF letReplayPutPlayerInVehicle
IF WAS_PLAYER_IN_VEHICLE_AT_CHECKPOINT()
IF IS_VEHICLE_DRIVEABLE(vehPlayer)
SET_PED_INTO_VEHICLE(player_ped_id(),vehPlayer)
ENDIF
ENDIF
ENDIF
ENDPROC
proc do_skip(mission_stage_flag skipToStage, bool bIsReplay=false, bool bIsRepeatPlay=FALSE)
//////cprintln(DEBUG_TREVOR3,"Start cleanup")
delete_everything(CLEANUP_SKIP)
add_event(events_reset_house_rayfire)
#if IS_DEBUG_BUILD
GIVE_WEAPON_TO_PED(PLAYER_PED_ID(), WEAPONTYPE_PUMPSHOTGUN, 50, FALSE,FALSE)
GIVE_WEAPON_TO_PED(PLAYER_PED_ID(), WEAPONTYPE_SNIPERRIFLE, 30, FALSE,FALSE)
GIVE_WEAPON_COMPONENT_TO_PED(PLAYER_PED_ID(),WEAPONTYPE_SNIPERRIFLE,WEAPONCOMPONENT_AT_SCOPE_MAX)
GIVE_WEAPON_COMPONENT_TO_PED(PLAYER_PED_ID(),WEAPONTYPE_SNIPERRIFLE,WEAPONCOMPONENT_AT_AR_SUPP_02)
#endif
stageFlag = 0
missionstage = skipToStage
//////cprintln(DEBUG_TREVOR3,"Skip to stage : ",missionstage)
switch skipToStage
case init_mission
BREAK
case intro_cut
request_model(IG_OLD_MAN2)
request_model(IG_OLD_MAN1A)
request_model(IG_JANET)
request_model(IG_TAOCHENG)
request_model(IG_TAOSTRANSLATOR)
REQUEST_CUTSCENE("chinese_2_int")
WHILE NOT HAS_MODEL_LOADED(IG_OLD_MAN2)
OR NOT HAS_MODEL_LOADED(IG_OLD_MAN1A)
OR NOT HAS_MODEL_LOADED(IG_JANET)
OR NOT HAS_MODEL_LOADED(IG_TAOCHENG)
OR NOT HAS_MODEL_LOADED(IG_TAOSTRANSLATOR)
OR NOT HAS_CUTSCENE_LOADED()
safewait(323)
endwhile
WHILE NOT CREATE_NPC_PED_ON_FOOT(zped[ped_tao].id,CHAR_CHENG,<<1985.6656, 3052.6606, 46.2151>>)
wait(0)
ENDWHILE
SET_ENTITY_COORDS(PLAYER_PED_ID(),<<1992.8784, 3057.8464, 46.0568>>)
SET_ENTITY_HEADING(player_ped_id(),311)
SET_PED_COMPONENT_VARIATION(zped[ped_tao].id, INT_TO_ENUM(PED_COMPONENT,9), 1, 0, 0) //(task)
break
case drive_to_farm
IF bIsReplay
START_REPLAY_SETUP(<<1992.8784, 3057.8464, 46.0568>>,311.0)
ELSE
IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer)
SET_ENTITY_COORDS(vehPlayer,<<1994.3872, 3061.9397, 46.0491>>)
SET_ENTITY_HEADING(vehPlayer,50.7724)
ENDIF
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7)
LOAD_SCENE(<<1992.8784, 3057.8464, 46.0568>>)
ENDIF
//add_event(events_animate_chinese)
// set_event_flag(events_animate_chinese,150)
// ////cprintln(debug_trevor3,"spawn replay vehicle")
//CREATE_VEHICLE_FOR_REPLAY(vehPlayer,<< 1997.1208, 3063.6338, 46.0493 >>, 57.9218,TRUE,FALSE,TRUE,TRUE,FALSE)
ADD_SCENARIO_BLOCKING_AREA(<<1991.219604,3054.884277,50.277412>>-<<40,40,40.000000>>,<<1991.219604,3054.884277,50.277412>>+<<40,40,40.000000>>)
SET_PED_NON_CREATION_AREA(<<1991.219604,3054.884277,50.277412>>-<<40,40,40>>,<<1991.219604,3054.884277,50.277412>>+<<40,40,0.000000>>)
CLEAR_ArEA(<<1984.9971, 3052.9048, 46.8556>>,10,TRUE)//to ensure peds at bar in scenario are removed
PREP_REPLAY(true,false,bIsRepeatPlay)
REQUEST_MODEL(IG_TAOCHENG)
REQUEST_MODEL(IG_TAOSTRANSLATOR)
REQUEST_MODEL(IG_OLD_MAN1A)
REQUEST_MODEL(IG_OLD_MAN2)
REQUEST_MODEL(IG_JANET)
REQUEST_ANIM_DICT("misschinese2_crystalmaze")
WHILE NOT HAS_MODEL_LOADED(IG_TAOCHENG)
OR NOT HAS_MODEL_LOADED(IG_TAOSTRANSLATOR)
OR NOT HAS_MODEL_LOADED(IG_OLD_MAN1A)
OR NOT HAS_MODEL_LOADED(IG_OLD_MAN2)
OR NOT HAS_MODEL_LOADED(IG_JANET)
OR NOT HAS_ANIM_DICT_LOADED("misschinese2_crystalmaze")
safewait(3)
ENDWHILE
IF NOT bIsReplay
IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer)
SET_PED_INTO_VEHICLE(player_ped_id(),vehPlayer)
SET_ENTITY_COORDS(vehPlayer,<<1994.3872, 3061.9397, 46.0491>>)
SET_ENTITY_HEADING(vehPlayer,50.7724)
ELSE
SET_ENTITY_COORDS(PLAYER_PED_ID(),<<1992.8784, 3057.8464, 46.0568>>)
SET_ENTITY_HEADING(player_ped_id(),311)
ENDIF
ENDIF
safewait(85)
action(2,ACT_ANIMATE_CHINESE)
WHILE GET_ACTION_FLAG(2,ACT_ANIMATE_CHINESE) != TAO_EVENT_ANIM_PLAYING
action(2,ACT_ANIMATE_CHINESE)
safeWAIT(4)
ENDWHILE
add_event(events_animate_bar)
// while GET_EVENT_FLAG(events_animate_bar) < 4
// manage_events()
// safewait(5)
// endwhile
IF bIsReplay
IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer)
END_REPLAY_SETUP(vehPlayer)
ELSE
END_REPLAY_SETUP()
ENDIF
ENDIF
break
case farm_cutscene
IF bIsReplay
START_REPLAY_SETUP(<< 2574.0486, 4981.8237, 50.4400 >>,50.0)
ELSE
SET_ENTITY_COORDS(PLAYER_PED_ID(),<< 2570.5430, 4982.0020, 50.6795 >>,false,true) //<< 2572.0095, 4981.6782, 50.6698 >>
SET_ENTITY_HEADING(PLAYER_PED_ID(),98.21)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7)
LOAD_SCENE(<< 2458.5076, 4984.5039, 52.3461 >>)
safewait(323)
ENDIF
//CREATE_VEHICLE_FOR_REPLAY(vehPlayer,<< 2602.4050, 4950.2280, 39.0651 >>, 274.5783,FALSE,FALSE,TRUE,TRUE,FALSE)
SET_VEHICLE_POPULATION_BUDGET(1)
SET_PED_POPULATION_BUDGET(1)
// SET_VEHICLE_ON_GROUND_PROPERLY(vehPlayer)
SET_WANTED_LEVEL_MULTIPLIER(0.0)
PREP_REPLAY()
PREFETCH_SRL("chinese2_farmhouse_cutscene")
SAFEWAIT(34)
add_event(events_spawn_house)
while is_event_active(events_spawn_house)
manage_events()
safewait(5)
endwhile
WHILE NOT CAN_PLAYER_START_CUTSCENE()
safewait(6)
endwhile
PLAYMUSIC("CHN2_MISSION_START",true,"CHN2_EXPLODE")
WHILE NOT control_music()
safewait(7)
ENDWHILE
WHILE NOT IS_SRL_LOADED()
safewait(878)
endwhile
IF bIsReplay
END_REPLAY_SETUP()
ENDIF
ACTION(10,ACT_LOAD_SOUNDSET)
WHILE NOT IS_ACTION_COMPLETE(10,ACT_LOAD_SOUNDSET)
ACTION(10,ACT_LOAD_SOUNDSET)
SAFEWAIT(234)
ENDWHILE
BREAK
case snipe_from_hill
IF bIsReplay
START_REPLAY_SETUP(GET_REPLAY_CHECKPOINT_PLAYER_POSITION(),GET_REPLAY_CHECKPOINT_PLAYER_HEADING())
ELSE
SET_ENTITY_COORDS(PLAYER_PED_ID(),<< 2570.5430, 4982.0020, 50.6795 >>,false,true) //<< 2572.0095, 4981.6782, 50.6698 >>
SET_ENTITY_HEADING(PLAYER_PED_ID(),98.21)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7)
LOAD_SCENE(<< 2570.5430, 4982.0020, 50.6795 >>)
safewait(323)
ENDIF
//CREATE_VEHICLE_FOR_REPLAY(vehPlayer,<<0,0,0>>, 0,FALSE,FALSE,TRUE,TRUE,FALSE)
//TASK_TOGGLE_DUCK(player_ped_id(),TOGGLE_DUCK_ON)
//SET_PED_DUCKING(player_ped_id(),TRUE)
SET_VEHICLE_POPULATION_BUDGET(1)
SET_PED_POPULATION_BUDGET(1)
PREP_REPLAY(false,true)
SET_WANTED_LEVEL_MULTIPLIER(0.0)
add_event(events_spawn_house)
while is_event_active(events_spawn_house)
manage_events()
safewait(8)
endwhile
weapon_type aWep
aWep = GET_FAIL_WEAPON(2)
IF aWep != WEAPONTYPE_INVALID
AND aWep != WEAPONTYPE_UNARMED
IF HAS_PED_GOT_WEAPON(player_ped_Id(),aWep)
SET_CURRENT_PED_WEAPON(player_ped_id(),aWep,TRUE)
ENDIF
ENDIF
PLAYMUSIC("CHN2_MISSION_START",true,"CHN2_EXPLODE")
WHILE NOT control_music()
safewait(9)
ENDWHILE
IF bIsReplay
IF DOES_ENTITY_EXIST(vehplayer)
AND IS_VEHICLE_DRIVEABLE(vehplayer)
AND WAS_PLAYER_IN_VEHICLE_AT_CHECKPOINT()
END_REPLAY_SETUP(vehplayer)
IF IS_VEHICLE_DRIVEABLE(vehplayer)
SET_VEHICLE_ENGINE_ON(vehplayer,true,true)
IF IS_THIS_MODEL_A_PLANE(get_entity_model(vehplayer))
SET_VEHICLE_FORWARD_SPEED(vehplayer,15)
ENDIF
IF IS_THIS_MODEL_A_HELI(get_entity_model(vehplayer))
SET_HELI_BLADES_FULL_SPEED(vehplayer)
SET_ENTITY_VELOCITY(vehplayer,<<1,1,1>>)
ENDIF
ENDIF
ELSE
END_REPLAY_SETUP()
ENDIF
ENDIF
IF GET_DISTANCE_BETWEEN_COORDS(GET_REPLAY_CHECKPOINT_PLAYER_POSITION(),<<2570.5376, 4982.0313, 50.6239>>) < 10.0
set_entity_coords(player_ped_id(),<<2570.5376, 4982.0313, 50.6239>>)
set_entity_heading(player_ped_id(),98)
ENDIF
IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id())
SET_ENTITY_COORDS_GROUNDED(player_ped_id(),GET_ENTITY_COORDS(player_ped_id()))
ENDIF
BREAK
case get_to_house
//CREATE_VEHICLE_FOR_REPLAY(vehPlayer,<<0,0,0>>, 0,FALSE,FALSE,TRUE,TRUE,FALSE)
SET_VEHICLE_POPULATION_BUDGET(1)
SET_PED_POPULATION_BUDGET(1)
SET_ENTITY_COORDS(PLAYER_PED_ID(),<< 2572.0095, 4981.6782, 50.6698 >>)
SET_ENTITY_HEADING(PLAYER_PED_ID(),90.3911)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
SET_WANTED_LEVEL_MULTIPLIER(0.0)
add_event(events_spawn_house)
DISABLE_TAXI_HAILING(TRUE)
while is_event_active(events_spawn_house)
manage_events()
safewait(10)
endwhile
PREP_REPLAY()
PLAYMUSIC("CHN2_TO_HOUSE_RESTART",false,"CHN2_EXPLODE")
WHILE NOT control_music()
safewait(11)
ENDWHILE
FORCE_DIALOGUE_STATE(0,dia_whatnow)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7)
break
case inside_house
cprintln(debug_Trevor3,"Start replay: ",get_Game_timer())
IF bIsReplay
START_REPLAY_SETUP(<< 2450.8713, 4960.9985, 44.3759 >>,351.0)
ELSE
SET_ENTITY_COORDS(PLAYER_PED_ID(),<< 2450.8713, 4960.9985, 44.3759 >>,false,true)
SET_ENTITY_HEADING(PLAYER_PED_ID(),351.3911)
load_scene(<< 2432.9817, 4964.8232, 41.3476 >>)
safewait(325)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7)
ENDIF
//CREATE_VEHICLE_FOR_REPLAY(vehPlayer,<<0,0,0>>, 0,FALSE,FALSE,TRUE,TRUE,FALSE)
PREP_REPLAY()
SET_VEHICLE_POPULATION_BUDGET(1)
SET_PED_POPULATION_BUDGET(1)
//SET_CURRENT_PED_WEAPON(player_ped_id(),WEAPONTYPE_PUMPSHOTGUN,TRUE)
WAIT(1)
add_event(events_spawn_house)
DISABLE_TAXI_HAILING(TRUE)
cprintln(debug_Trevor3,"wait for spawn house event: ",get_Game_timer())
while is_event_Active(events_spawn_house)
manage_events()
safewait(12)
ENDWHILE
SET_WANTED_LEVEL_MULTIPLIER(0.0)
cprintln(debug_Trevor3,"completed spawn house event: ",get_Game_timer())
cprintln(debug_Trevor3,"Load music : ",get_Game_timer())
PLAYMUSIC("CHN2_ENTER_HOUSE_RESTART",false,"CHN2_EXPLODE")
WHILE NOT control_music()
safewait(13)
ENDWHILE
cprintln(debug_Trevor3,"Loaded music : ",get_Game_timer())
FORCE_DIALOGUE_STATE(0,dia_whatnow)
IF bIsReplay
END_REPLAY_SETUP()
ENDIF
IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id())
SET_ENTITY_COORDS_GROUNDED(player_ped_id(),GET_ENTITY_COORDS(player_ped_id()))
ENDIF
cprintln(debug_Trevor3,"Loaded replay : ",get_Game_timer())
break
case do_petrol_trail
IF bIsReplay
START_REPLAY_SETUP(<<2435.3193, 4966.1528, 41.3476>>, 104.2964)
ELSE
SET_ENTITY_COORDS(PLAYER_PED_ID(),<<2435.3193, 4966.1528, 41.3476>>)
SET_ENTITY_HEADING(PLAYER_PED_ID(), 104.2964)
load_scene(<< 2432.9817, 4964.8232, 41.3476 >>)
WAIT(1)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7)
ENDIF
SET_VEHICLE_POPULATION_BUDGET(1)
SET_PED_POPULATION_BUDGET(1)
//CREATE_VEHICLE_FOR_REPLAY(vehPlayer,<<0,0,0>>, 0,FALSE,FALSE,TRUE,TRUE,FALSE)
DISABLE_TAXI_HAILING(TRUE)
PREP_REPLAY()
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(),TRUE)
int_farm = GET_INTERIOR_AT_COORDS(<< 2432.9817, 4964.8232, 41.3476 >>)
while not IS_VALID_INTERIOR(int_farm)
int_farm = GET_INTERIOR_AT_COORDS(<< 2432.9817, 4964.8232, 41.3476 >>)
SAFEWAIT(14)
ENDWHILE
// PIN_INTERIOR_IN_MEMORY(int_farm)
WHILE NOT IS_INTERIOR_READY(int_farm)
SAFEWAIT(15)
ENDWHILE
SET_INTERIOR_ACTIVE(int_farm, TRUE)
UNPIN_INTERIOR(int_farm)
int_farm = null
REQUEST_WEAPON_ASSET(WEAPONTYPE_PETROLCAN)
REQUEST_ANIM_DICT("misschinese2_crystalmaze")
WHILE NOT HAS_WEAPON_ASSET_LOADED(WEAPONTYPE_PETROLCAN)
OR NOT HAS_ANIM_DICT_LOADED("misschinese2_crystalmaze")
SAFEWAIT(16)
ENDWHILE
add_event(events_explode_petrol_can)
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(),FALSE)
add_event(events_spawn_house)
while is_event_Active(events_spawn_house)
manage_events()
safewait(17)
ENDWHILE
SET_WANTED_LEVEL_MULTIPLIER(0.0)
request_model(blazer)
while NOT HAS_MODEL_LOADED(blazer)
safewait(18)
ENDWHILE
FORCE_INSTRUCTION_STATE(0,INS_PICK_UP_GAS_CAN)
// action(0,act_create_petrol_can_with_blip)
// reset_actions()
// IF NOT bIsReplay
// GIVE_WEAPON_TO_PED(player_ped_id(),WEAPONTYPE_PETROLCAN,4500,true)
// ELSE
//IF HAS_PED_GOT_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN)
//SET_CURRENT_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN,TRUE)
//ELSE
GIVE_WEAPON_TO_PED(player_ped_id(),WEAPONTYPE_PETROLCAN,4500,true)
//ENDIF
// ENDIF
RESET_GAS_TRAIL(FALSE)
PLAYMUSIC("CHN2_PETROL_RESTART",false,"CHN2_EXPLODE")
WHILE NOT control_music()
safewait(19)
ENDWHILE
IF bIsReplay
END_REPLAY_SETUP()
ENDIF
break
case explosion_cut
IF bIsReplay
START_REPLAY_SETUP(<< 2453.124, 4952.071, 45.125 >>,285.0)
ELSE
SET_ENTITY_COORDS(PLAYER_PED_ID(),<< 2453.124, 4952.071, 45.125 >>)
SET_ENTITY_HEADING(PLAYER_PED_ID(),285.8625)
load_scene(<< 2453.124, 4952.071, 45.125 >>)
WAIT(1)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7)
ENDIF
PREP_REPLAY()
IF NOT IS_SRL_LOADED()
PREFETCH_SRL("chinese2_explosion_cutscene")
ENDIF
//CREATE_VEHICLE_FOR_REPLAY(vehPlayer,<<0,0,0>>, 0,FALSE,FALSE,TRUE,TRUE,FALSE)
SET_VEHICLE_POPULATION_BUDGET(1)
SET_PED_POPULATION_BUDGET(1)
request_model(blazer)
while not has_model_loaded(blazer)
safewait(20)
ENDWHILE
vehBlazer = create_vehicle(Blazer,<<2478.5867, 4941.8032, 43.6736>>, 227.2903)
SET_VEHICLE_ON_GROUND_PROPERLY(vehBlazer)
int_farm = GET_INTERIOR_AT_COORDS(<< 2432.9817, 4964.8232, 41.3476 >>)
while not IS_VALID_INTERIOR(int_farm)
int_farm = GET_INTERIOR_AT_COORDS(<< 2432.9817, 4964.8232, 41.3476 >>)
safewait(21)
ENDWHILE
//PIN_INTERIOR_IN_MEMORY(int_farm)
WHILE NOT IS_INTERIOR_READY(int_farm)
safewait(22)
ENDWHILE
CUTSCENE_FIRST_SHOT = SHOT_NORMAL
SET_INTERIOR_ACTIVE(int_farm, TRUE)
UNPIN_INTERIOR(int_farm)
int_farm = null
while NOT HAS_MODEL_LOADED(blazer)
OR NOT IS_SRL_LOADED()
safewait(24)
ENDWHILE
IF bIsReplay
END_REPLAY_SETUP()
ENDIF
WHILE NOT LOAD_STREAM("CHINESE2_FARMHOUSE_EXPLOSION_SHOOT_GASOLINE_MASTER")
safewait(23)
ENDWHILE
break
case end_mission
IF bIsReplay
START_REPLAY_SETUP(<<2472.3, 4948.1807, 44.0937>>,220.0)
ELSE
SET_ENTITY_COORDS(player_ped_id(), <<2472.3, 4948.1807, 44.0937>>)
SET_ENTITY_HEADING(player_ped_id(), 220.8569)
load_scene(<< 2453.124, 4952.071, 45.125 >>)
WAIT(1)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7)
ENDIF
kill_event(events_reset_house_rayfire,false)
//CREATE_VEHICLE_FOR_REPLAY(vehPlayer,<<0,0,0>>, 0,FALSE,FALSE,TRUE,TRUE,FALSE)
SET_VEHICLE_POPULATION_BUDGET(3)
SET_PED_POPULATION_BUDGET(3)
request_model(blazer)
while not has_model_loaded(blazer)
OR NOT REQUEST_SCRIPT_AUDIO_BANK("FARMHOUSE_FIRE")
OR NOT REQUEST_SCRIPT_AUDIO_BANK("FARMHOUSE_FIRE_BG")
safewait(25)
ENDWHILE
vehBlazer = create_vehicle(Blazer,<<2478.5867, 4941.8032, 43.6736>>, 227.2903)
SET_VEHICLE_ON_GROUND_PROPERLY(vehBlazer)
PREP_REPLAY()
load_scene(<< 2453.124, 4952.071, 45.125 >>)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE, BUILDINGSTATE_NORMAL)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP1, BUILDINGSTATE_NORMAL)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP2, BUILDINGSTATE_NORMAL)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP3, BUILDINGSTATE_NORMAL)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_INTERIOR, BUILDINGSTATE_DESTROYED)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_OCCLUSION, BUILDINGSTATE_DESTROYED)
rfThisRayfire = GET_RAYFIRE_MAP_OBJECT(<<2457.15, 4968.79, 48.677>>, 45, "DES_FarmHs")
WHILE NOT DOES_RAYFIRE_MAP_OBJECT_EXIST(rfThisRayfire)
safewait(161)
endwhile
SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_ENDING)
REMOVE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_ret_fhglassfrm,false)
REMOVE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGLASSFRMSML,false)
REMOVE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGlassairfrm,false)
IF bIsReplay
END_REPLAY_SETUP()
ENDIF
BREAK
CASE missionPassed
kill_event(events_reset_house_rayfire,false)
IF bIsReplay
START_REPLAY_SETUP(<<2625.7759, 4802.2173, 32.5747>>,206.0)
ELSE
SET_ENTITY_COORDS(player_ped_id(),<<2625.7759, 4802.2173, 32.5747>>)
SET_ENTITY_HEADING(player_ped_id(), 206.4254)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7)
LOAD_SCENE(<<2625.7759, 4802.2173, 32.5747>>)
ENDIF
/* this is causing mission to freeze
rfThisRayfire = GET_RAYFIRE_MAP_OBJECT(<<2457.15, 4968.79, 48.677>>, 45, "DES_FarmHs")
WHILE NOT DOES_RAYFIRE_MAP_OBJECT_EXIST(rfThisRayfire)
safewait(161)
endwhile */
SET_VEHICLE_POPULATION_BUDGET(3)
SET_PED_POPULATION_BUDGET(3)
SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_ENDING)
/*
WHILE GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire) != RFMO_STATE_END
safewait(162)
ENDWHILE
*/
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE,BUILDINGSTATE_CLEANUP, FALSE)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP1,BUILDINGSTATE_CLEANUP, FALSE)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP2,BUILDINGSTATE_CLEANUP, FALSE)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP3,BUILDINGSTATE_CLEANUP, FALSE)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_INTERIOR, BUILDINGSTATE_DESTROYED)
SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_OCCLUSION, BUILDINGSTATE_DESTROYED)
IF bIsReplay
END_REPLAY_SETUP()
ENDIF
BREAK
ENDSWITCH
ENDPROC
#if IS_DEBUG_BUILD
proc debug_check_keyboard()
IF IS_KEYBOARD_KEY_PRESSED(KEY_S)
MISSION_PASSED()
ENDIF
IF IS_KEYBOARD_KEY_PRESSED(KEY_f)
Mission_Failed()
ENDIF
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J)
missionStage = INT_TO_ENUM(mission_stage_flag,enum_to_int(missionStage)+1)
do_skip(missionStage)
ENDIF
IF NOT IS_KEYBOARD_KEY_PRESSED(KEY_J)
INT iCurrentStage = ENUM_TO_INT(missionStage)
int iReturnStage
IF LAUNCH_MISSION_STAGE_MENU(SkipMenuStruct, iReturnStage,iCurrentStage,TRUE) //MenuTitlePassed defaults to âœMission Stages❠if NULL is passed.
missionStage = INT_TO_ENUM(mission_stage_flag, iReturnStage)
do_skip(missionStage)
ENDIF
ENDIF
ENDPROC
PROC PRINT_CONDITION_DATA(int iCon)
string sCond
enumConditions thisCond = conditions[iCon].condition
SWITCH thisCond
CASE COND_NULL sCond = "COND_NULL" BREAK
case cond_GO_TO_FARM_START scond = "cond_GO_TO_FARM_START" BREAK
case cond_INITIAL_INSTRUCTIONS_PLAYED scond = "cond_INITIAL_INSTRUCTIONS_PLAYED" BREAK
case cond_PLAYER_IN_ANY_CAR scond = "cond_PLAYER_IN_ANY_CAR" BREAK
case cond_GO_TO_FARM_END scond = "cond_GO_TO_FARM_END" BREAK
case cond_START_FARM_ASSAULT scond = "cond_START_FARM_ASSAULT" BREAK
case cond_BULLET_IMPACTED_BY_BARRELS scond = "cond_BULLET_IMPACTED_BY_BARRELS" BREAK
case cond_SHOOTING_PED_DEAD scond = "cond_SHOOTING_PED_DEAD" BREAK
case cond_ENEMY_PED_REACTING scond = "cond_ENEMY_PED_REACTING" BREAK
case cond_ALL_ENEMY_ALERTED scond = "cond_ALL_ENEMY_ALERTED" BREAK
case cond_PLAYER_IN_METH_LAB scond = "cond_PLAYER_IN_METH_LAB" BREAK
case cond_PLAYER_IN_HOUSE scond = "cond_PLAYER_IN_HOUSE" BREAK
case cond_PLAYER_DOWNSTAIRS scond = "cond_PLAYER_DOWNSTAIRS" BREAK
case cond_PLAYER_APPROACHING_HOUSE scond = "cond_PLAYER_APPROACHING_HOUSE" BREAK
case cond_BASEMENT_PED_DEAD_IN_BASEMENT scond = "cond_BASEMENT_PED_DEAD_IN_BASEMENT" BREAK
case cond_ATTACKERS_ALL_DEAD scond = "cond_ATTACKERS_ALL_DEAD" BREAK
case cond_TREVOR_NEAR_BASEMENT scond = "cond_TREVOR_NEAR_BASEMENT" BREAK
case cond_TREVOR_NEAR_STAIRS scond = "cond_TREVOR_NEAR_STAIRS" BREAK
case cond_TREVOR_AT_STAIRS scond = "cond_TREVOR_AT_STAIRS" BREAK
case cond_PISSING_DIALOGUE_CAN_PLAY scond = "cond_PISSING_DIALOGUE_CAN_PLAY" BREAK
case cond_TREVOR_SEEN scond = "cond_TREVOR_SEEN" BREAK
case cond_RESPOND_TO_BULLET scond = "cond_RESPOND_TO_BULLET" BREAK
case cond_ONE_ATTACKER_LEFT_OUTSIDE scond = "cond_ONE_ATTACKER_LEFT_OUTSIDE" BREAK
case COND_FAIL_FOR_LEAVING_FARM scond = "COND_FAIL_FOR_LEAVING_FARM" BREAK
case cond_START_PETROL_TRAIL scond = "cond_START_PETROL_TRAIL" BREAK
case cond_JERRY_CAN_DESTROYED scond = "cond_JERRY_CAN_DESTROYED" BREAK //allows this case condition to span across both mission stages
case cond_END_FARM_ASSAULT scond = "cond_END_FARM_ASSAULT" BREAK
case cond_PLAYER_OUT_FRONT scond = "cond_PLAYER_OUT_FRONT" BREAK
case cond_OUT_OF_GAS scond = "cond_OUT_OF_GAS" BREAK
case cond_GAS_TRAIL_COMPLETE scond = "cond_GAS_TRAIL_COMPLETE" BREAK
case cond_LAST_BLIP_POURED_ON scond = "cond_LAST_BLIP_POURED_ON" BREAK
case cond_PLAYER_HAS_PETROL_CAN scond = "cond_PLAYER_HAS_PETROL_CAN" BREAK
case cond_PLAYER_POURING_GAS scond = "cond_PLAYER_POURING_GAS" BREAK
case COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE scond = "COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE" BREAK
case cond_GAS_TRAIL_IGNITED_INCORRECTLY scond = "cond_GAS_TRAIL_IGNITED_INCORRECTLY" BREAK
case cond_END_PETROL_TRAIL scond = "cond_END_PETROL_TRAIL" BREAK
DEFAULT scond = " -NOT DEFINED-" BREAK
ENDSWITCH
SET_TEXT_SCALE(0.25,0.25)
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
ENDPROC
PROC PRINT_ACTION_DATA(int iData,bool shiftUp=FALSE)
string sAct
enumActions thisAct = actions[iData].action
SWITCH thisAct
CASE ACT_NULL sAct = "ACT_NULL" BREAK
//snipe from hill
CASE act_shooting_peds_witness_impact_at_barrels sAct = "act_shooting_peds_witness_impact_at_barrels" BREAK
case act_stat_double_kill sAct = "act_stat_double_kill" BREAK
case act_MUSIC_start_snipe sAct = "act_MUSIC_start_snipe" BREAK
case act_MUSIC_approach_house_or_alert sAct = "act_MUSIC_approach_house_or_alert" BREAK
case act_create_petrol_can_with_blip sAct = "act_create_petrol_can_with_blip" BREAK
case act_stage_prep sAct = "act_stage_prep" BREAK
case act_snipe_cams sAct = "act_snipe_cams" BREAK
case act_remove_initial_assets sAct = "act_remove_initial_assets" BREAK
case act_outside_peds_flee sAct = "act_outside_peds_flee" BREAK
case act_remove_upstairs_peds sAct = "act_remove_upstairs_peds" BREAK
case act_MUSIC_enter_house sAct = "act_MUSIC_enter_house" BREAK
case act_remaining_peds_flee sAct = "act_remaining_peds_flee" BREAK
case act_window_ped_walks_inside sAct = "act_window_ped_walks_inside" BREAK
DEFAULT sAct = " -NOT DEFINED-" BREAK
ENDSWITCH
float shiftY
IF shiftUp
shiftY = -0.36
ENDIF
IF actions[iData].ongoing
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)+shiftY,"STRING",sAct)
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)+shiftY,"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)+shiftY,"STRING",sAct)
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)+shiftY,"STRING","FALSE")
ENDIF
IF actions[iData].completed
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)+shiftY,"STRING",sAct)
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(255,0,0,255)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5,0.1+(iData*0.03)+shiftY,"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)+shiftY,"STRING",sAct)
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_SCALE(0.35,0.35)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5,0.1+(iData*0.03)+shiftY,"STRING","FALSE")
ENDIF
showIntOnScreen(0.57,0.1+(iData*0.03)+shiftY,actions[iData].flag,"",0.35)
showIntOnScreen(0.62,0.1+(iData*0.03)+shiftY,actions[iData].intA,"",0.35)
ENDPROc
PROC PRINT_INSTRUCTION_DATA(int iData)
string sInst
enumInstructions thisInst = instr[iData].ins
SWITCH thisInst
CASE INS_NULL sInst = "INS_NULL" BREAK
CASE ins_enemy_reacting sInst = "ins_enemy_reacting" 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.39,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.39,0.1+(iData*0.03),"STRING","FALSE")
ENDIF
SET_TEXT_SCALE(0.35,0.35)
IF instr[iData].condTrue
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(255,0,0,255)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.45,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.45,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_DIALOGUE_DATA(int iDia)
string sDia
enumDialogue thisDia = dia[iDia].dial
SWITCH thisDia
CASE DIA_NULL sDia = "DIA_NULL" BREAK
//drive to alley
case dia_whatnow sDia = "dia_whatnow" BREAK
case dia_trevor_rage_comments sDia = "dia_trevor_rage_comments" BREAK
case dia_stop_trevor_getting_to_basement sDia = "dia_stop_trevor_getting_to_basement" BREAK
case dia_cook_sees_ped_die sDia = "dia_cook_sees_ped_die" BREAK
case dia_dont_let_him_down sDia = "dia_dont_let_him_down" BREAK
case dia_hes_in_meth_lab sDia = "dia_hes_in_meth_lab" BREAK
case dia_trevor_spotted_outside sDia = "dia_trevor_spotted_outside" BREAK
case dia_find_trevor sDia = "dia_find_trevor" BREAK
case dia_attacking_trevor_outside sDia = "dia_attacking_trevor_outside" BREAK
case dia_attacking_trevor_inside sDia = "dia_attacking_trevor_inside" BREAK
case dia_trevor_seen_inside_house sDia = "dia_trevor_seen_inside_house" BREAK
case dia_RESPOND_TO_BULLET sDia = "dia_RESPOND_TO_BULLET" BREAK
case dia_last_man_standing sDia = "dia_last_man_standing" 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 SHOW_DEBUG_SCRIPT_DATA()
int iR
IF bAllowShitskip
g_savedGlobals.sFlow.missionSavedData[ENUM_TO_INT(SP_MISSION_CHINESE_2)].missionFailsNoProgress = 3
bAllowShitskip = FALSE
FAIL_MISSION("")
ENDIF
IF bScreenConditions
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 bScreenActionsA
SET_TEXT_SCALE(0.35,0.35)
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.35,0.35)
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.35,0.35)
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.35,0.35)
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_CENTRE(TRUE)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.62,0.05,"STRING","IntA")
REPEAT COUNT_OF(actions) iR
IF actions[iR].active
PRINT_ACTION_DATA(iR)
ENDIF
ENDREPEAT
ENDIF
IF bScreenInstructions
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(255,0,255,255)
SET_TEXT_CENTRE(TRUE)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.38,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.44,0.05,"STRING","Cond")
REPEAT COUNT_OF(instr) iR
PRINT_INSTRUCTION_DATA(iR)
ENDREPEAT
ENDIF
IF bSshowDialogue
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
endproc
proc manage_debug()
int iR
if not DOES_WIDGET_GROUP_EXIST(widget_debug)
widget_debug = START_WIDGET_GROUP("Chinese 2 widget")
ADD_WIDGET_BOOL("Do Shit skip",bAllowShitskip)
ADD_WIDGET_BOOL("Show Conditions",bScreenConditions)
ADD_WIDGET_BOOL("Show Actions 0-12",bScreenActionsA)
ADD_WIDGET_BOOL("Show Instructions",bScreenInstructions)
ADD_WIDGET_BOOL("Show Dialogue",bSshowDialogue)
ADD_WIDGET_BOOL("TRIGGER AND LOOP HOUSE EXPLOSION",bExplodeHouseLoop)
ADD_WIDGET_BOOL("TRIGGER AND LOOP HOUSE EXPLOSION SHORT",bExplodeHouseLoopShort)
ADD_WIDGET_BOOL("Ped Actions 1-15",bShowActionsA)
ADD_WIDGET_BOOL("Ped Actions 16-30",bShowActionsB)
ADD_WIDGET_BOOL("Show Focus",bShowFocus)
ADD_WIDGET_BOOL("bShowAlerts",bShowAlerts)
ADD_WIDGET_BOOL("Record ped alerts...",bRecordPedData)
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO("none")
ADD_TO_WIDGET_COMBO("balcony_far_left")
ADD_TO_WIDGET_COMBO("balcony_doorway")
ADD_TO_WIDGET_COMBO("balcony_veranda_walk")
ADD_TO_WIDGET_COMBO("porch")
ADD_TO_WIDGET_COMBO("barrels_1")
ADD_TO_WIDGET_COMBO("barrels_2")
ADD_TO_WIDGET_COMBO("garden_chat_1")
ADD_TO_WIDGET_COMBO("garden_chat_2")
ADD_TO_WIDGET_COMBO("shooting_bottle_1")
ADD_TO_WIDGET_COMBO("shooting_bottle_2")
ADD_TO_WIDGET_COMBO("inside_right_window")
ADD_TO_WIDGET_COMBO("inside_top_window")
ADD_TO_WIDGET_COMBO("inside_utility_room")
ADD_TO_WIDGET_COMBO("inside_seated1")
ADD_TO_WIDGET_COMBO("inside_seated2")
ADD_TO_WIDGET_COMBO("inside_seated3")
ADD_TO_WIDGET_COMBO("inside_cards1")
ADD_TO_WIDGET_COMBO("inside_cards2")
ADD_TO_WIDGET_COMBO("inside_cards3")
ADD_TO_WIDGET_COMBO("inside_kitchen1")
ADD_TO_WIDGET_COMBO("inside_kitchen2")
ADD_TO_WIDGET_COMBO("inside_bystairs1")
ADD_TO_WIDGET_COMBO("inside_bystairs2")
ADD_TO_WIDGET_COMBO("innocent_chef")
ADD_TO_WIDGET_COMBO("innocent_drugden")
ADD_TO_WIDGET_COMBO("pissing_ped")
STOP_WIDGET_COMBO("Recorded Ped", iRecordedPed)
ADD_WIDGET_BOOL("Kill Outside Peds",bKillOutsidePeds)
ADD_WIDGET_BOOL("Record Ped",bRecordPed)
ADD_WIDGET_INT_SLIDER("Ped to rec",iPedToRecord,0,MAX_PEDS-1,1)
ADD_WIDGET_BOOL("Show events",bShowEvents)
ADD_WIDGET_INT_READ_ONLY("stageFlag",stageFlag)
ADD_WIDGET_BOOL("Skip Drive",bSkipDrive)
STOP_WIDGET_GROUP()
SET_LOCATES_HEADER_WIDGET_GROUP(widget_debug)
ENDIF
SHOW_DEBUG_SCRIPT_DATA()
if bShowActionsA
and bShowActionsB
bShowActionsA=false
endif
float fx,fy,fdist,fclosest
int iClosePed
IF bShowFocus
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
TEXT_LABEL_31 txtlbl
REPEAT COUNT_OF(zPED) iR
txtlbl = ""
if DOES_ENTITY_EXIST(zPED[iR].id)
txtlbl = GET_PLACEMENT_STRING(iR)
DRAW_DEBUG_TEXT_ABOVE_ENTITY(zPED[iR].id,txtlbl,1.4)
txtlbl = ""
txtlbl = GET_ROLE_STRING(iR)
DRAW_DEBUG_TEXT_ABOVE_ENTITY(zPED[iR].id,txtlbl,0.4)
ENDIF
ENDREPEAT
ENDIF
if bShowActionsA
or bShowActionsB
int iPedMin,iPedMax
IF bShowActionsA
iPedMin = 0
iPedMax = 15
else
iPedMin = 16
iPedMax = 30
endif
//find which ped is closest to middle of screen
REPEAT COUNT_OF(zPED) iR
if DOES_ENTITY_EXIST(zPED[iR].id)
IF GET_SCREEN_COORD_FROM_WORLD_COORD(GET_ENTITY_COORDS(zPED[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(zPED) iR
IF iR >= iPedMin and iR <= iPedMax
SET_TEXT_SCALE(0.4,0.4)
IF iClosePed = iR
SET_TEXT_COLOUR(0,255,0,255)
ELSE
IF DOES_ENTITY_EXIST(zPED[iR].id)
IF IS_PED_INJURED(zPED[iR].id)
SET_TEXT_COLOUR(255,0,0,255)
ELSE
SET_TEXT_COLOUR(255,255,255,255)
ENDIF
ENDIF
ENDIF
DISPLAY_TEXT_WITH_LITERAL_STRING(0.05,0.1+(iR * 0.025),"STRING",GET_PLACEMENT_STRING(iR))
SET_TEXT_SCALE(0.4,0.4)
IF iClosePed = iR
SET_TEXT_COLOUR(0,255,0,255)
ELSE
IF DOES_ENTITY_EXIST(zPED[iR].id)
IF IS_PED_INJURED(zPED[iR].id)
SET_TEXT_COLOUR(255,0,0,255)
ELSE
SET_TEXT_COLOUR(255,255,255,255)
ENDIF
ENDIF
ENDIF
DISPLAY_TEXT_WITH_LITERAL_STRING(0.24,0.1+(iR * 0.025),"STRING",GET_ACTION_STRING(iR))
IF iClosePed = iR
SET_TEXT_COLOUR(0,255,0,255)
ELSE
IF DOES_ENTITY_EXIST(zPED[iR].id)
IF IS_PED_INJURED(zPED[iR].id)
SET_TEXT_COLOUR(255,0,0,255)
ELSE
SET_TEXT_COLOUR(255,255,255,255)
ENDIF
ENDIF
ENDIF
showIntOnScreen(0.47,0.1+(iR * 0.025),zPED[iR].actionFlag)
showIntOnScreen(0.5,0.1+(iR * 0.025),zPED[iR].intA)
showIntOnScreen(0.53,0.1+(iR * 0.025),enum_to_int(zPED[iR].role))
endif
ENDREPEAT
ENDIF
IF bKillOutsidePeds
bKillOutsidePeds = FALSE
repeat count_of(zped) iR
if zped[iR].role = role_guard_outside
IF DOES_ENTITY_EXIST(zped[iR].id)
IF NOT is_ped_injured(zped[iR].id)
SET_ENTITY_HEALTH(zped[iR].id,0)
ENDIF
endif
endif
endrepeat
ENDIF
IF bRecordPed
PRINTLN("Role: ",zped[iPedToRecord].role,"Pos: ",GET_PLACEMENT_STRING(iPedToRecord)," action: ",GET_ACTION_STRING(iPedToRecord)," flag: ",zped[iPedToRecord].actionFlag," int: ",zped[iPedToRecord].intA)
ENDIF
IF bShowEvents
REPEAT COUNT_OF(events) iR
SET_TEXT_SCALE(0.4,0.4)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.05,0.1+(iR * 0.025),"STRING",GET_THIS_EVENT_STRING(iR))
SET_TEXT_SCALE(0.4,0.4)
showIntOnScreen(0.26,0.1+(iR * 0.025),events[iR].flag)
SET_TEXT_SCALE(0.4,0.4)
showIntOnScreen(0.29,0.1+(iR * 0.025),events[iR].intA)
SET_TEXT_SCALE(0.4,0.4)
IF events[iR].boolA DISPLAY_TEXT_WITH_LITERAL_STRING(0.32,0.1+(iR * 0.025),"STRING","TRUE") ELSE DISPLAY_TEXT_WITH_LITERAL_STRING(0.32,0.1+(iR * 0.025),"STRING","FALSE") ENDIF
SET_TEXT_SCALE(0.4,0.4)
IF events[iR].active DISPLAY_TEXT_WITH_LITERAL_STRING(0.38,0.1+(iR * 0.025),"STRING","ACTIVE") ELSE DISPLAY_TEXT_WITH_LITERAL_STRING(0.38,0.1+(iR * 0.025),"STRING","INACTIVE") ENDIF
ENDREPEAT
ENDIF
IF bSkipDrive
bSkipDrive = FALSE
IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer)
SET_ENTITY_COORDS(vehPlayer,<< 2622.2361, 4804.1313, 32.5715 >>)
SET_ENTITY_HEADING(vehPlayer,44)
ELSE
REQUEST_MODEL(BODHI2)
WHILE NOT HAS_MODEL_LOADED(BODHI2)
safewait(26)
ENDWHILE
vehPlayer = CREATE_VEHICLE(BODHI2,<<2623.5288, 4804.7842, 32.6049>>,43)
SET_PED_INTO_VEHICLE(player_ped_id(),vehPlayer)
ENDIF
ENDIF
IF bExplodeHouseLoop
AND bExplodeHouseLoopShort
bExplodeHouseLoop = FALSE
ENDIF
IF bExplodeHouseLoop
OR bExplodeHouseLoopShort
IF missionStage != explosion_cut
do_skip(explosion_cut)
ENDIf
ENDIF
debug_check_keyboard()
ENDPROC
proc recordData(string debugText,int iPedCompare=-1)
int iPedsDetails
IF bRecordPedData
iPedsDetails = get_ped_with_placement(int_to_enum(enumPlacement,iRecordedPed))
IF iPedCompare = -1
OR iPedCompare = iPedsDetails
IF iRecordedPed > 0
cprintln(DEBUG_TREVOR3,debugText," State: ",GET_THIS_STATE_STRING(iPedsDetails)," Alerted: ",GET_ALERTED_STRING(iPedsDetails)," last Alert: ",GET_ALERTED_STRING(iPedsDetails,TRUE)," action Flag: ",zped[iPedsDetails].actionFlag," intA: ",zped[iPedsDetails].intA," vpos: ",zped[iPedsDetails].vpos)
ENDIF
ENDIF
ENDIF
ENDPROC
#ENDIF
// ================================================== Manage Peds ===============================================
FUNC bool checkAllEnemyDead()
int i
FOR i = 0 to MAX_PEDS-1
IF DOES_BLIP_EXIST(zped[i].blip)
OR zped[i].action = action_spawn
RETURN FALSE
ENDIF
ENDFOR
RETURN TRUE
endfunc
FUNC BOOL NAVIGATE_NEAR_TO_THIS_POINT(ped_index pedID, vector vGoto, FLOAT pedmoveSpeed = pedmove_run)
IF NOT IS_PED_INJURED(pedID)
IF GET_SCRIPT_TASK_STATUS(pedID,SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD) != PERFORMING_TASK
AND GET_SCRIPT_TASK_STATUS(pedID,SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD) != WAITING_TO_START_TASK
AND GET_SCRIPT_TASK_STATUS(pedID,SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD) != DORMANT_TASK
TASK_FOLLOW_NAV_MESH_TO_COORD(pedID,vGoto,pedmoveSpeed)
ENDIF
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(pedID,vGoto) < 2.5
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
PROC CONTROL_PED_ACTIONS()
int i
REPEAT COUNT_OF(pedReactionState) i
IF (NOT IS_PED_INJURED(zped[i].id)
AND NOT IS_PED_DEAD_OR_DYING(zped[i].id))
OR pedReactionState[i].State = STATE_SPAWN
SWITCH pedReactionState[i].State
CASE STATE_SPAWN
SWITCH zPED[i].role
CASE role_guard_outside
SWITCH zPED[i].placement
case pos_balcony_veranda_walk
IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2451.8179, 4985.7041, 50.5678 >>,227.8420, WEAPONTYPE_ASSAULTRIFLE)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,true)
set_ped_action(i,action_balcony_guard_patrol)
ENDIF
BREAK
case pos_balcony_doorway
IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2455.0850, 4974.4658, 50.5677 >>, 246.0510, WEAPONTYPE_ASSAULTRIFLE, TRUE)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,true)
set_ped_action(i,action_smoke)
ENDIF
BREAK
case pos_garden_chat_1
IF CREATE_GANG_PED(i,A_M_M_Hillbilly_02, << 2461.6089, 4993.6748, 44.9821 >>, -90.0, WEAPONTYPE_ASSAULTRIFLE,TRUE)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE)
set_ped_action(i,action_chatting)
zPED[i].lastAction = action_chatting //when action_chatting ends it reverts to last action
ENDIF
BREAK
case pos_garden_chat_2
IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2462.8872, 4993.6138, 44.9474 >>, 89.8899, WEAPONTYPE_ASSAULTRIFLE, TRUE)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE)
set_ped_action(i,action_chatting,1)
zPED[i].lastAction = action_chatting //when action_chatting ends it reverts to last action
ENDIF
BREAK
case pos_porch
IF CREATE_GANG_PED(i,A_M_Y_MethHead_01, <<2460.6506, 4970.8135, 45.5765>>,240.2054, WEAPONTYPE_ASSAULTRIFLE, FALSE) // 2463.9058, 4973.9673, 45.5764 >>,240.2054, WEAPONTYPE_MICROSMG, FALSE)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,TRUE)
set_ped_action(i,action_drinking)
ENDIF
BREAK
case pos_balcony_far_left
IF CREATE_GANG_PED(i,A_M_Y_MethHead_01, << 2443.1384, 4966.7090, 50.5677 >>,246.0510, WEAPONTYPE_ASSAULTRIFLE, TRUE)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,TRUE,true)
set_ped_action(i,action_binoculars)
ENDIF
BREAK
case pos_barrels_1
IF missionStage = farm_cutscene
IF CREATE_GANG_PED(i,A_M_M_Hillbilly_02, <<2457.0979, 4954.2827, 44.1304>>, 316.5498,WEAPONTYPE_PISTOL,FALSE)
zPED[i].obj = CREATE_OBJECT(Prop_CS_Fertilizer, <<2460.0979, 4957.2827, 44.1304>>)
zPED[i].actionFlag = 1
set_ped_action(i,action_roll_barrels_at_front_of_house)
ENDIF
else
IF CREATE_GANG_PED(i,A_M_M_Hillbilly_02, << 2478.3201, 4982.3247, 44.8913 >>, 49.5021,WEAPONTYPE_PISTOL,FALSE)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE)
zPED[i].obj = CREATE_OBJECT(Prop_CS_Fertilizer, << 2478.4443, 4976.9214, 44.5614 >>)
zPED[i].actionFlag = 1
set_ped_action(i,action_roll_barrels)
ENDIF
ENDIF
BREAK
case pos_barrels_2
IF missionStage = farm_cutscene
IF CREATE_GANG_PED(i,A_M_M_Hillbilly_02, <<2454.7527, 4951.7188, 44.1445>>, 316.5541,WEAPONTYPE_PISTOL,FALSE)
zPED[i].obj = CREATE_OBJECT(Prop_CS_Fertilizer, <<2455.7527, 4952.7188, 44.1445>>)
zPED[i].actionFlag = 1
set_ped_action(i,action_roll_barrels_at_front_of_house)
ENDIF
ELSE
IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2475.8733, 4984.4263, 45.0916 >>, 45.8993,WEAPONTYPE_PISTOL,FALSE)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE)
zPED[i].obj = CREATE_OBJECT(Prop_CS_Fertilizer, << 2476.5815, 4978.4917, 44.5734 >>)
zPED[i].actionFlag++
set_ped_action(i,action_roll_barrels)
ENDIF
ENDIF
BREAK
case pos_shooting_bottle_1
IF CREATE_GANG_PED(i,A_M_M_Hillbilly_02, << 2505.451, 4970.663, 43.548 >>, 49.5021,WEAPONTYPE_PISTOL,TRUE)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE)
zPED[i].intA = CREATE_SYNCHRONIZED_SCENE(<< 2505.451, 4970.663, 43.548 >>, << -0.000, -0.000, 88.725 >>)
SET_PED_VISUAL_FIELD_PROPERTIES(zPED[i].id,20,5,90,-90,60)
SET_AMBIENT_VOICE_NAME(zPED[i].id,"A_M_M_HillBilly_02_WHITE_MINI_02")
TASK_SYNCHRONIZED_SCENE (zPED[i].id, zPED[i].intA, "misschinese2_bank5", "peds_shootcans_a", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS)
SET_SYNCHRONIZED_SCENE_LOOPED(zPED[i].intA,TRUE)
FORCE_PED_AI_AND_ANIMATION_UPDATE(zPED[i].id)
set_ped_action(i,action_shoot_cans,0,zPED[i].intA)
add_event(events_release_bottle_shooting_anims)
ENDIF
BREAK
case pos_shooting_bottle_2
IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2505.451, 4970.663, 43.548 >>, 49.5021,WEAPONTYPE_PISTOL,TRUE)
zPED[i].intA = CREATE_SYNCHRONIZED_SCENE(<< 2507.879, 4970.188, 43.500 >>, << -0.000, -0.000, 93.42 >>)
SET_SYNCHRONIZED_SCENE_LOOPED(zPED[i].intA,TRUE)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE)
TASK_SYNCHRONIZED_SCENE (zPED[i].id, zPED[i].intA, "misschinese2_bank5", "peds_shootcans_b", INSTANT_BLEND_IN, SLOW_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS )
FORCE_PED_AI_AND_ANIMATION_UPDATE(zPED[i].id)
set_ped_action(i,action_shoot_cans,0,zPED[i].intA)
ENDIF
BREAK
ENDSWITCH
IF DOES_ENTITY_EXIST(zPED[i].id)
SET_ENTITY_LOAD_COLLISION_FLAG(zPED[i].id, TRUE)
SET_PED_TO_LOAD_COVER(zPED[i].id, TRUE)
ENDIF
BREAK
case role_guard_house
SWITCH zPED[i].placement
case pos_inside_right_window
IF missionStage < get_to_house
IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2458.5696, 4987.584, 45.8107 >>,233.8420, WEAPONTYPE_PISTOL,false)
set_ped_action(i,action_smoke)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,TRUE)
ENDIF
else
IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2454.6272, 4995.7261, 45.2011 >>,233.8420, WEAPONTYPE_PISTOL,false)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,TRUE)
set_ped_action(i,action_advance_on_hill)
ENDIF
endif
BREAK
case pos_inside_utility_room
if missionStage < get_to_house
If CREATE_GANG_PED(i,A_M_Y_MethHead_01, << 2442.9937, 4985.1636, 45.8103 >>, 303.409, WEAPONTYPE_MICROSMG,false)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,TRUE,TRUE)
set_ped_action(i,action_smoke)
ENDIF
else
IF CREATE_GANG_PED(i,A_M_Y_MethHead_01, << 2450.3706, 4995.1030, 44.9282 >>, 303.409, WEAPONTYPE_MICROSMG,false)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,TRUE,TRUE)
set_ped_action(i,action_advance_on_hill)
ENDIf
endif
BREAK
case pos_inside_seated1
If CREATE_GANG_PED(i,A_M_Y_MethHead_01, << 2433.124, 4967.804, 46.293 >>, 63.7673, WEAPONTYPE_PUMPSHOTGUN,false,TRUE)
set_ped_action(i,action_sit)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,TRUE)
ENDIF
break
case pos_inside_seated2
If CREATE_GANG_PED(i,A_M_M_Hillbilly_02, << 2432.091, 4968.833, 46.298 >>, 63.7673, WEAPONTYPE_PISTOL,false,TRUE)
set_ped_action(i,action_sit)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,TRUE)
ENDIF
break
case pos_inside_seated3
IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, <<2431.4849, 4964.7793, 45.8106>>, -137.500, WEAPONTYPE_PISTOL,false,TRUE)
set_ped_action(i,action_sit)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,TRUE)
ENDIf
break
case pos_inside_cards1
// If CREATE_GANG_PED(i,A_M_Y_MethHead_01, << 2439.697, 4960.996, 46.323 >>, 63.7673, WEAPONTYPE_PUMPSHOTGUN,false,TRUE)
If CREATE_GANG_PED(i,A_M_Y_MethHead_01, <<2440.3855, 4965.4287, 45.8106>>, 63.7673, WEAPONTYPE_PUMPSHOTGUN,false,TRUE)
set_ped_action(i,action_sit)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,true)
ENDIF
break
case pos_inside_cards2
//IF CREATE_GANG_PED(i,A_M_M_Hillbilly_02, << 2440.229, 4963.038, 46.323 >>, 63.7673, WEAPONTYPE_MICROSMG,false,TRUE)
IF CREATE_GANG_PED(i,A_M_M_Hillbilly_02, <<2439.7410, 4964.8896, 45.8106>>, 130.3988, WEAPONTYPE_MICROSMG,false,TRUE)
set_ped_action(i,action_sit)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,true)
ENDIf
break
case pos_inside_cards3
//IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2438.9434, 4962.6670, 45.8106 >>, 63.7673, WEAPONTYPE_PISTOL,false,TRUE)
IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, <<2438.7068, 4964.0938, 45.8106>>, 127.6523, WEAPONTYPE_PISTOL,false,TRUE)
SET_PED_ACCURACY(zped[i].id,5)
set_ped_action(i,action_sit)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,true)
ENDIf
break
case pos_inside_kitchen1
if missionStage < get_to_house
If CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2440.9287, 4976.9214, 45.8106 >>, -130.0, WEAPONTYPE_PISTOL,false,TRUE)
set_ped_action(i,action_chatting)
zPED[i].lastAction = action_chatting
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,FALSE)
ENDIF
else
If CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2452.0525, 4956.6890, 43.8957 >>, 230.7673, WEAPONTYPE_PISTOL,false,TRUE)
//set_ped_action(i,action_wait_on_player_advance_to_house)
set_ped_action(i,action_advance_on_hill)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,FALSE)
ENDIf
endif
break
case pos_inside_kitchen2
if missionStage < get_to_house
If CREATE_GANG_PED(i,A_M_M_Hillbilly_02, << 2442.9260, 4975.1484, 45.8106 >>, 46.7673, WEAPONTYPE_PISTOL,false,TRUE)
set_ped_action(i,action_chatting)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,FALSE)
zPED[i].lastAction = action_chatting
ENDIF
else
If CREATE_GANG_PED(i,A_M_M_Hillbilly_02, << 2449.3384, 4954.1270, 43.9299 >>, 46.7673, WEAPONTYPE_PISTOL,false,TRUE)
//set_ped_action(i,action_wait_on_player_advance_to_house)
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,FALSE)
set_ped_action(i,action_advance_on_hill)
ENDIf
endif
break
case pos_inside_bystairs1
IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2449.1138, 4981.9839, 45.8102 >>, 130.7673, WEAPONTYPE_MICROSMG,false,TRUE)
set_ped_action(i,action_chatting)
zPED[i].lastAction = action_hum
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,TRUE,FALSE)
ENDIf
break
case pos_inside_bystairs2
IF CREATE_GANG_PED(i,A_M_M_Hillbilly_02, << 2447.5527, 4980.5151, 45.8096 >>, 311.7673, WEAPONTYPE_MICROSMG,false,TRUE)
set_ped_action(i,action_chatting)
zPED[i].lastAction = action_chatting
ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,TRUE,FALSE)
ENDIF
break
//setting up skip to this point BUT now we don't need it.
ENDSWITCH
IF NOT IS_PED_INJURED(zPED[i].id)
//SET_PED_COMBAT_ATTRIBUTES(zPED[i].id,CA_WILL_SCAN_FOR_DEAD_PEDS,FALSE) //commented out because, why not?
SET_ENTITY_LOAD_COLLISION_FLAG(zPED[i].id, TRUE)
ENDIF
break
case role_innocent
SWITCH zPED[i].placement
case pos_innocent_chef
IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01,<< 2439.2576, 4976.2007, 45.8106 >>,116.8150,WEAPONTYPE_UNARMED,false,TRUE)
set_ped_action(i,action_cooking)
ENDIF
break
case pos_innocent_drugden
IF CREATE_GANG_PED(i,A_M_Y_METHHEAD_01,<< 2433.292, 4968.534, 42.348 >>,105.500,WEAPONTYPE_UNARMED,false,true)
set_ped_action(i,action_meth_lab)
ENDIF
BREAK
ENDSWITCH
BREAK
ENDSWITCH
if NOT IS_PED_INJURED(zPED[i].id) //removed check for only entity exists due to bug 1230243
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(zPED[i].id,TRUE)
pedReactionState[i].State = STATE_AMBIENT
i -= 1 //force loop to backtrack by one so ped will immediately run the ambient task
ENDIF
BREAK
CASE STATE_AMBIENT
IF pedReactionState[i].state <= STATE_AMBIENT
SWITCH zPED[i].action
case action_roll_barrels_at_front_of_house
switch zPED[i].actionFlag
case 0
cprintln(debug_trevor3,"RUN A")
IF DOES_ENTITY_EXIST(zPED[i].obj)
cprintln(debug_trevor3,"RUN B")
IF DOES_ENTITY_HAVE_DRAWABLE(zPED[i].obj)
AND DOES_ENTITY_HAVE_PHYSICS(zPED[i].obj)
ATTACH_ENTITY_TO_ENTITY(zPED[i].obj, zPED[i].id, GET_PED_BONE_INDEX(zPED[i].id, BONETAG_PH_L_HAND), <<0,0,0>>, <<0,0,0>>, TRUE, TRUE)
zPED[i].actionFlag++
ENDIF
IF DOES_ENTITY_EXIST(zPED[i].obj)
IF zPED[i].placement = pos_barrels_1
TASK_PLAY_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_B", INSTANT_BLEND_IN, -1, -1, AF_LOOPING)
ELSE
TASK_PLAY_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_A", INSTANT_BLEND_IN, -1, -1, AF_LOOPING)
ENDIF
SET_ENTITY_LOAD_COLLISION_FLAG(zPED[i].id,TRUE)
FORCE_PED_AI_AND_ANIMATION_UPDATE(zPED[i].id)
zPED[i].actionFlag++
ENDIF
ENDIF
BREAK
CASE 1
//start rolling barrels
BREAK
ENDSWITCH
break
case action_roll_barrels
IF zPED[i].actionFlag < 7
UPDATE_AI_PED_BLIP(zPED[i].id,zped[i].aiBlip,-1,null,true)
ENDIF
if IS_ENTITY_PLAYING_ANIM(zPED[i].id,"misschinese2_barrelroll", "barrel_roll_loop_B")
SET_ENTITY_ANIM_SPEED(zPED[i].id,"misschinese2_barrelroll", "barrel_roll_loop_B",1.4)
ENDIF
IF IS_ENTITY_PLAYING_ANIM(zPED[i].id,"misschinese2_barrelroll", "barrel_roll_loop_A")
SET_ENTITY_ANIM_SPEED(zPED[i].id,"misschinese2_barrelroll", "barrel_roll_loop_A",1.4)
ENDIF
IF DOES_ENTITY_EXIST(zPED[i].obj)
IF zPED[i].actionFlag > 2
AND zPED[i].actionFlag <= 6
IF IS_ENTITY_ATTACHED(zPED[i].obj)
// IF DOES_ENTITY_HAVE_DRAWABLE(zPED[i].obj)
// AND DOES_ENTITY_HAVE_PHYSICS(zPED[i].obj)
zPED[i].floatA = GET_HEADING_FROM_COORDS(GET_ENTITY_COORDS(zPED[i].id),zPED[i].vpos,TRUE) - GET_ENTITY_HEADING(zPED[i].id)
zPED[i].floatA = CLAMP(zPED[i].floatA/4.0,-15.0,15.0)
IF NOT IS_PED_RAGDOLL(zPED[i].id)
SET_ENTITY_HEADING(zPED[i].id,GET_ENTITY_HEADING(zPED[i].id)+(TIMESTEP()*zPED[i].floatA))
ENDIF
/*IF zPED[i].placement = pos_barrels_1
if not IS_ENTITY_PLAYING_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_B")
TASK_PLAY_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_B", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_LOOPING)
else
if not IS_ENTITY_ATTACHED_TO_ANY_PED(zPED[i].obj)
ATTACH_ENTITY_TO_ENTITY(zPED[i].obj, zPED[i].id, GET_PED_BONE_INDEX(zPED[i].id, BONETAG_PH_L_HAND), <<0,0,0>>, <<0,0,0>>, TRUE, FALSE)
endif
ENDIF
ELSE
if not IS_ENTITY_PLAYING_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_A")
TASK_PLAY_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_A", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_LOOPING)
else
if not IS_ENTITY_ATTACHED_TO_ANY_PED(zPED[i].obj)
ATTACH_ENTITY_TO_ENTITY(zPED[i].obj, zPED[i].id, GET_PED_BONE_INDEX(zPED[i].id, BONETAG_PH_L_HAND), <<0,0,0>>, <<0,0,0>>, TRUE, FALSE)
endif
ENDIF
ENDIF */
ENDIF
ENDIF
ENDIF
switch zPED[i].actionFlag
case 0
IF DOES_ENTITY_EXIST(zPED[i].obj)
IF DOES_ENTITY_HAVE_DRAWABLE(zPED[i].obj)
AND DOES_ENTITY_HAVE_PHYSICS(zPED[i].obj)
ATTACH_ENTITY_TO_ENTITY(zPED[i].obj, zPED[i].id, GET_PED_BONE_INDEX(zPED[i].id, BONETAG_PH_L_HAND), <<0,0,0>>, <<0,0,0>>, TRUE, TRUE)
add_event(events_detach_barrels_from_peds)
zPED[i].actionFlag++
ENDIF
ENDIF
FALLTHRU // 1999874
CASE 1
//start rolling barrels
IF DOES_ENTITY_EXIST(zPED[i].obj)
// if IS_POINT_VISIBLE(<< 2478.3201, 4982.3247, 44.8913 >>,3.0)
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zPED[i].id,<<2495.778564,5004.714844,43.873367>>) < 99.0
// IF zPED[i].placement = pos_barrels_1
// TASK_PLAY_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_B", NORMAL_BLEND_IN, -1, -1, AF_LOOPING)
// ELSE
// TASK_PLAY_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_A", NORMAL_BLEND_IN, -1, -1, AF_LOOPING)
// ENDIF
// 1999874
IF zPED[i].placement = pos_barrels_1
TASK_PLAY_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_B", INSTANT_BLEND_IN, -1, -1, AF_LOOPING)
ELSE
TASK_PLAY_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_A", INSTANT_BLEND_IN, -1, -1, AF_LOOPING)
ENDIF
FORCE_PED_AI_AND_ANIMATION_UPDATE(zPED[i].id)
SET_ENTITY_LOAD_COLLISION_FLAG(zPED[i].id,TRUE)
zPED[i].actionFlag++
ENDIF
// ENDIF
ENDIF
BREAK
case 2
if IS_ENTITY_PLAYING_ANIM(zPED[i].id,"misschinese2_barrelroll", "barrel_roll_loop_B")
OR IS_ENTITY_PLAYING_ANIM(zPED[i].id,"misschinese2_barrelroll", "barrel_roll_loop_A")
zPED[i].vpos = << 2466.9026, 4996.2539, 45.5443 >>
zPED[i].actionFlag++
ENDIF
BREAK
case 3
IF IS_ENTITY_AT_COORD(zPED[i].id, zPED[i].vpos, <<1.5,1.5,2>>)
zPED[i].vpos = << 2461.3323, 4998.9399, 45.3590 >>
zPED[i].actionFlag++
ENDIF
BREAK
case 4
IF IS_ENTITY_AT_COORD(zPED[i].id, zPED[i].vpos, <<1.5,1.5,2>>)
zPED[i].vpos = << 2455.9841, 4997.4043, 45.2645 >>
zPED[i].actionFlag++
ENDIF
BREAK
case 5
IF IS_ENTITY_AT_COORD(zPED[i].id, zPED[i].vpos, <<1.5,1.5,2>>)
if zPED[i].placement = pos_barrels_2
zPED[i].vpos = << 2452.0906, 4993.6738, 45.1404 >>
zPED[i].actionFlag++
ELSe
zPED[i].vpos = << 2454.0906, 4995.6738, 45.1404 >>
zPED[i].actionFlag++
endif
ENDIF
BREAK
case 6
IF IS_ENTITY_AT_COORD(zPED[i].id, zPED[i].vpos, <<1.5,1.5,2>>)
IF IS_ENTITY_PLAYING_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_B")
STOP_ANIM_TASK(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_B",-1.5)
ENDIF
IF IS_ENTITY_PLAYING_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_A")
STOP_ANIM_TASK(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_A",-1.5)
ENDIF
zPED[i].vpos = <<0,0,0>>
IF DOES_ENTITY_EXIST(zPED[i].obj)
DETACH_ENTITY(zPED[i].obj,FALSE,TRUE)
// if zPED[i].placement = pos_barrels_1
// SET_ENTITY_COORDS (zPED[i].obj, <<2451.871582,4992.753418,45.442631>>)
// ELSE
// SET_ENTITY_COORDS (zPED[i].obj,<<2452.400146,4993.188965,45.454922>>)
// ENDIF
// SET_ENTITY_ROTATION (zPED[i].obj, <<-0.000000,-0.000000,-119.748169>>)
// SET_OBJECT_AS_NO_LONGER_NEEDED(zPED[i].obj)
ENDIF
if IS_VEHICLE_VALID_AND_DRIVEABLE(BarrelVan)
if zPED[i].placement = pos_barrels_1
////cprintln(DEBUG_TREVOR3,"NEW MOVEMENT")
SET_PED_MOVEMENT_CLIPSET(zPED[i].id,"move_m@gangster@var_e")
TASK_ENTER_VEHICLE(zPED[i].id, BarrelVan, -1, VS_DRIVER, pedmove_walk)
set_ped_Action(get_ped_with_placement(pos_garden_chat_1),action_smoke)
set_ped_action(get_ped_with_placement(pos_garden_chat_2),action_get_in_car)
ELSE
SET_PED_MOVEMENT_CLIPSET(zPED[i].id,"move_m@gangster@var_f")
TASK_ENTER_VEHICLE(zPED[i].id, BarrelVan, -1, VS_FRONT_RIGHT, pedmove_walk)
ENDIF
ENDIF
zPED[i].actionFlag++
zPED[i].intA = 0
zPED[i].intB = 0
ENDIF
BREAK
case 7
LOOK_AT_SOMETHING(i)
if IS_PED_IN_ANY_VEHICLE(zPED[i].id)
SET_ENTITY_LOAD_COLLISION_FLAG(zPED[i].id,FALSE)
zPED[i].actionFlag++
ENDIF
BREAK
case 8
if IS_VEHICLE_VALID_AND_DRIVEABLE(BarrelVan)
if not IS_VEHICLE_SEAT_FREE(BarrelVan,VS_DRIVER)
if zPED[i].placement = pos_barrels_1
IF not IS_VEHICLE_SEAT_FREE(BarrelVan,VS_FRONT_RIGHT)
int iSeatPed
iSeatPed = get_ped_with_placement(pos_barrels_2)
IF iSeatPed >= 0
IF NOT IS_PED_INJURED(zPED[iSeatPed].id)
IF IS_PED_SITTING_IN_ANY_VEHICLE(zPED[iSeatPed].id)
startSeq()
TASK_VEHICLE_DRIVE_TO_COORD(null,BarrelVan,<<2367.6677, 5098.6445, 46.8185>>,12.0,DRIVINGSTYLE_NORMAL,BURRITO,DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS,5.0,5.0)
TASK_VEHICLE_DRIVE_WANDER(null,BarrelVan,19,DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS)
endseq(zPED[i].id)
set_condition_state(COND_BARREL_ROLL_PEDS_IN_VAN,TRUE)
zPED[i].actionFlag++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF not IS_VEHICLE_SEAT_FREE(BarrelVan,VS_FRONT_RIGHT)
if zPED[i].placement = pos_barrels_2
zPED[i].actionFlag++
ENDIF
ENDIF
ENDIF
BREAK
case 9
BREAK
ENDSWITCH
break
case action_balcony_guard_patrol
switch zPED[i].actionFlag
case 0
startSeq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 2459.6462, 4977.7354, 50.5678 >>,PEDMOVE_WALK)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 2456.2209, 4974.6851, 50.5678 >>,PEDMOVE_WALK)
TASK_PED_SLIDE_TO_COORD(null,<< 2456.2209, 4974.6851, 50.5678 >>,92.5678)
TASK_ACHIEVE_HEADING(null,92.5678)
endSeq(zPED[i].id)
zPED[i].actionFlag++
BREAK
case 1
if GET_SCRIPT_TASK_STATUS(zPED[i].id,script_task_perform_sequence) = FINISHED_TASK
set_ped_action(i,action_chatting,0,9000)
int itemp
itemp = enum_to_int(pos_balcony_doorway)
if itemp != -1
// zPED[i].intA = itemp
set_ped_action(itemp,action_chatting,0,9000)
// zPED[itemp].intA = i
ENDIF
ENDIF
BREAK
case 2
startSeq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 2450.4912, 4986.8296, 50.5677 >>,PEDMOVE_WALK)
TASK_ACHIEVE_HEADING(null,309.5567)
TASK_PAUSE(null,2000)
endSeq(zPED[i].id)
zPED[i].actionFlag++
BREAK
case 3
if GET_SCRIPT_TASK_STATUS(zPED[i].id,script_task_perform_sequence) = FINISHED_TASK
zPED[i].actionFlag = 0
ENDIF
BREAK
ENDSWITCH
BREAK
case action_balcony_guard_chat
IF GET_SCRIPT_TASK_STATUS(zPED[i].id,SCRIPT_TASK_START_SCENARIO_IN_PLACE) = FINISHED_TASK
AND zPED[i].actionFlag > 1
zPED[i].actionFlag = 0
ENDIF
switch zPED[i].actionFlag
case 0
SET_CURRENT_PED_WEAPON(zPED[i].id,WEAPONTYPE_UNARMED,TRUE)
TASK_ACHIEVE_HEADING(zPED[i].id,219,1500)
zPED[i].actionFlag++
BREAK
CASE 1
IF GET_SCRIPT_TASK_STATUS(zPED[i].id,SCRIPT_TASK_ACHIEVE_HEADING) = FINISHED_TASK
TASK_START_SCENARIO_IN_PLACE(zPED[i].id,"WORLD_HUMAN_GUARD_STAND_ARMY")
zPED[i].actionFlag++
ENDIF
BREAK
ENDSWITCH
BREAK
case action_hum
IF NOT IS_PED_INJURED(zPED[i].id)
IF zPED[i].role = role_guard_outside
OR GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),zPED[i].id) < 20.0
UPDATE_AI_PED_BLIP(zPED[i].id,zped[i].aiBlip,-1,null,true)
ENDIF
//make reaction if ped hears player.
IF zPED[i].actionFlag < 10
// IF CAN_PED_HEAR_PLAYER(player_id(),zPED[i].id)
// zPED[i].actionFlag = 10
// ENDIF
ENDIF
switch zPED[i].actionFlag
CASE 0
TASK_START_SCENARIO_IN_PLACE(zPED[i].id,"WORLD_HUMAN_AA_SMOKE",zPED[i].intA)
zPED[i].actionFlag++
BREAK
case 1
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),zPED[i].id) < 10.0
int iRand
iRand = GET_RANDOM_INT_IN_RANGE(0,3)
IF iRand = 0
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(zPED[i].id, "GENERIC_CURSE_MED", "A_M_M_Hillbilly_01_White_mini_03", "SPEECH_PARAMS_FORCE_SHOUTED")
ELIF iRand = 1
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(zPED[i].id, "GENERIC_INSULT_MED", "A_M_M_Hillbilly_01_White_mini_03", "SPEECH_PARAMS_FORCE_SHOUTED")
ELSE
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(zPED[i].id, "CHAT_STATE", "A_M_M_Hillbilly_01_White_mini_03", "SPEECH_PARAMS_FORCE_SHOUTED")
ENDIF
zPED[i].actionFlag++
zPED[i].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000,10000)
ENDIF
break
case 2
IF GET_GAME_TIMER() > zPED[i].intA
zPED[i].actionFlag=1
ENDIF
break
case 10 //reaction for hearing player
IF CREATE_CONVERSATION_EXTRA("CHI2_hear",8,zPED[i].id,"ONEILGUARD1")
zPED[i].actionFlag++
zPED[i].intA = GET_GAME_TIMER() + 1000
ENDIF
BREAK
CASE 11
IF GET_GAME_TIMER() > zPED[i].intA
TASK_TURN_PED_TO_FACE_COORD(zped[i].id,GET_ENTITY_COORDS(player_ped_id()),5000)
zPED[i].actionFlag++
zPED[i].intA = GET_GAME_TIMER() + 5000
ENDIF
BREAK
CASE 12
IF CAN_PED_HEAR_PLAYER(player_id(),zPED[i].id)
AND GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zped[i].id,<<2448.0027, 4982.3052, 45.8519>>) < 10.0
IF GET_GAME_TIMER() > zPED[i].intA - 3000
TASK_FOLLOW_NAV_MESH_TO_COORD(zped[i].id,GET_ENTITY_COORDS(player_ped_id()),pedmove_walk)
zPED[i].actionFlag=15
ENDIF
ELSE
IF GET_GAME_TIMER() > zPED[i].intA
IF CREATE_CONVERSATION_EXTRA("CHI2_nope",8,zPED[i].id,"ONEILGUARD1")
zPED[i].actionFlag++
ENDIF
ENDIF
ENDIF
BREAK
CASE 13
startSeq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 2449.1138, 4981.9839, 45.8102 >>,pedmove_walk)
TASK_ACHIEVE_HEADING(null,127.6328,3000)
endseq(zped[i].id)
zPED[i].intA = GET_GAME_TIMER() + 3000
zPED[i].actionFlag++
BREAK
CASE 14
IF GET_GAME_TIMER() > zPED[i].intA
OR GET_SCRIPT_TASK_STATUS(zped[i].id,SCRIPT_TASK_PERFORM_SEQUENCE) = FINISHED_TASK
zPED[i].actionFlag=0
ENDIF
BREAK
case 15
IF CREATE_CONVERSATION_EXTRA("CHI2_hear",8,zPED[i].id,"ONEILGUARD1")
zPED[i].actionFlag++
ENDIF
BREAK
CASE 16
IF GET_SCRIPT_TASK_STATUS(zped[i].id,SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD) = FINISHED_TASK
zPED[i].intA = GET_GAME_TIMER() + 3000
zPED[i].actionFlag=12
ENDIF
break
ENDSWITCH
endif
BREAK
case action_get_in_car
switch zPED[i].actionFlag
CASE 0
zPED[i].intA = GET_GAME_TIMER() + 3000
zPED[i].actionFlag++
BREAK
CASE 1
IF GET_GAME_TIMER() > zPED[i].intA
IF IS_VEHICLE_VALID_AND_DRIVEABLE(BarrelVan)
TASK_ENTER_VEHICLE(zped[i].id,BarrelVan,DEFAULT_TIME_BEFORE_WARP,VS_BACK_LEFT,pedmove_walk)
zPED[i].actionFlag++
zPED[i].intA = 0
zPED[i].intB = 0
ENDIF
ENDIF
BREAK
CASE 2
LOOK_AT_SOMETHING(i)
BREAK
ENDSWITCH
break
case action_chatting
//force blips on if peds set to be chatting and out side or within 20m
IF zPED[i].role = role_guard_outside
OR GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),zPED[i].id) < 20.0
UPDATE_AI_PED_BLIP(zPED[i].id,zped[i].aiBlip,-1,null,true)
ENDIF
switch zPED[i].actionFlag
CASE 0
WEAPON_TYPE wep
wep = WEAPONTYPE_UNARMED
IF GET_CURRENT_PED_WEAPON(zPED[i].id,wep)
TASK_SWAP_WEAPON(zPED[i].id,FALSE)
ENDIF
zPED[i].actionFlag++
BREAK
CASE 1
IF NOT GET_CURRENT_PED_WEAPON(zPED[i].id,wep)
startSeq()
If i = enum_to_int(pos_balcony_doorway)
if not is_ped_injured(zPED[enum_to_int(pos_balcony_veranda_walk)].id)
TASK_TURN_PED_TO_FACE_ENTITY(null,zPED[enum_to_int(pos_balcony_veranda_walk)].id,2000)
endif
elif i = enum_to_int(pos_balcony_veranda_walk)
if not is_ped_injured(zPED[enum_to_int(pos_balcony_doorway)].id)
TASK_TURN_PED_TO_FACE_ENTITY(null,zPED[enum_to_int(pos_balcony_doorway)].id,2000)
endif
elif i = enum_to_int(pos_garden_chat_1)
if not is_ped_injured(zPED[enum_to_int(pos_garden_chat_2)].id)
TASK_TURN_PED_TO_FACE_ENTITY(null,zPED[enum_to_int(pos_garden_chat_2)].id,2000)
endif
elif i = enum_to_int(pos_garden_chat_2)
if not is_ped_injured(zPED[enum_to_int(pos_garden_chat_1)].id)
TASK_TURN_PED_TO_FACE_ENTITY(null,zPED[enum_to_int(pos_garden_chat_1)].id,2000)
endif
endif
IF zPED[i].intA != 0
TASK_START_SCENARIO_IN_PLACE(null,"WORLD_HUMAN_HANG_OUT_STREET",zPED[i].intA)
ELSE
TASK_START_SCENARIO_IN_PLACE(null,"WORLD_HUMAN_HANG_OUT_STREET")
ENDIF
endseq(zPED[i].id)
zPED[i].actionFlag++
zPED[i].intB = GET_GAME_TIMER() + 15000
ENDIF
BREAK
case 2
if GET_SCRIPT_TASK_STATUS(zPED[i].id,SCRIPT_TASK_PERFORM_SEQUENCE) = FINISHED_TASK
OR GET_GAME_TIMER() > zPED[i].intB
CLEAR_PED_TASKS(zPED[i].id)
zPED[i].actionFlag++
ENDIF
BREAK
CASE 3
if GET_SCRIPT_TASK_STATUS(zPED[i].id,SCRIPT_TASK_PERFORM_SEQUENCE) = FINISHED_TASK
if zPED[i].lastAction = action_balcony_guard_patrol
TASK_SWAP_WEAPON(zPED[i].id,TRUE)
zPED[i].actionFlag++
ELSE
zPED[i].actionFlag++
ENDIF
ENDIf
BREAK
CASE 4
if GET_SCRIPT_TASK_STATUS(zPED[i].id,SCRIPT_TASK_SWAP_WEAPON) = FINISHED_TASK
if zPED[i].lastAction = action_balcony_guard_patrol
set_ped_action(i,zPED[i].lastAction,2)
ELSE
set_ped_action(i,zPED[i].lastAction)
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
case action_looking_about
switch zPED[i].actionFlag
case 0
TASK_START_SCENARIO_IN_PLACE(zPED[i].id,"WORLD_HUMAN_GUARD_STAND")
FORCE_PED_AI_AND_ANIMATION_UPDATE(zPED[i].id)
zPED[i].actionFlag++
break
ENDSWITCH
BREAK
case action_smoke
switch zPED[i].actionFlag
case 0
TASK_START_SCENARIO_IN_PLACE(zPED[i].id,"WORLD_HUMAN_AA_SMOKE")
FORCE_PED_AI_AND_ANIMATION_UPDATE(zPED[i].id)
//startSeq()
//TASK_PLAY_ANIM(NULL, "amb@smoking@standing@male@idle_b", "idle_d",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1)
//TASK_PLAY_ANIM(NULL, "amb@smoking@standing@male@idle_b", "idle_e",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1)
///TASK_PLAY_ANIM(NULL, "amb@smoking@standing@male@idle_b", "idle_f",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1)
//endSeq(zPED[i].id,TRUE)
zPED[i].actionFlag++
BREAK
case 1
IF GET_SCRIPT_TASK_STATUS(zPED[i].id,SCRIPT_TASK_START_SCENARIO_IN_PLACE) = FINISHED_TASK
zPED[i].actionFlag = 0
ENDIF
break
ENDSWITCH
BREAK
case action_binoculars
switch zPED[i].actionFlag
case 0
TASK_START_SCENARIO_IN_PLACE(zPED[i].id,"WORLD_HUMAN_BINOCULARS")
FORCE_PED_AI_AND_ANIMATION_UPDATE(zPED[i].id)
//startSeq()
//TASK_PLAY_ANIM(NULL, "amb@smoking@standing@male@idle_b", "idle_d",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1)
//TASK_PLAY_ANIM(NULL, "amb@smoking@standing@male@idle_b", "idle_e",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1)
///TASK_PLAY_ANIM(NULL, "amb@smoking@standing@male@idle_b", "idle_f",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1)
//endSeq(zPED[i].id,TRUE)
zPED[i].actionFlag++
BREAK
ENDSWITCH
break
case action_drinking
switch zPED[i].actionFlag
case 0
TASK_START_SCENARIO_IN_PLACE(zPED[i].id,"WORLD_HUMAN_DRINKING")
FORCE_PED_AI_AND_ANIMATION_UPDATE(zPED[i].id)
//startSeq()
//TASK_PLAY_ANIM(NULL, "amb@smoking@standing@male@idle_b", "idle_d",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1)
//TASK_PLAY_ANIM(NULL, "amb@smoking@standing@male@idle_b", "idle_e",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1)
///TASK_PLAY_ANIM(NULL, "amb@smoking@standing@male@idle_b", "idle_f",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1)
//endSeq(zPED[i].id,TRUE)
zPED[i].actionFlag++
BREAK
ENDSWITCH
break
case action_pissing
//make reaction if ped hears player.
IF zPED[i].actionFlag < 10
IF CAN_PED_HEAR_PLAYER(player_id(),zPED[i].id)
zPED[i].actionFlag = 10
ENDIF
ENDIF
switch zPED[i].actionFlag
case 0
REQUEST_ANIM_DICT("misscarsteal2peeing")
zPED[i].actionFlag++
zPED[i].intA = 0 //set to -1 later on to indicate than the pissing timer has finished
BREAK
CASE 1
IF HAS_ANIM_DICT_LOADED("misscarsteal2peeing")
TASK_START_SCENARIO_IN_PLACE(zPED[i].id,"WORLD_HUMAN_DRINKING",0,TRUE)
zPED[i].actionFlag++
ENDIF
BREAK
CASE 2
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),zPED[i].id) < 21.6
TASK_PLAY_ANIM(zPED[i].id,"misscarsteal2peeing","peeing_loop",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,25000,AF_LOOPING)
zPED[i].actionFlag++
zPED[i].intA = GET_GAME_TIMER() + 23000
ENDIF
BREAK
CASE 3
IF GET_GAME_TIMER() > zPED[i].intA
zPED[i].intA = -1
TASK_START_SCENARIO_IN_PLACE(zPED[i].id,"WORLD_HUMAN_DRINKING",0,TRUE)
zPED[i].actionFlag++
ENDIF
BREAK
/*
case 10 //reaction for hearing player
IF CREATE_CONVERSATION_EXTRA("CHI2_hear",8,zPED[i].id,"ONEILGUARD1")
zPED[i].actionFlag++
zPED[i].intB = GET_GAME_TIMER() + 1500
ENDIF
BREAK
CASE 11
IF GET_GAME_TIMER() > zPED[i].intB
zPED[i].actionFlag++
zPED[i].intB = GET_GAME_TIMER() + 1500
ENDIF
BREAK
CASE 12
IF GET_GAME_TIMER() < zPED[i].intB //keep guy pissing for 1.5 seconds then turn if he hears any more
IF CAN_PED_HEAR_PLAYER(player_id(),zPED[i].id)
TASK_TURN_PED_TO_FACE_COORD(zped[i].id,GET_ENTITY_COORDS(player_ped_id()),5000)
zPED[i].actionFlag++
zPED[i].intB = GET_GAME_TIMER() + 5000
ENDIF
ELSE
zPED[i].actionFlag=20
ENDIF
BREAK
CASE 13
IF CAN_PED_HEAR_PLAYER(player_id(),zPED[i].id)
AND GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zped[i].id,<<2528.2170, 4986.8818, 43.8933>>) < 10.0
IF GET_GAME_TIMER() > zPED[i].intB - 3000
TASK_FOLLOW_NAV_MESH_TO_COORD(zped[i].id,GET_ENTITY_COORDS(player_ped_id()),pedmove_walk)
zPED[i].actionFlag=15
ENDIF
ELSE
IF GET_GAME_TIMER() > zPED[i].intB
zPED[i].actionFlag=20
ENDIF
ENDIF
BREAK
case 15
IF CREATE_CONVERSATION_EXTRA("CHI2_hear",8,zPED[i].id,"ONEILGUARD1")
zPED[i].actionFlag++
ENDIF
BREAK
CASE 16
IF GET_SCRIPT_TASK_STATUS(zped[i].id,SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD) = FINISHED_TASK
vector v1,v2
v1 = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(zped[i].id,<<-5,0.5,0>>)
v2 = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(zped[i].id,<<5,0.5,0>>)
////cprintln(debug_Trevor3,v1," ",v2)
startSeq()
TASK_LOOK_AT_COORD(null,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(zped[i].id,<<-5,0.5,0>>),2500)
TASK_LOOK_AT_COORD(null,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(zped[i].id,<<5,0.5,0>>),2500)
endseq(zped[i].id)
zPED[i].intB = GET_GAME_TIMER() + 5000
zPED[i].actionFlag=13
ENDIF
break
case 20 //return to task
IF CREATE_CONVERSATION_EXTRA("CHI2_nope",8,zPED[i].id,"ONEILGUARD1")
zPED[i].actionFlag++
ENDIF
break
CASE 21
startSeq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<2528.2170, 4986.8818, 43.8933>>,pedmove_walk)
TASK_ACHIEVE_HEADING(null,28.6328,3000)
endseq(zped[i].id)
zPED[i].actionFlag++
BREAK
CASE 22
IF GET_SCRIPT_TASK_STATUS(zped[i].id,SCRIPT_TASK_PERFORM_SEQUENCE) = FINISHED_TASK
IF zPED[i].intA != -1
zPED[i].actionFlag = 3
ELIF zPED[i].intA = 0
zPED[i].actionFlag = 2
ELSE
zPED[i].actionFlag = 4
ENDIF
ENDIF
BREAK
*/
ENDSWITCH
break
CASE action_move_inside_house
switch zPED[i].actionFlag
case 0
startSeq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<2434.8911, 4973.8638, 50.5679>>,pedmove_walk)
TASK_START_SCENARIO_IN_PLACE(null,"WORLD_HUMAN_BINOCULARS")
//TASK_START_SCENARIO_IN_PLACE(null,"WORLD_HUMAN_HANG_OUT_STREET")
endSeq(zPED[i].id)
zPED[i].actionFlag++
BREAK
ENDSWITCH
BREAK
case action_sit
switch zPED[i].actionFlag
CASE 0
//INT sceneId
switch zPED[i].placement
case pos_inside_seated1
//sceneId = CREATE_SYNCHRONIZED_SCENE(<< 2433.124, 4967.804, 46.293 >>, 135.043 >>)
IF DOES_SCENARIO_EXIST_IN_AREA(<<2433.04, 4967.87, 46.28>>,0.8,FALSE)
TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[i].id,<<2433.04, 4967.87, 46.28>>, 0.8)
zPED[i].actionFlag++
ENDIF
break
case pos_inside_seated2
IF DOES_SCENARIO_EXIST_IN_AREA(<<2432.56, 4968.38, 46.27>>,0.8,FALSE)
TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[i].id,<<2432.56, 4968.38, 46.27>>, 0.8)
zPED[i].actionFlag++
ENDIF
break
case pos_inside_seated3
IF DOES_SCENARIO_EXIST_IN_AREA(<<2433.12, 4965.59, 46.27>>,0.8,FALSE)
TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[i].id,<<2433.12, 4965.59, 46.27>>, 0.8)
zPED[i].actionFlag++
ENDIF
break
case pos_inside_cards1
IF DOES_SCENARIO_EXIST_IN_AREA(<<2439.61, 4960.99, 46.27>>,0.4,FALSE)
TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[i].id,<< 2439.697, 4960.996, 46.28 >>,0.4)
////cprintln(debug_trevor3,"SEATED A")
zPED[i].actionFlag++
ENDIF
//TASK_START_SCENARIO_AT_POSITION(zped[i].id,"PROP_HUMAN_SEAT_CHAIR",<< 2439.697, 4960.996, 46.323 >>,-0.680)
break
case pos_inside_cards2
IF DOES_SCENARIO_EXIST_IN_AREA(<<2440.16, 4962.99, 46.27>>,0.4,FALSE)
TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[i].id,<<2440.16, 4962.99, 46.27>>,0.4) //<< 2440.229, 4963.038, 46.323 >>,0.4)
////cprintln(debug_trevor3,"SEATED B")
zPED[i].actionFlag++
ENDIF
//TASK_START_SCENARIO_AT_POSITION(zped[i].id,"PROP_HUMAN_SEAT_CHAIR",<< 2440.229, 4963.038, 46.323 >>, 134.070)
break
case pos_inside_cards3
IF DOES_SCENARIO_EXIST_IN_AREA(<<2438.23, 4962.25, 46.27>>,0.4,FALSE)
////cprintln(debug_trevor3,"SEATED C")
TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[i].id,<<2438.23, 4962.25, 46.27>>,0.4)//<< 2438.562, 4962.325, 46.323 >>,0.4)
zPED[i].actionFlag++
ENDIF
//TASK_START_SCENARIO_AT_POSITION(zped[i].id,"PROP_HUMAN_SEAT_CHAIR",<< 2438.562, 4962.325, 46.323 >>, -93.960)
break
endswitch
//TASK_SYNCHRONIZED_SCENE (zped[i].id, sceneId, "amb@sitchair@male@idle_a", "idle_b", INSTANT_BLEND_IN, INSTANT_BLEND_OUT )
break
case 1
cprintln(debug_Trevor3,"Check A")
IF GET_SCRIPT_TASK_STATUS(zped[i].id,SCRIPT_TASK_USE_NEAREST_SCENARIO_TO_POS) = FINISHED_TASK
zPED[i].actionFlag=0
ENDIF
break
ENDSWITCH
break
case action_cooking
// IF AWARENESS_STATE != UNAWARE
switch zPED[i].actionFlag
/*
CASE 0
startSeq()
TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,true)
TASK_ACHIEVE_HEADING( null,288.9182)
TASK_COWER(null,-1)
endseq(zPED[i].id)
zPED[i].actionFlag++
break*/
case 0
IF IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(),zPED[i].id)
OR (IS_POINT_VISIBLE(GET_ENTITY_COORDS(zPED[i].id),1.0)
AND IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2448.583252,4969.291992,45.185604>>, <<2439.538330,4978.061035,46.827618>>, 5.750000))
TASK_HANDS_UP(zPED[i].id,20000)
zPED[i].actionFlag=2
ENDIF
break
case 2
IF CREATE_CONVERSATION_EXTRA("WRK1",1,zPED[i].id,"CHIN2Goon2")
zPED[i].actionFlag++
ENDIF
break
case 3
IF IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(),zPED[i].id)
OR (IS_POINT_VISIBLE(GET_ENTITY_COORDS(zPED[i].id),1.0)
AND IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2448.583252,4969.291992,45.185604>>, <<2439.538330,4978.061035,46.827618>>, 5.750000))
IF CREATE_CONVERSATION_EXTRA("TRV1",1,player_ped_id(),"TREVOR")
zPED[i].actionFlag++
zPED[i].intA = get_Game_timer() + 2000
ENDIF
ELSE
zPED[i].actionFlag++
zPED[i].intA = get_Game_timer() + 2000
ENDIF
BREAK
case 4
if get_Game_timer() > zPED[i].intA
TASK_SMART_FLEE_PED(zPED[i].id,player_ped_id(),200,200000)
SET_PED_KEEP_TASK(zPED[i].id,true)
SET_PED_AS_NO_LONGER_NEEDED(zPED[i].id)
zPED[i].actionFlag++
endif
break
ENDSWITCH
//ENDIF
break
case action_meth_lab
IF NOT IS_PED_INJURED(zPED[i].id)
IF zPED[i].actionFlag < 8
IF HAS_PED_BEEN_DAMAGED_BY_WEAPON(zPED[i].id,WEAPONTYPE_INVALID,GENERALWEAPON_TYPE_ANYWEAPON)
IF NOT HAS_PED_GOT_WEAPON(zPED[i].id,WEAPONTYPE_INVALID,GENERALWEAPON_TYPE_ANYWEAPON)
GIVE_WEAPON_TO_PED(zPED[i].id,WEAPONTYPE_PISTOL,-1,false,true)
TASK_COMBAT_PED(zPED[i].id,player_ped_id())
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zPED[i].id,FALSE)
TASK_COMBAT_PED(zped[i].id,player_ped_id())
SET_PED_RELATIONSHIP_GROUP_HASH(zped[i].id,HASH_FOE_GROUP)
zPED[i].actionFlag = 999
ENDIF
ENDIF
ENDIF
ENDIF
switch zPED[i].actionFlag
case 0
REQUEST_ANIM_DICT("misschinese2_crystalmaze")
REQUEST_WEAPON_ASSET(WEAPONTYPE_SAWNOFFSHOTGUN)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zPED[i].id,TRUE)
SET_PED_RELATIONSHIP_GROUP_HASH(zped[i].id,HASH_FOE_GROUP)
zPED[i].actionFlag++
BREAK
CASE 1
IF HAS_ANIM_DICT_LOADED("misschinese2_crystalmaze")
AND HAS_WEAPON_ASSET_LOADED(WEAPONTYPE_SAWNOFFSHOTGUN)
IF NOT IS_PED_INJURED(zPED[i].id)
iSyncCower = CREATE_SYNCHRONIZED_SCENE(<< 2435.312, 4967.087, 41.350 >>, << -0.000, 0.000, 11.400 >>)
SET_SYNCHRONIZED_SCENE_LOOPED(iSyncCower,TRUE)
TASK_SYNCHRONIZED_SCENE (zPED[i].id,iSyncCower, "misschinese2_crystalmaze", "_cower_loop", INSTANT_BLEND_IN, NORMAL_BLEND_OUT )
IF NOT DOES_ENTITY_EXIST(objShotgun)
objShotgun = CREATE_WEAPON_OBJECT(WEAPONTYPE_SAWNOFFSHOTGUN,40,<<2433.59, 4969.70, 42.1854>>,true)
CPRINTLN(debug_trevor3,"Created shotgun")
SET_ENTITY_ROTATION(objShotgun,<<90,0,0>>)
ENDIF
TASK_LOOK_AT_ENTITY(zPED[i].id,player_ped_id(),-1)
zped[i].actionFlag++
ENDIF
ENDIF
BREAK
case 2
IF missionStage = snipe_from_hill
OR missionStage = get_to_house
OR missionstage = inside_house
IF IS_CONDITION_TRUE(COND_PLAYER_IN_METH_LAB)
zped[i].actionFlag++
ENDIF
ENDIF
IF missionstage > inside_house
zped[i].actionFlag++
ENDIF
break
case 3
iSyncStandUp = CREATE_SYNCHRONIZED_SCENE(<< 2435.312, 4967.087, 41.350 >>, << -0.000, 0.000, 11.400 >>)
TASK_SYNCHRONIZED_SCENE (zPED[i].id,iSyncStandUp, "misschinese2_crystalmaze", "_cower_to_stand", SLOW_BLEND_IN, NORMAL_BLEND_OUT )
TASK_LOOK_AT_ENTITY(zPED[i].id,PLAYER_PED_ID(),-1)
zped[i].actionFlag++
break
case 4
IF CREATE_CONVERSATION_EXTRA("CHI2_DALE",4,zPED[i].id,"ONEIL")
zped[i].actionFlag++
ENDIF
//in case the dialogue can't play for some reason...
IF (IS_SYNCHRONIZED_SCENE_RUNNING(iSyncStandUp) AND GET_SYNCHRONIZED_SCENE_PHASE(iSyncStandUp) > 0.98)
OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(iSyncStandUp)
zped[i].actionFlag = 5
ENDIF
break
case 5
IF (IS_SYNCHRONIZED_SCENE_RUNNING(iSyncStandUp) AND GET_SYNCHRONIZED_SCENE_PHASE(iSyncStandUp) > 0.98)
OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(iSyncStandUp)
iSyncStandingLoop = CREATE_SYNCHRONIZED_SCENE(<< 2435.312, 4967.087, 41.350 >>, << -0.000, 0.000, 11.400 >>)
SET_SYNCHRONIZED_SCENE_LOOPED(iSyncStandingLoop,TRUE)
TASK_SYNCHRONIZED_SCENE (zPED[i].id,iSyncStandingLoop, "misschinese2_crystalmaze", "_stand_loop", SLOW_BLEND_IN, NORMAL_BLEND_OUT )
zped[i].actionFlag++
zped[i].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(1000,2000)
ENDIF
break
case 6
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(iStandAlternative)
OR iStandAlternative = 0
IF GET_GAME_TIMER() > zped[i].intA
iStandAlternative = CREATE_SYNCHRONIZED_SCENE(<< 2435.312, 4967.087, 41.350 >>, << -0.000, 0.000, 11.400 >>)
IF GET_RANDOM_INT_IN_RANGE(0,2) = 1
TASK_SYNCHRONIZED_SCENE (zPED[i].id,iStandAlternative, "misschinese2_crystalmaze", "_stand_loop_a", SLOW_BLEND_IN, NORMAL_BLEND_OUT )
ELSE
TASK_SYNCHRONIZED_SCENE (zPED[i].id,iStandAlternative, "misschinese2_crystalmaze", "_stand_loop_b", SLOW_BLEND_IN, NORMAL_BLEND_OUT )
ENDIF
// zped[i].actionFlag++
// zped[i].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(2000,3000)
ENDIF
ENDIF
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(iSyncStandingLoop)
OR iSyncStandingLoop = 0
IF (IS_SYNCHRONIZED_SCENE_RUNNING(iStandAlternative) AND GET_SYNCHRONIZED_SCENE_PHASE(iStandAlternative) > 0.98)
OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(iStandAlternative)
iSyncStandingLoop = CREATE_SYNCHRONIZED_SCENE(<< 2435.312, 4967.087, 41.350 >>, << -0.000, 0.000, 11.400 >>)
SET_SYNCHRONIZED_SCENE_LOOPED(iSyncStandingLoop,TRUE)
TASK_SYNCHRONIZED_SCENE (zPED[i].id,iSyncStandingLoop, "misschinese2_crystalmaze", "_stand_loop", SLOW_BLEND_IN, NORMAL_BLEND_OUT )
zped[i].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(1000,2000)
ENDIF
ENDIF
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
OR (GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2430.09, 4965.93, 41.55>>) > 3.438 AND NOT IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2427.078857,4964.970703,41.811687>>, <<2432.588867,4959.331055,48.754795>>, 3.312500))
KILL_FACE_TO_FACE_CONVERSATION()
zped[i].actionFlag++
ENDIF
break
case 7
IF CREATE_CONVERSATION_EXTRA("CHI2_DALEG",4,zPED[i].id,"ONEIL")
zped[i].actionFlag++
ENDIF
break
case 8
iGrabGun = CREATE_SYNCHRONIZED_SCENE(<< 2435.312, 4967.087, 41.350 >>, << -0.000, 0.000, 11.400 >>)
TASK_SYNCHRONIZED_SCENE (zPED[i].id,iGrabGun, "misschinese2_crystalmaze", "_stand_to_aim", SLOW_BLEND_IN, NORMAL_BLEND_OUT )
GIVE_WEAPON_OBJECT_TO_PED(objShotgun,zPED[i].id)
zped[i].actionFlag++
break
case 9
IF (IS_SYNCHRONIZED_SCENE_RUNNING(iGrabGun) AND GET_SYNCHRONIZED_SCENE_PHASE(iGrabGun) > 0.98)
OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(iGrabGun)
SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET)
CLEAR_PED_TASKS(zPED[i].id)
TASK_AIM_GUN_AT_ENTITY(zPED[i].id,player_ped_id(),-1,TRUE)
zped[i].actionFlag++
ENDIF
break
CASE 10
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION_EXTRA("CHI2_DALEA",4,zPED[i].id,"ONEIL")
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zPED[i].id,FALSE)
TASK_COMBAT_PED(zped[i].id,player_ped_id())
zped[i].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(3000,4000)
zped[i].intB=0
zped[i].actionFlag++
ENDIF
ENDIF
BREAK
CASE 11
IF GET_GAME_TIMER() > zped[i].intA
IF zped[i].intB < 4
IF CREATE_CONVERSATION_EXTRA("CHI2_DALEA",4,zPED[i].id,"ONEIL")
zped[i].actionFlag++
zped[i].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(3000,4000)
zped[i].intB++
ENDIF
ENDIf
ENDIF
BREAK
case 999
IF CREATE_CONVERSATION_EXTRA("CHI2_DALEA",4,zPED[i].id,"ONEIL")
zped[i].actionFlag++
ENDIF
break
ENDSWITCH
/*
IF zPED[i].actionFlag != CLEANUP
int iCard3
iCard3 = get_ped_with_placement(pos_inside_cards3)
If iCard3 = -1
iCard3 = 0
ENDIF
IF GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) = GET_HASH_KEY("V_8_BasementRm")
AND IS_PED_INJURED(zped[iCard3].id)
OR get_ped_with_placement(pos_inside_cards3) = -1
IF zPED[i].actionFlag = 2
set_ped_action(get_ped_with_action(action_meth_lab),action_meth_lab_respond_to_player)
endif
endif
endif*/
break
case action_meth_lab_respond_to_player
IF NOT IS_PED_INJURED(zPED[i].id)
IF IS_BULLET_IN_AREA(GET_ENTITY_COORDS(zPED[i].id),2.0,TRUE)
zPED[i].actionFlag = 5
ENDIF
ENDIF
switch zPED[i].actionFlag
case 0
IF IS_THIS_PRINT_BEING_DISPLAYED("FRMFLC")
zPED[i].actionFlag++
ENDIF
BREAK
CASE 1
if CREATE_CONVERSATION_EXTRA("WRK2",1,zPED[i].id,"oneilcook",2,player_ped_id(),"trevor")
//////cprintln(DEBUG_TREVOR3,"REACT TO TREVOR : ",GET_GAME_TIMER())
zPED[i].actionFlag++
zPED[i].intA = get_game_timer() + 1300
endif
break
case 2
IF get_game_timer() > zPED[i].intA
TASK_HANDS_UP(zPED[i].id,20000)
zPED[i].actionFlag++
ENDIF
BREAK
CASE 3
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
zPED[i].actionFlag++
endif
break
case 4
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
//////cprintln(DEBUG_TREVOR3,"Meth worker flees cos conversatonn with player over")
set_ped_action(i,action_flee)
ENDIF
break
case 5 //player shoots near cook
TASK_SMART_FLEE_PED(zPED[i].id,player_ped_id(),50,1000)
zPED[i].actionFlag++
break
case 6
IF IS_CONV_ROOT_PLAYING("WRK2")
IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() = 1
OR GET_CURRENT_SCRIPTED_CONVERSATION_LINE() = 5
////cprintln(DEBUG_TREVOR3,"A")
PURGE_CONVERSATIONS(FALSE)
ELSE
////cprintln(DEBUG_TREVOR3,"B")
PURGE_CONVERSATIONS(TRUE)
ENDIF
ENDIF
set_ped_action(i,action_flee)
break
ENDSWITCH
break
case action_flee
switch zPED[i].actionFlag
CASE 0
startSeq()
TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,true)
TASK_SMART_FLEE_PED(null,player_ped_id(),200.0,999999)
task_cower(null,-1)
endseq(zPED[i].id)
SET_PED_KEEP_TASK(zPED[i].id,true)
SET_PED_AS_NO_LONGER_NEEDED(zPED[i].id)
IF DOES_BLIP_EXIST(zPED[i].blip)
REMOVE_BLIP(zPED[i].blip)
endif
zPED[i].actionFlag++
break
ENDSWITCH
break
case action_shoot_cans
/*
int iC
REPEAT COUNT_OF(oCans) iC
IF DOES_ENTITY_EXIST(oCans[iC])
IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(oCans[iC],player_ped_id())
set_ped_action(i,action_alerted)
ENDIF
ENDIF
ENDREPEAT
*/
IF bForceAnimTimeA = TRUE
IF IS_SYNCHRONIZED_SCENE_RUNNING(zPED[i].intA)
SET_SYNCHRONIZED_SCENE_PHASE(zPED[i].intA,0.69)
ENDIF
IF i = enum_to_int(pos_shooting_bottle_2)
bForceAnimTimeA = FALSE
ENDIF
ENDIF
IF bForceAnimTimeB = TRUE
IF IS_SYNCHRONIZED_SCENE_RUNNING(zPED[i].intA)
SET_SYNCHRONIZED_SCENE_PHASE(zPED[i].intA,0.0)
ENDIF
IF i = enum_to_int(pos_shooting_bottle_2)
bForceAnimTimeB = FALSE
ENDIF
zPED[i].actionFlag = 0
ENDIF
IF zPed[i].placement = pos_shooting_bottle_1
If IS_SYNCHRONIZED_SCENE_RUNNING(zPED[i].intA)
IF zPED[i].actionFlag = 0
IF NOT is_event_active(events_spawn_bottles)
OR missionStage = farm_cutscene
IF GET_SCRIPT_TASK_STATUS(zPED[i].id,SCRIPT_TASK_SYNCHRONIZED_SCENE) = PERFORMING_TASK
IF GET_SYNCHRONIZED_SCENE_PHASE(zPED[i].intA) > 0.024
AND GET_SYNCHRONIZED_SCENE_PHASE(zPED[i].intA) < 0.033
// IF IS_POINT_VISIBLE(GET_ENTITY_COORDS(zPED[i].id),5.0,100) //commented out because gun won't shoot if not on screen
// OR IS_POINT_VISIBLE(<<2494.2041, 4970.2690, 44.5201>>,5.0,100)
int iCanToHit
iCanToHit = 0
IF NOT IS_PED_INJURED(zPED[i].id)
weapon_type HisWep
HisWep = weapontype_unarmed
IF GET_CURRENT_PED_WEAPON(zPED[i].id,HisWep)
SET_PED_ACCURACY(zPED[i].id,100)
IF HisWep = WEAPONTYPE_PISTOL
IF FIND_CAN_TO_HIT(iCanToHit)
//IF HAS_PED_GOT_FIREARM(zPED[i].id)
cprintln(debug_trevor3,"BANG")
SET_AMMO_IN_CLIP(zPED[i].id,WEAPONTYPE_PISTOL,12)
SET_PED_SHOOTS_AT_COORD(zPED[i].id,GET_ENTITY_COORDS(oCans[iCanToHit]))
UPDATE_AI_PED_BLIP(zPED[i].id,zped[i].aiBlip,-1,null,true)
//SHOOT_SINGLE_BULLET_BETWEEN_COORDS(<< 2502.0161, 4970.4639, 44.9824 >>,GET_ENTITY_COORDS(oCans[iCanToHit]),5,TRUE,WEAPONTYPE_PISTOL,zped[i].id)
//ENDIF
zPED[i].actionFlag = 1
ELSE
//IF HAS_PED_GOT_FIREARM(zPED[i].id)
SET_AMMO_IN_CLIP(zPED[i].id,WEAPONTYPE_PISTOL,12)
SET_PED_SHOOTS_AT_COORD(zPED[i].id,<<2493.1,4971,44.9>>)
cprintln(debug_trevor3,"BANG B")
UPDATE_AI_PED_BLIP(zPED[i].id,zped[i].aiBlip,-1,null,true)
// SHOOT_SINGLE_BULLET_BETWEEN_COORDS(<< 2502.0161, 4970.4639, 44.9824 >>,GET_ENTITY_COORDS(oCans[0]),5,TRUE,WEAPONTYPE_PISTOL,zped[i].id)
zPED[i].actionFlag = 1
//ENDIF
ENDIF
ENDIf
ENDIF
ENDIF
//ELSE
// zPED[i].actionFlag = 1
//ENDIF
ENDIF
ENDIF
ENDIF
ELIF zPED[i].actionFlag = 1
IF GET_SYNCHRONIZED_SCENE_PHASE(zPED[i].intA) > 0.04
//check if any more cans in area
// int iAnyMore
// iAnyMore = 0
// IF NOT FIND_CAN_TO_HIT(iAnyMore)
// zPED[i].actionFlag = 2
// ELSE
zPED[i].actionFlag = 2
IF bBlockShooterDialogue = FALSE
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(zPED[i].id, "generic_cheer", "A_M_M_Hillbilly_01_White_mini_02", "SPEECH_PARAMS_FORCE_SHOUTED")
ENDIF
////cprintln(debug_Trevor3,"cheer")
//PLAY_PED_AMBIENT_SPEECH_NATIVE(zPED[i].id,"GENERIC_CHEER_01","SPEECH_PARAMS_FORCE_NORMAL")
// ENDIF
ENDIF
elif zPED[i].actionFlag = 2
IF GET_SYNCHRONIZED_SCENE_PHASE(zPED[i].intA) > 0.6
zPED[i].actionFlag = 0
endif
ENDIF
ENDIF
ENDIF
IF zPED[i].actionFlag = 3
IF GET_SCRIPT_TASK_STATUS(zPED[i].id,SCRIPT_TASK_GO_STRAIGHT_TO_COORD) = FINISHED_TASK
set_ped_action(i,action_chatting)
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
case STATE_SEEK
fallthru
case STATE_COMBAT
iF pedReactionState[i].scriptControlledCombat
// IF zPED[i].placement = pos_inside_right_window
// OR zPED[i].placement = pos_inside_kitchen1
// OR zPED[i].placement = pos_inside_kitchen2
// OR zPED[i].placement = pos_inside_utility_room
// ////cprintln(debug_trevor3," i = ",i," act flag = ",pedReactionState[i].actionFlag)
// endif
switch zPED[i].placement
case pos_inside_bystairs1
FALLTHRU
CAse pos_inside_bystairs2
Fallthru
case pos_inside_cards2
fallthru
case pos_inside_seated1
fallthru
case pos_inside_seated2
fallthru
case pos_inside_seated3
switch pedReactionState[i].actionFlag
case 1
// SET_PED_COMBAT_ATTRIBUTES(zPED[i].id,CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED,TRUE)
SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2431.704102,4961.619629,45.331356>>, <<2455.376465,4985.933594,48.685551>>, 13.562500)
TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID())
SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET)
SET_PED_COMBAT_ATTRIBUTES(zPED[i].id,CA_CAN_CHARGE,TRUE)
pedReactionState[i].actionFlag++
BREAK
ENDSWITCH
BREAK
case pos_inside_cards3 //in basement
switch pedReactionState[i].actionFlag
case 1
// SET_PED_COMBAT_ATTRIBUTES(zPED[i].id,CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED,TRUE)
SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2431.704102,4961.619629,45.331356>>, <<2455.376465,4985.933594,48.685551>>, 13.562500)
TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID())
SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET)
SET_PED_COMBAT_ATTRIBUTES(zPED[i].id,CA_CAN_CHARGE,TRUE)
pedReactionState[i].actionFlag++
// IF GET_SCRIPT_TASK_STATUS(zped[i].id,SCRIPT_TASK_START_SCENARIO_AT_POSITION) = PERFORMING_TASK
// CLEAR_PED_TASKS_IMMEDIATELY(zped[i].id)
// SET_ENTITY_COORDS(zped[i].id,<<2437.5564, 4962.0776, 45.8106>>)
/* SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2429.921631,4968.741211,40.597553>>, <<2433.283203,4972.045898,43.873558>>, 5.312500)
startSeq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 2432.2642, 4959.6460, 45.8131 >>,pedmove_walk)
TASK_GO_STRAIGHT_TO_COORD(null,<< 2427.9617, 4964.3984, 42.9630 >>,pedmove_walk)
TASK_COMBAT_PED(null,PLAYER_PED_ID())
endseq(zped[i].id)
SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET)
SET_PED_COMBAT_ATTRIBUTES(zPED[i].id,CA_CAN_CHARGE,TRUE)
pedReactionState[i].actionFlag++*/
// ENDIF
break
ENDSWITCH
break
case pos_inside_cards1 //behind sofa
switch pedReactionState[i].actionFlag
case 1
// IF GET_SCRIPT_TASK_STATUS(zped[i].id,SCRIPT_TASK_START_SCENARIO_AT_POSITION) = PERFORMING_TASK
// SET_PED_COMBAT_ATTRIBUTES(zPED[i].id,CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED,TRUE)
SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id,<<2437.981934,4959.020996,45.310574>>, <<2432.929932,4961.941406,48.692562>>, 3.187500)
TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID())
SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET)
pedReactionState[i].actionFlag++
// ENDIF
break
case 2
IF IS_CONDITION_TRUE(COND_TREVOR_NEAR_STAIRS)
REMOVE_PED_DEFENSIVE_AREA(zPED[i].id)
pedReactionState[i].actionFlag++
ENDIF
break
endswitch
BREAK
/*
switch pedReactionState[i].actionFlag
case 1
SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2447.756592,4981.289063,44.934750>>, <<2446.409180,4982.652832,48.309746>>, 2.375000)
TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID())
SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET)
pedReactionState[i].actionFlag++
break
case 2
IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2452.965820,4985.248047,45.591969>>, <<2448.317871,4990.217773,47.936779>>, 3.500000)
SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id,<<2443.332520,4981.746582,45.497406>>, <<2446.810059,4978.089844,48.271076>>, 2.687500)
pedReactionState[i].actionFlag++
ENDIF
IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2455.334473,4970.357422,45.498104>>, <<2451.068359,4974.604492,48.247440>>, 4.625000)
SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2448.737061,4975.442871,44.955708>>, <<2454.806641,4969.708008,48.413578>>, 2.375000)
pedReactionState[i].actionFlag++
ENDIF
BREAK
case 3
IF IS_ENTITY_IN_ANGLED_AREA( zped[i].id, <<2445.876709,4978.528809,44.948814>>, <<2443.826660,4980.604492,48.310200>>, 2.375000)
pedReactionState[i].actionFlag++
ENDIF
BREAK
CASE 4
SET_PED_MAX_MOVE_BLEND_RATIO(zped[i].id,PEDMOVE_WALK)
BREAK
ENDSWITCH
break
case pos_inside_bystairs2 //goes in to bathroom
switch pedReactionState[i].actionFlag
case 1
SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2449.954590,4977.896973,45.131977>>, <<2451.540039,4976.274902,48.247337>>, 1.875000)
TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID())
SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET)
pedReactionState[i].actionFlag++
break
case 2
IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2442.321289,4982.283203,45.497093>>, <<2446.957031,4977.627930,48.247665>>, 2.187500)
OR IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2455.334473,4970.357422,45.498104>>, <<2451.068359,4974.604492,48.247440>>, 4.625000)
SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id,<<2445.289063,4969.894043,43.998104>>, <<2448.634521,4973.506348,48.248104>>, 6.000000)
pedReactionState[i].actionFlag=3
ENDIF
IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2435.310791,4986.616699,44.128063>>, <<2423.034424,4974.076172,47.449322>>, 15.875000)
SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2438.158936,4980.710449,44.701595>>, <<2432.191406,4974.761719,48.014095>>, 3.437500)
pedReactionState[i].actionFlag=4
ENDIF
BREAK
case 4
IF NOT IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2435.310791,4986.616699,44.128063>>, <<2423.034424,4974.076172,47.449322>>, 15.875000)
SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2449.954590,4977.896973,45.131977>>, <<2451.540039,4976.274902,48.247337>>, 1.875000)
pedReactionState[i].actionFlag=2
ENDIF
break
ENDSWITCH
break
case pos_inside_cards2 //behind wall
switch pedReactionState[i].actionFlag
case 1
// IF GET_SCRIPT_TASK_STATUS(zped[i].id,SCRIPT_TASK_START_SCENARIO_AT_POSITION) = PERFORMING_TASK
SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2433.289307,4962.226563,44.939003>>, <<2434.555176,4960.793457,47.377789>>, 3.125000)
TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID())
SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET)
pedReactionState[i].actionFlag++
// ENDIF
break
endswitch
break
case pos_inside_seated1
switch pedReactionState[i].actionFlag
case 1
// CLEAR_PED_TASKS_IMMEDIATELY(zped[i].id)
// SET_ENTITY_COORDS(zped[i].id,<< 2431.0010, 4965.7803, 45.8106 >>)
SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2432.015137,4965.860840,44.935604>>, <<2433.186523,4964.659668,47.310604>>, 1.937500)
TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID())
SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET)
pedReactionState[i].actionFlag++
break
ENDSWITCH
break
case pos_inside_seated2
switch pedReactionState[i].actionFlag
case 1
// CLEAR_PED_TASKS_IMMEDIATELY(zped[i].id)
// SET_ENTITY_COORDS(zped[i].id,<< 2429.3208, 4967.4536, 45.8106 >>)
SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2449.900146,4971.117188,44.935604>>, <<2448.908447,4970.079590,48.310604>>, 1.25000)
SET_PED_DEFENSIVE_AREA_DIRECTION(zped[i].id,<< 2571.9097, 4981.6089, 50.6529 >>)
SET_PED_SHOULD_PLAY_IMMEDIATE_SCENARIO_EXIT(zPed[i].id)
TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID())
SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET)
pedReactionState[i].actionFlag++
break
case 2
IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2449.354248,4969.492676,44.748611>>, <<2454.811768,4964.115723,48.136688>>, 4.875000)
startSeq()
TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,TRUE)
TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY(null,<< 2448.1270, 4971.7231, 45.8106 >>,player_ped_id(),pedmove_run,true,0.2,0.4)
TASK_SHOOT_AT_ENTITY(null,PLAYER_PED_ID(),4000,FIRING_TYPE_CONTINUOUS)
TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,FALSE)
endSeq(zped[i].id)
pedReactionState[i].actionFlag++
ENDIF
break
case 3
IF GET_SCRIPT_TASK_STATUS(zped[i].id,script_TASK_PERFORM_SEQUENCE) = FINISHED_TASK
OR IS_PED_IN_COMBAT(zped[i].id)
SET_PED_ANGLED_DEFENSIVE_AREA(zped[i].id, <<2444.830566,4970.917480,44.935604>>, <<2447.187744,4969.138672,48.310604>>, 2.375000)
TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID())
pedReactionState[i].actionFlag++
ENDIF
break
ENDSWITCH
break
//case pos_inside_seated3
// switch pedReactionState[i].actionFlag
// case 0
// SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2436.569580,4960.183594,44.935604>>, <<2438.262451,4958.681152,46.827202>>, 1.625000)
// pedReactionState[i].actionFlag++
// break
// ENDSWITCH
//br/eak
case pos_inside_seated3
switch pedReactionState[i].actionFlag
case 1
// CLEAR_PED_TASKS_IMMEDIATELY(zped[i].id)
// set_entity_coords(zped[i].id,<< 2435.2253, 4965.4336, 45.8106 >>)
SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2439.414063,4972.592773,44.935604>>, <<2440.392090,4971.685547,47.373104>>, 1.625000)
TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID())
SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET)
pedReactionState[i].actionFlag++
break
case 2
//int iSeated
//iSeated = get_ped_with_placement(pos_inside_seated2)
IF (IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2441.253906,4979.531738,44.935604>>, <<2449.545654,4971.246094,47.373104>>, 1.812500)
AND IS_POINT_VISIBLE(<< 2443.1968, 4972.5894, 47.2911 >>,2.0))
OR IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2448.055420,4968.519531,44.935604>>, <<2439.032715,4978.250977,47.495625>>, 2.875000)
pedReactionState[i].actionFlag++
SET_PED_COMBAT_ATTRIBUTES(zped[i].id,CA_CLEAR_PRIMARY_DEFENSIVE_AREA_WHEN_REACHED,TRUE)
SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2442.379883,4973.768555,44.935604>>, <<2440.732910,4975.336426,47.310604>>, 1.625000)
ENDIF
break
endswitch
break*/
case pos_inside_right_window
FALLTHRU
case pos_inside_kitchen1
FALLTHRU
case pos_inside_kitchen2
FALLTHRU
case pos_inside_utility_room
switch pedReactionState[i].actionFlag
case 1
////cprintln(debug_trevor3,"peds inside to outside")
TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID())
SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET)
SET_PED_COMBAT_ATTRIBUTES(zPED[i].id,CA_CAN_CHARGE,TRUE)
//SET_PED_COMBAT_ATTRIBUTES(zPED[i].id,CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED,TRUE)
IF iStagger = 0
REMOVE_PED_DEFENSIVE_AREA(zped[i].id)
SET_PED_SPHERE_DEFENSIVE_AREA(zPED[i].id,<<2451.6775, 4954.2515, 44.9880>>,3.0)
iStagger++
pedReactionState[i].actionFlag++
ELSE
pedReactionState[i].actionFlag=GET_GAME_TIMER() + (iStagger * 4000)
iStagger++
ENDIF
zped[i].role = role_guard_outside
BREAK
CASE 2
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zPED[i].id,<<2451.6775, 4954.2515, 44.9880>>) < 3.0
REMOVE_PED_DEFENSIVE_AREA(zPED[i].id)
pedReactionState[i].actionFlag++
ENDIF
BREAK
CASE 3
BREAK
default
IF GET_GAME_TIMER() > pedReactionState[i].actionFlag
REMOVE_PED_DEFENSIVE_AREA(zped[i].id)
SET_PED_SPHERE_DEFENSIVE_AREA(zPED[i].id,<<2451.6775, 4954.2515, 44.9880>>,3.0)
pedReactionState[i].actionFlag=2
ENDIF
break
ENDSWITCH
BREAK
CASE pos_balcony_doorway
switch pedReactionState[i].actionFlag
case 1
SET_PED_ANGLED_DEFENSIVE_AREA( zPED[i].id, <<2453.083984,4969.896973,50.442852>>, <<2460.995605,4977.821777,53.380352>>, 2.937500)
TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID())
SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET)
pedReactionState[i].actionFlag++
BREAK
ENDSWITCH
BREAK
CASE pos_balcony_far_left
switch pedReactionState[i].actionFlag
case 1
SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2442.963379,4964.217285,50.442852>>, <<2449.250732,4970.534180,53.380352>>, 2.000000)
TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID())
SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET)
pedReactionState[i].actionFlag++
BREAK
ENDSWITCH
BREAK
CASE pos_balcony_veranda_walk
switch pedReactionState[i].actionFlag
case 1
////cprintln(DEBUG_TREVOR3,"pos_balcony_veranda_walk : DEF AREA SET")
SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2461.362305,4976.083984,50.442852>>, <<2448.743164,4988.774414,53.601433>>, 2.000000)
TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID())
SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET)
pedReactionState[i].actionFlag++
BREAK
ENDSWITCH
BREAK
ENDSWITCH
endif
break
ENDSWITCH
ENDIF
ENDREPEAT
ENDPROC
proc manage_peds()
IF missionStage >= farm_cutscene
IF missionStage > farm_cutscene
handlePedReactions(pedReactionState,vDefAreas,diHearPlayer,diHearPlayerAgain,diLostPlayer,diBullet,diSeePlayer,diFoundPlayer,diAlertAllSeen,diAlertAllUnSeen,diDeadBody,diExplosion)
ENDIF
//RESPOND_TO_ALERTS()
CONTROL_PED_ACTIONS()
ENDIF
endproc
// =================================================== MISSION PROGRES =====================================
proc STAGE_ENDS(mission_stage_flag nextStage = stage_null)
RESET_INSTRUCTIONS()
RESET_CONDITIONS()
RESET_ACTIONS()
RESET_DIALOGUE()
IF nextStage = stage_null
missionStage = int_to_enum(mission_stage_flag,ENUM_TO_INT(missionStage)+1)
ELSE
missionStage = nextStage
ENDIF
ENDPROC
proc stage_init()
SWITCH stageFlag
case 0
#if IS_DEBUG_BUILD
SkipMenuStruct[0].sTxtLabel = "init_mission"
SkipMenuStruct[1].sTxtLabel = "intro_cut (chinese_2_int)"
SkipMenuStruct[2].sTxtLabel = "drive_to_farm"
SkipMenuStruct[3].sTxtLabel = "farm_cutscene"
SkipMenuStruct[4].sTxtLabel = "snipe_from_hill"
SkipMenuStruct[5].sTxtLabel = "get_to_house"
SkipMenuStruct[6].sTxtLabel = "inside_house"
SkipMenuStruct[7].sTxtLabel = "do_petrol_trail"
SkipMenuStruct[8].sTxtLabel = "explosion_cut"
SkipMenuStruct[9].sTxtLabel = "end_mission"
#ENDIF
REQUEST_ADDITIONAL_TEXT("FRMCHSE", MISSION_TEXT_SLOT)
WHILE NOT HAS_ADDITIONAL_TEXT_LOADED(MISSION_TEXT_SLOT)
safewait(27)
ENDWHILE
ADD_PED_FOR_DIALOGUE(dChinese2, 0, PLAYER_PED_ID(), "TREVOR")
ADD_PED_FOR_DIALOGUE(dChinese2, 8, NULL, "PED8")
add_event(events_control_dispatch,TRUE)
add_event(events_fails,TRUE)
add_Event(events_never_do_locates_skips,TRUE)
// add_event(events_create_bullet_collision_on_house,TRUE)
INIT_REL_GROUPS()
STOP_FIRE_IN_RANGE(<< 2442.6897, 4970.3477, 46.3300 >>,30.0)
SET_WEATHER_TYPE_OVERTIME_PERSIST("EXTRASUNNY",120)
cellar_explosions[0] = <<2428.47, 4968.91, 42.11>>
cellar_explosions[1] = <<2431.14, 4972.06, 42.19>>
cellar_explosions[2] = <<2433.05, 4969.22, 42.26>>
cellar_explosions[3] = <<2437.71, 4968.13, 42.45>>
cellar_explosions[4] = <<2436.12, 4964.76, 42.19>>
cellar_explosions[5] = <<2432.13, 4961.97, 41.35>>
cellar_explosions[6] = <<2430.07, 4963.78, 41.35>>
cellar_explosions[7] = <<2434.00, 4963.04, 41.53>>
cellar_explosions[8] = <<2435.63721, 4969.69922, 42.19639>>
gasTrail[0].coord = <<2450.3765, 4955.8296, 43.9394>>
gasTrail[1].coord = <<2449.8149, 4956.6782, 43.9894>>
gasTrail[2].coord = <<2449.6060, 4957.6753, 44.0646>>
gasTrail[3].coord = <<2449.7390, 4958.7314, 44.1544>>
gasTrail[4].coord = <<2450.1409, 4959.7451, 44.2487>>
gasTrail[5].coord = <<2450.6851, 4960.5815, 44.3219>>
gasTrail[6].coord = <<2451.4924, 4961.3330, 44.4439>>
gasTrail[7].coord = <<2452.1736, 4962.0986, 44.5787>>
gasTrail[8].coord = <<2452.7166, 4962.9058, 44.9141>>
gasTrail[9].coord = <<2453.3499, 4963.5786, 45.3558>>
gasTrail[10].coord = <<2453.7539, 4964.5654, 45.5766>>
gasTrail[11].coord = <<2453.2256, 4965.5391, 45.5766>>
gasTrail[12].coord = <<2452.4724, 4966.2930, 45.5766>>
gasTrail[13].coord = <<2451.8691, 4967.1040, 45.5766>>
gasTrail[14].coord = <<2451.5291, 4968.0825, 45.5766>>
gasTrail[15].coord = <<2452.3271, 4968.7124, 45.5766>>
gasTrail[16].coord = <<2452.7961, 4969.6426, 45.8107>>
gasTrail[17].coord = <<2453.2607, 4970.5410, 45.8106>>
gasTrail[18].coord = <<2453.5803, 4971.5483, 45.8104>>
gasTrail[19].coord = <<2452.8076, 4972.2666, 45.8306>>
gasTrail[20].coord = <<2452.0493, 4972.9282, 45.8306>>
gasTrail[21].coord = <<2451.2407, 4973.5991, 45.8306>>
gasTrail[22].coord = <<2450.2480, 4973.8887, 45.8306>>
gasTrail[23].coord = <<2449.2073, 4973.7837, 45.8105>>
gasTrail[24].coord = <<2448.1724, 4973.8140, 45.8106>>
gasTrail[25].coord = <<2447.1526, 4973.7715, 45.8106>>
gasTrail[26].coord = <<2446.1379, 4973.7241, 45.8106>>
gasTrail[27].coord = <<2445.1282, 4973.6895, 45.8106>>
gasTrail[28].coord = <<2444.2559, 4973.0557, 45.8106>>
gasTrail[29].coord = <<2443.6694, 4972.1938, 45.8106>>
gasTrail[30].coord = <<2443.1191, 4971.2749, 45.8106>>
gasTrail[31].coord = <<2442.6606, 4970.3594, 45.8106>>
gasTrail[32].coord = <<2442.2668, 4969.4253, 45.8106>>
gasTrail[33].coord = <<2441.7085, 4968.5024, 45.8306>>
gasTrail[34].coord = <<2441.2637, 4967.5337, 45.8106>>
gasTrail[35].coord = <<2440.8728, 4966.5376, 45.8106>>
gasTrail[36].coord = <<2440.3818, 4965.6343, 45.8106>>
gasTrail[37].coord = <<2439.7104, 4964.8823, 45.8106>>
gasTrail[38].coord = <<2438.9329, 4964.1455, 45.8106>>
gasTrail[39].coord = <<2438.1663, 4963.5024, 45.8106>>
gasTrail[40].coord = <<2437.5554, 4962.7095, 45.8106>>
gasTrail[41].coord = <<2436.9011, 4961.9502, 45.8106>>
gasTrail[42].coord = <<2436.0752, 4961.2573, 45.8106>>
gasTrail[43].coord = <<2435.0796, 4961.0039, 45.8118>>
gasTrail[44].coord = <<2434.0664, 4960.7134, 45.8181>>
gasTrail[45].coord = <<2433.0449, 4960.5938, 45.8192>>
gasTrail[46].coord = <<2432.0647, 4960.2495, 45.8130>>
gasTrail[47].coord = <<2431.2329, 4960.8091, 45.8089>>
gasTrail[48].coord = <<2430.5747, 4961.5737, 45.5917>>
gasTrail[49].coord = <<2429.8887, 4962.0278, 44.9345>>
gasTrail[50].coord = <<2429.2600, 4962.5947, 44.2774>>
gasTrail[51].coord = <<2428.6914, 4963.2793, 43.6202>>
gasTrail[52].coord = <<2428.0730, 4963.9106, 42.9631>>
gasTrail[53].coord = <<2428.2388, 4964.9219, 42.9631>>
gasTrail[54].coord = <<2428.9614, 4965.4546, 42.3059>>
gasTrail[55].coord = <<2429.4500, 4966.2236, 41.8679>>
gasTrail[56].coord = <<2430.0728, 4966.8198, 41.3476>>
gasTrail[57].coord = <<2431.0969, 4967.0430, 41.3476>>
gasTrail[58].coord = <<2431.8904, 4966.4028, 41.3476>>
gasTrail[59].coord = <<2432.7676, 4965.9019, 41.3476>>
gasTrail[60].coord = <<2433.7761, 4965.6133, 41.3476>>
CutEvent[0].name = "Table Flames"
CutEvent[0].triggered = FALSE
CutEvent[1].name = "Table Explosion"
CutEvent[1].triggered = FALSE
CutEvent[2].name = "House Explosion"
CutEvent[2].triggered = FALSE
CutEvent[3].name = "Cam Shake"
CutEvent[3].triggered = FALSE
CutEvent[4].name = "Position player"
CutEvent[4].triggered = FALSE
CutEvent[5].name = "Slow mo"
CutEvent[5].triggered = FALSE
CutEvent[0].triggerShot = 2
CutEvent[0].triggerTime = 1000
CutEvent[1].triggerShot = 2
CutEvent[1].triggerTime = 4200
CutEvent[2].triggerShot = 3
CutEvent[2].triggerTime = 0
CutEvent[3].triggerShot = 3
CutEvent[3].triggerTime = 0
CutEvent[4].triggerShot = 3
CutEvent[4].triggerTime = 3200
CutEvent[5].triggerShot = 3
CutEvent[5].triggerTime = 700
camShot[0].camStartPos = << 2454.83, 4974.96, 46.4489 >>
camShot[0].camStartRot = << 2.9627, 0.077, 115.874 >>
camShot[0].camStartFOV = 39.702999
camShot[0].camEndPos = << 2454.41, 4974.93, 46.4691 >>
camShot[0].camEndRot = << 2.6238, 0.077, 114.001 >>
camShot[0].camEndFOV = 39.702999
camShot[0].camDuration = 2500
camShot[0].totalDuration = 2500
camShot[0].camPanType = 0
camShot[0].flameNode = 18
camShot[1].camStartPos = << 2435.41, 4960.94, 45.9568 >>
camShot[1].camStartRot = << 6.677, 0, -49.4853 >>
camShot[1].camStartFOV = 58.9114
camShot[1].camEndPos = << 2435.11, 4960.62, 45.9441 >>
camShot[1].camEndRot = << 6.3596, 0, -44.8248 >>
camShot[1].camEndFOV = 58.9114
camShot[1].camDuration = 3200
camShot[1].totalDuration = 1900
camShot[1].camPanType = 0
camShot[1].flameNode = 34
camShot[2].camStartPos = << 2434.77, 4969.56, 42.3654 >>
camShot[2].camStartRot = << 5.2773, -0.1511, 132.167 >>
camShot[2].camStartFOV = 35.1297
camShot[2].camEndPos = << 2434.66, 4969.68, 42.3657 >>
camShot[2].camEndRot = << 5.2773, -0.1511, 132.167 >>
camShot[2].camEndFOV = 35.1297
camShot[2].camDuration = 3500
camShot[2].totalDuration = 4500
camShot[2].camPanType = 3
camShot[2].flameNode = 49
camShot[3].camStartPos = << 2472.1, 4943.1, 45.3 >>
camShot[3].camStartRot = << 6, 0, 25.3 >>
camShot[3].camStartFOV = 33.1297
camShot[3].camEndPos = << 2472.1, 4943.1, 45.3 >>
camShot[3].camEndRot = << 5.5, 0, 35.6 >>
camShot[3].camEndFOV = 33.1297
camShot[3].camDuration = 3500
camShot[3].totalDuration = 3500
camShot[3].camPanType = 0
camShot[3].flameNode = -1
fShakeValue = 0.06
DISABLE_TAXI_HAILING(TRUE)
basementFlames[0] = <<2432.74, 4963.43, 41.35>>
basementFlames[1] = <<2432.02, 4962.61, 41.35>>
basementFlames[2] = <<2431.06, 4961.83, 41.35>>
basementFlames[3] = <<2430.84, 4961.08, 42.09>>
basementFlames[4] = <<2430.53, 4962.47, 42.00>>
basementFlames[5] = <<2430.81, 4961.10, 42.80>>
basementFlames[6] = <<2429.74, 4961.98, 42.32>>
basementFlames[7] = <<2433.50, 4966.76, 41.35>>
basementFlames[8] = <<2433.24, 4967.42, 41.35>>
basementFlames[9] = <<2433.15, 4967.43, 42.19>>
basementFlames[10] = <<2432.53, 4967.89, 42.40>>
basementFlames[11] = <<2432.48, 4969.07, 42.19>>
basementFlames[12] = <<2433.36, 4969.44, 42.31>>
//gasTrail[61].coord = <<2434.2747, 4965.7827, 41.3476>>
vDefAreas[0] = <<2552.692383,4978.566406,45.323090>>
vDefAreas[1] = <<2562.533691,5013.501953,47.463024>>
vDefAreas[2] = <<2553.884766,4945.660645,47.493053>>
vDefAreas[3] = <<2515.545166,4936.428223,42.883816>>
vDefAreas[4] = <<2497.318359,4967.817871,43.595566>>
vDefAreas[5] = <<2481.376221,4951.766113,43.998589>>
vDefAreas[6] = <<2522.044434,4956.371582,43.716049>>
vDefAreas[7] = <<2529.048096,4985.627441,43.868477>>
vDefAreas[8] = <<2502.503418,4987.245117,46.626690>>
vDefAreas[9] = <<2464.891113,4939.948730,44.256462>>
vDefAreas[10] = <<2447.160156,4940.272461,44.157661>>
vDefAreas[11] = <<2376.536865,4946.399414,41.772324>>
vDefAreas[12] = <<2395.231934,4995.629883,44.689095>>
vDefAreas[13] = <<2419.819092,4991.935547,45.369762>>
vDefAreas[14] = <<2436.319336,5011.725098,45.846943>>
vDefAreas[15] = <<2407.764648,5023.078613,47.770912>>
vDefAreas[16] = <<2479.015869,5028.829102,42.988060>>
vDefAreas[17] = <<2434.704102,5042.712891,45.344620>>
vDefAreas[18] = <<2513.929932,5039.332520,51.021214>>
vDefAreas[19] = <<2477.882324,4986.437012,44.995113>>
vDefAreas[20] = <<2450.058105,5011.857910,44.890316>>
RESET_REACT_ARRAY(pedReactionState,dChinese2,convBlock,12,<<2482.1965, 4975.3667, 44.7288>>,121,STATE_SPAWN)
setReactDialogue(diAlertAllSeen,"ONEILGUARD4",5,"ONEILGUARD1")
setReactDialogue(diAlertAllUnSeen,"ONEILGUARD4",5,"ONEILGUARD1")
setReactDialogue(diLostPlayer,"CHI2_nope",8,"ONEILGUARD1")
setReactDialogue(diSeePlayer,"SEETREVOR",3,"chin2goon1")
setReactDialogue(diHearPlayer,"CHI2_hear",8,"ONEILGUARD1")
setReactDialogue(diHearPlayerAgain,"CHI2_hear",8,"ONEILGUARD1")
setReactDialogue(diBullet,"ONEILGUARD3",5,"ONEILGUARD1")
setReactDialogue(diDeadBody,"ONEILGUARD2",5,"ONEILGUARD1")
setReactDialogue(diExplosion,"ONEILGUARD4",5,"ONEILGUARD1")
setReactDialogue(diFoundPlayer,"GOON2TREV",4,"CHIN2goon2")
add_event(events_reset_house_rayfire,true)
add_event(events_continuous_stats_tracking,true)
vehPlayer = GET_LAST_DRIVEN_VEHICLE()
#if IS_DEBUG_BUILD
GIVE_WEAPON_TO_PED(PLAYER_PED_ID(), WEAPONTYPE_PUMPSHOTGUN, 50, FALSE,FALSE)
GIVE_WEAPON_TO_PED(PLAYER_PED_ID(), WEAPONTYPE_SNIPERRIFLE, 30, FALSE,FALSE)
GIVE_WEAPON_COMPONENT_TO_PED(PLAYER_PED_ID(),WEAPONTYPE_SNIPERRIFLE,WEAPONCOMPONENT_AT_SCOPE_MAX)
GIVE_WEAPON_COMPONENT_TO_PED(PLAYER_PED_ID(),WEAPONTYPE_SNIPERRIFLE,WEAPONCOMPONENT_AT_AR_SUPP_02)
#endif
SET_VEHICLE_MODEL_IS_SUPPRESSED(bodhi2, TRUE)
ADD_RELATIONSHIP_GROUP("TAOGROUP",taorelgroup)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE,taorelgroup,RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE,RELGROUPHASH_PLAYER,taorelgroup)
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(NULL)
// INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(PLAYER_PED_ID(),CHI2_UNMARKED)
//INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(vehPlayer,CHI2_CAR_DAMAGE) //this needs to be directed at trev's truck
SET_SCENARIO_GROUP_ENABLED("Chinese2_Lunch",FALSE)
SET_SCENARIO_GROUP_ENABLED("CHINESE2_HILLBILLIES",false)
//INFORM_MISSION_STATS_OF_MISSION_START_CHINESE_TWO()
IF (Is_Replay_In_Progress())
int myStage
myStage = Get_Replay_Mid_Mission_Stage()
IF g_bShitskipAccepted = TRUE
myStage++
ENDIF
cprintln(DEBUG_TREVOR3,"replay in progress to stage : ",myStage)
switch myStage
case 0
do_skip(drive_to_farm,true)
DO_SCREEN_FADE_IN(1000)
BREAK
CASE 1
IF g_bShitskipAccepted = TRUE
do_skip(farm_cutscene,true)
ELSE
do_skip(snipe_from_hill,true)
DO_SCREEN_FADE_IN(1000)
ENDIF
BREAK
CASE 2
do_skip(inside_house,true)
DO_SCREEN_FADE_IN(1000)
BREAK
CASE 3
do_skip(do_petrol_trail,true)
DO_SCREEN_FADE_IN(1000)
BREAK
CASE 4
IF g_bShitskipAccepted = TRUE
do_skip(explosion_cut,true)
ELSE
do_skip(end_mission,TRUE)
DO_SCREEN_FADE_IN(1000)
ENDIF
BREAK
CASE 5
do_skip(missionPassed,true)
DO_SCREEN_FADE_IN(1000)
Mission_Passed()
BREAK
ENDSWITCH
elIF IS_REPEAT_PLAY_ACTIVE()
do_skip(intro_cut,false,true)
ELSE
STAGE_ENDS()
ENDIF
BREAK
ENDSWITCH
ENDPROC
int iFrameDelay
proc stage_intro_cut()
SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0)
SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0,0.0)
SWITCH stageFlag
case 0
vehPlayer = GET_PLAYERS_LAST_VEHICLE()
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE()
// AND ((DOES_ENTITY_EXIST(zPED[ped_oldMan1].id) AND DOES_ENTITY_EXIST(zPED[ped_oldMan2].id))
// OR (DOES_ENTITY_EXIST(g_sTriggerSceneAssets.ped[1]) AND DOES_ENTITY_EXIST(g_sTriggerSceneAssets.ped[2])))
REQUEST_ANIM_DICT("MISSChinese2_crystalMazeMCS1_IG")
request_model(IG_OLD_MAN2)
request_model(IG_OLD_MAN1A)
request_model(IG_JANET)
request_model(IG_TAOCHENG)
request_model(IG_TAOSTRANSLATOR)
REQUEST_ANIM_DICT("misschinese2_crystalmaze")
REQUEST_ANIM_DICT("missrampageintrooutro")
SET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID(),FALSE)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.ped[0])
zPED[ped_oldMan2].id = g_sTriggerSceneAssets.ped[2]
zPED[ped_oldMan1].id = g_sTriggerSceneAssets.ped[1]
zPED[ped_tao].id = g_sTriggerSceneAssets.ped[4]
zPED[ped_taos_translator].id = g_sTriggerSceneAssets.ped[3]
zPED[ped_janet].id = g_sTriggerSceneAssets.ped[0]
SET_ENTITY_AS_MISSION_ENTITY(zPED[ped_oldMan2].id,TRUE,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(zPED[ped_oldMan1].id,TRUE,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(zPED[ped_tao].id,TRUE,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(zPED[ped_taos_translator].id,TRUE,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(zPED[ped_janet].id,TRUE,TRUE)
IF NOT IS_PED_INJURED(zPED[ped_oldMan1].id) REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_oldMan1].id,"Old_Man1A",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,ig_OLD_MAN1A) ENDIF
IF NOT IS_PED_INJURED(zPED[ped_oldMan2].id) REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_oldMan2].id,"Old_Man2",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,IG_OLD_MAN2) ENDIF
IF NOT IS_PED_INJURED(zPED[ped_tao].id) REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_tao].id,"tao",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,IG_TAOCHENG) ENDIF
IF NOT IS_PED_INJURED(zPED[ped_taos_translator].id) REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_taos_translator].id,"Taos_Translator",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,IG_TAOSTRANSLATOR) ENDIF
IF NOT IS_PED_INJURED(zPED[ped_janet].id) REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_janet].id,"Janet",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,ig_JANET) ENDIF
ELSE
//Dan H: changed to just create then just animate
zped[ped_oldMan1].id = create_ped(PEDTYPE_MISSION,IG_OLD_MAN1A,<<1987.231,3052.741,46.214>>)
REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_oldMan1].id,"Old_Man1A",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,ig_OLD_MAN1A)
zped[ped_oldMan2].id = create_ped(PEDTYPE_MISSION,IG_OLD_MAN2,<<1987.231,3052.741,46.214>>)
REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_oldMan2].id,"Old_Man2",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,IG_OLD_MAN2)
IF DOES_ENTITY_EXIST(zPED[ped_tao].id) //this ped can be created during the skip
IF NOT IS_PED_INJURED(zPED[ped_tao].id)
REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_tao].id,"tao",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,IG_TAOCHENG)
ENDIF
ELSE
REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_tao].id,"tao",CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY,IG_TAOCHENG)
ENDIF
REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_taos_translator].id,"Taos_Translator",CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY,IG_TAOSTRANSLATOR)
zped[ped_janet].id = create_ped(PEDTYPE_MISSION,ig_JANET,<<1987.231,3052.741,46.214>>) //added for bug 1709355
REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_janet].id,"Janet",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,ig_JANET)
ENDIF
CLEAR_BLOCKED_PLAYER_FOR_LEAD_IN()
START_CUTSCENE()
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
CLEAR_AREA_OF_PEDS(<<1991.219604,3054.884277,50.277412>>,87)
CLEAR_AREA_OF_PROJECTILES(<<1991.219604,3054.884277,50.277412>>,87)
ADD_SCENARIO_BLOCKING_AREA(<<1991.219604,3054.884277,50.277412>>-<<40,40,40.000000>>,<<1991.219604,3054.884277,50.277412>>+<<40,40,40.000000>>)
SET_PED_NON_CREATION_AREA(<<1991.219604,3054.884277,50.277412>>-<<40,40,40>>,<<1991.219604,3054.884277,50.277412>>+<<40,40,0.000000>>)
add_event(events_resolve_vehicles_at_start)
add_event(events_animate_bar)
iFrameDelay = 0
stageFlag++
ENDIF
BREAK
case 1
IF IS_CUTSCENE_PLAYING()
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(1000)
ENDIF
stageFlag++
ENDIF
BREAK
CASE 2
IF IS_CUTSCENE_PLAYING()
If iFrameDelay = 0
MISSION_FLOW_RELEASE_TRIGGER_SCENE_ASSETS(SP_MISSION_CHINESE_2)
iFrameDelay++
ENDIF
ENDIF
IF NOT DOES_ENTITY_EXIST(zped[ped_oldMan1].id)
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Old_Man1A")
zped[ped_oldMan1].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Old_Man1A"))
ENDIF
ENDIF
IF NOT DOES_ENTITY_EXIST(zped[ped_oldMan2].id)
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Old_Man2")
zped[ped_oldMan2].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Old_Man2"))
ENDIF
ENDIF
IF NOT DOES_ENTITY_EXIST(zped[ped_tao].id)
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("tao")
zped[ped_tao].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("tao"))
ENDIF
ENDIF
IF NOT DOES_ENTITY_EXIST(zped[ped_taos_translator].id)
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Taos_Translator")
zped[ped_taos_translator].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Taos_Translator"))
ENDIF
ENDIF
IF NOT DOES_ENTITY_EXIST(zped[ped_janet].id)
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Janet")
zped[ped_janet].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Janet"))
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("tao")
IF NOT IS_PED_INJURED(zped[ped_tao].id)
SET_PED_RELATIONSHIP_GROUP_HASH(zped[ped_tao].id,taorelgroup)
SET_PED_CAN_BE_TARGETTED(zped[ped_tao].id,FALSE)
int iTempSync
iTempSync = CREATE_SYNCHRONIZED_SCENE(<< 1991.988, 3054.510, 46.215 >>, << -0.000, 0.000, 50.760 >>)
TASK_SYNCHRONIZED_SCENE (zped[ped_tao].id, iTempSync, "misschinese2_crystalmaze", "2int_Loop_A_TaoCheng", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS, RBF_PLAYER_IMPACT )
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Taos_Translator")
IF NOT IS_PED_INJURED(zped[ped_taos_translator].id)
SET_PED_RELATIONSHIP_GROUP_HASH(zped[ped_taos_translator].id,taorelgroup)
SET_PED_CAN_BE_TARGETTED(zped[ped_taos_translator].id,FALSE)
int iTempSyncB
iTempSyncB = CREATE_SYNCHRONIZED_SCENE(<< 1991.988, 3054.510, 46.215 >>, << -0.000, 0.000, 50.760 >>)
TASK_SYNCHRONIZED_SCENE (zped[ped_taos_translator].id, iTempSyncB, "misschinese2_crystalmaze", "2int_Loop_A_taotranslator", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS, RBF_PLAYER_IMPACT )
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevor")
vehPlayer = GET_PLAYERS_LAST_VEHICLE()
//cprintln(debug_Trevor3,"EXIT PLAYER")
IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer)
AND GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(vehPlayer,<<1995.2018, 3062.1565, 46.0491>>) < 5.0
//IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer)
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehPlayer) //1267215
FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID())
REMOVE_VEHICLE_ASSET(get_entity_model(vehPlayer))
//ENDIF
// ////cprintln(debug_trevor3,"AH?")
ELSE
IF HAS_ANIM_DICT_LOADED("missrampageintrooutro")
SET_ENTITY_COORDS(player_ped_id(),<<1992.1351, 3057.4666, 46.0600>>)
SET_ENTITY_HEADING(player_ped_id(),325.4678)
TASK_PLAY_ANIM(player_ped_id(),"missrampageintrooutro","trvram_6_1h_run_outro",instant_blend_in,SLOW_blend_out,-1,af_default,0.1)
FORCE_PED_AI_AND_ANIMATION_UPDATE(player_ped_id(),TRUE)
ELSE
SET_ENTITY_COORDS(player_ped_id(),<<1992.9188, 3057.9063, 46.0567>>)
SET_ENTITY_HEADING(player_ped_id(),337.2537)
FORCE_PED_MOTION_STATE(player_ped_id(),MS_ON_FOOT_WALK,FALSE,FAUS_DEFAULT)
SET_PED_MIN_MOVE_BLEND_RATIO(player_ped_id(),PEDMOVE_WALK)
FORCE_PED_AI_AND_ANIMATION_UPDATE(player_ped_id(),TRUE)
ENDIF
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_CAMERA()
RESET_ADAPTATION()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7)
IF IS_SCREEN_FADED_OUT()
LOAD_SCENE(<<1992.1351, 3057.4666, 46.0600>>)
ENDIF
REPLAY_STOP_EVENT()
REPLAY_RECORD_BACK_FOR_TIME(0.0, 7.0)
STAGE_ENDS()
ENDIF
BREAK
ENDSWITCH
ENDPROC
proc stage_drive_to_farm()
// float fAng
// vector vplayer
// vplayer = GET_ENTITY_COORDS(player_ped_id())
// fAng = GET_HEADING_FROM_COORDS(<<2458.222656,4986.041504,49.052414>>,vPLayer,true)
// IF fAng > 180 fAng -= 360 endif
// //cprintln(debug_Trevor3,"ang: ",fAng," rad: ",DEG_TO_RAD(fAng))
checkConditions(COND_GO_TO_FARM_START,COND_GO_TO_FARM_END)
ACTION(0,ACT_AUDIO_SCENE_DRIVE_TO_FARMHOUSE,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_ANY_CAR)
ACTION(1,ACT_REMOVE_BAR_PEDS)
ACTION(2,ACT_ANIMATE_CHINESE)
action(3,ACT_RADIO_SOUND)
action(4,ACT_WHIMPERING)
ACTION(5,ACT_LOAD_FRUSTROM)
ACTION(6,ACT_MAKE_BAR_PEDS_FLEE)
ACTION(7,ACT_BAR_PEDS_LOOK_AT_TREVOR)
ACTION(8,ACT_SLOW_DOWN_PLAYER_IN_CHOPPER)
ACTION(9,ACT_BLEND_OUT_OF_TREVOR_RAGE)
ACTION(10,ACT_LOAD_SOUNDSET)
INSTRUCTIONS(0,INS_SPECIAL_ABILITY_BOOST,cIF,COND_INITIAL_INSTRUCTIONS_PLAYED)
fail(fail_kill_cheng_or_translator)
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2458.222656,4986.041504,49.052414>>,FALSE) < 107.9
OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2374.441406,4930.563965,34.737843>>, <<2478.099121,5077.488281,60.632458>>, 185.000000,false,false)
OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2396.725830,4887.434082,33.853291>>, <<2510.539551,5003.355957,58.011837>>, 158.250000,false,false)
IF DOES_BLIP_EXIST(locatesData.LocationBlip)
SET_BLIP_ROUTE(locatesData.GPSBlipID, FALSE)
ENDIF
STAGE_ENDS()
ELSE
SWITCH stageFlag
case 0
add_event(events_trevor_phonecall)
add_Event(events_trevor_rants)
add_event(events_give_sniper)
add_event(events_spawn_house)
set_event_flag(events_spawn_house,-20)
SET_WANTED_LEVEL_MULTIPLIER(0.0)
SET_MAX_WANTED_LEVEL(0)
stageFlag++
BREAK
case 1
if IS_PLAYER_AT_LOCATION_ANY_MEANS(locatesData,<< 2608.1511, 4949.7539, 39.4 >>,<<9,9,LOCATE_SIZE_HEIGHT>>,TRUE,"FRMCHSE_1",TRUE)
REPLAY_RECORD_BACK_FOR_TIME(6.0, 6.0)
stageFlag++
CLEAR_MISSION_LOCATE_STUFF(locatesData,true)
kill_event(events_trevor_rants)
IF IS_AUDIO_SCENE_ACTIVE("CHI_2_DRIVE_TO_FARMHOUSE")
STOP_AUDIO_SCENE("CHI_2_DRIVE_TO_FARMHOUSE")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CHI_2_DRIVE_ROCK_RADIO")
STOP_AUDIO_SCENE("CHI_2_DRIVE_ROCK_RADIO")
ENDIF
endif
break
case 2
IF IS_PED_IN_ANY_VEHICLE(player_ped_id())
VEHICLE_INDEX vehTemp
vehTemp = GET_VEHICLE_PED_IS_USING(player_ped_id())
IF BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehTemp,10.0,2)
IF GET_EVENT_FLAG(events_spawn_house) > 2
// SET_MISSION_VEHICLE_GEN_VEHICLE(vehTemp,<<0,0,0>>, 285.2500 )
stageFlag++
ENDIF
endif
ELSe
stageFlag++
ENDIF
break
case 3
if IS_PLAYER_AT_LOCATION_ANY_MEANS(locatesData,<<2573.6301, 4983.6768, 50.6978>>,<<12,12,LOCATE_SIZE_HEIGHT>>,FALSE,"FRMCHSE_5",TRUE)
IF IS_AUDIO_SCENE_ACTIVE("CHI_2_DRIVE_ROCK_RADIO")
STOP_AUDIO_SCENE("CHI_2_DRIVE_ROCK_RADIO")
ENDIF
REPLAY_RECORD_BACK_FOR_TIME(5.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
STAGE_ENDS()
endif
IF DOES_BLIP_EXIST(locatesData.LocationBlip)
SET_BLIP_ROUTE(locatesData.GPSBlipID, FALSE)
ENDIF
break
ENDSWITCH
ENDIF
ENDPROC
proc stage_farm_cutscene()
//ACTION(5,ACT_LOAD_FRUSTROM)
SET_VEHICLE_GENERATOR_AREA_OF_INTEREST(<<2004.4471, 3076.8066, 46.6069>>,10)
SET_CAR_GENERATORS_CAN_UPDATE_DURING_CUTSCENE(true)
IF IS_CUTSCENE_SKIP_BUTTON_JUST_PRESSED() and stageFlag > 0 and stageflag < 7 and get_game_timer() > safeSkipTime
//SET_ENTITY_COORDS(PLAYER_PED_ID(), << 2570.1631, 4980.8589, 50.5336 >>)
stageFlag = 10
cutChangeTime = 0
bCutsceneWasSkipped = true
ENDIF
IF stageFlag < 10
IF IS_SCREEN_FADED_OUT()
AND NOT IS_SCREEN_FADING_IN()
DO_SCREEN_FADE_IN(1000)
ENDIF
ENDIF
IF bcutscenePLaying
SET_SRL_TIME(to_float(timera()))
ENDIF
HIDE_HUD_AND_RADAR_THIS_FRAME()
SWITCH stageFlag
case 0
IF IS_SRL_LOADED()
REQUEST_CUTSCENE("CHI_2_MCS_5")
bBlockShooterDialogue = TRUE
bCutsceneWasSkipped = FALSE
SET_SRL_READAHEAD_TIMES(5, 5, 5, 5)
BEGIN_SRL()
CASCADE_SHADOWS_ENABLE_ENTITY_TRACKER(FALSE)
bPlayerOnHill = FALSE
bcutscenePLaying = TRUE
//for recording, comment out from here...
vector vPlayer
vPLayer = get_entity_coords(player_ped_id())
float fAng
fAng = GET_HEADING_FROM_COORDS(<<2458.222656,4986.041504,49.052414>>,vPLayer,true)
IF fAng > 180 fAng -= 360 endif
vehicle_index vehTemp
IF IS_PED_IN_ANY_VEHICLE(player_ped_id())
vehTemp = GET_VEHICLE_PED_IS_IN(player_ped_id())
ENDIF
IF (IS_VEHICLE_DRIVEABLE(vehTemp) AND IS_THIS_MODEL_A_HELI(get_entity_model(vehTemp)) AND IS_ENTITY_IN_AIR(vehTemp))
OR (IS_VEHICLE_DRIVEABLE(vehTemp) AND IS_THIS_MODEL_A_PLANE(get_entity_model(vehTemp)) AND IS_ENTITY_IN_AIR(vehTemp))
//in air
IF fAng < RAD_TO_DEG(-2.5)
AND fAng > RAD_TO_DEG(0.5)
stageFlag = 6 //fly south to north
settimera(30000)
cprintln(debug_Trevor3,"set time b:",timera())
SET_SRL_TIME(30000.0)
cutChangeTime = 36000
ELSE
stageFlag = 7
settimera(36000)
cprintln(debug_Trevor3,"set time c:",timera())
SET_SRL_TIME(36000.0)
cutChangeTime = 42000
ENDIF
ELSE
IF DOES_ENTITY_EXIST(vehTemp)
IF IS_VEHICLE_DRIVEABLE(vehTemp)
IF NOT (IS_THIS_MODEL_A_HELI(get_entity_model(vehTemp)) AND IS_ENTITY_IN_AIR(vehTemp))
AND NOT (IS_THIS_MODEL_A_PLANE(get_entity_model(vehTemp)) AND IS_ENTITY_IN_AIR(vehTemp))
SET_VEHICLE_ON_GROUND_PROPERLY(vehTemp)
ENDIF
ENDIF
ENDIF
//on hill
IF fAng < RAD_TO_DEG(-1.33)
AND fAng > RAD_TO_DEG(-1.92)
stageFlag = 1 //hill shots
settimera(0)
cprintln(debug_Trevor3,"set time d:",timera())
SET_SRL_TIME(0.0)
cutChangeTime = 6000
ELSE
IF fAng < RAD_TO_DEG(0.96)
AND fAng > RAD_TO_DEG(-1.33)
stageFlag = 2 //back right
settimera(6000)
cprintln(debug_Trevor3,"set time e:",timera())
SET_SRL_TIME(6000.0)
cutChangeTime = 12000
ELSE
IF fAng < RAD_TO_DEG(2.29)
AND fAng > RAD_TO_DEG(0.96)
stageFlag = 3 //orchard
settimera(12000)
cprintln(debug_Trevor3,"set time f:",timera())
SET_SRL_TIME(12000.0)
cutChangeTime = 18000
ELSE
IF fAng < RAD_TO_DEG(-2.81)
OR fAng > RAD_TO_DEG(2.29)
stageFlag = 4 //left
settimera(18000)
cprintln(debug_Trevor3,"set time g:",timera())
SET_SRL_TIME(18000.0)
cutChangeTime = 24000
ELSE
//front
//-2.81
//-1.92
settimera(24000)
cprintln(debug_Trevor3,"set time h:",timera())
SET_SRL_TIME(24000.0)
cutChangeTime = 30000
stageFlag = 5
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//to here
bForceAnimTimeA = TRUE
DESTROY_ALL_CAMS()
CLEAR_MISSION_LOCATE_STUFF(locatesData,true)
IF IS_PED_IN_ANY_VEHICLE(player_ped_id())
cutscene_player_vehicle = GET_VEHICLE_PED_IS_IN(player_ped_id())
vehicleSpeed = GET_ENTITY_VELOCITY(cutscene_player_vehicle)
FREEZE_ENTITY_POSITION(cutscene_player_vehicle,TRUE)
SET_ENTITY_VISIBLE(cutscene_player_vehicle,FALSE)
cprintln(debug_Trevor3,"CHOPPER FROZEN")
ENDIF
PLAY_STREAM_FRONTEND()
IF stageFlag = 1
bPlayerOnHill = TRUE
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<2559.012207,4958.518066,36.029594>>, <<2585.446777,4993.435059,64.625648>>, 48.00000,<<2594.6506, 4948.1138, 38.0899>>, 283.7287,<<22,22,15>>)
IF DOES_ENTITY_EXIST(vehTemp)
IF IS_VEHICLE_DRIVEABLE(vehTemp)
SET_VEHICLE_ENGINE_ON(vehTemp,FALSE,TRUE)
ENDIF
ENDIF
CLEAR_AREA(<< 2445.1387, 4978.6421, 52.1489 >>,150.0,true,true)
CLEAR_AREA(<< 2578.5234, 4982.2837, 51.4416 >>,13.0,true)
SET_ENTITY_COORDS(PLAYER_PED_ID(), << 2578.4187, 4981.9014, 50.5870 >>)
SET_ENTITY_HEADING(PLAYER_PED_ID(), 49.2184)
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID())
SET_PED_MIN_MOVE_BLEND_RATIO(player_ped_id(),PEDMOVE_WALK)
FORCE_PED_MOTION_STATE(player_ped_id(),MS_ON_FOOT_WALK)
sequence_index tempSeq
//SET_PED_DUCKING(PLAYER_PED_ID(),TRUE)
OPEN_SEQUENCE_TASK(tempSeq)
TASK_GO_STRAIGHT_TO_COORD(NULL, << 2570.5430, 4982.0020, 50.6795 >>,PEDMOVE_WALK) /*<< 2570.1631, 4980.8589, 50.5336 >>*/
TASK_ACHIEVE_HEADING(NULL, 88.7065)
CLOSE_SEQUENCE_TASK(tempSeq)
TASK_PERFORM_SEQUENCE(PLAYER_PED_ID(), tempSeq)
CLEAR_SEQUENCE_TASK(tempSeq)
//BEGIN_SRL()
cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true)
ADD_CAM_SPLINE_NODE(cam1,<<2538.6, 4976.9, 50.6>>, <<-1.8, -0.0000, 93.2>>,5000)
ADD_CAM_SPLINE_NODE(cam1,<<2536.1531, 4976.7002, 50.5267>>, <<-1.8, -0.0000, 93.2>>,6000)
SET_CAM_FOV(cam1,34.9)
SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH)
ELSE
SWITCH stageFlag
CASE 2 //back right
cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true)
ADD_CAM_SPLINE_NODE(cam1,<<2426.8,5088.3,51.2>>, <<0,0,-169>>,5000)
ADD_CAM_SPLINE_NODE(cam1,<<2427.8,5087.2,51.2>>, <<0,0,-169.7>>,6000)
SET_CAM_FOV(cam1,28.5)
SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH)
BREAK
CASE 3 //orchard
cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true)
ADD_CAM_SPLINE_NODE(cam1,<<2326.3,4985.6,51.5>>, <<0,0,-89.1>>,5000)
ADD_CAM_SPLINE_NODE(cam1,<<2328,4985.4,52.1>>, <<0,0,-89.1>>,6000)
SET_CAM_FOV(cam1,28.5)
SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH)
BREAK
CASE 4 //left
cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true)
ADD_CAM_SPLINE_NODE(cam1,<<2403.6,4889.7,47.5>>, <<3.4,0,-19.5>>,5000)
ADD_CAM_SPLINE_NODE(cam1,<<2403.6,4889.7,47.5>>+<<0.8,2.15,0.07>>, <<3.4,0,-19.5>>,6000)
SET_CAM_FOV(cam1,29.8)
SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH)
BREAK
CASE 5 //front
cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true)
ADD_CAM_SPLINE_NODE(cam1,<<2493.4,4934.8,45.7>>, <<5.2,0,48>>,5000)
ADD_CAM_SPLINE_NODE(cam1,<<2493.4,4934.8,45.7>>+<<-1,1,0.0>>, <<5.2,0,48>>,6000)
SET_CAM_FOV(cam1,28.5)
SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH)
BREAK
CASE 6 //air
cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true)
ADD_CAM_SPLINE_NODE(cam1,<<2570.6,4982,151.6>>, <<-47.9,0,88.1>>,5000)
ADD_CAM_SPLINE_NODE(cam1,<<2487.8,4896.9,151.9>>, <<-47.2,0,28.8>>,15000)
SET_CAM_FOV(cam1,28.5)
SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH)
BREAK
CASE 7 //air
cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true)
ADD_CAM_SPLINE_NODE(cam1,<<2487.8,4896.9,151.9>>, <<-47.2,0,28.8>>,5000)
ADD_CAM_SPLINE_NODE(cam1,<<2570.6,4982,151.6>>, <<-47.9,0,88.1>>,15000)
SET_CAM_FOV(cam1,28.5)
SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH)
BREAK
ENDSWITCH
ENDIF
IF stageFlag < 6
SHAKE_CAM(cam1,"Hand_shake",0.2)
ELSE
SHAKE_CAM(cam1,"Hand_shake",0.7)
ENDIF
SET_CAM_ACTIVE(cam1, TRUE)
RENDER_SCRIPT_CAMS(TRUE, FALSE)
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
START_AUDIO_SCENE("CHI_2_FARMHOUSE_OVERVIEW")
DISABLE_CELLPHONE(TRUE)
SET_WANTED_LEVEL_MULTIPLIER(0.0)
SET_MAX_WANTED_LEVEL(0)
CLEAR_PRINTS()
CLEAR_HELP()
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, SPC_REMOVE_PROJECTILES)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
SET_PED_STEALTH_MOVEMENT(player_ped_id(),FALSE)
safeSkipTime = GET_GAME_TIMER()+1000
int iw
REPEAT COUNT_OF(zped) iw
IF NOT IS_PED_INJURED(zped[iw].id)
STOP_PED_SPEAKING(zped[iw].id,TRUE)
ENDIF
ENDREPEAT
//create temp ped just for cutscene
tempPed = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01,<< 2460.4495, 4976.9380, 45.5765 >>, 243.4917)
GIVE_WEAPON_TO_PED(tempPed,WEAPONTYPE_MICROSMG,INFINITE_AMMO,TRUE)
IF NOT IS_PED_INJURED(tempPed)
startSeq()
TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,TRUE)
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, << 2463.0156, 4974.9702, 45.5765 >> , PEDMOVE_WALK, -1, 0.5, ENAV_NO_STOPPING)
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, << 2452.8335, 4964.7852, 45.5765 >> , PEDMOVE_WALK, -1, 0.5, ENAV_NO_STOPPING)
TASK_PAUSE(NULL, 500)
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, << 2460.4495, 4976.9380, 45.5765 >> , PEDMOVE_WALK, -1, 0.5)
endseq(tempPed,true)
ENDIF
vehOneil = CREATE_VEHICLE(DUBSTA,<<2479.9612,4990,45.8>>, -5.37)
PLAYMUSIC("CHN2_MISSION_START",true,"CHN2_EXPLODE")
stageFlag=3
//endif
ENDIF
break
case 3 //shot of binocular guy
if timera() > cutChangeTime
//IF NOT IS_PED_INJURED(zped[enum_to_int(pos_shooting_bottle_1)].id)
//PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(zPED[enum_to_int(pos_shooting_bottle_1)].id, "generic_cheer", "A_M_M_Hillbilly_01_White_mini_02", "SPEECH_PARAMS_FORCE_SHOUTED")
//ENDIF
DESTROY_ALL_CAMS()
cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true)
ADD_CAM_SPLINE_NODE(cam1,<<2445.9443, 4962.9863, 51.4782>>, <<7.9159, -0.0000, 34.5909>>,5000)
ADD_CAM_SPLINE_NODE(cam1,<<2445.6843, 4963.3677, 51.6659>>, <<3.6033, 0.0000, 34.5909>>,3500)
SET_CAM_FOV(cam1,34)
SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH)
SHAKE_CAM(cam1,"Hand_shake",0.5)
cutChangeTime += 3500
stageFlag++
ENDIF
break
case 4 //barrel peds
if timera() > cutChangeTime
DESTROY_ALL_CAMS()
cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true)
ADD_CAM_SPLINE_NODE(cam1,<<2465.0703, 4946.6885, 45.3372>>, <<7.1461, 0.0000, 30.9281>>,5000)
ADD_CAM_SPLINE_NODE(cam1,<<2466.0112, 4947.3770, 45.3509>>, <<7.1461, 0.0000, 32.3761>>,3000)
SET_CAM_FOV(cam1,34)
SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH)
SHAKE_CAM(cam1,"Hand_shake",0.5)
cutChangeTime += 3000
stageFlag++
ENDIF
break
case 5 //bottle peds
bForceAnimTimeB = TRUE
if timera() > cutChangeTime
bForceAnimTimeB = TRUE
DESTROY_ALL_CAMS()
cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true)
ADD_CAM_SPLINE_NODE(cam1,<<2509.6912, 4971.0239, 44.1325>>, <<7.2578, 0.0000, 88.5226>>,5000)
ADD_CAM_SPLINE_NODE(cam1,<<2509.4146, 4971.1631, 44.1674>>, <<6.6554, 0.0000, 89.4229>>,2500)
SET_CAM_FOV(cam1,37.34)
SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH)
SHAKE_CAM(cam1,"Hand_shake",0.5)
cutChangeTime += 2500
stageFlag++
ENDIF
break
case 6
if timera() > cutChangeTime
IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE()
CLEAR_PRINTS()
CLEAR_HELP()
SET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR(6.818)
IF IS_VEHICLE_DRIVEABLE(vehOneil)
REGISTER_ENTITY_FOR_CUTSCENE(vehOneil,"EXL_2_abandoned_car",CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY,DUBSTA)
ENDIF
START_CUTSCENE()
bBlockShooterDialogue = FALSE
// CLEAR_AREA(<<2493.9172, 4971.3428, 44.1748>>,3.0,true)
stageFlag=11
endif
endif
break
case 10 //do fade
IF DOES_ENTITY_EXIST(cutscene_player_vehicle)
AND IS_VEHICLE_DRIVEABLE(cutscene_player_vehicle)
REQUEST_VEHICLE_HIGH_DETAIL_MODEL(cutscene_player_vehicle)
ENDIF
IF NOT IS_SCREEN_FADED_OUT()
AND NOT IS_SCREEN_FADING_OUT()
DO_SCREEN_FADE_OUT(500)
ENDIF
IF (IS_SCREEN_FADED_OUT() AND NOT IS_CUTSCENE_PLAYING())
OR (IS_CUTSCENE_ACTIVE() and CAN_SET_EXIT_STATE_FOR_CAMERA(TRUE))
stageFlag++
ENDIF
break
CASE 11
IF DOES_ENTITY_EXIST(cutscene_player_vehicle)
AND IS_VEHICLE_DRIVEABLE(cutscene_player_vehicle)
REQUEST_VEHICLE_HIGH_DETAIL_MODEL(cutscene_player_vehicle)
ENDIF
IF (IS_SCREEN_FADED_OUT() AND NOT IS_CUTSCENE_PLAYING())
OR (IS_CUTSCENE_ACTIVE() and CAN_SET_EXIT_STATE_FOR_CAMERA(TRUE))
DESTROY_ALL_CAMS()
RENDER_SCRIPT_CAMS(FALSE, FALSE)
//add flash back to first person
IF IS_PLAYER_IN_FIRST_PERSON_CAMERA()
AND NOT bCutsceneWasSkipped
ANIMPOSTFX_PLAY("CamPushInNeutral", 0, FALSE)
PLAY_SOUND_FRONTEND(-1, "1st_Person_Transition", "PLAYER_SWITCH_CUSTOM_SOUNDSET")
ENDIF
REPLAY_STOP_EVENT()
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< 2570.5430, 4982.0020, 50.6795 >>) < 15
AND GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< 2570.5430, 4982.0020, 50.6795 >>) > 1
SET_ENTITY_COORDS(PLAYER_PED_ID(),<< 2570.5430, 4982.0020, 50.6795 >>)
SET_ENTITY_HEADING(PLAYER_PED_ID(),98.21)
ELSE
IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id())
SET_ENTITY_HEADING(PLAYER_PED_ID(),GET_HEADING_FROM_COORDS(get_entity_coords(player_ped_id()),<<2458.222656,4986.041504,49.052414>>))
ENDIF
ENDIF
// CLEAR_AREA(<<2493.9172, 4971.3428, 44.1748>>,3.0,true)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-6.3)
SET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR(6.818)
//SET_PED_DUCKING(PLAYER_PED_ID(),TRUE)
FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID())
STOP_STREAM()
STOP_AUDIO_SCENE("CHI_2_FARMHOUSE_OVERVIEW")
CLEAR_PRINTS()
CLEAR_HELP()
// DESTROY_ALL_CAMS()
// RENDER_SCRIPT_CAMS(FALSE, FALSE)
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
DISABLE_CELLPHONE(FALSE)
//SET_GAMEPLAY_CAM_RELATIVE_HEADING()
//SET_GAMEPLAY_CAM_RELATIVE_PITCH(-6.3)
//SET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR(6.818)
IF HAS_PED_GOT_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_SNIPERRIFLE)
//SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_SNIPERRIFLE, TRUE)
IF GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_SNIPERRIFLE) < 15
ADD_AMMO_TO_PED(player_ped_id(),WEAPONTYPE_SNIPERRIFLE,50)
ENDIF
ELSE
#if IS_DEBUG_BUILD
GIVE_WEAPON_TO_PED(player_ped_id(),WEAPONTYPE_SNIPERRIFLE,70,FALSE)
#endif
ENDIF
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
IF DOES_ENTITY_EXIST(tempPed)
DELETE_PED(tempPed)
ENDIF
iBarrels1 = get_ped_with_placement(pos_barrels_1)
IF iBarrels1 != -1
//set_ped_Action(get_ped_with_placement(pos_barrels_1),action_spawn)
IF NOT IS_PED_INJURED(zped[iBarrels1].id)
DELETE_PED(zped[iBarrels1].id)
ENDIF
IF DOES_ENTITY_EXIST(zped[iBarrels1].obj)
DELETE_OBJECT(zped[iBarrels1].obj)
ENDIF
pedReactionState[iBarrels1].state = STATE_SPAWN
zPed[iBarrels1].actionFlag = 0
zPed[iBarrels1].intA = 0
zPed[iBarrels1].action = action_roll_barrels
ENDIF
iBarrels2 = get_ped_with_placement(pos_barrels_2)
IF iBarrels2 != -1
//set_ped_Action(get_ped_with_placement(pos_barrels_1),action_spawn)
IF NOT IS_PED_INJURED(zped[iBarrels2].id)
DELETE_PED(zped[iBarrels2].id)
ENDIF
IF DOES_ENTITY_EXIST(zped[iBarrels2].obj)
DELETE_OBJECT(zped[iBarrels2].obj)
ENDIF
pedReactionState[iBarrels2].state = STATE_SPAWN
zPed[iBarrels2].actionFlag = 0
zPed[iBarrels2].intA = 0
zPed[iBarrels2].action = action_roll_barrels
ENDIF
kill_event(events_detach_barrels_from_peds,false)
IF NOT IS_PED_INJURED(ped_oneil1)
DELETE_PED(ped_oneil1)
ENDIF
IF NOT IS_PED_INJURED(ped_oneil2)
DELETE_PED(ped_oneil2)
ENDIF
IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehOneil)
DELETE_VEHICLE(vehOneil)
ENDIf
IF DOES_ENTITY_EXIST(obj_cellphone)
DELETE_OBJECT(obj_cellphone)
ENDIF
delete_all_house()
iNextPedVariation=0
do_spawn_house()
SET_MODEL_AS_NO_LONGER_NEEDED(PROP_PHONE_ING)
SET_MODEL_AS_NO_LONGER_NEEDED(DUBSTA)
int ij
REPEAT COUNT_OF(zped) ij
IF NOT IS_PED_INJURED(zped[ij].id)
STOP_PED_SPEAKING(zped[ij].id,FALSE)
ENDIF
ENDREPEAT
// IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< 2570.5430, 4982.0020, 50.6795 >>) < 15
// SET_ENTITY_COORDS(PLAYER_PED_ID(),<< 2570.5430, 4982.0020, 50.6795 >>)
// SET_ENTITY_HEADING(PLAYER_PED_ID(),98.21)
// ENDIF
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-6.3)
cprintln(debug_trevor3,"heading: ",GET_HEADING_FROM_COORDS(get_entity_coords(player_ped_id()),<<2458.222656,4986.041504,49.052414>>,false))
IF DOES_ENTITY_EXIST(cutscene_player_vehicle)
IF IS_VEHICLE_DRIVEABLE(cutscene_player_vehicle)
FREEZE_ENTITY_POSITION(cutscene_player_vehicle,FALSE)
IF IS_THIS_MODEL_A_PLANE(get_entity_model(cutscene_player_vehicle))
SET_ENTITY_VELOCITY(cutscene_player_vehicle,vehicleSpeed)
SET_PED_INTO_VEHICLE(player_ped_id(),cutscene_player_vehicle)
ENDIF
SET_VEHICLE_ENGINE_ON(cutscene_player_vehicle,true,true)
IF IS_THIS_MODEL_A_HELI(get_entity_model(cutscene_player_vehicle))
SET_ENTITY_ROTATION(cutscene_player_vehicle,<<0,0,GET_ENTITY_HEADING(cutscene_player_vehicle)>>)
SET_HELI_BLADES_FULL_SPEED(cutscene_player_vehicle)
SET_ENTITY_VELOCITY(cutscene_player_vehicle,<<1,1,1>>)
SET_PED_INTO_VEHICLE(player_ped_id(),cutscene_player_vehicle)
ENDIF
IF ( bPlayerOnHill = FALSE )
SET_PED_INTO_VEHICLE(player_ped_id(),cutscene_player_vehicle)
ENDIF
SET_ENTITY_VISIBLE(cutscene_player_vehicle,TRUE)
ENDIF
ENDIF
SET_ENTITY_VISIBLE(player_ped_id(),TRUE)
SPECIAL_ABILITY_FILL_METER(player_id(),true)
cprintln(debug_trevor3,"END CUT")
END_SRL()
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(1000)
ENDIF
CASCADE_SHADOWS_ENABLE_ENTITY_TRACKER(TRUE)
STAGE_ENDS()
ENDIF
//ENDIF
BREAK
ENDSWITCH
ENDPROC
proc stage_get_to_meth_lab()
checkConditions(COND_START_FARM_ASSAULT,COND_END_FARM_ASSAULT)
INSTRUCTIONS(0,INS_DESTROY_METH_LAB)
INSTRUCTIONS(1,ins_enemy_reacting,cIF,COND_ENEMY_PED_REACTING)
INSTRUCTIONS(2,ins_all_enemy_reacting,cIF,COND_ALL_ENEMY_ALERTED)
INSTRUCTIONS(3,ins_fast_stealth)
INSTRUCTIONS(4,ins_special_ability,cIF,COND_PLAYER_IN_HOUSE)
//INSTRUCTIONS(2,INS_QUICK_KILL_HELP,cIF,COND_ALL_ENEMY_ALERTED)
action(0,act_stage_prep)
//action(0,act_shooting_peds_witness_impact_at_barrels,PLAYOUT_ON_TRIGGER,cIF,COND_BULLET_IMPACTED_BY_BARRELS,cANDNOT,COND_SHOOTING_PED_DEAD)
action(1,act_stat_double_kill)
action(2,act_MUSIC_start_snipe)
action(3,act_create_petrol_can_with_blip)
action(4,act_MUSIC_approach_house_or_alert,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_APPROACHING_HOUSE,cOR,COND_ALL_ENEMY_ALERTED)
//action(6,act_snipe_cams,PLAYOUT_ON_COND,cIFNOT,COND_ALL_ENEMY_ALERTED,cOR,COND_DEATH_CAM_IN_PROGRESS) //removed due to bug 968106
action(7,act_remove_initial_assets,PLAYOUT_ON_TRIGGER,cIF,COND_ALL_ENEMY_ALERTED)
action(8,act_outside_peds_flee,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_HOUSE,cAND,COND_ALL_ENEMY_ALERTED)
action(9,act_remove_upstairs_peds,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_HOUSE,cAND,COND_PLAYER_DOWNSTAIRS)
action(10,act_MUSIC_enter_house,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_HOUSE)
action(11,act_remaining_peds_flee,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_METH_LAB)
action(12,act_window_ped_walks_inside,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_APPROACHING_HOUSE)
// action(13,act_put_player_in_action_mode)
action(5,act_end_stealth_audio_Scene,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_METH_LAB,cOR,COND_ATTACKERS_ALL_DEAD,cOR,COND_ALL_ENEMY_ALERTED)
action(6,act_enemy_alerted_audio_Scene,PLAYOUT_ON_TRIGGER,cIF,COND_ALL_ENEMY_ALERTED)
action(14,act_player_got_to_basement_sneakily,PLAYOUT_ON_TRIGGER,cIF,COND_CARD_PLAYING_PEDS_STILL_NEAR_TABLE)
action(13,act_remove_barrel_peds,PLAYOUT_ON_TRIGGER,cIF,COND_BARREL_ROLL_PEDS_IN_VAN)
action(15,act_end_enemy_alerted_audio_Scene,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_METH_LAB,cOR,COND_ATTACKERS_ALL_DEAD)
action(16,act_modify_ped_seeing_range)
action(17,act_remove_van_peds)
action(18,act_audio_scene_in_house,PLAYOUT_ON_TRIGGER)
action(19,act_reset_bottle_shooting_ped_accuracy)
dialogue(0,dia_whatnow)
// dialogue(1,dia_cook_sees_ped_die,cIF,COND_BASEMENT_PED_DEAD_IN_BASEMENT)
dialogue(2,dia_trevor_rage_comments,cIF,COND_TREVOR_SEEN,cAndNOT,COND_ATTACKERS_ALL_DEAD)
dialogue(3,dia_stop_trevor_getting_to_basement,cIF,COND_PLAYER_IN_HOUSE,cAND,COND_TREVOR_NEAR_BASEMENT)
dialogue(4,dia_dont_let_him_down,cIF,COND_TREVOR_NEAR_STAIRS)
dialogue(5,dia_hes_in_meth_lab,cIF,COND_TREVOR_AT_STAIRS)
dialogue(6,dia_trevor_see_basement_peds_leave,cIF,COND_BASEMENT_PEDS_LEAVING_AND_OBSERVED,cANDNOT,COND_ALL_ENEMY_ALERTED)
//dialogue(6,dia_trevor_spotted_outside,cIF,COND_TREVOR_SEEN, cANDNOT, COND_PLAYER_IN_HOUSE) //this is ref'd elsewhere in script as value 6
dialogue(7,dia_find_trevor,cIF,COND_ALL_ENEMY_ALERTED,cANDNOT,COND_TREVOR_SEEN,cANDNOT,COND_PLAYER_IN_HOUSE)
dialogue(8,dia_attacking_trevor_outside,cIF,COND_ALL_ENEMY_ALERTED,cAND,COND_TREVOR_SEEN,cANDNOT,COND_PLAYER_IN_HOUSE)
dialogue(9,dia_trevor_seen_inside_house,cIF,COND_ALL_ENEMY_ALERTED,cAND,COND_PLAYER_IN_HOUSE)
dialogue(10,dia_attacking_trevor_inside,cIF,COND_ALL_ENEMY_ALERTED,cAND,COND_PLAYER_IN_HOUSE)
//dialogue(11,DIA_RESPOND_TO_BULLET,cIF,COND_RESPOND_TO_BULLET)
dialogue(11,DIA_RESPOND_TO_ALERT)
dialogue(12,dia_last_man_standing,cIF,COND_ALL_ENEMY_ALERTED,cAND,COND_ONE_ATTACKER_LEFT_OUTSIDE,cANDNOT,COND_PLAYER_IN_HOUSE)
dialogue(13,dia_trevor_approaches_house,cIF,COND_PLAYER_APPROACHING_HOUSE,cANDNOT,COND_PLAYER_IN_HOUSE,cAND,COND_ALL_ENEMY_ALERTED)
dialogue(14,dia_shooting_Barrels,cIFNOT,COND_PISSING_DIALOGUE_CAN_PLAY)
DIALOGUE(15,Dia_TREVOR_SAYS_HARD_WAY)
DIALOGUE(16,Dia_stay_in_house,cIF,COND_ALL_ENEMY_ALERTED,cAND,COND_ALL_OUTSIDE_ENEMY_DEAD,cAND,COND_PLAYER_APPROACHING_HOUSE,cANDNOT,COND_PLAYER_IN_HOUSE)
fail(FAIL_ABANDONED_FARM,cIF,COND_FAIL_FOR_LEAVING_FARM)
fail(FAIL_JERRY_CAN_DESTROYED,cIF,COND_JERRY_CAN_DESTROYED)
IF IS_CONDITION_TRUE(COND_PLAYER_IN_METH_LAB)
AND IS_CONDITION_TRUE(COND_PLAYER_HAS_PETROL_CAN)
STAGE_ENDS(do_petrol_trail)
ENDIF
ENDPROC
proc stage_petrol_trail()
SET_DISABLE_PETROL_DECALS_RECYCLING_THIS_FRAME()
checkConditions(COND_START_PETROL_TRAIL,COND_END_PETROL_TRAIL)
instructions(0,INS_PICK_UP_GAS_CAN)
instructions(1,INS_USING_GAS_CAN,cIF,COND_PLAYER_HAS_PETROL_CAN)
instructions(2,ins_missed_a_bit,cIF,COND_LAST_BLIP_POURED_ON,cANDNOT,COND_GAS_TRAIL_COMPLETE)
instructions(3,ins_dont_abandon_farm,cIF,COND_40M_FARM_WARNING)
dialogue(0,DIA_PICKED_UP_JERRY_CAN,cIF,COND_PLAYER_HAS_PETROL_CAN)
dialogue(1,DIA_POURING_PETROL,cIF,COND_PLAYER_POURING_GAS,cANDNOT,COND_GAS_TRAIL_COMPLETE)
dialogue(2,DIA_MISSED_A_BIT)
dialogue(3,DIA_LIGHT_FUEL,cIF,COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE)
DIALOGUE_ON_DIALOGUE(4,DIA_FUEL_BURN,3,DIA_LIGHT_FUEL)
action(0,ACT_SPAWN_BLAZER)
action(1,ACT_PREP_PETROL_POUR)
action(2,ACT_CONTROL_PETROL_BLIPS,PLAYOUT_ON_COND,cIFNOT,COND_GAS_TRAIL_COMPLETE)
action(3,ACT_PETROL_ASSIST_ROUTE)
action(4,ACT_FUDGE_RADAR_ZOOM,PLAYOUT_ON_COND,cIFNOT,COND_GAS_TRAIL_COMPLETE)
action(5,ACT_MUSIC_PICKS_UP_JERRY_CAM,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_HAS_PETROL_CAN)
action(6,ACT_MUSIC_TRAIL_IGNITED,PLAYOUT_ON_TRIGGER,cIF,COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE)
action(7,ACT_AUDIO_SCENE_WITH_CAN,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_HAS_PETROL_CAN)
action(8,ACT_PREP_EXPLOSION_AUDIO)
action(9,ACT_REMOVE_SOME_ASSETS)
action(10,ACT_BOMB_IN_BASEMENT,PLAYOUT_ON_TRIGGER,cIF,COND_EXPLOSION_IN_BASEMENT)
action(11,ACT_STAT_POUR_GAS)
action(12,ACT_FUDGE_GAS_AMMO)
//13 taken below
fail(FAIL_OUT_OF_GAS,cIF,COND_OUT_OF_GAS,cANDNOT,COND_GAS_TRAIL_COMPLETE)
fail(FAIL_ABANDONED_FARM,cIF,COND_60M_FARM_FAIL)
FAIL(FAIL_GAS_TRAIL_NOT_COMPLETE,cIF,COND_GAS_TRAIL_IGNITED_INCORRECTLY) //this was commented out but not sure why
IF CUTSCENE_FIRST_SHOT = SHOT_NONE
IF IS_CONDITION_TRUE(COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE)
AND NOT IS_CONDITION_TRUE(COND_EXPLOSION_IN_BASEMENT)
CUTSCENE_FIRST_SHOT = SHOT_NORMAL
ENDIF
IF IS_CONDITION_TRUE(COND_GAS_IGNITED_IN_HOUSE_WILL_BURN_OK)
AND NOT IS_CONDITION_TRUE(COND_EXPLOSION_IN_BASEMENT)
bSneakyPass = TRUE
CUTSCENE_FIRST_SHOT = SHOT_BASEMENT
ENDIF
IF GET_ACTION_FLAG(10,ACT_BOMB_IN_BASEMENT) = 2
//player sticky bombed basement most likely
CUTSCENE_FIRST_SHOT = SHOT_HOUSE_EXPLOSION
bSneakyPass = TRUE
ENDIF
ENDIF
action(13,ACT_LOAD_END_CUT_FRUSTROM)
IF ((IS_CONDITION_TRUE(COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE) AND IS_CONDITION_TRUE(COND_GAS_TRAIL_REACHED_DOORWAY))
OR bSneakyPass)
AND GET_ACTION_FLAG(13,ACT_LOAD_END_CUT_FRUSTROM) = 10
AND NOT IS_CONV_ROOT_PLAYING("CHI2_light")
FAIL(FAIL_GAS_TRAIL_IGNITED_EARLY,cIF,COND_TREVOR_INSIDE_HOUSE)
IF DOES_BLIP_EXIST(missionBlip)
REMOVE_BLIP(missionblip)
ENDIF
REPLAY_RECORD_BACK_FOR_TIME(10.0, 5.0, REPLAY_IMPORTANCE_HIGHEST)
HIDE_GAS_TRAIL()
STAGE_ENDS()
ENDIF
endproc
int iLoadFXflag
FUNC BOOL LOAD_FX_MODELS()
SWITCH iLoadFXflag
CASE 0
REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT)
REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT001)
REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT002)
REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT003)
REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT004)
REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT005)
REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT006)
REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT007)
REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT008)
REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT009)
REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT010)
REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT011)
REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT012)
REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT013)
REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT014)
REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT015)
iLoadFXflag++
BREAK
CASE 1
IF HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT)
AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT001)
AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT002)
AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT003)
AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT004)
AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT005)
AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT006)
AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT007)
AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT008)
AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT009)
AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT010)
AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT011)
AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT012)
AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT013)
AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT014)
AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT015)
RETURN TRUE
ENDIF
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
proc stage_explosion_cut()
//FUDGE_FIRE_TRAIL()
SET_DISABLE_PETROL_DECALS_RECYCLING_THIS_FRAME()
IF IS_CUTSCENE_SKIP_BUTTON_JUST_PRESSED() and stageFlag > 0 and get_game_timer() > safeSkipTime
WHILE NOT IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_OUT(1000)
SAFEWAIT(28)
ENDWHILE
iLoadFXflag = 0
WHILE NOT LOAD_FX_MODELS()
safewait(32322)
ENDWHILE
SET_ENTITY_COORDS(PLAYER_PED_ID(), << 2474.9697, 4946.0474, 44.0297 >>)
SET_ENTITY_HEADING(PLAYER_PED_ID(), 230.6937)
SET_PED_STEALTH_MOVEMENT(player_ped_id(),FALSE)
SET_PED_USING_ACTION_MODE(player_ped_id(),FALSE)
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_UNARMED,true)
FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID())
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
DESTROY_ALL_CAMS()
RENDER_SCRIPT_CAMS(FALSE, FALSE)
SET_PLAYER_CONTROL(player_id(),true)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
CLEAR_PRINTS()
DEACTIVATE_AUDIO_SLOWMO_MODE("SLOW_MO_METH_HOUSE_RAYFIRE")
//#if IS_DEBUG_BUILD IF NOT IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J) #endif
//STAGE_ENDS()
//#if IS_DEBUG_BUILD endif #endif
rfThisRayfire = GET_RAYFIRE_MAP_OBJECT(<<2457.15, 4968.79, 48.677>>, 45, "DES_FarmHs")
// IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfThisRayfire)
//SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_ENDING)
//endif
kill_event(events_house_explodes_rayfire)
cutChangeTime=0
icamflag=icamflag
icamflag=99
stageFlag = 99
iCurrentCamShot=3
cutDurationTime = 10000
////cprintln(DEBUG_TREVOR3,"HIDE MODEL GLASS")
CREATE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_ret_fhglassfrm,true)
CREATE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGLASSFRMSML,true)
CREATE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGlassairfrm,false)
STOP_STREAM()
REPLAY_STOP_EVENT()
bCutsceneWasSkipped = TRUE
ENDIF
HIDE_HUD_AND_RADAR_THIS_FRAME()
SWITCH stageFlag
case 0
LOAD_FX_MODELS()
bCutsceneWasSkipped = FALSE
//reset basement stair gas trail coords so flame will appear higher up
//nodes 49 - 55 raised by 30cm
int iNode
for iNode = 49 to 55
CPRINTLN(debug_trevor3,"iNode b = ",iNode)
gasTrail[iNode].coord += <<0,0,0.6>>
ENDFOR
IF IS_AUDIO_SCENE_ACTIVE("CHI_2_POUR_GAS")
STOP_AUDIO_SCENE("CHI_2_POUR_GAS")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CHI_2_SHOOT_GAS")
STOP_AUDIO_SCENE("CHI_2_SHOOT_GAS")
ENDIF
START_AUDIO_SCENE("CHI_2_GAS_TRAIL_FIRE")
//REQUEST_PTFX_ASSET()
safeSkipTime = GET_GAME_TIMER() + 1000
CLEAR_AREA(<<2570.5300, 4982.0571, 50.6819>>,100,true) //to remove a car that player may have left in the cutscene trigger zone
SET_PLAYER_CONTROL(PLAYER_ID(),false)
SET_CURRENT_PED_WEAPON(player_ped_id(),WEAPONTYPE_UNARMED,true)
PURGE_CONVERSATIONS(FALSE)
bLastConvoWithoutSubtitles = FALSE
PURGE_CONVERSATIONS(TRUE)
CLEAR_PRINTS()
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA(<<2467.774902,4954.414551,42.878033>>, <<2477.088867,4945.079102,46.166538>>, 4.062500,<<2486.8542, 4939.0859, 43.2578>>,230)
IF IS_PED_IN_ANY_VEHICLE(player_ped_id())
//vehicle_index vehTemp
//vehTemp = GET_VEHICLE_PED_IS_USING(player_ped_id())
//SET_ENTITY_AS_MISSION_ENTITY(vehTemp)
//SET_ENTITY_COORDS(vehTemp,<<2471.9463, 4949.7852, 44.1375>>)
//SET_ENTITY_HEADING(vehTemp,222.7150)
SET_ENTITY_COORDS(player_ped_id(),<<2455.9414, 4952.8013, 44.1120>>)
//SET_VEHICLE_AS_NO_LONGER_NEEDED(vehTemp)
ENDIF
// add_event(events_Trevor_walks_in_final_cutscene)
// add_event(events_house_explodes_rayfire)
// add_event(events_play_audio_stream)
SET_TIME_SCALE(1.0)
//clean out memory
REMOVE_ANIM_DICT("misschinese2_barrelRoll")
REMOVE_ANIM_SET("move_m@gangster@var_e")
REMOVE_ANIM_SET("move_m@gangster@var_f")
REMOVE_ANIM_SET("move_m@gangster@generic")
REMOVE_ANIM_DICT("misschinese2_bank5")
REMOVE_ANIM_DICT("misschinese2_bank1")
REMOVE_ANIM_DICT("reaction@male_stand@big_variations@b")
REMOVE_ANIM_DICT("reaction@male_stand@big_intro@left")
REMOVE_ANIM_DICT("reaction@male_stand@big_intro@right")
REMOVE_ANIM_DICT("reaction@male_stand@big_intro@backward")
SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_Hillbilly_02)
SET_MODEL_AS_NO_LONGER_NEEDED(A_M_Y_MethHead_01)
SET_MODEL_AS_NO_LONGER_NEEDED(Prop_CS_Fertilizer)
SET_MODEL_AS_NO_LONGER_NEEDED(BURRITO)
SET_MODEL_AS_NO_LONGER_NEEDED(PROP_CS_BEER_BOT_01)
SET_PED_STEALTH_MOVEMENT(player_ped_id(),FALSE)
int ij
repeat count_of(zped) iJ
if DOES_ENTITY_EXIST(zped[ij].id)
DELETE_PED(zped[ij].id)
endif
IF DOES_ENTITY_EXIST(zped[ij].obj)
DELETE_OBJECT(zped[ij].obj)
ENDIF
ENDREPEAT
stageFlag++
break
case 1
IF IS_SCREEN_FADED_OUT()
AND NOT IS_SCREEN_FADING_IN()
DO_SCREEN_FADE_IN(1000)
ENDIF
stageFlag++
break
ENDSWITCH
//--------------------------- CUTSCENE EDITOR OUTPUT -----------------------------
#if IS_DEBUG_BUILD
IF NOT DOES_WIDGET_GROUP_EXIST(cutsceneWidget)
int iWidget
TEXT_LABEL_15 txtlbs
SET_CURRENT_WIDGET_GROUP(widget_debug)
cutsceneWidget = start_widget_group("Final Cutscene Edit")
add_widget_bool("Edit Cutscene",editCutscene)
add_widget_bool("Reset Cutscene",resetCutscene)
add_widget_bool("Output Data",bOutputCut)
REPEAT COUNT_OF(camShot) iWidget
txtlbs = "Cut "
txtlbs += iWidget
start_widget_group(txtlbs)
add_widget_bool("position cam start",bSetCamA[iWidget])
add_widget_bool("Position can End",bSetCamB[iWidget])
ADD_WIDGET_FLOAt_SLIDER("Cut Duration",camShot[iWidget].totalDuration,0,10000,100)
ADD_WIDGET_FLOAT_SLIDER("Cam pan Duration",camShot[iWidget].camDuration,0,10000,100)
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO("Linear")
ADD_TO_WIDGET_COMBO("Sin accel decel")
ADD_TO_WIDGET_COMBO("Accel")
ADD_TO_WIDGET_COMBO("Decel")
STOP_WIDGET_COMBO("Pan type", camShot[iWidget].camPanType)
ADD_WIDGET_INT_SLIDER("Move fire to node",camShot[iWidget].flameNode,-1,MAX_TRAIL_POINTS,1)
STOP_WIDGET_GROUP()
ENDREPEAT
REPEAT COUNT_OF(CutEvent) iWidget
start_widget_group(CutEvent[iWidget].name)
ADD_WIDGET_INT_SLIDER("Trigger shot",CutEvent[iWidget].triggerShot,0,3,1)
ADD_WIDGET_FLOAT_SLIDER("Trigger time",CutEvent[iWidget].triggerTime,0,10000.0,100.0)
IF iWidget = 3
ADD_WIDGET_FLOAT_SLIDER("Cam shake",fShakeValue,0,1.0,0.01)
ENDIF
STOP_WIDGET_GROUP()
ENDREPEAT
STOP_WIDGET_GROUP()
CLEAR_CURRENT_WIDGET_GROUP(widget_debug)
ENDIF
#endif
int iCams
IF bOutputCut
bOutputCut=FALSE
REPEAT COUNT_OF(camShot) icams
PRINTLN("camShot[",iCams,"].camStartPos = ",camShot[iCams].camStartPos)
PRINTLN("camShot[",iCams,"].camStartRot = ",camShot[iCams].camStartRot)
PRINTLN("camShot[",iCams,"].camStartFOV = ",camShot[iCams].camStartFOV)
PRINTLN("camShot[",iCams,"].camEndPos = ",camShot[iCams].camEndPos)
PRINTLN("camShot[",iCams,"].camEndRot = ",camShot[iCams].camEndRot)
PRINTLN("camShot[",iCams,"].camEndFOV = ",camShot[iCams].camEndFOV)
PRINTLN("camShot[",iCams,"].camDuration = ",camShot[iCams].camDuration)
PRINTLN("camShot[",iCams,"].totalDuration = ",camShot[iCams].totalDuration)
PRINTLN("camShot[",iCams,"].camPanType = ",camShot[iCams].camPanType)
PRINTLN("camShot[",iCams,"].flameNode = ",camShot[iCams].flameNode)
ENDREPEAT
REPEAT COUNT_OF(CutEvent) icams
PRINTLN("CutEvent[",iCams,"].triggerShot = ",CutEvent[iCams].triggerShot)
PRINTLN("CutEvent[",iCams,"].triggerTime = ",CutEvent[iCams].triggerTime)
ENDREPEAT
ENDIF
REPEAT COUNT_OF(camShot) iCams
If bSetCamA[iCams]
bSetCamA[iCams]=FALSE
camShot[iCams].camStartPos = GET_CAM_COORD(GET_RENDERING_CAM())
camShot[iCams].camStartRot = GET_CAM_ROT(GET_RENDERING_CAM())
camShot[iCams].camStartFOV = GET_CAM_FOV(GET_RENDERING_CAM())
ENDIF
If bSetCamB[iCams]
bSetCamB[iCams]=FALSE
camShot[iCams].camEndPos = GET_CAM_COORD(GET_RENDERING_CAM())
camShot[iCams].camEndRot = GET_CAM_ROT(GET_RENDERING_CAM())
camShot[iCams].camEndFOV = GET_CAM_FOV(GET_RENDERING_CAM())
ENDIF
ENDREPEAT
IF resetCutscene
resetCutscene = FALSE
cutsceneRunning = FALSE
bRayfireTriggered = FALSE
CLEAR_AREA(<<2431.0969, 4967.0430, 41.3476>>,20,TRUE)
CLEANUP_GAS_TRAILS()
ENDIF
IF NOT cutsceneRunning
IF IS_SRL_LOADED()
cprintln(debug_trevor3,"BEGIN_SRL")
SET_SRL_READAHEAD_TIMES(5, 5, 5, 5)
BEGIN_SRL()
iCurrentCamShot = -1
DESTROY_ALL_CAMS()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
REQUEST_ANIM_DICT("misschinese2_crystalmaze")
cutsceneRunning = true
CutEvent[0].triggered = FALSE
CutEvent[1].triggered = FALSE
CutEvent[2].triggered = FALSE
CutEvent[3].triggered = FALSE
CutEvent[0].flag = 0
CutEvent[0].timer = 0
CutEvent[1].flag = 0
CutEvent[1].timer = 0
CutEvent[2].flag = 0
CutEvent[2].timer = 0
CutEvent[3].flag = 0
CutEvent[3].timer = 0
add_event(events_house_explodes_rayfire)
PLAY_STREAM_FRONTEND()
cprintln(debug_trevor3,"PLAY EXPLOSION SOUNDS")
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST) //added for NG
SWITCH CUTSCENE_FIRST_SHOT
CASE SHOT_NORMAL
SETTIMERA(0)
BREAK
CASE SHOT_HOUSE_EXPLOSION
CutEvent[0].triggered = TRUE
CutEvent[1].triggered = TRUE
SETTIMERA(10900)
iCurrentCamShot=2
cutDurationTime = 10000
BREAK
CASE SHOT_BASEMENT
CutEvent[0].triggered = TRUE
SETTIMERA(6400)
iCurrentCamShot=1
cutDurationTime = 10000
BREAK
ENDSWITCH
basementflame = 0
ENDIF
ENDIF
IF cutsceneRunning
cprintln(debug_trevor3,"TIMER = ",to_float(timera()))
SET_SRL_TIME(to_float(timera()))
ENDIF
IF cutsceneRunning
cutDurationTime += TIMESTEP()
cprintln(debug_Trevor3,"Fire = ",bUsePetrolFlameFX)
////cprintln(debug_trevor3,"start: ",cutDurationTime," iCurrentCamShot: ",iCurrentCamShot)
IF iCurrentCamShot = -1
OR (iCurrentCamShot != -1 AND iCurrentCamShot < 4 AND cutDurationTime > (camShot[iCurrentCamShot].totalDuration / 1000.0))
iCurrentCamShot++
IF iCurrentCamShot = 3
IF HAS_ANIM_DICT_LOADED("misschinese2_crystalmaze")
cam1 = CREATE_CAMERA(CAMTYPE_ANIMATED,true)
iCamSync = CREATE_SYNCHRONIZED_SCENE(<<2452.914,4962.096,45.585>>,<<0,0,45>>)
PLAY_SYNCHRONIZED_CAM_ANIM(cam1,icamsync,"trevor_barn_walk_cam","misschinese2_crystalmaze")
IF NOT IS_PED_INJURED(player_ped_id())
TASK_SYNCHRONIZED_SCENE(player_ped_id(),iCamSync,"misschinese2_crystalmaze","trevor_barn_walk",INSTANT_BLEND_IN,NORMAL_BLEND_OUT)
ENDIF
RENDER_SCRIPT_CAMS(TRUE, FALSE)
CLEANUP_GAS_TRAILS()
//remove all script fires
SET_GAME_PAUSES_FOR_STREAMING(TRUE) // bug 2008155
cutDurationTime = 0
ENDIF
ELIF iCurrentCamShot < 4
////cprintln(debug_trevor3,"next cam shot")
DESTROY_ALL_CAMS()
cam1 = CREATE_CAM_WITH_PARAMS("DEFAULT_SCRIPTED_CAMERA", camShot[iCurrentCamShot].camStartPos,camShot[iCurrentCamShot].camStartRot, camShot[iCurrentCamShot].camStartFOV, TRUE)
SET_CAM_PARAMS(cam1, camShot[iCurrentCamShot].camEndPos,camShot[iCurrentCamShot].camEndRot, camShot[iCurrentCamShot].camEndFOV, FLOOR(camShot[iCurrentCamShot].camDuration), int_to_enum(CAMERA_GRAPH_TYPE,camShot[iCurrentCamShot].camPanType))
RENDER_SCRIPT_CAMS(TRUE, FALSE)
IF iCurrentCamShot < 2
SET_PETROL_FLAME_TO_NODE(camShot[iCurrentCamShot].flameNode,TRUE,TRUE)
ELSE
SET_PETROL_FLAME_TO_NODE(camShot[iCurrentCamShot].flameNode,TRUE,FALSE)
ENDIF
cutDurationTime = 0
ELSE
IF NOT editCutscene
DESTROY_ALL_CAMS()
RENDER_SCRIPT_CAMS(FALSE, FALSE)
IF IS_PLAYER_IN_FIRST_PERSON_CAMERA()
AND NOT bCutsceneWasSkipped
ANIMPOSTFX_PLAY("CamPushInNeutral", 0, FALSE)
PLAY_SOUND_FRONTEND(-1, "1st_Person_Transition", "PLAYER_SWITCH_CUSTOM_SOUNDSET")
ENDIF
SET_PLAYER_CONTROL(player_id(),true)
SET_GAME_PAUSES_FOR_STREAMING(FALSE)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
SET_MULTIHEAD_SAFE(FALSE)
STOP_AUDIO_SCENE("CHI_2_GAS_TRAIL_FIRE")
//g_eFarmhouseFireState = FARMHOUSE_FIRE_BURNING
SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_ENDING)
SET_TIME_SCALE(1.0)
cprintln(debug_trevor3,"END_SRL()")
END_SRL()
IF IS_SCREEN_FADED_OUT()
WHILE GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire) != RFMO_STATE_END
SAFEWAIT(29)
ENDWHILE
DO_SCREEN_FADE_IN(1000)
ENDIF
cprintln(debug_trevor3,"END_stage")
REPLAY_STOP_EVENT()
STAGE_ENDS(end_mission)
ENDIF
ENDIF
ENDIF
////cprintln(debug_trevor3,"end: ",cutDurationTime," iCurrentCamShot: ",iCurrentCamShot)
int iEvent
REPEAT COUNT_OF(CutEvent) iEvent
IF NOT cutEvent[iEvent].triggered
IF iCurrentCamShot = cutEvent[iEvent].triggerShot
AND cutDurationTime > (cutEvent[iEvent].triggerTime / 1000.0)
SWITCH iEvent
CASE 0
SWITCH cutEvent[iEvent].flag
CASE 0 //table flames
basementFlame = 0
IF GET_GAME_TIMER() > cutEvent[iEvent].timer
ADD_FLAME_AT_COORD(basementFlames[basementFlame],false)
cutEvent[iEvent].timer = GET_GAME_TIMER() + 200
cutEvent[iEvent].flag++
ENDIF
BREAK
CASE 1
IF GET_GAME_TIMER() > cutEvent[iEvent].timer
ADD_FLAME_AT_COORD((basementFlames[basementFlame] + basementFlames[basementFlame+1])/2.0,false)
basementFlame++
IF basementFlame >= 12
cutEvent[iEvent].flag = 10
cutEvent[iEvent].triggered = TRUE
ELSe
cutEvent[iEvent].timer = GET_GAME_TIMER() + 200
cutEvent[iEvent].flag=2
ENDIF
ENDIF
BREAK
CASE 2
IF GET_GAME_TIMER() > cutEvent[iEvent].timer
ADD_FLAME_AT_COORD(basementFlames[basementFlame],false)
cutEvent[iEvent].timer = GET_GAME_TIMER() + 200
IF basementFlame = 2
cutEvent[iEvent].flag=3
ELSE
cutEvent[iEvent].flag=1
ENDIF
ENDIF
BREAK
CASE 3
IF GET_GAME_TIMER() > cutEvent[iEvent].timer
ADD_FLAME_AT_COORD((basementFlames[basementFlame] + basementFlames[basementFlame+1])/2.0,false)
ADD_FLAME_AT_COORD((basementFlames[basementFlame] + basementFlames[basementFlame+2])/2.0,false)
cutEvent[iEvent].timer = GET_GAME_TIMER() + 200
cutEvent[iEvent].flag=4
basementFlame=3
ENDIF
BREAK
CASE 4
IF GET_GAME_TIMER() > cutEvent[iEvent].timer
ADD_FLAME_AT_COORD(basementFlames[basementFlame],false)
ADD_FLAME_AT_COORD(basementFlames[basementFlame+1],false)
cutEvent[iEvent].timer = GET_GAME_TIMER() + 200
cutEvent[iEvent].flag=5
ENDIF
BREAK
CASE 5
IF GET_GAME_TIMER() > cutEvent[iEvent].timer
ADD_FLAME_AT_COORD((basementFlames[basementFlame] + basementFlames[basementFlame+2])/2.0,false)
ADD_FLAME_AT_COORD((basementFlames[basementFlame+1] + basementFlames[basementFlame+3])/2.0,false)
cutEvent[iEvent].timer = GET_GAME_TIMER() + 200
cutEvent[iEvent].flag=6
basementFlame=5
ENDIF
BREAK
CASE 6
IF GET_GAME_TIMER() > cutEvent[iEvent].timer
ADD_FLAME_AT_COORD(basementFlames[basementFlame],false)
ADD_FLAME_AT_COORD(basementFlames[basementFlame+1],false)
cutEvent[iEvent].timer = GET_GAME_TIMER() + 200
cutEvent[iEvent].flag=2
basementFlame = 7
ENDIF
BREAK
ENDSWITCH
BREAK
CASE 1 //table explosino
ADD_EXPLOSION(<<2432.5339, 4968.3828, 42.2389>>,EXP_TAG_ROCKET)
cutEvent[iEvent].triggered = TRUE
BREAK
CASE 2 //house rayfire
bRayfireTriggered = TRUE
cutEvent[iEvent].triggered = TRUE
BREAK
CASE 3 //cam explosion shake
IF DOES_CAM_EXIST(cam1)
SHAKE_CAM(cam1, "LARGE_EXPLOSION_SHAKE", fShakeValue)
SET_CAM_MOTION_BLUR_STRENGTH(cam1, 0.1000)
cutEvent[iEvent].triggered = TRUE
ENDIF
BREAK
CASE 4
SWITCH cutEvent[iEvent].flag
CASE 0
SET_ENTITY_COORDS(PLAYER_PED_ID(), <<2473.2080, 4947.6245, 44.0664>>)
SET_ENTITY_HEADING(PLAYER_PED_ID(), 223.4930)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7)
//TASK_FOLLOW_NAV_MESH_TO_COORD(player_ped_id(),<<2476.3506, 4945.6670, 43.9052>>,pedmove_Walk)
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, 3000)
ELSE
FORCE_PED_MOTION_STATE(player_ped_id(), MS_ON_FOOT_WALK, true, FAUS_DEFAULT )
SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVEBLENDRATIO_WALK, 0500)
ENDIF
//cutEvent[iEvent].triggered = TRUE
cutEvent[iEvent].flag++
cprintln(Debug_Trevor3,"Force walk triggered b")
BREAK
CASE 1
//FORCE_PED_MOTION_STATE(player_ped_id(), MS_AIMING, true, FAUS_DEFAULT )
//SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVEBLENDRATIO_WALK, 0500)
BREAK
ENDSWITCH
BREAK
CASE 5
SWITCH cutEvent[iEvent].flag
CASE 0
fSlowMoPhase = 1.0
cutEvent[iEvent].flag++
cutEvent[iEvent].timer = GET_GAME_TIMER() + 1300
ACTIVATE_AUDIO_SLOWMO_MODE("SLOW_MO_METH_HOUSE_RAYFIRE")
BREAK
CASE 1
fSlowMoPhase -= timestep() * 1.0
IF fSlowMoPhase < 0.2
fSlowMoPhase = 0.2
ENDIF
SET_TIME_SCALE(fSlowMoPhase)
IF GET_GAME_TIMER() > cutEvent[iEvent].timer
cutEvent[iEvent].flag++
ENDIF
BREAK
CASE 2
fSlowMoPhase += timestep() * 1.0
IF fSlowMoPhase > 1.0
fSlowMoPhase = 1.0
cutEvent[iEvent].flag++
cutEvent[iEvent].triggered = TRUE
ENDIF
DEACTIVATE_AUDIO_SLOWMO_MODE("SLOW_MO_METH_HOUSE_RAYFIRE")
SET_TIME_SCALE(fSlowMoPhase)
BREAK
ENDSWITCH
BREAK
ENDSWITCH
ENDIF
ENDIF
ENDREPEAT
endif
endproc
proc stage_end_mission()
checkConditions(COND_FARM_LEAVE_START,COND_FARM_LEAVE_END)
//action(0,ACT_GET_WANTED_LEVEL,PLAYOUT_ON_TRIGGER,cIF,COND_GET_WANTED_LEVEL)
action(1,ACT_CHANGE_BUILDING_STATE,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_300_FROM_FARM)
action(2,ACT_STOP_MUSIC)
action(3,ACT_FIRE_AUDIO)
action(4,ACT_ENABLE_TAXI)
action(5,ACT_RESET_STUFF)
DIALOGUE(0,DIA_BOOM)
INSTRUCTIONS(0,INS_GET_CLEAR_OF_FARM)
//INSTRUCTIONS(1,INS_LOSE_WANTED_LEVEL,cIF,COND_BUILDING_STATE_SWAPPED,cAND,COND_GOT_WANTED_LEVEL)
CONTROL_BURN_PLAYER()
IF IS_ACTION_COMPLETE(1,ACT_CHANGE_BUILDING_STATE)
// AND IS_CONDITION_FALSE(COND_GOT_WANTED_LEVEL)
Mission_Passed()
ENDIF
endproc
PROC conrol_mission()
mission_stage_flag lastMissionStage = missionStage //track if a stage has changed
SET_REPLAY_STAGE()
SWITCH missionStage
case init_mission
stage_init()
BREAK
case intro_cut
stage_intro_cut()
BREAK
case drive_to_farm
stage_drive_to_farm()
break
case farm_cutscene
stage_farm_cutscene()
BREAK
case snipe_from_hill
stage_get_to_meth_lab()
BREAK
case get_to_house
stage_get_to_meth_lab()
break
case inside_house
stage_get_to_meth_lab()
break
case do_petrol_trail
stage_petrol_trail()
break
case explosion_cut
stage_explosion_cut()
break
case end_mission
stage_end_mission()
break
ENDSWITCH
if missionStage != lastMissionStage stageFlag = 0 ENDIF
IF bFailMission
Mission_Failed()
endif
ENDPROC
proc updateAIBlips()
int i
IF missionStage >= snipe_from_hill
REPEAt count_of(zped) i
IF DOES_ENTITY_EXIST(zped[i].id)
IF NOT zped[i].registeredKilled
IF IS_PED_INJURED(zped[i].id)
zped[i].registeredKilled = TRUE
INFORM_MISSION_STATS_OF_INCREMENT(CHI2_KILLS)
ENDIF
ENDIF
IF GET_PED_RELATIONSHIP_GROUP_HASH(zped[i].id) = HASH_FOE_GROUP
UPDATE_AI_PED_BLIP(zped[i].id, zped[i].aiBlip,-1,null)//,IS_PLAYER_USING_TREVORS_SPECIAL_ABILITY())
ENDIF
ELSE
IF zped[i].id != null
CLEANUP_AI_PED_BLIP(zPED[i].aiBlip)
zped[i].id = null
ENDIF
ENDIF
endrepeat
ENDIF
endproc
SCRIPT
SET_MISSION_FLAG(TRUE)
IF HAS_FORCE_CLEANUP_OCCURRED()
Mission_Flow_Mission_Force_Cleanup()
MISSION_CLEANUP(CLEANUP_FAIL_DEATH)
ENDIF
fireNodeJumpTime = 160.0
WHILE (TRUE)
IF NOT IS_PED_INJURED(player_peD_id()) //never used to have to do this. Something's fucked.
conrol_mission()
updateAIBLips()
#if IS_DEBUG_BUILD manage_debug() #ENDIF
IF missionStage >= do_petrol_trail
CONTROL_GAS_TRAILS(#if is_debug_build widget_debug #endif)
ENDIF
CONTROL_CONVERSATION_SUBTITLES()
manage_peds()
manage_events()
control_music()
INTERIOR_PINNING()
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("m_Chinese2")
ENDIF
convAlreadyCalledThisFrame=FALSE
#if is_Debug_build pedReactionsDebug(pedReactionState,widget_debug) #endif
WAIT(0)
endwhile
ENDSCRIPT