160 lines
5.1 KiB
Python
160 lines
5.1 KiB
Python
from typing import Optional
|
|
from core.utils import floor_to_nearest_005
|
|
|
|
class Mai2Constants:
|
|
GRADE = {
|
|
"D": 0,
|
|
"C": 1,
|
|
"B": 2,
|
|
"BB": 3,
|
|
"BBB": 4,
|
|
"A": 5,
|
|
"AA": 6,
|
|
"AAA": 7,
|
|
"S": 8,
|
|
"S+": 9,
|
|
"SS": 10,
|
|
"SS+": 11,
|
|
"SSS": 12,
|
|
"SSS+": 13,
|
|
}
|
|
FC = {"None": 0, "FC": 1, "FC+": 2, "AP": 3, "AP+": 4}
|
|
SYNC = {"None": 0, "FS": 1, "FS+": 2, "FDX": 3, "FDX+": 4}
|
|
|
|
DATE_TIME_FORMAT = "%Y-%m-%d %H:%M:%S"
|
|
|
|
GAME_CODE = "SBXL"
|
|
GAME_CODE_GREEN = "SBZF"
|
|
GAME_CODE_ORANGE = "SDBM"
|
|
GAME_CODE_PINK = "SDCQ"
|
|
GAME_CODE_MURASAKI = "SDDK"
|
|
GAME_CODE_MILK = "SDDZ"
|
|
GAME_CODE_FINALE = "SDEY"
|
|
GAME_CODE_DX = "SDEZ"
|
|
GAME_CODE_DX_INT = "SDGA"
|
|
GAME_CODE_DX_CHN = "SDGB"
|
|
|
|
CONFIG_NAME = "mai2.yaml"
|
|
|
|
VER_MAIMAI = 0
|
|
VER_MAIMAI_PLUS = 1
|
|
VER_MAIMAI_GREEN = 2
|
|
VER_MAIMAI_GREEN_PLUS = 3
|
|
VER_MAIMAI_ORANGE = 4
|
|
VER_MAIMAI_ORANGE_PLUS = 5
|
|
VER_MAIMAI_PINK = 6
|
|
VER_MAIMAI_PINK_PLUS = 7
|
|
VER_MAIMAI_MURASAKI = 8
|
|
VER_MAIMAI_MURASAKI_PLUS = 9
|
|
VER_MAIMAI_MILK = 10
|
|
VER_MAIMAI_MILK_PLUS = 11
|
|
VER_MAIMAI_FINALE = 12
|
|
|
|
VER_MAIMAI_DX = 13
|
|
VER_MAIMAI_DX_PLUS = 14
|
|
VER_MAIMAI_DX_SPLASH = 15
|
|
VER_MAIMAI_DX_SPLASH_PLUS = 16
|
|
VER_MAIMAI_DX_UNIVERSE = 17
|
|
VER_MAIMAI_DX_UNIVERSE_PLUS = 18
|
|
VER_MAIMAI_DX_FESTIVAL = 19
|
|
VER_MAIMAI_DX_FESTIVAL_PLUS = 20
|
|
VER_MAIMAI_DX_BUDDIES = 21
|
|
VER_MAIMAI_DX_BUDDIES_PLUS = 22
|
|
VER_MAIMAI_DX_PRISM = 23
|
|
VER_MAIMAI_DX_PRISM_PLUS = 24
|
|
|
|
VERSION_STRING = (
|
|
"maimai",
|
|
"maimai PLUS",
|
|
"maimai GreeN",
|
|
"maimai GreeN PLUS",
|
|
"maimai ORANGE",
|
|
"maimai ORANGE PLUS",
|
|
"maimai PiNK",
|
|
"maimai PiNK PLUS",
|
|
"maimai MURASAKi",
|
|
"maimai MURASAKi PLUS",
|
|
"maimai MiLK",
|
|
"maimai MiLK PLUS",
|
|
"maimai FiNALE",
|
|
"maimai DX",
|
|
"maimai DX PLUS",
|
|
"maimai DX Splash",
|
|
"maimai DX Splash PLUS",
|
|
"maimai DX UNiVERSE",
|
|
"maimai DX UNiVERSE PLUS",
|
|
"maimai DX FESTiVAL",
|
|
"maimai DX FESTiVAL PLUS",
|
|
"maimai DX BUDDiES",
|
|
"maimai DX BUDDiES PLUS",
|
|
"maimai DX PRiSM",
|
|
"maimai DX PRiSM PLUS"
|
|
)
|
|
KALEIDXSCOPE_KEY_CONDITION={
|
|
1: [11009, 11008, 11100, 11097, 11098, 11099, 11163, 11162, 11161, 11228, 11229, 11231, 11463, 11464, 11465, 11538, 11539, 11541, 11620, 11622, 11623, 11737, 11738, 11164, 11230, 11466, 11540, 11621, 11739],
|
|
#青の扉: Played 29 songs
|
|
2: [11102, 11234, 11300, 11529, 11542, 11612],
|
|
#白の扉: set Frame as "Latent Kingdom" (459504), play 3 or 4 songs by the composer 大国奏音 in 1 pc
|
|
3: [],
|
|
#紫の扉: JP: need to enter redeem code 51090942171709440000
|
|
4: [11023, 11106, 11221, 11222, 11300, 11374, 11458, 11523, 11619, 11663, 11746],
|
|
#黑の扉: Played 11 songs
|
|
5: [11003, 11095, 11152, 11224, 11296, 11375, 11452, 11529, 11608, 11669, 11736, 11806],
|
|
#黄の扉: Use random selection to play one of the songs
|
|
6: [212, 213, 337, 270, 271, 11504, 339, 453, 11336, 11852],
|
|
#赤の扉: Played 10 songs
|
|
7: [],
|
|
#PRISM TOWER: Get the key after clearing six doors.
|
|
8: [],
|
|
#KALEIDXSCOPE_FIRST_STAGE: Clear Prism Tower
|
|
9: [],
|
|
#希望の扉: CLEAR KALEIDXSCOPE_FIRST_STAGE
|
|
10: []
|
|
#KALEIDXSCOPE_SECOND_STAGE: JP: scan the DXPASS of 希望の鍵, will automatically unlock after clearing 希望の扉 in artemis
|
|
}
|
|
MAI_VERSION_LUT = {
|
|
"100": VER_MAIMAI,
|
|
"110": VER_MAIMAI_PLUS,
|
|
"120": VER_MAIMAI_GREEN,
|
|
"130": VER_MAIMAI_GREEN_PLUS,
|
|
"140": VER_MAIMAI_ORANGE,
|
|
"150": VER_MAIMAI_ORANGE_PLUS,
|
|
"160": VER_MAIMAI_PINK,
|
|
"170": VER_MAIMAI_PINK_PLUS,
|
|
"180": VER_MAIMAI_MURASAKI,
|
|
"185": VER_MAIMAI_MURASAKI_PLUS,
|
|
"190": VER_MAIMAI_MILK,
|
|
"195": VER_MAIMAI_MILK_PLUS,
|
|
"197": VER_MAIMAI_FINALE,
|
|
}
|
|
|
|
MAI2_VERSION_LUT = {
|
|
"100": VER_MAIMAI_DX,
|
|
"105": VER_MAIMAI_DX_PLUS,
|
|
"110": VER_MAIMAI_DX_SPLASH,
|
|
"115": VER_MAIMAI_DX_SPLASH_PLUS,
|
|
"120": VER_MAIMAI_DX_UNIVERSE,
|
|
"125": VER_MAIMAI_DX_UNIVERSE_PLUS,
|
|
"130": VER_MAIMAI_DX_FESTIVAL,
|
|
"135": VER_MAIMAI_DX_FESTIVAL_PLUS,
|
|
"140": VER_MAIMAI_DX_BUDDIES,
|
|
"145": VER_MAIMAI_DX_BUDDIES_PLUS,
|
|
"150": VER_MAIMAI_DX_PRISM,
|
|
"155": VER_MAIMAI_DX_PRISM_PLUS
|
|
}
|
|
|
|
@classmethod
|
|
def game_ver_to_string(cls, ver: int):
|
|
""" Takes an internal game version (ex 13 for maimai DX) and returns a the full name of the version """
|
|
return cls.VERSION_STRING[ver]
|
|
|
|
@classmethod
|
|
def int_ver_to_game_ver(cls, ver: int, is_dx = True) -> Optional[int]:
|
|
""" Takes an int ver (ex 100 for 1.00) and returns an internal game version """
|
|
if is_dx:
|
|
return cls.MAI2_VERSION_LUT.get(str(floor_to_nearest_005(ver)), None)
|
|
else:
|
|
if ver >= 197:
|
|
return cls.VER_MAIMAI_FINALE
|
|
return cls.MAI_VERSION_LUT.get(str(floor_to_nearest_005(ver)), None)
|