diff --git a/docs/music-data.md b/docs/music-data.md index 24cec67..66d71a0 100644 --- a/docs/music-data.md +++ b/docs/music-data.md @@ -356,6 +356,7 @@ column their rows have, in the order the rows first have them; when such a table | `MasterBandItemSkillEffect` | `_id` `_bandItemId` `_level` `_skillTargetIDs` `_skillEffectType` `_effectValue` | | `MasterBandItem` | `_id` `_bandId` | | `MasterBandItemLevel` | `_id` `_bandItemId` `_level` `_playerRank` | +| `MasterVip` | `_id` `_vipRank` | | `MasterVipRankBonus` | `_id` `_vipRank` `_vipBonusType` `_value` | | `MasterMemoryMusicGroup` | `_id` `_skillTargetIds` | | `MasterMemoryMusic` | `_id` `_groupId` | diff --git a/src/nnnotes/deckdata.py b/src/nnnotes/deckdata.py index fe7f731..4b76c49 100644 --- a/src/nnnotes/deckdata.py +++ b/src/nnnotes/deckdata.py @@ -68,6 +68,7 @@ ("MasterBandItemSkillEffect", "_id _bandItemId _level _skillTargetIDs _skillEffectType _effectValue"), ("MasterBandItem", "_id _bandId"), ("MasterBandItemLevel", "_id _bandItemId _level _playerRank"), + ("MasterVip", "_id _vipRank"), ("MasterVipRankBonus", "_id _vipRank _vipBonusType _value"), ("MasterMemoryMusicGroup", "_id _skillTargetIds"), ("MasterMemoryMusic", "_id _groupId"), diff --git a/tests/test_deckdata.py b/tests/test_deckdata.py index 8d44d9b..21d9f3e 100644 --- a/tests/test_deckdata.py +++ b/tests/test_deckdata.py @@ -198,6 +198,22 @@ def partial(name): src=deckdata.master_files(master_dir(tmp_path, partial, name="p"))) +def test_vip_identity_is_exported_independently_from_effect_rows(tmp_path): + def rows(name): + if name == "MasterVip": + return [{"_id": 101, "_vipRank": 1, "_point": 0}, {"_id": 121, "_vipRank": 21, "_point": 999}] + if name == "MasterVipRankBonus": + return [{"_id": 125, "_vipRank": 21, "_vipBonusType": 0, "_value": 3}] + return rows_of(name) + + document = export(tmp_path, rows=rows) + vip = document["master"]["MasterVip"] + assert vip == {"columns": ["_id", "_vipRank"], "rows": [[101, 1], [121, 21]]} + assert document["master"]["MasterVipRankBonus"]["rows"] == [[125, 21, 0, 3]] + # Rank 1 remains represented even without an effect row; effect IDs are not ranks. + assert document["provenance"]["tables"]["MasterVip"] == hashlib.sha256((tmp_path / "m/MasterVip.bin").read_bytes()).hexdigest() + + def test_charts(tmp_path): export(tmp_path) charts = json.loads((tmp_path / "deck.json").read_bytes())["charts"]