If you use the 'y' operator, it can only handle one step before (you can't have an 'a' before the 'y'.) It only interprets that which the internal move generator can handle. In this case, the internal move generator could handle it because the 'mp' really just joins the two steps into a single leap, but it's not smart enough to figure that out.
But, yes, this piece can be done, just not with XBetza. Actually, I've already written the include file for Expanded Chess, which will be included in the next release. I will email it to you now. But for reference, here's how you do the Osprey:
In case you're wondering about the MinSteps = 2 on every other move path, that is to prevent the moves for the (0, 2) leaps from being generated twice.
If you use the 'y' operator, it can only handle one step before (you can't have an 'a' before the 'y'.) It only interprets that which the internal move generator can handle. In this case, the internal move generator could handle it because the 'mp' really just joins the two steps into a single leap, but it's not smart enough to figure that out.
But, yes, this piece can be done, just not with XBetza. Actually, I've already written the include file for Expanded Chess, which will be included in the next release. I will email it to you now. But for reference, here's how you do the Osprey:
AddPieceType( "Osprey", "O", 750, 750, "Bird" );
Osprey.Step( <2, 0> ).SlideAfterStep( <1, 1> );
Osprey.Step( <2, 0> ).SlideAfterStep( <1, -1> ).MinSteps = 2;
Osprey.Step( <-2, 0> ).SlideAfterStep( <-1, 1> );
Osprey.Step( <-2, 0> ).SlideAfterStep( <-1, -1> ).MinSteps = 2;
Osprey.Step( <0, 2> ).SlideAfterStep( <1, 1> );
Osprey.Step( <0, 2> ).SlideAfterStep( <-1, 1> ).MinSteps = 2;
Osprey.Step( <0, -2> ).SlideAfterStep( <1, -1> );
Osprey.Step( <0, -2> ).SlideAfterStep( <-1, -1> ).MinSteps = 2;
In case you're wondering about the MinSteps = 2 on every other move path, that is to prevent the moves for the (0, 2) leaps from being generated twice.