This repository has been archived on 2022-02-23. You can view files and clone it, but cannot push or open issues or pull requests.
lets/secret/achievements/handlers/mods.py

117 lines
2.6 KiB
Python

if __name__ != "handlers.mods":
from secret.achievements import common
from objects import glob
from common.constants import mods
else:
import common
VERSION = 4
ORDER = 4
# Loads the achievement length on load
LENGTH = 0
ACHIEVEMENT_BASE = {
"name": "{name}",
"description": "{description}",
"icon": "all-intro-{mod}"
}
ACHIEVEMENT_KEYS = {
"name": [
"Finality",
"Perfectionist",
"Rock Around The Clock",
"Time And A Half",
"Sweet Rave Party",
"Blindsight",
"Are You Afraid Of The Dark?",
"Dial It Right Back",
"Risk Averse",
"Slowboat",
"Burned Out"
],
"description": [
"High stakes, no regrets.",
"Accept nothing but the best.",
"You can't stop the rock.",
"Having a right ol' time. One and a half of them, almost.",
"Founded in the fine tradition of changing things that were just fine as they were.",
"I can see just perfectly.",
"Harder than it looks, probably because it's hard to look.",
"Sometimes you just want to take it easy.",
"Safety nets are fun!",
"You got there. Eventually.",
"One cannot always spin to win."
],
"mod": [
"suddendeath",
"perfect",
"hardrock",
"doubletime",
"nightcore",
"hidden",
"flashlight",
"easy",
"nofail",
"halftime",
"spunout"
]
}
# For every itteration index gets increased, while mode and mode_2 gets increased every 4 itterations
ACHIEVEMENT_STRUCT = {
"name": 1,
"description": 1,
"mod": 1
}
ACHIEVEMENTS = []
def load():
global ACHIEVEMENTS, LENGTH
ACHIEVEMENTS, LENGTH = common.load_achievement_data(ACHIEVEMENT_BASE, ACHIEVEMENT_KEYS, ACHIEVEMENT_STRUCT)
def handle(mode, score, beatmap, user_data):
return check(score.mods)
def check(m):
achievement_ids = []
# Yes I am braindead atm and dont want to think about it...
if m & mods.SUDDENDEATH > 0:
achievement_ids += [0]
if m & mods.PERFECT > 0:
achievement_ids += [1]
if m & mods.HARDROCK > 0:
achievement_ids += [2]
if m & mods.DOUBLETIME > 0:
achievement_ids += [3]
if m & mods.NIGHTCORE > 0:
achievement_ids += [4]
if m & mods.HIDDEN > 0:
achievement_ids += [5]
if m & mods.FLASHLIGHT > 0:
achievement_ids += [6]
if m & mods.EASY > 0:
achievement_ids += [7]
if m & mods.NOFAIL > 0:
achievement_ids += [8]
if m & mods.HALFTIME > 0:
achievement_ids += [9]
if m & mods.SPUNOUT > 0:
achievement_ids += [10]
if m & mods.RELAX > 0:
achievement_ids += [11]
return achievement_ids
def update(userID):
achievement_ids = []
entries = glob.db.fetchAll("SELECT mods FROM scores WHERE userid = %s GROUP BY mods", [userID])
for entry in entries:
achievement_ids += check(entry["mods"])
return achievement_ids