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

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