public void CommandFollowerInvade(NPCController follower) { if (!characterInBuffRange.Contains(follower)) { return; } if (invadeCommand == InvadeCmd.DoNothing) { follower.Patrol(MainFlag); return; } follower.Patrol(null); follower.Garrison(null); Tower nearestCompanionTower = GetNearestTower(true, false) ?? GetNearestTower(true, true); Tower nearestEnemyTower = GetNearestTower(false, false) ?? GetNearestTower(false, true); switch (invadeCommand) { case InvadeCmd.OccupyNearestTower: if (nearestEnemyTower == null) { return; } follower.Patrol(nearestEnemyTower.MainFlag); break; case InvadeCmd.DestroyNearestTower: if (nearestEnemyTower == null) { return; } follower.AttackTo(nearestEnemyTower.MainFlag); break; case InvadeCmd.SupportNearestTower: if (nearestCompanionTower == null) { return; } follower.Patrol(nearestCompanionTower.MainFlag); if (nearestCompanionTower != this) { ChangeFollower(nearestCompanionTower, follower); } //if(!nearestCompanionTower.Followers.Contains(follower)) // nearestCompanionTower.otherFollower.Add(follower); break; case InvadeCmd.DoNothing: default: break; } }