4078 lines
152 KiB
Scheme
Executable File
4078 lines
152 KiB
Scheme
Executable File
USING "globals.sch"
|
|
USING "flow_mission_data_public.sch"
|
|
USING "blip_control_public.sch"
|
|
USING "mission_control_public.sch"
|
|
USING "cellphone_public.sch"
|
|
USING "code_control_public.sch"
|
|
USING "comms_control_public.sch"
|
|
USING "properties_locations.sch"
|
|
USING "properties_events.sch"
|
|
USING "properties_cutscenes.sch"
|
|
USING "flow_public_game.sch"
|
|
USING "shop_private.sch"
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
USING "randomChar_Public.sch"
|
|
#endif
|
|
#endif
|
|
|
|
CONST_FLOAT LONG_RANGE_PURCHASE_DISTANCE 150.0
|
|
CONST_FLOAT LONG_RANGE_PURCHASE_DISTANCE_SQUARED 22500.0
|
|
|
|
|
|
|
|
// get the blip enum for a property
|
|
FUNC STATIC_BLIP_NAME_ENUM GET_BLIP_ENUM_FOR_PROPERTY(PROPERTY_ENUM thisProperty)
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_TOWING_IMPOUND
|
|
RETURN STATIC_BLIP_AMBIENT_PROPERTY_TOWING_IMPOUND
|
|
BREAK
|
|
CASE PROPERTY_TAXI_LOT
|
|
RETURN STATIC_BLIP_AMBIENT_PROPERTY_TAXI_LOT
|
|
BREAK
|
|
CASE PROPERTY_ARMS_TRAFFICKING
|
|
RETURN STATIC_BLIP_AMBIENT_PROPERTY_ARMS_TRAFFICKING
|
|
BREAK
|
|
CASE PROPERTY_SONAR_COLLECTIONS
|
|
RETURN STATIC_BLIP_AMBIENT_PROPERTY_SONAR_COLLECTIONS
|
|
BREAK
|
|
CASE PROPERTY_CAR_MOD_SHOP
|
|
RETURN STATIC_BLIP_AMBIENT_PROPERTY_CAR_MOD_SHOP
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
RETURN STATIC_BLIP_AMBIENT_PROPERTY_CINEMA_VINEWOOD
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
RETURN STATIC_BLIP_AMBIENT_PROPERTY_CINEMA_DOWNTOWN
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
RETURN STATIC_BLIP_AMBIENT_PROPERTY_CINEMA_MORNINGWOOD
|
|
BREAK
|
|
CASE PROPERTY_GOLF_CLUB
|
|
RETURN STATIC_BLIP_AMBIENT_PROPERTY_GOLF_CLUB
|
|
BREAK
|
|
CASE PROPERTY_CAR_SCRAP_YARD
|
|
RETURN STATIC_BLIP_AMBIENT_PROPERTY_CAR_SCRAP_YARD
|
|
BREAK
|
|
CASE PROPERTY_WEED_SHOP
|
|
RETURN STATIC_BLIP_AMBIENT_PROPERTY_WEED_SHOP
|
|
BREAK
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
RETURN STATIC_BLIP_AMBIENT_PROPERTY_BAR_TEQUILALA
|
|
BREAK
|
|
CASE PROPERTY_BAR_PITCHERS
|
|
RETURN STATIC_BLIP_AMBIENT_PROPERTY_BAR_PITCHERS
|
|
BREAK
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
RETURN STATIC_BLIP_AMBIENT_PROPERTY_BAR_HEN_HOUSE
|
|
BREAK
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
RETURN STATIC_BLIP_AMBIENT_PROPERTY_BAR_HOOKIES
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN STATIC_BLIP_AMBIENT_PROPERTY_TOWING_IMPOUND
|
|
ENDFUNC
|
|
|
|
// get the stat for a property
|
|
FUNC STATSENUM GET_STAT_FOR_PROPERTY(PROPERTY_ENUM thisProperty, PROPERTY_STAT_ENUM thisStat)
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_TOWING_IMPOUND
|
|
SWITCH thisStat
|
|
CASE PROPERTY_STAT_BOUGHT
|
|
RETURN PROP_BOUGHT_TOWI
|
|
BREAK
|
|
CASE PROPERTY_STAT_EARNINGS
|
|
RETURN PROP_EARNED_TOWI
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_TAXI_LOT
|
|
SWITCH thisStat
|
|
CASE PROPERTY_STAT_BOUGHT
|
|
RETURN PROP_BOUGHT_TAXI
|
|
BREAK
|
|
CASE PROPERTY_STAT_EARNINGS
|
|
RETURN PROP_EARNED_TAXI
|
|
BREAK
|
|
CASE PROPERTY_STAT_MISSIONS_TRIGGERED
|
|
RETURN PROP_MISSIONS_TAXI
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_ARMS_TRAFFICKING
|
|
SWITCH thisStat
|
|
CASE PROPERTY_STAT_BOUGHT
|
|
RETURN PROP_BOUGHT_TRAF
|
|
BREAK
|
|
CASE PROPERTY_STAT_EARNINGS
|
|
RETURN PROP_EARNED_TRAF
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_SONAR_COLLECTIONS
|
|
SWITCH thisStat
|
|
CASE PROPERTY_STAT_BOUGHT
|
|
RETURN PROP_BOUGHT_SOCO
|
|
BREAK
|
|
CASE PROPERTY_STAT_EARNINGS
|
|
RETURN PROP_EARNED_SOCO
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_CAR_MOD_SHOP
|
|
SWITCH thisStat
|
|
CASE PROPERTY_STAT_BOUGHT
|
|
RETURN PROP_BOUGHT_CMSH
|
|
BREAK
|
|
CASE PROPERTY_STAT_EARNINGS
|
|
RETURN PROP_EARNED_CMSH
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
SWITCH thisStat
|
|
CASE PROPERTY_STAT_BOUGHT
|
|
RETURN PROP_BOUGHT_CINV
|
|
BREAK
|
|
CASE PROPERTY_STAT_EARNINGS
|
|
RETURN PROP_EARNED_CINV
|
|
BREAK
|
|
CASE PROPERTY_STAT_MISSIONS_TRIGGERED
|
|
RETURN PROP_MISSIONS_CINV
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
SWITCH thisStat
|
|
CASE PROPERTY_STAT_BOUGHT
|
|
RETURN PROP_BOUGHT_CIND
|
|
BREAK
|
|
CASE PROPERTY_STAT_EARNINGS
|
|
RETURN PROP_EARNED_CIND
|
|
BREAK
|
|
CASE PROPERTY_STAT_MISSIONS_TRIGGERED
|
|
RETURN PROP_MISSIONS_CIND
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
SWITCH thisStat
|
|
CASE PROPERTY_STAT_BOUGHT
|
|
RETURN PROP_BOUGHT_CINM
|
|
BREAK
|
|
CASE PROPERTY_STAT_EARNINGS
|
|
RETURN PROP_EARNED_CINM
|
|
BREAK
|
|
CASE PROPERTY_STAT_MISSIONS_TRIGGERED
|
|
RETURN PROP_MISSIONS_CINM
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_GOLF_CLUB
|
|
SWITCH thisStat
|
|
CASE PROPERTY_STAT_BOUGHT
|
|
RETURN PROP_BOUGHT_GOLF
|
|
BREAK
|
|
CASE PROPERTY_STAT_EARNINGS
|
|
RETURN PROP_EARNED_GOLF
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_CAR_SCRAP_YARD
|
|
SWITCH thisStat
|
|
CASE PROPERTY_STAT_BOUGHT
|
|
RETURN PROP_BOUGHT_CSCR
|
|
BREAK
|
|
CASE PROPERTY_STAT_EARNINGS
|
|
RETURN PROP_EARNED_CSCR
|
|
BREAK
|
|
CASE PROPERTY_STAT_MISSIONS_TRIGGERED
|
|
RETURN PROP_MISSIONS_CSCR
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_WEED_SHOP
|
|
SWITCH thisStat
|
|
CASE PROPERTY_STAT_BOUGHT
|
|
RETURN PROP_BOUGHT_WEED
|
|
BREAK
|
|
CASE PROPERTY_STAT_EARNINGS
|
|
RETURN PROP_EARNED_WEED
|
|
BREAK
|
|
CASE PROPERTY_STAT_MISSIONS_TRIGGERED
|
|
RETURN PROP_MISSIONS_WEED
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
SWITCH thisStat
|
|
CASE PROPERTY_STAT_BOUGHT
|
|
RETURN PROP_BOUGHT_BARTE
|
|
BREAK
|
|
CASE PROPERTY_STAT_EARNINGS
|
|
RETURN PROP_EARNED_BARTE
|
|
BREAK
|
|
CASE PROPERTY_STAT_MISSIONS_TRIGGERED
|
|
RETURN PROP_MISSIONS_BARTE
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_BAR_PITCHERS
|
|
SWITCH thisStat
|
|
CASE PROPERTY_STAT_BOUGHT
|
|
RETURN PROP_BOUGHT_BARPI
|
|
BREAK
|
|
CASE PROPERTY_STAT_EARNINGS
|
|
RETURN PROP_EARNED_BARPI
|
|
BREAK
|
|
CASE PROPERTY_STAT_MISSIONS_TRIGGERED
|
|
RETURN PROP_MISSIONS_BARPI
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
SWITCH thisStat
|
|
CASE PROPERTY_STAT_BOUGHT
|
|
RETURN PROP_BOUGHT_BARHE
|
|
BREAK
|
|
CASE PROPERTY_STAT_EARNINGS
|
|
RETURN PROP_EARNED_BARHE
|
|
BREAK
|
|
CASE PROPERTY_STAT_MISSIONS_TRIGGERED
|
|
RETURN PROP_MISSIONS_BARHE
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
SWITCH thisStat
|
|
CASE PROPERTY_STAT_BOUGHT
|
|
RETURN PROP_BOUGHT_BARHO
|
|
BREAK
|
|
CASE PROPERTY_STAT_EARNINGS
|
|
RETURN PROP_EARNED_BARHO
|
|
BREAK
|
|
CASE PROPERTY_STAT_MISSIONS_TRIGGERED
|
|
RETURN PROP_MISSIONS_BARHO
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_STRIP_CLUB
|
|
SWITCH thisStat
|
|
CASE PROPERTY_STAT_BOUGHT
|
|
RETURN PROP_BOUGHT_STRIP
|
|
BREAK
|
|
CASE PROPERTY_STAT_EARNINGS
|
|
RETURN PROP_EARNED_STRIP
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN PROP_BOUGHT_TOWI
|
|
ENDFUNC
|
|
|
|
FUNC enumCharacterList GET_CONTACT_CHARACTER_FOR_PROPERTY(PROPERTY_ENUM thisProperty)
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_TAXI_LOT
|
|
RETURN CHAR_PROPERTY_TAXI_LOT
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
RETURN CHAR_PROPERTY_CINEMA_VINEWOOD
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
RETURN CHAR_PROPERTY_CINEMA_DOWNTOWN
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
RETURN CHAR_PROPERTY_CINEMA_MORNINGWOOD
|
|
BREAK
|
|
CASE PROPERTY_CAR_SCRAP_YARD
|
|
RETURN CHAR_PROPERTY_CAR_SCRAP_YARD
|
|
BREAK
|
|
CASE PROPERTY_WEED_SHOP
|
|
RETURN CHAR_PROPERTY_WEED_SHOP
|
|
BREAK
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
RETURN CHAR_PROPERTY_BAR_TEQUILALA
|
|
BREAK
|
|
CASE PROPERTY_BAR_PITCHERS
|
|
RETURN CHAR_PROPERTY_BAR_PITCHERS
|
|
BREAK
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
RETURN CHAR_PROPERTY_BAR_HEN_HOUSE
|
|
BREAK
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
RETURN CHAR_PROPERTY_BAR_HOOKIES
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN CHAR_PROPERTY_BAR_HOOKIES
|
|
ENDFUNC
|
|
|
|
// which character can purchase property
|
|
FUNC enumCharacterList GET_CHARACTER_FOR_PROPERTY(PROPERTY_ENUM thisProperty)
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_ARMS_TRAFFICKING
|
|
RETURN CHAR_TREVOR
|
|
BREAK
|
|
CASE PROPERTY_CAR_MOD_SHOP
|
|
CASE PROPERTY_TOWING_IMPOUND
|
|
CASE PROPERTY_WEED_SHOP
|
|
CASE PROPERTY_TAXI_LOT
|
|
RETURN CHAR_FRANKLIN
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
RETURN CHAR_MICHAEL
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN NO_CHARACTER
|
|
ENDFUNC
|
|
|
|
// is property blocked for character
|
|
FUNC BOOL IS_PROPERTY_BLOCKED_FOR_CHARACTER(PROPERTY_ENUM thisProperty, enumCharacterList thisChar)
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
IF thisChar = CHAR_TREVOR
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
// is the property unlocked
|
|
FUNC BOOL IS_PROPERTY_AVAILABLE(PROPERTY_ENUM thisProperty)
|
|
#IF IS_DEBUG_BUILD
|
|
IF g_PropertySystemData.bDebugForcePropertiesAvailable
|
|
RETURN TRUE
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_CAR_MOD_SHOP
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_TREVOR_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MICHAEL_KILLED)
|
|
RETURN FALSE
|
|
ELSE
|
|
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_TREVOR_3)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PROPERTY_ARMS_TRAFFICKING
|
|
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_TREVOR_KILLED)
|
|
RETURN FALSE
|
|
ELSE
|
|
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_TREVOR_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PROPERTY_SONAR_COLLECTIONS
|
|
IF GET_MISSION_COMPLETE_STATE(SP_HEIST_DOCKS_2A)
|
|
OR GET_MISSION_COMPLETE_STATE(SP_HEIST_DOCKS_2B)
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
IF IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_NIGEL_1A)
|
|
AND GET_MISSION_COMPLETE_STATE(SP_MISSION_TREVOR_3)
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PROPERTY_TOWING_IMPOUND
|
|
IF IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sPropertyData.iBit, PROPERTY_SAVED_BIT_OFFERED_TOWING_IMPOUND)
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
|
|
DEFAULT
|
|
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_TREVOR_3)
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
// is player in a position where he cannot purchase the property
|
|
FUNC BOOL IS_PLAYER_AT_PROPERTY_CANNOT_PURCHASE_COORDS(PROPERTY_ENUM thisProperty)
|
|
VECTOR vPlayerPos
|
|
vPlayerPos = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_WEED_SHOP
|
|
|
|
IF vPlayerPos.x >= -1174.95801
|
|
AND vPlayerPos.y >= -1570.78271
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
CASE PROPERTY_ARMS_TRAFFICKING
|
|
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<2142.642, 4794.097, 40.052>>, <<2145.074, 4788.900, 39.970>>, 2.6, FALSE, FALSE)
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
IF vPlayerPos.y < -708.2
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
// set total planes destroyed count
|
|
FUNC INT GET_TOTAL_PLANES_DESTROYED()
|
|
INT iStatMichael
|
|
INT iStatFranklin
|
|
INT iStatTrevor
|
|
INT iStatMichaelH
|
|
INT iStatFranklinH
|
|
INT iStatTrevorH
|
|
|
|
STAT_GET_INT(SP0_PLANES_EXPLODED, iStatMichael)
|
|
STAT_GET_INT(SP1_PLANES_EXPLODED, iStatFranklin)
|
|
STAT_GET_INT(SP2_PLANES_EXPLODED, iStatTrevor)
|
|
|
|
STAT_GET_INT(SP0_HELIS_EXPLODED, iStatMichaelH)
|
|
STAT_GET_INT(SP1_HELIS_EXPLODED, iStatFranklinH)
|
|
STAT_GET_INT(SP2_HELIS_EXPLODED, iStatTrevorH)
|
|
|
|
RETURN (iStatMichael + iStatFranklin + iStatTrevor + iStatMichaelH + iStatFranklinH + iStatTrevorH)
|
|
ENDFUNC
|
|
|
|
// set total cars destroyed count
|
|
FUNC INT GET_TOTAL_CARS_DESTROYED()
|
|
INT iStatMichael
|
|
INT iStatFranklin
|
|
INT iStatTrevor
|
|
|
|
STAT_GET_INT(SP0_CARS_EXPLODED, iStatMichael)
|
|
STAT_GET_INT(SP1_CARS_EXPLODED, iStatFranklin)
|
|
STAT_GET_INT(SP2_CARS_EXPLODED, iStatTrevor)
|
|
|
|
RETURN (iStatMichael + iStatFranklin + iStatTrevor)
|
|
ENDFUNC
|
|
|
|
// how much do you get this week from property
|
|
FUNC INT GET_THIS_WEEKS_INCOME_FOR_PROPERTY(PROPERTY_ENUM thisProperty)
|
|
INT iReturnCash = 0
|
|
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_ARMS_TRAFFICKING
|
|
//iReturnCash = (g_savedGlobals.sTraffickingData.iGroundRank * 5000) + (g_savedGlobals.sTraffickingData.iAirRank * 7000)
|
|
BREAK
|
|
CASE PROPERTY_CAR_SCRAP_YARD
|
|
INT iTotalCarsDestroyed
|
|
INT iCarsDestroyedThisWeek
|
|
|
|
iTotalCarsDestroyed = GET_TOTAL_CARS_DESTROYED()
|
|
|
|
iCarsDestroyedThisWeek = iTotalCarsDestroyed - g_savedGlobals.sPropertyData.iTotalCarsDestroyed
|
|
|
|
iReturnCash = iCarsDestroyedThisWeek * 150
|
|
IF iReturnCash > 5000
|
|
iReturnCash = 5000
|
|
ENDIF
|
|
|
|
g_savedGlobals.sPropertyData.iTotalCarsDestroyed = iTotalCarsDestroyed
|
|
BREAK
|
|
CASE PROPERTY_CAR_MOD_SHOP
|
|
iReturnCash = 1600//1380
|
|
BREAK
|
|
CASE PROPERTY_WEED_SHOP
|
|
iReturnCash = 9300//8050
|
|
BREAK
|
|
CASE PROPERTY_TAXI_LOT
|
|
iReturnCash = 2000//1725
|
|
BREAK
|
|
CASE PROPERTY_GOLF_CLUB
|
|
iReturnCash = 264500//230000
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
iReturnCash = 132200//115000
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
iReturnCash = 264000//230000
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
iReturnCash = 142300//115000
|
|
BREAK
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
iReturnCash = 16500//14370
|
|
BREAK
|
|
CASE PROPERTY_BAR_PITCHERS
|
|
iReturnCash = 7100//6200
|
|
BREAK
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
iReturnCash = 920//800
|
|
BREAK
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
iReturnCash = 4700//4100
|
|
BREAK
|
|
CASE PROPERTY_STRIP_CLUB
|
|
iReturnCash = 5000
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN iReturnCash
|
|
ENDFUNC
|
|
|
|
|
|
// property management script
|
|
FUNC STRING GET_SCRIPT_FOR_PROPERTY_MANAGEMENT_MISSION(PROPERTY_ENUM thisProperty, PROPERTY_MANAGEMENT_MISSION_ENUM thisMission, INT iVariation)
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
RETURN "pm_delivery"
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DEFEND
|
|
RETURN "pm_defend"
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
RETURN "pm_recover_stolen"
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_GANG_ATTACK
|
|
RETURN "pm_gang_attack"
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_PLANE_PROMOTION
|
|
RETURN "pm_plane_promotion"
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_TAXI
|
|
SWITCH CONVERT_INT_TO_TAXI_VARIATION(thisProperty, iVariation)
|
|
CASE TAXI_MISSION_VARIATION_CLOWN_CAR
|
|
RETURN "taxi_clowncar"
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_CUT_YOU_IN
|
|
RETURN "taxi_cutyouin"
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_DEADLINE
|
|
RETURN "taxi_deadline"
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_FOLLOW_CAR
|
|
RETURN "taxi_followcar"
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_GOT_YOU_NOW
|
|
RETURN "taxi_gotyounow"
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_GOT_YOUR_BACK
|
|
RETURN "taxi_gotyourback"
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_NEEDS_EXCITEMENT
|
|
RETURN "taxi_needexcitement"
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_TAKE_IT_EASY
|
|
RETURN "taxi_takeiteasy"
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_TAKE_TO_BEST
|
|
RETURN "taxi_taketobest"
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN "error"
|
|
ENDFUNC
|
|
|
|
|
|
// call to trigger management mission
|
|
FUNC CC_CommID GET_PROPERTY_MANAGEMENT_CALL(TAXI_MISSION_VARIATION_ENUM thisTaxi)
|
|
SWITCH thisTaxi
|
|
CASE TAXI_MISSION_VARIATION_CLOWN_CAR
|
|
RETURN QCALL_PROP_TAXI_CLOWN_CAR
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_CUT_YOU_IN
|
|
RETURN QCALL_PROP_TAXI_CUT_YOU_IN
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_DEADLINE
|
|
RETURN QCALL_PROP_TAXI_DEADLINE
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_FOLLOW_CAR
|
|
RETURN QCALL_PROP_TAXI_FOLLOW_THAT_CAR
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_GOT_YOU_NOW
|
|
RETURN QCALL_PROP_TAXI_GOT_YOU_NOW
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_GOT_YOUR_BACK
|
|
RETURN QCALL_PROP_TAXI_GOT_YOUR_BACK
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_NEEDS_EXCITEMENT
|
|
RETURN QCALL_PROP_TAXI_NEED_EXCITEMENT
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_TAKE_IT_EASY
|
|
RETURN QCALL_PROP_TAXI_TAKE_IT_EASY
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_TAKE_TO_BEST
|
|
RETURN QCALL_PROP_TAXI_TAKE_TO_BEST
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN COMM_NONE
|
|
ENDFUNC
|
|
|
|
|
|
// positive response to trigger management mission
|
|
FUNC CC_QuestionCallResponse GET_PROPERTY_MANAGEMENT_POSITIVE_RESPONSE(TAXI_MISSION_VARIATION_ENUM thisTaxi)
|
|
SWITCH thisTaxi
|
|
CASE TAXI_MISSION_VARIATION_CLOWN_CAR
|
|
RETURN RESP_PROP_TAXI_CLOWN_CAR_YES
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_CUT_YOU_IN
|
|
RETURN RESP_PROP_TAXI_CUT_YOU_IN_YES
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_DEADLINE
|
|
RETURN RESP_PROP_TAXI_DEADLINE_YES
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_FOLLOW_CAR
|
|
RETURN RESP_PROP_TAXI_FOLLOW_THAT_CAR_YES
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_GOT_YOU_NOW
|
|
RETURN RESP_PROP_TAXI_GOT_YOU_NOW_YES
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_GOT_YOUR_BACK
|
|
RETURN RESP_PROP_TAXI_GOT_YOUR_BACK_YES
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_NEEDS_EXCITEMENT
|
|
RETURN RESP_PROP_TAXI_NEED_EXCITEMENT_YES
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_TAKE_IT_EASY
|
|
RETURN RESP_PROP_TAXI_TAKE_IT_EASY_YES
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_TAKE_TO_BEST
|
|
RETURN RESP_PROP_TAXI_TAKE_TO_BEST_YES
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN RESP_NONE
|
|
ENDFUNC
|
|
|
|
|
|
// negative response to trigger management mission
|
|
FUNC CC_QuestionCallResponse GET_PROPERTY_MANAGEMENT_NEGATIVE_RESPONSE(PROPERTY_ENUM thisProperty)
|
|
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_TAXI_LOT
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
CASE CHAR_MICHAEL
|
|
RETURN RESP_PROP_TAXI_M_NO
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
RETURN RESP_PROP_TAXI_T_NO
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
RETURN RESP_PROP_TAXI_F_NO
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN RESP_NONE
|
|
ENDFUNC
|
|
|
|
|
|
// get text part ID for a specific management mission.
|
|
PROC GET_PROPERTY_MANAGEMENT_MISSION_FAIL_TEXT_PARTS(PROPERTY_ENUM thisProperty, PROPERTY_MANAGEMENT_MISSION_ENUM thisMission, INT iThisVariation, CC_TextPart &part1, CC_TextPart &part2)
|
|
thisProperty=thisProperty
|
|
|
|
INT iNumberRandom
|
|
INT iNumberStart = 0
|
|
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
SWITCH CONVERT_INT_TO_DELIVERY_VARIATION(thisProperty, iThisVariation)
|
|
CASE DELIVERY_MISSION_VARIATION_TIMED_1
|
|
CASE DELIVERY_MISSION_VARIATION_TIMED_2
|
|
CASE DELIVERY_MISSION_VARIATION_TIMED_3
|
|
part1 = TPART_PROP_WEED_DEL
|
|
iNumberRandom = 3
|
|
BREAK
|
|
CASE DELIVERY_MISSION_VARIATION_LOSE_COPS
|
|
CASE DELIVERY_MISSION_VARIATION_LOSE_COPS_2
|
|
part1 = TPART_PROP_WEED_DEL
|
|
iNumberRandom = 3
|
|
BREAK
|
|
CASE DELIVERY_MISSION_VARIATION_RECOVER_VAN
|
|
CASE DELIVERY_MISSION_VARIATION_RECOVER_VAN_2
|
|
part1 = TPART_PROP_WEED_DEL
|
|
iNumberRandom = 3
|
|
BREAK
|
|
CASE DELIVERY_MISSION_VARIATION_BREAKABLE_CARGO_COUNTRY
|
|
CASE DELIVERY_MISSION_VARIATION_BREAKABLE_CARGO_VINYARD
|
|
CASE DELIVERY_MISSION_VARIATION_BREAKABLE_CARGO_LIQUOR_MARKET
|
|
CASE DELIVERY_MISSION_VARIATION_BREAKABLE_CARGO_LIQUOR_MARKET_2
|
|
CASE DELIVERY_MISSION_VARIATION_BREAKABLE_CARGO_LIQUOR_MARKET_3
|
|
CASE DELIVERY_MISSION_VARIATION_BREAKABLE_CARGO_PISSWASSER_1
|
|
CASE DELIVERY_MISSION_VARIATION_BREAKABLE_CARGO_PISSWASSER_2
|
|
part1 = TPART_PROP_BAR_DEL
|
|
iNumberRandom = 5
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DEFEND
|
|
part1 = TPART_PROP_SCRAP_DEF
|
|
iNumberRandom = 1
|
|
BREAK
|
|
|
|
CASE PROPERTY_MANAGEMENT_MISSION_TAXI
|
|
part1 = TPART_PROP_TAXI
|
|
IF g_PropertySystemData.failReasonOverride = PROPERTY_MISSION_FAIL_REASON_OVERRIDE_NONE
|
|
iNumberStart = 0
|
|
iNumberRandom = 5
|
|
ELSE
|
|
iNumberStart = 5
|
|
iNumberRandom = 8
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PROPERTY_MANAGEMENT_MISSION_GANG_ATTACK
|
|
part1 = TPART_PROP_BAR_GANG
|
|
iNumberRandom = 3
|
|
BREAK
|
|
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
SWITCH CONVERT_INT_TO_RECOVER_STOLEN_VARIATION(thisProperty, iThisVariation)
|
|
CASE RECOVER_STOLEN_MISSION_VARIATION_TAKINGS
|
|
part1 = TPART_PROP_BAR_STLN
|
|
iNumberRandom = 3
|
|
BREAK
|
|
CASE RECOVER_STOLEN_MISSION_VARIATION_PAP
|
|
part1 = TPART_PROP_BAR_PAP
|
|
IF g_PropertySystemData.failReasonOverride = PROPERTY_MISSION_FAIL_REASON_OVERRIDE_PAPS_KILLED
|
|
iNumberStart = 3
|
|
iNumberRandom = 6
|
|
ELSE
|
|
iNumberStart = 0
|
|
iNumberRandom = 3
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE PROPERTY_MANAGEMENT_MISSION_PLANE_PROMOTION
|
|
part1 = TPART_PROP_CIN_PLANE
|
|
iNumberRandom = 3
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
SWITCH GET_RANDOM_INT_IN_RANGE(iNumberStart,iNumberRandom)
|
|
CASE 0
|
|
part2 = TPART_PROP_FAIL1
|
|
BREAK
|
|
CASE 1
|
|
part2 = TPART_PROP_FAIL2
|
|
BREAK
|
|
CASE 2
|
|
part2 = TPART_PROP_FAIL3
|
|
BREAK
|
|
CASE 3
|
|
part2 = TPART_PROP_FAIL4
|
|
BREAK
|
|
CASE 4
|
|
part2 = TPART_PROP_FAIL5
|
|
BREAK
|
|
CASE 5
|
|
part2 = TPART_PROP_FAIL6
|
|
BREAK
|
|
CASE 6
|
|
part2 = TPART_PROP_FAIL7
|
|
BREAK
|
|
CASE 7
|
|
part2 = TPART_PROP_FAIL8
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
|
|
// get text part ID for a specific management mission.
|
|
PROC GET_PROPERTY_MANAGEMENT_MISSION_NOTIFY_TEXT_PARTS(PROPERTY_ENUM thisProperty, PROPERTY_MANAGEMENT_MISSION_ENUM thisMission, INT iThisVariation, CC_TextPart &part1, CC_TextPart &part2)
|
|
thisProperty=thisProperty
|
|
|
|
INT iNumberRandom
|
|
INT iNumberStart = 0
|
|
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
SWITCH CONVERT_INT_TO_DELIVERY_VARIATION(thisProperty, iThisVariation)
|
|
CASE DELIVERY_MISSION_VARIATION_TIMED_1
|
|
CASE DELIVERY_MISSION_VARIATION_TIMED_2
|
|
CASE DELIVERY_MISSION_VARIATION_TIMED_3
|
|
part1 = TPART_PROP_WEED_DEL
|
|
iNumberRandom = 3
|
|
BREAK
|
|
CASE DELIVERY_MISSION_VARIATION_LOSE_COPS
|
|
CASE DELIVERY_MISSION_VARIATION_LOSE_COPS_2
|
|
part1 = TPART_PROP_WEED_DEL
|
|
iNumberRandom = 3
|
|
BREAK
|
|
CASE DELIVERY_MISSION_VARIATION_RECOVER_VAN
|
|
CASE DELIVERY_MISSION_VARIATION_RECOVER_VAN_2
|
|
part1 = TPART_PROP_WEED_DEL
|
|
iNumberStart = 3
|
|
iNumberRandom = 5
|
|
BREAK
|
|
CASE DELIVERY_MISSION_VARIATION_BREAKABLE_CARGO_COUNTRY
|
|
CASE DELIVERY_MISSION_VARIATION_BREAKABLE_CARGO_VINYARD
|
|
CASE DELIVERY_MISSION_VARIATION_BREAKABLE_CARGO_LIQUOR_MARKET
|
|
CASE DELIVERY_MISSION_VARIATION_BREAKABLE_CARGO_LIQUOR_MARKET_2
|
|
CASE DELIVERY_MISSION_VARIATION_BREAKABLE_CARGO_LIQUOR_MARKET_3
|
|
CASE DELIVERY_MISSION_VARIATION_BREAKABLE_CARGO_PISSWASSER_1
|
|
CASE DELIVERY_MISSION_VARIATION_BREAKABLE_CARGO_PISSWASSER_2
|
|
part1 = TPART_PROP_BAR_DEL
|
|
iNumberRandom = 6
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DEFEND
|
|
part1 = TPART_PROP_SCRAP_DEF
|
|
iNumberRandom = 2
|
|
BREAK
|
|
|
|
CASE PROPERTY_MANAGEMENT_MISSION_GANG_ATTACK
|
|
part1 = TPART_PROP_BAR_GANG
|
|
iNumberRandom = 6
|
|
BREAK
|
|
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
SWITCH CONVERT_INT_TO_RECOVER_STOLEN_VARIATION(thisProperty, iThisVariation)
|
|
CASE RECOVER_STOLEN_MISSION_VARIATION_TAKINGS
|
|
part1 = TPART_PROP_BAR_STLN
|
|
iNumberRandom = 3
|
|
BREAK
|
|
CASE RECOVER_STOLEN_MISSION_VARIATION_PAP
|
|
part1 = TPART_PROP_BAR_PAP
|
|
iNumberRandom = 3
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE PROPERTY_MANAGEMENT_MISSION_PLANE_PROMOTION
|
|
part1 = TPART_PROP_CIN_PLANE
|
|
iNumberRandom = 3
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
SWITCH GET_RANDOM_INT_IN_RANGE(iNumberStart,iNumberRandom)
|
|
CASE 0
|
|
part2 = TPART_PROP_NOTI1
|
|
BREAK
|
|
CASE 1
|
|
part2 = TPART_PROP_NOTI2
|
|
BREAK
|
|
CASE 2
|
|
part2 = TPART_PROP_NOTI3
|
|
BREAK
|
|
CASE 3
|
|
part2 = TPART_PROP_NOTI4
|
|
BREAK
|
|
CASE 4
|
|
part2 = TPART_PROP_NOTI5
|
|
BREAK
|
|
CASE 5
|
|
part2 = TPART_PROP_NOTI6
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
|
|
|
|
// get text part ID for a specific management mission.
|
|
PROC GET_PROPERTY_MANAGEMENT_MISSION_PASS_TEXT_PARTS(PROPERTY_ENUM thisProperty, PROPERTY_MANAGEMENT_MISSION_ENUM thisMission, INT iThisVariation, CC_TextPart &part1, CC_TextPart &part2)
|
|
thisProperty=thisProperty
|
|
iThisVariation=iThisVariation
|
|
|
|
INT iNumberRandom
|
|
INT iNumberStart = 0
|
|
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DEFEND
|
|
part1 = TPART_PROP_SCRAP_DEF
|
|
iNumberRandom = 1
|
|
BREAK
|
|
|
|
CASE PROPERTY_MANAGEMENT_MISSION_GANG_ATTACK
|
|
part1 = TPART_PROP_BAR_GANG
|
|
iNumberRandom = 6
|
|
BREAK
|
|
|
|
CASE PROPERTY_MANAGEMENT_MISSION_PLANE_PROMOTION
|
|
part1 = TPART_PROP_CIN_PLANE
|
|
iNumberRandom = 3
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
SWITCH GET_RANDOM_INT_IN_RANGE(iNumberStart,iNumberRandom)
|
|
CASE 0
|
|
part2 = TPART_PROP_PASS1
|
|
BREAK
|
|
CASE 1
|
|
part2 = TPART_PROP_PASS2
|
|
BREAK
|
|
CASE 2
|
|
part2 = TPART_PROP_PASS3
|
|
BREAK
|
|
CASE 3
|
|
part2 = TPART_PROP_PASS4
|
|
BREAK
|
|
CASE 4
|
|
part2 = TPART_PROP_PASS5
|
|
BREAK
|
|
CASE 5
|
|
part2 = TPART_PROP_PASS6
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
|
|
// get number of missions for property
|
|
FUNC INT GET_NUMBER_OF_MISSIONS_FOR_PROPERTY(PROPERTY_ENUM thisProperty)
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_WEED_SHOP
|
|
CASE PROPERTY_CAR_SCRAP_YARD
|
|
CASE PROPERTY_TAXI_LOT
|
|
RETURN 1
|
|
BREAK
|
|
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
RETURN 2
|
|
BREAK
|
|
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
CASE PROPERTY_BAR_PITCHERS
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
RETURN 3
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN 0
|
|
ENDFUNC
|
|
|
|
|
|
// get number of variations of a particular type for a property
|
|
FUNC INT GET_NUMBER_OF_VARIATIONS_FOR_PROPERTY(PROPERTY_ENUM thisProperty, PROPERTY_MANAGEMENT_MISSION_ENUM thisMission)
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_WEED_SHOP
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
RETURN 7
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE PROPERTY_CAR_SCRAP_YARD
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DEFEND
|
|
RETURN 2
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE PROPERTY_TAXI_LOT
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_TAXI
|
|
RETURN 9
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
RETURN 1
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_PLANE_PROMOTION
|
|
RETURN 1
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
CASE PROPERTY_BAR_PITCHERS
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
RETURN 2
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
IF thisProperty = PROPERTY_BAR_TEQUILALA
|
|
OR thisProperty = PROPERTY_BAR_PITCHERS
|
|
RETURN 5
|
|
ELSE
|
|
RETURN 2
|
|
ENDIF
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_GANG_ATTACK
|
|
RETURN 2
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN 0
|
|
ENDFUNC
|
|
|
|
// vector of the event coord
|
|
FUNC VECTOR GET_MANAGEMENT_EVENT_COORD(PROPERTY_ENUM thisProperty, PROPERTY_MANAGEMENT_MISSION_ENUM thisMission, INT iThisVariation)
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
RETURN GET_DELIVERY_EVENT_INIT_COORDS(thisProperty, CONVERT_INT_TO_DELIVERY_VARIATION(thisProperty, iThisVariation))
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_TAXI
|
|
RETURN GET_TAXI_EVENT_INIT_COORDS(thisProperty, CONVERT_INT_TO_TAXI_VARIATION(thisProperty, iThisVariation))
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_PLANE_PROMOTION
|
|
RETURN <<-1085.2794, -2970.5725, 12.9457>>
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN GET_PROPERTY_PURCHASE_COORDS(thisProperty)
|
|
ENDFUNC
|
|
|
|
// is player in notify range for management event
|
|
FUNC BOOL IS_PLAYER_IN_NOTIFY_RANGE_FOR_MANAGEMENT_EVENT(PROPERTY_ENUM thisProperty, PROPERTY_MANAGEMENT_MISSION_ENUM thisMission, INT iVariation)
|
|
VECTOR vSpecificArea1
|
|
VECTOR vSpecificArea2
|
|
BOOL bUseSpecificArea = FALSE
|
|
|
|
IF thisMission <> PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
CASE PROPERTY_BAR_PITCHERS
|
|
vSpecificArea1 = <<-2541, -3646, 0>>
|
|
vSpecificArea2 = <<1934, 1495, 0>>
|
|
bUseSpecificArea = TRUE
|
|
BREAK
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
vSpecificArea1 = <<-3142, 5278, 0>>
|
|
vSpecificArea2 = <<4200, 7722, 0>>
|
|
bUseSpecificArea = TRUE
|
|
BREAK
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
vSpecificArea1 = <<-3447, 2447, 0>>
|
|
vSpecificArea2 = <<4200, 5368, 0>>
|
|
bUseSpecificArea = TRUE
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
|
|
VECTOR vEventCoord = GET_MANAGEMENT_EVENT_COORD(thisProperty, thisMission, iVariation)
|
|
IF NOT bUseSpecificArea
|
|
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), vEventCoord, GET_NOTIFY_RANGE_FOR_MANAGEMENT_EVENT(thisProperty, thisMission, iVariation), FALSE, FALSE)
|
|
IF NOT IS_ENTITY_AT_COORD(PLAYER_PED_ID(), vEventCoord, GET_BLOCK_RANGE_FOR_MANAGEMENT_EVENT(thisProperty, thisMission, iVariation), FALSE, FALSE)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF IS_ENTITY_IN_AREA(PLAYER_PED_ID(), vSpecificArea1, vSpecificArea2, FALSE, FALSE)
|
|
IF NOT IS_ENTITY_AT_COORD(PLAYER_PED_ID(), vEventCoord, GET_BLOCK_RANGE_FOR_MANAGEMENT_EVENT(thisProperty, thisMission, iVariation), FALSE, FALSE)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC PROPERTY_MANAGEMENT_MISSION_ENUM GET_MISSION_FROM_PROPERTY_AND_NUMBER(PROPERTY_ENUM thisProperty, INT iNumber)
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_WEED_SHOP
|
|
RETURN PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
BREAK
|
|
|
|
CASE PROPERTY_CAR_SCRAP_YARD
|
|
RETURN PROPERTY_MANAGEMENT_MISSION_DEFEND
|
|
BREAK
|
|
|
|
CASE PROPERTY_TAXI_LOT
|
|
RETURN PROPERTY_MANAGEMENT_MISSION_TAXI
|
|
BREAK
|
|
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
SWITCH iNumber
|
|
CASE 0
|
|
RETURN PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
BREAK
|
|
CASE 1
|
|
RETURN PROPERTY_MANAGEMENT_MISSION_PLANE_PROMOTION
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
CASE PROPERTY_BAR_PITCHERS
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
SWITCH iNumber
|
|
CASE 0
|
|
RETURN PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
BREAK
|
|
CASE 1
|
|
RETURN PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
BREAK
|
|
CASE 2
|
|
RETURN PROPERTY_MANAGEMENT_MISSION_GANG_ATTACK
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
ENDFUNC
|
|
|
|
// get the mission track bit for a property
|
|
FUNC PROPERTY_SAVED_BIT_ENUM GET_MISSION_TRACK_BIT_FOR_PROPERTY_VARIATION(PROPERTY_ENUM thisProperty, PROPERTY_MANAGEMENT_MISSION_ENUM thisMission, INT iThisVariation)
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_WEED_SHOP
|
|
DELIVERY_MISSION_VARIATION_ENUM thisDelivery
|
|
thisDelivery = CONVERT_INT_TO_DELIVERY_VARIATION(thisProperty, iThisVariation)
|
|
SWITCH thisDelivery
|
|
CASE DELIVERY_MISSION_VARIATION_TIMED_1
|
|
CASE DELIVERY_MISSION_VARIATION_TIMED_2
|
|
CASE DELIVERY_MISSION_VARIATION_TIMED_3
|
|
RETURN PROPERTY_SAVED_BIT_VAR_TRACK_WEED_TIMED
|
|
BREAK
|
|
CASE DELIVERY_MISSION_VARIATION_LOSE_COPS
|
|
CASE DELIVERY_MISSION_VARIATION_LOSE_COPS_2
|
|
RETURN PROPERTY_SAVED_BIT_VAR_TRACK_WEED_LOSE_COPS
|
|
BREAK
|
|
CASE DELIVERY_MISSION_VARIATION_RECOVER_VAN
|
|
CASE DELIVERY_MISSION_VARIATION_RECOVER_VAN_2
|
|
RETURN PROPERTY_SAVED_BIT_VAR_TRACK_WEED_RECOVER_VAN
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
RETURN PROPERTY_SAVED_BIT_VAR_TRACK_CINEMA_RECOVER_STOLEN
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_PLANE_PROMOTION
|
|
RETURN PROPERTY_SAVED_BIT_VAR_TRACK_CINEMA_PLANE_PROMOTION
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
CASE PROPERTY_BAR_PITCHERS
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
RETURN PROPERTY_SAVED_BIT_VAR_TRACK_BAR_RECOVER_STOLEN
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_GANG_ATTACK
|
|
RETURN PROPERTY_SAVED_BIT_VAR_TRACK_BAR_GANG_ATTACK
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
RETURN PROPERTY_SAVED_BIT_VAR_TRACK_BAR_DELIVERY
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN PROPERTY_SAVED_BIT_VAR_TRACK_NO_TRACK
|
|
ENDFUNC
|
|
|
|
// get the subvar track bit for a property
|
|
FUNC PROPERTY_MISSION_SUB_VAR_ENUM GET_MISSION_SUB_VAR_BIT_FOR_PROPERTY_VARIATION(PROPERTY_ENUM thisProperty, PROPERTY_MANAGEMENT_MISSION_ENUM thisMission, INT iThisVariation)
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_WEED_SHOP
|
|
DELIVERY_MISSION_VARIATION_ENUM thisDelivery
|
|
thisDelivery = CONVERT_INT_TO_DELIVERY_VARIATION(thisProperty, iThisVariation)
|
|
SWITCH thisDelivery
|
|
CASE DELIVERY_MISSION_VARIATION_TIMED_1
|
|
RETURN PROPERTY_MISSION_SUB_VAR_WEED_TIMED_1
|
|
BREAK
|
|
CASE DELIVERY_MISSION_VARIATION_TIMED_2
|
|
RETURN PROPERTY_MISSION_SUB_VAR_WEED_TIMED_2
|
|
BREAK
|
|
CASE DELIVERY_MISSION_VARIATION_TIMED_3
|
|
RETURN PROPERTY_MISSION_SUB_VAR_WEED_TIMED_3
|
|
BREAK
|
|
CASE DELIVERY_MISSION_VARIATION_LOSE_COPS
|
|
RETURN PROPERTY_MISSION_SUB_VAR_WEED_LOSE_COPS_1
|
|
BREAK
|
|
CASE DELIVERY_MISSION_VARIATION_LOSE_COPS_2
|
|
RETURN PROPERTY_MISSION_SUB_VAR_WEED_LOSE_COPS_2
|
|
BREAK
|
|
CASE DELIVERY_MISSION_VARIATION_RECOVER_VAN
|
|
RETURN PROPERTY_MISSION_SUB_VAR_WEED_RECOVER_VAN_1
|
|
BREAK
|
|
CASE DELIVERY_MISSION_VARIATION_RECOVER_VAN_2
|
|
RETURN PROPERTY_MISSION_SUB_VAR_WEED_RECOVER_VAN_2
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
RECOVER_STOLEN_MISSION_VARIATION_ENUM thisStolen
|
|
thisStolen = CONVERT_INT_TO_RECOVER_STOLEN_VARIATION(thisProperty, iThisVariation)
|
|
|
|
SWITCH thisStolen
|
|
CASE RECOVER_STOLEN_MISSION_VARIATION_TAKINGS
|
|
RETURN PROPERTY_MISSION_SUB_VAR_CINEMA_RECOVER_STOLEN_TAKINGS
|
|
BREAK
|
|
// CASE RECOVER_STOLEN_MISSION_VARIATION_FILM
|
|
/// RETURN PROPERTY_MISSION_SUB_VAR_CINEMA_RECOVER_STOLEN_FILM
|
|
// BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
CASE PROPERTY_BAR_PITCHERS
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
RECOVER_STOLEN_MISSION_VARIATION_ENUM thisStolen
|
|
thisStolen = CONVERT_INT_TO_RECOVER_STOLEN_VARIATION(thisProperty, iThisVariation)
|
|
|
|
SWITCH thisStolen
|
|
CASE RECOVER_STOLEN_MISSION_VARIATION_TAKINGS
|
|
RETURN PROPERTY_MISSION_SUB_VAR_BAR_RECOVER_STOLEN_TAKINGS
|
|
BREAK
|
|
CASE RECOVER_STOLEN_MISSION_VARIATION_PAP
|
|
RETURN PROPERTY_MISSION_SUB_VAR_BAR_RECOVER_STOLEN_PAPARAZZI
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_GANG_ATTACK
|
|
GANG_ATTACK_MISSION_VARIATION_ENUM thisGangAttack
|
|
thisGangAttack = CONVERT_INT_TO_GANG_ATTACK_VARIATION(thisProperty, iThisVariation)
|
|
|
|
SWITCH thisGangAttack
|
|
CASE GANG_ATTACK_MISSION_VARIATION_STAYS_AND_FIGHTS
|
|
RETURN PROPERTY_MISSION_SUB_VAR_GANG_ATTACK_STAYS_AND_FIGHTS
|
|
BREAK
|
|
CASE GANG_ATTACK_MISSION_VARIATION_FLEES_ON_SIGHT
|
|
RETURN PROPERTY_MISSION_SUB_VAR_GANG_ATTACK_FLEES_ON_SIGHT
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE PROPERTY_CAR_SCRAP_YARD
|
|
DEFEND_MISSION_VARIATION_ENUM thisDefend
|
|
thisDefend = CONVERT_INT_TO_DEFEND_VARIATION(thisProperty, iThisVariation)
|
|
|
|
SWITCH thisDefend
|
|
CASE DEFEND_MISSION_VARIATION_1
|
|
RETURN PROPERTY_MISSION_SUB_VAR_DEFEND_1
|
|
BREAK
|
|
CASE DEFEND_MISSION_VARIATION_2
|
|
RETURN PROPERTY_MISSION_SUB_VAR_DEFEND_2
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE PROPERTY_TAXI_LOT
|
|
TAXI_MISSION_VARIATION_ENUM thisTaxi
|
|
thisTaxi = CONVERT_INT_TO_TAXI_VARIATION(thisProperty, iThisVariation)
|
|
|
|
SWITCH thisTaxi
|
|
CASE TAXI_MISSION_VARIATION_CLOWN_CAR
|
|
RETURN PROPERTY_MISSION_SUB_VAR_TAXI_CLOWN_CAR
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_CUT_YOU_IN
|
|
RETURN PROPERTY_MISSION_SUB_VAR_TAXI_CUT_YOU_IN
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_DEADLINE
|
|
RETURN PROPERTY_MISSION_SUB_VAR_TAXI_DEADLINE
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_FOLLOW_CAR
|
|
RETURN PROPERTY_MISSION_SUB_VAR_TAXI_FOLLOW_CAR
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_GOT_YOU_NOW
|
|
RETURN PROPERTY_MISSION_SUB_VAR_TAXI_GOT_YOU_NOW
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_GOT_YOUR_BACK
|
|
RETURN PROPERTY_MISSION_SUB_VAR_TAXI_GOT_YOUR_BACK
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_NEEDS_EXCITEMENT
|
|
RETURN PROPERTY_MISSION_SUB_VAR_TAXI_NEEDS_EXCITEMENT
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_TAKE_IT_EASY
|
|
RETURN PROPERTY_MISSION_SUB_VAR_TAXI_TAKE_IT_EASY
|
|
BREAK
|
|
CASE TAXI_MISSION_VARIATION_TAKE_TO_BEST
|
|
RETURN PROPERTY_MISSION_SUB_VAR_TAXI_TAKE_TO_BEST
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN PROPERTY_MISSION_SUB_VAR_NO_TRACK
|
|
ENDFUNC
|
|
|
|
// can a property variation launch
|
|
FUNC BOOL CAN_PROPERTY_VARIATION_LAUNCH(PROPERTY_ENUM thisProperty, PROPERTY_MANAGEMENT_MISSION_ENUM thisMission, INT iThisVariation)
|
|
PROPERTY_SAVED_BIT_ENUM trackBit = GET_MISSION_TRACK_BIT_FOR_PROPERTY_VARIATION(thisProperty, thisMission, iThisVariation)
|
|
PROPERTY_MISSION_SUB_VAR_ENUM subVarBit = GET_MISSION_SUB_VAR_BIT_FOR_PROPERTY_VARIATION(thisProperty, thisMission, iThisVariation)
|
|
|
|
//IF IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sPropertyData.iBit, trackBit)
|
|
// CDEBUG1LN(DEBUG_PROPERTY, "Bit is set ", ENUM_TO_INT(thisMission))
|
|
//ENDIF
|
|
|
|
//IF IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sPropertyData.iBit, subVarBit)
|
|
// CDEBUG1LN(DEBUG_PROPERTY, "Subvar is set ", iThisVariation)
|
|
//ENDIF
|
|
|
|
BOOL bNotSeenBefore = FALSE
|
|
IF (trackBit = PROPERTY_SAVED_BIT_VAR_TRACK_NO_TRACK OR NOT IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sPropertyData.iBit, trackBit))
|
|
AND (subVarBit = PROPERTY_MISSION_SUB_VAR_NO_TRACK OR NOT IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sPropertyData.iSubVarBit, subVarBit))
|
|
IF GET_RANDOM_INT_IN_RANGE(0,3) = 0
|
|
bNotSeenBefore = TRUE
|
|
//ELSE
|
|
// CDEBUG1LN(DEBUG_PROPERTY, "Failed on random number gen ", ENUM_TO_INT(thisMission))
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bNotSeenBefore
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
// get a management mission to run on a property
|
|
FUNC BOOL GET_PROPERTY_MANAGEMENT_MISSION_FROM_PROPERTY(PROPERTY_ENUM thisProperty, PROPERTY_MANAGEMENT_MISSION_ENUM &propertyManagementMission, INT &iPropertyManagementVariation)
|
|
PROPERTY_MANAGEMENT_MISSION_ENUM thisMission
|
|
|
|
BOOL bPreventLaunchInExile = FALSE
|
|
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MICHAEL_TREVOR_EXILE_STARTED)
|
|
AND NOT GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MICHAEL_TREVOR_EXILE_FINISHED)
|
|
IF thisProperty = PROPERTY_CINEMA_VINEWOOD
|
|
OR thisProperty = PROPERTY_CINEMA_DOWNTOWN
|
|
OR thisProperty = PROPERTY_CINEMA_MORNINGWOOD
|
|
bPreventLaunchInExile = TRUE
|
|
ELIF thisProperty = PROPERTY_BAR_TEQUILALA
|
|
OR thisProperty = PROPERTY_BAR_PITCHERS
|
|
OR thisProperty = PROPERTY_CAR_SCRAP_YARD
|
|
IF g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner <> CHAR_FRANKLIN
|
|
bPreventLaunchInExile = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT bPreventLaunchInExile
|
|
INT i, j
|
|
REPEAT GET_NUMBER_OF_MISSIONS_FOR_PROPERTY(thisProperty) i
|
|
thisMission = GET_MISSION_FROM_PROPERTY_AND_NUMBER(thisProperty, i)
|
|
|
|
//CDEBUG1LN(DEBUG_PROPERTY, "Checking mission ", i)
|
|
REPEAT GET_NUMBER_OF_VARIATIONS_FOR_PROPERTY(thisProperty, thisMission) j
|
|
//CDEBUG1LN(DEBUG_PROPERTY, "Checking variation ", j)
|
|
IF CAN_PROPERTY_VARIATION_LAUNCH(thisProperty, thisMission, j)
|
|
//CDEBUG1LN(DEBUG_PROPERTY, "Can launch ", j)
|
|
IF IS_PLAYER_IN_NOTIFY_RANGE_FOR_MANAGEMENT_EVENT(thisProperty, thisMission, j)
|
|
//CDEBUG1LN(DEBUG_PROPERTY, "In notify range ", j)
|
|
propertyManagementMission = thisMission
|
|
iPropertyManagementVariation = j
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDREPEAT
|
|
ENDIF
|
|
|
|
propertyManagementMission = PROPERTY_MANAGEMENT_MISSION_NONE
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
// get the number of variations you have to complete for a property/mission before it resets and you can get dups again
|
|
FUNC INT GET_NUMBER_OF_MANAGEMENT_VARIATIONS_COMPLETED_TO_RESET(PROPERTY_ENUM thisProperty, PROPERTY_MANAGEMENT_MISSION_ENUM thisMission)
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_CAR_SCRAP_YARD
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DEFEND
|
|
RETURN 2
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_WEED_SHOP
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
RETURN 5
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_TAXI_LOT
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_TAXI
|
|
RETURN 9
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_PLANE_PROMOTION
|
|
RETURN 1
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
RETURN 1
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
CASE PROPERTY_BAR_PITCHERS
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
RETURN 0
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_GANG_ATTACK
|
|
RETURN 2
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
RETURN 2
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN 1
|
|
ENDFUNC
|
|
|
|
PROC SET_CURRENT_MANAGEMENT_VARIATION_AS_LAUNCHED()
|
|
PROPERTY_SAVED_BIT_ENUM trackBit = GET_MISSION_TRACK_BIT_FOR_PROPERTY_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.currentPropertyManagementMission, g_PropertySystemData.iCurrentPropertyManagementVariation)
|
|
PROPERTY_MISSION_SUB_VAR_ENUM subVarBit = GET_MISSION_SUB_VAR_BIT_FOR_PROPERTY_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.currentPropertyManagementMission, g_PropertySystemData.iCurrentPropertyManagementVariation)
|
|
|
|
IF trackBit <> PROPERTY_SAVED_BIT_VAR_TRACK_NO_TRACK
|
|
SET_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.iBit, trackBit)
|
|
ENDIF
|
|
|
|
IF subVarBit <> PROPERTY_MISSION_SUB_VAR_NO_TRACK
|
|
SET_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.iSubVarBit, subVarBit)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
// reset all the variations for a property mission if launched x amount, except for the last one you played
|
|
PROC RESET_ALL_MANAGEMENT_VARIATIONS_IF_COMPLETED(PROPERTY_ENUM thisProperty, PROPERTY_MANAGEMENT_MISSION_ENUM thisMission, INT iDontReset)
|
|
INT i
|
|
|
|
INT iTrackDone = 0
|
|
INT iSubVarDone = 0
|
|
|
|
PROPERTY_SAVED_BIT_ENUM thisTrackVar = GET_MISSION_TRACK_BIT_FOR_PROPERTY_VARIATION(thisProperty, thisMission, iDontReset)
|
|
PROPERTY_MISSION_SUB_VAR_ENUM thisSubVar = GET_MISSION_SUB_VAR_BIT_FOR_PROPERTY_VARIATION(thisProperty, thisMission, iDontReset)
|
|
|
|
PROPERTY_SAVED_BIT_ENUM checkTrackVar[3]
|
|
PROPERTY_MISSION_SUB_VAR_ENUM checkSubVar[9]
|
|
|
|
REPEAT COUNT_OF(checkTrackVar) i
|
|
checkTrackVar[i] = PROPERTY_SAVED_BIT_VAR_TRACK_NO_TRACK
|
|
ENDREPEAT
|
|
|
|
REPEAT COUNT_OF(checkSubVar) i
|
|
checkSubVar[i] = PROPERTY_MISSION_SUB_VAR_NO_TRACK
|
|
ENDREPEAT
|
|
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_CAR_SCRAP_YARD
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DEFEND
|
|
checkSubVar[0] = PROPERTY_MISSION_SUB_VAR_DEFEND_1
|
|
checkSubVar[1] = PROPERTY_MISSION_SUB_VAR_DEFEND_2
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_WEED_SHOP
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
checkTrackVar[0] = PROPERTY_SAVED_BIT_VAR_TRACK_WEED_TIMED
|
|
checkTrackVar[2] = PROPERTY_SAVED_BIT_VAR_TRACK_WEED_LOSE_COPS
|
|
checkTrackVar[1] = PROPERTY_SAVED_BIT_VAR_TRACK_WEED_RECOVER_VAN
|
|
|
|
checkSubVar[0] = PROPERTY_MISSION_SUB_VAR_WEED_TIMED_1
|
|
checkSubVar[1] = PROPERTY_MISSION_SUB_VAR_WEED_TIMED_2
|
|
checkSubVar[2] = PROPERTY_MISSION_SUB_VAR_WEED_TIMED_3
|
|
checkSubVar[3] = PROPERTY_MISSION_SUB_VAR_WEED_LOSE_COPS_1
|
|
checkSubVar[4] = PROPERTY_MISSION_SUB_VAR_WEED_LOSE_COPS_2
|
|
checkSubVar[5] = PROPERTY_MISSION_SUB_VAR_WEED_RECOVER_VAN_1
|
|
checkSubVar[6] = PROPERTY_MISSION_SUB_VAR_WEED_RECOVER_VAN_2
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_TAXI_LOT
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_TAXI
|
|
checkSubVar[0] = PROPERTY_MISSION_SUB_VAR_TAXI_CLOWN_CAR
|
|
checkSubVar[1] = PROPERTY_MISSION_SUB_VAR_TAXI_CUT_YOU_IN
|
|
checkSubVar[2] = PROPERTY_MISSION_SUB_VAR_TAXI_DEADLINE
|
|
checkSubVar[3] = PROPERTY_MISSION_SUB_VAR_TAXI_FOLLOW_CAR
|
|
checkSubVar[4] = PROPERTY_MISSION_SUB_VAR_TAXI_GOT_YOU_NOW
|
|
checkSubVar[5] = PROPERTY_MISSION_SUB_VAR_TAXI_GOT_YOUR_BACK
|
|
checkSubVar[6] = PROPERTY_MISSION_SUB_VAR_TAXI_NEEDS_EXCITEMENT
|
|
checkSubVar[7] = PROPERTY_MISSION_SUB_VAR_TAXI_TAKE_IT_EASY
|
|
checkSubVar[8] = PROPERTY_MISSION_SUB_VAR_TAXI_TAKE_TO_BEST
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
checkTrackVar[0] = PROPERTY_SAVED_BIT_VAR_TRACK_CINEMA_RECOVER_STOLEN
|
|
checkTrackVar[1] = PROPERTY_SAVED_BIT_VAR_TRACK_CINEMA_PLANE_PROMOTION
|
|
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_PLANE_PROMOTION
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
checkSubVar[0] = PROPERTY_MISSION_SUB_VAR_CINEMA_RECOVER_STOLEN_TAKINGS
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
CASE PROPERTY_BAR_PITCHERS
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
checkTrackVar[0] = PROPERTY_SAVED_BIT_VAR_TRACK_BAR_RECOVER_STOLEN
|
|
checkTrackVar[1] = PROPERTY_SAVED_BIT_VAR_TRACK_BAR_GANG_ATTACK
|
|
checkTrackVar[2] = PROPERTY_SAVED_BIT_VAR_TRACK_BAR_DELIVERY
|
|
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_GANG_ATTACK
|
|
checkSubVar[0] = PROPERTY_MISSION_SUB_VAR_GANG_ATTACK_STAYS_AND_FIGHTS
|
|
checkSubVar[1] = PROPERTY_MISSION_SUB_VAR_GANG_ATTACK_FLEES_ON_SIGHT
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
checkSubVar[0] = PROPERTY_MISSION_SUB_VAR_BAR_RECOVER_STOLEN_TAKINGS
|
|
checkSubVar[1] = PROPERTY_MISSION_SUB_VAR_BAR_RECOVER_STOLEN_PAPARAZZI
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
// check to see if track vars should reset
|
|
REPEAT COUNT_OF(checkTrackVar) i
|
|
IF checkTrackVar[i] <> PROPERTY_SAVED_BIT_VAR_TRACK_NO_TRACK
|
|
IF IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sPropertyData.iBit, checkTrackVar[i])
|
|
iTrackDone++
|
|
//CDEBUG1LN(DEBUG_PROPERTY, "Add to iTrackDone")
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
IF iTrackDone >= GET_NUMBER_OF_MISSIONS_FOR_PROPERTY(thisProperty)
|
|
//CDEBUG1LN(DEBUG_PROPERTY, "Reset all")
|
|
REPEAT COUNT_OF(checkTrackVar) i
|
|
IF checkTrackVar[i] <> thisTrackVar
|
|
AND checkTrackVar[i] <> PROPERTY_SAVED_BIT_VAR_TRACK_NO_TRACK
|
|
//CDEBUG1LN(DEBUG_PROPERTY, "Reset specific", i)
|
|
CLEAR_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.iBit, checkTrackVar[i])
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDIF
|
|
|
|
// check to see if subvars should reset
|
|
REPEAT COUNT_OF(checkSubVar) i
|
|
IF checkSubVar[i] <> PROPERTY_MISSION_SUB_VAR_NO_TRACK
|
|
IF IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sPropertyData.iSubVarBit, checkSubVar[i])
|
|
iSubVarDone++
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
INT iToReset = GET_NUMBER_OF_MANAGEMENT_VARIATIONS_COMPLETED_TO_RESET(thisProperty, thisMission)
|
|
IF iSubVarDone >= iToReset
|
|
REPEAT COUNT_OF(checkSubVar) i
|
|
IF (checkSubVar[i] <> thisSubVar OR iToReset = 1)
|
|
AND checkSubVar[i] <> PROPERTY_MISSION_SUB_VAR_NO_TRACK
|
|
CLEAR_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.iSubVarBit, checkSubVar[i])
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
// next event time
|
|
PROC SET_NEXT_PROPERTY_MANAGEMENT_EVENT_TIME(PROPERTY_ACTION_ENUM thisAction)
|
|
INT iAdvanceDay
|
|
INT iAdvanceHour
|
|
INT iAdvanceMinute
|
|
BOOL bRandomAdvanceHourMinute = TRUE
|
|
|
|
SWITCH thisAction
|
|
CASE PROPERTY_ACTION_FINISHED_MANAGEMENT_EVENT
|
|
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_MICHAEL_3)
|
|
iAdvanceDay = GET_RANDOM_INT_IN_RANGE(3,5)
|
|
ELSE
|
|
iAdvanceDay = GET_RANDOM_INT_IN_RANGE(6,7)
|
|
ENDIF
|
|
BREAK
|
|
CASE PROPERTY_ACTION_IGNORED_MANAGEMENT_EVENT
|
|
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_MICHAEL_3)
|
|
iAdvanceDay = GET_RANDOM_INT_IN_RANGE(3,5)
|
|
ELSE
|
|
iAdvanceDay = GET_RANDOM_INT_IN_RANGE(6,7)
|
|
ENDIF
|
|
BREAK
|
|
CASE PROPERTY_ACTION_DELAY_FOR_MISSION
|
|
iAdvanceDay = 0//GET_RANDOM_INT_IN_RANGE(0,2)
|
|
bRandomAdvanceHourMinute = FALSE
|
|
iAdvanceHour = 0
|
|
iAdvanceMinute = GET_RANDOM_INT_IN_RANGE(0,60)
|
|
BREAK
|
|
CASE PROPERTY_ACTION_GENERAL_DELAY
|
|
iAdvanceDay = 0
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
IF bRandomAdvanceHourMinute
|
|
iAdvanceHour = GET_RANDOM_INT_IN_RANGE(0,24)
|
|
iAdvanceMinute = GET_RANDOM_INT_IN_RANGE(0,60)
|
|
ENDIF
|
|
|
|
TIMEOFDAY potentialNextTimeOfDay = GET_CURRENT_TIMEOFDAY()
|
|
#IF IS_DEBUG_BUILD
|
|
TEXT_LABEL_63 tlNow = TIMEOFDAY_TO_TEXT_LABEL(potentialNextTimeOfDay)
|
|
CDEBUG1LN(debug_property,tlNow,": Next property event CHECK for action #",thisAction," is in ",iAdvanceDay," days, ",iAdvanceHour,"h ",iAdvanceMinute,"m")
|
|
#ENDIF
|
|
ADD_TIME_TO_TIMEOFDAY(potentialNextTimeOfDay, 0, iAdvanceMinute, iAdvanceHour, iAdvanceDay)
|
|
|
|
IF IS_TIMEOFDAY_AFTER_TIMEOFDAY(potentialNextTimeOfDay, g_savedGlobals.sPropertyData.nextCheckManagementEventTime)
|
|
g_savedGlobals.sPropertyData.nextCheckManagementEventTime = potentialNextTimeOfDay
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
// next event time specific to a property
|
|
PROC SET_NEXT_MANAGEMENT_EVENT_TIME_FOR_PROPERTY(PROPERTY_ENUM thisProperty, PROPERTY_ACTION_ENUM thisAction)
|
|
INT iAdvanceDay
|
|
INT iAdvanceHour
|
|
INT iAdvanceMinute
|
|
|
|
SWITCH thisAction
|
|
CASE PROPERTY_ACTION_FINISHED_MANAGEMENT_EVENT
|
|
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_MICHAEL_3)
|
|
iAdvanceDay = GET_RANDOM_INT_IN_RANGE(5,7)
|
|
ELSE
|
|
iAdvanceDay = GET_RANDOM_INT_IN_RANGE(7,9)
|
|
ENDIF
|
|
iAdvanceHour = GET_RANDOM_INT_IN_RANGE(0,24)
|
|
iAdvanceMinute = GET_RANDOM_INT_IN_RANGE(0,60)
|
|
BREAK
|
|
CASE PROPERTY_ACTION_PURCHASED_PROPERTY
|
|
iAdvanceDay = 0
|
|
iAdvanceHour = GET_RANDOM_INT_IN_RANGE(12,15)
|
|
iAdvanceMinute = GET_RANDOM_INT_IN_RANGE(0,60)
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
TIMEOFDAY potentialNextTimeOfDay = GET_CURRENT_TIMEOFDAY()
|
|
#IF IS_DEBUG_BUILD
|
|
TEXT_LABEL_63 tlNow = TIMEOFDAY_TO_TEXT_LABEL(potentialNextTimeOfDay)
|
|
CDEBUG1LN(debug_property,tlNow,": Next potential property event for property #",thisProperty," action #",thisAction," is in ",iAdvanceDay," days, ",iAdvanceHour,"h",iAdvanceMinute,"m")
|
|
#ENDIF
|
|
ADD_TIME_TO_TIMEOFDAY(potentialNextTimeOfDay, 0, iAdvanceMinute, iAdvanceHour, iAdvanceDay)
|
|
|
|
IF IS_TIMEOFDAY_AFTER_TIMEOFDAY(potentialNextTimeOfDay, g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].nextManagementEventTime)
|
|
g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].nextManagementEventTime = potentialNextTimeOfDay
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
// set the property blip position
|
|
PROC SET_PROPERTY_BLIP_POSITION(PROPERTY_ENUM thisProperty)
|
|
IF thisProperty = PROPERTY_ARMS_TRAFFICKING
|
|
VECTOR vPos
|
|
|
|
IF g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner = NO_CHARACTER
|
|
vPos = GET_PROPERTY_PURCHASE_COORDS(PROPERTY_ARMS_TRAFFICKING)
|
|
ELSE
|
|
vPos = <<2151.25024, 4773.05518, 40.30271>>
|
|
ENDIF
|
|
|
|
SET_STATIC_BLIP_POSITION(GET_BLIP_ENUM_FOR_PROPERTY(thisProperty), vPos)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
// get property name string
|
|
FUNC STRING GET_PROPERTY_NAME_STRING(PROPERTY_ENUM thisProperty)
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_ARMS_TRAFFICKING
|
|
RETURN "PN_TRAF"
|
|
BREAK
|
|
CASE PROPERTY_CAR_SCRAP_YARD
|
|
RETURN "PN_CSCR"
|
|
BREAK
|
|
CASE PROPERTY_WEED_SHOP
|
|
RETURN "PN_WEED"
|
|
BREAK
|
|
CASE PROPERTY_TAXI_LOT
|
|
RETURN "PN_TAXI"
|
|
BREAK
|
|
CASE PROPERTY_CAR_MOD_SHOP
|
|
RETURN "PN_CMSH"
|
|
BREAK
|
|
CASE PROPERTY_SONAR_COLLECTIONS
|
|
RETURN "PN_SOCO"
|
|
BREAK
|
|
CASE PROPERTY_TOWING_IMPOUND
|
|
RETURN "PN_TOWI"
|
|
BREAK
|
|
CASE PROPERTY_GOLF_CLUB
|
|
RETURN "PN_GOLF"
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
RETURN "PN_CINV"
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
RETURN "PN_CIND"
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
RETURN "PN_CINM"
|
|
BREAK
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
RETURN "PN_BRTE"
|
|
BREAK
|
|
CASE PROPERTY_BAR_PITCHERS
|
|
RETURN "PN_BRPI"
|
|
BREAK
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
RETURN "PN_BRHE"
|
|
BREAK
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
RETURN "PN_BRHO"
|
|
BREAK
|
|
CASE PROPERTY_STRIP_CLUB
|
|
RETURN "PN_STRP"
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN "error"
|
|
ENDFUNC
|
|
|
|
// get property cost string
|
|
FUNC STRING GET_PROPERTY_COST_STRING(PROPERTY_ENUM thisProperty)
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_ARMS_TRAFFICKING
|
|
RETURN"PROPR_CO_TRAF"
|
|
BREAK
|
|
CASE PROPERTY_CAR_SCRAP_YARD
|
|
RETURN"PROPR_CO_CSCR"
|
|
BREAK
|
|
CASE PROPERTY_WEED_SHOP
|
|
RETURN"PROPR_CO_WEED"
|
|
BREAK
|
|
CASE PROPERTY_TAXI_LOT
|
|
RETURN"PROPR_CO_TAXI"
|
|
BREAK
|
|
CASE PROPERTY_CAR_MOD_SHOP
|
|
RETURN"PROPR_CO_CMSH"
|
|
BREAK
|
|
CASE PROPERTY_SONAR_COLLECTIONS
|
|
RETURN"PROPR_CO_SOCO"
|
|
BREAK
|
|
CASE PROPERTY_TOWING_IMPOUND
|
|
RETURN"PROPR_CO_TOWI"
|
|
BREAK
|
|
CASE PROPERTY_GOLF_CLUB
|
|
RETURN"PROPR_CO_GOLF"
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
RETURN"PROPR_CO_CINV"
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
RETURN"PROPR_CO_CIND"
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
RETURN"PROPR_CO_CICO"
|
|
BREAK
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
RETURN"PROPR_CO_BARTE"
|
|
BREAK
|
|
CASE PROPERTY_BAR_PITCHERS
|
|
RETURN"PROPR_CO_BARPI"
|
|
BREAK
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
RETURN"PROPR_CO_BARHE"
|
|
BREAK
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
RETURN"PROPR_CO_BARHO"
|
|
BREAK
|
|
CASE PROPERTY_STRIP_CLUB
|
|
RETURN"PROPR_CO_STRP"
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN "error"
|
|
ENDFUNC
|
|
|
|
// get property legend string
|
|
FUNC STRING GET_PROPERTY_LEGEND_STRING(PROPERTY_ENUM thisProperty, BOOL bOwned)
|
|
IF bOwned
|
|
RETURN GET_PROPERTY_NAME_STRING(thisProperty)
|
|
ELSE
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_ARMS_TRAFFICKING
|
|
RETURN"B_TRF2"
|
|
BREAK
|
|
CASE PROPERTY_CAR_SCRAP_YARD
|
|
RETURN"B_CSR2"
|
|
BREAK
|
|
CASE PROPERTY_WEED_SHOP
|
|
RETURN"B_WED2"
|
|
BREAK
|
|
CASE PROPERTY_TAXI_LOT
|
|
RETURN"B_TXI2"
|
|
BREAK
|
|
CASE PROPERTY_CAR_MOD_SHOP
|
|
RETURN"B_CMS2"
|
|
BREAK
|
|
CASE PROPERTY_SONAR_COLLECTIONS
|
|
RETURN"B_SOC2"
|
|
BREAK
|
|
CASE PROPERTY_TOWING_IMPOUND
|
|
RETURN"B_TOW2"
|
|
BREAK
|
|
CASE PROPERTY_GOLF_CLUB
|
|
RETURN"B_GLF2"
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
RETURN"B_CIV2"
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
RETURN"B_CID2"
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
RETURN"B_CIM2"
|
|
BREAK
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
RETURN"B_BRT2"
|
|
BREAK
|
|
CASE PROPERTY_BAR_PITCHERS
|
|
RETURN"B_BRP2"
|
|
BREAK
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
RETURN"B_BRH2"
|
|
BREAK
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
RETURN"B_BHO2"
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
|
|
RETURN "error"
|
|
ENDFUNC
|
|
|
|
// blip the property
|
|
PROC BLIP_PROPERTY(PROPERTY_ENUM thisProperty, BOOL bBlip)
|
|
IF bBlip
|
|
IF g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner <> NO_CHARACTER
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_BLIPPED_OWNED)
|
|
|
|
SET_STATIC_BLIP_ACTIVE_STATE(GET_BLIP_ENUM_FOR_PROPERTY(thisProperty), FALSE)
|
|
|
|
INT iBlipColour
|
|
SWITCH g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner
|
|
CASE CHAR_FRANKLIN
|
|
iBlipColour = BLIP_COLOUR_FRANKLIN
|
|
BREAK
|
|
CASE CHAR_MICHAEL
|
|
iBlipColour = BLIP_COLOUR_MICHAEL
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
iBlipColour = BLIP_COLOUR_TREVOR
|
|
BREAK
|
|
ENDSWITCH
|
|
SET_STATIC_BLIP_COLOUR(GET_BLIP_ENUM_FOR_PROPERTY(thisProperty), iBlipColour)
|
|
SET_STATIC_BLIP_ICON(GET_BLIP_ENUM_FOR_PROPERTY(thisProperty), RADAR_TRACE_BUSINESS)
|
|
SET_STATIC_BLIP_NAME(GET_BLIP_ENUM_FOR_PROPERTY(thisProperty), GET_PROPERTY_LEGEND_STRING(thisProperty, TRUE))
|
|
SET_PROPERTY_BLIP_POSITION(thisProperty)
|
|
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_BLIPPED_OWNED)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_BLIPPED_AVAILABLE)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_BLIPPED_UNAVAILABLE)
|
|
|
|
SET_STATIC_BLIP_ACTIVE_STATE(GET_BLIP_ENUM_FOR_PROPERTY(thisProperty), TRUE)
|
|
ENDIF
|
|
ELSE
|
|
enumCharacterList propertyCharacter = GET_CHARACTER_FOR_PROPERTY(thisProperty)
|
|
|
|
IF (propertyCharacter = GET_CURRENT_PLAYER_PED_ENUM()
|
|
OR propertyCharacter = NO_CHARACTER)
|
|
AND NOT (IS_PROPERTY_BLOCKED_FOR_CHARACTER(thisProperty, GET_CURRENT_PLAYER_PED_ENUM()))
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_BLIPPED_AVAILABLE)
|
|
SET_STATIC_BLIP_ACTIVE_STATE(GET_BLIP_ENUM_FOR_PROPERTY(thisProperty), FALSE)
|
|
|
|
SET_STATIC_BLIP_ICON(GET_BLIP_ENUM_FOR_PROPERTY(thisProperty), RADAR_TRACE_BUSINESS_FOR_SALE)
|
|
SET_STATIC_BLIP_COLOUR(GET_BLIP_ENUM_FOR_PROPERTY(thisProperty), BLIP_COLOUR_DEFAULT)
|
|
SET_STATIC_BLIP_NAME(GET_BLIP_ENUM_FOR_PROPERTY(thisProperty), GET_PROPERTY_LEGEND_STRING(thisProperty, FALSE))
|
|
SET_PROPERTY_BLIP_POSITION(thisProperty)
|
|
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_BLIPPED_OWNED)
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_BLIPPED_AVAILABLE)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_BLIPPED_UNAVAILABLE)
|
|
|
|
SET_STATIC_BLIP_ACTIVE_STATE(GET_BLIP_ENUM_FOR_PROPERTY(thisProperty), TRUE)
|
|
ENDIF
|
|
ELSE
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_BLIPPED_UNAVAILABLE)
|
|
SET_STATIC_BLIP_ACTIVE_STATE(GET_BLIP_ENUM_FOR_PROPERTY(thisProperty), FALSE)
|
|
|
|
SET_STATIC_BLIP_ICON(GET_BLIP_ENUM_FOR_PROPERTY(thisProperty), RADAR_TRACE_BUSINESS_FOR_SALE)
|
|
SET_STATIC_BLIP_COLOUR(GET_BLIP_ENUM_FOR_PROPERTY(thisProperty), BLIP_COLOUR_INACTIVE_MISSION)
|
|
SET_STATIC_BLIP_NAME(GET_BLIP_ENUM_FOR_PROPERTY(thisProperty), GET_PROPERTY_LEGEND_STRING(thisProperty, FALSE))
|
|
SET_PROPERTY_BLIP_POSITION(thisProperty)
|
|
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_BLIPPED_OWNED)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_BLIPPED_AVAILABLE)
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_BLIPPED_UNAVAILABLE)
|
|
|
|
SET_STATIC_BLIP_ACTIVE_STATE(GET_BLIP_ENUM_FOR_PROPERTY(thisProperty), TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_BLIPPED_AVAILABLE)
|
|
OR IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_BLIPPED_UNAVAILABLE)
|
|
OR IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_BLIPPED_OWNED)
|
|
SET_STATIC_BLIP_ACTIVE_STATE(GET_BLIP_ENUM_FOR_PROPERTY(thisProperty), FALSE)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_BLIPPED_AVAILABLE)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_BLIPPED_UNAVAILABLE)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_BLIPPED_OWNED)
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
PROC CLEANUP_MISSION_PASSED_SCREEN()
|
|
IF HAS_SCALEFORM_MOVIE_LOADED(g_PropertySystemData.passedScaleform)
|
|
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(g_PropertySystemData.passedScaleform)
|
|
SET_RESULT_SCREEN_DISPLAYING_STATE(FALSE)
|
|
ENDIF
|
|
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAY_MISSION_PASS)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAY_PURCHASED)
|
|
g_PropertySystemData.missionPassedScreenState = PROPERTY_MISSION_PASSED_SCREEN_STATE_NOT_STARTED
|
|
ENDPROC
|
|
|
|
|
|
// release management event entities
|
|
PROC RELEASE_MANAGEMENT_EVENT_ASSETS(BOOL bReleaseEntities = TRUE, BOOL bGrab = FALSE)
|
|
PRINTSTRING("releasing management event assets") PRINTNL()
|
|
|
|
IF g_PropertySystemData.createManagementEventState >= CREATE_MANAGEMENT_EVENT_STATE_LOADING_ASSETS
|
|
SWITCH g_PropertySystemData.currentPropertyManagementMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
RELEASE_DELIVERY_EVENT_ASSETS(g_PropertySystemData.currentPropertyManagementProperty, CONVERT_INT_TO_DELIVERY_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_PLANE_PROMOTION
|
|
RELEASE_PLANE_PROMOTION_EVENT_ASSETS()
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_TAXI
|
|
RELEASE_TAXI_EVENT_ASSETS(CONVERT_INT_TO_TAXI_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
RELEASE_RECOVER_STOLEN_EVENT_ASSETS(g_PropertySystemData.currentPropertyManagementProperty, CONVERT_INT_TO_RECOVER_STOLEN_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_GANG_ATTACK
|
|
RELEASE_GANG_ATTACK_EVENT_ASSETS(g_PropertySystemData.currentPropertyManagementProperty, CONVERT_INT_TO_GANG_ATTACK_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
|
|
IF bReleaseEntities
|
|
INT i
|
|
REPEAT NUMBER_PROPERTY_MANAGEMENT_VEHICLES i
|
|
IF DOES_ENTITY_EXIST(g_PropertySystemData.managementEventVehicle[i])
|
|
IF bGrab
|
|
SET_ENTITY_AS_MISSION_ENTITY(g_PropertySystemData.managementEventVehicle[i], TRUE, TRUE)
|
|
ENDIF
|
|
|
|
IF IS_ENTITY_A_MISSION_ENTITY(g_PropertySystemData.managementEventVehicle[i])
|
|
IF NOT IS_ENTITY_DEAD(g_PropertySystemData.managementEventVehicle[i])
|
|
IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(g_PropertySystemData.managementEventVehicle[i])
|
|
SET_VEHICLE_AS_NO_LONGER_NEEDED(g_PropertySystemData.managementEventVehicle[i])
|
|
ENDIF
|
|
ELSE
|
|
SET_VEHICLE_AS_NO_LONGER_NEEDED(g_PropertySystemData.managementEventVehicle[i])
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
REPEAT NUMBER_PROPERTY_MANAGEMENT_PEDS i
|
|
IF DOES_ENTITY_EXIST(g_PropertySystemData.managementEventPed[i])
|
|
IF bGrab
|
|
SET_ENTITY_AS_MISSION_ENTITY(g_PropertySystemData.managementEventPed[i], TRUE, TRUE)
|
|
ENDIF
|
|
|
|
IF IS_ENTITY_A_MISSION_ENTITY(g_PropertySystemData.managementEventPed[i])
|
|
IF NOT IS_ENTITY_DEAD(g_PropertySystemData.managementEventPed[i])
|
|
IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(g_PropertySystemData.managementEventPed[i])
|
|
SET_PED_AS_NO_LONGER_NEEDED(g_PropertySystemData.managementEventPed[i])
|
|
ENDIF
|
|
ELSE
|
|
SET_PED_AS_NO_LONGER_NEEDED(g_PropertySystemData.managementEventPed[i])
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDIF
|
|
|
|
g_PropertySystemData.createManagementEventState = CREATE_MANAGEMENT_EVENT_STATE_NOT_STARTED
|
|
ENDPROC
|
|
|
|
PROC RESET_PROPERTIES_FOR_MP()
|
|
// TEMP - remove the property blip if one exists, reset the system to waiting
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_RUN_CUTSCENE)
|
|
END_PROPERTY_CUTSCENE(g_PropertySystemData.runCutsceneProperty)
|
|
ENDIF
|
|
|
|
IF DOES_BLIP_EXIST(g_PropertySystemData.propertyManagementBlip)
|
|
REMOVE_BLIP(g_PropertySystemData.propertyManagementBlip)
|
|
ENDIF
|
|
|
|
RELEASE_MANAGEMENT_EVENT_ASSETS(TRUE, TRUE)
|
|
RESET_PROPERTY_ASSET_STREAMING()
|
|
RESET_FOR_SALE_SIGN_CREATE_STATE(FALSE, TRUE)
|
|
|
|
IF DOES_ENTITY_EXIST(g_PropertySystemData.veh[0])
|
|
SET_ENTITY_AS_MISSION_ENTITY(g_PropertySystemData.veh[0], TRUE, TRUE)
|
|
SET_VEHICLE_AS_NO_LONGER_NEEDED(g_PropertySystemData.veh[0])
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(g_PropertySystemData.veh[1])
|
|
SET_ENTITY_AS_MISSION_ENTITY(g_PropertySystemData.veh[1], TRUE, TRUE)
|
|
SET_VEHICLE_AS_NO_LONGER_NEEDED(g_PropertySystemData.veh[1])
|
|
ENDIF
|
|
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SEND_FAIL_TEXT)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SEND_PASS_TEXT)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAY_MISSION_PASS)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAY_PURCHASED)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_RUN_CUTSCENE)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SETUP_CUTSCENE)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYING_MOCAP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_CLEARED_FOR_MOCAP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DONE_PURCHASE_SOUND)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_BLIPPED_MANAGEMENT_EVENT)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_CALL_RESPOND)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_RECEIVED_CALL)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_LAUNCH_AMBIENT_SCRIPT)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_PURCHASE_HELP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_NO_MONEY_HELP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_CONFIRM_HELP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_WRONG_CHAR_HELP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_CONFIRM_PURCHASE)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SUPPRESS_FOR_SALE_SIGNS)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYED_PASS_SOUND)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SUPPRESS_AIRPORT_RESTRICTED)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TRAFFICKING_ASSETS)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DO_RESET_TO_WAITING)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_TEXT_VIEW)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAY_PURCHASED)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TOWING_ASSETS)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_RESET_FOR_MULTIPLAYER)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_GOLF_CLUB_ASSETS)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYED_BOUGHT_SOUND)
|
|
|
|
CLEANUP_MISSION_PASSED_SCREEN()
|
|
|
|
g_PropertySystemData.propertyManagementState = PROPERTY_MANAGEMENT_STATE_WAITING
|
|
|
|
PRINTSTRING("reset properties for MP") PRINTNL()
|
|
ENDPROC
|
|
|
|
// property specific stuff on availability
|
|
PROC DO_PROPERTY_SPECIFIC_AVAILABLE_ACTIONS(PROPERTY_ENUM thisProperty)
|
|
/*
|
|
SWITCH thisProperty
|
|
// tonya text to see if
|
|
CASE PROPERTY_TOWING_IMPOUND
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sPropertyData.iBit, PROPERTY_SAVED_BIT_ENABLED_TOWING_VEH_GEN)
|
|
SET_VEHICLE_GEN_AVAILABLE(VEHGEN_IMPOUND_TOW_TRUCK, TRUE)
|
|
SET_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.iBit, PROPERTY_SAVED_BIT_ENABLED_TOWING_VEH_GEN)
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
*/
|
|
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].iBit, PROPERTY_BIT_SENT_EMAIL)
|
|
INT iOwnerBit
|
|
BOOL bIsCall = FALSE
|
|
BOOL bIsNoComm = FALSE
|
|
CC_CommID thisComm
|
|
enumCharacterList fromChar
|
|
INT iSpeaker
|
|
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_TOWING_IMPOUND
|
|
thisComm = EMAIL_PRO_TOWING_IMPOUND_F
|
|
fromChar = CHAR_PROPERTY_TOWING_IMPOUND
|
|
BREAK
|
|
CASE PROPERTY_TAXI_LOT
|
|
bIsCall = TRUE
|
|
thisComm = CALL_PROP_TAXI_F
|
|
iSpeaker = 3
|
|
fromChar = CHAR_PROPERTY_TAXI_LOT
|
|
BREAK
|
|
CASE PROPERTY_ARMS_TRAFFICKING
|
|
bIsNoComm = TRUE
|
|
BREAK
|
|
CASE PROPERTY_SONAR_COLLECTIONS
|
|
SWITCH g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner
|
|
CASE CHAR_MICHAEL
|
|
thisComm = EMAIL_PRO_SONAR_COLLECTIONS_M
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
thisComm = EMAIL_PRO_SONAR_COLLECTIONS_T
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
thisComm = EMAIL_PRO_SONAR_COLLECTIONS_F
|
|
BREAK
|
|
ENDSWITCH
|
|
fromChar = CHAR_PROPERTY_SONAR_COLLECTIONS
|
|
BREAK
|
|
CASE PROPERTY_CAR_MOD_SHOP
|
|
thisComm = EMAIL_PRO_CAR_MOD_SHOP_F
|
|
fromChar = CHAR_PROPERTY_CAR_MOD_SHOP
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
thisComm = EMAIL_PRO_CINEMA_VINEWOOD_M
|
|
fromChar = CHAR_PROPERTY_CINEMA_VINEWOOD
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
thisComm = EMAIL_PRO_CINEMA_DOWNTOWN_M
|
|
fromChar = CHAR_PROPERTY_CINEMA_DOWNTOWN
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
bIsCall = TRUE
|
|
thisComm = CALL_PROP_CINEMA_M
|
|
iSpeaker = 4
|
|
fromChar = CHAR_PROPERTY_CINEMA_MORNINGWOOD
|
|
BREAK
|
|
CASE PROPERTY_GOLF_CLUB
|
|
SWITCH g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner
|
|
CASE CHAR_MICHAEL
|
|
bIsCall = TRUE
|
|
thisComm = CALL_PROP_GOLF_M
|
|
iSpeaker = 3
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
bIsCall = TRUE
|
|
thisComm = CALL_PROP_GOLF_T
|
|
iSpeaker = 3
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
bIsCall = TRUE
|
|
thisComm = CALL_PROP_GOLF_F
|
|
iSpeaker = 3
|
|
BREAK
|
|
ENDSWITCH
|
|
fromChar = CHAR_PROPERTY_GOLF_CLUB
|
|
BREAK
|
|
CASE PROPERTY_CAR_SCRAP_YARD
|
|
SWITCH g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner
|
|
CASE CHAR_MICHAEL
|
|
thisComm = EMAIL_PRO_CAR_SCRAP_YARD_M
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
thisComm = EMAIL_PRO_CAR_SCRAP_YARD_T
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
thisComm = EMAIL_PRO_CAR_SCRAP_YARD_F
|
|
BREAK
|
|
ENDSWITCH
|
|
fromChar = CHAR_PROPERTY_CAR_SCRAP_YARD
|
|
BREAK
|
|
CASE PROPERTY_WEED_SHOP
|
|
thisComm = EMAIL_PRO_WEED_SHOP_F
|
|
fromChar = CHAR_PROPERTY_WEED_SHOP
|
|
BREAK
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
SWITCH g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner
|
|
CASE CHAR_MICHAEL
|
|
thisComm = EMAIL_PRO_BAR_TEQUILALA_M
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
thisComm = EMAIL_PRO_BAR_TEQUILALA_T
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
thisComm = EMAIL_PRO_BAR_TEQUILALA_F
|
|
BREAK
|
|
ENDSWITCH
|
|
fromChar = CHAR_PROPERTY_BAR_TEQUILALA
|
|
BREAK
|
|
CASE PROPERTY_BAR_PITCHERS
|
|
SWITCH g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner
|
|
CASE CHAR_MICHAEL
|
|
thisComm = EMAIL_PRO_BAR_PITCHERS_M
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
thisComm = EMAIL_PRO_BAR_PITCHERS_T
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
thisComm = EMAIL_PRO_BAR_PITCHERS_F
|
|
BREAK
|
|
ENDSWITCH
|
|
fromChar = CHAR_PROPERTY_BAR_PITCHERS
|
|
BREAK
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
SWITCH g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner
|
|
CASE CHAR_MICHAEL
|
|
thisComm = EMAIL_PRO_BAR_HEN_HOUSE_M
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
thisComm = EMAIL_PRO_BAR_HEN_HOUSE_T
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
thisComm = EMAIL_PRO_BAR_HEN_HOUSE_F
|
|
BREAK
|
|
ENDSWITCH
|
|
fromChar = CHAR_PROPERTY_BAR_HEN_HOUSE
|
|
BREAK
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
SWITCH g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner
|
|
CASE CHAR_MICHAEL
|
|
thisComm = EMAIL_PRO_BAR_HOOKIES_M
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
thisComm = EMAIL_PRO_BAR_HOOKIES_F
|
|
BREAK
|
|
ENDSWITCH
|
|
fromChar = CHAR_PROPERTY_BAR_HOOKIES
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
SWITCH g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner
|
|
CASE CHAR_MICHAEL
|
|
iOwnerBit = BIT_MICHAEL
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
iOwnerBit = BIT_FRANKLIN
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
iOwnerBit = BIT_TREVOR
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
IF NOT bIsNoComm
|
|
IF NOT bIsCall
|
|
IF REGISTER_EMAIL_FROM_CHARACTER_TO_PLAYER( thisComm,
|
|
CT_FRIEND,
|
|
iOwnerBit,
|
|
fromChar,
|
|
10000,
|
|
10000,
|
|
VID_BLANK,
|
|
CID_BLANK,
|
|
FLOW_CHECK_NONE,
|
|
BIT_NONCRIT_TXTMSG)
|
|
|
|
|
|
SET_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].iBit, PROPERTY_BIT_SENT_EMAIL)
|
|
ENDIF
|
|
ELSE
|
|
IF REGISTER_CALL_FROM_CHARACTER_TO_PLAYER(thisComm,
|
|
CT_FRIEND,
|
|
iOwnerBit,
|
|
fromChar,
|
|
iSpeaker,
|
|
0,
|
|
10000,
|
|
COMM_NONE,
|
|
VID_BLANK,
|
|
CID_BLANK,
|
|
FLOW_CHECK_NONE,
|
|
COMM_FLAG_CALL_ADD_TEMP_CONTACT | COMM_FLAG_DONT_SAVE)
|
|
|
|
SET_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].iBit, PROPERTY_BIT_SENT_EMAIL)
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
SET_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].iBit, PROPERTY_BIT_SENT_EMAIL)
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
// property specific stuff on unavailability
|
|
PROC DO_PROPERTY_SPECIFIC_UNAVAILABLE_ACTIONS(PROPERTY_ENUM thisProperty)
|
|
SWITCH thisProperty
|
|
// tonya text to see if
|
|
CASE PROPERTY_TOWING_IMPOUND
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sPropertyData.iBit, PROPERTY_SAVED_BIT_OFFERED_TOWING_IMPOUND)
|
|
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_TREVOR_3)
|
|
AND IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_TONYA_5)
|
|
IF NOT IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_PROPERTY_PURCHASE_COORDS(PROPERTY_TOWING_IMPOUND), <<300,300,300>>, FALSE, FALSE)
|
|
|
|
IF REGISTER_CALL_FROM_CHARACTER_TO_PLAYER(CALL_PROP_TOWING,
|
|
CT_FRIEND,
|
|
BIT_FRANKLIN,
|
|
CHAR_TOW_TONYA,
|
|
3,
|
|
0,
|
|
10000)
|
|
|
|
SET_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.iBit, PROPERTY_SAVED_BIT_OFFERED_TOWING_IMPOUND)
|
|
ENDIF
|
|
|
|
/*
|
|
IF REGISTER_CALL_FROM_CHARACTER_TO_PLAYER(
|
|
ePropertyCallID,
|
|
eYesReponse,
|
|
eNoReponse,
|
|
CT_FRIEND,
|
|
GET_CURRENT_PLAYER_PED_BIT(),
|
|
GET_CONTACT_CHARACTER_FOR_PROPERTY(g_PropertySystemData.currentPropertyManagementProperty),
|
|
3,
|
|
0,
|
|
10000,
|
|
COMM_NONE,
|
|
VID_BLANK,
|
|
CID_BLANK,
|
|
FLOW_CHECK_NONE,
|
|
COMM_FLAG_CALL_ADD_TEMP_CONTACT | COMM_FLAG_DONT_SAVE)
|
|
|
|
g_PropertySystemData.sManagementCommsID = ePropertyCallID
|
|
|
|
CDEBUG1LN(DEBUG_PROPERTY, "Call registered, waiting on call respond")
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_RECEIVED_CALL)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_TEXT_VIEW)
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_CALL_RESPOND)
|
|
bSetPending = TRUE
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
IF REGISTER_TEXT_MESSAGE_FROM_CHARACTER_TO_PLAYER(
|
|
TEXT_PROP_UNAV_TOWING,
|
|
CT_FRIEND,
|
|
BIT_FRANKLIN,
|
|
CHAR_TOW_TONYA,
|
|
0)
|
|
|
|
ENDIF
|
|
*/
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
// check to see if a property available and blip if so
|
|
PROC UPDATE_PROPERTY_AVAILABILITY(PROPERTY_ENUM thisProperty)
|
|
IF thisProperty <> PROPERTY_STRIP_CLUB
|
|
IF g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner = NO_CHARACTER
|
|
IF IS_PROPERTY_AVAILABLE(thisProperty)
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_AVAILABLE_FOR_SALE)
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_AVAILABLE_FOR_SALE)
|
|
ENDIF
|
|
|
|
BLIP_PROPERTY(thisProperty, TRUE)
|
|
ELSE
|
|
DO_PROPERTY_SPECIFIC_UNAVAILABLE_ACTIONS(thisProperty)
|
|
BLIP_PROPERTY(thisProperty, FALSE)
|
|
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_AVAILABLE_FOR_SALE)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_AVAILABLE_FOR_SALE)
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
DO_PROPERTY_SPECIFIC_AVAILABLE_ACTIONS(thisProperty)
|
|
BLIP_PROPERTY(thisProperty, TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
// get the text to display on success splash
|
|
FUNC STRING GET_PROPERTY_SUCCESS_SPLASH_STRING(PROPERTY_ENUM thisProperty, PROPERTY_MANAGEMENT_MISSION_ENUM thisMission, INT iThisVariation)
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
IF thisProperty = PROPERTY_WEED_SHOP
|
|
RETURN "PROPR_SUC_WEED"
|
|
ELSE
|
|
RETURN "PROPR_SUC_BOOD"
|
|
ENDIF
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DEFEND
|
|
RETURN "PROPR_SUC_SCRD"
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
SWITCH CONVERT_INT_TO_RECOVER_STOLEN_VARIATION(thisProperty, iThisVariation)
|
|
CASE RECOVER_STOLEN_MISSION_VARIATION_TAKINGS
|
|
IF thisProperty = PROPERTY_CINEMA_VINEWOOD
|
|
OR thisProperty = PROPERTY_CINEMA_MORNINGWOOD
|
|
OR thisProperty = PROPERTY_CINEMA_DOWNTOWN
|
|
RETURN "PROPR_SUC_CITR"
|
|
ELSE
|
|
RETURN "PROPR_SUC_BATR"
|
|
ENDIF
|
|
BREAK
|
|
// CASE RECOVER_STOLEN_MISSION_VARIATION_FILM
|
|
// RETURN "PROPR_SUC_FIRR"
|
|
// BREAK
|
|
CASE RECOVER_STOLEN_MISSION_VARIATION_PAP
|
|
RETURN "PROPR_SUC_PHOR"
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_GANG_ATTACK
|
|
RETURN "PROPR_SUC_BARD"
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_PLANE_PROMOTION
|
|
RETURN "PROPR_SUC_CPRO"
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN "error"
|
|
ENDFUNC
|
|
|
|
// handle 100%
|
|
PROC UPDATE_PROPERTY_100_PERCENT_STATUS()
|
|
INT i
|
|
INT iCount = 0
|
|
|
|
REPEAT COUNT_OF(PROPERTY_ENUM) i
|
|
IF INT_TO_ENUM(PROPERTY_ENUM, i) <> PROPERTY_STRIP_CLUB
|
|
IF g_savedGlobals.sPropertyData.propertyOwnershipData[i].charOwner <> NO_CHARACTER
|
|
iCount++
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
PRINTSTRING("property purchase count = ") PRINTINT(iCount) PRINTNL()
|
|
IF iCount >= 5
|
|
REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL (CP_PRPTY)
|
|
PRINTSTRING("set property 100% completion") PRINTNL()
|
|
ENDIF
|
|
|
|
IF iCount >= COUNT_OF(PROPERTY_ENUM) - 1
|
|
REQUEST_SYSTEM_ACTIVITY_TYPE_PURCHASED_ALL_PROPERTIES() // 1943758 - feed
|
|
IF FACEBOOK_CAN_POST_TO_FACEBOOK()
|
|
FACEBOOK_POST_COMPLETED_MILESTONE(FACEBOOK_MILESTONE_PROPERTIES)
|
|
SHOW_FACEBOOK_MILESTONE_FEED_MESSAGE(FACEBOOK_MILESTONE_PROPERTIES)
|
|
PRINTSTRING("post property facebook milestone") PRINTNL()
|
|
ELSE
|
|
PRINTSTRING("did not post property facebook milestone as turned off") PRINTNL()
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
// handle buy property
|
|
PROC UPDATE_PROPERTY_PURCHASE(BOOL bCanPurchase)
|
|
BOOL bShouldDisplayPurchaseHelp = FALSE
|
|
|
|
|
|
PROPERTY_ENUM tickProperty = INT_TO_ENUM(PROPERTY_ENUM, g_PropertySystemData.iTick)
|
|
IF bCanPurchase
|
|
IF g_savedGlobals.sPropertyData.propertyOwnershipData[tickProperty].charOwner = NO_CHARACTER
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iPropertyBit[tickProperty], PROPERTY_UNSAVED_BIT_AVAILABLE_FOR_SALE)
|
|
//IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_PROPERTY_PURCHASE_COORDS(thisProperty), <<LONG_RANGE_PURCHASE_DISTANCE,LONG_RANGE_PURCHASE_DISTANCE,LONG_RANGE_PURCHASE_DISTANCE>>, FALSE, FALSE)
|
|
IF VDIST2(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_PROPERTY_PURCHASE_COORDS(tickProperty)) < LONG_RANGE_PURCHASE_DISTANCE_SQUARED
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[tickProperty], PROPERTY_UNSAVED_BIT_RUN_LOCATE_CHECK)
|
|
HINT_SCRIPT_AUDIO_BANK("HUD_PROPERTY")
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[tickProperty], PROPERTY_UNSAVED_BIT_RUN_LOCATE_CHECK)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[tickProperty], PROPERTY_UNSAVED_BIT_CREATED_FOR_SALE_SIGN)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[tickProperty], PROPERTY_UNSAVED_BIT_RUN_LOCATE_CHECK)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[tickProperty], PROPERTY_UNSAVED_BIT_CREATED_FOR_SALE_SIGN)
|
|
ENDIF
|
|
|
|
INT i
|
|
REPEAT COUNT_OF(PROPERTY_ENUM) i
|
|
PROPERTY_ENUM thisProperty = INT_TO_ENUM(PROPERTY_ENUM, i)
|
|
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_RUN_LOCATE_CHECK)
|
|
// create for sale sign
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_CREATED_FOR_SALE_SIGN)
|
|
IF VDIST2(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_PROPERTY_PURCHASE_COORDS(thisProperty)) < LONG_RANGE_PURCHASE_DISTANCE_SQUARED
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SUPPRESS_FOR_SALE_SIGNS)
|
|
SWITCH g_PropertySystemData.createForSaleSignState
|
|
CASE CREATE_FOR_SALE_SIGN_STATE_NOT_STARTED
|
|
REQUEST_MODEL(GET_PROPERTY_FOR_SALE_SIGN_MODEL())
|
|
g_PropertySystemData.createForSaleSignState = CREATE_FOR_SALE_SIGN_STATE_LOADING_MODEL
|
|
BREAK
|
|
|
|
CASE CREATE_FOR_SALE_SIGN_STATE_LOADING_MODEL
|
|
IF HAS_MODEL_LOADED(GET_PROPERTY_FOR_SALE_SIGN_MODEL())
|
|
g_PropertySystemData.createForSaleSignState = CREATE_FOR_SALE_SIGN_STATE_DONE
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE CREATE_FOR_SALE_SIGN_STATE_DONE
|
|
INT j
|
|
INT iFreeSignSlot
|
|
iFreeSignSlot = -1
|
|
REPEAT NUMBER_PROPERTY_FOR_SALE_SIGNS j
|
|
IF NOT DOES_ENTITY_EXIST(g_PropertySystemData.signObject[j])
|
|
iFreeSignSlot = j
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
IF iFreeSignSlot >= 0
|
|
g_PropertySystemData.signObject[iFreeSignSlot] = CREATE_OBJECT(GET_PROPERTY_FOR_SALE_SIGN_MODEL(), GET_PROPERTY_PURCHASE_COORDS(thisProperty))
|
|
SET_ENTITY_HEADING(g_PropertySystemData.signObject[iFreeSignSlot], GET_PROPERTY_PURCHASE_HEADING(thisProperty))
|
|
RELEASE_PROPERTY_FOR_SALE_SIGN_MODEL()
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_CREATED_FOR_SALE_SIGN)
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// load in assets
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TRAFFICKING_ASSETS)
|
|
IF thisProperty = PROPERTY_ARMS_TRAFFICKING
|
|
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_PROPERTY_PURCHASE_COORDS(thisProperty), <<50, 50, 50>>)
|
|
REQUEST_CUTSCENE("oscar_mcs_1")
|
|
SET_SRL_FORCE_PRESTREAM(SRL_PRESTREAM_FORCE_OFF)
|
|
REQUEST_MODEL(CUBAN800)
|
|
REQUEST_MODEL(DUNE)
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TRAFFICKING_ASSETS)
|
|
ENDIF
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TRAFFICKING_ASSETS)
|
|
ENDIF
|
|
ELSE
|
|
IF thisProperty = PROPERTY_ARMS_TRAFFICKING
|
|
IF NOT IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_PROPERTY_PURCHASE_COORDS(thisProperty), <<60, 60, 60>>)
|
|
RESET_PROPERTY_ASSET_STREAMING()
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TOWING_ASSETS)
|
|
IF thisProperty = PROPERTY_TOWING_IMPOUND
|
|
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_PROPERTY_PURCHASE_COORDS(thisProperty), <<50, 50, 50>>)
|
|
REQUEST_MODEL(TOWTRUCK)
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TOWING_ASSETS)
|
|
ENDIF
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TOWING_ASSETS)
|
|
ENDIF
|
|
ELSE
|
|
IF thisProperty = PROPERTY_TOWING_IMPOUND
|
|
IF NOT IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_PROPERTY_PURCHASE_COORDS(thisProperty), <<60, 60, 60>>)
|
|
RESET_PROPERTY_ASSET_STREAMING()
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_GOLF_CLUB_ASSETS)
|
|
IF thisProperty = PROPERTY_GOLF_CLUB
|
|
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_PROPERTY_PURCHASE_COORDS(thisProperty), <<20, 20, 20>>)
|
|
g_PropertySystemData.streamVolume = STREAMVOL_CREATE_FRUSTUM(<<-1418.670288,50.412415,55.505150>>, CONVERT_ROTATION2_TO_DIRECTION_VECTOR(<<7.033136,-0.000000,-82.497063>>), 100, FLAG_MAPDATA)
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_GOLF_CLUB_ASSETS)
|
|
ENDIF
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_GOLF_CLUB_ASSETS)
|
|
ENDIF
|
|
ELSE
|
|
IF thisProperty = PROPERTY_GOLF_CLUB
|
|
IF NOT IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_PROPERTY_PURCHASE_COORDS(thisProperty), <<25, 25, 25>>)
|
|
RESET_PROPERTY_ASSET_STREAMING()
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_PROPERTY_PURCHASE_COORDS(thisProperty), <<LOCATE_SIZE_ON_FOOT_ONLY, LOCATE_SIZE_ON_FOOT_ONLY, LOCATE_SIZE_HEIGHT>>)
|
|
AND GET_PLAYER_WANTED_LEVEL(PLAYER_ID()) = 0
|
|
AND bCanPurchase
|
|
AND NOT IS_PLAYER_AT_PROPERTY_CANNOT_PURCHASE_COORDS(thisProperty)
|
|
AND NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
AND NOT IS_PHONE_ONSCREEN()
|
|
AND NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_RUN_CUTSCENE)
|
|
AND NOT IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_SELECT_WEAPON)
|
|
AND NOT (Is_Player_Timetable_Scene_In_Progress() OR IS_PLAYER_SWITCH_IN_PROGRESS())
|
|
AND NOT IS_CUSTOM_MENU_ON_SCREEN() //Don't allow purchase while PI menu is up
|
|
STRING sHelp
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_ARMS_TRAFFICKING
|
|
sHelp = "PROPR_PUR_TRAF"
|
|
BREAK
|
|
CASE PROPERTY_CAR_SCRAP_YARD
|
|
sHelp = "PROPR_PUR_CSCR"
|
|
BREAK
|
|
CASE PROPERTY_WEED_SHOP
|
|
sHelp = "PROPR_PUR_WEED"
|
|
BREAK
|
|
CASE PROPERTY_TAXI_LOT
|
|
sHelp = "PROPR_PUR_TAXI"
|
|
BREAK
|
|
CASE PROPERTY_CAR_MOD_SHOP
|
|
sHelp = "PROPR_PUR_CMSH"
|
|
BREAK
|
|
CASE PROPERTY_SONAR_COLLECTIONS
|
|
sHelp = "PROPR_PUR_SOCO"
|
|
BREAK
|
|
CASE PROPERTY_TOWING_IMPOUND
|
|
sHelp = "PROPR_PUR_TOWI"
|
|
BREAK
|
|
CASE PROPERTY_GOLF_CLUB
|
|
sHelp = "PROPR_PUR_GOLF"
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
sHelp = "PROPR_PUR_CINV"
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
sHelp = "PROPR_PUR_CIND"
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
sHelp = "PROPR_PUR_CINM"
|
|
BREAK
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
sHelp = "PROPR_PUR_BARTE"
|
|
BREAK
|
|
CASE PROPERTY_BAR_PITCHERS
|
|
sHelp = "PROPR_PUR_BARPI"
|
|
BREAK
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
sHelp = "PROPR_PUR_BARHE"
|
|
BREAK
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
sHelp = "PROPR_PUR_BARHO"
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
BOOL bAllowPurchase
|
|
bAllowPurchase = FALSE
|
|
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TRAFFICKING_ASSETS)
|
|
bAllowPurchase = TRUE
|
|
ELSE
|
|
IF HAS_CUTSCENE_LOADED()
|
|
AND HAS_MODEL_LOADED(CUBAN800)
|
|
AND HAS_MODEL_LOADED(DUNE)
|
|
bAllowPurchase = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bAllowPurchase
|
|
RESET_SHOP_HELP_DELAY()
|
|
bShouldDisplayPurchaseHelp = TRUE
|
|
|
|
BOOL bIsCorrectCharacter = FALSE
|
|
enumCharacterList propertyCharacter = GET_CHARACTER_FOR_PROPERTY(thisProperty)
|
|
IF (propertyCharacter = GET_CURRENT_PLAYER_PED_ENUM()
|
|
OR propertyCharacter = NO_CHARACTER)
|
|
AND NOT (IS_PROPERTY_BLOCKED_FOR_CHARACTER(thisProperty, GET_CURRENT_PLAYER_PED_ENUM()))
|
|
bIsCorrectCharacter = TRUE
|
|
ENDIF
|
|
|
|
INT iPurchaseCost = GET_PROPERTY_PURCHASE_PRICE(thisProperty)
|
|
IF bIsCorrectCharacter
|
|
IF GET_TOTAL_CASH(GET_CURRENT_PLAYER_PED_ENUM()) >= iPurchaseCost
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_CONFIRM_PURCHASE)
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_PURCHASE_HELP)
|
|
PRINT_HELP_FOREVER_WITH_STRING(sHelp, GET_PROPERTY_COST_STRING(thisProperty))
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_PURCHASE_HELP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_NO_MONEY_HELP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_CONFIRM_HELP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_WRONG_CHAR_HELP)
|
|
ENDIF
|
|
ELSE
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_CONFIRM_HELP)
|
|
PRINT_HELP_FOREVER_WITH_STRING("PROPR_PUR_CONF", GET_PROPERTY_COST_STRING(thisProperty))
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_CONFIRM_HELP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_NO_MONEY_HELP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_PURCHASE_HELP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_WRONG_CHAR_HELP)
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_NO_MONEY_HELP)
|
|
PRINT_HELP_FOREVER_WITH_STRING("PROPR_PUR_NOMO", GET_PROPERTY_COST_STRING(thisProperty))
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_PURCHASE_HELP)
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_NO_MONEY_HELP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_CONFIRM_HELP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_WRONG_CHAR_HELP)
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_WRONG_CHAR_HELP)
|
|
IF thisProperty = PROPERTY_BAR_HOOKIES
|
|
PRINT_HELP_FOREVER("PROPR_PUR_OMAT")
|
|
ELSE
|
|
SWITCH propertyCharacter
|
|
CASE CHAR_TREVOR
|
|
PRINT_HELP_FOREVER("PROPR_PUR_OTRE")
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
PRINT_HELP_FOREVER("PROPR_PUR_OFRA")
|
|
BREAK
|
|
CASE CHAR_MICHAEL
|
|
PRINT_HELP_FOREVER("PROPR_PUR_OMIC")
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_PURCHASE_HELP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_NO_MONEY_HELP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_CONFIRM_HELP)
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_WRONG_CHAR_HELP)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
g_PropertySystemData.handlePurchaseProperty = thisProperty
|
|
|
|
SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH)
|
|
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_CONTEXT)
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_TALK)
|
|
IF IS_DISABLED_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_CONTEXT)
|
|
|
|
IF GET_TOTAL_CASH(GET_CURRENT_PLAYER_PED_ENUM()) >= iPurchaseCost
|
|
AND bIsCorrectCharacter
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_CONFIRM_PURCHASE)
|
|
CLEAR_HELP()
|
|
|
|
g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner = GET_CURRENT_PLAYER_PED_ENUM()
|
|
|
|
STAT_SET_BOOL(GET_STAT_FOR_PROPERTY(thisProperty, PROPERTY_STAT_BOUGHT), TRUE)
|
|
|
|
SET_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].iBit, PROPERTY_BIT_IS_NEW_PROPERTY)
|
|
SET_NEXT_MANAGEMENT_EVENT_TIME_FOR_PROPERTY(thisProperty, PROPERTY_ACTION_PURCHASED_PROPERTY)
|
|
SET_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].iBit, PROPERTY_BIT_SHOULD_RECEIVE_PAYMENT_THIS_WEEK)
|
|
|
|
// special cases for some properties
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_CAR_SCRAP_YARD
|
|
g_savedGlobals.sPropertyData.iTotalCarsDestroyed = GET_TOTAL_CARS_DESTROYED()
|
|
BREAK
|
|
|
|
CASE PROPERTY_SONAR_COLLECTIONS
|
|
g_PropertySystemData.ambientScriptProperty = thisProperty
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_LAUNCH_AMBIENT_SCRIPT)
|
|
BREAK
|
|
|
|
CASE PROPERTY_TOWING_IMPOUND
|
|
CANCEL_COMMUNICATION(CALL_PROP_TOWING)
|
|
g_PropertySystemData.ambientScriptProperty = thisProperty
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_LAUNCH_AMBIENT_SCRIPT)
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RUN_PROPERTY_PURCHASE_CODE_ID(thisProperty, TRUE)
|
|
|
|
// delete for sale sign
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TRAFFICKING_ASSETS)
|
|
RESET_FOR_SALE_SIGN_CREATE_STATE(TRUE)
|
|
ENDIF
|
|
|
|
// set 100%
|
|
UPDATE_PROPERTY_100_PERCENT_STATUS()
|
|
|
|
g_PropertySystemData.runCutsceneProperty = thisProperty
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_RUN_LOCATE_CHECK)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[thisProperty], PROPERTY_UNSAVED_BIT_AVAILABLE_FOR_SALE)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SETUP_CUTSCENE)
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_RUN_CUTSCENE)
|
|
ELSE
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_CONFIRM_PURCHASE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF thisProperty = g_PropertySystemData.handlePurchaseProperty
|
|
IF NOT bShouldDisplayPurchaseHelp
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_PURCHASE_HELP)
|
|
OR IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_NO_MONEY_HELP)
|
|
OR IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_CONFIRM_HELP)
|
|
OR IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_WRONG_CHAR_HELP)
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_RUN_CUTSCENE)
|
|
CLEAR_HELP()
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_PURCHASE_HELP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_NO_MONEY_HELP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_CONFIRM_HELP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAYED_WRONG_CHAR_HELP)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_CONFIRM_PURCHASE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
ENDPROC
|
|
|
|
PROC PROPERTY_PAY_INCOME(PROPERTY_ENUM thisProperty, INT iIncome)
|
|
CREDIT_BANK_ACCOUNT(g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner, GET_BANK_ACCOUNT_SOURCE_FOR_PROPERTY(thisProperty), iIncome)
|
|
|
|
// increment any necessary globals
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_SONAR_COLLECTIONS
|
|
g_savedGlobals.sPropertyData.iCashFromSonarThisWeek += iIncome
|
|
BREAK
|
|
CASE PROPERTY_ARMS_TRAFFICKING
|
|
g_savedGlobals.sPropertyData.iCashFromTraffickingThisWeek += iIncome
|
|
BREAK
|
|
CASE PROPERTY_TOWING_IMPOUND
|
|
g_savedGlobals.sPropertyData.iCashFromTowingThisWeek += iIncome
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
// set the stat
|
|
INT iIncomeStat
|
|
STAT_GET_INT(GET_STAT_FOR_PROPERTY(thisProperty, PROPERTY_STAT_EARNINGS), iIncomeStat)
|
|
iIncomeStat += iIncome
|
|
STAT_SET_INT(GET_STAT_FOR_PROPERTY(thisProperty, PROPERTY_STAT_EARNINGS), iIncomeStat)
|
|
ENDPROC
|
|
|
|
// handle income for 1 property
|
|
FUNC enumCharacterList UPDATE_PROPERTY_INCOME(PROPERTY_ENUM thisProperty, BOOL bResetShouldReceiveThisWeek)
|
|
enumCharacterList paidChar = NO_CHARACTER
|
|
IF g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner <> NO_CHARACTER
|
|
// pay the cash
|
|
INT iIncome = GET_THIS_WEEKS_INCOME_FOR_PROPERTY(thisProperty)
|
|
|
|
// get the income
|
|
IF iIncome > 0
|
|
IF IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].iBit, PROPERTY_BIT_SHOULD_RECEIVE_PAYMENT_THIS_WEEK)
|
|
PROPERTY_PAY_INCOME(thisProperty, iIncome)
|
|
paidChar = g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner
|
|
ELSE
|
|
iIncome = 0
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// update this-week counts
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_SONAR_COLLECTIONS
|
|
iIncome = g_savedGlobals.sPropertyData.iCashFromSonarThisWeek
|
|
g_savedGlobals.sPropertyData.iCashFromSonarThisWeek = 0
|
|
IF iIncome > 0
|
|
paidChar = g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner
|
|
ENDIF
|
|
BREAK
|
|
CASE PROPERTY_ARMS_TRAFFICKING
|
|
iIncome = g_savedGlobals.sPropertyData.iCashFromTraffickingThisWeek
|
|
g_savedGlobals.sPropertyData.iCashFromTraffickingThisWeek = 0
|
|
IF iIncome > 0
|
|
paidChar = g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner
|
|
ENDIF
|
|
BREAK
|
|
CASE PROPERTY_TOWING_IMPOUND
|
|
iIncome = g_savedGlobals.sPropertyData.iCashFromTowingThisWeek
|
|
g_savedGlobals.sPropertyData.iCashFromTowingThisWeek = 0
|
|
IF iIncome > 0
|
|
paidChar = g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].charOwner
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
IF bResetShouldReceiveThisWeek
|
|
SET_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].iBit, PROPERTY_BIT_SHOULD_RECEIVE_PAYMENT_THIS_WEEK)
|
|
ENDIF
|
|
|
|
g_savedGlobals.sPropertyData.propertyOwnershipData[thisProperty].iLastIncome = iIncome
|
|
ENDIF
|
|
|
|
RETURN paidChar
|
|
ENDFUNC
|
|
|
|
// handle income for all properties
|
|
PROC UPDATE_ALL_PROPERTIES_INCOME()
|
|
IF GET_GAME_TIMER() >= g_PropertySystemData.iLastIncomeCheckTime + 3000
|
|
// check to see if it's time to get paid
|
|
DAY_OF_WEEK thisDay = GET_CLOCK_DAY_OF_WEEK()
|
|
|
|
INT i
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sPropertyData.iBit, PROPERTY_SAVED_BIT_INCOME_PAID_THIS_WEEK)
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
AND NOT IS_REPEAT_PLAY_ACTIVE()
|
|
IF thisDay = MONDAY
|
|
BOOL bMichaelPaid = FALSE
|
|
BOOL bTrevorPaid = FALSE
|
|
BOOL bFranklinPaid = FALSE
|
|
|
|
REPEAT COUNT_OF(PROPERTY_ENUM) i
|
|
enumCharacterList paidChar = UPDATE_PROPERTY_INCOME(INT_TO_ENUM(PROPERTY_ENUM, i), TRUE)
|
|
IF paidChar = CHAR_MICHAEL
|
|
bMichaelPaid = TRUE
|
|
ELIF paidChar = CHAR_TREVOR
|
|
bTrevorPaid = TRUE
|
|
ELIF paidChar = CHAR_FRANKLIN
|
|
bFranklinPaid = TRUE
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
// send email
|
|
IF bMichaelPaid
|
|
FIRE_EMAIL_INTO_DYNAMIC_THREAD(DYNAMIC_THREAD_PROPERTIES_FINANCE_REPORT_MIKE, PROPMAN_TO_MIKE, FALSE)
|
|
ENDIF
|
|
IF bTrevorPaid
|
|
FIRE_EMAIL_INTO_DYNAMIC_THREAD(DYNAMIC_THREAD_PROPERTIES_FINANCE_REPORT_TREVOR, PROPMAN_TO_TREV, FALSE)
|
|
ENDIF
|
|
IF bFranklinPaid
|
|
FIRE_EMAIL_INTO_DYNAMIC_THREAD(DYNAMIC_THREAD_PROPERTIES_FINANCE_REPORT_FRANKLIN, PROPMAN_TO_FRANK, FALSE)
|
|
ENDIF
|
|
|
|
SET_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.iBit, PROPERTY_SAVED_BIT_INCOME_PAID_THIS_WEEK)
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF thisDay <> MONDAY
|
|
CLEAR_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.iBit, PROPERTY_SAVED_BIT_INCOME_PAID_THIS_WEEK)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
g_PropertySystemData.iLastIncomeCheckTime = GET_GAME_TIMER()
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
// is triggered by call rather than text
|
|
FUNC BOOL IS_PROPERTY_MANAGEMENT_EVENT_TRIGGERED_BY_PHONE_CALL(PROPERTY_MANAGEMENT_MISSION_ENUM thisMission)
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_TAXI
|
|
RETURN TRUE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
// are we at the trigger to launch event script
|
|
FUNC BOOL IS_PLAYER_AT_MANAGEMENT_EVENT_TRIGGER(PROPERTY_ENUM thisProperty, PROPERTY_MANAGEMENT_MISSION_ENUM thisMission, INT iThisVariation)
|
|
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_MANAGEMENT_EVENT_COORD(thisProperty, thisMission, iThisVariation), GET_TRIGGER_RANGE_FOR_MANAGEMENT_EVENT(thisProperty, thisMission, iThisVariation))
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
// should the property mission force start
|
|
FUNC BOOL SHOULD_MANAGEMENT_EVENT_FORCE_START(PROPERTY_ENUM thisProperty, PROPERTY_MANAGEMENT_MISSION_ENUM thisMission, INT iThisVariation)
|
|
SWITCH thisMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
RETURN SHOULD_RECOVER_STOLEN_EVENT_FORCE_START(thisProperty, CONVERT_INT_TO_RECOVER_STOLEN_VARIATION(thisProperty, iThisVariation))
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_GANG_ATTACK
|
|
RETURN SHOULD_GANG_ATTACK_EVENT_FORCE_START(thisProperty, CONVERT_INT_TO_GANG_ATTACK_VARIATION(thisProperty, iThisVariation))
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
// reset back to waiting state
|
|
PROC RESET_PROPERTY_MANAGEMENT_TO_WAITING()
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DO_RESET_TO_WAITING)
|
|
IF DOES_BLIP_EXIST(g_PropertySystemData.propertyManagementBlip)
|
|
REMOVE_BLIP(g_PropertySystemData.propertyManagementBlip)
|
|
ENDIF
|
|
|
|
IF IS_COMMUNICATION_REGISTERED(g_PropertySystemData.sManagementCommsID)
|
|
CANCEL_COMMUNICATION(g_PropertySystemData.sManagementCommsID)
|
|
ENDIF
|
|
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SUPPRESS_AIRPORT_RESTRICTED)
|
|
RELEASE_SUPPRESSED_RESTRICTED_AREA_WANTED_LEVEL(AC_AIRPORT_AIRSIDE, TRUE)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SUPPRESS_AIRPORT_RESTRICTED)
|
|
ENDIF
|
|
|
|
g_PropertySystemData.iManagementEventEndTime = GET_GAME_TIMER()
|
|
g_PropertySystemData.propertyManagementState = PROPERTY_MANAGEMENT_STATE_WAITING
|
|
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DO_RESET_TO_WAITING)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
// deal with the result of a management mission
|
|
PROC HANDLE_PROPERTY_MANAGEMENT_STATE_RESULT(PROPERTY_MANAGEMENT_RESULT_ENUM thisResult)
|
|
SWITCH thisResult
|
|
CASE PROPERTY_MANAGEMENT_RESULT_NONE
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SEND_FAIL_TEXT)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SEND_PASS_TEXT)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAY_MISSION_PASS)
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_RESULT_SUCCESS
|
|
SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 0)
|
|
SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SEND_FAIL_TEXT)
|
|
IF g_PropertySystemData.currentPropertyManagementProperty <> PROPERTY_TAXI_LOT
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAY_MISSION_PASS)
|
|
ENDIF
|
|
IF g_PropertySystemData.currentPropertyManagementMission = PROPERTY_MANAGEMENT_MISSION_DEFEND
|
|
OR g_PropertySystemData.currentPropertyManagementMission = PROPERTY_MANAGEMENT_MISSION_PLANE_PROMOTION
|
|
OR g_PropertySystemData.currentPropertyManagementMission = PROPERTY_MANAGEMENT_MISSION_GANG_ATTACK
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SEND_PASS_TEXT)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SEND_PASS_TEXT)
|
|
ENDIF
|
|
MAKE_AUTOSAVE_REQUEST()
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_RESULT_FAILURE
|
|
CLEAR_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.propertyOwnershipData[g_PropertySystemData.currentPropertyManagementProperty].iBit, PROPERTY_BIT_SHOULD_RECEIVE_PAYMENT_THIS_WEEK)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SEND_PASS_TEXT)
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SEND_FAIL_TEXT)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAY_MISSION_PASS)
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAY_PURCHASED)
|
|
ENDPROC
|
|
|
|
// create the management event
|
|
PROC HANDLE_CREATE_MANAGEMENT_EVENT_ENTITIES()
|
|
SWITCH g_PropertySystemData.createManagementEventState
|
|
CASE CREATE_MANAGEMENT_EVENT_STATE_NOT_STARTED
|
|
SWITCH g_PropertySystemData.currentPropertyManagementMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
REQUEST_DELIVERY_EVENT_ASSETS(g_PropertySystemData.currentPropertyManagementProperty, CONVERT_INT_TO_DELIVERY_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_PLANE_PROMOTION
|
|
REQUEST_PLANE_PROMOTION_EVENT_ASSETS()
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_TAXI
|
|
REQUEST_TAXI_EVENT_ASSETS(CONVERT_INT_TO_TAXI_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
REQUEST_RECOVER_STOLEN_EVENT_ASSETS(g_PropertySystemData.currentPropertyManagementProperty, CONVERT_INT_TO_RECOVER_STOLEN_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_GANG_ATTACK
|
|
REQUEST_GANG_ATTACK_EVENT_ASSETS(g_PropertySystemData.currentPropertyManagementProperty, CONVERT_INT_TO_GANG_ATTACK_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
ENDSWITCH
|
|
g_PropertySystemData.createManagementEventState = CREATE_MANAGEMENT_EVENT_STATE_LOADING_ASSETS
|
|
BREAK
|
|
CASE CREATE_MANAGEMENT_EVENT_STATE_LOADING_ASSETS
|
|
BOOL bLoaded
|
|
bLoaded = TRUE
|
|
|
|
SWITCH g_PropertySystemData.currentPropertyManagementMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
bLoaded = HAVE_DELIVERY_EVENT_ASSETS_LOADED(g_PropertySystemData.currentPropertyManagementProperty, CONVERT_INT_TO_DELIVERY_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_PLANE_PROMOTION
|
|
bLoaded = HAVE_PLANE_PROMOTION_EVENT_ASSETS_LOADED()
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_TAXI
|
|
bLoaded = HAVE_TAXI_EVENT_ASSETS_LOADED(CONVERT_INT_TO_TAXI_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
bLoaded = HAVE_RECOVER_STOLEN_EVENT_ASSETS_LOADED(g_PropertySystemData.currentPropertyManagementProperty, CONVERT_INT_TO_RECOVER_STOLEN_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_GANG_ATTACK
|
|
bLoaded = HAVE_GANG_ATTACK_EVENT_ASSETS_LOADED(g_PropertySystemData.currentPropertyManagementProperty, CONVERT_INT_TO_GANG_ATTACK_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
IF bLoaded
|
|
SWITCH g_PropertySystemData.currentPropertyManagementMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
CREATE_DELIVERY_EVENT_ENTITIES(g_PropertySystemData.currentPropertyManagementProperty, CONVERT_INT_TO_DELIVERY_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_PLANE_PROMOTION
|
|
CREATE_PLANE_PROMOTION_EVENT_ENTITIES()
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_TAXI
|
|
CREATE_TAXI_EVENT_ENTITIES(CONVERT_INT_TO_TAXI_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
CREATE_RECOVER_STOLEN_EVENT_ENTITIES(g_PropertySystemData.currentPropertyManagementProperty, CONVERT_INT_TO_RECOVER_STOLEN_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_GANG_ATTACK
|
|
CREATE_GANG_ATTACK_EVENT_ENTITIES(g_PropertySystemData.currentPropertyManagementProperty, CONVERT_INT_TO_GANG_ATTACK_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
ENDSWITCH
|
|
g_PropertySystemData.createManagementEventState = CREATE_MANAGEMENT_EVENT_STATE_DONE
|
|
ENDIF
|
|
BREAK
|
|
CASE CREATE_MANAGEMENT_EVENT_STATE_DONE
|
|
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
// update the management event in the world
|
|
FUNC BOOL UPDATE_MANAGEMENT_EVENT_IN_WORLD()
|
|
IF g_PropertySystemData.createManagementEventState = CREATE_MANAGEMENT_EVENT_STATE_DONE
|
|
SWITCH g_PropertySystemData.currentPropertyManagementMission
|
|
CASE PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
RETURN UPDATE_DELIVERY_EVENT_IN_WORLD(g_PropertySystemData.currentPropertyManagementProperty, CONVERT_INT_TO_DELIVERY_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_PLANE_PROMOTION
|
|
RETURN UPDATE_PLANE_PROMOTION_EVENT_IN_WORLD()
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_TAXI
|
|
RETURN UPDATE_TAXI_EVENT_IN_WORLD(CONVERT_INT_TO_TAXI_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_RECOVER_STOLEN
|
|
UPDATE_RECOVER_STOLEN_EVENT_IN_WORLD(g_PropertySystemData.currentPropertyManagementProperty, CONVERT_INT_TO_RECOVER_STOLEN_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_MISSION_GANG_ATTACK
|
|
UPDATE_GANG_ATTACK_EVENT_IN_WORLD(g_PropertySystemData.currentPropertyManagementProperty, CONVERT_INT_TO_GANG_ATTACK_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
// set player on management mission
|
|
PROC SET_PLAYER_ON_MANAGEMENT_MISSION(BOOL bOnMission)
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
SET_PED_CONFIG_FLAG(PLAYER_PED_ID(), PCF_WillFlyThroughWindscreen, NOT bOnMission)
|
|
SET_PED_CONFIG_FLAG(PLAYER_PED_ID(), PCF_WillTakeDamageWhenVehicleCrashes, NOT bOnMission)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
// is far away enough to send pass message?
|
|
FUNC BOOL IS_PLAYER_FAR_ENOUGH_TO_SEND_PASS_MESSAGE()
|
|
IF g_PropertySystemData.currentPropertyManagementMission = PROPERTY_MANAGEMENT_MISSION_DELIVERY
|
|
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_PROPERTY_PURCHASE_COORDS(g_PropertySystemData.currentPropertyManagementProperty), <<120,120,120>>, FALSE, FALSE)
|
|
RETURN FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
// handle management events
|
|
PROC UPDATE_PROPERTY_MANAGEMENT(BOOL bCanStartAgainstMission)
|
|
SWITCH g_PropertySystemData.propertyManagementState
|
|
CASE PROPERTY_MANAGEMENT_STATE_WAITING
|
|
// here we are waiting for the next opportunity to notify about a management event opening
|
|
|
|
// display pass screen
|
|
SWITCH g_PropertySystemData.missionPassedScreenState
|
|
CASE PROPERTY_MISSION_PASSED_SCREEN_STATE_NOT_STARTED
|
|
IF bCanStartAgainstMission
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAY_MISSION_PASS)
|
|
OR IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAY_PURCHASED)
|
|
g_PropertySystemData.passedScaleform = REQUEST_SCALEFORM_MOVIE("MIDSIZED_MESSAGE")
|
|
g_PropertySystemData.missionPassedScreenState = PROPERTY_MISSION_PASSED_SCREEN_STATE_LOADING
|
|
SET_RESULT_SCREEN_DISPLAYING_STATE(TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PROPERTY_MISSION_PASSED_SCREEN_STATE_LOADING
|
|
IF HAS_SCALEFORM_MOVIE_LOADED(g_PropertySystemData.passedScaleform)
|
|
AND (GET_GAME_TIMER() >= g_PropertySystemData.iManagementEventEndTime + 1500 OR IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAY_PURCHASED))
|
|
IF bCanStartAgainstMission
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(g_PropertySystemData.passedScaleform, "SHOW_SHARD_MIDSIZED_MESSAGE")
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAY_MISSION_PASS)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(GET_PROPERTY_SUCCESS_SPLASH_STRING(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.currentPropertyManagementMission, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
IF g_PropertySystemData.currentPropertyManagementProperty <> PROPERTY_CAR_SCRAP_YARD
|
|
AND g_PropertySystemData.currentPropertyManagementProperty <> PROPERTY_WEED_SHOP
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(GET_PROPERTY_NAME_STRING(g_PropertySystemData.currentPropertyManagementProperty))
|
|
ENDIF
|
|
ELSE
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("PROPR_PURCHASED")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(GET_PROPERTY_NAME_STRING(g_PropertySystemData.runCutsceneProperty))
|
|
ENDIF
|
|
END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
|
|
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAY_MISSION_PASS)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYED_PASS_SOUND)
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYED_BOUGHT_SOUND)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYED_BOUGHT_SOUND)
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYED_PASS_SOUND)
|
|
ENDIF
|
|
ENDIF
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAY_MISSION_PASS)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAY_PURCHASED)
|
|
g_PropertySystemData.missionPassedScreenState = PROPERTY_MISSION_PASSED_SCREEN_STATE_DISPLAYING
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PROPERTY_MISSION_PASSED_SCREEN_STATE_DISPLAYING
|
|
IF bCanStartAgainstMission
|
|
IF HAS_SCALEFORM_MOVIE_LOADED(g_PropertySystemData.passedScaleform)
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYED_PASS_SOUND)
|
|
PLAY_SOUND_FRONTEND(-1, "UNDER_THE_BRIDGE", "HUD_AWARDS")
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYED_PASS_SOUND)
|
|
ELIF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYED_BOUGHT_SOUND)
|
|
PLAY_SOUND_FRONTEND(-1, "UNDER_THE_BRIDGE", "HUD_AWARDS")
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYED_BOUGHT_SOUND)
|
|
ENDIF
|
|
DRAW_SCALEFORM_MOVIE_FULLSCREEN(g_PropertySystemData.passedScaleform, 255, 255, 255, 255)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF GET_GAME_TIMER() >= g_PropertySystemData.iManagementEventEndTime + 11000
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(g_PropertySystemData.passedScaleform, "SHARD_ANIM_OUT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(HUD_COLOUR_WHITE))
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.33)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
g_PropertySystemData.missionPassedScreenState = PROPERTY_MISSION_PASSED_SCREEN_STATE_CLEANUP
|
|
ENDIF
|
|
|
|
IF IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
OR NOT bCanStartAgainstMission
|
|
CLEANUP_MISSION_PASSED_SCREEN()
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PROPERTY_MISSION_PASSED_SCREEN_STATE_CLEANUP
|
|
IF bCanStartAgainstMission
|
|
IF HAS_SCALEFORM_MOVIE_LOADED(g_PropertySystemData.passedScaleform)
|
|
DRAW_SCALEFORM_MOVIE_FULLSCREEN(g_PropertySystemData.passedScaleform, 255, 255, 255, 255)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF GET_GAME_TIMER() >= g_PropertySystemData.iManagementEventEndTime + 11500
|
|
OR IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
OR NOT bCanStartAgainstMission
|
|
CLEANUP_MISSION_PASSED_SCREEN()
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
IF bCanStartAgainstMission
|
|
// send fail message
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SEND_FAIL_TEXT)
|
|
//CDEBUG1LN(DEBUG_PROPERTY, "Want to send fail message")
|
|
IF GET_GAME_TIMER() >= g_PropertySystemData.iManagementEventEndTime + 5000
|
|
//CDEBUG1LN(DEBUG_PROPERTY, "Fail message time")
|
|
|
|
CC_TextPart part1
|
|
CC_TextPart part2
|
|
|
|
GET_PROPERTY_MANAGEMENT_MISSION_FAIL_TEXT_PARTS(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.currentPropertyManagementMission, g_PropertySystemData.iCurrentPropertyManagementVariation, part1, part2)
|
|
|
|
IF REGISTER_COMPOSITE_TEXT_MESSAGE_FROM_CHARACTER_TO_PLAYER(
|
|
TEXT_PROPERTY,
|
|
part1,
|
|
part2,
|
|
CT_FRIEND,
|
|
GET_PLAYER_PED_BIT(g_savedGlobals.sPropertyData.propertyOwnershipData[g_PropertySystemData.currentPropertyManagementProperty].charOwner),//GET_CURRENT_PLAYER_PED_BIT(),
|
|
GET_CONTACT_CHARACTER_FOR_PROPERTY(g_PropertySystemData.currentPropertyManagementProperty),
|
|
0,
|
|
DEFAULT,
|
|
DEFAULT,
|
|
DEFAULT,
|
|
DEFAULT,
|
|
COMM_FLAG_DONT_SAVE,
|
|
CANNOT_CALL_SENDER)
|
|
|
|
g_PropertySystemData.failReasonOverride = PROPERTY_MISSION_FAIL_REASON_OVERRIDE_NONE
|
|
|
|
CDEBUG1LN(DEBUG_PROPERTY, "Fail message successfully sent")
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SEND_FAIL_TEXT)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// send pass message
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SEND_PASS_TEXT)
|
|
//CDEBUG1LN(DEBUG_PROPERTY, "Want to send pass message")
|
|
IF GET_GAME_TIMER() >= g_PropertySystemData.iManagementEventEndTime + 3000
|
|
AND IS_PLAYER_FAR_ENOUGH_TO_SEND_PASS_MESSAGE()
|
|
//CDEBUG1LN(DEBUG_PROPERTY, "Pass message time")
|
|
|
|
CC_TextPart part1
|
|
CC_TextPart part2
|
|
|
|
GET_PROPERTY_MANAGEMENT_MISSION_PASS_TEXT_PARTS(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.currentPropertyManagementMission, g_PropertySystemData.iCurrentPropertyManagementVariation, part1, part2)
|
|
|
|
IF REGISTER_COMPOSITE_TEXT_MESSAGE_FROM_CHARACTER_TO_PLAYER(
|
|
TEXT_PROPERTY,
|
|
part1,
|
|
part2,
|
|
CT_FRIEND,
|
|
GET_PLAYER_PED_BIT(g_savedGlobals.sPropertyData.propertyOwnershipData[g_PropertySystemData.currentPropertyManagementProperty].charOwner),//GET_CURRENT_PLAYER_PED_BIT(),
|
|
GET_CONTACT_CHARACTER_FOR_PROPERTY(g_PropertySystemData.currentPropertyManagementProperty),
|
|
0,
|
|
DEFAULT,
|
|
DEFAULT,
|
|
DEFAULT,
|
|
DEFAULT,
|
|
COMM_FLAG_DONT_SAVE,
|
|
CANNOT_CALL_SENDER)
|
|
|
|
g_PropertySystemData.passReasonOverride = PROPERTY_MISSION_PASS_REASON_OVERRIDE_NONE
|
|
|
|
CDEBUG1LN(DEBUG_PROPERTY, "Pass message successfully sent")
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SEND_PASS_TEXT)
|
|
// UPDATE_PROPERTY_INCOME(g_PropertySystemData.currentPropertyManagementProperty, FALSE)
|
|
// CLEAR_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.propertyOwnershipData[g_PropertySystemData.currentPropertyManagementProperty].iBit, PROPERTY_BIT_SHOULD_RECEIVE_PAYMENT_THIS_WEEK)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// look for an event to launch
|
|
IF bCanStartAgainstMission
|
|
PROPERTY_ENUM thisTickProperty
|
|
thisTickProperty = INT_TO_ENUM(PROPERTY_ENUM, g_PropertySystemData.iTick)
|
|
IF g_savedGlobals.sPropertyData.propertyOwnershipData[thisTickProperty].charOwner = GET_CURRENT_PLAYER_PED_ENUM()
|
|
AND IS_PLAYER_PED_PLAYABLE(GET_CURRENT_PLAYER_PED_ENUM())
|
|
IF IS_NOW_AFTER_TIMEOFDAY(g_savedGlobals.sPropertyData.propertyOwnershipData[thisTickProperty].nextManagementEventTime)
|
|
//AND GET_GAME_TIMER() >= g_iGlobalWaitTime
|
|
BOOL bTimeToLaunch
|
|
bTimeToLaunch = FALSE
|
|
|
|
IF IS_NOW_AFTER_TIMEOFDAY(g_savedGlobals.sPropertyData.nextCheckManagementEventTime)
|
|
CLEAR_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.iBit, PROPERTY_SAVED_BIT_DONE_EVENT_FOR_NEW_PROPERTY)
|
|
bTimeToLaunch = TRUE
|
|
ENDIF
|
|
|
|
IF IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sPropertyData.propertyOwnershipData[g_PropertySystemData.currentPropertyManagementProperty].iBit, PROPERTY_BIT_IS_NEW_PROPERTY)
|
|
AND NOT IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sPropertyData.iBit, PROPERTY_SAVED_BIT_DONE_EVENT_FOR_NEW_PROPERTY)
|
|
bTimeToLaunch = TRUE
|
|
ENDIF
|
|
|
|
IF bTimeToLaunch
|
|
PROPERTY_MANAGEMENT_MISSION_ENUM potentialManagementMission
|
|
INT iPotentialManagementVariation
|
|
|
|
GET_PROPERTY_MANAGEMENT_MISSION_FROM_PROPERTY(thisTickProperty, potentialManagementMission, iPotentialManagementVariation)
|
|
|
|
IF potentialManagementMission <> PROPERTY_MANAGEMENT_MISSION_NONE
|
|
//AND GET_GAME_TIMER() >= g_iCharWaitTime[GET_CONTACT_CHARACTER_FOR_PROPERTY(thisTickProperty)]
|
|
CDEBUG1LN(DEBUG_PROPERTY, "Obtained Property Management Mission From Property")
|
|
g_PropertySystemData.currentPropertyManagementProperty = thisTickProperty
|
|
g_PropertySystemData.currentPropertyManagementMission = potentialManagementMission
|
|
g_PropertySystemData.iCurrentPropertyManagementVariation = iPotentialManagementVariation
|
|
g_PropertySystemData.failReasonOverride = PROPERTY_MISSION_FAIL_REASON_OVERRIDE_NONE
|
|
g_PropertySystemData.passReasonOverride = PROPERTY_MISSION_PASS_REASON_OVERRIDE_NONE
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DO_RESET_TO_WAITING)
|
|
g_PropertySystemData.propertyManagementState = PROPERTY_MANAGEMENT_STATE_GIVE_NOTIFICATION
|
|
//ELSE
|
|
//CDEBUG1LN(DEBUG_PROPERTY, "Failed to find a management mission")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF GET_GAME_TIMER() >= g_PropertySystemData.iNextPushEventTime
|
|
RESET_PROPERTY_MANAGEMENT_TO_WAITING()
|
|
SET_NEXT_PROPERTY_MANAGEMENT_EVENT_TIME(PROPERTY_ACTION_DELAY_FOR_MISSION)
|
|
g_PropertySystemData.iNextPushEventTime = GET_GAME_TIMER() + 5000
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PROPERTY_MANAGEMENT_STATE_GIVE_NOTIFICATION
|
|
// text the player that the event has opened
|
|
BOOL bSetPending
|
|
bSetPending = FALSE
|
|
|
|
IF bCanStartAgainstMission
|
|
IF IS_PROPERTY_MANAGEMENT_EVENT_TRIGGERED_BY_PHONE_CALL(g_PropertySystemData.currentPropertyManagementMission)
|
|
|
|
CC_CommID ePropertyCallID
|
|
CC_QuestionCallResponse eYesReponse
|
|
CC_QuestionCallResponse eNoReponse
|
|
|
|
ePropertyCallID = GET_PROPERTY_MANAGEMENT_CALL(CONVERT_INT_TO_TAXI_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
eYesReponse = GET_PROPERTY_MANAGEMENT_POSITIVE_RESPONSE(CONVERT_INT_TO_TAXI_VARIATION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
eNoReponse = GET_PROPERTY_MANAGEMENT_NEGATIVE_RESPONSE(g_PropertySystemData.currentPropertyManagementProperty)
|
|
|
|
INT iRequeueTime
|
|
iRequeueTime = 10000
|
|
#IF IS_DEBUG_BUILD
|
|
IF g_PropertySystemData.bDebugRequeue
|
|
iRequeueTime = 500
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF REGISTER_CALL_WITH_QUESTION_FROM_CHARACTER_TO_PLAYER(
|
|
ePropertyCallID,
|
|
eYesReponse,
|
|
eNoReponse,
|
|
CT_FRIEND,
|
|
GET_CURRENT_PLAYER_PED_BIT(),
|
|
GET_CONTACT_CHARACTER_FOR_PROPERTY(g_PropertySystemData.currentPropertyManagementProperty),
|
|
8,
|
|
0,
|
|
iRequeueTime,
|
|
COMM_NONE,
|
|
VID_BLANK,
|
|
CID_BLANK,
|
|
FLOW_CHECK_NONE,
|
|
COMM_FLAG_CALL_ADD_TEMP_CONTACT | COMM_FLAG_DONT_SAVE)
|
|
|
|
g_PropertySystemData.sManagementCommsID = ePropertyCallID
|
|
|
|
CDEBUG1LN(DEBUG_PROPERTY, "Call registered, waiting on call respond")
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_RECEIVED_CALL)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_TEXT_VIEW)
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_CALL_RESPOND)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
g_PropertySystemData.bDebugRequeue = FALSE
|
|
#ENDIF
|
|
|
|
bSetPending = TRUE
|
|
ENDIF
|
|
ELSE
|
|
INT iRequeueTime
|
|
iRequeueTime = 10000
|
|
CC_CommunicationType commType
|
|
commType = CT_FRIEND
|
|
#IF IS_DEBUG_BUILD
|
|
IF g_PropertySystemData.bDebugRequeue
|
|
iRequeueTime = 500
|
|
commType = CT_END_OF_MISSION
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
CC_TextPart part1
|
|
CC_TextPart part2
|
|
|
|
GET_PROPERTY_MANAGEMENT_MISSION_NOTIFY_TEXT_PARTS(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.currentPropertyManagementMission, g_PropertySystemData.iCurrentPropertyManagementVariation, part1, part2)
|
|
|
|
IF REGISTER_COMPOSITE_TEXT_MESSAGE_FROM_CHARACTER_TO_PLAYER(
|
|
TEXT_PROPERTY,
|
|
part1,
|
|
part2,
|
|
commType,
|
|
GET_CURRENT_PLAYER_PED_BIT(),
|
|
GET_CONTACT_CHARACTER_FOR_PROPERTY(g_PropertySystemData.currentPropertyManagementProperty),
|
|
0,
|
|
iRequeueTime,
|
|
DEFAULT,
|
|
DEFAULT,
|
|
DEFAULT,
|
|
COMM_FLAG_DONT_SAVE,
|
|
CANNOT_CALL_SENDER)
|
|
g_PropertySystemData.sManagementCommsID = TEXT_PROPERTY
|
|
|
|
CDEBUG1LN(DEBUG_PROPERTY, "Text registered")
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_CALL_RESPOND)
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_TEXT_VIEW)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
g_PropertySystemData.bDebugRequeue = FALSE
|
|
#ENDIF
|
|
|
|
bSetPending = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bSetPending
|
|
CDEBUG1LN(DEBUG_PROPERTY, "Set pending")
|
|
|
|
// suppress airport restriction for plane promotion
|
|
IF g_PropertySystemData.currentPropertyManagementMission = PROPERTY_MANAGEMENT_MISSION_PLANE_PROMOTION
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SUPPRESS_AIRPORT_RESTRICTED)
|
|
IF NOT IS_RESTRICTED_AREA_WANTED_LEVEL_SUPPRESSED(AC_AIRPORT_AIRSIDE)
|
|
SUPPRESS_RESTRICTED_AREA_WANTED_LEVEL(AC_AIRPORT_AIRSIDE, TRUE)
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SUPPRESS_AIRPORT_RESTRICTED)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF DOES_BLIP_EXIST(g_PropertySystemData.propertyManagementBlip)
|
|
REMOVE_BLIP(g_PropertySystemData.propertyManagementBlip)
|
|
ENDIF
|
|
|
|
IF IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sPropertyData.propertyOwnershipData[g_PropertySystemData.currentPropertyManagementProperty].iBit, PROPERTY_BIT_IS_NEW_PROPERTY)
|
|
CLEAR_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.propertyOwnershipData[g_PropertySystemData.currentPropertyManagementProperty].iBit, PROPERTY_BIT_IS_NEW_PROPERTY)
|
|
SET_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.iBit, PROPERTY_SAVED_BIT_DONE_EVENT_FOR_NEW_PROPERTY)
|
|
ENDIF
|
|
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_BLIPPED_MANAGEMENT_EVENT)
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DO_RESET_TO_WAITING)
|
|
g_PropertySystemData.propertyManagementState = PROPERTY_MANAGEMENT_STATE_PENDING
|
|
ENDIF
|
|
ELSE
|
|
CDEBUG1LN(DEBUG_PROPERTY, "Mission set, goto waiting from notify")
|
|
RESET_PROPERTY_MANAGEMENT_TO_WAITING()
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PROPERTY_MANAGEMENT_STATE_PENDING
|
|
// the player must get to the event in time
|
|
BOOL bFailOut
|
|
bFailOut = FALSE
|
|
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_CALL_RESPOND)
|
|
IF IS_COMMUNICATION_REGISTERED(g_PropertySystemData.sManagementCommsID)
|
|
IF GET_COMMUNICATION_STATUS(g_PropertySystemData.sManagementCommsID) = CS_IN_PROGRESS
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_RECEIVED_CALL)
|
|
CDEBUG1LN(DEBUG_PROPERTY, "Waiting on call respond!")
|
|
SWITCH CHECK_RESPONSE_TO_CELLPHONE_PROMPT()
|
|
CASE RESPONDED_YES
|
|
CDEBUG1LN(DEBUG_PROPERTY, "YES response registered")
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_CALL_RESPOND)
|
|
BREAK
|
|
|
|
CASE RESPONDED_NO
|
|
CDEBUG1LN(DEBUG_PROPERTY, "NO response registered, fail out eventually")
|
|
//CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_CALL_RESPOND)
|
|
//bFailOut = TRUE
|
|
BREAK
|
|
ENDSWITCH
|
|
ELSE
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_RECEIVED_CALL)
|
|
IF WAS_LAST_PHONECALL_HUNG_UP_BY_JOYPAD()
|
|
OR CHECK_CELLPHONE_LAST_CALL_REJECTED()
|
|
CDEBUG1LN(DEBUG_PROPERTY, "Hung up or rejected, fail out")
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_CALL_RESPOND)
|
|
bFailOut = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_RECEIVED_CALL)
|
|
CDEBUG1LN(DEBUG_PROPERTY, "Hung up or rejected, fail out")
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_CALL_RESPOND)
|
|
ELSE
|
|
CDEBUG1LN(DEBUG_PROPERTY, "Comms not registered, fail out")
|
|
ENDIF
|
|
bFailOut = TRUE
|
|
ENDIF
|
|
ELIF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_TEXT_VIEW)
|
|
IF NOT IS_COMMUNICATION_REGISTERED(g_PropertySystemData.sManagementCommsID)
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_TEXT_VIEW)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// blip the event
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_BLIPPED_MANAGEMENT_EVENT)
|
|
AND NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_CALL_RESPOND)
|
|
AND NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_TEXT_VIEW)
|
|
AND NOT bFailOut
|
|
CDEBUG1LN(DEBUG_PROPERTY, "Add the blip")
|
|
g_PropertySystemData.propertyManagementBlip = CREATE_BLIP_FOR_COORD(GET_MANAGEMENT_EVENT_COORD(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.currentPropertyManagementMission, g_PropertySystemData.iCurrentPropertyManagementVariation))
|
|
SET_BLIP_SPRITE(g_PropertySystemData.propertyManagementBlip, RADAR_TRACE_PROPERTY)
|
|
|
|
SWITCH g_savedGlobals.sPropertyData.propertyOwnershipData[g_PropertySystemData.currentPropertyManagementProperty].charOwner
|
|
CASE CHAR_MICHAEL
|
|
SET_BLIP_COLOUR(g_PropertySystemData.propertyManagementBlip, BLIP_COLOUR_MICHAEL)
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
SET_BLIP_COLOUR(g_PropertySystemData.propertyManagementBlip, BLIP_COLOUR_FRANKLIN)
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
SET_BLIP_COLOUR(g_PropertySystemData.propertyManagementBlip, BLIP_COLOUR_TREVOR)
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
SET_BLIP_PRIORITY(g_PropertySystemData.propertyManagementBlip, BLIPPRIORITY_HIGH)
|
|
SET_BLIP_FLASHES(g_PropertySystemData.propertyManagementBlip, TRUE)
|
|
SET_BLIP_FLASH_TIMER(g_PropertySystemData.propertyManagementBlip, 10000)
|
|
g_PropertySystemData.iPendingPropertyManagementTimeOut = GET_GAME_TIMER() + 300000
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_BLIPPED_MANAGEMENT_EVENT)
|
|
ENDIF
|
|
|
|
#IF NOT USE_CLF_DLC
|
|
#IF NOT USE_NRM_DLC
|
|
IF NOT HAS_ONE_TIME_HELP_DISPLAYED(FHM_FIRST_PROPERTY_MISSION)
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_BLIPPED_MANAGEMENT_EVENT)
|
|
FlowHelpStatus fStatus
|
|
fStatus = GET_FLOW_HELP_MESSAGE_STATUS("AM_H_PMFS")
|
|
IF fStatus = FHS_EXPIRED
|
|
ADD_HELP_TO_FLOW_QUEUE("AM_H_PMFS", FHP_HIGH, 0, 3000)
|
|
ELIF fStatus = FHS_DISPLAYED
|
|
SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_FIRST_PROPERTY_MISSION)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
#ENDIF
|
|
#ENDIF
|
|
|
|
// handle creating the event
|
|
HANDLE_CREATE_MANAGEMENT_EVENT_ENTITIES()
|
|
|
|
IF NOT UPDATE_MANAGEMENT_EVENT_IN_WORLD()
|
|
CDEBUG1LN(DEBUG_PROPERTY, "Management event failed to update, fail out")
|
|
// something went wrong in the world to fail it
|
|
bFailOut = TRUE
|
|
ELSE
|
|
IF bCanStartAgainstMission
|
|
BOOL bForceStartMission
|
|
bForceStartMission = SHOULD_MANAGEMENT_EVENT_FORCE_START(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.currentPropertyManagementMission, g_PropertySystemData.iCurrentPropertyManagementVariation)
|
|
|
|
IF IS_PLAYER_AT_MANAGEMENT_EVENT_TRIGGER(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.currentPropertyManagementMission, g_PropertySystemData.iCurrentPropertyManagementVariation)
|
|
OR bForceStartMission
|
|
IF (g_PropertySystemData.createManagementEventState = CREATE_MANAGEMENT_EVENT_STATE_DONE
|
|
AND NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_CALL_RESPOND)
|
|
AND NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_TEXT_VIEW))
|
|
OR bForceStartMission
|
|
CDEBUG1LN(DEBUG_PROPERTY, "Launch management evemt")
|
|
|
|
IF bForceStartMission
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_FORCED_MISSION_START)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_FORCED_MISSION_START)
|
|
ENDIF
|
|
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DO_RESET_TO_WAITING)
|
|
g_PropertySystemData.propertyManagementState = PROPERTY_MANAGEMENT_STATE_LAUNCHING
|
|
ENDIF
|
|
ELIF GET_GAME_TIMER() >= g_PropertySystemData.iPendingPropertyManagementTimeOut
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_CALL_RESPOND)
|
|
AND NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_TEXT_VIEW)
|
|
// player ignored the event and it timed out
|
|
CDEBUG1LN(DEBUG_PROPERTY, "Ignored event, fail out")
|
|
bFailOut = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() <> g_savedGlobals.sPropertyData.propertyOwnershipData[g_PropertySystemData.currentPropertyManagementProperty].charOwner
|
|
OR IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
#IF IS_DEBUG_BUILD
|
|
IF NOT g_PropertySystemData.bDebugSetAsOwner[g_PropertySystemData.currentPropertyManagementProperty]
|
|
#ENDIF
|
|
// player switched and it timed out
|
|
CDEBUG1LN(DEBUG_PROPERTY, "Wrong character, fail out")
|
|
bFailOut = TRUE
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
ENDIF
|
|
#ENDIF
|
|
ENDIF
|
|
|
|
//IF IS_PLAYER_BEING_ARRESTED(PLAYER_ID())
|
|
//OR IS_PED_INJURED(PLAYER_PED_ID())
|
|
// arrested or died
|
|
// CDEBUG1LN(DEBUG_PROPERTY, "Arrested or died, fail out")
|
|
// bFailOut = TRUE
|
|
//ENDIF
|
|
ELSE
|
|
CDEBUG1LN(DEBUG_PROPERTY, "Mission launched, fail out")
|
|
bFailOut = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bFailOut
|
|
CDEBUG1LN(DEBUG_PROPERTY, "FAIL OUT HIT")
|
|
g_PropertySystemData.failReasonOverride = PROPERTY_MISSION_FAIL_REASON_OVERRIDE_IGNORED
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_TEXT_VIEW)
|
|
AND NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_CALL_RESPOND)
|
|
HANDLE_PROPERTY_MANAGEMENT_STATE_RESULT(PROPERTY_MANAGEMENT_RESULT_FAILURE)
|
|
ELSE
|
|
HANDLE_PROPERTY_MANAGEMENT_STATE_RESULT(PROPERTY_MANAGEMENT_RESULT_NONE)
|
|
ENDIF
|
|
RESET_PROPERTY_MANAGEMENT_TO_WAITING()
|
|
RELEASE_MANAGEMENT_EVENT_ASSETS()
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_TEXT_VIEW)
|
|
AND NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_WAITING_ON_CALL_RESPOND)
|
|
SET_NEXT_PROPERTY_MANAGEMENT_EVENT_TIME(PROPERTY_ACTION_IGNORED_MANAGEMENT_EVENT)
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PROPERTY_MANAGEMENT_STATE_LAUNCHING
|
|
// try and launch the mission script
|
|
STRING sScript
|
|
sScript = GET_SCRIPT_FOR_PROPERTY_MANAGEMENT_MISSION(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.currentPropertyManagementMission, g_PropertySystemData.iCurrentPropertyManagementVariation)
|
|
REQUEST_SCRIPT(sScript)
|
|
IF HAS_SCRIPT_LOADED(sScript)
|
|
m_enumMissionCandidateReturnValue candidateValue
|
|
candidateValue = Request_Mission_Launch(g_PropertySystemData.iCandidateID, MCTID_CONTACT_POINT, MISSION_TYPE_MINIGAME)
|
|
IF candidateValue = MCRET_ACCEPTED
|
|
IF DOES_BLIP_EXIST(g_PropertySystemData.propertyManagementBlip)
|
|
REMOVE_BLIP(g_PropertySystemData.propertyManagementBlip)
|
|
ENDIF
|
|
STATIC_BLIP_SOFT_REMOVE(GET_BLIP_ENUM_FOR_PROPERTY(g_PropertySystemData.currentPropertyManagementProperty))
|
|
|
|
|
|
// increment launched stat
|
|
INT iLaunchedStat
|
|
STAT_GET_INT(GET_STAT_FOR_PROPERTY(g_PropertySystemData.currentPropertyManagementProperty, PROPERTY_STAT_MISSIONS_TRIGGERED), iLaunchedStat)
|
|
iLaunchedStat++
|
|
STAT_SET_INT(GET_STAT_FOR_PROPERTY(g_PropertySystemData.currentPropertyManagementProperty, PROPERTY_STAT_MISSIONS_TRIGGERED), iLaunchedStat)
|
|
|
|
SET_PLAYER_ON_MANAGEMENT_MISSION(TRUE)
|
|
|
|
RELEASE_MANAGEMENT_EVENT_ASSETS(FALSE)
|
|
|
|
SET_CURRENT_MANAGEMENT_VARIATION_AS_LAUNCHED()
|
|
RESET_ALL_MANAGEMENT_VARIATIONS_IF_COMPLETED(g_PropertySystemData.currentPropertyManagementProperty, g_PropertySystemData.currentPropertyManagementMission, g_PropertySystemData.iCurrentPropertyManagementVariation)
|
|
g_PropertySystemData.propertyManagementThreadID = START_NEW_SCRIPT(sScript, MISSION_STACK_SIZE)
|
|
SET_SCRIPT_AS_NO_LONGER_NEEDED(sScript)
|
|
g_PropertySystemData.currentPropertyManagementResult = PROPERTY_MANAGEMENT_RESULT_NONE
|
|
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DO_RESET_TO_WAITING)
|
|
g_PropertySystemData.propertyManagementState = PROPERTY_MANAGEMENT_STATE_RUNNING
|
|
ELIF candidateValue = MCRET_DENIED
|
|
SET_SCRIPT_AS_NO_LONGER_NEEDED(sScript)
|
|
RELEASE_MANAGEMENT_EVENT_ASSETS()
|
|
SET_NEXT_PROPERTY_MANAGEMENT_EVENT_TIME(PROPERTY_ACTION_GENERAL_DELAY)
|
|
RESET_PROPERTY_MANAGEMENT_TO_WAITING()
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PROPERTY_MANAGEMENT_STATE_RUNNING
|
|
// mission script is in progress
|
|
IF IS_THREAD_ACTIVE(g_PropertySystemData.propertyManagementThreadID)
|
|
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
SWITCH g_PropertySystemData.currentPropertyManagementResult
|
|
CASE PROPERTY_MANAGEMENT_RESULT_NONE
|
|
PRINTSTRING("property management mission terminated with NO RESULT!") PRINTNL()
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_RESULT_SUCCESS
|
|
PRINTSTRING("property management mission terminated with SUCCESS!") PRINTNL()
|
|
BREAK
|
|
CASE PROPERTY_MANAGEMENT_RESULT_FAILURE
|
|
PRINTSTRING("property management mission terminated with FAILURE!") PRINTNL()
|
|
BREAK
|
|
ENDSWITCH
|
|
#ENDIF
|
|
|
|
CLEAR_ADDITIONAL_TEXT(MISSION_TEXT_SLOT, TRUE)
|
|
SET_PLAYER_ON_MANAGEMENT_MISSION(FALSE)
|
|
HANDLE_PROPERTY_MANAGEMENT_STATE_RESULT(g_PropertySystemData.currentPropertyManagementResult)
|
|
RELEASE_MANAGEMENT_EVENT_ASSETS()
|
|
SET_NEXT_PROPERTY_MANAGEMENT_EVENT_TIME(PROPERTY_ACTION_FINISHED_MANAGEMENT_EVENT)
|
|
SET_NEXT_MANAGEMENT_EVENT_TIME_FOR_PROPERTY(g_PropertySystemData.currentPropertyManagementProperty, PROPERTY_ACTION_FINISHED_MANAGEMENT_EVENT)
|
|
RESET_PROPERTY_MANAGEMENT_TO_WAITING()
|
|
Mission_Over(g_PropertySystemData.iCandidateID)
|
|
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
|
|
FUNC STRING GET_PROPERTY_NAME_AS_STRING(PROPERTY_ENUM thisProperty)
|
|
SWITCH thisProperty
|
|
CASE PROPERTY_TOWING_IMPOUND
|
|
RETURN "Towing Impound"
|
|
BREAK
|
|
CASE PROPERTY_TAXI_LOT
|
|
RETURN "Taxi Lot"
|
|
BREAK
|
|
CASE PROPERTY_ARMS_TRAFFICKING
|
|
RETURN "Arms Trafficking"
|
|
BREAK
|
|
CASE PROPERTY_SONAR_COLLECTIONS
|
|
RETURN "Sonar Collections"
|
|
BREAK
|
|
CASE PROPERTY_CAR_MOD_SHOP
|
|
RETURN "Car Mod Shop"
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_VINEWOOD
|
|
RETURN "Cinema - Vinewood"
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_DOWNTOWN
|
|
RETURN "Cinema - Downtown"
|
|
BREAK
|
|
CASE PROPERTY_CINEMA_MORNINGWOOD
|
|
RETURN "Cinema - Morningwood"
|
|
BREAK
|
|
CASE PROPERTY_GOLF_CLUB
|
|
RETURN "Golf Club"
|
|
BREAK
|
|
CASE PROPERTY_CAR_SCRAP_YARD
|
|
RETURN "Car Scrap Yard"
|
|
BREAK
|
|
CASE PROPERTY_WEED_SHOP
|
|
RETURN "Weed Shop"
|
|
BREAK
|
|
CASE PROPERTY_BAR_TEQUILALA
|
|
RETURN "Bar - Tequilala"
|
|
BREAK
|
|
CASE PROPERTY_BAR_PITCHERS
|
|
RETURN "Bar - Pitchers"
|
|
BREAK
|
|
CASE PROPERTY_BAR_HEN_HOUSE
|
|
RETURN "Bar - Hen House"
|
|
BREAK
|
|
CASE PROPERTY_BAR_HOOKIES
|
|
RETURN "Bar - Hookies"
|
|
BREAK
|
|
CASE PROPERTY_STRIP_CLUB
|
|
RETURN "Strip Club"
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN "ERROR"
|
|
ENDFUNC
|
|
|
|
|
|
// create properties widgets
|
|
PROC CREATE_PROPERTIES_WIDGETS()
|
|
START_WIDGET_GROUP("Properties")
|
|
INT i
|
|
ADD_WIDGET_INT_READ_ONLY("Next Management Year", g_PropertySystemData.iDebugNextManagementYear)
|
|
ADD_WIDGET_INT_READ_ONLY("Next Management Month", g_PropertySystemData.iDebugNextManagementMonth)
|
|
ADD_WIDGET_INT_READ_ONLY("Next Management Day", g_PropertySystemData.iDebugNextManagementDay)
|
|
ADD_WIDGET_INT_READ_ONLY("Next Management Hour", g_PropertySystemData.iDebugNextManagementHour)
|
|
ADD_WIDGET_INT_READ_ONLY("Next Management Minute", g_PropertySystemData.iDebugNextManagementMinute)
|
|
ADD_WIDGET_INT_READ_ONLY("Next Management Second", g_PropertySystemData.iDebugNextManagementSecond)
|
|
|
|
ADD_WIDGET_BOOL("Advance next overall management time", g_PropertySystemData.bDebugAdvanceNextPropertyManagementTime)
|
|
ADD_WIDGET_BOOL("Unlock Towing Impound (set all Tonya missions complete)", g_PropertySystemData.bDebugSetTonyaMissionsComplete)
|
|
ADD_WIDGET_BOOL("Print current time of day", g_PropertySystemData.bDebugPrintCurrentTimeOfDay)
|
|
|
|
REPEAT COUNT_OF(PROPERTY_ENUM) i
|
|
PROPERTY_ENUM thisProperty = INT_TO_ENUM(PROPERTY_ENUM, i)
|
|
START_WIDGET_GROUP(GET_PROPERTY_NAME_AS_STRING(thisProperty))
|
|
ADD_WIDGET_INT_READ_ONLY("Current owner", g_PropertySystemData.iDebugOwner[i])
|
|
ADD_WIDGET_BOOL("Set as owner", g_PropertySystemData.bDebugSetAsOwner[i])
|
|
ADD_WIDGET_INT_READ_ONLY("Next Management Day", g_PropertySystemData.iDebugThisPropertyNextManagementDay[i])
|
|
ADD_WIDGET_INT_READ_ONLY("Next Management Hour", g_PropertySystemData.iDebugThisPropertyNextManagementHour[i])
|
|
ADD_WIDGET_BOOL("Advance next management time", g_PropertySystemData.bDebugAdvanceNextThisPropertyManagementTime[i])
|
|
ADD_WIDGET_BOOL("Warp to cutscene", g_PropertySystemData.bDebugWarpToThisPropertyPurchaseCutscene[i])
|
|
//ADD_WIDGET_BOOL("Should pay this week", g_savedGlobals.sPropertyData.propertyOwnershipData[i].bShouldReceivePaymentThisWeek)
|
|
STOP_WIDGET_GROUP()
|
|
ENDREPEAT
|
|
STOP_WIDGET_GROUP()
|
|
ENDPROC
|
|
|
|
// maintain properties widgets
|
|
PROC MAINTAIN_PROPERTIES_WIDGETS()
|
|
INT i
|
|
IF GET_GAME_TIMER() >= g_PropertySystemData.iDebugUpdateWidgetTime
|
|
IF g_PropertySystemData.bDebugAdvanceNextPropertyManagementTime
|
|
g_savedGlobals.sPropertyData.nextCheckManagementEventTime = GET_CURRENT_TIMEOFDAY()
|
|
g_PropertySystemData.bDebugAdvanceNextPropertyManagementTime = FALSE
|
|
ENDIF
|
|
|
|
g_PropertySystemData.iDebugNextManagementYear = GET_TIMEOFDAY_YEAR(g_savedGlobals.sPropertyData.nextCheckManagementEventTime)
|
|
g_PropertySystemData.iDebugNextManagementMonth = ENUM_TO_INT(GET_TIMEOFDAY_MONTH(g_savedGlobals.sPropertyData.nextCheckManagementEventTime))
|
|
g_PropertySystemData.iDebugNextManagementDay = GET_TIMEOFDAY_DAY(g_savedGlobals.sPropertyData.nextCheckManagementEventTime)
|
|
g_PropertySystemData.iDebugNextManagementHour = GET_TIMEOFDAY_HOUR(g_savedGlobals.sPropertyData.nextCheckManagementEventTime)
|
|
g_PropertySystemData.iDebugNextManagementMinute = GET_TIMEOFDAY_MINUTE(g_savedGlobals.sPropertyData.nextCheckManagementEventTime)
|
|
g_PropertySystemData.iDebugNextManagementSecond = GET_TIMEOFDAY_SECOND(g_savedGlobals.sPropertyData.nextCheckManagementEventTime)
|
|
|
|
IF g_PropertySystemData.bDebugPrintCurrentTimeOfDay
|
|
PRINT_TIMEOFDAY(GET_CURRENT_TIMEOFDAY())
|
|
ENDIF
|
|
|
|
IF g_PropertySystemData.bDebugSetTonyaMissionsComplete
|
|
Set_Random_Character_Mission_Complete(RC_TONYA_1)
|
|
Set_Random_Character_Mission_Complete(RC_TONYA_2)
|
|
Set_Random_Character_Mission_Complete(RC_TONYA_3)
|
|
Set_Random_Character_Mission_Complete(RC_TONYA_4)
|
|
Set_Random_Character_Mission_Complete(RC_TONYA_5)
|
|
|
|
g_PropertySystemData.bDebugSetTonyaMissionsComplete = FALSE
|
|
ENDIF
|
|
|
|
REPEAT COUNT_OF(PROPERTY_ENUM) i
|
|
PROPERTY_ENUM thisProperty = INT_TO_ENUM(PROPERTY_ENUM, i)
|
|
IF g_PropertySystemData.bDebugAdvanceNextThisPropertyManagementTime[i]
|
|
g_savedGlobals.sPropertyData.propertyOwnershipData[i].nextManagementEventTime = GET_CURRENT_TIMEOFDAY()
|
|
g_PropertySystemData.bDebugAdvanceNextThisPropertyManagementTime[i] = FALSE
|
|
ENDIF
|
|
g_PropertySystemData.iDebugThisPropertyNextManagementDay[i] = GET_TIMEOFDAY_DAY(g_savedGlobals.sPropertyData.propertyOwnershipData[i].nextManagementEventTime)
|
|
g_PropertySystemData.iDebugThisPropertyNextManagementHour[i] = GET_TIMEOFDAY_HOUR(g_savedGlobals.sPropertyData.propertyOwnershipData[i].nextManagementEventTime)
|
|
|
|
IF g_PropertySystemData.bDebugSetAsOwner[i]
|
|
g_savedGlobals.sPropertyData.propertyOwnershipData[i].charOwner = GET_CURRENT_PLAYER_PED_ENUM()
|
|
g_PropertySystemData.bDebugSetAsOwner[i] = FALSE
|
|
SET_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.propertyOwnershipData[i].iBit, PROPERTY_BIT_SHOULD_RECEIVE_PAYMENT_THIS_WEEK)
|
|
ENDIF
|
|
|
|
SWITCH g_savedGlobals.sPropertyData.propertyOwnershipData[i].charOwner
|
|
CASE NO_CHARACTER
|
|
g_PropertySystemData.iDebugOwner[i] = -1
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
g_PropertySystemData.iDebugOwner[i] = 2
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
g_PropertySystemData.iDebugOwner[i] = 1
|
|
BREAK
|
|
CASE CHAR_MICHAEL
|
|
g_PropertySystemData.iDebugOwner[i] = 0
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
IF g_PropertySystemData.bDebugWarpToThisPropertyPurchaseCutscene[i]
|
|
g_PropertySystemData.bDebugForcePropertiesAvailable = TRUE
|
|
g_savedGlobals.sPropertyData.propertyOwnershipData[i].charOwner = NO_CHARACTER
|
|
CREDIT_BANK_ACCOUNT(GET_CURRENT_PLAYER_PED_ENUM(), GET_BANK_ACCOUNT_SOURCE_FOR_PROPERTY(thisProperty), 150000000)
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), GET_PROPERTY_PURCHASE_COORDS(thisProperty))
|
|
g_PropertySystemData.bDebugWarpToThisPropertyPurchaseCutscene[i] = FALSE
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
g_PropertySystemData.iDebugUpdateWidgetTime = GET_GAME_TIMER() + 3000
|
|
ENDIF
|
|
ENDPROC
|
|
#ENDIF
|
|
|
|
// Handles launching an ambient script upon purchasing a property
|
|
PROC REQUEST_AND_LAUNCH_PROPERTY_AMBIENT_SCRIPT(PROPERTY_ENUM thisProperty)
|
|
|
|
SWITCH thisProperty
|
|
|
|
CASE PROPERTY_SONAR_COLLECTIONS
|
|
// Launch sonar ambient script to search for gold nuggets
|
|
REQUEST_SCRIPT("ambient_Sonar")
|
|
IF HAS_SCRIPT_LOADED("ambient_Sonar")
|
|
START_NEW_SCRIPT("ambient_Sonar", DEFAULT_STACK_SIZE)
|
|
SET_SCRIPT_AS_NO_LONGER_NEEDED("ambient_Sonar")
|
|
CPRINTLN(DEBUG_AMBIENT, "REQUEST_AND_LAUNCH_PROPERTY_AMBIENT_SCRIPT() - ambient_Sonar launched!")
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_LAUNCH_AMBIENT_SCRIPT)
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PROPERTY_TOWING_IMPOUND
|
|
// Launch TOWING AMBIENT
|
|
IF g_savedGlobals.sTowingData.iTowingJobsCompleted < 5
|
|
g_savedGlobals.sTowingData.iTowingJobsCompleted = 5
|
|
ENDIF
|
|
REQUEST_SCRIPT("controller_Towing")
|
|
IF HAS_SCRIPT_LOADED("controller_Towing")
|
|
START_NEW_SCRIPT("controller_Towing", DEFAULT_STACK_SIZE)
|
|
SET_SCRIPT_AS_NO_LONGER_NEEDED("controller_Towing")
|
|
CPRINTLN(DEBUG_AMBIENT, "REQUEST_AND_LAUNCH_PROPERTY_AMBIENT_SCRIPT() - towing launched!")
|
|
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_LAUNCH_AMBIENT_SCRIPT)
|
|
ENDIF
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
// handle entire properties system
|
|
PROC UPDATE_PROPERTIES_SYSTEM()
|
|
IF NOT g_bInMultiplayer
|
|
AND NOT MPGlobals.g_bEndSingleplayerNow
|
|
|
|
BOOL bCanStartAgainstMission = CAN_MISSION_TYPE_START_AGAINST_CURRENT_TYPE(MISSION_TYPE_STORY)
|
|
|
|
INT i
|
|
BOOL bCanPurchase = FALSE
|
|
IF bCanStartAgainstMission
|
|
AND NOT g_bResultScreenDisplaying
|
|
UPDATE_PROPERTY_AVAILABILITY(INT_TO_ENUM(PROPERTY_ENUM, g_PropertySystemData.iTick))
|
|
UPDATE_ALL_PROPERTIES_INCOME()
|
|
bCanPurchase = TRUE
|
|
ENDIF
|
|
|
|
UPDATE_PROPERTY_PURCHASE(bCanPurchase)
|
|
|
|
UPDATE_PROPERTY_MANAGEMENT(bCanStartAgainstMission)
|
|
|
|
// release for sale sign and cutscene while on mission
|
|
IF g_PropertySystemData.iTick = 0
|
|
IF NOT bCanStartAgainstMission //IS_CURRENTLY_ON_MISSION_OF_ANY_TYPE()
|
|
RESET_FOR_SALE_SIGN_CREATE_STATE(FALSE)
|
|
RESET_PROPERTY_ASSET_STREAMING()
|
|
ELSE
|
|
// release for sale signs
|
|
REPEAT NUMBER_PROPERTY_FOR_SALE_SIGNS i
|
|
IF DOES_ENTITY_EXIST(g_PropertySystemData.signObject[i])
|
|
IF VDIST2(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(g_PropertySystemData.signObject[i])) > LONG_RANGE_PURCHASE_DISTANCE_SQUARED
|
|
DELETE_OBJECT(g_PropertySystemData.signObject[i])
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDIF
|
|
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SUPPRESS_FOR_SALE_SIGNS)
|
|
RESET_FOR_SALE_SIGN_CREATE_STATE(FALSE)
|
|
ENDIF
|
|
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sPropertyData.iBit, PROPERTY_SAVED_BIT_RESET_TIME_AFTER_ARMENIAN_1)
|
|
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_ARMENIAN_1)
|
|
g_savedGlobals.sPropertyData.nextCheckManagementEventTime = GET_CURRENT_TIMEOFDAY()
|
|
SET_BITMASK_AS_ENUM(g_savedGlobals.sPropertyData.iBit, PROPERTY_SAVED_BIT_RESET_TIME_AFTER_ARMENIAN_1)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// unlock any taxis near the taxi lot
|
|
IF g_savedGlobals.sPropertyData.propertyOwnershipData[PROPERTY_TAXI_LOT].charOwner = CHAR_FRANKLIN
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
VEHICLE_INDEX taxiVehicle = GET_VEHICLE_PED_IS_ENTERING(PLAYER_PED_ID())
|
|
IF IS_VEHICLE_DRIVEABLE(taxiVehicle)
|
|
IF GET_ENTITY_MODEL(taxiVehicle) = TAXI
|
|
IF IS_ENTITY_IN_AREA(taxiVehicle, <<878.28693, -194.96330, 77.59733>>, <<931.63037, -147.05588, 74.05599>>, FALSE, FALSE)
|
|
SET_VEHICLE_DOORS_LOCKED(taxiVehicle, VEHICLELOCK_UNLOCKED)
|
|
SET_VEHICLE_ALARM(taxiVehicle, FALSE)
|
|
SET_VEHICLE_HAS_BEEN_OWNED_BY_PLAYER(taxiVehicle, TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_RUN_CUTSCENE)
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_CONTEXT)
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_TALK)
|
|
RUN_PROPERTY_CUTSCENE(g_PropertySystemData.runCutsceneProperty)
|
|
ENDIF
|
|
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_LAUNCH_AMBIENT_SCRIPT)
|
|
REQUEST_AND_LAUNCH_PROPERTY_AMBIENT_SCRIPT(g_PropertySystemData.ambientScriptProperty)
|
|
ENDIF
|
|
|
|
g_PropertySystemData.iTick++
|
|
IF g_PropertySystemData.iTick >= COUNT_OF(PROPERTY_ENUM)
|
|
g_PropertySystemData.iTick = 0
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
MAINTAIN_PROPERTIES_WIDGETS()
|
|
#ENDIF
|
|
ELSE
|
|
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_RESET_FOR_MULTIPLAYER)
|
|
RESET_PROPERTIES_FOR_MP()
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
// initialise all property data on clean boot
|
|
PROC Initialise_Properties_Global_Variables_On_Startup()
|
|
INT i
|
|
|
|
REPEAT COUNT_OF(PROPERTY_ENUM) i
|
|
g_savedGlobals.sPropertyData.propertyOwnershipData[i].charOwner = NO_CHARACTER
|
|
//g_savedGlobals.sPropertyData.propertyOwnershipData[i].bShouldReceivePaymentThisWeek = TRUE
|
|
ENDREPEAT
|
|
|
|
g_PropertySystemData.propertyManagementState = PROPERTY_MANAGEMENT_STATE_WAITING
|
|
g_PropertySystemData.currentPropertyManagementMission = PROPERTY_MANAGEMENT_MISSION_NONE
|
|
g_PropertySystemData.iTick = 0
|
|
|
|
g_savedGlobals.sPropertyData.nextCheckManagementEventTime = GET_CURRENT_TIMEOFDAY()
|
|
ENDPROC
|
|
|
|
|
|
|
|
|