Files
gtav-src/script/dev_ng/singleplayer/scripts/missions/Solomon/Solomon1.sc
T
2025-09-29 00:52:08 +02:00

6589 lines
264 KiB
Python
Executable File

// *****************************************************************************************
// *****************************************************************************************
// *****************************************************************************************
//
// MISSION NAME : Soloman 1
// AUTHOR : Craig Vincent
// DESCRIPTION : Take the heli from the roof
//
// *****************************************************************************************
// *****************************************************************************************
// *****************************************************************************************
//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_audio.sch"
USING "commands_camera.sch"
USING "commands_clock.sch"
USING "commands_debug.sch"
USING "commands_fire.sch"
USING "commands_graphics.sch"
USING "commands_hud.sch"
USING "commands_object.sch"
USING "commands_pad.sch"
USING "commands_ped.sch"
USING "commands_player.sch"
USING "commands_script.sch"
USING "commands_streaming.sch"
USING "commands_task.sch"
USING "commands_vehicle.sch"
USING "commands_interiors.sch"
USING "commands_itemsets.sch"
USING "commands_event.sch"
USING "commands_stats.sch"//BUG FIX 1399395
USING "script_blips.sch"
Using "Locates_public.sch"
Using "select_mission_stage.sch"
USING "model_enums.sch"
USING "script_player.sch"
USING "script_misc.sch"
USING "selector_public.sch"
USING "chase_hint_cam.sch"
using "mission_stat_public.sch"
using "cutscene_public.sch"
USING "replay_public.sch"
USING "taxi_functions.sch"
using "script_ped.sch"
using "asset_management_public.sch"
using "RC_helper_functions.sch"
using "cheat_controller_public.sch"
using "building_control_public.sch"
USING "commands_recording.sch"
#IF IS_DEBUG_BUILD
USING "shared_debug.sch"
USING "script_debug.sch"
#ENDIF
//-----------------------------------------------------------------------------------------------------------
// ENUMS
//-----------------------------------------------------------------------------------------------------------
ENUM MPF_MISSION_PED_FLAGS
mpf_mike,
mpf_Anton,
mpf_milton,
mpf_rocco,
mpf_pilot,
mpf_Gianni,
mpf_sol,
MPF_NUM_OF_PEDS
ENDENUM
ENUM MVF_MISSION_VEHICLE_FLAGS
mvf_heli,
mvf_Replay_car,
mvf_coquette,
mvf_CAVALCADE2,
mvf_car1,
mvf_mixer,
mvf_forklift,
MVF_NUM_OF_VEH
ENDENUM
ENUM eEnemies_Mafia
maf_car,
maf_car_talking,
maf_walkway_door,
maf_worker_walkway,
maf_worker_vent,
maf_worker_top,
maf_worker_door,
maf_worker_alone,
NUM_OF_Mafia_PEDS
endenum
ENUM MSF_MISSION_STAGE_FLAGS
msf_0_get_to_warehouse,
msf_1_Stealth_to_roof,
msf_2_fight_rocco,
msf_3_get_to_sol,
msf_4_passed,
MSF_NUM_OF_STAGES
ENDENUM
ENUM MFF_MISSION_FAIL_FLAGS
mff_debug_fail,
mff_rocco_alerted,
mff_rocco_died,
mff_actor_died,
mff_director_died,
mff_player_died,
mff_heli_dead,
mff_scared_peds,
mff_sol_died,
mff_left_Area,
mff_left_peds,
mff_default,
MFF_NUM_OF_FAILS
ENDENUM
Enum STAGE_SWITCHSTATE
STAGESWITCH_IDLE,
STAGESWITCH_REQUESTED,
STAGESWITCH_EXITING,
STAGESWITCH_ENTERING
ENDENUM
enum STEALTH_STAGE
AI_NORM,
AI_CHECKS,
AI_REACTION,
AI_PHONE,
AI_ALARM
endenum
ENUM STEALTH_SITUATION
SSIT_AI_NONE,
SSIT_AI_SPOTTED,
SSIT_AI_GUN,
SSIT_AI_HURT,
SSIT_AI_HEAT
endenum
ENUM DOOR_ENUM
mdf_Walkway_door,
mdf_mid_door,
mdf_Top_door,
mdf_Helipad_door,
mdf_FRONT_GATE_L,
mdf_FRONT_GATE_R,
mdf_Garage_door,
MDF_NUM_OF_DOORS
endenum
ENUM SCARE_TYPE
SCARE_NONE,
SCARE_BRIDGE,
SCARE_CRASH,
SCARE_LOW_FAST,
SCARE_PITCH,
SCARE_HEADING_CHANGE,
SCARE_HEIGHT_DROP,
SCARE_SPEED
endenum
enum ENUM_CONS_OBJS
// cobj_floor_bricks,
cobj_floor_pipes1,
cobj_floor_wood1,
cobj_floor_wood2,
cobj_floor_pipes2,
cobj_floor_gen,
cobj_floor_bitsbox,
cobj_floor_cementbags,
cobj_floor_toolbox,
cobj_floor_torch,
cobj_floor_hat1,
cobj_floor_hat2,
cobj_floor_hat3,
cobj_roof1_toolbox,
cobj_roof1_wirecoil1,
cobj_roof1_wirecoil2,
cobj_roof1_light1,
cobj_roof1_light2,
cobj_roof1_gen,
cobj_roof1_light3,
cobj_roof1_hat,
cobj_ally_light,
cobj_ally_lightbox,
cobj_ally_gen,
cobj_floor2_pipes,
cobj_floor2_barrier1,
cobj_floor2_barrier2,
cobj_roof2_light1,
cobj_roof2_bricks2,
cobj_roof2_gen,
cobj_roof2_light2,
cobj_roof2_light3,
cobj_roof3_light1,
cobj_roof3_lightbox,
cobj_roof3_hardhat1,
cobj_roof3_cementMixer,
cobj_roof3_cementStack,
cobj_roof3_gen,
cobj_roof3_light2,
cobj_roof3_light3,
cobj_roof4_light1,
// cobj_roof4_gen,
cobj_roof4_bitsbox,
cobj_roof4_toolbox,
MAX_NUM_CONST_OBJS
endenum
enum CONSTRUCT_DUP_TYPE
dups_none,
dups_PIPES,
dups_hat,
dups_gen,
dups_partsbox,
dups_toolbox01,
dups_light3b,
dups_light2a,
dups_gen1a,
dups_light4a,
dups_barrier,
dups_gen2a,
dups_light4c,
dups_light4d
endenum
//-----------------------------------------------------------------------------------------------------------
// STRUCTS
//-----------------------------------------------------------------------------------------------------------
STRUCT VEHICLE_STRUCT
VEHICLE_INDEX id
BLIP_INDEX blip
endstruct
Struct PEDS_STRUCT
PED_INDEX id
BLIP_INDEX blip
INT iExitingThisRoom = -1
ENDSTRUCT
struct ENEMY_STRUCT
ped_index id
OBJECT_INDEX obj
OBJECT_INDEX objphone
AI_BLIP_STRUCT blipstruct
bool bkilled
vector vStartLoc
vector vtarget
float fheading
float fBlipRange
float fHearingRange = 12.0
ped_index partner = null
bool bObjAttached = false
bool bOnphone = false
bool bForceBlip = false
STEALTH_SITUATION sit = SSIT_AI_NONE
MODEL_NAMES model = G_M_M_ARMGOON_01
INT iExitingThisRoom = -1
int sDebug
int iVoiceID
string sVoiceName
bool bHeardNoise = false
endstruct
struct CONSTRUCTION_STRUCT
object_index id
model_names model
bool bloaded = false
bool bNeeded = true
float fcreateDist = 40.0
vector vpos
vector vRot
CONSTRUCT_DUP_TYPE dupType = dups_none
endstruct
// Struct used to hold info about doors
STRUCT DOOR_STRUCT
INT iHash
BOOL bChangingState
FLOAT fDesiredOpenRatio
FLOAT fStartOpenRatio
BOOL bDesiredLockState
INT iInterpTime
INT iTimeStamp
BOOL bExistingDoor
ENDSTRUCT
//-----------------------------------------------------------------------------------------------------------
// CONSTANTS
//-----------------------------------------------------------------------------------------------------------
CONST_INT STAGE_ENTRY 0
CONST_INT STAGE_EXIT -1
CONST_FLOAT DOORS_KEEP_CURRENT_RATIO 100.0
CONST_FLOAT HIGH_SPEED_TRIGGER 50.0
CONST_FLOAT LOW_HEIGHT_MAX 9.0
CONST_FLOAT LOW_HEIGHT_SPEED 20.0//23.0 BUG FIX 1399435 reduced speed check
CONST_FLOAT DROP_SPEED -15.0
const_float PITCH_CHANGE 0.9
const_float HEADING_CHANGE 0.9
Vector vMafiaCar = <<956.9126, -1708.0422, 28.9836>>
float hMafiaCar = 355.3881
Vector vheliRoof = <<909.9578, -1680.8170, 50.8435>>
float hHeliRoof = 200.8677
vector vBOXPOS = <<902.91626, -1691.21155, 46.13420>>
vector vBIGVENT = <<884.57086, -1688.17114, 46.13421>>
vector vCROUCHVENT = <<890.91174, -1684.75647, 46.13421>>
vector vMIDVENTSMALL = <<910.14313, -1708.57007, 41.97026>>
vector vMIDVENTBIG = <<901.90808, -1709.95081, 41.97071>>
vector vGianni = <<916.49890, -1699.61768, 50.13412>>
float hGianni = 1.2
//-----------------------------------------------------------------------------------------------------------
// VARIABLES
//-----------------------------------------------------------------------------------------------------------
//BUG FIX 1399354 and 1399344 adding a vector for the players position so we can check for his hieght to stop dialogue playing if player is on ground below.
VECTOR vPlayerCoords
VECTOR vMafiaPedCoords
INT iBridgeCountAtStart, iBridgeCountDuringMission, iLastIncrementTimer //BUG FIX 1399435
INT iHeliHealthStart, iHeliHealthNow
INT iHelpTextTimer
BOOL bDoneFightHelp1, bDoneFightHelp2
BOOL bVehStatsGrabbed //PD - adding this to monitor damage and speed watch on latest player's car
BOOL bHeliStatsGrabbed //PD - added this to check if the Frogger has been added to stats watch
//
LOCATES_HEADER_DATA sLocatesData
VEHICLE_STRUCT Vehs[MVF_NUM_OF_VEH] //holds all of the vehicles for tis level
PEDS_STRUCT peds[MPF_NUM_OF_PEDS] //holds all of the peds for this level
ENEMY_STRUCT Mafia[NUM_OF_Mafia_PEDS]
DOOR_STRUCT sDoors[MDF_NUM_OF_DOORS] // door array
CONSTRUCTION_STRUCT constObjs[MAX_NUM_CONST_OBJS]
int iconstructStage = 0
structPedsForConversation convo_struct //holds peds in the conversation
BLIP_INDEX blip_objective //blip for mission objective
Camera_index cameraIndex //in game cut scene camera
CAMERA_INDEX camFollow
SEQUENCE_INDEX seq //used to create AI sequence
int i
int idelay
int iskipDelay
MODEL_NAMES modelrocco = IG_ROCCOPELOSI
model_names modelpilot = S_M_Y_PILOT_01
MODEL_NAMES modelActor = IG_milton
MODEL_NAMES modelDirector = U_M_Y_ANTONB
MODEL_NAMES modelWorker = S_M_Y_CONSTRUCT_01
MODEL_NAMES modelclipboard = P_AMB_CLIPBOARD_01
Model_names modelPhone = p_amb_phone_01
MODEL_NAMES modelGianni = U_M_Y_GUIDO_01
//------------------------------ RELATIONSHIPS --------------------------------------------------
REL_GROUP_HASH rel_group_enemies
REL_GROUP_HASH rel_friends
//-------------- heli -----------------
bool bsearchlights = false
int iScareStage = 0
int iScareInt = 0
int iScareTimer2
bool bPlayChat = false
bool bScareHeliWarn = false
SHAPETEST_INDEX shapetestheli = null
INT iShapetestResult
VECTOR vecShapetestResult
VECTOR vecShapetestNormal
ENTITY_INDEX hitEntity
//--------------- AI --------------------
STEALTH_STAGE eAI_stage
PED_INDEX Active_ped
WEAPON_TYPE wcurrent
int iRand
int iflinch = 0
int iseen = 0
int IphoneTimer
int iPhoningChat
int iPhoneCheckBackupTimer
bool bAloneWorkerActive = false
string AnimDict_gestures = "amb@world_human_hang_out_Street@male_a@idle_a"
string animDict_kneel_enter = "amb@medic@standing@kneel@enter"
string animDict_kneel_Idle = "amb@medic@standing@kneel@idle_a"
string animDict_kneel_exit = "amb@medic@standing@kneel@exit"
string AnimDict_flinch = "REACTION@MALE_STAND@BIG_INTRO@FORWARD"
string AnimDict_ClipBoard = "amb@world_human_clipboard@male@idle_a"
string AnimDict_PHONE = "cellphone@str"
string animPhone = "cellphone_call_listen_c"
int iAimDelay
int iGunOutDelay
int ifloorspot = 0
int ifloortimer
//------------ALARM--------------
bool bFirstAlerted = false
//------------- FAIL ------------------
bool bLeftfight
bool bfailWarning = false
bool bfailAntonWarning = FALSE
bool bfailMiltonWarning = FALSE
//------------AUDIO--------------
int i_dialogueTimer
int iDialogue_Stage = 0
int iCarSpeechStage = 0
int iwalkwaychat = 0
int iGianniChat = 0
bool bpauseconv = false
bool bDoWalkwayChat = false
bool bMusic_1stEnemy = false
bool bMusic_HeliTrigger = false
bool bMusic_Ends = false
bool bcueTakeOff = false
int iambdialoguetimer
bool bChooseActor = true
//---------------CS--------------------
bool b_cutscene_loaded = false
bool bcs_cam = false
bool bcs_mike = false
bool bcs_actor = false
bool bcs_director = false
bool bcs_rocco = false
bool bcs_goon = false
bool bcs_heli = false
bool bPlaceholder = false
int iskipCS = 0
//------- lead in ---------
bool bSolomonCreated = false
//============================== streaming ==============================
ASSET_MANAGEMENT_DATA sAssetData
CUTSCENE_PED_VARIATION sCutscenePedVariationRegister[MPF_NUM_OF_PEDS]
bool bStageLoaded = false
bool bStageLoaded2 = false
bool bloadCar1 = false
bool bCreateCar1 = false
bool bloadMixer = false
bool bCreateMixer = false
bool bloadForklift = false
bool bCreateForklift = false
bool bStartConstructionChecks = false
bool bstreamloaded = false
bool bLoadMusicStream = false
//----------------
//----------------Stage Management and skip stuff
STAGE_SWITCHSTATE stageswitch //current switching status
INT mission_stage //current stage
INT mission_substage //current substage
INT requestedStage //the mission stage requested by a mission_stage switch
INT iStageTimer //timer used for debug
Bool bDoSkip //trigger the skip
INT iSkipToStage //the stage to skip to
//----------------//----------------//----------------//----------------
#if IS_DEBUG_BUILD
MissionStageMenuTextStruct zMenuNames[MSF_NUM_OF_STAGES]
WIDGET_GROUP_ID widget_debug
float debug_noise
int wAI_stage
#endif
// ===========================================================================================================
// Termination
// ===========================================================================================================
func bool isentityalive(entity_index entity)
if does_entity_exist(entity)
if is_entity_a_vehicle(entity)
if is_vehicle_driveable(get_vehicle_index_from_entity_index(entity))
return true
endif
elif is_entity_a_ped(entity)
if not is_ped_injured(get_ped_index_from_entity_index(entity))
return true
endif
elif IS_ENTITY_AN_OBJECT(entity)
return true
endif
endif
return false
endfunc
func ped_index mike()
return peds[mpf_mike].id
endfunc
func ped_index Milton()
return peds[mpf_milton].id
endfunc
func ped_index Anton()
return peds[mpf_Anton].id
endfunc
func ped_index rocco()
return peds[mpf_rocco].id
endfunc
func ped_index sol()
return peds[mpf_sol].id
endfunc
func ped_index Gianni()
return peds[mpf_Gianni].id
endfunc
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
// -----------------------------------------------------------------------------------------------------------
// LOADING
// -----------------------------------------------------------------------------------------------------------
PROC LOAD_ASSET_STAGE(MSF_MISSION_STAGE_FLAGS LOADSTAGE)
SWITCH LOADSTAGE
CASE msf_0_get_to_warehouse
Load_Asset_Model(sAssetData,CAVALCADE2)
load_Asset_model(sAssetdata,COQUETTE)
BREAK
CASE msf_1_Stealth_to_roof
LOAD_ASSET_MODEL(sAssetData,FROGGER)
LOAD_ASSET_MODEL(sAssetData,G_M_M_ARMGOON_01)
LOAD_ASSET_MODEL(sAssetData,modelGianni)
LOAD_ASSET_MODEL(sAssetData,modelWorker)
load_asset_model(sAssetData,modelActor)
load_asset_model(sAssetData,modelDirector)
Load_Asset_Model(sAssetData,modelclipboard)
Load_Asset_Model(sAssetData,modelPhone)
Load_Asset_AnimDict(sAssetData,animDict_kneel_enter)
Load_Asset_AnimDict(sAssetData,animDict_kneel_Idle)
Load_Asset_AnimDict(sAssetData,animDict_kneel_exit)
Load_Asset_AnimDict(sAssetData,AnimDict_gestures)
Load_Asset_AnimDict(sAssetData,AnimDict_flinch)
Load_Asset_AnimDict(sAssetData, AnimDict_ClipBoard)
Load_Asset_AnimDict(sAssetData, AnimDict_PHONE)
BREAK
case msf_2_fight_rocco
LOAD_ASSET_MODEL(sAssetData,FROGGER)
load_asset_model(sAssetData,modelrocco)
load_asset_model(sAssetData,modelpilot)
load_asset_model(sAssetData,modelActor)
load_asset_model(sAssetData,modelDirector)
Load_Asset_Model(sAssetData,modelclipboard)
Load_Asset_AnimDict(sAssetData,AnimDict_flinch)
break
case msf_3_get_to_sol
LOAD_ASSET_MODEL(sAssetData,FROGGER)
load_asset_model(sAssetData,modelActor)
load_asset_model(sAssetData,modelDirector)
Load_Asset_Model(sAssetData,modelclipboard)
break
CASE msf_4_passed
break
ENDSWITCH
ENDPROC
// -----------------------------------------------------------------------------------------------------------
// Mission Helpers
// -----------------------------------------------------------------------------------------------------------
proc init_enemy_data()
//--------------------------START LOCATION----------------------------------
//Mafia peds
Mafia[maf_car].vStartLoc = <<956.28088, -1704.83215, 28.77425>>//next to car
Mafia[maf_car].fheading = 329.4887//-23.67 BUG FIX 1399373
Mafia[maf_car].fBlipRange = 24
Mafia[maf_car].fHearingRange = 20.5
Mafia[maf_car_talking].vStartLoc = <<957.24054, -1705.40430, 28.83121>>//next to car talking
Mafia[maf_car_talking].fheading = 12.8746//66.44 BUG FIX 1399373
Mafia[maf_car_talking].fBlipRange = 29
Mafia[maf_car_talking].fHearingRange = 20.5
Mafia[maf_worker_top].vStartLoc = <<904.58276, -1686.67871, 46.35751>>//top door
Mafia[maf_worker_top].fheading = 83.33
Mafia[maf_worker_top].fBlipRange = 29
Mafia[maf_walkway_door].vStartLoc = <<915.91370, -1692.07397, 42.15242>>//walkway door
Mafia[maf_walkway_door].fheading = -95.93
Mafia[maf_walkway_door].fBlipRange = 30
Mafia[maf_worker_walkway].vStartLoc = <<914.42017, -1692.38306, 42.15268>> //walkwayroof inside door
Mafia[maf_worker_walkway].fheading = -93.72
Mafia[maf_worker_walkway].fBlipRange = 30
Mafia[maf_worker_alone].vStartLoc = <<924.50854, -1720.03943, 37.06301>>//construction worker on roof
Mafia[maf_worker_alone].fheading = 88.84
Mafia[maf_worker_alone].fBlipRange = 27
Mafia[maf_worker_alone].fHearingRange = 7
Mafia[maf_worker_vent].vStartLoc = <<888.13782, -1714.93701, 37.06277>>//alone next to vent
Mafia[maf_worker_vent].fheading = -87.91
Mafia[maf_worker_vent].fHearingRange = 4.7
Mafia[maf_worker_vent].fBlipRange = 16
Mafia[maf_worker_door].vStartLoc = <<906.9767, -1696.8409, 42.1162>> //mid door
Mafia[maf_worker_door].fheading = 171.9180
Mafia[maf_worker_door].fBlipRange = 26
//VOICES CONSTRUCTION1 = 4 CONSTRUCTION2 = 3 CONSTRUCTION3 = 5
Mafia[maf_car].iVoiceID = 3
Mafia[maf_car].sVoiceName = "CONSTRUCTION2"
Mafia[maf_car_talking].iVoiceID = 4
Mafia[maf_car_talking].sVoiceName = "CONSTRUCTION1"
Mafia[maf_worker_alone].iVoiceID = 3
Mafia[maf_worker_alone].sVoiceName = "CONSTRUCTION2"
Mafia[maf_worker_door].iVoiceID = 5
Mafia[maf_worker_door].sVoiceName = "CONSTRUCTION3"
Mafia[maf_worker_walkway].iVoiceID = 3
Mafia[maf_worker_walkway].sVoiceName = "CONSTRUCTION2"
Mafia[maf_walkway_door].iVoiceID = 5
Mafia[maf_walkway_door].sVoiceName = "CONSTRUCTION3"
Mafia[maf_worker_vent].iVoiceID = 4
Mafia[maf_worker_vent].sVoiceName = "CONSTRUCTION1"
Mafia[maf_worker_top].iVoiceID = 3
Mafia[maf_worker_top].sVoiceName = "CONSTRUCTION2"
endproc
// ===================================================== DOOR MANAGEMENT =======================================================================
//PURPOSE: Adds a new door to the doors array
PROC Doors_Add_New(DOOR_ENUM slot, VECTOR vCoord, MODEL_NAMES model, BOOL bResetDoor = FALSE)
TEXT_LABEL_23 strDoorName = "SOL1_DOOR_"
strDoorName += ENUM_TO_INT(slot)
sDoors[slot].iHash = GET_HASH_KEY(strDoorName)
ADD_DOOR_TO_SYSTEM(sDoors[slot].iHash, model, vCoord, FALSE)
IF bResetDoor
DOOR_SYSTEM_SET_OPEN_RATIO(sDoors[slot].iHash, 1.0)
DOOR_SYSTEM_SET_DOOR_STATE(sDoors[slot].iHash, DOORSTATE_FORCE_CLOSED_THIS_FRAME)
DOOR_SYSTEM_SET_DOOR_STATE(sDoors[slot].iHash, DOORSTATE_FORCE_LOCKED_THIS_FRAME)
ENDIF
ENDPROC
FUNC BOOL Is_Door_LockState_Locked(DOOR_STATE_ENUM eDoorState)
IF eDoorState = DOORSTATE_LOCKED
OR eDoorState = DOORSTATE_FORCE_LOCKED_THIS_FRAME
OR eDoorState = DOORSTATE_FORCE_LOCKED_UNTIL_OUT_OF_AREA
RETURN TRUE
ELSE
RETURN FALSE
ENDIF
ENDFUNC
//BUG FIX 1399435
FUNC INT CHECK_BRIDGE_COMPLETION()
INT completeCount, iTemp
VECTOR vClosestNode, vHeliCoords
FLOAT fHeliMaxRange_X, fHeliMinRange_X, fHeliMaxRange_Y, fHeliMinRange_Y
REPEAT 32 iTemp
IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags, iTemp)
completeCount++
ENDIF
IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags2, iTemp)
completeCount++
ENDIF
IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags3, iTemp)
completeCount++
ENDIF
ENDREPEAT
//Check to see if there is a vehicle node above the player. This will suggest that the player is flying under a road.
IF GET_CLOSEST_VEHICLE_NODE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehs[mvf_heli].id, <<0,0,5>>), vClosestNode)
vHeliCoords = GET_ENTITY_COORDS(PLAYER_PED_ID())
fHeliMaxRange_X = (vHeliCoords.x + 4)
fHeliMinRange_X = (vHeliCoords.x - 4)
fHeliMaxRange_Y = (vHeliCoords.y + 4)
fHeliMinRange_Y = (vHeliCoords.y - 4)
IF VclosestNode.z > vHeliCoords.z
IF VclosestNode.x <= fHeliMaxRange_X
AND VclosestNode.x >= fHeliMinRange_X
AND VclosestNode.y <= fHeliMaxRange_Y
AND VclosestNode.y >= fHeliMinRange_Y
AND GET_GAME_TIMER() > (iLastIncrementTimer + 8000)
iLastIncrementTimer = GET_GAME_TIMER()
PRINTSTRING("player passing under road bridge")
completeCount++
ENDIF
ENDIF
ENDIF
RETURN completeCount
ENDFUNC
//PURPOSE: Changes the state of the door
PROC Doors_Set_State(DOOR_ENUM eDoor, BOOL lockState, FLOAT openRatio, INT iTime = 0)
IF sDoors[eDoor].iHash != 0
// No update over time, do NOW!
IF iTime <= 0
IF openRatio != DOORS_KEEP_CURRENT_RATIO
DOOR_SYSTEM_SET_OPEN_RATIO(sDoors[eDoor].iHash, openRatio, FALSE, TRUE)
ENDIF
IF lockState
DOOR_SYSTEM_SET_DOOR_STATE(sDoors[eDoor].iHash, DOORSTATE_LOCKED, FALSE, TRUE)
ELSE
DOOR_SYSTEM_SET_DOOR_STATE(sDoors[eDoor].iHash, DOORSTATE_UNLOCKED, FALSE, TRUE)
ENDIF
sDoors[eDoor].iTimeStamp = 0
sDoors[eDoor].iInterpTime = 0
// Needs updating over time, mark for frame by frame update
ELIF openRatio != DOORS_KEEP_CURRENT_RATIO
sDoors[eDoor].bChangingState = TRUE
sDoors[eDoor].bDesiredLockState = lockState
sDoors[eDoor].fDesiredOpenRatio = openRatio
sDoors[eDoor].iTimeStamp = GET_GAME_TIMER()
sDoors[eDoor].iInterpTime = iTime
sDoors[eDoor].fStartOpenRatio = DOOR_SYSTEM_GET_OPEN_RATIO(sDoors[eDoor].iHash)
ELSE
SCRIPT_ASSERT("DOOR_SYSTEM: CANNOT OPEN DOOR OVER TIME TO KEEP THE SAME DOOR RATIO, POINTLESS!")
ENDIF
ENDIF
ENDPROC
//PURPOSE: Obtains the state of the door
PROC Doors_Get_State(DOOR_ENUM eDoor, BOOL &bLockState, FLOAT &fOpenRatio)
IF sDoors[eDoor].iHash != 0
fOpenRatio = DOOR_SYSTEM_GET_OPEN_RATIO(sDoors[eDoor].iHash)
DOOR_STATE_ENUM eDoorState = DOOR_SYSTEM_GET_DOOR_STATE(sDoors[eDoor].iHash)
bLockState = Is_Door_LockState_Locked(eDoorState)
ENDIF
ENDPROC
//
//PURPOSE: Initialises the door structs
PROC Doors_Initialise()
Doors_Add_New(mdf_Walkway_door, << 918.1691,-1693.1252,43.2220 >>, PROP_MAP_DOOR_01, TRUE)
Doors_Add_New(mdf_mid_door, << 905.9557,-1699.7339,43.3106 >>, PROP_PRIS_DOOR_02, TRUE)
Doors_Add_New(mdf_Top_door, << 901.2440,-1687.1495,47.4301 >>, PROP_MAP_DOOR_01, TRUE)
Doors_Add_New(mdf_Helipad_door, << 916.4495,-1700.7896,51.3335 >>, PROP_MAP_DOOR_01, TRUE)
Doors_Add_New(mdf_FRONT_GATE_R, << 965.4849,-1738.3374,31.3419 >>, PROP_FACGATE_03_L, TRUE)
Doors_Add_New(mdf_FRONT_GATE_L, << 955.4418,-1737.4674,31.3485 >>, PROP_FACGATE_03_L, TRUE)
Doors_Add_New(mdf_Garage_door, << 950.7746,-1698.2271,31.4447 >>, PROP_GAR_DOOR_04, TRUE)
ENDPROC
//PURPOSE: Resets all the doors streamed in
PROC Doors_Reset_All()
INT x
REPEAT COUNT_OF(sDoors) x
IF sDoors[x].iHash != 0
DOOR_SYSTEM_SET_OPEN_RATIO(sDoors[x].iHash, 0.0, FALSE, TRUE)
DOOR_SYSTEM_SET_DOOR_STATE(sDoors[x].iHash, DOORSTATE_UNLOCKED, FALSE, TRUE)
ENDIF
sDoors[x].bChangingState = FALSE
sDoors[x].iInterpTime = 0
sDoors[x].iTimeStamp = 0
sDoors[x].fDesiredOpenRatio = 0.0
sDoors[x].bDesiredLockState = FALSE
sDoors[x].fStartOpenRatio = 0.0
ENDREPEAT
ENDPROC
//PURPOSE: Manage locking and opening of doors
PROC Manage_Doors()
INT idoor
FOR idoor = 0 TO enum_to_int(MDF_NUM_OF_DOORS) -1
IF sDoors[idoor].iHash != 0
AND sDoors[idoor].bChangingState
BOOL bLockState = FALSE
FLOAT fOpenRatio = 0.0
Doors_Get_State(int_to_enum(DOOR_ENUM, idoor), bLockState, fOpenRatio)
// If state does not match then update to new state
IF bLockState != sDoors[idoor].bDesiredLockState
OR fOpenRatio != sDoors[idoor].fDesiredOpenRatio
IF sDoors[idoor].iInterpTime > 0
AND sDoors[idoor].iTimeStamp > 0
FLOAT fInterpProg = CLAMP((GET_GAME_TIMER() - sDoors[idoor].iTimeStamp)/TO_FLOAT(sDoors[idoor].iInterpTime), 0.0, 1.0)
IF fInterpProg != 1.0
// change in progress
fOpenRatio = sDoors[idoor].fStartOpenRatio + (fInterpProg * (sDoors[idoor].fDesiredOpenRatio - sDoors[idoor].fStartOpenRatio))
bLockState = TRUE
ELSE
// door finished
bLockState = sDoors[idoor].bDesiredLockState
fOpenRatio = sDoors[idoor].fDesiredOpenRatio
sDoors[idoor].bChangingState = FALSE
sDoors[idoor].iInterpTime = 0
sDoors[idoor].iTimeStamp = 0
sDoors[idoor].bChangingState = FALSE
ENDIF
ELSE
// Set to the desired values as no time was present
IF sDoors[idoor].bDesiredLockState
bLockState = TRUE
ELSE
bLockState = FALSE
ENDIF
fOpenRatio = sDoors[idoor].fDesiredOpenRatio
sDoors[idoor].iInterpTime = 0
sDoors[idoor].iTimeStamp = 0
sDoors[idoor].bChangingState = FALSE
ENDIF
IF fOpenRatio != DOORS_KEEP_CURRENT_RATIO
DOOR_SYSTEM_SET_OPEN_RATIO(sDoors[idoor].iHash, fOpenRatio, FALSE, TRUE)
ENDIF
// Set the door
IF bLockState
DOOR_SYSTEM_SET_DOOR_STATE(sDoors[idoor].iHash, DOORSTATE_LOCKED, FALSE, TRUE)
ELSE
DOOR_SYSTEM_SET_DOOR_STATE(sDoors[idoor].iHash, DOORSTATE_UNLOCKED, FALSE, TRUE)
ENDIF
ELSE
DOOR_SYSTEM_SET_OPEN_RATIO(sDoors[idoor].iHash, fOpenRatio, FALSE, TRUE)
// Set the door
IF bLockState
DOOR_SYSTEM_SET_DOOR_STATE(sDoors[idoor].iHash, DOORSTATE_LOCKED, FALSE, TRUE)
ELSE
DOOR_SYSTEM_SET_DOOR_STATE(sDoors[idoor].iHash, DOORSTATE_UNLOCKED, FALSE, TRUE)
ENDIF
// door already in the desired stage
sDoors[idoor].iInterpTime = 0
sDoors[idoor].iTimeStamp = 0
sDoors[idoor].bChangingState = FALSE
ENDIF
ENDIF
ENDFOR
ENDPROC
//PURPOSE: Manages locking and unlocking the doors of the fake rooms once peds have left/entered the room. Additionally it also blips peds as they exit the fake rooms and into the main room.
PROC Manage_Stealth_Door_Locks()
INT x
BOOL bUnlockWalkWay, bUnlockMid, bUnlockTop, bUnlockHelipad
REPEAT COUNT_OF(mafia) x
IF isentityalive(mafia[x].id)
// walkway
IF IS_ENTITY_IN_ANGLED_AREA(mafia[x].id, <<918.52936, -1691.67383, 42.11221>>, <<913.47546, -1691.28894, 45.00836>>, 3.25) // ROOM LOCATE
or IS_ENTITY_IN_ANGLED_AREA(player_ped_id(), <<918.52936, -1691.67383, 42.11221>>, <<913.47546, -1691.28894, 45.00836>>, 3.25) // ROOM LOCATE
mafia[x].iExitingThisRoom = 1
bUnlockWalkWay = TRUE
ELIF mafia[x].iExitingThisRoom = 1
// still too close to the door
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(mafia[x].id), <<918.23669, -1692.44238, 42.15291>>, false) <= 2.0 // DOORWAY LOCATE
bUnlockWalkWay = TRUE
ELSE
// reset
mafia[x].iExitingThisRoom = -1
ENDIF
ENDIF
// Mid
IF IS_ENTITY_IN_ANGLED_AREA(mafia[x].id, <<906.56635, -1700.03198, 44.46795>>, <<906.90106, -1695.90137, 42.11657>>, 1.6) // ROOM LOCATE
or IS_ENTITY_IN_ANGLED_AREA(player_ped_id(), <<906.56635, -1700.03198, 44.46795>>, <<906.90106, -1695.90137, 42.11657>>, 1.6)
mafia[x].iExitingThisRoom = 2
bUnlockMid = TRUE
ELIF mafia[x].iExitingThisRoom = 2
// still too close to the door
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(mafia[x].id), <<906.58875, -1699.84241, 42.15248>>, false) <= 2.0 // DOORWAY LOCATE
bUnlockMid = TRUE
ELSE
// reset
mafia[x].iExitingThisRoom = -1
ENDIF
ENDIF
// top
IF IS_ENTITY_IN_ANGLED_AREA(mafia[x].id, <<900.85522, -1687.26392, 46.14490>>, <<905.75562, -1687.79346, 49.13612>>, 3.5)
or IS_ENTITY_IN_ANGLED_AREA(player_ped_id(),<<900.85522, -1687.26392, 46.14490>>, <<905.75562, -1687.79346, 49.13612>>, 3.5)
mafia[x].iExitingThisRoom = 3
bUnlockTop = TRUE
ELIF mafia[x].iExitingThisRoom = 3
// still too close to the door
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(mafia[x].id), <<901.11060, -1686.51807, 46.35753>> , false) <= 2.5 // DOORWAY LOCATE
or GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(player_ped_id()), <<901.11060, -1686.51807, 46.35753>> , false) <= 3.0 // DOORWAY LOCATE
bUnlockTop = TRUE
ELSE
// reset
mafia[x].iExitingThisRoom = -1
ENDIF
ENDIF
ENDIF
if mafia[x].iExitingThisRoom <> -1
if isentityalive(mafia[x].id)
SET_PED_RESET_FLAG(mafia[x].id,PRF_SearchForClosestDoor,true)
SET_PED_RESET_FLAG(mafia[x].id,PRF_IgnoreNavigationForDoorArmIK ,true)
endif
endif
ENDREPEAT
// Main doors
if isentityalive(peds[mpf_rocco].id)
IF IS_ENTITY_IN_ANGLED_AREA(peds[mpf_rocco].id, <<915.59467, -1703.85645, 50.26351>>, <<915.77411, -1700.83813, 53.61048>>, 5.562500)
peds[mpf_rocco].iExitingThisRoom = 4
bUnlockHelipad = TRUE
ELIF peds[mpf_rocco].iExitingThisRoom = 4
// still too close to the door
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(peds[mpf_rocco].id), <<915.84570, -1700.80469, 50.26309>> , false) <= 2.5 // DOORWAY LOCATE
bUnlockHelipad = TRUE
ELSE
// reset
peds[mpf_rocco].iExitingThisRoom = -1
ENDIF
ENDIF
endif
if isentityalive(peds[mpf_pilot].id)
IF IS_ENTITY_IN_ANGLED_AREA(peds[mpf_pilot].id, <<915.59467, -1703.85645, 50.26351>>, <<915.77411, -1700.83813, 53.61048>>, 2.11)
peds[mpf_pilot].iExitingThisRoom = 4
bUnlockHelipad = TRUE
ELIF peds[mpf_pilot].iExitingThisRoom = 4
// still too close to the door
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(peds[mpf_pilot].id), <<915.84570, -1700.80469, 50.26309>> , false) <= 2.5 // DOORWAY LOCATE
bUnlockHelipad = TRUE
ELSE
// reset
peds[mpf_pilot].iExitingThisRoom = -1
ENDIF
ENDIF
endif
IF bUnlockWalkWay
Doors_Set_State(mdf_Walkway_door, FALSE, DOORS_KEEP_CURRENT_RATIO)
ELSE
Doors_Set_State(mdf_Walkway_door, TRUE, 0.0, 500)
ENDIF
IF bUnlockmid
Doors_Set_State(mdf_mid_door, FALSE, DOORS_KEEP_CURRENT_RATIO)
ELSE
Doors_Set_State(mdf_mid_door, TRUE, 0.0, 500)
ENDIF
IF bUnlockTop
Doors_Set_State(mdf_Top_door, FALSE, DOORS_KEEP_CURRENT_RATIO)
ELSE//
Doors_Set_State(mdf_Top_door, TRUE, 0.0, 600)
ENDIF
IF bUnlockHelipad
Doors_Set_State(mdf_Helipad_door, FALSE, DOORS_KEEP_CURRENT_RATIO)
ELSE
Doors_Set_State(mdf_Helipad_door, TRUE, 0.0, 500)
ENDIF
Doors_Set_State(mdf_FRONT_GATE_R,true,0,500)
Doors_Set_State(mdf_FRONT_GATE_L,true,0,500)
Doors_Set_State(mdf_Garage_door,true,0,500)
ENDPROC
proc Task_perform_Normal_seq(eEnemies_Mafia mafped)
//===================== ===================== ===================== =====================
if mafped = maf_car
OPEN_SEQUENCE_TASK(seq)
if not IS_ENTITY_AT_COORD(mafia[maf_car].id,mafia[maf_car].vStartLoc,<<1,1,1>>)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,mafia[maf_car].vStartLoc,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_SUPPRESS_EXACT_STOP)
endif
// if not IS_PED_HEADING_TOWARDS_POSITION(mafia[maf_car].id,<<956.77148, -1703.71277, 28.70344>>,40)
// TASK_TURN_PED_TO_FACE_COORD(null,<<956.77148, -1703.71277, 28.70344>>) //BUG FIX 1399373
// endif
if GET_ENTITY_HEADING(mafia[maf_car].id) <> Mafia[maf_car].fheading
TASK_ACHIEVE_HEADING(NULL, Mafia[maf_car].fheading) //BUG FIX 1399373
endif
if not IS_PED_HEADTRACKING_PED(mafia[maf_car].id,mafia[maf_car].partner)
TASK_LOOK_AT_ENTITY(null,mafia[maf_car].partner,-1,SLF_WHILE_NOT_IN_FOV| SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT)
endif
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_b",WALK_BLEND_IN)
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_d")
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_e",NORMAL_BLEND_IN,WALK_BLEND_OUT)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[maf_car].id,seq)
CLEAR_SEQUENCE_TASK(seq)
elif mafped = maf_car_talking
OPEN_SEQUENCE_TASK(seq)
if not IS_ENTITY_AT_COORD(mafia[maf_car_talking].id,mafia[maf_car_talking].vStartLoc,<<1,1,1>>)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,mafia[maf_car_talking].vStartLoc,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_SUPPRESS_EXACT_STOP)
endif
// if not IS_PED_FACING_PED(mafia[maf_car_talking].id,mafia[maf_car_talking].partner,40)
// //TASK_TURN_PED_TO_FACE_ENTITY(null,mafia[maf_car_talking].partner) //BUG FIX 1399373
// TASK_ACHIEVE_HEADING(NULL, Mafia[maf_car_talking].fheading)
// endif
if GET_ENTITY_HEADING(mafia[maf_car_talking].id) <> Mafia[maf_car_talking].fheading
TASK_ACHIEVE_HEADING(NULL, Mafia[maf_car_talking].fheading) //BUG FIX 1399373
endif
if not IS_PED_HEADTRACKING_PED(mafia[maf_car_talking].id,mafia[maf_car_talking].partner)
TASK_LOOK_AT_ENTITY(null,mafia[maf_car_talking].partner,-1,SLF_WHILE_NOT_IN_FOV| SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT)
endif
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_a",WALK_BLEND_IN)
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_c")
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_b",NORMAL_BLEND_IN,WALK_BLEND_OUT)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[maf_car_talking].id,seq)
CLEAR_SEQUENCE_TASK(seq)
//===================== ===================== ===================== =====================
elif mafped = maf_walkway_door
OPEN_SEQUENCE_TASK(seq)
TASK_LOOK_AT_ENTITY(null,mafia[maf_walkway_door].partner,-1,SLF_WHILE_NOT_IN_FOV| SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT)
//at right vent
if IS_ENTITY_AT_COORD(mafia[maf_walkway_door].id,<<943.27026, -1680.55713, 41.06182>>,<<4,4,4>>)
SET_PED_RESET_FLAG(mafia[maf_walkway_door].id,PRF_SearchForClosestDoor,FALSE)
if IS_ENTITY_AT_COORD(mafia[maf_walkway_door].partner,<<945.01746, -1679.36267, 41.06182>>,<<4,4,4>>)
if not IS_PED_HEADING_TOWARDS_POSITION(mafia[maf_walkway_door].id,<<945.01746, -1679.36267, 41.06182>>,30)
TASK_TURN_PED_TO_FACE_COORD(null,<<945.01746, -1679.36267, 41.06182>>)
endif
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_b",WALK_BLEND_in)
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_a")
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_c")
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_a")
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_b",NORMAL_BLEND_IN,WALK_BLEND_OUT)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<939.12335, -1692.30664, 41.06182>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT)
Mafia[maf_walkway_door].vtarget = <<939.12335, -1692.30664, 41.06182>>
bDoWalkwayChat = true
else
TASK_TURN_PED_TO_FACE_ENTITY(null,mafia[maf_walkway_door].partner)
endif
//at stairs
elif IS_ENTITY_AT_COORD(mafia[maf_walkway_door].id,<<937.74927, -1693.96704, 41.06182>>,<<3,3,3>>)
if IS_ENTITY_AT_COORD(mafia[maf_walkway_door].partner,<<937.74927, -1693.96704, 41.06182>>,<<3,3,3>>)
if not IS_PED_FACING_PED(mafia[maf_walkway_door].id,mafia[maf_walkway_door].partner,30)
TASK_TURN_PED_TO_FACE_ENTITY(null,mafia[maf_walkway_door].partner)
endif
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_c",WALK_BLEND_in)
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_a")
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_b",NORMAL_BLEND_IN,WALK_BLEND_OUT)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<940.02069, -1698.03931, 41.06182>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT)
Mafia[maf_walkway_door].vtarget = <<940.02069, -1698.03931, 41.06182>>
bDoWalkwayChat = true
else
TASK_TURN_PED_TO_FACE_ENTITY(null,mafia[maf_walkway_door].partner)
endif
//at left vent
elif IS_ENTITY_AT_COORD(mafia[maf_walkway_door].id,<<937.99335, -1700.34326, 41.06182>>,<<4,4,4>>)
if IS_ENTITY_AT_COORD(mafia[maf_walkway_door].partner,<<937.99335, -1700.34326, 41.06182>>,<<4,4,4>>)
if not IS_PED_FACING_PED(mafia[maf_walkway_door].id,mafia[maf_walkway_door].partner,30)
TASK_TURN_PED_TO_FACE_ENTITY(null,mafia[maf_walkway_door].partner)
endif
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_e",WALK_BLEND_in)
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_a")
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_c")
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_b")
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_d",NORMAL_BLEND_IN,WALK_BLEND_OUT)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<943.27026, -1680.55713, 41.06182>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT)
Mafia[maf_walkway_door].vtarget = <<943.27026, -1680.55713, 41.06182>>
bDoWalkwayChat = true
else
TASK_TURN_PED_TO_FACE_ENTITY(null,mafia[maf_walkway_door].partner)
endif
else
TASK_FOLLOW_NAV_MESH_TO_COORD(null,Mafia[maf_walkway_door].vtarget,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT)
endif
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[maf_walkway_door].id,seq)
CLEAR_SEQUENCE_TASK(seq)
//===================== ===================== ===================== =====================
elif mafped = maf_worker_walkway
OPEN_SEQUENCE_TASK(seq)
TASK_LOOK_AT_ENTITY(null,mafia[maf_worker_walkway].partner,-1)
//at right vent
if IS_ENTITY_AT_COORD(mafia[maf_worker_walkway].id,<<945.01746, -1679.36267, 41.06182>>,<<4,4,4>>)
SET_PED_RESET_FLAG(mafia[maf_worker_walkway].id,PRF_SearchForClosestDoor,FALSE)
if IS_ENTITY_AT_COORD(mafia[maf_worker_walkway].partner,<<943.27026, -1680.55713, 41.06182>>,<<4,4,4>>)
TASK_TURN_PED_TO_FACE_COORD(null,<<945.24200, -1676.69360, 41.06182>>)
TASK_PLAY_ANIM(null,animDict_kneel_enter,"enter",walk_BLEND_IN,NORMAL_BLEND_OUT)
TASK_PLAY_ANIM(null,animDict_kneel_Idle,"idle_b",normal_BLEND_IN,NORMAL_BLEND_OUT)
TASK_PLAY_ANIM(null,animDict_kneel_exit,"exit",normal_BLEND_IN,walk_BLEND_OUT)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<937.41699, -1694.07996, 41.06182>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT)
Mafia[maf_worker_walkway].vtarget = <<937.41699, -1694.07996, 41.06182>>
else
TASK_TURN_PED_TO_FACE_ENTITY(null,mafia[maf_worker_walkway].partner)
endif
//at stairs
elif IS_ENTITY_AT_COORD(mafia[maf_worker_walkway].id,<<937.74927, -1693.96704, 41.06182>>,<<3,3,3>>)
if IS_ENTITY_AT_COORD(mafia[maf_worker_walkway].partner,<<937.74927, -1693.96704, 41.06182>>,<<3,3,3>>)
if not IS_PED_FACING_PED(mafia[maf_worker_walkway].id,mafia[maf_worker_walkway].partner,30)
TASK_TURN_PED_TO_FACE_ENTITY(null,mafia[maf_worker_walkway].partner)
endif
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_d",walk_BLEND_IN)
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_c")
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_e",normal_BLEND_IN,walk_BLEND_OUT)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<936.80951, -1701.27502, 41.06182>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT)
Mafia[maf_worker_walkway].vtarget = <<936.80951, -1701.27502, 41.06182>>
else
TASK_TURN_PED_TO_FACE_ENTITY(null,Mafia[maf_worker_walkway].id)
endif
//at left vent
elif IS_ENTITY_AT_COORD(mafia[maf_worker_walkway].id,<<937.99335, -1700.34326, 41.06182>>,<<4,4,4>>)
if IS_ENTITY_AT_COORD(mafia[maf_worker_walkway].partner,<<937.99335, -1700.34326, 41.06182>>,<<4,4,4>>)
TASK_TURN_PED_TO_FACE_COORD(null,<<937.13586, -1699.16711, 42.38544>>)
TASK_PLAY_ANIM(null,animDict_kneel_enter,"enter",walk_BLEND_IN,NORMAL_BLEND_OUT)
TASK_PLAY_ANIM(null,animDict_kneel_Idle,"idle_a",normal_BLEND_IN,NORMAL_BLEND_OUT)
TASK_PLAY_ANIM(null,animDict_kneel_exit,"exit",normal_BLEND_IN,walk_BLEND_OUT)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<945.01746, -1679.36267, 41.06182>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT)
Mafia[maf_worker_walkway].vtarget = <<945.01746, -1679.36267, 41.06182>>
else
TASK_TURN_PED_TO_FACE_ENTITY(null,Mafia[maf_worker_walkway].partner)
endif
else
TASK_FOLLOW_NAV_MESH_TO_COORD(null,Mafia[maf_worker_walkway].vtarget,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT)
endif
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[maf_worker_walkway].id,seq)
CLEAR_SEQUENCE_TASK(seq)
//===================== ===================== ===================== =====================
elif mafped = maf_worker_top
OPEN_SEQUENCE_TASK(seq)
//big vent
if IS_ENTITY_AT_COORD(mafia[maf_worker_top].id,vBIGVENT,<<2,2,2>>)
SET_PED_RESET_FLAG(mafia[maf_worker_top].id,PRF_SearchForClosestDoor,FALSE)
CLEAR_PED_SECONDARY_TASK(mafia[maf_worker_top].id)
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_a",WALK_BLEND_IN,NORMAL_BLEND_OUT)
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_c",NORMAL_BLEND_IN,walk_BLEND_OUT)
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_a",walk_BLEND_IN,WALK_BLEND_OUT,-1,AF_SECONDARY | AF_UPPERBODY | AF_LOOPING)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,vCROUCHVENT,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,2.27)
Mafia[maf_worker_top].vtarget = vCROUCHVENT
//crouch
elif IS_ENTITY_AT_COORD(mafia[maf_worker_top].id,vCROUCHVENT,<<2,2,2>>)
CLEAR_PED_SECONDARY_TASK(mafia[maf_worker_top].id)
TASK_PLAY_ANIM(null,animDict_kneel_enter,"enter",walk_BLEND_IN,NORMAL_BLEND_OUT)
TASK_PLAY_ANIM(null,animDict_kneel_Idle,"idle_a",normal_BLEND_IN,NORMAL_BLEND_OUT)
TASK_PLAY_ANIM(null,animDict_kneel_exit,"exit",normal_BLEND_IN,walk_BLEND_OUT)
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_c",walk_BLEND_IN,WALK_BLEND_OUT,-1,AF_SECONDARY | AF_UPPERBODY | AF_LOOPING)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,vBOXPOS,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,-3.24)
Mafia[maf_worker_top].vtarget = vBOXPOS
//box
elif IS_ENTITY_AT_COORD(mafia[maf_worker_top].id,vBOXPOS,<<2,2,2>>)
CLEAR_PED_SECONDARY_TASK(mafia[maf_worker_top].id)
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_c",WALK_BLEND_IN,NORMAL_BLEND_OUT)
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_a",NORMAL_BLEND_IN,walk_BLEND_OUT)
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_c",walk_BLEND_IN,WALK_BLEND_OUT,-1,AF_SECONDARY | AF_UPPERBODY | AF_LOOPING )
TASK_FOLLOW_NAV_MESH_TO_COORD(null,vBIGVENT,PEDMOVE_WALK,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,127.67)
Mafia[maf_worker_top].vtarget = vBIGVENT
else
if Mafia[maf_worker_top].vtarget.x = vCROUCHVENT.x
and Mafia[maf_worker_top].vtarget.y = vCROUCHVENT.y
and Mafia[maf_worker_top].vtarget.z = vCROUCHVENT.z
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_c",walk_BLEND_IN,WALK_BLEND_OUT,-1,AF_SECONDARY | AF_UPPERBODY | AF_LOOPING )
TASK_FOLLOW_NAV_MESH_TO_COORD(null,vCROUCHVENT,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,2.27)
elif Mafia[maf_worker_top].vtarget.x = vBOXPOS.x
or Mafia[maf_worker_top].vtarget.y = vBOXPOS.y
or Mafia[maf_worker_top].vtarget.z = vBOXPOS.z
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_c",walk_BLEND_IN,WALK_BLEND_OUT,-1,AF_SECONDARY | AF_UPPERBODY | AF_LOOPING )
TASK_FOLLOW_NAV_MESH_TO_COORD(null,vBOXPOS,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,-3.24)
else
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_c",walk_BLEND_IN,WALK_BLEND_OUT,-1,AF_SECONDARY | AF_UPPERBODY | AF_LOOPING )
TASK_FOLLOW_NAV_MESH_TO_COORD(null,vBIGVENT,PEDMOVE_WALK,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,127.67)
endif
endif
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[maf_worker_top].id,seq)
CLEAR_SEQUENCE_TASK(seq)
//===================== ===================== ===================== =====================
elif mafped = maf_worker_vent
OPEN_SEQUENCE_TASK(seq)
if not IS_PED_HEADING_TOWARDS_POSITION(mafia[maf_worker_vent].id,<<889.07233, -1714.90295, 38.47169>>,40)
TASK_TURN_PED_TO_FACE_COORD(null,<<889.07233, -1714.90295, 38.47169>>)
endif
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_a",WALK_BLEND_IN,NORMAL_BLEND_OUT)
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_c",NORMAL_BLEND_IN,NORMAL_BLEND_OUT)
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_c",NORMAL_BLEND_IN,WALK_BLEND_OUT)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[maf_worker_vent].id,seq)
CLEAR_SEQUENCE_TASK(seq)
//===================== ===================== ===================== =====================
elif mafped = maf_worker_door
OPEN_SEQUENCE_TASK(seq)
if IS_ENTITY_AT_COORD(mafia[maf_worker_door].id,vMIDVENTSMALL,<<2,2,2>>)
SET_PED_RESET_FLAG(mafia[maf_worker_door].id,PRF_SearchForClosestDoor,FALSE)
CLEAR_PED_SECONDARY_TASK(mafia[maf_worker_door].id)
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_a",WALK_BLEND_IN)
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_c",NORMAL_BLEND_IN,walk_BLEND_OUT)
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_c",WALK_BLEND_IN,WALK_BLEND_OUT,-1,AF_SECONDARY | AF_UPPERBODY | AF_LOOPING)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,vMIDVENTBIG,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,151.41)
Mafia[maf_worker_door].vtarget = vMIDVENTBIG
elif IS_ENTITY_AT_COORD(mafia[maf_worker_door].id,vMIDVENTBIG,<<2,2,2>>)
CLEAR_PED_SECONDARY_TASK(mafia[maf_worker_door].id)
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_c",NORMAL_BLEND_IN,WALK_BLEND_OUT)
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_c",WALK_BLEND_IN,WALK_BLEND_OUT,-1,AF_SECONDARY | AF_UPPERBODY | AF_LOOPING)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,vMIDVENTSMALL,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,-163.74)
Mafia[maf_worker_door].vtarget = vMIDVENTSMALL
elif IS_ENTITY_IN_ANGLED_AREA(mafia[maf_worker_door].id,<<906.62262, -1699.76147, 44.40839>>,<<907.29437, -1691.58569, 42.11664>>,3)
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_c",WALK_BLEND_IN,WALK_BLEND_OUT,-1,AF_SECONDARY | AF_UPPERBODY | AF_LOOPING)
TASK_GO_STRAIGHT_TO_COORD(null,<<906.34631, -1701.62073, 41.97026>>,PEDMOVE_WALK)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,vMIDVENTSMALL,PEDMOVE_WALK)
else
if Mafia[maf_worker_door].vtarget.x = vMIDVENTSMALL.x
or Mafia[maf_worker_door].vtarget.y = vMIDVENTSMALL.y
or Mafia[maf_worker_door].vtarget.z = vMIDVENTSMALL.z
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_c",walk_BLEND_IN,WALK_BLEND_OUT,-1,AF_SECONDARY | AF_UPPERBODY | AF_LOOPING )
TASK_FOLLOW_NAV_MESH_TO_COORD(null, vMIDVENTSMALL,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,-163.74)
else
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_c",walk_BLEND_IN,WALK_BLEND_OUT,-1,AF_SECONDARY | AF_UPPERBODY | AF_LOOPING )
TASK_FOLLOW_NAV_MESH_TO_COORD(null,vMIDVENTBIG,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,151.41)
endif
endif
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[maf_worker_door].id,seq)
CLEAR_SEQUENCE_TASK(seq)
//===================== ===================== ===================== =====================
elif mafped = maf_worker_alone
OPEN_SEQUENCE_TASK(seq)
if bAloneWorkerActive
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<924.75250, -1720.31702, 37.06301>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,79.87)
if not IS_PED_HEADING_TOWARDS_POSITION(mafia[maf_worker_alone].id,<<923.66852, -1720.09009, 38.26234>>,40)
TASK_TURN_PED_TO_FACE_COORD(null,<<923.66852, -1720.09009, 38.26234>>)
endif
TASK_PLAY_ANIM(null,animDict_kneel_enter,"enter",WALK_BLEND_IN,NORMAL_BLEND_OUT)
TASK_PLAY_ANIM(null,animDict_kneel_Idle,"idle_a",normal_BLEND_IN,NORMAL_BLEND_OUT)
TASK_PLAY_ANIM(null,animDict_kneel_Idle,"idle_b",normal_BLEND_IN,NORMAL_BLEND_OUT)
TASK_PLAY_ANIM(null,animDict_kneel_Idle,"idle_b",normal_BLEND_IN,NORMAL_BLEND_OUT)
TASK_PLAY_ANIM(null,animDict_kneel_exit,"exit",NORMAL_BLEND_IN,WALK_BLEND_OUT)
endif
if not IS_ENTITY_AT_COORD(mafia[maf_worker_alone].id,<<938.72675, -1717.90356, 37.06301>>,<<2,2,2>>)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<938.72675, -1717.90356, 37.06301>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,79.87)
endif
if not IS_PED_HEADING_TOWARDS_POSITION(mafia[maf_worker_alone].id,<<936.85815, -1716.89111, 38.38630>>,30)
TASK_TURN_PED_TO_FACE_COORD(null,<<936.85815, -1716.89111, 38.38630>>)
endif
TASK_PLAY_ANIM(null,animDict_kneel_enter,"enter",WALK_BLEND_IN,NORMAL_BLEND_OUT)
TASK_PLAY_ANIM(null,animDict_kneel_Idle,"idle_c",normal_BLEND_IN,NORMAL_BLEND_OUT)
TASK_PLAY_ANIM(null,animDict_kneel_Idle,"idle_b",normal_BLEND_IN,NORMAL_BLEND_OUT)
TASK_PLAY_ANIM(null,animDict_kneel_Idle,"idle_c",normal_BLEND_IN,NORMAL_BLEND_OUT)
TASK_PLAY_ANIM(null,animDict_kneel_exit,"exit",NORMAL_BLEND_IN,WALK_BLEND_OUT)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[maf_worker_alone].id,seq)
CLEAR_SEQUENCE_TASK(seq)
endif
endproc
proc set_enemy_standards(ped_index ped)
set_ped_relationship_group_hash(ped, rel_group_enemies)
set_ped_as_enemy(ped, true)
set_ped_path_can_use_ladders(ped, true)
set_ped_money(ped,0)
set_ped_alertness(ped,as_not_alert)
set_ped_flee_attributes(ped,fa_never_flee,true)
stop_ped_speaking(ped,true)
set_entity_load_collision_flag(ped,true)
//combat attributes
set_ped_combat_attributes(ped,ca_can_shoot_without_los ,false)
set_ped_combat_attributes(ped, ca_use_cover,true)
set_ped_combat_attributes(ped,ca_can_investigate,true)
set_ped_combat_attributes(ped, ca_use_vehicle, false)
set_ped_combat_attributes(ped, CA_ALWAYS_FIGHT, false)
set_ped_config_flag(ped,pcf_runfromfiresandexplosions,false)
set_ped_accuracy(ped,25)
SET_PED_DROPS_WEAPONS_WHEN_DEAD(ped,true)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped,true)
// INFORM_MISSION_STATS_OF_HEADSHOT_WATCH_ENTITY(Mafia[ped].id)
endproc
proc create_MafiaEnemy(eEnemies_Mafia ped,float fseeingrange = 60.0)
if ped = maf_worker_alone
or ped = maf_worker_walkway
or ped = maf_worker_top
or ped = maf_worker_door
or ped = maf_worker_vent
or ped = maf_car
or ped = maf_car_talking
Mafia[ped].model = modelWorker
endif
Mafia[ped].id = create_ped(PEDTYPE_MISSION,Mafia[ped].model,Mafia[ped].vStartLoc,Mafia[ped].fheading)
set_ped_seeing_range(Mafia[ped].id,fseeingrange)
SET_PED_VISUAL_FIELD_CENTER_ANGLE(Mafia[ped].id,55)
SET_PED_VISUAL_FIELD_MAX_ANGLE(Mafia[ped].id,85)
SET_PED_VISUAL_FIELD_MIN_ANGLE(Mafia[ped].id,-85)
SET_PED_KEEP_TASK(Mafia[ped].id,true)
if ped = maf_worker_vent
or ped = maf_worker_top
or ped = maf_worker_door
mafia[ped].obj = CREATE_OBJECT(modelclipboard,Mafia[ped].vStartLoc) //1399385 removing this as it isn't being held correctly.
Mafia[ped].bObjAttached = false
SET_ENTITY_HEALTH(Mafia[ped].id,120)
SET_PED_WEAPON_MOVEMENT_CLIPSET(Mafia[ped].id,"MOVE_M@CLIPBOARD")
elif ped = maf_worker_alone
SET_ENTITY_HEALTH(Mafia[ped].id,120)
else
SET_ENTITY_HEALTH(Mafia[ped].id,130)
endif
mafia[ped].sit = SSIT_AI_NONE
set_enemy_standards(Mafia[ped].id)
endproc
proc clear_players_task_on_control_input(script_task_name task_name)
if IS_SCRIPT_TASK_RUNNING_OR_STARTING(player_ped_id(), task_name)
int left_stick_x
int left_stick_y
int right_stick_x
int right_stick_y
int stick_dead_zone = 28
GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(left_stick_x, left_stick_y, right_stick_x, right_stick_y)
IF NOT IS_LOOK_INVERTED()
right_stick_y *= -1
ENDIF
// invert the vertical
IF (left_stick_y > STICK_DEAD_ZONE)
OR (left_stick_y < (STICK_DEAD_ZONE * -1))
or (left_stick_x > STICK_DEAD_ZONE)
OR (left_stick_x < (STICK_DEAD_ZONE * -1))
//or is_control_pressed(player_control, input_sprint)
clear_ped_tasks(player_ped_id())
endif
endif
endproc
proc point_gameplay_cam_at_coord(float targetheading)
set_gameplay_cam_relative_heading(targetheading - get_entity_heading(player_ped_id()))
endproc
PROC SETUP_ROCCO()
if isentityalive(peds[mpf_rocco].id)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(peds[mpf_rocco].id,true)
set_ped_relationship_group_hash(peds[mpf_rocco].id, rel_group_enemies)
SET_ENTITY_HEALTH(rocco(),GET_ENTITY_HEALTH(rocco())*2)
SET_PED_COMBAT_ABILITY(rocco(),CAL_PROFESSIONAL)
SET_PED_COMBAT_ATTRIBUTES(rocco(),CA_CAN_FIGHT_ARMED_PEDS_WHEN_NOT_ARMED,true)
SET_PED_COMBAT_ATTRIBUTES(rocco(),CA_ALWAYS_FIGHT,true)
SET_PED_COMBAT_ATTRIBUTES(rocco(),CA_USE_COVER,false)
SET_PED_COMBAT_MOVEMENT(rocco(),CM_WILLADVANCE)
SET_PED_SUFFERS_CRITICAL_HITS(rocco(),FALSE)
SET_PED_CONFIG_FLAG(rocco(),PCF_OpenDoorArmIK,true)
endif
ENDPROC
PROC SETUP_Milton()
if isentityalive(peds[mpf_milton].id)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(Milton(),true)
SET_PED_CONFIG_FLAG(Milton(),PCF_ForcedToUseSpecificGroupSeatIndex,true)
set_ped_relationship_group_hash(Milton(),rel_friends)
SET_PED_COMPONENT_VARIATION(Milton(),PED_COMP_JBIB,1,0)
SET_PED_COMPONENT_VARIATION(Milton(),PED_COMP_LEG,1,0)
SET_PED_COMPONENT_VARIATION(Milton(),PED_COMP_TORSO,1,0)
SET_PED_COMPONENT_VARIATION(Milton(),PED_COMP_FEET,1,0)
// SET_PED_PROP_INDEX(milton(),ANCHOR_EYES,0,0)
SET_PED_CAN_BE_TARGETTED(Milton(),false)
endif
ENDPROC
PROC SETUP_Anton()
if isentityalive(peds[mpf_Anton].id)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(peds[mpf_Anton].id,true)
SET_PED_CONFIG_FLAG(peds[mpf_Anton].id,PCF_ForcedToUseSpecificGroupSeatIndex,true)
SET_PED_COMPONENT_VARIATION(Anton(),PED_COMP_LEG,0,0)
SET_PED_COMPONENT_VARIATION(Anton(),PED_COMP_TORSO,0,0)
// SET_PED_PROP_INDEX(anton(),ANCHOR_EYES,0,0)
set_ped_relationship_group_hash(peds[mpf_Anton].id,rel_friends)
SET_PED_CAN_BE_TARGETTED(Anton(),false)
endif
ENDPROC
PROC SETUP_Gianni()
set_ped_seeing_range(peds[mpf_Gianni].id,35)
SET_PED_VISUAL_FIELD_CENTER_ANGLE(peds[mpf_Gianni].id,55)
SET_PED_VISUAL_FIELD_MAX_ANGLE(peds[mpf_Gianni].id,60)
SET_PED_VISUAL_FIELD_MIN_ANGLE(peds[mpf_Gianni].id,-60)
SET_PED_KEEP_TASK(peds[mpf_Gianni].id,true)
set_ped_relationship_group_hash(peds[mpf_Gianni].id, rel_friends)
set_ped_path_can_use_ladders(peds[mpf_Gianni].id, true)
set_ped_money(peds[mpf_Gianni].id,0)
set_ped_alertness(peds[mpf_Gianni].id,as_not_alert)
stop_ped_speaking(peds[mpf_Gianni].id,true)
set_entity_load_collision_flag(peds[mpf_Gianni].id,true)
set_ped_config_flag(peds[mpf_Gianni].id,pcf_runfromfiresandexplosions,false)
set_ped_accuracy(peds[mpf_Gianni].id,25)
SET_PED_DROPS_WEAPONS_WHEN_DEAD(peds[mpf_Gianni].id,true)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(peds[mpf_Gianni].id,true)
endproc
proc Display_Placeholder()
if bPlaceholder
#IF IS_DEBUG_BUILD
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5,0.1,"STRING","PLACEHOLDER")
#ENDIF
endif
endproc
// purpose:off radar/ hud / player control
proc prep_start_cutscene(bool bplayercontrol,vector varea,bool brender = true,bool binterp = false,bool bclearprj = true,int interptime = default_interp_to_from_game,set_player_control_flags controlflag = 0,bool bphoneaway = true)
display_radar(false)
display_hud(false)
set_player_control(player_id(),bplayercontrol,controlflag)
clear_prints()
clear_help()
render_script_cams(brender,binterp,interptime)
if bclearprj
clear_area_of_projectiles(varea,500)
endif
STOP_FIRE_IN_RANGE(varea,200)
if IS_PED_IN_ANY_VEHICLE(player_ped_id())
SET_VEH_RADIO_STATION(GET_VEHICLE_PED_IS_IN(player_ped_id()),"OFF")
endif
SET_PED_STEALTH_MOVEMENT(player_peD_id(),false)
if bphoneaway
hang_up_and_put_away_phone()
endif
endproc
// purpose:on radar/ hud / player control
proc prep_stop_cutscene(bool bplayercontrol,bool brender = false,bool binterp = false,int iduration = default_interp_to_from_game, set_player_control_flags controlflag = 0)
display_radar(true)
display_hud(true)
set_player_control(player_id(),bplayercontrol,controlflag)
render_script_cams(brender,binterp,iduration)
if not brender
destroy_all_cams()
endif
if IS_PED_IN_ANY_VEHICLE(player_ped_id())
SET_VEHICLE_RADIO_ENABLED(GET_VEHICLE_PED_IS_IN(player_ped_id()),true)
endif
bPlaceholder = false
endproc
proc SET_ALL_EXIT_STATES(bool bstate = false)
bcs_mike = bstate
bcs_cam = bstate
bcs_actor = bstate
bcs_heli = bstate
bcs_goon = bstate
bcs_director = bstate
//bcs_rocco = bstate
endproc
proc set_peds_CS_OUTFITS()
IF ISENTITYALIVE(MIKE())
Register_Ped_Variation_For_Cutscene_From_Ped(sCutscenePedVariationRegister,MIKE(),"MICHAEL")
REMOVE_PED_HELMET(MIKE(),true)
ENDIF
IF ISENTITYALIVE(peds[mpf_milton].id)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_TORSO,1,0,CS_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_LEG,1,0,CS_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_feet,1,0,CS_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_JBIB,1,0,CS_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_TORSO,1,0,IG_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_LEG,1,0,IG_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_feet,1,0,IG_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_JBIB,1,0,IG_MILTON)
CLEAR_ALL_PED_PROPS(peds[mpf_milton].id)
ENDIF
IF ISENTITYALIVE(peds[mpf_Anton].id)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Anton",PED_COMP_TORSO,0,0,CSB_ANTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Anton",PED_COMP_LEG,0,0,CSB_ANTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Anton",PED_COMP_TORSO,0,0,U_M_Y_ANTONB)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Anton",PED_COMP_LEG,0,0,U_M_Y_ANTONB)
CLEAR_ALL_PED_PROPS(peds[mpf_Anton].id)
ENDIF
IF ISENTITYALIVE(peds[mpf_rocco].id)
Register_Ped_Variation_For_Cutscene_From_Ped(sCutscenePedVariationRegister,rocco(),"Rocco")
CLEAR_ALL_PED_PROPS(peds[mpf_rocco].id)
ENDIF
endproc
func bool Check_Replay_Car(vector pos, float heading)
//check
if IS_REPLAY_CHECKPOINT_VEHICLE_AVAILABLE()
if IS_CHECKPOINT_VEHICLE_SUITABLE()
REQUEST_REPLAY_CHECKPOINT_VEHICLE_MODEL()
while not HAS_REPLAY_CHECKPOINT_VEHICLE_LOADED()
wait(0)
endwhile
CLEAR_AREA_OF_VEHICLES(pos,2)
vehs[mvf_Replay_car].id = CREATE_REPLAY_CHECKPOINT_VEHICLE(pos,heading)
SET_ENTITY_LOAD_COLLISION_FLAG(vehs[mvf_Replay_car].id,true)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehs[mvf_Replay_car].id,true)
return true
else
return true
endif
else
return true
endif
return false
endfunc
// -----------------------------------------------------------------------------------------------------------
// Mission Cleanup
// -----------------------------------------------------------------------------------------------------------
PROC RESET_EVERYTHING()
IF IS_CUTSCENE_ACTIVE()
STOP_CUTSCENE_IMMEDIATELY()
REMOVE_CUTSCENE()
WHILE IS_CUTSCENE_ACTIVE()
WAIT(0)
ENDWHILE
ENDIF
//======================================= Destroy ======================================
//all peds are deleted
for i = 0 TO Enum_to_int(MPF_NUM_OF_PEDS)-1
if DOES_ENTITY_EXIST(peds[i].id)
AND (NOT IS_PED_INJURED(peds[i].id))
if IS_PED_IN_ANY_VEHICLE(peds[i].id)
SET_entity_COORDS(peds[i].id,(GET_ENTITY_COORDS(GET_VEHICLE_PED_IS_IN(peds[i].id))+<<0,-2,0>>))
endif
if peds[i].id != player_ped_id()
SAFE_DELETE_PED(peds[i].id)
endif
endif
endfor
//enemies and their properties
for i = 0 TO Enum_to_int(NUM_OF_Mafia_PEDS)-1
Mafia[i].bkilled = false
mafia[i].sit = SSIT_AI_NONE
Mafia[i].bForceBlip = false
Mafia[i].bHeardNoise = false
cleanup_ai_ped_blip(Mafia[i].blipstruct)
if DOES_ENTITY_EXIST(mafia[i].obj)
if IS_ENTITY_ATTACHED(mafia[i].obj)
DETACH_ENTITY(mafia[i].obj)
endif
SAFE_DELETE_OBJECT(mafia[i].obj)
endif
if DOES_ENTITY_EXIST(Mafia[i].id)
SAFE_DELETE_PED(Mafia[i].id)
endif
endfor
//all vehicles are deleted
for i = 0 TO Enum_to_int(MVF_NUM_OF_VEH)-1
if DOES_ENTITY_EXIST(vehs[i].id)
SAFE_DELETE_VEHICLE(vehs[i].id)
endif
endfor
//--------------------- objects -----------------------
for i = 0 to enum_to_int(MAX_NUM_CONST_OBJS) -1
constObjs[i].bloaded = false
if DOES_ENTITY_EXIST(constObjs[i].id)
SAFE_DELETE_OBJECT(constObjs[i].id)
endif
endfor
//locates stuff
clear_mission_locate_stuff(slocatesdata)
clear_mission_location_text_and_blips(slocatesdata)
if DOES_BLIP_EXIST(blip_objective)
remove_blip(blip_objective)
endif
destroy_all_cams()
clear_prints()
kill_any_conversation()
STOP_AUDIO_SCENES()
//======================================= RESETS ======================================
STOP_GAMEPLAY_HINT()
g_replay.iReplayInt[0] = 0
g_replay.iReplayInt[1] = 0
clear_area(GET_ENTITY_COORDS(player_ped_id()),400,true)
Doors_Reset_All()
SET_INTERIOR_DISABLED( INTERIOR_V_58_SOL_OFFICE, TRUE)
//wanted level
CLEAR_PLAYER_WANTED_LEVEL(player_id())
//reset player control
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
//clear AI tasks
if not IS_PED_INJURED(player_ped_id())
CLEAR_PED_TASKS(player_ped_id())
endif
prep_stop_cutscene(true)
bAloneWorkerActive = false
bDoWalkwayChat = false
//stages
eAI_stage = AI_CHECKS
//AUDIO
STOP_AUDIO_SCENES()
iDialogue_Stage = 0
iCarSpeechStage = 0
iwalkwaychat = 0
iconstructStage = 0
iScareStage = 0
shapetestheli = null
bpauseconv = false
bMusic_1stEnemy = false
bMusic_HeliTrigger = false
bMusic_Ends = false
b_cutscene_loaded = false
iskipCS = 0
ENDPROC
PROC MISSION_CLEANUP()
PRINTln("...SOLOMON 1 MISSION CLEANUP")
IF IS_CUTSCENE_ACTIVE()
STOP_CUTSCENE_IMMEDIATELY()
REMOVE_CUTSCENE()
ENDIF
//======================================= Destroy ======================================
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
for i = 0 TO Enum_to_int(MPF_NUM_OF_PEDS)-1
if IsEntityAlive(peds[i].id)
if peds[i].id != player_ped_id()
SET_PED_KEEP_TASK(peds[i].id,true)
if IS_PED_IN_GROUP(peds[i].id)
REMOVE_PED_FROM_GROUP(peds[i].id)
endif
SAFE_RELEASE_PED(peds[i].id)
endif
if DOES_BLIP_EXIST(peds[i].blip)
REMOVE_BLIP(peds[i].blip)
endif
endif
endfor
//-------------------- enemies-----------------------
//Mafia
for i = 0 to ENUM_TO_INT(NUM_OF_Mafia_PEDS) -1
if IsEntityAlive(Mafia[i].id)
SAFE_RELEASE_PED(Mafia[i].id)
if DOES_ENTITY_EXIST(mafia[i].obj)
if IS_ENTITY_ATTACHED(mafia[i].obj)
DETACH_ENTITY(mafia[i].obj)
endif
SAFE_RELEASE_OBJECT(mafia[i].obj)
endif
CLEANUP_AI_PED_BLIP(Mafia[i].blipstruct)
endif
Mafia[i].bForceBlip = false
Mafia[i].bkilled = false
mafia[i].sit = SSIT_AI_NONE
endfor
//---------------------vehs-----------------------
for i = 0 TO Enum_to_int(MVF_NUM_OF_VEH)-1
if IsEntityAlive(vehs[i].id)
SAFE_RELEASE_VEHICLE(vehs[i].id)
endif
if DOES_BLIP_EXIST(vehs[i].blip)
REMOVE_BLIP(vehs[i].blip)
endif
endfor
//--------------------- objects -----------------------
for i = 0 to enum_to_int(MAX_NUM_CONST_OBJS) -1
constObjs[i].bloaded = false
if DOES_ENTITY_EXIST(constObjs[i].id)
SAFE_RELEASE_OBJECT(constObjs[i].id)
endif
endfor
RENDER_SCRIPT_CAMS(false,false,DEFAULT_INTERP_TO_FROM_GAME,true,true)
//==================================== Reset ======================================
if IsEntityAlive(player_ped_id())
CLEAR_PED_TASKS(player_ped_id())
CLEAR_PLAYER_WANTED_LEVEL(player_id())
endif
//reset player control
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
SET_WANTED_LEVEL_MULTIPLIER(1) //wanted level for mission reset to normal
DISPLAY_RADAR(true)
DISPLAY_HUD(true)
SET_ALL_RANDOM_PEDS_FLEE(player_id(),false)
REMOVE_SCENARIO_BLOCKING_AREAS()
if DOES_SCENARIO_GROUP_EXIST("SOLOMON_GATE")
if not IS_SCENARIO_GROUP_ENABLED("SOLOMON_GATE")
SET_SCENARIO_GROUP_ENABLED("SOLOMON_GATE",true)
endif
endif
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-1037.91162, -495.88333, 34>>,<<-1016.92767, -471.04614, 37>>,true)
enable_dispatch_service(dt_ambulance_department,false)
enable_dispatch_service(dt_fire_department, false)
set_vehicle_model_is_suppressed(FUGITIVE,false)
set_vehicle_model_is_suppressed(FROGGER,false)
STOP_AUDIO_SCENES()
SET_AMBIENT_ZONE_STATE("AZ_SOL_1_FACTORY_AREA_CONSTRUCTIONS", FALSE, FALSE)
DISABLE_TAXI_HAILING(FALSE)
DISABLE_CHEAT(CHEAT_TYPE_SPAWN_VEHICLE,false)
CLEAR_PRINTS()
REMOVE_TEXT_MESSAGE_FEED_ENTRY("SOL1_TEXT")
if IS_NEW_LOAD_SCENE_ACTIVE()
NEW_LOAD_SCENE_STOP()
endif
CLEAR_WEATHER_TYPE_PERSIST()
TRIGGER_MUSIC_EVENT("SOL1_FAIL")
TERMINATE_THIS_THREAD()
ENDPROC
// -----------------------------------------------------------------------------------------------------------
// MISSION PASS
// -----------------------------------------------------------------------------------------------------------
PROC MISSION_PASSED()
PRINTSTRING("...SOLOMON 1 MISSION PASSED")
PRINTNL()
MISSION_FLOW_MISSION_PASSED()
MISSION_CLEANUP()
ENDPROC
// -----------------------------------------------------------------------------------------------------------
// Mission Fail
// -----------------------------------------------------------------------------------------------------------
PROC MISSION_FAILED(MFF_MISSION_FAIL_FLAGS FAIL_CONDITION = MFF_DEFAULT)
TRIGGER_MUSIC_EVENT("SOL1_FAIL")
IF IS_CUTSCENE_ACTIVE()
STOP_CUTSCENE_IMMEDIATELY()
REMOVE_CUTSCENE()
ENDIF
STRING strReason = ""
//show fail message
SWITCH fail_condition
CASE mff_debug_fail
strReason = ""
BREAK
case mff_rocco_alerted
strReason = "SOL1_FAILALRM"
break
case mff_rocco_died
strReason = "SOL1_FAILROC"
break
case mff_actor_died
strReason = "SOL1_FAILACT"
break
case mff_director_died
strReason = "SOL1_FAILDD"
break
case mff_heli_dead
strReason = "SOL1_FAILHE"
break
case Mff_scared_peds
strReason = "SOL1_FAILSCRD"
break
case MFF_sol_died
strReason = "SOL1_SOLDIED"
break
case mff_left_Area
strReason = "SOl1_FAILLF"
break
case mff_left_peds
strReason = "SOL1_FAILABND"
break
DEFAULT
strReason = ""
BREAk
ENDSWITCH
MISSION_FLOW_MISSION_FAILED_WITH_REASON(strReason)
DELETE_TEXT_MESSAGE_BY_LABEL_FROM_ALL_PLAYER_CHARACTERS ("SOL1_TEXT")
WHILE NOT GET_MISSION_FLOW_SAFE_TO_CLEANUP()
//Maintain anything that could look weird during fade out (e.g. enemies walking off).
WAIT(0)
ENDWHILE
// check if we need to respawn the player in a different position,
// if so call MISSION_FLOW_SET_FAIL_WARP_LOCATION() + SET_REPLAY_DECLINED_VEHICLE_WARP_LOCATION here
if IsEntityAlive(player_ped_id())
IF IS_ENTITY_IN_ANGLED_AREA(player_ped_id(), <<913.46051, -1691.32263, 42.20993>>, <<918.42084, -1691.80945, 47.00544>>, 5.0)
SET_ENTITY_COORDS(player_ped_id(),<<919.98071, -1693.58923, 42.58901>>)
ENDIF
IF IS_ENTITY_IN_ANGLED_AREA(player_ped_id(), <<906.63867, -1699.76306, 44.40080>>, <<907.28394, -1691.60486, 42.11665>>, 3.0)
SET_ENTITY_COORDS(player_ped_id(),<<906.32739, -1701.81006, 41.97026>>)
ENDIF
IF IS_ENTITY_IN_ANGLED_AREA(player_ped_id(),<<905.60992, -1687.81653, 46.35753>>, <<901.36200, -1687.39539, 49.84843>>, 5.0)
SET_ENTITY_COORDS(player_ped_id(),<<896.90826, -1687.11780, 46.13421>>)
ENDIF
endif
MISSION_CLEANUP() // must only take 1 frame and terminate the thread
TERMINATE_THIS_THREAD()
ENDPROC
// -----------------------------------------------------------------------------------------------------------
// MISSION STAGE MANAGEMENT
// -----------------------------------------------------------------------------------------------------------
proc mission_stage_management()
switch stageswitch
case stageswitch_requested
println("[stagemanagement] mission_stage switch requested from mission_stage:", mission_stage, "to mission_stage", requestedstage)
stageswitch = stageswitch_exiting
mission_substage = stage_exit
break
case stageswitch_exiting
println("[stagemanagement] exiting mission_stage: ", mission_stage)
stageswitch = stageswitch_entering
mission_substage = stage_entry
mission_stage = requestedstage
break
case stageswitch_entering
println("[stagemanagement] entered mission_stage: ", mission_stage)
iDialogue_Stage = 0
requestedstage = -1
stageswitch = stageswitch_idle
break
case stageswitch_idle
if (get_game_timer() - istagetimer) > 2500
println("[stagemanagement] mission_stage: ", mission_stage, " mission_substage: ", mission_substage, " iDialogue_Stage: ",iDialogue_Stage)
istagetimer = get_game_timer()
endif
break
endswitch
endproc
func bool mission_set_stage(msf_mission_stage_flags newstage)
if stageswitch = stageswitch_idle
requestedstage = enum_to_int(newstage)
stageswitch = stageswitch_requested
return true
else
return false
endif
endfunc
PROC GET_SKIP_STAGE_COORD_AND_HEADING(MSF_MISSION_STAGE_FLAGS eStage, VECTOR &vCoord, FLOAT &fHeading)
SWITCH eStage
CASE msf_0_get_to_warehouse vCoord = <<-1034.74194, -497.20056, 35.37177>> fHeading = 90 BREAK
CASE msf_1_Stealth_to_roof vCoord = <<968.7196, -1751.8749, 30.1595>> fHeading = 38.2203 BREAK
CASE msf_2_fight_rocco vCoord = <<910.1216, -1685.2484, 50.1341>> fHeading = 185.5396 BREAK
CASE msf_3_get_to_sol vCoord = <<909.5594, -1685.8384, 50.1341>> fHeading = 357.7214 BREAK
CASE msf_4_Passed vCoord = <<-1034.74194, -497.20056, 35.37177>> fHeading = 90 BREAK
ENDSWITCH
ENDPROC
PROC SU_GENERAL()
RESTORE_PLAYER_PED_VARIATIONS(Player_ped_id())
SET_PED_CONFIG_FLAG(Player_ped_id(),PCF_WillFlyThroughWindscreen,false)
clear_area(GET_ENTITY_COORDS(player_ped_id()),500,true)
SET_CURRENT_PED_WEAPON(player_ped_id(),WEAPONTYPE_UNARMED,true)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
endproc
PROC SU_msf_0_get_to_warehouse()
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
Else
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
endif
SET_WANTED_LEVEL_MULTIPLIER(0.3)
endproc
proc SU_msf_1_Stealth_to_roof()
vehs[mvf_heli].id = CREATE_VEHICLE(FROGGER,vheliRoof, hHeliRoof)
SET_FORCE_HD_VEHICLE(vehs[mvf_heli].id, true)
SET_VEHICLE_COLOUR_COMBINATION(vehs[mvf_heli].id,0)
SET_VEHICLE_ENGINE_CAN_DEGRADE(vehs[mvf_heli].id,false)
peds[mpf_milton].id = CREATE_PED_INSIDE_VEHICLE(vehs[mvf_heli].id,PEDTYPE_MISSION,modelActor,VS_BACK_LEFT)
SETUP_Milton()
peds[mpf_Anton].id = CREATE_PED_INSIDE_VEHICLE(vehs[mvf_heli].id,PEDTYPE_MISSION,modelDirector,VS_BACK_RIGHT)
SETUP_Anton()
peds[mpf_Gianni].id = CREATE_PED(pedtype_mission,modelGianni,vGianni,hGianni)
SETUP_Gianni()
REQUEST_CLIP_SET("MOVE_M@CLIPBOARD")
while not HAS_CLIP_SET_LOADED("MOVE_M@CLIPBOARD")
wait(0)
endwhile
init_enemy_data()
create_Mafiaenemy(maf_car,11)
create_Mafiaenemy(maf_car_talking,11)
create_Mafiaenemy(maf_worker_vent,14)
create_Mafiaenemy(maf_worker_alone,24)
while not Check_Replay_Car(<<971.4699, -1754.8250, 30.0953>>, 87.1515)
wait(0)
endwhile
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
Else
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
endif
bStartConstructionChecks = true
SET_WANTED_LEVEL_MULTIPLIER(0.0)
TRIGGER_MUSIC_EVENT("SOL1_STEALTH_RT")
endproc
proc SU_msf_2_fight_rocco()
vehs[mvf_heli].id = CREATE_VEHICLE(FROGGER,vheliRoof, hHeliRoof)
SET_FORCE_HD_VEHICLE(vehs[mvf_heli].id, true)
SET_VEHICLE_COLOUR_COMBINATION(vehs[mvf_heli].id,0)
SET_VEHICLE_ENGINE_CAN_DEGRADE(vehs[mvf_heli].id,false)
peds[mpf_milton].id = CREATE_PED_INSIDE_VEHICLE(vehs[mvf_heli].id,PEDTYPE_MISSION,modelActor,VS_BACK_LEFT)
SETUP_Milton()
peds[mpf_Anton].id = CREATE_PED_INSIDE_VEHICLE(vehs[mvf_heli].id,PEDTYPE_MISSION,modelDirector,VS_BACK_RIGHT)
SETUP_Anton()
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
Else
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
endif
bStartConstructionChecks = true
SET_WANTED_LEVEL_MULTIPLIER(0.0)
TRIGGER_MUSIC_EVENT("SOL1_FIGHT_RT")
endproc
proc SU_msf_3_get_to_sol()
vehs[mvf_heli].id = CREATE_VEHICLE(FROGGER,vheliRoof, hHeliRoof)
SET_FORCE_HD_VEHICLE(vehs[mvf_heli].id, true)
SET_VEHICLE_COLOUR_COMBINATION(vehs[mvf_heli].id,0)
SET_VEHICLE_ENGINE_CAN_DEGRADE(vehs[mvf_heli].id,false)
peds[mpf_milton].id = CREATE_PED_INSIDE_VEHICLE(vehs[mvf_heli].id,PEDTYPE_MISSION,modelActor,VS_BACK_LEFT)
SETUP_Milton()
peds[mpf_Anton].id = CREATE_PED_INSIDE_VEHICLE(vehs[mvf_heli].id,PEDTYPE_MISSION,modelDirector,VS_BACK_RIGHT)
SETUP_Anton()
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
Else
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
endif
bStartConstructionChecks = true
SET_WANTED_LEVEL_MULTIPLIER(0.3)
TRIGGER_MUSIC_EVENT("SOL1_GET_SOL_RT")
endproc
proc SU_PASSED()
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
Else
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
endif
endproc
proc mission_stage_SKIP()
//a skip has been made
if bdoskip = true
//begin the skip if the switching is idle
if stageswitch = stageswitch_idle
if not is_screen_faded_out()
if not is_screen_fading_out()
do_screen_fade_out(1000)
endif
else
mission_set_stage(int_to_enum(msf_mission_stage_flags, iskiptostage))
endif
//needs to be carried out before states own entering stage
elif stageswitch = stageswitch_entering
render_script_cams(false,false)
set_player_control(player_id(), true)
reset_everything()
Start_Skip_Streaming(sAssetData)
// -------------------------- Not a Replay ----------------------------
IF NOT IS_REPLAY_BEING_SET_UP()
VECTOR vWarpCoord
FLOAT fWarpHeading
GET_SKIP_STAGE_COORD_AND_HEADING(int_to_enum(msf_mission_stage_flags, iSkipToStage), vWarpCoord, fWarpHeading)
SET_ENTITY_COORDS(PLAYER_PED_ID(), vWarpCoord)
SET_ENTITY_HEADING(PLAYER_PED_ID(), fWarpHeading)
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), TRUE)
Load_Asset_NewLoadScene_Sphere(sAssetData, vWarpCoord, 25.0)
ENDIF
// --------------------------------------------------------------------
Load_asset_Stage(int_to_enum(MSF_MISSION_STAGE_FLAGS, mission_stage))
WHILE NOT Update_Skip_Streaming(sAssetData)
WAIT(0)
ENDWHILE
peds[mpf_mike].id = player_ped_id()
switch int_to_enum(msf_mission_stage_flags, mission_stage)
case msf_0_get_to_warehouse su_msf_0_get_to_warehouse() break
case msf_1_Stealth_to_roof su_msf_1_Stealth_to_roof() break
case msf_2_fight_rocco su_msf_2_fight_rocco() break
case msf_3_get_to_sol su_msf_3_get_to_sol() break
case msf_4_passed SU_PASSED() break
endswitch
SU_GENERAL()
bdoskip = false
IF NOT IS_REPLAY_BEING_SET_UP()
NEW_LOAD_SCENE_STOP()
endif
endif
#if is_debug_build
//check is a skip being asked for, dont allow skip during setup stage
elif launch_mission_stage_menu(zmenunames, iskiptostage, mission_stage, true)
if iskiptostage > enum_to_int(msf_num_of_stages)-1
mission_passed()
else
iskiptostage = clamp_int(iskiptostage, 0, enum_to_int(msf_num_of_stages)-1)
if is_screen_faded_in()
do_screen_fade_out(1000)
bdoskip = true
endif
endif
#endif
endif
endproc
proc death_checks()
//========================== death checks ==================================
for i = 0 to enum_to_int(mpf_num_of_peds) -1
if does_entity_exist(peds[i].id)
if is_ped_injured(peds[i].id)
if peds[i].id = player_ped_id()
MISSION_FAILED(mff_player_died)
endif
if peds[i].id = peds[mpf_milton].id
MISSION_FAILED(mff_actor_died)
endif
if peds[i].id = peds[mpf_Anton].id
MISSION_FAILED(mff_director_died)
endif
if peds[i].id = peds[mpf_sol].id
MISSION_FAILED(mff_sol_died)
endif
if peds[i].id = peds[mpf_rocco].id
if DOES_BLIP_EXIST(peds[mpf_rocco].blip)
REMOVE_BLIP(peds[mpf_rocco].blip)
endif
MISSION_FAILED(mff_rocco_died)
endif
if peds[i].id = peds[mpf_Gianni].id
if isentityalive(Anton())
and isentityalive(milton())
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"Anton")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_SCARE",CONV_PRIORITY_MEDIUM)
if not IS_PED_FLEEING(Anton())
TASK_SMART_FLEE_PED(Anton(),mike(),200,-1)
endif
if not IS_PED_FLEEING(Milton())
TASK_SMART_FLEE_PED(Milton(),mike(),200,-1)
endif
MISSION_FAILED(Mff_scared_peds)
else
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1Actor")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_SCARE2",CONV_PRIORITY_MEDIUM)
if not IS_PED_FLEEING(Anton())
TASK_SMART_FLEE_PED(Anton(),mike(),200,-1)
endif
if not IS_PED_FLEEING(Milton())
TASK_SMART_FLEE_PED(Milton(),mike(),200,-1)
endif
MISSION_FAILED(Mff_scared_peds)
endif
endif
endif
endif
else
if peds[i].id = peds[mpf_rocco].id
if DOES_BLIP_EXIST(peds[mpf_rocco].blip)
REMOVE_BLIP(peds[mpf_rocco].blip)
endif
endif
endif
endfor
for i = 0 to enum_to_int(NUM_OF_Mafia_PEDS) -1
update_ai_ped_blip(Mafia[i].id,Mafia[i].blipstruct,-1,null,Mafia[i].bForceBlip)
if does_entity_exist(Mafia[i].id)
if is_ped_injured(Mafia[i].id)
if WAS_PED_KILLED_BY_STEALTH(Mafia[i].id)
or (Mafia[i].sit = SSIT_AI_NONE
and HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(Mafia[i].id,mike()))
INFORM_MISSION_STATS_OF_INCREMENT(SOL1_SILENT_TAKEDOWNS)
endif
if DOES_ENTITY_EXIST(mafia[i].obj)
if IS_ENTITY_ATTACHED(mafia[i].obj)
DETACH_ENTITY(mafia[i].obj)
endif
SAFE_RELEASE_OBJECT(mafia[i].obj)
endif
if DOES_ENTITY_EXIST(mafia[i].objphone)
if IS_ENTITY_ATTACHED(mafia[i].objphone)
DETACH_ENTITY(mafia[i].objphone)
endif
SAFE_RELEASE_OBJECT(mafia[i].objphone)
endif
Mafia[i].bkilled = true
Mafia[i].bForceBlip = false
SAFE_RELEASE_PED(Mafia[i].id)
endif
endif
endfor
for i = 0 to enum_to_int(mvf_num_of_veh) -1
if does_entity_exist(vehs[i].id)
if not is_vehicle_driveable(vehs[i].id)
if vehs[i].id = vehs[mvf_heli].id
if mission_stage = enum_to_int(msf_3_get_to_sol)
if mission_substage < 4
MISSION_FAILED(mff_heli_dead)
endif
else
MISSION_FAILED(mff_heli_dead)
endif
SAFE_RELEASE_VEHICLE(vehs[i].id)
endif
else
if vehs[i].id = vehs[mvf_heli].id
if IS_VEHICLE_PERMANENTLY_STUCK(vehs[i].id)
if mission_stage = enum_to_int(msf_3_get_to_sol)
if mission_substage < 4
MISSION_FAILED(mff_heli_dead)
endif
else
MISSION_FAILED(mff_heli_dead)
endif
SAFE_RELEASE_VEHICLE(vehs[i].id)
endif
endif
endif
endif
endfor
//==========================================================================
endproc
FUNC BOOL TRIGGER_WALKWAY_PEDS()
IF ISENTITYALIVE(MIKE())
IF IS_ENTITY_IN_ANGLED_AREA(MIKE(),<<933.48407, -1706.96594, 40.41132>>,<<937.31335, -1663.64905, 48>>,35)
create_MafiaEnemy(maf_walkway_door,24)
create_MafiaEnemy(maf_worker_walkway,24)
OPEN_SEQUENCE_TASK(seq)
// TASK_GO_STRAIGHT_TO_COORD(null,<<938.29431, -1694.26501, 41.06182>>,PEDMOVE_WALK)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<943.27026, -1680.55713, 41.06182>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[maf_walkway_door].id,seq)
CLEAR_SEQUENCE_TASK(seq)
SET_PED_CONFIG_FLAG(mafia[maf_walkway_door].id,PCF_OpenDoorArmIK,true)
SET_PED_RESET_FLAG(mafia[maf_walkway_door].id,PRF_SearchForClosestDoor,true)
Mafia[maf_walkway_door].vtarget = <<943.27026, -1680.55713, 41.06182>>
OPEN_SEQUENCE_TASK(seq)
// TASK_GO_STRAIGHT_TO_COORD(null,<<939.29596, -1694.40991, 41.06182>>,PEDMOVE_WALK)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<945.01746, -1679.36267, 41.06182>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[maf_worker_walkway].id,seq)
CLEAR_SEQUENCE_TASK(seq)
SET_PED_CONFIG_FLAG(mafia[maf_worker_walkway].id,PCF_OpenDoorArmIK,true)
SET_PED_RESET_FLAG(mafia[maf_worker_walkway].id,PRF_SearchForClosestDoor,true)
Mafia[maf_worker_walkway].vtarget = <<945.01746, -1679.36267, 41.06182>>
bDoWalkwayChat = true
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL TRIGGER_SECOND_DOOR_PED()
IF ISENTITYALIVE(MIKE())
IF IS_ENTITY_IN_ANGLED_AREA(MIKE(),<<901.04163, -1721.98486, 39.74014>>,<<902.49176, -1699.63672, 46.05842>>,22.16)
create_MafiaEnemy(maf_worker_door,24)
OPEN_SEQUENCE_TASK(seq)
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_c",NORMAL_BLEND_IN,WALK_BLEND_OUT,-1,AF_SECONDARY | AF_UPPERBODY | AF_LOOPING)
TASK_GO_STRAIGHT_TO_COORD(null,<<906.23120, -1703.19482, 41.97026>>,PEDMOVE_SPRINT)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<910.14313, -1708.57007, 41.97026>>,PEDMOVE_RUN,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,-163.74)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[maf_worker_door].id,seq)
CLEAR_SEQUENCE_TASK(seq)
SET_PED_CONFIG_FLAG(mafia[maf_worker_door].id,PCF_OpenDoorArmIK,true)
SET_PED_RESET_FLAG(mafia[maf_worker_door].id,PRF_SearchForClosestDoor,true)
Mafia[maf_worker_door].vtarget = <<910.14313, -1708.57007, 41.97026>>
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL TRIGGER_THIRD_DOOR_PED()
IF ISENTITYALIVE(MIKE())
IF IS_ENTITY_IN_ANGLED_AREA(MIKE(),<<880.97339, -1682.67957, 46.08658>>,<<905.58136, -1684.29175, 53.31669>>,30)
create_MafiaEnemy(maf_worker_top,18)
OPEN_SEQUENCE_TASK(seq)
TASK_PLAY_ANIM(null,AnimDict_ClipBoard,"idle_c",NORMAL_BLEND_IN,WALK_BLEND_OUT,-1,AF_SECONDARY | AF_UPPERBODY | AF_LOOPING)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<884.57086, -1688.17114, 46.13421>>,PEDMOVE_WALK,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,127.67)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[maf_worker_top].id,seq)
CLEAR_SEQUENCE_TASK(seq)
SET_PED_CONFIG_FLAG(mafia[maf_worker_top].id,PCF_OpenDoorArmIK,true)
SET_PED_RESET_FLAG(mafia[maf_worker_top].id,PRF_SearchForClosestDoor,true)
Mafia[maf_worker_top].vtarget = <<884.57086, -1688.17114, 46.13421>>
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL TRIGGER_ALONE_WORKER_TASKS()
IF ISENTITYALIVE(MIKE())
IF IS_ENTITY_IN_ANGLED_AREA(MIKE(),<<912.46344, -1714.39941, 41.46995>>,<<950.94952, -1717.65479, 36.37867>>,30)
bAloneWorkerActive = true
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
func string FLINCH_REACTION()
switch iflinch
case 0
iflinch = 1
return "reaction_forward_big_intro_a"
break
case 1
iflinch = 0
return "reaction_forward_big_intro_c"
break
endswitch
return ""
endfunc
func string SEEN_REACTION()
switch iseen
case 0
iseen = 1
return "reaction_forward_big_intro_b"
break
case 1
iseen = 0
return "reaction_forward_big_intro_d"
break
endswitch
return ""
endfunc
func STEALTH_SITUATION get_ped_Sit(PED_INDEX ped)
int mafped
for mafped = 0 to ENUM_TO_INT(NUM_OF_Mafia_PEDS) - 1
if mafia[mafped].id = ped
return mafia[mafped].sit
endif
endfor
return SSIT_AI_NONE
endfunc
func string get_ped_Voice_string(PED_INDEX ped)
int mafped
for mafped = 0 to ENUM_TO_INT(NUM_OF_Mafia_PEDS) - 1
if mafia[mafped].id = ped
return mafia[mafped].sVoiceName
endif
endfor
return ""
endfunc
proc set_ped_situations(PED_INDEX ped, STEALTH_SITUATION sit)
int mafped
for mafped = 0 to ENUM_TO_INT(NUM_OF_Mafia_PEDS) - 1
if mafia[mafped].id = ped
mafia[mafped].sit = sit
endif
endfor
endproc
PROC MANAGE_STEALTH_STAGE()
int mafped
PED_INDEX clseped
GET_CURRENT_PED_WEAPON(mike(),wcurrent)
// TRIGGER PEDS
if mission_stage = enum_to_int(msf_1_Stealth_to_roof)
if not isentityalive(mafia[maf_walkway_door].id)
and not mafia[maf_walkway_door].bkilled
and not isentityalive(mafia[maf_worker_walkway].id)
and not mafia[maf_worker_walkway].bkilled
trigger_walkway_peds()
endif
if not isentityalive(mafia[maf_worker_door].id)
and not mafia[maf_worker_door].bkilled
trigger_second_door_ped()
endif
if not isentityalive(mafia[maf_worker_top].id)
and not mafia[maf_worker_top].bkilled
trigger_third_door_ped()
endif
if not bAloneWorkerActive
TRIGGER_ALONE_WORKER_TASKS()
endif
endif
//
switch eAI_stage
case AI_NORM
// Normal tasks
eAI_stage = AI_CHECKS
break
case AI_CHECKS
// Check if seen/heard
if IS_AUDIO_SCENE_ACTIVE("SOL_1_GET_TO_HELI_ALERT")
STOP_AUDIO_SCENE("SOL_1_GET_TO_HELI_ALERT")
endif
for mafped = 0 to enum_to_int(NUM_OF_Mafia_PEDS) -1
if isentityalive(mafia[mafped].id)
//============================= combat check =============================
if IS_PED_IN_COMBAT(mafia[mafped].id)
or mafia[mafped].sit = SSIT_AI_HEAT
active_ped = mafia[mafped].id
mafia[mafped].sit = SSIT_AI_HEAT
if DOES_Entity_EXIST(mafia[mafped].partner)
set_ped_situations(mafia[mafped].partner,mafia[mafped].sit)
endif
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
eAI_stage = AI_REACTION
// PRINTSTRING("eAI_stage UPDATE due to - combat check is TRUE") PRINTNL()
//============================= hurt ped =============================
elif HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(mafia[mafped].id,mike())
or IS_PED_BEING_STEALTH_KILLED(mafia[mafped].id)
or IS_PED_BEING_STUNNED(mafia[mafped].id)
or mafia[mafped].sit = SSIT_AI_HURT
if mafia[mafped].id = mafia[maf_car].id
or mafia[mafped].id = mafia[maf_car_talking].id
or mafia[mafped].id = mafia[maf_walkway_door].id
or mafia[mafped].id = mafia[maf_worker_walkway].id
if DOES_ENTITY_EXIST(mafia[mafped].partner)
if isentityalive(mafia[mafped].partner)
active_ped = mafia[mafped].partner
else
active_ped = mafia[mafped].id
endif
endif
else
active_ped = mafia[mafped].id
endif
mafia[mafped].sit = SSIT_AI_HURT
if DOES_Entity_EXIST(mafia[mafped].partner)
set_ped_situations(mafia[mafped].partner,mafia[mafped].sit)
endif
CLEAR_ENTITY_LAST_DAMAGE_ENTITY(mafia[mafped].id)
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
eAI_stage = AI_REACTION
// PRINTSTRING("eAI_stage UPDATE due to - Hurt ped check is TRUE") PRINTNL()
//============================= gun checks =============================
elif HAS_PED_RECEIVED_EVENT(mafia[mafped].id, EVENT_SHOT_FIRED_WHIZZED_BY)
OR HAS_PED_RECEIVED_EVENT(mafia[mafped].id, EVENT_SHOT_FIRED_BULLET_IMPACT)
or mafia[mafped].sit = SSIT_AI_GUN
active_ped = mafia[mafped].id
mafia[mafped].sit = SSIT_AI_GUN
if DOES_Entity_EXIST(mafia[mafped].partner)
set_ped_situations(mafia[mafped].partner,mafia[mafped].sit)
endif
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
eAI_stage = AI_REACTION
// PRINTSTRING("eAI_stage UPDATE due to - Gun check 1 is TRUE") PRINTNL()
elif HAS_PED_RECEIVED_EVENT(mafia[mafped].id, EVENT_SHOT_FIRED)
if not IS_PED_CURRENT_WEAPON_SILENCED(mike())
GET_CLOSEST_PED(GET_ENTITY_COORDS(mike()),500,false,true,clseped,false,true)
if clseped = mafia[mafped].id
active_ped = mafia[mafped].id
endif
mafia[mafped].sit = SSIT_AI_GUN
if DOES_Entity_EXIST(mafia[mafped].partner)
set_ped_situations(mafia[mafped].partner,mafia[mafped].sit)
endif
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
eAI_stage = AI_REACTION
// PRINTSTRING("eAI_stage UPDATE due to - Gun check 2 is TRUE") PRINTNL()
endif
//============================= hear explosion =============================
elif HAS_PED_RECEIVED_EVENT(mafia[mafped].id, EVENT_EXPLOSION_HEARD)
or IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_DONTCARE,<<919.02515, -1736.73352, 28>>,<<925.47205, -1649.41968, 65>>,120)
or mafia[mafped].sit = SSIT_AI_HEAT
if GET_CLOSEST_PED(GET_ENTITY_COORDS(mike()),80,false,true,mafia[mafped].id,false,true)
active_ped = mafia[mafped].id
endif
mafia[mafped].sit = SSIT_AI_HEAT
if DOES_Entity_EXIST(mafia[mafped].partner)
set_ped_situations(mafia[mafped].partner,mafia[mafped].sit)
endif
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
eAI_stage = AI_REACTION
// PRINTSTRING("eAI_stage UPDATE due to - hear explosion check is TRUE") PRINTNL()
//============================= seen mike =============================
elif CAN_PED_SEE_HATED_PED(mafia[mafped].id,player_ped_id())
or mafia[mafped].sit = SSIT_AI_SPOTTED
and not IS_ENTITY_IN_ANGLED_AREA(mafia[mafped].id,<<907.27173, -1692.09302, 41>>,<<906.43494, -1701.65735, 45>>,1.6)
vMafiaPedCoords = GET_ENTITY_COORDS(mafia[mafped].id) //BUG FIX 1399344
vPlayerCoords = GET_ENTITY_COORDS(player_ped_id()) //BUG FIX 1399344
IF vPlayerCoords.z > (vMafiaPedCoords.z - 5) //BUG FIX 1399344 check to make sure the players is not too low down. If lower than 5m below the ped that can see them, don't do anything.
active_ped = mafia[mafped].id
mafia[mafped].sit = SSIT_AI_SPOTTED
if DOES_Entity_EXIST(mafia[mafped].partner)
set_ped_situations(mafia[mafped].partner,mafia[mafped].sit)
endif
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
eAI_stage = AI_REACTION
// PRINTSTRING("eAI_stage UPDATE due to - seen Mike check is TRUE") PRINTNL()
ENDIF
//============================= hear something =============================
elif GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),GET_ENTITY_COORDS(mafia[mafped].id)) < mafia[mafped].fHearingRange
and GET_PLAYER_CURRENT_STEALTH_NOISE(player_id()) > 9.0 //BUG FIX 1399344
and CAN_PED_HEAR_PLAYER(PLAYER_ID(), mafia[mafped].id) //BUG FIX 1399344
and not IS_ENTITY_IN_ANGLED_AREA(mafia[mafped].id,<<901.35358, -1687.50378, 49.18065>>,<<905.75061, -1687.85010, 46.37356>>,3.11)
and not IS_ENTITY_IN_ANGLED_AREA(mafia[mafped].id,<<918.04565, -1691.64111, 42.15205>>,<<913.72107, -1691.21619, 44.52736>>,3)
and not IS_ENTITY_IN_ANGLED_AREA(mafia[mafped].id,<<907.27173, -1692.09302, 41>>,<<906.43494, -1701.65735, 45>>,1.6)
and NOT GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID()) //BUG FIX 1399344
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(mafia[mafped].id,SCRIPT_TASK_TURN_PED_TO_FACE_COORD)
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
TASK_TURN_PED_TO_FACE_COORD(mafia[mafped].id,GET_ENTITY_COORDS(mike()),4000)
TASK_LOOK_AT_COORD(mafia[mafped].id,GET_ENTITY_COORDS(mike()),4000)
Mafia[mafped].bHeardNoise = true
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[mafped].iVoiceID,mafia[mafped].id,mafia[mafped].sVoiceName)
if ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION1")
if mafia[mafped].id = mafia[maf_car_talking].id
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_HEAR1",CONV_PRIORITY_MEDIUM)
else
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_HEAR1b",CONV_PRIORITY_MEDIUM)
endif
elif ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION2")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_HEAR2",CONV_PRIORITY_MEDIUM)
elif ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION3")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_HEAR3",CONV_PRIORITY_MEDIUM)
endif
i_dialogueTimer = get_Game_timer()
else
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
endif
endif
PRINTSTRING("eAI_stage UPDATE due to - hear something check 1 is TRUE") PRINTNL()
elif IS_FLASH_LIGHT_ON(PLAYER_PED_ID())
and( GET_CLOCK_HOURS() >= 19 or GET_CLOCK_HOURS() < 6)
and GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(),mafia[mafped].id) < 25
and( IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(),mafia[mafped].id)
and not IS_ENTITY_IN_ANGLED_AREA(mafia[mafped].id,<<907.27173, -1692.09302, 41>>,<<906.43494, -1701.65735, 45>>,1.6)
or IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(),mafia[mafped].id))
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(mafia[mafped].id,SCRIPT_TASK_TURN_PED_TO_FACE_COORD)
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
TASK_TURN_PED_TO_FACE_COORD(mafia[mafped].id,GET_ENTITY_COORDS(mike()),4000)
TASK_LOOK_AT_COORD(mafia[mafped].id,GET_ENTITY_COORDS(mike()),4000)
Mafia[mafped].bHeardNoise = true
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[mafped].iVoiceID,mafia[mafped].id,mafia[mafped].sVoiceName)
if ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION1")
if mafia[mafped].id = mafia[maf_car_talking].id
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_HEAR1",CONV_PRIORITY_MEDIUM)
else
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_HEAR1b",CONV_PRIORITY_MEDIUM)
endif
elif ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION2")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_HEAR2",CONV_PRIORITY_MEDIUM)
elif ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION3")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_HEAR3",CONV_PRIORITY_MEDIUM)
endif
i_dialogueTimer = get_Game_timer()
else
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
endif
endif
// PRINTSTRING("eAI_stage UPDATE due to - hear something check 2 is TRUE") PRINTNL()
elif GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),GET_ENTITY_COORDS(mafia[mafped].id)) < mafia[mafped].fHearingRange
and IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
and not IS_ENTITY_IN_ANGLED_AREA(mafia[mafped].id,<<907.27173, -1692.09302, 41>>,<<906.43494, -1701.65735, 45>>,1.6)
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(mafia[mafped].id,SCRIPT_TASK_TURN_PED_TO_FACE_COORD)
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
TASK_TURN_PED_TO_FACE_COORD(mafia[mafped].id,GET_ENTITY_COORDS(mike()),4000)
TASK_LOOK_AT_COORD(mafia[mafped].id,GET_ENTITY_COORDS(mike()),4000)
Mafia[mafped].bHeardNoise = true
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[mafped].iVoiceID,mafia[mafped].id,mafia[mafped].sVoiceName)
if ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION1")
if mafia[mafped].id = mafia[maf_car_talking].id
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_HEAR1",CONV_PRIORITY_MEDIUM)
else
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_HEAR1b",CONV_PRIORITY_MEDIUM)
endif
elif ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION2")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_HEAR2",CONV_PRIORITY_MEDIUM)
elif ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION3")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_HEAR3",CONV_PRIORITY_MEDIUM)
endif
i_dialogueTimer = get_Game_timer()
else
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
endif
endif
// PRINTSTRING("eAI_stage UPDATE due to - hear something check 3 is TRUE") PRINTNL()
//============================= standing IDLE =============================
else
// PRINTSTRING("eAI_stage UPDATE - standing IDLE") PRINTNL()
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(mafia[mafped].id,SCRIPT_TASK_TURN_PED_TO_FACE_COORD)
and not IS_SCRIPT_TASK_RUNNING_OR_STARTING(mafia[mafped].id,SCRIPT_TASK_PERFORM_SEQUENCE)
and mafia[mafped].sit = SSIT_AI_NONE
if mafia[mafped].id = mafia[maf_car].id
or mafia[mafped].id = mafia[maf_car_talking].id
or mafia[mafped].id = mafia[maf_walkway_door].id
or mafia[mafped].id = mafia[maf_worker_walkway].id
if isentityalive(mafia[mafped].partner)
Task_perform_Normal_seq(int_to_enum(eEnemies_Mafia, mafped))
if Mafia[mafped].bHeardNoise
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[mafped].iVoiceID,mafia[mafped].id,mafia[mafped].sVoiceName)
if ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION1")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_NOT1",CONV_PRIORITY_MEDIUM)
elif ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION2")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_HEAR2B",CONV_PRIORITY_MEDIUM)
elif ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION3")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_NOT3",CONV_PRIORITY_MEDIUM)
endif
i_dialogueTimer = get_Game_timer()
Mafia[mafped].bHeardNoise = false
endif
endif
else
Task_perform_Normal_seq(int_to_enum(eEnemies_Mafia, mafped))
if Mafia[mafped].bHeardNoise
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[mafped].iVoiceID,mafia[mafped].id,mafia[mafped].sVoiceName)
if ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION1")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_NOT1",CONV_PRIORITY_MEDIUM)
elif ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION2")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_HEAR2B",CONV_PRIORITY_MEDIUM)
elif ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION3")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_NOT3",CONV_PRIORITY_MEDIUM)
endif
i_dialogueTimer = get_Game_timer()
Mafia[mafped].bHeardNoise = false
endif
endif
endif
endif
elif not isentityalive(mafia[mafped].id)
and mafia[mafped].bkilled
//============================= partner dead check =============================
if mafia[mafped].id = mafia[maf_car].id
or mafia[mafped].id = mafia[maf_car_talking].id
or mafia[mafped].id = mafia[maf_walkway_door].id
or mafia[mafped].id = mafia[maf_worker_walkway].id
if DOES_ENTITY_EXIST(mafia[mafped].partner)
if not IS_PED_INJURED(mafia[mafped].partner)
active_ped = mafia[mafped].partner
mafia[mafped].sit = SSIT_AI_HURT
set_ped_situations(mafia[mafped].partner,mafia[mafped].sit)
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
eAI_stage = AI_REACTION
// PRINTSTRING("eAI_stage UPDATE due to - partner dead check is TRUE") PRINTNL()
endif
endif
endif
endif
endfor
break
// Start reactions
case AI_REACTION
if not bMusic_1stEnemy
TRIGGER_MUSIC_EVENT("SOL1_1ST_ENEMY")
bMusic_1stEnemy = true
endif
if not IS_AUDIO_SCENE_ACTIVE("SOL_1_GET_TO_HELI_ALERT")
START_AUDIO_SCENE("SOL_1_GET_TO_HELI_ALERT")
endif
REPLAY_RECORD_BACK_FOR_TIME(3.0)
for mafped = 0 to enum_to_int(NUM_OF_Mafia_PEDS) -1
if isentityalive(mafia[mafped].id)
//drop clipboard
if DOES_ENTITY_EXIST(mafia[mafped].obj)
and IS_ENTITY_ATTACHED(mafia[mafped].obj)
DETACH_ENTITY(mafia[mafped].obj)
RESET_PED_WEAPON_MOVEMENT_CLIPSET(mafia[mafped].id)
SAFE_RELEASE_OBJECT(mafia[mafped].obj)
endif
if IS_AMBIENT_SPEECH_PLAYING(mafia[mafped].id)
STOP_CURRENT_PLAYING_AMBIENT_SPEECH(mafia[mafped].id)
endif
if isentityalive(mafia[mafped].partner)
if IS_AMBIENT_SPEECH_PLAYING(mafia[mafped].partner)
STOP_CURRENT_PLAYING_AMBIENT_SPEECH(mafia[mafped].partner)
endif
endif
//=================================== Dead / hurt / gun react ===========================================
if mafia[mafped].sit = SSIT_AI_HURT
or mafia[mafped].sit = SSIT_AI_GUN
if not IS_PED_FLEEING(mafia[mafped].id)
CLEAR_PED_TASKS(mafia[mafped].id)
CLEAR_SEQUENCE_TASK(seq)
OPEN_SEQUENCE_TASK(seq)
if mafia[mafped].id = Active_ped
TASK_LOOK_AT_ENTITY(null,mike(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_PITCH_LIMIT | SLF_WIDEST_YAW_LIMIT)
TASK_PLAY_ANIM(null,AnimDict_flinch,FLINCH_REACTION(),NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_SECONDARY)
TASK_PED_SLIDE_TO_COORD_HDG_RATE(null,GET_ENTITY_COORDS(mafia[mafped].id),
GET_HEADING_FROM_ENTITIES_LA(mafia[mafped].id,mike()),0.5,250)
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[mafped].iVoiceID,active_ped,mafia[mafped].sVoiceName)
if ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION1")
if GET_RANDOM_BOOL()
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_PAN1",CONV_PRIORITY_MEDIUM)
else
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_SCAR1",CONV_PRIORITY_MEDIUM)
endif
elif ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION2")
if GET_RANDOM_BOOL()
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_PAN2",CONV_PRIORITY_MEDIUM)
else
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_SCAR2",CONV_PRIORITY_MEDIUM)
endif
elif ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION3")
if GET_RANDOM_BOOL()
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_PAN3",CONV_PRIORITY_MEDIUM)
else
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_SCAR3",CONV_PRIORITY_MEDIUM)
endif
endif
else
TASK_LOOK_AT_ENTITY(null,mike(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_PITCH_LIMIT | SLF_WIDEST_YAW_LIMIT)
TASK_PED_SLIDE_TO_COORD_HDG_RATE(null,GET_ENTITY_COORDS(mafia[mafped].id),
GET_HEADING_FROM_ENTITIES_LA(mafia[mafped].id,mike()),0.5,240)
TASK_SMART_FLEE_PED(null,mike(),300,-1)
endif
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[mafped].id,seq)
CLEAR_SEQUENCE_TASK(seq)
endif
eAI_stage = AI_PHONE
//=================================== Explosion / combat ===========================================
elif mafia[mafped].sit = SSIT_AI_HEAT
Println("AI_REACTION: maf ",mafped +1," : SSIT_AI_HEAT")
if not IS_PED_FLEEING(mafia[mafped].id)
CLEAR_PED_TASKS(mafia[mafped].id)
OPEN_SEQUENCE_TASK(seq)
if mafia[mafped].id = Active_ped
TASK_LOOK_AT_ENTITY(null,mike(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_PITCH_LIMIT | SLF_WIDEST_YAW_LIMIT)
TASK_PLAY_ANIM(null,AnimDict_flinch,FLINCH_REACTION(),NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_SECONDARY)
// TASK_TURN_PED_TO_FACE_ENTITY(null,mike(),500)
TASK_PED_SLIDE_TO_COORD_HDG_RATE(null,GET_ENTITY_COORDS(mafia[mafped].id),
GET_HEADING_FROM_ENTITIES_LA(mafia[mafped].id,mike()),0.5,250)
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[mafped].iVoiceID,active_ped,mafia[mafped].sVoiceName)
if ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION1")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_PAN1",CONV_PRIORITY_MEDIUM)
elif ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION2")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_PAN2",CONV_PRIORITY_MEDIUM)
elif ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION3")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_PAN3",CONV_PRIORITY_MEDIUM)
endif
else
TASK_LOOK_AT_ENTITY(null,mike(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_PITCH_LIMIT | SLF_WIDEST_YAW_LIMIT)
TASK_PED_SLIDE_TO_COORD_HDG_RATE(null,GET_ENTITY_COORDS(mafia[mafped].id),
GET_HEADING_FROM_ENTITIES_LA(mafia[mafped].id,mike()),0.5,235)
TASK_SMART_FLEE_PED(null,mike(),300,-1)
endif
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[mafped].id,seq)
CLEAR_SEQUENCE_TASK(seq)
endif
eAI_stage = AI_PHONE
//=================================== Spotted ===========================================
elif mafia[mafped].sit = SSIT_AI_SPOTTED
// ============= floor =============
if mafia[mafped].id = mafia[maf_car].id
or mafia[mafped].id = mafia[maf_car_talking].id
if IS_ENTITY_IN_ANGLED_AREA(mike(),<<960.49347, -1737.89136, 29>>,<<966.67963, -1653.53516, 46>>,45)
switch ifloorspot
case 0
if isentityalive(mafia[maf_car].id)
and isentityalive(mafia[maf_car_talking].id)
Println("AI_REACTION: maf ",mafped +1," : SSIT_AI_SPOTTED")
CLEAR_PED_TASKS(mafia[maf_car].id)
OPEN_SEQUENCE_TASK(seq)
TASK_LOOK_AT_ENTITY(null,mike(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_PITCH_LIMIT | SLF_WIDEST_YAW_LIMIT)
TASK_TURN_PED_TO_FACE_ENTITY(null,mike(),-1)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[maf_car].id,seq)
CLEAR_SEQUENCE_TASK(seq)
CLEAR_PED_TASKS(mafia[maf_car_talking].id)
OPEN_SEQUENCE_TASK(seq)
TASK_LOOK_AT_ENTITY(null,mike(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_PITCH_LIMIT | SLF_WIDEST_YAW_LIMIT)
TASK_TURN_PED_TO_FACE_ENTITY(null,mike(),-1)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[maf_car_talking].id,seq)
CLEAR_SEQUENCE_TASK(seq)
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[maf_car_talking].iVoiceID,mafia[maf_car_talking].id,mafia[maf_car_talking].sVoiceName)
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_SEE1",CONV_PRIORITY_MEDIUM)
ifloortimer = get_Game_timer()
ifloorspot++
else
mafia[mafped].sit = SSIT_AI_HURT
endif
break
case 1
if isentityalive(mafia[maf_car].id)
and isentityalive(mafia[maf_car_talking].id)
if get_game_timer() - ifloortimer > 8000
and not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
CLEAR_PED_TASKS(mafia[maf_car].id)
OPEN_SEQUENCE_TASK(seq)
TASK_LOOK_AT_ENTITY(null,mike(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_PITCH_LIMIT | SLF_WIDEST_YAW_LIMIT)
TASK_TURN_PED_TO_FACE_ENTITY(null,mike(),-1)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[maf_car].id,seq)
CLEAR_SEQUENCE_TASK(seq)
CLEAR_PED_TASKS(mafia[maf_car_talking].id)
OPEN_SEQUENCE_TASK(seq)
TASK_LOOK_AT_ENTITY(null,mike(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_PITCH_LIMIT | SLF_WIDEST_YAW_LIMIT)
TASK_TURN_PED_TO_FACE_ENTITY(null,mike(),-1)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[maf_car_talking].id,seq)
CLEAR_SEQUENCE_TASK(seq)
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[maf_car_talking].iVoiceID,mafia[maf_car_talking].id,mafia[maf_car_talking].sVoiceName)
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_SEE2",CONV_PRIORITY_MEDIUM)
ifloorspot++
ifloortimer = get_Game_timer()
endif
else
mafia[mafped].sit = SSIT_AI_HURT
endif
break
case 2
if isentityalive(mafia[maf_car].id)
and isentityalive(mafia[maf_car_talking].id)
if get_game_timer() - ifloortimer > 8000
and not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
CLEAR_PED_TASKS(mafia[maf_car].id)
OPEN_SEQUENCE_TASK(seq)
TASK_LOOK_AT_ENTITY(null,mike(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_PITCH_LIMIT | SLF_WIDEST_YAW_LIMIT)
TASK_TURN_PED_TO_FACE_ENTITY(null,mike(),-1)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[maf_car].id,seq)
CLEAR_SEQUENCE_TASK(seq)
CLEAR_PED_TASKS(mafia[maf_car_talking].id)
OPEN_SEQUENCE_TASK(seq)
TASK_LOOK_AT_ENTITY(null,mike(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_PITCH_LIMIT | SLF_WIDEST_YAW_LIMIT)
TASK_TURN_PED_TO_FACE_ENTITY(null,mike(),0)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[maf_car_talking].id,seq)
CLEAR_SEQUENCE_TASK(seq)
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[maf_car_talking].iVoiceID,mafia[maf_car_talking].id,mafia[maf_car_talking].sVoiceName)
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_HEY",CONV_PRIORITY_MEDIUM)
eAI_stage = AI_PHONE
endif
else
mafia[mafped].sit = SSIT_AI_HURT
endif
break
endswitch
else
if isentityalive(mafia[maf_car].id)
CLEAR_PED_TASKS(mafia[maf_car].id)
endif
if isentityalive(mafia[maf_car_talking].id)
CLEAR_PED_TASKS(mafia[maf_car_talking].id)
endif
Active_ped = null
eAI_stage = AI_CHECKS
mafia[mafped].sit = SSIT_AI_NONE
endif
// gun checks
if isentityalive(mafia[mafped].id)
if not IS_PED_IN_COMBAT(mafia[mafped].id)
if HAS_PED_RECEIVED_EVENT(mafia[mafped].id, EVENT_SHOT_FIRED)
or HAS_PED_RECEIVED_EVENT(mafia[mafped].id, EVENT_SHOT_FIRED_BULLET_IMPACT)
or HAS_PED_RECEIVED_EVENT(mafia[mafped].id, EVENT_SHOT_FIRED_WHIZZED_BY)
or HAS_PED_RECEIVED_EVENT(mafia[mafped].id, EVENT_EXPLOSION_HEARD)
or HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(mafia[mafped].id,PLAYER_PED_ID())
if not IS_PED_FLEEING(mafia[mafped].id)
CLEAR_PED_TASKS(mafia[mafped].id)
CLEAR_SEQUENCE_TASK(seq)
OPEN_SEQUENCE_TASK(seq)
TASK_PLAY_ANIM(null,AnimDict_flinch,FLINCH_REACTION())
TASK_SMART_FLEE_PED(null,mike(),300,-1)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[mafped].id,seq)
CLEAR_SEQUENCE_TASK(seq)
endif
mafia[mafped].sit = SSIT_AI_GUN
if isentityalive(mafia[mafped].partner)
if not IS_PED_FLEEING(mafia[mafped].partner)
TASK_SMART_FLEE_PED(mafia[mafped].partner,mike(),300,-1)
endif
set_ped_situations(mafia[mafped].partner,mafia[mafped].sit)
endif
eAI_stage = AI_PHONE
elif HAS_ENTITY_CLEAR_LOS_TO_ENTITY_IN_FRONT(mafia[mafped].id,player_ped_id())
and (IS_PLAYER_FREE_AIMING_AT_ENTITY(player_id(),mafia[mafped].id)or IS_PLAYER_TARGETTING_ENTITY(player_id(),mafia[mafped].id))
if GET_WEAPONTYPE_GROUP(wcurrent) != WEAPONGROUP_MELEE
and wcurrent != WEAPONTYPE_UNARMED
if not IS_PED_FLEEING(mafia[mafped].id)
CLEAR_PED_TASKS(mafia[mafped].id)
CLEAR_SEQUENCE_TASK(seq)
OPEN_SEQUENCE_TASK(seq)
TASK_PLAY_ANIM(null,AnimDict_flinch,FLINCH_REACTION())
TASK_SMART_FLEE_PED(null,mike(),300,-1)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(mafia[mafped].id,seq)
CLEAR_SEQUENCE_TASK(seq)
endif
mafia[mafped].sit = SSIT_AI_GUN
if isentityalive(mafia[mafped].partner)
if not IS_PED_FLEEING(mafia[mafped].partner)
TASK_SMART_FLEE_PED(mafia[mafped].partner,mike(),300,-1)
endif
set_ped_situations(mafia[mafped].partner,mafia[mafped].sit)
endif
eAI_stage = AI_PHONE
endif
endif
endif
endif
// ============= roof =============
else
Println("AI_REACTION: maf ",mafped +1," : SSIT_AI_SPOTTED")
CLEAR_PED_TASKS(mafia[mafped].id)
OPEN_SEQUENCE_TASK(seq)
if mafia[mafped].id = Active_ped
TASK_LOOK_AT_ENTITY(null,mike(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_PITCH_LIMIT | SLF_WIDEST_YAW_LIMIT)
TASK_TURN_PED_TO_FACE_ENTITY(null,mike(),0)
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[mafped].iVoiceID,active_ped,mafia[mafped].sVoiceName)
if ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION1")
iRand = GET_RANDOM_INT_IN_RANGE(0,3)
if irand = 0
CREATE_MULTIPART_CONVERSATION_WITH_2_LINES(convo_struct,"SOL1AUD","SOL1_SEE1","SOL1_SEE1_1","SOL1_CALL1","SOL1_CALL1_1",CONV_PRIORITY_MEDIUM)
elif irand = 1
CREATE_MULTIPART_CONVERSATION_WITH_2_LINES(convo_struct,"SOL1AUD","SOL1_SEE1","SOL1_SEE1_2","SOL1_CALL1","SOL1_CALL1_2",CONV_PRIORITY_MEDIUM)
else
CREATE_MULTIPART_CONVERSATION_WITH_2_LINES(convo_struct,"SOL1AUD","SOL1_SEE1","SOL1_SEE1_3","SOL1_CALL1","SOL1_CALL1_3",CONV_PRIORITY_MEDIUM)
endif
elif ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION2")
iRand = GET_RANDOM_INT_IN_RANGE(0,3)
if irand = 0
CREATE_MULTIPART_CONVERSATION_WITH_2_LINES(convo_struct,"SOL1AUD","SOL1_SEE3","SOL1_SEE3_1","SOL1_CALL2","SOL1_CALL2_3",CONV_PRIORITY_MEDIUM)
elif irand = 1
CREATE_MULTIPART_CONVERSATION_WITH_2_LINES(convo_struct,"SOL1AUD","SOL1_SEE3","SOL1_SEE3_2","SOL1_CALL2","SOL1_CALL2_2",CONV_PRIORITY_MEDIUM)
else
CREATE_MULTIPART_CONVERSATION_WITH_2_LINES(convo_struct,"SOL1AUD","SOL1_SEE3","SOL1_SEE3_3","SOL1_CALL2","SOL1_CALL2_1",CONV_PRIORITY_MEDIUM)
endif
elif ARE_STRINGS_EQUAL(mafia[mafped].sVoiceName,"CONSTRUCTION3")
iRand = GET_RANDOM_INT_IN_RANGE(0,3)
if irand = 0
CREATE_MULTIPART_CONVERSATION_WITH_2_LINES(convo_struct,"SOL1AUD","SOl1_SEE5","SOl1_SEE5_1","SOl1_CHECK2","SOl1_CHECK2_1",CONV_PRIORITY_MEDIUM)
elif irand = 1
CREATE_MULTIPART_CONVERSATION_WITH_2_LINES(convo_struct,"SOL1AUD","SOl1_SEE5","SOl1_SEE5_2","SOl1_CHECK2","SOl1_CHECK2_2",CONV_PRIORITY_MEDIUM)
else
CREATE_MULTIPART_CONVERSATION_WITH_2_LINES(convo_struct,"SOL1AUD","SOl1_SEE5","SOl1_SEE5_3","SOl1_CHECK2","SOl1_CHECK2_3",CONV_PRIORITY_MEDIUM)
endif
endif
else
TASK_LOOK_AT_ENTITY(null,mike(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_PITCH_LIMIT | SLF_WIDEST_YAW_LIMIT)
TASK_TURN_PED_TO_FACE_ENTITY(null,mike(),0)
TASK_SMART_FLEE_PED(null,mike(),300,-1)
endif
CLOSE_SEQUENCE_TASK(seq)
if not IS_PED_INJURED(mafia[mafped].id)
TASK_PERFORM_SEQUENCE(mafia[mafped].id,seq)
endif
CLEAR_SEQUENCE_TASK(seq)
eAI_stage = AI_PHONE
endif
endif
elif not isentityalive(mafia[mafped].id)
and mafia[mafped].bkilled
if not isentityalive(Active_ped)
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
Active_ped = null
eAI_stage = AI_CHECKS
endif
endif
endfor
break
case AI_PHONE
if isentityalive(active_ped)
if not bFirstAlerted
print_help("SOL1_ALARM")
bFirstAlerted = true
endif
if not IS_SCRIPTED_CONVERSATION_ONGOING()
if not IS_ENTITY_PLAYING_ANIM(active_ped,AnimDict_PHONE,animPhone)
if not IS_PED_GETTING_UP(Active_ped)
and not IS_PED_RAGDOLL(Active_ped)
and not IS_ENTITY_PLAYING_ANIM(Active_ped,AnimDict_flinch,"reaction_forward_big_intro_c")
and not IS_ENTITY_PLAYING_ANIM(Active_ped,AnimDict_flinch,"reaction_forward_big_intro_a")
println("PHONE STAGE 1")
CLEAR_SEQUENCE_TASK(seq)
OPEN_SEQUENCE_TASK(seq)
TASK_PLAY_ANIM(null,AnimDict_PHONE,animPhone,SLOW_BLEND_IN,Normal_BLEND_OUT,-1,AF_LOOPING | AF_SECONDARY | AF_UPPERBODY)
if get_ped_Sit(active_ped) = SSIT_AI_GUN
or get_ped_Sit(active_ped) = SSIT_AI_HEAT
or get_ped_Sit(active_ped) = SSIT_AI_HURT
TASK_SMART_FLEE_PED(null,mike(),300,-1)
endif
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(active_ped,seq)
CLEAR_SEQUENCE_TASK(seq)
ADD_PED_FOR_DIALOGUE(convo_struct,1,active_ped,"MAFIAGOON")
iRand = GET_RANDOM_INT_IN_RANGE(0,4)
iPhoneCheckBackupTimer = get_Game_timer()
endif
else
for mafped = 0 to enum_to_int(NUM_OF_Mafia_PEDS) -1
if mafia[mafped].id = active_ped
println("PHONE STAGE 2 ")
if mafia[mafped].sit = SSIT_AI_SPOTTED
println("PHONE STAGE 3 ")
if get_game_timer() - iPhoneCheckBackupTimer > 1125
Println("AI_phone: SSIT_AI_SPOTTED")
eAI_stage = AI_ALARM
iPhoningChat = 0
endif
else
println("PHONE STAGE 4 ")
if get_game_timer() - iPhoneCheckBackupTimer > 1125
Println("AI_phone: SSIT_AI_guns")
eAI_stage = AI_ALARM
iPhoningChat = 1
endif
endif
endif
endfor
endif
endif
else
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
Active_ped = null
eAI_stage = AI_CHECKS
endif
for mafped = 0 to enum_to_int(NUM_OF_Mafia_PEDS) -1
if isentityalive(mafia[mafped].id)
if not IS_PED_IN_COMBAT(mafia[mafped].id)
if HAS_PED_RECEIVED_EVENT(mafia[mafped].id, EVENT_SHOT_FIRED)
or HAS_PED_RECEIVED_EVENT(mafia[mafped].id, EVENT_SHOT_FIRED_BULLET_IMPACT)
or HAS_PED_RECEIVED_EVENT(mafia[mafped].id, EVENT_SHOT_FIRED_WHIZZED_BY)
or HAS_PED_RECEIVED_EVENT(mafia[mafped].id, EVENT_EXPLOSION_HEARD)
or HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(mafia[mafped].id,PLAYER_PED_ID())
if not IS_PED_FLEEING(mafia[mafped].id)
and not IS_ENTITY_PLAYING_ANIM(mafia[mafped].id,AnimDict_flinch,"reaction_forward_big_intro_c")
and not IS_ENTITY_PLAYING_ANIM(mafia[mafped].id,AnimDict_flinch,"reaction_forward_big_intro_a")
and mafia[mafped].sit = SSIT_AI_SPOTTED
if mafia[mafped].id != Active_ped
TASK_SMART_FLEE_PED(mafia[mafped].id,mike(),300,-1)
else
CLEAR_PED_TASKS(Active_ped)
TASK_PLAY_ANIM(active_ped,AnimDict_flinch,FLINCH_REACTION())
endif
endif
mafia[mafped].sit = SSIT_AI_GUN
if isentityalive(mafia[mafped].partner)
if not IS_PED_FLEEING(mafia[mafped].partner)
TASK_SMART_FLEE_PED(mafia[mafped].partner,mike(),300,-1)
endif
set_ped_situations(mafia[mafped].partner,mafia[mafped].sit)
endif
elif HAS_ENTITY_CLEAR_LOS_TO_ENTITY_IN_FRONT(mafia[mafped].id,player_ped_id())
and (IS_PLAYER_FREE_AIMING_AT_ENTITY(player_id(),mafia[mafped].id)or IS_PLAYER_TARGETTING_ENTITY(player_id(),mafia[mafped].id))
if GET_WEAPONTYPE_GROUP(wcurrent) != WEAPONGROUP_MELEE
and wcurrent != WEAPONTYPE_UNARMED
if not IS_PED_FLEEING(mafia[mafped].id)
and not IS_ENTITY_PLAYING_ANIM(mafia[mafped].id,AnimDict_flinch,"reaction_forward_big_intro_c")
and not IS_ENTITY_PLAYING_ANIM(mafia[mafped].id,AnimDict_flinch,"reaction_forward_big_intro_a")
and mafia[mafped].sit = SSIT_AI_SPOTTED
if mafia[mafped].id != Active_ped
TASK_SMART_FLEE_PED(mafia[mafped].id,mike(),300,-1)
else
CLEAR_PED_TASKS(Active_ped)
TASK_PLAY_ANIM(active_ped,AnimDict_flinch,FLINCH_REACTION())
endif
endif
mafia[mafped].sit = SSIT_AI_GUN
if isentityalive(mafia[mafped].partner)
if not IS_PED_FLEEING(mafia[mafped].partner)
TASK_SMART_FLEE_PED(mafia[mafped].partner,mike(),300,-1)
endif
set_ped_situations(mafia[mafped].partner,mafia[mafped].sit)
endif
endif
endif
endif
endif
endfor
break
case AI_ALARM
if isentityalive(active_ped)
switch iPhoningChat
case 0 // spotted
println("alarm:0: ",irand)
if IS_ENTITY_PLAYING_ANIM(active_ped,AnimDict_PHONE,animPhone)
and not IS_PED_RAGDOLL(Active_ped)
and not IS_PED_GETTING_UP(Active_ped)
if get_game_timer() - iPhoneCheckBackupTimer > 2000
println("alarm:0:1")
if not IS_SCRIPTED_CONVERSATION_ONGOING()
if ARE_STRINGS_EQUAL(get_ped_Voice_string(Active_ped),"CONSTRUCTION1")
ADD_PED_FOR_DIALOGUE(convo_struct,4,active_ped,"CONSTRUCTION1")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_PHN",CONV_PRIORITY_MEDIUM)
iphonetimer = get_Game_timer()
iPhoningChat = 2
endif
elif ARE_STRINGS_EQUAL(get_ped_Voice_string(Active_ped),"CONSTRUCTION2")
ADD_PED_FOR_DIALOGUE(convo_struct,3,active_ped,"CONSTRUCTION2")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_PHN2",CONV_PRIORITY_MEDIUM)
iphonetimer = get_Game_timer()
iPhoningChat = 2
endif
elif ARE_STRINGS_EQUAL(get_ped_Voice_string(Active_ped),"CONSTRUCTION3")
ADD_PED_FOR_DIALOGUE(convo_struct,5,active_ped,"CONSTRUCTION3")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_CALL3",CONV_PRIORITY_MEDIUM)
iphonetimer = get_Game_timer()
iPhoningChat = 2
endif
endif
endif
endif
else
println("alarm:0:2")
if not IS_PED_RAGDOLL(Active_ped)
and not IS_PED_GETTING_UP(Active_ped)
if not IS_ENTITY_PLAYING_ANIM(active_ped,AnimDict_PHONE,animPhone)
println("alarm:0:3")
CLEAR_PED_TASKS(active_ped)
CLEAR_SEQUENCE_TASK(seq)
OPEN_SEQUENCE_TASK(seq)
TASK_PLAY_ANIM(null,AnimDict_PHONE,animPhone,SLOW_BLEND_IN,Normal_BLEND_OUT,-1,AF_LOOPING | AF_SECONDARY | AF_UPPERBODY)
if get_ped_Sit(active_ped) = SSIT_AI_GUN
or get_ped_Sit(active_ped) = SSIT_AI_HEAT
or get_ped_Sit(active_ped) = SSIT_AI_HURT
TASK_SMART_FLEE_PED(null,mike(),300,-1)
endif
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(active_ped,seq)
CLEAR_SEQUENCE_TASK(seq)
endif
endif
endif
break
case 1 // guns
println("alarm:1")
if IS_ENTITY_PLAYING_ANIM(active_ped,AnimDict_PHONE,animPhone)
and not IS_PED_RAGDOLL(Active_ped)
and not IS_PED_GETTING_UP(Active_ped)
if get_game_timer() - iPhoneCheckBackupTimer > 2000
println("alarm:1:1")
if not IS_SCRIPTED_CONVERSATION_ONGOING()
if ARE_STRINGS_EQUAL(get_ped_Voice_string(Active_ped),"CONSTRUCTION1")
ADD_PED_FOR_DIALOGUE(convo_struct,4,active_ped,"CONSTRUCTION1")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_CALLS1",CONV_PRIORITY_MEDIUM)
iphonetimer = get_Game_timer()
iPhoningChat = 2
endif
elif ARE_STRINGS_EQUAL(get_ped_Voice_string(Active_ped),"CONSTRUCTION2")
ADD_PED_FOR_DIALOGUE(convo_struct,3,active_ped,"CONSTRUCTION2")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_CALLS2",CONV_PRIORITY_MEDIUM)
iphonetimer = get_Game_timer()
iPhoningChat = 2
endif
elif ARE_STRINGS_EQUAL(get_ped_Voice_string(Active_ped),"CONSTRUCTION3")
ADD_PED_FOR_DIALOGUE(convo_struct,5,active_ped,"CONSTRUCTION3")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_CALLS3",CONV_PRIORITY_MEDIUM)
iphonetimer = get_Game_timer()
iPhoningChat = 2
endif
endif
ENDIF
endif
else
println("alarm:1:2")
if not IS_PED_RAGDOLL(Active_ped)
and not IS_PED_GETTING_UP(Active_ped)
and not IS_ENTITY_PLAYING_ANIM(active_ped,AnimDict_flinch,"reaction_forward_big_intro_c")
and not IS_ENTITY_PLAYING_ANIM(active_ped,AnimDict_flinch,"reaction_forward_big_intro_a")
if not IS_ENTITY_PLAYING_ANIM(active_ped,AnimDict_PHONE,animPhone)
println("alarm:1:3")
CLEAR_PED_TASKS(active_ped)
CLEAR_SEQUENCE_TASK(seq)
OPEN_SEQUENCE_TASK(seq)
TASK_PLAY_ANIM(null,AnimDict_PHONE,animPhone,SLOW_BLEND_IN,Normal_BLEND_OUT,-1,AF_LOOPING | AF_SECONDARY | AF_UPPERBODY)
if get_ped_Sit(active_ped) = SSIT_AI_GUN
or get_ped_Sit(active_ped) = SSIT_AI_HEAT
or get_ped_Sit(active_ped) = SSIT_AI_HURT
TASK_SMART_FLEE_PED(null,mike(),300,-1)
endif
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(active_ped,seq)
CLEAR_SEQUENCE_TASK(seq)
endif
endif
endif
break
case 2
println("alarm:2")
if not IS_SCRIPTED_CONVERSATION_ONGOING()
iPhoningChat++
ELSE
if get_Game_timer() - iphonetimer > 2000
iPhoningChat = 3
endif
if IS_PED_RAGDOLL(active_ped)
or IS_PED_GETTING_UP(Active_ped)
or not IS_ENTITY_PLAYING_ANIM(active_ped,AnimDict_PHONE,animPhone)
CLEAR_PED_TASKS(active_ped)
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
iRand = GET_RANDOM_INT_IN_RANGE(0,4)
Println("Interrupted send back to start convo again gun")
eAI_stage = AI_ALARM
iPhoningChat = 1
endif
if not IS_PED_FLEEING(active_ped)
and get_ped_Sit(active_ped) = SSIT_AI_SPOTTED
if HAS_PED_RECEIVED_EVENT(active_ped, EVENT_SHOT_FIRED)
or HAS_PED_RECEIVED_EVENT(active_ped, EVENT_SHOT_FIRED_BULLET_IMPACT)
or HAS_PED_RECEIVED_EVENT(active_ped, EVENT_SHOT_FIRED_WHIZZED_BY)
or HAS_PED_RECEIVED_EVENT(active_ped, EVENT_EXPLOSION_HEARD)
CLEAR_PED_TASKS(active_ped)
TASK_PLAY_ANIM(active_ped,AnimDict_flinch,FLINCH_REACTION())
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
iRand = GET_RANDOM_INT_IN_RANGE(0,4)
Println("Interrupted send back to start convo again gun")
eAI_stage = AI_ALARM
iPhoningChat = 1
elif HAS_ENTITY_CLEAR_LOS_TO_ENTITY_IN_FRONT(active_ped,player_ped_id())
and ( IS_PLAYER_FREE_AIMING_AT_ENTITY(player_id(),active_ped)
or IS_PLAYER_TARGETTING_ENTITY(player_id(),active_ped))
if GET_WEAPONTYPE_GROUP(wcurrent) != WEAPONGROUP_MELEE
and wcurrent != WEAPONTYPE_UNARMED
CLEAR_PED_TASKS(active_ped)
TASK_PLAY_ANIM(active_ped,AnimDict_flinch,FLINCH_REACTION())
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
iRand = GET_RANDOM_INT_IN_RANGE(0,4)
Println("Interrupted send back to start convo again gun")
eAI_stage = AI_ALARM
iPhoningChat = 1
endif
endif
endif
endif
break
case 3
println("alarm:3")
if not IS_ENTITY_PLAYING_ANIM(active_ped,AnimDict_PHONE,animPhone)
OPEN_SEQUENCE_TASK(seq)
if get_ped_Sit(active_ped) = SSIT_AI_GUN
or get_ped_Sit(active_ped) = SSIT_AI_HEAT
or get_ped_Sit(active_ped) = SSIT_AI_HURT
TASK_SMART_FLEE_PED(null,mike(),300,-1)
else
TASK_WANDER_STANDARD(null)
endif
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(active_ped,seq)
CLEAR_SEQUENCE_TASK(Seq)
MISSION_FAILED(mff_rocco_alerted)
iPhoningChat++
else
CLEAR_PED_SECONDARY_TASK(active_ped)
endif
break
endswitch
else
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
Active_ped = null
eAI_stage = AI_CHECKS
endif
for mafped = 0 to enum_to_int(NUM_OF_Mafia_PEDS) -1
if isentityalive(mafia[mafped].id)
if not IS_PED_IN_COMBAT(mafia[mafped].id)
if HAS_PED_RECEIVED_EVENT(mafia[mafped].id, EVENT_SHOT_FIRED)
or HAS_PED_RECEIVED_EVENT(mafia[mafped].id, EVENT_SHOT_FIRED_BULLET_IMPACT)
or HAS_PED_RECEIVED_EVENT(mafia[mafped].id, EVENT_SHOT_FIRED_WHIZZED_BY)
or HAS_PED_RECEIVED_EVENT(mafia[mafped].id, EVENT_EXPLOSION_HEARD)
or HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(mafia[mafped].id,PLAYER_PED_ID())
if mafia[mafped].id != Active_ped
TASK_SMART_FLEE_PED(mafia[mafped].id,mike(),300,-1)
endif
mafia[mafped].sit = SSIT_AI_GUN
if isentityalive(mafia[mafped].partner)
if not IS_PED_FLEEING(mafia[mafped].partner)
TASK_SMART_FLEE_PED(mafia[mafped].partner,mike(),300,-1)
endif
set_ped_situations(mafia[mafped].partner,mafia[mafped].sit)
endif
elif HAS_ENTITY_CLEAR_LOS_TO_ENTITY_IN_FRONT(mafia[mafped].id,player_ped_id())
and (IS_PLAYER_FREE_AIMING_AT_ENTITY(player_id(),mafia[mafped].id)or IS_PLAYER_TARGETTING_ENTITY(player_id(),mafia[mafped].id))
if GET_WEAPONTYPE_GROUP(wcurrent) != WEAPONGROUP_MELEE
and wcurrent != WEAPONTYPE_UNARMED
if mafia[mafped].id != Active_ped
TASK_SMART_FLEE_PED(mafia[mafped].id,mike(),300,-1)
endif
mafia[mafped].sit = SSIT_AI_GUN
if isentityalive(mafia[mafped].partner)
if not IS_PED_FLEEING(mafia[mafped].partner)
TASK_SMART_FLEE_PED(mafia[mafped].partner,mike(),300,-1)
endif
set_ped_situations(mafia[mafped].partner,mafia[mafped].sit)
endif
endif
endif
endif
endif
endfor
break
endswitch
endproc
PROC manage_GIANNI()
//===================== ===================== ===================== =====================
if IS_ENTITY_IN_ANGLED_AREA(mike(),<<908.51294, -1699.99683, 65>>,<<910.62000, -1663.53870, 50>>,18)
//============================= hear explosion =============================
if HAS_PED_RECEIVED_EVENT(Gianni(), EVENT_EXPLOSION_HEARD)
or IS_EXPLOSION_IN_SPHERE(EXP_TAG_DONTCARE,<<910.30920, -1681.37939, 50.14197>>,30)
or IS_PROJECTILE_TYPE_IN_ANGLED_AREA(<<910.59302, -1671.71436, 49.13342>>,<<909.09564, -1689.48096, 54.12972>>,12.0,WEAPONTYPE_STICKYBOMB)
if isentityalive(Anton())
and isentityalive(milton())
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
int rand = GET_RANDOM_INT_IN_RANGE(0,3)
if rand = 0
ADD_PED_FOR_DIALOGUE(convo_struct,4,active_ped,"GIANNI")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_HEAR",CONV_PRIORITY_MEDIUM)
elif rand = 1
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"Anton")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_SCARE",CONV_PRIORITY_MEDIUM)
else
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1Actor")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_SCARE2",CONV_PRIORITY_MEDIUM)
endif
endif
if not IS_PED_FLEEING(Anton())
TASK_SMART_FLEE_PED(Anton(),mike(),200,-1)
endif
if not IS_PED_FLEEING(Milton())
TASK_SMART_FLEE_PED(Milton(),mike(),200,-1)
endif
if not IS_PED_FLEEING(Gianni())
TASK_SMART_FLEE_PED(Milton(),mike(),200,-1)
endif
MISSION_FAILED(Mff_scared_peds)
endif
endif
//============================= hear something =============================
if GET_PLAYER_CURRENT_STEALTH_NOISE(player_id()) > 9.0
and NOT GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID())
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(Gianni(),SCRIPT_TASK_TURN_PED_TO_FACE_COORD)
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(convo_struct,4,active_ped,"GIANNI")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_HEAR",CONV_PRIORITY_MEDIUM)
endif
TASK_TURN_PED_TO_FACE_COORD(Gianni(),GET_ENTITY_COORDS(mike()),4000)
endif
elif IS_FLASH_LIGHT_ON(PLAYER_PED_ID())
and( GET_CLOCK_HOURS() >= 19 or GET_CLOCK_HOURS() < 6)
and( IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(),Gianni())
or IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(),Gianni()))
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(Gianni(),SCRIPT_TASK_TURN_PED_TO_FACE_COORD)
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(convo_struct,4,active_ped,"GIANNI")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_HEAR",CONV_PRIORITY_MEDIUM)
endif
TASK_TURN_PED_TO_FACE_COORD(Gianni(),GET_ENTITY_COORDS(mike()),4000)
endif
elif IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(Gianni(),SCRIPT_TASK_TURN_PED_TO_FACE_COORD)
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(convo_struct,4,active_ped,"GIANNI")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_HEAR",CONV_PRIORITY_MEDIUM)
endif
TASK_TURN_PED_TO_FACE_COORD(Gianni(),GET_ENTITY_COORDS(mike()),4000)
endif
endif
else
if HAS_PED_RECEIVED_EVENT(Gianni(), EVENT_EXPLOSION_HEARD)
or IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_DONTCARE,<<919.02515, -1736.73352, 28>>,<<925.47205, -1649.41968, 65>>,120)
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
endif
endif
//============================= standing IDLE =============================
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(Gianni(),SCRIPT_TASK_TURN_PED_TO_FACE_COORD)
and not IS_SCRIPT_TASK_RUNNING_OR_STARTING(Gianni(),SCRIPT_TASK_PERFORM_SEQUENCE)
if not IS_ENTITY_AT_COORD(Gianni(),<<913.27625, -1683.50452, 50.13412>>,<<2,2,2>>)
or not IS_PED_FACING_PED(Gianni(),Milton(),40)
OPEN_SEQUENCE_TASK(seq)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<913.27625, -1683.50452, 50.13412>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,53.21)
if not IS_PED_FACING_PED(Gianni(),Milton(),40)
TASK_TURN_PED_TO_FACE_ENTITY(null,Milton())
endif
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(Gianni(),seq)
CLEAR_SEQUENCE_TASK(seq)
endif
endif
endproc
FUNC SCARE_TYPE GET_SCARE_TYPE()
if isentityalive(vehs[mvf_heli].id)
and isentityalive(Milton())
if IS_PED_IN_VEHICLE(player_ped_id(),vehs[mvf_heli].id)
// ============== UNDER BRIDGE =================
iBridgeCountDuringMission = CHECK_BRIDGE_COMPLETION() //BUG FIX 1399435 check this every frame to see if player has gone under any bridges
PRINTSTRING("iBridgeCountDuringMission = ") PRINTINT(iBridgeCountDuringMission) PRINTNL()
PRINTSTRING("iBridgeCountAtStart = ") PRINTINT(iBridgeCountAtStart) PRINTNL()
IF iBridgeCountAtStart < iBridgeCountDuringMission //BUG FIX 1399435
// if g_bUnderTheBridgeTriggered //BUG FIX 1399435
CPRINTLN(DEBUG_MISSION,"SCARE_BRIDGE")
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1ACTOR")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_HELI_BR",CONV_PRIORITY_MEDIUM)
g_bUnderTheBridgeTriggered = false
iBridgeCountAtStart = CHECK_BRIDGE_COMPLETION() //BUG FIX 1399435 reset the start counter now
return SCARE_BRIDGE
endif
else
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"Anton")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_BRIDGE",CONV_PRIORITY_MEDIUM)
g_bUnderTheBridgeTriggered = false
iBridgeCountAtStart = CHECK_BRIDGE_COMPLETION() //BUG FIX 1399435 reset the start counter now
return SCARE_BRIDGE
endif
endif
endif
// ================= CRASH ====================
iHeliHealthNow = GET_ENTITY_HEALTH(vehs[mvf_heli].id) //BUG FIX 1399448 get the heli's health at the start then if it drops down by 50 return SCARE_CRASH
IF iHeliHealthNow < (iHeliHealthStart - 50) //BUG FIX 1399448
// if Has_Vehicle_Been_Damaged()//BUG FIX 1399448
CPRINTLN(DEBUG_MISSION,"SCARE_CRASH")
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1ACTOR")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_HELI_CR",CONV_PRIORITY_MEDIUM)
iHeliHealthStart = GET_ENTITY_HEALTH(vehs[mvf_heli].id)//BUG FIX 1399448
return SCARE_CRASH
endif
else
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"Anton")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_CRASH",CONV_PRIORITY_MEDIUM)
iHeliHealthStart = GET_ENTITY_HEALTH(vehs[mvf_heli].id)//BUG FIX 1399448
return SCARE_CRASH
endif
endif
endif
// ================= LOW and FAST ====================
if GET_ENTITY_SPEED(vehs[mvf_heli].id) >= LOW_HEIGHT_SPEED
and GET_ENTITY_HEIGHT_ABOVE_GROUND(vehs[mvf_heli].id) <= LOW_HEIGHT_MAX
CPRINTLN(DEBUG_MISSION,"SCARE_LOW_FAST: speed: ",GET_ENTITY_SPEED(vehs[mvf_heli].id)," height: ",GET_ENTITY_HEIGHT_ABOVE_GROUND(vehs[mvf_heli].id))
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1ACTOR")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_LOW1",CONV_PRIORITY_MEDIUM)
return SCARE_LOW_FAST
endif
else
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"Anton")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_LOW2",CONV_PRIORITY_MEDIUM)
return SCARE_LOW_FAST
endif
endif
endif
// ================= NEAR MISS ==================== //Bug fix 1399440 have sent to code as the below function is returning true all the time.
if GET_ENTITY_SPEED(vehs[mvf_heli].id) >= LOW_HEIGHT_SPEED
if shapetestheli = null
shapetestheli = START_SHAPE_TEST_BOX(GET_ENTITY_COORDS(vehs[mvf_heli].id), <<15,15,6>>, GET_ENTITY_ROTATION(vehs[mvf_heli].id), DEFAULT, SCRIPT_INCLUDE_MOVER|SCRIPT_INCLUDE_VEHICLE, vehs[mvf_heli].id)
endif
if GET_SHAPE_TEST_RESULT(shapetestheli,iShapetestResult,vecShapetestResult,vecShapetestNormal,hitEntity) != SHAPETEST_STATUS_RESULTS_NOTREADY
shapetestheli = null
if iShapetestResult = 1
CPRINTLN(DEBUG_MISSION,"SCARE_CRASH from NEAR MISS")
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1ACTOR")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_GENM",CONV_PRIORITY_MEDIUM)
return SCARE_CRASH
endif
else
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"Anton")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_GENA",CONV_PRIORITY_MEDIUM)
return SCARE_CRASH
endif
endif
endif
endif
endif
// ================= PITCH ====================
vector vRotSpeed = GET_ENTITY_ROTATION_VELOCITY(vehs[mvf_heli].id)
if vRotSpeed.x <= -PITCH_CHANGE
or vRotSpeed.x >= PITCH_CHANGE
CPRINTLN(DEBUG_MISSION,"SCARE_PITCH: ", vRotSpeed.x)
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1ACTOR")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_HELI_PH",CONV_PRIORITY_MEDIUM)
return SCARE_PITCH
endif
else
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"Anton")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_PITCH",CONV_PRIORITY_MEDIUM)
return SCARE_PITCH
endif
endif
endif
// ================= HEADING ====================
if vRotSpeed.z <= -HEADING_CHANGE
or vRotSpeed.z >= HEADING_CHANGE
CPRINTLN(DEBUG_MISSION,"SCARE_heading: ", vRotSpeed.z)
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1ACTOR")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_HELI_PH",CONV_PRIORITY_MEDIUM)
return SCARE_HEADING_CHANGE
endif
else
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"Anton")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_PITCH",CONV_PRIORITY_MEDIUM)
return SCARE_HEADING_CHANGE
endif
endif
endif
// ================= HEIGHT ====================
vector vSpeedVector = GET_ENTITY_SPEED_VECTOR(vehs[mvf_heli].id)
if vSpeedVector.z <= DROP_SPEED
CPRINTLN(DEBUG_MISSION,"SCARE_DROP: ", vRotSpeed.z)
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1ACTOR",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_GENM",CONV_PRIORITY_MEDIUM)
return SCARE_HEIGHT_DROP
endif
else
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"Anton",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_GENA",CONV_PRIORITY_MEDIUM)
return SCARE_HEIGHT_DROP
endif
endif
endif
// ================= SPEED ====================
if GET_ENTITY_SPEED(vehs[mvf_heli].id) >= HIGH_SPEED_TRIGGER
CPRINTLN(DEBUG_MISSION,"SCARE_SPEED: ", GET_ENTITY_SPEED(vehs[mvf_heli].id))
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1ACTOR",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_HELI_SP",CONV_PRIORITY_MEDIUM)
return SCARE_SPEED
endif
else
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"Anton",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_FAST",CONV_PRIORITY_MEDIUM)
return SCARE_SPEED
endif
endif
endif
endif
endif
return SCARE_NONE
endfunc
func bool Scared_Milton()
switch iScareStage
case 0
if IS_SAFE_TO_DISPLAY_GODTEXT()
PRINT_NOW("CMN_GENGETINHE",DEFAULT_GOD_TEXT_TIME,1)
if not DOES_BLIP_EXIST(blip_objective)
blip_objective = CREATE_BLIP_FOR_VEHICLE(vehs[mvf_heli].id)
endif
bScareHeliWarn = false
//Set flags for bridge check at start
iBridgeCountAtStart = CHECK_BRIDGE_COMPLETION() //BUG FIX 1399435 Get the start count for how many bridges have been flown under
iLastIncrementTimer = 0
iHeliHealthStart = GET_ENTITY_HEALTH(vehs[mvf_heli].id)
iScareStage++
endif
break
case 1
if isentityalive(vehs[mvf_heli].id)
if GET_DISTANCE_BETWEEN_ENTITIES(mike(),vehs[mvf_heli].id) < 5
and IS_SAFE_TO_START_CONVERSATION()
ADD_PED_FOR_DIALOGUE(convo_struct,0,mike(),"MICHAEL",true)
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1ACTOR",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_NOGO",CONV_PRIORITY_MEDIUM)
bpauseconv = false
iScareStage++
endif
endif
endif
break
case 2
if IS_PED_IN_VEHICLE(player_ped_id(),vehs[mvf_heli].id)
and not IS_SCRIPTED_CONVERSATION_ONGOING()
and IS_SAFE_TO_START_CONVERSATION()
ADD_PED_FOR_DIALOGUE(convo_struct,0,mike(),"MICHAEL",true)
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1ACTOR",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_INCHOP",CONV_PRIORITY_MEDIUM)
bpauseconv = false
iScareStage++
endif
elif IS_SCRIPTED_CONVERSATION_ONGOING()
PAUSE_FACE_TO_FACE_CONVERSATION(false)
endif
break
case 3
if IS_SCRIPTED_CONVERSATION_ONGOING()
PAUSE_FACE_TO_FACE_CONVERSATION(false)
else
if IS_PED_IN_VEHICLE(player_ped_id(),vehs[mvf_heli].id)
and IS_SAFE_TO_DISPLAY_GODTEXT()
PRINT_NOW("SOL1_SCARE",DEFAULT_GOD_TEXT_TIME,1)
iScareInt = 0
bPlayChat = true
iScareTimer2 = get_Game_timer()
iScareStage++
endif
endif
break
case 4
if iScareInt < 5
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
and get_Game_timer() - iScareTimer2 > 2000
if GET_SCARE_TYPE() <> SCARE_NONE
PRINTSTRING("GET_SCARE_TYPE <> SCARE_NONE") PRINTNL()
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(Milton(),SCRIPT_TASK_PERFORM_SEQUENCE)
and HAS_ANIM_DICT_LOADED("misssolomon_1")
OPEN_SEQUENCE_TASK(seq)
TASK_PLAY_ANIM(null,"misssolomon_1","anton_heli_loop",walk_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_UPPERBODY)
TASK_PLAY_ANIM(null,"misssolomon_1","anton_heli_exit",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_UPPERBODY)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(Milton(),seq)
CLEAR_SEQUENCE_TASK(seq)
endif
iScareTimer2 = get_Game_timer()
bPlayChat = true
REPLAY_RECORD_BACK_FOR_TIME(5.0)
iScareInt++
else
switch iScareInt
case 0
if bPlayChat
PRINT_HELP("SOL1_SCAREHLP")
ADD_PED_FOR_DIALOGUE(convo_struct,0,mike(),"MICHAEL",true)
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1ACTOR",true)
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"ANTON",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_CHAT1",CONV_PRIORITY_MEDIUM)
bPlayChat = false
iScareTimer2 = get_Game_timer()
endif
else
if get_Game_timer() - iScareTimer2 > 20000
if IS_PED_IN_VEHICLE(player_ped_id(),vehs[mvf_heli].id)
if IS_PED_IN_VEHICLE(Milton(),GET_VEHICLE_PED_IS_IN(mike()))
and IS_PED_IN_VEHICLE(Anton(),GET_VEHICLE_PED_IS_IN(mike()))
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1ACTOR",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_HELI_ID",CONV_PRIORITY_MEDIUM)
iScareTimer2 = get_Game_timer()
endif
else
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"Anton",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_NOSCAR",CONV_PRIORITY_MEDIUM)
iScareTimer2 = get_Game_timer()
endif
endif
endif
endif
endif
endif
break
case 1
if get_Game_timer() - iScareTimer2 > 12000
ADD_PED_FOR_DIALOGUE(convo_struct,0,mike(),"MICHAEL",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_SCARY",CONV_PRIORITY_MEDIUM)
iScareTimer2 = get_Game_timer()
endif
endif
break
case 2
if bPlayChat
ADD_PED_FOR_DIALOGUE(convo_struct,0,mike(),"MICHAEL",true)
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1ACTOR",true)
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"ANTON",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_CHAT3",CONV_PRIORITY_MEDIUM)
bPlayChat = false
iScareTimer2 = get_Game_timer()
endif
else
if get_Game_timer() - iScareTimer2 > 25000
if IS_PED_IN_VEHICLE(player_ped_id(),vehs[mvf_heli].id)
if IS_PED_IN_VEHICLE(Milton(),vehs[mvf_heli].id)
and IS_PED_IN_VEHICLE(Anton(),vehs[mvf_heli].id)
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,0,mike(),"MICHAEL",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_SCARY",CONV_PRIORITY_MEDIUM)
iScareTimer2 = get_Game_timer()
endif
else
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1ACTOR",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_HELI_ID",CONV_PRIORITY_MEDIUM)
iScareTimer2 = get_Game_timer()
endif
else
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"Anton",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_NOSCAR",CONV_PRIORITY_MEDIUM)
iScareTimer2 = get_Game_timer()
endif
endif
endif
endif
endif
endif
endif
break
case 3
case 4
if get_Game_timer() - iScareTimer2 > 25000
if IS_PED_IN_VEHICLE(player_ped_id(),vehs[mvf_heli].id)
if IS_PED_IN_VEHICLE(Milton(),vehs[mvf_heli].id)
and IS_PED_IN_VEHICLE(Anton(),vehs[mvf_heli].id)
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,0,mike(),"MICHAEL",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_SCARY",CONV_PRIORITY_MEDIUM)
iScareTimer2 = get_Game_timer()
endif
else
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1ACTOR",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_HELI_ID",CONV_PRIORITY_MEDIUM)
iScareTimer2 = get_Game_timer()
endif
else
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"Anton",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_NOSCAR",CONV_PRIORITY_MEDIUM)
iScareTimer2 = get_Game_timer()
endif
endif
endif
endif
endif
endif
break
endswitch
endif
endif
else
if DOES_BLIP_EXIST(blip_objective)
REMOVE_BLIP(blip_objective)
endif
iScareStage++
endif
break
case 5
break
endswitch
if iScareStage > 2
and iScareStage < 5
if IS_PED_IN_VEHICLE(player_ped_id(),vehs[mvf_heli].id)
if DOES_BLIP_EXIST(blip_objective)
REMOVE_BLIP(blip_objective)
endif
if IS_THIS_PRINT_BEING_DISPLAYED("CMN_GENGETBCKHE")
CLEAR_PRINTS()
endif
else
if not DOES_BLIP_EXIST(blip_objective)
blip_objective = CREATE_BLIP_FOR_VEHICLE(vehs[mvf_heli].id)
endif
if not bScareHeliWarn
print_now("CMN_GENGETBCKHE",DEFAULT_GOD_TEXT_TIME,1)
bScareHeliWarn = true
endif
endif
endif
if iScareStage = 5
return true
endif
return false
endfunc
proc AUDIO_dialogue(MSF_MISSION_STAGE_FLAGS mstage)
SWITCH mstage
CASE msf_0_get_to_warehouse
switch iDialogue_Stage
case 0
if mission_substage > 1
i_dialogueTimer = get_Game_timer()
iDialogue_Stage++
endif
break
case 1
if get_game_timer() - i_dialogueTimer > 38000
and not IS_MESSAGE_BEING_DISPLAYED()
and mission_substage > 1
if CHAR_CALL_PLAYER_CELLPHONE_FORCE_ANSWER(convo_struct,CHAR_SOLOMON,"SOL1AUD","SOL1_SOL",CONV_PRIORITY_MEDIUM,DISPLAY_SUBTITLES,DO_ADD_TO_BRIEF_SCREEN,true)
iDialogue_Stage++
endif
endif
break
case 2
if WAS_LAST_CELLPHONE_CALL_INTERRUPTED()
i_dialogueTimer = get_Game_timer()
ADD_CONTACT_TO_PHONEBOOK(CHAR_SOLOMON,MICHAEL_BOOK,true)
iDialogue_Stage++
ELif HAS_CELLPHONE_CALL_FINISHED()
ADD_CONTACT_TO_PHONEBOOK(CHAR_SOLOMON,MICHAEL_BOOK,true)
iDialogue_Stage = 4
ENDIF
break
case 3
if get_game_timer() - i_dialogueTimer > 3000
if SEND_TEXT_MESSAGE_TO_CURRENT_PLAYER(CHAR_SOLOMON,"SOL1_TEXT",TXTMSG_UNLOCKED,
TXTMSG_NOT_CRITICAL,TXTMSG_AUTO_UNLOCK_AFTER_READ,
NO_REPLY_REQUIRED,ICON_STANDARD_TEXTMSG,
true,NO_BARTER_REQUIRED,CANNOT_CALL_SENDER)
iDialogue_Stage++
endif
endif
break
case 4
if mission_substage >= 4
// if PLAYER_CALL_CHAR_CELLPHONE(convo_struct,CHAR_SOLOMON,"SOL1AUD","SOL1_SOL2",CONV_PRIORITY_MEDIUM)
// iDialogue_Stage++
// endif
endif
break
endswitch
break
case msf_1_Stealth_to_roof
if eAI_stage = AI_CHECKS
and mission_substage < 2
//the closest ped for convo
float closeDist
closeDist = 200
ped_index clsePed
clsePed = mafia[maf_Car].id
int mafped
for mafped = 0 to enum_to_int(NUM_OF_Mafia_PEDS) - 1
if isentityalive(mafia[mafped].id)
if GET_DISTANCE_BETWEEN_ENTITIES(mafia[mafped].id,mike()) < closedist
closedist = GET_DISTANCE_BETWEEN_ENTITIES(mafia[mafped].id,mike())
clsePed = mafia[mafped].id
endif
endif
endfor
if isentityalive(Gianni())
if GET_DISTANCE_BETWEEN_ENTITIES(Gianni(),mike()) < closedist
closedist = GET_DISTANCE_BETWEEN_ENTITIES(Gianni(),mike())
clsePed = Gianni()
endif
endif
// talking by the car
if isentityalive(mafia[maf_car].id)
and isentityalive(mafia[maf_car_talking].id)
switch iCarSpeechStage
case 0
if IS_ENTITY_IN_ANGLED_AREA(mike(),<<947.18097, -1717.85010, 38.68729>>,<<970.51593, -1720.15210, 29.54870>>, 22)
if not bMusic_1stEnemy
TRIGGER_MUSIC_EVENT("SOL1_1ST_ENEMY")
bMusic_1stEnemy = true
endif
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[maf_car_talking].iVoiceID,mafia[maf_car_talking].id,mafia[maf_car_talking].sVoiceName,true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_AMB2",CONV_PRIORITY_MEDIUM)
iCarSpeechStage++
endif
endif
endif
break
case 1
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
i_dialogueTimer = get_Game_timer()
bpauseconv = false
iCarSpeechStage++
else
if not IS_ENTITY_IN_ANGLED_AREA(mike(),<<947.18097, -1717.85010, 38.68729>>,<<970.51593, -1720.15210, 29.54870>>, 22)
KILL_FACE_TO_FACE_CONVERSATION()
endif
endif
break
case 2
if clseped = mafia[maf_Car].id
or clseped = mafia[maf_car_talking].id
if get_game_timer() - i_dialogueTimer > 6000
and GET_DISTANCE_BETWEEN_ENTITIES(mike(),mafia[maf_car_talking].id) < 17
and not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[maf_car_talking].iVoiceID,mafia[maf_car_talking].id,mafia[maf_car_talking].sVoiceName,true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_AMB3",CONV_PRIORITY_MEDIUM)
println("play ped Amb speech: mafia[maf_car].id ")
i_dialogueTimer = get_Game_timer()
iCarSpeechStage = 3
endif
endif
endif
break
case 3
if clseped = mafia[maf_Car].id
or clseped = mafia[maf_car_talking].id
if get_game_timer() - i_dialogueTimer > 12000
and GET_DISTANCE_BETWEEN_ENTITIES(mike(),mafia[maf_car_talking].id) < 16
and not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[maf_car].iVoiceID,mafia[maf_car].id,mafia[maf_car].sVoiceName,true)
if CREATE_CONVERSATION(convo_Struct,"SOL1AUD","SOL1_FIX1",CONV_PRIORITY_MEDIUM)
println("play ped Amb speech: mafia[maf_car_talking].id ")
i_dialogueTimer = get_Game_timer()
iCarSpeechStage = 4
endif
endif
endif
break
case 4
if clseped = mafia[maf_Car].id
or clseped = mafia[maf_car_talking].id
if get_game_timer() - i_dialogueTimer > 10000
and GET_DISTANCE_BETWEEN_ENTITIES(mike(),mafia[maf_car_talking].id) < 16
and not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[maf_car_talking].iVoiceID,mafia[maf_car_talking].id,mafia[maf_car_talking].sVoiceName,true)
if CREATE_CONVERSATION(convo_Struct,"SOL1AUD","SOL1_AMB4",CONV_PRIORITY_MEDIUM)
println("play ped Amb speech: mafia[maf_car].id ")
i_dialogueTimer = get_Game_timer()
iCarSpeechStage = 3
endif
endif
endif
break
endswitch
endif
if clseped = mafia[maf_worker_alone].id
if isentityalive(mafia[maf_worker_alone].id)
if GET_DISTANCE_BETWEEN_ENTITIES(mike(),mafia[maf_worker_alone].id) < 18
vPlayerCoords = GET_ENTITY_COORDS(PLAYER_PED_ID()) //BUG FIX 1399354 adding a hieght check on the player so dialogue doesn't play here if player is to low down.
IF vPlayerCoords.z > 35.5
if not bMusic_1stEnemy
TRIGGER_MUSIC_EVENT("SOL1_1ST_ENEMY")
bMusic_1stEnemy = true
endif
if get_game_timer() - i_dialogueTimer > 12000
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[maf_worker_alone].iVoiceID,mafia[maf_worker_alone].id,mafia[maf_worker_alone].sVoiceName,true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_FIX2",CONV_PRIORITY_MEDIUM)
println("play ped Amb speech: mafia[maf_worker_alone].id ")
i_dialogueTimer = get_Game_timer()
endif
endif
endif
ENDIF
endif
endif
elif clseped = mafia[maf_worker_vent].id
if isentityalive(mafia[maf_worker_vent].id)
if GET_DISTANCE_BETWEEN_ENTITIES(mike(),mafia[maf_worker_vent].id) < 17
if not bMusic_1stEnemy
TRIGGER_MUSIC_EVENT("SOL1_1ST_ENEMY")
bMusic_1stEnemy = true
endif
if get_game_timer() - i_dialogueTimer > 15000
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[maf_worker_vent].iVoiceID,mafia[maf_worker_vent].id,mafia[maf_worker_vent].sVoiceName,true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_AMB4",CONV_PRIORITY_MEDIUM)
println("play ped Amb speech: mafia[maf_worker_vent].id ")
i_dialogueTimer = get_Game_timer()
endif
endif
endif
endif
endif
elif clseped = mafia[maf_worker_door].id
if isentityalive(mafia[maf_worker_door].id)
if GET_DISTANCE_BETWEEN_ENTITIES(mike(),mafia[maf_worker_door].id) < 17
if not bMusic_1stEnemy
TRIGGER_MUSIC_EVENT("SOL1_1ST_ENEMY")
bMusic_1stEnemy = true
endif
if get_game_timer() - i_dialogueTimer > 30000
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[maf_worker_door].iVoiceID,mafia[maf_worker_door].id,mafia[maf_worker_door].sVoiceName,true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_CHECK",CONV_PRIORITY_MEDIUM)
println("play ped Amb speech: mafia[maf_worker_vent].id ")
i_dialogueTimer = get_Game_timer()
endif
endif
endif
endif
endif
elif clseped = mafia[maf_worker_top].id
if isentityalive(mafia[maf_worker_top].id)
if GET_DISTANCE_BETWEEN_ENTITIES(mike(),mafia[maf_worker_top].id) < 17
if not bMusic_1stEnemy
TRIGGER_MUSIC_EVENT("SOL1_1ST_ENEMY")
bMusic_1stEnemy = true
endif
if get_game_timer() - i_dialogueTimer > 10000
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[maf_worker_top].iVoiceID,mafia[maf_worker_top].id,mafia[maf_worker_top].sVoiceName,true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_FIX2",CONV_PRIORITY_MEDIUM)
println("play ped Amb speech: mafia[maf_worker_top].id ")
i_dialogueTimer = get_Game_timer()
endif
endif
endif
endif
endif
elif clseped = mafia[maf_worker_walkway].id
or clseped = mafia[maf_walkway_door].id
//walkway peds
if isentityalive(mafia[maf_worker_walkway].id)
and isentityalive(mafia[maf_walkway_door].id)
if GET_DISTANCE_BETWEEN_ENTITIES(mike(),mafia[maf_walkway_door].id) < 25
if bDoWalkwayChat
if not bMusic_1stEnemy
TRIGGER_MUSIC_EVENT("SOL1_1ST_ENEMY")
bMusic_1stEnemy = true
endif
switch iwalkwayChat
case 0
if get_game_timer() - i_dialogueTimer > 3000
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[maf_walkway_door].iVoiceID,mafia[maf_walkway_door].id,mafia[maf_walkway_door].sVoiceName,true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_WLKTLK",CONV_PRIORITY_MEDIUM)
println("play ped Amb speech: mafia[maf_walkway_door].id ")
iwalkwayChat++
endif
endif
endif
break
case 1
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
if get_game_timer() - i_dialogueTimer > 5000
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[maf_walkway_door].iVoiceID,mafia[maf_walkway_door].id,mafia[maf_walkway_door].sVoiceName,true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_WLKTLK2",CONV_PRIORITY_MEDIUM)
println("play ped Amb speech: mafia[maf_walkway_door].id ")
iwalkwayChat++
endif
endif
else
i_dialogueTimer = get_Game_timer()
endif
break
case 2
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
if get_game_timer() - i_dialogueTimer > 3000
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[maf_walkway_door].iVoiceID,mafia[maf_walkway_door].id,mafia[maf_walkway_door].sVoiceName,true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_WLKTLK",CONV_PRIORITY_MEDIUM)
println("play ped Amb speech: mafia[maf_walkway_door].id ")
iwalkwayChat++
endif
endif
else
i_dialogueTimer = get_Game_timer()
endif
break
case 3
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
if get_game_timer() - i_dialogueTimer > 4000
ADD_PED_FOR_DIALOGUE(convo_struct,mafia[maf_walkway_door].iVoiceID,mafia[maf_walkway_door].id,mafia[maf_walkway_door].sVoiceName,true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_WLKTLK2",CONV_PRIORITY_MEDIUM)
println("play ped Amb speech: mafia[maf_walkway_door].id ")
i_dialogueTimer = get_Game_timer()
iwalkwayChat = 0
bDoWalkwayChat = false
endif
endif
else
i_dialogueTimer = get_Game_timer()
endif
break
endswitch
endif
endif
endif
elif clseped = Gianni()
if GET_DISTANCE_BETWEEN_ENTITIES(mike(),Gianni()) < 14
and not IS_SCRIPT_TASK_RUNNING_OR_STARTING(Gianni(),SCRIPT_TASK_TURN_PED_TO_FACE_COORD)
switch iGianniChat
case 0
if get_game_timer() - i_dialogueTimer > 12000
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(convo_struct,4,Gianni(),"GIANNI",true)
ADD_PED_FOR_DIALOGUE(convo_struct,2,peds[mpf_milton].id,"SOL1Actor",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_TALK1",CONV_PRIORITY_MEDIUM)
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(Gianni(),SCRIPT_TASK_TURN_PED_TO_FACE_COORD)
and not IS_SCRIPT_TASK_RUNNING_OR_STARTING(Gianni(),SCRIPT_TASK_PERFORM_SEQUENCE)
OPEN_SEQUENCE_TASK(seq)
if not IS_PED_FACING_PED(Gianni(),Milton(),40)
TASK_TURN_PED_TO_FACE_ENTITY(NULL, Milton())
endif
if not IS_PED_HEADTRACKING_PED(Gianni(),Milton())
TASK_LOOK_AT_ENTITY(null,Milton(),-1,SLF_WHILE_NOT_IN_FOV| SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT)
endif
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_b",WALK_BLEND_IN,WALK_BLEND_OUT)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(Gianni(),seq)
CLEAR_SEQUENCE_TASK(seq)
endif
i_dialogueTimer = get_Game_timer()
iGianniChat++
endif
endif
endif
break
case 1
if get_game_timer() - i_dialogueTimer > 12000
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(convo_struct,4,Gianni(),"GIANNI",true)
ADD_PED_FOR_DIALOGUE(convo_struct,2,peds[mpf_milton].id,"SOL1Actor",true)
ADD_PED_FOR_DIALOGUE(convo_struct,3,peds[mpf_Anton].id,"ANTON",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_TALK2",CONV_PRIORITY_MEDIUM)
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(Gianni(),SCRIPT_TASK_TURN_PED_TO_FACE_COORD)
and not IS_SCRIPT_TASK_RUNNING_OR_STARTING(Gianni(),SCRIPT_TASK_PERFORM_SEQUENCE)
OPEN_SEQUENCE_TASK(seq)
if not IS_PED_FACING_PED(Gianni(),Milton(),40)
TASK_TURN_PED_TO_FACE_ENTITY(NULL, Milton())
endif
if not IS_PED_HEADTRACKING_PED(Gianni(),Milton())
TASK_LOOK_AT_ENTITY(null,Milton(),-1,SLF_WHILE_NOT_IN_FOV| SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT)
endif
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_d",WALK_BLEND_IN,WALK_BLEND_OUT)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(Gianni(),seq)
CLEAR_SEQUENCE_TASK(seq)
endif
i_dialogueTimer = get_Game_timer()
iGianniChat++
endif
endif
endif
break
case 2
if get_game_timer() - i_dialogueTimer > 12000
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(convo_struct,4,Gianni(),"GIANNI",true)
ADD_PED_FOR_DIALOGUE(convo_struct,2,peds[mpf_milton].id,"SOL1Actor",true)
ADD_PED_FOR_DIALOGUE(convo_struct,3,peds[mpf_Anton].id,"ANTON",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_TALK3",CONV_PRIORITY_MEDIUM)
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(Gianni(),SCRIPT_TASK_TURN_PED_TO_FACE_COORD)
and not IS_SCRIPT_TASK_RUNNING_OR_STARTING(Gianni(),SCRIPT_TASK_PERFORM_SEQUENCE)
OPEN_SEQUENCE_TASK(seq)
if not IS_PED_FACING_PED(Gianni(),Milton(),40)
TASK_TURN_PED_TO_FACE_ENTITY(NULL, Milton())
endif
if not IS_PED_HEADTRACKING_PED(Gianni(),Milton())
TASK_LOOK_AT_ENTITY(null,Milton(),-1,SLF_WHILE_NOT_IN_FOV| SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT)
endif
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_e",WALK_BLEND_IN,WALK_BLEND_OUT)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(Gianni(),seq)
CLEAR_SEQUENCE_TASK(seq)
endif
i_dialogueTimer = get_Game_timer()
iGianniChat++
endif
endif
endif
break
case 3
if get_game_timer() - i_dialogueTimer > 15000
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(convo_struct,4,Gianni(),"GIANNI",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_SIT",CONV_PRIORITY_MEDIUM)
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(Gianni(),SCRIPT_TASK_TURN_PED_TO_FACE_COORD)
and not IS_SCRIPT_TASK_RUNNING_OR_STARTING(Gianni(),SCRIPT_TASK_PERFORM_SEQUENCE)
OPEN_SEQUENCE_TASK(seq)
if not IS_PED_FACING_PED(Gianni(),Milton(),40)
TASK_TURN_PED_TO_FACE_ENTITY(NULL, Milton())
endif
if not IS_PED_HEADTRACKING_PED(Gianni(),Milton())
TASK_LOOK_AT_ENTITY(null,Milton(),-1,SLF_WHILE_NOT_IN_FOV| SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT)
endif
TASK_PLAY_ANIM(null,AnimDict_gestures,"idle_c",WALK_BLEND_IN,WALK_BLEND_OUT)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(Gianni(),seq)
CLEAR_SEQUENCE_TASK(seq)
endif
i_dialogueTimer = get_Game_timer()
endif
endif
endif
break
endswitch
endif
endif
endif
break
case msf_2_fight_rocco
switch iDialogue_Stage
case 0
if not IS_MESSAGE_BEING_DISPLAYED()
and mission_substage > 3
ADD_PED_FOR_DIALOGUE(convo_struct,0,mike(),"MICHAEL")
// if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_ROC",CONV_PRIORITY_MEDIUM)
// TASK_LOOK_AT_ENTITY(mike(),vehs[mvf_heli].id,-1,SLF_WHILE_NOT_IN_FOV)
iDialogue_Stage++
// endif
endif
break
case 1
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
iDialogue_Stage++
endif
break
case 2
if isentityalive(rocco())
if not IS_PED_HEADTRACKING_PED(mike(),rocco())
TASK_LOOK_AT_ENTITY(mike(),rocco(),-1,SLF_WHILE_NOT_IN_FOV)
endif
else
if isentityalive(vehs[mvf_heli].id)
if not IS_PED_HEADTRACKING_ENTITY(mike(),vehs[mvf_heli].id)
TASK_LOOK_AT_ENTITY(mike(),vehs[mvf_heli].id,-1,SLF_WHILE_NOT_IN_FOV)
endif
endif
endif
break
endswitch
break
case msf_3_get_to_sol
switch iDialogue_Stage
case 0
if IS_PED_IN_ANY_VEHICLE(mike())
if IS_PED_IN_VEHICLE(Milton(),GET_VEHICLE_PED_IS_IN(mike()))
and IS_PED_IN_VEHICLE(Anton(),GET_VEHICLE_PED_IS_IN(mike()))
i_dialogueTimer = get_Game_timer()
iDialogue_Stage++
endif
endif
break
case 1
if not IS_MESSAGE_BEING_DISPLAYED()
and mission_substage = 2
if isentityalive(mike())
and isentityalive(Milton())
and isentityalive(Anton())
if IS_PED_IN_ANY_VEHICLE(mike())
if IS_PED_IN_VEHICLE(Milton(),GET_VEHICLE_PED_IS_IN(mike()))
and IS_PED_IN_VEHICLE(Anton(),GET_VEHICLE_PED_IS_IN(mike()))
ADD_PED_FOR_DIALOGUE(convo_struct,0,mike(),"Michael",true)
add_ped_for_dialogue(convo_struct,2,Milton(),"SOL1ACTOR",true)
add_ped_for_dialogue(convo_struct,3,Anton(),"Anton",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_trav",CONV_PRIORITY_MEDIUM)
bpauseconv = false
iDialogue_Stage++
endif
endif
endif
endif
endif
break
case 2
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
i_dialogueTimer = get_game_timer()
iDialogue_Stage++
endif
break
case 3
if not IS_MESSAGE_BEING_DISPLAYED()
if isentityalive(mike())
and isentityalive(Milton())
and isentityalive(Anton())
if IS_PED_IN_ANY_VEHICLE(mike())
if IS_PED_IN_VEHICLE(Milton(),GET_VEHICLE_PED_IS_IN(mike()))
and IS_PED_IN_VEHICLE(Anton(),GET_VEHICLE_PED_IS_IN(mike()))
ADD_PED_FOR_DIALOGUE(convo_struct,0,mike(),"Michael",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_BACK",CONV_PRIORITY_MEDIUM)
bpauseconv = false
iDialogue_Stage++
endif
endif
endif
endif
endif
break
case 4
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
i_dialogueTimer = get_game_timer()
iDialogue_Stage++
endif
break
case 5
if isentityalive(mike())
and isentityalive(Milton())
and isentityalive(Anton())
and get_game_timer() - i_dialogueTimer > 5000
if IS_PED_IN_VEHICLE(mike(),vehs[mvf_heli].id)
and IS_PED_IN_VEHICLE(Milton(),vehs[mvf_heli].id)
and IS_PED_IN_VEHICLE(Anton(),vehs[mvf_heli].id)
and not IS_MESSAGE_BEING_DISPLAYED()
ADD_PED_FOR_DIALOGUE(convo_struct,0,player_ped_id(),"Michael",true)
add_ped_for_dialogue(convo_struct,2,Milton(),"SOL1actor",true)
add_ped_for_dialogue(convo_struct,3,Anton(),"Anton",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_CLUB",CONV_PRIORITY_MEDIUM)
bpauseconv = false
iDialogue_Stage++
endif
endif
endif
break
case 6
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
i_dialogueTimer = get_game_timer()
iDialogue_Stage++
else
if IS_PED_IN_GROUP(Milton())
and IS_PED_IN_GROUP(Anton())
if bpauseconv
PAUSE_FACE_TO_FACE_CONVERSATION(false)
bpauseconv = false
endif
else
if not bPauseconv
PAUSE_FACE_TO_FACE_CONVERSATION(true)
bpauseconv = true
endif
endif
endif
break
case 7
if isentityalive(mike())
and isentityalive(Milton())
and isentityalive(Anton())
if IS_PED_IN_VEHICLE(mike(),vehs[mvf_heli].id)
and IS_PED_IN_VEHICLE(Milton(),vehs[mvf_heli].id)
and IS_PED_IN_VEHICLE(Anton(),vehs[mvf_heli].id)
if not IS_MESSAGE_BEING_DISPLAYED()
ADD_PED_FOR_DIALOGUE(convo_struct,0,player_ped_id(),"Michael",true)
add_ped_for_dialogue(convo_struct,2,Milton(),"SOL1actor",true)
add_ped_for_dialogue(convo_struct,3,Anton(),"Anton",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_CLUB2",CONV_PRIORITY_MEDIUM)
bpauseconv = false
iDialogue_Stage++
endif
endif
else
bpauseconv = false
iDialogue_Stage++
endif
endif
break
case 8
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
i_dialogueTimer = get_game_timer()
iDialogue_Stage++
else
if IS_PED_IN_GROUP(Milton())
and IS_PED_IN_GROUP(Anton())
if bpauseconv
PAUSE_FACE_TO_FACE_CONVERSATION(false)
bpauseconv = false
endif
else
if not bPauseconv
PAUSE_FACE_TO_FACE_CONVERSATION(true)
bpauseconv = true
endif
endif
endif
if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(mike()),<<-1034.74194, -497.20056, 35.37177>>) < 180
KILL_FACE_TO_FACE_CONVERSATION()
endif
break
// closer
case 9
if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(mike()),<<-1034.74194, -497.20056, 35.37177>>) < 180
and not IS_MESSAGE_BEING_DISPLAYED()
if isentityalive(mike())
and isentityalive(Milton())
and isentityalive(Anton())
if IS_PED_IN_VEHICLE(mike(),vehs[mvf_heli].id)
and IS_PED_IN_VEHICLE(Milton(),vehs[mvf_heli].id)
and IS_PED_IN_VEHICLE(Anton(),vehs[mvf_heli].id)
ADD_PED_FOR_DIALOGUE(convo_struct,0,player_ped_id(),"Michael",true)
add_ped_for_dialogue(convo_struct,2,Milton(),"SOL1ACTOR",true)
add_ped_for_dialogue(convo_struct,3,Anton(),"Anton",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_LAND",CONV_PRIORITY_MEDIUM)
bpauseconv = false
iDialogue_Stage++
endif
else
bpauseconv = false
iDialogue_Stage++
endif
endif
endif
break
case 10
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
iDialogue_Stage++
else
if IS_PED_IN_VEHICLE(mike(),vehs[mvf_heli].id)
and IS_PED_IN_VEHICLE(Milton(),vehs[mvf_heli].id)
and IS_PED_IN_VEHICLE(Anton(),vehs[mvf_heli].id)
if bpauseconv
PAUSE_FACE_TO_FACE_CONVERSATION(false)
bpauseconv = false
endif
else
KILL_FACE_TO_FACE_CONVERSATION()
endif
endif
break
case 11
if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(mike()),<<-1098.04102, -458.76242, 34.38025>>) < 60
and not IS_MESSAGE_BEING_DISPLAYED()
if isentityalive(mike())
and isentityalive(Milton())
and isentityalive(Anton())
if IS_PED_IN_VEHICLE(mike(),vehs[mvf_heli].id)
and IS_PED_IN_VEHICLE(Milton(),vehs[mvf_heli].id)
and IS_PED_IN_VEHICLE(Anton(),vehs[mvf_heli].id)
if not IS_MESSAGE_BEING_DISPLAYED()
ADD_PED_FOR_DIALOGUE(convo_struct,0,player_ped_id(),"Michael",true)
add_ped_for_dialogue(convo_struct,3,Anton(),"Anton",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_LAND2",CONV_PRIORITY_MEDIUM)
iDialogue_Stage++
endif
endif
else
iDialogue_Stage++
endif
endif
endif
break
case 12
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
iDialogue_Stage++
endif
break
case 13
if not IS_PED_IN_VEHICLE(mike(),vehs[mvf_heli].id)
and not IS_MESSAGE_BEING_DISPLAYED()
and mission_substage = 4
ADD_PED_FOR_DIALOGUE(convo_struct,0,mike(),"Michael")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_OFFICE",CONV_PRIORITY_MEDIUM)
iDialogue_Stage++
endif
endif
break
case 14
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
if isentityalive(mike())
and isentityalive(Milton())
and isentityalive(Anton())
if not IS_PED_IN_VEHICLE(mike(),vehs[mvf_heli].id)
and not IS_PED_IN_VEHICLE(Milton(),vehs[mvf_heli].id)
and not IS_PED_IN_VEHICLE(Anton(),vehs[mvf_heli].id)
and not IS_MESSAGE_BEING_DISPLAYED()
ADD_PED_FOR_DIALOGUE(convo_struct,0,mike(),"Michael")
add_ped_for_dialogue(convo_struct,3,Anton(),"Anton")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_ANTON",CONV_PRIORITY_MEDIUM)
iDialogue_Stage++
endif
endif
endif
endif
break
case 16
break
endswitch
break
endswitch
endproc
PROC PLACE_CONSTRUCTION()
switch iconstructStage
case 0
// constObjs[cobj_floor_bricks].model = prop_conc_blocks01a
// constObjs[cobj_floor_bricks].vpos = <<954.371094,-1740.741577,30.032013>>
// constObjs[cobj_floor_bricks].vRot = <<-0.507340,2.175111,19.144281>>
constObjs[cobj_floor_pipes1].model = prop_pipes_conc_02
constObjs[cobj_floor_pipes1].vpos = <<964.50, -1734.80, 31.12>>
constObjs[cobj_floor_pipes1].vRot = <<0.77, 1.55, -46.19>>
constObjs[cobj_floor_wood1].model = prop_woodpile_04b
constObjs[cobj_floor_wood1].vpos = <<966.680298,-1726.700073,29.804991>>
constObjs[cobj_floor_wood1].vRot = <<-0.000000,0.000000,-8.021410>>
constObjs[cobj_floor_wood2].model = prop_woodpile_01a
constObjs[cobj_floor_wood2].vpos = <<967.535339,-1716.915161,29.452488>>
constObjs[cobj_floor_wood2].vRot = <<-0.000000,0.000000,24.064224>>
constObjs[cobj_floor_toolbox].model = prop_tool_box_04
constObjs[cobj_floor_toolbox].vpos = <<967.513000,-1717.480957,30.432888>>
constObjs[cobj_floor_toolbox].vRot = <<0.000442,0.000436,-0.177949>>
constObjs[cobj_floor_torch].model = prop_tool_torch
constObjs[cobj_floor_torch].vpos = <<966.909607,-1716.346802,30.542349>>
constObjs[cobj_floor_torch].vRot = <<-0.037208,-0.043627,29.224613>>
constObjs[cobj_floor_hat1].model = prop_tool_hardhat
constObjs[cobj_floor_hat1].vpos = <<966.425232,-1715.816284,30.449116>>
constObjs[cobj_floor_hat1].vRot = <<6.111341,0.458651,0.062687>>
constObjs[cobj_floor_hat2].model = prop_tool_hardhat
constObjs[cobj_floor_hat2].vpos = <<966.772095,-1715.110229,30.449089>>
constObjs[cobj_floor_hat2].vRot = <<5.993145,-0.263961,-78.341858>>
constObjs[cobj_floor_pipes2].model = prop_pipes_conc_02
constObjs[cobj_floor_pipes2].vpos = <<966.067078,-1712.865356,30.47>>
constObjs[cobj_floor_pipes2].vRot = <<-0.000000,0.000000,-78.495216>>
constObjs[cobj_floor_gen].model = prop_generator_03b
constObjs[cobj_floor_gen].vpos = <<956.564636,-1717.747681,29.522371>>
constObjs[cobj_floor_gen].vRot = <<-2.104723,-1.473127,-22.815186>>
constObjs[cobj_floor_bitsbox].model = prop_partsbox_01
constObjs[cobj_floor_bitsbox].vpos = <<952.706726,-1722.553223,29.788635>>
constObjs[cobj_floor_bitsbox].vRot = <<-1.702785,0.017533,-0.143250>>
constObjs[cobj_floor_cementbags].model = prop_cementbags01
constObjs[cobj_floor_cementbags].vpos = <<952.230164,-1724.708130,29.852713>>
constObjs[cobj_floor_cementbags].vRot = <<-1.654111,-0.375194,-18.207163>>
constObjs[cobj_floor_hat3].model = prop_tool_hardhat
constObjs[cobj_floor_hat3].vpos = <<952.183899,-1724.966431,31.089499>>
constObjs[cobj_floor_hat3].vRot = <<3.540115,-1.973789,-30.968338>>
constObjs[cobj_roof1_toolbox].model = prop_tool_box_01
constObjs[cobj_roof1_toolbox].vpos = <<937.017273,-1717.222290,38.383656>>
constObjs[cobj_roof1_toolbox].vRot = <<-0.326517,-0.000184,20.948112>>
constObjs[cobj_roof1_wirecoil1].model = prop_cablespool_06
constObjs[cobj_roof1_wirecoil1].vpos = <<935.325073,-1717.042847,37.059296>>
constObjs[cobj_roof1_wirecoil1].vRot = <<0.000117,0.000050,2.848160>>
constObjs[cobj_roof1_wirecoil2].model = prop_cablespool_02
constObjs[cobj_roof1_wirecoil2].vpos = <<933.29, -1717.13, 38.05>>
constObjs[cobj_roof1_wirecoil2].vRot = <<-166.80, 89.97, 0.00>>
constObjs[cobj_roof1_light1].model = prop_worklight_03b
constObjs[cobj_roof1_light1].vpos = <<934.624329,-1719.507080,37.058407>>
constObjs[cobj_roof1_light1].vRot = <<0.081973,0.089925,115.900665>>
constObjs[cobj_roof1_light2].model = prop_worklight_02a
constObjs[cobj_roof1_light2].vpos = <<924.997070,-1722.984375,37.069111>>
constObjs[cobj_roof1_light2].vRot = <<-0.000294,0.000053,-155.938309>>
constObjs[cobj_roof1_gen].model = prop_generator_01a
constObjs[cobj_roof1_gen].vpos = <<923.544678,-1722.781006,37.057270>>
constObjs[cobj_roof1_gen].vRot = <<-0.000000,-0.000000,-142.093521>>
constObjs[cobj_roof1_light3].model = prop_worklight_01a
constObjs[cobj_roof1_light3].vpos = <<922.297913,-1722.262329,37.063000>>
constObjs[cobj_roof1_light3].vRot = <<0.000000,0.000000,150.114929>>
constObjs[cobj_roof1_hat].model = prop_tool_hardhat
constObjs[cobj_roof1_hat].vpos = <<923.213501,-1720.317993,38.599242>>
constObjs[cobj_roof1_hat].vRot = <<6.002445,-0.533969,37.316181>>
constObjs[cobj_ally_light].model = prop_worklight_03b
constObjs[cobj_ally_light].vpos = <<885.808472,-1716.161987,37.058754>>
constObjs[cobj_ally_light].vRot = <<0.097367,0.172507,110.473656>>
constObjs[cobj_ally_lightbox].model = prop_worklight_04a
constObjs[cobj_ally_lightbox].vpos = <<886.306396,-1717.104004,37.495296>>
constObjs[cobj_ally_lightbox].vRot = <<-0.000160,0.000082,131.737686>>
constObjs[cobj_ally_gen].model = prop_generator_01a
constObjs[cobj_ally_gen].vpos = <<886.096436,-1718.347168,37.063030>>
constObjs[cobj_ally_gen].vRot = <<-0.000000,0.000000,85.943665>>
constObjs[cobj_floor2_pipes].model = prop_pipes_conc_02
constObjs[cobj_floor2_pipes].vpos = <<868.939148,-1720.341064,30.067484>>
constObjs[cobj_floor2_pipes].vRot = <<-0.000000,0.000000,-39.534081>>
constObjs[cobj_floor2_barrier1].model = prop_barrier_work06a
constObjs[cobj_floor2_barrier1].vpos = <<873.640320,-1724.027954,29.139503>>
constObjs[cobj_floor2_barrier1].vRot = <<-0.000000,0.000000,-36.669292>>
constObjs[cobj_floor2_barrier2].model = prop_barrier_work06a
constObjs[cobj_floor2_barrier2].vpos = <<872.932312,-1721.566162,29.182261>>
constObjs[cobj_floor2_barrier2].vRot = <<-0.000000,0.000000,-80.787041>>
constObjs[cobj_roof2_light1].model = prop_worklight_03a
constObjs[cobj_roof2_light1].vpos = <<912.577271,-1707.198120,41.968742>>
constObjs[cobj_roof2_light1].vRot = <<0.042037,0.105869,-25.761972>>
constObjs[cobj_roof2_bricks2].model = prop_conc_blocks01b
constObjs[cobj_roof2_bricks2].vpos = <<908.721130,-1709.194336,41.939037>>
constObjs[cobj_roof2_bricks2].vRot = <<-0.000000,0.000000,22.345350>>
constObjs[cobj_roof2_gen].model = prop_generator_02a
constObjs[cobj_roof2_gen].vpos = <<903.916809,-1713.888428,41.744926>>
constObjs[cobj_roof2_gen].vRot = <<0.370807,-0.019272,-32.074944>>
constObjs[cobj_roof2_light2].model = prop_worklight_04c
constObjs[cobj_roof2_light2].vpos = <<903.121155,-1712.610107,42.679977>>
constObjs[cobj_roof2_light2].vRot = <<0.015474,-0.008173,-66.029747>>
constObjs[cobj_roof2_light3].model = prop_worklight_04d
constObjs[cobj_roof2_light3].vpos = <<898.710571,-1712.316895,41.928101>>
constObjs[cobj_roof2_light3].vRot = <<0.000234,-0.010211,40.727936>>
constObjs[cobj_roof3_light1].model = prop_worklight_04b
constObjs[cobj_roof3_light1].vpos = <<939.225891,-1703.688599,42.425728>>
constObjs[cobj_roof3_light1].vRot = <<-0.096283,-0.013501,-163.893478>>
constObjs[cobj_roof3_lightbox].model = prop_worklight_04a
constObjs[cobj_roof3_lightbox].vpos = <<940.551025,-1702.150024,41.494343>>
constObjs[cobj_roof3_lightbox].vRot = <<0.000029,0.000288,-94.455887>>
constObjs[cobj_roof3_hardhat1].model = prop_tool_hardhat
constObjs[cobj_roof3_hardhat1].vpos = <<937.240662,-1699.237061,42.398090>>
constObjs[cobj_roof3_hardhat1].vRot = <<4.651952,-0.133757,18.810469>>
constObjs[cobj_roof3_cementMixer].model = prop_cementmixer_02a
constObjs[cobj_roof3_cementMixer].vpos = <<937.366394,-1688.932861,41.061703>>
constObjs[cobj_roof3_cementMixer].vRot = <<-0.068064,-0.057211,-125.490036>>
constObjs[cobj_roof3_cementStack].model = prop_cons_cements01
constObjs[cobj_roof3_cementStack].vpos = <<938.679077,-1687.393433,41.143913>>
constObjs[cobj_roof3_cementStack].vRot = <<-0.000137,0.000294,-26.411013>>
constObjs[cobj_roof3_gen].model = prop_generator_01a
constObjs[cobj_roof3_gen].vpos = <<947.172974,-1676.223389,41.062077>>
constObjs[cobj_roof3_gen].vRot = <<-0.000000,0.000000,21.199436>>
constObjs[cobj_roof3_light2].model = prop_worklight_04d
constObjs[cobj_roof3_light2].vpos = <<947.355164,-1677.839844,41.520042>>
constObjs[cobj_roof3_light2].vRot = <<-0.000237,-0.026868,-67.621597>>
constObjs[cobj_roof3_light3].model = prop_worklight_02a
constObjs[cobj_roof3_light3].vpos = <<942.718811,-1678.550171,42.045441>>
constObjs[cobj_roof3_light3].vRot = <<0.039819,-0.023036,80.240295>>
constObjs[cobj_roof4_light1].model = prop_worklight_04c
constObjs[cobj_roof4_light1].vpos = <<883.07269, -1686.47632, 46.13421>>
constObjs[cobj_roof4_light1].vRot = <<0.085501,-0.010684,41.900021>>
// constObjs[cobj_roof4_gen].model = prop_generator_02a
// constObjs[cobj_roof4_gen].vpos = <<883.917236,-1685.532593,46.408543>>
// constObjs[cobj_roof4_gen].vRot = <<0.347746,0.007220,0.011423>>
constObjs[cobj_roof4_bitsbox].model = prop_partsbox_01
constObjs[cobj_roof4_bitsbox].vpos = <<888.877502,-1684.219604,46.130379>>
constObjs[cobj_roof4_bitsbox].vRot = <<0.000367,0.028443,26.748081>>
constObjs[cobj_roof4_toolbox].model = prop_tool_box_01
constObjs[cobj_roof4_toolbox].vpos = <<893.762451,-1681.357422,47.102341>>
constObjs[cobj_roof4_toolbox].vRot = <<0.029734,0.001302,29.545460>>
int objs
for objs = 0 to enum_to_int(MAX_NUM_CONST_OBJS) - 1
if constObjs[objs].model = prop_pipes_conc_02
constObjs[objs].dupType = dups_PIPES
endif
if constObjs[objs].model = prop_tool_hardhat
constObjs[objs].dupType = dups_hat
endif
if constObjs[objs].model = prop_partsbox_01
constObjs[objs].dupType = dups_partsbox
endif
if constObjs[objs].model = prop_tool_box_01
constObjs[objs].dupType = dups_toolbox01
endif
if constObjs[objs].model = PROP_WORKLIGHT_03B
constObjs[objs].dupType = dups_light3b
endif
if constObjs[objs].model = PROP_WORKLIGHT_02a
constObjs[objs].dupType = dups_light2a
endif
if constObjs[objs].model = prop_generator_01a
constObjs[objs].dupType = dups_gen1a
endif
if constObjs[objs].model = prop_worklight_04a
constObjs[objs].dupType = dups_light4a
endif
if constObjs[objs].model = prop_barrier_work06a
constObjs[objs].dupType = dups_barrier
endif
if constObjs[objs].model = prop_generator_02a
constObjs[objs].dupType = dups_gen2a
endif
if constObjs[objs].model = prop_worklight_04c
constObjs[objs].dupType = dups_light4c
endif
if constObjs[objs].model = prop_worklight_04d
constObjs[objs].dupType = dups_light4d
endif
endfor
bloadCar1 = false
bCreateCar1 = false
bloadMixer = false
bCreateMixer = false
bloadForklift = false
bCreateForklift = false
iconstructStage++
break
case 1
if bStartConstructionChecks
int obj1
for obj1 = 0 to enum_to_int(MAX_NUM_CONST_OBJS) - 1
if not constObjs[obj1].bloaded
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),constObjs[obj1].vpos) <= constObjs[obj1].fcreateDist
REQUEST_MODEL(constObjs[obj1].model)
constObjs[obj1].bloaded = true
endif
else
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),constObjs[obj1].vpos) > (constObjs[obj1].fcreateDist + 20)
constObjs[obj1].bloaded = false
elif GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),constObjs[obj1].vpos) <= constObjs[obj1].fcreateDist
if not DOES_ENTITY_EXIST(constObjs[obj1].id)
if HAS_MODEL_LOADED(constObjs[obj1].model)
if GET_CLOSEST_OBJECT_OF_TYPE(constObjs[obj1].vpos,0.3,constObjs[obj1].model) = null
if obj1 = enum_to_int(cobj_floor_hat1)
or obj1 = enum_to_int(cobj_floor_hat2)
or obj1 = enum_to_int(cobj_floor_toolbox)
or obj1 = enum_to_int(cobj_floor_torch)
if DOES_ENTITY_EXIST(constObjs[cobj_floor_wood2].id)
constObjs[obj1].id = CREATE_OBJECT_NO_OFFSET(constObjs[obj1].model,constObjs[obj1].vpos)
SET_ENTITY_ROTATION(constObjs[obj1].id,constObjs[obj1].vRot)
ACTIVATE_PHYSICS(constObjs[obj1].id)
endif
else
constObjs[obj1].id = CREATE_OBJECT_NO_OFFSET(constObjs[obj1].model,constObjs[obj1].vpos)
SET_ENTITY_ROTATION(constObjs[obj1].id,constObjs[obj1].vRot)
ACTIVATE_PHYSICS(constObjs[obj1].id)
endif
else
constObjs[obj1].id = GET_CLOSEST_OBJECT_OF_TYPE(constObjs[obj1].vpos,2,constObjs[obj1].model)
endif
endif
endif
endif
endif
endfor
for obj1 = 0 to enum_to_int(MAX_NUM_CONST_OBJS) - 1
if not constObjs[obj1].bloaded
and GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),constObjs[obj1].vpos) > (constObjs[obj1].fcreateDist + 10)
if constObjs[obj1].dupType = dups_none
SET_MODEL_AS_NO_LONGER_NEEDED(constObjs[obj1].model)
SAFE_RELEASE_OBJECT(constObjs[obj1].id)
else
bool bcleanup
bcleanup = true
int obj2
for obj2 = 0 to enum_to_int(MAX_NUM_CONST_OBJS) - 1
if obj2 != obj1
if constObjs[obj1].dupType = constObjs[obj2].dupType
and constObjs[obj2].bloaded
bcleanup = false
endif
endif
endfor
if bcleanup
SET_MODEL_AS_NO_LONGER_NEEDED(constObjs[obj1].model)
SAFE_RELEASE_OBJECT(constObjs[obj1].id)
else
SAFE_RELEASE_OBJECT(constObjs[obj1].id)
endif
endif
endif
endfor
if not bLoadCar1
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),vMafiaCar) < 55
request_model(FUGITIVE)
bLoadCar1 = true
bCreateCar1 = true
endif
else
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),vMafiaCar) < 55
if bCreateCar1
if HAS_MODEL_LOADED(FUGITIVE)
if not isentityalive(vehs[mvf_car1].id)
CLEAR_AREA_OF_VEHICLES(vMafiaCar,2)
vehs[mvf_car1].id = CREATE_VEHICLE(FUGITIVE,vMafiaCar, hMafiaCar)
SET_VEHICLE_COLOUR_COMBINATION(vehs[mvf_car1].id,0)
bCreateCar1 = false
endif
endif
endif
elif GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),vMafiaCar) > 60
SET_MODEL_AS_NO_LONGER_NEEDED(FUGITIVE)
SAFE_RELEASE_VEHICLE(vehs[mvf_car1].id)
bLoadCar1 = false
endif
endif
if not bLoadMixer
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<956.9180, -1693.6169, 28.2963>>) <= 60
REQUEST_MODEL(MIXER)
bLoadMixer = true
bCreateMixer = true
endif
else
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<956.9180, -1693.6169, 28.2963>>) <= 60
if bCreateMixer
if HAS_MODEL_LOADED(mixer)
if not isentityalive(vehs[mvf_mixer].id)
CLEAR_AREA_OF_VEHICLES(<<956.9180, -1693.6169, 28.2963>>,2)
vehs[mvf_mixer].id = CREATE_VEHICLE(MIXER,<<956.9180, -1693.6169, 28.2963>>, 177.4760)
bCreateMixer = false
endif
endif
endif
elif GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<956.9180, -1693.6169, 28.2963>>) > 65
SET_MODEL_AS_NO_LONGER_NEEDED(mixer)
SAFE_RELEASE_VEHICLE(vehs[mvf_mixer].id)
bLoadMixer = false
endif
endif
if not bLoadForklift
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<966.4474, -1720.8872, 29.6126>>) <= 45
request_model(Forklift)
bLoadForkLift = true
bCreateForkLift = true
endif
else
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<966.4474, -1720.8872, 29.6126>>) <=45
if bCreateForklift
if HAS_MODEL_LOADED(Forklift)
if not isentityalive(vehs[mvf_forklift].id)
CLEAR_AREA_OF_VEHICLES(<<966.4474, -1720.8872, 29.6126>>,2)
vehs[mvf_forklift].id = CREATE_VEHICLE(FORKLIFT,<<966.4474, -1720.8872, 29.6126>>, 65.3199)
bCreateForkLift = false
endif
endif
endif
elif GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<966.4474, -1720.8872, 29.6126>>) > 50
SET_MODEL_AS_NO_LONGER_NEEDED(Forklift)
SAFE_RELEASE_VEHICLE(vehs[mvf_Forklift].id)
bLoadForklift = false
endif
endif
endif
break
endswitch
endproc
proc mission_checks()
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
IF NOT bVehStatsGrabbed
VEHICLE_INDEX vehTemp = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())
IF vehTemp != vehs[mvf_heli].id
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(vehTemp, SOL1_CAR_DAMAGE)
ENDIF
INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(vehTemp, SOL1_MAX_SPEED)
bVehStatsGrabbed = TRUE
ENDIF
ELSE
IF bVehStatsGrabbed
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(NULL, SOL1_CAR_DAMAGE)
INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(NULL, SOL1_MAX_SPEED)
bVehStatsGrabbed = FALSE
ENDIF
ENDIF
IF NOT bHeliStatsGrabbed
IF DOES_ENTITY_EXIST(vehs[mvf_heli].id)
AND IS_VEHICLE_DRIVEABLE(vehs[mvf_heli].id)
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(vehs[mvf_heli].id, SOL1_HELI_DAMAGE)
bHeliStatsGrabbed = TRUE
ENDIF
ENDIF
death_checks()
//audio
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
bpauseconv = false
endif
if isentityalive(mike())
AUDIO_dialogue(int_to_enum(MSF_MISSION_STAGE_FLAGS,mission_stage))
endif
SET_ALL_RANDOM_PEDS_FLEE_THIS_FRAME(player_id())
if mission_stage = enum_to_int(msf_1_Stealth_to_roof)
or( mission_stage = enum_to_int(msf_0_get_to_warehouse) and mission_substage > 2)
and not IS_CUTSCENE_PLAYING()
manage_Stealth_stage()
endif
if mission_stage = enum_to_int(msf_1_Stealth_to_roof)
SUPPRESS_SHOCKING_EVENT_TYPE_NEXT_FRAME(SHOCKING_EVENT_SERIOUS_DANGER)
SUPPRESS_SHOCKING_EVENT_TYPE_NEXT_FRAME(SHOCKING_EVENT_DANGEROUS)
manage_GIANNI()
endif
Manage_Doors()
Manage_Stealth_Door_Locks()
if mission_stage >= enum_to_int(msf_1_Stealth_to_roof)
and mission_stage < enum_to_int(msf_3_get_to_sol)
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),vheliRoof) > 130
MISSION_FAILED(mff_left_Area)
elif GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(), vheliRoof) > 120
if not bFailWarning
PRINT_NOW("SOL1_RTNM",DEFAULT_GOD_TEXT_TIME,1)
bfailWarning = true
endif
else
bfailWarning = false
endif
elif mission_stage = enum_to_int(msf_3_get_to_sol)
if not IS_CUTSCENE_PLAYING()
and mission_substage < 6
if GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),Milton()) > 80
or GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),anton()) > 80
MISSION_FAILED(mff_left_peds)
elif GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),Milton()) > 60
if not bfailMiltonWarning
PRINT_NOW("SOl1_RTNMILT",DEFAULT_GOD_TEXT_TIME,1)
bfailMiltonWarning = true
endif
elif GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),anton()) > 60
if not bfailAntonWarning
PRINT_NOW("SOl1_RTNANT",DEFAULT_GOD_TEXT_TIME,1)
bfailAntonWarning = true
endif
else
bfailAntonWarning = FALSE
bfailMiltonWarning = FALSE
endif
endif
endif
// update partners id's
Mafia[maf_car].partner = mafia[maf_car_talking].id
Mafia[maf_car_talking].partner = mafia[maf_car].id
Mafia[maf_walkway_door].partner = mafia[maf_worker_walkway].id
Mafia[maf_worker_walkway].partner = mafia[maf_walkway_door].id
vector playerCoord = GET_ENTITY_COORDS(mike())
int ped
for ped = 0 to enum_to_int(NUM_OF_Mafia_PEDS) -1
if isentityalive(mafia[ped].id)
//attach clipboards and objects to the peds left hand
if DOES_ENTITY_EXIST(mafia[ped].obj)
and not mafia[ped].bObjAttached
if DOES_ENTITY_HAVE_PHYSICS(mafia[ped].obj)
ATTACH_ENTITY_TO_ENTITY(mafia[ped].obj,mafia[ped].id
,GET_PED_BONE_INDEX(mafia[ped].id,BONETAG_PH_L_HAND),<<0,0,0>>,<<0,0,0>>)
mafia[ped].bObjAttached = true
endif
endif
if IS_ENTITY_PLAYING_ANIM(mafia[ped].id,AnimDict_PHONE,animPhone)
if not mafia[ped].bOnPhone
mafia[ped].objphone = CREATE_OBJECT(modelPhone, GET_ENTITY_COORDS(mafia[ped].id))
ATTACH_ENTITY_TO_ENTITY(mafia[ped].objPhone,mafia[ped].id
,GET_PED_BONE_INDEX(mafia[ped].id,BONETAG_PH_R_HAND),<<0,0,0>>,<<0,0,0>>)
mafia[ped].bOnPhone = true
endif
endif
//blip the peds that close to mike
vector pedCoord = GET_ENTITY_COORDS(mafia[ped].id)
float fzDif = pedcoord.z - playerCoord.z
if fzDif < 0
fzDif *= -1
endif
if GET_DISTANCE_BETWEEN_ENTITIES(mike(),mafia[ped].id) < mafia[ped].fBlipRange
and fzDif < 4.5
mafia[ped].bForceBlip = true
else
mafia[ped].bForceBlip = false
endif
endif
#if is_debug_build
mafia[ped].sDebug = enum_to_int(mafia[ped].sit)
#endif
endfor
if isentityalive(player_ped_id())
PLACE_CONSTRUCTION()
endif
#if is_debug_build
wAI_stage = enum_to_int(eAI_stage)
debug_noise = GET_PLAYER_CURRENT_STEALTH_NOISE(player_id())
Display_Placeholder()
#endif
endproc
proc mission_setup()
peds[mpf_mike].id = PLAYER_PED_ID()
remove_relationship_group(rel_group_enemies)
remove_relationship_group(rel_friends)
add_relationship_group("enemies", rel_group_enemies)
ADD_RELATIONSHIP_GROUP("rel_Friends", REL_friends)
//haters
set_relationship_between_groups(acquaintance_type_ped_hate,relgrouphash_player,rel_group_enemies)
set_relationship_between_groups(acquaintance_type_ped_hate,rel_group_enemies,relgrouphash_player)
set_relationship_between_groups(acquaintance_type_ped_hate,rel_friends,rel_group_enemies)
set_relationship_between_groups(acquaintance_type_ped_hate,rel_group_enemies,rel_friends)
//friends
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE,RELGROUPHASH_PLAYER,rel_friends)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE,rel_friends,RELGROUPHASH_PLAYER)
set_relationship_between_groups(acquaintance_type_ped_like,rel_group_enemies,rel_group_enemies)
request_additional_text("SOL1", mission_text_slot)
if is_player_playing(player_id())
set_player_control(player_id(), true)
endif
enable_dispatch_service(dt_ambulance_department,false)
enable_dispatch_service(dt_fire_department, false)
set_wanted_level_multiplier(0.3)
CLEAR_PLAYER_WANTED_LEVEL(player_id())
set_vehicle_model_is_suppressed(FUGITIVE,true)
set_vehicle_model_is_suppressed(FROGGER,true)
DISABLE_TAXI_HAILING()
DISABLE_CHEAT(CHEAT_TYPE_SPAWN_VEHICLE,true)
// Initialise all the doors we're gonna be using
Doors_Initialise()
if DOES_SCENARIO_GROUP_EXIST("SOLOMON_GATE")
if IS_SCENARIO_GROUP_ENABLED("SOLOMON_GATE")
SET_SCENARIO_GROUP_ENABLED("SOLOMON_GATE",false)
endif
endif
SET_AMBIENT_ZONE_STATE("AZ_SOL_1_FACTORY_AREA_CONSTRUCTIONS", TRUE, TRUE)
SET_INTERIOR_DISABLED( INTERIOR_V_58_SOL_OFFICE, FALSE)
SET_WEATHER_TYPE_PERSIST("EXTRASUNNY")
ADD_SCENARIO_BLOCKING_AREA(<<1038.43750, -1769.24170, 10>>,<<794.32159, -1989.40137, 60>>)
if isentityalive(GET_MISSION_START_VEHICLE_INDEX())
if IS_THIS_MODEL_A_HELI(GET_ENTITY_MODEL(GET_MISSION_START_VEHICLE_INDEX()))
SET_MISSION_START_VEHICLE_AS_VEHICLE_GEN(<<-1106.3323, -443.0989, 34.3837>>, 116.5404)
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA(<<-1034.93652, -497.61383, 35.33385>>,<<-1009.55530, -483.44385, 42.02816>>,20,<<-1106.3323, -443.0989, 34.3837>>, 116.5404, FALSE) //BUG FIX 1399301 Added FALSE to clean up area
ELSE
SET_MISSION_START_VEHICLE_AS_VEHICLE_GEN(<<-1024.6364, -497.7582, 35.9242>>, 86.6830)
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA(<<-1034.93652, -497.61383, 35.33385>>,<<-1009.55530, -483.44385, 42.02816>>,20,<<-1024.5975, -496.4365, 35.9291>>, 86.4749, FALSE) //BUG FIX 1399301 Added FALSE to clean up area
ENDIF
ENDIF
if is_replay_in_progress()
or IS_REPEAT_PLAY_ACTIVE()
if IS_REPLAY_IN_PROGRESS()
iskiptostage = get_replay_mid_mission_stage()
if g_bshitskipaccepted
iskiptostage++
endif
if iskiptostage >= 4
iSkipToStage = 4
endif
elif IS_REPEAT_PLAY_ACTIVE()
iSkipToStage = 0
endif
// New replay streaming
IF IS_REPLAY_IN_PROGRESS()
VECTOR vSkipToCoord
FLOAT fSkipToHeading
GET_SKIP_STAGE_COORD_AND_HEADING(int_to_enum(MSF_MISSION_STAGE_FLAGS,iSkipToStage), vSkipToCoord, fSkipToHeading)
START_REPLAY_SETUP(vSkipToCoord, fSkipToHeading)
ENDIF
bdoskip = true
else
PRINTLN("Start mission Loading")
WHILE NOT Update_Skip_Streaming(sAssetData)
WAIT(0)
ENDWHILE
PRINTLN("End mission Loading")
g_replay.iReplayInt[0] = 0
g_replay.iReplayInt[1] = 0
set_replay_mid_mission_stage_with_name(0,"stage 0: Get Heli")
mission_stage = enum_to_int(msf_0_get_to_warehouse)
endif
mission_substage = stage_entry
if is_player_playing(player_id())
set_player_control(player_id(), true)
endif
endproc
// -----------------------------------------------------------------------------------------------------------
// Mission stages
// -----------------------------------------------------------------------------------------------------------
Proc Run_Init_CutScene()
#IF IS_DEBUG_BUILD
IF IS_CUTSCENE_ACTIVE()
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J)
STOP_CUTSCENE()
REMOVE_CUTSCENE()
WHILE IS_CUTSCENE_ACTIVE()
WAIT(0)
ENDWHILE
ENDIF
ENDIF
#ENDIF
IF NOT b_cutscene_loaded
if NOT IS_CUTSCENE_ACTIVE()
SET_INTERIOR_DISABLED( INTERIOR_V_58_SOL_OFFICE, FALSE)
REQUEST_CUTSCENE("SOL_1_INT_ALT")
WAIT(0)
endif
IF HAS_CUTSCENE_LOADED()
//pre mission setup
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
SET_ALL_EXIT_STATES()
set_peds_CS_OUTFITS()
START_CUTSCENE()
b_cutscene_loaded = TRUE
ENDIF
ENDIF
endproc
proc ST_0_GET_TO_WAREHOUSE()
switch mission_substage
case STAGE_ENTRY
if IS_REPLAY_IN_PROGRESS()
Load_Asset_Model(sAssetData,CAVALCADE2)
load_Asset_model(sAssetdata,COQUETTE)
bStartConstructionChecks = false
mission_substage++
else
Run_Init_CutScene()
IF b_cutscene_loaded
if IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
endif
Load_Asset_Model(sAssetData,CAVALCADE2)
load_Asset_model(sAssetData,COQUETTE)
bStartConstructionChecks = false
mission_substage++
endif
endif
break
case 1
IF b_cutscene_loaded
and IS_CUTSCENE_PLAYING()
MISSION_FLOW_RELEASE_TRIGGER_SCENE_ASSETS(SP_MISSION_SOLOMON_1)//BUG FIX 1402789
SET_SRL_POST_CUTSCENE_CAMERA(<<-1014.6,-481.4,37.9>>, CONVERT_ROTATION_TO_DIRECTION_VECTOR(<<0.0, 0.0,121.2896>>))
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-1037.91162, -495.88333, 34>>,<<-1016.92767, -471.04614, 37>>,false)
CLEAR_AREA_OF_VEHICLES(<<-1028.38049, -486.24539, 37.13475>>,15)
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
b_cutscene_loaded = false
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael")
REPLAY_STOP_EVENT()
println("mike")
bcs_Mike = true
endif
if CAN_SET_EXIT_STATE_FOR_CAMERA()
println("cam")
bcs_cam = true
endif
if (bcs_Mike and bcs_cam)
or IS_REPLAY_IN_PROGRESS()
if IS_SCREEN_FADED_OUT()
or IS_SCREEN_FADING_OUT()
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
endif
//CAVALCADE2
if not IS_ANY_VEHICLE_NEAR_POINT(<<-1036.98743, -491.78458, 35.57412>>,1.8)
vehs[mvf_cavalcade2].id = CREATE_VEHICLE(CAVALCADE2,<<-1036.5834, -492.1475, 35.5822>>, 209.0078)
endif
Unload_Asset_Model(sAssetData,cavalcade2)
//COQUETTE
if not IS_ANY_VEHICLE_NEAR_POINT(<<-1033.80017, -489.91208, 35.83315>>,1.8)
vehs[mvf_coquette].id = create_vehicle(coquette,<<-1033.6208, -490.2622, 35.8286>>, 210.3952)
endif
unload_asset_model(sAssetData,coquette)
SET_ENTITY_COORDS(mike(),<<-1016.53870, -482.88400, 36.07111>>)
SET_ENTITY_HEADING(mike(),121.31)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
ADD_PED_FOR_DIALOGUE(convo_struct,1,null,"SOLOMON")
ADD_PED_FOR_DIALOGUE(convo_struct,0,mike(),"MICHAEL")
bStageLoaded = false
bStageLoaded2 = false
TASK_GO_STRAIGHT_TO_COORD(MIKE(),<<-1021.03033, -485.61594, 36.13899 >>,PEDMOVE_WALK)
FORCE_PED_MOTION_STATE(MIKE(),MS_ON_FOOT_WALK,FALSE,FAUS_CUTSCENE_EXIT)
SET_PED_MIN_MOVE_BLEND_RATIO(MIKE(),PEDMOVE_WALK)
prep_stop_cutscene(true)
RENDER_SCRIPT_CAMS(false,false,0,false,true)
NEW_LOAD_SCENE_STOP()
REMOVE_CUTSCENE()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(false)
SET_ALL_EXIT_STATES()
DISPLAY_RADAR(true)
display_hud(true)
b_cutscene_loaded = false
bstreamloaded = false
bLoadMusicStream = false
ADD_CONTACT_TO_PHONEBOOK(CHAR_SOLOMON,MICHAEL_BOOK,true)
init_enemy_data()
mission_substage++
endif
break
case 2 // *dependent for playin AI / sol phone call*
if not bStageLoaded
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(mike(),<<970.6778, -1754.9475, 30.0644>>) < 200
SET_INTERIOR_DISABLED( INTERIOR_V_58_SOL_OFFICE, TRUE)
LOAD_ASSET_MODEL(sAssetData,S_M_Y_CONSTRUCT_01)
Load_Asset_AnimDict(sAssetData,animDict_kneel_enter)
Load_Asset_AnimDict(sAssetData,animDict_kneel_Idle)
Load_Asset_AnimDict(sAssetData,animDict_kneel_exit)
Load_Asset_AnimDict(sAssetData,AnimDict_gestures)
Load_Asset_AnimDict(sAssetData,AnimDict_flinch)
Load_Asset_AnimDict(sAssetData, AnimDict_ClipBoard)
Load_Asset_AnimDict(sAssetData, AnimDict_PHONE)
LOAD_ASSET_RECORDING(sAssetData,001,"SOL1REC")
REQUEST_CLIP_SET("MOVE_M@CLIPBOARD")
bLoadMusicStream = true
if isentityalive(vehs[mvf_coquette].id)
if not IS_PED_IN_VEHICLE(player_ped_id(),vehs[mvf_coquette].id)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehs[mvf_coquette].id)
endif
endif
if isentityalive(vehs[mvf_cavalcade2].id)
if not IS_PED_IN_VEHICLE(player_ped_id(),vehs[mvf_cavalcade2].id)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehs[mvf_cavalcade2].id)
endif
endif
bStageLoaded = true
endif
else
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(mike(),<<970.6778, -1754.9475, 30.0644>>) < 150
and HAS_MODEL_LOADED(S_M_Y_CONSTRUCT_01)
and HAS_CLIP_SET_LOADED("MOVE_M@CLIPBOARD")
if not isentityalive(mafia[maf_car].id)
and not mafia[maf_car].bkilled
create_Mafiaenemy(maf_car,24)
endif
if not isentityalive(mafia[maf_car_talking].id)
and not mafia[maf_car_talking].bkilled
create_Mafiaenemy(maf_car_talking,24)
endif
bStartConstructionChecks = true
elif GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(mike(),<<970.6778, -1754.9475, 30.0644>>)> 300
SAFE_DELETE_PED(mafia[maf_car].id)
SAFE_DELETE_PED(mafia[maf_car_talking].id)
LOAD_ASSET_MODEL(sAssetData,S_M_Y_CONSTRUCT_01)
Unload_Asset_Anim_Dict(sAssetData,animDict_kneel_enter)
unLoad_Asset_Anim_Dict(sAssetData,animDict_kneel_Idle)
unLoad_Asset_Anim_Dict(sAssetData,animDict_kneel_exit)
unLoad_Asset_Anim_Dict(sAssetData,AnimDict_gestures)
unLoad_Asset_Anim_Dict(sAssetData,AnimDict_flinch)
unLoad_Asset_Anim_Dict(sAssetData,AnimDict_ClipBoard)
unLoad_Asset_Anim_Dict(sAssetData,AnimDict_PHONE)
unLOAD_ASSET_RECORDING(sAssetData,001,"SOL1REC")
REMOVE_CLIP_SET("MOVE_M@CLIPBOARD")
bStageLoaded = false
endif
endif
if not bStageLoaded2
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(mike(),<<970.6778, -1754.9475, 30.0644>>) < DEFAULT_CUTSCENE_LOAD_DIST
LOAD_ASSET_MODEL(sAssetData,FROGGER)
LOAD_ASSET_MODEL(sAssetData,G_M_M_ARMGOON_01)
load_asset_model(sAssetData,modelpilot)
load_asset_model(sAssetData,modelrocco)
load_asset_model(sAssetData,modelActor)
load_asset_model(sAssetData,modelDirector)
load_Asset_model(sAssetData,modelGianni)
Load_Asset_Model(sAssetData,modelclipboard)
NEW_LOAD_SCENE_START(<<966.79,-1749.25,35.66>>,<<-0.58,0.81,-0.13>>,65)
bStageLoaded2 = true
endif
else
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(mike(),<<970.6778, -1754.9475, 30.0644>>) > DEFAULT_CUTSCENE_UNLOAD_DIST
unLOAD_ASSET_MODEL(sAssetData,FROGGER)
unLOAD_ASSET_MODEL(sAssetData,G_M_M_ARMGOON_01)
unload_asset_model(sAssetData,modelpilot)
unload_asset_model(sAssetData,modelrocco)
unload_asset_model(sAssetData,modelActor)
unload_asset_model(sAssetData,modelDirector)
unload_Asset_model(sAssetData,modelGianni)
unLoad_Asset_Model(sAssetData,modelclipboard)
NEW_LOAD_SCENE_STOP()
bStageLoaded2 = false
endif
endif
if not IS_AUDIO_SCENE_ACTIVE("SOL_1_DRIVE_TO_EAST_LS")
if IS_PED_IN_ANY_VEHICLE(mike())
START_AUDIO_SCENE("SOL_1_DRIVE_TO_EAST_LS")
endif
endif
if bLoadMusicStream
if LOAD_STREAM("Helicopter_Stream","SOL_1_MR_RICHARDS_SOUNDS")
bstreamloaded = true
bLoadMusicStream = false
endif
endif
if IS_PLAYER_AT_LOCATION_ANY_MEANS(sLocatesData,<<970.6778, -1754.9475, 30.0644>>,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,true,"SOL1_ELS",true)
or (DOES_BLIP_EXIST(sLocatesData.LocationBlip) and IS_ENTITY_IN_ANGLED_AREA(mike(),<<976.58124, -1753.84753, 33>>,<<965.19244, -1753.20862, 28>>,8))
if IS_PED_IN_ANY_VEHICLE(mike())
BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(GET_VEHICLE_PED_IS_IN(mike()))
endif
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
if IS_AUDIO_SCENE_ACTIVE("SOL_1_DRIVE_TO_EAST_LS")
STOP_AUDIO_SCENE("SOL_1_DRIVE_TO_EAST_LS")
endif
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-1037.91162, -495.88333, 34>>,<<-1016.92767, -471.04614, 37>>,true)
HANG_UP_AND_PUT_AWAY_PHONE()
iDialogue_Stage = 4
iskipCS = 0
set_replay_mid_mission_stage_with_name(1,"stage 1: Stealth to roof")
mission_substage++
endif
break
case 3
if IS_PED_IN_ANY_VEHICLE(mike())
if IS_VEHICLE_ALMOST_STOPPED(GET_VEHICLE_PED_IS_IN(mike()))
vehs[mvf_Replay_car].id = GET_VEHICLE_PED_IS_IN(mike())
SET_ENTITY_AS_MISSION_ENTITY(vehs[mvf_Replay_car].id)
idelay = get_game_timer()
mission_substage++
endif
else
idelay = get_game_timer()
mission_substage++
endif
break
case 4
if not bstreamloaded
if LOAD_STREAM("Helicopter_Stream","SOL_1_MR_RICHARDS_SOUNDS")
bstreamloaded = true
endif
endif
if (get_Game_timer() - idelay > 1000 and bstreamloaded)
or get_Game_timer() - idelay > 40000
REPLAY_RECORD_BACK_FOR_TIME(5.0, 13.0, REPLAY_IMPORTANCE_HIGHEST)
SET_HD_AREA(GET_ENTITY_COORDS(PLAYER_PED_ID()),10)
//cameraIndex = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED,<<968.5402, -1753.5344, 32.8193>>, <<-2.5886, 0.0000, 31.2658>>,30.0347)
cameraIndex = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED,<<964.352600,-1745.761597,35.290886>>,<<5.967328,0.174521,36.580875>>,30.034700) //BUG FIX 1201813
set_cam_active(cameraIndex,true)
//SET_CAM_PARAMS(cameraIndex,<<969.5601, -1752.7874, 39.0872>>, <<5.7838, -0.0000, 40.9145>>,30.0347,10000,GRAPH_TYPE_LINEAR,GRAPH_TYPE_LINEAR)
SET_CAM_PARAMS(cameraIndex,<<963.869385,-1745.322632,37.706657>>,<<9.215145,0.174522,34.265663>>,30.034700,9000,GRAPH_TYPE_LINEAR,GRAPH_TYPE_LINEAR) //BUG FIX 1201813
prep_start_cutscene(false,<<973.6251, -1761.7423, 37.0542>>,true,false,true,0,SPC_NONE,false)
CLEAR_AREA(<<970.6778, -1754.9475, 30.0644>>,150,true)
CLEAR_AREA(vheliRoof,150,true)
//heli
vehs[mvf_heli].id = CREATE_VEHICLE(FROGGER,<<977, -1658.4874,60>>, 74)
SET_FORCE_HD_VEHICLE(vehs[mvf_heli].id, true)
SET_VEHICLE_COLOUR_COMBINATION(vehs[mvf_heli].id,0)
SET_VEHICLE_ENGINE_CAN_DEGRADE(vehs[mvf_heli].id,false)
PLAY_STREAM_FROM_VEHICLE(vehs[mvf_heli].id)
//rocco
peds[mpf_rocco].id = CREATE_PED_INSIDE_VEHICLE(vehs[mvf_heli].id,PEDTYPE_MISSION,modelrocco,VS_FRONT_RIGHT)
// pilot
peds[mpf_pilot].id = create_ped_inside_vehicle(vehs[mvf_heli].id,PEDTYPE_MISSION,modelpilot)
if not IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_heli].id)
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_heli].id,1,"SOL1REC")
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_heli].id,14500) //15000 BUG FIX 1201813
SET_PLAYBACK_SPEED(vehs[mvf_heli].id,-0.8)
SET_HELI_BLADES_FULL_SPEED(vehs[mvf_heli].id)
endif
//more peds
if not isentityalive(Gianni())
peds[mpf_Gianni].id = CREATE_PED(pedtype_mission,modelGianni,vGianni,hGianni)
SETUP_Gianni()
endif
if not isentityalive(mafia[maf_worker_vent].id)
create_Mafiaenemy(maf_worker_vent,14)
endif
if not isentityalive(mafia[maf_worker_alone].id)
create_Mafiaenemy(maf_worker_alone,24)
endif
//actor
peds[mpf_milton].id = CREATE_PED(PEDTYPE_MISSION,modelActor, <<914.52319, -1699.65991, 50.13501>> ) //<<915.56940, -1698.89111, 50.13412>> //BUG FIX 1201813 swapping their start coords round so they don't cross each other.
SETUP_Milton()
//director
peds[mpf_Anton].id = CREATE_PED(PEDTYPE_MISSION,modelDirector, <<916.29724, -1699.75378, 50.13508>>) //<<913.85162, -1698.85193, 50.13412>> //BUG FIX 1201813
SETUP_Anton()
//veh
if isentityalive(vehs[mvf_Replay_car].id)
SET_ENTITY_COORDS(vehs[mvf_Replay_car].id,<<971.4699, -1754.8250, 30.0953>>)
set_entity_heading(vehs[mvf_Replay_car].id, 87.1515)
SET_MISSION_LAST_VEHICLE_AS_VEHICLE_GEN(<<971.4699, -1754.8250, 30.0953>>,87.1515)
endif
if not IS_AUDIO_SCENE_ACTIVE("SOL_1_COMPOUND_OVERVIEW_CUTSCENE")
START_AUDIO_SCENE("SOL_1_COMPOUND_OVERVIEW_CUTSCENE")
endif
TRIGGER_MUSIC_EVENT("SOL1_BEGIN")
REQUEST_CUTSCENE("Sol_1_mcs_1_concat")
SET_ALL_EXIT_STATES()
set_peds_CS_OUTFITS()
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_TORSO,1,0,CS_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_LEG,1,0,CS_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_feet,1,0,CS_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_JBIB,1,0,CS_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_TORSO,1,0,IG_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_LEG,1,0,IG_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_feet,1,0,IG_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_JBIB,1,0,IG_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Anton",PED_COMP_TORSO,0,0,CSB_ANTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Anton",PED_COMP_LEG,0,0,CSB_ANTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Anton",PED_COMP_TORSO,0,0,U_M_Y_ANTONB)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Anton",PED_COMP_LEG,0,0,U_M_Y_ANTONB)
idelay = get_game_timer()
iskipDelay = get_game_timer()
CLEAR_PLAYER_WANTED_LEVEL(player_id())
set_wanted_level_multiplier(0.0)
mission_substage++
else
SET_PLAYER_CONTROL(player_id(),false,SPC_LEAVE_CAMERA_CONTROL_ON)
endif
break
case 5
if get_game_timer() - idelay > 8000
TASK_FOLLOW_NAV_MESH_TO_COORD(peds[mpf_milton].id,<<908.91437, -1689.93665, 50.13943>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_SUPPRESS_EXACT_STOP)
TASK_LOOK_AT_ENTITY(peds[mpf_milton].id,vehs[mvf_heli].id,-1,SLF_WHILE_NOT_IN_FOV| SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT)
TASK_FOLLOW_NAV_MESH_TO_COORD(peds[mpf_Anton].id,<<912.44019, -1691.37793, 50.14446>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_SUPPRESS_EXACT_STOP)
TASK_LOOK_AT_ENTITY(peds[mpf_Anton].id,vehs[mvf_heli].id,-1,SLF_WHILE_NOT_IN_FOV| SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT)
OPEN_SEQUENCE_TASK(seq)
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL,<<914.64410, -1689.74878, 50.14659>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP)
TASK_TURN_PED_TO_FACE_ENTITY(NULL, vehs[mvf_heli].id, -1)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(Gianni(), seq)
CLEAR_SEQUENCE_TASK(seq)
SET_CAM_PARAMS(cameraIndex,<<876.181946,-1710.500854,46.637653>>,<<9.872696,0.003638,-59.444042>>,26.791100,0,GRAPH_TYPE_LINEAR,GRAPH_TYPE_LINEAR) //BUG FIX 1201813
camFollow = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED,<<874.506042,-1707.566650,48.956787>>,<<5.026361,0.003638,-57.228275>>,26.791100) //BUG FIX 1201813
POINT_CAM_AT_ENTITY(camFollow,vehs[mvf_heli].id,<<0,0,0>>)
SET_CAM_ACTIVE_WITH_INTERP(camFollow,cameraIndex,8000,GRAPH_TYPE_LINEAR,GRAPH_TYPE_LINEAR)
idelay = get_game_timer()
NEW_LOAD_SCENE_STOP()
mission_substage++
endif
break
case 6
if get_game_timer() - idelay > 5000
STOP_CAM_POINTING(cameraIndex)
SET_CAM_PARAMS(cameraIndex,<<898.3975, -1664.2729, 52.9379>>, <<-2.6793, 0.8462, -148.0579>>,19.8393,0,GRAPH_TYPE_LINEAR,GRAPH_TYPE_LINEAR)
SET_CAM_PARAMS(cameraIndex,<<898.3975, -1664.2687, 52.7121>>, <<-2.6793, 0.8462, -148.0579>>,19.8393,10000,GRAPH_TYPE_LINEAR,GRAPH_TYPE_LINEAR)
SET_CAM_ACTIVE(cameraIndex,true)
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_heli].id)
SET_PLAYBACK_SPEED(vehs[mvf_heli].id,-0.9)
endif
idelay = get_game_timer()
mission_substage++
endif
break
case 7
IF NOT IS_ENTITY_IN_AIR(vehs[mvf_heli].id) // BUG FIX 1201813
idelay = get_game_timer()
mission_substage++
ENDIF
break
case 8
if HAS_CUTSCENE_LOADED_WITH_FAILSAFE() // BUG FIX 1201813
STOP_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_heli].id) // BUG FIX 1201813
SAFE_DELETE_PED(peds[mpf_pilot].id) // temp need Gianni
REGISTER_ENTITY_FOR_CUTSCENE(rocco(),"rocco",CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY)
REGISTER_ENTITY_FOR_CUTSCENE(vehs[mvf_heli].id,"Main_heli",CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
REGISTER_ENTITY_FOR_CUTSCENE(Milton(),"Milton",CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
REGISTER_ENTITY_FOR_CUTSCENE(Anton(),"Anton",CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
REGISTER_ENTITY_FOR_CUTSCENE(Gianni(),"Rocco_Goon",CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
HANG_UP_AND_PUT_AWAY_PHONE()
START_CUTSCENE()
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
mission_substage++
endif
break
case 9
if IS_CUTSCENE_PLAYING()
STOP_STREAM()
Unload_Asset_Model(sAssetData,modelrocco)
Unload_Asset_Recording(sAssetData,1,"SOL1REC")
prep_stop_cutscene(true)
STOP_AUDIO_SCENES()
SET_SRL_POST_CUTSCENE_CAMERA(<<970.5688, -1753.4752, 30.1716>>, CONVERT_ROTATION_TO_DIRECTION_VECTOR(<<0.0, 0.0,56.0997>>))
SET_ENTITY_HEADING(player_ped_id(), 38.2203)
mission_substage++
endif
break
case 10
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Milton")
println("MILTON")
SET_PED_INTO_VEHICLE(Milton(),vehs[mvf_heli].id,VS_BACK_LEFT)
bcs_actor = true
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Anton")
SET_PED_INTO_VEHICLE(Anton(),vehs[mvf_heli].id,VS_BACK_RIGHT)
bcs_director = true
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Rocco_Goon")
println("GOON")
bcs_goon = true
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Main_heli")
SET_VEHICLE_ENGINE_ON(vehs[mvf_heli].id, FALSE, FALSE)
println("HELI")
bcs_heli = true
endif
if CAN_SET_EXIT_STATE_FOR_CAMERA()
println("CAM")
bcs_cam = true
endif
if bcs_actor
and bcs_goon
and bcs_heli
and bcs_cam
and bcs_director
REPLAY_STOP_EVENT()
CLEAR_HD_AREA()
SET_ENTITY_COORDS(player_ped_id(), <<968.7196, -1751.8749, 30.1595>>)
SET_ENTITY_HEADING(player_ped_id(), 38.2203)
FORCE_PED_MOTION_STATE(player_ped_id(), MS_AIMING)
FORCE_PED_AI_AND_ANIMATION_UPDATE(player_ped_iD(), true)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
mission_set_stage(msf_1_Stealth_to_roof)
mission_substage = STAGE_ENTRY
endif
break
endswitch
if mission_substage > 4
and mission_substage < 10
and not IS_CUTSCENE_PLAYING()
and get_game_timer() - iskipDelay > 1500
and IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
or iskipCS = 1
switch iskipCS
case 0
DO_SCREEN_FADE_OUT(DEFAULT_FADE_TIME_SHORT)
iskipCS++
break
case 1
if IS_SCREEN_FADED_OUT()
//plyaer
SET_ENTITY_COORDS(player_ped_id(), <<968.7196, -1751.8749, 30.1595>>)
SET_ENTITY_HEADING(player_ped_id(), 38.2203)
FORCE_PED_AI_AND_ANIMATION_UPDATE(player_ped_iD())
//heli
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_heli].id)
STOP_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_heli].id)
endif
SET_ENTITY_COORDS(vehs[mvf_heli].id,vheliRoof)
SET_ENTITY_HEADING(vehs[mvf_heli].id,hHeliRoof)
SET_VEHICLE_ENGINE_ON(vehs[mvf_heli].id, FALSE, FALSE)
//peds
SAFE_DELETE_PED(peds[mpf_rocco].id)
SAFE_DELETE_PED(peds[mpf_pilot].id)
SET_PED_INTO_VEHICLE(Milton(),vehs[mvf_heli].id,VS_BACK_LEFT)
SET_PED_INTO_VEHICLE(Anton(),vehs[mvf_heli].id,VS_BACK_RIGHT)
//CS
IF IS_CUTSCENE_ACTIVE()
STOP_CUTSCENE_IMMEDIATELY()
REMOVE_CUTSCENE()
ENDIF
//misc
Unload_Asset_Model(sAssetData,modelrocco)
Unload_Asset_Recording(sAssetData,1,"SOL1REC")
prep_stop_cutscene(true)
STOP_AUDIO_SCENES()
STOP_STREAM()
DESTROY_ALL_CAMS()
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
NEW_LOAD_SCENE_STOP()
CLEAR_HD_AREA()
mission_set_stage(msf_1_Stealth_to_roof)
mission_substage = STAGE_ENTRY
iskipCS = 0
endif
break
endswitch
endif
clear_players_task_on_control_input(SCRIPT_TASK_GO_STRAIGHT_TO_COORD)
endproc
proc ST_1_STEALTH_TO_ROOF()
switch mission_substage
case STAGE_ENTRY
if IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
endif
if IS_SCREEN_FADED_IN()
print_now("SOL1_HELI",DEFAULT_GOD_TEXT_TIME,1)
if not DOES_BLIP_EXIST(blip_objective)
blip_objective = CREATE_BLIP_FOR_COORD(GET_ENTITY_COORDS(vehs[mvf_heli].id))
endif
NEW_LOAD_SCENE_STOP()
TRIGGER_MUSIC_EVENT("SOL1_GAMEPLAY")
bFirstAlerted = false
ifloorspot = 0
iGianniChat = 0
CLEAR_PLAYER_WANTED_LEVEL(player_id())
set_wanted_level_multiplier(0.0)
set_replay_mid_mission_stage_with_name(1,"stage 1: Stealth to roof")
REPLAY_RECORD_BACK_FOR_TIME(5.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
mission_substage++
endif
break
case 1
//load rocco or unload on distance
if GET_DISTANCE_BETWEEN_ENTITIES(mike(),vehs[mvf_heli].id) < 35
Load_Asset_Model(sAssetData,modelrocco)
Load_Asset_Model(sAssetData,modelpilot)
else
Unload_Asset_Model(sAssetData,modelrocco)
unLoad_Asset_Model(sAssetData,modelpilot)
endif
if GET_DISTANCE_BETWEEN_ENTITIES(mike(),vehs[mvf_heli].id) < 16
and not bMusic_heliTrigger
TRIGGER_MUSIC_EVENT("SOL1_HELI_ROOF")
bMusic_heliTrigger = true
endif
if IS_PED_IN_ANY_VEHICLE(player_ped_id())
if IS_AUDIO_SCENE_ACTIVE("SOL_1_GET_TO_HELI_STEALTH")
STOP_AUDIO_SCENE("SOL_1_GET_TO_HELI_STEALTH")
endif
else
if not IS_AUDIO_SCENE_ACTIVE("SOL_1_GET_TO_HELI_STEALTH")
START_AUDIO_SCENE("SOL_1_GET_TO_HELI_STEALTH")
endif
endif
if IS_ENTITY_IN_ANGLED_AREA(mike(),<<911.31165, -1671.00183, 50.13412>>,<<909.20807, -1695.13318, 56.13356>>,18)
or IS_ENTITY_IN_ANGLED_AREA(mike(),<<917.82196, -1698.05920, 50.13412>>,<<905.07593, -1696.87073, 56.13356>>,6)//stairs trigger
or( IS_ENTITY_IN_ANGLED_AREA(mike(),<<902.98291, -1667.34106, 50.13412>>,<<920.77441, -1664.76794, 56.13356>>,8)and not IS_PED_CLIMBING(mike()))
or(HAS_ENTITY_CLEAR_LOS_TO_ENTITY_IN_FRONT(Gianni(),mike())
and IS_PED_FACING_PED(Gianni(),mike(),50)
and IS_ENTITY_IN_ANGLED_AREA(mike(),<<908.51294, -1699.99683, 65>>,<<910.62000, -1663.53870, 50.1>>,18))
if DOES_BLIP_EXIST(blip_objective)
REMOVE_BLIP(blip_objective)
endif
STOP_AUDIO_SCENES()
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
idelay = get_Game_timer()
mission_substage++
endif
break
case 2
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(convo_struct,0,mike(),"MICHAEL")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_ROC",CONV_PRIORITY_MEDIUM)
TASK_LOOK_AT_ENTITY(Gianni(),mike(),-1,SLF_WHILE_NOT_IN_FOV| SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT)
TASK_TURN_PED_TO_FACE_ENTITY(Gianni(),mike(),-1)
TASK_LOOK_AT_ENTITY(Anton(),mike(),-1,SLF_WHILE_NOT_IN_FOV| SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT)
TASK_LOOK_AT_ENTITY(milton(),mike(),-1,SLF_WHILE_NOT_IN_FOV| SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT)
mission_substage++
endif
endif
break
case 3
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(convo_struct,4,Gianni(),"GIANNI",true)
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_SEES",CONV_PRIORITY_MEDIUM)
mission_set_stage(msf_2_fight_rocco)
mission_substage = STAGE_ENTRY
endif
endif
break
endswitch
REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2163422
if mission_substage > 1
SET_GAMEPLAY_HINT_CAMERA_BLEND_TO_FOLLOW_PED_MEDIUM_VIEW_MODE(TRUE)
if get_game_timer() - idelay > 2500
//-------------- PUSH IN --------------
FLOAT fT2HintCamFollow
FLOAT fT2HintCamOffset
FLOAT fT2HintCamFove
fT2HintCamFollow = 0.45
fT2HintCamOffset = -0.78
fT2HintCamFove = 30.00
SET_GAMEPLAY_COORD_HINT(<<912.16638, -1683.00232, 51.71074>>,-1,2000)
SET_GAMEPLAY_HINT_FOLLOW_DISTANCE_SCALAR(fT2HintCamFollow)
SET_GAMEPLAY_HINT_CAMERA_RELATIVE_SIDE_OFFSET(fT2HintCamOffset)
SET_GAMEPLAY_HINT_FOV(fT2HintCamFove)
SET_PLAYER_CONTROL(player_id(),false)
if IS_ENTITY_IN_ANGLED_AREA(mike(),<<909.97729, -1687.18030, 50.12949>>,<<910.85028, -1676.78320, 53.29437>>,18)
if IS_SCRIPT_TASK_RUNNING_OR_STARTING(mike(),SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD)
CLEAR_PED_TASKS(mike())
endif
else
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(mike(),SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD)
TASK_FOLLOW_NAV_MESH_TO_COORD(mike(),<<912.34351, -1682.78552, 50.13306>>,PEDMOVE_WALK)
endif
endif
//---------------------------------------------
endif
endif
if isentityalive(Milton())
and isentityalive(Anton())
if mission_substage < 3
if not IS_PED_HEADTRACKING_PED(Milton(),Gianni())
TASK_LOOK_AT_ENTITY(Milton(),Gianni(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT)
endif
if not IS_PED_HEADTRACKING_PED(Anton(),Gianni())
TASK_LOOK_AT_ENTITY(Anton(),Gianni(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT)
endif
else
if not IS_PED_HEADTRACKING_PED(Milton(),mike())
TASK_LOOK_AT_ENTITY(Milton(),mike(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT)
endif
if not IS_PED_HEADTRACKING_PED(Anton(),mike())
TASK_LOOK_AT_ENTITY(Anton(),mike(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT)
endif
endif
endif
endproc
proc ST_2_FIGHT_ROCCO()
switch mission_substage
case STAGE_ENTRY
// rocco
peds[mpf_rocco].id = create_ped(PEDTYPE_MISSION,modelrocco,<<916.03021, -1702.74951, 50.26364>>,-3.90)
SETUP_ROCCO()
//create pilot
peds[mpf_pilot].id = create_ped(PEDTYPE_MISSION,modelpilot,<<916.28003, -1703.59143, 50.26377>>,-3.90)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(peds[mpf_pilot].id,true)
if isentityalive(vehs[mvf_Replay_car].id)
SAFE_RELEASE_VEHICLE(vehs[mvf_Replay_car].id)
endif
//cs
REQUEST_CUTSCENE("sol_1_mcs_2")
Load_Asset_AnimDict(sAssetData,"misssolomon_1")
SET_ALL_EXIT_STATES()
set_peds_CS_OUTFITS()
//heli
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehs[mvf_heli].id,false)
idelay = get_Game_timer()
iskipDelay = GET_GAME_TIMER()
mission_substage++
break
case 1
if HAS_CUTSCENE_LOADED()
and not IS_SCRIPTED_CONVERSATION_ONGOING()
REGISTER_ENTITY_FOR_CUTSCENE(rocco(),"rocco",CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
REGISTER_ENTITY_FOR_CUTSCENE(peds[mpf_pilot].id,"Rocco_Goon",CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY)
HANG_UP_AND_PUT_AWAY_PHONE()
start_cutscene(CUTSCENE_PLAYER_TARGETABLE)
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
mission_substage++
endif
break
case 2
if IS_CUTSCENE_PLAYING()
STOP_GAMEPLAY_HINT()
SET_PLAYER_CONTROL(player_id(),true)
set_replay_mid_mission_stage_with_name(2,"stage 2: Fight Rocco")
CLEAR_AREA_OF_PROJECTILES(<<916.03021, -1702.74951, 50.26364>>,50)
if IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
endif
TRIGGER_MUSIC_EVENT("SOL1_FIST_FIGHT")
STOP_AUDIO_SCENES()
if not IS_AUDIO_SCENE_ACTIVE("SOL_1_ROCCO_ARRIVES_CUTSCENE")
START_AUDIO_SCENE("SOL_1_ROCCO_ARRIVES_CUTSCENE")
endif
SAFE_DELETE_PED(peds[mpf_Gianni].id)
mission_substage++
endif
break
case 3
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael")
REPLAY_STOP_EVENT()
SET_CURRENT_PED_WEAPON(mike(),WEAPONTYPE_UNARMED,true)
println("MIKE")
bcs_mike = true
else
point_gameplay_cam_at_coord(220.1630)
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("rocco")
REGISTER_TARGET(rocco(),mike())
TASK_PUT_PED_DIRECTLY_INTO_MELEE(rocco(),mike(),0.0,-1,0.0,COMBAT_PED_PREVENT_CHANGING_TARGET)
FORCE_PED_AI_AND_ANIMATION_UPDATE(rocco())
println("rocco")
bcs_rocco = true
endif
if bcs_mike
and bcs_rocco
//clean up the other peds
int ped
for ped = 0 to enum_to_int(NUM_OF_Mafia_PEDS) - 1
if isentityalive(mafia[ped].id)
SAFE_DELETE_PED(mafia[ped].id)
endif
endfor
//rocco
if not DOES_BLIP_EXIST(peds[mpf_rocco].blip)
peds[mpf_rocco].blip = CREATE_BLIP_FOR_PED(rocco(),true)
endif
//bug:2033220
if GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = CAM_VIEW_MODE_FIRST_PERSON
SET_ENTITY_FACING(mike(),GET_ENTITY_COORDS(rocco()))
endif
print_now("SOL1_BEAT",DEFAULT_GOD_TEXT_TIME,1)
if IS_AUDIO_SCENE_ACTIVE("SOL_1_ROCCO_ARRIVES_CUTSCENE")
STOP_AUDIO_SCENE("SOL_1_ROCCO_ARRIVES_CUTSCENE")
endif
TRIGGER_MUSIC_EVENT("SOL1_START_FIGHT")
bChooseActor = true
Unload_Asset_Model(sAssetData,modelrocco)
Unload_Asset_Model(sAssetData,modelWorker)
Unload_Asset_Model(sAssetData,G_M_M_ARMGOON_01)
iHelpTextTimer = GET_GAME_TIMER() //BUG FIX 1422945
bDoneFightHelp1 = FALSE
bDoneFightHelp2 = FALSE
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(mike(),SOL1_BRAWL_DAMAGE)
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
mission_substage++
endif
break
case 4 //*Stage number being used in stage checks*
//Wait 3 seconds before printing help text BUG FIX 1422945
IF bDoneFightHelp1 = FALSE
and g_replay.iReplayInt[0] = 0
IF GET_GAME_TIMER() - iHelpTextTimer > 3000
CLEAR_HELP()
PRINT_HELP("SOL1_HELP1",6000)//~s~Increasing the strength stat will allow more damage to be inflicted when performing a melee attack, ladders to be climbed faster, more damage to be taken, and better sports performance.
bDoneFightHelp1 = TRUE
g_replay.iReplayInt[0] = 1
ENDIF
ENDIF
IF bDoneFightHelp2 = FALSE
and g_replay.iReplayInt[1] = 0
IF bDoneFightHelp1 = TRUE
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("SOL1_HELP1")
PRINT_HELP("SOL1_HELP2",6000)//~s~The strength stat can be increased by engaging in melee combat and playing sports.
bDoneFightHelp2 = TRUE
g_replay.iReplayInt[1] = 1
ENDIF
ENDIF
ENDIF
if isentityalive(mike())
and isentityalive(rocco())
if GET_DISTANCE_BETWEEN_ENTITIES(mike(),rocco()) > 120
MISSION_FAILED(mff_left_Area)
elif GET_DISTANCE_BETWEEN_ENTITIES(mike(),rocco()) > 100
if not IS_MESSAGE_BEING_DISPLAYED()
and not bLeftfight
print_Now("SOl1_FIGHTRT",DEFAULT_GOD_TEXT_TIME,1)
bLeftFight = true
endif
else
bLeftFight = false
endif
endif
GET_CURRENT_PED_WEAPON(mike(),wcurrent)
if isentityalive(rocco())
//bugfix: 1935310
IF GET_GAME_TIMER() - iHelpTextTimer < 3000
SET_PED_RESET_FLAG(rocco(),PRF_ForcePedToStrafe,TRUE)
ENDIF
//----
//check if rocco out of the area. if fallen dead, if not high get back.
if not IS_ENTITY_IN_ANGLED_AREA(rocco(),<<919.09357, -1682.95520, 50.22886>>,<<901.45612, -1681.41113, 56.31160>>,36.14)
//dead area
if IS_ENTITY_IN_ANGLED_AREA(rocco(),<<913.99536, -1648.59717,0>>,<<908.99036, -1713.31812,43.73081>>,50)
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"Anton")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_SCARE",CONV_PRIORITY_MEDIUM)
SET_ENTITY_HEALTH(rocco(),0)
MISSION_FAILED(mff_rocco_died)
else
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1Actor")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_SCARE2",CONV_PRIORITY_MEDIUM)
SET_ENTITY_HEALTH(rocco(),0)
MISSION_FAILED(mff_rocco_died)
endif
//not dead area get back to roof.
else
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(rocco(),SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD)
TASK_FOLLOW_NAV_MESH_TO_COORD(rocco(),<<911.46997, -1690.09949, 50.13412>>,PEDMOVE_RUN,DEFAULT_TIME_NEVER_WARP)
endif
endif
//combat mike unless holding hands up
else
if IS_ENTITY_IN_ANGLED_AREA(mike(),<<919.09357, -1682.95520, 50.22886>>,<<901.45612, -1681.41113, 56.31160>>,36.14)
if not IS_PED_IN_COMBAT(rocco(),mike())
and not IS_SCRIPT_TASK_RUNNING_OR_STARTING(rocco(),SCRIPT_TASK_HANDS_UP)
and not IS_SCRIPT_TASK_RUNNING_OR_STARTING(rocco(),SCRIPT_TASK_PUT_PED_DIRECTLY_INTO_MELEE)
TASK_COMBAT_PED(rocco(),mike(),COMBAT_PED_PREVENT_CHANGING_TARGET)
endif
endif
endif
if not IS_ENTITY_IN_ANGLED_AREA(mike(),<<919.09357, -1682.95520, 50.22886>>,<<901.45612, -1681.41113, 56.31160>>,36.14)
//rocco shouting at mike as you have left the fight area
if get_game_timer() - i_dialogueTimer > 15000
and iDialogue_Stage > 1
ADD_PED_FOR_DIALOGUE(convo_struct,1,rocco(),"ROCCO")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_GETBK",CONV_PRIORITY_MEDIUM)
i_dialogueTimer = get_game_timer()
endif
endif
// move rocco back into position then look at mike.
if not IS_ENTITY_AT_COORD(rocco(),<<911.46997, -1690.09949, 50.13412>>,<<2,2,2>>)
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(rocco(),SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD)
TASK_FOLLOW_NAV_MESH_TO_COORD(rocco(),<<911.46997, -1690.09949, 50.13412>>,PEDMOVE_RUN,DEFAULT_TIME_NEVER_WARP)
endif
else
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(rocco(),SCRIPT_TASK_TURN_PED_TO_FACE_ENTITY)
TASK_TURN_PED_TO_FACE_ENTITY(rocco(),mike(),-1)
endif
endif
else //Mike in fight area
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(Milton(),SCRIPT_TASK_PERFORM_SEQUENCE)
OPEN_SEQUENCE_TASK(seq)
TASK_PLAY_ANIM(null,"misssolomon_1","anton_heli_intro",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_UPPERBODY)
TASK_PLAY_ANIM(null,"misssolomon_1","anton_heli_loop",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_UPPERBODY)
TASK_PLAY_ANIM(null,"misssolomon_1","anton_heli_exit",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_UPPERBODY)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(Milton(),seq)
CLEAR_SEQUENCE_TASK(seq)
endif
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(Anton(),SCRIPT_TASK_PERFORM_SEQUENCE)
OPEN_SEQUENCE_TASK(seq)
TASK_PLAY_ANIM(null,"misssolomon_1","milton_heli_intro",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_UPPERBODY)
TASK_PLAY_ANIM(null,"misssolomon_1","milton_heli_loop",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_UPPERBODY)
TASK_PLAY_ANIM(null,"misssolomon_1","milton_heli_exit",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_UPPERBODY)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(Anton(),seq)
CLEAR_SEQUENCE_TASK(seq)
endif
// check for spooking the actor and director when in the area
if wcurrent != WEAPONTYPE_UNARMED
and GET_WEAPONTYPE_GROUP(wcurrent) != WEAPONGROUP_MELEE
and not IS_PHONE_ONSCREEN()
if IS_PLAYER_TARGETTING_ENTITY(player_id(),Milton())
or IS_PLAYER_FREE_AIMING_AT_ENTITY(player_id(),milton())
or IS_PLAYER_TARGETTING_ENTITY(player_id(),anton())
or IS_PLAYER_FREE_AIMING_AT_ENTITY(player_id(),anton())
if get_game_timer() - iAimDelay > 1200
and iDialogue_Stage > 1
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"Anton")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_SCARE",CONV_PRIORITY_MEDIUM)
iAimDelay = get_game_timer()
mission_substage = 101
else
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1Actor")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_SCARE2",CONV_PRIORITY_MEDIUM)
iAimDelay = get_game_timer()
mission_substage = 101
endif
endif
else
iAimDelay = get_game_timer()
endif
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(rocco(),SCRIPT_TASK_HANDS_UP)
TASK_HANDS_UP(rocco(),-1,mike(),-1)
endif
if get_game_timer() - iGunOutDelay > 5000
and iDialogue_Stage > 1
ADD_PED_FOR_DIALOGUE(convo_struct,1,rocco(),"ROCCO")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_GUNOUT",CONV_PRIORITY_MEDIUM)
iGunOutDelay = get_game_timer()
endif
endif
else
if get_game_timer() - iGunOutDelay > 1200
if IS_SCRIPT_TASK_RUNNING_OR_STARTING(rocco(),SCRIPT_TASK_HANDS_UP)
CLEAR_PED_TASKS(rocco())
endif
iGunOutDelay = get_game_timer()
endif
endif
if not IS_SCRIPTED_CONVERSATION_ONGOING()
if get_game_Timer() - iambdialoguetimer > 7000
and not IS_MESSAGE_BEING_DISPLAYED()
and iDialogue_Stage > 1
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,4,rocco(),"ROCCO")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_RGA2",CONV_PRIORITY_MEDIUM)
else
if bChooseActor
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"Anton")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_FIGHTM",CONV_PRIORITY_MEDIUM)
bChooseActor = false
endif
else
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1ACTOR")
if CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOL1_FIGHTA",CONV_PRIORITY_MEDIUM)
bChooseActor = true
endif
endif
endif
endif
else
iambDialogueTimer = get_Game_timer()
endif
endif
if wcurrent != WEAPONTYPE_UNARMED
if DOES_ENTITY_EXIST(rocco())
if HAS_entity_BEEN_DAMAGED_BY_WEAPON(rocco(),wcurrent)
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"Anton")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_SCARE",CONV_PRIORITY_MEDIUM)
iAimDelay = get_game_timer()
mission_substage = 102
else
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1Actor")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_SCARE2",CONV_PRIORITY_MEDIUM)
iAimDelay = get_game_timer()
mission_substage = 102
endif
endif
endif
if isentityalive(Milton())
and isentityalive(Anton())
if HAS_PED_RECEIVED_EVENT(Milton(),EVENT_SHOT_FIRED_BULLET_IMPACT)
or HAS_PED_RECEIVED_EVENT(Anton(),EVENT_SHOT_FIRED_BULLET_IMPACT)
if GET_RANDOM_BOOL()
ADD_PED_FOR_DIALOGUE(convo_struct,3,Anton(),"Anton")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_SCARE",CONV_PRIORITY_MEDIUM)
iAimDelay = get_game_timer()
mission_substage = 101
else
ADD_PED_FOR_DIALOGUE(convo_struct,2,Milton(),"SOL1Actor")
CREATE_CONVERSATION(convo_struct,"SOL1AUD","SOl1_SCARE2",CONV_PRIORITY_MEDIUM)
iAimDelay = get_game_timer()
mission_substage = 101
endif
endif
endif
endif
endif
if not IS_CUTSCENE_ACTIVE()
//cs
REQUEST_CUTSCENE("sol_1_mcs_3")
SET_ALL_EXIT_STATES()
set_peds_CS_OUTFITS()
endif
if not IS_AUDIO_SCENE_ACTIVE("SOL_1_FIGHT_ROCCO")
START_AUDIO_SCENE("SOL_1_FIGHT_ROCCO")
endif
if isentityalive(rocco())
SET_PED_RESET_FLAG(rocco(),PRF_PreventAllMeleeTakedowns,true)
if get_entity_health(rocco()) < 150
and not IS_PED_FALLING(rocco())
SET_ENTITY_HEALTH(rocco(),200)
CLEAR_PED_TASKS(Milton())
CLEAR_PED_TASKS(Anton())
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
CLEAR_HELP()
SET_PED_TO_RAGDOLL(rocco(),5000,6000,TASK_RELAX,false,false,true)
idelay = get_Game_timer()
REPLAY_STOP_EVENT()
mission_substage++
endif
endif
break
case 5
if HAS_CUTSCENE_LOADED_WITH_FAILSAFE()
and get_game_timer() - idelay > 3000
REGISTER_ENTITY_FOR_CUTSCENE(rocco(),"rocco",CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY)
REGISTER_ENTITY_FOR_CUTSCENE(milton(),"milton",CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
REGISTER_ENTITY_FOR_CUTSCENE(anton(),"anton",CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
REGISTER_ENTITY_FOR_CUTSCENE(vehs[mvf_heli].id,"Main_heli",CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
HANG_UP_AND_PUT_AWAY_PHONE()
start_cutscene()
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
mission_substage++
endif
break
case 6
if IS_CUTSCENE_PLAYING()
if DOES_BLIP_EXIST(peds[mpf_rocco].blip)
REMOVE_BLIP(peds[mpf_rocco].blip)
endif
TRIGGER_MUSIC_EVENT("SOL1_FIGHT_DONE")
if IS_AUDIO_SCENE_ACTIVE("SOL_1_FIGHT_ROCCO")
STOP_AUDIO_SCENE("SOL_1_FIGHT_ROCCO")
endif
mission_substage++
endif
break
case 7
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael")
if WAS_CUTSCENE_SKIPPED()
SET_ENTITY_COORDS(mike(),<<911.39081, -1686.13513, 50.13412>>)
SET_ENTITY_HEADING(mike(),-4.11)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
endif
REPLAY_STOP_EVENT()
// TASK_FOLLOW_NAV_MESH_TO_COORD(mike(),<<912.93494, -1682.35657, 50.13412>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP)
FORCE_PED_MOTION_STATE(MIKE(),MS_ON_FOOT_WALK,false,FAUS_CUTSCENE_EXIT)
SET_PED_MIN_MOVE_BLEND_RATIO(MIKE(),PEDMOVEBLENDRATIO_WALK)
SIMULATE_PLAYER_INPUT_GAIT(player_id(),PEDMOVE_WALK,2000)
println("MIKE")
bcs_mike = true
ELSE
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Anton")
SET_PED_INTO_VEHICLE(Anton(),vehs[mvf_heli].id,VS_BACK_RIGHT)
bcs_director = true
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Milton")
SET_PED_INTO_VEHICLE(Milton(),vehs[mvf_heli].id,VS_BACK_LEFT)
bcs_actor = true
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Main_Heli")
bcs_heli = true
endif
if bcs_mike
and bcs_actor
and bcs_director
and bcs_heli
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehs[mvf_heli].id,true)
mission_set_stage(msf_3_get_to_sol)
mission_substage = STAGE_ENTRY
endif
break
case 101
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(rocco(),SCRIPT_TASK_HANDS_UP)
TASK_HANDS_UP(rocco(),-1,mike(),-1)
endif
if not IS_PED_FLEEING(Anton())
TASK_SMART_FLEE_PED(Anton(),mike(),200,-1)
endif
if not IS_PED_FLEEING(Milton())
TASK_SMART_FLEE_PED(Milton(),mike(),200,-1)
endif
if GET_GAME_TIMER() - iAimDelay > 1000
MISSION_FAILED(Mff_scared_peds)
endif
break
case 102
if isentityalive(rocco())
SET_ENTITY_HEALTH(rocco(),0)
endif
if not IS_PED_FLEEING(Anton())
TASK_SMART_FLEE_PED(Anton(),mike(),200,-1)
endif
if not IS_PED_FLEEING(Milton())
TASK_SMART_FLEE_PED(Milton(),mike(),200,-1)
endif
if GET_GAME_TIMER() - iAimDelay > 1000
MISSION_FAILED(mff_rocco_died)
endif
break
endswitch
if isentityalive(Milton())
and isentityalive(Anton())
if isentityalive(mike())
if not IS_PED_HEADTRACKING_PED(Milton(),mike())
TASK_LOOK_AT_ENTITY(Milton(),mike(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT,SLF_LOOKAT_VERY_HIGH)
endif
if not IS_PED_HEADTRACKING_PED(Anton(),mike())
TASK_LOOK_AT_ENTITY(Anton(),mike(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT,SLF_LOOKAT_VERY_HIGH)
endif
endif
endif
endproc
proc ST_3_GET_TO_SOL()
switch mission_substage
case STAGE_ENTRY
if IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
endif
if not IS_AUDIO_SCENE_ACTIVE("SOL_1_GET_TO_STUDIO")
START_AUDIO_SCENE("SOL_1_GET_TO_STUDIO")
endif
if DOES_BLIP_EXIST(blip_objective)
REMOVE_BLIP(blip_objective)
endif
set_wanted_level_multiplier(0.3)
Load_Asset_AnimDict(sAssetData,"misssolomon_1")
set_replay_mid_mission_stage_with_name(3,"stage 3: Get to Sol")
SET_ALL_EXIT_STATES()
bsearchlights = false
iScareStage = 0
bcueTakeOff = false
REPLAY_RECORD_BACK_FOR_TIME(8.0, 8.0, REPLAY_IMPORTANCE_HIGHEST)
mission_substage++
break
case 1
if not bcueTakeOff
if IS_PED_IN_VEHICLE(mike(),vehs[mvf_heli].id)
and IS_ENTITY_IN_AIR(vehs[mvf_heli].id)
TRIGGER_MUSIC_EVENT("SOL1_TAKE_OFF")
bcueTakeOff = true
endif
endif
if Scared_Milton()
b_cutscene_loaded = false
TRIGGER_MUSIC_EVENT("SOL1_SCARED_THEM")
STAT_INCREMENT(SP0_FLYING_ABILITY,2)
CLEAR_AREA(<<-1107.32568, -461.81781, 30.17446>>,50,true)
unLoad_Asset_Anim_Dict(sAssetData,"misssolomon_1")
REPLAY_RECORD_BACK_FOR_TIME(10.0, 5.0, REPLAY_IMPORTANCE_HIGHEST)
mission_substage++
endif
break
case 2
if iDialogue_Stage > 4
if IS_PLAYER_AT_LOCATION_WITH_BUDDIES_IN_VEHICLE(sLocatesData,<<-1098.04102, -458.76242, 34.38025>>,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,
true,null,peds[mpf_milton].id,peds[mpf_Anton].id,vehs[mvf_heli].id,"SOL1_STUDIO","","","","","CMN_GENGETINHE","CMN_GENGETBCKHE",false,true)
or (DOES_BLIP_EXIST(sLocatesData.LocationBlip)And IS_ENTITY_IN_ANGLED_AREA(mike(),<<-1107.32568, -461.81781, 30.17446>>,<<-1089.89941, -452.28159, 36.5>>,20)
and not IS_ENTITY_IN_AIR(vehs[mvf_heli].id))
and IS_VEHICLE_ALMOST_STOPPED(vehs[mvf_heli].id)
SET_PLAYER_CONTROL(player_id(),false,SPC_LEAVE_CAMERA_CONTROL_ON)
BRING_VEHICLE_TO_HALT(vehs[mvf_heli].id,5,1)
bStartConstructionChecks = false
mission_substage++
endif
endif
break
case 3
if IS_VEHICLE_ALMOST_STOPPED(vehs[mvf_heli].id)
and not IS_ENTITY_IN_AIR(vehs[mvf_heli].id)
// stats update
if GET_ENTITY_HEALTH(vehs[mvf_heli].id) = GET_ENTITY_MAX_HEALTH(vehs[mvf_heli].id)
INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(SOL1_PERFECT_LANDING)
endif
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
SET_VEHICLE_ENGINE_ON(vehs[mvf_heli].id,false,false)
if not bMusic_ends
TRIGGER_MUSIC_EVENT("SOL1_ENDS")
bMusic_ends = true
endif
TASK_LEAVE_ANY_VEHICLE(mike(),300)
OPEN_SEQUENCE_TASK(seq)
TASK_LEAVE_ANY_VEHICLE(null,1800)//200 BUG FIX 1399455
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1078.97095, -467.68033, 35.60899>>,PEDMOVE_WALK)
TASK_TURN_PED_TO_FACE_ENTITY(null,mike(),5000)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(Milton(),seq)
CLEAR_SEQUENCE_TASK(seq)
OPEN_SEQUENCE_TASK(seq)
TASK_LEAVE_ANY_VEHICLE(null,1500)//50 BUG FIX 1399455
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1077.96936, -470.29300, 35.62410>>,PEDMOVE_WALK)
TASK_TURN_PED_TO_FACE_ENTITY(null,mike(),6000)
CLOSE_SEQUENCE_TASK(seq)
TASK_PERFORM_SEQUENCE(anton(),seq)
CLEAR_SEQUENCE_TASK(seq)
REPLAY_RECORD_BACK_FOR_TIME(10.0, 5.0, REPLAY_IMPORTANCE_HIGHEST)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehs[mvf_heli].id,false)
SET_PLAYER_CONTROL(player_id(),true)
KILL_FACE_TO_FACE_CONVERSATION()
iDialogue_Stage = 6
mission_substage++
else
BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(GET_VEHICLE_PED_IS_IN(mike()))
endif
break
case 4 //audio using this stage number
if not b_cutscene_loaded
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(mike(),<<-1034.74194, -497.20056, 35.37177>>) < DEFAULT_CUTSCENE_LOAD_DIST
REQUEST_CUTSCENE("SOL_1_EXT")
request_Model(IG_SOLOMON)
set_peds_CS_OUTFITS()
b_cutscene_loaded = true
bSolomonCreated = false
DELETE_VEHICLE_GEN_VEHICLES_IN_AREA(<<-1028.38049, -486.24539, 37.13475>>,20)
CLEAR_AREA_OF_VEHICLES(<<-1028.38049, -486.24539, 37.13475>>,20)
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-1037.91162, -495.88333, 30>>,<<-1016.92767, -471.04614, 39>>,false)
endif
else
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(mike(),<<-1034.74194, -497.20056, 35.37177>>) > DEFAULT_CUTSCENE_UNLOAD_DIST
REMOVE_CUTSCENE()
SET_MODEL_AS_NO_LONGER_NEEDED(IG_SOLOMON)
b_cutscene_loaded = false
if bSolomonCreated
SAFE_DELETE_PED(peds[mpf_sol].id)
endif
elif GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(mike(),<<-1034.74194, -497.20056, 35.37177>>) < DEFAULT_CUTSCENE_LOAD_DIST
if not bSolomonCreated
and HAS_MODEL_LOADED(IG_SOLOMON)
peds[mpf_sol].id = CREATE_PED(PEDTYPE_MISSION,IG_SOLOMON,<<-1011.29340, -480.40060, 38.97574>>,118.24)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sol(),true)
SET_PED_COMPONENT_VARIATION(sol(),PED_COMP_TORSO,0,0)
SET_PED_COMPONENT_VARIATION(sol(),PED_COMP_LEG,0,0)
SET_PED_COMPONENT_VARIATION(sol(),PED_COMP_SPECIAL,0,0)
SET_ENTITY_HEALTH(sol(),110)
SET_PED_RELATIONSHIP_GROUP_HASH(sol(),rel_friends)
bSolomonCreated = true
DELETE_VEHICLE_GEN_VEHICLES_IN_AREA(<<-1028.38049, -486.24539, 37.13475>>,20)
CLEAR_AREA_OF_VEHICLES(<<-1028.38049, -486.24539, 37.13475>>,20)
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-1037.91162, -495.88333, 30>>,<<-1016.92767, -471.04614, 39>>,false)
endif
endif
endif
if IS_PLAYER_AT_LOCATION_WITH_BUDDIES_ANY_MEANS(sLocatesData,<<-1022.89069, -490.86011, 35.97233>>,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,false,
null,peds[mpf_milton].id,peds[mpf_Anton].id,"SOL1_TLKSOL","","SOl1_RTNMILT","SOl1_RTNANT","",false,true)
or IS_ENTITY_IN_ANGLED_AREA(mike(),<<-1055.51233, -505.69760, 34>>,<<-1009.98639, -483.01324, 45.93766>>,26)
if GET_PLAYER_WANTED_LEVEL(player_id()) > 0
CLEAR_PLAYER_WANTED_LEVEL(player_id())
endif
if IS_PED_IN_ANY_VEHICLE(mike())
if IS_VEHICLE_ALMOST_STOPPED(GET_VEHICLE_PED_IS_IN(mike()))
and not IS_ENTITY_IN_AIR(GET_VEHICLE_PED_IS_IN(mike()))
TASK_FOLLOW_NAV_MESH_TO_COORD(sol(),<<-1015.59894, -482.73679, 36.34386>>,PEDMOVE_WALK)
KILL_FACE_TO_FACE_CONVERSATION()
mission_substage = 5
else
BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(GET_VEHICLE_PED_IS_IN(mike()))
endif
else
TASK_FOLLOW_NAV_MESH_TO_COORD(sol(),<<-1015.59894, -482.73679, 36.34386>>,PEDMOVE_WALK)
KILL_FACE_TO_FACE_CONVERSATION()
mission_substage = 5
endif
endif
break
case 5
//-------------- PUSH IN --------------
FLOAT fT2HintCamFollow
FLOAT fT2HintCamOffset
FLOAT fT2HintCamFove
fT2HintCamFollow = 0.35
fT2HintCamOffset = -0.78
fT2HintCamFove = 30.00
SET_GAMEPLAY_ENTITY_HINT(SOL(),<<0,0,0>>,true,-1,3000)
SET_GAMEPLAY_HINT_FOLLOW_DISTANCE_SCALAR(fT2HintCamFollow)
SET_GAMEPLAY_HINT_CAMERA_RELATIVE_SIDE_OFFSET(fT2HintCamOffset)
SET_GAMEPLAY_HINT_FOV(fT2HintCamFove)
SET_GAMEPLAY_HINT_CAMERA_BLEND_TO_FOLLOW_PED_MEDIUM_VIEW_MODE(TRUE)
//---------------------------------------------
IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE()
and IS_ENTITY_IN_ANGLED_AREA(sol(),<<-1017.31689, -483.44772, 35>>,<<-1014.30426, -481.67487, 39>>,30)
if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
endif
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
REGISTER_ENTITY_FOR_CUTSCENE(sol(),"Soloman",CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY)
STOP_AUDIO_SCENES()
HANG_UP_AND_PUT_AWAY_PHONE()
START_CUTSCENE()
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
iDialogue_Stage = 16 // make sure no conversations are started during the cutscene
mission_substage++
endif
break
case 6
if IS_CUTSCENE_PLAYING()
STOP_GAMEPLAY_HINT()
REMOVE_PED_HELMET(mike(),true)
SET_PED_COMP_ITEM_CURRENT_SP(mike(),COMP_TYPE_PROPS,PROPS_HEAD_NONE)
if isentityalive(Milton())
safe_delete_ped(peds[mpf_milton].id)
endif
if isentityalive(Anton())
safe_delete_ped(peds[mpf_Anton].id)
endif
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehs[mvf_heli].id,true)
mission_substage++
endif
break
case 7
if IS_CUTSCENE_PLAYING()
and GET_CUTSCENE_TIME() > 63300
SET_FORCE_FOOTSTEP_UPDATE(mike(),true)
endif
if CAN_SET_EXIT_STATE_FOR_CAMERA()
bcs_cam = true
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael")
bcs_mike = true
endif
if bcs_cam
and bcs_mike
REPLAY_STOP_EVENT()
SET_FORCE_FOOTSTEP_UPDATE(mike(),false)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
MISSION_PASSED()
endif
break
endswitch
clear_players_task_on_control_input(SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD)
if not bSearchlights
if isentityalive(mike())
and isentityalive(vehs[mvf_heli].id)
if IS_PED_IN_VEHICLE(mike(),vehs[mvf_heli].id,true)
and IS_VEHICLE_SEARCHLIGHT_ON(vehs[mvf_heli].id)
SET_VEHICLE_SEARCHLIGHT(vehs[mvf_heli].id,false,false)
bsearchlights = true
endif
endif
endif
if isentityalive(milton())
and not IS_PED_HEADTRACKING_PED(milton(),mike())
TASK_LOOK_AT_ENTITY(milton(),mike(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT,SLF_LOOKAT_VERY_HIGH)
endif
if isentityalive(Anton())
and not IS_PED_HEADTRACKING_PED(Anton(),mike())
TASK_LOOK_AT_ENTITY(anton(),mike(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_YAW_LIMIT | SLF_WIDEST_PITCH_LIMIT,SLF_LOOKAT_VERY_HIGH)
endif
endproc
PROC ST_4_PASSED()
switch mission_substage
case STAGE_ENTRY
if IS_CUTSCENE_ACTIVE()
if HAS_CUTSCENE_LOADED()
START_CUTSCENE()
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
mission_substage++
endif
else
REQUEST_CUTSCENE("SOL_1_EXT")
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_TORSO,1,0,CS_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_LEG,1,0,CS_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_feet,1,0,CS_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_JBIB,1,0,CS_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_TORSO,1,0,IG_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_LEG,1,0,IG_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_feet,1,0,IG_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Milton",PED_COMP_JBIB,1,0,IG_MILTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Anton",PED_COMP_TORSO,0,0,CSB_ANTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Anton",PED_COMP_LEG,0,0,CSB_ANTON)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Anton",PED_COMP_TORSO,0,0,U_M_Y_ANTONB)
Register_Ped_Variation_For_Cutscene(sCutscenePedVariationRegister,"Anton",PED_COMP_LEG,0,0,U_M_Y_ANTONB)
endif
break
case 1
if IS_CUTSCENE_PLAYING()
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
endif
mission_substage++
endif
break
case 2
if IS_CUTSCENE_PLAYING()
and GET_CUTSCENE_TIME() > 63300
SET_FORCE_FOOTSTEP_UPDATE(mike(),true)
endif
if CAN_SET_EXIT_STATE_FOR_CAMERA()
bcs_cam = true
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael")
REPLAY_STOP_EVENT()
bcs_mike = true
else
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
endif
if bcs_cam
and bcs_mike
SET_FORCE_FOOTSTEP_UPDATE(mike(),false)
MISSION_PASSED()
endif
break
endswitch
ENDPROC
// -----------------------------------------------------------------------------------------------------------
// MISSION FLOW
// -----------------------------------------------------------------------------------------------------------
PROC mission_flow()
Switch int_to_enum(MSF_MISSION_STAGE_FLAGS, mission_stage)
case msf_0_get_to_warehouse ST_0_GET_TO_WAREHOUSE() break
case msf_1_Stealth_to_roof ST_1_STEALTH_TO_ROOF() break
case msf_2_fight_rocco ST_2_FIGHT_ROCCO() break
case msf_3_get_to_sol ST_3_GET_TO_SOL() break
case msf_4_passed ST_4_PASSED() Break
endswitch
ENDPROC
#IF IS_DEBUG_BUILD
PROC DO_DEBUG()
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S)
MISSION_PASSED()
ELIF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F)
MISSION_FAILED(mff_debug_fail)
ENDIF
ENDPROC
#endif
// ===========================================================================================================
// Script Loop
// ===========================================================================================================
SCRIPT
PRINTSTRING("...solomon 1 Launched")
PRINTNL()
IF (HAS_FORCE_CLEANUP_OCCURRED())
TRIGGER_MUSIC_EVENT("SOL1_FAIL")
PRINTSTRING("...solomon 1 Force Cleanup")
PRINTNL()
Mission_Flow_Mission_Force_Cleanup()
if IS_CUTSCENE_ACTIVE()
SET_CUTSCENE_FADE_VALUES()
endif
Mission_Cleanup()
ENDIF
SET_MISSION_FLAG(TRUE)
#if IS_DEBUG_BUILD
//z menu for skipping stages
zMenuNames[msf_0_get_to_warehouse].sTxtLabel = "Stage 0: Get to Warehouse"
zMenuNames[msf_1_Stealth_to_roof].sTxtLabel = "Stage 1: stealth to roof"
zMenuNames[msf_2_fight_rocco].sTxtLabel = "Stage 2: fight rocco"
zMenuNames[msf_3_get_to_sol].sTxtLabel = "Stage 3: Get to sol"
zMenuNames[msf_4_passed].sTxtLabel = "---------- PASSED ----------"
widget_debug = START_WIDGET_GROUP("Sol 1 debug")
ADD_WIDGET_INT_READ_ONLY("stealth stage: ",wAI_stage)
ADD_WIDGET_INT_READ_ONLY("maf sit car: ",mafia[maf_car].sDebug)
ADD_WIDGET_INT_READ_ONLY("maf sit car talk: ",mafia[maf_car_talking].sDebug)
ADD_WIDGET_INT_READ_ONLY("maf sit work wlk: ",mafia[maf_worker_walkway].sDebug)
ADD_WIDGET_INT_READ_ONLY("maf sit wlk: ",mafia[maf_walkway_door].sDebug)
ADD_WIDGET_INT_READ_ONLY("maf sit worker top: ",mafia[maf_worker_top].sDebug)
ADD_WIDGET_INT_READ_ONLY("maf sit wrk alone: ",mafia[maf_worker_alone].sDebug)
ADD_WIDGET_INT_READ_ONLY("maf sit vent: ",mafia[maf_worker_vent].sDebug)
ADD_WIDGET_INT_READ_ONLY("maf sit mid door: ",mafia[maf_worker_door].sDebug)
ADD_WIDGET_INT_READ_ONLY("Gianni: ",mafia[mpf_Gianni].sDebug)
ADD_WIDGET_FLOAT_READ_ONLY("Player noise: ",debug_noise)
STOP_WIDGET_GROUP()
SET_LOCATES_HEADER_WIDGET_GROUP(widget_debug)
#endif
//initialize mission
MISSION_SETUP()
WHILE (TRUE)
//prestreaming loop
Update_Asset_Management_System(sAssetData) // Deals with loading any assets and keeps track of what has been loaded
Update_Cutscene_Prestreaming(sCutscenePedVariationRegister)
Mission_stage_management()
MISSION_STAGE_SKIP()
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_MrRichards")
if not bDoSkip
MISSION_CHECKS()
mission_flow()
endif
#IF IS_DEBUG_BUILD
DO_DEBUG()
#ENDIF
WAIT(0)
ENDWHILE
ENDSCRIPT