@@ -847,6 +847,37 @@ async def is_accomplished(
847847 return value >= achievement_info .params2
848848
849849
850+ @register_achievement_checker (38 )
851+ class CheckUnitRankUp (AchievementChecker [AchievementUpdateUnitRankUp ]):
852+ async def test_param (
853+ self ,
854+ context : idol .BasicSchoolIdolContext ,
855+ data : AchievementUpdateUnitRankUp ,
856+ achievement_info : achievement .Achievement ,
857+ ) -> bool :
858+ return achievement_info .params1 is None and len (data .unit_ids ) > 0
859+
860+ def maxvalue (self , achievement_info : achievement .Achievement ) -> int :
861+ assert achievement_info .params1 is not None
862+ return achievement_info .params1
863+
864+ async def update (
865+ self ,
866+ context : idol .BasicSchoolIdolContext ,
867+ user : main .User ,
868+ oldvalue : int ,
869+ data : AchievementUpdateUnitRankUp ,
870+ achievement_info : achievement .Achievement ,
871+ ) -> int :
872+ return oldvalue + len (data .unit_ids )
873+
874+ async def is_accomplished (
875+ self , context : idol .BasicSchoolIdolContext , value : int , achievement_info : achievement .Achievement
876+ ) -> bool :
877+ assert achievement_info .params1 is not None
878+ return value >= achievement_info .params1
879+
880+
850881@register_achievement_checker (50 )
851882class CheckLiveAdvanced (AchievementChecker [AchievementUpdateLiveClear ]):
852883 async def test_param (
0 commit comments