Files
2025-09-29 00:52:08 +02:00

320 lines
9.6 KiB
XML
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Includes
USING "rage_builtins.sch"
USING "globals.sch"
USING "commands_object.sch"
USING "commands_interiors.sch"
USING "commands_misc.sch"
USING "script_debug.sch"
CONST_INT NUMBER_OF_ARMOUR_PICKUPS(45)
#IF IS_DEBUG_BUILD
/// PURPOSE: Returns location name of armour pickup
FUNC STRING GET_ARMOUR_LOCATION_NAME(INT iIndex)
SWITCH iIndex
CASE 0 RETURN "01: Tower scaffold at docks" BREAK
CASE 1 RETURN "02: Behind Bin at housing blocks" BREAK
CASE 2 RETURN "03: St. Fiacre teaching hospital" BREAK
CASE 3 RETURN "04: Junkyard" BREAK
CASE 4 RETURN "05: Maze Bank" BREAK
CASE 5 RETURN "06: Museum" BREAK
CASE 6 RETURN "07: Office block parking garage" BREAK
CASE 7 RETURN "08: The Pink Cage motel swimming pool" BREAK
CASE 8 RETURN "09: Construction site near freeway" BREAK
CASE 9 RETURN "10: End of pier walkway" BREAK
CASE 10 RETURN "11: Conveyor belt at Airport" BREAK
CASE 11 RETURN "12: House on the beach" BREAK
CASE 12 RETURN "13: Recess under rockface" BREAK
CASE 13 RETURN "14: Sewage works near air base" BREAK
CASE 14 RETURN "15: Entrance to tunnel through hillside" BREAK
CASE 15 RETURN "16: Barn near cow field " BREAK
CASE 16 RETURN "17: Hippy Camp" BREAK
CASE 17 RETURN "18: Dam" BREAK
CASE 18 RETURN "19: Train station beside refinery" BREAK
CASE 19 RETURN "20: Storage tank in the hills" BREAK
CASE 20 RETURN "21: Building top" BREAK
CASE 21 RETURN "22: Gas station" BREAK
CASE 22 RETURN "23: Vineyard restaurant" BREAK
CASE 23 RETURN "24: Below Radio Tower" BREAK
CASE 24 RETURN "25: Fishery" BREAK
CASE 25 RETURN "26: Police Stations. A - Paleto Bay (dumpsters)" BREAK
CASE 26 RETURN "27: Police Stations. B - Sandy Shores" BREAK
CASE 27 RETURN "28: Police Stations. C - Vinewood" BREAK
CASE 28 RETURN "29: Police Stations. D - Downtown" BREAK
CASE 29 RETURN "30: Police Stations. E - Vespucci PD" BREAK
CASE 30 RETURN "31: Police Stations. F - Davis Sheriffs station" BREAK
CASE 31 RETURN "32: Police Stations. G - LS Airport" BREAK
CASE 32 RETURN "33: Vinewood Hills - Portaloos" BREAK
CASE 33 RETURN "34: Vinewood Hills - Construction scaffolding" BREAK
CASE 34 RETURN "35: Vinewood Hills - Generator" BREAK
CASE 35 RETURN "36: Vinewood Hills - Forest River" BREAK
CASE 36 RETURN "38: Back of meth lab" BREAK
CASE 37 RETURN "39: Grove street porch" BREAK
CASE 38 RETURN "41: Trailer storage area" BREAK
CASE 39 RETURN "42: Office desk" BREAK
CASE 40 RETURN "43: Hobo underpass" BREAK
CASE 41 RETURN "44: In hole near shootout" BREAK
CASE 42 RETURN "45: Construction site next to cabin" BREAK
CASE 43 RETURN "46: Galilee boat house" BREAK
CASE 44 RETURN "47: Altruist Camp Church" BREAK
ENDSWITCH
RETURN "Invalid Location Index"
ENDFUNC
#ENDIF
/// PURPOSE: Returns coords of armour pickup
FUNC VECTOR GET_ARMOUR_PICKUP_COORDS(INT iIndex, BOOL bForChop=FALSE)
// If any of these have a bForChop vector set, Chop will lead the player to the bForChop vector then orientate himself towards the actual pickup vector.
// Small alterations are fine but if you move a pickup more than 1-2 metres away from its current position you must update the bForChop vector too or else we'll have Chop leading the player to nothing.
// The bForChop vector must be on a section of navmesh that is connected to the main navmesh. See Kev E if unsure.
SWITCH iIndex
CASE 0 RETURN << 473.1829, -2643.1838, 4.7209 >> BREAK
CASE 1
IF bForChop = TRUE
RETURN << 291.41, -2090.78, 16.29 >>
ELSE
RETURN <<289.2062, -2091.2209, 16.0234>>
ENDIF
BREAK
CASE 2
IF bForChop = TRUE
RETURN << 1173.83923, -1499.78076, 33.84875 >>
ELSE
RETURN << 1173.5656, -1495.7628, 34.1121 >>
ENDIF
BREAK
CASE 3
IF bForChop = TRUE
RETURN << -461.71393, -1699.20190, 17.85122 >>
ELSE
RETURN << -462, -1701, 18.8 >>
ENDIF
BREAK
CASE 4 RETURN << -1384.6276, -521.0416, 30.0840 >> BREAK
CASE 5 RETURN << -521.5692, -601.7532, 29.4482 >> BREAK
CASE 6 RETURN << -664.5000, 165.4552, 58.3821 >> BREAK
CASE 7 RETURN << 329.3609, -190.5986, 53.2262 >> BREAK
CASE 8
IF bForChop = TRUE
RETURN << -477.44, -1052.99, 39.81 >>
ELSE
RETURN << -478.7744, -1051.0792, 40.93 >>
ENDIF
BREAK
CASE 9 RETURN << -1268.0712, -1917.4076, 4.8583 >> BREAK
CASE 10 RETURN << -1221.9080, -2771.7622, 13.0545 >> BREAK
CASE 11 RETURN << -3088.6682, 652.9629, 0.989 >> BREAK
CASE 12
IF bForChop = TRUE
RETURN <<-629.3048, 2036.0667, 157.3307>>
ELSE
RETURN << -627.2166, 2035.0320, 157.5585 >>
ENDIF
BREAK
CASE 13
IF bForChop = TRUE
RETURN << -2071.90259, 3411.50415, 30.36414 >>
ELSE
RETURN << -2048.4832, 3406.1624, 31.1504 >>
ENDIF
BREAK
CASE 14 RETURN << -424.0321, 4012.7671, 80.4744 >> BREAK
CASE 15 RETURN << 1983.1, 5174.5, 47.6 >> BREAK
CASE 16
IF bForChop = TRUE
RETURN << 2341.1, 2576.0, 45.7 >>
ELSE
RETURN << 2340.17, 2573.89, 45.77 >>
ENDIF
BREAK
CASE 17
IF bForChop = TRUE
RETURN << 1663.90039, -25.91945, 172.77475 >>
ELSE
RETURN << 1663.9600, -24.1101, 172.7747 >>
ENDIF
BREAK
CASE 18
IF bForChop = TRUE
RETURN << 2614.45068, 1695.12708, 26.59907 >>
ELSE
RETURN << 2617.7290, 1693.4167, 30.8743 >>
ENDIF
BREAK
CASE 19
IF bForChop = TRUE
RETURN << -187.31, 1545.16, 314.07 >>
ELSE
RETURN << -187.0338, 1555.6766, 321.2431 >>
ENDIF
BREAK
CASE 20
IF bForChop = TRUE
RETURN << 859.50250, 2426.03955, 53.18517 >>
ELSE
RETURN << 868.7573, 2423.5361, 60.8942 >>
ENDIF
BREAK
CASE 21
IF bForChop = TRUE
RETURN << -1822.07507, 805.78137, 137.72650 >>
ELSE
RETURN << -1822.9667, 803.8147, 138.2005 >>
ENDIF
BREAK
CASE 22
IF bForChop = TRUE
RETURN << -1852.92212, 2054.41968, 139.98405 >>
ELSE
RETURN << -1851.6283, 2053.8359, 139.9841 >>
ENDIF
BREAK
CASE 23
IF bForChop = TRUE
RETURN << -1075.51489, 4898.49658, 213.27675 >>
ELSE
RETURN << -1070.6506, 4898.9336, 213.2752 >>
ENDIF
BREAK
CASE 24
IF bForChop = TRUE
RETURN << 1301.56, 4306.60, 36.39 >>
ELSE
RETURN << 1300.1, 4308.1, 37.3 >>
ENDIF
BREAK
CASE 25 //police stations start here
IF bForChop = TRUE
RETURN << -436.44, 5983.50, 30.49 >>
ELSE
RETURN << -437.94, 5985.04, 31.29 >>
ENDIF
BREAK
CASE 26
IF bForChop = TRUE
RETURN << 1840.5687, 3693.7703, 33.2668 >>
ELSE
RETURN << 1838.5770, 3692.0281, 33.6172 >>
ENDIF
BREAK
CASE 27 RETURN << 533.1, -23.8, 70.6 >> BREAK
CASE 28
IF bForChop = TRUE
RETURN << 445.83, -986.48, 29.69 >>
ELSE
RETURN << 446.4, -988.5, 29.770 >>
ENDIF
BREAK
CASE 29 RETURN << -1119.4977, -847.3371, 18.6886 >> BREAK
CASE 30 RETURN << 391.2, -1603.9, 28.380 >> BREAK
CASE 31 RETURN << -890.8, -2386.2, 13.4 >> BREAK
CASE 32
IF bForChop = TRUE
RETURN <<282.75, 953.05, 209.95>>
ELSE
RETURN <<284.7, 954.2, 210.1514>>
ENDIF
BREAK
CASE 33 RETURN <<-2003.1145, 544.7549, 114.5077>> BREAK
CASE 34
IF bForChop = TRUE
RETURN <<-397.57858, 1127.35315, 321.72913>>
ELSE
RETURN <<-386.8739, 1142.4197, 321.5892>>
ENDIF
BREAK
CASE 35 RETURN <<-1521.8113, 1560.2010, 106.9392>> BREAK
CASE 36 RETURN <<1391.9453, 3616.6548, 37.9259>> BREAK //<<1391.3459, 3619.9265, 39.0259>> is on table but it breaks
CASE 37
IF bForChop = TRUE
RETURN <<45.37, -1911.45, 20.79>>
ELSE
RETURN <<40.5177, -1910.7271, 20.9706>>
ENDIF
BREAK
CASE 38
IF bForChop = TRUE
RETURN <<68.14, 3749.36, 38.73>>
ELSE
RETURN <<70.3786, 3755.6055, 38.7487>>
ENDIF
BREAK
//CASE 39 RETURN <<117.6710, -754.2290, 258.1322>> BREAK
CASE 39 RETURN <<119.45, -755.29, 258.15>> BREAK
CASE 40
IF bForChop = TRUE
RETURN <<156.35, -1192.10, 28.37>>
ELSE
RETURN <<160.4134, -1191.7, 28.87>>
ENDIF
BREAK
CASE 41 RETURN <<23.9296, -633.9206, 6.5084>> BREAK
CASE 42
IF bForChop = TRUE
RETURN <<31.67, 6542.78, 30.44>>
ELSE
RETURN <<30.9162, 6546.7910, 30.4058>>
ENDIF
BREAK
CASE 43
IF bForChop
RETURN << 1333.0566, 4381.2778, 43.3703 >>
ELSE
RETURN << 1331.3549, 4392.8872, 44.0120 >>
ENDIF
BREAK
CASE 44
IF bForChop = TRUE
RETURN << -1147.31, 4939.27, 221.27 >>
ELSE
RETURN << -1149.3918, 4938.7710, 221.3682 >>
ENDIF
BREAK
ENDSWITCH
SCRIPT_ASSERT("Invalid index passed to GET_ARMOUR_PICKUP_COORDS")
RETURN <<0,0,0>>
ENDFUNC
/// PURPOSE:
/// Gets the interior name for the pickup
FUNC STRING GET_ARMOUR_PICKUP_ROOM_NAME(INT iIndex)
SWITCH iIndex
CASE 28 RETURN "PH_LOBBY_ROOM" BREAK
CASE 39 RETURN "V_FIB03_atr_off2" BREAK
CASE 41 RETURN "GtaMloRoomTun2" BREAK
DEFAULT
RETURN ""
BREAK
ENDSWITCH
RETURN ""
ENDFUNC
/// PURPOSE:
/// Returns TRUE if Chop can reach the armour pickup
FUNC BOOL CAN_CHOP_REACH_ARMOUR(INT index)
SWITCH (index)
CASE 33 FALLTHRU // Navigation nightmare
CASE 39 FALLTHRU // In office highrise
CASE 41 FALLTHRU // Bottom of construction site
RETURN FALSE
BREAK
ENDSWITCH
RETURN TRUE
ENDFUNC