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

1594 lines
43 KiB
Scheme
Executable File

USING "globals.sch"
USING "commands_camera.sch"
USING "cutscene_public.sch"
USING "shop_private.sch"
USING "clearmissionarea.sch"
CONST_INT PROPERTY_CUTSCENE_HELP_TEXT_TIME 10000
// property cutscene stuff
// fill the attributes for a particular shot
PROC FILL_PROPERTY_CUTSCENE_SHOT_ATTRIBUTES(PROPERTY_ENUM thisProperty, INT iThisShot, VECTOR &vPos1, VECTOR &vRot1, FLOAT &fFOV1, VECTOR &vPos2, VECTOR &vRot2, FLOAT &fFOV2, INT &iInterpTime, INT &iShotTime, CAMERA_GRAPH_TYPE &graphTypePos, CAMERA_GRAPH_TYPE &graphTypeRot)
SWITCH thisProperty
CASE PROPERTY_ARMS_TRAFFICKING
SWITCH iThisShot
CASE 0
vPos1 = <<2144.5, 4817.2, 41.8>>
vRot1 = <<4.0, 0.0, 159.1>>
fFOV1 = 29.9
vPos2 = <<2144.1, 4817.3, 41.8>>
vRot2 = <<4.0, 0.0, 159.1>>
fFOV2 = 29.9
iInterpTime = 7000
iShotTime = 7000
graphTypePos = GRAPH_TYPE_ACCEL
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
CASE 1
vPos1 = <<2135.2, 4797.0, 41.0>>
vRot1 = <<2.6, 0.0, 147.5>>
fFOV1 = 33.6
vPos2 = <<2135.2, 4797.0, 41.0>>
vRot2 = <<2.6, 0.0, 177.3>>
fFOV2 = 33.6
iInterpTime = 7000
iShotTime = 7000
graphTypePos = GRAPH_TYPE_DECEL
graphTypeRot = GRAPH_TYPE_DECEL
BREAK
CASE 2
vPos1 = <<2152.577393,4804.002441,41.511604>>
vRot1 = <<1.338220,-0.000025,146.946411>>
fFOV1 = 33.599998
vPos2 = <<2152.608643,4803.963867,41.369118>>
vRot2 = <<0.192390,-0.000025,147.109833>>
fFOV2 = 33.599998
iInterpTime = 7000
iShotTime = 7000
graphTypePos = GRAPH_TYPE_DECEL
graphTypeRot = GRAPH_TYPE_DECEL
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_WEED_SHOP
SWITCH iThisShot
CASE 0
vPos1 = <<-1179.0, -1573.6, 5.0>>
vRot1 = <<26.9, 0.0, -85.8>>
fFOV1 = 40.0
vPos2 = <<-1179.0, -1573.6, 5.0>>
vRot2 = <<3.6, 0.0, -85.8>>
fFOV2 = 40.0
iInterpTime = 7000
iShotTime = 7000
graphTypePos = GRAPH_TYPE_ACCEL
graphTypeRot = GRAPH_TYPE_SIN_ACCEL_DECEL
BREAK
CASE 1
IF GET_TIMEOFDAY_HOUR(GET_CURRENT_TIMEOFDAY()) >= 9
AND GET_TIMEOFDAY_HOUR(GET_CURRENT_TIMEOFDAY()) <= 17
vPos1 = <<-1173.6, -1574.1, 4.8>>
vRot1 = <<0.3, 0.0, -31.2>>
fFOV1 = 40.0
vPos2 = <<-1173.3, -1574.2, 4.8>>
vRot2 = <<0.3, 0.0, -34.5>>
fFOV2 = 40.0
ELSE
vPos1 = <<-1178.843872,-1594.691162,4.659654>>
vRot1 = <<6.171611,-0.059865,-15.387971>>
fFOV1 = 34.478004
vPos2 = <<-1178.221191,-1595.112427,4.628079>>
vRot2 = <<4.898221,-0.059865,-14.482724>>
fFOV2 = 34.478004
ENDIF
iInterpTime = 13000
iShotTime = 13000
graphTypePos = GRAPH_TYPE_LINEAR
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_CAR_SCRAP_YARD
SWITCH iThisShot
CASE 0
vPos1 = <<1570.198975,-2208.991455,79.814644>>
vRot1 = <<2.059314,-0.000000,33.527603>>
fFOV1 = 39.708244
vPos2 = <<1569.858398,-2199.821777,88.119286>>
vRot2 = <<-1.668163,0.000000,36.773270>>
fFOV2 = 39.708244
iInterpTime = 21000
iShotTime = 7000
graphTypePos = GRAPH_TYPE_ACCEL
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
CASE 1
vPos1 = <<1542.112427,-2104.840088,77.538567>>
vRot1 = <<-2.293454,-0.000000,144.152466>>
fFOV1 = 35.918034
vPos2 = <<1540.704102,-2105.141113,77.495590>>
vRot2 = <<-1.205724,-0.000000,140.675766>>
fFOV2 = 35.918034
iInterpTime = 14000
iShotTime = 14000
graphTypePos = GRAPH_TYPE_LINEAR
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_CAR_MOD_SHOP
SWITCH iThisShot
CASE 0
vPos1 = <<1197.061646,2679.448242,39.215000>>
vRot1 = <<2.096360,-0.060617,152.333420>>
fFOV1 = 37.221195
vPos2 = <<1195.604004,2676.083984,39.334801>>
vRot2 = <<0.201093,-0.060612,152.868561>>
fFOV2 = 37.221195
iInterpTime = 10500
iShotTime = 7000
graphTypePos = GRAPH_TYPE_ACCEL
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
CASE 1
vPos1 = <<1180.356201,2645.067871,38.195461>>
vRot1 = <<-0.360282,-0.060618,139.270355>>
fFOV1 = 42.900002
vPos2 = <<1178.990601,2643.862305,38.184780>>
vRot2 = <<-0.360282,-0.060608,145.807434>>
fFOV2 = 42.900002
iInterpTime = 14000
iShotTime = 14000
graphTypePos = GRAPH_TYPE_LINEAR
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_TAXI_LOT
SWITCH iThisShot
CASE 0
vPos1 = <<912.141357,-144.136719,76.251495>>
vRot1 = <<18.068947,0.000000,148.570648>>
fFOV1 = 53.540928
vPos2 = <<911.683411,-144.886230,76.538055>>
vRot2 = <<15.969147,-0.000000,148.570648>>
fFOV2 = 53.540928
iInterpTime = 7000
iShotTime = 7000
graphTypePos = GRAPH_TYPE_ACCEL
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
CASE 1
vPos1 = <<922.432251,-181.601715,74.519295>>
vRot1 = <<6.678218,-0.000000,71.903885>>
fFOV1 = 39.810390
vPos2 = <<920.133362,-185.072647,74.615295>>
vRot2 = <<4.337803,-0.000000,63.855148>>
fFOV2 = 39.810390
iInterpTime = 14000
iShotTime = 14000
graphTypePos = GRAPH_TYPE_LINEAR
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_SONAR_COLLECTIONS
SWITCH iThisShot
CASE 0
vPos1 = <<-1591.725464,5229.636719,4.933816>>
vRot1 = <<3.142932,-0.000000,165.001678>>
fFOV1 = 37.912991
vPos2 = <<-1592.929932,5229.475098,4.959430>>
vRot2 = <<1.375998,0.000000,166.243240>>
fFOV2 = 37.912991
iInterpTime = 7000
iShotTime = 7000
graphTypePos = GRAPH_TYPE_ACCEL
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
CASE 1
vPos1 = <<-1606.4, 5269.9, 4.6>>
vRot1 = <<2.9, -0.1, -179.2>>
fFOV1 = 37.234703
vPos2 = <<-1606.0, 5270.0, 4.5>>
vRot2 = <<-4.4, -0.1, -162.1>>
fFOV2 = 37.234703
iInterpTime = 7000
iShotTime = 7000
graphTypePos = GRAPH_TYPE_LINEAR
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
CASE 2
vPos1 = <<-1596.6, 5261.2, -1.6>>
vRot1 = <<9.6, 0.0, 174.2>>
fFOV1 = 37.234703
vPos2 = <<-1596.4, 5260.7, -1.5>>
vRot2 = <<7.6, 0.0, 173.4>>
fFOV2 = 37.234703
iInterpTime = 7000
iShotTime = 7000
graphTypePos = GRAPH_TYPE_LINEAR
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_TOWING_IMPOUND
SWITCH iThisShot
CASE 0
vPos1 = <<421.997894,-1621.681519,29.605589>>
vRot1 = <<1.747380,0.000000,101.346832>>
fFOV1 = 39.307011
vPos2 = <<420.266968,-1620.496216,29.645708>>
vRot2 = <<2.741723,-0.000000,113.306282>>
fFOV2 = 39.307011
iInterpTime = 7000
iShotTime = 7000
graphTypePos = GRAPH_TYPE_ACCEL
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
CASE 1
vPos1 = <<403.211823,-1639.405396,29.650751>>
vRot1 = <<0.698972,-0.000000,1.880809>>
fFOV1 = 39.307011
vPos2 = <<404.081116,-1640.545166,29.636583>>
vRot2 = <<-1.204437,0.000000,-0.188429>>
fFOV2 = 39.307011
iInterpTime = 13000
iShotTime = 13000
graphTypePos = GRAPH_TYPE_LINEAR
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_GOLF_CLUB
SWITCH iThisShot
CASE 0
vPos1 = <<-1418.670288,50.412415,55.505150>>
vRot1 = <<7.033136,-0.000000,-82.497063>>
fFOV1 = 50.000000
vPos2 = <<-1417.523560,50.625343,58.794369>>
vRot2 = <<1.384808,0.000000,-83.450989>>
fFOV2 = 50.000000
iInterpTime = 7000
iShotTime = 7000
graphTypePos = GRAPH_TYPE_ACCEL
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
CASE 1
vPos1 = <<-1232.220337,-22.753672,47.196873>>
vRot1 = <<5.359231,0.000000,52.316067>>
fFOV1 = 34.850487
vPos2 = <<-1229.331787,-18.982531,47.196873>>
vRot2 = <<5.359230,-0.000000,54.884293>>
fFOV2 = 34.850487
iInterpTime = 14000
iShotTime = 7000
graphTypePos = GRAPH_TYPE_LINEAR
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_CINEMA_VINEWOOD
SWITCH iThisShot
CASE 0
vPos1 = <<306.066071,176.824387,111.389626>>
vRot1 = <<17.968395,-0.000000,-95.278229>>
fFOV1 = 39.890751
vPos2 = <<306.959229,176.741852,108.623825>>
vRot2 = <<-3.555486,0.000000,-95.278229>>
fFOV2 = 39.890751
iInterpTime = 14000
iShotTime = 7000
graphTypePos = GRAPH_TYPE_ACCEL
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
CASE 1
vPos1 = <<320.558563,155.137115,105.050873>>
vRot1 = <<5.145550,0.000000,-33.844719>>
fFOV1 = 41.696613
vPos2 = <<328.566895,151.884552,105.055260>>
vRot2 = <<4.726644,-0.000000,-16.290794>>
fFOV2 = 41.696613
iInterpTime = 13000
iShotTime = 13000
graphTypePos = GRAPH_TYPE_LINEAR
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_CINEMA_DOWNTOWN
SWITCH iThisShot
CASE 0
vPos1 = <<403.889832,-712.528320,31.692900>>
vRot1 = <<25.835075,-0.000000,86.990822>>
fFOV1 = 40.421535
vPos2 = <<405.258209,-712.600281,30.672750>>
vRot2 = <<24.829134,-0.000000,86.990822>>
fFOV2 = 40.421535
iInterpTime = 7000
iShotTime = 7000
graphTypePos = GRAPH_TYPE_ACCEL
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
CASE 1
vPos1 = <<414.815552,-713.632935,31.105515>>
vRot1 = <<6.276255,-0.000000,85.791985>>
fFOV1 = 44.031376
vPos2 = <<415.728271,-713.057190,28.831530>>
vRot2 = <<10.793771,0.000000,88.521378>>
fFOV2 = 44.031376
iInterpTime = 13000
iShotTime = 13000
graphTypePos = GRAPH_TYPE_LINEAR
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_CINEMA_MORNINGWOOD
SWITCH iThisShot
CASE 0
vPos1 = <<-1446.829712,-193.720184,58.585129>>
vRot1 = <<-18.563808,0.000000,-117.764885>>
fFOV1 = 39.885876
vPos2 = <<-1446.694336,-192.533386,53.519138>>
vRot2 = <<-1.523578,0.000000,-122.914864>>
fFOV2 = 39.885876
iInterpTime = 7000
iShotTime = 7000
graphTypePos = GRAPH_TYPE_ACCEL
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
CASE 1
vPos1 = <<-1412.542969,-184.394852,48.729229>>
vRot1 = <<9.945754,0.000000,159.508240>>
fFOV1 = 49.939129
vPos2 = <<-1421.978149,-182.704178,48.748867>>
vRot2 = <<10.848495,-0.000000,-178.034286>>
fFOV2 = 49.939129
iInterpTime = 19000
iShotTime = 13000
graphTypePos = GRAPH_TYPE_LINEAR
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_BAR_TEQUILALA
SWITCH iThisShot
CASE 0
vPos1 = <<-545.350708,268.765656,83.180801>>
vRot1 = <<23.855200,0.000001,39.411045>>
fFOV1 = 42.142265
vPos2 = <<-546.027954,269.589935,83.652527>>
vRot2 = <<26.712852,0.000001,39.545361>>
fFOV2 = 42.142265
iInterpTime = 7000
iShotTime = 7000
graphTypePos = GRAPH_TYPE_ACCEL
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
CASE 1
vPos1 = <<-548.033875,255.821228,85.222984>>
vRot1 = <<2.389024,0.141337,18.236391>>
fFOV1 = 39.610790
vPos2 = <<-554.224243,256.029083,85.303734>>
vRot2 = <<0.926027,0.141327,19.639772>>
fFOV2 = 39.610790
iInterpTime = 19000
iShotTime = 13000
graphTypePos = GRAPH_TYPE_LINEAR
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_BAR_PITCHERS
SWITCH iThisShot
CASE 0
vPos1 = <<225.968124,352.725769,116.247543>>
vRot1 = <<-22.597023,-0.000000,-169.908859>>
fFOV1 = 37.964249
vPos2 = <<226.568726,350.289001,115.200737>>
vRot2 = <<-24.037203,0.000000,-175.112030>>
fFOV2 = 37.964249
iInterpTime = 10500
iShotTime = 7000
graphTypePos = GRAPH_TYPE_ACCEL
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
CASE 1
vPos1 = <<240.016800,358.654602,106.072250>>
vRot1 = <<7.502857,0.122835,145.494705>>
fFOV1 = 35.193241
vPos2 = <<235.551483,361.130280,106.086258>>
vRot2 = <<8.327662,0.122835,152.588959>>
fFOV2 = 35.193241
iInterpTime = 13000
iShotTime = 13000
graphTypePos = GRAPH_TYPE_LINEAR
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_BAR_HEN_HOUSE
SWITCH iThisShot
CASE 0
vPos1 = <<-296.940277,6247.855957,31.770643>>
vRot1 = <<17.162809,-0.042345,10.145087>>
fFOV1 = 43.425690
vPos2 = <<-296.933044,6248.470703,31.970430>>
vRot2 = <<20.943153,-0.042345,11.089791>>
fFOV2 = 43.425690
iInterpTime = 7000
iShotTime = 7000
graphTypePos = GRAPH_TYPE_ACCEL
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
CASE 1
vPos1 = <<-306.024353,6241.386230,32.556404>>
vRot1 = <<8.206894,-0.000000,-11.017441>>
fFOV1 = 39.445808
vPos2 = <<-307.031464,6242.524902,32.680546>>
vRot2 = <<6.869367,-0.000000,9.408159>>
fFOV2 = 39.445808
iInterpTime = 13000
iShotTime = 13000
graphTypePos = GRAPH_TYPE_LINEAR
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_BAR_HOOKIES
SWITCH iThisShot
CASE 0
vPos1 = <<-2200.738281,4302.428223,48.159374>>
vRot1 = <<22.893482,-0.000001,-139.617188>>
fFOV1 = 42.401520
vPos2 = <<-2200.343994,4301.967285,48.955284>>
vRot2 = <<22.488050,0.000000,-138.379135>>
fFOV2 = 42.401520
iInterpTime = 7000
iShotTime = 7000
graphTypePos = GRAPH_TYPE_ACCEL
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
CASE 1
vPos1 = <<-2197.727295,4295.050781,49.726013>>
vRot1 = <<-1.363194,-0.000000,-164.522430>>
fFOV1 = 42.401520
vPos2 = <<-2199.888184,4290.552246,49.644714>>
vRot2 = <<-1.342801,0.000000,-154.377151>>
fFOV2 = 42.401520
iInterpTime = 13000
iShotTime = 13000
graphTypePos = GRAPH_TYPE_LINEAR
graphTypeRot = GRAPH_TYPE_LINEAR
BREAK
ENDSWITCH
BREAK
ENDSWITCH
ENDPROC
// get help for property cutscene
FUNC STRING GET_HELP_FOR_PROPERTY_CUTSCENE(PROPERTY_ENUM thisProperty, INT iThisHelp)
SWITCH thisProperty
CASE PROPERTY_ARMS_TRAFFICKING
SWITCH iThisHelp
CASE 0
RETURN "PROPR_HELP_TRAF"
BREAK
CASE 1
RETURN "PROPR_HELP_TRAF2"
BREAK
CASE 2
RETURN "PROPR_HELP_TRAF3"
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_WEED_SHOP
SWITCH iThisHelp
CASE 0
RETURN "PROPR_HELP_WEED"
BREAK
CASE 1
RETURN "PROPR_HELP_WEED2"
BREAK
CASE 2
RETURN "PROPR_HELP_MANH"
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_CAR_SCRAP_YARD
SWITCH iThisHelp
CASE 0
RETURN "PROPR_HELP_CSCR"
BREAK
CASE 1
RETURN "PROPR_HELP_CSCR2"
BREAK
CASE 2
RETURN "PROPR_HELP_MANH"
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_CAR_MOD_SHOP
SWITCH iThisHelp
CASE 0
RETURN "PROPR_HELP_CMSH"
BREAK
CASE 1
RETURN "PROPR_HELP_CMSH2"
BREAK
CASE 2
RETURN "PROPR_HELP_CMSH3"
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_TAXI_LOT
SWITCH iThisHelp
CASE 0
RETURN "PROPR_HELP_TAXI"
BREAK
CASE 1
RETURN "PROPR_HELP_TAXI2"
BREAK
CASE 2
RETURN "PROPR_HELP_MANH"
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_SONAR_COLLECTIONS
SWITCH iThisHelp
CASE 0
RETURN "PROPR_HELP_SOCO"
BREAK
CASE 1
RETURN "PROPR_HELP_SOCO2"
BREAK
CASE 2
RETURN "PROPR_HELP_SOCO3"
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_TOWING_IMPOUND
SWITCH iThisHelp
CASE 0
RETURN "PROPR_HELP_TOWI"
BREAK
CASE 1
RETURN "PROPR_HELP_TOWI2"
BREAK
CASE 2
RETURN "PROPR_HELP_TOWI3"
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_GOLF_CLUB
SWITCH iThisHelp
CASE 0
RETURN "PROPR_HELP_GOLF"
BREAK
CASE 1
RETURN "PROPR_HELP_GOLF2"
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_CINEMA_VINEWOOD
SWITCH iThisHelp
CASE 0
RETURN "PROPR_HELP_CINV"
BREAK
CASE 1
RETURN "PROPR_HELP_CINV2"
BREAK
CASE 2
RETURN "PROPR_HELP_MANH"
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_CINEMA_DOWNTOWN
SWITCH iThisHelp
CASE 0
RETURN "PROPR_HELP_CIND"
BREAK
CASE 1
RETURN "PROPR_HELP_CIND2"
BREAK
CASE 2
RETURN "PROPR_HELP_MANH"
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_CINEMA_MORNINGWOOD
SWITCH iThisHelp
CASE 0
RETURN "PROPR_HELP_CINM"
BREAK
CASE 1
RETURN "PROPR_HELP_CINM2"
BREAK
CASE 2
RETURN "PROPR_HELP_MANH"
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_BAR_TEQUILALA
SWITCH iThisHelp
CASE 0
RETURN "PROPR_HELP_BARTE"
BREAK
CASE 1
RETURN "PROPR_HELP_BARTE2"
BREAK
CASE 2
RETURN "PROPR_HELP_MANH"
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_BAR_PITCHERS
SWITCH iThisHelp
CASE 0
RETURN "PROPR_HELP_BARPI"
BREAK
CASE 1
RETURN "PROPR_HELP_BARPI2"
BREAK
CASE 2
RETURN "PROPR_HELP_MANH"
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_BAR_HEN_HOUSE
SWITCH iThisHelp
CASE 0
RETURN "PROPR_HELP_BARHE"
BREAK
CASE 1
RETURN "PROPR_HELP_BARHE2"
BREAK
CASE 2
RETURN "PROPR_HELP_MANH"
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_BAR_HOOKIES
SWITCH iThisHelp
CASE 0
RETURN "PROPR_HELP_BARHO"
BREAK
CASE 1
RETURN "PROPR_HELP_BARHO2"
BREAK
CASE 2
RETURN "PROPR_HELP_MANH"
BREAK
ENDSWITCH
BREAK
ENDSWITCH
RETURN "error"
ENDFUNC
// number shots for property cutscene
FUNC INT GET_NUMBER_PROPERTY_CUTSCENE_SHOTS(PROPERTY_ENUM thisProperty)
SWITCH thisProperty
CASE PROPERTY_ARMS_TRAFFICKING
CASE PROPERTY_SONAR_COLLECTIONS
RETURN 3
BREAK
CASE PROPERTY_WEED_SHOP
CASE PROPERTY_CAR_SCRAP_YARD
CASE PROPERTY_CAR_MOD_SHOP
CASE PROPERTY_TAXI_LOT
CASE PROPERTY_TOWING_IMPOUND
CASE PROPERTY_GOLF_CLUB
CASE PROPERTY_CINEMA_VINEWOOD
CASE PROPERTY_CINEMA_DOWNTOWN
CASE PROPERTY_CINEMA_MORNINGWOOD
CASE PROPERTY_BAR_TEQUILALA
CASE PROPERTY_BAR_PITCHERS
CASE PROPERTY_BAR_HEN_HOUSE
CASE PROPERTY_BAR_HOOKIES
RETURN 2
BREAK
ENDSWITCH
RETURN 1
ENDFUNC
// number texts for property cutscene
FUNC INT GET_NUMBER_PROPERTY_CUTSCENE_HELP_TEXTS(PROPERTY_ENUM thisProperty)
SWITCH thisProperty
CASE PROPERTY_ARMS_TRAFFICKING
CASE PROPERTY_WEED_SHOP
CASE PROPERTY_CAR_SCRAP_YARD
CASE PROPERTY_CAR_MOD_SHOP
CASE PROPERTY_TAXI_LOT
CASE PROPERTY_SONAR_COLLECTIONS
CASE PROPERTY_TOWING_IMPOUND
CASE PROPERTY_CINEMA_VINEWOOD
CASE PROPERTY_CINEMA_DOWNTOWN
CASE PROPERTY_CINEMA_MORNINGWOOD
CASE PROPERTY_BAR_TEQUILALA
CASE PROPERTY_BAR_PITCHERS
CASE PROPERTY_BAR_HEN_HOUSE
CASE PROPERTY_BAR_HOOKIES
RETURN 3
BREAK
CASE PROPERTY_GOLF_CLUB
RETURN 2
BREAK
ENDSWITCH
RETURN 1
ENDFUNC
FUNC INT GET_TIME_FOR_PROPERTY_CUTSCENE_HELP(PROPERTY_ENUM thisProperty, INT iHelp)
SWITCH thisProperty
CASE PROPERTY_BAR_HOOKIES
CASE PROPERTY_BAR_TEQUILALA
CASE PROPERTY_BAR_PITCHERS
CASE PROPERTY_BAR_HEN_HOUSE
CASE PROPERTY_CINEMA_VINEWOOD
CASE PROPERTY_CINEMA_DOWNTOWN
CASE PROPERTY_CINEMA_MORNINGWOOD
CASE PROPERTY_WEED_SHOP
CASE PROPERTY_TOWING_IMPOUND
SWITCH iHelp
CASE 0
RETURN 7000
BREAK
CASE 1
RETURN 6000
BREAK
CASE 2
RETURN 7000
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_TAXI_LOT
CASE PROPERTY_CAR_MOD_SHOP
CASE PROPERTY_CAR_SCRAP_YARD
CASE PROPERTY_ARMS_TRAFFICKING
CASE PROPERTY_SONAR_COLLECTIONS
SWITCH iHelp
CASE 0
RETURN 7000
BREAK
CASE 1
RETURN 7000
BREAK
CASE 2
RETURN 7000
BREAK
ENDSWITCH
BREAK
CASE PROPERTY_GOLF_CLUB
RETURN 7000
BREAK
ENDSWITCH
RETURN PROPERTY_CUTSCENE_HELP_TEXT_TIME
ENDFUNC
// get the sound to play for a property purchase
FUNC STRING GET_PROPERTY_PURCHASE_SOUND_AS_STRING(PROPERTY_ENUM thisProperty)
SWITCH thisProperty
CASE PROPERTY_CINEMA_VINEWOOD
CASE PROPERTY_CINEMA_DOWNTOWN
CASE PROPERTY_CINEMA_MORNINGWOOD
CASE PROPERTY_GOLF_CLUB
CASE PROPERTY_BAR_TEQUILALA
RETURN "PROPERTY_PURCHASE_LARGE"
BREAK
CASE PROPERTY_TOWING_IMPOUND
CASE PROPERTY_TAXI_LOT
CASE PROPERTY_ARMS_TRAFFICKING
CASE PROPERTY_CAR_SCRAP_YARD
CASE PROPERTY_BAR_HEN_HOUSE
RETURN "PROPERTY_PURCHASE_SMALL"
BREAK
DEFAULT
RETURN "PROPERTY_PURCHASE_MEDIUM"
BREAK
ENDSWITCH
RETURN "PROPERTY_PURCHASE_MEDIUM"
ENDFUNC
// do a property cutscene cam
PROC DO_PROPERTY_CUTSCENE_CAM(PROPERTY_ENUM thisProperty, INT &iShot)
VECTOR vCamPos1
VECTOR vCamRot1
FLOAT fCamFOV1
VECTOR vCamPos2
VECTOR vCamRot2
FLOAT fCamFOV2
INT iInterpTime
INT iShotTime
CAMERA_GRAPH_TYPE graphTypePos
CAMERA_GRAPH_TYPE graphTypeRot
FILL_PROPERTY_CUTSCENE_SHOT_ATTRIBUTES(thisProperty, iShot, vCamPos1, vCamRot1, fCamFOV1, vCamPos2, vCamRot2, fCamFOV2, iInterpTime, iShotTime, graphTypePos, graphTypeRot)
IF DOES_CAM_EXIST(g_PropertySystemData.camIndex1)
DESTROY_CAM(g_PropertySystemData.camIndex1)
ENDIF
g_PropertySystemData.camIndex1 = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE)
IF DOES_CAM_EXIST(g_PropertySystemData.camIndex2)
DESTROY_CAM(g_PropertySystemData.camIndex2)
ENDIF
g_PropertySystemData.camIndex2 = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE)
SET_CAM_COORD(g_PropertySystemData.camIndex1, vCamPos1)
SET_CAM_ROT(g_PropertySystemData.camIndex1, vCamRot1)
SET_CAM_FOV(g_PropertySystemData.camIndex1, fCamFOV1)
SET_CAM_COORD(g_PropertySystemData.camIndex2, vCamPos2)
SET_CAM_ROT(g_PropertySystemData.camIndex2, vCamRot2)
SET_CAM_FOV(g_PropertySystemData.camIndex2, fCamFOV2)
SET_CAM_ACTIVE_WITH_INTERP(g_PropertySystemData.camIndex2, g_PropertySystemData.camIndex1, iInterpTime, graphTypePos, graphTypeRot)
RENDER_SCRIPT_CAMS(TRUE, FALSE)
SHAKE_CAM(g_PropertySystemData.camIndex1, "HAND_SHAKE", 0.25)
g_PropertySystemData.iNextCutsceneShotTime = GET_GAME_TIMER() + iShotTime
iShot++
ENDPROC
// do the help for a property cutscene
PROC DO_PROPERTY_CUTSCENE_HELP(PROPERTY_ENUM thisProperty, INT &iHelp)
IF HAS_ADDITIONAL_TEXT_LOADED(MINIGAME_TEXT_SLOT)
IF GET_GAME_TIMER() >= g_PropertySystemData.iCutsceneStartTime + 10
PRINT_HELP(GET_HELP_FOR_PROPERTY_CUTSCENE(thisProperty, iHelp), GET_TIME_FOR_PROPERTY_CUTSCENE_HELP(thisProperty, iHelp))
iHelp++
ENDIF
ENDIF
ENDPROC
// get the for sale sign model
FUNC MODEL_NAMES GET_PROPERTY_FOR_SALE_SIGN_MODEL()
RETURN Prop_forSale_DYN_01//PROP_FORSALE_SIGN_FS
ENDFUNC
// release for sale sign model
PROC RELEASE_PROPERTY_FOR_SALE_SIGN_MODEL()
IF g_PropertySystemData.createForSaleSignState >= CREATE_FOR_SALE_SIGN_STATE_LOADING_MODEL
SET_MODEL_AS_NO_LONGER_NEEDED(GET_PROPERTY_FOR_SALE_SIGN_MODEL())
ENDIF
g_PropertySystemData.createForSaleSignState = CREATE_FOR_SALE_SIGN_STATE_NOT_STARTED
ENDPROC
// delete the sign and reset to start state
PROC RESET_FOR_SALE_SIGN_CREATE_STATE(BOOL bDelete, BOOL bGrab = FALSE)
INT i
REPEAT NUMBER_PROPERTY_FOR_SALE_SIGNS i
IF DOES_ENTITY_EXIST(g_PropertySystemData.signObject[i])
IF bGrab
SET_ENTITY_AS_MISSION_ENTITY(g_PropertySystemData.signObject[i], TRUE, TRUE)
ENDIF
IF bDelete
DELETE_OBJECT(g_PropertySystemData.signObject[i])
ELSE
SET_OBJECT_AS_NO_LONGER_NEEDED(g_PropertySystemData.signObject[i])
ENDIF
ENDIF
ENDREPEAT
REPEAT COUNT_OF(PROPERTY_ENUM) i
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[i], PROPERTY_UNSAVED_BIT_CREATED_FOR_SALE_SIGN)
ENDREPEAT
RELEASE_PROPERTY_FOR_SALE_SIGN_MODEL()
ENDPROC
// get the code id to run when a property has been purchased
FUNC CC_CodeID GET_PROPERTY_PURCHASE_CODE_ID_TO_RUN(PROPERTY_ENUM thisProperty, BOOL bPreCutscene)
SWITCH thisProperty
CASE PROPERTY_ARMS_TRAFFICKING
IF NOT bPreCutscene
RETURN CID_ACTIVATE_MINIGAME_TRAFFICKING
ENDIF
BREAK
CASE PROPERTY_SONAR_COLLECTIONS
IF bPreCutscene
RETURN CID_UNLOCK_SUBMERSIBLE
ENDIF
BREAK
CASE PROPERTY_TOWING_IMPOUND
IF bPreCutscene
RETURN CID_ACTIVATE_MINIGAME_TOWING
ENDIF
BREAK
ENDSWITCH
RETURN CID_BLANK
ENDFUNC
// run a code ID on property purchase
PROC RUN_PROPERTY_PURCHASE_CODE_ID(PROPERTY_ENUM thisProperty, BOOL bPreCutscene)
CC_CodeID doCodeID = GET_PROPERTY_PURCHASE_CODE_ID_TO_RUN(thisProperty, bPreCutscene)
IF doCodeID <> CID_BLANK
EXECUTE_CODE_ID(doCodeID, 0)
ENDIF
ENDPROC
// get the bank account to pay a property from
FUNC BANK_ACCOUNT_ACTION_SOURCE_BAAC GET_BANK_ACCOUNT_SOURCE_FOR_PROPERTY(PROPERTY_ENUM thisProperty)
SWITCH thisProperty
CASE PROPERTY_TOWING_IMPOUND
RETURN BAAC_PROP_TOWING
BREAK
CASE PROPERTY_TAXI_LOT
RETURN BAAC_PROP_TAXI
BREAK
CASE PROPERTY_ARMS_TRAFFICKING
RETURN BAAC_PROP_ARMS
BREAK
CASE PROPERTY_SONAR_COLLECTIONS
RETURN BAAC_PROP_SONAR
BREAK
CASE PROPERTY_CAR_MOD_SHOP
RETURN BAAC_PROP_CARMOD
BREAK
CASE PROPERTY_CINEMA_VINEWOOD
RETURN BAAC_PROP_VCINEMA
BREAK
CASE PROPERTY_CINEMA_DOWNTOWN
RETURN BAAC_PROP_DCINEMA
BREAK
CASE PROPERTY_CINEMA_MORNINGWOOD
RETURN BAAC_PROP_MCINEMA
BREAK
CASE PROPERTY_GOLF_CLUB
RETURN BAAC_PROP_GOLF
BREAK
CASE PROPERTY_CAR_SCRAP_YARD
RETURN BAAC_PROP_CSCRAP
BREAK
CASE PROPERTY_WEED_SHOP
RETURN BAAC_PROP_SMOKE
BREAK
CASE PROPERTY_BAR_TEQUILALA
RETURN BAAC_PROP_BAR_TEQUILA
BREAK
CASE PROPERTY_BAR_PITCHERS
RETURN BAAC_PROP_BAR_PITCHERS
BREAK
CASE PROPERTY_BAR_HEN_HOUSE
RETURN BAAC_PROP_BAR_HEN
BREAK
CASE PROPERTY_BAR_HOOKIES
RETURN BAAC_PROP_BAR_HOOKIES
BREAK
CASE PROPERTY_STRIP_CLUB
RETURN BAAC_STRIP_CLUB
BREAK
ENDSWITCH
RETURN BAAC_DEFAULT_DEBUG
ENDFUNC
// get the purchase price of a property
FUNC INT GET_PROPERTY_PURCHASE_PRICE(PROPERTY_ENUM thisProperty)
INT iPrice = 0
SWITCH thisProperty
CASE PROPERTY_ARMS_TRAFFICKING
iPrice = 150000
BREAK
CASE PROPERTY_CAR_SCRAP_YARD
iPrice = 275000
BREAK
CASE PROPERTY_WEED_SHOP
iPrice = 204000
BREAK
CASE PROPERTY_TAXI_LOT
iPrice = 200000
BREAK
CASE PROPERTY_CAR_MOD_SHOP
iPrice = 349000
BREAK
CASE PROPERTY_SONAR_COLLECTIONS
iPrice = 250000
BREAK
CASE PROPERTY_TOWING_IMPOUND
iPrice = 150000
BREAK
CASE PROPERTY_GOLF_CLUB
iPrice = 150000000
BREAK
CASE PROPERTY_CINEMA_VINEWOOD
iPrice = 10000000
BREAK
CASE PROPERTY_CINEMA_DOWNTOWN
iPrice = 20000000
BREAK
CASE PROPERTY_CINEMA_MORNINGWOOD
iPrice = 30000000
BREAK
CASE PROPERTY_BAR_TEQUILALA
iPrice = 2000000
BREAK
CASE PROPERTY_BAR_PITCHERS
iPrice = 750000
BREAK
CASE PROPERTY_BAR_HEN_HOUSE
iPrice = 80000
BREAK
CASE PROPERTY_BAR_HOOKIES
iPrice = 600000
BREAK
ENDSWITCH
RETURN iPrice
ENDFUNC
// end the property purchase cutscene
PROC END_PROPERTY_CUTSCENE(PROPERTY_ENUM thisProperty)
IF DOES_CAM_EXIST(g_PropertySystemData.camIndex1)
DESTROY_CAM(g_PropertySystemData.camIndex1)
ENDIF
IF DOES_CAM_EXIST(g_PropertySystemData.camIndex2)
DESTROY_CAM(g_PropertySystemData.camIndex2)
ENDIF
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
g_bCurrentlyBuyingProperty = FALSE // Prevent Chop running off when showing the buying property cutscene
DISABLE_CELLPHONE(FALSE)
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
CLEAR_HELP()
CLEAR_PRINTS()
DISPLAY_RADAR(TRUE)
DISPLAY_HUD(TRUE)
RENDER_SCRIPT_CAMS(FALSE,FALSE)
SET_ENTITY_VISIBLE(PLAYER_PED_ID(), TRUE)
IF thisProperty = PROPERTY_ARMS_TRAFFICKING
SET_ENTITY_HEADING(PLAYER_PED_ID(), 25)
ENDIF
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
IF DOES_ENTITY_EXIST(g_PropertySystemData.veh[0])
IF thisProperty = PROPERTY_ARMS_TRAFFICKING
DELETE_VEHICLE(g_PropertySystemData.veh[0])
ELSE
SET_VEHICLE_AS_NO_LONGER_NEEDED(g_PropertySystemData.veh[0])
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(g_PropertySystemData.veh[1])
DELETE_VEHICLE(g_PropertySystemData.veh[1])
ENDIF
RUN_PROPERTY_PURCHASE_CODE_ID(thisProperty, FALSE)
PAUSE_FLOW_HELP_QUEUE(FALSE)
SET_WANTED_LEVEL_MULTIPLIER(1.0)
SET_MAX_WANTED_LEVEL(5)
RELEASE_NAMED_SCRIPT_AUDIO_BANK("HUD_PROPERTY")
NEW_LOAD_SCENE_STOP()
IF STREAMVOL_IS_VALID(g_PropertySystemData.streamVolume)
STREAMVOL_DELETE(g_PropertySystemData.streamVolume)
ENDIF
IF IS_VALID_INTERIOR(g_PropertySystemData.interior)
IF IS_INTERIOR_READY(g_PropertySystemData.interior)
UNPIN_INTERIOR(g_PropertySystemData.interior)
ENDIF
ENDIF
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_RUN_CUTSCENE)
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYING_MOCAP)
DEBIT_BANK_ACCOUNT(GET_CURRENT_PLAYER_PED_ENUM(), GET_BANK_ACCOUNT_SOURCE_FOR_PROPERTY(thisProperty), GET_PROPERTY_PURCHASE_PRICE(thisProperty))
MAKE_AUTOSAVE_REQUEST()
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAY_PURCHASED)
g_PropertySystemData.iManagementEventEndTime = GET_GAME_TIMER() + 1500
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
ENDIF
ENDPROC
PROC REMOVE_CONTROL_AND_HUD_FOR_PROPERTY_CUTSCENE()
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
DISPLAY_RADAR(FALSE)
DISPLAY_HUD(FALSE)
ENDPROC
// reset the streaming for mocap cutscene
PROC RESET_PROPERTY_ASSET_STREAMING(BOOL bRemoveCutscene = TRUE)
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TRAFFICKING_ASSETS)
IF bRemoveCutscene
REMOVE_CUTSCENE()
SET_SRL_FORCE_PRESTREAM(SRL_PRESTREAM_DEFAULT)
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(CUBAN800)
SET_MODEL_AS_NO_LONGER_NEEDED(DUNE)
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TRAFFICKING_ASSETS)
ENDIF
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TOWING_ASSETS)
SET_MODEL_AS_NO_LONGER_NEEDED(TOWTRUCK)
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TOWING_ASSETS)
ENDIF
IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_GOLF_CLUB_ASSETS)
IF STREAMVOL_IS_VALID(g_PropertySystemData.streamVolume)
STREAMVOL_DELETE(g_PropertySystemData.streamVolume)
ENDIF
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_GOLF_CLUB_ASSETS)
ENDIF
ENDPROC
FUNC VECTOR GET_PROPERTY_CUTSCENE_REPOSTION_COORDS(PROPERTY_ENUM thisProperty)
SWITCH thisProperty
CASE PROPERTY_WEED_SHOP
RETURN <<-1173.98413, -1573.37109, 3.37083>>
BREAK
CASE PROPERTY_TOWING_IMPOUND
RETURN <<410.72632, -1624.37292, 28.29278>>
BREAK
CASE PROPERTY_TAXI_LOT
RETURN <<901.96375, -178.59615, 72.95532>>
BREAK
CASE PROPERTY_SONAR_COLLECTIONS
RETURN <<-1585.41406, 5194.89355, 3.00912>>
BREAK
CASE PROPERTY_CAR_MOD_SHOP
RETURN <<1177.81934, 2648.62061, 36.79923>>
BREAK
CASE PROPERTY_CINEMA_VINEWOOD
RETURN <<337.51617, 171.56021, 102.22147>>
BREAK
CASE PROPERTY_CINEMA_DOWNTOWN
RETURN <<397.02444, -710.33325, 28.28472>>
BREAK
CASE PROPERTY_CINEMA_MORNINGWOOD
RETURN <<-1424.19141, -198.89491, 46.30384>>
BREAK
CASE PROPERTY_GOLF_CLUB
RETURN <<-1341.13599, -16.49592, 50.81433>>
BREAK
CASE PROPERTY_CAR_SCRAP_YARD
RETURN <<1525.31177, -2112.94409, 75.64257>>
BREAK
CASE PROPERTY_BAR_TEQUILALA
RETURN <<-564.87378, 271.80304, 82.02014>>
BREAK
CASE PROPERTY_BAR_PITCHERS
RETURN <<226.23177, 341.22311, 104.54834>>
BREAK
CASE PROPERTY_BAR_HEN_HOUSE
RETURN <<-298.25507, 6254.39600, 30.48323>>
BREAK
CASE PROPERTY_BAR_HOOKIES
RETURN <<-2199.22046, 4296.41455, 47.52314>>
BREAK
ENDSWITCH
RETURN GET_ENTITY_COORDS(PLAYER_PED_ID())
ENDFUNC
FUNC FLOAT GET_PROPERTY_CUTSCENE_REPOSTION_HEADING(PROPERTY_ENUM thisProperty)
SWITCH thisProperty
CASE PROPERTY_WEED_SHOP
RETURN 122.4
BREAK
CASE PROPERTY_TOWING_IMPOUND
RETURN -133.2
BREAK
CASE PROPERTY_TAXI_LOT
RETURN -125.3
BREAK
CASE PROPERTY_SONAR_COLLECTIONS
RETURN -63.9
BREAK
CASE PROPERTY_CAR_MOD_SHOP
RETURN -48.2
BREAK
CASE PROPERTY_CINEMA_VINEWOOD
RETURN 162.1
BREAK
CASE PROPERTY_CINEMA_DOWNTOWN
RETURN -88.8
BREAK
CASE PROPERTY_CINEMA_MORNINGWOOD
RETURN 1.5
BREAK
CASE PROPERTY_GOLF_CLUB
RETURN -165.8
BREAK
CASE PROPERTY_CAR_SCRAP_YARD
RETURN -92.2
BREAK
CASE PROPERTY_BAR_TEQUILALA
RETURN 174.7
BREAK
CASE PROPERTY_BAR_PITCHERS
RETURN -19.7
BREAK
CASE PROPERTY_BAR_HEN_HOUSE
RETURN -138.7
BREAK
CASE PROPERTY_BAR_HOOKIES
RETURN 72.4
BREAK
ENDSWITCH
RETURN GET_ENTITY_HEADING(PLAYER_PED_ID())
ENDFUNC
FUNC VECTOR CONVERT_ROTATION2_TO_DIRECTION_VECTOR(VECTOR vRot)
RETURN <<-SIN(vRot.z) * COS(vRot.x), COS(vRot.z) * COS(vRot.x), SIN(vRot.x)>>
ENDFUNC
// do the purchase cutscene for a property
PROC RUN_PROPERTY_CUTSCENE(PROPERTY_ENUM thisProperty)
RESET_SHOP_HELP_DELAY()
IF thisProperty = PROPERTY_TOWING_IMPOUND
IF IS_VEHICLE_DRIVEABLE(g_PropertySystemData.veh[0])
SET_FORCE_HD_VEHICLE(g_PropertySystemData.veh[0], TRUE)
ENDIF
ENDIF
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SETUP_CUTSCENE)
DISABLE_CELLPHONE(TRUE)
CLEAR_HELP()
CLEAR_PRINTS()
g_bCurrentlyBuyingProperty = TRUE // Prevent Chop running off when showing the buying property cutscene
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
PAUSE_FLOW_HELP_QUEUE(TRUE)
SET_WANTED_LEVEL_MULTIPLIER(0.0)
SET_MAX_WANTED_LEVEL(0)
SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 0)
SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TRAFFICKING_ASSETS)
REMOVE_CONTROL_AND_HUD_FOR_PROPERTY_CUTSCENE()
ENDIF
g_PropertySystemData.iCutsceneShot = 0
g_PropertySystemData.iCutsceneHelp = 0
g_PropertySystemData.bDone1stPersonFlash = FALSE
g_PropertySystemData.iCutsceneStartTime = GET_GAME_TIMER()
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TRAFFICKING_ASSETS)
SET_ENTITY_VISIBLE(PLAYER_PED_ID(), FALSE)
CLEAR_AREA_OF_PEDS(GET_PROPERTY_CUTSCENE_REPOSTION_COORDS(thisProperty), 2.0)
CLEAR_AREA_OF_PROJECTILES(GET_ENTITY_COORDS(PLAYER_PED_ID()), 100)
STOP_FIRE_IN_RANGE(GET_ENTITY_COORDS(PLAYER_PED_ID()), 100)
REMOVE_PARTICLE_FX_IN_RANGE(GET_ENTITY_COORDS(PLAYER_PED_ID()), 20)
IF thisProperty = PROPERTY_TOWING_IMPOUND
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA(<<404.38449, -1635.44800, 28.29194>>, <<397.61618, -1630.03479, 33.43343>>, 4.5, <<404.29468, -1629.50781, 28.29194>>, -127.8, TRUE, FALSE, TRUE)
g_PropertySystemData.veh[0] = CREATE_VEHICLE(TOWTRUCK, << 401.6467, -1633.3079, 29.25 >>, -128.47)
SET_VEHICLE_COLOUR_COMBINATION(g_PropertySystemData.veh[0], 0)
SET_VEHICLE_ON_GROUND_PROPERLY(g_PropertySystemData.veh[0])
SET_VEHICLE_AS_NO_LONGER_NEEDED(g_PropertySystemData.veh[0])
ENDIF
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
SET_ENTITY_COORDS(PLAYER_PED_ID(), GET_PROPERTY_CUTSCENE_REPOSTION_COORDS(thisProperty))
SET_ENTITY_HEADING(PLAYER_PED_ID(), GET_PROPERTY_CUTSCENE_REPOSTION_HEADING(thisProperty))
DO_PROPERTY_CUTSCENE_CAM(thisProperty, g_PropertySystemData.iCutsceneShot)
DO_PROPERTY_CUTSCENE_HELP(thisProperty, g_PropertySystemData.iCutsceneHelp)
RESET_PROPERTY_ASSET_STREAMING()
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYING_MOCAP)
IF thisProperty = PROPERTY_GOLF_CLUB
g_PropertySystemData.streamVolume = STREAMVOL_CREATE_FRUSTUM(<<-1232.220337,-22.753672,47.196873>>, CONVERT_ROTATION2_TO_DIRECTION_VECTOR(<<5.359231,0.000000,52.316067>>), 100, FLAG_MAPDATA)
ELIF thisProperty = PROPERTY_CAR_MOD_SHOP
//g_PropertySystemData.streamVolume = STREAMVOL_CREATE_FRUSTUM(<<1180.356201,2645.067871,38.195461>>, CONVERT_ROTATION2_TO_DIRECTION_VECTOR(<<-0.360282,-0.060618,139.270355>>), 30, FLAG_MAPDATA)
NEW_LOAD_SCENE_START_SPHERE((<<1175.7, 2639.3, 38.1>>), 20.0)
g_PropertySystemData.interior = GET_INTERIOR_AT_COORDS(<<1175.7, 2639.3, 38.1>>)
PIN_INTERIOR_IN_MEMORY(g_PropertySystemData.interior)
ENDIF
ELSE
REGISTER_ENTITY_FOR_CUTSCENE(PLAYER_PED_ID(), "Trevor", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
REGISTER_ENTITY_FOR_CUTSCENE(g_PropertySystemData.ped, "Oscar", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, CSB_OSCAR)
START_CUTSCENE(CUTSCENE_SUPPRESS_FP_TRANSITION_FLASH)
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYING_MOCAP)
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_CLEARED_FOR_MOCAP)
ENDIF
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DONE_PURCHASE_SOUND)
REQUEST_ADDITIONAL_TEXT("PROPR", MINIGAME_TEXT_SLOT)
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SETUP_CUTSCENE)
ENDIF
// play sound
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DONE_PURCHASE_SOUND)
IF REQUEST_SCRIPT_AUDIO_BANK("HUD_PROPERTY")
PLAY_SOUND_FRONTEND(-1, GET_PROPERTY_PURCHASE_SOUND_AS_STRING(thisProperty), "HUD_PROPERTY_SOUNDSET")
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DONE_PURCHASE_SOUND)
ENDIF
ENDIF
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYING_MOCAP)
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
IF g_PropertySystemData.iCutsceneHelp < GET_NUMBER_PROPERTY_CUTSCENE_HELP_TEXTS(thisProperty)
DO_PROPERTY_CUTSCENE_HELP(thisProperty, g_PropertySystemData.iCutsceneHelp)
ENDIF
ENDIF
IF IS_CUTSCENE_SKIP_BUTTON_JUST_PRESSED()
AND GET_GAME_TIMER() >= g_PropertySystemData.iCutsceneStartTime + 1000
DO_SCREEN_FADE_OUT(DEFAULT_FADE_TIME)
WHILE NOT IS_SCREEN_FADED_OUT()
WAIT(0)
ENDWHILE
END_PROPERTY_CUTSCENE(thisProperty)
ELSE
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("mission_repeat_controller")) > 0
END_PROPERTY_CUTSCENE(thisProperty)
ELSE
IF NOT g_PropertySystemData.bDone1stPersonFlash
IF GET_FOLLOW_PED_CAM_VIEW_MODE() = CAM_VIEW_MODE_FIRST_PERSON
IF GET_GAME_TIMER() >= g_PropertySystemData.iNextCutsceneShotTime - 300
IF g_PropertySystemData.iCutsceneShot >= GET_NUMBER_PROPERTY_CUTSCENE_SHOTS(thisProperty)
ANIMPOSTFX_PLAY("CamPushInNeutral", 0, FALSE)
PLAY_SOUND_FRONTEND(-1, "1st_Person_Transition", "PLAYER_SWITCH_CUSTOM_SOUNDSET")
g_PropertySystemData.bDone1stPersonFlash = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
IF GET_GAME_TIMER() >= g_PropertySystemData.iNextCutsceneShotTime
IF g_PropertySystemData.iCutsceneShot < GET_NUMBER_PROPERTY_CUTSCENE_SHOTS(thisProperty)
DO_PROPERTY_CUTSCENE_CAM(thisProperty, g_PropertySystemData.iCutsceneShot)
NEW_LOAD_SCENE_STOP()
IF STREAMVOL_IS_VALID(g_PropertySystemData.streamVolume)
STREAMVOL_DELETE(g_PropertySystemData.streamVolume)
ENDIF
ELSE
END_PROPERTY_CUTSCENE(thisProperty)
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_CLEARED_FOR_MOCAP)
IF IS_CUTSCENE_PLAYING()
IF thisProperty = PROPERTY_ARMS_TRAFFICKING
VEHICLE_INDEX lastVehicle = GET_PLAYERS_LAST_VEHICLE()
IF IS_VEHICLE_DRIVEABLE(lastVehicle)
IF GET_ENTITY_MODEL(lastVehicle) <> CUBAN800
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA(<<2139.966, 4771.064, 40.040>>, <<2127.725, 4795.483, 44.119>>, 25, <<2148.30200, 4808.09229, 40.19440>>, 116.6, TRUE, FALSE, TRUE)
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA(<<2153.35938, 4795.98877, 40.18427>>, <<2147.13135, 4800.27588, 44.07146>>, 5, <<2148.30200, 4808.09229, 40.19440>>, 116.6, TRUE, FALSE, TRUE)
ENDIF
ENDIF
CLEAR_AREA_OF_VEHICLES(<<2136.1331, 4780.5635, 39.9702>>, 8.0)
CLEAR_AREA_OF_PROJECTILES(<<2136.1331, 4780.5635, 39.9702>>, 100)
STOP_FIRE_IN_RANGE(<<2136.1331, 4780.5635, 39.9702>>, 100)
REMOVE_PARTICLE_FX_IN_RANGE(<<2136.1331, 4780.5635, 39.9702>>, 20)
g_PropertySystemData.veh[0] = CREATE_VEHICLE(CUBAN800, <<2136.1331, 4780.5635, 39.9702>>, 25.29)
SET_VEHICLE_ON_GROUND_PROPERLY(g_PropertySystemData.veh[0])
SET_VEHICLE_COLOUR_COMBINATION(g_PropertySystemData.veh[0], 2)
FREEZE_ENTITY_POSITION(g_PropertySystemData.veh[0], TRUE)
g_PropertySystemData.veh[1] = CREATE_VEHICLE(DUNE, <<2149.73, 4798.49, 40.57>>, 55.47)
SET_VEHICLE_ON_GROUND_PROPERLY(g_PropertySystemData.veh[1])
ENDIF
RESET_PROPERTY_ASSET_STREAMING(FALSE)
REMOVE_CONTROL_AND_HUD_FOR_PROPERTY_CUTSCENE()
RESET_FOR_SALE_SIGN_CREATE_STATE(TRUE)
SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_CLEARED_FOR_MOCAP)
ENDIF
ENDIF
IF NOT DOES_ENTITY_EXIST(g_PropertySystemData.ped)
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Oscar"))
g_PropertySystemData.ped = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Oscar"))
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevor")
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Oscar")
IF DOES_ENTITY_EXIST(g_PropertySystemData.ped)
DELETE_PED(g_PropertySystemData.ped)
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_CAMERA()
WHILE IS_SCREEN_FADING_OUT()
WAIT(0)
ENDWHILE
IF thisProperty = PROPERTY_ARMS_TRAFFICKING
SET_ENTITY_VISIBLE(PLAYER_PED_ID(), FALSE)
ENDIF
DO_PROPERTY_CUTSCENE_CAM(thisProperty, g_PropertySystemData.iCutsceneShot)
DO_PROPERTY_CUTSCENE_HELP(thisProperty, g_PropertySystemData.iCutsceneHelp)
CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYING_MOCAP)
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
ENDIF
ENDIF
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("mission_repeat_controller")) > 0
STOP_CUTSCENE()
END_PROPERTY_CUTSCENE(thisProperty)
ENDIF
ENDIF
ENDPROC