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/skillpass.py

113 lines
2.6 KiB
Python

if __name__ != "handlers.skillpass":
import math
from secret.achievements import common
from common.ripple import scoreUtils
from objects import glob, beatmap
else:
import common
VERSION = 2
ORDER = 2
# Loads the achievement length on load
LENGTH = 0
ACHIEVEMENT_BASE = {
"name": "{name}",
"description": "{description}",
"icon": "{mode}-skill-pass-{index}"
}
ACHIEVEMENT_KEYS = {
"index": [1, 2, 3, 4, 5, 6, 7, 8],
"mode": ["osu", "taiko", "fruits", "mania"],
"name": [
"Rising Star",
"My First Don",
"A Slice Of Life",
"First Steps",
"Constellation Prize",
"Katsu Katsu Katsu",
"Dashing Ever Forward",
"No Normal Player",
"Building Confidence",
"Not Even Trying",
"Zesty Disposition",
"Impulse Drive",
"Insanity Approaches",
"Face Your Demons",
"Hyperdash ON!",
"Hyperspeed",
"These Clarion Skies",
"The Demon Within",
"It's Raining Fruit",
"Ever Onwards",
"Above and Beyond",
"Drumbreaker",
"Fruit Ninja",
"Another Surpassed",
"Supremacy",
"The Godfather",
"Dreamcatcher",
"Extra Credit",
"Absolution",
"Rhythm Incarnate",
"Lord of the Catch",
"Maniac"
],
"description": [
"Can't go forward without the first steps.",
"Definitely not a consolation prize. Now things start getting hard!",
"Oh, you've SO got this.",
"You're not twitching, you're just ready.",
"Everything seems so clear now.",
"A cut above the rest.",
"All marvel before your prowess.",
"My god, you're full of stars!"
]
}
# For every itteration index gets increased, while mode and mode_2 gets increased every 4 itterations
ACHIEVEMENT_STRUCT = {
"name": 1,
"mode": 1,
"index": 4,
"description": 4
}
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(mode, beatmap)
def check(mode, beatmap):
achievement_ids = []
mode_str = scoreUtils.readableGameMode(mode)
mode_2 = mode_str.replace("osu", "std")
stars = getattr(beatmap, "stars" + mode_2.title())
indexies = [x - 1 for x in ACHIEVEMENT_KEYS["index"] if x == math.floor(stars)]
for index in indexies:
achievement_ids.append(mode + index * 4)
return achievement_ids
def update(userID):
achievement_ids = []
entries = glob.db.fetchAll("SELECT beatmap_md5, play_mode FROM scores WHERE completed = 3 AND userid = %s", [userID])
for entry in entries:
current_beatmap = beatmap.beatmap()
current_beatmap.setDataFromDB(entry["beatmap_md5"])
achievement_ids += check(entry["play_mode"], current_beatmap)
return achievement_ids