Please report any bugs or errors to Adam DeWitt
6
BANNED INPUT: vh 8m-14g on turn 4:
There is a global ban on commands in user input, and no exception has been made for the vh command on the part of the turn indexed 1.
Go back and try again.
What is otherwise valid user input in Game Courier can be banned in a GAME Code program for the sake of better enforcing the rules. See "Restricting User Input" in the Game Courier Developer's Guide for details on how this is done.
If you believe that your input should not have been banned, contact Fergus Duniho or whoever programmed the rules for this game.
Edit Settings File0 echo Please report any bugs or errors to Adam DeWitt 1 set mypieces () 2 set myflipped () 3 foreach label (p P d D n N i I c C s S bt BT fl FL g G de DE l L ky KY ph PH sm SM vm VM b B ss SS vs VS r R dh DH dk DK cs CS hf HF se SE ln LN bg BG rg RG wb WB fe FE lh LH vg VG gg GG fd FD k K) 4 setelem mypieces #label pieceimg #label 5 setelem myflipped #label flipimg #label 6 next 7 foreach pair ((rc rv) (RC RV) (fk q) (FK Q) (p$ +p) (P$ +P) (d$ +d) (D$ +D) (n$ +n) (N$ +N) (i$ +i) (I$ +I) (c$ +c) (C$ +C) (s$ +s) (S$ +S) (bt$ +bt) (BT$ +BT) (fl$ +fl) (FL$ +FL) (g$ +g) (G$ +G) (de$ +de) (DE$ +DE) (rc$ +rv) (RC$ +RV) (l$ +l) (L$ +L) (ky$ +ky) (KY$ +KY) (ph$ +ph) (PH$ +PH) (sm$ +sm) (SM$ +SM) (vm$ +vm) (VM$ +VM) (b$ +b) (B$ +B) (ss$ +ss) (SS$ +SS) (vs$ +vs) (VS$ +VS) (r$ +r) (R$ +R) (dh$ +dh) (DH$ +DH) (dk$ +dk) (DK$ +DK) (cs$ +cs) (CS$ +CS) (hf$ +hf) (HF$ +HF) (se$ +se) (SE$ +SE) (ln$ +ln) (LN$ +LN) (fk$ +q) (FK$ +Q) (bg$ +bg) (BG$ +BG) (rg$ +rg) (RG$ +RG) (wb$ +wb) (WB$ +WB)) 8 setelem mypieces #pair.1 pieceimg #pair.0 9 setelem myflipped #pair.1 flipimg #pair.0 10 next 11 setsystem pieces #mypieces 12 setsystem flipped #myflipped 13 setsystem originalpieces currentpieces 14 set bpieces p +p d +d n +n i +i c +c s +s bt +bt fl +fl g +g de +de rv +rv l +l ky +ky ph +ph sm +sm vm +vm b +b ss +ss vs +vs r +r dh +dh dk +dk cs +cs hf +hf se +se ln +ln q +q bg +bg rg +rg wb +wb fe lh vg gg fd k 15 set wpieces P +P D +D N +N I +I C +C S +S BT +BT FL +FL G +G DE +DE RV +RV L +L KY +KY PH +PH SM +SM VM +VM B +B SS +SS VS +VS R +R DH +DH DK +DK CS +CS HF +HF SE +SE LN +LN Q +Q BG +BG RG +RG WB +WB FE LH VG GG FD K 16 set pzs 5 17 set promote assoc p +p d +d n +n i +i c +c s +s bt +bt fl +fl g +g de +de rv +rv l +l ky +ky ph +ph sm +sm vm +vm b +b ss +ss vs +vs r +r dh +dh dk +dk cs +cs hf +hf se +se ln +ln q +q bg +bg rg +rg wb +wb fe fe lh lh vg vg gg gg fd fd k k P +P D +D N +N I +I C +C S +S BT +BT FL +FL G +G DE +DE RV +RV L +L KY +KY PH +PH SM +SM VM +VM B +B SS +SS VS +VS R +R DH +DH DK +DK CS +CS HF +HF SE +SE LN +LN Q +Q BG +BG RG +RG WB +WB FE FE LH LH VG VG GG GG FD FD K K 18 set steps array 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 19 setsystem maxmove 3 20 ban commands allmoves 21 allow moves 1 captures 1 moves 2 captures 2 pass 2 promotions 2 promotions 3 22 map n 0 1 23 map n2 0 2 24 map s 0 -1 25 map s2 0 -2 26 map e 1 0 27 map e2 2 0 28 map w -1 0 29 map w2 -2 0 30 map ne 1 1 31 map ne2 2 2 32 map se 1 -1 33 map se2 2 -2 34 map sw -1 -1 35 map sw2 -2 -2 36 map nw -1 1 37 map nw2 -2 2 38 def NO logride #0 #1 (n2 n n n n n n n n n n n n n) 39 def NE logride #0 #1 (ne2 ne ne ne ne ne ne ne ne ne ne ne ne ne) 40 def EA logride #0 #1 (e2 e) 41 def SED logride #0 #1 (se2 se se se se se se se se se se se se se) 42 def SO logride #0 #1 (s2 s s s s s s s s s s s s s) 43 def SW logride #0 #1 (sw2 sw sw sw sw sw sw sw sw sw sw sw sw sw) 44 def WE logride #0 #1 (w2 w) 45 def NW logride #0 #1 (nw2 nw nw nw nw nw nw nw nw nw nw nw nw nw) 46 def p checkaleap #0 #1 0 1 47 def P checkaleap #0 #1 0 -1 48 def pL array where #0 0 1 49 def PL array where #0 0 -1 50 def d checkaleap #0 #1 0 1 or checkaleap #0 #1 -1 -1 or checkaleap #0 #1 1 -1 51 def D checkaleap #0 #1 0 -1 or checkaleap #0 #1 -1 1 or checkaleap #0 #1 1 1 52 def dL array where #0 0 1 where #0 -1 -1 where #0 1 -1 53 def DL array where #0 0 -1 where #0 -1 1 where #0 1 1 54 def n checkleap #0 #1 1 2 55 copyfn n N 56 def nL leaps #0 1 2 57 def NL leaps #0 1 2 58 copyfn D i 59 copyfn d I 60 def iL array where #0 0 -1 where #0 -1 1 where #0 1 1 61 def IL array where #0 0 1 where #0 -1 -1 where #0 1 -1 62 def c fn i #0 #1 or fn p #0 #1 63 def C fn I #0 #1 or fn P #0 #1 64 def cL array where #0 0 1 where #0 0 -1 where #0 -1 1 where #0 1 1 65 def CL array where #0 0 1 where #0 0 -1 where #0 -1 -1 where #0 1 -1 66 def s checkleap #0 #1 1 1 or fn p #0 #1 67 def S checkleap #0 #1 1 1 or fn P #0 #1 68 def sL merge leaps #0 1 1 array where #0 0 1 69 def SL merge leaps #0 1 1 array where #0 0 -1 70 def bt fn S #0 #1 or checkaleap #0 #1 -1 0 or checkaleap #0 #1 1 0 71 def BT fn s #0 #1 or checkaleap #0 #1 -1 0 or checkaleap #0 #1 1 0 72 def btL merge leaps #0 1 1 array where #0 -1 0 where #0 1 0 where #0 0 -1 73 def BTL merge leaps #0 1 1 array where #0 -1 0 where #0 1 0 where #0 0 1 74 def fl checkleap #0 #1 1 1 or checkaleap #0 #1 0 1 or checkaleap #0 #1 0 -1 75 copyfn fl FL 76 def flL merge leaps #0 1 1 array where #0 0 1 where #0 0 -1 77 def FLL merge leaps #0 1 1 array where #0 0 1 where #0 0 -1 78 def g checkleap #0 #1 0 1 or checkaleap #0 #1 -1 1 or checkaleap #0 #1 1 1 79 def G checkleap #0 #1 0 1 or checkaleap #0 #1 -1 -1 or checkaleap #0 #1 1 -1 80 def gL merge leaps #0 0 1 array where #0 -1 1 where #0 1 1 81 def GL merge leaps #0 0 1 array where #0 -1 -1 where #0 1 -1 82 def de fn BT #0 #1 83 def DE fn bt #0 #1 84 def deL merge leaps #0 1 1 array where #0 -1 0 where #0 1 0 where #0 0 1 85 def DEL merge leaps #0 1 1 array where #0 -1 0 where #0 1 0 where #0 0 -1 86 def rv checkaride #0 #1 0 1 or checkaride #0 #1 0 -1 87 copyfn rv RV 88 def rvL rays #0 0 1 89 def RVL rays #0 0 1 90 def l checkaride #0 #1 0 -1 and <= distance #0 #1 2 or checkaride #0 #1 0 1 91 def L checkaride #0 #1 0 1 and <= distance #0 #1 2 or checkaride #0 #1 0 -1 92 def lL rays #0 0 1 93 def LL rays #0 0 1 94 def ky checkleap #0 #1 1 1 or checkleap #0 #1 0 2 95 copyfn ky KY 96 def kyL merge leaps #0 1 1 leaps #0 0 2 97 def KYL merge leaps #0 1 1 leaps #0 0 2 98 def ph checkleap #0 #1 0 1 or checkleap #0 #1 2 2 99 copyfn ph PH 100 def phL merge leaps #0 0 1 leaps #0 2 2 101 def PHL merge leaps #0 0 1 leaps #0 2 2 102 def sm checkaride #0 #1 -1 0 or checkaride #0 #1 1 0 or checkleap #0 #1 0 1 103 copyfn sm SM 104 def smL rays #0 0 1 105 def SML rays #0 0 1 106 def vm checkaride #0 #1 0 -1 or checkaride #0 #1 0 1 or checkleap #0 #1 0 1 107 copyfn vm VM 108 def vmL rays #0 0 1 109 def VML rays #0 0 1 110 def b checkride #0 #1 1 1 111 def B checkride #0 #1 1 1 112 def bL rays #0 1 1 113 def BL rays #0 1 1 114 def ss checkaride #0 #1 0 1 and <= distance #0 #1 2 or checkleap #0 #1 0 1 or checkaride #0 #1 1 0 or checkaride #0 #1 -1 0 115 def SS checkaride #0 #1 0 -1 and <= distance #0 #1 2 or checkleap #0 #1 0 1 or checkaride #0 #1 1 0 or checkaride #0 #1 -1 0 116 def ssL rays #0 0 1 117 def SSL rays #0 0 1 118 def vs checkaride #0 #1 1 0 or checkaride #0 #1 -1 0 and <= distance #0 #1 2 or checkleap #0 #1 0 1 or checkaride #0 #1 0 1 119 def VS checkaride #0 #1 1 0 or checkaride #0 #1 -1 0 and <= distance #0 #1 2 or checkleap #0 #1 0 1 or checkaride #0 #1 0 -1 120 def vsL rays #0 0 1 121 def VSL rays #0 0 1 122 def r checkride #0 #1 0 1 123 def R checkride #0 #1 0 1 124 def rL rays #0 0 1 125 def RL rays #0 0 1 126 def dh fn b #0 #1 or checkleap #0 #1 0 1 127 def DH fn B #0 #1 or checkleap #0 #1 0 1 128 def dhL merge rays #0 1 1 leaps #0 0 1 129 def DHL merge rays #0 1 1 leaps #0 0 1 130 def dk fn r #0 #1 or checkleap #0 #1 1 1 131 def DK fn R #0 #1 or checkleap #0 #1 1 1 132 def dkL merge rays #0 0 1 leaps #0 1 1 133 def DKL merge rays #0 0 1 leaps #0 1 1 134 def cs checkride #0 #1 0 1 and <= distance #0 #1 2 or checkride #0 #1 1 1 or checkaride #0 #1 0 1 or checkaride #0 #1 0 -1 135 def CS checkride #0 #1 0 1 and <= distance #0 #1 2 or checkride #0 #1 1 1 or checkaride #0 #1 0 1 or checkaride #0 #1 0 -1 136 def csL merge rays #0 0 1 rays #0 1 1 137 def CSL merge rays #0 0 1 rays #0 1 1 138 def hf cond var firstpart (checkride #0 #1 1 1 or checkaride #0 #1 -1 0 or checkaride #0 #1 1 0 or checkaride #0 #1 0 -1 or checkleap #0 #1 0 1 or checkaleap #0 #1 0 2) (checkaleap #0 #1 0 1 or checkaleap #0 #1 0 -1) and #0 and #1 139 def HF cond var firstpart (checkride #0 #1 1 1 or checkaride #0 #1 -1 0 or checkaride #0 #1 1 0 or checkaride #0 #1 0 1 or checkleap #0 #1 0 1 or checkaleap #0 #1 0 -2) (checkaleap #0 #1 0 1 or checkaleap #0 #1 0 -1) and #0 and #1 140 def hfL mergeall rays #0 0 1 rays #0 1 1 leaps #0 0 2 141 def HFL mergeall rays #0 0 1 rays #0 1 1 leaps #0 0 2 142 def se cond var firstpart (checkride #0 #1 0 1 or checkaride #0 #1 -1 -1 or checkaride #0 #1 1 -1 or checkleap #0 #1 1 1 or checkaleap #0 #1 -2 2 or checkaleap #0 #1 2 2) (sub SE #0 #1) and #0 and #1 143 def SE cond var firstpart (checkride #0 #1 0 1 or checkaride #0 #1 -1 1 or checkaride #0 #1 1 1 or checkleap #0 #1 1 1 or checkaleap #0 #1 -2 -2 or checkaleap #0 #1 2 -2) (sub SE #0 #1) and #0 and #1 144 def seL mergeall rays #0 0 1 rays #0 1 1 leaps #0 2 2 145 def SEL mergeall rays #0 0 1 rays #0 1 1 leaps #0 2 2 146 def ln <= distance #0 #1 cond var firstpart 2 1 147 copyfn ln LN 148 def lnL mergeall leaps #0 0 1 leaps #0 1 1 leaps #0 0 2 leaps #0 1 2 leaps #0 2 2 149 def LNL mergeall leaps #0 0 1 leaps #0 1 1 leaps #0 0 2 leaps #0 1 2 leaps #0 2 2 150 def q fn r #0 #1 or fn b #0 #1 151 def Q fn R #0 #1 or fn B #0 #1 152 def qL merge rays #0 0 1 rays #0 1 1 153 def QL merge rays #0 0 1 rays #0 1 1 154 def bg sub BG #0 #1 and cond empty #0 capture (not empty #1) or checkride #0 #1 1 1 155 copyfn bg BG 156 def bgL rays #0 1 1 157 def BGL rays #0 1 1 158 def rg sub RG #0 #1 and cond empty #0 capture (not empty #1) or checkride #0 #1 0 1 159 copyfn rg RG 160 def rgL rays #0 0 1 161 def RGL rays #0 0 1 162 def wb checkride #0 #1 0 1 and <= distance #0 #1 2 or checkride #0 #1 1 1 or checkaride #0 #1 1 0 or checkaride #0 #1 -1 0 163 copyfn wb WB 164 def wbL merge rays #0 0 1 rays #0 1 1 165 def WBL merge rays #0 0 1 rays #0 1 1 166 def fe cond var firstpart (fn q #0 #1 or checkleap #0 #1 0 2 or checkleap #0 #1 2 2) (checkleap #0 #1 1 1) and #0 and #1 167 copyfn fe FE 168 def feL mergeall rays #0 0 1 rays #0 1 1 leaps #0 0 2 leaps #0 2 2 169 def FEL mergeall rays #0 0 1 rays #0 1 1 leaps #0 0 2 leaps #0 2 2 170 def lh cond var firstpart (<= distance #0 #1 2 or fn b #0 #1) (checkleap #0 #1 0 1 or checkleap #0 #1 1 1) and #0 and #1 171 copyfn lh LH 172 def lhL mergeall rays #0 1 1 leaps #0 0 1 leaps #0 0 2 leaps #0 1 2 leaps #0 2 2 173 def LHL mergeall rays #0 1 1 leaps #0 0 1 leaps #0 0 2 leaps #0 1 2 leaps #0 2 2 174 def vg cond var firstpart (sub BG #0 #1 and cond empty #0 capture (not empty #1) or checkride #0 #1 1 1 or checkmaxsteps #0 #1 3) (checkleap #0 #1 0 1 or checkleap #0 #1 1 1 and == var ori #1) and #0 and #1 175 copyfn vg VG 176 def vgL mergeall rays #0 1 1 leaps #0 0 1 leaps #0 0 2 leaps #0 1 2 leaps #0 2 2 leaps #0 0 3 leaps #0 1 3 leaps #0 2 3 leaps #0 3 3 177 def VGL mergeall rays #0 1 1 leaps #0 0 1 leaps #0 0 2 leaps #0 1 2 leaps #0 2 2 leaps #0 0 3 leaps #0 1 3 leaps #0 2 3 leaps #0 3 3 178 def gg sub GG #0 #1 and cond empty #0 capture (not empty #1) or checkride #0 #1 0 1 or checkride #0 #1 1 1 179 copyfn gg GG 180 def ggL merge rays #0 0 1 rays #0 1 1 181 def GGL merge rays #0 0 1 rays #0 1 1 182 def fd cond var firstpart (checkride #0 #1 1 1 or checkaride #0 #1 -1 0 or checkaride #0 #1 1 0 or checkmaxsteps #0 #1 3) (sub FD #0 #1 and not match space #1 FD +WB +CS) and #0 and #1 183 def FD cond var firstpart (checkride #0 #1 1 1 or checkaride #0 #1 -1 0 or checkaride #0 #1 1 0 or checkmaxsteps #0 #1 3) (sub FD #0 #1 and not match space #1 fd +wb +cs) and #0 and #1 184 def fdL mergeall rays #0 0 1 rays #0 1 1 leaps #0 0 2 leaps #0 1 2 leaps #0 2 2 leaps #0 0 3 leaps #0 1 3 leaps #0 2 3 leaps #0 3 3 185 def FDL mergeall rays #0 0 1 rays #0 1 1 leaps #0 0 2 leaps #0 1 2 leaps #0 2 2 leaps #0 0 3 leaps #0 1 3 leaps #0 2 3 leaps #0 3 3 186 copyfn g +p 187 copyfn G +P 188 copyfn gL +pL 189 copyfn GL +PL 190 def +d checkaride #0 #1 0 1 or checkaride #0 #1 -1 -1 or checkaride #0 #1 1 -1 191 def +D checkaride #0 #1 0 -1 or checkaride #0 #1 -1 1 or checkaride #0 #1 1 1 192 def +dL mergeall ray #0 0 1 ray #0 -1 -1 ray #0 1 -1 193 def +DL mergeall ray #0 0 -1 ray #0 -1 1 ray #0 1 1 194 copyfn ss +n 195 copyfn SS +N 196 copyfn ssL +nL 197 copyfn SSL +NL 198 copyfn vs +i 199 copyfn VS +I 200 copyfn vsL +iL 201 copyfn VSL +IL 202 copyfn sm +c 203 copyfn SM +C 204 copyfn smL +cL 205 copyfn SML +CL 206 copyfn vm +s 207 copyfn VM +S 208 copyfn vmL +sL 209 copyfn VML +SL 210 def +bt checkaride #0 #1 0 1 or checkaride #0 #1 0 -1 or checkleap #0 #1 0 1 or checkleap #0 #1 1 1 211 copyfn +bt +BT 212 def +btL mergeall ray #0 0 1 ray #0 0 -1 leaps #0 0 1 leaps #0 1 1 213 def +BTL mergeall ray #0 0 1 ray #0 0 -1 leaps #0 0 1 leaps #0 1 1 214 copyfn b +fl 215 copyfn B +FL 216 copyfn bL +flL 217 copyfn BL +FLL 218 copyfn r +g 219 copyfn R +G 220 copyfn rL +gL 221 copyfn RL +GL 222 def +de checkleap #0 #1 0 1 or checkleap #0 #1 1 1 223 copyfn +de +DE 224 def +deL merge leaps #0 0 1 leaps #0 1 1 225 def +DEL merge leaps #0 0 1 leaps #0 1 1 226 def +rv checkaride #0 #1 0 1 or checkaride #0 #1 0 -1 or checkaride #0 #1 -1 -1 or checkaride #0 #1 1 -1 227 def +RV checkaride #0 #1 0 1 or checkaride #0 #1 0 -1 or checkaride #0 #1 -1 1 or checkaride #0 #1 1 1 228 def +rvL mergeall ray #0 0 1 ray #0 0 -1 ray #0 -1 -1 ray #0 1 -1 229 def +RVL mergeall ray #0 0 1 ray #0 0 -1 ray #0 -1 1 ray #0 1 1 230 def +l checkaride #0 #1 0 1 or checkaride #0 #1 0 -1 or checkaride #0 #1 -1 1 or checkaride #0 #1 1 1 231 def +L checkaride #0 #1 0 1 or checkaride #0 #1 0 -1 or checkaride #0 #1 -1 -1 or checkaride #0 #1 1 -1 232 def +lL mergeall ray #0 0 1 ray #0 0 -1 ray #0 -1 1 ray #0 1 1 233 def +LL mergeall ray #0 0 1 ray #0 0 -1 ray #0 -1 -1 ray #0 1 -1 234 copyfn ln +ky 235 copyfn LN +KY 236 copyfn lnL +kyL 237 copyfn LNL +KYL 238 copyfn q +ph 239 copyfn Q +PH 240 copyfn qL +phL 241 copyfn QL +PHL 242 def +sm checkride #0 #1 1 1 or checkaride #0 #1 -1 0 or checkaride #0 #1 1 0 243 copyfn +sm +SM 244 def +sm$L merge rays #0 0 1 rays #0 1 1 245 def +SML merge rays #0 0 1 rays #0 1 1 246 def +vm checkride #0 #1 1 1 or checkaride #0 #1 0 -1 or checkaride #0 #1 0 1 247 copyfn +vm +VM 248 def +vmL merge rays #0 0 1 rays #0 1 1 249 def +VML merge rays #0 0 1 rays #0 1 1 250 copyfn dh +b 251 copyfn DH +B 252 copyfn dhL +bL 253 copyfn DHL +BL 254 copyfn wb +ss 255 copyfn WB +SS 256 copyfn wbL +ssL 257 copyfn WBL +SSL 258 copyfn cs +vs 259 copyfn CS +VS 260 copyfn csL +vsL 261 copyfn CSL +VSL 262 copyfn dk +r 263 copyfn DK +R 264 copyfn dkL +rL 265 copyfn DKL +RL 266 copyfn hf +dh 267 copyfn HF +DH 268 copyfn hfL +dhL 269 copyfn HFL +DHL 270 copyfn se +dk 271 copyfn SE +DK 272 copyfn seL +dkL 273 copyfn SEL +DKL 274 def +cs cond var firstpart (checkleap #0 #1 0 1 or checkleap #0 #1 1 1 and cond empty #0 capture (not empty #1) or fn NO #0 #1 or fn NE #0 #1 or fn EA #0 #1 or fn SED #0 #1 or fn SO #0 #1 or fn SW #0 #1 or fn WE #0 #1 or fn NW #0 #1) (sub FD #0 #1 and not match space #1 FD +WB +CS) and #0 and #1 275 def +CS cond var firstpart (checkleap #0 #1 0 1 or checkleap #0 #1 1 1 and cond empty #0 capture (not empty #1) or fn NO #0 #1 or fn NE #0 #1 or fn EA #0 #1 or fn SED #0 #1 or fn SO #0 #1 or fn SW #0 #1 or fn WE #0 #1 or fn NW #0 #1) (sub FD #0 #1 and not match space #1 fd +wb +cs) and #0 and #1 276 def +csL mergeall leaps #0 0 1 leaps #0 1 1 lograys #0 (n2 n) (ne2 ne) (e2 e stop) (se2 se) (s2 s) (sw2 sw) (w2 w stop) (nw2 nw) 277 def +CSL mergeall leaps #0 0 1 leaps #0 1 1 lograys #0 (n2 n) (ne2 ne) (e2 e stop) (se2 se) (s2 s) (sw2 sw) (w2 w stop) (nw2 nw) 278 copyfn bg +hf 279 copyfn BG +HF 280 copyfn bgL +hfL 281 copyfn BGL +HFL 282 copyfn rg +se 283 copyfn RG +SE 284 copyfn rgL +seL 285 copyfn RGL +SEL 286 copyfn lh +ln 287 copyfn LH +LN 288 copyfn lhL +lnL 289 copyfn LHL +LNL 290 copyfn fe +q 291 copyfn FE +Q 292 copyfn feL +qL 293 copyfn FEL +QL 294 copyfn vg +bg 295 copyfn VG +BG 296 copyfn vgL +bgL 297 copyfn VGL +BGL 298 copyfn gg +rg 299 copyfn GG +RG 300 copyfn ggL +rgL 301 copyfn GGL +RGL 302 copyfn fd +wb 303 copyfn FD +WB 304 copyfn fdL +wbL 305 copyfn FDL +WBL 306 def k checkleap #0 #1 0 1 or checkleap #0 #1 1 1 307 copyfn k K 308 def kL merge leaps #0 0 1 leaps #0 1 1 309 def KL merge leaps #0 0 1 leaps #0 1 1 310 sub FD from to 311 return cond cond empty #from capture (not empty #to) (checkleap #from #to 0 1 or checkleap #from #to 1 1) (checkleap #from #to 0 1 or checkleap #from #to 1 1 and == var ori #to) and #to 312 endsub 313 sub GG from to 314 local step, cnt, i 315 if != file #from file #to and != rank #from rank #to and != abs - file #from file #to abs - rank #from rank #to 316 return false 317 endif 318 set step #from 319 set cnt 0 320 do 321 for i #steps 322 set step where #step cmp file #to file #from cmp rank #to rank #from 323 if == #step #to 324 return true 325 endif 326 if != @ space #step 327 set cnt inc #cnt 328 endif 329 if >= #cnt 3 330 return false 331 endif 332 next 333 loop never 334 endsub 335 sub RG from to 336 local step, cnt, i 337 if != file #from file #to and != rank #from rank #to 338 return false 339 endif 340 set step #from 341 set cnt 0 342 do 343 for i #steps 344 set step where #step cmp file #to file #from cmp rank #to rank #from 345 if == #step #to 346 return true 347 endif 348 if != @ space #step 349 set cnt inc #cnt 350 endif 351 if >= #cnt 3 352 return false 353 endif 354 next 355 loop never 356 endsub 357 sub BG from to 358 local step, cnt, i 359 if != abs - file #from file #to abs - rank #from rank #to 360 return false 361 endif 362 set step #from 363 set cnt 0 364 do 365 for i #steps 366 set step where #step cmp file #to file #from cmp rank #to rank #from 367 if == #step #to 368 return true 369 endif 370 if != @ space #step 371 set cnt inc #cnt 372 endif 373 if >= #cnt 3 374 return false 375 endif 376 next 377 loop never 378 endsub 379 sub SE from to 380 if > slope origin dest 0 381 return checkaleap #from #to 1 1 or checkaleap #from #to -1 -1 382 else 383 return checkaleap #from #to 1 -1 or checkaleap #from #to -1 1 384 endif 385 endsub 386 sub stalemated kingpos 387 store 388 local from piece to 389 if isupper #kingpos 390 def friends intersection nolower #wpieces 391 def friend match #0 #wpieces 392 else 393 def friends intersection noupper #bpieces 394 def friend match #0 #bpieces 395 endif 396 set firstpart true 397 store 398 for (from piece) fn friends 399 for to fn join #piece L #from 400 if fn #piece #from #to and not fn friend space #to and onboard #to 401 move #from #to 402 setlegal #from #to 403 endif 404 restore 405 next 406 next 407 return cond count system legalmoves false true 408 endsub 409 sub legalmoves2 kingpos 410 store 411 local from piece to 412 if isupper #kingpos 413 def friends intersection nolower #wpieces 414 def friend match #0 #wpieces 415 else 416 def friends intersection noupper #bpieces 417 def friend match #0 #bpieces 418 endif 419 set firstpart false 420 set oldto dest 421 store 422 for (from piece) fn friends 423 if == #from #oldto 424 for to fn join #piece L #from 425 if fn #piece #from #to and not fn friend space #to and onboard #to 426 move #from #to 427 setlegal #from #to 428 endif 429 restore 430 next 431 endif 432 next 433 return cond count system legalmoves false true 434 endsub 435 sub isdoublemove from to 436 verify var firstpart 437 if match moved fd +wb and sub canburn #from #to king 438 return true 439 elseif match moved FD +WB and sub canburn #from #to KING 440 return true 441 elseif match moved +cs and fn +cs #from #to and >= distance #from #to 2 and sub canburn #from #to king 442 return true 443 elseif match moved +CS and fn +CS #from #to and >= distance #from #to 2 and sub canburn #from #to KING 444 return true 445 elseif checkleap #from #to 0 1 or checkleap #from #to 1 1 and match moved ln LN lh LH vg VG +ky +KY +ln +LN +bg +BG and var firstpart 446 if match moved vg VG +bg +BG and capture 447 return false 448 else 449 return true 450 endif 451 elseif checkleap #from #to 1 1 and match moved fe FE +q +Q 452 return true 453 elseif checkaleap #from #to 0 1 and match moved hf +dh 454 return true 455 elseif checkaleap #from #to 0 -1 and match moved HF +DH 456 return true 457 elseif checkaleap #from #to -1 1 or checkaleap #from #to 1 1 and match moved se +dk 458 return true 459 elseif checkaleap #from #to -1 -1 or checkaleap #from #to 1 -1 and match moved SE +DK 460 return true 461 else 462 return false 463 endif 464 endsub 465 sub canburn from to kingpos 466 if fn K #from #to 467 return true 468 else 469 if isupper #kingpos 470 def enemy match #0 #bpieces and not match #0 fd +wb +cs 471 else 472 def enemy match #0 #wpieces and not match #0 FD +WB +CS 473 endif 474 set north where #to 0 1 475 set east where #to 1 0 476 set south where #to 0 -1 477 set west where #to -1 0 478 set northeast where #to 1 1 479 set southeast where #to 1 -1 480 set southwest where #to -1 -1 481 set northwest where #to -1 1 482 if fn enemy space #north 483 return true 484 elseif fn enemy space #northeast 485 return true 486 elseif fn enemy space #east 487 return true 488 elseif fn enemy space #southeast 489 return true 490 elseif fn enemy space #south 491 return true 492 elseif fn enemy space #southwest 493 return true 494 elseif fn enemy space #west 495 return true 496 elseif fn enemy space #northwest 497 return true 498 else 499 return false 500 endif 501 endif 502 endsub 503 sub bpromotion from to 504 verify not sub isdoublemove origin dest 505 if onboard where #from 0 #pzs and onboard where #to 0 #pzs 506 return false 507 elseif not match moved p d n i c s bt fl g de rv l ky ph sm vm b ss vs r dh dk cs hf se ln q bg rg wb 508 return false 509 else 510 return true 511 endif 512 endsub 513 sub wpromotion from to 514 verify not sub isdoublemove origin dest 515 if onboard where #from 0 neg #pzs and onboard where #to 0 neg #pzs 516 return false 517 elseif not match moved P D N I C S BT FL G DE RV L KY PH SM VM B SS VS R DH DK CS HF SE LN Q BG RG WB 518 return false 519 else 520 return true 521 endif 522 endsub 523 sub bpromote from to 524 set legal false 525 verify fn moved origin dest 526 if match moved fd +wb +cs and match old FD +WB +CS and not var firstpart 527 die "Fire Demons and Heavenly Tetrarches cannot be burned." 528 elseif != space #to moved and sub isdoublemove origin dest 529 die "You may not promote any piece without completing your move." 530 elseif != space #to moved and onboard where #from 0 #pzs and onboard where #to 0 #pzs 531 die "You may not promote any piece without entering or exiting the promotion zone." 532 elseif not onboard where #from 0 #pzs or not onboard where #to 0 #pzs 533 if == moved space #to and not fnmatch *-dest* thismove and match moved p d n i c s bt fl g de rv l ky ph sm vm b ss vs r dh dk cs hf se ln q bg rg wb and not sub isdoublemove origin dest 534 set pc moved 535 set pm elem moved promote 536 askpromote #pm #pc 537 elseif != moved space dest and != elem moved promote space dest 538 set np space #to 539 die "You may not promote a" moved "to a" #np 540 endif 541 endif 542 set legal true 543 return true 544 endsub 545 sub wpromote from to 546 set legal false 547 verify fn moved origin dest 548 if match moved FD +WB +CS and match old fd +wb +cs and not var firstpart 549 die "Fire Demons and Heavenly Tetrarches cannot be burned." 550 elseif != space #to moved and sub isdoublemove origin dest 551 die "You may not promote any piece without completing your move." 552 elseif != space #to moved and onboard where #from 0 neg #pzs and onboard where #to 0 neg #pzs 553 die "You may not promote any piece without entering or exiting the promotion zone." 554 elseif not onboard where #from 0 neg #pzs or not onboard where #to 0 neg #pzs 555 if == moved space #to and not fnmatch *-dest* thismove and match moved P D N I C S BT FL G DE RV L KY PH SM VM B SS VS R DH DK CS HF SE LN Q BG RG WB and not sub isdoublemove origin dest 556 set pc moved 557 set pm elem moved promote 558 askpromote #pm #pc 559 elseif != moved space dest and != elem moved promote space dest 560 set np space #to 561 die "You may not promote a" moved "to a" #np 562 endif 563 endif 564 set legal true 565 return true 566 endsub 567 sub preauto1 568 store 569 endsub 570 sub preauto2 571 store 572 endsub 573 sub postauto1 574 set mvs explode chr 59 thismove 575 restore 576 set i 0 577 set firstpart true 578 set firstcapture false 579 eval join "MOVE: " trim elem var i mvs 580 if match old #bpieces 581 die You may not capture your own pieces. 582 endif 583 set ori origin 584 set dst dest 585 if not sub isdoublemove origin dest and sub bpromotion #ori dest 586 inc i 587 if < var i count var mvs 588 set ori2 origin 589 set dst2 dest 590 eval join "MOVE: " trim elem var i mvs 591 if != var dst2 dest or != var ori2 origin or == pass trim elem var i mvs 592 die Only a promotion can immediately follow a promotable piece moving to or from the promotion zone. 593 endif 594 endif 595 endif 596 set legal false 597 switch moved 598 case p +p d +d n +n i +i c +c s +s bt +bt fl +fl g +g de +de rv +rv l +l ky +ky ph +ph sm +sm vm +vm b +b ss +ss vs +vs r +r dh +dh dk +dk cs +cs hf +hf se +se ln +ln q +q bg +bg rg +rg wb +wb fe lh vg gg fd k 599 gosub bpromote #ori dest 600 break 601 default 602 die You may not move a moved 603 endswitch 604 if not var legal 605 die You may not move a moved from origin to dest 606 elseif match moved +cs and fn k origin dest 607 empty dest 608 add moved origin 609 endif 610 if capture 611 set firstcapture true 612 endif 613 if var firstpart and sub isdoublemove origin dest 614 inc i 615 do while < var i count var mvs 616 set firstpart false 617 set mv trim elem var i mvs 618 if == var mv pass 619 if not sub isdoublemove origin dest and sub bpromotion #ori dest 620 inc i 621 if < var i count var mvs 622 set ori2 origin 623 set dst2 dest 624 eval join "MOVE: " trim elem var i mvs 625 if != var dst2 dest or != var ori2 origin 626 die Only a promotion can immediately follow a promotable piece moving to or from the promotion zone. 627 endif 628 endif 629 endif 630 gosub bpromote #ori dest 631 break 632 endif 633 eval join "MOVE: " var mv 634 if match old #bpieces 635 die You may not capture your own pieces. 636 elseif != var dst origin 637 die You may not move more than one piece per turn. 638 endif 639 if not sub isdoublemove origin dest and sub bpromotion #ori dest 640 inc i 641 if < var i count var mvs 642 set ori2 origin 643 set dst2 dest 644 eval join "MOVE: " trim elem var i mvs 645 if != var dst2 dest or != var ori2 origin 646 die Only a promotion can immediately follow a promotable piece moving to or from the promotion zone. 647 endif 648 endif 649 endif 650 set legal false 651 switch moved 652 case hf +dh se +dk ln +ky fe +q lh +ln vg +bg fd +wb +cs 653 gosub bpromote #ori dest 654 break 655 default 656 die You may not move a moved 657 endswitch 658 if not var legal 659 die You may not move a moved from origin to dest 660 elseif match moved fd +wb +cs and fn k origin dest and capture 661 empty dest 662 add moved origin 663 endif 664 loop never 665 endif 666 if != #ori dest 667 set bskips 0 668 elseif != space dest moved 669 set bskips 0 670 elseif var firstcapture 671 set bskips 0 672 else 673 inc bskips 674 endif 675 inc i 676 if < var i count var mvs 677 die Too many moves. 678 endif 679 set posvar join "b" join fencode boardflags 680 inc #posvar 681 endsub 682 sub postauto2 683 set mvs explode chr 59 thismove 684 restore 685 set i 0 686 set firstpart true 687 set firstcapture false 688 eval join "MOVE: " trim elem var i mvs 689 if match old #wpieces 690 die You may not capture your own pieces. 691 endif 692 set ori origin 693 set dst dest 694 if not sub isdoublemove origin dest and sub wpromotion #ori dest 695 inc i 696 if < var i count var mvs 697 set ori2 origin 698 set dst2 dest 699 eval join "MOVE: " trim elem var i mvs 700 if != var dst2 dest or != var ori2 origin or == pass trim elem var i mvs 701 die Only a promotion can immediately follow a promotable piece moving to or from the promotion zone. 702 endif 703 endif 704 endif 705 set legal false 706 switch moved 707 case P +P D +D N +N I +I C +C S +S BT +BT FL +FL G +G DE +DE RV +RV L +L KY +KY PH +PH SM +SM VM +VM B +B SS +SS VS +VS R +R DH +DH DK +DK CS +CS HF +HF SE +SE LN +LN Q +Q BG +BG RG +RG WB +WB FE LH VG GG FD K 708 gosub wpromote #ori dest 709 break 710 default 711 die You may not move a moved 712 endswitch 713 if not var legal 714 die You may not move a moved from origin to dest 715 elseif match moved +CS and fn K origin dest 716 empty dest 717 add moved origin 718 endif 719 if capture 720 set firstcapture true 721 endif 722 if var firstpart and sub isdoublemove origin dest 723 inc i 724 do while < var i count var mvs 725 set firstpart false 726 set mv trim elem var i mvs 727 if == var mv pass 728 if not sub isdoublemove origin dest and sub wpromotion #ori dest 729 inc i 730 if < var i count var mvs 731 set ori2 origin 732 set dst2 dest 733 eval join "MOVE: " trim elem var i mvs 734 if != var dst2 dest or != var ori2 origin 735 die Only a promotion can immediately follow a promotable piece moving to or from the promotion zone. 736 endif 737 endif 738 endif 739 gosub wpromote #ori dest 740 break 741 endif 742 eval join "MOVE: " var mv 743 if match old #wpieces 744 die You may not capture your own pieces. 745 elseif != var dst origin 746 die You may not move more than one piece per turn. 747 endif 748 if not sub isdoublemove origin dest and sub wpromotion #ori dest 749 inc i 750 if < var i count var mvs 751 set ori2 origin 752 set dst2 dest 753 eval join "MOVE: " trim elem var i mvs 754 if != var dst2 dest or != var ori2 origin 755 die Only a promotion can immediately follow a promotable piece moving to or from the promotion zone. 756 endif 757 endif 758 endif 759 set legal false 760 switch moved 761 case HF +DH SE +DK LN +KY FE +Q LH +LN VG +BG FD +WB +CS 762 gosub wpromote #ori dest 763 break 764 default 765 die You may not move a moved 766 endswitch 767 if not var legal 768 die You may not move a moved from origin to dest 769 elseif match moved FD +WB +CS and fn K origin dest and capture 770 empty dest 771 add moved origin 772 endif 773 loop never 774 endif 775 if != #ori dest 776 set wskips 0 777 elseif != space dest moved 778 set wskips 0 779 elseif var firstcapture 780 set wskips 0 781 else 782 inc wskips 783 endif 784 inc i 785 if < var i count var mvs 786 die Too many moves. 787 endif 788 set posvar join "w" join fencode boardflags 789 inc #posvar 790 endsub 791 preauto1 792 moveindex 0 793 MOVE: d 12k-12j 794 postauto1 795 preauto2 796 moveindex 1 797 MOVE: D 12f-12g 798 postauto2 799 preauto1 800 moveindex 2 801 MOVE: d 5k-5j 802 postauto1 803 preauto2 804 moveindex 3 805 MOVE: P 12e-12f 806 postauto2 807 preauto1 808 moveindex 4 809 MOVE: p 12l-12k 810 postauto1 811 preauto2 812 moveindex 5 813 MOVE: BG 11d-14g 814 postauto2 815 preauto1 816 moveindex 6 817 MOVE: vh 8m-14g 818 postauto1 819 preauto2 820 moveindex 7 821 MOVE: FD 10c-14g 822 postauto2 823 preauto1 824 moveindex 8 825 MOVE: p 9l-9k 826 postauto1 827 preauto2 828 moveindex 9 829 MOVE: FD 14g-11d 830 postauto2 831 preauto1 832 moveindex 10 833 MOVE: bg 11m-14j 834 postauto1 835 preauto2 836 moveindex 11 837 MOVE: D 5f-5g 838 postauto2 839 preauto1 840 moveindex 12 841 MOVE: bg 14j-7c 842 MOVE: +bg-dest 843 postauto1 844 preauto2 845 moveindex 13 846 MOVE: GG 8b-7c 847 postauto2 848 preauto1 849 moveindex 14 850 MOVE: rg 10m-11m 851 postauto1 852 preauto2 853 moveindex 15 854 MOVE: FD 11d-12e 855 MOVE: pass 856 postauto2 857 preauto1 858 moveindex 16 859 MOVE: rg 11m-10m 860 postauto1 861 preauto2 862 moveindex 17 863 MOVE: P 5e-5f 864 postauto2 865 preauto1 866 moveindex 18 867 MOVE: hf 13m-13k 868 postauto1 869 preauto2 870 moveindex 19 871 MOVE: P 6e-6f 872 postauto2 873 preauto1 874 moveindex 20 875 MOVE: vh 9m-9l 876 postauto1 877 preauto2 878 moveindex 21 879 MOVE: BG 6d-3g 880 postauto2 881 preauto1 882 moveindex 22 883 MOVE: fd 10n-12l 884 postauto1 885 preauto2 886 moveindex 23 887 MOVE: P 10e-10f 888 postauto2 889 preauto1 890 moveindex 24 891 MOVE: p 8l-8k 892 postauto1 893 preauto2 894 moveindex 25 895 MOVE: P 8e-8f 896 postauto2 897 preauto1 898 moveindex 26 899 MOVE: p 7l-7k 900 postauto1 901 preauto2 902 moveindex 27 903 MOVE: P 9e-9f 904 postauto2 905 preauto1 906 moveindex 28 907 MOVE: fd 12l-9m 908 postauto1 909 preauto2 910 moveindex 29 911 MOVE: BG 3g-9m 912 MOVE: +BG-dest 913 postauto2 914 preauto1 915 moveindex 30 916 MOVE: fd 7n-9m 917 postauto1 918 preauto2 919 moveindex 31 920 MOVE: RG 10d-10e 921 postauto2 922 preauto1 923 moveindex 32 924 MOVE: hf 13k-12l 925 postauto1 926 preauto2 927 moveindex 33 928 MOVE: RG 10e-9e 929 postauto2 930 preauto1 931 moveindex 34 932 MOVE: rg 7m-8m 933 postauto1 934 preauto2 935 moveindex 35 936 MOVE: RG 9e-8e 937 postauto2 938 preauto1 939 moveindex 36 940 MOVE: bg 6m-7n 941 postauto1 942 preauto2 943 moveindex 37 944 MOVE: P 7e-7f 945 postauto2 946 preauto1 947 moveindex 38 948 MOVE: fd 9m-10n 949 MOVE: pass 950 postauto1 951 preauto2 952 moveindex 39 953 MOVE: P 8f-8g 954 postauto2 955 preauto1 956 moveindex 40 957 MOVE: rg 10m-9m 958 postauto1 959 preauto2 960 moveindex 41 961 MOVE: WB 11c-9e 962 postauto2 963 preauto1 964 moveindex 42 965 MOVE: d 5j-4k 966 postauto1 967 preauto2 968 moveindex 43 969 MOVE: P 7f-7g 970 postauto2 971 preauto1 972 moveindex 44 973 MOVE: p 10l-10k 974 postauto1 975 preauto2 976 moveindex 45 977 MOVE: SE 5d-6e 978 MOVE: pass 979 postauto2 980 preauto1 981 moveindex 46 982 MOVE: p 6l-6k 983 postauto1 984 preauto2 985 moveindex 47 986 MOVE: WB 6c-6d 987 postauto2 988 preauto1 989 moveindex 48 990 MOVE: p 5l-5k 991 postauto1 992 preauto2 993 moveindex 49 994 MOVE: P 11e-11f 995 postauto2 996 preauto1 997 moveindex 50 998 MOVE: bg 7n-5l 999 postauto1 1000 preauto2 1001 moveindex 51 1002 MOVE: FD 12e-14h 1003 postauto2 1004 preauto1 1005 moveindex 52 1006 MOVE: vh 9l-10l 1007 postauto1 1008 preauto2 1009 moveindex 53 1010 MOVE: FD 14h-12i 1011 MOVE: FD 12i-12j 1012 postauto2 1013 preauto1 1014 moveindex 54 1015 MOVE: vh 10l-7l 1016 postauto1 1017 preauto2 1018 moveindex 55 1019 MOVE: FD 12i-13j 1020 MOVE: FD 13j-12k 1021 postauto2 1022 preauto1 1023 moveindex 56 1024 MOVE: hf 12l-13m 1025 postauto1 1026 preauto2 1027 moveindex 57 1028 MOVE: FD 13j-16k 1029 MOVE: FD 16k-16l 1030 postauto2 1031 preauto1 1032 moveindex 58 1033 MOVE: d 4k-4j 1034 postauto1 1035 preauto2 1036 moveindex 59 1037 MOVE: FD 16k-13h 1038 postauto2 1039 preauto1 1040 moveindex 60 1041 MOVE: bg 5l-1h 1042 postauto1 1043 preauto2 1044 moveindex 61 1045 MOVE: KY 5b-6c 1046 postauto2 1047 preauto1 1048 moveindex 62 1049 MOVE: vh 7l-9l 1050 postauto1 1051 preauto2 1052 moveindex 63 1053 MOVE: FD 13h-16k 1054 MOVE: FD 16k-15l 1055 postauto2 1056 preauto1 1057 moveindex 64 1058 MOVE: bg 1h-3j 1059 postauto1 1060 preauto2 1061 moveindex 65 1062 MOVE: VH 9d-11d 1063 postauto2 1064 preauto1 1065 moveindex 66 1066 MOVE: bg 3j-4k 1067 postauto1 1068 preauto2 1069 moveindex 67 1070 MOVE: VH 11d-14g 1071 postauto2 1072 preauto1 1073 moveindex 68 1074 MOVE: vh 9l-6l 1075 postauto1 1076 preauto2 1077 moveindex 69 1078 MOVE: FD 16k-13h 1079 postauto2 1080 preauto1 1081 moveindex 70 1082 MOVE: bg 4k-7n 1083 postauto1 1084 preauto2 1085 moveindex 71 1086 MOVE: FD 13h-14f 1087 postauto2 1088 preauto1 1089 moveindex 72 1090 MOVE: bg 7n-14g 1091 postauto1 1092 preauto2 1093 moveindex 73 1094 MOVE: FD 14f-14g 1095 MOVE: FD 14g-14f 1096 postauto2 1097 preauto1 1098 moveindex 74 1099 MOVE: vh 6l-7m 1100 postauto1 1101 preauto2 1102 moveindex 75 1103 MOVE: FD 14f-12e 1104 postauto2 1105 preauto1 1106 moveindex 76 1107 MOVE: vh 7m-6l 1108 postauto1 1109 preauto2 1110 moveindex 77 1111 MOVE: RG 7d-7f 1112 postauto2 1113 preauto1 1114 moveindex 78 1115 MOVE: vh 6l-5l 1116 postauto1 1117 preauto2 1118 moveindex 79 1119 MOVE: FD 12e-13f 1120 MOVE: pass 1121 postauto2 1122 preauto1 1123 moveindex 80 1124 MOVE: vh 5l-2i 1125 postauto1 1126 preauto2 1127 moveindex 81 1128 MOVE: KY 6c-7d 1129 postauto2 1130 preauto1 1131 moveindex 82 1132 MOVE: vh 2i-6m 1133 postauto1 1134 preauto2 1135 moveindex 83 1136 MOVE: FD 13f-14f 1137 MOVE: pass 1138 postauto2 1139 preauto1 1140 moveindex 84 1141 MOVE: rg 8m-8l 1142 postauto1 1143 preauto2 1144 moveindex 85 1145 MOVE: RG 8e-8l 1146 MOVE: +RG-dest 1147 postauto2 1148 preauto1 1149 moveindex 86 1150 MOVE: fd 10n-8l 1151 postauto1 1152 preauto2 1153 moveindex 87 1154 MOVE: RG 7f-8f 1155 postauto2 1156 preauto1 1157 moveindex 88 1158 MOVE: fd 8l-7l 1159 MOVE: pass 1160 postauto1 1161 preauto2 1162 moveindex 89 1163 MOVE: KY 7d-8e 1164 postauto2 1165 preauto1 1166 moveindex 90 1167 MOVE: rg 9m-8m 1168 postauto1 1169 preauto2 1170 moveindex 91 1171 MOVE: GG 7c-7l 1172 postauto2 1173 preauto1 1174 moveindex 92 1175 MOVE: vh 6m-7l 1176 postauto1 1177 preauto2 1178 moveindex 93 1179 MOVE: FD 14f-13i 1180 postauto2 1181 preauto1 1182 moveindex 94 1183 MOVE: fe 8n-13i 1184 postauto1 1185 preauto2 1186 moveindex 95 1187 MOVE: P 10f-10g 1188 postauto2 1189 preauto1 1190 moveindex 96 1191 MOVE: fe 13i-9m 1192 postauto1 1193 preauto2 1194 moveindex 97 1195 MOVE: VH 8d-11d 1196 postauto2 1197 preauto1 1198 moveindex 98 1199 MOVE: rg 8m-8f 1200 postauto1 1201 preauto2 1202 moveindex 99 1203 MOVE: WB 6d-8f 1204 postauto2 1205 preauto1 1206 moveindex 100 1207 MOVE: vh 7l-5l 1208 postauto1 1209 preauto2 1210 moveindex 101 1211 MOVE: Q 10b-10c 1212 postauto2 1213 preauto1 1214 moveindex 102 1215 MOVE: vh 5l-1h 1216 postauto1 1217 preauto2 1218 moveindex 103 1219 MOVE: DH 4c-5d 1220 postauto2 1221 preauto1 1222 moveindex 104 1223 MOVE: vh 1h-2i 1224 postauto1 1225 preauto2 1226 moveindex 105 1227 MOVE: KY 8e-7d 1228 postauto2 1229 preauto1 1230 moveindex 106 1231 MOVE: gg 9o-8n 1232 postauto1 1233 preauto2 1234 moveindex 107 1235 MOVE: VH 11d-15h 1236 postauto2 1237 preauto1 1238 moveindex 108 1239 MOVE: se 12m-12k 1240 postauto1 1241 preauto2 1242 moveindex 109 1243 MOVE: VH 15h-9n 1244 MOVE: +VH-dest 1245 postauto2 1246 preauto1 1247 moveindex 110 1248 MOVE: vg 8o-9n 1249 postauto1 1250 preauto2 1251 moveindex 111 1252 MOVE: P 4e-4f 1253 postauto2 1254 preauto1 1255 moveindex 112 1256 MOVE: vg 9n-11k 1257 postauto1 1258 preauto2 1259 moveindex 113 1260 MOVE: HF 13d-13f 1261 postauto2 1262 preauto1 1263 moveindex 114 1264 MOVE: vh 2i-2j 1265 postauto1 1266 preauto2 1267 moveindex 115 1268 MOVE: FE 9c-10d 1269 MOVE: pass 1270 postauto2 1271 preauto1 1272 moveindex 116 1273 MOVE: gg 8n-10n 1274 postauto1 1275 preauto2 1276 moveindex 117 1277 MOVE: HF 13f-16f 1278 postauto2 1279 preauto1 1280 moveindex 118 1281 MOVE: se 12k-12j 1282 postauto1 1283 preauto2 1284 moveindex 119 1285 MOVE: WB 8f-12j 1286 postauto2 1287 preauto1 1288 moveindex 120 1289 MOVE: dk 12n-12j 1290 postauto1 1291 preauto2 1292 moveindex 121 1293 MOVE: SE 12d-14f 1294 postauto2 1295 preauto1 1296 moveindex 122 1297 MOVE: vh 2j-3k 1298 postauto1 1299 preauto2 1300 moveindex 123 1301 MOVE: FE 10d-13d 1302 postauto2 1303 preauto1 1304 moveindex 124 1305 MOVE: se 5m-5l 1306 postauto1 1307 preauto2 1308 moveindex 125 1309 MOVE: DH 13c-8h 1310 postauto2 1311 preauto1 1312 moveindex 126 1313 MOVE: vg 11k-13h 1314 postauto1 1315 preauto2 1316 moveindex 127 1317 MOVE: Q 10c-10e 1318 postauto2 1319 preauto1 1320 moveindex 128 1321 MOVE: cs 13o-10l 1322 postauto1 1323 preauto2 1324 moveindex 129 1325 MOVE: HF 16f-15f 1326 postauto2 1327 preauto1 1328 moveindex 130 1329 MOVE: vg 13h-12k 1330 postauto1 1331 preauto2 1332 moveindex 131 1333 MOVE: VD 14b-11e 1334 postauto2 1335 preauto1 1336 moveindex 132 1337 MOVE: vd 14o-13o 1338 postauto1 1339 preauto2 1340 moveindex 133 1341 MOVE: HF 15f-15h 1342 postauto2 1343 preauto1 1344 moveindex 134 1345 MOVE: vg 12k-12l 1346 MOVE: pass 1347 postauto1 1348 preauto2 1349 moveindex 135 1350 MOVE: DH 8h-12l 1351 MOVE: +DH-dest 1352 postauto2 1353 preauto1 1354 moveindex 136 1355 MOVE: hf 13m-12l 1356 postauto1 1357 preauto2 1358 moveindex 137 1359 MOVE: FE 13d-12e 1360 MOVE: FE 12e-13f 1361 postauto2 1362 preauto1 1363 moveindex 138 1364 MOVE: gg 10n-8n 1365 postauto1 1366 preauto2 1367 moveindex 139 1368 MOVE: SE 6e-8e 1369 postauto2 1370 preauto1 1371 moveindex 140 1372 MOVE: vh 3k-3h 1373 postauto1 1374 preauto2 1375 moveindex 141 1376 MOVE: DH 5d-6e 1377 postauto2 1378 preauto1 1379 moveindex 142 1380 MOVE: p 5k-5j 1381 postauto1 1382 preauto2 1383 moveindex 143 1384 MOVE: DK 5c-7c 1385 postauto2 1386 preauto1 1387 moveindex 144 1388 MOVE: dh 4n-6l 1389 postauto1 1390 preauto2 1391 moveindex 145 1392 MOVE: HF 15h-3h 1393 postauto2 1394 preauto1 1395 moveindex 146 1396 MOVE: vd 3o-5m 1397 postauto1 1398 preauto2 1399 moveindex 147 1400 MOVE: VD 3b-5d 1401 postauto2 1402 preauto1 1403 moveindex 148 1404 MOVE: vd 13o-13f 1405 postauto1 1406 preauto2 1407 moveindex 149 1408 MOVE: VG 9b-13f 1409 postauto2 1410 preauto1 1411 moveindex 150 1412 MOVE: gg 8n-7m 1413 postauto1 1414 preauto2 1415 moveindex 151 1416 MOVE: CS 4b-8f 1417 postauto2 1418 preauto1 1419 moveindex 152 1420 MOVE: gg 7m-7l 1421 postauto1 1422 preauto2 1423 moveindex 153 1424 MOVE: HF 3h-11h 1425 postauto2 1426 preauto1 1427 moveindex 154 1428 MOVE: resign 1429 postauto1 1430 preauto2 1431 if >= #bskips 1 and >= #wskips 1 1432 die You may not skip a turn when the immediately preceding turn was skipped by the opponent. 1433 endif 1434 if not findpiece K spaces and not findpiece +DE spaces 1435 say All Royals Captured! Black has won! 1436 won 1437 endif 1438 set posvar join "b" join fencode boardflags 1439 if >= var #posvar 4 and < #bskips 2 1440 say Four Times Repetition! Drawn Game! 1441 drawn 1442 endif 1443 if var firstpart and sub isdoublemove origin dest and match moved hf +dh se +dk ln +ky fe +q lh +ln vg +bg fd +wb +cs 1444 remind "Enter second leg of move or write 'pass' in the Moves field" 1445 gosub legalmoves2 king 1446 continuemove 1447 elseif sub stalemated KING 1448 endif 1449 end 1450