private void DetermineDeploymentPointType()
        {
            if (this._isBreachSideDeploymentPoint)
            {
                this._deploymentPointType = DeploymentPoint.DeploymentPointType.Breach;
            }
            else if (this._weapons.Any <SynchedMissionObject>((Func <SynchedMissionObject, bool>)(w => w is BatteringRam)))
            {
                this._deploymentPointType     = DeploymentPoint.DeploymentPointType.BatteringRam;
                this.DeploymentTargetPosition = (this._weapons.First <SynchedMissionObject>((Func <SynchedMissionObject, bool>)(w => w is BatteringRam)) as IPrimarySiegeWeapon).TargetCastlePosition.GameEntity.GlobalPosition;
            }
            else if (this._weapons.Any <SynchedMissionObject>((Func <SynchedMissionObject, bool>)(w => w is SiegeTower)))
            {
                SiegeTower tower = this._weapons.FirstOrDefault <SynchedMissionObject>((Func <SynchedMissionObject, bool>)(w => w is SiegeTower)) as SiegeTower;
                this._deploymentPointType     = DeploymentPoint.DeploymentPointType.TowerLadder;
                this.DeploymentTargetPosition = tower.TargetCastlePosition.GameEntity.GlobalPosition;
                this._associatedSiegeLadders  = Mission.Current.ActiveMissionObjects.FindAllWithType <SiegeLadder>().Where <SiegeLadder>((Func <SiegeLadder, bool>)(sl => sl.WeaponSide == tower.WeaponSide)).ToList <SiegeLadder>();
            }
            else
            {
                this._deploymentPointType     = DeploymentPoint.DeploymentPointType.Ranged;
                this.DeploymentTargetPosition = Vec3.Invalid;
            }
            Action <DeploymentPoint> pointTypeDetermined = this.OnDeploymentPointTypeDetermined;

            if (pointTypeDetermined == null)
            {
                return;
            }
            pointTypeDetermined(this);
        }
 private void SetBreachSideDeploymentPoint()
 {
     this._isBreachSideDeploymentPoint = true;
     this._deploymentPointType         = DeploymentPoint.DeploymentPointType.Breach;
     FormationAI.BehaviorSide deploymentPointSide = (this._weapons.FirstOrDefault <SynchedMissionObject>((Func <SynchedMissionObject, bool>)(w => w is SiegeTower)) as IPrimarySiegeWeapon).WeaponSide;
     this.AssociatedWallSegment    = Mission.Current.ActiveMissionObjects.FindAllWithType <WallSegment>().FirstOrDefault <WallSegment>((Func <WallSegment, bool>)(ws => ws.DefenseSide == deploymentPointSide));
     this.DeploymentTargetPosition = this.AssociatedWallSegment.GameEntity.GlobalPosition;
 }