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