[Enhance][Bug fix] API for custom banner

- For Arcaea 6.8.2
- Add support for "skill_vita_arc".
- Now `/users/<user_id> PUT` API endpoint can change the user's custom banner. #223
- Fix a bug that the playing result of beyond world map shows zero value at partner multiply term.
This commit is contained in:
Lost-MSth
2025-09-04 23:39:00 +08:00
parent a3891a901f
commit 9c27b998ef
4 changed files with 38 additions and 20 deletions

View File

@@ -519,6 +519,7 @@ class WorldSkillMixin:
'skill_salt': self._skill_salt,
'skill_hikari_selene': self._skill_hikari_selene,
'skill_nami_sui': self._skill_nami_sui,
'skill_vita_arc': self._skill_vita_arc,
}
if self.user_play.beyond_gauge == 0 and self.character_used.character_id == 35 and self.character_used.skill_id_displayed:
self._special_tempest()
@@ -762,6 +763,15 @@ class WorldSkillMixin:
0.1 * self.progress_normalized
self.user.current_map.reclimb(self.final_progress)
def _skill_vita_arc(self) -> None:
'''
vita 技能 2 far 会减少 1 over
'''
x = self.user_play.near_count // 2
over = self.character_used.overdrive.get_value(
self.character_used.level)
self.over_skill_increase = -min(x, over)
class BaseWorldPlay(WorldSkillMixin):
'''
@@ -1045,11 +1055,14 @@ class BeyondWorldPlay(BaseWorldPlay):
@property
def progress_normalized(self) -> float:
return self.base_progress * self.partner_multiply * self.affinity_multiplier
@property
def partner_multiply(self) -> float:
overdrive = self.character_used.overdrive_value
if self.over_skill_increase:
overdrive += self.over_skill_increase
return self.base_progress * (overdrive / 50) * self.affinity_multiplier
return overdrive / 50
def to_dict(self) -> dict:
r = super().to_dict()
@@ -1058,7 +1071,7 @@ class BeyondWorldPlay(BaseWorldPlay):
r['pre_boost_progress'] = self.progress_normalized * \
self.user_play.fragment_multiply / 100
# r['partner_multiply'] = self.affinity_multiplier # ?
r['partner_multiply'] = self.partner_multiply
if self.over_skill_increase is not None:
r['char_stats']['over_skill_increase'] = self.over_skill_increase