2255 lines
77 KiB
Python
Executable File
2255 lines
77 KiB
Python
Executable File
//=======================================================================================================================================
|
||
// Taxi_GotYouNow.sc
|
||
// Dev : John R. Diaz
|
||
/*
|
||
• “We’ve got you this time, pal!” This is the only scenario that launches without immediately notifying the player. If the player
|
||
has angered a specific gang or has committed enough crimes to anger the police, this scenario will launch and mimic a normal passenger.
|
||
However, the drop off for this passenger will be someplace unusual. (Such as behind a warehouse or at an abandoned peer.) When you arrive,
|
||
the passenger runs from the car and takes cover. Baddies and cars pop out of hiding and ambush you. “You shouldn’t fuck with ___!” they
|
||
shout before opening fire. The player can flee, but if they opt to fight the ambushers should have ammo and contraband such that the
|
||
player feels that they did not waste their time by picking up cab fares.
|
||
*/
|
||
|
||
|
||
|
||
//CHANGELOG==========================================================================================================
|
||
//9/27/11 - Reformatting/prettifying all taxi oj scripts
|
||
//12/20/11 - End of mission cleaned up to allow for better sequence of events. General script cleanup. --johnsripan
|
||
//4/27/12 - Removed all refs to previous Got You Now which took place in the construction site. :(
|
||
//===================================================================================================================
|
||
|
||
|
||
|
||
//Compile out Title Update changes to header functions.
|
||
//Must be before includes.
|
||
//CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R.
|
||
|
||
|
||
|
||
//Includes------------------------------------------------------
|
||
USING "Taxi_Includes.sch"
|
||
|
||
USING "stripclub_public.sch" //Add girl to cellphone
|
||
|
||
|
||
//Local Variables-----------------------------------------------
|
||
|
||
TaxiStruct myTaxiData
|
||
|
||
MODEL_NAMES mPassengerModel = G_M_Y_MexGoon_03
|
||
|
||
|
||
ENUM TAXIOJ_GYN_BONUS
|
||
TGYN_BONUS_FLAWLESS_VICTORY = 0,
|
||
TGYN_BONUS_TOTAL
|
||
|
||
ENDENUM
|
||
|
||
BONUS_FIELD bonusFieldGotYouNow[TGYN_BONUS_TOTAL]
|
||
|
||
//Construction Site Setup/Custscene states
|
||
ENUM CSITE_STATES
|
||
CSITE_INTRO_DIALOGUE = 0,
|
||
CSITE_S01_CLEAR_LAND,
|
||
CSITE_S01_CLEANUP
|
||
|
||
ENDENUM
|
||
CSITE_STATES m_CSiteState = CSITE_INTRO_DIALOGUE
|
||
|
||
ENUM MUG_SCENE
|
||
MUGSCENE_INIT,
|
||
MUGSCENE_AGGRO,
|
||
MUGSCENE_PULSE,
|
||
MUGSCENE_FIRST_CAM,
|
||
MUGSCENE_SECOND_CAM,
|
||
MUGSCENE_GEN_END,
|
||
MUGSCENE_GEN_END2,
|
||
MUGSCENE_SKIP,
|
||
MUGSCENE_SKIP_SETUP,
|
||
MUGSCENE_SKIP_FADE_IN,
|
||
MUGSCENE_SKIP_END
|
||
ENDENUM
|
||
MUG_SCENE m_mugScene = MUGSCENE_INIT
|
||
|
||
ENUM TAXI_DYNAMIC_REQUESTS
|
||
TAXIDR_REQUEST,
|
||
TAXIDR_WAIT_STREAM,
|
||
TAXIDR_CREATE,
|
||
TAXIDR_CLEANUP
|
||
ENDENUM
|
||
TAXI_DYNAMIC_REQUESTS eTaxiRequestState = TAXIDR_REQUEST
|
||
|
||
CONST_FLOAT TAXI_OJ_CONST_DIST_TO_SEE_CSITE 85.0
|
||
CONST_FLOAT TAXI_OJ_CONST_DIST_TO_ESCAPE_CSITE 300.0
|
||
CONST_FLOAT TAXI_CONST_CSITE_SPEED_PLAYBACK 1.0
|
||
CONST_FLOAT TAXI_CONST_GOON_EGG_ON_DELAY 10.0
|
||
CONST_FLOAT fCarDistance 5.0
|
||
CONST_FLOAT fPedDistance 4.0
|
||
CONST_INT TAXI_CONST_BONUS_CASH_FLAWLESS_VICTORY 100 //500 //1000
|
||
|
||
//Native Data
|
||
SEQUENCE_INDEX siTemp
|
||
|
||
WEAPON_TYPE currentWeapon
|
||
|
||
//Entitys
|
||
VEHICLE_INDEX viGauntlet
|
||
PED_INDEX piChickInGauntlet
|
||
//Ints
|
||
INT iDebugThrottle = 1
|
||
INT iUnderBridgeIndex = -1
|
||
INT iLocalBitSet = 0
|
||
INT iTipIndex = 0
|
||
INT iPlayerHealth
|
||
INT iPassengerHealth
|
||
INT iSoundID_RingTone = -1
|
||
|
||
//Bools
|
||
BOOL bFairFight = TRUE
|
||
BOOL bTaxiGYNOneWarning = FALSE
|
||
BOOL bWarningLeeway = FALSE
|
||
#IF IS_DEBUG_BUILD
|
||
BOOL bFlawlessVictory = TRUE //Made debug only by bobby wright - 30/04/12
|
||
#ENDIF
|
||
BOOL bHealthBonusGiven = FALSE
|
||
BOOL bTaxiEarlyAggro
|
||
BOOL bPhoneRang
|
||
BOOL bSeatShuffled
|
||
BOOL bPhoneAnswered
|
||
BOOL bPulseTriggered
|
||
|
||
//Vectors
|
||
VECTOR vPassengerPt = << -1612.2349, 189.1934, 58.9435 >> //UCLS Campus
|
||
VECTOR vPassengerPickupPt = << -1612.4570, 184.5166, 58.7712 >>
|
||
VECTOR vNewDropoff_2_Under_Bridge = << 32.60266, -1243.83740, 28.45076 >>//<< 27.1498, -1246.5232, 28.4013 >>
|
||
VECTOR vDropOffUnderBridge = << 33.2419, -1234.3851, 28.2953 >>
|
||
VECTOR vDropOffChickHouse = << -628.1456, -760.3765, 25.1060 >>//<< -1044.6719, -889.0599, 3.9594 >>
|
||
VECTOR vChickPtToWalkTo = << -584.7739, -779.0701, 24.0178 >>//<< -1025.6396, -919.9550, 1.2780 >>
|
||
VECTOR vFightAreaPos1 = <<47.567871,-1234.684692,28.297070>>
|
||
VECTOR vFightAreaPos2 = <<-21.325907,-1235.549194,32.475967>>
|
||
VECTOR vScrapLocation = <<37.51834, -1239.02063, 28.40267>>
|
||
//VECTOR vAlonzoRunPt
|
||
|
||
FLOAT fFightAreaWidth = 33.750000
|
||
|
||
TEXT_LABEL_23 sGetInCabLabel
|
||
TEXT_LABEL_23 sCurrentLine
|
||
|
||
TEXT_LABEL_63 sMaleChatEnter = "amb@world_human_hang_out_street@male_a@enter" //use enter
|
||
TEXT_LABEL_63 sMaleChatBase = "amb@world_human_hang_out_street@male_a@base" //use base
|
||
TEXT_LABEL_63 sMaleChatIdle = "amb@world_human_hang_out_street@male_a@idle_a" //use idle_a or idle_d
|
||
TEXT_LABEL_63 sMaleChatExit = "amb@world_human_hang_out_street@male_a@exit" //use exit
|
||
|
||
TEXT_LABEL_63 sFemaleChatEnter = "amb@world_human_hang_out_street@female_arm_side@enter" //use enter
|
||
TEXT_LABEL_63 sFemaleChatBase = "amb@world_human_hang_out_street@female_arm_side@base" //use base
|
||
TEXT_LABEL_63 sFemaleChatIdle = "amb@world_human_hang_out_street@female_arm_side@idle_a" //use idle_b
|
||
TEXT_LABEL_63 sFemaleChatExit = "amb@world_human_hang_out_street@female_arm_side@exit" //use exit
|
||
|
||
//Const
|
||
CONST_INT kPedLowAccuracy 1
|
||
CONST_INT kPedNotSoLowAccuracy 1
|
||
CONST_INT k_bDropOffFound 0
|
||
CONST_INT k_bPassengerTalking 1
|
||
CONST_INT k_bPassengerVulnerable 2
|
||
|
||
SCENARIO_BLOCKING_INDEX sbIndex_TaxiOJ
|
||
|
||
CAMERA_INDEX ciTransCam
|
||
//Dialogue Queue Info
|
||
BOOL g_bDebug = FALSE
|
||
TAXI_OJ_DIALOGUE_Q_DATA tTaxiOJ_DQ_Data
|
||
TAXI_OJ_DQ_CONVERSATION_LINE tDialogueLine[CONST_TAXIOJ_SIZE_Q]
|
||
|
||
BLIP_INDEX blipZo
|
||
|
||
AGGRO_ARGS aggroArgs
|
||
|
||
SCRIPT_SHARD_BIG_MESSAGE TaxiMidSize
|
||
//Debug---------------------------------------------------------------------------------------------------------------
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
WIDGET_GROUP_ID taxiRideWidgets
|
||
BOOL bForceReset, bResetting
|
||
INT iForcedLocation// = 2
|
||
BOOL bDebugTurnOnFreeRide = FALSE
|
||
FLOAT fCar2PBSpeed = 1.0
|
||
BOOL bDebugBonusFlawlessVictory
|
||
TEXT_LABEL_31 sDebugString[3]
|
||
TXM_DEBUG_SKIP_STATES tDebugState = TXM_DSS_CHECK_FOR_BUTTON_PRESS
|
||
#ENDIF
|
||
|
||
//FUNCTIONS------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
ENUM GYN_MODELS
|
||
GYN_MODEL_GAUNTLET = 0,
|
||
GYN_MODEL_LADY,
|
||
|
||
GYN_NUM_MODELS
|
||
ENDENUM
|
||
|
||
FUNC MODEL_NAMES GET_GYN_MISSION_MODELS(GYN_MODELS whichModel)
|
||
MODEL_NAMES mnToReturn
|
||
SWITCH whichModel
|
||
CASE GYN_MODEL_GAUNTLET
|
||
mnToReturn = GAUNTLET
|
||
BREAK
|
||
|
||
CASE GYN_MODEL_LADY
|
||
mnToReturn = A_F_Y_EASTSA_03
|
||
BREAK
|
||
ENDSWITCH
|
||
|
||
RETURN mnToReturn
|
||
ENDFUNC
|
||
|
||
|
||
/// PURPOSE: Make all of our mission specific requests here
|
||
///
|
||
PROC REQUEST_TAXI_ODDJOB_GYN_STREAMS_STAGE_01()
|
||
//Load text and UI
|
||
REQUEST_MODEL(mPassengerModel)
|
||
//Load text and UI
|
||
TAXI_INIT_SHARED_STREAMS()
|
||
TaxiMidSize.siMovie = REQUEST_MG_MIDSIZED_MESSAGE()
|
||
//REQUEST_AMBIENT_AUDIO_BANK("TREVOR_2_BIKER_RINGTONE")
|
||
REQUEST_AMBIENT_AUDIO_BANK("SCRIPT\\TREVOR_2_BIKER_RINGTONE")
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"TXM GYN - Stage 01 Assets Requested")
|
||
ENDPROC
|
||
|
||
PROC RELEASE_TAXI_ODDJOB_GYN_STREAMS_STAGE_01()
|
||
|
||
SET_MODEL_AS_NO_LONGER_NEEDED(mPassengerModel)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Taxi OJ Follow Car Stage01 Assets Released")
|
||
|
||
ENDPROC
|
||
|
||
PROC REQUEST_TAXI_ODDJOB_GYN_STREAMS_STAGE_02()
|
||
|
||
REQUEST_MODEL(GET_GYN_MISSION_MODELS(GYN_MODEL_GAUNTLET))
|
||
REQUEST_MODEL(GET_GYN_MISSION_MODELS(GYN_MODEL_LADY))
|
||
|
||
REQUEST_ANIM_SET("move_strafe_melee_unarmed")
|
||
|
||
REQUEST_ANIM_DICT("oddjobs@taxi@gyn@")
|
||
REQUEST_ANIM_DICT("misscommon@response")
|
||
|
||
REQUEST_ANIM_DICT("melee@unarmed@streamed_taunts")
|
||
REQUEST_ANIM_DICT(sMaleChatEnter)
|
||
REQUEST_ANIM_DICT(sMaleChatBase)
|
||
REQUEST_ANIM_DICT(sMaleChatIdle)
|
||
REQUEST_ANIM_DICT(sMaleChatExit)
|
||
REQUEST_ANIM_DICT(sFemaleChatEnter)
|
||
REQUEST_ANIM_DICT(sFemaleChatBase)
|
||
REQUEST_ANIM_DICT(sFemaleChatIdle)
|
||
REQUEST_ANIM_DICT(sFemaleChatExit)
|
||
|
||
REQUEST_WAYPOINT_RECORDING("taxi_oj_gyn")
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"TXM GYN - Stage 02 Assets Requested")
|
||
ENDPROC
|
||
|
||
PROC RELEASE_TAXI_ODDJOB_GYN_STREAMS_STAGE_02()
|
||
|
||
SET_MODEL_AS_NO_LONGER_NEEDED(GET_GYN_MISSION_MODELS(GYN_MODEL_GAUNTLET))
|
||
SET_MODEL_AS_NO_LONGER_NEEDED(GET_GYN_MISSION_MODELS(GYN_MODEL_LADY))
|
||
|
||
REMOVE_ANIM_SET("move_strafe_melee_unarmed")
|
||
|
||
REMOVE_ANIM_DICT("oddjobs@taxi@gyn@")
|
||
REMOVE_ANIM_DICT("melee@unarmed@streamed_taunts")
|
||
REMOVE_ANIM_DICT("misscommon@response")
|
||
REMOVE_ANIM_DICT(sMaleChatEnter)
|
||
REMOVE_ANIM_DICT(sMaleChatBase)
|
||
REMOVE_ANIM_DICT(sMaleChatIdle)
|
||
REMOVE_ANIM_DICT(sMaleChatExit)
|
||
REMOVE_ANIM_DICT(sFemaleChatEnter)
|
||
REMOVE_ANIM_DICT(sFemaleChatBase)
|
||
REMOVE_ANIM_DICT(sFemaleChatIdle)
|
||
REMOVE_ANIM_DICT(sFemaleChatExit)
|
||
|
||
REMOVE_WAYPOINT_RECORDING("taxi_oj_gyn")
|
||
|
||
RELEASE_AMBIENT_AUDIO_BANK()
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"TXM GYN - Stage 02 Assets Released")
|
||
ENDPROC
|
||
|
||
|
||
//// PURPOSE: Waits for our assets to load
|
||
///
|
||
/// RETURNS: TRUE if everything has loaded correctly FALSE if there was a problem
|
||
///
|
||
///
|
||
///
|
||
FUNC BOOL HAVE_TAXI_OJ_GYN_STAGE_01_ASSETS_LOADED()
|
||
|
||
IF NOT HAS_MODEL_LOADED(mPassengerModel)
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading A_M_M_Farmer_01",iDebugThrottle)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NOT HAS_SCALEFORM_MOVIE_LOADED(TaxiMidSize.siMovie)
|
||
#IF IS_DEBUG_BUILD
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading TaxiMidSize.siMovie",iDebugThrottle)
|
||
#ENDIF
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
|
||
IF NOT TAXI_SHARED_ASSETS_STREAMED(iDebugThrottle)
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading shared assets",iDebugThrottle)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"TXMOJ - GYN All Stage 01 Assets Have Loaded")
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL HAVE_TAXI_OJ_GYN_STAGE_02_ASSETS_LOADED()
|
||
|
||
IF NOT HAS_MODEL_LOADED(GET_GYN_MISSION_MODELS(GYN_MODEL_GAUNTLET))
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading Gaunlet ",iDebugThrottle)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NOT HAS_MODEL_LOADED(GET_GYN_MISSION_MODELS(GYN_MODEL_LADY))
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading A_F_Y_EastSA_03",iDebugThrottle)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
|
||
IF NOT HAS_ANIM_SET_LOADED("move_strafe_melee_unarmed")
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading move_strafe_melee_unarmed ",iDebugThrottle)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NOT HAS_ANIM_DICT_LOADED("misscommon@response")
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading misscommon@response ",iDebugThrottle)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
|
||
IF NOT HAS_ANIM_DICT_LOADED(sMaleChatEnter)
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading sMaleChatEnter ",iDebugThrottle)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NOT HAS_ANIM_DICT_LOADED(sMaleChatBase)
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading sMaleChatBase ",iDebugThrottle)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NOT HAS_ANIM_DICT_LOADED(sMaleChatExit)
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading sMaleChatExit ",iDebugThrottle)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NOT HAS_ANIM_DICT_LOADED(sMaleChatIdle)
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading sMaleChatIdle ",iDebugThrottle)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NOT HAS_ANIM_DICT_LOADED(sFemaleChatBase)
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading sFemaleChatBase ",iDebugThrottle)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NOT HAS_ANIM_DICT_LOADED(sFemaleChatEnter)
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading sFemaleChatEnter ",iDebugThrottle)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NOT HAS_ANIM_DICT_LOADED(sFemaleChatExit)
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading sFemaleChatExit ",iDebugThrottle)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NOT HAS_ANIM_DICT_LOADED(sFemaleChatIdle)
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading sFemaleChatIdle ",iDebugThrottle)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NOT GET_IS_WAYPOINT_RECORDING_LOADED("taxi_oj_gyn")
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMING - Way point Recording Loading taxi_oj_gyn...",iDebugThrottle)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
PROC Script_Cleanup()
|
||
#IF IS_DEBUG_BUILD
|
||
IF DOES_WIDGET_GROUP_EXIST(taxiRideWidgets)
|
||
DELETE_WIDGET_GROUP(taxiRideWidgets)
|
||
ENDIF
|
||
|
||
CLEANUP_TAXI_WIDGETS()
|
||
|
||
#ENDIF
|
||
|
||
TAXI_OJ_CLEAR_AREA_OF_ALL_PEDS_AND_SCENARIOS(sbIndex_TaxiOJ, vNewDropoff_2_Under_Bridge, 100.0,TRUE)
|
||
|
||
|
||
REMOVE_WAYPOINT_RECORDING("taxi_oj_gyn")
|
||
SET_CREATE_RANDOM_COPS(TRUE)
|
||
|
||
RELEASE_TAXI_ODDJOB_GYN_STREAMS_STAGE_01()
|
||
RELEASE_TAXI_ODDJOB_GYN_STREAMS_STAGE_02()
|
||
|
||
REMOVE_MODEL_HIDE(vScrapLocation, 5.0, PROP_SKID_CHAIR_02)
|
||
REMOVE_MODEL_HIDE(vScrapLocation, 5.0, PROP_RUB_COUCH03)
|
||
|
||
STOP_AUDIO_SCENE("TAXI_GOT_U_NOW")
|
||
|
||
TERMINATE_THIS_THREAD()
|
||
ENDPROC
|
||
|
||
// Perform any special commands if the script fails
|
||
// NOTE: This can include WAITs prior to the Mission_Cleanup() call
|
||
PROC Script_Failed()
|
||
TAXI_SCRIPT_FAILED(myTaxiData)
|
||
Script_Cleanup()
|
||
ENDPROC
|
||
|
||
|
||
|
||
|
||
PROC SETUP_AMBUSH_SCENE_UNDER_BRIDGE()
|
||
|
||
SWITCH iUnderBridgeIndex
|
||
//Create Vehicle
|
||
CASE -1
|
||
IF NOT DOES_ENTITY_EXIST(viGauntlet)
|
||
viGauntlet = CREATE_VEHICLE(GET_GYN_MISSION_MODELS(GYN_MODEL_GAUNTLET), << 27.1498, -1246.5232, 28.4013 >>, 297.6290)//<< 27.22, -1239.09, 28.95 >>, 310.50) // << 27.2828, -1232.9750, 28.3352 >>, 311.8042) //
|
||
|
||
|
||
iUnderBridgeIndex++
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Camaro Created")
|
||
|
||
ENDIF
|
||
BREAK
|
||
|
||
//Create Chick & Setup Vehicle
|
||
CASE 0
|
||
IF NOT IS_ENTITY_DEAD(viGauntlet)
|
||
|
||
SET_VEHICLE_RADIO_LOUD(viGauntlet,TRUE)
|
||
SET_VEHICLE_RADIO_ENABLED(viGauntlet,TRUE)
|
||
SET_VEHICLE_NUMBER_PLATE_TEXT(viGauntlet,"SNAKEYES")
|
||
SET_VEHICLE_INTERIORLIGHT(viGauntlet,TRUE)
|
||
//SET_VEHICLE_DOOR_OPEN( viGauntlet, SC_DOOR_BOOT )
|
||
SET_VEHICLE_DOORS_LOCKED(viGauntlet, VEHICLELOCK_CANNOT_ENTER)
|
||
|
||
VECTOR vTemp
|
||
vTemp = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(viGauntlet, <<0.0,3.0,0.0>>)
|
||
piChickInGauntlet = CREATE_PED(PEDTYPE_MISSION,GET_GYN_MISSION_MODELS(GYN_MODEL_LADY), vTemp, (GET_ENTITY_HEADING(viGauntlet) - 180)) //<< 46.4830, -1230.2010, 28.2881 >>,250.6)
|
||
|
||
iUnderBridgeIndex++
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Chick Created Created")
|
||
|
||
ENDIF
|
||
BREAK
|
||
|
||
//Ped is created and car is in place, now task ped
|
||
CASE 1
|
||
IF NOT IS_ENTITY_DEAD(piChickInGauntlet)
|
||
AND NOT IS_ENTITY_DEAD(viGauntlet)
|
||
ADD_PED_FOR_DIALOGUE(myTaxiData.tTaxiOJ_Convo,5,piChickInGauntlet,"TaxiLiz")
|
||
SET_AMBIENT_VOICE_NAME(piChickInGauntlet, "TaxiLiz")
|
||
|
||
SET_PED_CONFIG_FLAG(piChickInGauntlet,PCF_CanSayFollowedByPlayerAudio,TRUE)
|
||
|
||
SET_PED_COMPONENT_VARIATION(piChickInGauntlet, PED_COMP_TORSO, 2, 0)
|
||
SET_PED_COMPONENT_VARIATION(piChickInGauntlet, PED_COMP_LEG, 0, 1)
|
||
SET_PED_COMPONENT_VARIATION(piChickInGauntlet, PED_COMP_HAIR, 0, 0)
|
||
|
||
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(piChickInGauntlet, TRUE)
|
||
SET_PED_CAN_BE_TARGETTED(piChickInGauntlet,FALSE)
|
||
PED_HAS_SEXINESS_FLAG_SET(piChickInGauntlet,SF_JEER_AT_HOT_PED)
|
||
|
||
TASK_LOOK_AT_ENTITY(piChickInGauntlet, viGauntlet, INFINITE_TASK_TIME, SLF_WHILE_NOT_IN_FOV, SLF_LOOKAT_VERY_HIGH)
|
||
|
||
OPEN_SEQUENCE_TASK(siTemp)
|
||
//TASK_GO_STRAIGHT_TO_COORD_RELATIVE_TO_ENTITY(NULL,viGauntlet,<<0.0,-3.0,0.0>>,PEDMOVEBLENDRATIO_WALK)
|
||
//TASK_TURN_PED_TO_FACE_ENTITY(NULL, viGauntlet)
|
||
TASK_PLAY_ANIM(NULL, "oddjobs@taxi@gyn@", "idle_b_ped",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_LOOPING)
|
||
CLOSE_SEQUENCE_TASK(siTemp)
|
||
TASK_PERFORM_SEQUENCE(piChickInGauntlet, siTemp)
|
||
CLEAR_SEQUENCE_TASK(siTemp)
|
||
|
||
iUnderBridgeIndex++
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Chick Tasked")
|
||
ENDIF
|
||
BREAK
|
||
ENDSWITCH
|
||
ENDPROC
|
||
|
||
/// PURPOSE: Call this to get the different camera positions for the csite cutscene
|
||
///
|
||
/// PARAMS:
|
||
/// index -
|
||
/// RETURNS:
|
||
///
|
||
FUNC VECTOR GET_TAXI_OJ_GYN_CSITE_CS_CAM_POS(INT index)
|
||
VECTOR vCamPos
|
||
SWITCH index
|
||
|
||
//Revised End shot interp
|
||
CASE 8
|
||
vCamPos = << -137.4260, -1086.8722, 26.0049 >> //<< -138.6420, -1089.5889, 25.3735 >>
|
||
BREAK
|
||
|
||
//Revised end shot2
|
||
CASE 9
|
||
vCamPos = << -118.4414, -1079.5820, 27.9648 >> //<< -129.8217, -1101.1809, 24.6919 >>
|
||
BREAK
|
||
|
||
//Revised End shot interp2
|
||
CASE 10
|
||
vCamPos = << -124.0122, -1077.5231, 27.9648 >> //<< -132.0994, -1100.2334, 24.6919 >>
|
||
BREAK
|
||
|
||
|
||
ENDSWITCH
|
||
|
||
RETURN vCamPos
|
||
ENDFUNC
|
||
/// PURPOSE: Call this to get the different camera directions for the csite custscene
|
||
///
|
||
/// PARAMS:
|
||
/// index -
|
||
/// RETURNS:
|
||
///
|
||
FUNC VECTOR GET_TAXI_OJ_GYN_CSITE_CS_CAM_ROT(INT index)
|
||
VECTOR vCamDir
|
||
SWITCH index
|
||
|
||
//Revised End shot interp
|
||
CASE 8
|
||
vCamDir = << -10.5394, -0.0000, -112.7087 >> //<< -14.2245, -0.0000, -90.7686 >>
|
||
BREAK
|
||
|
||
//Revised end shot
|
||
CASE 9
|
||
vCamDir = << -26.9453, -0.0000, 153.6124 >> //<< -13.3622, -0.0000, -22.5860 >>
|
||
BREAK
|
||
|
||
//Revised End shot interp
|
||
CASE 10
|
||
vCamDir = << -26.9453, -0.0000, 166.5540 >> //<< -13.3622, -0.0000, -22.5860 >>
|
||
BREAK
|
||
|
||
ENDSWITCH
|
||
|
||
RETURN vCamDir
|
||
ENDFUNC
|
||
|
||
|
||
PROC CLEANUP_TAXIOJ_GYN()
|
||
|
||
IF DOES_CAM_EXIST(myTaxiData.camTaxi)
|
||
DESTROY_CAM(myTaxiData.camTaxi)
|
||
ENDIF
|
||
|
||
DISPLAY_RADAR(TRUE)
|
||
SET_PLAYER_CONTROL(GET_PLAYER_INDEX(),TRUE)
|
||
|
||
ENDPROC
|
||
|
||
/// PURPOSE:
|
||
/// Initializes script variables
|
||
PROC INITIALIZE_SCRIPT_VARIABLES()
|
||
|
||
//Init j skip points------
|
||
myTaxiData.vTaxiOJ_WarpPtPickup = << -1583.5905, 169.2662, 57.6205 >>
|
||
myTaxiData.fTaxiOJ_WarpPtHeadingPickup = 116
|
||
|
||
myTaxiData.vTaxiOJ_WarpPtDropoff = << 49.0898, -1178.9226, 28.2091 >>
|
||
myTaxiData.fTaxiOJ_WarpPtHeadingDropoff = 185.975
|
||
|
||
TAXI_ODDJOB_GLOBAL_SETUP(myTaxiData,TXM_08_GOTYOUNOW)
|
||
|
||
// Set our initial state up. VIP missions don't start at TRS_FINDING_LOCATION.
|
||
myTaxiData.tTaxiOJ_RideState = TRS_INIT_STREAM
|
||
|
||
SET_TAXI_TIP_CUTOFFS(myTaxiData,CONST_TAXI_OJ_TIP_AVERAGE_CUTOFF,CONST_TAXI_OJ_TIP_AMAZING_CUTOFF)
|
||
|
||
enumCharacterList playerEnum
|
||
playerEnum = GET_PLAYER_PED_ENUM(PLAYER_PED_ID())
|
||
|
||
IF (playerEnum = CHAR_MICHAEL)
|
||
sGetInCabLabel = "txm9_gHelp1M_4"
|
||
ELIF (playerEnum = CHAR_TREVOR)
|
||
sGetInCabLabel = "txm9_gHelp1T_4"
|
||
ELIF (playerEnum = CHAR_FRANKLIN)
|
||
sGetInCabLabel = "txm9_gHelp1F_7"
|
||
ENDIF
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"sGetInCabLabel = ", sGetInCabLabel)
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
#IF DEBUG_iTurnOnAllDXDebug
|
||
ENABLE_ALL_DIALOGUE_DEBUG()
|
||
#ENDIF
|
||
taxiRideWidgets = START_WIDGET_GROUP("Taxi Ride - Got You Now")
|
||
|
||
INIT_ODDJOB_TAXI_WIDGETS()
|
||
|
||
ADD_WIDGET_STRING("Debug Taxi Bonus")
|
||
ADD_WIDGET_BOOL("Flawless Victory ",bDebugBonusFlawlessVictory)
|
||
|
||
START_NEW_WIDGET_COMBO()
|
||
//REPEAT COUNT_OF(CSITE_CUTSCENE_STATES) i
|
||
ADD_TO_WIDGET_COMBO("CSITE_CS_TRIGGER_CARS")
|
||
//ENDREPEAT
|
||
STOP_WIDGET_COMBO( "Mission To Run Next", iForcedLocation)
|
||
ADD_WIDGET_FLOAT_SLIDER("Car 2 Speed", fCar2PBSpeed,1.0,3.0,0.1)
|
||
ADD_WIDGET_BOOL("Restart Taxi Mission", bForceReset)
|
||
STOP_WIDGET_GROUP()
|
||
#ENDIF
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"-----~~~~~-------------------------------~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~----")
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"-----~~~~~~~~~~~~~~~~ Oddjobs | Taxi | Got You Now ~~~~~~~~~~~~~~~~~~----------")
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"-----~~~~~-------------------------------~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~----")
|
||
|
||
ENDPROC
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
PROC PROCESS_WIDGETS()
|
||
|
||
UPDATE_TAXI_WIDGETS(myTaxiData,tTaxiOJ_DQ_Data)
|
||
|
||
IF bForceReset
|
||
|
||
CLEANUP_TAXIOJ_GYN()
|
||
bForceReset = FALSE
|
||
bResetting = TRUE
|
||
ENDIF
|
||
|
||
IF bDebugBonusFlawlessVictory
|
||
//Show if bonus has been unlocked or not
|
||
IF NOT bFlawlessVictory
|
||
sDebugString[0]= "Flawless V Bonus LOCKED "
|
||
DRAW_DEBUG_TEXT_2D(sDebugString[0],<<0.07,0.77,0.0>>,255,0,0)
|
||
|
||
ELSE
|
||
sDebugString[0]= "Flawless Bonus UnLOCKED "
|
||
DRAW_DEBUG_TEXT_2D(sDebugString[0],<<0.07,0.77,0.0>>)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF bResetting
|
||
IF HAVE_TAXI_OJ_GYN_STAGE_01_ASSETS_LOADED()
|
||
bResetting = FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
#ENDIF
|
||
|
||
PROC TASK_PED_FIGHT_STANCE(PED_INDEX &Fighter)
|
||
|
||
IF NOT IS_PED_INJURED(Fighter)
|
||
//SET_PED_STRAFE_CLIPSET(Fighter, "move_strafe_melee_unarmed")
|
||
IF ( GET_SCRIPT_TASK_STATUS(Fighter, SCRIPT_TASK_PERFORM_SEQUENCE) <> PERFORMING_TASK
|
||
OR GET_SCRIPT_TASK_STATUS(Fighter, SCRIPT_TASK_PERFORM_SEQUENCE) = FINISHED_TASK )
|
||
|
||
TASK_PLAY_ANIM(Fighter, "move_strafe_melee_unarmed", "idle", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_LOOPING)
|
||
|
||
ENDIF
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
/// PURPOSE: Sets variables for the passenger to go aggressive. Also tasks him into combat.
|
||
///
|
||
PROC SET_TAXI_OJ_PED_IN_COMBAT(PED_INDEX & pedInCombat)
|
||
IF DOES_ENTITY_EXIST(pedInCombat)
|
||
IF NOT IS_PED_INJURED(pedInCombat)
|
||
|
||
SET_PED_COMBAT_ATTRIBUTES(pedInCombat, CA_AGGRESSIVE, FALSE)
|
||
SET_PED_COMBAT_ATTRIBUTES(pedInCombat, CA_USE_VEHICLE, FALSE)
|
||
SET_PED_COMBAT_ATTRIBUTES(pedInCombat, CA_LEAVE_VEHICLES, TRUE)
|
||
SET_PED_SEEING_RANGE(pedInCombat, 300.0)
|
||
SET_PED_HEARING_RANGE(pedInCombat, 300.0)
|
||
SET_PED_ID_RANGE(pedInCombat, 300.0)
|
||
|
||
SET_PED_COMBAT_MOVEMENT(pedInCombat, CM_WILLADVANCE)
|
||
SET_PED_COMBAT_ABILITY(pedIncombat, CAL_PROFESSIONAL)
|
||
|
||
SET_PED_ACCURACY(pedInCombat, 75)
|
||
SET_PED_COMBAT_RANGE(pedInCombat, CR_MEDIUM)
|
||
|
||
SET_COMBAT_FLOAT(pedInCombat, CCF_FIGHT_PROFICIENCY, 1.0)
|
||
|
||
SET_PED_RELATIONSHIP_GROUP_HASH(pedInCombat,myTaxiData.relPassenger)
|
||
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE, myTaxiData.relPassenger, RELGROUPHASH_PLAYER)
|
||
TASK_COMBAT_HATED_TARGETS_AROUND_PED( pedInCombat,100.0)
|
||
|
||
ENDIF
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
|
||
FUNC BOOL MUGGING_CAMS()
|
||
VECTOR vMugCamPosition, vMugCamRot, vWarpTemp2
|
||
|
||
STOP_PHONE_AND_APPS_FOR_TAXI_CUTSCENE()
|
||
|
||
IF m_mugScene < MUGSCENE_FIRST_CAM //MUGSCENE_SKIP
|
||
AND m_mugScene > MUGSCENE_INIT
|
||
IF HANDLE_SKIP_CUTSCENE(iAllowSkipCutsceneTime)
|
||
m_mugScene = MUGSCENE_SKIP
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
AND IS_VEHICLE_DRIVEABLE(myTaxiData.viTaxi)
|
||
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
||
DRAW_DEBUG_TEXT_2D("Player INSIDE of vehicle", << 0.5, 0.2, 0.0 >>)
|
||
ELSE
|
||
DRAW_DEBUG_TEXT_2D("Player OUTSIDE of vehicle", << 0.5, 0.2, 0.0 >>)
|
||
ENDIF
|
||
|
||
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID(), TRUE)
|
||
DRAW_DEBUG_TEXT_2D("Player INSIDE of vehicle adjusted", << 0.5, 0.25, 0.0 >>)
|
||
ELSE
|
||
DRAW_DEBUG_TEXT_2D("Player OUTSIDE of vehicle adjusted", << 0.5, 0.25, 0.0 >>)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
SWITCH m_mugScene
|
||
CASE MUGSCENE_INIT
|
||
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
||
ODDJOB_ENTER_CUTSCENE()
|
||
|
||
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, TRUE)
|
||
|
||
CREATE_TAXI_OJ_CAM(myTaxiData.camTaxi,<<0,0,0>>, <<0,0,0>>)
|
||
|
||
//vMugCamPosition = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(viGauntlet, << -1.5, 6.0, -0.2 >>)
|
||
vMugCamPosition = <<30.8062, -1242.6118, 29.1026>>
|
||
vMugCamRot = <<7.5623, -0.0714, 149.3929>>
|
||
SET_CAM_COORD(myTaxiData.camTaxi, vMugCamPosition)
|
||
SET_CAM_ROT(myTaxiData.camTaxi, vMugCamRot)
|
||
SET_CAM_FOV(myTaxiData.camTaxi, 35.0)
|
||
SHAKE_CAM(myTaxiData.camTaxi, "HAND_SHAKE", 0.3)
|
||
//POINT_CAM_AT_ENTITY(myTaxiData.camTaxi, viGauntlet, <<1.0, 1.0, 1.0>>)
|
||
SET_CAM_ACTIVE(myTaxiData.camTaxi,TRUE)
|
||
RENDER_SCRIPT_CAMS(TRUE,FALSE)
|
||
|
||
IF NOT IS_PED_INJURED(myTaxiData.piTaxiPassenger)
|
||
AND NOT IS_ENTITY_DEAD(myTaxiData.viTaxi)
|
||
// VECTOR vWarpTemp
|
||
|
||
SET_ENTITY_COORDS(myTaxiData.viTaxi, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(viGauntlet, << 0, 8.25, 0.0>>)) //<< 33.2618, -1227.6528, 28.3351 >>)
|
||
SET_ENTITY_HEADING(myTaxiData.viTaxi, 114.629) //131.7553)
|
||
|
||
// vWarpTemp = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(myTaxiData.viTaxi, << -2.0, -0.75, 0.0 >>)
|
||
// SET_ENTITY_COORDS(myTaxiData.piTaxiPassenger, vWarpTemp)
|
||
// SET_ENTITY_HEADING(myTaxiData.piTaxiPassenger, (GET_ENTITY_HEADING(myTaxiData.viTaxi) - 45))
|
||
|
||
//TASK_LEAVE_ANY_VEHICLE(myTaxiData.piTaxiPassenger)
|
||
TASK_LOOK_AT_ENTITY(myTaxiData.piTaxiPassenger, PLAYER_PED_ID(), INFINITE_TASK_TIME, SLF_WHILE_NOT_IN_FOV, SLF_LOOKAT_VERY_HIGH)
|
||
|
||
//TASK_LEAVE_ANY_VEHICLE(myTaxiData.piTaxiPassenger, 0)
|
||
ENDIF
|
||
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData, TAXI_DI_GIRL_NOTICE, TRUE, TRUE)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Combat timer started")
|
||
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_GENERIC)
|
||
|
||
m_mugScene = MUGSCENE_AGGRO
|
||
ELSE
|
||
KILL_ANY_CONVERSATION()
|
||
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE MUGSCENE_AGGRO
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_GENERIC) > 2.0
|
||
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
||
IF NOT IS_PED_INJURED(myTaxiData.piTaxiPassenger)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Combat initiated")
|
||
|
||
CLEAR_SEQUENCE_TASK(siTemp)
|
||
OPEN_SEQUENCE_TASK(siTemp)
|
||
TASK_LEAVE_ANY_VEHICLE(NULL)
|
||
TASK_ENTER_VEHICLE(NULL, myTaxiData.viTaxi, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER, PEDMOVEBLENDRATIO_WALK, ECF_JUST_PULL_PED_OUT | ECF_JACK_ANYONE)// | ECF_WARP_ENTRY_POINT)
|
||
CLOSE_SEQUENCE_TASK(siTemp)
|
||
TASK_PERFORM_SEQUENCE(myTaxiData.piTaxiPassenger, siTemp)
|
||
|
||
PLAY_SINGLE_LINE_FROM_CONVERSATION(myTaxiData.tTaxiOJ_Convo, myTaxiData.sTaxiOJ_DXSubtitleGroupID, "txm9_figt1", "txm9_figt1_1",CONV_PRIORITY_HIGH)
|
||
ENDIF
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_GENERIC)
|
||
|
||
IF IS_PLAYER_IN_FIRST_PERSON_CAMERA()
|
||
IF NOT bPulseTriggered
|
||
ANIMPOSTFX_PLAY("CamPushInNeutral", 0, FALSE)
|
||
PLAY_SOUND_FRONTEND(-1, "1st_Person_Transition", "PLAYER_SWITCH_CUSTOM_SOUNDSET")
|
||
bPulseTriggered = TRUE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"going to mug pulse")
|
||
m_mugScene = MUGSCENE_PULSE
|
||
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE MUGSCENE_PULSE
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_GENERIC) > 0.3
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"going to mug first cam")
|
||
m_mugScene = MUGSCENE_FIRST_CAM
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE MUGSCENE_FIRST_CAM
|
||
// IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_GENERIC) > 0.75
|
||
|
||
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0)
|
||
SET_GAMEPLAY_CAM_RELATIVE_PITCH(0.0)
|
||
|
||
RENDER_SCRIPT_CAMS(FALSE,FALSE)
|
||
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_GENERIC)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"going to mug second cam")
|
||
m_mugScene = MUGSCENE_SECOND_CAM
|
||
|
||
// ENDIF
|
||
|
||
|
||
BREAK
|
||
|
||
CASE MUGSCENE_SECOND_CAM
|
||
IF NOT IS_PLAYER_DRIVING_TAXI_OJ(myTaxiData)
|
||
AND NOT IS_PED_INJURED(myTaxiData.piTaxiPassenger)
|
||
|
||
//KILL_ANY_CONVERSATION()
|
||
|
||
SET_PED_CONFIG_FLAG(myTaxiData.piTaxiPassenger, PCF_ForceIgnoreMeleeActiveCombatant, TRUE)
|
||
//SET_PED_RESET_FLAG(myTaxiData.piTaxiPassenger, PRF_ForcePedToStrafe, TRUE)
|
||
SET_TAXI_OJ_PED_IN_COMBAT(myTaxiData.piTaxiPassenger)
|
||
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_GENERIC)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"going to mug gen end")
|
||
m_mugScene = MUGSCENE_GEN_END
|
||
ELSE
|
||
IF NOT IS_PED_INJURED(myTaxiData.piTaxiPassenger)
|
||
IF GET_SCRIPT_TASK_STATUS(myTaxiData.piTaxiPassenger, SCRIPT_TASK_PERFORM_SEQUENCE) != PERFORMING_TASK
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"passenger was broke out of his task, re-tasking")
|
||
CLEAR_SEQUENCE_TASK(siTemp)
|
||
OPEN_SEQUENCE_TASK(siTemp)
|
||
TASK_LEAVE_ANY_VEHICLE(NULL)
|
||
TASK_ENTER_VEHICLE(NULL, myTaxiData.viTaxi, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER, PEDMOVEBLENDRATIO_WALK, ECF_JUST_PULL_PED_OUT | ECF_JACK_ANYONE)// | ECF_WARP_ENTRY_POINT)
|
||
CLOSE_SEQUENCE_TASK(siTemp)
|
||
TASK_PERFORM_SEQUENCE(myTaxiData.piTaxiPassenger, siTemp)
|
||
ENDIF
|
||
ELSE
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"ped is injured, big problem")
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE MUGSCENE_GEN_END
|
||
// IF NOT IS_PED_INJURED(myTaxiData.piTaxiPassenger)
|
||
// SET_PED_RESET_FLAG(myTaxiData.piTaxiPassenger, PRF_ForcePedToStrafe, TRUE)
|
||
// ENDIF
|
||
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_GENERIC) > 0.5
|
||
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
||
|
||
PLAY_SINGLE_LINE_FROM_CONVERSATION(myTaxiData.tTaxiOJ_Convo, myTaxiData.sTaxiOJ_DXSubtitleGroupID, "txm9_figt1", "txm9_figt1_2",CONV_PRIORITY_VERY_HIGH)
|
||
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_GENERIC)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"going to gen end 2")
|
||
|
||
m_mugScene = MUGSCENE_GEN_END2
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE MUGSCENE_GEN_END2
|
||
IF NOT IS_PED_INJURED(myTaxiData.piTaxiPassenger)
|
||
SET_PED_RESET_FLAG(myTaxiData.piTaxiPassenger, PRF_ForcePedToStrafe, TRUE)
|
||
ENDIF
|
||
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_GENERIC) > 1.0
|
||
//AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
||
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData, TAXI_OBJ_GYN, TRUE)
|
||
|
||
ODDJOB_EXIT_CUTSCENE()
|
||
|
||
IF DOES_CAM_EXIST(myTaxiData.camTaxi)
|
||
DESTROY_CAM(myTaxiData.camTaxi)
|
||
ENDIF
|
||
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_GENERIC)
|
||
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE MUGSCENE_SKIP
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Mug scene skipped")
|
||
|
||
IF IS_SCREEN_FADED_OUT()
|
||
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
AND NOT IS_PED_INJURED(myTaxiData.piTaxiPassenger)
|
||
AND IS_VEHICLE_DRIVEABLE(myTaxiData.viTaxi)
|
||
|
||
CLEAR_PED_TASKS_IMMEDIATELY(myTaxiData.piTaxiPassenger)
|
||
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
|
||
|
||
ENDIF
|
||
|
||
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
||
KILL_ANY_CONVERSATION()
|
||
ENDIF
|
||
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_GENERIC)
|
||
m_mugScene = MUGSCENE_SKIP_SETUP
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE MUGSCENE_SKIP_SETUP
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_GENERIC) > 0.3
|
||
VECTOR vWarpTemp
|
||
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
AND NOT IS_PED_INJURED(myTaxiData.piTaxiPassenger)
|
||
AND IS_VEHICLE_DRIVEABLE(myTaxiData.viTaxi)
|
||
|
||
CLEAR_PED_TASKS_IMMEDIATELY(myTaxiData.piTaxiPassenger)
|
||
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
|
||
|
||
SET_VEHICLE_DOOR_SHUT(myTaxiData.viTaxi, SC_DOOR_FRONT_LEFT)
|
||
|
||
vWarpTemp = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(myTaxiData.viTaxi, << -1.6, 0.0, 0.0 >>)
|
||
vWarpTemp2 = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(myTaxiData.viTaxi, << -4.0, 2.0, 0.0 >>)
|
||
|
||
SET_ENTITY_COORDS(PLAYER_PED_ID(), vWarpTemp)
|
||
SET_ENTITY_COORDS(myTaxiData.piTaxiPassenger, vWarpTemp2)
|
||
|
||
SET_ENTITY_HEADING(PLAYER_PED_ID(),
|
||
GET_HEADING_BETWEEN_VECTORS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(myTaxiData.piTaxiPassenger)))
|
||
//SET_PED_TO_RAGDOLL(PLAYER_PED_ID(), 2000, 3000, TASK_NM_SCRIPT)
|
||
|
||
SET_ENTITY_HEADING(myTaxiData.piTaxiPassenger,
|
||
GET_HEADING_BETWEEN_VECTORS(GET_ENTITY_COORDS(myTaxiData.piTaxiPassenger), GET_ENTITY_COORDS(PLAYER_PED_ID())))
|
||
|
||
//TASK_PLAY_ANIM(myTaxiData.piTaxiPassenger, "move_strafe_melee_unarmed", "idle", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_LOOPING)
|
||
SET_TAXI_OJ_PED_IN_COMBAT(myTaxiData.piTaxiPassenger)
|
||
ENDIF
|
||
|
||
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
||
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
|
||
RENDER_SCRIPT_CAMS(FALSE, FALSE)
|
||
|
||
IF DOES_CAM_EXIST(myTaxiData.camTaxi)
|
||
DESTROY_CAM(myTaxiData.camTaxi)
|
||
ENDIF
|
||
|
||
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, SPC_LEAVE_CAMERA_CONTROL_ON)
|
||
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_GENERIC)
|
||
m_mugScene = MUGSCENE_SKIP_FADE_IN
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE MUGSCENE_SKIP_FADE_IN
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Mug scene skip fade in")
|
||
|
||
IF NOT IS_SCREEN_FADING_IN()
|
||
AND GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_GENERIC) > 1.0
|
||
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
||
ENDIF
|
||
|
||
IF IS_SCREEN_FADED_IN()
|
||
AND NOT IS_SCREEN_FADING_IN()
|
||
|
||
m_mugScene = MUGSCENE_SKIP_END
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE MUGSCENE_SKIP_END
|
||
IF NOT IS_PLAYER_DRIVING_TAXI_OJ(myTaxiData)
|
||
ODDJOB_EXIT_CUTSCENE()
|
||
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_OBJ_GYN, TRUE)
|
||
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_GENERIC)
|
||
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
|
||
ENDSWITCH
|
||
|
||
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
PROC TAXI_OJ_S01_SETUP_CSITE()
|
||
|
||
SWITCH m_CSiteState
|
||
//Say something when the construction site is near
|
||
CASE CSITE_INTRO_DIALOGUE
|
||
|
||
IF NOT IS_BITMASK_AS_ENUM_SET(myTaxiData.iTaxiOJ_ExtraBitsDialogue,TAXI_DXF_SEEN_DEST)
|
||
AND GET_TAXI_SPEECH_INDEX(myTaxiData) <> TAXI_DI_SEEN_DESTINATION
|
||
IF IS_PASSENGER_IN_TAXI(myTaxiData)
|
||
IF IS_TAXI_DRIVEN_BY_PLAYER(myTaxiData)
|
||
IF GET_ENTITY_DISTANCE_FROM_LOCATION(myTaxiData.viTaxi,myTaxiData.vTaxiOJDropoff) <= TAXI_OJ_CONST_DIST_TO_SEE_CSITE
|
||
AND iUnderBridgeIndex > 1
|
||
|
||
myTaxiData.vTaxiOJDropoff = vNewDropoff_2_Under_Bridge
|
||
SET_BLIP_COORDS(myTaxiData.blipTaxiDropOff, vNewDropoff_2_Under_Bridge)
|
||
|
||
//Clear & Close the Dialogue Q
|
||
CLEAR_DIALOGUE_QUEUE(tDialogueLine)
|
||
CLOSE_DIALOGUE_QUEUE(tTaxiOJ_DQ_Data,3)
|
||
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_SEEN_DESTINATION_2,TRUE)
|
||
|
||
IF IS_VEHICLE_DRIVEABLE(viGauntlet)
|
||
SET_VEHICLE_DOOR_OPEN( viGauntlet, SC_DOOR_BONNET )
|
||
SET_VEHICLE_COLOUR_COMBINATION(viGauntlet, 0 )
|
||
//SET_VEHICLE_DOOR_BROKEN( viGauntlet, SC_DOOR_BONNET, FALSE)
|
||
SET_VEHICLE_ENGINE_HEALTH(viGauntlet, 150.0)
|
||
SET_VEHICLE_DAMAGE(viGauntlet, <<0.0, 0.0, 0.0>>, 1000.0, 0.0, TRUE)
|
||
//GIVE_VEHICLE_MINIMUM_HEALTH(viGauntlet)
|
||
ENDIF
|
||
|
||
CREATE_MODEL_HIDE(vScrapLocation, 5.0, PROP_SKID_CHAIR_02, TRUE)
|
||
CREATE_MODEL_HIDE(vScrapLocation, 5.0, PROP_RUB_COUCH03, TRUE)
|
||
|
||
m_CSiteState = CSITE_S01_CLEAR_LAND
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"m_CSiteState = CSITE_S01_CLEAR_LAND")
|
||
IF g_bDebug
|
||
SCRIPT_ASSERT("Seeing the construction site")
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE CSITE_S01_CLEAR_LAND
|
||
|
||
TAXI_OJ_CLEAR_AREA_OF_ALL_PEDS_AND_SCENARIOS(sbIndex_TaxiOJ, vNewDropoff_2_Under_Bridge, 30.0)
|
||
|
||
m_CSiteState = CSITE_S01_CLEANUP
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"TAXI_OJ_S01_SETUP_CSITE = CSITE_S01_CLEANUP")
|
||
|
||
BREAK
|
||
|
||
CASE CSITE_S01_CLEANUP
|
||
BREAK
|
||
ENDSWITCH
|
||
ENDPROC
|
||
|
||
FUNC BOOL CHECK_PLAYER_ESCAPED_CSITE()
|
||
IF GET_ENTITY_DISTANCE_FROM_LOCATION(myTaxiData.piTaxiPlayer,myTaxiData.vTaxiOJDropoff) >= TAXI_OJ_CONST_DIST_TO_ESCAPE_CSITE
|
||
RETURN TRUE
|
||
ENDIF
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
PROC TAXI_OJ_GYN_SET_TIP_AND_EXCITEMENT_TO_CHECK()
|
||
|
||
//Tip Bits
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_POS_DELIVERY_TIME)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_HIT_PED)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_TOOK_DAMAGE)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_ROLL_CAR)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_LEFT_CAR)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_STOPPED)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_RADIO_STATION_LIKE)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_RADIO_STATION_DISLIKE)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_FREEBIE)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_TipsBitMask,TAXI_TIP_BIT_LOST_POLICE)
|
||
|
||
|
||
//EXCITEMENT BITS
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_PassengerReactBits, TAXI_DF_HITPED)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_PassengerReactBits, TAXI_DF_TOOKDAMAGE)
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_PassengerReactBits, TAXI_DF_ROLL)
|
||
|
||
|
||
//Turn off aggro bits
|
||
SET_BITMASK_AS_ENUM(aggroArgs.iBitFieldDontCheck, EAggro_Wanted)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"TAXI_OJ_DL_SET_TIPS_TO_CHECK set tips to check on")
|
||
|
||
ENDPROC
|
||
|
||
ENUM GYN_CS_STATES
|
||
GYN_CS_01_INIT = 0,
|
||
GYN_CS_SHOT_02,
|
||
GYN_CS_SHOT_INTERP_02,
|
||
GYN_CS_SHOT_03,
|
||
GYN_CS_SHOT_INTERP_03,
|
||
GYN_CS_SHOT_04,
|
||
GYN_CS_SHOT_05,
|
||
|
||
GYN_CS_SKIP,
|
||
GYN_CS_END,
|
||
GYN_CS_CLEANUP,
|
||
GYN_CS_NUM_SCENES
|
||
|
||
ENDENUM
|
||
GYN_CS_STATES m_ChickCSState = GYN_CS_01_INIT
|
||
|
||
/// PURPOSE: plays the cutscene when the lady goes up to the player and asks him for ride home
|
||
///
|
||
/// RETURNS: TRUE when it's done and ready to move on
|
||
///
|
||
FUNC BOOL TAXI_OJ_GYN_CUTSCENE_SAVE_CHICK()
|
||
|
||
STOP_PHONE_AND_APPS_FOR_TAXI_CUTSCENE()
|
||
|
||
IF NOT IS_ENTITY_DEAD(piChickInGauntlet)
|
||
AND IS_VEHICLE_DRIVEABLE(myTaxiData.viTaxi)
|
||
|
||
SWITCH m_ChickCSState
|
||
|
||
//Init everying and put everything in it's place
|
||
CASE GYN_CS_01_INIT
|
||
|
||
IF CAN_PLAYER_START_CUTSCENE(TRUE, FALSE)
|
||
|
||
TASK_LOOK_AT_ENTITY(piChickInGauntlet, PLAYER_PED_ID(), -1, SLF_SLOW_TURN_RATE | SLF_WHILE_NOT_IN_FOV, SLF_LOOKAT_HIGH)
|
||
TASK_LOOK_AT_ENTITY(PLAYER_PED_ID(), piChickInGauntlet, -1, SLF_SLOW_TURN_RATE | SLF_WHILE_NOT_IN_FOV, SLF_LOOKAT_HIGH)
|
||
|
||
//Clear & Close the Dialogue Q
|
||
CLEAR_DIALOGUE_QUEUE(tDialogueLine)
|
||
CLOSE_DIALOGUE_QUEUE(tTaxiOJ_DQ_Data,-1,TRUE)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"m_CSiteCSState = GYN_CS_SHOT_02")
|
||
m_ChickCSState = GYN_CS_SHOT_02
|
||
ELSE
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"CAN_PLAYER_START_CUTSCENE returns false")
|
||
ENDIF
|
||
BREAK
|
||
|
||
//1st shot, looks at nurse, driver
|
||
CASE GYN_CS_SHOT_02
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_CUTSCENE) > 2.0
|
||
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_GIRL_HELP,TRUE,FALSE,TRUE)
|
||
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_CUTSCENE)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"m_CSiteCSState = GYN_CS_SHOT_INTERP_04")
|
||
m_ChickCSState = GYN_CS_SHOT_04
|
||
ENDIF
|
||
BREAK
|
||
|
||
//Cut to them getting in taxi
|
||
CASE GYN_CS_SHOT_04
|
||
|
||
sCurrentLine = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_LABEL()
|
||
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_CUTSCENE) > 15.0
|
||
OR ARE_STRINGS_EQUAL(sGetInCabLabel, sCurrentLine)
|
||
|
||
INT iNumSeats
|
||
VEHICLE_SEAT vsChickSeat
|
||
iNumSeats = GET_VEHICLE_MAX_NUMBER_OF_PASSENGERS(myTaxiData.viTaxi)
|
||
|
||
IF GET_ENTITY_MODEL(myTaxiData.viTaxi) = SENTINEL2
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"vehicle is sentinel2")
|
||
iNumSeats = 1
|
||
ELSE
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"vehicle is not a sentinel2")
|
||
ENDIF
|
||
|
||
IF iNumSeats > 1
|
||
vsChickSeat = VS_BACK_RIGHT
|
||
ELSE
|
||
vsChickSeat = VS_FRONT_RIGHT
|
||
ENDIF
|
||
|
||
TASK_ENTER_VEHICLE(piChickInGauntlet, myTaxiData.viTaxi, 40000, vsChickSeat, PEDMOVEBLENDRATIO_WALK)
|
||
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_CUTSCENE)
|
||
m_ChickCSState = GYN_CS_SHOT_05
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"m_CSiteCSState = GYN_CS_SHOT_05")
|
||
ELSE
|
||
IF (GET_GAME_TIMER() % 1500) < 50
|
||
TASK_TURN_PED_TO_FACE_ENTITY(piChickInGauntlet, PLAYER_PED_ID())
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE GYN_CS_SHOT_05
|
||
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_CUTSCENE) > 20
|
||
IF NOT IS_ENTITY_DEAD(piChickInGauntlet)
|
||
CLEAR_PED_TASKS(piChickInGauntlet)
|
||
TASK_WANDER_STANDARD(piChickInGauntlet)
|
||
ENDIF
|
||
TAXI_SET_FAIL(myTaxiData, "Player not letting the chick in the car", TFS_TAXI_STOPPED)
|
||
ENDIF
|
||
|
||
IF IS_VEHICLE_DRIVEABLE(myTaxiData.viTaxi)
|
||
IF NOT IS_ENTITY_DEAD(piChickInGauntlet)
|
||
IF IS_PED_IN_ANY_VEHICLE(piChickInGauntlet)
|
||
m_ChickCSState = GYN_CS_END
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"m_CSiteCSState = GYN_CS_END")
|
||
ELSE
|
||
IF (GET_GAME_TIMER() % 2500) < 50
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"m_CSiteCSState = GYN_CS_SHOT_05 - Gfriend is not in a vehicle")
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"m_CSiteCSState = GYN_CS_SHOT_05 - Gfriend is not dead")
|
||
ENDIF
|
||
|
||
ELSE
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"m_CSiteCSState = GYN_CS_SHOT_05 - Taxi is not driveable")
|
||
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE GYN_CS_SKIP
|
||
IF IS_VEHICLE_DRIVEABLE(myTaxiData.viTaxi)
|
||
IF NOT IS_ENTITY_DEAD(piChickInGauntlet)
|
||
IF NOT IS_PED_IN_ANY_VEHICLE(piChickInGauntlet)
|
||
SET_PED_INTO_VEHICLE(piChickInGauntlet, myTaxiData.viTaxi,VS_BACK_RIGHT)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
||
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), myTaxiData.viTaxi)
|
||
ENDIF
|
||
ENDIF
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_CUTSCENE)
|
||
m_ChickCSState = GYN_CS_END
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"m_CSiteCSState = GYN_CS_END")
|
||
|
||
BREAK
|
||
|
||
CASE GYN_CS_END
|
||
DRAW_DEBUG_TEXT_2D("GYN_CS_END", << 0.75, 0.75, 0.0 >>)
|
||
|
||
myTaxiData.bPassengerObjPrinted = FALSE
|
||
|
||
IF DOES_CAM_EXIST(myTaxiData.camTaxi)
|
||
DESTROY_CAM(myTaxiData.camTaxi)
|
||
ENDIF
|
||
|
||
IF DOES_CAM_EXIST(myTaxiData.camInterp)
|
||
DESTROY_CAM(myTaxiData.camInterp)
|
||
ENDIF
|
||
|
||
IF DOES_CAM_EXIST(ciTransCam)
|
||
DESTROY_CAM(ciTransCam)
|
||
ENDIF
|
||
|
||
// ODDJOB_EXIT_CUTSCENE()
|
||
|
||
// RENDER_SCRIPT_CAMS(FALSE,FALSE)
|
||
//
|
||
// DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
||
// SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
||
// SET_GAMEPLAY_CAM_RELATIVE_PITCH()
|
||
|
||
TAXI_CANCEL_TIMERS(myTaxiData, TT_CUTSCENE)
|
||
|
||
m_ChickCSState = GYN_CS_CLEANUP
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"m_CSiteCSState = GYN_CS_CLEANUP")
|
||
|
||
RETURN TRUE
|
||
BREAK
|
||
|
||
ENDSWITCH
|
||
ELSE
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Cutscene can't go")
|
||
ENDIF
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
PROC UPDATE_DYNAMIC_TAXI_REQUESTS()
|
||
SWITCH eTaxiRequestState
|
||
CASE TAXIDR_REQUEST
|
||
IF IS_VEHICLE_DRIVEABLE(myTaxiData.viTaxi)
|
||
AND GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(myTaxiData.viTaxi, myTaxiData.vTaxiOJDropoff) < 300
|
||
REQUEST_TAXI_ODDJOB_GYN_STREAMS_STAGE_02()
|
||
|
||
eTaxiRequestState = TAXIDR_WAIT_STREAM
|
||
ENDIF
|
||
BREAK
|
||
CASE TAXIDR_WAIT_STREAM
|
||
IF HAVE_TAXI_OJ_GYN_STAGE_02_ASSETS_LOADED()
|
||
eTaxiRequestState = TAXIDR_CREATE
|
||
ENDIF
|
||
BREAK
|
||
CASE TAXIDR_CREATE
|
||
|
||
SETUP_AMBUSH_SCENE_UNDER_BRIDGE()
|
||
|
||
IF iUnderBridgeIndex > 1
|
||
eTaxiRequestState = TAXIDR_CLEANUP
|
||
ENDIF
|
||
BREAK
|
||
CASE TAXIDR_CLEANUP
|
||
IF IS_VEHICLE_DRIVEABLE(myTaxiData.viTaxi)
|
||
AND GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(myTaxiData.viTaxi, myTaxiData.vTaxiOJDropoff) > 350
|
||
RELEASE_TAXI_ODDJOB_GYN_STREAMS_STAGE_02()
|
||
iUnderBridgeIndex = -1
|
||
eTaxiRequestState = TAXIDR_REQUEST
|
||
ENDIF
|
||
BREAK
|
||
ENDSWITCH
|
||
ENDPROC
|
||
|
||
/*
|
||
ooooooooo ooooo o ooooo ooooooo ooooooo8
|
||
888 88o 888 888 888 o888 888o o888 88
|
||
888 888 888 8 88 888 888 888 888 oooo
|
||
888 888 888 8oooo88 888 o 888o o888 888o 88
|
||
o888ooo88 o888o o88o o888o o888ooooo88 88ooo88 888ooo888
|
||
*/
|
||
PROC TRIGGER_TAXI_QUEUE_GYN_LINES()
|
||
|
||
SET_TAXI_OJ_INTERRUPT_TIMER_OFF(myTaxiData)
|
||
|
||
//Trigger lines
|
||
IF IS_BANTER_SAFE_TO_PLAY(myTaxiData,tTaxiOJ_DQ_Data)
|
||
|
||
SWITCH tTaxiOJ_DQ_Data.iCurrentDQLine
|
||
//Make sure if player interrupts the initial line, that the objective prints anyway.
|
||
CASE 0
|
||
IF myTaxiData.tTaxiOJ_RideState = TRS_DRIVING_PASSENGER
|
||
|
||
IF NOT IS_TAXI_OJ_INTERRUPTION_LINE_PLAYING(myTaxiData)
|
||
|
||
IF SAFE_IS_THIS_PRINT_BEING_DISPLAYED("TX_OBJ_GYN_DO")
|
||
OR DOES_BLIP_EXIST(myTaxiData.blipTaxiDropOff)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"--------------------------[Taxi Oddjob Objective] GO TO J Store has been assigned")
|
||
tTaxiOJ_DQ_Data.iCurrentDQLine++
|
||
|
||
ELSE
|
||
IF GET_TAXI_SPEECH_INDEX(myTaxiData) <> TAXI_OBJ_GIVE_MAIN
|
||
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_OBJ_GIVE_MAIN,TRUE,FALSE,TRUE)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"--------------------------[Taxi Oddjob Objective] GO TO J Store has been REassigned")
|
||
|
||
ENDIF
|
||
ENDIF
|
||
|
||
ENDIF
|
||
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE 1
|
||
IF GET_TAXI_SPEECH_INDEX(myTaxiData) > TAXI_OBJ_GIVE_MAIN
|
||
AND GET_TAXI_SPEECH_INDEX(myTaxiData) <> TAXI_DI_BANTER
|
||
AND NOT IS_TAXI_OJ_INTERRUPTION_LINE_PLAYING(myTaxiData)
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_BANTER,TRUE)
|
||
IF g_bDebug
|
||
SCRIPT_ASSERT("Triggering Banter 1")
|
||
ENDIF
|
||
|
||
//Start the mission timer here
|
||
TAXI_START_TIMER(myTaxiData, TT_RIDETODEST)
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE 2
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_DQUEUE) > 4.0
|
||
AND NOT bPhoneRang
|
||
iSoundID_RingTone = GET_SOUND_ID()
|
||
PLAY_SOUND_FROM_ENTITY(iSoundID_RingTone, "Biker_Ring_Tone", myTaxiData.viTaxi, "TREVOR_2_SOUNDS")
|
||
//PLAY_SOUND_FRONTEND(iSoundID_RingTone, "Biker_Ring_Tone", "TREVOR_2_SOUNDS")
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Rang dat phone. iSoundID_RingTone = ", iSoundID_RingTone)
|
||
bPhoneRang = TRUE
|
||
|
||
ELIF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_DQUEUE) > 7.0
|
||
AND GET_TAXI_SPEECH_INDEX(myTaxiData) <> TAXI_DI_BANTER_2
|
||
AND bPhoneRang
|
||
AND NOT bPhoneAnswered
|
||
ODDJOB_STOP_SOUND(iSoundID_RingTone)
|
||
|
||
IF NOT IS_PED_INJURED(myTaxiData.piTaxiPassenger)
|
||
TASK_USE_MOBILE_PHONE(myTaxiData.piTaxiPassenger, TRUE)
|
||
ENDIF
|
||
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_BANTER_2,TRUE)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"TX DX CALL TAXI_DI_BANTER_2")
|
||
IF g_bDebug
|
||
SCRIPT_ASSERT("Triggering Banter 1")
|
||
ENDIF
|
||
|
||
bPhoneAnswered = TRUE
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE 3
|
||
// Get the guy off the phone.
|
||
IF NOT IS_PED_INJURED(myTaxiData.piTaxiPassenger)
|
||
TASK_USE_MOBILE_PHONE(myTaxiData.piTaxiPassenger, FALSE)
|
||
ENDIF
|
||
|
||
tTaxiOJ_DQ_Data.iCurrentDQLine++
|
||
|
||
// IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_DQUEUE) > GET_RANDOM_FLOAT_IN_RANGE(3.0,6.0)
|
||
// //Set Radio Station Check
|
||
// IF NOT GET_TAXI_RADIO_CHECK_FLAG(myTaxiData)
|
||
// TAXI_RADIO_STATION_TURN_ON(myTaxiData)
|
||
// IF g_bDebug
|
||
// SCRIPT_ASSERT("The Taxi Radio Should Be Updating")
|
||
// ENDIF
|
||
// ENDIF
|
||
// ENDIF
|
||
BREAK
|
||
|
||
|
||
//Liz's Banter
|
||
CASE 5
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_DQUEUE) > 2.0
|
||
AND GET_TAXI_SPEECH_INDEX(myTaxiData) <> TAXI_DI_GIRL_BANTER
|
||
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_GIRL_BANTER,TRUE)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"TX DX CALL TAXI_DI_GIRL_BANTER")
|
||
|
||
IF g_bDebug
|
||
SCRIPT_ASSERT("Triggering TAXI_DI_GIRL_BANTER")
|
||
ENDIF
|
||
tTaxiOJ_DQ_Data.iCurrentDQLine++
|
||
ENDIF
|
||
|
||
BREAK
|
||
ENDSWITCH
|
||
ENDIF
|
||
|
||
PROCESS_IMPORTANT_DIALOGUE_Q(myTaxiData,tDialogueLine, tTaxiOJ_DQ_Data, g_bDebug)
|
||
|
||
ENDPROC
|
||
PROC CALCULATE_TAXI_GYN_JOB_REWARDS()
|
||
//CALC HEALTH CASH VALUE----------------------------------------------------
|
||
//Taxi Health will be written into CashFare
|
||
IF DOES_ENTITY_EXIST(myTaxiData.viTaxi)
|
||
IF IS_VEHICLE_DRIVEABLE(myTaxiData.viTaxi)
|
||
//Check a min payout for taxi damage, if not good enough, predefine a value
|
||
IF GET_VEHICLE_ENGINE_HEALTH(myTaxiData.viTaxi) < 500
|
||
myTaxiData.iTaxiOJ_CashFare = 250 //1000 //2000
|
||
ELSE
|
||
myTaxiData.iTaxiOJ_CashFare = 100 //500 //1000
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
//Player health
|
||
myTaxiData.iTaxiOJ_CashTip = GET_PED_MAX_HEALTH(PLAYER_PED_ID()) - GET_ENTITY_HEALTH(PLAYER_PED_ID())
|
||
|
||
IF myTaxiData.iTaxiOJ_CashTip <= 150 //100
|
||
myTaxiData.iTaxiOJ_CashTip = 250 //1000 //2000
|
||
ELSE
|
||
myTaxiData.iTaxiOJ_CashTip = 100 //500 //1000
|
||
ENDIF
|
||
|
||
//PRICE FOR KO
|
||
//myTaxiData.iTaxiOJ_SpecialCash = 1000
|
||
ENDPROC
|
||
PROC Main_Taxi_OJ_GotYouNow()
|
||
|
||
//Handles Fail Or No Taxi-------------------------------------------------------------------------------
|
||
IF IS_TAXI_JOB_IN_FAIL_STATE(myTaxiData)
|
||
|
||
TAXI_OJ_CLEAR_ALL_BLIPS(myTaxiData)
|
||
|
||
IF TAXI_HANDLE_FAIL(myTaxiData)
|
||
Script_Failed()
|
||
ENDIF
|
||
|
||
//Proceed
|
||
ELSE
|
||
//Run Throughtout the Entire Mission--------------------------------------------------------------
|
||
TAXI_OJ_MAINTAIN_GLOBAL_GATES(myTaxiData)
|
||
|
||
IF (myTaxiData.tTaxiOJ_RideState >= TRS_MANAGE_PICKUP
|
||
AND myTaxiData.tTaxiOJ_RideState <= TRS_DRIVING_PASSENGER)
|
||
OR myTaxiData.tTaxiOJ_RideState >= TRS_DROPPING_OFF
|
||
//Gobal taxi updates that all taxi missions run every frame
|
||
RUN_GLOBAL_TAXI_UPDATES(myTaxiData,aggroArgs)
|
||
|
||
PROCESS_TAXI_EXCEPTIONS(myTaxiData)
|
||
ENDIF
|
||
|
||
UPDATE_TAXI_OJ_TIP(myTaxiData,iTipIndex)
|
||
|
||
//Find Dropoff Point
|
||
IF myTaxiData.tTaxiOJ_RideState > TRS_MANAGE_PICKUP
|
||
AND NOT IS_BIT_SET( iLocalBitSet, k_bDropOffFound )
|
||
|
||
myTaxiData.vTaxiOJDropoff = vDropOffUnderBridge //vNewDropoff_2_Under_Bridge
|
||
|
||
SET_BIT( iLocalBitSet, k_bDropOffFound )
|
||
ENDIF
|
||
|
||
|
||
IF myTaxiData.tTaxiOJ_RideState >= TRS_MANAGE_PICKUP
|
||
AND myTaxiData.tTaxiOJ_RideState < TRS_WAIT_FOR_FULL_STOP
|
||
TAXI_ODDJOB_HANDLE_TAXI_BLIPPING(myTaxiData)
|
||
ENDIF
|
||
|
||
//Dialogue & Objectives
|
||
IF myTaxiData.tTaxiOJ_RideState >= TRS_FINDING_LOCATION
|
||
IF NOT IS_TAXI_EMERGENCY_FAIL_SET(myTaxiData)
|
||
TRIGGER_TAXI_QUEUE_GYN_LINES()
|
||
ELSE
|
||
TAXI_SET_FAIL(myTaxiData,"Taxi Not Driveable",GET_TAXI_EMERGENCY_FAIL_STRING(myTaxiData))
|
||
ENDIF
|
||
|
||
ENDIF
|
||
|
||
IF myTaxiData.tTaxiOJ_RideState >= TRS_SAVE_DAMSEL
|
||
AND myTaxiData.tTaxiOJ_RideState < TRS_REGULAR_PAYMENT
|
||
//Protect Girlfriend
|
||
//Fail Case for new booty call----------------------------------------------
|
||
IF DOES_ENTITY_EXIST(piChickInGauntlet)
|
||
IF IS_ENTITY_DEAD(piChickInGauntlet)
|
||
TAXI_SET_FAIL(myTaxiData,"Player killed his new booty call")
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF HAS_TAXI_DAMAGED_ENTITY(myTaxiData, viGauntlet)
|
||
IF NOT IS_ENTITY_DEAD(viGauntlet)
|
||
EXPLODE_VEHICLE(viGauntlet)
|
||
TAXI_SET_FAIL(myTaxiData,"Player exploded the broke down car")
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF NOT IS_PED_INJURED(piChickInGauntlet)
|
||
IF GET_PLAYER_DISTANCE_FROM_ENTITY(piChickInGauntlet) > 50
|
||
TAXI_SET_FAIL(myTaxiData,"Player abandoned the girl")
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
//---------------------------------------------------------------------------
|
||
|
||
|
||
IF myTaxiData.tTaxiOJ_RideState = TRS_DRIVING_PASSENGER
|
||
HANDLE_TAXI_EXCITEMENT(myTaxiData,FALSE,TRUE)
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
ELIF bDebugTurnOnFreeRide
|
||
HANDLE_TAXI_EXCITEMENT(myTaxiData,TRUE,TRUE)
|
||
#ENDIF
|
||
ENDIF
|
||
|
||
|
||
SWITCH myTaxiData.tTaxiOJ_RideState
|
||
/*PRESTREAM and Check that the player and taxi are good to go----------------------------------------
|
||
|
||
ooooo oooo oooo ooooo ooooooooooo
|
||
888 8888o 88 888 88 888 88
|
||
888 88 888o88 888 888
|
||
888 88 8888 888 888
|
||
o888o o88o 88 o888o o888o
|
||
*/
|
||
CASE TRS_INIT_STREAM
|
||
|
||
//Request of our assets
|
||
REQUEST_TAXI_ODDJOB_GYN_STREAMS_STAGE_01()
|
||
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_DIALOGUE,TAXI_DX_DELAY)
|
||
|
||
TAXI_SPAWN_PASSENGER(myTaxiData, vPassengerPt, vPassengerPickupPt, "TaxiAlonzo",mPassengerModel,196.3547,15.0)
|
||
TAXI_INIT_PASSENGER_BLIP(myTaxiData)
|
||
|
||
|
||
//Move on to the next stage
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_STREAMING)
|
||
BREAK
|
||
|
||
//Wait for streaming to finish
|
||
CASE TRS_STREAMING
|
||
|
||
IF HAVE_TAXI_OJ_GYN_STAGE_01_ASSETS_LOADED()
|
||
|
||
INIT_ALL_TAXI_EXCITEMENT_VALUES()
|
||
|
||
//Init Bonus----------------------------------------
|
||
TAXI_INITIALIZE_BONUS_FIELD(bonusFieldGotYouNow[TGYN_BONUS_FLAWLESS_VICTORY], "TAXI_SC_KO", TAXI_CONST_BONUS_CASH_FLAWLESS_VICTORY)
|
||
TAXI_INITIALIZE_BONUS_INFO(myTaxiData, bonusFieldGotYouNow)
|
||
|
||
//SET REACT BITS
|
||
CLEAR_ALL_TAXI_PASSENGER_REACT_BITS(myTaxiData)
|
||
|
||
INITIALIZE_GENERIC_TAXI_EXCEPTIONS()
|
||
|
||
//Set Pickup
|
||
myTaxiData.vTaxiOJPickup = vPassengerPt
|
||
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_SPAWNING)
|
||
ENDIF
|
||
|
||
BREAK
|
||
/*SPAWNING---------------------------------------------------------------------------------------------------------
|
||
|
||
oooooooo8 oooooooooo o oooo oooo oooo oooo ooooo oooo oooo
|
||
888 888 888 888 88 88 88 8888o 88 888 8888o 88
|
||
888oooooo 888oooo88 8 88 88 888 88 88 888o88 888 88 888o88
|
||
888 888 8oooo88 888 888 88 8888 888 88 8888
|
||
o88oooo888 o888o o88o o888o 8 8 o88o 88 o888o o88o 88
|
||
*/
|
||
CASE TRS_SPAWNING
|
||
IF PROPERTY_VIP_INIT_READY(myTaxiData)
|
||
|
||
IF NOT IS_ENTITY_DEAD(myTaxiData.piTaxiPassenger)
|
||
|
||
SET_PED_MONEY(myTaxiData.piTaxiPassenger,200)
|
||
|
||
// SET_PED_COMPONENT_VARIATION(myTaxiData.piTaxiPassenger, PED_COMP_TORSO, 1, 0)
|
||
// SET_PED_COMPONENT_VARIATION(myTaxiData.piTaxiPassenger, PED_COMP_LEG, 1, 0)
|
||
// SET_PED_COMPONENT_VARIATION(myTaxiData.piTaxiPassenger, PED_COMP_SPECIAL2, 0, 0)
|
||
// SET_PED_COMPONENT_VARIATION(myTaxiData.piTaxiPassenger, PED_COMP_HAIR, 0, 0)
|
||
|
||
SET_PED_COMPONENT_VARIATION(myTaxiData.piTaxiPassenger, INT_TO_ENUM(PED_COMPONENT,0), 1, 0, 0) //(head)
|
||
SET_PED_COMPONENT_VARIATION(myTaxiData.piTaxiPassenger, INT_TO_ENUM(PED_COMPONENT,3), 1, 1, 0) //(uppr)
|
||
SET_PED_COMPONENT_VARIATION(myTaxiData.piTaxiPassenger, INT_TO_ENUM(PED_COMPONENT,4), 0, 1, 0) //(lowr)
|
||
SET_PED_COMPONENT_VARIATION(myTaxiData.piTaxiPassenger, INT_TO_ENUM(PED_COMPONENT,8), 0, 1, 0) //(accs)
|
||
ENDIF
|
||
|
||
//Give player obj to go pickup Passenger
|
||
ENABLE_TAXI_SPEECH(myTaxiData)
|
||
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_MANAGE_PICKUP)
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE TRS_MANAGE_PICKUP
|
||
|
||
IF TAXI_HANDLE_IV_PICKUP_NO_METER(myTaxiData)
|
||
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_WAIT_PARK)
|
||
ENDIF
|
||
BREAK
|
||
//Waits for passenger to head to cab
|
||
/*
|
||
oooooooooo ooooo oooooooo8 oooo oooo ooooo oooo oooooooooo
|
||
888 888 888 o888 88 888 o88 888 88 888 888
|
||
888oooo88 888 888 888888 888 88 888oooo88
|
||
888 888 888o oo 888 88o 888 88 888
|
||
o888o o888o 888oooo88 o888o o888o 888oo88 o888o
|
||
|
||
*/
|
||
CASE TRS_WAIT_PARK
|
||
IF IS_PASSENGER_ENTERING_TAXI(myTaxiData)
|
||
RELEASE_TAXI_ODDJOB_GYN_STREAMS_STAGE_01()
|
||
|
||
//Greet the player
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_GREET,TRUE)
|
||
|
||
//CleanUp Pickup Lock & POI
|
||
CLEANUP_TAXI_PICKUP_STOP(myTaxiData)
|
||
|
||
TAXI_OJ_GYN_SET_TIP_AND_EXCITEMENT_TO_CHECK()
|
||
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_DRIVING_PASSENGER)
|
||
|
||
ENDIF
|
||
|
||
// check to see if player dived, if so send back to prev state
|
||
IF IS_VEHICLE_DRIVEABLE( myTaxiData.viTaxi)
|
||
IF NOT IS_PED_IN_VEHICLE(myTaxiData.piTaxiPlayer, myTaxiData.viTaxi)
|
||
TAXI_HANDLE_PLAYER_DIVE(myTaxiData)
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_DRIVING_PASSENGER)
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
|
||
/* DRIVING PASSENGER
|
||
|
||
ooooooooo oooooooooo ooooo ooooo oooo ooooo oooo oooo ooooooo8
|
||
888 88o 888 888 888 888 88 888 8888o 88 o888 88
|
||
888 888 888oooo88 888 888 88 888 88 888o88 888 oooo
|
||
888 888 888 88o 888 88888 888 88 8888 888o 88
|
||
o888ooo88 o888o 88o8 o888o 888 o888o o88o 88 888ooo888
|
||
*/
|
||
//Once you get to destination wait----------------------------------------------------------------------------------------------------------
|
||
CASE TRS_DRIVING_PASSENGER
|
||
|
||
IF NOT bSeatShuffled
|
||
//Shuffle to the next seat
|
||
IF IS_PASSENGER_IN_TAXI_SEAT(myTaxiData, VS_FRONT_RIGHT)
|
||
OR IS_PASSENGER_IN_TAXI_SEAT(myTaxiData)
|
||
OR TAXI_SHUFFLE_PASSENGER_SEAT(myTaxiData)
|
||
bSeatShuffled = TRUE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
//Construction arrival line
|
||
//SetUp the CSite
|
||
TAXI_OJ_S01_SETUP_CSITE()
|
||
|
||
UPDATE_DYNAMIC_TAXI_REQUESTS()
|
||
|
||
IF TAXI_HANDLE_DRIVING(myTaxiData,/*tTaxiOJ_DQ_Data,*/ 9)
|
||
// OR ( ( ((NOT IS_ENTITY_DEAD(piChickInGauntlet)) AND (GET_DISTANCE_BETWEEN_ENTITIES(myTaxiData.viTaxi,piChickInGauntlet) < fPedDistance))
|
||
// OR ((NOT IS_ENTITY_DEAD(viGauntlet)) AND (GET_DISTANCE_BETWEEN_ENTITIES(myTaxiData.viTaxi,viGauntlet) < fCarDistance)) )
|
||
// AND IS_TAXI_RIDE_ALL_READY(myTaxiData) )
|
||
|
||
REMOVE_BLIP(myTaxiData.blipTaxiDropOff)
|
||
|
||
SET_PLAYER_CONTROL(GET_PLAYER_INDEX(),FALSE)
|
||
|
||
//Reduce chance of player going wanted right here
|
||
SET_CREATE_RANDOM_COPS(FALSE)
|
||
CLEAR_AREA_OF_COPS(GET_PLAYER_COORDS(PLAYER_ID()), 50.0)
|
||
SET_PED_CONFIG_FLAG(myTaxiData.piTaxiPassenger, PCF_DontInfluenceWantedLevel,TRUE)
|
||
|
||
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_WAIT_FOR_FULL_STOP)
|
||
ENDIF
|
||
|
||
// IF NOT IS_ENTITY_DEAD(piChickInGauntlet)
|
||
// AND NOT IS_ENTITY_DEAD(viGauntlet)
|
||
// DRAW_DEBUG_SPHERE(GET_ENTITY_COORDS(piChickInGauntlet), fPedDistance, 0, 0, 255, 100)
|
||
// DRAW_DEBUG_SPHERE(GET_ENTITY_COORDS(viGauntlet), fCarDistance, 0, 255, 255, 100)
|
||
// ENDIF
|
||
|
||
IF iUnderBridgeIndex >=2
|
||
IF NOT bTaxiEarlyAggro
|
||
AND ( IS_PED_INJURED(piChickInGauntlet)
|
||
OR IS_ENTITY_DEAD(viGauntlet)
|
||
OR ((NOT IS_ENTITY_DEAD(piChickInGauntlet)) AND HAS_ENTITY_BEEN_DAMAGED_BY_ANY_VEHICLE(piChickInGauntlet))
|
||
OR ((NOT IS_ENTITY_DEAD(viGauntlet)) AND HAS_ENTITY_BEEN_DAMAGED_BY_ANY_VEHICLE(viGauntlet))
|
||
OR ((NOT IS_ENTITY_DEAD(piChickInGauntlet)) AND HAS_ENTITY_BEEN_DAMAGED_BY_WEAPON(piChickInGauntlet, WEAPONTYPE_INVALID, GENERALWEAPON_TYPE_ANYWEAPON))
|
||
OR ((NOT IS_ENTITY_DEAD(viGauntlet)) AND HAS_ENTITY_BEEN_DAMAGED_BY_WEAPON(viGauntlet, WEAPONTYPE_INVALID, GENERALWEAPON_TYPE_ANYWEAPON))
|
||
OR ((NOT IS_ENTITY_DEAD(piChickInGauntlet)) AND (NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())) AND (GET_PLAYER_DISTANCE_FROM_ENTITY(piChickInGauntlet) < 1.0)) )
|
||
|
||
IF ((NOT IS_ENTITY_DEAD(viGauntlet)) AND HAS_ENTITY_BEEN_DAMAGED_BY_ANY_VEHICLE(viGauntlet))
|
||
OR ((NOT IS_ENTITY_DEAD(viGauntlet)) AND HAS_ENTITY_BEEN_DAMAGED_BY_WEAPON(viGauntlet, WEAPONTYPE_INVALID, GENERALWEAPON_TYPE_ANYWEAPON))
|
||
EXPLODE_VEHICLE(viGauntlet)
|
||
ENDIF
|
||
|
||
IF NOT IS_PED_INJURED(piChickInGauntlet)
|
||
TASK_SMART_FLEE_PED(piChickInGauntlet, PLAYER_PED_ID(), 500, -1)
|
||
SET_PED_KEEP_TASK(piChickInGauntlet, TRUE)
|
||
ENDIF
|
||
|
||
IF NOT IS_ENTITY_DEAD(piChickInGauntlet)
|
||
AND NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
||
AND (GET_PLAYER_DISTANCE_FROM_ENTITY(piChickInGauntlet) < 1.0)
|
||
CLEAR_SEQUENCE_TASK(siTemp)
|
||
OPEN_SEQUENCE_TASK(siTemp)
|
||
TASK_TURN_PED_TO_FACE_ENTITY(NULL, PLAYER_PED_ID())
|
||
TASK_LOOK_AT_ENTITY(NULL, PLAYER_PED_ID(), -1)
|
||
TASK_SMART_FLEE_PED(NULL, PLAYER_PED_ID(), 500, -1)
|
||
CLOSE_SEQUENCE_TASK(siTemp)
|
||
TASK_PERFORM_SEQUENCE(piChickInGauntlet, siTemp)
|
||
SET_PED_KEEP_TASK(piChickInGauntlet, TRUE)
|
||
ENDIF
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Early aggro triggered")
|
||
|
||
TAXI_SET_FAIL(myTaxiData,"Aggro Heard Shot", TFS_ABANDONED_PASSENGER)
|
||
|
||
bTaxiEarlyAggro = TRUE
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE TRS_WAIT_FOR_FULL_STOP
|
||
|
||
IF MUGGING_CAMS()
|
||
SET_PLAYER_CONTROL(GET_PLAYER_INDEX(),TRUE)
|
||
|
||
blipZo = CREATE_BLIP_ON_ENTITY(myTaxiData.piTaxiPassenger ,FALSE)
|
||
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_GENERIC)
|
||
|
||
IF NOT IS_ENTITY_DEAD(piChickInGauntlet)
|
||
CLEAR_PED_TASKS_IMMEDIATELY(piChickInGauntlet)
|
||
TASK_TURN_PED_TO_FACE_ENTITY(piChickInGauntlet, PLAYER_PED_ID())
|
||
SET_ENTITY_HEALTH(piChickInGauntlet, 115)
|
||
ENDIF
|
||
|
||
iPlayerHealth = GET_ENTITY_HEALTH(PLAYER_PED_ID())
|
||
iPassengerHealth = GET_ENTITY_HEALTH(myTaxiData.piTaxiPassenger)
|
||
|
||
START_AUDIO_SCENE("TAXI_GOT_U_NOW")
|
||
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_SWITCH_JOB)
|
||
ENDIF
|
||
|
||
|
||
BREAK
|
||
|
||
CASE TRS_SWITCH_JOB
|
||
#IF IS_DEBUG_BUILD
|
||
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J)
|
||
IF NOT IS_ENTITY_DEAD(myTaxiData.piTaxiPassenger )
|
||
SET_ENTITY_HEALTH(myTaxiData.piTaxiPassenger,2)
|
||
ENDIF
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
SUPPRESS_CRIME_THIS_FRAME(PLAYER_ID(), CRIME_HIT_PED)
|
||
|
||
IF IS_ENTITY_DEAD(myTaxiData.piTaxiPassenger )
|
||
OR ((NOT IS_ENTITY_DEAD(myTaxiData.piTaxiPassenger))
|
||
AND IS_PED_FLEEING(myTaxiData.piTaxiPassenger)
|
||
AND GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(myTaxiData.piTaxiPassenger, vDropOffUnderBridge) > 25.0)
|
||
|
||
//Clear objective to knock him out.
|
||
CLEAR_THIS_PRINT("TAXI_OBJ_GYN")
|
||
|
||
//Clean up all blips------------------------------------
|
||
IF DOES_BLIP_EXIST(myTaxiData.blipTaxiDropOff)
|
||
REMOVE_BLIP(myTaxiData.blipTaxiDropOff)
|
||
ENDIF
|
||
|
||
IF DOES_BLIP_EXIST(myTaxiData.blipTaxiPassenger )
|
||
REMOVE_BLIP(myTaxiData.blipTaxiPassenger )
|
||
ENDIF
|
||
|
||
//remove alonzo blip
|
||
IF DOES_BLIP_EXIST(blipZo)
|
||
REMOVE_BLIP(blipZo)
|
||
ENDIF
|
||
|
||
IF NOT IS_ENTITY_DEAD(piChickInGauntlet)
|
||
IF IS_VEHICLE_DRIVEABLE(myTaxiData.viTaxi)
|
||
|
||
STOP_AUDIO_SCENE("TAXI_GOT_U_NOW")
|
||
|
||
//Here the player has won the fight by hand
|
||
GET_CURRENT_PED_WEAPON(myTaxiData.piTaxiPlayer, currentWeapon)
|
||
|
||
IF IS_WEAPON_NON_LETHAL(currentWeapon)
|
||
OR (NOT IS_ENTITY_DEAD(myTaxiData.piTaxiPassenger))
|
||
|
||
bFairFight = TRUE
|
||
|
||
CLEAR_SEQUENCE_TASK(siTemp)
|
||
OPEN_SEQUENCE_TASK(siTemp)
|
||
TASK_LOOK_AT_ENTITY(NULL, PLAYER_PED_ID(), -1)
|
||
TASK_TURN_PED_TO_FACE_ENTITY(NULL, PLAYER_PED_ID())
|
||
CLOSE_SEQUENCE_TASK(siTemp)
|
||
TASK_PERFORM_SEQUENCE(piChickInGauntlet, siTemp)
|
||
|
||
//TASK_STAND_STILL(piChickInGauntlet,-1)
|
||
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_GIRL_LEAVE,TRUE)//,FALSE,TRUE)
|
||
|
||
myTaxiData.vTaxiOJDropoff = vDropOffChickHouse
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_CUTSCENE)
|
||
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_SAVE_DAMSEL)
|
||
|
||
//Here the player has killed the ped cause he's dead, and the player is not unarmed.
|
||
ELSE
|
||
|
||
bFairFight = FALSE
|
||
|
||
TASK_SMART_FLEE_PED(piChickInGauntlet, PLAYER_PED_ID(), 500, -1)
|
||
SET_PED_KEEP_TASK(piChickInGauntlet,TRUE)
|
||
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_GIRL_BF_KILLED,TRUE,FALSE,TRUE)
|
||
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_REGULAR_PAYMENT)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
//Player killed chick
|
||
ELSE
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_REGULAR_PAYMENT)
|
||
ENDIF
|
||
|
||
ELSE
|
||
|
||
// make sure passenger stays in fight area
|
||
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vFightAreaPos1, vFightAreaPos2, fFightAreaWidth)
|
||
|
||
IF (GET_ENTITY_HEALTH(myTaxiData.piTaxiPassenger) = GET_PED_MAX_HEALTH(myTaxiData.piTaxiPassenger))
|
||
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
||
AND NOT bWarningLeeway
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_GIRL_EGGON_PLAYER_NO_HIT,TRUE)
|
||
bWarningLeeway = TRUE
|
||
ENDIF
|
||
|
||
IF NOT bTaxiGYNOneWarning
|
||
AND GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_GENERIC) > 1.5
|
||
//AND NOT IS_PED_RAGDOLL(PLAYER_PED_ID())
|
||
SET_TAXI_OJ_PED_IN_COMBAT(myTaxiData.piTaxiPassenger)
|
||
SET_PED_CONFIG_FLAG(myTaxiData.piTaxiPassenger, PCF_ForceIgnoreMeleeActiveCombatant, FALSE)
|
||
bTaxiGYNOneWarning = TRUE
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"passengered was tasked to combat")
|
||
#IF IS_DEBUG_BUILD
|
||
ELSE
|
||
DRAW_DEBUG_TEXT_2D("passenger should be fighting", << 0.5, 0.25, 0 >>)
|
||
#ENDIF
|
||
ENDIF
|
||
|
||
|
||
// task the girls idles during the fight
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_GENERIC) > TAXI_CONST_GOON_EGG_ON_DELAY
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"hit egg on")
|
||
IF NOT IS_ENTITY_DEAD(piChickInGauntlet)
|
||
|
||
TASK_LOOK_AT_ENTITY(piChickInGauntlet, PLAYER_PED_ID(), INFINITE_TASK_TIME, SLF_WHILE_NOT_IN_FOV, SLF_LOOKAT_VERY_HIGH)
|
||
|
||
CLEAR_SEQUENCE_TASK(siTemp)
|
||
OPEN_SEQUENCE_TASK(siTemp)
|
||
|
||
TASK_PLAY_ANIM(NULL, "misscommon@response", "give_me_a_break")
|
||
TASK_PLAY_ANIM(NULL, "misscommon@response", "damn")
|
||
TASK_TURN_PED_TO_FACE_ENTITY(NULL, PLAYER_PED_ID())
|
||
|
||
CLOSE_SEQUENCE_TASK(siTemp)
|
||
TASK_PERFORM_SEQUENCE(piChickInGauntlet, siTemp)
|
||
|
||
// we need to track who's winning at this point
|
||
// let's try polling who's taken the most damage within the 8 second time
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
|
||
iPlayerHealth -= GET_ENTITY_HEALTH(PLAYER_PED_ID())
|
||
iPassengerHealth -= GET_ENTITY_HEALTH(myTaxiData.piTaxiPassenger)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"hit egg on dialogue")
|
||
|
||
IF iPlayerHealth < iPassengerHealth
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_GIRL_EGGON_PLAYER_WINNING,TRUE)
|
||
ELSE
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_GIRL_EGGON_BF,TRUE)
|
||
ENDIF
|
||
|
||
// reset the current health values
|
||
iPlayerHealth = GET_ENTITY_HEALTH(PLAYER_PED_ID())
|
||
iPassengerHealth = GET_ENTITY_HEALTH(myTaxiData.piTaxiPassenger)
|
||
ENDIF
|
||
|
||
ELSE
|
||
IF NOT bHealthBonusGiven
|
||
KILL_ANY_CONVERSATION()
|
||
// If girl dies, reset the passenger's health to account for his aggravation
|
||
SET_ENTITY_HEALTH(myTaxiData.piTaxiPassenger, GET_PED_MAX_HEALTH(myTaxiData.piTaxiPassenger))
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"hit KO dialogue")
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData, TAXI_DI_GIRL_KOD, TRUE)
|
||
bHealthBonusGiven = TRUE
|
||
bFairFight = FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"piChickInGauntlet was tasked")
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_GENERIC)
|
||
ELSE
|
||
IF (GET_GAME_TIMER() % 1000) < 50
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"hit timer not ready")
|
||
ENDIF
|
||
ENDIF
|
||
|
||
//if passenger follows player out of fight area, task him to go back to his chick
|
||
// ideally it will look like they're arguing
|
||
ELIF NOT IS_PED_FLEEING(myTaxiData.piTaxiPassenger)
|
||
IF bTaxiGYNOneWarning
|
||
|
||
CLEAR_PED_TASKS_IMMEDIATELY(myTaxiData.piTaxiPassenger)
|
||
|
||
CLEAR_SEQUENCE_TASK(siTemp)
|
||
OPEN_SEQUENCE_TASK(siTemp)
|
||
IF IS_PED_INJURED(piChickInGauntlet)
|
||
TASK_GO_STRAIGHT_TO_COORD(NULL, GET_ENTITY_COORDS(piChickInGauntlet, FALSE), PEDMOVEBLENDRATIO_SPRINT)
|
||
TASK_TURN_PED_TO_FACE_COORD(NULL, GET_ENTITY_COORDS(piChickInGauntlet, FALSE))
|
||
ELSE
|
||
TASK_GO_TO_ENTITY(NULL, piChickInGauntlet, DEFAULT_TIME_BEFORE_WARP, 3.5, PEDMOVEBLENDRATIO_WALK)
|
||
TASK_TURN_PED_TO_FACE_ENTITY(NULL, piChickInGauntlet)
|
||
// TASK_CHAT_TO_PED(NULL, piChickInGauntlet, CF_AUTO_CHAT, << 0,0,0 >>, 0, 0)
|
||
ENDIF
|
||
CLOSE_SEQUENCE_TASK(siTemp)
|
||
TASK_PERFORM_SEQUENCE(myTaxiData.piTaxiPassenger, siTemp)
|
||
|
||
IF NOT IS_PED_INJURED(piChickInGauntlet)
|
||
// CLEAR_SEQUENCE_TASK(siTemp)
|
||
// OPEN_SEQUENCE_TASK(siTemp)
|
||
TASK_TURN_PED_TO_FACE_ENTITY(piChickInGauntlet, myTaxiData.piTaxiPassenger)
|
||
// TASK_CHAT_TO_PED(NULL, myTaxiData.piTaxiPassenger, CF_AUTO_CHAT, << 0,0,0 >>, 0, 0)
|
||
// CLOSE_SEQUENCE_TASK(siTemp)
|
||
// TASK_PERFORM_SEQUENCE(piChickInGauntlet, siTemp)
|
||
ENDIF
|
||
|
||
SETTIMERA(0)
|
||
|
||
bTaxiGYNOneWarning = FALSE
|
||
ENDIF
|
||
|
||
IF NOT IS_PED_INJURED(piChickInGauntlet)
|
||
IF VDIST2(GET_ENTITY_COORDS(myTaxiData.piTaxiPassenger), GET_ENTITY_COORDS(piChickInGauntlet, FALSE)) < 25.0
|
||
AND (GET_SCRIPT_TASK_STATUS(myTaxiData.piTaxiPassenger, SCRIPT_TASK_CHAT_TO_PED) <> PERFORMING_TASK
|
||
OR GET_SCRIPT_TASK_STATUS(myTaxiData.piTaxiPassenger, SCRIPT_TASK_CHAT_TO_PED) <> WAITING_TO_START_TASK)
|
||
TASK_CHAT_TO_PED(piChickInGauntlet, myTaxiData.piTaxiPassenger, CF_AUTO_CHAT, << 0,0,0 >>, 0, 0)
|
||
TASK_CHAT_TO_PED(myTaxiData.piTaxiPassenger, piChickInGauntlet, CF_AUTO_CHAT, << 0,0,0 >>, 0, 0)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// give the player 30 seconds outside of the zone before failing him
|
||
IF TIMERA() > 30000
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"IS THAT HIT??")
|
||
TAXI_SET_FAIL(myTaxiData, "Player abandoned passenger", TFS_ABANDONED_PASSENGER)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF GET_PLAYER_DISTANCE_FROM_LOCATION(myTaxiData.vTaxiOJDropoff) > 250 //500
|
||
AND DOES_BLIP_EXIST(blipZo) //that makes it so you only fail while fight is active
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"IS THIS HIT??")
|
||
TAXI_SET_FAIL(myTaxiData, "Player abandoned passenger", TFS_ABANDONED_PASSENGER)
|
||
ENDIF
|
||
BREAK
|
||
|
||
|
||
|
||
//------------------------------------NEW STUFF-------------------------------------------
|
||
CASE TRS_SAVE_DAMSEL
|
||
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(),piChickInGauntlet) < 5.5 //4.0
|
||
// AND IS_PLAYER_CONTROL_ON(GET_PLAYER_INDEX())
|
||
// SET_PLAYER_CONTROL(GET_PLAYER_INDEX(), FALSE)
|
||
// ENDIF
|
||
|
||
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
||
AND GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_CUTSCENE) > 2.0
|
||
|
||
myTaxiData.blipTaxiPassenger = CREATE_BLIP_FOR_ENTITY(piChickInGauntlet)
|
||
SET_BLIP_NAME_FROM_TEXT_FILE(myTaxiData.blipTaxiPassenger,"TX_BLIP_GYN_TG")
|
||
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_OBJ_GYN,TRUE)
|
||
|
||
SET_CREATE_RANDOM_COPS(TRUE)
|
||
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_CUTSCENE)
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_PRE_CUTSCENE)
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE TRS_PRE_CUTSCENE
|
||
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(),piChickInGauntlet) < 3.0
|
||
AND NOT IS_PLAYER_DRIVING_ANY_VEHICLE()
|
||
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
|
||
|
||
myTaxiData.bSecondPassenger = TRUE
|
||
CLEAR_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_BitsDialogue,TAXI_DXF_BANTER)
|
||
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_CUTSCENE)
|
||
ELSE
|
||
IF NOT IS_PED_INJURED(piChickInGauntlet)
|
||
AND NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
TASK_TURN_PED_TO_FACE_ENTITY(piChickInGauntlet, PLAYER_PED_ID())
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
|
||
|
||
CASE TRS_CUTSCENE
|
||
IF TAXI_OJ_GYN_CUTSCENE_SAVE_CHICK()
|
||
//Remove passenger blip
|
||
IF DOES_BLIP_EXIST(myTaxiData.blipTaxiPassenger )
|
||
REMOVE_BLIP(myTaxiData.blipTaxiPassenger )
|
||
ENDIF
|
||
|
||
SET_PED_AS_NO_LONGER_NEEDED(myTaxiData.piTaxiPassenger)
|
||
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_WAIT_FOR_PASSENGER)
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE TRS_WAIT_FOR_PASSENGER
|
||
IF NOT myTaxiData.bPassengerObjPrinted
|
||
AND NOT ARE_VECTORS_EQUAL(myTaxiData.vTaxiOJ_PassengerGoToPt, vChickPtToWalkTo)
|
||
|
||
IF IS_PED_IN_ANY_VEHICLE(piChickInGauntlet)
|
||
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
||
|
||
myTaxiData.piTaxiPassenger = piChickInGauntlet
|
||
myTaxiData.vTaxiOJ_PassengerGoToPt = vChickPtToWalkTo
|
||
myTaxiData.vTaxiOJDropoff = vDropOffChickHouse
|
||
|
||
// since it's a new passenger, reset the gate for these bits if they've been set
|
||
IF IS_BITMASK_AS_ENUM_SET(myTaxiData.iTaxiOJ_Bits_Gates, TAXI_GATE_RETURN_TO_TAXI)
|
||
CLEAR_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_Bits_Gates, TAXI_GATE_RETURN_TO_TAXI)
|
||
ENDIF
|
||
IF IS_BITMASK_AS_ENUM_SET(myTaxiData.iTaxiOJ_Bits_Gates, TAXI_GATE_REGIVE_OBJ)
|
||
CLEAR_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_Bits_Gates, TAXI_GATE_REGIVE_OBJ)
|
||
ENDIF
|
||
|
||
myTaxiData.iTaxiOJ_DXBitsStopped = 0
|
||
|
||
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_GIRL_DEST,TRUE)
|
||
ENDIF
|
||
ELIF myTaxiData.bPassengerObjPrinted
|
||
|
||
myTaxiData.blipTaxiDropOff = CREATE_BLIP_FOR_COORD(vDropOffChickHouse,TRUE)
|
||
SET_BLIP_NAME_FROM_TEXT_FILE(myTaxiData.blipTaxiDropOff,"TX_BLIP_GYN_GF")
|
||
|
||
RELEASE_TAXI_ODDJOB_GYN_STREAMS_STAGE_02()
|
||
|
||
TAXI_CANCEL_TIMERS(myTaxiData, TT_STOPPED)
|
||
|
||
OPEN_DIALOGUE_QUEUE(tTaxiOJ_DQ_Data,5)
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_DROPPING_OFF)
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE TRS_DROPPING_OFF
|
||
|
||
IF TAXI_HANDLE_DRIVING(myTaxiData/*,tTaxiOJ_DQ_Data*/)
|
||
REMOVE_BLIP(myTaxiData.blipTaxiDropOff)
|
||
|
||
CLEAR_DIALOGUE_QUEUE(tDialogueLine)
|
||
CLOSE_DIALOGUE_QUEUE(tTaxiOJ_DQ_Data,-1,TRUE)
|
||
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_GIRL_THANKS,TRUE)
|
||
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_REGULAR_PAYMENT)
|
||
ENDIF
|
||
BREAK
|
||
/* REGULAR PAYMENT------------------------------------------------------------------------------------------------
|
||
|
||
oooooooooo o ooooo oooo oooo oooo ooooooooooo oooo oooo ooooooooooo
|
||
888 888 888 888 88 8888o 888 888 88 8888o 88 88 888 88
|
||
888oooo88 8 88 888 88 888o8 88 888ooo8 88 888o88 888
|
||
888 8oooo88 888 88 888 88 888 oo 88 8888 888
|
||
o888o o88o o888o o888o o88o 8 o88o o888ooo8888 o88o 88 o888o
|
||
*/
|
||
CASE TRS_REGULAR_PAYMENT
|
||
IF HAS_TAXI_OJ_PASSENGER_BEEN_DROPPED_OFF(myTaxiData,TRUE)
|
||
OR IS_PED_PERFORMING_TASK(piChickInGauntlet, SCRIPT_TASK_SMART_FLEE_PED)
|
||
OR IS_ENTITY_DEAD(piChickInGauntlet)
|
||
|
||
//IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
||
//TAXI_OJ_TASK_PASSENGER_DROPOFF(myTaxiData)
|
||
|
||
IF bFairFight
|
||
CLEAR_SEQUENCE_TASK(siTemp)
|
||
OPEN_SEQUENCE_TASK(siTemp)
|
||
//TASK_GO_STRAIGHT_TO_COORD(NULL, << -617.7251, -763.0566, 24.9895 >>, PEDMOVEBLENDRATIO_WALK)
|
||
//TASK_GO_STRAIGHT_TO_COORD(NULL, << -615.6333, -778.8123, 24.1921 >>, PEDMOVEBLENDRATIO_WALK)
|
||
//TASK_GO_STRAIGHT_TO_COORD(NULL, myTaxiData.vTaxiOJ_PassengerGoToPt, PEDMOVEBLENDRATIO_WALK)
|
||
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<-612.6458, -777.7148, 24.2700>>, PEDMOVEBLENDRATIO_WALK)
|
||
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<-608.3197, -775.0622, 24.0547>>, PEDMOVEBLENDRATIO_WALK)
|
||
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<-589.0419, -775.1888, 24.0172>>, PEDMOVEBLENDRATIO_WALK)
|
||
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, myTaxiData.vTaxiOJ_PassengerGoToPt, PEDMOVEBLENDRATIO_WALK)//, DEFAULT_TIME_BEFORE_WARP)
|
||
//TASK_WANDER_STANDARD(NULL)
|
||
TASK_START_SCENARIO_IN_PLACE(NULL, "WORLD_HUMAN_STAND_MOBILE", 0, TRUE)
|
||
CLOSE_SEQUENCE_TASK(siTemp)
|
||
TASK_PERFORM_SEQUENCE(piChickInGauntlet, siTemp)
|
||
|
||
SET_PED_KEEP_TASK(piChickInGauntlet, TRUE)
|
||
|
||
TAXI_SET_BONUS_AWARD(myTaxiData,ENUM_TO_INT(TGYN_BONUS_FLAWLESS_VICTORY))
|
||
|
||
SET_BOOTY_CALL_ID_ACTIVATED(BC_TAXI_LIZ, TRUE)
|
||
ENDIF
|
||
|
||
SET_TAXI_FARE_OFF_MILEAGE(myTaxiData)
|
||
|
||
CALCULATE_TAXI_GYN_JOB_REWARDS()
|
||
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_SCORECARD_GRADE)
|
||
|
||
ENDIF
|
||
BREAK
|
||
|
||
/*Pop up the scorecard---------------------------------------------------------------------------------------
|
||
|
||
oooooooo8 oooooooo8 ooooooo oooooooooo ooooooooooo oooooooo8
|
||
888 o888 88 o888 888o 888 888 888 88 o888 88
|
||
888oooooo 888 888 888 888oooo88 888ooo8 888
|
||
888 888o oo 888o o888 888 88o 888 oo 888o oo
|
||
o88oooo888 888oooo88 88ooo88 o888o 88o8 o888ooo8888 888oooo88
|
||
*/
|
||
CASE TRS_SCORECARD_GRADE
|
||
IF TAXI_CALC_SCORECARD(myTaxiData,TaxiMidSize)
|
||
TAXI_MISSION_END(TRUE, myTaxiData)
|
||
//Move on to the next stage
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_CLEANUP)
|
||
ENDIF
|
||
|
||
BREAK
|
||
|
||
CASE TRS_CLEANUP
|
||
Script_Cleanup()
|
||
BREAK
|
||
|
||
ENDSWITCH
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
SCRIPT
|
||
//FIX FOR BUILD
|
||
IF ARE_VECTORS_EQUAL(vDropOffUnderBridge,<<0,0,0>>)
|
||
|
||
ENDIF
|
||
|
||
|
||
// Handles the player being busted or arrested, or if the player
|
||
// jumps into Multiplayer from Singleplayer – ensures the script
|
||
// gets cleaned up properly under the correct circumstances
|
||
IF (HAS_FORCE_CLEANUP_OCCURRED(DEFAULT_FORCE_CLEANUP_FLAGS | FORCE_CLEANUP_FLAG_REPEAT_PLAY))
|
||
SET_PROPERTY_MANAGEMENT_RESULT(PROPERTY_MANAGEMENT_RESULT_FAILURE)
|
||
Script_Cleanup()
|
||
ENDIF
|
||
|
||
// Any initialisation (generally, only mission scripts should set
|
||
// the mission flag to TRUE)
|
||
SET_MISSION_FLAG(TRUE)
|
||
|
||
INITIALIZE_SCRIPT_VARIABLES()
|
||
|
||
// The script loop
|
||
WHILE (TRUE)
|
||
// Maintain the script – perform per-frame functionality
|
||
//All skips and debug shortcuts-------------------------------
|
||
#IF IS_DEBUG_BUILD
|
||
|
||
PROCESS_TAXI_DEBUG_SKIP(myTaxiData,tDebugState)
|
||
|
||
// Debug Key: Check for Pass (not for Minigmes)
|
||
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S))
|
||
TAXI_ODDJOB_DEBUG_SKIP_TO_SCORECARD(myTaxiData)
|
||
ENDIF
|
||
|
||
// Debug Key: Check for Fail (not for Minigames)
|
||
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F))
|
||
TAXI_DEBUG_FAIL_TRIGGERED(myTaxiData)
|
||
Script_Failed()
|
||
ENDIF
|
||
|
||
// Debug Key: set vehicle health to 0.0
|
||
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_E))
|
||
IF NOT IS_ENTITY_DEAD(myTaxiData.viTaxi)
|
||
SET_VEHICLE_ENGINE_HEALTH(myTaxiData.viTaxi, 50.0)
|
||
SET_ENTITY_HEALTH(myTaxiData.viTaxi, 50)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
PROCESS_WIDGETS()
|
||
|
||
#ENDIF
|
||
//END DEBUG----------------------------------------------------
|
||
|
||
IF DOES_ENTITY_EXIST(myTaxiData.piTaxiPlayer)
|
||
Main_Taxi_OJ_GotYouNow()
|
||
ELSE
|
||
REASSIGN_TAXI_OJ_DRIVER(myTaxiData)
|
||
ENDIF
|
||
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
// Script should never reach here. Always terminate with cleanup function.
|
||
ENDSCRIPT
|