diff --git a/core/data/schema/versions/SDEZ_8_rollback.sql b/core/data/schema/versions/SDEZ_8_rollback.sql new file mode 100644 index 0000000..65f700e --- /dev/null +++ b/core/data/schema/versions/SDEZ_8_rollback.sql @@ -0,0 +1,4 @@ +ALTER TABLE mai2_profile_detail DROP COLUMN currentPlayCount; +ALTER TABLE mai2_profile_detail DROP COLUMN renameCredit; + +ALTER TABLE mai2_playlog DROP COLUMN extBool1; diff --git a/core/data/schema/versions/SDEZ_9_upgrade.sql b/core/data/schema/versions/SDEZ_9_upgrade.sql new file mode 100644 index 0000000..fa6016c --- /dev/null +++ b/core/data/schema/versions/SDEZ_9_upgrade.sql @@ -0,0 +1,4 @@ +ALTER TABLE mai2_profile_detail ADD currentPlayCount INT NULL; +ALTER TABLE mai2_profile_detail ADD renameCredit INT NULL; + +ALTER TABLE mai2_playlog ADD extBool1 BOOLEAN NULL; diff --git a/docs/game_specific_info.md b/docs/game_specific_info.md index 8d1aa1d..cb29b67 100644 --- a/docs/game_specific_info.md +++ b/docs/game_specific_info.md @@ -207,6 +207,7 @@ Config file is located in `config/cxb.yaml`. | SDEZ | 18 | maimai DX UNiVERSE PLUS | | SDEZ | 19 | maimai DX FESTiVAL | | SDEZ | 20 | maimai DX FESTiVAL PLUS | +| SDEZ | 21 | maimai DX BUDDiES | ### Importer @@ -421,6 +422,7 @@ After that, on next login the present should be received (or whenever it suppose * UNiVERSE PLUS: Yes * FESTiVAL: Yes (added in A031) * FESTiVAL PLUS: Yes (added in A035) + * BUDDiES: Yes * O.N.G.E.K.I. bright MEMORY: Yes diff --git a/readme.md b/readme.md index c527090..d312bd1 100644 --- a/readme.md +++ b/readme.md @@ -11,7 +11,7 @@ Games listed below have been tested and confirmed working. Only game versions ol + All versions + omnimix + maimai DX - + All versions up to FESTiVAL PLUS + + All versions up to BUDDiES + Hatsune Miku: Project DIVA Arcade + All versions diff --git a/titles/cm/read.py b/titles/cm/read.py index 376789d..80684bd 100644 --- a/titles/cm/read.py +++ b/titles/cm/read.py @@ -206,6 +206,7 @@ class CardMakerReader(BaseReader): "1.25": Mai2Constants.VER_MAIMAI_DX_UNIVERSE_PLUS, "1.30": Mai2Constants.VER_MAIMAI_DX_FESTIVAL, "1.35": Mai2Constants.VER_MAIMAI_DX_FESTIVAL_PLUS, + "1.40": Mai2Constants.VER_MAIMAI_DX_BUDDIES, } for root, dirs, files in os.walk(base_dir): diff --git a/titles/mai2/__init__.py b/titles/mai2/__init__.py index 4857644..a3c178e 100644 --- a/titles/mai2/__init__.py +++ b/titles/mai2/__init__.py @@ -16,4 +16,4 @@ game_codes = [ Mai2Constants.GAME_CODE_GREEN, Mai2Constants.GAME_CODE, ] -current_schema_version = 8 +current_schema_version = 9 diff --git a/titles/mai2/buddies.py b/titles/mai2/buddies.py new file mode 100644 index 0000000..ccc73bb --- /dev/null +++ b/titles/mai2/buddies.py @@ -0,0 +1,19 @@ +from typing import Dict + +from core.config import CoreConfig +from titles.mai2.festivalplus import Mai2FestivalPlus +from titles.mai2.const import Mai2Constants +from titles.mai2.config import Mai2Config + + +class Mai2Buddies(Mai2FestivalPlus): + def __init__(self, cfg: CoreConfig, game_cfg: Mai2Config) -> None: + super().__init__(cfg, game_cfg) + self.version = Mai2Constants.VER_MAIMAI_DX_BUDDIES + + def handle_cm_get_user_preview_api_request(self, data: Dict) -> Dict: + user_data = super().handle_cm_get_user_preview_api_request(data) + + # hardcode lastDataVersion for CardMaker + user_data["lastDataVersion"] = "1.40.00" + return user_data diff --git a/titles/mai2/const.py b/titles/mai2/const.py index a4c29db..ce70d70 100644 --- a/titles/mai2/const.py +++ b/titles/mai2/const.py @@ -53,6 +53,7 @@ class Mai2Constants: VER_MAIMAI_DX_UNIVERSE_PLUS = 18 VER_MAIMAI_DX_FESTIVAL = 19 VER_MAIMAI_DX_FESTIVAL_PLUS = 20 + VER_MAIMAI_DX_BUDDIES = 21 VERSION_STRING = ( "maimai", @@ -76,6 +77,7 @@ class Mai2Constants: "maimai DX UNiVERSE PLUS", "maimai DX FESTiVAL", "maimai DX FESTiVAL PLUS", + "maimai DX BUDDiES", ) @classmethod diff --git a/titles/mai2/index.py b/titles/mai2/index.py index 793aaef..b4cb228 100644 --- a/titles/mai2/index.py +++ b/titles/mai2/index.py @@ -25,6 +25,7 @@ from .universe import Mai2Universe from .universeplus import Mai2UniversePlus from .festival import Mai2Festival from .festivalplus import Mai2FestivalPlus +from .buddies import Mai2Buddies class Mai2Servlet(BaseServlet): @@ -58,6 +59,7 @@ class Mai2Servlet(BaseServlet): Mai2UniversePlus, Mai2Festival, Mai2FestivalPlus, + Mai2Buddies, ] self.logger = logging.getLogger("mai2") @@ -252,8 +254,10 @@ class Mai2Servlet(BaseServlet): internal_ver = Mai2Constants.VER_MAIMAI_DX_UNIVERSE_PLUS elif version >= 130 and version < 135: # FESTiVAL internal_ver = Mai2Constants.VER_MAIMAI_DX_FESTIVAL - elif version >= 135: # FESTiVAL PLUS + elif version >= 135 and version < 140: # FESTiVAL PLUS internal_ver = Mai2Constants.VER_MAIMAI_DX_FESTIVAL_PLUS + elif version >= 140: # BUDDiES + internal_ver = Mai2Constants.VER_MAIMAI_DX_BUDDIES if ( request.getHeader("Mai-Encoding") is not None diff --git a/titles/mai2/schema/profile.py b/titles/mai2/schema/profile.py index 211440d..a8e439c 100644 --- a/titles/mai2/schema/profile.py +++ b/titles/mai2/schema/profile.py @@ -40,6 +40,8 @@ detail = Table( Column("charaLockSlot", JSON), Column("contentBit", BigInteger), Column("playCount", Integer), + Column("currentPlayCount", Integer), # new with bud + Column("renameCredit", Integer), # new with bud Column("mapStock", Integer), # new with fes+ Column("eventWatchedDate", String(25)), Column("lastGameId", String(25)), diff --git a/titles/mai2/schema/score.py b/titles/mai2/schema/score.py index 181a895..234c53c 100644 --- a/titles/mai2/schema/score.py +++ b/titles/mai2/schema/score.py @@ -146,6 +146,7 @@ playlog = Table( Column("extNum1", Integer), Column("extNum2", Integer), Column("extNum4", Integer, server_default="0"), + Column("extBool1", Boolean), # new with bud Column("trialPlayAchievement", Integer), mysql_charset="utf8mb4", )