using MU3.Battle; using MU3.DB; using MU3.User; using MU3.Util; using System; namespace MU3.Notes; class patch_NotesManager: NotesManager { private RetireResult _retireResult; private GameEngine _gameEngine; private UserFumen _userFumen; private int _previousPb; public extern void orig_update(); public new void update() { orig_update(); int threshold = 0; var abort = (patch_UserOption.eAbort)GameOption.abort; switch(abort) { case patch_UserOption.eAbort.SSS1: threshold = TechnicalRankID.SSS1.getLower(); break; case patch_UserOption.eAbort.PB: if(_userFumen == null) { UserManager userManager = Singleton.instance; _userFumen = userManager.getUserFumen(_sessionInfo.musicData.id, _sessionInfo.musicLevel, create: false); _previousPb = Math.Max(TechnicalRankID.AA.getLower(), _userFumen?.TechScoreMax ?? 0); } threshold = _previousPb; break; case patch_UserOption.eAbort.FB: case patch_UserOption.eAbort.AA: threshold = TechnicalRankID.AA.getLower(); break; default: break; } if(_retireResult == RetireResult.None && threshold > 0) { int techScoreEnable = _gameEngine.counters.getTechScoreEnable(); if(techScoreEnable < threshold) { _retireResult = RetireResult.ScoreRetire; } } } }