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

4597 lines
189 KiB
XML
Executable File

//- commands headers -//
USING "rage_builtins.sch"
USING "globals.sch"
//- script headers -//
USING "commands_script.sch"
//- public headers -//
USING "friends_public.sch"
USING "script_clock.sch"
//- private headers -//
USING "respawn_location_private.sch"
USING "comms_control_public.sch"
USING "friends_private.sch"
#IF IS_DEBUG_BUILD
//- debug headers -//
USING "script_debug.sch"
USING "shared_debug.sch"
#ENDIF
///private header for friends location utils
/// sam.hackett@rockstarnorth.com
///
//---------------------------------------------------------------------------------------------------
//-- STRUCTS
//---------------------------------------------------------------------------------------------------
STRUCT structBits64
INT bitsA
INT bitsB
ENDSTRUCT
// Respot
CONST_INT RESPOT_EXPAND_NONE 0
CONST_INT RESPOT_EXPAND_X_LEFT 1
CONST_INT RESPOT_EXPAND_X_RIGHT 2
CONST_INT RESPOT_EXPAND_Y_FORWARD 4
CONST_INT RESPOT_EXPAND_Y_BACK 8
STRUCT structFRespotData
VECTOR vCarPos
FLOAT fCarRot
INT expandDir
ENDSTRUCT
// Cut scenes
STRUCT structFCam
VECTOR vPos
VECTOR vRot
ENDSTRUCT
STRUCT structFCamPan
structFCam mStart
structFCam mEnd
FLOAT fFov
FLOAT fDuration
BOOL bEnabled
ENDSTRUCT
STRUCT structFDropoffScene
// structFCamPan mCarPans[4]
structFCamPan mFootPans[6]
structFCam mFootCatchupCam
FLOAT fFootCatchupFov
structFCam mCarCatchupCam
FLOAT fCarCatchupFov
VECTOR vCarPos
FLOAT fCarRot
VECTOR vPlayerPos
VECTOR vPedPos[2]
VECTOR vExitPos
FLOAT fFinalCamRot
// FLOAT fCarSpeechDelay
FLOAT fFootSpeechDelay
FLOAT fFootFinalDelay
FLOAT fCarFinalDelay0
FLOAT fCarFinalDelay
// BOOL bCarCam2IsAlternative
BOOL bFootCam2IsAlternative
BOOL bIsTaxiStyle
VECTOR vCarFakeWalkPos
VECTOR vCarFakeDrivePos
structFRespotData mExtraRespot
VECTOR vSwitchPos[3]
FLOAT fSwitchRot[3]
ENDSTRUCT
ENUM enumFDropoffStyle
FDROPOFF_NORMAL,
FDROPOFF_FRIENDACAR,
FDROPOFF_FRIENDBCAR,
FDROPOFF_TAXI
ENDENUM
STRUCT structFDropoff
enumFDropoffStyle eStyle
ENDSTRUCT
STRUCT structFActivityScene
structFCam mCamPanA[2]
structFCam mCamTime
structFCam mCamPanB[2]
FLOAT fCamPanAFov
FLOAT fCamTimeFov
FLOAT fCamPanBFov
FLOAT fPanADurationNormal
FLOAT fPanADurationDrunk
structFCam mCamCatch
FLOAT fCamCatchFov
BOOL bIsCinema
BOOL bExtraCatchupCam
VECTOR vClearA
VECTOR vClearB
FLOAT fClearW
VECTOR vPedPPos[3]
VECTOR vPedAPos[3]
VECTOR vPedBPos[3]
ENDSTRUCT
//---------------------------------------------------------------------------------------------------
//-- CONSTS
//---------------------------------------------------------------------------------------------------
CONST_FLOAT CONST_FriendLoc_fMaxComfortableDist 1800.0//2000.0
CONST_FLOAT CONST_FriendLoc_fMinDistAvoidLoc 200.0
CONST_FLOAT CONST_FriendLoc_fMinDistPickup 350.0
CONST_FLOAT CONST_FriendLoc_fMinDistMission 100.0
CONST_FLOAT CONST_FriendLoc_fMinDistDropoff 100.0//25.0
//---------------------------------------------------------------------------------------------------
//-- Backup/restore location blips
//---------------------------------------------------------------------------------------------------
FUNC BOOL Private_BackupLocationBlips()
CPRINTLN(DEBUG_FRIENDS, "Private_BackupLocationBlips()")
// For each friend activity location blip
enumActivityLocation eLoc
REPEAT MAX_ACTIVITY_LOCATIONS eLoc
STATIC_BLIP_NAME_ENUM eGameBlip = g_ActivityLocations[eLoc].sprite
IF IS_BIT_SET(g_GameBlips[eGameBlip].iSetting, STATIC_BLIP_SETTING_ACTIVE)
CPRINTLN(DEBUG_FRIENDS, "Private_BackupLocationBlips() - Backing up (on) ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(ENUM_TO_INT(eGameBlip)))
ELSE
CPRINTLN(DEBUG_FRIENDS, "Private_BackupLocationBlips() - Backing up (off) ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(ENUM_TO_INT(eGameBlip)))
ENDIF
// Store blip colour
g_ActivityLocationBackups[eLoc].iColour = GET_STATIC_BLIP_COLOUR(eGameBlip)
// Store blip state
g_ActivityLocationBackups[eLoc].iSettings = g_GameBlips[eGameBlip].iSetting
// Clear blip
SET_STATIC_BLIP_ACTIVE_STATE(eGameBlip, FALSE)
ENDREPEAT
RETURN TRUE
ENDFUNC
PROC Private_ClearLocationBlips()
enumActivityLocation eLoc
STATIC_BLIP_NAME_ENUM activitySprite
REPEAT MAX_ACTIVITY_LOCATIONS eLoc
activitySprite = g_ActivityLocations[eLoc].sprite
IF IS_STATIC_BLIP_CURRENTLY_VISIBLE(activitySprite)
SET_STATIC_BLIP_ACTIVE_STATE(activitySprite, FALSE)
ENDIF
ENDREPEAT
ENDPROC
PROC Private_RestoreLocationBlips()
CPRINTLN(DEBUG_FRIENDS, "Private_RestoreLocationBlips()")
// For each friend activity location blip
enumActivityLocation eLoc
REPEAT MAX_ACTIVITY_LOCATIONS eLoc
STATIC_BLIP_NAME_ENUM eGameBlip = g_ActivityLocations[eLoc].sprite
IF IS_BIT_SET(g_ActivityLocationBackups[eLoc].iSettings, STATIC_BLIP_SETTING_ACTIVE)
CPRINTLN(DEBUG_FRIENDS, "Private_RestoreLocationBlips() - Restoring (on) ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(ENUM_TO_INT(eGameBlip)))
ELSE
CPRINTLN(DEBUG_FRIENDS, "Private_RestoreLocationBlips() - Restoring (off) ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(ENUM_TO_INT(eGameBlip)))
ENDIF
// Set blip colour
IF GET_STATIC_BLIP_COLOUR(eGameBlip) <> g_ActivityLocationBackups[eLoc].iColour
SET_STATIC_BLIP_COLOUR(eGameBlip, g_ActivityLocationBackups[eLoc].iColour)
SET_BIT(g_GameBlips[eGameBlip].iSetting,STATIC_BLIP_SETTING_STATUS_CHANGED)//g_GameBlips[eGameBlip].bStatusChanged = TRUE
ENDIF
// Set blip state
IF g_GameBlips[eGameBlip].iSetting <> g_ActivityLocationBackups[eLoc].iSettings
g_GameBlips[eGameBlip].iSetting = g_ActivityLocationBackups[eLoc].iSettings
SET_BIT(g_GameBlips[eGameBlip].iSetting,STATIC_BLIP_SETTING_STATUS_CHANGED)//g_GameBlips[eGameBlip].bStatusChanged = TRUE
ENDIF
// TODO only change these if the setting is actually changed
IF IS_BIT_SET(g_GameBlips[eGameBlip].iSetting,STATIC_BLIP_SETTING_STATUS_CHANGED)
IF g_bBlipSystemRefreshDetector = TRUE
g_bBlipChangeDuringUpdate = TRUE
ENDIF
g_bBlipSystemRefreshDetector = TRUE
ENDIF
ENDREPEAT
ENDPROC
// *******************************************************************************************
// EXTENDED BITSETS
// *******************************************************************************************
PROC RESET_EXTENDED_BITS(structBits64& ext)
ext.bitsA = 0
ext.bitsB = 0
ENDPROC
PROC SET_EXTENDED_BIT(structBits64& ext, INT iIndex)
IF iIndex < 32
SET_BIT(ext.bitsA, iIndex)
ELIF iIndex < 64
SET_BIT(ext.bitsB, iIndex - 32)
ELSE
CPRINTLN(DEBUG_FRIENDS, "SET_EXTENDED_BIT() - iIndex too big for 64 bit limit, (", iIndex, ")")
SCRIPT_ASSERT("SET_EXTENDED_BIT() - iIndex too big for 64 bit limit")
ENDIF
ENDPROC
PROC CLEAR_EXTENDED_BIT(structBits64& ext, INT iIndex)
IF iIndex < 32
CLEAR_BIT(ext.bitsA, iIndex)
ELIF iIndex < 64
CLEAR_BIT(ext.bitsB, iIndex - 32)
ELSE
CPRINTLN(DEBUG_FRIENDS, "CLEAR_EXTENDED_BIT() - iIndex too big for 64 bit limit, (", iIndex, ")")
SCRIPT_ASSERT("CLEAR_EXTENDED_BIT() - iIndex too big for 64 bit limit")
ENDIF
ENDPROC
FUNC BOOL IS_EXTENDED_BIT_SET(structBits64& ext, INT iIndex)
IF iIndex < 32
RETURN IS_BIT_SET(ext.bitsA, iIndex)
ELIF iIndex < 64
RETURN IS_BIT_SET(ext.bitsB, iIndex - 32)
ELSE
CPRINTLN(DEBUG_FRIENDS, "IS_EXTENDED_BIT_SET() - iIndex too big for 64 bit limit, (", iIndex, ")")
SCRIPT_ASSERT("IS_EXTENDED_BIT_SET() - iIndex too big for 64 bit limit")
RETURN FALSE
ENDIF
ENDFUNC
FUNC BOOL IS_MISSION_AVAILABLE_FOR_CHAR(enumCharacterList eChar, SP_MISSIONS eMission)
IF IS_MISSION_AVAILABLE(eMission)
IF IS_BITMASK_SET(g_sMissionStaticData[eMission].triggerCharBitset, GET_PLAYER_PED_BIT(eChar))
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL DOES_MISSION_TRIGGER_MOVE(SP_MISSIONS eMission)
#if USE_CLF_DLC
eMission = eMission
#ENDIF
#if USE_NRM_DLC
eMission = eMission
#ENDIF
#if not USE_CLF_DLC
#if not USE_NRM_DLC
SWITCH eMission
CASE SP_HEIST_JEWELRY_PREP_2A
CASE SP_HEIST_RURAL_PREP_1
CASE SP_MISSION_FBI_4_PREP_1
RETURN TRUE
BREAK
ENDSWITCH
#ENDIF
#ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL IS_CINEMA_OPEN_NOW()
TIMEOFDAY tod = GET_CURRENT_TIMEOFDAY()
INT iHour = GET_TIMEOFDAY_HOUR(tod)
IF iHour >= 10 AND iHour <= 22
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL IS_GOLF_OPEN_NOW()
TIMEOFDAY tod = GET_CURRENT_TIMEOFDAY()
INT iHour = GET_TIMEOFDAY_HOUR(tod)
IF iHour >= 6 AND iHour < 18
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL Private_IsLocationAvailable(enumActivityLocation activityLoc, enumCharacterList playerChar, enumCharacterList buddyCharA, enumCharacterList buddyCharB, structBits64 bitsVisitedActivities, structBits64 bitsVisitedLocations, enumFriendLocation eDropoffFriendLoc, BOOL bIsCinemaOpen, BOOL bIsGolfOpen, BOOL bVerbose = TRUE)
// Check if the location type has already been visited
IF activityLoc >= MAX_ACTIVITY_LOCATIONS
SCRIPT_ASSERT("Private_IsLocationAvailable() - Invalid activityLoc")
RETURN FALSE
ENDIF
#IF IS_DEBUG_BUILD
TEXT_LABEL_31 tActivityLoc = GetLabel_enumActivityLocation(activityLoc)
#if not USE_CLF_DLC
#if not USE_NRM_DLC
TEXT_LABEL_31 tActivityType = GetLabel_enumActivityType(g_ActivityLocations[activityLoc].type)
#endif
#endif
#ENDIF
IF activityLoc = ALOC_suspendFriends
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Suspend is a dummy location for system use")
ENDIF
RETURN FALSE
ENDIF
//-- Check timed activities
IF g_ActivityLocations[activityLoc].type = ATYPE_cinema
IF bIsCinemaOpen = FALSE
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Cinema is not available at this time of day")
ENDIF
RETURN FALSE
ENDIF
ENDIF
IF g_ActivityLocations[activityLoc].type = ATYPE_golf
IF bIsGolfOpen = FALSE
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Golf is not available at this time of day")
ENDIF
RETURN FALSE
ENDIF
ENDIF
//-- Check for missions that start at same location
// Don't allow drinking at yellow jacks if mission starts there
// IF (activityLoc = ALOC_bar_yellowjack)
// IF IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_MISSION_CHINESE_1)
// OR IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_MISSION_CHINESE_2)
// IF bVerbose
// CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Can't allow drinking at Yellow Jack bar, a mission starts there")
// ENDIF
// RETURN FALSE
// ENDIF
// ENDIF
#if not USE_CLF_DLC
#if not USE_NRM_DLC
// Don't allow darts at yellow jacks if mission starts there
IF (activityLoc = ALOC_darts_hickBar)
IF IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_MISSION_CHINESE_1)
OR IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_MISSION_CHINESE_2)
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Can't allow darts at Yellow Jack bar, a mission starts there")
ENDIF
RETURN FALSE
ENDIF
ENDIF
// Don't allow tennis at michaels house if mission starts there
IF (activityLoc = ALOC_tennis_michaelHouse)
IF IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_MISSION_EXILE_1)
OR IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_MISSION_FAMILY_1)
OR IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_MISSION_FAMILY_2)
OR IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_MISSION_FAMILY_3)
OR IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_MISSION_FAMILY_4)
OR IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_MISSION_FAMILY_5)
OR IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_MISSION_FAMILY_6)
OR IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_MISSION_MICHAEL_1)
OR IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_MISSION_TREVOR_1)
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Can't allow tennis at Michael's house, a mission starts there")
ENDIF
RETURN FALSE
ENDIF
ENDIF
// Don't allow cinema on vinewood if mission starts there
IF (activityLoc = ALOC_cinema_vinewood)
IF IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_MISSION_MICHAEL_4)
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Can't allow vinewood cinema, a mission starts there")
ENDIF
RETURN FALSE
ENDIF
ENDIF
// Don't allow stripclub if mission starts there
IF (activityLoc = ALOC_stripclub_southCentral)
IF IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_HEIST_FINALE_1)
OR IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_HEIST_FINALE_2_INTRO)
OR IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_HEIST_FINALE_2A)
OR IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_HEIST_FINALE_2B)
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Can't allow stripclub, a mission starts there")
ENDIF
RETURN FALSE
ENDIF
ENDIF
// Don't allow beach tennis if mission starts nearby - NOTE: Mission does not actually start on activity loc, SO COULD REDUCE REJECTION ZONE INSTEAD
IF (activityLoc = ALOC_tennis_beachCourt)
IF IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_HEIST_DOCKS_1)
OR IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_HEIST_DOCKS_2A)
OR IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_HEIST_DOCKS_2B)
OR IS_MISSION_AVAILABLE_FOR_CHAR(playerChar, SP_MISSION_TREVOR_4)
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Can't allow tennis at beach, a mission starts nearby - SO COULD REDUCE REJECTION ZONE INSTEAD")
ENDIF
RETURN FALSE
ENDIF
ENDIF
#ENDIF
#ENDIF
//-- Check location specific conditions
// Check if the activity location/type has already been visited
IF g_ActivityLocations[activityLoc].type <> ATYPE_bar
IF IS_EXTENDED_BIT_SET(bitsVisitedActivities, ENUM_TO_INT(g_ActivityLocations[activityLoc].type))
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: already visited activity type")
ENDIF
RETURN FALSE
ENDIF
ELSE
IF IS_EXTENDED_BIT_SET(bitsVisitedLocations, ENUM_TO_INT(activityLoc))
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: already visited activity location")
ENDIF
RETURN FALSE
ENDIF
ENDIF
// If dropoff location is a bar/stripclub, don't allow the corresponding activity location
IF eDropoffFriendLoc = FLOC_bar_DT
IF activityLoc = ALOC_bar_downtown
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Bar would clash with dropoff location")
ENDIF
RETURN FALSE
ENDIF
ENDIF
IF eDropoffFriendLoc = FLOC_bar_VB
IF activityLoc = ALOC_bar_bahamas
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Bar would clash with dropoff location")
ENDIF
RETURN FALSE
ENDIF
ENDIF
IF eDropoffFriendLoc = FLOC_trevor_SC
IF activityLoc = ALOC_stripclub_southCentral
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Stripclub would clash with dropoff location")
ENDIF
RETURN FALSE
ENDIF
ENDIF
// Don't allow darts or tennis if player has brought two friends
IF g_ActivityLocations[activityLoc].type = ATYPE_darts
OR g_ActivityLocations[activityLoc].type = ATYPE_tennis
IF buddyCharA <> NO_CHARACTER
AND buddyCharB <> NO_CHARACTER
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Can't allow darts or tennis with 3 players")
ENDIF
RETURN FALSE
ENDIF
ENDIF
// Only allow tennis at michaels house if michael is one of the friends on the activity
IF (activityLoc = ALOC_tennis_michaelHouse)
IF (playerChar <> CHAR_MICHAEL)
AND (buddyCharA <> CHAR_MICHAEL)
AND (buddyCharB <> CHAR_MICHAEL)
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Can't allow tennis at Michael's house unless one of you is Michael")
ENDIF
RETURN FALSE
ENDIF
ENDIF
// Don't allow Amanda to do anything except drinking/tennis
IF g_ActivityLocations[activityLoc].type <> ATYPE_bar
AND g_ActivityLocations[activityLoc].type <> ATYPE_tennis
IF buddyCharA = CHAR_AMANDA
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Amanda can only play tennis/go drinking")
ENDIF
RETURN FALSE
ENDIF
ENDIF
// Don't allow Franklin to play tennis
IF g_ActivityLocations[activityLoc].type = ATYPE_tennis
IF playerChar = CHAR_FRANKLIN
OR buddyCharA = CHAR_FRANKLIN
OR buddyCharB = CHAR_FRANKLIN
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Franklin can't play tennis")
ENDIF
RETURN FALSE
ENDIF
ENDIF
// Don't allow Lamar to play tennis
IF g_ActivityLocations[activityLoc].type = ATYPE_tennis
IF playerChar = CHAR_LAMAR
OR buddyCharA = CHAR_LAMAR
OR buddyCharB = CHAR_LAMAR
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Lamar can't play tennis")
ENDIF
RETURN FALSE
ENDIF
ENDIF
// Don't allow Jimmy/Lamar to play golf
IF g_ActivityLocations[activityLoc].type = ATYPE_golf
IF playerChar = CHAR_JIMMY OR playerChar = CHAR_LAMAR
OR buddyCharA = CHAR_JIMMY OR buddyCharA = CHAR_LAMAR
OR buddyCharB = CHAR_JIMMY OR buddyCharB = CHAR_LAMAR
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Jimmy/Lamar can't play golf")
ENDIF
RETURN FALSE
ENDIF
ENDIF
// Don't allow Jimmy to do drinking/stripclub with Michael
IF g_ActivityLocations[activityLoc].type = ATYPE_bar
OR g_ActivityLocations[activityLoc].type = ATYPE_stripclub
IF (playerChar = CHAR_MICHAEL OR playerChar = CHAR_TREVOR) AND buddyCharA = CHAR_JIMMY
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Jimmy can't do drinking/stripclub with Michael")
ENDIF
RETURN FALSE
ENDIF
ENDIF
// Don't allow Trevor to drink in Lost clubhouse
IF activityLoc = ALOC_bar_biker
IF playerChar = CHAR_TREVOR
OR buddyCharA = CHAR_TREVOR
OR buddyCharB = CHAR_TREVOR
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Trevor can't drink in Lost clubhouse")
ENDIF
RETURN FALSE
ENDIF
ENDIF
//-- Check flow
#if not USE_CLF_DLC
#if not USE_NRM_DLC
// Don't allow city activities on exile (for Michael, Trevor, Amanda and Jimmy)
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MICHAEL_TREVOR_EXILE_STARTED)
AND NOT GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MICHAEL_TREVOR_EXILE_FINISHED)
IF (playerChar <> CHAR_FRANKLIN AND playerChar <> CHAR_LAMAR)
OR (buddyCharA <> CHAR_FRANKLIN AND buddyCharA <> CHAR_LAMAR AND buddyCharA <> NO_CHARACTER)
OR (buddyCharB <> CHAR_FRANKLIN AND buddyCharB <> CHAR_LAMAR AND buddyCharB <> NO_CHARACTER)
VECTOR vActivityPos = GET_STATIC_BLIP_POSITION(g_ActivityLocations[activityLoc].sprite)
IF PRIVATE_IS_POINT_IN_CITY(vActivityPos)
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: One of the characters is in exile")
ENDIF
RETURN FALSE
ENDIF
ENDIF
ENDIF
// Don't allow yellow jack darts until after chinese2
IF NOT GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_DARTS_YELLOW_JACK_AVAILABLE)
IF activityLoc = ALOC_darts_hickBar
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Darts at Yellow Jack not available til after Chinese2")
ENDIF
RETURN FALSE
ENDIF
ENDIF
// if gameflow is on, check the flowflag for allowed minigames
IF (g_savedGlobals.sFlow.isGameflowActive)
BOOL bTypeEnabled = FALSE
SWITCH g_ActivityLocations[activityLoc].type
CASE ATYPE_golf
bTypeEnabled = GET_MISSION_FLOW_BITSET_BIT_STATE(FLOWBITSET_MINIGAME_ACTIVE, ENUM_TO_INT(MINIGAME_GOLF))
BREAK
CASE ATYPE_tennis
bTypeEnabled = GET_MISSION_FLOW_BITSET_BIT_STATE(FLOWBITSET_MINIGAME_ACTIVE, ENUM_TO_INT(MINIGAME_TENNIS))
BREAK
CASE ATYPE_stripclub
bTypeEnabled = GET_MISSION_FLOW_BITSET_BIT_STATE(FLOWBITSET_MINIGAME_ACTIVE, ENUM_TO_INT(MINIGAME_STRIPCLUB))
BREAK
CASE ATYPE_darts
bTypeEnabled = GET_MISSION_FLOW_BITSET_BIT_STATE(FLOWBITSET_MINIGAME_ACTIVE, ENUM_TO_INT(MINIGAME_DARTS))
BREAK
CASE ATYPE_cinema
bTypeEnabled = GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_ALLOW_CINEMA_ACTIVITY)
BREAK
CASE ATYPE_bar
bTypeEnabled = TRUE
BREAK
DEFAULT
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Activity type ", tActivityType, " unknown")
ENDIF
RETURN FALSE
BREAK
ENDSWITCH
IF NOT bTypeEnabled
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") - REJECTING: Activity type ", tActivityType, " not unlocked")
ENDIF
RETURN FALSE
ENDIF
ENDIF
#endif
#endif
IF bVerbose
CPRINTLN(DEBUG_FRIENDS, "Private_IsLocationAvailable(", tActivityLoc, ") + ACCEPTING.")
ENDIF
RETURN TRUE
ENDFUNC
//---------------------------------------------------------------------------------------------------
//-- Setup (FriendLocations)
//---------------------------------------------------------------------------------------------------
enumFriendLocation gSetupFriendLoc = FLOC_adhoc
#if USE_CLF_DLC
PROC PRIVATE_SetupFriendLoc(enumFriendLocation thisFriendLocation, VECTOR vPickupCoord, VECTOR vPedOffsetA, VECTOR vPedOffsetB, SAVEHOUSE_NAME_ENUM hSavehouse = NUMBER_OF_CLF_SAVEHOUSE)
gSetupFriendLoc = thisFriendLocation
g_FriendLocations[gSetupFriendLoc].vPickupCoord = vPickupCoord
g_FriendLocations[gSetupFriendLoc].vPedOffsetA = vPedOffsetA
g_FriendLocations[gSetupFriendLoc].vPedOffsetB = vPedOffsetB
g_FriendLocations[gSetupFriendLoc].iFlags = 0
g_FriendLocations[gSetupFriendLoc].hSavehouse = hSavehouse
ENDPROC
#endif
#if USE_NRM_DLC
PROC PRIVATE_SetupFriendLoc(enumFriendLocation thisFriendLocation, VECTOR vPickupCoord, VECTOR vPedOffsetA, VECTOR vPedOffsetB, SAVEHOUSE_NAME_ENUM hSavehouse = NUMBER_OF_NRM_SAVEHOUSE)
gSetupFriendLoc = thisFriendLocation
g_FriendLocations[gSetupFriendLoc].vPickupCoord = vPickupCoord
g_FriendLocations[gSetupFriendLoc].vPedOffsetA = vPedOffsetA
g_FriendLocations[gSetupFriendLoc].vPedOffsetB = vPedOffsetB
g_FriendLocations[gSetupFriendLoc].iFlags = 0
g_FriendLocations[gSetupFriendLoc].hSavehouse = hSavehouse
ENDPROC
#endif
#if not USE_CLF_DLC
#if not USE_NRM_DLC
PROC PRIVATE_SetupFriendLoc(enumFriendLocation thisFriendLocation, VECTOR vPickupCoord, VECTOR vPedOffsetA, VECTOR vPedOffsetB, SAVEHOUSE_NAME_ENUM hSavehouse = NUMBER_OF_SAVEHOUSE_LOCATIONS)
gSetupFriendLoc = thisFriendLocation
g_FriendLocations[gSetupFriendLoc].vPickupCoord = vPickupCoord
g_FriendLocations[gSetupFriendLoc].vPedOffsetA = vPedOffsetA
g_FriendLocations[gSetupFriendLoc].vPedOffsetB = vPedOffsetB
g_FriendLocations[gSetupFriendLoc].iFlags = 0
g_FriendLocations[gSetupFriendLoc].hSavehouse = hSavehouse
ENDPROC
#endif
#endif
PROC PRIVATE_SetupFriendLoc_SpawnPoint(VECTOR vSpawnPos, FLOAT fSpawnRot, VECTOR vParkPos)
g_FriendLocations[gSetupFriendLoc].vSpawnPos = vSpawnPos
g_FriendLocations[gSetupFriendLoc].fSpawnRot = fSpawnRot
g_FriendLocations[gSetupFriendLoc].vParkPos = vParkPos
ENDPROC
PROC PRIVATE_SetupFriendLoc_CharFlags(INT iCharFlags)
#IF IS_DEBUG_BUILD
INT iStrippedFlags = iCharFlags & (FLF_AllChars)
IF iStrippedFlags <> iCharFlags
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_SetupFriendLoc_SetCharUsage(", GetLabel_enumFriendLocation(gSetupFriendLoc), ") - Invalid char flags: ", iCharFlags)
SCRIPT_ASSERT("PRIVATE_SetupFriendLoc_CharFlags() - Invalid char flags")
ENDIF
IF iCharFlags = 0
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_SetupFriendLoc_SetCharUsage(", GetLabel_enumFriendLocation(gSetupFriendLoc), ") - Empty char flags: ", iCharFlags)
SCRIPT_ASSERT("PRIVATE_SetupFriendLoc_CharFlags() - Empty char flags")
ENDIF
#ENDIF
// CLEAR_BITMASK(g_FriendLocations[gSetupFriendLoc].iFlags, FLF_AllChars)
g_FriendLocations[gSetupFriendLoc].iFlags = g_FriendLocations[gSetupFriendLoc].iFlags | iCharFlags
ENDPROC
PROC PRIVATE_SetupFriendLoc_UsageFlags(INT iUsageFlags)
#IF IS_DEBUG_BUILD
INT iStrippedFlags = iUsageFlags & (FLF_AllUsage)
IF iStrippedFlags <> iUsageFlags
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_SetupFriendLoc_SetCharUsage(", GetLabel_enumFriendLocation(gSetupFriendLoc), ") - Invalid usage flags: ", iUsageFlags)
SCRIPT_ASSERT("PRIVATE_SetupFriendLoc_UsageFlags() - Invalid usage flags")
ENDIF
IF iUsageFlags = 0
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_SetupFriendLoc_SetCharUsage(", GetLabel_enumFriendLocation(gSetupFriendLoc), ") - Empty usage flags: ", iUsageFlags)
SCRIPT_ASSERT("PRIVATE_SetupFriendLoc_UsageFlags() - Empty usage flags")
ENDIF
#ENDIF
// CLEAR_BITMASK(g_FriendLocations[gSetupFriendLoc].iFlags, FLF_AllUsage)
g_FriendLocations[gSetupFriendLoc].iFlags = g_FriendLocations[gSetupFriendLoc].iFlags | iUsageFlags
ENDPROC
FUNC VECTOR FriendLoc_GetCoord(enumFriendLocation friendPickupLoc)
RETURN g_FriendLocations[friendPickupLoc].vPickupCoord
ENDFUNC
FUNC VECTOR FriendLoc_GetPedOffset(enumFriendLocation friendPickupLoc)
RETURN g_FriendLocations[friendPickupLoc].vPedOffsetA
ENDFUNC
FUNC VECTOR FriendLoc_GetDoorstep(enumFriendLocation friendPickupLoc)
RETURN g_FriendLocations[friendPickupLoc].vPickupCoord + g_FriendLocations[friendPickupLoc].vPedOffsetA
ENDFUNC
//---------------------------------------------------------------------------------------------------
//-- Setup (ActivityLocations)
//---------------------------------------------------------------------------------------------------
PROC PRIVATE_SetupActivityLoc(enumActivityLocation activityLoc, enumActivityType locType, STATIC_BLIP_NAME_ENUM locSprite)
g_ActivityLocations[activityLoc].type = locType
g_ActivityLocations[activityLoc].sprite = locSprite
#IF IS_DEBUG_BUILD
TEXT_LABEL_63 tLoc = GetLabel_enumActivityLocation(activityLoc)
TEXT_LABEL_63 tType = GetLabel_enumActivityType(locType)
TEXT_LABEL_63 tBlip = DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(ENUM_TO_INT(locSprite))
CPRINTLN(DEBUG_FRIENDS, "PRIVATE_SetupActivityLoc(", tLoc, "[", ENUM_TO_INT(activityLoc), "], ", tType, ", ", tBlip, ")")
#ENDIF
ENDPROC
FUNC VECTOR ActivityLoc_GetCoord(enumActivityLocation eActivityLoc)
RETURN GET_STATIC_BLIP_POSITION(g_ActivityLocations[eActivityLoc].sprite)
ENDFUNC
//---------------------------------------------------------------------------------------------------
//-- Adhoc location functions
//---------------------------------------------------------------------------------------------------
FUNC BOOL Private_IsAdhocFriendLocValid()
RETURN (g_FriendLocations[FLOC_adhoc].iFlags <> 0)
ENDFUNC
FUNC BOOL Private_IsAdhocFriendLocReadyForUse()
RETURN ((g_FriendLocations[FLOC_adhoc].iFlags & FLF_AdhocReadyForUse) <> 0)
ENDFUNC
PROC Private_ClearAdhocFriendLoc()
g_FriendLocations[FLOC_adhoc].iFlags = 0
ENDPROC
FUNC BOOL Private_GetAvailableAdhocFriendLoc(VECTOR vPlayerPos)
// If adhoc position is waiting to be used...
IF Private_IsAdhocFriendLocReadyForUse()
// If in range -> Use it
// Otherwise -> Clear it
IF (GET_DISTANCE_BETWEEN_COORDS(vPlayerPos, g_FriendLocations[FLOC_adhoc].vPickupCoord) < 10.0)
RETURN TRUE
ELSE
Private_ClearAdhocFriendLoc()
ENDIF
ENDIF
// If no adhoc position is setup...
IF NOT Private_IsAdhocFriendLocValid()
IF g_bTriggerSceneActive = FALSE
// Find road node to base it all off
VECTOR vRoadPos
FLOAT fRoadHeading
INT iRoadLanes
IF GET_NTH_CLOSEST_VEHICLE_NODE_WITH_HEADING(vPlayerPos, 1, vRoadPos, fRoadHeading, iRoadLanes, NF_IGNORE_SLIPLANES)
// Find position on pavement
VECTOR vPavementPos
VECTOR vRoadSide
IF GET_POSITION_BY_SIDE_OF_ROAD(vRoadPos, 0, vRoadSide)
AND (GET_DISTANCE_BETWEEN_COORDS(vPlayerPos, vRoadSide) < 10.0)
AND (ABSF(vPlayerPos.z - vRoadSide.z) < 2.5)
vPavementPos = vRoadSide
ELIF GET_POSITION_BY_SIDE_OF_ROAD(vRoadPos, 1, vRoadSide)
AND (GET_DISTANCE_BETWEEN_COORDS(vPlayerPos, vRoadSide) < 10.0)
AND (ABSF(vPlayerPos.z - vRoadSide.z) < 2.5)
vPavementPos = vRoadSide
ELSE
RETURN FALSE
ENDIF
// Work out which side of the road we're on
VECTOR vRoadToPavement = vPavementPos - vRoadPos
VECTOR vRoadToLeftSide = GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(<<0,0,0>>, fRoadHeading-90, <<0,1,0>>)
VECTOR vRoadToRightSide = GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(<<0,0,0>>, fRoadHeading+90, <<0,1,0>>)
IF DOT_PRODUCT_XY(vRoadToPavement, vRoadToLeftSide) > 0.0
vRoadToPavement = vRoadToLeftSide
ELSE
vRoadToPavement = vRoadToRightSide
ENDIF
// Calculate where everything should go
VECTOR vAlongRoad = << -vRoadToPavement.y, vRoadToPavement.x, 0.0 >>
VECTOR vParkPos = vPavementPos - (vRoadToPavement * 4.0)
VECTOR vPedAPos = vPavementPos + (vRoadToPavement * 1.0) - (vAlongRoad * 2.0)
VECTOR vPedBPos = vPavementPos + (vRoadToPavement * 1.0) + (vAlongRoad * 2.0)
IF GET_SAFE_COORD_FOR_PED(vPavementPos + (vRoadToPavement * 1.0), TRUE, vPedAPos)
AND GET_DISTANCE_BETWEEN_COORDS(vPavementPos, vPedAPos) < 10.0
AND GET_DISTANCE_BETWEEN_COORDS(vParkPos, vPedAPos) > 2.0
vPedAPos = vPedAPos
ELSE
RETURN FALSE
ENDIF
IF GET_SAFE_COORD_FOR_PED(vPavementPos + (vRoadToPavement * 1.0), TRUE, vPedBPos)
AND GET_DISTANCE_BETWEEN_COORDS(vPavementPos, vPedBPos) < 10.0
AND GET_DISTANCE_BETWEEN_COORDS(vParkPos, vPedBPos) > 2.0
vPedBPos = vPedBPos
ELSE
vPedBPos = vPedAPos
ENDIF
// Setup adhoc location
CPRINTLN(DEBUG_FRIENDS, "Private_GetAvailableAdhocFriendLoc() - Setting up new loc <<", vPavementPos.x, ", ", vPavementPos.y, ", ", vPavementPos.z, ">>")
g_FriendLocations[FLOC_adhoc].vPickupCoord = vPavementPos
g_FriendLocations[FLOC_adhoc].vPedOffsetA = vPedAPos - vPavementPos
g_FriendLocations[FLOC_adhoc].vPedOffsetB = vPedBPos - vPavementPos
g_FriendLocations[FLOC_adhoc].vSpawnPos = << 0.0, 0.0, 0.0 >>
g_FriendLocations[FLOC_adhoc].fSpawnRot = 0.0
g_FriendLocations[FLOC_adhoc].vParkPos = vParkPos
#if USE_CLF_DLC
g_FriendLocations[FLOC_adhoc].hSavehouse = NUMBER_OF_CLF_SAVEHOUSE
#endif
#if USE_NRM_DLC
g_FriendLocations[FLOC_adhoc].hSavehouse = NUMBER_OF_NRM_SAVEHOUSE
#endif
#if not USE_CLF_DLC
#if not USE_NRM_DLC
g_FriendLocations[FLOC_adhoc].hSavehouse = NUMBER_OF_SAVEHOUSE_LOCATIONS
#endif
#endif
g_FriendLocations[FLOC_adhoc].iFlags = FLF_AllChars|FLF_Pickup|FLF_AdhocReadyForUse
RETURN TRUE
ENDIF
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
//---------------------------------------------------------------------------------------------------
//-- Usage functions
//---------------------------------------------------------------------------------------------------
FUNC BOOL FriendLoc_IsFriendAllowed(enumFriendLocation eLoc, enumFriend eFriend)
SWITCH eFriend
CASE FR_MICHAEL RETURN (g_FriendLocations[eLoc].iFlags & FLF_Michael) <> 0 BREAK
CASE FR_TREVOR RETURN (g_FriendLocations[eLoc].iFlags & FLF_Trevor) <> 0 BREAK
CASE FR_LAMAR RETURN (g_FriendLocations[eLoc].iFlags & FLF_Lamar) <> 0 BREAK
CASE FR_JIMMY RETURN (g_FriendLocations[eLoc].iFlags & FLF_Jimmy) <> 0 BREAK
CASE FR_AMANDA RETURN (g_FriendLocations[eLoc].iFlags & FLF_Amanda) <> 0 BREAK
CASE FR_FRANKLIN RETURN (g_FriendLocations[eLoc].iFlags & FLF_Franklin) <> 0 BREAK
ENDSWITCH
#IF IS_DEBUG_BUILD
TEXT_LABEL_63 tLoc = GetLabel_enumFriendLocation(eLoc)
TEXT_LABEL_63 tFriend = GetLabel_enumFriend(eFriend)
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_IsFriendAllowed(", tLoc, ") - Invalid friend ID: ", tFriend)
SCRIPT_ASSERT("FriendLoc_IsFriendAllowed() - Invalid friend ID")
#ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL FriendLoc_AreFlagsSet(enumFriendLocation eLoc, INT iTestFlags)
RETURN (g_FriendLocations[eLoc].iFlags & iTestFlags) = iTestFlags
ENDFUNC
#if USE_CLF_DLC
FUNC BOOL FriendLoc_IsUsableCLF(enumFriend ePlayer, enumFriend eFriend, enumFriendLocation eFriendLoc, BOOL bIsForDropoff)
ePlayer = ePlayer
eFriend = eFriend
// Check safehouse cutscene isn't primed
// If close to a mission, don't use
SP_MISSIONS eMission
REPEAT SP_MISSION_MAX_CLF eMission
IF IS_MISSION_AVAILABLE(eMission) AND NOT DOES_MISSION_TRIGGER_MOVE(eMission)
VECTOR vMissionPos
STATIC_BLIP_NAME_ENUM eMissionBlip
eMissionBlip = g_sMissionStaticData[eMission].blip
IF eMissionBlip <> STATIC_BLIP_NAME_DUMMY_FINAL
IF IS_STATIC_BLIP_MULTIMODE(eMissionBlip)
vMissionPos = GET_STATIC_BLIP_POSITION(eMissionBlip, GET_CURRENT_PLAYER_PED_INT())
ELSE
vMissionPos = GET_STATIC_BLIP_POSITION(eMissionBlip)
ENDIF
FLOAT fDistToMission = VDIST(vMissionPos, g_FriendLocations[eFriendLoc].vPickupCoord)
IF fDistToMission < CONST_FriendLoc_fMinDistMission
#IF IS_DEBUG_BUILD
TEXT_LABEL_63 tMission = "<unknown>"
IF eMission < SP_MISSION_MAX_CLF
tMission = g_sMissionStaticData[eMission].scriptName
ENDIF
CPRINTLN(DEBUG_FRIENDS, " * ", GetLabel_enumFriendLocation(eFriendLoc), " REJECTED - too close to mission \"", tMission, "\" (", fDistToMission, "m)")
#ENDIF
RETURN FALSE
ENDIF
ENDIF
ENDIF
ENDREPEAT
// Is this loc too close to player?
VECTOR vLocPos = g_FriendLocations[eFriendLoc].vPickupCoord
FLOAT fDistToPlayer2 = VDIST2(vLocPos, GET_ENTITY_COORDS(PLAYER_PED_ID()))
FLOAT fMinPlayerDist
IF NOT bIsForDropoff
fMinPlayerDist = CONST_FriendLoc_fMinDistPickup
ELSE
fMinPlayerDist = CONST_FriendLoc_fMinDistDropoff
ENDIF
IF fDistToPlayer2 < fMinPlayerDist*fMinPlayerDist
CPRINTLN(DEBUG_FRIENDS, " * ", GetLabel_enumFriendLocation(eFriendLoc), " REJECTED - too close to player, ", SQRT(fDistToPlayer2))
RETURN FALSE
ENDIF
// If linked to a savehouse, is the savehouse unlocked?
IF g_FriendLocations[eFriendLoc].hSavehouse <> NUMBER_OF_CLF_SAVEHOUSE
IF NOT Is_Savehouse_Respawn_Available(g_FriendLocations[eFriendLoc].hSavehouse)
CPRINTLN(DEBUG_FRIENDS, " * ", GetLabel_enumFriendLocation(eFriendLoc), " REJECTED - linked savehouse is not unlocked")
RETURN FALSE
ENDIF
ENDIF
RETURN TRUE
ENDFUNC
#endif
#if USE_NRM_DLC
FUNC BOOL FriendLoc_IsUsableNRM(enumFriend ePlayer, enumFriend eFriend, enumFriendLocation eFriendLoc, BOOL bIsForDropoff)
ePlayer = ePlayer
eFriend = eFriend
// If close to a mission, don't use
SP_MISSIONS eMission
REPEAT SP_MISSION_MAX_NRM eMission
IF IS_MISSION_AVAILABLE(eMission) AND NOT DOES_MISSION_TRIGGER_MOVE(eMission)
VECTOR vMissionPos
STATIC_BLIP_NAME_ENUM eMissionBlip
eMissionBlip = g_sMissionStaticData[eMission].blip
IF eMissionBlip <> STATIC_BLIP_NAME_DUMMY_FINAL
IF IS_STATIC_BLIP_MULTIMODE(eMissionBlip)
vMissionPos = GET_STATIC_BLIP_POSITION(eMissionBlip, GET_CURRENT_PLAYER_PED_INT())
ELSE
vMissionPos = GET_STATIC_BLIP_POSITION(eMissionBlip)
ENDIF
FLOAT fDistToMission = VDIST(vMissionPos, g_FriendLocations[eFriendLoc].vPickupCoord)
IF fDistToMission < CONST_FriendLoc_fMinDistMission
#IF IS_DEBUG_BUILD
TEXT_LABEL_63 tMission = "<unknown>"
IF eMission < SP_MISSION_MAX_NRM
tMission = g_sMissionStaticData[eMission].scriptName
ENDIF
CPRINTLN(DEBUG_FRIENDS, " * ", GetLabel_enumFriendLocation(eFriendLoc), " REJECTED - too close to mission \"", tMission, "\" (", fDistToMission, "m)")
#ENDIF
RETURN FALSE
ENDIF
ENDIF
ENDIF
ENDREPEAT
// Is this loc too close to player?
VECTOR vLocPos = g_FriendLocations[eFriendLoc].vPickupCoord
FLOAT fDistToPlayer2 = VDIST2(vLocPos, GET_ENTITY_COORDS(PLAYER_PED_ID()))
FLOAT fMinPlayerDist
IF NOT bIsForDropoff
fMinPlayerDist = CONST_FriendLoc_fMinDistPickup
ELSE
fMinPlayerDist = CONST_FriendLoc_fMinDistDropoff
ENDIF
IF fDistToPlayer2 < fMinPlayerDist*fMinPlayerDist
CPRINTLN(DEBUG_FRIENDS, " * ", GetLabel_enumFriendLocation(eFriendLoc), " REJECTED - too close to player, ", SQRT(fDistToPlayer2))
RETURN FALSE
ENDIF
// If linked to a savehouse, is the savehouse unlocked?
IF g_FriendLocations[eFriendLoc].hSavehouse <> NUMBER_OF_NRM_SAVEHOUSE
IF NOT Is_Savehouse_Respawn_Available(g_FriendLocations[eFriendLoc].hSavehouse)
CPRINTLN(DEBUG_FRIENDS, " * ", GetLabel_enumFriendLocation(eFriendLoc), " REJECTED - linked savehouse is not unlocked")
RETURN FALSE
ENDIF
ENDIF
RETURN TRUE
ENDFUNC
#endif
FUNC BOOL FriendLoc_IsUsable(enumFriend ePlayer, enumFriend eFriend, enumFriendLocation eFriendLoc, BOOL bIsForDropoff)
#if USE_CLF_DLC
return FriendLoc_IsUsableCLF(ePlayer,eFriend,eFriendLoc,bIsForDropoff)
#endif
#if USE_NRM_DLC
return FriendLoc_IsUsableNRM(ePlayer,eFriend,eFriendLoc,bIsForDropoff)
#endif
#if not USE_CLF_DLC
#if not USE_NRM_DLC
// If in exile (and Michael or Trevor involved), don't allow locations in the city
IF ePlayer = FR_MICHAEL OR ePlayer = FR_TREVOR
OR eFriend = FR_MICHAEL OR eFriend = FR_TREVOR
IF PRIVATE_IS_POINT_IN_CITY(g_FriendLocations[eFriendLoc].vPickupCoord)
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MICHAEL_TREVOR_EXILE_STARTED)
AND NOT GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MICHAEL_TREVOR_EXILE_FINISHED)
CPRINTLN(DEBUG_FRIENDS, " * ", GetLabel_enumFriendLocation(eFriendLoc), " REJECTED - Michael and Trevor are in exile")
RETURN FALSE
ENDIF
ENDIF
ENDIF
// Check safehouse cutscene isn't primed
IF eFriendLoc = FLOC_franklin_VH
BOOL bCutscenePrimed = FALSE
IF ENUM_TO_INT(LAUNCH_BIT_SH_INTRO_F_HILLS) <= 31
bCutscenePrimed = IS_BIT_SET(g_savedGlobals.sFlow.controls.bitsetIDs[FLOWBITSET_RESTART_FLOW_LAUNCHED_SCRIPTS_1], ENUM_TO_INT(LAUNCH_BIT_SH_INTRO_F_HILLS))
ELSE
bCutscenePrimed = IS_BIT_SET(g_savedGlobals.sFlow.controls.bitsetIDs[FLOWBITSET_RESTART_FLOW_LAUNCHED_SCRIPTS_2], ENUM_TO_INT(LAUNCH_BIT_SH_INTRO_F_HILLS) - 31)
ENDIF
IF bCutscenePrimed
CPRINTLN(DEBUG_FRIENDS, " * ", GetLabel_enumFriendLocation(eFriendLoc), " REJECTED - Franklin's safehouse cutscene is primed")
RETURN FALSE
ENDIF
ENDIF
IF eFriendLoc = FLOC_michael_RH
BOOL bCutscenePrimed = FALSE
IF ENUM_TO_INT(LAUNCH_BIT_SH_INTRO_M_HOME) <= 31
bCutscenePrimed = IS_BIT_SET(g_savedGlobals.sFlow.controls.bitsetIDs[FLOWBITSET_RESTART_FLOW_LAUNCHED_SCRIPTS_1], ENUM_TO_INT(LAUNCH_BIT_SH_INTRO_M_HOME))
ELSE
bCutscenePrimed = IS_BIT_SET(g_savedGlobals.sFlow.controls.bitsetIDs[FLOWBITSET_RESTART_FLOW_LAUNCHED_SCRIPTS_2], ENUM_TO_INT(LAUNCH_BIT_SH_INTRO_M_HOME) - 31)
ENDIF
IF bCutscenePrimed
CPRINTLN(DEBUG_FRIENDS, " * ", GetLabel_enumFriendLocation(eFriendLoc), " REJECTED - Michael's safehouse cutscene is primed")
RETURN FALSE
ENDIF
ENDIF
// If close to a mission, don't use
SP_MISSIONS eMission
REPEAT SP_MISSION_MAX eMission
IF IS_MISSION_AVAILABLE(eMission) AND NOT DOES_MISSION_TRIGGER_MOVE(eMission)
VECTOR vMissionPos
STATIC_BLIP_NAME_ENUM eMissionBlip
eMissionBlip = g_sMissionStaticData[eMission].blip
IF eMissionBlip <> STATIC_BLIP_NAME_DUMMY_FINAL
IF IS_STATIC_BLIP_MULTIMODE(eMissionBlip)
vMissionPos = GET_STATIC_BLIP_POSITION(eMissionBlip, GET_CURRENT_PLAYER_PED_INT())
ELSE
vMissionPos = GET_STATIC_BLIP_POSITION(eMissionBlip)
ENDIF
FLOAT fDistToMission = VDIST(vMissionPos, g_FriendLocations[eFriendLoc].vPickupCoord)
IF fDistToMission < CONST_FriendLoc_fMinDistMission
#IF IS_DEBUG_BUILD
TEXT_LABEL_63 tMission = "<unknown>"
IF eMission < SP_MISSION_MAX
tMission = g_sMissionStaticData[eMission].scriptName
ENDIF
CPRINTLN(DEBUG_FRIENDS, " * ", GetLabel_enumFriendLocation(eFriendLoc), " REJECTED - too close to mission \"", tMission, "\" (", fDistToMission, "m)")
#ENDIF
RETURN FALSE
ENDIF
ENDIF
ENDIF
ENDREPEAT
// Is this loc too close to player?
VECTOR vLocPos = g_FriendLocations[eFriendLoc].vPickupCoord
FLOAT fDistToPlayer2 = VDIST2(vLocPos, GET_ENTITY_COORDS(PLAYER_PED_ID()))
FLOAT fMinPlayerDist
IF NOT bIsForDropoff
fMinPlayerDist = CONST_FriendLoc_fMinDistPickup
ELSE
fMinPlayerDist = CONST_FriendLoc_fMinDistDropoff
ENDIF
IF fDistToPlayer2 < fMinPlayerDist*fMinPlayerDist
CPRINTLN(DEBUG_FRIENDS, " * ", GetLabel_enumFriendLocation(eFriendLoc), " REJECTED - too close to player, ", SQRT(fDistToPlayer2))
RETURN FALSE
ENDIF
// If linked to a savehouse, is the savehouse unlocked?
IF g_FriendLocations[eFriendLoc].hSavehouse <> NUMBER_OF_SAVEHOUSE_LOCATIONS
IF NOT Is_Savehouse_Respawn_Available(g_FriendLocations[eFriendLoc].hSavehouse)
CPRINTLN(DEBUG_FRIENDS, " * ", GetLabel_enumFriendLocation(eFriendLoc), " REJECTED - linked savehouse is not unlocked")
RETURN FALSE
ENDIF
ENDIF
RETURN TRUE
#endif
#endif
ENDFUNC
FUNC BOOL FriendLoc_GetNearestUsableLoc(VECTOR vPos, enumFriend ePlayer, enumFriend eFriend, BOOL bIsForDropoff, BOOL bIsHomeLoc, enumFriendLocation& eNearestLoc, FLOAT& fNearestDist, enumFriendLocation eAvoidLoc = NO_FRIEND_LOCATION)
// Check all friend locations...
eNearestLoc = NO_FRIEND_LOCATION
fNearestDist = 999999.0*999999.0
enumFriendLocation eLoc
REPEAT MAX_FRIEND_LOCATIONS eLoc
IF eAvoidLoc = NO_FRIEND_LOCATION
OR VDIST(g_FriendLocations[eLoc].vPickupCoord, g_FriendLocations[eAvoidLoc].vPickupCoord) > CONST_FriendLoc_fMinDistAvoidLoc
// Can this friend use this location?
IF FriendLoc_IsFriendAllowed(eLoc, eFriend)
// Is this location for pickup/dropoff?
IF (bIsForDropoff = FALSE AND FriendLoc_AreFlagsSet(eLoc, FLF_Pickup))
OR (bIsForDropoff = TRUE AND FriendLoc_AreFlagsSet(eLoc, FLF_Dropoff))
// Is this location home/generic?
IF bIsHomeLoc = FriendLoc_AreFlagsSet(eLoc, FLF_IsHomeLoc)
// Is location acceptable for use?
IF FriendLoc_IsUsable(ePlayer, eFriend, eLoc, bIsForDropoff)
FLOAT fDist = VDIST(vPos, g_FriendLocations[eLoc].vPickupCoord)
CPRINTLN(DEBUG_FRIENDS, " * ", GetLabel_enumFriendLocation(eLoc), " dist = ", fDist)
// If location is nearer than any other, store as best yet
IF fNearestDist > fDist
fNearestDist = fDist
eNearestLoc = eLoc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDREPEAT
// Return result
IF bIsHomeLoc = TRUE
CPRINTLN(DEBUG_FRIENDS, " HOME RESULT: ", GetLabel_enumFriendLocation(eNearestLoc))
ELSE
CPRINTLN(DEBUG_FRIENDS, " GENERIC RESULT: ", GetLabel_enumFriendLocation(eNearestLoc))
ENDIF
RETURN (eNearestLoc <> NO_FRIEND_LOCATION)
ENDFUNC
FUNC enumFriendLocation FriendLoc_GetBestPickupLoc(enumCharacterList playerChar, enumCharacterList buddyChar, BOOL bCheckConnectionInitMode, enumFriendLocation eAvoidLoc = NO_FRIEND_LOCATION)
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestPickupLoc(", GetLabel_enumCharacterList(buddyChar), ")...")
#IF IS_DEBUG_BUILD
IF g_ForceFriendLocation < MAX_FRIEND_LOCATIONS
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestPickupLoc() - Debug force friend location...")
RETURN g_ForceFriendLocation
ENDIF
#ENDIF
enumFriend ePlayer = GET_FRIEND_FROM_CHAR(playerChar)
enumFriend eFriend = GET_FRIEND_FROM_CHAR(buddyChar)
VECTOR vIdealPos = GET_ENTITY_COORDS(PLAYER_PED_ID())
IF buddyChar = NO_CHARACTER
SCRIPT_ASSERT("FriendLoc_GetBestPickupLoc() - Invalid buddyChar")
RETURN NO_FRIEND_LOCATION
ENDIF
// If have been asked to check the friend connection's init mode...
enumFriendConnection eConnection
IF bCheckConnectionInitMode AND GET_CONNECTION(playerChar, buddyChar, eConnection)
SWITCH GET_CONNECTION_MODE(eConnection)
CASE FC_MODE_Adhoc
IF Private_IsAdhocFriendLocReadyForUse()
// Set as in use, and return
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestPickupLoc(): ", GetLabel_enumFriendLocation(FLOC_adhoc), " (adhoc location was requested and valid)")
CLEAR_BITMASK(g_FriendLocations[FLOC_adhoc].iFlags, FLF_AdhocReadyForUse)
RETURN FLOC_adhoc
ELSE
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestPickupLoc(", GetLabel_enumCharacterList(buddyChar), ") - Connection init mode is adhoc, but adhoc loc not available for use")
ENDIF
BREAK
ENDSWITCH
ENDIF
// If this is a pickup, and friend has last known position in comfortable range, find location near there
IF IS_PLAYER_PED_PLAYABLE(buddyChar)
IF NOT HasNumOfHoursPassedSincePedTimeStruct(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[buddyChar], 1)
VECTOR vLastKnownPos = g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[buddyChar]
IF VDIST(vIdealPos, vLastKnownPos) < (CONST_FriendLoc_fMaxComfortableDist * 0.5)
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestPickupLoc() - Use friends last known location...")
vIdealPos = vLastKnownPos
ENDIF
ENDIF
ENDIF
// Find nearest home and generic locs
enumFriendLocation eHomeLoc, eGenericLoc
FLOAT fHomeDist, fGenericDist
BOOL bFoundHomeLoc = FriendLoc_GetNearestUsableLoc(vIdealPos, ePlayer, eFriend, FALSE, TRUE, eHomeLoc, fHomeDist, eAvoidLoc)
BOOL bFoundGenericLoc = FriendLoc_GetNearestUsableLoc(vIdealPos, ePlayer, eFriend, FALSE, FALSE, eGenericLoc, fGenericDist, eAvoidLoc)
IF bFoundHomeLoc AND bFoundGenericLoc
IF fHomeDist > CONST_FriendLoc_fMaxComfortableDist
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestPickupLoc(): ", GetLabel_enumFriendLocation(eGenericLoc), " (no home locs in comfortable dist)")
RETURN eGenericLoc
ELIF GET_RANDOM_INT_IN_RANGE(0, 100) < 25
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestPickupLoc(): ", GetLabel_enumFriendLocation(eGenericLoc), " (randomly discarded home loc)")
RETURN eGenericLoc
ELSE
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestPickupLoc(): ", GetLabel_enumFriendLocation(eGenericLoc))
RETURN eHomeLoc
ENDIF
ELIF bFoundHomeLoc
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestPickupLoc(): ", GetLabel_enumFriendLocation(eHomeLoc))
RETURN eHomeLoc
ELIF bFoundGenericLoc
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestPickupLoc(): ", GetLabel_enumFriendLocation(eGenericLoc))
RETURN eGenericLoc
ENDIF
// No usable location could be found - return a failsafe loc
enumFriendLocation eFailsafeLoc = FLOC_coffeeShop_RH
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestPickupLoc(): ", GetLabel_enumFriendLocation(eFailsafeLoc), " (no usable locs, using failsafe)")
RETURN eFailsafeLoc
ENDFUNC
FUNC enumFriendLocation FriendLoc_GetBestDropoffLoc(enumCharacterList playerChar, enumCharacterList buddyChar, BOOL bPreferGenericLoc = FALSE)
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestDropoffLoc(", GetLabel_enumCharacterList(buddyChar), ")...")
#IF IS_DEBUG_BUILD
IF g_ForceFriendLocation < MAX_FRIEND_LOCATIONS
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestDropoffLoc() - Debug force friend location...")
RETURN g_ForceFriendLocation
ENDIF
#ENDIF
enumFriend ePlayer = GET_FRIEND_FROM_CHAR(playerChar)
enumFriend eFriend = GET_FRIEND_FROM_CHAR(buddyChar)
VECTOR vIdealPos = GET_ENTITY_COORDS(PLAYER_PED_ID())
IF buddyChar = NO_CHARACTER
SCRIPT_ASSERT("FriendLoc_GetBestPickupLoc() - Invalid buddyChar")
RETURN NO_FRIEND_LOCATION
ENDIF
// Find nearest home and generic locs
enumFriendLocation eHomeLoc, eGenericLoc
FLOAT fHomeDist, fGenericDist
BOOL bFoundHomeLoc = FriendLoc_GetNearestUsableLoc(vIdealPos, ePlayer, eFriend, TRUE, TRUE, eHomeLoc, fHomeDist)
BOOL bFoundGenericLoc = FriendLoc_GetNearestUsableLoc(vIdealPos, ePlayer, eFriend, TRUE, FALSE, eGenericLoc, fGenericDist)
IF bPreferGenericLoc AND bFoundGenericLoc
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestDropoffLoc(): ", GetLabel_enumFriendLocation(eGenericLoc), " (generic loc is prefered in this case)")
RETURN eGenericLoc
ELIF bFoundHomeLoc AND bFoundGenericLoc
IF fHomeDist > CONST_FriendLoc_fMaxComfortableDist
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestDropoffLoc(): ", GetLabel_enumFriendLocation(eGenericLoc), " (no home locs in comfortable dist)")
RETURN eGenericLoc
ELIF GET_RANDOM_INT_IN_RANGE(0, 100) < 50
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestDropoffLoc(): ", GetLabel_enumFriendLocation(eGenericLoc), " (randomly discarded home loc)")
RETURN eGenericLoc
ELSE
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestDropoffLoc(): ", GetLabel_enumFriendLocation(eGenericLoc))
RETURN eHomeLoc
ENDIF
ELIF bFoundHomeLoc
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestDropoffLoc(): ", GetLabel_enumFriendLocation(eHomeLoc))
RETURN eHomeLoc
ELIF bFoundGenericLoc
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestPickupLoc(): ", GetLabel_enumFriendLocation(eGenericLoc))
RETURN eGenericLoc
ENDIF
// No usable location could be found - return a failsafe loc
enumFriendLocation eFailsafeLoc = FLOC_coffeeShop_RH
CPRINTLN(DEBUG_FRIENDS, "FriendLoc_GetBestDropoffLoc(): ", GetLabel_enumFriendLocation(eFailsafeLoc), " (no usable locs, using failsafe)")
RETURN eFailsafeLoc
ENDFUNC
//---------------------------------------------------------------------------------------------------
//-- Initialise friend/activity locations
//---------------------------------------------------------------------------------------------------
PROC PRIVATE_InitialiseFriendLocations(BOOL bIncludingAdhocLoc)
// Adhoc location (clear it)
IF bIncludingAdhocLoc
PRIVATE_SetupFriendLoc(FLOC_adhoc, <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
PRIVATE_SetupFriendLoc_SpawnPoint(<<0.0, 0.0, 0.0>>, 0.0, <<0.0, 0.0, 0.0>>)
ENDIF
#if not USE_CLF_DLC
#if not USE_NRM_DLC
// Michael - Beverly Hills
PRIVATE_SetupFriendLoc(FLOC_michael_RH, <<-824.9975, 179.9752, 70.4895>>, <<5.8945, -0.6014, 0.6636>>, <<7.3145, -2.6014, 0.7136>>, SAVEHOUSE_MICHAEL_BH)
PRIVATE_SetupFriendLoc_SpawnPoint(<<-860.8041, 136.4404, 59.0250>>, 0.6456, <<-828.7663, 178.8821, 71.2117>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Michael)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_PickupDropoff|FLF_IsHomeLoc)
// Michael - Country Side
PRIVATE_SetupFriendLoc(FLOC_michael_CS, <<1986.8676, 3810.9841, 31.1159>>, <<-2.2800, 0.4200, 0.1100>>, <<-1.0200, 2.2800, 0.0138>>, SAVEHOUSE_MICHAEL_CS)
PRIVATE_SetupFriendLoc_SpawnPoint(<<2138.5615, 3767.5957, 32.1819>>, 120.8022, <<1995.6809, 3818.5762, 32.1837>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Michael)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_PickupDropoff|FLF_IsHomeLoc)
// Franklin - South Central
PRIVATE_SetupFriendLoc(FLOC_franklin_SC, <<-13.8595, -1454.3317, 29.4997>>, <<0.1999, 8.5446, 0.1003>>, <<-1.0001, 7.9046, 0.1003>>, SAVEHOUSE_FRANKLIN_SC)
PRIVATE_SetupFriendLoc_SpawnPoint(<<70.9006, -1477.2407, 28.2852>>, 140.9580, <<-24.3995, -1457.3259, 30.6446>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Franklin)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_PickupDropoff|FLF_IsHomeLoc)
// Franklin - Vinewood Hills
PRIVATE_SetupFriendLoc(FLOC_franklin_VH, <<10.8316, 549.0906, 174.9739>>, <<-1.4644, -9.0339, 0.0539>>, <<-2.4844, -8.6139, -0.0211>>, SAVEHOUSE_FRANKLIN_VH)
PRIVATE_SetupFriendLoc_SpawnPoint(<<-90.6814, 511.1370, 142.8975>>, 68.9617, <<5.0911, 547.0732, 174.9908>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Franklin)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_PickupDropoff|FLF_IsHomeLoc)
// Trevor - Country Side
PRIVATE_SetupFriendLoc(FLOC_trevor_CS, <<1986.8674, 3810.9839, 31.1159>>, <<-2.2800, 0.4200, 0.1100>>, <<-1.0200, 2.2800, 0.0138>>, SAVEHOUSE_TREVOR_CS)
PRIVATE_SetupFriendLoc_SpawnPoint(<<2138.5615, 3767.5957, 32.1819>>, 120.8022, <<1995.6809, 3818.5762, 32.1837>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Trevor)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_PickupDropoff|FLF_IsHomeLoc)
// Trevor - Venice
PRIVATE_SetupFriendLoc(FLOC_trevor_VB, <<-1158.2629, -1515.8615, 3.2873>>, <<3.7331, 0.3630, 0.0341>>, <<3.1931, 1.5630, 0.0341>>, SAVEHOUSE_TREVOR_VB)
PRIVATE_SetupFriendLoc_SpawnPoint(<<-1079.3735, -1475.2400, 4.1272>>, 25.0007, <<-1166.1702, -1519.4685, 4.2290>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Trevor)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_PickupDropoff|FLF_IsHomeLoc)
// Trevor - South Central
PRIVATE_SetupFriendLoc(FLOC_trevor_SC, <<132.7787, -1305.2081, 28.1826>>, <<-1.1933, 4.1322, 0.0451>>, <<-2.1933, 3.8922, -0.0049>>, SAVEHOUSE_TREVOR_SC)
PRIVATE_SetupFriendLoc_SpawnPoint(<<65.7439, -1308.3253, 28.3417>>, 210.5102, <<125.2967, -1307.9919, 29.2187>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Trevor)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_Dropoff|FLF_IsHomeLoc)
// Trevor - South Central
PRIVATE_SetupFriendLoc(FLOC_trevor_SCp, <<176.9471, -1340.8126, 28.2908>>, <<-1.2000, 2.1000, 0.0032>>, <<-3.0000, 0.1200, 0.0032>>, SAVEHOUSE_TREVOR_SC)
PRIVATE_SetupFriendLoc_SpawnPoint(<<361.4975, -1296.7698, 31.3318>>, 140.8159, <<182.2761, -1333.3795, 28.8827>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Trevor)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_Pickup|FLF_IsHomeLoc)
#endif
#endif
PRIVATE_SetupFriendLoc(FLOC_lamar_SC, <<-57.8633, -1459.2397, 30.9940>>, <<-1.1400, 2.5200, 0.2200>>, <<-3.3600, 1.7400, 0.1667>>)
PRIVATE_SetupFriendLoc_SpawnPoint(<<68.9364, -1479.6398, 29.2941>>, 145.6588, <<-50.0051, -1459.1348, 31.9645>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Lamar)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_PickupDropoff|FLF_IsHomeLoc)
PRIVATE_SetupFriendLoc(FLOC_coffeeShop_RH, <<-14.7793, -114.3548, 55.8073>>, <<-0.7199, 3.7608, 0.0500>>, <<0.7600, 3.4800, 0.0500>>)
PRIVATE_SetupFriendLoc_SpawnPoint(<<40.2160, -256.6415, 47.4194>>, 340.2766, <<-23.3476, -113.7569, 55.8956>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Michael)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_PickupDropoff)
PRIVATE_SetupFriendLoc(FLOC_shoppingPlaza_RH, <<-597.8970, -305.1185, 33.9548>>, <<-1.0200, 0.8400, -0.0470>>, <<-0.0000, 1.6800, -0.0470>>)
PRIVATE_SetupFriendLoc_SpawnPoint(<<-584.9772, -258.7058, 34.8225>>, 210.2552, <<-590.3728, -302.9131, 34.8530>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Amanda)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_PickupDropoff)
PRIVATE_SetupFriendLoc(FLOC_shoppingMall_RH, <<-155.6107, -175.4378, 42.7614>>, <<4.5615, 6.7732, -0.1419>>, <<3.1815, 7.1932, -0.1419>>)
PRIVATE_SetupFriendLoc_SpawnPoint(<<-107.3334, -191.8515, 45.7935>>, 165.1659, <<-158.1629, -174.8294, 43.2478>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Jimmy)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_PickupDropoff)
PRIVATE_SetupFriendLoc(FLOC_minimartCarpark_RH, <<194.0434, -42.2946, 67.5703>>, <<0.2400, 4.8600, 0.0000>>, <<1.5000, 4.6800, 0.0000>>)
PRIVATE_SetupFriendLoc_SpawnPoint(<<298.4399, -19.2893, 75.8441>>, 157.1038, <<202.8657, -46.2839, 68.6749>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Franklin|FLF_Trevor)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_PickupDropoff)
PRIVATE_SetupFriendLoc(FLOC_coffeeShop_DT, <<-165.4400, -788.5505, 30.9774>>, <<-6.3719, 2.4632, 0.0021>>, <<-7.3019, 1.7432, 0.0021>>)
PRIVATE_SetupFriendLoc_SpawnPoint(<<-156.6818, -713.4197, 33.5995>>, 241.8992, <<-159.4454, -778.2214, 32.2215>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Michael|FLF_Amanda)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_PickupDropoff)
// PRIVATE_SetupFriendLoc(FLOC_gasStation_DT, <<-533.4040, -1216.7991, 17.2878>>, <<-1.9116, -1.5079, 0.1537>>, <<0.4284, -2.7079, 0.1537>>)
// PRIVATE_SetupFriendLoc_SpawnPoint(<<-624.6393, -1307.6018, 10.5829>>, 326.5069, <<-532.8104, -1197.4027, 18.2464>>)
// PRIVATE_SetupFriendLoc_CharFlags(FLF_Franklin|FLF_Trevor)
// PRIVATE_SetupFriendLoc_UsageFlags(FLF_Pickup)
PRIVATE_SetupFriendLoc(FLOC_minimartCarpark_DT, <<-820.9531, -1088.2756, 10.0086>>, <<-1.8040, 4.1191, 0.1191>>, <<-3.1240, 3.2191, 0.1191>>)
PRIVATE_SetupFriendLoc_SpawnPoint(<<-841.6274, -1165.0057, 6.0014>>, 294.8121, <<-819.1121, -1091.4512, 10.6171>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Franklin|FLF_Trevor)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_Pickup)
PRIVATE_SetupFriendLoc(FLOC_artPlaza_DT, <<234.7150, -959.0950, 28.2856>>, <<-1.6816, -0.2787, 0.0127>>, <<-1.0216, 1.4013, 0.0127>>)
PRIVATE_SetupFriendLoc_SpawnPoint(<<354.8806, -855.5883, 28.3444>>, 89.9428, <<240.9607, -948.6324, 28.1587>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Franklin|FLF_Jimmy)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_PickupDropoff)
PRIVATE_SetupFriendLoc(FLOC_bar_DT, <<249.3746, -1008.3277, 28.2705>>, <<3.8480, -3.0003, 0.0001>>, <<4.3280, -1.8003, 0.0001>>)
PRIVATE_SetupFriendLoc_SpawnPoint(<<238.4106, -1127.9969, 28.2691>>, 87.3779, <<244.4703, -1020.0197, 29.1059>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Trevor)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_Dropoff)
PRIVATE_SetupFriendLoc(FLOC_recCentre_SC, <<-210.3783, -1498.2042, 30.4273>>, <<2.2800, -2.7270, 0.1000>>, <<0.6000, -2.7270, 0.1000>>)
PRIVATE_SetupFriendLoc_SpawnPoint(<<-281.0350, -1533.1519, 26.3419>>, 343.7635, <<-219.2698, -1492.0404, 31.2461>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Lamar)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_PickupDropoff)
PRIVATE_SetupFriendLoc(FLOC_shoppingPlaza_VB, <<-1220.5693, -773.4271, 17.1055>>, <<3.8194, 4.9089, 0.0656>>, <<5.9194, 4.1889, -0.0844>>)
PRIVATE_SetupFriendLoc_SpawnPoint(<<-1212.7676, -876.4072, 12.1331>>, 309.3317, <<-1209.4172, -785.0978, 16.9499>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Michael|FLF_Jimmy|FLF_Amanda)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_PickupDropoff)
PRIVATE_SetupFriendLoc(FLOC_bar_VB, <<-1391.7634, -584.7326, 29.2332>>, <<-2.1715, -1.7725, -0.0100>>, <<-2.6515, -3.3925, -0.1100>>)
PRIVATE_SetupFriendLoc_SpawnPoint(<<-1513.6841, -678.0259, 27.4965>>, 47.7650, <<-1409.2719, -590.8218, 30.3243>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Trevor)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_Dropoff)
PRIVATE_SetupFriendLoc(FLOC_minimartCarpark_MW, <<-1345.2792, -385.1048, 35.7550>>, <<1.8600, -0.7800, 0.0000>>, <<1.2000, -1.6200, 0.0000>>)
PRIVATE_SetupFriendLoc_SpawnPoint(<<-1325.3550, -453.5642, 33.4523>>, 35.2950, <<-1346.2457, -397.8710, 36.6207>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_Franklin|FLF_Lamar)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_PickupDropoff)
PRIVATE_SetupFriendLoc(FLOC_paletoMainSt_PA, <<-14.6068, 6505.2427, 30.5105>>, <<-0.5104, -7.4223, 0.0239>>, <<0.8696, -6.2223, 0.0239>>)
PRIVATE_SetupFriendLoc_SpawnPoint(<<90.1534, 6595.7891, 30.5382>>, 47.4841, <<-8.4122, 6513.6074, 31.3368>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_AllChars)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_PickupDropoff)
PRIVATE_SetupFriendLoc(FLOC_minimartCarpark_SS, <<1393.7161, 3592.5854, 33.9297>>, <<0.8771, 4.9569, 0.0859>>, <<-0.9829, 5.4369, 0.0859>>)
PRIVATE_SetupFriendLoc_SpawnPoint(<<1449.0967, 3669.6899, 33.1474>>, 201.6678, <<1408.6346, 3599.1831, 34.8791>>)
PRIVATE_SetupFriendLoc_CharFlags(FLF_AllChars)
PRIVATE_SetupFriendLoc_UsageFlags(FLF_PickupDropoff)
ENDPROC
PROC PRIVATE_InitialiseActivityLocations()
PRIVATE_SetupActivityLoc(ALOC_golf_countryClub, ATYPE_golf, STATIC_BLIP_MINIGAME_GOLF)
PRIVATE_SetupActivityLoc(ALOC_tennis_beachCourt, ATYPE_tennis, STATIC_BLIP_MINIGAME_TENNIS)
PRIVATE_SetupActivityLoc(ALOC_tennis_michaelHouse, ATYPE_tennis, STATIC_BLIP_MINIGAME_TENNIS_MICHAEL_HOUSE)
PRIVATE_SetupActivityLoc(ALOC_tennis_vinewoodhotel1, ATYPE_tennis, STATIC_BLIP_MINIGAME_TENNIS_VINEWOOD_HOTEL1)
PRIVATE_SetupActivityLoc(ALOC_tennis_richmanHotel1, ATYPE_tennis, STATIC_BLIP_MINIGAME_TENNIS_RICHMAN_HOTEL1)
PRIVATE_SetupActivityLoc(ALOC_tennis_LSUCourt1, ATYPE_tennis, STATIC_BLIP_MINIGAME_TENNIS_LSU_COURT1)
PRIVATE_SetupActivityLoc(ALOC_tennis_vespucciHotel, ATYPE_tennis, STATIC_BLIP_MINIGAME_TENNIS_VESPUCCI_HOTEL)
PRIVATE_SetupActivityLoc(ALOC_tennis_weazelCourt1, ATYPE_tennis, STATIC_BLIP_MINIGAME_TENNIS_WEAZEL_COURT)
PRIVATE_SetupActivityLoc(ALOC_tennis_chumashHotel, ATYPE_tennis, STATIC_BLIP_MINIGAME_TENNIS_CHUMASH_HOTEL)
PRIVATE_SetupActivityLoc(ALOC_stripclub_southCentral, ATYPE_stripclub, STATIC_BLIP_MINIGAME_STRIPCLUB)
// PRIVATE_SetupActivityLoc(ALOC_darts_rockClub, ATYPE_darts, STATIC_BLIP_MINIGAME_DARTS1)
PRIVATE_SetupActivityLoc(ALOC_darts_hickBar, ATYPE_darts, STATIC_BLIP_MINIGAME_DARTS2)
PRIVATE_SetupActivityLoc(ALOC_cinema_vinewood, ATYPE_cinema, STATIC_BLIP_ACTIVITY_CINEMA_VINEWOOD)
PRIVATE_SetupActivityLoc(ALOC_cinema_downtown, ATYPE_cinema, STATIC_BLIP_ACTIVITY_CINEMA_DOWNTOWN)
PRIVATE_SetupActivityLoc(ALOC_cinema_morningwood, ATYPE_cinema, STATIC_BLIP_ACTIVITY_CINEMA_MORNINGWOOD)
PRIVATE_SetupActivityLoc(ALOC_bar_bahamas, ATYPE_bar, STATIC_BLIP_ACTIVITY_BAR_BAHAMA)
PRIVATE_SetupActivityLoc(ALOC_bar_baybar, ATYPE_bar, STATIC_BLIP_ACTIVITY_BAR_BAYBAR)
PRIVATE_SetupActivityLoc(ALOC_bar_biker, ATYPE_bar, STATIC_BLIP_ACTIVITY_BAR_BIKER)
PRIVATE_SetupActivityLoc(ALOC_bar_downtown, ATYPE_bar, STATIC_BLIP_ACTIVITY_BAR_DOWNTOWN)
PRIVATE_SetupActivityLoc(ALOC_bar_himen, ATYPE_bar, STATIC_BLIP_ACTIVITY_BAR_HIMEN)
PRIVATE_SetupActivityLoc(ALOC_bar_mojitos, ATYPE_bar, STATIC_BLIP_ACTIVITY_BAR_MOJITO)
PRIVATE_SetupActivityLoc(ALOC_bar_singletons, ATYPE_bar, STATIC_BLIP_ACTIVITY_BAR_SINGLETONS)
#IF NOT USE_SP_DLC
PRIVATE_SetupActivityLoc(ALOC_suspendFriends, ATYPE_suspend, STATIC_BLIP_MISSION_ARMENIAN)
#ENDIF
ENDPROC
//---------------------------------------------------------------------------------------------------
//-- DROPOFF SCENE DATA
//---------------------------------------------------------------------------------------------------
FUNC BOOL Private_FLOC_GetDropoffScene(enumFriendLocation eFriendLoc, structFDropoffScene& scene)
// Get loc-specific positions
SWITCH eFriendLoc
CASE FLOC_michael_RH
scene.mFootPans[0].mStart.vPos = <<-826.7827, 183.7083, 72.2750>>
scene.mFootPans[0].mStart.vRot = <<24.3451, 0.0000, -121.7598>>
scene.mFootPans[0].mEnd.vPos = <<-826.7559, 183.7018, 71.8113>>
scene.mFootPans[0].mEnd.vRot = <<3.8335, 0.0000, -148.4988>>
scene.mFootPans[0].fFov = 47.4693
scene.mFootPans[0].fDuration = 5.0000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<-826.2693, 180.6290, 71.8522>>
scene.mFootPans[1].mStart.vRot = <<0.3385, 0.0000, -125.3694>>
scene.mFootPans[1].mEnd.vPos = <<-826.1978, 180.5609, 71.8527>>
scene.mFootPans[1].mEnd.vRot = <<0.3385, 0.0000, -125.3694>>
scene.mFootPans[1].fFov = 32.2780
scene.mFootPans[1].fDuration = 2.6000
scene.mFootPans[1].bEnabled = TRUE
scene.mFootPans[2].mStart.vPos = <<-825.2714, 181.3561, 71.8458>>
scene.mFootPans[2].mStart.vRot = <<0.3457, 0.0000, -154.4318>>
scene.mFootPans[2].mEnd.vPos = <<-825.2325, 181.2749, 71.8464>>
scene.mFootPans[2].mEnd.vRot = <<0.3457, 0.0000, -154.4318>>
scene.mFootPans[2].fFov = 29.2584
scene.mFootPans[2].fDuration = 3.0000
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<-823.1770, 180.3802, 71.8216>>
scene.mFootPans[3].mStart.vRot = <<-3.9551, 0.0000, 122.8645>>
scene.mFootPans[3].mEnd.vPos = <<-823.3178, 180.3653, 71.8129>>
scene.mFootPans[3].mEnd.vRot = <<-3.7621, 0.0000, 116.8534>>
scene.mFootPans[3].fFov = 50.0000
scene.mFootPans[3].fDuration = 3.0000
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 0.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<-826.7559, 183.7018, 71.8113>>
scene.mFootPans[5].mStart.vRot = <<3.8335, 0.0000, -148.4988>>
scene.mFootPans[5].mEnd.vPos = <<-826.7559, 183.7018, 71.8113>>
scene.mFootPans[5].mEnd.vRot = <<3.8335, 0.0000, -148.4988>>
scene.mFootPans[5].fFov = 47.4693
scene.mFootPans[5].fDuration = 0.0000
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<-826.7559, 183.7018, 71.8113>>
scene.mFootCatchupCam.vRot = <<3.8335, 0.0000, -148.4988>>
scene.fFootCatchupFov = 47.4693
scene.mCarCatchupCam.vPos = <<-826.7559, 183.7018, 71.8113>>
scene.mCarCatchupCam.vRot = <<3.8335, 0.0000, -148.4988>>
scene.fCarCatchupFov = 47.4693
scene.vCarPos = <<-830.1575, 175.3299, 71.1486>>
scene.fCarRot = 335.0000
scene.vPlayerPos = <<-825.5045, 179.6075, 70.4304>>
scene.vPedPos[0] = <<-824.0706, 179.5434, 70.4812>>
scene.vPedPos[1] = <<-824.3851, 178.7221, 70.3815>>
scene.vExitPos = <<-816.7786, 178.2218, 71.2278>>
scene.fFootSpeechDelay = 3.0300
scene.fFootFinalDelay = 0.0000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 0.0000
scene.bFootCam2IsAlternative = TRUE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<-816.7786, 178.2218, 71.2278>>
scene.vCarFakeDrivePos = <<-816.7786, 178.2218, 71.2278>>
scene.mExtraRespot.vCarPos = <<-857.8395, 158.6697, 64.0398>>
scene.mExtraRespot.fCarRot = 352.0800
scene.mExtraRespot.expandDir = 1
scene.vSwitchPos[0] = <<-791.8809, 155.0175, 70.6749>>
scene.fSwitchRot[0] = 189.9119
scene.vSwitchPos[1] = <<-795.0798, 176.0365, 72.8350>>
scene.fSwitchRot[1] = 186.5013
RETURN TRUE
BREAK
CASE FLOC_michael_CS
scene.mFootPans[0].mStart.vPos = <<1988.6624, 3809.2454, 33.8890>>
scene.mFootPans[0].mStart.vRot = <<2.3222, 0.0000, 59.8915>>
scene.mFootPans[0].mEnd.vPos = <<1988.4095, 3808.3806, 32.7818>>
scene.mFootPans[0].mEnd.vRot = <<-3.5227, 0.0000, 34.7012>>
scene.mFootPans[0].fFov = 41.7859
scene.mFootPans[0].fDuration = 5.0000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<1999.1309, 3808.3823, 37.3600>>
scene.mFootPans[1].mStart.vRot = <<-19.3735, 0.0000, 77.9903>>
scene.mFootPans[1].mEnd.vPos = <<1999.1309, 3808.3823, 34.3600>>
scene.mFootPans[1].mEnd.vRot = <<-19.3735, 0.0000, 77.9903>>
scene.mFootPans[1].fFov = 50.0000
scene.mFootPans[1].fDuration = 0.0000
scene.mFootPans[1].bEnabled = FALSE
scene.mFootPans[2].mStart.vPos = <<1986.5365, 3808.7122, 32.7272>>
scene.mFootPans[2].mStart.vRot = <<-4.2982, 0.0419, -15.1045>>
scene.mFootPans[2].mEnd.vPos = <<1986.5460, 3808.7468, 32.7245>>
scene.mFootPans[2].mEnd.vRot = <<-4.2982, 0.0419, -17.9532>>
scene.mFootPans[2].fFov = 27.6284
scene.mFootPans[2].fDuration = 4.0000
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<1984.6704, 3817.9023, 32.6427>>
scene.mFootPans[3].mStart.vRot = <<-1.1635, 0.0008, -168.3680>>
scene.mFootPans[3].mEnd.vPos = <<1984.8875, 3817.2974, 32.6298>>
scene.mFootPans[3].mEnd.vRot = <<-1.1635, 0.0008, -168.3680>>
scene.mFootPans[3].fFov = 39.0874
scene.mFootPans[3].fDuration = 5.0000
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 0.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<1985.8000, 3811.2000, 32.6000>>
scene.mFootPans[5].mStart.vRot = <<-3.2000, 0.0000, -172.8000>>
scene.mFootPans[5].mEnd.vPos = <<1985.8000, 3811.2000, 32.6000>>
scene.mFootPans[5].mEnd.vRot = <<-3.2000, 0.0000, -172.8000>>
scene.mFootPans[5].fFov = 50.0000
scene.mFootPans[5].fDuration = 0.0000
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<1985.8000, 3811.2000, 32.6000>>
scene.mFootCatchupCam.vRot = <<-3.2000, 0.0000, -172.8000>>
scene.fFootCatchupFov = 50.0000
scene.mCarCatchupCam.vPos = <<1985.8000, 3811.2000, 32.6000>>
scene.mCarCatchupCam.vRot = <<-3.2000, 0.0000, -172.8000>>
scene.fCarCatchupFov = 50.0000
scene.vCarPos = <<1984.5452, 3797.0647, 31.2530>>
scene.fCarRot = 303.7500
scene.vPlayerPos = <<1986.3514, 3809.7446, 31.1284>>
scene.vPedPos[0] = <<1986.5624, 3811.7476, 31.1313>>
scene.vPedPos[1] = <<1987.7986, 3811.0820, 31.0998>>
scene.vExitPos = <<1977.8676, 3815.6641, 32.7359>>
scene.fFootSpeechDelay = 3.2250
scene.fFootFinalDelay = 0.0000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 0.0000
scene.bFootCam2IsAlternative = FALSE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<1977.8676, 3815.6641, 32.7359>>
scene.vCarFakeDrivePos = <<1977.8676, 3815.6641, 32.7359>>
scene.mExtraRespot.vCarPos = <<1996.4338, 3822.8494, 31.1168>>
scene.mExtraRespot.fCarRot = 200.8800
scene.mExtraRespot.expandDir = 9
scene.vSwitchPos[0] = <<1970.1608, 3832.6973, 31.0051>>
scene.fSwitchRot[0] = 345.2400
scene.vSwitchPos[1] = <<1923.8464, 3793.4844, 31.3044>>
scene.fSwitchRot[1] = 24.6026
RETURN TRUE
BREAK
CASE FLOC_franklin_SC
scene.mFootPans[0].mStart.vPos = <<-15.8397, -1454.1493, 32.0213>>
scene.mFootPans[0].mStart.vRot = <<-0.6298, 0.0085, -9.3542>>
scene.mFootPans[0].mEnd.vPos = <<-15.0177, -1455.2998, 31.1352>>
scene.mFootPans[0].mEnd.vRot = <<-4.2034, -0.0715, -24.1621>>
scene.mFootPans[0].fFov = 38.6495
scene.mFootPans[0].fDuration = 5.0000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<-25.7417, -1450.1324, 33.5422>>
scene.mFootPans[1].mStart.vRot = <<-11.1198, 0.0000, -123.8078>>
scene.mFootPans[1].mEnd.vPos = <<-25.7417, -1450.1324, 30.5422>>
scene.mFootPans[1].mEnd.vRot = <<-11.1198, 0.0000, -123.8078>>
scene.mFootPans[1].fFov = 38.2875
scene.mFootPans[1].fDuration = 0.0000
scene.mFootPans[1].bEnabled = FALSE
scene.mFootPans[2].mStart.vPos = <<-13.6389, -1451.0558, 31.0825>>
scene.mFootPans[2].mStart.vRot = <<-3.2369, -0.0290, 176.9312>>
scene.mFootPans[2].mEnd.vPos = <<-25.7417, -1450.1324, 30.5422>>
scene.mFootPans[2].mEnd.vRot = <<-11.1198, 0.0000, -123.8078>>
scene.mFootPans[2].fFov = 26.0970
scene.mFootPans[2].fDuration = 0.0000
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<-15.5813, -1457.1489, 30.8433>>
scene.mFootPans[3].mStart.vRot = <<-1.3844, 0.0000, -15.1833>>
scene.mFootPans[3].mEnd.vPos = <<-15.6248, -1457.0215, 30.8406>>
scene.mFootPans[3].mEnd.vRot = <<-0.4872, 0.0000, -12.8425>>
scene.mFootPans[3].fFov = 32.9661
scene.mFootPans[3].fDuration = 4.0000
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 0.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<-14.4000, -1453.1000, 31.0000>>
scene.mFootPans[5].mStart.vRot = <<-3.0000, 0.0000, -144.0000>>
scene.mFootPans[5].mEnd.vPos = <<-14.4000, -1453.1000, 31.0000>>
scene.mFootPans[5].mEnd.vRot = <<-3.0000, 0.0000, -144.0000>>
scene.mFootPans[5].fFov = 50.0000
scene.mFootPans[5].fDuration = 0.0000
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<-14.4000, -1453.1000, 31.0000>>
scene.mFootCatchupCam.vRot = <<-3.0000, 0.0000, -144.0000>>
scene.fFootCatchupFov = 50.0000
scene.mCarCatchupCam.vPos = <<-14.4000, -1453.1000, 31.0000>>
scene.mCarCatchupCam.vRot = <<-3.0000, 0.0000, -144.0000>>
scene.fCarCatchupFov = 50.0000
scene.vCarPos = <<-5.0612, -1456.5503, 29.4097>>
scene.fCarRot = 96.1200
scene.vPlayerPos = <<-13.8595, -1454.3317, 29.5001>>
scene.vPedPos[0] = <<-14.2219, -1452.3647, 29.5429>>
scene.vPedPos[1] = <<-13.2385, -1452.1836, 29.5480>>
scene.vExitPos = <<-13.9595, -1441.4316, 30.2797>>
scene.fFootSpeechDelay = 3.0000
scene.fFootFinalDelay = 0.0000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 0.0000
scene.bFootCam2IsAlternative = FALSE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<-13.9595, -1441.4316, 30.2797>>
scene.vCarFakeDrivePos = <<-13.9595, -1441.4316, 30.2797>>
scene.mExtraRespot.vCarPos = <<-31.3914, -1468.3141, 30.0697>>
scene.mExtraRespot.fCarRot = 274.6800
scene.mExtraRespot.expandDir = 9
scene.vSwitchPos[0] = <<-14.3429, -1423.3442, 29.7124>>
scene.fSwitchRot[0] = 257.0400
scene.vSwitchPos[1] = <<9.0406, -1416.8967, 28.3067>>
scene.fSwitchRot[1] = 270.7200
scene.vSwitchPos[2] = <<0.0000, 0.0000, 0.0000>>
scene.fSwitchRot[2] = 0.0000
RETURN TRUE
BREAK
CASE FLOC_franklin_VH
scene.mFootPans[0].mStart.vPos = <<21.2376, 576.7308, 185.7817>>
scene.mFootPans[0].mStart.vRot = <<1.9456, 0.0255, 179.1536>>
scene.mFootPans[0].mEnd.vPos = <<21.2591, 576.9102, 183.7657>>
scene.mFootPans[0].mEnd.vRot = <<-6.2299, 0.0255, 171.9914>>
scene.mFootPans[0].fFov = 39.7040
scene.mFootPans[0].fDuration = 6.0000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<12.3045, 550.5663, 176.4523>>
scene.mFootPans[1].mStart.vRot = <<-4.0739, 0.0000, 153.0748>>
scene.mFootPans[1].mEnd.vPos = <<12.1710, 550.1313, 176.4203>>
scene.mFootPans[1].mEnd.vRot = <<-3.1393, 0.0000, 151.8330>>
scene.mFootPans[1].fFov = 31.4978
scene.mFootPans[1].fDuration = 10.0000
scene.mFootPans[1].bEnabled = TRUE
scene.mFootPans[2].mStart.vPos = <<-9.2007, 554.8126, 180.3407>>
scene.mFootPans[2].mStart.vRot = <<-8.5854, -0.0669, -106.6038>>
scene.mFootPans[2].mEnd.vPos = <<-9.2007, 554.8126, 177.3407>>
scene.mFootPans[2].mEnd.vRot = <<-8.5854, -0.0669, -106.6038>>
scene.mFootPans[2].fFov = 35.9812
scene.mFootPans[2].fDuration = 0.0000
scene.mFootPans[2].bEnabled = FALSE
scene.mFootPans[3].mStart.vPos = <<11.9662, 545.9982, 176.3420>>
scene.mFootPans[3].mStart.vRot = <<-4.2197, 0.0086, 36.2193>>
scene.mFootPans[3].mEnd.vPos = <<11.9368, 546.1504, 176.3316>>
scene.mFootPans[3].mEnd.vRot = <<-4.2197, 0.0086, 35.5229>>
scene.mFootPans[3].fFov = 50.0000
scene.mFootPans[3].fDuration = 4.0000
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 0.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<21.2591, 576.9102, 183.7657>>
scene.mFootPans[5].mStart.vRot = <<-6.2299, 0.0255, 171.9914>>
scene.mFootPans[5].mEnd.vPos = <<21.2591, 576.9102, 183.7657>>
scene.mFootPans[5].mEnd.vRot = <<-6.2299, 0.0255, 171.9914>>
scene.mFootPans[5].fFov = 39.7040
scene.mFootPans[5].fDuration = 0.0000
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<21.2591, 576.9102, 183.7657>>
scene.mFootCatchupCam.vRot = <<-6.2299, 0.0255, 171.9914>>
scene.fFootCatchupFov = 39.7040
scene.mCarCatchupCam.vPos = <<21.2591, 576.9102, 183.7657>>
scene.mCarCatchupCam.vRot = <<-6.2299, 0.0255, 171.9914>>
scene.fCarCatchupFov = 39.7040
scene.vCarPos = <<16.4339, 549.3853, 175.3116>>
scene.fCarRot = 56.2500
scene.vPlayerPos = <<10.8375, 549.0540, 174.9718>>
scene.vPedPos[0] = <<11.4257, 547.3162, 174.9038>>
scene.vPedPos[1] = <<10.0769, 547.0983, 174.7723>>
scene.vExitPos = <<8.1316, 539.2505, 174.9739>>
scene.fFootSpeechDelay = 3.0250
scene.fFootFinalDelay = 0.0000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 0.0000
scene.bFootCam2IsAlternative = FALSE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<8.1316, 539.2505, 174.9739>>
scene.vCarFakeDrivePos = <<8.1316, 539.2505, 174.9739>>
scene.mExtraRespot.vCarPos = <<24.9549, 566.2881, 177.4016>>
scene.mExtraRespot.fCarRot = 110.1600
scene.mExtraRespot.expandDir = 9
scene.vSwitchPos[0] = <<14.6234, 526.1260, 173.6292>>
scene.fSwitchRot[0] = 115.5600
scene.vSwitchPos[1] = <<11.0096, 521.3150, 169.2275>>
scene.fSwitchRot[1] = 197.1696
scene.vSwitchPos[2] = <<0.0000, 0.0000, 0.0000>>
scene.fSwitchRot[2] = 0.0000
RETURN TRUE
BREAK
CASE FLOC_trevor_CS
scene.mFootPans[0].mStart.vPos = <<1988.6624, 3809.2454, 33.8890>>
scene.mFootPans[0].mStart.vRot = <<2.3222, 0.0000, 59.8915>>
scene.mFootPans[0].mEnd.vPos = <<1988.4095, 3808.3806, 32.7818>>
scene.mFootPans[0].mEnd.vRot = <<-3.5227, 0.0000, 34.7012>>
scene.mFootPans[0].fFov = 41.7859
scene.mFootPans[0].fDuration = 5.0000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<1999.1309, 3808.3823, 37.3600>>
scene.mFootPans[1].mStart.vRot = <<-19.3735, 0.0000, 77.9903>>
scene.mFootPans[1].mEnd.vPos = <<1999.1309, 3808.3823, 34.3600>>
scene.mFootPans[1].mEnd.vRot = <<-19.3735, 0.0000, 77.9903>>
scene.mFootPans[1].fFov = 50.0000
scene.mFootPans[1].fDuration = 0.0000
scene.mFootPans[1].bEnabled = FALSE
scene.mFootPans[2].mStart.vPos = <<1986.5365, 3808.7122, 32.7272>>
scene.mFootPans[2].mStart.vRot = <<-4.2982, 0.0419, -15.1045>>
scene.mFootPans[2].mEnd.vPos = <<1986.5460, 3808.7468, 32.7245>>
scene.mFootPans[2].mEnd.vRot = <<-4.2982, 0.0419, -17.9532>>
scene.mFootPans[2].fFov = 27.6284
scene.mFootPans[2].fDuration = 4.0000
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<1984.6704, 3817.9023, 32.6427>>
scene.mFootPans[3].mStart.vRot = <<-1.1635, 0.0008, -168.3680>>
scene.mFootPans[3].mEnd.vPos = <<1984.8875, 3817.2974, 32.6298>>
scene.mFootPans[3].mEnd.vRot = <<-1.1635, 0.0008, -168.3680>>
scene.mFootPans[3].fFov = 39.0874
scene.mFootPans[3].fDuration = 5.0000
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 0.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<1985.8000, 3811.2000, 32.6000>>
scene.mFootPans[5].mStart.vRot = <<-3.2000, 0.0000, -172.8000>>
scene.mFootPans[5].mEnd.vPos = <<1985.8000, 3811.2000, 32.6000>>
scene.mFootPans[5].mEnd.vRot = <<-3.2000, 0.0000, -172.8000>>
scene.mFootPans[5].fFov = 50.0000
scene.mFootPans[5].fDuration = 0.0000
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<1985.8000, 3811.2000, 32.6000>>
scene.mFootCatchupCam.vRot = <<-3.2000, 0.0000, -172.8000>>
scene.fFootCatchupFov = 50.0000
scene.mCarCatchupCam.vPos = <<21.2591, 576.9102, 183.7657>>
scene.mCarCatchupCam.vRot = <<-6.2299, 0.0255, 171.9914>>
scene.fCarCatchupFov = 39.7040
scene.vCarPos = <<1984.5452, 3797.0647, 31.2530>>
scene.fCarRot = 303.7500
scene.vPlayerPos = <<1986.3514, 3809.7446, 31.1284>>
scene.vPedPos[0] = <<1986.5624, 3811.7476, 31.1313>>
scene.vPedPos[1] = <<1987.7986, 3811.0820, 31.0998>>
scene.vExitPos = <<1977.8676, 3815.6641, 32.7359>>
scene.fFootSpeechDelay = 3.2250
scene.fFootFinalDelay = 0.0000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 0.0000
scene.bFootCam2IsAlternative = FALSE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<8.1316, 539.2505, 174.9739>>
scene.vCarFakeDrivePos = <<8.1316, 539.2505, 174.9739>>
scene.mExtraRespot.vCarPos = <<1996.4338, 3822.8494, 31.1168>>
scene.mExtraRespot.fCarRot = 200.8800
scene.mExtraRespot.expandDir = 9
scene.vSwitchPos[0] = <<1970.1608, 3832.6973, 31.0051>>
scene.fSwitchRot[0] = 345.2400
scene.vSwitchPos[1] = <<1923.8464, 3793.4844, 31.3044>>
scene.fSwitchRot[1] = 24.6026
RETURN TRUE
BREAK
CASE FLOC_trevor_VB
scene.mFootPans[0].mStart.vPos = <<-1189.4192, -1506.4888, 4.8110>>
scene.mFootPans[0].mStart.vRot = <<4.0569, 0.0000, -111.2564>>
scene.mFootPans[0].mEnd.vPos = <<-1189.1421, -1505.7709, 4.8109>>
scene.mFootPans[0].mEnd.vRot = <<4.1072, 0.0399, -111.7328>>
scene.mFootPans[0].fFov = 41.5362
scene.mFootPans[0].fDuration = 5.5500
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<-1160.0498, -1514.5123, 4.7395>>
scene.mFootPans[1].mStart.vRot = <<-2.2734, 0.0031, -127.6174>>
scene.mFootPans[1].mEnd.vPos = <<-1159.9036, -1514.6249, 4.7321>>
scene.mFootPans[1].mEnd.vRot = <<-0.9723, 0.0031, -126.8698>>
scene.mFootPans[1].fFov = 26.7346
scene.mFootPans[1].fDuration = 5.6500
scene.mFootPans[1].bEnabled = TRUE
scene.mFootPans[2].mStart.vPos = <<-1159.9540, -1514.0223, 4.7491>>
scene.mFootPans[2].mStart.vRot = <<-2.2734, 0.0031, -143.3719>>
scene.mFootPans[2].mEnd.vPos = <<-1159.8395, -1514.1755, 4.7415>>
scene.mFootPans[2].mEnd.vRot = <<-2.2734, 0.0031, -144.9591>>
scene.mFootPans[2].fFov = 26.7346
scene.mFootPans[2].fDuration = 10.0000
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<-1157.1967, -1524.0415, 4.3609>>
scene.mFootPans[3].mStart.vRot = <<2.9759, 0.0000, 4.5130>>
scene.mFootPans[3].mEnd.vPos = <<-1157.1533, -1523.6282, 4.3821>>
scene.mFootPans[3].mEnd.vRot = <<2.9759, 0.0000, 4.5130>>
scene.mFootPans[3].fFov = 26.7346
scene.mFootPans[3].fDuration = 4.0000
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 0.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<-1156.8000, -1515.6000, 4.6000>>
scene.mFootPans[5].mStart.vRot = <<-2.9000, 0.0000, 94.0000>>
scene.mFootPans[5].mEnd.vPos = <<-1156.8000, -1515.6000, 4.6000>>
scene.mFootPans[5].mEnd.vRot = <<-2.9000, 0.0000, 94.0000>>
scene.mFootPans[5].fFov = 50.0000
scene.mFootPans[5].fDuration = 0.0000
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<-1156.8000, -1515.6000, 4.6000>>
scene.mFootCatchupCam.vRot = <<-2.9000, 0.0000, 94.0000>>
scene.fFootCatchupFov = 50.0000
scene.mCarCatchupCam.vPos = <<-1156.8000, -1515.6000, 4.6000>>
scene.mCarCatchupCam.vRot = <<-2.9000, 0.0000, 94.0000>>
scene.fCarCatchupFov = 50.0000
scene.vCarPos = <<-1168.0422, -1519.4583, 3.2867>>
scene.fCarRot = 306.2500
scene.vPlayerPos = <<-1158.2429, -1515.2214, 3.2073>>
scene.vPedPos[0] = <<-1157.5536, -1517.0989, 3.3741>>
scene.vPedPos[1] = <<-1158.4923, -1517.4436, 3.3570>>
scene.vExitPos = <<-1148.8429, -1521.8014, 3.4073>>
scene.fFootSpeechDelay = 2.9500
scene.fFootFinalDelay = 0.0000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 0.0000
scene.bFootCam2IsAlternative = TRUE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<-1148.8429, -1521.8014, 3.4073>>
scene.vCarFakeDrivePos = <<-1148.8429, -1521.8014, 3.4073>>
scene.mExtraRespot.vCarPos = <<-1176.7615, -1521.6707, 3.4037>>
scene.mExtraRespot.fCarRot = 301.6800
scene.mExtraRespot.expandDir = 9
scene.vSwitchPos[0] = <<-1148.8997, -1523.4792, 9.6331>>
scene.fSwitchRot[0] = 34.9200
scene.vSwitchPos[1] = <<-1134.4351, -1532.0051, 3.3150>>
scene.fSwitchRot[1] = 309.2400
scene.vSwitchPos[2] = <<0.0000, 0.0000, 0.0000>>
scene.fSwitchRot[2] = 0.0000
RETURN TRUE
BREAK
CASE FLOC_trevor_SC
scene.mFootPans[0].mStart.vPos = <<129.8136, -1313.4695, 29.9182>>
scene.mFootPans[0].mStart.vRot = <<21.2995, -0.0209, -12.3644>>
scene.mFootPans[0].mEnd.vPos = <<129.8168, -1313.4559, 29.3543>>
scene.mFootPans[0].mEnd.vRot = <<3.8903, -0.0209, -14.9554>>
scene.mFootPans[0].fFov = 36.2014
scene.mFootPans[0].fDuration = 5.3250
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<132.7778, -1307.6270, 29.7443>>
scene.mFootPans[1].mStart.vRot = <<-2.5340, 0.0048, -0.6283>>
scene.mFootPans[1].mEnd.vPos = <<132.7788, -1307.5266, 29.7398>>
scene.mFootPans[1].mEnd.vRot = <<-2.5340, 0.0048, -0.6283>>
scene.mFootPans[1].fFov = 27.0556
scene.mFootPans[1].fDuration = 5.1000
scene.mFootPans[1].bEnabled = TRUE
scene.mFootPans[2].mStart.vPos = <<132.4454, -1307.6449, 29.7480>>
scene.mFootPans[2].mStart.vRot = <<-3.0580, 0.0048, -11.2444>>
scene.mFootPans[2].mEnd.vPos = <<132.4589, -1307.5769, 29.7443>>
scene.mFootPans[2].mEnd.vRot = <<-2.5340, 0.0048, -11.3535>>
scene.mFootPans[2].fFov = 27.0556
scene.mFootPans[2].fDuration = 10.0500
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<129.1269, -1301.7227, 29.4008>>
scene.mFootPans[3].mStart.vRot = <<0.3160, -0.0209, -128.7821>>
scene.mFootPans[3].mEnd.vPos = <<128.7942, -1301.4554, 29.3985>>
scene.mFootPans[3].mEnd.vRot = <<0.3160, -0.0209, -128.7821>>
scene.mFootPans[3].fFov = 40.4680
scene.mFootPans[3].fDuration = 10.7250
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 0.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<132.8000, -1305.1000, 29.7000>>
scene.mFootPans[5].mStart.vRot = <<-6.6000, 0.0000, 177.3000>>
scene.mFootPans[5].mEnd.vPos = <<132.8000, -1305.1000, 29.7000>>
scene.mFootPans[5].mEnd.vRot = <<-6.6000, 0.0000, 177.3000>>
scene.mFootPans[5].fFov = 50.0000
scene.mFootPans[5].fDuration = 0.0000
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<132.8000, -1305.1000, 29.7000>>
scene.mFootCatchupCam.vRot = <<-6.6000, 0.0000, 177.3000>>
scene.fFootCatchupFov = 50.0000
scene.mCarCatchupCam.vPos = <<132.8000, -1305.1000, 29.7000>>
scene.mCarCatchupCam.vRot = <<-6.6000, 0.0000, 177.3000>>
scene.fCarCatchupFov = 50.0000
scene.vCarPos = <<133.1947, -1312.1494, 28.1072>>
scene.fCarRot = 126.0500
scene.vPlayerPos = <<133.0748, -1306.5093, 28.1330>>
scene.vPedPos[0] = <<132.4439, -1304.6599, 28.2045>>
scene.vPedPos[1] = <<133.2145, -1304.7501, 28.1905>>
scene.vExitPos = <<128.5787, -1298.3682, 28.3026>>
scene.fFootSpeechDelay = 2.9250
scene.fFootFinalDelay = 0.0000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 0.0000
scene.bFootCam2IsAlternative = TRUE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<128.5787, -1298.3682, 28.3026>>
scene.vCarFakeDrivePos = <<128.5787, -1298.3682, 28.3026>>
scene.mExtraRespot.vCarPos = <<154.0517, -1307.6957, 28.2026>>
scene.mExtraRespot.fCarRot = 149.0400
scene.mExtraRespot.expandDir = 10
scene.vSwitchPos[0] = <<95.7223, -1313.1714, 28.2940>>
scene.fSwitchRot[0] = 83.1600
scene.vSwitchPos[1] = <<112.8357, -1276.4932, 28.0221>>
scene.fSwitchRot[1] = 99.3600
scene.vSwitchPos[2] = <<0.0000, 0.0000, 0.0000>>
scene.fSwitchRot[2] = 0.0000
RETURN TRUE
BREAK
CASE FLOC_trevor_SCp
scene.mFootPans[0].mStart.vPos = <<166.9471, -1340.8126, 31.2908>>
scene.mFootPans[0].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[0].mEnd.vPos = <<166.9471, -1340.8126, 29.2908>>
scene.mFootPans[0].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[0].fFov = 50.0000
scene.mFootPans[0].fDuration = 5.3250
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<132.7778, -1307.6270, 29.7443>>
scene.mFootPans[1].mStart.vRot = <<-2.5340, 0.0048, -0.6283>>
scene.mFootPans[1].mEnd.vPos = <<132.7788, -1307.5266, 29.7398>>
scene.mFootPans[1].mEnd.vRot = <<-2.5340, 0.0048, -0.6283>>
scene.mFootPans[1].fFov = 27.0556
scene.mFootPans[1].fDuration = 5.1000
scene.mFootPans[1].bEnabled = FALSE
scene.mFootPans[2].mStart.vPos = <<132.4454, -1307.6449, 29.7480>>
scene.mFootPans[2].mStart.vRot = <<-3.0580, 0.0048, -11.2444>>
scene.mFootPans[2].mEnd.vPos = <<132.4589, -1307.5769, 29.7443>>
scene.mFootPans[2].mEnd.vRot = <<-2.5340, 0.0048, -11.3535>>
scene.mFootPans[2].fFov = 27.0556
scene.mFootPans[2].fDuration = 10.0500
scene.mFootPans[2].bEnabled = FALSE
scene.mFootPans[3].mStart.vPos = <<129.1269, -1301.7227, 29.4008>>
scene.mFootPans[3].mStart.vRot = <<0.3160, -0.0209, -128.7821>>
scene.mFootPans[3].mEnd.vPos = <<128.7942, -1301.4554, 29.3985>>
scene.mFootPans[3].mEnd.vRot = <<0.3160, -0.0209, -128.7821>>
scene.mFootPans[3].fFov = 40.4680
scene.mFootPans[3].fDuration = 10.7250
scene.mFootPans[3].bEnabled = FALSE
scene.mFootPans[4].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 0.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<166.9471, -1340.8126, 31.2908>>
scene.mFootPans[5].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[5].mEnd.vPos = <<166.9471, -1340.8126, 31.2908>>
scene.mFootPans[5].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[5].fFov = 50.0000
scene.mFootPans[5].fDuration = 0.0000
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<166.9471, -1340.8126, 31.2908>>
scene.mFootCatchupCam.vRot = <<0.0000, 0.0000, 0.0000>>
scene.fFootCatchupFov = 50.0000
scene.mCarCatchupCam.vPos = <<132.8000, -1305.1000, 29.7000>>
scene.mCarCatchupCam.vRot = <<-6.6000, 0.0000, 177.3000>>
scene.fCarCatchupFov = 50.0000
scene.vCarPos = <<176.9471, -1340.8126, 28.2908>>
scene.fCarRot = 0.0000
scene.vPlayerPos = <<176.9471, -1340.8126, 28.2908>>
scene.vPedPos[0] = <<177.5471, -1340.5126, 28.2908>>
scene.vPedPos[1] = <<177.5471, -1341.1127, 28.2908>>
scene.vExitPos = <<181.9471, -1340.8126, 28.2908>>
scene.fFootSpeechDelay = 2.9250
scene.fFootFinalDelay = 0.0000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 0.0000
scene.bFootCam2IsAlternative = TRUE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<128.5787, -1298.3682, 28.3026>>
scene.vCarFakeDrivePos = <<128.5787, -1298.3682, 28.3026>>
scene.mExtraRespot.vCarPos = <<154.0517, -1307.6957, 28.2026>>
scene.mExtraRespot.fCarRot = 149.0400
scene.mExtraRespot.expandDir = 10
scene.vSwitchPos[0] = <<176.9471, -1340.8126, 28.2908>>
scene.fSwitchRot[0] = 0.0000
scene.vSwitchPos[1] = <<176.9471, -1340.8126, 28.2908>>
scene.fSwitchRot[1] = 0.0000
RETURN TRUE
BREAK
CASE FLOC_lamar_SC
scene.mFootPans[0].mStart.vPos = <<-56.3573, -1460.4274, 34.1991>>
scene.mFootPans[0].mStart.vRot = <<8.1986, 0.0000, 33.5765>>
scene.mFootPans[0].mEnd.vPos = <<-56.5558, -1460.1489, 32.6568>>
scene.mFootPans[0].mEnd.vRot = <<-4.0126, 0.0000, 51.7138>>
scene.mFootPans[0].fFov = 50.0000
scene.mFootPans[0].fDuration = 6.3000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<-57.7509, -1459.4553, 32.5180>>
scene.mFootPans[1].mStart.vRot = <<-2.6848, 0.0000, 75.5677>>
scene.mFootPans[1].mEnd.vPos = <<-57.7917, -1459.4448, 32.5160>>
scene.mFootPans[1].mEnd.vRot = <<-2.4783, 0.0000, 75.5677>>
scene.mFootPans[1].fFov = 26.9657
scene.mFootPans[1].fDuration = 5.3750
scene.mFootPans[1].bEnabled = TRUE
scene.mFootPans[2].mStart.vPos = <<-57.7837, -1459.7937, 32.5223>>
scene.mFootPans[2].mStart.vRot = <<-2.6848, 0.0000, 58.9447>>
scene.mFootPans[2].mEnd.vPos = <<-57.8125, -1459.6873, 32.5185>>
scene.mFootPans[2].mEnd.vRot = <<-2.6848, 0.0000, 58.1690>>
scene.mFootPans[2].fFov = 26.9657
scene.mFootPans[2].fDuration = 10.9750
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<-61.4802, -1449.4677, 32.2744>>
scene.mFootPans[3].mStart.vRot = <<0.1485, 0.0000, -174.2878>>
scene.mFootPans[3].mEnd.vPos = <<-61.4802, -1449.4677, 32.2744>>
scene.mFootPans[3].mEnd.vRot = <<0.1485, 0.0000, -177.7354>>
scene.mFootPans[3].fFov = 35.5635
scene.mFootPans[3].fDuration = 4.1750
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 0.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<-58.6000, -1458.2000, 32.7000>>
scene.mFootPans[5].mStart.vRot = <<-9.2000, 0.0000, 149.0000>>
scene.mFootPans[5].mEnd.vPos = <<-58.6000, -1458.2000, 32.7000>>
scene.mFootPans[5].mEnd.vRot = <<-9.2000, 0.0000, 149.0000>>
scene.mFootPans[5].fFov = 50.0000
scene.mFootPans[5].fDuration = 0.0000
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<-58.6000, -1458.2000, 32.7000>>
scene.mFootCatchupCam.vRot = <<-9.2000, 0.0000, 149.0000>>
scene.fFootCatchupFov = 50.0000
scene.mCarCatchupCam.vPos = <<-58.6000, -1458.2000, 32.7000>>
scene.mCarCatchupCam.vRot = <<-9.2000, 0.0000, 149.0000>>
scene.fCarCatchupFov = 50.0000
scene.vCarPos = <<-62.9473, -1462.4595, 30.9713>>
scene.fCarRot = 116.3700
scene.vPlayerPos = <<-59.0633, -1459.5398, 30.9904>>
scene.vPedPos[0] = <<-60.5552, -1458.2078, 31.0545>>
scene.vPedPos[1] = <<-59.8892, -1457.4618, 31.0777>>
scene.vExitPos = <<-67.2833, -1451.7397, 30.9940>>
scene.fFootSpeechDelay = 3.5500
scene.fFootFinalDelay = 0.0000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 0.0000
scene.bFootCam2IsAlternative = TRUE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<-67.2833, -1451.7397, 30.9940>>
scene.vCarFakeDrivePos = <<-67.2833, -1451.7397, 30.9940>>
scene.mExtraRespot.vCarPos = <<-46.4771, -1460.5109, 30.8037>>
scene.mExtraRespot.fCarRot = 95.7600
scene.mExtraRespot.expandDir = 9
scene.vSwitchPos[0] = <<-68.4237, -1436.7537, 31.1236>>
scene.fSwitchRot[0] = 116.6400
scene.vSwitchPos[1] = <<-74.2421, -1420.8674, 28.3225>>
scene.fSwitchRot[1] = 271.8000
scene.vSwitchPos[2] = <<0.0000, 0.0000, 0.0000>>
scene.fSwitchRot[2] = 0.0000
RETURN TRUE
BREAK
CASE FLOC_coffeeShop_RH
scene.mFootPans[0].mStart.vPos = <<-10.9320, -117.3033, 57.4867>>
scene.mFootPans[0].mStart.vRot = <<28.1405, -0.0662, 15.2927>>
scene.mFootPans[0].mEnd.vPos = <<-11.2653, -117.2236, 57.1882>>
scene.mFootPans[0].mEnd.vRot = <<0.5113, -0.0662, 30.5650>>
scene.mFootPans[0].fFov = 49.9706
scene.mFootPans[0].fDuration = 5.0000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<-7.0757, -120.2365, 61.4475>>
scene.mFootPans[1].mStart.vRot = <<-4.7436, 0.1427, 49.9124>>
scene.mFootPans[1].mEnd.vPos = <<-6.8992, -120.3944, 58.5944>>
scene.mFootPans[1].mEnd.vRot = <<-4.7436, 0.1427, 49.9124>>
scene.mFootPans[1].fFov = 44.4311
scene.mFootPans[1].fDuration = 0.0000
scene.mFootPans[1].bEnabled = FALSE
scene.mFootPans[2].mStart.vPos = <<-11.5998, -116.8049, 57.3232>>
scene.mFootPans[2].mStart.vRot = <<-1.4412, 0.0000, 19.3340>>
scene.mFootPans[2].mEnd.vPos = <<-6.8992, -120.3944, 58.5944>>
scene.mFootPans[2].mEnd.vRot = <<-4.7436, 0.1427, 49.9124>>
scene.mFootPans[2].fFov = 28.2808
scene.mFootPans[2].fDuration = 0.0000
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<-20.2221, -111.6242, 57.1864>>
scene.mFootPans[3].mStart.vRot = <<-1.4928, 0.0000, -95.3855>>
scene.mFootPans[3].mEnd.vPos = <<-20.2221, -111.6242, 57.1864>>
scene.mFootPans[3].mEnd.vRot = <<-1.4928, 0.0000, -89.5594>>
scene.mFootPans[3].fFov = 42.4439
scene.mFootPans[3].fDuration = 0.0000
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<-12.2428, -118.5385, 57.0926>>
scene.mFootPans[4].mStart.vRot = <<-2.3380, -0.0148, -1.9302>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 49.9706
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<-10.7000, -114.5000, 57.2000>>
scene.mFootPans[5].mStart.vRot = <<-0.7000, 0.0000, 115.2000>>
scene.mFootPans[5].mEnd.vPos = <<-10.7000, -114.5000, 57.2000>>
scene.mFootPans[5].mEnd.vRot = <<-0.7000, 0.0000, 109.1433>>
scene.mFootPans[5].fFov = 50.0000
scene.mFootPans[5].fDuration = 4.5750
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<-10.7000, -114.5000, 57.2000>>
scene.mFootCatchupCam.vRot = <<-0.7000, 0.0000, 115.2000>>
scene.fFootCatchupFov = 50.0000
scene.mCarCatchupCam.vPos = <<-13.0725, -115.1900, 57.2984>>
scene.mCarCatchupCam.vRot = <<-4.2214, -0.8691, -107.3625>>
scene.fCarCatchupFov = 49.9706
scene.vCarPos = <<-18.5821, -115.3713, 55.7963>>
scene.fCarRot = 73.0800
scene.vPlayerPos = <<-11.6174, -115.3955, 55.7810>>
scene.vPedPos[0] = <<-13.4109, -114.6339, 55.8221>>
scene.vPedPos[1] = <<-12.6469, -114.0475, 55.8117>>
scene.vExitPos = <<-13.4678, -109.2617, 56.1351>>
scene.fFootSpeechDelay = 2.6750
scene.fFootFinalDelay = 0.0000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 6.0000
scene.bFootCam2IsAlternative = FALSE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<-16.8713, -118.8766, 55.8675>>
scene.vCarFakeDrivePos = <<-97.4889, -89.0346, 56.5371>>
scene.mExtraRespot.vCarPos = <<-1.6820, -108.0647, 55.8574>>
scene.mExtraRespot.fCarRot = 160.5600
scene.mExtraRespot.expandDir = 9
scene.vSwitchPos[0] = <<-60.4338, -88.2760, 56.7463>>
scene.fSwitchRot[0] = 346.3200
scene.vSwitchPos[1] = <<-29.7926, -85.2089, 56.2538>>
scene.fSwitchRot[1] = 42.1200
scene.vSwitchPos[2] = <<-64.4417, -76.5780, 57.1300>>
scene.fSwitchRot[2] = 350.7988
RETURN TRUE
BREAK
CASE FLOC_shoppingPlaza_RH
scene.mFootPans[0].mStart.vPos = <<-599.6635, -307.1347, 35.5723>>
scene.mFootPans[0].mStart.vRot = <<6.6136, 0.0661, 14.4573>>
scene.mFootPans[0].mEnd.vPos = <<-599.6488, -307.1032, 35.4806>>
scene.mFootPans[0].mEnd.vRot = <<0.6974, 0.0661, -24.9427>>
scene.mFootPans[0].fFov = 45.1942
scene.mFootPans[0].fDuration = 5.0000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<-598.3406, -305.7075, 35.4950>>
scene.mFootPans[1].mStart.vRot = <<-1.8206, 0.0000, -24.4412>>
scene.mFootPans[1].mEnd.vPos = <<-598.2725, -305.5562, 35.4897>>
scene.mFootPans[1].mEnd.vRot = <<-1.2461, 0.0000, -23.8667>>
scene.mFootPans[1].fFov = 27.1855
scene.mFootPans[1].fDuration = 10.2250
scene.mFootPans[1].bEnabled = TRUE
scene.mFootPans[2].mStart.vPos = <<-595.8862, -335.8199, 39.8311>>
scene.mFootPans[2].mStart.vRot = <<-2.4437, 0.0925, 2.7068>>
scene.mFootPans[2].mEnd.vPos = <<-595.8862, -335.8199, 36.8311>>
scene.mFootPans[2].mEnd.vRot = <<-2.4437, 0.0925, 2.7068>>
scene.mFootPans[2].fFov = 30.8234
scene.mFootPans[2].fDuration = 0.0000
scene.mFootPans[2].bEnabled = FALSE
scene.mFootPans[3].mStart.vPos = <<-603.5041, -298.5019, 35.5324>>
scene.mFootPans[3].mStart.vRot = <<-0.4957, 0.0000, -127.7728>>
scene.mFootPans[3].mEnd.vPos = <<-603.7752, -298.2920, 35.8069>>
scene.mFootPans[3].mEnd.vRot = <<-0.4957, 0.0000, -127.7728>>
scene.mFootPans[3].fFov = 37.7459
scene.mFootPans[3].fDuration = 4.8750
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<-589.7507, -307.4630, 35.5272>>
scene.mFootPans[4].mStart.vRot = <<-4.1072, 0.0055, 69.2885>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 24.1002
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<-598.8000, -304.1000, 35.4000>>
scene.mFootPans[5].mStart.vRot = <<0.3000, 0.0000, -105.1000>>
scene.mFootPans[5].mEnd.vPos = <<-598.8000, -304.1000, 35.4000>>
scene.mFootPans[5].mEnd.vRot = <<0.3000, -0.0000, -118.5139>>
scene.mFootPans[5].fFov = 50.0000
scene.mFootPans[5].fDuration = 6.5250
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<-598.8000, -304.1000, 35.4000>>
scene.mFootCatchupCam.vRot = <<0.3000, 0.0000, -105.1000>>
scene.fFootCatchupFov = 50.0000
scene.mCarCatchupCam.vPos = <<-598.8000, -304.1000, 35.4000>>
scene.mCarCatchupCam.vRot = <<0.3000, -0.0000, -118.5139>>
scene.fCarCatchupFov = 50.0000
scene.vCarPos = <<-591.6484, -304.4530, 33.8604>>
scene.fCarRot = 122.0400
scene.vPlayerPos = <<-597.5052, -304.8516, 33.9584>>
scene.vPedPos[0] = <<-597.8029, -303.0807, 33.9633>>
scene.vPedPos[1] = <<-596.7050, -302.7705, 33.9718>>
scene.vExitPos = <<-604.7370, -293.2985, 33.9548>>
scene.fFootSpeechDelay = 2.9250
scene.fFootFinalDelay = 0.0000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 8.3700
scene.bFootCam2IsAlternative = FALSE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<-591.2324, -302.5901, 33.9939>>
scene.vCarFakeDrivePos = <<-612.3061, -316.7069, 33.7226>>
scene.mExtraRespot.vCarPos = <<-585.7039, -300.9887, 33.9348>>
scene.mExtraRespot.fCarRot = 116.6400
scene.mExtraRespot.expandDir = 9
scene.vSwitchPos[0] = <<-623.0575, -252.5577, 37.6049>>
scene.fSwitchRot[0] = 346.3200
scene.vSwitchPos[1] = <<-585.6531, -270.6682, 34.6228>>
scene.fSwitchRot[1] = 33.4800
scene.vSwitchPos[2] = <<-649.7907, -296.3604, 34.3442>>
scene.fSwitchRot[2] = 32.4000
RETURN TRUE
BREAK
CASE FLOC_shoppingMall_RH
scene.mFootPans[0].mStart.vPos = <<-158.1838, -175.1498, 44.1235>>
scene.mFootPans[0].mStart.vRot = <<-1.2340, 0.0000, -24.3748>>
scene.mFootPans[0].mEnd.vPos = <<-157.4660, -176.0162, 44.1356>>
scene.mFootPans[0].mEnd.vRot = <<-1.2340, 0.0000, -54.2213>>
scene.mFootPans[0].fFov = 38.9525
scene.mFootPans[0].fDuration = 7.5000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<-162.7006, -153.3978, 45.8229>>
scene.mFootPans[1].mStart.vRot = <<-4.6874, 0.0837, -166.4122>>
scene.mFootPans[1].mEnd.vPos = <<-162.7006, -153.3978, 42.8229>>
scene.mFootPans[1].mEnd.vRot = <<-4.6874, 0.0837, -166.4122>>
scene.mFootPans[1].fFov = 30.9732
scene.mFootPans[1].fDuration = 0.0000
scene.mFootPans[1].bEnabled = FALSE
scene.mFootPans[2].mStart.vPos = <<-162.7006, -153.3978, 45.8229>>
scene.mFootPans[2].mStart.vRot = <<-4.6874, 0.0837, -166.4122>>
scene.mFootPans[2].mEnd.vPos = <<-162.7006, -153.3978, 42.8229>>
scene.mFootPans[2].mEnd.vRot = <<-4.6874, 0.0837, -166.4122>>
scene.mFootPans[2].fFov = 30.9732
scene.mFootPans[2].fDuration = 0.0000
scene.mFootPans[2].bEnabled = FALSE
scene.mFootPans[3].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[3].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[3].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[3].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[3].fFov = 0.0000
scene.mFootPans[3].fDuration = 0.0000
scene.mFootPans[3].bEnabled = FALSE
scene.mFootPans[4].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 0.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<-155.5000, -173.6000, 44.3000>>
scene.mFootPans[5].mStart.vRot = <<-5.3000, 0.0000, 176.7000>>
scene.mFootPans[5].mEnd.vPos = <<-155.5000, -173.6000, 44.3000>>
scene.mFootPans[5].mEnd.vRot = <<-5.3000, 0.0000, 176.7000>>
scene.mFootPans[5].fFov = 50.0000
scene.mFootPans[5].fDuration = 0.0000
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<-155.5000, -173.6000, 44.3000>>
scene.mFootCatchupCam.vRot = <<-5.3000, 0.0000, 176.7000>>
scene.fFootCatchupFov = 50.0000
scene.mCarCatchupCam.vPos = <<-155.5000, -173.6000, 44.3000>>
scene.mCarCatchupCam.vRot = <<-5.3000, 0.0000, 176.7000>>
scene.fCarCatchupFov = 50.0000
scene.vCarPos = <<-159.0514, -179.6376, 42.6038>>
scene.fCarRot = 340.7900
scene.vPlayerPos = <<-155.6107, -175.4378, 42.7616>>
scene.vPedPos[0] = <<-155.2113, -173.4781, 42.7592>>
scene.vPedPos[1] = <<-154.2314, -173.6778, 42.7592>>
scene.vExitPos = <<-151.4107, -167.0978, 42.7614>>
scene.fFootSpeechDelay = 2.6750
scene.fFootFinalDelay = 0.0000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 5.9850
scene.bFootCam2IsAlternative = FALSE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<-157.8152, -173.4110, 42.6205>>
scene.vCarFakeDrivePos = <<-180.3291, -85.6264, 51.5502>>
scene.mExtraRespot.vCarPos = <<-178.2606, -176.7970, 42.6219>>
scene.mExtraRespot.fCarRot = 247.3200
scene.mExtraRespot.expandDir = 8
scene.vSwitchPos[0] = <<-111.5168, -176.4249, 49.3869>>
scene.fSwitchRot[0] = 337.9647
scene.vSwitchPos[1] = <<-146.1066, -289.7199, 40.3190>>
scene.fSwitchRot[1] = 162.6801
scene.vSwitchPos[2] = <<-184.0584, -92.2390, 51.4793>>
scene.fSwitchRot[2] = 339.5543
RETURN TRUE
BREAK
CASE FLOC_minimartCarpark_RH
scene.mFootPans[0].mStart.vPos = <<216.6692, -50.2341, 71.0802>>
scene.mFootPans[0].mStart.vRot = <<9.2136, 0.0713, 39.6390>>
scene.mFootPans[0].mEnd.vPos = <<215.4209, -49.6516, 69.8986>>
scene.mFootPans[0].mEnd.vRot = <<-2.9289, 0.0803, 45.7664>>
scene.mFootPans[0].fFov = 24.7144
scene.mFootPans[0].fDuration = 6.0250
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<210.3946, -45.6195, 69.3571>>
scene.mFootPans[1].mStart.vRot = <<0.0814, 0.0714, 46.1003>>
scene.mFootPans[1].mEnd.vPos = <<210.3504, -45.5770, 69.3572>>
scene.mFootPans[1].mEnd.vRot = <<0.0814, 0.0714, 46.1003>>
scene.mFootPans[1].fFov = 24.7144
scene.mFootPans[1].fDuration = 5.9000
scene.mFootPans[1].bEnabled = TRUE
scene.mFootPans[2].mStart.vPos = <<210.6824, -46.2715, 69.2401>>
scene.mFootPans[2].mStart.vRot = <<-0.8841, 0.0714, 32.8208>>
scene.mFootPans[2].mEnd.vPos = <<210.5762, -46.1068, 69.2371>>
scene.mFootPans[2].mEnd.vRot = <<-0.8841, 0.0714, 31.8309>>
scene.mFootPans[2].fFov = 24.7144
scene.mFootPans[2].fDuration = 11.2000
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<215.5824, -47.3697, 69.1787>>
scene.mFootPans[3].mStart.vRot = <<2.7258, 0.0713, 56.2490>>
scene.mFootPans[3].mEnd.vPos = <<215.5824, -47.3697, 69.1787>>
scene.mFootPans[3].mEnd.vRot = <<2.5404, 0.0713, 52.4503>>
scene.mFootPans[3].fFov = 33.9919
scene.mFootPans[3].fDuration = 4.7500
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<202.2701, -56.2778, 69.5264>>
scene.mFootPans[4].mStart.vRot = <<-4.8356, 0.0133, -30.2715>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 24.7144
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<209.4000, -43.8000, 69.5000>>
scene.mFootPans[5].mStart.vRot = <<-6.8000, 0.0000, 164.6000>>
scene.mFootPans[5].mEnd.vPos = <<209.4000, -43.8000, 69.5000>>
scene.mFootPans[5].mEnd.vRot = <<-6.8000, 0.0000, 158.8225>>
scene.mFootPans[5].fFov = 50.0000
scene.mFootPans[5].fDuration = 5.6250
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<209.4000, -43.8000, 69.5000>>
scene.mFootCatchupCam.vRot = <<-6.8000, 0.0000, 164.6000>>
scene.fFootCatchupFov = 50.0000
scene.mCarCatchupCam.vPos = <<209.4000, -43.8000, 69.5000>>
scene.mCarCatchupCam.vRot = <<-6.8000, 0.0000, 158.8225>>
scene.fCarCatchupFov = 50.0000
scene.vCarPos = <<210.5713, -51.1838, 67.8538>>
scene.fCarRot = 70.7100
scene.vPlayerPos = <<209.1140, -45.0546, 67.9221>>
scene.vPedPos[0] = <<208.0977, -42.7594, 67.8671>>
scene.vPedPos[1] = <<209.2602, -42.3165, 67.9124>>
scene.vExitPos = <<201.3204, -27.2177, 68.9116>>
scene.fFootSpeechDelay = 3.4250
scene.fFootFinalDelay = 0.0000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 8.1000
scene.bFootCam2IsAlternative = TRUE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<201.3804, -45.9723, 67.6405>>
scene.vCarFakeDrivePos = <<169.5868, -39.8977, 67.1079>>
scene.mExtraRespot.vCarPos = <<220.3531, -54.6546, 68.0668>>
scene.mExtraRespot.fCarRot = 72.3600
scene.mExtraRespot.expandDir = 9
scene.vSwitchPos[0] = <<142.2029, -8.6707, 66.6010>>
scene.fSwitchRot[0] = 341.2800
scene.vSwitchPos[1] = <<193.9097, -0.0854, 72.4415>>
scene.fSwitchRot[1] = 63.3600
scene.vSwitchPos[2] = <<141.1481, 4.3401, 67.0326>>
scene.fSwitchRot[2] = 340.2000
RETURN TRUE
BREAK
CASE FLOC_coffeeShop_DT
scene.mFootPans[0].mStart.vPos = <<-190.1953, -796.7072, 31.3248>>
scene.mFootPans[0].mStart.vRot = <<5.1543, -0.1219, 2.2711>>
scene.mFootPans[0].mEnd.vPos = <<-190.1855, -796.9056, 31.3069>>
scene.mFootPans[0].mEnd.vRot = <<-1.8464, -0.1219, 21.1543>>
scene.mFootPans[0].fFov = 37.4511
scene.mFootPans[0].fDuration = 5.7000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<-195.8433, -782.9503, 30.9256>>
scene.mFootPans[1].mStart.vRot = <<-1.2833, 0.0184, 56.2469>>
scene.mFootPans[1].mEnd.vPos = <<-196.0999, -782.7787, 30.9187>>
scene.mFootPans[1].mEnd.vRot = <<-1.2833, 0.0184, 56.2469>>
scene.mFootPans[1].fFov = 27.5662
scene.mFootPans[1].fDuration = 11.4000
scene.mFootPans[1].bEnabled = TRUE
scene.mFootPans[2].mStart.vPos = <<-174.1382, -798.4118, 34.3625>>
scene.mFootPans[2].mStart.vRot = <<-4.1411, 0.0443, -50.8390>>
scene.mFootPans[2].mEnd.vPos = <<-174.1382, -798.4118, 31.3625>>
scene.mFootPans[2].mEnd.vRot = <<-4.1411, 0.0443, -50.8390>>
scene.mFootPans[2].fFov = 45.0000
scene.mFootPans[2].fDuration = 0.0000
scene.mFootPans[2].bEnabled = FALSE
scene.mFootPans[3].mStart.vPos = <<-207.4530, -783.0007, 30.6883>>
scene.mFootPans[3].mStart.vRot = <<0.9957, -0.0267, -64.6160>>
scene.mFootPans[3].mEnd.vPos = <<-207.4830, -782.9033, 30.6885>>
scene.mFootPans[3].mEnd.vRot = <<0.9957, -0.0267, -64.1235>>
scene.mFootPans[3].fFov = 39.0431
scene.mFootPans[3].fDuration = 3.9250
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<-199.9620, -783.7169, 30.9963>>
scene.mFootPans[4].mStart.vRot = <<-3.9471, 0.0848, -37.9213>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 27.5662
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<-198.6000, -781.3000, 31.0000>>
scene.mFootPans[5].mStart.vRot = <<-3.1000, 0.0000, -86.6000>>
scene.mFootPans[5].mEnd.vPos = <<-198.6000, -781.3000, 31.0000>>
scene.mFootPans[5].mEnd.vRot = <<-3.1000, 0.0000, -86.6000>>
scene.mFootPans[5].fFov = 50.0000
scene.mFootPans[5].fDuration = 0.0000
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<-198.6000, -781.3000, 31.0000>>
scene.mFootCatchupCam.vRot = <<-3.1000, 0.0000, -86.6000>>
scene.fFootCatchupFov = 50.0000
scene.mCarCatchupCam.vPos = <<-194.9262, -780.7396, 30.7532>>
scene.mCarCatchupCam.vRot = <<-1.3809, 0.0000, 100.1161>>
scene.fCarCatchupFov = 50.0000
scene.vCarPos = <<-162.7400, -789.3305, 30.9774>>
scene.fCarRot = 154.8000
scene.vPlayerPos = <<-197.2339, -781.2570, 29.4540>>
scene.vPedPos[0] = <<-200.0240, -781.1829, 29.4540>>
scene.vPedPos[1] = <<-199.6951, -780.3373, 29.4540>>
scene.vExitPos = <<-208.5797, -778.6299, 29.3554>>
scene.fFootSpeechDelay = 3.0500
scene.fFootFinalDelay = 0.0000
scene.fCarFinalDelay0 = 0.2000
scene.fCarFinalDelay = 5.1750
scene.bFootCam2IsAlternative = FALSE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<-193.8266, -787.1005, 29.4540>>
scene.vCarFakeDrivePos = <<-176.0065, -830.4868, 29.6752>>
scene.mExtraRespot.vCarPos = <<-160.5266, -783.0484, 31.0433>>
scene.mExtraRespot.fCarRot = 164.5200
scene.mExtraRespot.expandDir = 9
scene.vSwitchPos[0] = <<-245.7672, -772.6562, 31.4945>>
scene.fSwitchRot[0] = 340.2000
scene.vSwitchPos[1] = <<-240.8987, -803.7341, 29.8505>>
scene.fSwitchRot[1] = 78.1200
scene.vSwitchPos[2] = <<-219.2494, -869.4808, 28.8640>>
scene.fSwitchRot[2] = 73.0800
RETURN TRUE
BREAK
CASE FLOC_minimartCarpark_DT
scene.mFootPans[0].mStart.vPos = <<-830.9531, -1088.2756, 13.0086>>
scene.mFootPans[0].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[0].mEnd.vPos = <<-830.9531, -1088.2756, 11.0086>>
scene.mFootPans[0].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[0].fFov = 50.0000
scene.mFootPans[0].fDuration = 0.0000
scene.mFootPans[0].bEnabled = FALSE
scene.mFootPans[1].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[1].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[1].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[1].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[1].fFov = 0.0000
scene.mFootPans[1].fDuration = 0.0000
scene.mFootPans[1].bEnabled = FALSE
scene.mFootPans[2].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[2].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[2].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[2].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[2].fFov = 0.0000
scene.mFootPans[2].fDuration = 0.0000
scene.mFootPans[2].bEnabled = FALSE
scene.mFootPans[3].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[3].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[3].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[3].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[3].fFov = 0.0000
scene.mFootPans[3].fDuration = 0.0000
scene.mFootPans[3].bEnabled = FALSE
scene.mFootPans[4].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 0.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<-830.9531, -1088.2756, 13.0086>>
scene.mFootPans[5].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[5].mEnd.vPos = <<-830.9531, -1088.2756, 13.0086>>
scene.mFootPans[5].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[5].fFov = 50.0000
scene.mFootPans[5].fDuration = 0.0000
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<-830.9531, -1088.2756, 13.0086>>
scene.mFootCatchupCam.vRot = <<0.0000, 0.0000, 0.0000>>
scene.fFootCatchupFov = 50.0000
scene.mCarCatchupCam.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mCarCatchupCam.vRot = <<0.0000, 0.0000, 0.0000>>
scene.fCarCatchupFov = 0.0000
scene.vCarPos = <<-820.9531, -1088.2756, 10.0086>>
scene.fCarRot = 0.0000
scene.vPlayerPos = <<-820.9531, -1088.2756, 10.0086>>
scene.vPedPos[0] = <<-820.3531, -1087.9756, 10.0086>>
scene.vPedPos[1] = <<-820.3531, -1088.5757, 10.0086>>
scene.vExitPos = <<-815.9531, -1088.2756, 10.0086>>
scene.fFootSpeechDelay = 0.0000
scene.fFootFinalDelay = 0.0000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 0.0000
scene.bFootCam2IsAlternative = FALSE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<0.0000, 0.0000, 0.0000>>
scene.vCarFakeDrivePos = <<0.0000, 0.0000, 0.0000>>
scene.mExtraRespot.vCarPos = <<0.0000, 0.0000, 0.0000>>
scene.mExtraRespot.fCarRot = 0.0000
scene.mExtraRespot.expandDir = 0
scene.vSwitchPos[0] = <<-820.9531, -1088.2756, 10.0086>>
scene.fSwitchRot[0] = 0.0000
scene.vSwitchPos[1] = <<-820.9531, -1088.2756, 10.0086>>
scene.fSwitchRot[1] = 0.0000
scene.vSwitchPos[2] = <<-64.4417, -76.5780, 57.1300>>
scene.fSwitchRot[2] = 350.7988
RETURN TRUE
BREAK
CASE FLOC_artPlaza_DT
scene.mFootPans[0].mStart.vPos = <<231.1337, -972.4833, 30.5744>>
scene.mFootPans[0].mStart.vRot = <<16.5540, 0.0000, 19.9826>>
scene.mFootPans[0].mEnd.vPos = <<231.1004, -972.3924, 30.3643>>
scene.mFootPans[0].mEnd.vRot = <<5.1901, 0.0000, 18.1092>>
scene.mFootPans[0].fFov = 39.7270
scene.mFootPans[0].fDuration = 5.0000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<231.1243, -960.4684, 29.9486>>
scene.mFootPans[1].mStart.vRot = <<-3.3250, 0.0034, 44.3253>>
scene.mFootPans[1].mEnd.vPos = <<231.0919, -960.4258, 29.9455>>
scene.mFootPans[1].mEnd.vRot = <<-3.3250, 0.0034, 44.3253>>
scene.mFootPans[1].fFov = 18.4380
scene.mFootPans[1].fDuration = 4.9250
scene.mFootPans[1].bEnabled = TRUE
scene.mFootPans[2].mStart.vPos = <<231.1691, -961.2233, 29.9703>>
scene.mFootPans[2].mStart.vRot = <<-1.4860, 0.0000, 33.1161>>
scene.mFootPans[2].mEnd.vPos = <<231.0190, -960.9930, 29.9631>>
scene.mFootPans[2].mEnd.vRot = <<-1.4860, 0.0000, 33.6074>>
scene.mFootPans[2].fFov = 18.8257
scene.mFootPans[2].fDuration = 9.5250
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<201.2578, -968.2456, 31.4906>>
scene.mFootPans[3].mStart.vRot = <<-3.6870, 0.0000, -68.9103>>
scene.mFootPans[3].mEnd.vPos = <<201.1927, -968.0770, 31.4906>>
scene.mFootPans[3].mEnd.vRot = <<-3.6870, 0.0000, -68.9103>>
scene.mFootPans[3].fFov = 30.4755
scene.mFootPans[3].fDuration = 4.9500
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<242.8073, -959.5851, 29.7023>>
scene.mFootPans[4].mStart.vRot = <<0.2064, 0.0551, 93.2706>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 35.9540
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<229.2498, -959.5234, 29.8773>>
scene.mFootPans[5].mStart.vRot = <<-3.2186, 0.0000, -71.4419>>
scene.mFootPans[5].mEnd.vPos = <<229.2498, -959.5234, 29.8773>>
scene.mFootPans[5].mEnd.vRot = <<-3.2186, 0.0000, -75.0536>>
scene.mFootPans[5].fFov = 50.0360
scene.mFootPans[5].fDuration = 5.3100
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<229.2498, -959.5234, 29.8773>>
scene.mFootCatchupCam.vRot = <<-3.2186, 0.0000, -71.4419>>
scene.fFootCatchupFov = 50.0360
scene.mCarCatchupCam.vPos = <<229.2498, -959.5234, 29.8773>>
scene.mCarCatchupCam.vRot = <<-3.2186, 0.0000, -75.0536>>
scene.fCarCatchupFov = 50.0360
scene.vCarPos = <<240.7464, -951.9853, 28.1878>>
scene.fCarRot = 158.9700
scene.vPlayerPos = <<230.4242, -959.2939, 28.3431>>
scene.vPedPos[0] = <<228.2315, -958.0656, 28.3444>>
scene.vPedPos[1] = <<228.8929, -957.1745, 28.3397>>
scene.vExitPos = <<213.1038, -944.3844, 29.6918>>
scene.fFootSpeechDelay = 2.5050
scene.fFootFinalDelay = 4.0000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 7.6350
scene.bFootCam2IsAlternative = TRUE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<236.7469, -954.6210, 28.2767>>
scene.vCarFakeDrivePos = <<229.3741, -985.0717, 28.2070>>
scene.mExtraRespot.vCarPos = <<243.9274, -942.5368, 28.2134>>
scene.mExtraRespot.fCarRot = 160.5600
scene.mExtraRespot.expandDir = 9
scene.vSwitchPos[0] = <<209.7067, -912.3889, 29.6919>>
scene.fSwitchRot[0] = 325.0800
scene.vSwitchPos[1] = <<195.2277, -985.6662, 29.0919>>
scene.fSwitchRot[1] = 108.0000
scene.vSwitchPos[2] = <<145.6692, -1008.5768, 28.4015>>
scene.fSwitchRot[2] = 74.2663
RETURN TRUE
BREAK
CASE FLOC_bar_DT
scene.mFootPans[0].mStart.vPos = <<248.2705, -1007.8845, 29.7324>>
scene.mFootPans[0].mStart.vRot = <<62.7218, 0.0000, -110.9959>>
scene.mFootPans[0].mEnd.vPos = <<248.4682, -1007.9604, 29.7240>>
scene.mFootPans[0].mEnd.vRot = <<-2.2530, 0.0000, -107.2616>>
scene.mFootPans[0].fFov = 40.2691
scene.mFootPans[0].fDuration = 5.0000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<229.6498, -1017.9327, 34.3134>>
scene.mFootPans[1].mStart.vRot = <<-8.7545, -0.0430, -60.4954>>
scene.mFootPans[1].mEnd.vPos = <<229.6498, -1017.9327, 31.3134>>
scene.mFootPans[1].mEnd.vRot = <<-8.7545, -0.0430, -60.4954>>
scene.mFootPans[1].fFov = 36.2565
scene.mFootPans[1].fDuration = 0.0000
scene.mFootPans[1].bEnabled = FALSE
scene.mFootPans[2].mStart.vPos = <<229.6498, -1017.9327, 34.3134>>
scene.mFootPans[2].mStart.vRot = <<-8.7545, -0.0430, -60.4954>>
scene.mFootPans[2].mEnd.vPos = <<229.6498, -1017.9327, 31.3134>>
scene.mFootPans[2].mEnd.vRot = <<-8.7545, -0.0430, -60.4954>>
scene.mFootPans[2].fFov = 36.2565
scene.mFootPans[2].fDuration = 0.0000
scene.mFootPans[2].bEnabled = FALSE
scene.mFootPans[3].mStart.vPos = <<245.8116, -1013.3066, 29.7147>>
scene.mFootPans[3].mStart.vRot = <<1.2147, 0.0000, -54.9007>>
scene.mFootPans[3].mEnd.vPos = <<245.8373, -1013.3431, 29.7147>>
scene.mFootPans[3].mEnd.vRot = <<1.2147, 0.0000, -57.7030>>
scene.mFootPans[3].fFov = 40.2691
scene.mFootPans[3].fDuration = 3.7500
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<244.2720, -1004.5430, 29.5566>>
scene.mFootPans[4].mStart.vRot = <<-4.8904, -0.4852, -110.0739>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 45.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<250.6561, -1009.1505, 29.8025>>
scene.mFootPans[5].mStart.vRot = <<-5.4451, 0.0000, 14.2227>>
scene.mFootPans[5].mEnd.vPos = <<250.6561, -1009.1505, 29.8025>>
scene.mFootPans[5].mEnd.vRot = <<-5.4451, 0.0000, 12.1978>>
scene.mFootPans[5].fFov = 49.9613
scene.mFootPans[5].fDuration = 6.9450
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<250.6561, -1009.1505, 29.8025>>
scene.mFootCatchupCam.vRot = <<-5.4451, 0.0000, 14.2227>>
scene.fFootCatchupFov = 49.9613
scene.mCarCatchupCam.vPos = <<248.7408, -1006.5201, 29.6853>>
scene.mCarCatchupCam.vRot = <<-2.7843, 0.0116, -145.7124>>
scene.fCarCatchupFov = 49.9613
scene.vCarPos = <<247.4841, -1004.8810, 28.1653>>
scene.fCarRot = 345.6000
scene.vPlayerPos = <<250.0948, -1007.8876, 28.2720>>
scene.vPedPos[0] = <<251.6908, -1009.0301, 28.2721>>
scene.vPedPos[1] = <<250.5304, -1009.5927, 28.2708>>
scene.vExitPos = <<255.7346, -1013.6077, 28.2705>>
scene.fFootSpeechDelay = 2.5050
scene.fFootFinalDelay = 0.0000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 8.1000
scene.bFootCam2IsAlternative = TRUE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<247.3293, -1011.4324, 28.2669>>
scene.vCarFakeDrivePos = <<282.2794, -906.4485, 27.9033>>
scene.mExtraRespot.vCarPos = <<244.7239, -1014.8864, 28.1332>>
scene.mExtraRespot.fCarRot = 348.4800
scene.mExtraRespot.expandDir = 9
scene.vSwitchPos[0] = <<265.8661, -1031.1510, 28.2119>>
scene.fSwitchRot[0] = 218.5200
scene.vSwitchPos[1] = <<279.8312, -962.0749, 28.4125>>
scene.fSwitchRot[1] = 266.7600
scene.vSwitchPos[2] = <<284.2156, -955.7428, 28.3454>>
scene.fSwitchRot[2] = 267.5414
RETURN TRUE
BREAK
CASE FLOC_recCentre_SC
scene.mFootPans[0].mStart.vPos = <<-223.0400, -1494.4606, 32.1563>>
scene.mFootPans[0].mStart.vRot = <<-2.3031, 0.0137, 170.1147>>
scene.mFootPans[0].mEnd.vPos = <<-222.5391, -1494.2854, 32.1495>>
scene.mFootPans[0].mEnd.vRot = <<-2.3031, 0.0137, -141.8289>>
scene.mFootPans[0].fFov = 33.2670
scene.mFootPans[0].fDuration = 5.0000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<-216.6314, -1498.6526, 31.9180>>
scene.mFootPans[1].mStart.vRot = <<-1.2591, -0.0294, -155.8858>>
scene.mFootPans[1].mEnd.vPos = <<-216.5979, -1498.7275, 31.9162>>
scene.mFootPans[1].mEnd.vRot = <<-1.2591, -0.0294, -157.2869>>
scene.mFootPans[1].fFov = 17.2517
scene.mFootPans[1].fDuration = 0.0000
scene.mFootPans[1].bEnabled = TRUE
scene.mFootPans[2].mStart.vPos = <<-216.0729, -1498.9364, 31.8561>>
scene.mFootPans[2].mStart.vRot = <<-1.2116, 0.0137, -167.8524>>
scene.mFootPans[2].mEnd.vPos = <<-216.0350, -1499.1124, 31.8523>>
scene.mFootPans[2].mEnd.vRot = <<-1.2116, 0.0137, -169.2618>>
scene.mFootPans[2].fFov = 21.1725
scene.mFootPans[2].fDuration = 10.4000
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<-215.1879, -1494.0775, 31.6461>>
scene.mFootPans[3].mStart.vRot = <<-0.3716, 0.0137, 167.1272>>
scene.mFootPans[3].mEnd.vPos = <<-215.4108, -1494.4918, 31.6431>>
scene.mFootPans[3].mEnd.vRot = <<-0.3716, 0.0137, 164.7599>>
scene.mFootPans[3].fFov = 34.7576
scene.mFootPans[3].fDuration = 4.8250
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<-214.1399, -1497.8629, 31.5615>>
scene.mFootPans[4].mStart.vRot = <<-1.6427, 0.0712, 174.9291>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 50.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<-215.9396, -1502.0917, 31.9881>>
scene.mFootPans[5].mStart.vRot = <<-8.1820, 0.0137, -39.2424>>
scene.mFootPans[5].mEnd.vPos = <<-215.9396, -1502.0917, 31.9881>>
scene.mFootPans[5].mEnd.vRot = <<-8.1820, 0.0137, -42.0890>>
scene.mFootPans[5].fFov = 50.0069
scene.mFootPans[5].fDuration = 6.7950
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<-215.9396, -1502.0917, 31.9881>>
scene.mFootCatchupCam.vRot = <<-8.1820, 0.0137, -39.2424>>
scene.fFootCatchupFov = 50.0069
scene.mCarCatchupCam.vPos = <<-213.5682, -1500.0767, 31.8540>>
scene.mCarCatchupCam.vRot = <<-2.4576, 0.0837, 111.3005>>
scene.fCarCatchupFov = 50.0069
scene.vCarPos = <<-209.7381, -1495.0710, 30.2667>>
scene.fCarRot = 141.4800
scene.vPlayerPos = <<-215.1646, -1500.8119, 30.4305>>
scene.vPedPos[0] = <<-215.0512, -1503.3674, 30.4623>>
scene.vPedPos[1] = <<-215.9888, -1503.2892, 30.4622>>
scene.vExitPos = <<-222.2676, -1510.9921, 30.6938>>
scene.fFootSpeechDelay = 2.5050
scene.fFootFinalDelay = 4.1750
scene.fCarFinalDelay0 = 0.5400
scene.fCarFinalDelay = 9.6900
scene.bFootCam2IsAlternative = TRUE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<-206.9685, -1494.6144, 30.4733>>
scene.vCarFakeDrivePos = <<-162.9734, -1508.3855, 32.3938>>
scene.mExtraRespot.vCarPos = <<-224.7263, -1488.1644, 30.3038>>
scene.mExtraRespot.fCarRot = 139.6800
scene.mExtraRespot.expandDir = 8
scene.vSwitchPos[0] = <<-239.6648, -1549.7312, 30.6344>>
scene.fSwitchRot[0] = 136.4400
scene.vSwitchPos[1] = <<-263.6150, -1540.6875, 30.6904>>
scene.fSwitchRot[1] = 187.5600
scene.vSwitchPos[2] = <<-144.4396, -1549.4728, 33.4471>>
scene.fSwitchRot[2] = 139.0999
RETURN TRUE
BREAK
CASE FLOC_shoppingPlaza_VB
scene.mFootPans[0].mStart.vPos = <<-1181.3975, -826.8450, 16.5792>>
scene.mFootPans[0].mStart.vRot = <<9.6959, 0.0000, 47.2246>>
scene.mFootPans[0].mEnd.vPos = <<-1181.9803, -827.2338, 14.7335>>
scene.mFootPans[0].mEnd.vRot = <<4.1175, 0.0000, 52.9134>>
scene.mFootPans[0].fFov = 50.0000
scene.mFootPans[0].fDuration = 5.0000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<-1184.3304, -826.4483, 14.7437>>
scene.mFootPans[1].mStart.vRot = <<-0.6489, -0.0007, 62.8269>>
scene.mFootPans[1].mEnd.vPos = <<-1184.5710, -826.3248, 14.7407>>
scene.mFootPans[1].mEnd.vRot = <<-0.1044, -0.0007, 62.8269>>
scene.mFootPans[1].fFov = 18.4352
scene.mFootPans[1].fDuration = 5.5500
scene.mFootPans[1].bEnabled = TRUE
scene.mFootPans[2].mStart.vPos = <<-1184.3384, -826.9095, 14.7463>>
scene.mFootPans[2].mStart.vRot = <<-0.6489, -0.0007, 50.0980>>
scene.mFootPans[2].mEnd.vPos = <<-1184.4329, -826.8304, 14.7449>>
scene.mFootPans[2].mEnd.vRot = <<-0.6489, -0.0007, 48.6321>>
scene.mFootPans[2].fFov = 18.4352
scene.mFootPans[2].fDuration = 11.4250
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<-1183.2001, -830.7167, 14.5212>>
scene.mFootPans[3].mStart.vRot = <<1.0563, 0.0000, 27.3790>>
scene.mFootPans[3].mEnd.vPos = <<-1183.0219, -830.6245, 14.5212>>
scene.mFootPans[3].mEnd.vRot = <<2.0449, 0.0000, 26.6091>>
scene.mFootPans[3].fFov = 42.0117
scene.mFootPans[3].fDuration = 5.2000
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<-1188.4661, -824.3413, 14.8546>>
scene.mFootPans[4].mStart.vRot = <<1.5615, -0.1037, -118.6105>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 53.3860
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<-1186.4714, -824.6526, 14.8865>>
scene.mFootPans[5].mStart.vRot = <<-3.8721, 0.0000, 169.2043>>
scene.mFootPans[5].mEnd.vPos = <<-1186.4714, -824.6526, 14.8865>>
scene.mFootPans[5].mEnd.vRot = <<-3.8721, 0.0000, 173.8093>>
scene.mFootPans[5].fFov = 49.9849
scene.mFootPans[5].fDuration = 5.5200
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<-1186.4714, -824.6526, 14.8865>>
scene.mFootCatchupCam.vRot = <<-3.8721, 0.0000, 169.2043>>
scene.fFootCatchupFov = 49.9849
scene.mCarCatchupCam.vPos = <<-1186.4286, -827.6542, 14.7835>>
scene.mCarCatchupCam.vRot = <<-0.7502, 0.0313, -9.5858>>
scene.fCarCatchupFov = 49.9849
scene.vCarPos = <<-1189.1278, -832.9972, 13.2161>>
scene.fCarRot = 218.5200
scene.vPlayerPos = <<-1186.4250, -825.9056, 13.3321>>
scene.vPedPos[0] = <<-1187.7395, -824.2661, 13.3448>>
scene.vPedPos[1] = <<-1186.3999, -824.4038, 13.3008>>
scene.vExitPos = <<-1190.9611, -806.6936, 17.0174>>
scene.fFootSpeechDelay = 2.5050
scene.fFootFinalDelay = 4.0000
scene.fCarFinalDelay0 = 0.2700
scene.fCarFinalDelay = 8.6250
scene.bFootCam2IsAlternative = TRUE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<-1192.5244, -834.0498, 13.3085>>
scene.vCarFakeDrivePos = <<-1131.6940, -912.2311, 2.2148>>
scene.mExtraRespot.vCarPos = <<-1196.7207, -872.5267, 12.5092>>
scene.mExtraRespot.fCarRot = 299.5200
scene.mExtraRespot.expandDir = 9
scene.vSwitchPos[0] = <<-1265.4348, -727.5261, 21.1402>>
scene.fSwitchRot[0] = 25.9200
scene.vSwitchPos[1] = <<-1222.2693, -784.6736, 16.6973>>
scene.fSwitchRot[1] = 30.9600
scene.vSwitchPos[2] = <<-1140.7695, -935.9708, 1.6022>>
scene.fSwitchRot[2] = 125.0739
RETURN TRUE
BREAK
CASE FLOC_bar_VB
scene.mFootPans[0].mStart.vPos = <<-1400.4379, -585.9051, 30.9432>>
scene.mFootPans[0].mStart.vRot = <<32.3305, 0.0000, -105.6953>>
scene.mFootPans[0].mEnd.vPos = <<-1400.3621, -585.9331, 30.9394>>
scene.mFootPans[0].mEnd.vRot = <<-2.7052, 0.0000, -110.3139>>
scene.mFootPans[0].fFov = 50.0000
scene.mFootPans[0].fDuration = 5.0000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<-1397.6010, -589.7619, 30.8651>>
scene.mFootPans[1].mStart.vRot = <<-4.6041, 0.0007, -69.4751>>
scene.mFootPans[1].mEnd.vPos = <<-1397.4280, -589.6965, 30.8501>>
scene.mFootPans[1].mEnd.vRot = <<-4.6041, 0.0007, -69.4751>>
scene.mFootPans[1].fFov = 25.7248
scene.mFootPans[1].fDuration = 5.0750
scene.mFootPans[1].bEnabled = TRUE
scene.mFootPans[2].mStart.vPos = <<-1398.3654, -590.4213, 30.7041>>
scene.mFootPans[2].mStart.vRot = <<-1.8133, 0.0007, -54.5359>>
scene.mFootPans[2].mEnd.vPos = <<-1398.2682, -590.3511, 30.7003>>
scene.mFootPans[2].mEnd.vRot = <<-1.8133, 0.0007, -53.8792>>
scene.mFootPans[2].fFov = 25.7248
scene.mFootPans[2].fDuration = 10.0500
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<-1392.4342, -584.4755, 30.6697>>
scene.mFootPans[3].mStart.vRot = <<-3.5396, 0.0000, 147.9476>>
scene.mFootPans[3].mEnd.vPos = <<-1392.6837, -584.8740, 30.6406>>
scene.mFootPans[3].mEnd.vRot = <<-2.1681, 0.0000, 149.1801>>
scene.mFootPans[3].fFov = 32.1336
scene.mFootPans[3].fDuration = 8.0250
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 0.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<-1395.9674, -590.8463, 30.9775>>
scene.mFootPans[5].mStart.vRot = <<-7.0494, 0.0000, -16.7103>>
scene.mFootPans[5].mEnd.vPos = <<-1395.9674, -590.8463, 30.9775>>
scene.mFootPans[5].mEnd.vRot = <<-7.0494, 0.0000, -2.2177>>
scene.mFootPans[5].fFov = 49.3689
scene.mFootPans[5].fDuration = 4.7850
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<-1395.9674, -590.8463, 30.9775>>
scene.mFootCatchupCam.vRot = <<-7.0494, 0.0000, -16.7103>>
scene.fFootCatchupFov = 49.3689
scene.mCarCatchupCam.vPos = <<-1395.9674, -590.8463, 30.9775>>
scene.mCarCatchupCam.vRot = <<-7.0494, 0.0000, -2.2177>>
scene.fCarCatchupFov = 49.3689
scene.vCarPos = <<-1396.8634, -583.7726, 29.2332>>
scene.fCarRot = 305.2800
scene.vPlayerPos = <<-1395.6896, -589.4706, 29.2947>>
scene.vPedPos[0] = <<-1394.4778, -588.1750, 29.2765>>
scene.vPedPos[1] = <<-1395.2493, -586.9717, 29.2791>>
scene.vExitPos = <<-1387.3744, -586.2861, 29.2117>>
scene.fFootSpeechDelay = 2.5050
scene.fFootFinalDelay = 4.0000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 8.1600
scene.bFootCam2IsAlternative = TRUE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<-1395.3645, -585.9979, 29.2759>>
scene.vCarFakeDrivePos = <<-1437.2358, -602.3437, 29.7106>>
scene.mExtraRespot.vCarPos = <<-1402.1808, -587.1375, 29.2292>>
scene.mExtraRespot.fCarRot = 301.6800
scene.mExtraRespot.expandDir = 9
scene.vSwitchPos[0] = <<-1363.9341, -597.2744, 28.1150>>
scene.fSwitchRot[0] = 212.4000
scene.vSwitchPos[1] = <<-1317.0858, -534.9244, 31.6545>>
scene.fSwitchRot[1] = 284.0400
scene.vSwitchPos[2] = <<-1521.9221, -692.8118, 27.4762>>
scene.fSwitchRot[2] = 232.8838
RETURN TRUE
BREAK
CASE FLOC_minimartCarpark_MW
scene.mFootPans[0].mStart.vPos = <<-1366.9222, -398.7310, 41.0798>>
scene.mFootPans[0].mStart.vRot = <<17.4675, -0.1845, -77.0057>>
scene.mFootPans[0].mEnd.vPos = <<-1366.9297, -398.9865, 40.0866>>
scene.mFootPans[0].mEnd.vRot = <<-5.1001, -0.1845, -65.4537>>
scene.mFootPans[0].fFov = 30.8234
scene.mFootPans[0].fDuration = 5.0000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<-1345.7203, -386.2633, 37.2103>>
scene.mFootPans[1].mStart.vRot = <<-1.0508, -0.1845, -61.7459>>
scene.mFootPans[1].mEnd.vPos = <<-1345.5809, -386.1886, 37.2074>>
scene.mFootPans[1].mEnd.vRot = <<-1.0508, -0.1845, -61.7459>>
scene.mFootPans[1].fFov = 21.5932
scene.mFootPans[1].fDuration = 6.9250
scene.mFootPans[1].bEnabled = TRUE
scene.mFootPans[2].mStart.vPos = <<-1345.9550, -386.2108, 37.2211>>
scene.mFootPans[2].mStart.vRot = <<-3.4291, -0.1845, -72.0063>>
scene.mFootPans[2].mEnd.vPos = <<-1345.7772, -386.1530, 37.2099>>
scene.mFootPans[2].mEnd.vRot = <<-3.1850, -0.1845, -72.0063>>
scene.mFootPans[2].fFov = 21.5932
scene.mFootPans[2].fDuration = 10.0750
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<-1337.8141, -390.8861, 37.0116>>
scene.mFootPans[3].mStart.vRot = <<-0.8397, -0.1845, 42.1048>>
scene.mFootPans[3].mEnd.vPos = <<-1338.0637, -391.1115, 37.0105>>
scene.mFootPans[3].mEnd.vRot = <<-0.8397, -0.1845, 42.1048>>
scene.mFootPans[3].fFov = 33.8628
scene.mFootPans[3].fDuration = 10.3750
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<-1347.6074, -384.3000, 37.2427>>
scene.mFootPans[4].mStart.vRot = <<-5.1716, -0.1784, -101.7165>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 33.8628
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<-1342.9149, -385.4987, 37.2378>>
scene.mFootPans[5].mStart.vRot = <<-3.0101, -0.1845, 62.5899>>
scene.mFootPans[5].mEnd.vPos = <<-1342.9149, -385.4987, 37.2378>>
scene.mFootPans[5].mEnd.vRot = <<-3.0101, -0.1845, 49.9371>>
scene.mFootPans[5].fFov = 49.9943
scene.mFootPans[5].fDuration = 5.5200
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<-1342.9149, -385.4987, 37.2378>>
scene.mFootCatchupCam.vRot = <<-3.0101, -0.1845, 62.5899>>
scene.fFootCatchupFov = 49.9943
scene.mCarCatchupCam.vPos = <<-1344.6967, -383.5359, 37.1767>>
scene.mCarCatchupCam.vRot = <<-7.7089, -0.2200, -177.5366>>
scene.fCarCatchupFov = 49.9943
scene.vCarPos = <<-1346.6592, -382.4048, 35.7550>>
scene.fCarRot = 304.2000
scene.vPlayerPos = <<-1344.3192, -385.1048, 35.7534>>
scene.vPedPos[0] = <<-1342.3458, -384.7795, 35.7455>>
scene.vPedPos[1] = <<-1342.1832, -385.7662, 35.7450>>
scene.vExitPos = <<-1315.9821, -383.2860, 35.7237>>
scene.fFootSpeechDelay = 2.5050
scene.fFootFinalDelay = 4.0000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 5.6850
scene.bFootCam2IsAlternative = TRUE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<-1341.6716, -376.5873, 35.7475>>
scene.vCarFakeDrivePos = <<-1275.4410, -344.9638, 35.6584>>
scene.mExtraRespot.vCarPos = <<-1326.1108, -395.0894, 35.4495>>
scene.mExtraRespot.fCarRot = 212.4000
scene.mExtraRespot.expandDir = 8
scene.vSwitchPos[0] = <<-1300.4432, -383.3367, 35.5787>>
scene.fSwitchRot[0] = 208.4400
scene.vSwitchPos[1] = <<-1331.9393, -325.6764, 36.3622>>
scene.fSwitchRot[1] = 29.8800
scene.vSwitchPos[2] = <<-1293.1658, -383.7935, 35.5591>>
scene.fSwitchRot[2] = 207.2801
RETURN TRUE
BREAK
CASE FLOC_paletoMainSt_PA
scene.mFootPans[0].mStart.vPos = <<-12.9499, 6502.8452, 32.7873>>
scene.mFootPans[0].mStart.vRot = <<9.5209, 0.0000, 28.9591>>
scene.mFootPans[0].mEnd.vPos = <<-12.9172, 6502.9810, 32.0578>>
scene.mFootPans[0].mEnd.vRot = <<-3.2163, 0.0000, 28.4487>>
scene.mFootPans[0].fFov = 31.3500
scene.mFootPans[0].fDuration = 5.0000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<-15.8414, 6504.5591, 32.0731>>
scene.mFootPans[1].mStart.vRot = <<-2.4909, 0.0000, -79.5938>>
scene.mFootPans[1].mEnd.vPos = <<-15.7190, 6504.5776, 32.0677>>
scene.mFootPans[1].mEnd.vRot = <<-2.4909, 0.0000, -79.5938>>
scene.mFootPans[1].fFov = 26.7402
scene.mFootPans[1].fDuration = 6.8000
scene.mFootPans[1].bEnabled = TRUE
scene.mFootPans[2].mStart.vPos = <<-15.2964, 6503.4614, 32.0741>>
scene.mFootPans[2].mStart.vRot = <<-3.2163, 0.0000, -40.2756>>
scene.mFootPans[2].mEnd.vPos = <<-15.2178, 6503.5542, 32.0673>>
scene.mFootPans[2].mEnd.vRot = <<-3.2163, 0.0000, -40.2756>>
scene.mFootPans[2].fFov = 31.3500
scene.mFootPans[2].fDuration = 9.4250
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<-17.4111, 6499.1289, 31.9122>>
scene.mFootPans[3].mStart.vRot = <<-1.2605, 0.0000, -35.0484>>
scene.mFootPans[3].mEnd.vPos = <<-17.3962, 6499.2446, 31.9101>>
scene.mFootPans[3].mEnd.vRot = <<-1.2605, 0.0000, -38.0048>>
scene.mFootPans[3].fFov = 28.2785
scene.mFootPans[3].fDuration = 10.8250
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 0.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<-13.4570, 6504.1426, 32.0189>>
scene.mFootPans[5].mStart.vRot = <<-5.4280, 0.0000, 29.7930>>
scene.mFootPans[5].mEnd.vPos = <<-13.4570, 6504.1426, 32.0189>>
scene.mFootPans[5].mEnd.vRot = <<-5.4280, 0.0000, 25.0133>>
scene.mFootPans[5].fFov = 49.9863
scene.mFootPans[5].fDuration = 5.1000
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<-13.4570, 6504.1426, 32.0189>>
scene.mFootCatchupCam.vRot = <<-5.4280, 0.0000, 29.7930>>
scene.fFootCatchupFov = 49.9863
scene.mCarCatchupCam.vPos = <<-14.0094, 6506.8496, 32.0390>>
scene.mCarCatchupCam.vRot = <<-7.8212, -0.0000, 154.0325>>
scene.fCarCatchupFov = 49.9863
scene.vCarPos = <<-14.8887, 6510.3130, 30.2857>>
scene.fCarRot = 317.1600
scene.vPlayerPos = <<-14.6068, 6505.2427, 30.5313>>
scene.vPedPos[0] = <<-13.4060, 6504.6445, 30.5605>>
scene.vPedPos[1] = <<-13.3913, 6506.0820, 30.5421>>
scene.vExitPos = <<-2.3765, 6505.2393, 30.4432>>
scene.fFootSpeechDelay = 2.5050
scene.fFootFinalDelay = 4.1250
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 7.3200
scene.bFootCam2IsAlternative = TRUE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<-14.5603, 6510.5703, 30.2871>>
scene.vCarFakeDrivePos = <<21.5285, 6548.2393, 30.2918>>
scene.mExtraRespot.vCarPos = <<-22.4419, 6502.5464, 30.2973>>
scene.mExtraRespot.fCarRot = 313.5600
scene.mExtraRespot.expandDir = 9
scene.vSwitchPos[0] = <<0.2704, 6440.6191, 30.4253>>
scene.fSwitchRot[0] = 226.0800
scene.vSwitchPos[1] = <<42.3786, 6499.0776, 30.4253>>
scene.fSwitchRot[1] = 230.7600
scene.vSwitchPos[2] = <<85.8481, 6593.3062, 30.4944>>
scene.fSwitchRot[2] = 229.9428
RETURN TRUE
BREAK
CASE FLOC_minimartCarpark_SS
scene.mFootPans[0].mStart.vPos = <<1398.3656, 3589.7920, 35.7675>>
scene.mFootPans[0].mStart.vRot = <<16.1439, 0.0000, 12.7999>>
scene.mFootPans[0].mEnd.vPos = <<1398.3864, 3589.7795, 35.4151>>
scene.mFootPans[0].mEnd.vRot = <<-3.1277, 0.0000, 60.2753>>
scene.mFootPans[0].fFov = 41.4763
scene.mFootPans[0].fDuration = 6.4500
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<1393.1771, 3589.7578, 35.3621>>
scene.mFootPans[1].mStart.vRot = <<-1.7755, 0.0000, -47.7455>>
scene.mFootPans[1].mEnd.vPos = <<1393.2351, 3589.8105, 35.3597>>
scene.mFootPans[1].mEnd.vRot = <<-1.7755, 0.0000, -47.7455>>
scene.mFootPans[1].fFov = 25.6712
scene.mFootPans[1].fDuration = 5.9250
scene.mFootPans[1].bEnabled = TRUE
scene.mFootPans[2].mStart.vPos = <<1393.2328, 3589.3816, 35.3779>>
scene.mFootPans[2].mStart.vRot = <<-4.1375, 0.0000, -43.9328>>
scene.mFootPans[2].mEnd.vPos = <<1393.3842, 3589.5383, 35.3621>>
scene.mFootPans[2].mEnd.vRot = <<-3.8599, 0.0000, -43.0485>>
scene.mFootPans[2].fFov = 25.6712
scene.mFootPans[2].fDuration = 10.6750
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<1401.4360, 3593.2778, 34.9226>>
scene.mFootPans[3].mStart.vRot = <<4.7665, 0.0000, 89.9214>>
scene.mFootPans[3].mEnd.vPos = <<1401.4110, 3593.2778, 34.9247>>
scene.mFootPans[3].mEnd.vRot = <<2.3666, 0.0000, 93.3675>>
scene.mFootPans[3].fFov = 40.2577
scene.mFootPans[3].fDuration = 7.0250
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 0.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<1393.0144, 3590.3909, 35.3415>>
scene.mFootPans[5].mStart.vRot = <<-3.6763, 0.0000, -73.5766>>
scene.mFootPans[5].mEnd.vPos = <<1393.0144, 3590.3909, 35.3415>>
scene.mFootPans[5].mEnd.vRot = <<-3.6763, 0.0000, -76.3552>>
scene.mFootPans[5].fFov = 49.9894
scene.mFootPans[5].fDuration = 5.8950
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<1393.0144, 3590.3909, 35.3415>>
scene.mFootCatchupCam.vRot = <<-3.6763, 0.0000, -73.5766>>
scene.fFootCatchupFov = 49.9894
scene.mCarCatchupCam.vPos = <<1395.9813, 3590.8003, 35.2591>>
scene.mCarCatchupCam.vRot = <<-1.4534, -0.0615, 64.6092>>
scene.fCarCatchupFov = 49.9894
scene.vCarPos = <<1401.1758, 3591.5845, 33.9257>>
scene.fCarRot = 287.2800
scene.vPlayerPos = <<1394.2062, 3591.3108, 33.8731>>
scene.vPedPos[0] = <<1395.7977, 3592.1204, 33.8850>>
scene.vPedPos[1] = <<1395.8606, 3591.1497, 33.8331>>
scene.vExitPos = <<1394.2177, 3599.6748, 33.9149>>
scene.fFootSpeechDelay = 3.5050
scene.fFootFinalDelay = 4.1250
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 8.2050
scene.bFootCam2IsAlternative = TRUE
scene.bIsTaxiStyle = FALSE
scene.vCarFakeWalkPos = <<1398.3474, 3589.3406, 33.9425>>
scene.vCarFakeDrivePos = <<1489.7838, 3614.9602, 33.8271>>
scene.mExtraRespot.vCarPos = <<1382.2739, 3593.8064, 33.8937>>
scene.mExtraRespot.fCarRot = 12.9600
scene.mExtraRespot.expandDir = 5
scene.vSwitchPos[0] = <<1452.4491, 3638.9067, 33.6778>>
scene.fSwitchRot[0] = 13.6800
scene.vSwitchPos[1] = <<1347.2308, 3612.0645, 33.8760>>
scene.fSwitchRot[1] = 28.8212
scene.vSwitchPos[2] = <<1459.6494, 3651.6704, 33.5887>>
scene.fSwitchRot[2] = 14.7733
RETURN TRUE
BREAK
ENDSWITCH
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FRIENDS, "Private_FLOC_GetDropoffScene(): No data for ", GetLabel_enumFriendLocation(eFriendLoc))
SCRIPT_ASSERT("Private_FLOC_GetDropoffScene(): friend loc not supported")
VECTOR vAnchor = g_FriendLocations[eFriendLoc].vPickupCoord
scene.mFootPans[0].mStart.vPos = vAnchor + <<-10.0, 0.0, 3.0>>
scene.mFootPans[0].mStart.vRot = <<0.0, 0.0, 0.0>>
scene.mFootPans[0].mEnd.vPos = vAnchor + <<-10.0, 0.0, 1.0>>
scene.mFootPans[0].mEnd.vRot = <<0.0, 0.0, 0.0>>
scene.mFootPans[0].fFov = 50.0
scene.mFootPans[1].bEnabled = FALSE
scene.mFootPans[2].bEnabled = FALSE
scene.mFootPans[3].bEnabled = FALSE
scene.mFootCatchupCam.vPos = vAnchor + <<-10.0, 0.0, 3.0>>
scene.mFootCatchupCam.vRot = <<0.0, 0.0, 0.0>>
scene.fFootCatchupFov = 50
scene.vCarPos = vAnchor
scene.fCarRot = 0.0
scene.vPlayerPos = vAnchor
scene.vPedPos[0] = vAnchor + <<0.6, 0.3, 0.0>>
scene.vPedPos[1] = vAnchor + <<0.6, -0.3, 0.0>>
scene.vExitPos = vAnchor + <<5.0, 0.0, 0.0>>
scene.vSwitchPos[0] = vAnchor
scene.fSwitchRot[0] = 0.0
scene.vSwitchPos[1] = vAnchor
scene.fSwitchRot[1] = 0.0
#ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL Private_ALOC_GetDropoffScene(enumActivityLocation eActivityLoc, structFDropoffScene& scene)
// Get loc-specific positions
SWITCH eActivityLoc
CASE ALOC_cinema_downtown
scene.mFootPans[0].mStart.vPos = <<405.9127, -711.7676, 31.2618>>
scene.mFootPans[0].mStart.vRot = <<19.9190, 0.0000, 90.3396>>
scene.mFootPans[0].mEnd.vPos = <<405.4205, -711.7840, 29.3979>>
scene.mFootPans[0].mEnd.vRot = <<5.5077, 0.0000, 99.6259>>
scene.mFootPans[0].fFov = 50.0000
scene.mFootPans[0].fDuration = 5.0000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<398.0591, -714.2009, 29.6786>>
scene.mFootPans[1].mStart.vRot = <<-2.2484, 0.0024, 51.3791>>
scene.mFootPans[1].mEnd.vPos = <<397.9690, -714.1289, 29.6741>>
scene.mFootPans[1].mEnd.vRot = <<-2.2484, 0.0024, 51.1740>>
scene.mFootPans[1].fFov = 38.1457
scene.mFootPans[1].fDuration = 5.5800
scene.mFootPans[1].bEnabled = TRUE
scene.mFootPans[2].mStart.vPos = <<398.3901, -714.3004, 29.7155>>
scene.mFootPans[2].mStart.vRot = <<-1.9825, -0.0437, 50.2219>>
scene.mFootPans[2].mEnd.vPos = <<398.3167, -714.2393, 29.7122>>
scene.mFootPans[2].mEnd.vRot = <<-1.9825, -0.0437, 48.0760>>
scene.mFootPans[2].fFov = 39.2093
scene.mFootPans[2].fDuration = 13.0000
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<405.5188, -709.9571, 29.6613>>
scene.mFootPans[3].mStart.vRot = <<-2.8617, 0.0312, 110.4090>>
scene.mFootPans[3].mEnd.vPos = <<405.8275, -709.2303, 29.6882>>
scene.mFootPans[3].mEnd.vRot = <<-2.8617, 0.0312, 103.4981>>
scene.mFootPans[3].fFov = 38.1457
scene.mFootPans[3].fDuration = 8.3750
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 0.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<397.4691, -712.0601, 29.7563>>
scene.mFootPans[5].mStart.vRot = <<-5.9870, -0.0170, 154.1207>>
scene.mFootPans[5].mEnd.vPos = <<397.4691, -712.0601, 29.7563>>
scene.mFootPans[5].mEnd.vRot = <<-5.9870, -0.0170, 154.1207>>
scene.mFootPans[5].fFov = 50.0000
scene.mFootPans[5].fDuration = 0.0000
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<397.4691, -712.0601, 29.7563>>
scene.mFootCatchupCam.vRot = <<-5.9870, -0.0170, 154.1207>>
scene.fFootCatchupFov = 50.0000
scene.mCarCatchupCam.vPos = <<397.6112, -710.4716, 29.7051>>
scene.mCarCatchupCam.vRot = <<4.6835, -0.3053, 163.9312>>
scene.fCarCatchupFov = 50.0000
scene.vCarPos = <<401.2501, -709.6287, 28.1688>>
scene.fCarRot = 0.0000
scene.vPlayerPos = <<396.8529, -713.7012, 28.2854>>
scene.vPedPos[0] = <<395.8499, -711.9299, 28.2849>>
scene.vPedPos[1] = <<397.0676, -712.2994, 28.2850>>
scene.vExitPos = <<396.5359, -692.8924, 28.2871>>
scene.fFootSpeechDelay = 1.5500
scene.fFootFinalDelay = 7.7050
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 5.1150
scene.bFootCam2IsAlternative = TRUE
scene.bIsTaxiStyle = TRUE
scene.vCarFakeWalkPos = <<398.3131, -708.6296, 28.2844>>
scene.vCarFakeDrivePos = <<402.7359, -689.6898, 28.2549>>
scene.mExtraRespot.vCarPos = <<401.3918, -718.0711, 28.1762>>
scene.mExtraRespot.fCarRot = 0.0000
scene.mExtraRespot.expandDir = 10
scene.vSwitchPos[0] = <<390.1166, -686.0222, 28.2700>>
scene.fSwitchRot[0] = 94.1853
scene.vSwitchPos[1] = <<444.7804, -686.5525, 27.5881>>
scene.fSwitchRot[1] = 270.7200
scene.vSwitchPos[2] = <<382.3910, -671.3192, 28.2481>>
scene.fSwitchRot[2] = 57.3318
RETURN TRUE
BREAK
CASE ALOC_cinema_morningwood
scene.mFootPans[0].mStart.vPos = <<-1405.1483, -195.8240, 50.5379>>
scene.mFootPans[0].mStart.vRot = <<15.4864, 0.0000, 126.9167>>
scene.mFootPans[0].mEnd.vPos = <<-1405.4717, -195.2269, 48.3459>>
scene.mFootPans[0].mEnd.vRot = <<-6.4786, 0.0000, 133.4543>>
scene.mFootPans[0].fFov = 43.8728
scene.mFootPans[0].fDuration = 5.0000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<-1414.1422, -200.2502, 47.8477>>
scene.mFootPans[1].mStart.vRot = <<-3.1055, 0.0000, -105.8073>>
scene.mFootPans[1].mEnd.vPos = <<-1414.1171, -200.2495, 47.8464>>
scene.mFootPans[1].mEnd.vRot = <<-3.1055, 0.0000, -105.1865>>
scene.mFootPans[1].fFov = 35.8476
scene.mFootPans[1].fDuration = 8.4250
scene.mFootPans[1].bEnabled = TRUE
scene.mFootPans[2].mStart.vPos = <<-1414.2623, -199.6994, 47.8791>>
scene.mFootPans[2].mStart.vRot = <<-3.8011, 0.0000, -118.3642>>
scene.mFootPans[2].mEnd.vPos = <<-1414.0961, -199.7538, 47.8676>>
scene.mFootPans[2].mEnd.vRot = <<-3.8011, 0.0000, -119.1302>>
scene.mFootPans[2].fFov = 35.8476
scene.mFootPans[2].fDuration = 11.1750
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<-1410.3827, -193.2492, 47.9417>>
scene.mFootPans[3].mStart.vRot = <<-2.9923, 0.0000, 176.5927>>
scene.mFootPans[3].mEnd.vPos = <<-1410.3827, -193.2492, 47.9417>>
scene.mFootPans[3].mEnd.vRot = <<-2.9923, 0.0000, -172.9450>>
scene.mFootPans[3].fFov = 40.3821
scene.mFootPans[3].fDuration = 6.3500
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 0.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<-1411.7035, -200.2036, 47.7778>>
scene.mFootPans[5].mStart.vRot = <<-3.8893, 0.0000, 130.3052>>
scene.mFootPans[5].mEnd.vPos = <<-1411.7035, -200.2036, 47.7778>>
scene.mFootPans[5].mEnd.vRot = <<-3.8893, 0.0000, 130.3052>>
scene.mFootPans[5].fFov = 50.0049
scene.mFootPans[5].fDuration = 0.0000
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<-1411.7035, -200.2036, 47.7778>>
scene.mFootCatchupCam.vRot = <<-3.8893, 0.0000, 130.3052>>
scene.fFootCatchupFov = 50.0049
scene.mCarCatchupCam.vPos = <<-1411.7035, -200.2036, 47.7778>>
scene.mCarCatchupCam.vRot = <<-3.8893, 0.0000, 130.3052>>
scene.fCarCatchupFov = 50.0049
scene.vCarPos = <<-1407.5757, -199.3733, 46.0344>>
scene.fCarRot = 216.2500
scene.vPlayerPos = <<-1412.9637, -200.9753, 46.2845>>
scene.vPedPos[0] = <<-1410.9816, -200.6391, 46.2294>>
scene.vPedPos[1] = <<-1411.2316, -201.4050, 46.2381>>
scene.vExitPos = <<-1427.7881, -187.1937, 46.4753>>
scene.fFootSpeechDelay = 1.7500
scene.fFootFinalDelay = 9.8400
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 0.0000
scene.bFootCam2IsAlternative = TRUE
scene.bIsTaxiStyle = TRUE
scene.vCarFakeWalkPos = <<-1427.7881, -187.1937, 46.4753>>
scene.vCarFakeDrivePos = <<-1358.1135, -272.4378, 41.4143>>
scene.mExtraRespot.vCarPos = <<-1439.4601, -202.4132, 46.6154>>
scene.mExtraRespot.fCarRot = 322.5600
scene.mExtraRespot.expandDir = 9
scene.vSwitchPos[0] = <<-1383.7635, -264.7188, 41.9284>>
scene.fSwitchRot[0] = 130.3200
scene.vSwitchPos[1] = <<-1473.4860, -257.2262, 48.9357>>
scene.fSwitchRot[1] = 44.6400
scene.vSwitchPos[2] = <<-1382.0347, -271.8694, 41.9838>>
scene.fSwitchRot[2] = 132.0433
RETURN TRUE
BREAK
CASE ALOC_cinema_vinewood
scene.mFootPans[0].mStart.vPos = <<290.8533, 172.5629, 105.4460>>
scene.mFootPans[0].mStart.vRot = <<24.0829, 0.0000, -19.9766>>
scene.mFootPans[0].mEnd.vPos = <<290.8804, 172.6505, 105.1818>>
scene.mFootPans[0].mEnd.vRot = <<-3.3518, 0.0000, -17.3689>>
scene.mFootPans[0].fFov = 36.3239
scene.mFootPans[0].fDuration = 5.0000
scene.mFootPans[0].bEnabled = TRUE
scene.mFootPans[1].mStart.vPos = <<298.6032, 181.1218, 104.7438>>
scene.mFootPans[1].mStart.vRot = <<-3.2463, 0.0000, 81.3680>>
scene.mFootPans[1].mEnd.vPos = <<298.5056, 181.1366, 104.7382>>
scene.mFootPans[1].mEnd.vRot = <<-3.1642, 0.0000, 81.8605>>
scene.mFootPans[1].fFov = 35.1220
scene.mFootPans[1].fDuration = 6.6250
scene.mFootPans[1].bEnabled = TRUE
scene.mFootPans[2].mStart.vPos = <<298.3110, 180.8920, 104.7343>>
scene.mFootPans[2].mStart.vRot = <<-3.3284, 0.0000, 74.3088>>
scene.mFootPans[2].mEnd.vPos = <<298.2302, 180.9147, 104.7294>>
scene.mFootPans[2].mEnd.vRot = <<-2.3434, 0.0000, 73.7343>>
scene.mFootPans[2].fFov = 35.1220
scene.mFootPans[2].fDuration = 10.1750
scene.mFootPans[2].bEnabled = TRUE
scene.mFootPans[3].mStart.vPos = <<299.5133, 174.0084, 104.6379>>
scene.mFootPans[3].mStart.vRot = <<0.7548, 0.0000, 40.5820>>
scene.mFootPans[3].mEnd.vPos = <<299.5133, 174.0084, 104.6379>>
scene.mFootPans[3].mEnd.vRot = <<0.7548, 0.0000, 60.3641>>
scene.mFootPans[3].fFov = 42.6649
scene.mFootPans[3].fDuration = 6.9250
scene.mFootPans[3].bEnabled = TRUE
scene.mFootPans[4].mStart.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mStart.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vPos = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].mEnd.vRot = <<0.0000, 0.0000, 0.0000>>
scene.mFootPans[4].fFov = 0.0000
scene.mFootPans[4].fDuration = 0.0000
scene.mFootPans[4].bEnabled = FALSE
scene.mFootPans[5].mStart.vPos = <<295.9940, 180.8288, 104.8471>>
scene.mFootPans[5].mStart.vRot = <<-9.6963, 0.0000, -42.3682>>
scene.mFootPans[5].mEnd.vPos = <<295.9940, 180.8288, 104.8471>>
scene.mFootPans[5].mEnd.vRot = <<-9.6963, 0.0000, -42.3682>>
scene.mFootPans[5].fFov = 49.9720
scene.mFootPans[5].fDuration = 0.0000
scene.mFootPans[5].bEnabled = TRUE
scene.mFootCatchupCam.vPos = <<295.9940, 180.8288, 104.8471>>
scene.mFootCatchupCam.vRot = <<-9.6963, 0.0000, -42.3682>>
scene.fFootCatchupFov = 49.9720
scene.mCarCatchupCam.vPos = <<295.9940, 180.8288, 104.8471>>
scene.mCarCatchupCam.vRot = <<-9.6963, 0.0000, -42.3682>>
scene.fCarCatchupFov = 49.9720
scene.vCarPos = <<290.7559, 177.1301, 103.1523>>
scene.fCarRot = 74.5200
scene.vPlayerPos = <<297.1597, 181.7558, 103.2131>>
scene.vPedPos[0] = <<295.0739, 181.1341, 103.2455>>
scene.vPedPos[1] = <<294.9557, 182.0589, 103.2534>>
scene.vExitPos = <<301.1894, 190.1084, 103.1125>>
scene.fFootSpeechDelay = 1.6500
scene.fFootFinalDelay = 11.1000
scene.fCarFinalDelay0 = 0.0000
scene.fCarFinalDelay = 0.0000
scene.bFootCam2IsAlternative = TRUE
scene.bIsTaxiStyle = TRUE
scene.vCarFakeWalkPos = <<301.1894, 190.1084, 103.1125>>
scene.vCarFakeDrivePos = <<153.4835, 223.6109, 105.7286>>
scene.mExtraRespot.vCarPos = <<280.2050, 152.9264, 103.1841>>
scene.mExtraRespot.fCarRot = 248.7600
scene.mExtraRespot.expandDir = 5
scene.vSwitchPos[0] = <<227.2966, 223.5158, 104.5494>>
scene.fSwitchRot[0] = 340.2000
scene.vSwitchPos[1] = <<196.4739, 139.1099, 100.2864>>
scene.fSwitchRot[1] = 159.8148
scene.vSwitchPos[2] = <<225.8337, 237.2527, 104.5132>>
scene.fSwitchRot[2] = 337.7378
RETURN TRUE
BREAK
ENDSWITCH
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FRIENDS, "Private_ALOC_GetDropoffScene(): No data for ", GetLabel_enumActivityLocation(eActivityLoc))
SCRIPT_ASSERT("Private_ALOC_GetDropoffScene(): activity loc not supported")
VECTOR vAnchor = GET_STATIC_BLIP_POSITION(g_ActivityLocations[eActivityLoc].sprite)
scene.mFootPans[0].mStart.vPos = vAnchor + <<-10.0, 0.0, 3.0>>
scene.mFootPans[0].mStart.vRot = <<0.0, 0.0, 0.0>>
scene.mFootPans[0].mEnd.vPos = vAnchor + <<-10.0, 0.0, 1.0>>
scene.mFootPans[0].mEnd.vRot = <<0.0, 0.0, 0.0>>
scene.mFootPans[0].fFov = 50.0
scene.mFootPans[1].bEnabled = FALSE
scene.mFootPans[2].bEnabled = FALSE
scene.mFootPans[3].bEnabled = FALSE
scene.mFootCatchupCam.vPos = vAnchor + <<-10.0, 0.0, 3.0>>
scene.mFootCatchupCam.vRot = <<0.0, 0.0, 0.0>>
scene.fFootCatchupFov = 50
scene.vCarPos = vAnchor
scene.fCarRot = 0.0
scene.vPlayerPos = vAnchor
scene.vPedPos[0] = vAnchor + <<0.6, 0.3, 0.0>>
scene.vPedPos[1] = vAnchor + <<0.6, -0.3, 0.0>>
scene.vExitPos = vAnchor + <<5.0, 0.0, 0.0>>
scene.vSwitchPos[0] = vAnchor
scene.fSwitchRot[0] = 0.0
scene.vSwitchPos[1] = vAnchor
scene.fSwitchRot[1] = 0.0
#ENDIF
RETURN FALSE
ENDFUNC
//---------------------------------------------------------------------------------------------------
//-- ACTIVITY RESPOT DATA
//---------------------------------------------------------------------------------------------------
FUNC BOOL Private_ALOC_GetRespotData(enumActivityLocation eActivityLoc, structFRespotData& respot)
// Get loc-specific positions
SWITCH eActivityLoc
CASE ALOC_bar_bahamas
respot.vCarPos = <<-1396.9028, -584.5709, 29.1500>>
respot.fCarRot = 298.9717
respot.expandDir = RESPOT_EXPAND_X_LEFT | RESPOT_EXPAND_Y_BACK
RETURN TRUE
BREAK
CASE ALOC_bar_baybar
respot.vCarPos = <<-255.8321, 6287.2563, 30.4584>>
respot.fCarRot = 127.8000
respot.expandDir = RESPOT_EXPAND_X_LEFT | RESPOT_EXPAND_Y_BACK
RETURN TRUE
BREAK
CASE ALOC_bar_biker
respot.vCarPos = <<972.5530, -117.5186, 73.3531>>
respot.fCarRot = 318.8789
respot.expandDir = RESPOT_EXPAND_X_RIGHT | RESPOT_EXPAND_Y_BACK
RETURN TRUE
BREAK
CASE ALOC_bar_downtown
respot.vCarPos = <<246.8546, -1007.3677, 28.2705>>
respot.fCarRot = 345.6000
respot.expandDir = RESPOT_EXPAND_X_LEFT | RESPOT_EXPAND_Y_FORWARD
RETURN TRUE
BREAK
CASE ALOC_bar_himen
respot.vCarPos = <<506.4850, -1535.9747, 28.1243>>
respot.fCarRot = 143.9599
respot.expandDir = RESPOT_EXPAND_X_LEFT | RESPOT_EXPAND_Y_BACK
RETURN TRUE
BREAK
CASE ALOC_bar_mojitos
respot.vCarPos = <<-141.1919, 6386.0737, 30.5182>>
respot.fCarRot = 311.4000
respot.expandDir = RESPOT_EXPAND_X_LEFT | RESPOT_EXPAND_Y_FORWARD
RETURN TRUE
BREAK
CASE ALOC_bar_singletons
respot.vCarPos = <<231.4387, 301.6899, 104.5082>>
respot.fCarRot = 266.2629
respot.expandDir = RESPOT_EXPAND_Y_FORWARD
RETURN TRUE
BREAK
CASE ALOC_cinema_downtown
respot.vCarPos = <<401.4480, -706.8287, 28.2877>>
respot.fCarRot = 176.4000
respot.expandDir = RESPOT_EXPAND_X_LEFT | RESPOT_EXPAND_Y_BACK
RETURN TRUE
BREAK
CASE ALOC_cinema_morningwood
respot.vCarPos = <<-1404.6110, -203.9962, 45.6678>>//<<-1405.0282, -204.3950, 45.6301>>//<<-1404.9075, -204.5926, 45.6097>>
respot.fCarRot = 33.7834//31.2726//31.3120
respot.expandDir = RESPOT_EXPAND_X_RIGHT | RESPOT_EXPAND_Y_BACK
RETURN TRUE
BREAK
CASE ALOC_cinema_vinewood
respot.vCarPos = <<292.0633, 176.6080, 103.3739>>
respot.fCarRot = 74.5200
respot.expandDir = RESPOT_EXPAND_X_LEFT
RETURN TRUE
BREAK
CASE ALOC_darts_hickBar
respot.vCarPos = <<1991.6521, 3075.7288, 46.0322>>
respot.fCarRot = 64.5087
respot.expandDir = RESPOT_EXPAND_X_RIGHT | RESPOT_EXPAND_Y_BACK
RETURN TRUE
BREAK
// CASE ALOC_darts_rockClub
// respot.vCarPos = <<-564.3402, 268.2539, 81.8879>>
// respot.fCarRot = 83.7466
// RETURN TRUE
// BREAK
CASE ALOC_golf_countryClub
respot.vCarPos = <<-1391.1478, 53.6687, 52.5963>>
respot.fCarRot = 309.1061
respot.expandDir = RESPOT_EXPAND_Y_BACK
RETURN TRUE
BREAK
CASE ALOC_tennis_beachCourt
respot.vCarPos = <<-1161.3501, -1593.9133, 3.3570>>
respot.fCarRot = 214.4588
respot.expandDir = RESPOT_EXPAND_X_RIGHT | RESPOT_EXPAND_Y_FORWARD
RETURN TRUE
BREAK
CASE ALOC_tennis_chumashHotel
respot.vCarPos = <<-2885.4353, -24.0344, 4.7220>>
respot.fCarRot = 72.8704
respot.expandDir = RESPOT_EXPAND_X_LEFT
RETURN TRUE
BREAK
CASE ALOC_tennis_LSUCourt1
respot.vCarPos = <<-1655.6605, 292.1499, 59.3852>>
respot.fCarRot = 291.5096
respot.expandDir = RESPOT_EXPAND_X_LEFT
RETURN TRUE
BREAK
CASE ALOC_tennis_michaelHouse
respot.vCarPos = <<-824.0479, 157.3689, 68.7834>>
respot.fCarRot = 263.9772
respot.expandDir = RESPOT_EXPAND_Y_BACK
RETURN TRUE
BREAK
CASE ALOC_tennis_richmanHotel1
respot.vCarPos = <<-1246.8259, 383.8191, 74.3899>>
respot.fCarRot = 108.8693
respot.expandDir = RESPOT_EXPAND_X_RIGHT | RESPOT_EXPAND_Y_BACK
RETURN TRUE
BREAK
CASE ALOC_tennis_vespucciHotel
respot.vCarPos = <<-939.0586, -1230.3401, 4.1746>>
respot.fCarRot = 300.1688
respot.expandDir = RESPOT_EXPAND_X_LEFT
RETURN TRUE
BREAK
CASE ALOC_tennis_vinewoodhotel1
respot.vCarPos = <<510.0929, -241.3109, 47.5251>>
respot.fCarRot = 159.3072
respot.expandDir = RESPOT_EXPAND_X_LEFT
RETURN TRUE
BREAK
CASE ALOC_tennis_weazelCourt1
respot.vCarPos = <<-1391.2991, -123.1333, 48.9688>>
respot.fCarRot = 4.0577
respot.expandDir = RESPOT_EXPAND_X_LEFT
RETURN TRUE
BREAK
CASE ALOC_stripclub_southCentral
respot.vCarPos = <<136.4575, -1301.6420, 28.2124>>
respot.fCarRot = 60.6745
respot.expandDir = RESPOT_EXPAND_Y_BACK
RETURN TRUE
BREAK
CASE ALOC_suspendFriends
respot.vCarPos = <<0.0, 0.0, 0.0>>
respot.fCarRot = 0.0
respot.expandDir = RESPOT_EXPAND_X_LEFT
SCRIPT_ASSERT("Private_ALOC_GetRespotData() - Trying to get respot data for ALOC_suspendFriends")
RETURN FALSE
BREAK
ENDSWITCH
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FRIENDS, "Private_ALOC_GetRespotData(): No data for ", GetLabel_enumActivityLocation(eActivityLoc))
SCRIPT_ASSERT("Private_ALOC_GetRespotData(): No data for eActivityLoc")
IF eActivityLoc < MAX_ACTIVITY_LOCATIONS
respot.vCarPos = GET_STATIC_BLIP_POSITION(g_ActivityLocations[eActivityLoc].sprite)
respot.fCarRot = 0.0
respot.expandDir = RESPOT_EXPAND_X_LEFT
ELSE
respot.vCarPos = <<0.0, 0.0, 0.0>>
respot.fCarRot = 0.0
respot.expandDir = RESPOT_EXPAND_X_LEFT
ENDIF
#ENDIF
RETURN FALSE
ENDFUNC
//---------------------------------------------------------------------------------------------------
//-- ACTIVITY SCENE DATA
//---------------------------------------------------------------------------------------------------
FUNC BOOL Private_ALOC_GetActivityScene(enumActivityLocation eActivityLoc, structFActivityScene& scene)
// Get loc-specific positions
SWITCH eActivityLoc
CASE ALOC_bar_bahamas
scene.mCamPanA[0].vPos = <<-1391.3512, -582.5974, 30.6630>>
scene.mCamPanA[0].vRot = <<0.5957, 0.0000, -144.2531>>
scene.mCamPanA[1].vPos = <<-1391.2810, -581.3097, 31.7334>>
scene.mCamPanA[1].vRot = <<39.9521, 0.0000, -167.3445>>
scene.fCamPanAFov = 39.9409
scene.mCamTime.vPos = <<-1391.2810, -581.3097, 31.7334>>
scene.mCamTime.vRot = <<39.9521, 0.0000, -167.3445>>
scene.fCamTimeFov = 39.9409
scene.mCamPanB[0].vPos = <<-1391.2810, -581.3097, 31.7334>>
scene.mCamPanB[0].vRot = <<39.9521, 0.0000, -167.3445>>
scene.mCamPanB[1].vPos = <<-1392.1105, -581.7819, 30.0333>>
scene.mCamPanB[1].vRot = <<6.5184, 0.0000, -146.8236>>
scene.fCamPanBFov = 39.9409
scene.fPanADurationNormal = 5.0000
scene.fPanADurationDrunk = 6.2500
scene.bIsCinema = FALSE
scene.vPedPPos[0] = <<-1391.6658, -583.7601, 29.2301>>
scene.vPedPPos[1] = <<-1388.3436, -587.0388, 29.2182>>
scene.vPedPPos[2] = <<-1390.4368, -583.8992, 29.2238>>
scene.vPedAPos[0] = <<-1392.9694, -585.0537, 29.2474>>
scene.vPedAPos[1] = <<-1389.9476, -586.8618, 29.2263>>
scene.vPedAPos[2] = <<-1391.2449, -585.6469, 29.2325>>
scene.vPedBPos[0] = <<-1388.3442, -583.0257, 29.2097>>
scene.vPedBPos[1] = <<-1387.8643, -586.0078, 29.2138>>
scene.vPedBPos[2] = <<-1388.8230, -584.4099, 29.2160>>
scene.vClearA = <<-1394.7904, -577.7897, 29.2828>>
scene.vClearB = <<-1388.2317, -587.2910, 38.4828>>
scene.fClearW = 7.4000
scene.bExtraCatchupCam = FALSE
RETURN TRUE
BREAK
CASE ALOC_bar_baybar
scene.mCamPanA[0].vPos = <<-259.9789, 6286.2612, 31.6806>>
scene.mCamPanA[0].vRot = <<1.7404, 0.0000, 32.0027>>
scene.mCamPanA[1].vPos = <<-260.7272, 6283.5938, 34.3499>>
scene.mCamPanA[1].vRot = <<12.5339, 0.0000, 13.1607>>
scene.fCamPanAFov = 39.9699
scene.mCamTime.vPos = <<-260.7272, 6283.5938, 34.3499>>
scene.mCamTime.vRot = <<12.5339, 0.0000, 13.1607>>
scene.fCamTimeFov = 39.9699
scene.mCamPanB[0].vPos = <<-257.0971, 6298.8657, 32.2329>>
scene.mCamPanB[0].vRot = <<5.4313, 0.0000, 156.4600>>
scene.mCamPanB[1].vPos = <<-255.0959, 6296.0127, 31.8561>>
scene.mCamPanB[1].vRot = <<3.6231, 0.0000, 140.3088>>
scene.fCamPanBFov = 49.9655
scene.fPanADurationNormal = 4.5000
scene.fPanADurationDrunk = 6.0000
scene.bIsCinema = FALSE
scene.vPedPPos[0] = <<-262.3289, 6286.1719, 30.4615>>
scene.vPedPPos[1] = <<-262.2624, 6291.0640, 30.4905>>
scene.vPedPPos[2] = <<-260.3908, 6289.6592, 30.4718>>
scene.vPedAPos[0] = <<-263.8451, 6286.9497, 30.4752>>
scene.vPedAPos[1] = <<-262.6830, 6290.6328, 30.4900>>
scene.vPedAPos[2] = <<-261.1694, 6288.4624, 30.4690>>
scene.vPedBPos[0] = <<-263.6732, 6285.2891, 30.4640>>
scene.vPedBPos[1] = <<-261.9075, 6292.0776, 30.4943>>
scene.vPedBPos[2] = <<-260.8339, 6291.5010, 30.4857>>
scene.vClearA = <<-264.4563, 6284.8921, 30.4666>>
scene.vClearB = <<-252.8467, 6295.8970, 39.4666>>
scene.fClearW = 13.2000
scene.mCamCatch.vPos = <<-258.315399,6289.812500,31.883162>>
scene.mCamCatch.vRot = <<2.278223,-0.211094,96.083275>>
scene.fCamCatchFov = 50.006855
scene.bExtraCatchupCam = TRUE
RETURN TRUE
BREAK
CASE ALOC_bar_biker
scene.mCamPanA[0].vPos = <<988.7534, -105.3700, 75.0866>>
scene.mCamPanA[0].vRot = <<1.7315, 0.0000, 79.8844>>
scene.mCamPanA[1].vPos = <<990.175415,-104.452583,77.386162>>
scene.mCamPanA[1].vRot = <<15.288944,0.000000,99.281036>>
scene.fCamPanAFov = 39.2167
scene.mCamTime.vPos = <<990.175415,-104.452583,77.386162>>
scene.mCamTime.vRot = <<15.288944,0.000000,99.281036>>
scene.fCamTimeFov = 39.2167
scene.mCamPanB[0].vPos = <<990.175415,-104.452583,77.386162>>
scene.mCamPanB[0].vRot = <<15.288944,0.000000,99.281036>>
scene.mCamPanB[1].vPos = <<988.2397, -108.0459, 74.6292>>
scene.mCamPanB[1].vRot = <<0.8744, 0.0000, 65.9740>>
scene.fCamPanBFov = 39.2167
scene.fPanADurationNormal = 5.0
scene.fPanADurationDrunk = 5.0
scene.bIsCinema = FALSE
scene.vPedPPos[0] = <<984.4031, -107.6140, 73.3531>>
scene.vPedPPos[1] = <<981.8692, -103.1675, 73.8535>>
scene.vPedPPos[2] = <<984.3040, -106.5439, 73.3531>>
scene.vPedAPos[0] = <<984.5980, -108.5928, 73.3531>>
scene.vPedAPos[1] = <<981.6747, -104.1510, 73.8535>>
scene.vPedAPos[2] = <<983.0098, -106.4819, 73.3531>>
scene.vPedBPos[0] = <<985.7677, -107.4711, 73.3531>>
scene.vPedBPos[1] = <<982.6229, -102.9315, 73.8535>>
scene.vPedBPos[2] = <<983.2742, -103.8405, 73.8535>>
scene.vClearA = <<988.8345, -110.7915, 73.0401>>
scene.vClearB = <<981.2740, -103.3357, 82.7901>>
scene.fClearW = 12.9000
scene.bExtraCatchupCam = FALSE
RETURN TRUE
BREAK
CASE ALOC_bar_downtown
scene.mCamPanA[0].vPos = <<250.2980, -1011.3746, 28.8803>>
scene.mCamPanA[0].vRot = <<9.4187, 0.0000, -112.0547>>
scene.mCamPanA[1].vPos = <<250.1848, -1011.1891, 28.9707>>
scene.mCamPanA[1].vRot = <<68.6477, 0.0000, -125.9116>>
scene.fCamPanAFov = 41.2174
scene.mCamTime.vPos = <<250.1848, -1011.1891, 28.9707>>
scene.mCamTime.vRot = <<68.6477, 0.0000, -125.9116>>
scene.fCamTimeFov = 41.2174
scene.mCamPanB[0].vPos = <<250.5783, -1019.1293, 29.3398>>
scene.mCamPanB[0].vRot = <<2.5216, 0.0000, -25.5830>>
scene.mCamPanB[1].vPos = <<250.4407, -1018.3758, 29.3662>>
scene.mCamPanB[1].vRot = <<2.5216, 0.0000, -16.6002>>
scene.fCamPanBFov = 50.0143
scene.fPanADurationNormal = 5.0
scene.fPanADurationDrunk = 6.5
scene.bIsCinema = FALSE
scene.vPedPPos[0] = <<251.4444, -1010.5997, 28.2705>>
scene.vPedPPos[1] = <<255.0215, -1013.0981, 28.2704>>
scene.vPedPPos[2] = <<252.7474, -1012.3459, 28.2699>>
scene.vPedAPos[0] = <<250.1186, -1013.4296, 28.2671>>
scene.vPedAPos[1] = <<254.7028, -1013.8532, 28.2703>>
scene.vPedAPos[2] = <<251.1483, -1012.7039, 28.2685>>
scene.vPedBPos[0] = <<251.5051, -1009.0486, 28.2719>>
scene.vPedBPos[1] = <<255.8904, -1012.5917, 28.2714>>
scene.vPedBPos[2] = <<251.1808, -1010.1984, 28.2707>>
scene.vClearA = <<252.6843, -1007.8513, 28.2784>>
scene.vClearB = <<249.2258, -1018.6283, 32.5284>>
scene.fClearW = 8.8000
scene.bExtraCatchupCam = FALSE
RETURN TRUE
BREAK
CASE ALOC_bar_himen
scene.mCamPanA[0].vPos = <<499.1641, -1542.4603, 29.6950>>
scene.mCamPanA[0].vRot = <<-1.8745, 0.0000, 76.9106>>
scene.mCamPanA[1].vPos = <<501.6507, -1541.1014, 31.2484>>
scene.mCamPanA[1].vRot = <<16.1310, 0.0000, 87.0601>>
scene.fCamPanAFov = 37.9427
scene.mCamTime.vPos = <<501.6507, -1541.1014, 31.2484>>
scene.mCamTime.vRot = <<16.1310, 0.0000, 87.0601>>
scene.fCamTimeFov = 37.9427
scene.mCamPanB[0].vPos = <<501.6507, -1541.1014, 31.2484>>
scene.mCamPanB[0].vRot = <<16.1310, 0.0000, 87.0601>>
scene.mCamPanB[1].vPos = <<501.2673, -1539.4803, 29.6989>>
scene.mCamPanB[1].vRot = <<-3.6143, 0.0075, 113.3040>>
scene.fCamPanBFov = 37.9427
scene.fPanADurationNormal = 5.5
scene.fPanADurationDrunk = 6.75
scene.bIsCinema = FALSE
scene.vPedPPos[0] = <<499.1487, -1540.3121, 28.2512>>
scene.vPedPPos[1] = <<493.8625, -1541.5378, 28.2877>>
scene.vPedPPos[2] = <<496.6065, -1542.5469, 28.2572>>
scene.vPedAPos[0] = <<499.6836, -1538.1771, 28.2656>>
scene.vPedAPos[1] = <<495.8752, -1540.6436, 28.2805>>
scene.vPedAPos[2] = <<496.1659, -1541.4502, 28.2708>>
scene.vPedBPos[0] = <<499.7010, -1543.8729, 28.1129>>
scene.vPedBPos[1] = <<494.0248, -1542.4833, 28.2833>>
scene.vPedBPos[2] = <<495.5604, -1544.2053, 28.2538>>
scene.vClearA = <<492.2227, -1547.4340, 28.2585>>
scene.vClearB = <<500.1553, -1537.7700, 35.2585>>
scene.fClearW = 14.0000
scene.bExtraCatchupCam = FALSE
RETURN TRUE
BREAK
CASE ALOC_bar_mojitos
scene.mCamPanA[0].vPos = <<-138.1448, 6379.6206, 33.5900>>
scene.mCamPanA[0].vRot = <<-12.7782, 0.0000, -106.0116>>
scene.mCamPanA[1].vPos = <<-138.6336, 6380.5029, 34.4018>>
scene.mCamPanA[1].vRot = <<23.2267, 0.0000, -107.6306>>
scene.fCamPanAFov = 50.0000
scene.mCamTime.vPos = <<-138.6336, 6380.5029, 34.4018>>
scene.mCamTime.vRot = <<23.2267, 0.0000, -107.6306>>
scene.fCamTimeFov = 50.0000
scene.mCamPanB[0].vPos = <<-138.6336, 6380.5029, 34.4018>>
scene.mCamPanB[0].vRot = <<23.2267, 0.0000, -107.6306>>
scene.mCamPanB[1].vPos = <<-139.2361, 6381.0630, 31.9137>>
scene.mCamPanB[1].vRot = <<0.8374, 0.0000, -107.1374>>
scene.fCamPanBFov = 50.0000
scene.fPanADurationNormal = 5.2500
scene.fPanADurationDrunk = 6.5000
scene.bIsCinema = FALSE
scene.vPedPPos[0] = <<-136.3300, 6380.1670, 30.5513>>
scene.vPedPPos[1] = <<-132.3319, 6376.8076, 31.1800>>
scene.vPedPPos[2] = <<-135.7501, 6379.6777, 30.6291>>
scene.vPedAPos[0] = <<-137.1064, 6379.5210, 30.5464>>
scene.vPedAPos[1] = <<-133.3788, 6376.0688, 31.1800>>
scene.vPedAPos[2] = <<-135.8515, 6378.6450, 30.6931>>
scene.vPedBPos[0] = <<-136.2626, 6382.0498, 30.5032>>
scene.vPedBPos[1] = <<-132.1531, 6377.4521, 31.1800>>
scene.vPedBPos[2] = <<-133.3998, 6379.0327, 30.8417>>
scene.vClearA = <<-141.2375, 6383.4414, 30.5265>>
scene.vClearB = <<-133.2909, 6375.6445, 36.5765>>
scene.fClearW = 8.1000
scene.bExtraCatchupCam = FALSE
RETURN TRUE
BREAK
CASE ALOC_bar_singletons
scene.mCamPanA[0].vPos = <<228.6531, 306.2192, 106.3708>>
scene.mCamPanA[0].vRot = <<-5.0435, 0.2052, 109.1608>>
scene.mCamPanA[1].vPos = <<229.2501, 305.8874, 107.8613>>
scene.mCamPanA[1].vRot = <<22.4767, 0.2052, 118.4014>>
scene.fCamPanAFov = 49.9886
scene.mCamTime.vPos = <<229.2501, 305.8874, 107.8613>>
scene.mCamTime.vRot = <<22.4767, 0.2052, 118.4014>>
scene.fCamTimeFov = 49.9886
scene.mCamPanB[0].vPos = <<229.2501, 305.8874, 107.8613>>
scene.mCamPanB[0].vRot = <<22.4767, 0.2052, 118.4014>>
scene.mCamPanB[1].vPos = <<228.8797, 305.0008, 106.0803>>
scene.mCamPanB[1].vRot = <<-7.3693, 0.2052, 137.6210>>
scene.fCamPanBFov = 49.9886
scene.fPanADurationNormal = 5.0
scene.fPanADurationDrunk = 6.0
scene.bIsCinema = FALSE
scene.vPedPPos[0] = <<227.0380, 302.3240, 104.5340>>
scene.vPedPPos[1] = <<221.2218, 304.1971, 104.5653>>
scene.vPedPPos[2] = <<227.0380, 302.3240, 104.5340>>
scene.vPedAPos[0] = <<228.5144, 302.3003, 104.3811>>
scene.vPedAPos[1] = <<219.9782, 305.6431, 104.5847>>
scene.vPedAPos[2] = <<224.1672, 302.8337, 104.5366>>
scene.vPedBPos[0] = <<227.6132, 301.1576, 104.5328>>
scene.vPedBPos[1] = <<220.1857, 303.6531, 104.5743>>
scene.vPedBPos[2] = <<222.3438, 302.9540, 104.5386>>
scene.vClearA = <<230.5813, 304.3873, 104.4136>>
scene.vClearB = <<220.4306, 307.9557, 112.5136>>
scene.fClearW = 12.5000
scene.bExtraCatchupCam = FALSE
RETURN TRUE
BREAK
CASE ALOC_cinema_downtown
scene.mCamPanA[0].vPos = <<405.9127, -711.7676, 31.2618>>
scene.mCamPanA[0].vRot = <<19.9190, 0.0000, 90.3396>>
scene.mCamPanA[1].vPos = <<405.4205, -711.7840, 29.3979>>
scene.mCamPanA[1].vRot = <<5.5077, 0.0000, 99.6259>>
scene.fCamPanAFov = 50.0000
scene.mCamTime.vPos = <<405.4205, -711.7840, 29.3979>>
scene.mCamTime.vRot = <<5.5077, 0.0000, 99.6259>>
scene.fCamTimeFov = 50.0000
scene.mCamPanB[0].vPos = <<405.4205, -711.7840, 29.3979>>
scene.mCamPanB[0].vRot = <<5.5077, 0.0000, 99.6259>>
scene.mCamPanB[1].vPos = <<405.4205, -711.7840, 29.3979>>
scene.mCamPanB[1].vRot = <<5.5077, 0.0000, 99.6259>>
scene.fCamPanBFov = 50.0000
scene.fPanADurationNormal = 5.0
scene.fPanADurationDrunk = 5.0
scene.bIsCinema = TRUE
scene.vPedPPos[0] = <<393.1420, -713.4531, 28.2855>>
scene.vPedPPos[1] = <<397.1506, -714.0617, 28.2857>>
scene.vPedPPos[2] = <<399.4089, -714.5928, 28.2858>>
scene.vPedAPos[0] = <<394.7705, -712.7902, 28.2853>>
scene.vPedAPos[1] = <<397.9654, -713.1153, 28.2854>>
scene.vPedAPos[2] = <<398.8918, -713.4561, 28.2855>>
scene.vPedBPos[0] = <<395.3366, -714.9562, 28.2859>>
scene.vPedBPos[1] = <<397.7031, -715.1816, 28.2860>>
scene.vPedBPos[2] = <<398.9623, -715.4068, 28.2860>>
scene.vClearA = <<392.7992, -712.5184, 28.2852>>
scene.vClearB = <<411.5248, -712.1509, 32.5352>>
scene.fClearW = 9.2000
scene.bExtraCatchupCam = FALSE
RETURN TRUE
BREAK
CASE ALOC_cinema_morningwood
scene.mCamPanA[0].vPos = <<-1405.7139, -195.7280, 54.0098>>
scene.mCamPanA[0].vRot = <<-4.2783, 0.0000, 121.8633>>
scene.mCamPanA[1].vPos = <<-1407.5447, -194.7853, 47.9021>>
scene.mCamPanA[1].vRot = <<4.3037, 0.0000, 134.3144>>
scene.fCamPanAFov = 50.0000
scene.mCamTime.vPos = <<-1407.5447, -194.7853, 47.9021>>
scene.mCamTime.vRot = <<4.3037, 0.0000, 134.3144>>
scene.fCamTimeFov = 50.0000
scene.mCamPanB[0].vPos = <<989.1804, -103.8445, 78.8565>>
scene.mCamPanB[0].vRot = <<2.7704, 0.0000, 103.6486>>
scene.mCamPanB[1].vPos = <<988.2397, -108.0459, 74.6292>>
scene.mCamPanB[1].vRot = <<0.8744, 0.0000, 65.9740>>
scene.fCamPanBFov = 39.2167
scene.fPanADurationNormal = 5.0
scene.fPanADurationDrunk = 5.0
scene.bIsCinema = TRUE
scene.vPedPPos[0] = <<-1417.2899, -203.6409, 45.5004>>
scene.vPedPPos[1] = <<-1412.4402, -199.2623, 46.2752>>
scene.vPedPPos[2] = <<-1403.6200, -162.3560, 46.5711>>
scene.vPedAPos[0] = <<-1416.8081, -201.9135, 46.1048>>
scene.vPedAPos[1] = <<-1412.8599, -197.2908, 46.2686>>
scene.vPedAPos[2] = <<-1404.7800, -163.0730, 46.5422>>
scene.vPedBPos[0] = <<-1419.2917, -202.7134, 45.5004>>
scene.vPedBPos[1] = <<-1414.3977, -198.1992, 46.2804>>
scene.vPedBPos[2] = <<-1411.0284, -198.9657, 46.2444>>
scene.vClearA = <<-1426.3295, -215.1618, 45.5004>>
scene.vClearB = <<-1404.3307, -192.3439, 51.2004>>
scene.fClearW = 9.6000
scene.bExtraCatchupCam = FALSE
RETURN TRUE
BREAK
CASE ALOC_cinema_vinewood
scene.mCamPanA[0].vPos = <<293.4810, 195.6959, 105.3287>>
scene.mCamPanA[0].vRot = <<28.8303, 0.0000, -42.0262>>
scene.mCamPanA[1].vPos = <<293.4810, 195.6959, 105.3287>>
scene.mCamPanA[1].vRot = <<7.0245, 0.0000, -60.5823>>
scene.fCamPanAFov = 50.0000
scene.mCamTime.vPos = <<320.8777, 167.7101, 104.4684>>
scene.mCamTime.vRot = <<6.1110, 0.0000, -66.0239>>
scene.fCamTimeFov = 50.0000
scene.mCamPanB[0].vPos = <<323.4883, 156.7916, 103.6546>>
scene.mCamPanB[0].vRot = <<5.5771, 0.0000, -38.8920>>
scene.mCamPanB[1].vPos = <<323.4883, 156.7916, 103.6546>>
scene.mCamPanB[1].vRot = <<5.5771, 0.0000, -38.8920>>
scene.fCamPanBFov = 50.0000
scene.fPanADurationNormal = 5.0
scene.fPanADurationDrunk = 5.0
scene.bIsCinema = TRUE
scene.vPedPPos[0] = <<300.1136, 202.9304, 103.3684>>
scene.vPedPPos[1] = <<298.3760, 199.1103, 103.3446>>
scene.vPedPPos[2] = <<337.5520, 166.9108, 102.3808>>
scene.vPedAPos[0] = <<301.1823, 202.7771, 103.3837>>
scene.vPedAPos[1] = <<299.3044, 198.6458, 103.3357>>
scene.vPedAPos[2] = <<238.3950, 299.4760, 104.5890>>
scene.vPedBPos[0] = <<299.5274, 203.6378, 103.3739>>
scene.vPedBPos[1] = <<297.0100, 198.7480, 103.3481>>
scene.vPedBPos[2] = <<238.3940, 299.4760, 104.5890>>
scene.vClearA = <<336.7123, 180.7974, 102.0090>>
scene.vClearB = <<313.8644, 161.0981, 106.6090>>
scene.fClearW = 10.7000
scene.bExtraCatchupCam = FALSE
RETURN TRUE
BREAK
ENDSWITCH
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FRIENDS, "Private_ALOC_GetActivityScene(): No data for ", GetLabel_enumActivityLocation(eActivityLoc))
SCRIPT_ASSERT("Private_ALOC_GetActivityScene(): No data for eActivityLoc")
#ENDIF
RETURN FALSE
ENDFUNC
//---------------------------------------------------------------------------------------------------
//-- DEBUG WARP POSITIONS
//---------------------------------------------------------------------------------------------------
#IF IS_DEBUG_BUILD
FUNC VECTOR DEBUG_GetFriendLocJumpOffset(enumFriendLocation eDropoffLoc)
CONST_FLOAT fSpawnRadius 15.0//20.0
FLOAT fJumpAngle = 0.0
SWITCH eDropoffLoc
CASE FLOC_michael_RH
fJumpAngle = 225.0
RETURN <<COS(fJumpAngle), SIN(fJumpAngle), 0.0>>*fSpawnRadius //RETURN <<15,15,0>>
BREAK
CASE FLOC_franklin_SC
fJumpAngle = 210.0
RETURN <<COS(fJumpAngle), SIN(fJumpAngle), 0.0>>*fSpawnRadius //RETURN <<-15,-7.5,0>>
BREAK
CASE FLOC_trevor_CS
fJumpAngle = 345.0
RETURN <<COS(fJumpAngle), SIN(fJumpAngle), 0.0>>*fSpawnRadius //RETURN <<15,15,0>>
BREAK
CASE FLOC_lamar_SC
fJumpAngle = 350.0
RETURN <<COS(fJumpAngle), SIN(fJumpAngle), 0.0>>*fSpawnRadius //RETURN <<-15,-7.5,0>>
BREAK
CASE FLOC_franklin_VH
RETURN <<19.0268, 560.8762, 176.7073>> - g_FriendLocations[FLOC_franklin_VH].vPickupCoord
BREAK
// CASE FLOC_gasStation_DT
// RETURN <<-539.5134, -1200.3910, 17.0048>> - g_FriendLocations[FLOC_gasStation_DT].vPickupCoord
// BREAK
DEFAULT
VECTOR vOffset
vOffset = NORMALISE_VECTOR(g_FriendLocations[eDropoffLoc].vPedOffsetA) * -15.0
vOffset.z = 0.0
RETURN vOffset
//// IF g_FriendLocations[eDropoffLoc].iSpawnPosCount > 0
//// INT iSpawnIndex
//// iSpawnIndex = g_FriendLocations[eDropoffLoc].iSpawnPosCount
//// RETURN g_FriendLocations[eDropoffLoc].vSpawnPosPoints[GET_RANDOM_INT_IN_RANGE(0, iSpawnIndex)] - g_FriendLocations[eDropoffLoc].vPickupCoord
//// ELSE
// fJumpAngle = GET_RANDOM_FLOAT_IN_RANGE(0.0, 360.0)
// RETURN <<COS(fJumpAngle), SIN(fJumpAngle), 0.0>>*fSpawnRadius //RETURN <<-15,-7.5,0>>
//// ENDIF
BREAK
ENDSWITCH
SCRIPT_ASSERT("DEBUG_GetFriendJumpOffset - invalid eFriend")
RETURN <<0,0,0>>
ENDFUNC
FUNC VECTOR DEBUG_GetActivityLocJumpOffset(enumActivityLocation eJumpLocation)
VECTOR vAnchor = GET_STATIC_BLIP_POSITION(g_ActivityLocations[eJumpLocation].sprite)
SWITCH eJumpLocation
CASE ALOC_golf_countryClub RETURN <<-1370.7950, 49.2175, 52.7057>> - vAnchor BREAK
CASE ALOC_tennis_beachCourt RETURN <<-1162.9464, -1598.2458, 3.3259>> - vAnchor BREAK
CASE ALOC_tennis_michaelHouse RETURN <<-787.7080, 151.7993, 67.6744>> - vAnchor BREAK
CASE ALOC_stripclub_southCentral RETURN <<133.8653, -1306.9590, 28.0722>> - vAnchor BREAK
// CASE ALOC_darts_rockClub RETURN <<-548.7711, 272.4878, 81.9662>> - vAnchor BREAK
CASE ALOC_darts_hickBar RETURN <<2008.2849, 3058.3877, 46.0502>> - vAnchor BREAK
CASE ALOC_cinema_vinewood RETURN <<329.5648, 170.5077, 102.5544>> - vAnchor BREAK
CASE ALOC_cinema_downtown RETURN <<398.1588, -710.9405, 28.2847>> - vAnchor BREAK
CASE ALOC_cinema_morningwood RETURN <<-1412.8745, -200.0044, 46.2527>> - vAnchor BREAK
CASE ALOC_bar_bahamas RETURN <<-1393.7988, -586.1046, 29.2600>> - vAnchor BREAK
CASE ALOC_bar_baybar RETURN <<-264.3293, 6284.1465, 30.4614>> - vAnchor BREAK
CASE ALOC_bar_biker RETURN <<971.0001, -132.2628, 73.2911>> - vAnchor BREAK
CASE ALOC_bar_downtown RETURN <<252.9373, -1003.6371, 28.2687>> - vAnchor BREAK
CASE ALOC_bar_himen RETURN <<502.5184, -1536.1772, 28.2164>> - vAnchor BREAK
CASE ALOC_bar_mojitos RETURN <<-148.1390, 6376.0708, 30.5287>> - vAnchor BREAK
CASE ALOC_bar_singletons RETURN <<225.0749, 296.9051, 104.5345>> - vAnchor BREAK
// CASE ALOC_bar_yellowjack RETURN <<2008.2849, 3058.3877, 46.0502>> - vAnchor BREAK
ENDSWITCH
IF g_ActivityLocations[eJumpLocation].type = ATYPE_bar
VECTOR vSpawn = vAnchor + << 10.0, 0.0, 0.0 >>
IF NOT GET_SAFE_COORD_FOR_PED(vSpawn, TRUE, vSpawn, GSC_FLAG_NOT_INTERIOR|GSC_FLAG_NOT_ISOLATED|GSC_FLAG_NOT_WATER)
GET_SAFE_COORD_FOR_PED(vSpawn, FALSE, vSpawn, GSC_FLAG_NOT_INTERIOR|GSC_FLAG_NOT_ISOLATED|GSC_FLAG_NOT_WATER)
ENDIF
RETURN vSpawn - vAnchor
ENDIF
// RETURN NORMALISE_VECTOR(g_ActivityLocations[eJumpLocation].vResetVehicleOffset) * 15.0
RETURN <<0.0, 0.0, 0.0>>
ENDFUNC
#ENDIF