bool TrySubstitute(AHock hock) { if (!IsFinal() || hock.Speed.Length > Game.MaxSpeedToAllowSubstitute || !IsInSubstArea(hock) || hock.Base.RemainingCooldownTicks > 0 || hock.Base.RemainingKnockdownTicks > 0 ) { return(false); } var maxStamina = MyRest .Select(x => x.Stamina) .Max(); var maxStrength = MyRest .Where(x => Eq(maxStamina, x.Stamina)) .Select(x => x.Strength) .Max(); var to = Hockeyists.FirstOrDefault(x => Eq(x.Stamina, maxStamina) && Eq(x.Strength, maxStrength)); if (to == null || maxStamina < hock.Stamina) { return(false); } move.Action = ActionType.Substitute; move.TeammateIndex = to.TeammateIndex; return(true); }
bool NeedTrySubstitute(AHock hock) { if (!IsFinal()) { return(false); } var maxStamina = Hockeyists .Where(x => x.State == HockeyistState.Resting && x.IsTeammate) .Select(x => x.Stamina) .Max(); var to = Hockeyists.FirstOrDefault(x => Eq(x.Stamina, maxStamina)); if (to == null || maxStamina * 0.8 < hock.Stamina) { return(false); } return(true); }