GIVE 연타에 행성이 흔들리고 우하단에 [+1] · 10회 이상이면 [+10]과 자전 1.5배, 전송 중 연타는 다음 묶음으로 쌓임

This commit is contained in:
Sn-Kinos
2026-10-22 01:25:27 +09:00
parent 3f59c5070e
commit a2739a37f1
7 changed files with 389 additions and 45 deletions
+5
View File
@@ -18,8 +18,12 @@ class LivePlanet25D extends StatelessWidget {
this.glow = AppColors.neonViolet,
this.animate = true,
this.lowEffects = false,
this.spinBoost = false,
});
final VoidCallback? onOpenHistory;
/// [Planet25D.spinBoost].
final bool spinBoost;
final String fandomId;
final PlanetWatch watch;
final String image;
@@ -54,6 +58,7 @@ class LivePlanet25D extends StatelessWidget {
heroEventIds: state?.heroEventIds,
animate: animate,
lowEffects: lowEffects,
spinBoost: spinBoost,
),
);
}
+12 -3
View File
@@ -145,8 +145,13 @@ class Planet25D extends StatefulWidget {
this.onOpenHistory,
this.lowEffects = false,
this.animate = true,
this.spinBoost = false,
});
/// GIVE 10회 이상 연타 중 — Figma `2033:15818` 「자전속도 1.5 배」. 본체는 자전하지 않으므로(C-185)
/// 구름 · 궤도 · 링 먼지 · 펄스가 도는 주기를 1.5배 빠르게 한다.
final bool spinBoost;
/// 다음 Stage 진화 5% 전 — 표면 아우라([PlanetVisualState.evolutionImminent]).
final bool evolutionImminent;
@@ -218,9 +223,12 @@ class _Planet25DState extends State<Planet25D>
// 실패의 감소 폭은 원문에 수치가 없어 이클립스 진행 중과 같은 값을 쓴다(해석 확인 항목).
? eclipseLight
: 1;
Duration get _cycle =>
Duration(milliseconds: (_period * 1000 / (widget.spinBoost ? 1.5 : 1)).round());
late final AnimationController _c = AnimationController(
vsync: this,
duration: Duration(seconds: _period),
duration: _cycle,
);
bool get _motionEnabled =>
@@ -245,8 +253,9 @@ class _Planet25DState extends State<Planet25D>
super.didUpdateWidget(old);
if (old.isHibernating != widget.isHibernating ||
old.isEclipsed != widget.isEclipsed ||
old.isHeroTime != widget.isHeroTime) {
_c.duration = Duration(seconds: _period);
old.isHeroTime != widget.isHeroTime ||
old.spinBoost != widget.spinBoost) {
_c.duration = _cycle;
if (_motionEnabled) _c.repeat();
}
_syncMotion();