protected override bool IsMainTransfer(ArmyWithTask army) { NavyArmy navyArmy = army as NavyArmy; if (navyArmy != null) { NavyTask_Reinforcement navyTask_Reinforcement = navyArmy.NavyLayer.FindTask <NavyTask_Reinforcement>((NavyTask_Reinforcement match) => match.TargetGuid == army.Garrison.GUID); if (navyTask_Reinforcement == null || navyTask_Reinforcement.AssignedArmy == null || navyTask_Reinforcement.AssignedArmy.Garrison == null || navyTask_Reinforcement.AssignedArmy.Garrison.GUID != army.MainAttackableTarget.GUID) { return(true); } } return(base.IsMainTransfer(army)); }
protected bool HasReinforcementClose(BaseNavyArmy army) { NavyArmy navyArmy = army as NavyArmy; if (navyArmy == null || navyArmy.NavyLayer == null) { return(false); } NavyTask_Reinforcement navyTask_Reinforcement = navyArmy.NavyLayer.FindTask <NavyTask_Reinforcement>((NavyTask_Reinforcement match) => match.TargetGuid == army.Garrison.GUID); if (navyTask_Reinforcement != null && navyTask_Reinforcement.AssignedArmy != null) { float num = (float)this.worldPositionService.GetDistance(navyTask_Reinforcement.AssignedArmy.Garrison.WorldPosition, army.Garrison.WorldPosition); BaseNavyArmy baseNavyArmy = navyTask_Reinforcement.AssignedArmy as BaseNavyArmy; float num2 = num / baseNavyArmy.GetMaximumMovement(); if (num2 < 2f) { return(true); } } return(false); }