117 lines
2.6 KiB
Python
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
|