oldschool-toontown/toontown/racing/RaceGlobals.py

557 lines
16 KiB
Python
Raw Normal View History

2019-11-02 17:27:54 -05:00
TrackSignDuration = 15
RaceCountdown = 3
MaxRacers = 4
MaxTickets = 99999
Practice = 0
ToonBattle = 1
Circuit = 2
Speedway = 0
Rural = 1
Urban = 2
RT_Speedway_1 = 0
RT_Speedway_1_rev = 1
RT_Rural_1 = 20
RT_Rural_1_rev = 21
RT_Urban_1 = 40
RT_Urban_1_rev = 41
RT_Speedway_2 = 60
RT_Speedway_2_rev = 61
RT_Rural_2 = 62
RT_Rural_2_rev = 63
RT_Urban_2 = 64
RT_Urban_2_rev = 65
KARTING_TICKETS_HOLIDAY_MULTIPLIER = 2
def getTrackGenre(trackId):
if trackId in (RT_Speedway_1,
RT_Speedway_1_rev,
RT_Speedway_2,
RT_Speedway_2_rev):
return Speedway
elif trackId in (RT_Rural_1,
RT_Rural_1_rev,
RT_Rural_2,
RT_Rural_2_rev):
return Rural
else:
return Urban
RT_Speedway_1_Gags = ((923.052, -1177.431, 0.024),
(926.099, -1187.345, 0.024),
(925.68, -1197.327, 0.024),
(925.169, -1209.502, 0.024),
(394.009, 209.219, 0.025),
(279.109, 279.744, 0.025),
(204.366, 316.238, 0.025),
(118.646, 358.009, 0.025),
(-1462.098, 791.722, 0.025),
(-1459.446, 730.064, 0.025),
(-1450.731, 666.811, 0.025),
(-1438.388, 615.1, 0.025))
RT_Speedway_2_Gags = ((-355.18, -2430.1, -0.126728),
(-343.456, -2421.43, -0.0116951),
(-329.644, -2411.06, -0.0169053),
(-315.054, -2402.91, -0.0800667),
(243.293, -906.412, 0.021832),
(216.555, -910.885, -0.146125),
(192.16, -915.93, -0.242366),
(165.941, -922.381, -0.247588),
(-840.626, 2405.96, 58.4195),
(-868.154, 2370.54, 56.7396),
(-896.126, 2332.55, 53.8607),
(-921.952, 2291.16, 49.8209))
RT_Speedway_1_rev_Gags = ((1364.601, -664.452, 0.025),
(1312.491, -588.218, 0.025),
(1251.775, -509.556, 0.025),
(1214.052, -461.743, 0.025),
(-976.044, 995.072, 0.025),
(-1043.917, 1018.78, 0.025),
(-1124.555, 1038.362, 0.025),
(-1187.95, 1047.006, 0.025),
(-1174.542, -208.968, 0.025),
(-1149.34, -270.698, 0.025),
(-1121.2, -334.367, 0.025),
(-1090.627, -392.662, 0.026))
RT_Rural_1_Gags = ((814.276, -552.928, 2.107),
(847.738, -551.97, 2.106),
(889.265, -549.569, 2.107),
(922.022, -554.813, 2.106),
(1791.42, 2523.91, 2.106),
(1754.14, 2540.25, 2.107),
(1689.66, 2557.28, 2.107),
(1614.01, 2577.16, 2.106),
(-1839.0, 654.477, 86.83),
(-1894.33, 640.125, 80.39),
(-1955.3, 625.09, 73.07),
(-2016.99, 611.746, 65.86))
RT_Rural_2_Gags = ((2001.53, 560.532, 198.912),
(2002.45, 574.292, 198.912),
(2003.42, 588.612, 198.912),
(2004, 602.849, 198.912),
(-2107.4, 2209.67, 198.913),
(-2086.13, 2224.31, 198.913),
(-2058.11, 2244.31, 198.912),
(-2023.85, 2268.77, 198.912),
(-331.746, -1010.57, 222.332),
(-358.595, -1007.68, 225.129),
(-388.556, -1004.87, 228.239),
(-410.122, -1003.03, 230.482),
(69.763, -2324.5, 198.912),
(63.5314, -2334.02, 198.913),
(57.9662, -2349.14, 198.913),
(51.8838, -2363.87, 198.913))
RT_Urban_1_Gags = ((51.9952, 2431.62, 55.7053),
(39.5407, 2421.64, 65.7053),
(27.7504, 2411.67, 55.7053),
(15.55, 2401.65, 65.7053),
(-1008.36, 2116.41, 0.0246798),
(-1050.31, 2099.78, 0.025),
(-1092.26, 2083.15, 0.0253202),
(-1134.21, 2066.52, 0.0256404),
(-1966.68, 1139.32, 1.76981),
(-1970.46, 1120.57, 1.76981),
(-1974.18, 1101.82, 1.76981),
(-1977.93, 1084.07, 1.76981),
(1419.05, -2987.18, 0.025),
(1411.09, -3004.09, 0.025),
(1403.13, -3021.01, 0.025),
(1395.17, -3037.92, 0.025),
(948.131, -1216.77, 0.025),
(935.545, -1204.09, 0.025),
(922.959, -1191.41, 0.025),
(909.959, -1177.41, 0.025))
RT_Urban_2_Gags = ((-2761.49, -3070.97, -0.255122),
(-2730.18, -3084.09, -0.255153),
(-2701.45, -3096.26, -0.255669),
(-2669.81, -3108.9, -0.255252),
(735.479, -423.828, 23.7334),
(759.026, -427.198, 23.0068),
(783.232, -430.659, 22.2569),
(809.914, -434.476, 21.4326),
(3100.09, 240.411, 23.4672),
(3089.09, 242.019, 23.5251),
(3077.68, 243.688, 23.6857),
(3064.82, 245.567, 23.8771),
(-10.7389, 2980.48, -0.255609),
(-41.2644, 2974.53, -0.255122),
(-69.8423, 2989.98, -0.255682),
(-102.331, 2986.1, -0.255637),
(-1978.67, 588.981, -0.255685),
(-1977.07, 560.797, -0.255415),
(-1948.58, 544.782, -0.255122),
(-1943.42, 510.262, -0.255866))
RT_Urban_1_rev_Gags = ((1034.43, -366.371, 0.025),
(1051.84, -360.473, 0.025),
(1069.25, -354.575, 0.025),
(1086.66, -348.677, 0.025),
(1849.66, -2807.21, 0.0246158),
(1858.55, -2795.99, 0.0246158),
(1867.44, -2784.76, 0.0246158),
(1876.33, -2773.53, 0.0246158),
(316.342, -44.9529, 0.025),
(305.173, -63.4405, 0.025),
(294.004, -81.9281, 0.025),
(282.835, -100.416, 0.025),
(-762.377, 2979.25, 0.025),
(-753.029, 2995.69, 0.025),
(-743.681, 3012.14, 0.025),
(-734.333, 3028.58, 0.025),
(470.628, 1828.32, 55.0),
(481.284, 1836.89, 55.0),
(491.941, 1845.47, 55.0),
(502.597, 1854.04, 55.0))
Speedway_1_Boosts = (((-320, 685, 1), (415, 0, 0)),)
Speedway_1_Rev_Boosts = (((-320, 685, 0.1), (235, 0, 0)),)
Speedway_2_Boosts = (((-120, 430, 1.0), (-50, 0, 0)),)
Speedway_2_Rev_Boosts = (((176, 625, 1.0), (130, 0, 0)),)
Rural_1_Boosts = (((3132.64, 859.56, 5.0), (384.44, 363.5, 0)), ((-3050.33, -1804.97, 207.7), (229.4, 353.25, 342.9)))
Rural_1_Rev_Boosts = (((3132.64, 859.56, 5.0), (197.1, -2.25, 0)), ((-3151.34, -1569.56, 200.621), (189.46, 182.75, 195.255)))
Rural_2_Boosts = (((873.255, -593.664, 199.5), (87.715, 0, 0)), ((-1747.62, 801.56, 199.5), (-126.516, 0, 0)))
Rural_2_Rev_Boosts = (((-428.004, -243.692, 324.516), (51.428, 6, 1)), ((-384.043, 211.62, 193.5), (-127.859, 1, 0)))
Urban_1_Boosts = (((677.057, 1618.24, 0.025), (35.9995, 0, 0)), ((-2250.35, 1618.1, 0.0241526), (-154.8, 0, 0)), ((400.13, -1090.26, 0.025), (-175.204, 0, 0)))
Urban_1_Rev_Boosts = (((488.739, -2055.07, 0.025), (3.59753, 0, 0)), ((-1737.29, 588.138, 0.025), (26.3975, 0, 0)), ((-212.314, 2638.34, 0.025), (-128.404, 0, 0)))
Urban_2_Boosts = (((358.134, -1655.42, 0.3), (-4.95, 1, 0)), ((2058.77, 2560.03, 0.3), (77.31, 0, 0)), ((-3081.33, -1037.55, 0.25), (177.359, 0, 0)))
Urban_2_Rev_Boosts = (((-2007.38, 484.878, 0.25), (30.9102, 0, 0)), ((2646.51, 1455.15, 0.25), (-120.172, 0, 0)), ((-472.215, -2048.21, 0.25), (136.192, 0, 0)))
def RaceInfo2RacePadId(trackId, trackType):
rev = trackId % 2
if not rev:
if trackType == Practice:
padId = 0
else:
padId = 2
elif trackType == Practice:
padId = 1
else:
padId = 3
return padId
def getTrackGenreString(genreId):
genreStrings = ['Speedway', 'Country', 'City']
return genreStrings[genreId].lower()
def getTunnelSignName(genreId, padId):
if genreId == 2 and padId == 0:
return 'tunne1l_citysign'
elif genreId == 1 and padId == 0:
return 'tunnel_countrysign1'
else:
return 'tunnel%s_%ssign' % (padId + 1, getTrackGenreString(genreId))
RacePadId2RaceInfo = {0: (0, Practice, 3),
1: (1, Practice, 3),
2: (0, ToonBattle, 3),
3: (1, ToonBattle, 3)}
def getGenreFromString(string):
if string == 'town':
return Urban
elif string == 'stadium':
return Speedway
else:
return Rural
def getTrackListByType(genre, type):
return Rural
def getTrackListByType(genre, type):
genreDict = {Urban: [[RT_Urban_1, RT_Urban_2], [RT_Urban_1_rev, RT_Urban_2_rev]],
Rural: [[RT_Rural_1, RT_Rural_2], [RT_Rural_1_rev, RT_Rural_2_rev]],
Speedway: [[RT_Speedway_1, RT_Speedway_2], [RT_Speedway_1_rev, RT_Speedway_2_rev]]}
trackIdList = genreDict.get(genre)
return trackIdList[type]
def getCanonicalPadId(padId):
return padId % 4
def getNextRaceInfo(prevTrackId, genreString, padId):
genre = getGenreFromString(genreString)
cPadId = getCanonicalPadId(padId)
raceInfo = RacePadId2RaceInfo.get(cPadId)
trackList = getTrackListByType(genre, raceInfo[0])
if trackList.count(prevTrackId) == 0:
trackId = trackList[1]
else:
index = trackList.index(prevTrackId)
index += 1
index %= len(trackList)
trackId = trackList[index]
return (trackId, raceInfo[1], raceInfo[2])
TrackPath = 'phase_6/models/karting/'
TrackDict = {RT_Speedway_1: (TrackPath + 'RT_SpeedwayA',
240.0,
115.0,
(50, 500),
RT_Speedway_1_Gags,
Speedway_1_Boosts,
1.0,
2020-01-14 13:28:52 -06:00
'GS_Race_SS.ogg',
2019-11-02 17:27:54 -05:00
(0.01, 0.015)),
RT_Speedway_1_rev: (TrackPath + 'RT_SpeedwayA',
240.0,
115.0,
(50, 500),
RT_Speedway_1_rev_Gags,
Speedway_1_Rev_Boosts,
1.0,
2020-01-14 13:28:52 -06:00
'GS_Race_SS.ogg',
2019-11-02 17:27:54 -05:00
(0.01, 0.015)),
RT_Speedway_2: (TrackPath + 'RT_SpeedwayB',
335.0,
210.0,
(75, 1000),
RT_Speedway_2_Gags,
Speedway_2_Boosts,
1.0,
2020-01-14 13:28:52 -06:00
'GS_Race_SS.ogg',
2019-11-02 17:27:54 -05:00
(0.01, 0.015)),
RT_Speedway_2_rev: (TrackPath + 'RT_SpeedwayB',
335.0,
210.0,
(75, 1000),
RT_Speedway_2_Gags,
Speedway_2_Rev_Boosts,
1.0,
2020-01-14 13:28:52 -06:00
'GS_Race_SS.ogg',
2019-11-02 17:27:54 -05:00
(0.01, 0.015)),
RT_Rural_1: (TrackPath + 'RT_RuralB',
360.0,
230.0,
(100, 500),
RT_Rural_1_Gags,
Rural_1_Boosts,
0.75,
2020-01-14 13:28:52 -06:00
'GS_Race_RR.ogg',
2019-11-02 17:27:54 -05:00
(0.003, 0.004)),
RT_Rural_1_rev: (TrackPath + 'RT_RuralB',
360.0,
230.0,
(100, 500),
RT_Rural_1_Gags,
Rural_1_Rev_Boosts,
0.75,
2020-01-14 13:28:52 -06:00
'GS_Race_RR.ogg',
2019-11-02 17:27:54 -05:00
(0.003, 0.004)),
RT_Rural_2: (TrackPath + 'RT_RuralB2',
480.0,
360.0,
(150, 1000),
RT_Rural_2_Gags,
Rural_2_Boosts,
0.75,
2020-01-14 13:28:52 -06:00
'GS_Race_RR.ogg',
2019-11-02 17:27:54 -05:00
(0.003, 0.004)),
RT_Rural_2_rev: (TrackPath + 'RT_RuralB2',
480.0,
360.0,
(150, 1000),
RT_Rural_2_Gags,
Rural_2_Rev_Boosts,
0.75,
2020-01-14 13:28:52 -06:00
'GS_Race_RR.ogg',
2019-11-02 17:27:54 -05:00
(0.003, 0.004)),
RT_Urban_1: (TrackPath + 'RT_UrbanA',
480.0,
305.0,
(300, 500),
RT_Urban_1_Gags,
Urban_1_Boosts,
1.0,
2020-01-14 13:28:52 -06:00
'GS_Race_CC.ogg',
2019-11-02 17:27:54 -05:00
(0.002, 0.003)),
RT_Urban_1_rev: (TrackPath + 'RT_UrbanA',
480.0,
305.0,
(300, 500),
RT_Urban_1_rev_Gags,
Urban_1_Rev_Boosts,
1.0,
2020-01-14 13:28:52 -06:00
'GS_Race_CC.ogg',
2019-11-02 17:27:54 -05:00
(0.002, 0.003)),
RT_Urban_2: (TrackPath + 'RT_UrbanB',
480.0,
280.0,
(400, 1000),
RT_Urban_2_Gags,
Urban_2_Boosts,
1.0,
2020-01-14 13:28:52 -06:00
'GS_Race_CC.ogg',
2019-11-02 17:27:54 -05:00
(0.002, 0.003)),
RT_Urban_2_rev: (TrackPath + 'RT_UrbanB',
480.0,
280.0,
(400, 1000),
RT_Urban_2_Gags,
Urban_2_Rev_Boosts,
1.0,
2020-01-14 13:28:52 -06:00
'GS_Race_CC.ogg',
2019-11-02 17:27:54 -05:00
(0.002, 0.003))}
TrackIds = list(TrackDict.keys())
2019-11-02 17:27:54 -05:00
TrackIds.sort()
def getEntryFee(trackId, raceType):
fee = 0
if raceType == ToonBattle:
fee = TrackDict[trackId][3][0]
elif raceType == Circuit:
fee = TrackDict[trackId][3][1]
return fee
def getQualifyingTime(trackId):
return TrackDict[trackId][1]
def getDefaultRecordTime(trackId):
return TrackDict[trackId][2]
def getDefaultRecord(trackId):
return getDefaultRecordTime(trackId), 0, 1, 'Goofy'
Daily = 0
Weekly = 1
AllTime = 2
PeriodDict = {Daily: 10,
Weekly: 100,
AllTime: 1000}
PeriodIds = list(PeriodDict.keys())
2019-11-02 17:27:54 -05:00
NumRecordPeriods = len(PeriodIds)
NumRecordsPerPeriod = 10
Winnings = [3.0,
1.0,
0.5,
0.15]
PracticeWinnings = 20
SpeedwayQuals = 0
RuralQuals = 1
UrbanQuals = 2
SpeedwayWins = 3
RuralWins = 4
UrbanWins = 5
CircuitWins = 6
TwoPlayerWins = 7
ThreePlayerWins = 8
FourPlayerWins = 9
CircuitSweeps = 10
CircuitQuals = 11
QualsList = [SpeedwayQuals, RuralQuals, UrbanQuals]
WinsList = [SpeedwayWins, RuralWins, UrbanWins]
SpeedwayQuals1 = 0
SpeedwayQuals2 = 1
SpeedwayQuals3 = 2
RuralQuals1 = 3
RuralQuals2 = 4
RuralQuals3 = 5
UrbanQuals1 = 6
UrbanQuals2 = 7
UrbanQuals3 = 8
TotalQuals = 9
SpeedwayWins1 = 10
SpeedwayWins2 = 11
SpeedwayWins3 = 12
RuralWins1 = 13
RuralWins2 = 14
RuralWins3 = 15
UrbanWins1 = 16
UrbanWins2 = 17
UrbanWins3 = 18
TotalWins = 19
CircuitQuals1 = 20
CircuitQuals2 = 21
CircuitQuals3 = 22
CircuitWins1 = 23
CircuitWins2 = 24
CircuitWins3 = 25
CircuitSweeps1 = 26
CircuitSweeps2 = 27
CircuitSweeps3 = 28
GrandTouring = 29
NumTrophies = 30
TenTrophyCup = 30
TwentyTrophyCup = 31
ThirtyTrophyCup = 32
TrophyCups = [TenTrophyCup, TwentyTrophyCup, ThirtyTrophyCup]
NumCups = 3
SpeedwayQualsList = [SpeedwayQuals1, SpeedwayQuals2, SpeedwayQuals3]
RuralQualsList = [RuralQuals1, RuralQuals2, RuralQuals3]
UrbanQualsList = [UrbanQuals1, UrbanQuals2, UrbanQuals3]
SpeedwayWinsList = [SpeedwayWins1, SpeedwayWins2, SpeedwayWins3]
RuralWinsList = [RuralWins1, RuralWins2, RuralWins3]
UrbanWinsList = [UrbanWins1, UrbanWins2, UrbanWins3]
CircuitWinsList = [CircuitWins1, CircuitWins2, CircuitWins3]
CircuitSweepsList = [CircuitSweeps1, CircuitSweeps2, CircuitSweeps3]
CircuitQualList = [CircuitQuals1, CircuitQuals2, CircuitQuals3]
AllQualsList = [SpeedwayQualsList, RuralQualsList, UrbanQualsList]
AllWinsList = [SpeedwayWinsList, RuralWinsList, UrbanWinsList]
2020-01-02 12:15:44 -06:00
TrophiesPerCup = NumTrophies // NumCups
2019-11-02 17:27:54 -05:00
QualifiedRaces = [1, 10, 100]
TotalQualifiedRaces = 100
WonRaces = [1, 10, 100]
TotalWonRaces = 100
WonCircuitRaces = [1, 5, 25]
SweptCircuitRaces = [1, 5, 25]
QualifiedCircuitRaces = [1, 5, 25]
LBSubscription = {'stadium': [(RT_Speedway_1, Daily),
(RT_Speedway_1, Weekly),
(RT_Speedway_1, AllTime),
(RT_Speedway_1_rev, Daily),
(RT_Speedway_1_rev, Weekly),
(RT_Speedway_1_rev, AllTime),
(RT_Speedway_2, Daily),
(RT_Speedway_2, Weekly),
(RT_Speedway_2, AllTime),
(RT_Speedway_2_rev, Daily),
(RT_Speedway_2_rev, Weekly),
(RT_Speedway_2_rev, AllTime)],
'country': [(RT_Rural_1, Daily),
(RT_Rural_1, Weekly),
(RT_Rural_1, AllTime),
(RT_Rural_1_rev, Daily),
(RT_Rural_1_rev, Weekly),
(RT_Rural_1_rev, AllTime),
(RT_Rural_2, Daily),
(RT_Rural_2, Weekly),
(RT_Rural_2, AllTime),
(RT_Rural_2_rev, Daily),
(RT_Rural_2_rev, Weekly),
(RT_Rural_2_rev, AllTime)],
'city': [(RT_Urban_1, Daily),
(RT_Urban_1, Weekly),
(RT_Urban_1, AllTime),
(RT_Urban_1_rev, Daily),
(RT_Urban_1_rev, Weekly),
(RT_Urban_1_rev, AllTime),
(RT_Urban_2, Daily),
(RT_Urban_2, Weekly),
(RT_Urban_2, AllTime),
(RT_Urban_2_rev, Daily),
(RT_Urban_2_rev, Weekly),
(RT_Urban_2_rev, AllTime)]}
BANANA = 1
TURBO = 2
ANVIL = 3
PIE = 4
GagFreq = [[PIE,
BANANA,
BANANA,
BANANA,
TURBO,
PIE],
[PIE,
BANANA,
BANANA,
TURBO,
ANVIL,
PIE],
[PIE,
BANANA,
TURBO,
TURBO,
ANVIL,
PIE],
[BANANA,
TURBO,
TURBO,
TURBO,
ANVIL,
PIE]]
CircuitLoops = [[RT_Speedway_1, RT_Rural_1, RT_Urban_1],
[RT_Speedway_1_rev, RT_Rural_1_rev, RT_Urban_1_rev],
[RT_Speedway_2, RT_Rural_2, RT_Urban_2],
[RT_Speedway_2_rev, RT_Rural_2_rev, RT_Urban_2_rev]]
CircuitPoints = [10,
8,
6,
4]
def getCircuitLoop(startingTrack):
circuitLoop = [startingTrack]
for loop in CircuitLoops:
if startingTrack in loop:
print(loop)
2019-11-02 17:27:54 -05:00
numTracks = len(loop)
tempLoop = loop * 2
startingIndex = tempLoop.index(startingTrack)
circuitLoop = tempLoop[startingIndex:startingIndex + numTracks]
break
return circuitLoop
Exit_UserReq = 0
Exit_Barrier = 1
Exit_Slow = 2
Exit_BarrierNoRefund = 3