pep.py/events/changeMatchModsEvent.py
Nyo 653303831b IRC Support for username with spaces
BATs with Donor have bright yellow username in chat
General performance improvements
Code cleaning
Multiplayer improvements and fixes
Fixed some spectator bugs
2016-09-02 12:41:19 +02:00

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"])