320 lines
7.5 KiB
Scheme
Executable File
320 lines
7.5 KiB
Scheme
Executable File
FUNC BOOL IS_VEHICLE_SUITABLE_FOR_VEHICLE_SEAT_TURRET(VEHICLE_INDEX veh) // Allows vehicle to launch turret func if player is in specified vehicle
|
|
IF NOT DOES_ENTITY_EXIST(veh)
|
|
CDEBUG1LN(DEBUG_NET_GUN_TURRET, "IS_VEHICLE_SUITABLE_FOR_VEHICLE_SEAT_TURRET: viHeli doesn't exist")
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
MODEL_NAMES heliModel = GET_ENTITY_MODEL(veh)
|
|
SWITCH heliModel
|
|
CASE BOMBUSHKA
|
|
CASE VOLATOL
|
|
CASE AKULA
|
|
RETURN TRUE
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_MODEL_VALID_HELI_GUN_MODEL(VEHICLE_INDEX veh, BOOL &bInValkyrie)
|
|
|
|
|
|
SWITCH GET_ENTITY_MODEL(veh)
|
|
|
|
CASE BUZZARD
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
CASE BUZZARD2
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
CASE POLMAV
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
CASE FROGGER
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
CASE MAVERICK
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
CASE ANNIHILATOR
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
CASE VALKYRIE
|
|
bInValkyrie = TRUE
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
CASE SAVAGE
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
CASE HUNTER
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
CASE BOMBUSHKA
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
CASE VOLATOL
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
CASE AKULA
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
// #IF IS_DEBUG_BUILD
|
|
// CASE TITAN
|
|
// RETURN TRUE
|
|
// BREAK
|
|
// #ENDIF
|
|
ENDSWITCH
|
|
|
|
RETURN IS_VEHICLE_SUITABLE_FOR_VEHICLE_SEAT_TURRET(veh)
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
|
|
|
|
ENUM TURRET_FIRE_SOUND_KEY
|
|
TFSK_INVALID,
|
|
TFSK_HUM,
|
|
TFSK_FIRE,
|
|
TFSK_MACHINEGUN
|
|
ENDENUM
|
|
|
|
|
|
ENUM TURRET_FIRE_SOUND_SET
|
|
TFSS_INVALID,
|
|
TFSS_MOC,
|
|
TFSS_AOC,
|
|
TFSS_IAA,
|
|
TFSS_ROCKETS
|
|
ENDENUM
|
|
|
|
|
|
FUNC STRING GET_TURRET_FIRE_SOUNDS_ELEMENT(TURRET_FIRE_SOUND_SET eSet, TURRET_FIRE_SOUND_KEY eKey)
|
|
SWITCH eKey
|
|
CASE TFSK_HUM
|
|
IF IS_THIS_ROCKSTAR_MISSION_GANGOPS_MISSION_OF_TYPE(ciGANGOPS_FLOW_MISSION_IAABASE_FINALE)
|
|
RETURN "Background_Loop"
|
|
ENDIF
|
|
RETURN "Turret_Camera_Hum_Loop"
|
|
BREAK
|
|
CASE TFSK_FIRE
|
|
SWITCH eSet
|
|
CASE TFSS_ROCKETS RETURN "SPL_ROCKET_HELI_NPC_master"
|
|
|
|
ENDSWITCH
|
|
|
|
IF IS_THIS_ROCKSTAR_MISSION_GANGOPS_MISSION_OF_TYPE(ciGANGOPS_FLOW_MISSION_IAABASE_FINALE)
|
|
RETURN "Fire_Missile_Oneshot"
|
|
ENDIF
|
|
RETURN "Fire"
|
|
BREAK
|
|
CASE TFSK_MACHINEGUN
|
|
IF IS_THIS_ROCKSTAR_MISSION_GANGOPS_MISSION_OF_TYPE(ciGANGOPS_FLOW_MISSION_IAABASE_FINALE)
|
|
RETURN "Fire_MG_Loop"
|
|
ENDIF
|
|
RETURN "Fire"
|
|
BREAK
|
|
ENDSWITCH
|
|
RETURN "INVALID_TURRET_FIRE_KEY"
|
|
ENDFUNC
|
|
|
|
FUNC INT GET_FIRE_RANGE_FOR_SOUND(TURRET_FIRE_SOUND_SET eSet, TURRET_FIRE_SOUND_KEY eKey)
|
|
unused_parameter(eKey)
|
|
SWITCH eSet
|
|
CASE TFSS_ROCKETS RETURN 250
|
|
|
|
ENDSWITCH
|
|
RETURN 120
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_TURRET_FIRE_SOUNDS_NAME(TURRET_FIRE_SOUND_SET eSounds)
|
|
SWITCH eSounds
|
|
CASE TFSS_MOC RETURN "DLC_GR_MOC_Turret_Sounds"
|
|
CASE TFSS_AOC RETURN "dlc_xm_avngr_turret_Sounds"
|
|
CASE TFSS_IAA RETURN "DLC_XM17_IAA_Finale_Remote_Turrets_Sounds"
|
|
CASE TFSS_ROCKETS RETURN "" //No set for these sounds
|
|
ENDSWITCH
|
|
RETURN "INVALID_TURRET_FIRE_SOUNDS"
|
|
ENDFUNC
|
|
|
|
ENUM INTERIOR_TURRET_AUDIO_SCENE
|
|
ITAS_INVALID,
|
|
ITAS_MOC_CAM_VIEW,
|
|
ITAS_MOC_SEAT_FP,
|
|
ITAS_AOC_CAM_VIEW,
|
|
ITAS_AOC_SEAT_FP,
|
|
ITAS_IAA_CAM_VIEW
|
|
ENDENUM
|
|
|
|
FUNC STRING GET_INTERIOR_TURRET_AUDIO_SCENE_NAME(INTERIOR_TURRET_AUDIO_SCENE eScene)
|
|
SWITCH eScene
|
|
CASE ITAS_MOC_CAM_VIEW RETURN "DLC_GR_MOC_Turret_View_Scene"
|
|
CASE ITAS_MOC_SEAT_FP RETURN "MCU_FirstPerson_Seated_Scene"
|
|
CASE ITAS_AOC_CAM_VIEW RETURN "dlc_xm_avenger_turret_scene"
|
|
CASE ITAS_AOC_SEAT_FP RETURN "dlc_xm_avenger_first_person_seated_scene"
|
|
CASE ITAS_IAA_CAM_VIEW RETURN "dlc_xm17_IAA_Turret_Scene"
|
|
|
|
ENDSWITCH
|
|
RETURN "INVALID_INTERIOR_AUDIO_SCENE"
|
|
ENDFUNC
|
|
|
|
FUNC BOOL DOES_INTERIOR_USE_TURRETS()
|
|
|
|
IF IS_PLAYER_IN_ARMORY_AIRCRAFT(PLAYER_ID())
|
|
OR IS_PLAYER_IN_ARMORY_TRUCK(PLAYER_ID())
|
|
OR IS_PLAYER_IN_CREATOR_AIRCRAFT(PLAYER_ID())
|
|
OR IS_PLAYER_IN_DEFUNCT_BASE(PLAYER_ID())
|
|
OR IS_THIS_ROCKSTAR_MISSION_GANGOPS_MISSION_OF_TYPE(ciGANGOPS_FLOW_MISSION_IAABASE_FINALE)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL DOES_INTERIOR_USE_FLYING_CAM_TURRETS() // Flying turrets are the turrets that can gimple/stay steady as the plane rotates
|
|
|
|
IF IS_PLAYER_IN_ARMORY_AIRCRAFT(PLAYER_ID())
|
|
OR IS_PLAYER_IN_CREATOR_AIRCRAFT(PLAYER_ID())
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL DOES_INTERIOR_USE_SCRIPTED_WEAPONS()
|
|
IF IS_PLAYER_IN_ARMORY_TRUCK(PLAYER_ID())
|
|
OR IS_PLAYER_IN_CREATOR_TRAILER(PLAYER_ID())
|
|
IF g_iShouldLaunchTruckTurret != -1
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
IF IS_PLAYER_IN_ARMORY_AIRCRAFT(PLAYER_ID())
|
|
OR IS_PLAYER_IN_CREATOR_AIRCRAFT(PLAYER_ID())
|
|
OR IS_PLAYER_IN_DEFUNCT_BASE(PLAYER_ID())
|
|
OR IS_THIS_ROCKSTAR_MISSION_GANGOPS_MISSION_OF_TYPE(ciGANGOPS_FLOW_MISSION_IAABASE_FINALE)
|
|
IF g_iInteriorTurretSeat != -1
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL DOES_VEHICLE_USE_VEHICLE_WEAPONS_CODE(VEHICLE_INDEX veh)
|
|
IF GET_ENTITY_MODEL(veh)= INT_TO_ENUM(MODEL_NAMES, HASH("AKULA"))
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
SWITCH GET_ENTITY_MODEL(GET_VEHICLE_INDEX_FROM_ENTITY_INDEX(veh))
|
|
CASE VALKYRIE
|
|
CASE BOMBUSHKA
|
|
CASE VOLATOL
|
|
CASE HUNTER
|
|
CASE SAVAGE
|
|
RETURN TRUE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL HELI_MODEL_CAN_SHOOT_ROCKETS_FROM_HELI_CAM(VEHICLE_INDEX veh)
|
|
MODEL_NAMES eHeliModel
|
|
eHeliModel = GET_ENTITY_MODEL(GET_VEHICLE_INDEX_FROM_ENTITY_INDEX(veh))
|
|
|
|
IF GET_ENTITY_MODEL(veh)= INT_TO_ENUM(MODEL_NAMES, HASH("AKULA"))
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF g_B_Disable_HELI_CAM_Shooting_This_Frame
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
IF (eHeliModel = BUZZARD)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF (eHeliModel = SAVAGE)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF g_iShouldLaunchTruckTurret != -1
|
|
AND IS_BIT_SET(g_FMMC_STRUCT.iOptionsMenuBitSetFifteen, ciALLOW_MOC_ENTRY_THIS_MISSION)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF g_iShouldLaunchTruckTurret != -1
|
|
AND NOT IS_OWNERS_ARMORY_TRUCK_INSIDE_BUNKER(g_ownerOfArmoryTruckPropertyIAmIn)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF IS_VEHICLE_SUITABLE_FOR_VEHICLE_SEAT_TURRET(veh)
|
|
RETURN TRUE
|
|
ENDIF
|
|
// IF (eHeliModel = VALKYRIE)
|
|
// RETURN TRUE
|
|
// ENDIF
|
|
|
|
IF g_iInteriorTurretSeat != -1
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL VEH_MODEL_CAN_SCRIPT_SHOOT_FROM_VEH_CAM(VEHICLE_INDEX veh)
|
|
// IF HELI_MODEL_CAN_SHOOT_ROCKETS_FROM_HELI_CAM(veh) // Can we shoot from this vehicle
|
|
// RETURN TRUE
|
|
// ENDIF
|
|
|
|
SWITCH GET_ENTITY_MODEL(veh)
|
|
CASE TRAILERLARGE
|
|
CASE BUZZARD
|
|
CASE SAVAGE
|
|
RETURN TRUE
|
|
BREAK
|
|
ENDSWITCH
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL DOES_VEHICLE_USE_SCRIPTED_WEAPONS(VEHICLE_INDEX veh, INT iVehSeat)
|
|
// IF VEH_MODEL_CAN_SCRIPT_SHOOT_FROM_VEH_CAM(veh)
|
|
// RETURN TRUE
|
|
// ENDIF
|
|
|
|
CDEBUG1LN(DEBUG_NET_GUN_TURRET, "DOES_VEHICLE_USE_SCRIPTED_WEAPONS: veh = ", GET_MODEL_NAME_FOR_DEBUG(GET_ENTITY_MODEL(veh)) )
|
|
SWITCH GET_ENTITY_MODEL(veh)
|
|
CASE BUZZARD
|
|
CDEBUG1LN(DEBUG_NET_GUN_TURRET, "DOES_VEHICLE_USE_SCRIPTED_WEAPONS: buzzard, returning true")
|
|
RETURN TRUE
|
|
BREAK
|
|
CASE SAVAGE
|
|
CDEBUG1LN(DEBUG_NET_GUN_TURRET, "DOES_VEHICLE_USE_SCRIPTED_WEAPONS: Savage, returning true")
|
|
RETURN TRUE
|
|
BREAK
|
|
ENDSWITCH
|
|
IF iVehSeat != -1
|
|
IF IS_VEHICLE_SUITABLE_FOR_VEHICLE_SEAT_TURRET(veh)
|
|
// SWITCH GET_ENTITY_MODEL(veh)// no vehicles have been designed to use non vehicle weapons
|
|
//
|
|
// ENDSWITCH
|
|
ELSE
|
|
CDEBUG1LN(DEBUG_NET_GUN_TURRET, "DOES_VEHICLE_USE_SCRIPTED_WEAPONS: IS_VEHICLE_SUITABLE_FOR_VEHICLE_SEAT_TURRET = FALSE, returning false")
|
|
ENDIF
|
|
ELSE
|
|
CDEBUG1LN(DEBUG_NET_GUN_TURRET, "DOES_VEHICLE_USE_SCRIPTED_WEAPONS: iVehSeat = -1, invalid seat")
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|