1359 lines
47 KiB
Python
Executable File
1359 lines
47 KiB
Python
Executable File
//=======================================================================================================================================
|
||
// Taxi_Deadline.sc
|
||
// Dev : John R. Diaz
|
||
/*
|
||
• “I’m on a deadline.” The passenger gives you a set amount of time to get to the location. This is all or nothing.
|
||
If you exceed the time, the passenger will bail.
|
||
*/
|
||
|
||
|
||
|
||
//CHANGELOG==========================================================================================================
|
||
//9/27/11 - Reformatting/prettifying all taxi oj scripts
|
||
//===================================================================================================================
|
||
|
||
|
||
|
||
//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"
|
||
|
||
|
||
//Consts-------------------------------------------------------
|
||
CONST_FLOAT CONST_TAXI_GOOD_SPEED 23.0 //TAXI has a max speed of 49, so half that is a decent speed
|
||
CONST_FLOAT CONST_TAXI_OJ_DISTANCE_PAD 20.0
|
||
CONST_FLOAT CONST_TAXI_OJ_TIME_TO_LOSE_ALL_TIP 240.0
|
||
CONST_INT CONST_iTaxi_DeadlineMinutes 30//45
|
||
//Local Variables-----------------------------------------------
|
||
|
||
|
||
//Custom Data
|
||
TaxiStruct myTaxiData
|
||
|
||
MODEL_NAMES mPassengerModel = G_M_M_CHIGOON_02
|
||
|
||
//Taxi Bonus Data-------------------------------------------------------------------
|
||
ENUM TAXIOJ_DL_BONUS
|
||
TDL_BONUS_SPEEDDEMON = 0,
|
||
TDL_BONUS_TOTAL
|
||
ENDENUM
|
||
|
||
CONST_INT TAXI_CONST_BONUS_CASH_SPEED_DEMON 200
|
||
CONST_FLOAT TAXI_CONST_BONUS_TIME_SPEED_DEMON 160.0
|
||
BONUS_FIELD bonusFieldDeadline[TDL_BONUS_TOTAL]
|
||
|
||
//--------------------------------------------------------------------------------
|
||
|
||
//Ints
|
||
INT iDebugThrottle = 1
|
||
INT iTipIndex =0
|
||
INT iRideProgress = 0
|
||
//INT iCurrentGameTimeInMilliseconds
|
||
//INT iTimeLimitMin
|
||
//INT iTimeLimitHour
|
||
|
||
//Floats
|
||
FLOAT fTimeLimit
|
||
|
||
SEQUENCE_INDEX siTemp
|
||
|
||
VECTOR vNewDLDropoff = <<344.74585, 452.18317, 145.993595>>
|
||
|
||
structTimer DeadlineTimer
|
||
structTimer localBanterDelay
|
||
structTimer endBanterDelay
|
||
|
||
//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]
|
||
|
||
TIMEOFDAY eDeadline
|
||
|
||
TEXT_LABEL_7 sDeadlineTime
|
||
|
||
CONST_FLOAT DEADLINE_FAIL_LEEWAY 10.0
|
||
|
||
//Aggro checks
|
||
AGGRO_ARGS aggroArgs
|
||
|
||
SCRIPT_SHARD_BIG_MESSAGE TaxiMidSize
|
||
//Debug---------------------------------------------------------------------------------------------------------------
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
|
||
WIDGET_GROUP_ID taxiRideWidgets
|
||
TEXT_LABEL_63 sDebugString[5]
|
||
BOOL bDebugDrawDL_Stats
|
||
BOOL bDebugTurnOnFreeRide = FALSE
|
||
BOOL bDebugSucceed
|
||
TXM_DEBUG_SKIP_STATES tDebugState = TXM_DSS_CHECK_FOR_BUTTON_PRESS
|
||
#ENDIF
|
||
|
||
ENUM TAXI_OJ_DL_POINTOFINTEREST
|
||
|
||
TXOJ_POI_CASINO = 0,
|
||
TXOJ_POI_CASINO_WARPPT,
|
||
|
||
TXOJ_POI_NE_COUNTRYSIDE_PASSENGER_SPAWNPT_1,
|
||
TXOJ_POI_NE_COUNTRYSIDE_PASSENGER_WARPPT_1,
|
||
TXOJ_POI_NE_COUNTRYSIDE_PASSENGER_PICKUP_1,
|
||
|
||
TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_SPAWNPT_2,
|
||
TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_WARPPT_2,
|
||
TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_PICKUP_2,
|
||
|
||
TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_SPAWNPT_3,
|
||
TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_WARPPT_3,
|
||
TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_PICKUP_3,
|
||
|
||
TXOJ_POI_TOTAL_NUM
|
||
ENDENUM
|
||
|
||
TAXI_OJ_DL_POINTOFINTEREST eWarpPt
|
||
TAXI_OJ_DL_POINTOFINTEREST ePickupPt
|
||
|
||
//For B*328695 - to change startpt for this mission change these below------------------------------------------------
|
||
TAXI_OJ_DL_POINTOFINTEREST eSpawnPt = TXOJ_POI_NE_COUNTRYSIDE_PASSENGER_SPAWNPT_1// TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_SPAWNPT_2 *****OR**** TXOJ_POI_NE_COUNTRYSIDE_PASSENGER_SPAWNPT_1
|
||
|
||
|
||
ENUM TAXI_DEADLINE_GOAL_DISTS_AND_TIMES
|
||
TXDL_OVERALL_GOAL_TIME = 0,
|
||
TXDL_TIME_GOOD_1,
|
||
TXDL_DIST_GOOD_1,
|
||
TXDL_TIME_GOOD_2,
|
||
TXDL_DIST_GOOD_2,
|
||
TXDL_TIME_GOOD_3,
|
||
TXDL_DIST_GOOD_3,
|
||
|
||
TXDL_TOTAL_GOALS
|
||
|
||
ENDENUM
|
||
|
||
FLOAT fDeadlineGoals[TXDL_TOTAL_GOALS]
|
||
|
||
CONST_INT NUM_TIME_DISTANCE_SAMPLES 22
|
||
CONST_INT NUM_POS_LINES 8
|
||
CONST_INT NUM_NEG_LINES 8
|
||
|
||
FLOAT fTimeToCheckDistanceLeft[NUM_TIME_DISTANCE_SAMPLES]
|
||
FLOAT fExpectedDistanceLeft[NUM_TIME_DISTANCE_SAMPLES]
|
||
|
||
//FUNCTIONS------------------------------------------------------------------------------------------------------------
|
||
|
||
FUNC VECTOR GET_TAXI_OJ_DL_VECTORS(TAXI_OJ_DL_POINTOFINTEREST eWhichPt )
|
||
|
||
VECTOR vReturnPoint = NULL_VECTOR()
|
||
|
||
SWITCH eWhichPt
|
||
|
||
//Casino
|
||
CASE TXOJ_POI_CASINO
|
||
vReturnPoint = << 924.2684, 50.0780, 79.7647 >>
|
||
BREAK
|
||
|
||
CASE TXOJ_POI_CASINO_WARPPT
|
||
vReturnPoint = << 916.0502, 39.3504, 79.7647 >>
|
||
BREAK
|
||
|
||
//Passenger Spawn Pt Original - NE CountrySide
|
||
CASE TXOJ_POI_NE_COUNTRYSIDE_PASSENGER_SPAWNPT_1
|
||
vReturnPoint = <<1971.2462, 3741.5171, 31.3268>> //<< 1407.9248, 3601.9922, 33.9870 >>
|
||
BREAK
|
||
|
||
//WarpPt for SpawnPt #1
|
||
CASE TXOJ_POI_NE_COUNTRYSIDE_PASSENGER_WARPPT_1
|
||
vReturnPoint = <<2004.2780, 3752.3193, 31.4156>> //<< 1368.4233, 3570.0098, 33.9975 >>
|
||
BREAK
|
||
|
||
CASE TXOJ_POI_NE_COUNTRYSIDE_PASSENGER_PICKUP_1
|
||
vReturnPoint = << 1410.8911, 3596.0676, 33.8351 >>
|
||
BREAK
|
||
//Passenger Spawn Pt Alt - Near Del Perro Beach SW part of Map
|
||
CASE TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_SPAWNPT_2
|
||
vReturnPoint = << -1383.0603, -972.8339, 8.0140 >>
|
||
BREAK
|
||
|
||
//WarpPt for SpawnPt #2
|
||
CASE TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_WARPPT_2
|
||
vReturnPoint = << -1399.1967, -944.1848, 9.4306 >>
|
||
BREAK
|
||
|
||
CASE TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_PICKUP_2
|
||
vReturnPoint = << -1379.2621, -972.9459, 7.8097 >>
|
||
BREAK
|
||
//Alt Pickup Pt#3 by Bahama Mamas West
|
||
//Passenger Spawn Pt Alt - Near Del Perro Beach SW part of Map
|
||
CASE TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_SPAWNPT_3
|
||
vReturnPoint = << -1390.7650, -584.3324, 29.2306 >>
|
||
BREAK
|
||
|
||
//WarpPt for SpawnPt #2
|
||
CASE TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_WARPPT_3
|
||
vReturnPoint = << -1410.2234, -590.6025, 29.3669 >>
|
||
BREAK
|
||
|
||
CASE TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_PICKUP_3
|
||
vReturnPoint = << -1379.2621, -972.9459, 7.8097 >>
|
||
BREAK
|
||
|
||
ENDSWITCH
|
||
|
||
RETURN vReturnPoint
|
||
ENDFUNC
|
||
/// PURPOSE: the index in these should correspond to the index above in VECTOR variation
|
||
///
|
||
/// PARAMS:
|
||
/// iWhichIndex -
|
||
/// RETURNS:
|
||
///
|
||
FUNC FLOAT GET_TAXI_OJ_DL_HEADINGS(TAXI_OJ_DL_POINTOFINTEREST eWhichPt)
|
||
|
||
FLOAT fReturnHeading = 0
|
||
|
||
SWITCH eWhichPt
|
||
|
||
//Casino
|
||
CASE TXOJ_POI_CASINO
|
||
fReturnHeading = 328.48
|
||
BREAK
|
||
|
||
CASE TXOJ_POI_CASINO_WARPPT
|
||
fReturnHeading = 328.48
|
||
BREAK
|
||
|
||
//Passenger Spawn Pt Original - NE CountrySide
|
||
CASE TXOJ_POI_NE_COUNTRYSIDE_PASSENGER_SPAWNPT_1
|
||
fReturnHeading = 239.1430 //237.0
|
||
BREAK
|
||
|
||
//Heading for WarpPt to SpawnPt #1
|
||
CASE TXOJ_POI_NE_COUNTRYSIDE_PASSENGER_WARPPT_1
|
||
fReturnHeading = 121.2021 //287
|
||
BREAK
|
||
|
||
//Passenger Spawn Pt Alt - Near Del Perro Beach SW part of Map
|
||
CASE TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_SPAWNPT_2
|
||
fReturnHeading = 268.6
|
||
BREAK
|
||
|
||
//Heading for WarpPt for SpawnPt #2
|
||
CASE TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_WARPPT_2
|
||
fReturnHeading = 218.5
|
||
BREAK
|
||
|
||
//Passenger Spawn Pt Alt - Near Del Perro Beach SW part of Map
|
||
CASE TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_SPAWNPT_3
|
||
fReturnHeading = 268.6
|
||
BREAK
|
||
|
||
//Heading for WarpPt for SpawnPt #2
|
||
CASE TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_WARPPT_3
|
||
fReturnHeading = 301.6025
|
||
BREAK
|
||
|
||
ENDSWITCH
|
||
|
||
RETURN fReturnHeading
|
||
ENDFUNC
|
||
|
||
PROC SETUP_TAXI_OJ_DEADLINE_GOALS()
|
||
//Picked the Country start pt
|
||
IF eSpawnPt = TXOJ_POI_NE_COUNTRYSIDE_PASSENGER_SPAWNPT_1
|
||
|
||
eWarpPt = TXOJ_POI_NE_COUNTRYSIDE_PASSENGER_WARPPT_1
|
||
ePickupPt = TXOJ_POI_NE_COUNTRYSIDE_PASSENGER_PICKUP_1
|
||
|
||
fDeadlineGoals[TXDL_OVERALL_GOAL_TIME] = 210 //165//180
|
||
fDeadlineGoals[TXDL_TIME_GOOD_1] = 60//70
|
||
fDeadlineGoals[TXDL_DIST_GOOD_1] = 3150
|
||
fDeadlineGoals[TXDL_TIME_GOOD_2] = 105//110
|
||
fDeadlineGoals[TXDL_DIST_GOOD_2] = 1800
|
||
fDeadlineGoals[TXDL_TIME_GOOD_3] = 150 //160 //TAXI_CONST_BONUS_TIME_SPEED_DEMON
|
||
fDeadlineGoals[TXDL_DIST_GOOD_3] = 200
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Taxi Goals defined for 1st dropoff")
|
||
//Picked Del Perro Beach startpt
|
||
ELSE
|
||
eWarpPt = TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_WARPPT_3
|
||
ePickupPt = TXOJ_POI_DEL_PERRO_BEACH_PASSENGER_PICKUP_3
|
||
|
||
fDeadlineGoals[TXDL_OVERALL_GOAL_TIME] = 140
|
||
fDeadlineGoals[TXDL_TIME_GOOD_1] = 60
|
||
fDeadlineGoals[TXDL_DIST_GOOD_1] = 1780
|
||
fDeadlineGoals[TXDL_TIME_GOOD_2] = 90
|
||
fDeadlineGoals[TXDL_DIST_GOOD_2] = 900
|
||
fDeadlineGoals[TXDL_TIME_GOOD_3] = 120 //TAXI_CONST_BONUS_TIME_SPEED_DEMON
|
||
fDeadlineGoals[TXDL_DIST_GOOD_3] = 228
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Taxi Goals defined for 2nd dropoff")
|
||
|
||
ENDIF
|
||
|
||
|
||
fTimeToCheckDistanceLeft[0] = 70.050049
|
||
fExpectedDistanceLeft[0] = 3090.417480
|
||
|
||
fTimeToCheckDistanceLeft[1] = 76.252930
|
||
fExpectedDistanceLeft[1] = 2929.083252
|
||
|
||
fTimeToCheckDistanceLeft[2] = 82.693115
|
||
fExpectedDistanceLeft[2] = 2759.830322
|
||
|
||
fTimeToCheckDistanceLeft[3] = 88.343994
|
||
fExpectedDistanceLeft[3] = 2576.061279
|
||
|
||
fTimeToCheckDistanceLeft[4] = 94.978027
|
||
fExpectedDistanceLeft[4] = 2350.885986
|
||
|
||
fTimeToCheckDistanceLeft[5] = 100.798096
|
||
fExpectedDistanceLeft[5] = 2177.442383
|
||
|
||
fTimeToCheckDistanceLeft[6] = 106.467041
|
||
fExpectedDistanceLeft[6] = 2016.681396
|
||
|
||
fTimeToCheckDistanceLeft[7] = 112.928955
|
||
fExpectedDistanceLeft[7] = 1839.417358
|
||
|
||
fTimeToCheckDistanceLeft[8] = 118.420898
|
||
fExpectedDistanceLeft[8] = 1689.620483
|
||
|
||
fTimeToCheckDistanceLeft[9] = 124.424072
|
||
fExpectedDistanceLeft[9] = 1526.637939
|
||
|
||
fTimeToCheckDistanceLeft[10] = 130.760010
|
||
fExpectedDistanceLeft[10] = 1356.038818
|
||
|
||
fTimeToCheckDistanceLeft[11] = 136.699951
|
||
fExpectedDistanceLeft[11] = 1184.012695
|
||
|
||
fTimeToCheckDistanceLeft[12] = 142.572998
|
||
fExpectedDistanceLeft[12] = 1034.024048
|
||
|
||
fTimeToCheckDistanceLeft[13] = 148.216064
|
||
fExpectedDistanceLeft[13] = 894.622498
|
||
|
||
fTimeToCheckDistanceLeft[14] = 154.432129
|
||
fExpectedDistanceLeft[14] = 756.521912
|
||
|
||
fTimeToCheckDistanceLeft[15] = 160.274902
|
||
fExpectedDistanceLeft[15] = 669.363953
|
||
|
||
fTimeToCheckDistanceLeft[16] = 166.250000
|
||
fExpectedDistanceLeft[16] = 570.295349
|
||
|
||
fTimeToCheckDistanceLeft[17] = 172.250977
|
||
fExpectedDistanceLeft[17] = 521.976990
|
||
|
||
fTimeToCheckDistanceLeft[18] = 178.605957
|
||
fExpectedDistanceLeft[18] = 340.746582
|
||
|
||
fTimeToCheckDistanceLeft[19] = 184.680908
|
||
fExpectedDistanceLeft[19] = 224.309128
|
||
|
||
fTimeToCheckDistanceLeft[20] = 190.708008
|
||
fExpectedDistanceLeft[20] = 126.953461
|
||
|
||
fTimeToCheckDistanceLeft[21] = 193.06201
|
||
fExpectedDistanceLeft[21] = 81.804207
|
||
|
||
myTaxiData.vTaxiOJ_WarpPtPickup = GET_TAXI_OJ_DL_VECTORS(eWarpPt)
|
||
myTaxiData.fTaxiOJ_WarpPtHeadingPickup = GET_TAXI_OJ_DL_HEADINGS(eWarpPt)
|
||
|
||
myTaxiData.vTaxiOJ_WarpPtDropoff = GET_TAXI_OJ_DL_VECTORS(TXOJ_POI_CASINO_WARPPT)
|
||
myTaxiData.fTaxiOJ_WarpPtHeadingDropoff = GET_TAXI_OJ_DL_HEADINGS(TXOJ_POI_CASINO_WARPPT)
|
||
|
||
myTaxiData.vTaxiOJ_PassengerGoToPt = << 328.67575, 443.98456, 144.22983 >> //<< 926.2454, 44.1140, 79.8996 >>
|
||
ENDPROC
|
||
|
||
/// PURPOSE: Do all your taxi string table, and anims and whatever we need for taxi oddjobs
|
||
///
|
||
PROC REQUEST_TAXI_ODDJOB_DL_STREAMS_STAGE_01()
|
||
//Load text and UI
|
||
REQUEST_MODEL(mPassengerModel)
|
||
TaxiMidSize.siMovie = REQUEST_MG_MIDSIZED_MESSAGE()
|
||
TAXI_INIT_SHARED_STREAMS()
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Initial Taxi Oddjob Deadline Assets requested.")
|
||
ENDPROC
|
||
|
||
PROC RELEASE_TAXI_ODDJOB_DL_STREAMS_STAGE_01()
|
||
//Load text and UI
|
||
SET_MODEL_AS_NO_LONGER_NEEDED(mPassengerModel)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Initial Taxi Oddjob Deadline 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_DL_STAGE_01_ASSETS_LOADED()
|
||
|
||
IF NOT HAS_MODEL_LOADED(mPassengerModel)
|
||
CDEBUG_MESSAGE_OJ_TAXI_PERIODIC("TAXI_ASSETS_STREAMED - Loading G_M_M_ChiGoon_02",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,"Taxi Deadline Stage 01 Assets Loaded")
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
|
||
|
||
PROC LOCK_CASINO_DOORS_FOR_TAXI_ODDJOB()
|
||
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(PROP_CASINO_DOOR_01L,<< 929.6144, 46.3955, 80.0993 >>,TRUE,1.0, 50.0)
|
||
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(PROP_CASINO_DOOR_01R,<< 928.6238, 44.9848, 80.0993 >>,TRUE,1.0, 50.0)
|
||
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(PROP_CASINO_DOOR_01L,<< 928.1625, 43.7989, 79.8993 >>,TRUE,1.0, 50.0)
|
||
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(PROP_CASINO_DOOR_01R,<< 927.4266, 42.1881, 80.0884 >>,TRUE,1.0, 50.0)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"[AIRLOCK] -------- Casino Doors Have Been Stream Locked")
|
||
ENDPROC
|
||
|
||
|
||
PROC SET_LOCK_STATE_OF_TAXI_ODDJOB_DEADLINE_CASINO_DOORS(BOOL bLockDoors = FALSE)
|
||
IF bLockDoors
|
||
LOCK_CASINO_DOORS_FOR_TAXI_ODDJOB()
|
||
|
||
//Left side casino doors
|
||
SET_STATE_OF_CLOSEST_DOOR_OF_TYPE(PROP_CASINO_DOOR_01L,<< 929.6144, 46.3955, 80.0993 >>,bLockDoors,0)
|
||
SET_STATE_OF_CLOSEST_DOOR_OF_TYPE(PROP_CASINO_DOOR_01R,<< 928.6238, 44.9848, 80.0993 >>,bLockDoors,0)
|
||
|
||
//Right side casino doors
|
||
SET_STATE_OF_CLOSEST_DOOR_OF_TYPE(PROP_CASINO_DOOR_01L,<< 928.1625, 43.7989, 79.8993 >>,bLockDoors,0)
|
||
SET_STATE_OF_CLOSEST_DOOR_OF_TYPE(PROP_CASINO_DOOR_01R,<< 927.4266, 42.1881, 80.0884 >>,bLockDoors,0)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"[AIRLOCK] -------- Casino Doors Have Been Locked")
|
||
|
||
ELSE
|
||
|
||
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(PROP_CASINO_DOOR_01L,<< 929.6144, 46.3955, 80.0993 >>,bLockDoors,0.0, 50.0)
|
||
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(PROP_CASINO_DOOR_01R,<< 928.6238, 44.9848, 80.0993 >>,bLockDoors,0.0, 50.0)
|
||
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(PROP_CASINO_DOOR_01L,<< 928.1625, 43.7989, 79.8993 >>,bLockDoors,0.0, 50.0)
|
||
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(PROP_CASINO_DOOR_01R,<< 927.4266, 42.1881, 80.0884 >>,bLockDoors,0.0, 50.0)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"[AIRLOCK] -------- Casino Doors Have Been UNLocked")
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
|
||
PROC Script_Cleanup()
|
||
#IF IS_DEBUG_BUILD
|
||
IF DOES_WIDGET_GROUP_EXIST(taxiRideWidgets)
|
||
DELETE_WIDGET_GROUP(taxiRideWidgets)
|
||
ENDIF
|
||
|
||
CLEANUP_TAXI_WIDGETS()
|
||
#ENDIF
|
||
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
SET_PED_CONFIG_FLAG(PLAYER_PED_ID(), PCF_DontAllowToBeDraggedOutOfVehicle, FALSE)
|
||
ENDIF
|
||
|
||
RELEASE_TAXI_ODDJOB_DL_STREAMS_STAGE_01()
|
||
|
||
LOCK_CASINO_DOORS_FOR_TAXI_ODDJOB()
|
||
|
||
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 INITIALIZE_SCRIPT_VARIABLES()
|
||
|
||
TAXI_ODDJOB_GLOBAL_SETUP(myTaxiData,TXM_03_DEADLINE)
|
||
|
||
// 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)
|
||
|
||
myTaxiData.fTaxiEnterSpeed = PEDMOVE_RUN
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Current Dialogue line = ", tTaxiOJ_DQ_Data.iCurrentDQLine)
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
#IF DEBUG_iTurnOnAllDXDebug
|
||
ENABLE_ALL_DIALOGUE_DEBUG()
|
||
#ENDIF
|
||
taxiRideWidgets = START_WIDGET_GROUP("Taxi Ride - Deadline")
|
||
|
||
INIT_ODDJOB_TAXI_WIDGETS()
|
||
|
||
ADD_WIDGET_BOOL("Show Deadline Stats", bDebugDrawDL_Stats)
|
||
|
||
STOP_WIDGET_GROUP()
|
||
|
||
INIT_TAXI_WIDGETS(taxiRideWidgets)
|
||
#ENDIF
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"-----~~~~~-------------------------------~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~----")
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"-----~~~~~~~~~~~~~~~~ Oddjobs | Taxi | Deadline ~~~~~~~~~~~~~~~~~~~~----------")
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"-----~~~~~-------------------------------~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~----")
|
||
|
||
ENDPROC
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
PROC PROCESS_WIDGETS()
|
||
|
||
UPDATE_TAXI_WIDGETS(myTaxiData,tTaxiOJ_DQ_Data)
|
||
|
||
IF bDebugDrawDL_Stats
|
||
//SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
|
||
|
||
sDebugString[0] = "Compliments # "
|
||
sDebugString[0] += TAXI_UTILS_GET_STRING_FROM_INT_SP(myTaxiData.iTaxiOJ_NumCompliments)
|
||
DRAW_DEBUG_TEXT_2D(sDebugString[0],<<0.8,0.3,0.0>>)
|
||
|
||
sDebugString[1] = "Disses # "
|
||
sDebugString[1] +=TAXI_UTILS_GET_STRING_FROM_INT_SP(myTaxiData.iTaxiOJ_NumDisses)
|
||
DRAW_DEBUG_TEXT_2D(sDebugString[1],<<0.80,0.32,0.0>>)
|
||
|
||
sDebugString[2] = "Detla C - D= "
|
||
sDebugString[2] +=TAXI_UTILS_GET_STRING_FROM_INT_SP(myTaxiData.iTaxiOJ_NumCompliments - myTaxiData.iTaxiOJ_NumDisses)
|
||
DRAW_DEBUG_TEXT_2D(sDebugString[2],<<0.80,0.34,0.0>>)
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
#ENDIF
|
||
|
||
|
||
PROC TAXI_OJ_DL_SET_TIPS_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)
|
||
|
||
|
||
//Exitement 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)
|
||
|
||
//Start the mission timer here
|
||
TAXI_START_TIMER(myTaxiData, TT_RIDETODEST)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"TAXI_OJ_DL_SET_TIPS_TO_CHECK set tips to check on")
|
||
ENDPROC
|
||
|
||
PROC ADD_TIME_TO_HOUR(TIMEOFDAY & eTimeToAddTo, INT iHour)
|
||
IF ((GET_TIMEOFDAY_HOUR(eTimeToAddTo) + iHour) > 23)
|
||
SET_TIMEOFDAY_HOUR(eTimeToAddTo, (GET_TIMEOFDAY_HOUR(eTimeToAddTo) + iHour) - 24)
|
||
ELSE
|
||
SET_TIMEOFDAY_HOUR(eTimeToAddTo, (GET_TIMEOFDAY_HOUR(eTimeToAddTo) + iHour))
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC ADD_TIME_TO_MINUTE(TIMEOFDAY & eTimeToAddTo, INT iMinute)
|
||
IF (GET_TIMEOFDAY_MINUTE(eTimeToAddTo) + iMinute) > 59
|
||
SET_TIMEOFDAY_MINUTE(eTimeToAddTo, (GET_TIMEOFDAY_MINUTE(eTimeToAddTo) + iMinute) - 60)
|
||
ADD_TIME_TO_HOUR(eTimeToAddTo, 1)
|
||
ELSE
|
||
SET_TIMEOFDAY_MINUTE(eTimeToAddTo, (GET_TIMEOFDAY_MINUTE(eTimeToAddTo) + iMinute))
|
||
ENDIF
|
||
ENDPROC
|
||
//Tweak deadline time here.
|
||
//B*1311118 - adding 10 secs
|
||
FUNC TIMEOFDAY GET_TAXI_DEADLINE_TIMEOFDAY()
|
||
|
||
TIMEOFDAY eCurrentTime
|
||
eCurrentTime = GET_CURRENT_TIMEOFDAY()
|
||
|
||
ADD_TIME_TO_HOUR(eCurrentTime, 3) //2)
|
||
ADD_TIME_TO_MINUTE(eCurrentTime, CONST_iTaxi_DeadlineMinutes)
|
||
|
||
RETURN eCurrentTime
|
||
ENDFUNC
|
||
|
||
FUNC TEXT_LABEL_7 GET_TAXI_HOURS_MINUTES_STRING(TIMEOFDAY eCurrentTime)
|
||
|
||
TEXT_LABEL_7 sTimeToPrint
|
||
TEXT_LABEL_3 sTimeHours
|
||
TEXT_LABEL_3 sTimeMinutes
|
||
|
||
sTimeHours = CONVERT_INT_TO_STRING(GET_TIMEOFDAY_HOUR(eCurrentTime))
|
||
sTimeToPrint += sTimeHours
|
||
|
||
sTimeToPrint += ":"
|
||
|
||
IF GET_TIMEOFDAY_MINUTE(eCurrentTime) < 10
|
||
sTimeToPrint += "0"
|
||
ENDIF
|
||
|
||
sTimeMinutes = CONVERT_INT_TO_STRING(GET_TIMEOFDAY_MINUTE(eCurrentTime))
|
||
sTimeToPrint += sTimeMinutes
|
||
|
||
RETURN sTimeToPrint
|
||
|
||
ENDFUNC
|
||
|
||
BOOL bTaxiTimeUp
|
||
BOOL bTaxi10SecWarning
|
||
BOOL bTaxiStopWarning
|
||
INT iTaxiBeepTimeStamp
|
||
|
||
//Displays the clock in the bottom right hand side of the screen and plays warning audio during last 10 seconds
|
||
PROC DRAW_DEADLINE_CLOCK()
|
||
|
||
// iCurrentGameTimeInMilliseconds = GET_TIMEOFDAY_MINUTE(GET_CURRENT_TIMEOFDAY())*1000
|
||
// iCurrentGameTimeInMilliseconds += GET_TIMEOFDAY_HOUR(GET_CURRENT_TIMEOFDAY())*1000 * 60
|
||
//
|
||
// IF iCurrentGameTimeInMilliseconds > 719999 // IF the time is more than 11:59(am)
|
||
// IF iCurrentGameTimeInMilliseconds > 779999 // IF the time is more than 12.59(pm)
|
||
// DRAW_GENERIC_TIMER(iCurrentGameTimeInMilliseconds - 720000, "TIMER_TIME", 0, TIMER_STYLE_CLOCKPM) // show evrything from 13:00 to 23:59 - 12:00 = as 01:00(pm) to 11:59(pm)
|
||
// ELSE // IF the time is more than 11:59(am) but less than 12.59(pm)
|
||
// DRAW_GENERIC_TIMER(iCurrentGameTimeInMilliseconds, "TIMER_TIME", 0, TIMER_STYLE_CLOCKPM) // show as 24-hour clock (normal)
|
||
// ENDIF
|
||
// ELSE // ELSE the time is less than 12:00(pm)
|
||
// IF iCurrentGameTimeInMilliseconds < 60000 // IF the time is less than 01:00(am)
|
||
// DRAW_GENERIC_TIMER(iCurrentGameTimeInMilliseconds + 720000, "TIMER_TIME", 0, TIMER_STYLE_CLOCKAM) // show evrything from 00:00(am) to 00:59(am) + 12:00(am) = as 12:00(am) to 12.59
|
||
// ELSE // IF the time is less than 12:00(pm) but more than 01.00(am)
|
||
// DRAW_GENERIC_TIMER(iCurrentGameTimeInMilliseconds, "TIMER_TIME", 0, TIMER_STYLE_CLOCKAM) // show as 24-hour clock (normal)
|
||
// ENDIF
|
||
// ENDIF
|
||
// DRAW_GENERIC_TIMER((iTimeLimitHour *1000 *60 - GET_TIMEOFDAY_HOUR(GET_CURRENT_TIMEOFDAY())*1000 * 60)
|
||
// + (iTimeLimitMin *1000 - GET_TIMEOFDAY_MINUTE(GET_CURRENT_TIMEOFDAY())*1000), "TIMER_TIME")
|
||
|
||
INT iTimer = ROUND((fTimeLimit - GET_TIMER_IN_SECONDS_SAFE(DeadlineTimer))* 1000.0)
|
||
|
||
IF iTimer < 0
|
||
iTimer = 0
|
||
bTaxiTimeUp = TRUE
|
||
IF NOT bTaxiStopWarning
|
||
PLAY_SOUND_FRONTEND(-1, "TIMER_STOP", "HUD_MINI_GAME_SOUNDSET")
|
||
bTaxiStopWarning = TRUE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
DRAW_GENERIC_TIMER(iTimer, "TIM_TIMER")
|
||
|
||
IF NOT bTaxiTimeUp
|
||
|
||
IF NOT bTaxi10SecWarning
|
||
FLOAT fTimer = GET_TIMER_IN_SECONDS(DeadlineTimer)
|
||
IF (fTimeLimit - fTimer) < 1.0
|
||
OR (fTimeLimit - fTimer) < 1.5
|
||
OR (fTimeLimit - fTimer) < 2.0
|
||
OR (fTimeLimit - fTimer) < 2.5
|
||
OR (fTimeLimit - fTimer) < 3.0
|
||
OR (fTimeLimit - fTimer) < 3.5
|
||
OR (fTimeLimit - fTimer) < 4.0
|
||
OR (fTimeLimit - fTimer) < 4.5
|
||
OR (fTimeLimit - fTimer) < 5.0
|
||
OR (fTimeLimit - fTimer) < 6.0
|
||
OR (fTimeLimit - fTimer) < 7.0
|
||
OR (fTimeLimit - fTimer) < 8.0
|
||
OR (fTimeLimit - fTimer) < 9.0
|
||
OR (fTimeLimit - fTimer) < 10.0
|
||
OR (fTimeLimit - fTimer) < 11.0
|
||
PLAY_SOUND_FRONTEND(-1, "10_SEC_WARNING", "HUD_MINI_GAME_SOUNDSET")
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"playing beep now")
|
||
bTaxi10SecWarning = TRUE
|
||
iTaxiBeepTimeStamp = GET_GAME_TIMER()
|
||
ENDIF
|
||
ELSE
|
||
FLOAT fTimer = GET_TIMER_IN_SECONDS(DeadlineTimer)
|
||
IF ((fTimeLimit - fTimer) < 5.5 AND GET_GAME_TIMER() - iTaxiBeepTimeStamp > 500)
|
||
OR ((fTimeLimit - fTimer) < 11.0 AND GET_GAME_TIMER() - iTaxiBeepTimeStamp > 1000)
|
||
bTaxi10SecWarning = FALSE
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
|
||
|
||
FUNC FLOAT GET_DYNAMIC_STOPPING_DISTANCE_FOR_TAXI()
|
||
FLOAT fCurrentPlayerSpeed
|
||
|
||
fCurrentPlayerSpeed = GET_ENTITY_SPEED(myTaxiData.viTaxi)
|
||
|
||
IF fCurrentPlayerSpeed >= 10
|
||
RETURN fCurrentPlayerSpeed * 0.5
|
||
ENDIF
|
||
|
||
RETURN 5.0
|
||
ENDFUNC
|
||
|
||
FUNC FLOAT EVALUATE_TAXI_OJ_DEADLINE_BEST_ETA()
|
||
|
||
FLOAT fRetVal
|
||
FLOAT fVehMaxSpeed
|
||
FLOAT fDistLeft
|
||
|
||
fDistLeft = GET_PLAYER_DISTANCE_FROM_LOCATION(myTaxiData.vTaxiOJDropoff, FALSE)
|
||
|
||
IF DOES_ENTITY_EXIST(myTaxiData.viTaxi)
|
||
fVehMaxSpeed = GET_VEHICLE_ESTIMATED_MAX_SPEED(myTaxiData.viTaxi)
|
||
fVehMaxSpeed = fVehMaxSpeed * 0.65
|
||
ENDIF
|
||
fRetVal = fDistLeft/fVehMaxSpeed
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"EVALUATE_TAXI_OJ_DEADLINE_BEST_ETA: ETA = ", fRetVal)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"EVALUATE_TAXI_OJ_DEADLINE_BEST_ETA: fDistLeft = ", fDistLeft)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"EVALUATE_TAXI_OJ_DEADLINE_BEST_ETA: fVehMaxSpeed = ", fVehMaxSpeed)
|
||
RETURN fRetVal
|
||
ENDFUNC
|
||
|
||
FUNC BOOL CAN_TAXI_OJ_DEADLINE_TAXI_GET_TO_DESTINATION_IN_TIME()
|
||
|
||
FLOAT fTimeLeft
|
||
|
||
fTimeLeft = fTimeLimit - GET_TIMER_IN_SECONDS_SAFE(DeadlineTimer)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"CAN_TAXI_OJ_DEADLINE_TAXI_GET_TO_DESTINATION_IN_TIME: Goal Time = ", fTimeLeft)
|
||
RETURN (fTimeLeft > EVALUATE_TAXI_OJ_DEADLINE_BEST_ETA())
|
||
ENDFUNC
|
||
|
||
INT iFeedBackIterator
|
||
INT iPosLines
|
||
INT iNegLines
|
||
BOOL bFirstFeedBackLineSaid
|
||
CONST_FLOAT TAXI_OJ_DELTA_TIME 6.0
|
||
CONST_FLOAT TAXI_OJ_FEEDBACK_WAIT_TIME 20.0
|
||
|
||
FUNC BOOL EVALUATE_NEW_TIME(TAXI_DIALOGUE_INDEX tdPositiveLine, TAXI_DIALOGUE_INDEX tdNegativeLine, FLOAT fGoodTime)
|
||
IF IS_TAXI_TIMER_STARTED(myTaxiData, TT_RIDETODEST)
|
||
// CDEBUG1LN(DEBUG_OJ_TAXI,"YP fTimeToCheckDistanceLeft[X] = ", GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_RIDETODEST))
|
||
// CDEBUG1LN(DEBUG_OJ_TAXI,"YP fExpectedDistanceLeft[X] = ", GET_PLAYER_DISTANCE_FROM_LOCATION(myTaxiData.vTaxiOJDropoff, FALSE))
|
||
// CDEBUG1LN(DEBUG_OJ_TAXI,"")
|
||
IF iFeedBackIterator < NUM_TIME_DISTANCE_SAMPLES
|
||
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
||
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_RIDETODEST) <= fTimeToCheckDistanceLeft[iFeedBackIterator] + TAXI_OJ_DELTA_TIME
|
||
AND GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_RIDETODEST) >= fTimeToCheckDistanceLeft[iFeedBackIterator] - TAXI_OJ_DELTA_TIME
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"EVALUATE_NEW_TIME: Current Time = ", GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_RIDETODEST), " fTimeToCheckDistanceLeft[", iFeedBackIterator,"] = ", fTimeToCheckDistanceLeft[iFeedBackIterator])
|
||
IF GET_PLAYER_DISTANCE_FROM_LOCATION(myTaxiData.vTaxiOJDropoff, FALSE) <= fExpectedDistanceLeft[iFeedBackIterator]
|
||
AND iPosLines < NUM_POS_LINES
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"EVALUATE_NEW_TIME: + Line Curr Dist = ",GET_PLAYER_DISTANCE_FROM_LOCATION(myTaxiData.vTaxiOJDropoff, FALSE), " fExpectedDistanceLeft[", iFeedBackIterator,"] = ", fExpectedDistanceLeft[iFeedBackIterator])
|
||
|
||
IF NOT bFirstFeedBackLineSaid
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"EVALUATE_NEW_TIME: - + FIRST Line")
|
||
iFeedBackIterator++
|
||
iPosLines++
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,tdPositiveLine,TRUE)
|
||
|
||
RESTART_TIMER_NOW(localBanterDelay)
|
||
bFirstFeedBackLineSaid = TRUE
|
||
ENDIF
|
||
|
||
IF IS_TIMER_STARTED(localBanterDelay)
|
||
IF GET_TIMER_IN_SECONDS(localBanterDelay) > TAXI_OJ_FEEDBACK_WAIT_TIME
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"EVALUATE_NEW_TIME: + Line")
|
||
iFeedBackIterator++
|
||
iPosLines++
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,tdPositiveLine,TRUE)
|
||
|
||
CANCEL_TIMER(localBanterDelay)
|
||
RESTART_TIMER_NOW(localBanterDelay)
|
||
ENDIF
|
||
ENDIF
|
||
RETURN TRUE
|
||
ELIF GET_PLAYER_DISTANCE_FROM_LOCATION(myTaxiData.vTaxiOJDropoff, FALSE) > fExpectedDistanceLeft[iFeedBackIterator]
|
||
AND iNegLines < NUM_NEG_LINES
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"EVALUATE_NEW_TIME: - Line Curr Dist = ",GET_PLAYER_DISTANCE_FROM_LOCATION(myTaxiData.vTaxiOJDropoff, FALSE), " fExpectedDistanceLeft[", iFeedBackIterator,"] = ", fExpectedDistanceLeft[iFeedBackIterator])
|
||
|
||
IF NOT bFirstFeedBackLineSaid
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"EVALUATE_NEW_TIME: FIRST - Line")
|
||
iFeedBackIterator++
|
||
iNegLines++
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,tdNegativeLine,TRUE)
|
||
|
||
RESTART_TIMER_NOW(localBanterDelay)
|
||
bFirstFeedBackLineSaid = TRUE
|
||
ENDIF
|
||
|
||
IF IS_TIMER_STARTED(localBanterDelay)
|
||
IF GET_TIMER_IN_SECONDS(localBanterDelay) > TAXI_OJ_FEEDBACK_WAIT_TIME
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"EVALUATE_NEW_TIME: - Line")
|
||
iFeedBackIterator++
|
||
iNegLines++
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,tdNegativeLine,TRUE)
|
||
|
||
CANCEL_TIMER(localBanterDelay)
|
||
RESTART_TIMER_NOW(localBanterDelay)
|
||
ENDIF
|
||
ENDIF
|
||
RETURN TRUE
|
||
ENDIF
|
||
ELIF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_RIDETODEST) > fTimeToCheckDistanceLeft[iFeedBackIterator] + TAXI_OJ_DELTA_TIME
|
||
iFeedBackIterator++
|
||
RETURN TRUE
|
||
ENDIF
|
||
ENDIF
|
||
ELSE // all distance iterations have been checked, player should be getting there or else just say bad lines
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_RIDETODEST) >= fGoodTime
|
||
AND GET_PLAYER_DISTANCE_FROM_LOCATION(myTaxiData.vTaxiOJDropoff, FALSE) > 50
|
||
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
||
IF NOT IS_TIMER_STARTED(endBanterDelay)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"starting end banter delay")
|
||
RESTART_TIMER_NOW(endBanterDelay)
|
||
ELIF GET_TIMER_IN_SECONDS(endBanterDelay) > 4.0
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"EVALUATE_NEW_TIME: - Line 3")
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,tdNegativeLine,TRUE)
|
||
ENDIF
|
||
ELSE
|
||
IF IS_TIMER_STARTED(endBanterDelay)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"canceling end banter delay")
|
||
CANCEL_TIMER(endBanterDelay)
|
||
ENDIF
|
||
ENDIF
|
||
RETURN TRUE
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
//TODO none of these values have been tweaked yet.
|
||
PROC UPDATE_PROGRESS()
|
||
|
||
IF (ROUND(GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_RIDETODEST)*1000) % 10000) < 50
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"########################### DEADLINE CHECK")
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Time driving passenger = ", GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_RIDETODEST))
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Current Mileage = ", myTaxiData.fTaxiOJ_CurrentMileage)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Distance from Destination = ", GET_ENTITY_DISTANCE_FROM_LOCATION(myTaxiData.viTaxi,myTaxiData.vTaxiOJDropoff))
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"########################### DEADLINE CHECK")
|
||
ENDIF
|
||
|
||
IF NOT EVALUATE_OVERALL_TIME(myTaxiData, TAXI_DI_TIME_BAD, fDeadlineGoals[TXDL_OVERALL_GOAL_TIME])
|
||
SWITCH iRideProgress
|
||
//Init Good Time Vals for Debug Info
|
||
CASE 0
|
||
SETUP_TAXI_OJ_DEADLINE_GOALS()
|
||
myTaxiData.fTaxiOJ_TimeGood = fDeadlineGoals[TXDL_TIME_GOOD_1]
|
||
myTaxiData.fTaxiOJ_DistanceGood = fDeadlineGoals[TXDL_DIST_GOOD_1]
|
||
iRideProgress++
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Progress Taxi State = 1")
|
||
|
||
BREAK
|
||
|
||
CASE 1
|
||
EVALUATE_NEW_TIME(TAXI_DI_TIME_FAST, TAXI_DI_TIME_BAD, myTaxiData.fTaxiOJ_TimeGood)
|
||
BREAK
|
||
ENDSWITCH
|
||
|
||
ENDIF
|
||
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_DL_LINES()
|
||
//Trigger lines
|
||
SET_TAXI_OJ_INTERRUPT_TIMER_OFF(myTaxiData)
|
||
|
||
IF IS_BANTER_SAFE_TO_PLAY(myTaxiData,tTaxiOJ_DQ_Data)
|
||
|
||
SWITCH tTaxiOJ_DQ_Data.iCurrentDQLine
|
||
|
||
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_DL_DO")
|
||
OR DOES_BLIP_EXIST(myTaxiData.blipTaxiDropOff)
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"--------------------------[Taxi Oddjob Objective] GO TO CASINO 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 CASINO 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
|
||
//
|
||
// ENDIF
|
||
// BREAK
|
||
|
||
CASE 1 //2
|
||
IF GET_TAXI_SPEECH_INDEX(myTaxiData) > TAXI_OBJ_GIVE_MAIN
|
||
AND GET_TAXI_SPEECH_INDEX(myTaxiData) <> TAXI_DI_BANTER_2
|
||
SET_BITMASK_AS_ENUM(myTaxiData.iTaxiOJ_BitsDialogue,TAXI_DXF_BANTER)
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_BANTER_2,TRUE)
|
||
IF g_bDebug
|
||
SCRIPT_ASSERT("Triggering Banter 2")
|
||
ENDIF
|
||
|
||
ENDIF
|
||
BREAK
|
||
|
||
|
||
CASE 2 //3
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_DQUEUE) > GET_RANDOM_FLOAT_IN_RANGE(8.0,14.0)
|
||
//Set Radio Station Check
|
||
IF NOT GET_TAXI_RADIO_CHECK_FLAG(myTaxiData)
|
||
TAXI_RADIO_STATION_TURN_ON(myTaxiData)
|
||
tTaxiOJ_DQ_Data.iCurrentDQLine++
|
||
IF g_bDebug
|
||
SCRIPT_ASSERT("The Taxi Radio Should Be Updating")
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
ENDSWITCH
|
||
ENDIF
|
||
|
||
PROCESS_IMPORTANT_DIALOGUE_Q(myTaxiData,tDialogueLine, tTaxiOJ_DQ_Data, g_bDebug)
|
||
|
||
ENDPROC
|
||
/*
|
||
|
||
oooo oooo o ooooo oooo oooo
|
||
8888o 888 888 888 8888o 88
|
||
88 888o8 88 8 88 888 88 888o88
|
||
88 888 88 8oooo88 888 88 8888
|
||
o88o 8 o88o o88o o888o o888o o88o 88
|
||
|
||
*/
|
||
|
||
PROC Main_Taxi_OJ_Deadline()
|
||
|
||
//Handles Fail Or No Taxi-------------------------------------------------------------------------------
|
||
IF IS_TAXI_JOB_IN_FAIL_STATE(myTaxiData)
|
||
TAXI_OJ_CLEAR_ALL_BLIPS(myTaxiData)
|
||
|
||
IF myTaxiData.tTaxiOJ_RideState > TRS_INIT_STREAM
|
||
IF TAXI_HANDLE_FAIL(myTaxiData)
|
||
Script_Failed()
|
||
ENDIF
|
||
ELSE
|
||
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_CLEANUP) > 5.0
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"Fail During State: "," ", myTaxiData.sTaxiOJ_RideState, " ", myTaxiData.sTaxiOJ_Reason4Fail)
|
||
SET_PROPERTY_MANAGEMENT_RESULT(PROPERTY_MANAGEMENT_RESULT_FAILURE)
|
||
Script_Cleanup()
|
||
ENDIF
|
||
|
||
ENDIF
|
||
|
||
//Proceed
|
||
ELSE
|
||
//Run Throughtout the Entire Mission--------------------------------------------------------------
|
||
TAXI_OJ_MAINTAIN_GLOBAL_GATES(myTaxiData)
|
||
|
||
RUN_GLOBAL_TAXI_UPDATES(myTaxiData,aggroArgs)
|
||
|
||
UPDATE_PROGRESS()
|
||
|
||
UPDATE_TAXI_OJ_TIP(myTaxiData,iTipIndex)
|
||
|
||
PROCESS_TAXI_EXCEPTIONS(myTaxiData)
|
||
|
||
|
||
//Track Driver progress
|
||
IF myTaxiData.tTaxiOJ_RideState = TRS_DRIVING_PASSENGER
|
||
//TAXI_DL_MONITOR_PASSENGER_HAPPINESS_AND_TIPS()
|
||
TAXI_ODDJOB_HANDLE_TAXI_BLIPPING(myTaxiData)
|
||
HANDLE_TAXI_EXCITEMENT(myTaxiData,FALSE,TRUE)
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
ELIF bDebugTurnOnFreeRide
|
||
HANDLE_TAXI_EXCITEMENT(myTaxiData,TRUE,TRUE)
|
||
#ENDIF
|
||
ENDIF
|
||
|
||
//Dialogue & Objectives
|
||
IF myTaxiData.tTaxiOJ_RideState > TRS_FINDING_LOCATION
|
||
IF NOT IS_TAXI_EMERGENCY_FAIL_SET(myTaxiData)
|
||
TRIGGER_TAXI_QUEUE_DL_LINES()
|
||
ELSE
|
||
TAXI_SET_FAIL(myTaxiData,"Taxi Not Driveable",GET_TAXI_EMERGENCY_FAIL_STRING(myTaxiData))
|
||
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_DL_STREAMS_STAGE_01()
|
||
|
||
TAXI_RESET_TIMERS(myTaxiData, TT_DIALOGUE,TAXI_DX_DELAY)
|
||
|
||
TAXI_SPAWN_PASSENGER(myTaxiData, GET_TAXI_OJ_DL_VECTORS(eSpawnPt), GET_TAXI_OJ_DL_VECTORS(ePickupPt), "TaxiKwak",mPassengerModel,180.6)
|
||
|
||
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_DL_STAGE_01_ASSETS_LOADED()
|
||
|
||
INIT_ALL_TAXI_EXCITEMENT_VALUES()
|
||
|
||
//Init Bonus----------------------------------------
|
||
TAXI_INITIALIZE_BONUS_FIELD(bonusFieldDeadline[TDL_BONUS_SPEEDDEMON], "TAXI_SC_BN_03", TAXI_CONST_BONUS_CASH_SPEED_DEMON) //Completed quickly
|
||
|
||
//Init Finalized
|
||
TAXI_INITIALIZE_BONUS_INFO(myTaxiData, bonusFieldDeadline)
|
||
|
||
//SET_LOCK_STATE_OF_TAXI_ODDJOB_DEADLINE_CASINO_DOORS(TRUE)
|
||
|
||
//Setting Pickup Pt
|
||
myTaxiData.vTaxiOJPickup = GET_TAXI_OJ_DL_VECTORS(eSpawnPt)
|
||
|
||
//SET REACT BITS
|
||
INITIALIZE_GENERIC_TAXI_EXCEPTIONS()
|
||
|
||
CLEAR_ALL_TAXI_PASSENGER_REACT_BITS(myTaxiData)
|
||
|
||
//Move on to the next stage
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_SPAWNING)
|
||
ENDIF
|
||
|
||
BREAK
|
||
|
||
//Creates the passenger and sets objective to "PICKUP PASSENGER"---------------------------------------
|
||
CASE TRS_SPAWNING
|
||
IF PROPERTY_VIP_INIT_READY(myTaxiData)
|
||
IF NOT IS_ENTITY_DEAD(myTaxiData.piTaxiPassenger)
|
||
|
||
SET_PED_COMPONENT_VARIATION(myTaxiData.piTaxiPassenger, INT_TO_ENUM(PED_COMPONENT,0), 0, 0, 0) //(head)
|
||
SET_PED_COMPONENT_VARIATION(myTaxiData.piTaxiPassenger, INT_TO_ENUM(PED_COMPONENT,2), 1, 0, 0) //(hair)
|
||
SET_PED_COMPONENT_VARIATION(myTaxiData.piTaxiPassenger, INT_TO_ENUM(PED_COMPONENT,3), 1, 0, 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), 1, 1, 0) //(accs)
|
||
|
||
// SET_PED_COMPONENT_VARIATION(myTaxiData.piTaxiPassenger, PED_COMP_TORSO, 0, 0)
|
||
// SET_PED_COMPONENT_VARIATION(myTaxiData.piTaxiPassenger, PED_COMP_LEG, 0,2)
|
||
// SET_PED_COMPONENT_VARIATION(myTaxiData.piTaxiPassenger, PED_COMP_HEAD, 0,0)
|
||
ENDIF
|
||
|
||
//Give player obj to go pickup Passenger
|
||
ENABLE_TAXI_SPEECH(myTaxiData)
|
||
|
||
//Move on to the next stage
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_MANAGE_PICKUP)
|
||
|
||
ENDIF
|
||
BREAK
|
||
|
||
//Waits for passenger to head to cab
|
||
CASE TRS_MANAGE_PICKUP
|
||
IF TAXI_HANDLE_IV_PICKUP_NO_METER(myTaxiData)
|
||
//Move on to the next stage
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_WAIT_PARK)
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE TRS_WAIT_PARK
|
||
IF IS_PASSENGER_ENTERING_TAXI(myTaxiData)
|
||
|
||
myTaxiData.vTaxiOJDropoff = vNewDLDropoff //GET_TAXI_OJ_DL_VECTORS(TXOJ_POI_CASINO)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"@@@@@@@@@@ TIME Picked up. Time hour = ", GET_TIMEOFDAY_HOUR(GET_CURRENT_TIMEOFDAY()), " Timer minutes = ", GET_TIMEOFDAY_MINUTE(GET_CURRENT_TIMEOFDAY()))
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"@@@@@@@@@@ TIME Picked up. Time = ", Get_String_From_TIMEOFDAY(GET_CURRENT_TIMEOFDAY()))
|
||
|
||
eDeadline = GET_TAXI_DEADLINE_TIMEOFDAY()
|
||
|
||
sDeadlineTime = GET_TAXI_HOURS_MINUTES_STRING(eDeadline)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"@@@@@@@@@@ Deadline = ", Get_String_From_TIMEOFDAY(eDeadline))
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"@@@@@@@@@@ Deadline string = ", sDeadlineTime)
|
||
|
||
myTaxiData.sFastTime = sDeadlineTime
|
||
|
||
//iTimeLimitHour = GET_TIMEOFDAY_HOUR(eDeadline)
|
||
//iTimeLimitMin = GET_TIMEOFDAY_MINUTE(eDeadline)
|
||
|
||
fTimeLimit = 210//165.0
|
||
START_TIMER_NOW(DeadlineTimer)
|
||
|
||
//Greet the player
|
||
SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_GREET,TRUE)
|
||
//SET_NEXT_TAXI_SPEECH(myTaxiData,TAXI_DI_OBJ,TRUE)
|
||
|
||
//CleanUp Pickup Lock & POI
|
||
CLEANUP_TAXI_PICKUP_STOP(myTaxiData)
|
||
|
||
//Set all tip checks on
|
||
TAXI_OJ_DL_SET_TIPS_AND_EXCITEMENT_TO_CHECK()
|
||
|
||
//Move on to the next stage
|
||
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_MANAGE_PICKUP)
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
|
||
//Handles the driving, waits for you to reach the destination, than selects one of 3 exit scenearios
|
||
//1. Regular Pay & Thank
|
||
//2. Forgot something in the backseat
|
||
//3. Run out and try to stiff the player
|
||
/* 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
|
||
*/
|
||
CASE TRS_DRIVING_PASSENGER
|
||
|
||
DRAW_DEADLINE_CLOCK()
|
||
|
||
IF GET_TIMER_IN_SECONDS_SAFE(DeadlineTimer) > fTimeLimit + DEADLINE_FAIL_LEEWAY
|
||
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
||
TAXI_SET_FAIL(myTaxiData, "Player did not hit the deadline", TFS_TAXI_STOPPED)
|
||
ELSE
|
||
KILL_ANY_CONVERSATION()
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF TAXI_HANDLE_DRIVING(myTaxiData,/*tTaxiOJ_DQ_Data, */GET_DYNAMIC_STOPPING_DISTANCE_FOR_TAXI(), 7, 30) //12,60)
|
||
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
||
|
||
CLOSE_DIALOGUE_QUEUE(tTaxiOJ_DQ_Data,CONST_TAXI_OJ_LINE_NUM_TO_CLOSE_DIALOGUE_Q,TRUE)
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"dead line timer = ", GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_RIDETODEST))
|
||
|
||
//Remove destination blip
|
||
REMOVE_BLIP(myTaxiData.blipTaxiDropOff)
|
||
|
||
//Ludicrous Speed Bonus
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_RIDETODEST) < fDeadlineGoals[TXDL_TIME_GOOD_3]//TAXI_CONST_BONUS_TIME_SPEED_DEMON
|
||
OR myTaxiData.iTaxiOJ_CashTip >= myTaxiData.iTaxiOJ_CashTipAmazing
|
||
TAXI_SET_BONUS_AWARD(myTaxiData,ENUM_TO_INT(TDL_BONUS_SPEEDDEMON))
|
||
|
||
ENDIF
|
||
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"##### TT_RIDETODEST = ", GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_RIDETODEST))
|
||
CDEBUG1LN(DEBUG_OJ_TAXI,"##### TIME dropped off. Time hour = ", GET_TIMEOFDAY_HOUR(GET_CURRENT_TIMEOFDAY()), " Timer minutes = ", GET_TIMEOFDAY_MINUTE(GET_CURRENT_TIMEOFDAY()))
|
||
|
||
IF GET_TIMER_IN_SECONDS_SAFE(DeadlineTimer) > 210
|
||
myTaxiData.iTaxiOJ_CashTip = 0
|
||
ENDIF
|
||
|
||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$CASH
|
||
SET_TAXI_FARE_OFF_MILEAGE(myTaxiData)
|
||
TAXI_OJ_RATE_OVERALL_TIP_LEVEL(myTaxiData)
|
||
CONVERT_TAXI_TIP_TO_CASH(myTaxiData)
|
||
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
SET_PED_CONFIG_FLAG(PLAYER_PED_ID(), PCF_DontAllowToBeDraggedOutOfVehicle, TRUE)
|
||
ENDIF
|
||
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_REGULAR_PAYMENT)
|
||
|
||
ELSE
|
||
KILL_ANY_CONVERSATION()
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
|
||
//Regular Payment
|
||
CASE TRS_REGULAR_PAYMENT
|
||
IF HAS_TAXI_OJ_PASSENGER_BEEN_DROPPED_OFF(myTaxiData, TRUE)//FALSE)
|
||
|
||
SET_LOCK_STATE_OF_TAXI_ODDJOB_DEADLINE_CASINO_DOORS(FALSE)
|
||
|
||
IF NOT IS_ENTITY_DEAD(myTaxiData.piTaxiPassenger)
|
||
IF ARE_VECTORS_EQUAL(NULL_VECTOR(),myTaxiData.vTaxiOJ_PassengerGoToPt)
|
||
SET_ENTITY_HEADING(myTaxiData.piTaxiPassenger, 84.9058)
|
||
SET_PED_KEEP_TASK(myTaxiData.piTaxiPassenger, TRUE)
|
||
ELSE
|
||
CLEAR_SEQUENCE_TASK(siTemp)
|
||
OPEN_SEQUENCE_TASK(siTemp)
|
||
TASK_LEAVE_ANY_VEHICLE(NULL)
|
||
TASK_CLEAR_LOOK_AT(NULL)
|
||
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL,myTaxiData.vTaxiOJ_PassengerGoToPt,PEDMOVEBLENDRATIO_RUN)
|
||
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, << 322.1072, 442.4288, 140.6772 >>, PEDMOVEBLENDRATIO_RUN)//<< 935.9512, 36.1616, 79.8993 >>, PEDMOVEBLENDRATIO_RUN)
|
||
TASK_START_SCENARIO_IN_PLACE(NULL, "WORLD_HUMAN_STAND_MOBILE")
|
||
CLOSE_SEQUENCE_TASK(siTemp)
|
||
TASK_PERFORM_SEQUENCE(myTaxiData.piTaxiPassenger, siTemp)
|
||
|
||
SET_PED_KEEP_TASK(myTaxiData.piTaxiPassenger,TRUE)
|
||
ENDIF
|
||
|
||
ENDIF
|
||
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_SCORECARD_GRADE)
|
||
|
||
ENDIF
|
||
|
||
BREAK
|
||
|
||
//Pop up the scorecard
|
||
CASE TRS_SCORECARD_GRADE
|
||
IF TAXI_CALC_SCORECARD(myTaxiData,TaxiMidSize)
|
||
// IF GET_ENTITY_DISTANCE_FROM_LOCATION(myTaxiData.piTaxiPassenger, << 931.7672, 40.1704, 79.8993 >>) < 3.0 //<< 935.3044, 37.0121, 79.8993 >>) < 3.0
|
||
// OR GET_SEQUENCE_PROGRESS(myTaxiData.piTaxiPassenger) > 3
|
||
// OR GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_GENERIC) > 5
|
||
#IF IS_DEBUG_BUILD
|
||
OR bDebugSucceed
|
||
#ENDIF
|
||
|
||
//In the off chance the player might get himself locked inside, just don't lock the doors.
|
||
// IF GET_PLAYER_DISTANCE_FROM_LOCATION(<< 931.7672, 40.1704, 79.8993 >>) > 5.0
|
||
// //SET_LOCK_STATE_OF_TAXI_ODDJOB_DEADLINE_CASINO_DOORS(TRUE)
|
||
// ENDIF
|
||
|
||
TAXI_MISSION_END(TRUE,myTaxiData)
|
||
//Move on to the next stage
|
||
TAXI_JOB_SET_NEXT_STATE(myTaxiData,TRS_CLEANUP)
|
||
// ENDIF
|
||
ENDIF
|
||
|
||
BREAK
|
||
|
||
CASE TRS_CLEANUP
|
||
Script_Cleanup()
|
||
BREAK
|
||
|
||
ENDSWITCH
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
SCRIPT
|
||
|
||
// 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
|
||
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J))
|
||
IF myTaxiData.tTaxiOJ_RideState = TRS_DRIVING_PASSENGER
|
||
//If you J Skip, check the timer and add some tip
|
||
IF GET_TAXI_TIMER_IN_SECONDS(myTaxiData, TT_RIDETODEST) < fDeadlineGoals[TXDL_TIME_GOOD_3]// TAXI_CONST_BONUS_TIME_SPEED_DEMON
|
||
SET_TAXI_TIP_TO_AMAZING(myTaxiData)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
PROCESS_TAXI_DEBUG_SKIP(myTaxiData,tDebugState)
|
||
|
||
// Debug Key: Check for Pass (not for Minigmes)
|
||
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S))
|
||
bDebugSucceed = TRUE
|
||
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, 0.0)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF myTaxiData.tTaxiOJ_RideState > TRS_FINDING_LOCATION
|
||
PROCESS_WIDGETS()
|
||
ENDIF
|
||
#ENDIF
|
||
//END DEBUG----------------------------------------------------
|
||
|
||
IF DOES_ENTITY_EXIST(myTaxiData.piTaxiPlayer)
|
||
Main_Taxi_OJ_Deadline()
|
||
ELSE
|
||
REASSIGN_TAXI_OJ_DRIVER(myTaxiData)
|
||
ENDIF
|
||
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
//Test stuff
|
||
|
||
// Script should never reach here. Always terminate with cleanup function.
|
||
ENDSCRIPT
|