public void Rule15(float dt, World world){
switch (s15)
{
case -1:
if(Selected)
{
goto case 42; }else
{
s15 = -1;
return; }
case 42:
if(((LandedShips) > (0)))
{
goto case 44; }else
{
s15 = -1;
return; }
case 44:
if(((((world.TargetedPlanet.IsSome) && (Battle.IsNone))) && (!(world.InputMonitor.ShiftKey))))
{
goto case 46; }else
{
s15 = -1;
return; }
case 46:
if(world.InputMonitor.ControlKey)
{
___amount_of_ships150 = LandedShips; }else
{
___amount_of_ships150 = ((System.Int32)((((LandedShips) + (1))) / (2))); }
___target151 = world.TargetedPlanet.Value;
___next_hop150 = (
(this.Neighbours).Select(__ContextSymbol131 => new { ___h150 = __ContextSymbol131 })
.SelectMany(__ContextSymbol132=> (world.Planets).Select(__ContextSymbol133 => new { ___q152 = __ContextSymbol133,
prev = __ContextSymbol132 })
.Where(__ContextSymbol134 => ((((__ContextSymbol134.prev.___h150.Item1) == (world.TargetedPlanet.Value.UnityPlanet))) && (((__ContextSymbol134.prev.___h150.Item2) == (__ContextSymbol134.___q152.UnityPlanet)))))
.Select(__ContextSymbol135 => __ContextSymbol135.___q152)
.ToList<Planet>())).ToList<Planet>();
ShipToSend = (
(new Cons<TravelingShip>(new TravelingShip(___next_hop150.Head(),this,new Ship(Owner.Value,Position,___amount_of_ships150,world.TargetedPlanet.Value,___next_hop150.Head(),this,(new Nothing<UnityShip>()))),(new Empty<TravelingShip>()).ToList<TravelingShip>())).ToList<TravelingShip>()).ToList<TravelingShip>();
LandedShips = 0;
s15 = 47;
return;
case 47:
ShipToSend = (
Enumerable.Empty<TravelingShip>()).ToList<TravelingShip>();
LandedShips = LandedShips;
s15 = -1;
return;
default: return;}}