653303831b
BATs with Donor have bright yellow username in chat General performance improvements Code cleaning Multiplayer improvements and fixes Fixed some spectator bugs
48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
from objects import glob
|
|
from constants import clientPackets
|
|
from constants import matchModModes
|
|
from constants import mods
|
|
|
|
def handle(userToken, packetData):
|
|
# Get token data
|
|
userID = userToken.userID
|
|
|
|
# Get packet data
|
|
packetData = clientPackets.changeMods(packetData)
|
|
|
|
# Make sure the match exists
|
|
matchID = userToken.matchID
|
|
if matchID not in glob.matches.matches:
|
|
return
|
|
match = glob.matches.matches[matchID]
|
|
|
|
# Host check
|
|
if userID != match.hostUserID:
|
|
return
|
|
|
|
# Set slot or match mods according to modType
|
|
if match.matchModMode == matchModModes.freeMod:
|
|
# Freemod
|
|
|
|
# Host can set global DT/HT
|
|
if userID == match.hostUserID:
|
|
# If host has selected DT/HT and Freemod is enabled, set DT/HT as match mod
|
|
if (packetData["mods"] & mods.DoubleTime) > 0:
|
|
match.changeMatchMods(mods.DoubleTime)
|
|
# Nightcore
|
|
if (packetData["mods"] & mods.Nightcore) > 0:
|
|
match.changeMatchMods(match.mods+mods.Nightcore)
|
|
elif (packetData["mods"] & mods.HalfTime) > 0:
|
|
match.changeMatchMods(mods.HalfTime)
|
|
else:
|
|
# No DT/HT, set global mods to 0 (we are in freemod mode)
|
|
match.changeMatchMods(0)
|
|
|
|
# Set slot mods
|
|
slotID = match.getUserSlotID(userID)
|
|
if slotID != None:
|
|
match.setSlotMods(slotID, packetData["mods"])
|
|
else:
|
|
# Not freemod, set match mods
|
|
match.changeMatchMods(packetData["mods"])
|