1
0
mirror of synced 2024-12-13 23:11:06 +01:00
bemaniutils/bemani/backend/popn/usaneko.py
2023-02-17 03:40:07 +00:00

198 lines
7.3 KiB
Python

# vim: set fileencoding=utf-8
from typing import Any, Dict, Tuple
from bemani.backend.popn.base import PopnMusicBase
from bemani.backend.popn.common import PopnMusicModernBase
from bemani.backend.popn.eclale import PopnMusicEclale
from bemani.common import VersionConstants
class PopnMusicUsaNeko(PopnMusicModernBase):
name: str = "Pop'n Music うさぎと猫と少年の夢"
version: int = VersionConstants.POPN_MUSIC_USANEKO
# Biggest ID in the music DB
GAME_MAX_MUSIC_ID: int = 1704
# Biggest deco part ID in the game
GAME_MAX_DECO_ID: int = 97
# Item limits are as follows:
# 0: 1704 - ID is the music ID that the player purchased/unlocked.
# 1: 2201
# 2: 3
# 3: 97 - ID points at a character part that can be purchased on the character screen.
# 4: 1
# 5: 1
# 6: 60
def previous_version(self) -> PopnMusicBase:
return PopnMusicEclale(self.data, self.config, self.model)
@classmethod
def get_settings(cls) -> Dict[str, Any]:
"""
Return all of our front-end modifiably settings.
"""
return {
"ints": [
{
"name": "Music Open Phase",
"tip": "Default music phase for all players.",
"category": "game_config",
"setting": "music_phase",
"values": {
0: "No music unlocks",
1: "Phase 1",
2: "Phase 2",
3: "Phase 3",
4: "Phase 4",
5: "Phase 5",
6: "Phase 6",
7: "Phase 7",
8: "Phase 8",
9: "Phase 9",
10: "Phase 10",
11: "Phase MAX",
},
},
{
"name": "NAVI-Kun Event Phase",
"tip": "NAVI-Kun event phase for all players.",
"category": "game_config",
"setting": "navikun_phase",
"values": {
0: "Phase 1",
1: "Phase 2",
2: "Phase 3",
3: "Phase 4",
4: "Phase 5",
5: "Phase 6",
6: "Phase 7",
7: "Phase 8",
8: "Phase 9",
9: "Phase 10",
10: "Phase 11",
11: "Phase 12",
12: "Phase 13",
13: "Phase 14",
14: "Phase 15",
15: "Phase MAX",
},
},
{
# For festive times, it's possible to change the welcome greeting. I'm not sure why you would want to change this, but now you can.
"name": "Holiday Greeting",
"tip": "Changes the payment selection confirmation sound.",
"category": "game_config",
"setting": "holiday_greeting",
"values": {
0: "Okay!",
1: "Merry Christmas!",
2: "Happy New Year!",
},
},
{
"name": "Active Event",
"tip": "Active event for all players.",
"category": "game_config",
"setting": "active_event",
"values": {
0: "No event",
1: "NAVI-Kun event",
2: "Daily Mission event",
},
},
],
"bools": [
# We don't currently support lobbies or anything, so this is commented out until
# somebody gets around to implementing it.
# {
# 'name': 'Net Taisen',
# 'tip': 'Enable Net Taisen, including win/loss display on song select',
# 'category': 'game_config',
# 'setting': 'enable_net_taisen',
# },
{
"name": "Force Song Unlock",
"tip": "Force unlock all songs.",
"category": "game_config",
"setting": "force_unlock_songs",
},
],
}
def get_common_config(self) -> Tuple[Dict[int, int], bool]:
game_config = self.get_game_config()
music_phase = game_config.get_int("music_phase")
holiday_greeting = game_config.get_int("holiday_greeting")
active_event = game_config.get_int("active_event")
navikun_phase = game_config.get_int("navikun_phase")
enable_net_taisen = False # game_config.get_bool('enable_net_taisen')
navikun_enabled = active_event == 1
daily_mission_enabled = active_event == 2
# Event phases
return (
{
# Default song phase availability (0-11)
# The following songs are unlocked when the phase is at or above the number specified:
# 1 - 1589, 1590, 1591
# 2 - 1594, 1595
# 3 - 1596, 1597
# 4 - 1593
# 5 - 1602
# 6 - 1604
# 7 - 1629, 1630, 1631, 1633, 1641, 1642, 1643, 1644, 1645, 1646, 1647
# 8 - 1632
# 9 - 1651
# 10 - 1679, 1680, 1681
# 11 - 1669, 1670, 1669, 1670
0: music_phase,
# Unknown event (0-2)
1: 2,
# Holiday Greeting (0-2)
2: holiday_greeting,
# Unknown event (0-4)
3: 4,
# Unknown event (0-1)
4: 1,
# Enable Net Taisen, including win/loss display on song select (0-1)
5: 1 if enable_net_taisen else 0,
# Enable NAVI-kun shunkyoku toujou, allows song 1608 to be unlocked (0-1)
6: 1,
# Unknown event (0-1)
7: 1,
# Unknown event (0-2)
8: 2,
# Daily Mission (0-2)
9: 2 if daily_mission_enabled else 0,
# NAVI-kun Song phase availability (0-15)
# The following songs are unlocked when the phase is at or above the number specified:
# 1 - 1553
# 2 - 1577, 1576, 1569
# 3 - 1575, 1557
# 4 - 1567
# 5 - 1587, 1588, 1585
# 6 - 1586
# 7 - 1601, 1600, 1599
# 8 - 1603
# 9 - 1606, 1607, 1605
# 10 - 1610, 1611, 1612
# 11 - 1616, 1613, 1614, 1615
# 12 - 1619, 1618, 1620, 1617
# 13 - 1624, 1621, 1623, 1622
# 14 - 1627, 1626, 1625
# 15 - 1628
10: navikun_phase,
# Unknown event (0-1)
11: 1,
# Unknown event (0-2)
12: 2,
# Enable Pop'n Peace preview song (1703) (0-1)
13: 1,
},
navikun_enabled,
)