[Enhance] Support skill_nami_sui

- For Arcaea 6.6.0
- New partners "Tairitsu & El Fail" and "Nami & Sui (Twilight)"
- Add support for the character skill `skill_nami_sui`.
This commit is contained in:
Lost-MSth
2025-06-29 21:47:57 +08:00
parent 97b86a4381
commit 6c6a13086f
9 changed files with 80 additions and 21 deletions

View File

@@ -12,7 +12,7 @@ class Config:
SONG_FILE_HASH_PRE_CALCULATE = True
GAME_API_PREFIX = '/coldwind/35' # 6.0.0 '/fallingleaves/34' # str | list[str]
GAME_API_PREFIX = ['/coldwind/35', '/'] # str | list[str]
OLD_GAME_API_PREFIX = [] # str | list[str]
ALLOW_APPVERSION = [] # list[str]
@@ -106,9 +106,7 @@ class Config:
GAME_REGISTER_IP_RATE_LIMIT = '10/1 day'
GAME_REGISTER_DEVICE_RATE_LIMIT = '3/1 day'
NOTIFICATION_EXPIRE_TIME = 3 * 60 * 1000
class ConfigManager:

View File

@@ -1,7 +1,7 @@
from .config_manager import Config
ARCAEA_SERVER_VERSION = 'v2.12.0.8'
ARCAEA_DATABASE_VERSION = 'v2.12.0.8'
ARCAEA_SERVER_VERSION = 'v2.12.0.9'
ARCAEA_DATABASE_VERSION = 'v2.12.0.9'
ARCAEA_LOG_DATBASE_VERSION = 'v1.1'

View File

@@ -246,6 +246,7 @@ class UserPlay(UserScore):
self.combo_interval_bonus: int = None # 不能给 None 以外的默认值
self.hp_interval_bonus: int = None # 不能给 None 以外的默认值
self.fever_bonus: int = None # 不能给 None 以外的默认值
self.skill_cytusii_flag: str = None
self.skill_chinatsu_flag: str = None
self.highest_health: int = None
@@ -296,6 +297,10 @@ class UserPlay(UserScore):
if self.hp_interval_bonus is not None and self.hp_interval_bonus < 0:
return False
if self.fever_bonus is not None and (self.fever_bonus < 0 or self.fever_bonus > self.perfect_count * 5):
# fever 等级最高为 5
return False
y = f'{self.user.user_id}{self.song_hash}'
checksum = md5(x+md5(y))
@@ -390,7 +395,8 @@ class UserPlay(UserScore):
self.c.execute('''insert into songplay_token values(:t,:a,:b,:c,'',-1,0,0,:d,:e,:f,:g,:h,:i,:j)''', {
'a': self.user.user_id, 'b': self.song.song_id, 'c': self.song.difficulty, 'd': self.stamina_multiply, 'e': self.fragment_multiply, 'f': self.prog_boost_multiply, 'g': self.beyond_boost_gauge_usage, 'h': self.skill_cytusii_flag, 'i': self.skill_chinatsu_flag, 'j': self.invasion_flag, 't': self.song_token})
self.user.stamina.stamina -= self.user.current_map.stamina_cost * self.stamina_multiply * fatalis_stamina_multiply
self.user.stamina.stamina -= self.user.current_map.stamina_cost * \
self.stamina_multiply * fatalis_stamina_multiply
self.user.stamina.update()
def set_play_state_for_course(self, use_course_skip_purchase: bool, course_id: str = None) -> None:

View File

@@ -559,6 +559,13 @@ class UserInfo(User):
# 'subscription_multiplier': 114,
# 'memory_boost_ticket': 5,
'insight_state': self.insight_state, # 0~2 不可选3 技能激活4 未激活5 激活可选6 未激活可选
# 'enabled_features': [
# {
# "metadata": ["USA"],
# "feature": "paymentlink"
# }
# ],
}
def from_list(self, x: list) -> 'UserInfo':

View File

@@ -518,6 +518,7 @@ class WorldSkillMixin:
'skill_chinatsu': self._skill_chinatsu,
'skill_salt': self._skill_salt,
'skill_hikari_selene': self._skill_hikari_selene,
'skill_nami_sui': self._skill_nami_sui,
}
if self.user_play.beyond_gauge == 0 and self.character_used.character_id == 35 and self.character_used.skill_id_displayed:
self._special_tempest()
@@ -740,6 +741,15 @@ class WorldSkillMixin:
self.over_skill_increase = int(self.user_play.health / 10) * 2
self.prog_skill_increase = int(self.user_play.health / 10) * 2
def _skill_nami_sui(self) -> None:
'''
nami & sui 技能,根据纯粹音符数与 FEVER 等级提高世界模式进度
'''
if self.user_play.fever_bonus is None:
return
self.character_bonus_progress_normalized = self.user_play.fever_bonus / 1000
class BaseWorldPlay(WorldSkillMixin):
'''