Files
gtav-src/script/dev_ng/singleplayer/include/private/vehicle_gen_private.sch
T
2025-09-29 00:52:08 +02:00

1820 lines
70 KiB
Scheme
Executable File

//////////////////////////////////////////////////////////////////////////////////////////
// //
// SCRIPT NAME : vehicle_gen_private.sch //
// AUTHOR : Kenneth Ross //
// DESCRIPTION : Header file that contains all the data for each vehicle //
// that can be generated via script. //
// //
//////////////////////////////////////////////////////////////////////////////////////////
USING "rage_builtins.sch"
USING "globals.sch"
USING "player_ped_public.sch"
/// PURPOSE: Returns TRUE if the specified flag is set
FUNC BOOL GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHICLE_GEN_NAME_ENUM eName, VEHICLE_GEN_SAVED_FLAG_ENUM eFlag)
IF eName = VEHGEN_NONE
RETURN FALSE
ENDIF
#if USE_CLF_DLC
RETURN IS_BIT_SET(g_savedGlobalsClifford.sVehicleGenData.iProperties[eName], ENUM_TO_INT(eFlag))
#endif
#if USE_NRM_DLC
RETURN IS_BIT_SET(g_savedGlobalsnorman.sVehicleGenData.iProperties[eName], ENUM_TO_INT(eFlag))
#endif
#if not USE_CLF_DLC
#if not USE_NRM_DLC
RETURN IS_BIT_SET(g_savedGlobals.sVehicleGenData.iProperties[eName], ENUM_TO_INT(eFlag))
#endif
#endif
ENDFUNC
/// PURPOSE: Sets the state for the specified flag
PROC SET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHICLE_GEN_NAME_ENUM eName, VEHICLE_GEN_SAVED_FLAG_ENUM eFlag, BOOL bState)
IF eName = VEHGEN_NONE
EXIT
ENDIF
#if USE_CLF_DLC
IF bState
SET_BIT(g_savedGlobalsClifford.sVehicleGenData.iProperties[eName], ENUM_TO_INT(eFlag))
ELSE
CLEAR_BIT(g_savedGlobalsClifford.sVehicleGenData.iProperties[eName], ENUM_TO_INT(eFlag))
ENDIF
#endif
#if USE_NRM_DLC
IF bState
SET_BIT(g_savedGlobalsnorman.sVehicleGenData.iProperties[eName], ENUM_TO_INT(eFlag))
ELSE
CLEAR_BIT(g_savedGlobalsnorman.sVehicleGenData.iProperties[eName], ENUM_TO_INT(eFlag))
ENDIF
#endif
#if not USE_CLF_DLC
#if not USE_NRM_DLC
IF bState
SET_BIT(g_savedGlobals.sVehicleGenData.iProperties[eName], ENUM_TO_INT(eFlag))
ELSE
CLEAR_BIT(g_savedGlobals.sVehicleGenData.iProperties[eName], ENUM_TO_INT(eFlag))
ENDIF
#endif
#endif
ENDPROC
/// PURPOSE: Fills the struct with all the vehicle gen data
FUNC BOOL GET_VEHICLE_GEN_DATA(VEHICLE_GEN_DATA_STRUCT &sData, VEHICLE_GEN_NAME_ENUM eName)
BOOL bDataFound
INT iOffset
sData.coords = <<0,0,0>>
sData.heading = 0.0
sData.model = DUMMY_MODEL_FOR_SCRIPT
sData.help = ""
sData.flags = 0
sData.colour1 = 0
sData.colour2 = 0
sData.ped = NO_CHARACTER
sData.blip = RADAR_TRACE_INVALID
sData.dynamicSlotIndex = 0
sData.scenario_block_minXYZ = <<0,0,0>>
sData.scenario_block_maxXYZ = <<0,0,0>>
#IF IS_DEBUG_BUILD
sData.dbg_name = ""
#ENDIF
// Note: Use the VEHICLE_GEN_NON_SAVED_FLAG_ENUM enums when setting the
// bits in the sData.flags
SWITCH eName
CASE VEHGEN_MICHAEL_SAVEHOUSE
sData.coords = << -831.8538, 172.1154, 69.9058 >>
sData.heading = 157.5705
sData.model = GET_PLAYER_VEH_MODEL(CHAR_MICHAEL, VEHICLE_TYPE_CAR)
sData.ped = CHAR_MICHAEL
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PLAYER_VEH_CAR))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_MICHAEL_SAVEHOUSE"
#ENDIF
BREAK
CASE VEHGEN_MICHAEL_SAVEHOUSE_COUNTRY
sData.coords = <<1970.9434, 3801.6838, 31.1396>>
sData.heading = 301.3964
sData.model = GET_PLAYER_VEH_MODEL(CHAR_MICHAEL, VEHICLE_TYPE_CAR)
sData.ped = CHAR_MICHAEL
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PLAYER_VEH_CAR))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_MICHAEL_SAVEHOUSE_COUNTRY"
#ENDIF
BREAK
CASE VEHGEN_FRANKLIN_SAVEHOUSE_CAR
sData.coords = <<-22.6297, -1439.1368, 29.6549>>
sData.heading = 180.0808
sData.model = GET_PLAYER_VEH_MODEL(CHAR_FRANKLIN, VEHICLE_TYPE_CAR)
sData.ped = CHAR_FRANKLIN
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PLAYER_VEH_CAR))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_FRANKLIN_SAVEHOUSE_CAR"
#ENDIF
BREAK
CASE VEHGEN_FRANKLIN_SAVEHOUSE_BIKE
sData.coords = <<-22.5229, -1434.6986, 29.6552>>
sData.heading = 141.6114
sData.model = GET_PLAYER_VEH_MODEL(CHAR_FRANKLIN, VEHICLE_TYPE_BIKE)
sData.ped = CHAR_FRANKLIN
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PLAYER_VEH_BIKE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_FRANKLIN_SAVEHOUSE_BIKE"
#ENDIF
BREAK
CASE VEHGEN_FRANKLIN_SAVEHOUSE_HILLS_CAR
sData.coords = <<10.9281, 545.6690, 174.7951>>
sData.heading = 61.3920
sData.model = GET_PLAYER_VEH_MODEL(CHAR_FRANKLIN, VEHICLE_TYPE_CAR)
sData.ped = CHAR_FRANKLIN
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PLAYER_VEH_CAR))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_F_SAVEHOUSE_HILLS_CAR"
#ENDIF
BREAK
CASE VEHGEN_FRANKLIN_SAVEHOUSE_HILLS_BIKE
sData.coords = <<6.1093, 544.9742, 174.2835>>
sData.heading = 92.1548
sData.model = GET_PLAYER_VEH_MODEL(CHAR_FRANKLIN, VEHICLE_TYPE_BIKE)
sData.ped = CHAR_FRANKLIN
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PLAYER_VEH_BIKE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_F_SAVEHOUSE_HILLS_BIKE"
#ENDIF
BREAK
CASE VEHGEN_TREVOR_SAVEHOUSE_COUNTRY
sData.coords = << 1981.4163, 3808.1313, 31.1384 >>
sData.heading = 117.2557
sData.model = GET_PLAYER_VEH_MODEL(CHAR_TREVOR, VEHICLE_TYPE_CAR)
sData.ped = CHAR_TREVOR
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PLAYER_VEH_CAR))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_TREVOR_SAVEHOUSE_COUNTRY"
#ENDIF
BREAK
CASE VEHGEN_TREVOR_SAVEHOUSE_CITY
sData.coords = << -1158.4875, -1529.3673, 3.8995 >>
sData.heading = 35.7505
sData.model = GET_PLAYER_VEH_MODEL(CHAR_TREVOR, VEHICLE_TYPE_CAR)
sData.ped = CHAR_TREVOR
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PLAYER_VEH_CAR))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_TREVOR_SAVEHOUSE_CITY"
#ENDIF
BREAK
CASE VEHGEN_TREVOR_SAVEHOUSE_STRIPCLUB
sData.coords = <<148.2868, -1270.5695, 28.2252>>
sData.heading = 208.4685
sData.model = GET_PLAYER_VEH_MODEL(CHAR_TREVOR, VEHICLE_TYPE_CAR)
sData.ped = CHAR_TREVOR
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PLAYER_VEH_CAR))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_TREVOR_SAVEHOUSE_STRIPCLUB"
#ENDIF
BREAK
CASE VEHGEN_MOUNTAIN_BIKE_CH
sData.coords = << 1459.5085, -1380.4500, 78.3259 >>
sData.heading = 99.6211
sData.model = SCORCHER
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_NEARBY_MODEL_CHECK))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_MOUNTAIN_BIKE_CH"
#ENDIF
BREAK
CASE VEHGEN_SEASHARK_SM
sData.coords = << -1518.9470, -1387.8655, -0.5134 >>
sData.heading = 98.3867
sData.model = SEASHARK
bDataFound = TRUE
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_NEARBY_MODEL_CHECK))
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_SEASHARK_SM"
#ENDIF
BREAK
CASE VEHGEN_DUSTER
sData.coords = << 353.0926, 3577.5925, 32.3510 >>
sData.heading = 16.6205
sData.model = DUSTER
bDataFound = TRUE
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_NEARBY_MODEL_CHECK))
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_DUSTER"
#ENDIF
BREAK
/*
CASE VEHGEN_IMPOUND_TOW_TRUCK
sData.coords = << 419.1216, -1630.1923, 29.2580 >>
sData.heading = 140.37
sData.model = TOWTRUCK
sData.ped = CHAR_FRANKLIN
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_IMPOUND_TOW_TRUCK"
#ENDIF
BREAK
*/
////////////////////////////////////////////////////////////////////////////////
/// HANGARS
///
CASE VEHGEN_WEB_HANGAR_MICHAEL
sData.dynamicSlotIndex = 0
#IF USE_TU_CHANGES
sData.coords = <<-1652.0043, -3142.3484, 12.9921>>
sData.heading = 329.1082
#ENDIF
#IF NOT USE_TU_CHANGES
sData.coords = <<-1636.7456, -3152.9697, 12.9928>>
sData.heading = 329.5191
#ENDIF
//sData.help = "Hangar_Mike"
sData.ped = CHAR_MICHAEL
sData.blip = RADAR_TRACE_HANGAR
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_MISSION))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PURCHASABLE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_DATA))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_IGNORE_HANDOVER_MODEL_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_WANTED))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_WEB_HANGAR_MICHAEL"
#ENDIF
BREAK
CASE VEHGEN_WEB_HANGAR_FRANKLIN
sData.dynamicSlotIndex = 1
#IF USE_TU_CHANGES
sData.coords = <<-1271.6487, -3380.6853, 12.9451>>
sData.heading = 329.5137
#ENDIF
#IF NOT USE_TU_CHANGES
sData.coords = <<-1255.2875, -3395.9893, 12.9453>>
#ENDIF
//sData.help = "Hangar_Frank"
sData.ped = CHAR_FRANKLIN
sData.blip = RADAR_TRACE_HANGAR
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_MISSION))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PURCHASABLE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_DATA))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_IGNORE_HANDOVER_MODEL_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_WANTED))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_WEB_HANGAR_FRANKLIN"
#ENDIF
BREAK
CASE VEHGEN_WEB_HANGAR_TREVOR
sData.dynamicSlotIndex = 2
sData.coords = <<1735.5863, 3294.5305, 40.1651>>
sData.heading = 194.9525
//sData.help = "Hangar_Trevor"
sData.ped = CHAR_TREVOR
sData.blip = RADAR_TRACE_HANGAR
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_MISSION))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PURCHASABLE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_DATA))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_IGNORE_HANDOVER_MODEL_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_WANTED))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_WEB_HANGAR_TREVOR"
#ENDIF
BREAK
////////////////////////////////////////////////////////////////////////////////
/// MARINAS
///
CASE VEHGEN_WEB_MARINA_MICHAEL
sData.dynamicSlotIndex = 3
sData.coords = <<-846.27, -1363.19, 0.22>>
sData.heading = 108.78
//sData.help = "Marina_01_VB"
sData.ped = CHAR_MICHAEL
sData.blip = RADAR_TRACE_DOCK
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_MISSION))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PURCHASABLE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_DATA))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_IGNORE_HANDOVER_MODEL_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ANCHOR_WHEN_CREATED))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_WANTED))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_WEB_MARINA_MICHAEL"
#ENDIF
BREAK
CASE VEHGEN_WEB_MARINA_FRANKLIN
sData.dynamicSlotIndex = 4
sData.coords = <<-849.47, -1354.99, 0.24>>
sData.heading = 109.84
//sData.help = "Marina_02_VB"
sData.ped = CHAR_FRANKLIN
sData.blip = RADAR_TRACE_DOCK
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_MISSION))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PURCHASABLE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_DATA))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_IGNORE_HANDOVER_MODEL_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ANCHOR_WHEN_CREATED))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_WANTED))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_WEB_MARINA_FRANKLIN"
#ENDIF
BREAK
CASE VEHGEN_WEB_MARINA_TREVOR
sData.dynamicSlotIndex = 5
sData.coords = <<-852.47, -1346.20, 0.21>>
sData.heading = 108.76
//sData.help = "Marina_03_VB"
sData.ped = CHAR_TREVOR
sData.blip = RADAR_TRACE_DOCK
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_MISSION))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PURCHASABLE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_DATA))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_IGNORE_HANDOVER_MODEL_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ANCHOR_WHEN_CREATED))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_WANTED))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_WEB_MARINA_TREVOR"
#ENDIF
BREAK
////////////////////////////////////////////////////////////////////////////////
/// HELIPADS
///
CASE VEHGEN_WEB_HELIPAD_MICHAEL
sData.dynamicSlotIndex = 6
sData.coords = <<-745.8570, -1433.9036, 4.0005>>
//sData.help = "Helipad_01_VB"
sData.ped = CHAR_MICHAEL
sData.blip = RADAR_TRACE_HELIPAD
sData.scenario_block_minXYZ = <<-756.2952, -1441.6093, 2.9184>>
sData.scenario_block_maxXYZ = <<-738.0606, -1423.0676, 8.2835>>
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_MISSION))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PURCHASABLE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_DATA))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_IGNORE_HANDOVER_MODEL_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_WANTED))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_WEB_HELIPAD_MICHAEL"
#ENDIF
BREAK
CASE VEHGEN_WEB_HELIPAD_FRANKLIN
sData.dynamicSlotIndex = 7
sData.coords = <<-761.8486, -1453.8293, 4.0005>>
//sData.help = "Helipad_02_VB"
sData.ped = CHAR_FRANKLIN
sData.blip = RADAR_TRACE_HELIPAD
sData.scenario_block_minXYZ = <<-772.8158, -1459.9572, 3.2894>>
sData.scenario_block_maxXYZ = <<-754.3353, -1440.8361, 8.3334>>
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_MISSION))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PURCHASABLE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_DATA))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_IGNORE_HANDOVER_MODEL_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_WANTED))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_WEB_HELIPAD_FRANKLIN"
#ENDIF
BREAK
CASE VEHGEN_WEB_HELIPAD_TREVOR_COUNTRY
sData.dynamicSlotIndex = 8
sData.coords = <<1769.3, 3244.0, 41.1>>
//sData.help = "Helipad_04_VB"
sData.ped = CHAR_TREVOR
sData.blip = RADAR_TRACE_HELIPAD
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_MISSION))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PURCHASABLE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_DATA))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_IGNORE_HANDOVER_MODEL_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_USE_LONG_RANGE_DIST_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_WANTED))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_WEB_HELIPAD_TREVOR_COUNTRY"
#ENDIF
BREAK
////////////////////////////////////////////////////////////////////////////////
/// CAR GARAGE
///
CASE VEHGEN_WEB_CAR_MICHAEL
sData.dynamicSlotIndex = 9
sData.coords = <<192.7897, -1020.5385, -99.98>>
sData.heading = 180.0
sData.model = DUMMY_MODEL_FOR_SCRIPT
sData.ped = CHAR_MICHAEL
sData.blip = RADAR_TRACE_GARAGE
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_MISSION))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PURCHASABLE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_DATA))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_IGNORE_HANDOVER_MODEL_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_USE_SHORT_RANGE_DIST_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_WANTED))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ONLY_SPAWN_IN_GARAGE))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_WEB_CAR_MICHAEL"
#ENDIF
BREAK
CASE VEHGEN_WEB_CAR_FRANKLIN
sData.dynamicSlotIndex = 10
sData.coords = <<192.7897, -1020.5385, -99.98>>
sData.heading = 180.0
sData.model = DUMMY_MODEL_FOR_SCRIPT
sData.ped = CHAR_FRANKLIN
sData.blip = RADAR_TRACE_GARAGE
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_MISSION))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PURCHASABLE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_DATA))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_IGNORE_HANDOVER_MODEL_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_USE_SHORT_RANGE_DIST_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_WANTED))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ONLY_SPAWN_IN_GARAGE))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_WEB_CAR_FRANKLIN"
#ENDIF
BREAK
CASE VEHGEN_WEB_CAR_TREVOR
sData.dynamicSlotIndex = 11
sData.coords = <<192.7897, -1020.5385, -99.98>>
sData.heading = 180.0
sData.model = DUMMY_MODEL_FOR_SCRIPT
sData.ped = CHAR_TREVOR
sData.blip = RADAR_TRACE_GARAGE
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_MISSION))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PURCHASABLE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_DATA))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_IGNORE_HANDOVER_MODEL_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_USE_SHORT_RANGE_DIST_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_WANTED))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ONLY_SPAWN_IN_GARAGE))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_WEB_CAR_TREVOR"
#ENDIF
BREAK
CASE VEHGEN_MICHAEL_GARAGE_1
CASE VEHGEN_FRANKLIN_GARAGE_1
CASE VEHGEN_TREVOR_GARAGE_1
iOffset = (ENUM_TO_INT(eName) - ENUM_TO_INT(VEHGEN_MICHAEL_GARAGE_1))
sData.dynamicSlotIndex = 12 + iOffset
sData.coords = <<196.2794, -1020.4791, -99.98>>
sData.heading = 180.0
sData.model = DUMMY_MODEL_FOR_SCRIPT
sData.ped = INT_TO_ENUM(enumCharacterList, ENUM_TO_INT(CHAR_MICHAEL)+iOffset)
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_DATA))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_IGNORE_HANDOVER_MODEL_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLOCK_CLEANUP_ON_ENTRY))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_USE_SHORT_RANGE_DIST_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ONLY_SPAWN_IN_GARAGE))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_GARAGE_1"
#ENDIF
BREAK
CASE VEHGEN_MICHAEL_GARAGE_2
CASE VEHGEN_FRANKLIN_GARAGE_2
CASE VEHGEN_TREVOR_GARAGE_2
iOffset = (ENUM_TO_INT(eName) - ENUM_TO_INT(VEHGEN_MICHAEL_GARAGE_2))
sData.dynamicSlotIndex = 15 + iOffset
sData.coords = <<199.8872, -1020.0480, -99.98>>
sData.heading = 180.0
sData.model = DUMMY_MODEL_FOR_SCRIPT
sData.ped = INT_TO_ENUM(enumCharacterList, ENUM_TO_INT(CHAR_MICHAEL)+iOffset)
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_DATA))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_IGNORE_HANDOVER_MODEL_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLOCK_CLEANUP_ON_ENTRY))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_USE_SHORT_RANGE_DIST_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ONLY_SPAWN_IN_GARAGE))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_GARAGE_2"
#ENDIF
BREAK
CASE VEHGEN_MICHAEL_GARAGE_3
CASE VEHGEN_FRANKLIN_GARAGE_3
CASE VEHGEN_TREVOR_GARAGE_3
iOffset = (ENUM_TO_INT(eName) - ENUM_TO_INT(VEHGEN_MICHAEL_GARAGE_3))
sData.dynamicSlotIndex = 18 + iOffset
sData.coords = <<203.6006, -1019.7762, -99.98>>
sData.heading = 180.0
sData.model = DUMMY_MODEL_FOR_SCRIPT
sData.ped = INT_TO_ENUM(enumCharacterList, ENUM_TO_INT(CHAR_MICHAEL)+iOffset)
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_DATA))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_IGNORE_HANDOVER_MODEL_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_PED_CHECK))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLOCK_CLEANUP_ON_ENTRY))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_USE_SHORT_RANGE_DIST_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ONLY_SPAWN_IN_GARAGE))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_GARAGE_3"
#ENDIF
BREAK
CASE VEHGEN_MISSION_VEH
sData.dynamicSlotIndex = 21
sData.coords = << 0.0, 0.0, 0.0 >>
sData.heading = 0.0
sData.model = DUMMY_MODEL_FOR_SCRIPT
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_DATA))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_COORDS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ONLY_AVAILABLE_ONCE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_IGNORE_HANDOVER_MODEL_CHECKS))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_MISSION_VEH"
#ENDIF
BREAK
CASE VEHGEN_MISSION_VEH_FBI4_PREP
sData.dynamicSlotIndex = 22
sData.coords = <<723.2515, -632.0496, 27.1484>>
sData.heading = 12.9316
sData.model = TAILGATER
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_DATA))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_COORDS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ONLY_AVAILABLE_ONCE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_IGNORE_HANDOVER_MODEL_CHECKS))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_MISSION_VEH_FBI4_PREP"
#ENDIF
BREAK
CASE VEHGEN_TREV1_SMASHED_TRAILER
sData.coords = <<-51.23, 3111.9, 24.95>>
sData.heading = 46.78
sData.model = PROPTRAILER
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_NON_INTERACTABLE))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_TREV1_SMASHED_TRAILER"
#ENDIF
BREAK
CASE VEHGEN_BJXL_CRASH_POST_ARM3
sData.coords = << -55.7984, -1096.5856, 25.4223 >>
sData.heading = 308.0596
sData.model = BJXL
sData.colour1 = 126
sData.colour2 = 126
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_FORCE_COLOURS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ONLY_AVAILABLE_ONCE))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_BJXL_CRASH_POST_ARM3"
#ENDIF
BREAK
CASE VEHGEN_EPSILON6_PLANE
sData.coords = <<-2892.93,3192.37,11.66>>
sData.heading = -132.35
sData.model = VELUM
sData.colour1 = 157
sData.colour2 = 157
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_FORCE_COLOURS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_USE_LONG_RANGE_DIST_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ONLY_AVAILABLE_ONCE))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_EPSILON6_PLANE"
#ENDIF
BREAK
CASE VEHGEN_DOCKSP2B_CHINOOK
#IF USE_TU_CHANGES
sData.coords = <<1744.3083, 3270.6731, 40.2076>>
sData.heading = 125
#ENDIF
#IF NOT USE_TU_CHANGES
sData.coords = <<1692.4996, 3270.3042, 39.9374>>
sData.heading = 289.8685
#ENDIF
sData.model = CARGOBOB3
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_USE_LONG_RANGE_DIST_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_NON_INTERACTABLE))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_DOCKSP2B_CHINOOK"
#ENDIF
BREAK
CASE VEHGEN_DOCKSP2B_SUB
sData.coords = <<1751.43970, 3322.64307, 42.1855>>
sData.heading = 268.1340
sData.model = SUBMERSIBLE
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_USE_LONG_RANGE_DIST_CHECKS))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_DOCKSP2B_SUB"
#ENDIF
BREAK
CASE VEHGEN_FBI4_TOWING
sData.coords = <<1377.1045, -2076.2000, 52.0000>>
sData.heading = 37.5000
sData.model = TOWTRUCK
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_NON_INTERACTABLE))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_FBI4_TOWING"
#ENDIF
BREAK
CASE VEHGEN_FBI4_TRASH
sData.coords = <<1380.4200, -2072.7695, 51.7607>>
sData.heading = 37.5000
sData.model = TRASH
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_NON_INTERACTABLE))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_FBI4_TRASH"
#ENDIF
BREAK
CASE VEHGEN_RURALH_MILITARY_TRUCK
sData.coords = <<1359.3892, 3618.4407, 33.8907>>
sData.heading = 108.2337
sData.model = BARRACKS
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_NON_INTERACTABLE))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_RURALH_MILITARY_TRUCK"
#ENDIF
BREAK
CASE VEHGEN_AGENCY_PREP_FIRETRUCK
sData.coords = <<693.1154, -1018.1551, 21.6387>>
sData.heading = 177.6454
sData.model = FIRETRUK
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_USE_LONG_RANGE_DIST_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_NON_INTERACTABLE))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_AGENCY_PREP_FIRETRUCK"
#ENDIF
BREAK
CASE VEHGEN_EPS3_VACCA
sData.coords = <<-73.6963, 495.1240, 143.5226>>
sData.heading = 155.5994
sData.model = VACCA
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_EPS3_VACCA"
#ENDIF
BREAK
CASE VEHGEN_EPS3_SURANO
sData.coords = <<-67.6314, 891.8266, 234.5348>>
sData.heading = 294.9930
sData.model = SURANO
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_EPS3_SURANO"
#ENDIF
BREAK
CASE VEHGEN_EPS3_TORNADO2
sData.coords = <<533.9048, -169.2469, 53.7005>>
sData.heading = 1.2998
sData.model = TORNADO2
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_EPS3_TORNADO2"
#ENDIF
BREAK
CASE VEHGEN_EPS3_SUPERD
sData.coords = <<-726.8914, -408.6952, 34.0416>>
sData.heading = 267.7392
sData.model = SUPERD
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_EPS3_SUPERD"
#ENDIF
BREAK
CASE VEHGEN_EPS3_DOUBLE
sData.coords = <<-1321.5186, 261.3993, 61.5709>>
sData.heading = 350.7697
sData.model = DOUBLE
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_EPS3_DOUBLE"
#ENDIF
BREAK
CASE VEHGEN_EPS3_DOUBLE_2
sData.coords = <<-1267.9991, 451.6463, 93.7071>>
sData.heading = 48.9311
sData.model = DOUBLE
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_EPS3_DOUBLE_2"
#ENDIF
BREAK
CASE VEHGEN_EPS3_DOUBLE_3
sData.coords = <<-1062.0762, -226.7637, 37.1570>>
sData.heading = 234.2767
sData.model = DOUBLE
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_EPS3_DOUBLE_3"
#ENDIF
BREAK
CASE VEHGEN_MRSP_PHARMACY1
sData.coords = <<68.169144,-1558.958130,29.469042>>
sData.heading = 49.905754
sData.model = RUMPO2
sData.ped = CHAR_TREVOR
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_LOCK_DOORS))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_MRSP_PHARMACY1"
#ENDIF
BREAK
CASE VEHGEN_MRSP_PHARMACY2
sData.coords = <<589.439880,2736.707764,42.033165>>
sData.heading = -175.710495
sData.model = RUMPO2
sData.ped = CHAR_TREVOR
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_LOCK_DOORS))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_MRSP_PHARMACY2"
#ENDIF
BREAK
CASE VEHGEN_MRSP_HOSPITAL1
sData.coords = <<-488.773956,-344.572052,34.363564>>
sData.heading = 82.404198
sData.model = RUMPO2
sData.ped = CHAR_TREVOR
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_LOCK_DOORS))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_MRSP_HOSPITAL1"
#ENDIF
BREAK
CASE VEHGEN_MRSP_HOSPITAL2
sData.coords = <<288.880829,-585.472839,43.154282>>
sData.heading = -20.807068
sData.model = RUMPO2
sData.ped = CHAR_TREVOR
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_LOCK_DOORS))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_MRSP_HOSPITAL2"
#ENDIF
BREAK
CASE VEHGEN_MRSP_HOSPITAL3
sData.coords = <<304.829376,-1383.674194,31.677443>>
sData.heading = -41.116028
sData.model = RUMPO2
sData.ped = CHAR_TREVOR
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_LOCK_DOORS))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_MRSP_HOSPITAL3"
#ENDIF
BREAK
CASE VEHGEN_MRSP_HOSPITAL4
sData.coords = <<1126.194336,-1481.485962,34.701603>>
sData.heading = -91.433693
sData.model = RUMPO2
sData.ped = CHAR_TREVOR
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_LOCK_DOORS))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_MRSP_HOSPITAL4"
#ENDIF
BREAK
CASE VEHGEN_PROPERTY_MARINA_SUB
sData.coords = <<-1598.36, 5252.84, 0>>
sData.heading = 28.14
sData.model = SUBMERSIBLE
sData.blip = RADAR_TRACE_SUB
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP_ONCE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ANCHOR_WHEN_NO_COLLISION))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_NEARBY_MODEL_CHECK))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_PROPERTY_MARINA_SUB"
#ENDIF
BREAK
CASE VEHGEN_PROPERTY_MARINA_ZODIAC
sData.coords = <<-1602.62, 5260.37, 0.86>>
sData.heading = 25.32
sData.model = DINGHY
sData.blip = RADAR_TRACE_DINGHY
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP_ONCE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ANCHOR_WHEN_CREATED))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_NEARBY_MODEL_CHECK))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_PROPERTY_MARINA_ZODIAC"
#ENDIF
BREAK
CASE VEHGEN_AIRPORT_VEHICLE
sData.coords = <<2116.5710, 4763.2793, 40.1596>>
sData.heading = 198.7230
sData.model = BFINJECTION
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_AIRPORT_VEHICLE"
#ENDIF
BREAK
CASE VEHGEN_BLIMP_CASINO
sData.coords = << 1133.21, 120.20, 80.9 >>
sData.heading = 134.40
IF IS_LAST_GEN_PLAYER()
sData.model = INT_TO_ENUM(MODEL_NAMES, HASH("BLIMP2"))
ELSE
sData.model = BLIMP
ENDIF
sData.blip = RADAR_TRACE_BLIMP
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ONLY_AVAILABLE_ONCE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP_ONCE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP_LONG_RANGE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_USE_LONG_RANGE_DIST_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_MISSION))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_BLIMP_CASINO"
#ENDIF
BREAK
CASE VEHGEN_BLIMP_DOCKS
sData.coords = << -806.31, -2679.65, 13.9 >>
sData.heading = 150.54
IF IS_LAST_GEN_PLAYER()
sData.model = INT_TO_ENUM(MODEL_NAMES, HASH("BLIMP2"))
ELSE
sData.model = BLIMP
ENDIF
sData.blip = RADAR_TRACE_BLIMP
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ONLY_AVAILABLE_ONCE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP_ONCE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP_LONG_RANGE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_USE_LONG_RANGE_DIST_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_MISSION))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_BLIMP_DOCKS"
#ENDIF
BREAK
CASE VEHGEN_TREVOR_BLAZER3
sData.coords = <<1985.85, 3828.96, 31.98>>
sData.heading = -16.58
sData.model = BLAZER3
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_NEARBY_MODEL_CHECK))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_TREVOR_BLAZER3"
#ENDIF
BREAK
// Wildlife Photography sub spawn.
CASE VEHGEN_WILDPHOTO_SUB
sData.coords = <<3870.75, 4464.67, 0.0>>
sData.heading = 0.0
sData.model = SUBMERSIBLE2
sData.blip = RADAR_TRACE_SUB
//SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP_ONCE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP))
//SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_BLIP_LONG_RANGE))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_HIDE_BLIP_ON_MISSION))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_USE_LONG_RANGE_DIST_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_NEARBY_MODEL_CHECK))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ANCHOR_WHEN_NO_COLLISION))
//SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ANCHOR_WHEN_CREATED)) //VEHGEN_NS_FLAG_ANCHORED
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_WILDPHOTO_SUB"
#ENDIF
BREAK
// RE Duel car city spawn.
CASE VEHGEN_RE_DUEL_CITY
sData.coords = <<1257.7295, -2564.4741, 41.7170>>
sData.heading = 284.5561
sData.model = INT_TO_ENUM(MODEL_NAMES, HASH("DUKES2"))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_NEARBY_MODEL_CHECK))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_RE_DUEL_CITY"
#ENDIF
BREAK
// RE Duel car country spawn.
CASE VEHGEN_RE_DUEL_COUNTRY
sData.coords = <<643.2823, 3014.1521, 42.2733>>
sData.heading = 128.0554
sData.model = INT_TO_ENUM(MODEL_NAMES, HASH("DUKES2"))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_NEARBY_MODEL_CHECK))
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_RE_DUEL_COUNTRY"
#ENDIF
BREAK
// RE Seaplane city spawn.
CASE VEHGEN_RE_SEAPLANE_CITY
sData.coords = <<38.9368, 850.8677, 196.3000>>
sData.heading = 311.6813
sData.model = INT_TO_ENUM(MODEL_NAMES, HASH("DODO"))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ANCHOR_WHEN_NO_COLLISION))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_USE_LONG_RANGE_DIST_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_NEARBY_MODEL_CHECK))
//SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ANCHOR_WHEN_CREATED)) //VEHGEN_NS_FLAG_ANCHORED
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_RE_SEAPLANE_CITY"
#ENDIF
BREAK
// RE Seaplane country spawn.
CASE VEHGEN_RE_SEAPLANE_COUNTRY
sData.coords = <<1333.8752, 4262.2256, 30.7800>>
sData.heading = 262.5293
sData.model = INT_TO_ENUM(MODEL_NAMES, HASH("DODO"))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ANCHOR_WHEN_NO_COLLISION))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_USE_LONG_RANGE_DIST_CHECKS))
SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DO_NEARBY_MODEL_CHECK))
//SET_BIT(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_ANCHOR_WHEN_CREATED)) //VEHGEN_NS_FLAG_ANCHORED
bDataFound = TRUE
#IF IS_DEBUG_BUILD
sData.dbg_name = "VEHGEN_RE_SEAPLANE_COUNTRY"
#ENDIF
BREAK
ENDSWITCH
// Update model name if using dynamic data
IF IS_BIT_SET(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_DYNAMIC_DATA))
#if USE_CLF_DLC
sData.model = g_savedGlobalsClifford.sVehicleGenData.sDynamicData[sData.dynamicSlotIndex].eModel
IF NOT ARE_VECTORS_EQUAL(g_savedGlobalsClifford.sVehicleGenData.vDynamicCoords[sData.dynamicSlotIndex], <<0,0,0>>)
sData.coords = g_savedGlobalsClifford.sVehicleGenData.vDynamicCoords[sData.dynamicSlotIndex]
ENDIF
IF g_savedGlobalsClifford.sVehicleGenData.fDynamicHeading[sData.dynamicSlotIndex] != -1.0
sData.heading = g_savedGlobalsClifford.sVehicleGenData.fDynamicHeading[sData.dynamicSlotIndex]
ENDIF
#endif
#if USE_NRM_DLC
sData.model = g_savedGlobalsnorman.sVehicleGenData.sDynamicData[sData.dynamicSlotIndex].eModel
IF NOT ARE_VECTORS_EQUAL(g_savedGlobalsnorman.sVehicleGenData.vDynamicCoords[sData.dynamicSlotIndex], <<0,0,0>>)
sData.coords = g_savedGlobalsnorman.sVehicleGenData.vDynamicCoords[sData.dynamicSlotIndex]
ENDIF
IF g_savedGlobalsnorman.sVehicleGenData.fDynamicHeading[sData.dynamicSlotIndex] != -1.0
sData.heading = g_savedGlobalsnorman.sVehicleGenData.fDynamicHeading[sData.dynamicSlotIndex]
ENDIF
#endif
#if not USE_CLF_DLC
#if not USE_NRM_DLC
sData.model = g_savedGlobals.sVehicleGenData.sDynamicData[sData.dynamicSlotIndex].eModel
#IF USE_TU_CHANGES
// Fix for bug # 1876673 - Override coords for miljet
// Fix for bug # 1876654 - Override coords for besra
// Fix for bug # 1924889 - Michael and Trevor clip through parked Western Besra during final cutscene of Exile 2
// Fix for bug # 2059214 - Titan explodes instantly when spawned from Trevors hanger
// Fix for bug # 2322104 - Luxor Deluxe doesn't fit inside Trevor's Sandy Shores Hangar. The vehicle's back wing hits the ceiling and can spawn with the front wheel in the air.
IF eName = VEHGEN_WEB_HANGAR_TREVOR
IF sData.model = MILJET
OR sData.model = BESRA
OR sData.model = LUXOR
OR sData.model = SHAMAL
OR sData.model = TITAN
OR sData.model = LUXOR2
sData.coords = <<1678.8, 3229.6, 41.8>>
sData.heading = 106.0906
ENDIF
ENDIF
#ENDIF
IF NOT ARE_VECTORS_EQUAL(g_savedGlobals.sVehicleGenData.vDynamicCoords[sData.dynamicSlotIndex], <<0,0,0>>)
sData.coords = g_savedGlobals.sVehicleGenData.vDynamicCoords[sData.dynamicSlotIndex]
ENDIF
IF g_savedGlobals.sVehicleGenData.fDynamicHeading[sData.dynamicSlotIndex] != -1.0
sData.heading = g_savedGlobals.sVehicleGenData.fDynamicHeading[sData.dynamicSlotIndex]
ENDIF
#endif
#endif
ENDIF
#if USE_CLF_DLC
// Update coords if we have override.
IF IS_BIT_SET(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PLAYER_VEH_BIKE))
IF NOT ARE_VECTORS_EQUAL(g_savedGlobalsClifford.sPlayerData.sInfo.vPlayerVehicleCoords[SAVED_VEHICLE_SLOT_BIKE][sData.ped], <<0,0,0>>)
sData.coords = g_savedGlobalsClifford.sPlayerData.sInfo.vPlayerVehicleCoords[SAVED_VEHICLE_SLOT_BIKE][sData.ped]
sData.heading = g_savedGlobalsClifford.sPlayerData.sInfo.fPlayerVehicleHeading[SAVED_VEHICLE_SLOT_BIKE][sData.ped]
ENDIF
ELIF IS_BIT_SET(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PLAYER_VEH_CAR))
IF NOT ARE_VECTORS_EQUAL(g_savedGlobalsClifford.sPlayerData.sInfo.vPlayerVehicleCoords[SAVED_VEHICLE_SLOT_CAR][sData.ped], <<0,0,0>>)
sData.coords = g_savedGlobalsClifford.sPlayerData.sInfo.vPlayerVehicleCoords[SAVED_VEHICLE_SLOT_CAR][sData.ped]
sData.heading = g_savedGlobalsClifford.sPlayerData.sInfo.fPlayerVehicleHeading[SAVED_VEHICLE_SLOT_CAR][sData.ped]
ENDIF
ENDIF
#endif
#if USE_NRM_DLC
// Update coords if we have override.
IF IS_BIT_SET(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PLAYER_VEH_BIKE))
IF NOT ARE_VECTORS_EQUAL(g_savedGlobalsnorman.sPlayerData.sInfo.vPlayerVehicleCoords[SAVED_VEHICLE_SLOT_BIKE][sData.ped], <<0,0,0>>)
sData.coords = g_savedGlobalsnorman.sPlayerData.sInfo.vPlayerVehicleCoords[SAVED_VEHICLE_SLOT_BIKE][sData.ped]
sData.heading = g_savedGlobalsnorman.sPlayerData.sInfo.fPlayerVehicleHeading[SAVED_VEHICLE_SLOT_BIKE][sData.ped]
ENDIF
ELIF IS_BIT_SET(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PLAYER_VEH_CAR))
IF NOT ARE_VECTORS_EQUAL(g_savedGlobalsnorman.sPlayerData.sInfo.vPlayerVehicleCoords[SAVED_VEHICLE_SLOT_CAR][sData.ped], <<0,0,0>>)
sData.coords = g_savedGlobalsnorman.sPlayerData.sInfo.vPlayerVehicleCoords[SAVED_VEHICLE_SLOT_CAR][sData.ped]
sData.heading = g_savedGlobalsnorman.sPlayerData.sInfo.fPlayerVehicleHeading[SAVED_VEHICLE_SLOT_CAR][sData.ped]
ENDIF
ENDIF
#endif
#if not USE_CLF_DLC
#if not USE_NRM_DLC
// Update coords if we have override.
IF IS_BIT_SET(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PLAYER_VEH_BIKE))
IF NOT ARE_VECTORS_EQUAL(g_savedGlobals.sPlayerData.sInfo.vPlayerVehicleCoords[SAVED_VEHICLE_SLOT_BIKE][sData.ped], <<0,0,0>>)
sData.coords = g_savedGlobals.sPlayerData.sInfo.vPlayerVehicleCoords[SAVED_VEHICLE_SLOT_BIKE][sData.ped]
sData.heading = g_savedGlobals.sPlayerData.sInfo.fPlayerVehicleHeading[SAVED_VEHICLE_SLOT_BIKE][sData.ped]
ENDIF
ELIF IS_BIT_SET(sData.flags, ENUM_TO_INT(VEHGEN_NS_FLAG_PLAYER_VEH_CAR))
IF NOT ARE_VECTORS_EQUAL(g_savedGlobals.sPlayerData.sInfo.vPlayerVehicleCoords[SAVED_VEHICLE_SLOT_CAR][sData.ped], <<0,0,0>>)
sData.coords = g_savedGlobals.sPlayerData.sInfo.vPlayerVehicleCoords[SAVED_VEHICLE_SLOT_CAR][sData.ped]
sData.heading = g_savedGlobals.sPlayerData.sInfo.fPlayerVehicleHeading[SAVED_VEHICLE_SLOT_CAR][sData.ped]
ENDIF
ENDIF
#endif
#endif
RETURN bDataFound
ENDFUNC
/// PURPOSE: Fills the struct with all the vehicle gen data
FUNC BOOL GET_PURCHASABLE_GARAGE_DATA(PURCHASABLE_GARAGE_DATA_STRUCT &sData, VEHICLE_GEN_NAME_ENUM eName)
// Note: The VEHICLE_GEN_NAME_ENUM param must have the save garage flag set
sData.bDataSet = FALSE
sData.bWarpToGarage = FALSE
sData.tl15BlipLabel = ""
SWITCH eName
/////////////////////////////////////////////////////////////////
/// HANGARS
///
CASE VEHGEN_WEB_HANGAR_MICHAEL
sData.vBuyPos1 = <<-952.882324,-2795.896484,12.132326>>
sData.vBuyPos2 = <<-966.730835,-2787.974854,16.132324>>
sData.fBuyWidth = 17.562500
sData.vPlayerCoords = <<-966.1285, -2794.7891, 12.9648>>
sData.fPlayerHeading = 146.6324
sData.mPans1.mStart.vPos = <<-1652.4537, -3059.1494, 24.9320>>
sData.mPans1.mStart.vRot = <<-2.5815, 0.0000, -176.2374>>
sData.mPans1.fFov = 38.2303
sData.mPans1.mEnd.vPos = <<-1651.5469, -3060.4783, 23.8077>>
sData.mPans1.mEnd.vRot = <<-2.5815, 0.0000, -176.2374>>
sData.mPans1.fShake = 0.2
sData.mPans1.fDuration = 7500/1000
sData.mPans2.mStart.vPos = <<-1650.4305, -3177.2292, 16.9898>>
sData.mPans2.mStart.vRot = <<-4.9147, -0.0000, -11.6415>>
sData.mPans2.fFov = 38.2303
sData.mPans2.mEnd.vPos = <<-1647.4950, -3173.7278, 16.6439>>
sData.mPans2.mEnd.vRot = <<-4.9147, -0.0000, -11.6415>>
sData.mPans2.fShake = 0.2
sData.mPans1.fDuration = 11500/1000
sData.vMenuPos1 = <<-1625.910522,-3167.555664,11.114552>>
sData.vMenuPos2 = <<-1688.580078,-3130.740723,20.135382>>
sData.fMenuWidth = 60.187500
sData.vStorePos1 = <<-1625.910522,-3167.555664,11.114552>>
sData.vStorePos2 = <<-1688.580078,-3130.740723,20.135382>>
sData.fStoreWidth = 60.187500
sData.vBlipCoords = <<-966.0840, -2793.6130, 12.9648>>
sData.eBlipSprite = RADAR_TRACE_HANGAR_FOR_SALE
sData.tl15BlipLabel = "HANGAR_NAME"
sData.iCost = 1378600
sData.tl15HelpText = "HANGAR"
sData.bDataSet = TRUE
BREAK
CASE VEHGEN_WEB_HANGAR_FRANKLIN
sData.vBuyPos1 = <<-952.882324,-2795.896484,12.132326>>
sData.vBuyPos2 = <<-966.730835,-2787.974854,16.132324>>
sData.fBuyWidth = 17.562500
sData.vPlayerCoords = <<-966.1285, -2794.7891, 12.9648>>
sData.fPlayerHeading = 146.6324
sData.mPans1.mStart.vPos = <<-1184.2, -3345, 17.5>>
sData.mPans1.mStart.vRot = <<3.5, 0, 109>>
sData.mPans1.fFov = 30.3
sData.mPans1.mEnd.vPos = <<-1184.3, -3345, 16.6>>
sData.mPans1.mEnd.vRot = <<3.5, 0, 109>>
sData.mPans1.fShake = 0.2
sData.mPans1.fDuration = 7500/1000
sData.mPans2.mStart.vPos = <<-1272.6, -3414.7, 15.6>>
sData.mPans2.mStart.vRot = <<-2.1, 0, -9.9>>
sData.mPans2.fFov = 37.8
sData.mPans2.mEnd.vPos = <<-1274, -3414.4, 15.6>>
sData.mPans2.mEnd.vRot = <<-2.1, 0, -9.9>>
sData.mPans2.fShake = 0.2
sData.mPans1.fDuration = 11500/1000
sData.vMenuPos1 = <<-1247.687744,-3408.546387,20.504175>>
sData.vMenuPos2 = <<-1309.774048,-3372.294434,11.368781>>
sData.fMenuWidth = 66.187500
sData.vStorePos1 = <<-1247.687744,-3408.546387,20.504175>>
sData.vStorePos2 = <<-1309.774048,-3372.294434,11.368781>>
sData.fStoreWidth = 66.187500
sData.vBlipCoords = <<-966.0840, -2793.6130, 12.9648>>
sData.eBlipSprite = RADAR_TRACE_HANGAR_FOR_SALE
sData.tl15BlipLabel = "HANGAR_NAME"
sData.iCost = 1378600
sData.tl15HelpText = "HANGAR"
sData.bDataSet = TRUE
BREAK
CASE VEHGEN_WEB_HANGAR_TREVOR
sData.vBuyPos1 = <<1727.301758,3291.453125,39.619114>>
sData.vBuyPos2 = <<1744.107666,3296.214600,44.171993>>
sData.fBuyWidth = 4.687500
sData.vPlayerCoords = <<1737.5295, 3289.2388, 40.1448>>
sData.fPlayerHeading = 14.8763
sData.mPans1.mStart.vPos = <<1739.7485, 3280.4453, 45.8124>>
sData.mPans1.mStart.vRot = <<-12.3854, -0.0000, 14.8379>>
sData.mPans1.fFov = 50.0
sData.mPans1.mEnd.vPos = <<1739.7485, 3280.4453, 45.8124>>
sData.mPans1.mEnd.vRot = <<-12.3854, -0.0000, 14.8379>>
sData.mPans1.fShake = 0.2
sData.mPans1.fDuration = 7500/1000
sData.mPans2.mStart.vPos = <<1739.7485, 3280.4453, 45.8124>>
sData.mPans2.mStart.vRot = <<-12.3854, -0.0000, 14.8379>>
sData.mPans2.fFov = 50.0
sData.mPans2.mEnd.vPos = <<1739.7485, 3280.4453, 45.8124>>
sData.mPans2.mEnd.vRot = <<-12.3854, -0.0000, 14.8379>>
sData.mPans2.fShake = 0.2
sData.mPans1.fDuration = 11500/1000
sData.vMenuPos1 = <<1718.055542,3305.018799,45.709221>>
sData.vMenuPos2 = <<1745.705933,3313.101074,39.757996>>
sData.fMenuWidth = 28.125000
sData.vStorePos1 = <<1718.055542,3305.018799,45.709221>>
sData.vStorePos2 = <<1745.705933,3313.101074,39.757996>>
sData.fStoreWidth = 28.125000
sData.vBlipCoords = <<1735.5863, 3294.5305, 40.1651>>
sData.eBlipSprite = RADAR_TRACE_HANGAR_FOR_SALE
sData.tl15BlipLabel = "HANGAR_NAME2"
sData.iCost = 1378600
sData.tl15HelpText = "HANGAR"
sData.bDataSet = TRUE
BREAK
/////////////////////////////////////////////////////////////////
/// HELIPADS
///
CASE VEHGEN_WEB_HELIPAD_MICHAEL
sData.vBuyPos1 = <<-709.094971,-1414.229492,3.188014>>
sData.vBuyPos2 = <<-712.122986,-1411.654541,6.938014>>
sData.fBuyWidth = 3.250000
sData.vMenuPos1 = <<-739.153076,-1439.509277,3.188024>>
sData.vMenuPos2 = <<-753.779175,-1426.755615,7.188024>>
sData.fMenuWidth = 17.562500
sData.vPlayerCoords = <<-700.9434, -1418.1694, 4.0005>>
sData.fPlayerHeading = 142.6382
sData.mPans1.mStart.vPos = <<-738, -1440, 6.3>>
sData.mPans1.mStart.vRot = <<-2.5, 0, 48.3>>
sData.mPans1.fFov = 45
sData.mPans1.mEnd.vPos = <<-738, -1440, 6>>
sData.mPans1.mEnd.vRot = <<-2.5, 0, 48.3>>
sData.mPans1.fShake = 0.2
sData.mPans1.fDuration = 7500/1000
sData.mPans2.mStart.vPos = <<-749.3, -1425.7, 5.9>>
sData.mPans2.mStart.vRot = <<-9.9, 0.2, -152.8>>
sData.mPans2.fFov = 40
sData.mPans2.mEnd.vPos = <<-749.9, -1426, 5.9>>
sData.mPans2.mEnd.vRot = <<-9.9, 0.2, -152.8>>
sData.mPans2.fShake = 0.2
sData.mPans1.fDuration = 11500/1000
sData.vStorePos1 = <<-738.779053,-1439.377197,9.125515>>
sData.vStorePos2 = <<-755.911072,-1425.005859,1.688014>>
sData.fStoreWidth = 18.062500
sData.vBlipCoords = <<-708.48, -1414.66, 4.00>>
sData.eBlipSprite = RADAR_TRACE_HELIPAD_FOR_SALE
sData.tl15BlipLabel = "HELIPAD_NAME"
sData.iCost = 419850
sData.tl15HelpText = "HELIPAD"
sData.bDataSet = TRUE
BREAK
CASE VEHGEN_WEB_HELIPAD_FRANKLIN
sData.vBuyPos1 = <<-709.094971,-1414.229492,3.188014>>
sData.vBuyPos2 = <<-712.122986,-1411.654541,6.938014>>
sData.fBuyWidth = 3.250000
sData.vMenuPos1 = <<-755.681152,-1459.233521,3.188023>>
sData.vMenuPos2 = <<-770.767090,-1446.866577,7.188024>>
sData.fMenuWidth = 17.562500
sData.vPlayerCoords = <<-700.9434, -1418.1694, 4.0005>>
sData.fPlayerHeading = 142.6382
sData.mPans1.mStart.vPos = <<-754.6, -1460.5, 6.4>>
sData.mPans1.mStart.vRot = <<-4.8, 0, 48.5>>
sData.mPans1.fFov = 45
sData.mPans1.mEnd.vPos = <<-754.6, -1460.6, 6.1>>
sData.mPans1.mEnd.vRot = <<-2.2, 0, 48.5>>
sData.mPans1.fShake = 0.2
sData.mPans1.fDuration = 7500/1000
sData.mPans2.mStart.vPos = <<-771.8, -1452.6, 5.7>>
sData.mPans2.mStart.vRot = <<-4.1, 0, -98.6>>
sData.mPans2.fFov = 40.0
sData.mPans2.mEnd.vPos = <<-771.8, -1452.1, 5.7>>
sData.mPans2.mEnd.vRot = <<-4.1, 0, -98.6>>
sData.mPans2.fShake = 0.2
sData.mPans1.fDuration = 11500/1000
sData.vStorePos1 = <<-755.571533,-1459.453003,9.125514>>
sData.vStorePos2 = <<-771.420410,-1446.234741,1.688017>>
sData.fStoreWidth = 18.062500
sData.vBlipCoords = <<-708.48, -1414.66, 4.00>>
sData.eBlipSprite = RADAR_TRACE_HELIPAD_FOR_SALE
sData.tl15BlipLabel = "HELIPAD_NAME"
sData.iCost = 419850
sData.tl15HelpText = "HELIPAD"
sData.bDataSet = TRUE
BREAK
CASE VEHGEN_WEB_HELIPAD_TREVOR_COUNTRY
sData.vBuyPos1 = <<1763.424438,3238.282227,40.320221>>
sData.vBuyPos2 = <<1786.588745,3239.015869,47.185337>>
sData.fBuyWidth = 17.750000
sData.vMenuPos1 = <<1763.424438,3238.282227,40.320221>>
sData.vMenuPos2 = <<1786.588745,3239.015869,47.185337>>
sData.fMenuWidth = 17.750000
sData.vPlayerCoords = <<1761.1222, 3250.1250, 40.7330>>
sData.fPlayerHeading = 236.5858
sData.mPans1.mStart.vPos = <<1779.2452, 3222.4773, 48.5795>>
sData.mPans1.mStart.vRot = <<-31.2473, 0.0000, 7.2108>>
sData.mPans1.fFov = 40
sData.mPans1.mEnd.vPos = <<1779.2452, 3222.4773, 48.5795>>
sData.mPans1.mEnd.vRot = <<-31.2473, 0.0000, 7.2108>>
sData.mPans1.fShake = 0.2
sData.mPans1.fDuration = 7500/1000
sData.mPans2.mStart.vPos = <<1779.2452, 3222.4773, 48.5795>>
sData.mPans2.mStart.vRot = <<-31.2473, 0.0000, 7.2108>>
sData.mPans2.fFov = 40
sData.mPans2.mEnd.vPos = <<1779.2452, 3222.4773, 48.5795>>
sData.mPans2.mEnd.vRot = <<-31.2473, 0.0000, 7.2108>>
sData.mPans2.fShake = 0.2
sData.mPans1.fDuration = 11500/1000
sData.vStorePos1 = <<1802.326782,3245.164551,46.955437>>
sData.vStorePos2 = <<1755.039673,3237.170410,38.693703>>
sData.fStoreWidth = 28.125000
sData.vBlipCoords = <<1769.3, 3244.0, 41.1>>
sData.eBlipSprite = RADAR_TRACE_HELIPAD_FOR_SALE
sData.tl15BlipLabel = "HELIPAD_NAME2"
sData.iCost = 0
sData.tl15HelpText = "HELIPAD"
sData.bDataSet = TRUE
BREAK
/////////////////////////////////////////////////////////////////
/// MARINAS
///
CASE VEHGEN_WEB_MARINA_MICHAEL
sData.vBuyPos1 = <<-826.575867,-1368.474976,3.750513>>
sData.vBuyPos2 = <<-827.867981,-1364.866943,6.750514>>
sData.fBuyWidth = 3.312500
sData.vMenuPos1 = <<-845.221558,-1356.039917,-0.212093>>
sData.vMenuPos2 = <<-841.645142,-1365.776733,3.787907>>
sData.fMenuWidth = 17.562500
sData.vPlayerCoords = <<-835.8600, -1358.3470, 0.6102>>
sData.fPlayerHeading = 112.3787
sData.mPans1.mStart.vPos = <<-859.6, -1374.0, 4.3>>
sData.mPans1.mStart.vRot = <<-3, 0.0, -48.3>>
sData.mPans1.fFov = 32.9
sData.mPans1.mEnd.vPos = <<-859.7, -1374.0, 3.0>>
sData.mPans1.mEnd.vRot = <<-3, 0.0, -48.3>>
sData.mPans1.fShake = 0.2
sData.mPans1.fDuration = 7500/1000
sData.mPans2.mStart.vPos = <<-837.2, -1350.3, 2.4>>
sData.mPans2.mStart.vRot = <<-7, 0, 156.1>>
sData.mPans2.fFov = 47.5
sData.mPans2.mEnd.vPos = <<-837.4, -1350.8, 2.3>>
sData.mPans2.mEnd.vRot = <<-7, 0, 156.1>>
sData.mPans2.fShake = 0.2
sData.mPans1.fDuration = 11500/1000
sData.vStorePos1 = <<-860.069275,-1314.887085,-3.331177>>
sData.vStorePos2 = <<-826.646057,-1410.446777,4.787533>>
sData.fStoreWidth = 19.625000
sData.vBlipCoords = <<-827.9120, -1366.7362, 4.0005>>
sData.eBlipSprite = RADAR_TRACE_DOCK_FOR_SALE
sData.tl15BlipLabel = "MARINA_NAME"
sData.iCost = 75000
sData.tl15HelpText = "MARINA"
sData.bDataSet = TRUE
BREAK
CASE VEHGEN_WEB_MARINA_FRANKLIN
sData.vBuyPos1 = <<-826.575867,-1368.474976,3.750513>>
sData.vBuyPos2 = <<-827.867981,-1364.866943,6.750514>>
sData.fBuyWidth = 3.312500
sData.vMenuPos1 = <<-848.817749,-1347.785767,-0.212093>>
sData.vMenuPos2 = <<-845.248230,-1357.935791,3.787908>>
sData.fMenuWidth = 17.562500
sData.vPlayerCoords = <<-839.2461, -1349.5249, 0.6102>>
sData.fPlayerHeading = 110.6762
sData.mPans1.mStart.vPos = <<-866.1, -1365.6, 4.3>>
sData.mPans1.mStart.vRot = <<-3.6, 0.0, -54.6>>
sData.mPans1.fFov = 30.0
sData.mPans1.mEnd.vPos = <<-866.1, -1365.6, 3.0>>
sData.mPans1.mEnd.vRot = <<-3.6, 0.0, -54.6>>
sData.mPans1.fShake = 0.2
sData.mPans1.fDuration = 7500/1000
sData.mPans2.mStart.vPos = <<-838.7, -1343.3, 2.9>>
sData.mPans2.mStart.vRot = <<-7.5, 0, 142.6>>
sData.mPans2.fFov = 47.5
sData.mPans2.mEnd.vPos = <<-838.8, -1343.2, 2.9>>
sData.mPans2.mEnd.vRot = <<-7.5, 0, 142.6>>
sData.mPans2.fShake = 0.2
sData.mPans1.fDuration = 11500/1000
sData.vStorePos1 = <<-860.069275,-1314.887085,-3.331177>>
sData.vStorePos2 = <<-826.646057,-1410.446777,4.787533>>
sData.fStoreWidth = 19.625000
sData.vBlipCoords = <<-827.9120, -1366.7362, 4.0005>>
sData.eBlipSprite = RADAR_TRACE_DOCK_FOR_SALE
sData.tl15BlipLabel = "MARINA_NAME"
sData.iCost = 75000
sData.tl15HelpText = "MARINA"
sData.bDataSet = TRUE
BREAK
CASE VEHGEN_WEB_MARINA_TREVOR
sData.vBuyPos1 = <<-826.575867,-1368.474976,3.750513>>
sData.vBuyPos2 = <<-827.867981,-1364.866943,6.750514>>
sData.fBuyWidth = 3.312500
sData.vMenuPos1 = <<-851.698669,-1339.127808,-0.212129>>
sData.vMenuPos2 = <<-848.127991,-1349.168091,3.787905>>
sData.fMenuWidth = 17.562500
sData.vPlayerCoords = <<-842.0763, -1341.4015, 0.6102>>
sData.fPlayerHeading = 109.8916
sData.mPans1.mStart.vPos = <<-866.3, -1357.9, 4.3>>
sData.mPans1.mStart.vRot = <<-4.4, 0.0, -46.6>>
sData.mPans1.fFov = 31.2
sData.mPans1.mEnd.vPos = <<-866.3, -1357.9, 3.0>>
sData.mPans1.mEnd.vRot = <<-4.4, 0.0, -46.6>>
sData.mPans1.fShake = 0.2
sData.mPans1.fDuration = 7500/1000
sData.mPans2.mStart.vPos = <<-841.6, -1336.3, 2.5>>
sData.mPans2.mStart.vRot = <<-3.6, 0, 137.7>>
sData.mPans2.fFov = 47.5
sData.mPans2.mEnd.vPos = <<-841.8, -1336.1, 2.5>>
sData.mPans2.mEnd.vRot = <<-3.6, 0, 137.7>>
sData.mPans2.fShake = 0.2
sData.mPans1.fDuration = 11500/1000
sData.vStorePos1 = <<-860.069275,-1314.887085,-3.331177>>
sData.vStorePos2 = <<-826.646057,-1410.446777,4.787533>>
sData.fStoreWidth = 19.625000
sData.vBlipCoords = <<-827.9120, -1366.7362, 4.0005>>
sData.eBlipSprite = RADAR_TRACE_DOCK_FOR_SALE
sData.tl15BlipLabel = "MARINA_NAME"
sData.iCost = 75000
sData.tl15HelpText = "MARINA"
sData.bDataSet = TRUE
BREAK
/////////////////////////////////////////////////////////////////
/// CAR
///
CASE VEHGEN_WEB_CAR_MICHAEL
sData.vBuyPos1 = <<-63.381466,84.059402,70.521385>>
sData.vBuyPos2 = <<-66.177742,77.959129,74.053719>>
sData.fBuyWidth = 5.937500
sData.vPlayerCoords = <<-65.2041, 81.0524, 70.5666>>
sData.fPlayerHeading = 243.8699
sData.vMenuPos1 = <<189.707352,-1017.569031,-104.999962>>
sData.vMenuPos2 = <<207.832504,-1017.774292,-96.635757>>
sData.fMenuWidth = 23.000000
sData.mPans1.mStart.vPos = <<191.0,-1026.9,-98.3>>
sData.mPans1.mStart.vRot = <<-2.4,0.0,-77.0>>
sData.mPans1.mEnd.vPos = <<190.0,-1026.9,-98.3>>
sData.mPans1.mEnd.vRot = <<-4.3,0.0,-57.6>>
sData.mPans1.fFov = 37.0
sData.mPans1.fShake = 0.2
sData.mPans1.fDuration = 7.500
sData.mPans2.mStart.vPos = <<207.3,-1013.0,-98.2>>
sData.mPans2.mStart.vRot = <<-2.4,-0.0,112.3>>
sData.mPans2.mEnd.vPos = <<207.3,-1013.0,-98.2>>
sData.mPans2.mEnd.vRot = <<-2.4,-0.0,141.0>>
sData.mPans2.fFov = 37.0
sData.mPans2.fShake = 0.2
sData.mPans2.fDuration = 11.500
sData.vStorePos1 = <<221.997864,-981.663452,-100.187424>>
sData.vStorePos2 = <<234.201019,-981.758240,-97.624924>>
sData.fStoreWidth = 6.250000
sData.vBlipCoords = <<-62.62, 80.03, 70.62>>
sData.eBlipSprite = RADAR_TRACE_GARAGE_FOR_SALE
sData.tl15BlipLabel = "GARAGE_NAME1"
sData.iCost = 30000
sData.tl15HelpText = "CAR_GAR"
sData.fDoorHeading = 243.8699
sData.bWarpToGarage = TRUE
sData.vGarageExitCoords[0] = <<-67.9068, 82.2664, 70.5153>>
sData.fGarageExitHeading[0] = 66.2020
sData.vGarageExitCoords[1] = <<-65.1234, 81.2517, 70.5644>>
sData.fGarageExitHeading[1] = 71.6237
sData.bDataSet = TRUE
BREAK
CASE VEHGEN_WEB_CAR_FRANKLIN
sData.vBuyPos1 = <<-72.411659,-1824.142090,25.817038>>
sData.vBuyPos2 = <<-68.702538,-1819.642090,29.379538>>
sData.fBuyWidth = 5.937500
sData.vPlayerCoords = <<-70.1992, -1823.2252, 25.9420>>
sData.fPlayerHeading = 46.1535
sData.vMenuPos1 = <<189.707352,-1017.569031,-104.999962>>
sData.vMenuPos2 = <<207.832504,-1017.774292,-96.635757>>
sData.fMenuWidth = 23.000000
sData.mPans1.mStart.vPos = <<191.0,-1026.9,-98.3>>
sData.mPans1.mStart.vRot = <<-2.4,0.0,-77.0>>
sData.mPans1.mEnd.vPos = <<190.0,-1026.9,-98.3>>
sData.mPans1.mEnd.vRot = <<-4.3,0.0,-57.6>>
sData.mPans1.fFov = 37.0
sData.mPans1.fShake = 0.2
sData.mPans1.fDuration = 7.500
sData.mPans2.mStart.vPos = <<207.3,-1013.0,-98.2>>
sData.mPans2.mStart.vRot = <<-2.4,-0.0,112.3>>
sData.mPans2.mEnd.vPos = <<207.3,-1013.0,-98.2>>
sData.mPans2.mEnd.vRot = <<-2.4,-0.0,141.0>>
sData.mPans2.fFov = 37.0
sData.mPans2.fShake = 0.2
sData.mPans2.fDuration = 11.500
sData.vStorePos1 = <<221.997864,-981.663452,-100.187424>>
sData.vStorePos2 = <<234.201019,-981.758240,-97.624924>>
sData.fStoreWidth = 6.250000
sData.vBlipCoords = <<-71.29, -1821.68, 25.94>>
sData.eBlipSprite = RADAR_TRACE_GARAGE_FOR_SALE
sData.tl15BlipLabel = "GARAGE_NAME2"
sData.iCost = 30000
sData.tl15HelpText = "CAR_GAR"
sData.fDoorHeading = 53.0985
sData.bWarpToGarage = TRUE
sData.vGarageExitCoords[0] = <<-64.2268, -1832.5975, 25.8666>>
sData.fGarageExitHeading[0] = 274.6339
sData.vGarageExitCoords[1] = <<-68.5531, -1824.3774, 25.9424>>
sData.fGarageExitHeading[1] = 215.8295
sData.bDataSet = TRUE
BREAK
CASE VEHGEN_WEB_CAR_TREVOR
sData.vBuyPos1 = <<-220.779358,-1159.279785,21.903023>>
sData.vBuyPos2 = <<-220.727295,-1165.265259,25.450535>>
sData.fBuyWidth = 5.937500
sData.vPlayerCoords = <<-220.7592, -1162.2775, 22.0242>>
sData.fPlayerHeading = 271.2097
sData.vMenuPos1 = <<189.707352,-1017.569031,-104.999962>>
sData.vMenuPos2 = <<207.832504,-1017.774292,-96.635757>>
sData.fMenuWidth = 23.000000
sData.mPans1.mStart.vPos = <<191.0,-1026.9,-98.3>>
sData.mPans1.mStart.vRot = <<-2.4,0.0,-77.0>>
sData.mPans1.mEnd.vPos = <<190.0,-1026.9,-98.3>>
sData.mPans1.mEnd.vRot = <<-4.3,0.0,-57.6>>
sData.mPans1.fFov = 37.0
sData.mPans1.fShake = 0.2
sData.mPans1.fDuration = 7.500
sData.mPans2.mStart.vPos = <<207.3,-1013.0,-98.2>>
sData.mPans2.mStart.vRot = <<-2.4,-0.0,112.3>>
sData.mPans2.mEnd.vPos = <<207.3,-1013.0,-98.2>>
sData.mPans2.mEnd.vRot = <<-2.4,-0.0,141.0>>
sData.mPans2.fFov = 37.0
sData.mPans2.fShake = 0.2
sData.mPans2.fDuration = 11.500
sData.vStorePos1 = <<221.997864,-981.663452,-100.187424>>
sData.vStorePos2 = <<234.201019,-981.758240,-97.624924>>
sData.fStoreWidth = 6.250000
sData.vBlipCoords = <<-218.35, -1162.18, 22.02>>
sData.eBlipSprite = RADAR_TRACE_GARAGE_FOR_SALE
sData.tl15BlipLabel = "GARAGE_NAME3"
sData.iCost = 30000
sData.tl15HelpText = "CAR_GAR"
sData.fDoorHeading = 271.2097
sData.bWarpToGarage = TRUE
sData.vGarageExitCoords[0] = <<-222.1935, -1162.1134, 22.0204>>
sData.fGarageExitHeading[0] = 358.5703
sData.vGarageExitCoords[1] = <<-220.8189, -1162.3016, 22.0242>>
sData.fGarageExitHeading[1] = 70.2711
sData.bDataSet = TRUE
BREAK
ENDSWITCH
RETURN sData.bDataSet
ENDFUNC
/// PURPOSE: Sets the availability of the specified vehicle gen
PROC SET_VEHICLE_GEN_AVAILABLE(VEHICLE_GEN_NAME_ENUM eName, BOOL bAvailable)
IF eName = VEHGEN_NONE
EXIT
ENDIF
IF bAvailable
IF NOT GET_VEHICLE_GEN_SAVED_FLAG_STATE(eName, VEHGEN_S_FLAG_AVAILABLE)
#IF IS_DEBUG_BUILD
IF NOT IS_REPEAT_PLAY_ACTIVE()
GET_VEHICLE_GEN_DATA(g_sVehicleGenNSData.sRuntimeStruct[0], eName)
PRINTLN("SET_VEHICLE_GEN_AVAILABLE(", g_sVehicleGenNSData.sRuntimeStruct[0].dbg_name, ", TRUE) called by ", GET_THIS_SCRIPT_NAME())
ENDIF
#ENDIF
SET_VEHICLE_GEN_SAVED_FLAG_STATE(eName, VEHGEN_S_FLAG_HELP_PROCESSED, FALSE)
SET_VEHICLE_GEN_SAVED_FLAG_STATE(eName, VEHGEN_S_FLAG_BLIP_PROCESSED, FALSE)
SET_VEHICLE_GEN_SAVED_FLAG_STATE(eName, VEHGEN_S_FLAG_TXT_PROCESSED, FALSE)
SET_VEHICLE_GEN_SAVED_FLAG_STATE(eName, VEHGEN_S_FLAG_PLAYER_USED_VEH, FALSE)
SET_VEHICLE_GEN_SAVED_FLAG_STATE(eName, VEHGEN_S_FLAG_AVAILABLE, TRUE)
// If a vehicle gen is activated when the player is near, it will be created instantly.
// To prevent this pop we need to wait for the player to leave the area.
// If there are any special cases where this behaviour is unsuitable then
// CLEAR_MUST_LEAVE_AREA_VEHICLE_GEN_FLAG(eVehicleGen) should be used.
g_sVehicleGenNSData.bLeaveAreaBeforeCreating[eName] = TRUE
ENDIF
ELSE
#IF IS_DEBUG_BUILD
IF NOT IS_REPEAT_PLAY_ACTIVE()
GET_VEHICLE_GEN_DATA(g_sVehicleGenNSData.sRuntimeStruct[0], eName)
PRINTLN("SET_VEHICLE_GEN_AVAILABLE(", g_sVehicleGenNSData.sRuntimeStruct[0].dbg_name, ", FALSE) called by ", GET_THIS_SCRIPT_NAME())
ENDIF
#ENDIF
SET_VEHICLE_GEN_SAVED_FLAG_STATE(eName, VEHGEN_S_FLAG_AVAILABLE, FALSE)
ENDIF
ENDPROC
/// PURPOSE:
/// Gets the position of a given vehicle gen
FUNC VECTOR GET_VEHICLE_GEN_COORDS(VEHICLE_GEN_NAME_ENUM eVehicleGen)
IF eVehicleGen = VEHGEN_NONE
RETURN <<0, 0, 0>>
ENDIF
IF NOT GET_VEHICLE_GEN_DATA(g_sVehicleGenNSData.sRuntimeStruct[0], eVehicleGen)
RETURN <<0, 0, 0>>
ENDIF
RETURN g_sVehicleGenNSData.sRuntimeStruct[0].coords
ENDFUNC
/// PURPOSE:
/// Gets the heading of a given vehicle gen
FUNC FLOAT GET_VEHICLE_GEN_HEADING(VEHICLE_GEN_NAME_ENUM eVehicleGen)
IF eVehicleGen = VEHGEN_NONE
RETURN 0.0
ENDIF
IF NOT GET_VEHICLE_GEN_DATA(g_sVehicleGenNSData.sRuntimeStruct[0], eVehicleGen)
RETURN 0.0
ENDIF
RETURN g_sVehicleGenNSData.sRuntimeStruct[0].heading
ENDFUNC
/// PURPOSE:
/// Gets the saved vehicle setup data for the vehicle gen
FUNC BOOL GET_VEHICLE_GEN_VEHICLE_SETUP_SAVED_DATA(VEHICLE_SETUP_STRUCT &sVehicleSetupData, VEHICLE_GEN_NAME_ENUM eVehicleGen)
IF eVehicleGen = VEHGEN_NONE
RETURN FALSE
ENDIF
IF NOT GET_VEHICLE_GEN_DATA(g_sVehicleGenNSData.sRuntimeStruct[0], eVehicleGen)
RETURN FALSE
ELSE
#if USE_CLF_DLC
CLONE_VEHICLE_SETUP_STRUCT(g_savedGlobalsClifford.sVehicleGenData.sDynamicData[g_sVehicleGenNSData.sRuntimeStruct[0].dynamicSlotIndex], sVehicleSetupData)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_MISSION, "<clf>GET_VEHICLE_GEN_VEHICLE_SETUP_SAVED_DATA() - Getting this data for this - ", GET_THIS_SCRIPT_NAME())
CPRINTLN(DEBUG_MISSION, "...vehicle gen = ", g_sVehicleGenNSData.sRuntimeStruct[0].dbg_name)
CPRINTLN(DEBUG_MISSION, "...vehicle model = ", GET_MODEL_NAME_FOR_DEBUG(g_savedGlobalsClifford.sVehicleGenData.sDynamicData[g_sVehicleGenNSData.sRuntimeStruct[0].dynamicSlotIndex].eModel))
CPRINTLN(DEBUG_MISSION, "...dynamic slot = ", g_sVehicleGenNSData.sRuntimeStruct[0].dynamicSlotIndex)
CPRINTLN(DEBUG_MISSION, "...dynamic coords = ", g_savedGlobalsClifford.sVehicleGenData.vDynamicCoords[g_sVehicleGenNSData.sRuntimeStruct[0].dynamicSlotIndex])
CPRINTLN(DEBUG_MISSION, "...dynamic heading = ", g_savedGlobalsClifford.sVehicleGenData.fDynamicHeading[g_sVehicleGenNSData.sRuntimeStruct[0].dynamicSlotIndex])
CPRINTLN(DEBUG_MISSION, "...Set by script = ", GET_THIS_SCRIPT_NAME())
#ENDIF
CPRINTLN(DEBUG_MISSION, "<clf>Cloned vehicle gen date for ", g_sVehicleGenNSData.sRuntimeStruct[0].dbg_name, " called by - ", GET_THIS_SCRIPT_NAME())
#endif
#if USE_NRM_DLC
CLONE_VEHICLE_SETUP_STRUCT(g_savedGlobalsnorman.sVehicleGenData.sDynamicData[g_sVehicleGenNSData.sRuntimeStruct[0].dynamicSlotIndex], sVehicleSetupData)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_MISSION, "<clf>GET_VEHICLE_GEN_VEHICLE_SETUP_SAVED_DATA() - Getting this data for this - ", GET_THIS_SCRIPT_NAME())
CPRINTLN(DEBUG_MISSION, "...vehicle gen = ", g_sVehicleGenNSData.sRuntimeStruct[0].dbg_name)
CPRINTLN(DEBUG_MISSION, "...vehicle model = ", GET_MODEL_NAME_FOR_DEBUG(g_savedGlobalsnorman.sVehicleGenData.sDynamicData[g_sVehicleGenNSData.sRuntimeStruct[0].dynamicSlotIndex].eModel))
CPRINTLN(DEBUG_MISSION, "...dynamic slot = ", g_sVehicleGenNSData.sRuntimeStruct[0].dynamicSlotIndex)
CPRINTLN(DEBUG_MISSION, "...dynamic coords = ", g_savedGlobalsnorman.sVehicleGenData.vDynamicCoords[g_sVehicleGenNSData.sRuntimeStruct[0].dynamicSlotIndex])
CPRINTLN(DEBUG_MISSION, "...dynamic heading = ", g_savedGlobalsnorman.sVehicleGenData.fDynamicHeading[g_sVehicleGenNSData.sRuntimeStruct[0].dynamicSlotIndex])
CPRINTLN(DEBUG_MISSION, "...Set by script = ", GET_THIS_SCRIPT_NAME())
#ENDIF
CPRINTLN(DEBUG_MISSION, "<clf>Cloned vehicle gen date for ", g_sVehicleGenNSData.sRuntimeStruct[0].dbg_name, " called by - ", GET_THIS_SCRIPT_NAME())
#endif
#if not USE_CLF_DLC
#if not USE_NRM_DLC
CLONE_VEHICLE_SETUP_STRUCT(g_savedGlobals.sVehicleGenData.sDynamicData[g_sVehicleGenNSData.sRuntimeStruct[0].dynamicSlotIndex], sVehicleSetupData)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_MISSION, "GET_VEHICLE_GEN_VEHICLE_SETUP_SAVED_DATA() - Getting this data for this - ", GET_THIS_SCRIPT_NAME())
CPRINTLN(DEBUG_MISSION, "...vehicle gen = ", g_sVehicleGenNSData.sRuntimeStruct[0].dbg_name)
if g_savedGlobals.sVehicleGenData.sDynamicData[g_sVehicleGenNSData.sRuntimeStruct[0].dynamicSlotIndex].eModel != DUMMY_MODEL_FOR_SCRIPT
CPRINTLN(DEBUG_MISSION, "...vehicle model = ", GET_MODEL_NAME_FOR_DEBUG(g_savedGlobals.sVehicleGenData.sDynamicData[g_sVehicleGenNSData.sRuntimeStruct[0].dynamicSlotIndex].eModel))
else
CPRINTLN(DEBUG_MISSION, "...vehicle model = DUMMY_MODEL_FOR_SCRIPT ")
endif
CPRINTLN(DEBUG_MISSION, "...dynamic slot = ", g_sVehicleGenNSData.sRuntimeStruct[0].dynamicSlotIndex)
CPRINTLN(DEBUG_MISSION, "...dynamic coords = ", g_savedGlobals.sVehicleGenData.vDynamicCoords[g_sVehicleGenNSData.sRuntimeStruct[0].dynamicSlotIndex])
CPRINTLN(DEBUG_MISSION, "...dynamic heading = ", g_savedGlobals.sVehicleGenData.fDynamicHeading[g_sVehicleGenNSData.sRuntimeStruct[0].dynamicSlotIndex])
CPRINTLN(DEBUG_MISSION, "...Set by script = ", GET_THIS_SCRIPT_NAME())
#ENDIF
CPRINTLN(DEBUG_MISSION, "Cloned vehicle gen date for ", g_sVehicleGenNSData.sRuntimeStruct[0].dbg_name, " called by - ", GET_THIS_SCRIPT_NAME())
#endif
#endif
ENDIF
RETURN TRUE
ENDFUNC
/// PURPOSE:
/// Gets the height to anchor a vehicle gen
FUNC FLOAT GET_ANCHOR_HEIGHT_FOR_VEHICLE_GEN(VEHICLE_GEN_NAME_ENUM eName)
SWITCH eName
CASE VEHGEN_PROPERTY_MARINA_SUB
RETURN -0.7
BREAK
CASE VEHGEN_WILDPHOTO_SUB
RETURN -0.8
BREAK
ENDSWITCH
RETURN 0.0
ENDFUNC