pep.py/events/changeMatchSettingsEvent.py

118 lines
3.1 KiB
Python
Raw Normal View History

2016-10-02 20:48:14 +00:00
import random
from common import generalUtils
from common.log import logUtils as log
2016-05-18 17:12:46 +00:00
from constants import clientPackets
from constants import matchModModes
from constants import matchTeamTypes
from constants import matchTeams
from constants import slotStatuses
2016-10-02 20:48:14 +00:00
from objects import glob
2016-04-19 17:40:59 +00:00
def handle(userToken, packetData):
# Read new settings
packetData = clientPackets.changeMatchSettings(packetData)
# Get match ID
matchID = userToken.matchID
2016-04-19 17:40:59 +00:00
# Make sure the match exists
if matchID not in glob.matches.matches:
return
# Get match object
match = glob.matches.matches[matchID]
# Host check
if userToken.userID != match.hostUserID:
return
2016-04-19 17:40:59 +00:00
# Some dank memes easter egg
memeTitles = [
"RWC 2020",
"Fokabot is a duck",
"Dank memes",
"1337ms Ping",
"Iscriviti a Xenotoze",
"...e i marò?",
"Superman dies",
"The brace is on fire",
"print_foot()",
"#FREEZEBARKEZ",
"Ripple devs are actually cats",
"Thank Mr Shaural",
"NEVER GIVE UP",
"T I E D W I T H U N I T E D",
"HIGHEST HDHR LOBBY OF ALL TIME",
"This is gasoline and I set myself on fire",
"Everyone is cheating apparently",
"Kurwa mac",
"TATOE",
"This is not your drama landfill.",
"I like cheese",
"NYO IS NOT A CAT HE IS A DO(N)G",
"Datingu startuato"
]
# Set match name
match.matchName = packetData["matchName"] if packetData["matchName"] != "meme" else random.choice(memeTitles)
# Update match settings
match.inProgress = packetData["inProgress"]
if packetData["matchPassword"] != "":
2016-10-02 20:48:14 +00:00
match.matchPassword = generalUtils.stringMd5(packetData["matchPassword"])
else:
match.matchPassword = ""
2016-04-19 17:40:59 +00:00
match.beatmapName = packetData["beatmapName"]
match.beatmapID = packetData["beatmapID"]
match.hostUserID = packetData["hostUserID"]
match.gameMode = packetData["gameMode"]
oldBeatmapMD5 = match.beatmapMD5
oldMods = match.mods
match.mods = packetData["mods"]
match.beatmapMD5 = packetData["beatmapMD5"]
match.matchScoringType = packetData["scoringType"]
match.matchTeamType = packetData["teamType"]
match.matchModMode = packetData["freeMods"]
# Reset ready if needed
if oldMods != match.mods or oldBeatmapMD5 != match.beatmapMD5:
for i in range(0,16):
if match.slots[i].status == slotStatuses.ready:
match.slots[i].status = slotStatuses.notReady
2016-04-19 17:40:59 +00:00
# Reset mods if needed
if match.matchModMode == matchModModes.normal:
# Reset slot mods if not freeMods
for i in range(0,16):
match.slots[i].mods = 0
2016-04-19 17:40:59 +00:00
else:
# Reset match mods if freemod
match.mods = 0
# Set/reset teams
if match.matchTeamType == matchTeamTypes.teamVs or match.matchTeamType == matchTeamTypes.tagTeamVs:
# Set teams
c=0
for i in range(0,16):
if match.slots[i].team == matchTeams.noTeam:
match.slots[i].team = matchTeams.red if c % 2 == 0 else matchTeams.blue
2016-04-19 17:40:59 +00:00
c+=1
else:
# Reset teams
for i in range(0,16):
match.slots[i].team = matchTeams.noTeam
2016-04-19 17:40:59 +00:00
# Force no freemods if tag coop
if match.matchTeamType == matchTeamTypes.tagCoop or match.matchTeamType == matchTeamTypes.tagTeamVs:
match.matchModMode = matchModModes.normal
# Send updated settings
match.sendUpdates()
2016-04-19 17:40:59 +00:00
# Console output
log.info("MPROOM{}: Updated room settings".format(match.matchID))