Please report any bugs or errors to H.G. Muller

Syntax Error on line 983

h1 f1 d1 b1 g1 e1 c1 a1 is not a valid expression, because h1 is not a recognized piece, coordinate, command, or subroutine.

Edit the Settings File for Cetran Chess 2

For the sake of debugging, here is the full GAME Code program that this error occurred in. The lines have been properly indented to help you spot scope errors.

   0 include /membergraphics/MSgame-code-generation/betza.txt
   1 set legdefs
(0
1  1  0  1     1
1  1  1  1     2
1  1 -1  1     2
1  1  0  2   16577
1  1  1  1     4
1  1 -1  1     4
0
1  1  0 -1     1
1  1 -1 -1     2
1  1  1 -1     2
1  1  0 -2   16577
1  1 -1 -1     4
1  1  1 -1     4
0
1  1  1  2     3
1  1  2  1     3
1  1  2 -1     3
1  1  1 -2     3
1  1 -1 -2     3
1  1 -2 -1     3
1  1 -2  1     3
1  1 -1  2     3
0
1 99  0  1     3
1 99  1  0     3
1 99  0 -1     3
1 99 -1  0     3
0
1 99  0  1     3
1 99  1  1     3
1 99  1  0     3
1 99  1 -1     3
1 99  0 -1     3
1 99 -1 -1     3
1 99 -1  0     3
1 99 -1  1     3
0
1  1  0  1     3
1  1  1  1     3
1  1  1  0     3
1  1  1 -1     3
1  1  0 -1     3
1  1 -1 -1     3
1  1 -1  0     3
1  1 -1  1     3
0
1 99  1  1     3
1 99  1 -1     3
1 99 -1 -1     3
1 99 -1  1     3
1  1  1  2     3
1  1  2  1     3
1  1  2 -1     3
1  1  1 -2     3
1  1 -1 -2     3
1  1 -2 -1     3
1  1 -2  1     3
1  1 -1  2     3
0
1 99  0  1     3
1 99  1  0     3
1 99  0 -1     3
1 99 -1  0     3
1  1  1  2     3
1  1  2  1     3
1  1  2 -1     3
1  1  1 -2     3
1  1 -1 -2     3
1  1 -2 -1     3
1  1 -2  1     3
1  1 -1  2     3
0
1 99  1  1     3
1 99  1 -1     3
1 99 -1 -1     3
1 99 -1  1     3
1  1  0  1     3
1  1  1  0     3
1  1  0 -1     3
1  1 -1  0     3
0
2 99  0  1     1
99  1  1   32771
2 99  1  1     1
99  1  0   32771
2 99  1  0     1
99  1 -1   32771
2 99  1 -1     1
99  0 -1   32771
2 99  0 -1     1
99 -1 -1   32771
2 99 -1 -1     1
99 -1  0   32771
2 99 -1  0     1
99 -1  1   32771
2 99 -1  1     1
99  0  1   32771
2 99  0  1     1
99  1 -1   32771
2 99  1  1     1
99  0 -1   32771
2 99  1  0     1
99 -1 -1   32771
2 99  1 -1     1
99 -1  0   32771
2 99  0 -1     1
99 -1  1   32771
2 99 -1 -1     1
99  0  1   32771
2 99 -1  0     1
99  1  1   32771
2 99 -1  1     1
99  1  0   32771
2 99  0  1     1
99 -1 -1   32771
2 99  1  1     1
99 -1  0   32771
2 99  1  0     1
99 -1  1   32771
2 99  1 -1     1
99  0  1   32771
2 99  0 -1     1
99  1  1   32771
2 99 -1 -1     1
99  1  0   32771
2 99 -1  0     1
99  1 -1   32771
2 99 -1  1     1
99  0 -1   32771
2 99  0  1     1
99 -1  1   32771
2 99  1  1     1
99  0  1   32771
2 99  1  0     1
99  1  1   32771
2 99  1 -1     1
99  1  0   32771
2 99  0 -1     1
99  1 -1   32771
2 99 -1 -1     1
99  0 -1   32771
2 99 -1  0     1
99 -1 -1   32771
2 99 -1  1     1
99 -1  0   32771
0)
   2 def P cond #0 1 16
   3 def p cond #0 32 47
   4 def N cond #0 63 0
   5 def n cond #0 63 0
   6 def R cond #0 104 0
   7 def r cond #0 104 0
   8 def Q cond #0 125 0
   9 def q cond #0 125 0
  10 def K cond #0 166 0
  11 def k cond #0 166 0
  12 def A cond #0 207 0
  13 def a cond #0 207 0
  14 def C cond #0 268 0
  15 def c cond #0 268 0
  16 def H cond #0 329 0
  17 def h cond #0 329 0
  18 def S cond #0 370 0
  19 def s cond #0 370 0
  20 set extinction 1
  21 set promotables (P p)
  22 set supply (N n R r Q q A a C c H h S s)
  23 set promotab (
(n r q a c h s)
0
0
0
0
0
0
(N R Q A C H S)
)
  24 include /membergraphics/MSplay-test-applet-for-chess-variants/shuffle.txt
  25 set shufflespecs (
(N R Q K A C H S)
0
0
(n r q k a c h s)
0
0
)
  26 gosub ShuffleSetup
  27 set mypieces assoc
P "wpawn.gif" p "bpawn.gif"
N "wknight.gif" n "bknight.gif"
R "wrook.gif" r "brook.gif"
Q "wqueen.gif" q "bqueen.gif"
K "wking.gif" k "bking.gif"
A "wcardinal.gif" a "bcardinal.gif"
C "wchancellor.gif" c "bchancellor.gif"
H "wpromotedbishop.gif" h "bpromotedbishop.gif"
S "../alfaeriemisc/lavallee/wsissa2.gif" s
"../alfaeriemisc/lavallee/bsissa2.gif"
  28 setsystem dir "/graphics.dir/alfaerie/"
  29 setsystem pieces #mypieces
  30 setsystem flipped #mypieces
  31 sub postauto1
  32   gosub HandleMove false
  33 endsub
  34 sub postauto2
  35   gosub HandleMove true
  36 endsub
  37 gosub GameEnd true
  38 end
  39 
  40 lib /membergraphics/MSgame-code-generation/betza.txt
  41 if == thismove null
  42   say This rule-enforcing preset was created through the Play-Test Applet
  43 endif
  44 echo Please report any bugs or errors to H.G. Muller
  45 setsystem maxmove 4
  46 setsystem omitmoves 1
  47 ban commands
  48 allow pass 2 pass 3
  49 set pseudo 0
  50 set zonal 0
  51 set repeats 3
  52 set reploses 0
  53 set rulemoves 100
  54 set resetpieces (P p)
  55 set staledraw 1
  56 set checkrule 1
  57 set extinction 0
  58 set nullban 1
  59 set wroyal (K)
  60 set broyal (k)
  61 set iron array
  62 set protected array
  63 set restricted array
  64 set counterstrike array
  65 set negligible array
  66 set opaque array
  67 set brouhaha array
  68 set imitators array
  69 set inducers array
  70 set shooters array
  71 set morphers array
  72 set promotables array
  73 set inocheck (K k)
  74 set conversion array
  75 set method 1
  76 set dropdown 1
  77 set crappy 0
  78 set cap array
  79 set tempiron array
  80 set epsqrs 0
  81 set strike 0
  82 set traded 0
  83 set nopvc 0
  84 set toimitate p
  85 set lastfen 0
  86 set epmask 4
  87 set many ep 0 suicide 0 freedrop 0
  88 set converted 0
  89 set hist . "zzz," fencode
  90 def friends cond #0 (onlylower) (onlyupper)
  91 sub FastCastle start dx dy
  92   verify not flag #start
  93   my k r sqr cornr rook
  94   set r ray #start #dx #dy
  95   set k dec count #r
  96   set cornr elem #k #r
  97   set rook space #cornr
  98   verify != @ #rook and not flag #cornr
  99   do while #k
 100     dec k
 101     set sqr elem #k #r
 102     if == @ space #sqr
 103       if == 0 #k
 104         set realto #sqr
 105         set sqr #cornr
 106       endif
 107       gosub GotMove #start #sqr #cornr #start #rook 1
 108     endif
 109   loop
 110 endsub
 111 sub Promote player piece desti
 112   my choice r across
 113   verify mln
 114   set r rank #desti
 115   set across - lastrank * 2 #r
 116   if == #player < #across 0
 117     return
 118   endif
 119   if match #piece #promotables
 120     set choice elem #r #promotab
 121     if #choice
 122       if match self #choice
 123         push choice #piece
 124       endif
 125       set cap mergeall #cap #supply
 126       set choice intersection #cap #choice
 127     endif
 128   else
 129     set choice 0
 130   endif
 131   if #promo
 132     if not #choice
 133       die "You cannot promote on this move"
 134     elseif not match #promo #choice
 135       die "You cannot promote to such a piece"
 136     endif
 137   elseif #choice and not $answered
 138     askpromote #choice
 139   endif
 140 endsub
 141 sub GotMove orisqr destsqr locustsqr dropsqr unload implied
 142   if == 2 #zonal
 143     set k space #orisqr
 144     gosub GetMorph #k #destsqr
 145     verify != barred #k
 146   endif
 147   switch #task
 148     case 1
 149     set halfhit or #halfhit and #crappy and == #orisqr #ori == #locustsqr #desti
 150     verify == #orisqr #ori and == #destsqr #desti
 151     if == 1 #zonal
 152       verify not fn BadZone #orisqr #destsqr #locustsqr #dropsqr #unload
 153     endif
 154     if != 1 #implied
 155       if #firstpart
 156         set pseudohit + #pseudohit #crappy
 157         set autolocust #locustsqr
 158         set autodrop #dropsqr
 159         set dropped #unload
 160       endif
 161       if #sideeffect
 162         verify == #sideeffect #dropsqr
or == #sideeffect #locustsqr
 163         set suicide #locustsqr
 164         set freedrop #dropsqr
 165         set dropped #unload
 166       else
 167         verify == #locustsqr #suicide
 168         verify == #dropsqr #freedrop
 169         verify == #unload #dropped or not #dropsqr
 170       endif
 171     else
 172       verify not #suicide and not #freedrop
 173       if #locustsqr
 174         capture #locustsqr
 175         set imp 1
 176       endif
 177       set impliedkill #locustsqr
 178       set implieddrop #dropsqr
 179       set dropped #unload
 180     endif
 181     set neweps #eps
 182     set ep #destsqr
 183     set ok 1
 184     set desc #mv
 185     break
 186     case 2
 187     if == 1 #zonal
 188       verify not fn BadZone #orisqr #destsqr #locustsqr #dropsqr #unload
 189     endif
 190     if #locustsqr or #dropsqr and #dropdown and not #implied
 191       set m . space #orisqr . ws . #orisqr . chr 45 . #destsqr . chr 59 ws
 192       if #locustsqr
 193         set m . #m . "@-" #locustsqr
 194       elseif #dropsqr
 195         set m . #m . #unload . chr 45 #dropsqr
 196       endif
 197       push xtl #m
 198     else
 199       setlegal #orisqr #destsqr
 200     endif
 201     break
 202     case 9
 203     if == #locustsqr #kpos
 204       push checks #ss
 205       push checks #mv
 206       setelem #locustsqr 0 1
 207     endif
 208     break
 209     case 10
 210     case 7
 211     case 3
 212     set hit cond match space #destsqr #royal #orisqr #hit
 213     if != Xdummy space #locustsqr and #locustsqr
 214       set hit cond match space #locustsqr #royal Ughh #hit
 215     endif
 216     break
 217     case 12
 218     verify count var #orisqr
 219     case 11
 220     if & 1 elem 0 var #destsqr
and == #orisqr #kpos
 221       break
 222     endif
 223     case 4
 224     case 8
 225     if == 1 #zonal
 226       verify not fn BadZone #orisqr #destsqr #locustsqr #dropsqr #unload
 227     endif
 228     my victim locustvictim
 229     set victim space #destsqr
 230     set locustvictim space #locustsqr
 231     if #locustsqr
 232       empty #locustsqr
 233     endif
 234     move #orisqr #destsqr
 235     if #dropsqr
 236       add #unload #dropsqr
 237     endif
 238     dec task
 239     set hit 0
 240     if == 10 #task
 241       if #checked
 242         gosub GenAttacks checks
 243       endif
 244       gosub GenAttacks #orisqr
 245       gosub GenAttacks #destsqr
 246       if #locustsqr
 247         gosub GenAttacks #locustsqr
 248       endif
 249       if #dropsqr
 250         gosub GenAttacks #dropsqr
 251       endif
 252     else
 253       if #threat and != #threat Ughh
 254         set checker space #threat
 255         if cond #xside islower #checker isupper #checker
 256           gosub GenMoves #checker #threat 1
 257         endif
 258       endif
 259       if not #hit
 260         gosub GenAll #xside
 261       endif
 262     endif
 263     inc task
 264     move #destsqr #orisqr
 265     if != #dropsqr #orisqr and #dropsqr
 266       empty #dropsqr
 267     endif
 268     if #locustsqr
 269       add #locustvictim #locustsqr
 270     endif
 271     add #victim #destsqr
 272     if == 4 #task
 273       set threat #hit
 274       set hit not #hit
 275     elseif #hit
 276       set hit 0
 277     elseif #locustsqr or #dropsqr and #dropdown and not #implied
 278       set m . space #orisqr . ws . #orisqr . chr 45 . #destsqr . chr 59 ws
 279       if #locustsqr
 280         if match #mover #shooters
 281           set m . #m . "@-" #locustsqr
 282         else
 283           set m . space #orisqr . ws . #orisqr . chr 45 . #locustsqr . chr 59 ws
 284           set m . #m . space #orisqr . ws . #locustsqr . chr 45 #destsqr
 285         endif
 286       elseif #dropsqr
 287         set m . #m . #unload . chr 45 #dropsqr
 288       endif
 289       push xtl #m
 290     else
 291       setlegal #orisqr #destsqr
 292     endif
 293     break
 294     case 5
 295     verify == #locustsqr #desti
 296     setlegal #locustsqr #destsqr
 297     break
 298     case 6
 299     verify == #ori #orisqr and == #desti #destsqr
 300     if #dropsqr
 301       setlegal #desti #dropsqr
 302     elseif #locustsqr
 303       setlegal #desti #locustsqr
 304     endif
 305     break
 306     case 13
 307     verify not #dropsqr and #locustsqr or not empty #destsqr
 308     set hit 1
 309     break
 310   endswitch
 311 endsub
 312 sub NextLeg togo legindex startsqr cursqr locustsqr dropsqr iso
 313   my rng dx dy mode to tosqrs k len newindex hx hy side r fratricide stopper
 314   set rng elem #legindex #legdefs
 315   set dx elem + 1 #legindex #legdefs
 316   set dy elem + 2 #legindex #legdefs
 317   set mode elem + 3 #legindex #legdefs
 318   if & 64 #mode
 319     verify not flag #startsqr
 320     if match space #startsqr #inocheck
 321       verify != #task 11 or not #checked
 322       push eps #startsqr
 323     endif
 324   endif
 325   if > 0 #rng
 326     switch #rng
 327       case -1
 328       set rng cond < 0 #dy rank #cursqr - lastrank rank #cursqr
 329       set rng - >> lastrank 1 #rng
 330       set rng max 1 #rng
 331       set eps array
 332       set mode | << 1 23 #mode
 333       break
 334       case -2
 335       gosub GenMoves #toimitate #startsqr 1
 336       return
 337       case -3
 338       gosub #mode #startsqr #dx #dy
 339       return
 340     endswitch
 341   endif
 342   set tosqrs ride #cursqr #dx #dy
 343   set r count #tosqrs
 344   if not #r
 345     if & #mode << 1 27
 346       gosub GotMove #startsqr #cursqr #locustsqr #dropsqr 0 0
 347     else
 348       return
 349     endif
 350   endif
 351   set r min #rng #r
 352   if & 128 #mode
 353     set hx >> + 8 * 5 #dx 4
 354     set hy >> + 8 * 5 #dy 4
 355     set k ride #startsqr #hx #hy
 356     set len count #k
 357     set len * #len + abs #hx abs #hy
 358     set len / #len + abs #dx abs #dy
 359     if < #len #r
 360       set r #len
 361       if == 9 #task
 362         pop k to
 363         push #to #ss
 364         push #to #mv
 365       endif
 366     endif
 367     verify #len
 368     if & << 1 14 #mode
 369       set eps array
 370       set to where #cursqr #dx #dy
 371       set k #cursqr
 372       do while != #to #k and onboard #k
 373         set k where #k #hx #hy
 374         if != #k #to
 375           push eps #k
 376         endif
 377       loop
 378     endif
 379   endif
 380   dec togo
 381   if & << 1 21 #mode
 382     set dropsqr #cursqr
 383   endif
 384   if & << 1 15 #mode
 385     verify >= #r #iso
 386     set r #iso
 387   elseif < 1 #r
 388     if & 1 #mode
 389       set k 1
 390       do while < #k #r
 391         set to elem dec #k #tosqrs
 392         if #togo
 393           set newindex + 4 #legindex
 394           gosub NextLeg #togo #newindex #startsqr #to #locustsqr #dropsqr #k
 395         else
 396           gosub GotMove #startsqr #to #locustsqr #dropsqr 0 0
 397         endif
 398         if & << 1 23 #mode
 399           push eps #to
 400         endif
 401         inc k
 402         verify not #hit
 403       loop
 404     endif
 405     if & #epmask #mode
 406       set k 1
 407       do while < #k #r
 408         set to elem dec #k #tosqrs
 409         if match #to #epsqrs
 410           if #togo
 411             set newindex + 4 #legindex
 412             gosub NextLeg #togo #newindex #startsqr #to #ep #dropsqr #k
 413           else
 414             gosub GotMove #startsqr #to #ep #dropsqr 0 1
 415           endif
 416         endif
 417         inc k
 418       loop
 419     endif
 420     if & 18 #mode and == 9 #task
 421       set k 1
 422       do while < #k #r
 423         set to elem dec #k #tosqrs
 424         if #togo
 425           push #to #ss
 426           push #to #mv
 427         endif
 428         if & 2 #mode
 429           if #togo
 430             if == #to #kpos
 431               set newindex + 4 #legindex
 432               gosub NextLeg #togo #newindex #startsqr #to #to #dropsqr #k
 433             endif
 434           else
 435             setelem #to 0 | 1 elem 0 var #to
 436             if == #to #kpos
 437               push checks #ss
 438               push checks #mv
 439             endif
 440           endif
 441         endif
 442         inc k
 443       loop
 444     endif
 445   endif
 446   set len cond == 1 #rng #iso #r
 447   set to elem dec #r #tosqrs
 448   if == 9 #task
 449     if cond empty #to
(& 18 #mode and #togo)
(not & << 1 15 #mode and
!= #r #rng and
or & 2 #mode #togo or
and & 1 #mode
#togo)
 450       push #to #ss
 451       push #to #mv
 452     endif
 453     if & + 2 << 1 13 #mode and == #to #kpos
 454       if #togo
 455         set newindex + 4 #legindex
 456         gosub NextLeg #togo #newindex #startsqr #to #to #dropsqr #len
 457       else
 458         push checks #ss
 459         push checks #mv
 460       endif
 461     endif
 462     if & 2 #mode and not #togo
 463       setelem #to 0 | 1 elem 0 var #to
 464     endif
 465   endif
 466   if match #to #epsqrs and & #epmask #mode
 467     if #togo
 468       set newindex + 4 #legindex
 469       gosub NextLeg #togo #newindex #startsqr #to #ep #dropsqr #len
 470     else
 471       gosub GotMove #startsqr #to #ep 0 0 1
 472     endif
 473   endif
 474   set stopper cond != #to #startsqr space #to @
 475   if == @ #stopper
 476     verify & 1 #mode
 477   else
 478     if & 16 #mode
 479       if not match #stopper #opaque or
not match space #startsqr #opaque
 480         set newindex + 4 #legindex
 481         gosub NextLeg #togo #newindex #startsqr #to #locustsqr #dropsqr #len
 482       endif
 483     endif
 484     set side islower space #startsqr
 485     set fratricide cond #side islower #stopper isupper #stopper
 486     if #fratricide
 487       if & 8 #mode
 488         verify match #to #partners
 489         verify not flag #to
 490         set locustsqr #to
 491         set to where #startsqr elem + 5 #legindex #legdefs 0
 492         set dropsqr where #to - 0 #dx #dy
 493         set eps array
 494         set k #startsqr
 495         do while != #k #to
 496           push eps #k
 497           set k where #k #dx 0
 498         loop
 499         set realto #to
 500         gosub GotMove #startsqr #to #locustsqr #dropsqr #stopper 1
 501         return
 502       elseif & 2048 #mode
 503         if #togo
 504           set newindex + 4 #legindex
 505           gosub NextLeg #togo #newindex #to #to 0 0 #len
 506         elseif != #stopper space #startsqr
 507           gosub GenMoves #stopper #startsqr 1
 508         endif
 509       endif
 510       verify & 4096 #mode
 511     else
 512       verify match #stopper #royal and
& << 1 13 #mode or & 2 #mode
 513       verify not match #stopper #tempiron
 514     endif
 515     if #togo
 516       set locustsqr #to
 517     endif
 518   endif
 519   if #togo
 520     set newindex + 4 #legindex
 521     gosub NextLeg #togo #newindex #startsqr #to #locustsqr #dropsqr #len
 522   else
 523     gosub GotMove #startsqr #to #locustsqr #dropsqr #stopper 0
 524   endif
 525 endsub
 526 sub GenMoves piece sqr all
 527   my index legcount startindex
 528   set side islower #piece
 529   set ss #sqr
 530   set index fn #piece #all
 531   do
 532     set legcount elem #index #legdefs
 533     verify #legcount
 534     set mv #index
 535     inc index
 536     if flag #sqr or not match #piece #conversion
or not & cond #side #converted << #converted 2
+ 64 & 64 elem + 3 #index #legdefs
 537       set eps 0
 538       gosub NextLeg #legcount #index #sqr #sqr 0 0 1
 539     endif
 540     set index + #index * 4 #legcount
 541   loop until #hit
 542 endsub
 543 sub GenAttacks sqr
 544   my k n togo leg piece
 545   set k 1
 546   set n count var #sqr
 547   do while < #k #n
 548     set start elem #k var #sqr
 549     inc k
 550     set leg elem #k var #sqr
 551     inc k
 552     set piece space #start
 553     if not cond #xside
(islower #piece)
(isupper #piece)
 554       continue
 555     endif
 556     set togo elem #leg #legdefs
 557     inc leg
 558     gosub NextLeg #togo #leg #start #start 0 0 1
 559   loop
 560 endsub
 561 sub GenAll player
 562   my from piece
 563   set hit false
 564   for (from piece) fn friends #player
 565     gosub GenMoves #piece #from 1
 566     verify not #hit
 567   next
 568 endsub
 569 sub GetRoyals player
 570   my i nr type myroyal cnt
 571   set myroyal cond #player (#broyal) (#wroyal)
 572   set many i 0 nr 0 hit 0
 573   set royal array
 574   set troy array
 575   do while < #i count #myroyal
 576     set type elem #i #myroyal
 577     set cnt elem #type piececount
 578     if + 0 #cnt
 579       set nr + #nr #cnt
 580       push royal #type
 581       push troy #cnt
 582     endif
 583     inc i
 584   loop
 585   set dead count #royal and not #nr
 586   if < 1 #nr and #extinction
 587     set royal array
 588   endif
 589 endsub
 590 sub InCheck player
 591   GetRoyals #player
 592   set task 3
 593   verify count #royal
 594   if #traded
 595     add Xdummy #desti
 596     push royal Xdummy
 597   endif
 598   if count #epsqrs and
match space #ep #royal
 599     set epmask 6
 600   endif
 601   set player not #player
 602   gosub GenAll #player
 603   set epmask 4
 604   if #traded
 605     add #traded #desti
 606   endif
 607 endsub
 608 sub ParseMove player
 609   my i j parts sqrs sqr
 610   set many suicide 0 freedrop 0 promo 0 sideeffect 0
 611   set mvs explode chr 59 thismove
 612   set parts explode ws trim elem 0 #mvs
 613   set i count #parts
 614   if > #i 2
 615     die "move must be piece ID plus board step"
 616   endif
 617   set sqrs explode chr 45 trim elem dec #i #parts
 618   if != 2 count #sqrs
 619     if == resign thismove
 620       resign
 621     elseif == drawn thismove
 622       drawn
 623     endif
 624     die "board step does not mention two squares"
 625   endif
 626   set ori elem 0 #sqrs
 627   set desti elem 1 #sqrs
 628   if not onboard #desti
 629     set msg join #desti " is not a valid square"
 630     die #msg
 631   endif
 632   if not onboard #ori
 633     set msg join #ori " is not a valid square"
 634     die #msg
 635   endif
 636   set mover space #ori
 637   if not cond #player islower #mover isupper #mover
 638     set msg cond == @ #mover (. #ori " is empty")
("you cannot move opponent pieces")
 639     die #msg
 640   endif
 641   set firstpart 1
 642   set j 1
 643   do while < #j count #mvs
 644     set parts trim elem #j #mvs
 645     if == "pass" #parts or == "skip" #parts
 646       set firstpart 0
 647       inc j
 648       continue
 649     endif
 650     set parts explode ws trim #parts
 651     set i dec count #parts
 652     set sqrs explode chr 45 trim elem #i #parts
 653     if != 2 count #sqrs
 654       set msg join elem #i #parts " is malformed"
 655       die #msg
 656     endif
 657     set sqr elem 1 #sqrs
 658     set sqr cond == "dest" #sqr #desti #sqr
 659     if not onboard #sqr
 660       set msg join #sqr " is not a valid square"
 661       die #msg
 662     elseif onboard elem 0 #sqrs
 663       if != #desti elem 0 #sqrs
 664         die "you can only continue with same piece"
 665       endif
 666       set firstpart 0
 667       if match #mover #shooters
 668         set sideeffect #sqr
 669         return
 670       endif
 671       if #suicide
 672         die "cannot have more than one locust victim"
 673       endif
 674       set suicide #desti
 675       set desti #sqr
 676     elseif == #desti #sqr
 677       set promo elem 0 #sqrs
 678     elseif == @ elem 0 #sqrs
 679       if empty #sqr
 680         set msg . "there is nothing on " . #sqr " to capture"
 681         die #msg
 682       endif
 683       if #suicide
 684         die "cannot have more than one locust victim"
 685       endif
 686       set suicide #sqr
 687       set firstpart 0
 688     else
 689       if #freedrop
 690         die "cannot kick more than one piece"
 691       endif
 692       set dropped elem 0 #sqrs
 693       set freedrop #sqr
 694       set firstpart 0
 695     endif
 696     inc j
 697   loop
 698 endsub
 699 sub HandleMove player
 700   set stm #player
 701   gosub ParseMove #player
 702   set all == mln $maxmln
 703   set many ok 0 hit 0 task 1 halfhit 0 implieddrop 0 imp 0 neweps 0
 704   set pseudohit 0
 705   set realto 0
 706   set k #all or not flag #ori and match #mover #conversion
 707   gosub GenMoves #mover #ori #k
 708   if not match #mover #shooters
and #firstpart and #halfhit
 709     set ok 2
 710     set task 5
 711     gosub GenMoves #mover #ori 1
 712     set msg . "Enter second leg or pass"
 713     remind #msg
 714   elseif #all
 715     set cap unique keys capturedpieces
 716     set lastfen fencode
 717     if not #ok
 718       set pseudohit 0
 719       gosub GenAll #player
 720     endif
 721     if #sideeffect
 722       rewritemove . elem 0 #mvs . "; " . cond #freedrop #dropped @ . chr 45 #sideeffect
 723       set sideeffect 0
 724       gosub ParseMove #player
 725     endif
 726     if match #mover #shooters and < 1 #pseudohit
 727       set ok 2
 728       set task 6
 729       gosub GenAll #player
 730       if #hit
 731         set msg . "Type side effect of move, or pass"
 732       else
 733         set msg . "Type side effect of move"
 734       endif
 735       remind #msg
 736     elseif not #ok
 737       if == 1 #pseudohit
 738         if #autolocust
 739           appendmove join "@-" #autolocust
 740         endif
 741         if #autodrop
 742           appendmove join #dropped join chr 45 #autodrop
 743         endif
 744         gosub ParseMove #player
 745       elseif #pseudohit
 746         set msg . "Type side effects of move"
 747         remind #msg
 748         continuemove
 749         return
 750       else
 751         set msg . thismove . " is not even pseudo-legal for a " toupper #mover
 752         die #msg
 753       endif
 754     endif
 755   endif
 756   set victim cond != #desti #ori space #desti @
 757   set traded cond and or match space #suicide #negligible
not #suicide
and match #victim #protected
match #mover #restricted #mover 0
 758   set strike and match #victim #counterstrike
not match #mover #counterstrike
 759   set k 0
 760   do while < var k count var mvs
 761     eval join "MOVE: " trim elem var k var mvs
 762     inc k
 763   loop
 764   if != #ori #freedrop and match #ori #brouhaha
 765     delete #ori
 766   endif
 767   if #implieddrop
 768     add #dropped #implieddrop
 769     if == #desti #impliedkill
 770       move #desti #realto
 771     endif
 772   endif
 773   set tempiron #iron
 774   if #strike
 775     set tempiron mergeall #tempiron #counterstrike
 776   endif
 777   set toimitate flipcase cond match #mover #imitators #toimitate #mover
 778   setflag #desti
 779   set posvar join cond #player "w" "b" fencode
 780   inc #posvar
 781   inc nopvc
 782   if #imp
 783     set hist . #hist . "," mln
 784   endif
 785   if #suicide and not #freedrop or #promo
or != @ #victim or match #mover #resetpieces
 786     set nopvc 0
 787   endif
 788   set epsqrs #neweps
 789   if not flag #ori and match #mover #conversion
 790     set k + 64 & 64 elem + 4 #desc #legdefs
 791     set k cond #player #k >> #k 2
 792     if & #k #converted
 793       die This move violates the conversion rule that applies to this piece.
 794     endif
 795     set converted + #converted #k
 796   endif
 797   gosub GetMorph #mover #desti
 798   if #k
 799     add #k #desti
 800   endif
 801 endsub
 802 sub GetMorph piece sqr
 803   set k 0
 804   if match #piece #morphers
 805     set i elem #piece #morphs
 806     set j rank #sqr
 807     if not islower #piece
 808       set j - lastrank #j
 809     endif
 810     if >= #j count #i
 811       return
 812     endif
 813     set i elem #j #i
 814     if #i
 815       if == All elem 0 #i
 816         set k elem 1 #i
 817       else
 818         set k elem file #sqr #i
 819       endif
 820     endif
 821   endif
 822 endsub
 823 sub GameEnd player
 824   my side
 825   if == 2 #ok
 826     continuemove
 827     return
 828   endif
 829   set side not #player
 830   gosub GetRoyals #side
 831   if #dead
 832     set msg join cond #player "White" "Black" " lost by absence of royalty!"
 833     say #msg
 834     won
 835   elseif == #lastfen fencode and #nullban
 836     die "This is a null move!"
 837   endif
 838   gosub InCheck #player
 839   if == #hit Xdummy
 840     die "Trading of this piece is not allowed"
 841   elseif #checkrule and #hit
 842     if == #hit Ughh
 843       die "That moves through or out of check"
 844     else
 845       die "This exposes your royal piece to capture"
 846     endif
 847   endif
 848   if >= 1 count fn friends #player and #baring
 849     if >= 1 count fn friends #side
 850       say Draw by mutual baring
 851       drawn
 852     else
 853       set msg . cond #player "Black" "White" " loses by baring"
 854       say #msg
 855       lost
 856     endif
 857     return
 858   endif
 859   gosub Promote #player #mover #desti
 860   gosub GetRoyals #side
 861   if count #royal
and #checkrule
 862     set task 4
 863     set xside #player
 864     set threat 0
 865     gosub GenAll #side
 866     if not #hit
 867       if #staledraw
 868         dec task
 869         gosub GenAll #player
 870         if #hit
 871           say Checkmate!
 872           won
 873         else
 874           say Stalemate!
 875           drawn
 876         endif
 877       else
 878         say Mate!
 879         won
 880       endif
 881       return
 882     endif
 883   endif
 884   set posvar join cond #player "w" "b" fencode
 885   if >= var #posvar #repeats
 886     if #reploses
 887       set msg join cond #player "Black" "White" " loses by repetition!"
 888       say #msg
 889       lost
 890     else
 891       say "Draw by repetition!"
 892       drawn
 893     endif
 894   elseif >= #nopvc #rulemoves
 895     say "Game declared draw due to prolongued lack of progress!"
 896     drawn
 897   endif
 898   set ltst #checkrule and count #royal and not #pseudo
 899   set xtl array
 900   if == 1 #method and #ltst
 901     for sqr spaces
 902       set #sqr array 0
 903     next
 904     set task 9
 905     set king elem 0 #royal
 906     set kpos search #king $space
 907     empty #kpos
 908     set checks array 0
 909     gosub GenAll #player
 910     add #king #kpos
 911     set checked & 1 elem 0 var #kpos
 912     if #checked
 913       say "check!"
 914     endif
 915     set task 11
 916     gosub GenAll #side
 917   else
 918     set task cond #ltst 8 2
 919     gosub GenAll #side
 920   endif
 921   setjsvar impmoves #hist
 922   setsystem legalmoves merge $legalmoves #xtl
 923 endsub
 924 set posvar join "w" fencode
 925 inc #posvar
 926 endlib
 927 lib /membergraphics/MSplay-test-applet-for-chess-variants/shuffle.txt
 928 sub GetSquares toshuffle
 929   my sqr piece
 930   set left array
 931   set light array
 932   set dark array
 933   for (sqr piece) $space
 934     if match var piece #toshuffle
 935       if < * 2 file #sqr lastfile
 936         push left #sqr
 937       endif
 938       if & 1 + file #sqr rank #sqr
 939         push dark #sqr
 940       else
 941         push light #sqr
 942       endif
 943     endif
 944   next
 945 endsub
 946 sub ShuffleWings sym others
 947   my toshuffle sqr piece rsqr p s allsqrs
 948   set toshuffle mergeall #sym #others
 949   gosub GetSquares #toshuffle
 950   verify < 1 count #left
 951   set allsqrs mergeall #dark #light
 952   eval merge #left "shuffle"
 953   for sqr #left
 954     set piece space #sqr
 955     if match #piece #sym
 956       set rsqr join chr + 97 - lastfile file #sqr substr #sqr 1 0
 957       verify match #rsqr #allsqrs
 958       set p space #rsqr
 959       if != #p #piece
 960         for s #allsqrs
 961           if not match #s #left
and == #piece space #s
 962             swap #s #rsqr
 963             break
 964           endif
 965         next
 966       endif
 967     endif
 968   next
 969   gosub GetSquares #others
 970   set dark mergeall #dark #light
 971   eval merge #dark "shuffle"
 972 endsub
 973 sub ShuffleOne shaded others
 974   my toshuffle
 975   set toshuffle mergeall #shaded #others
 976   gosub GetSquares #toshuffle
 977   if count #shaded
 978     eval merge #light "shuffle"
 979     eval merge #dark "shuffle"
 980     gosub GetSquares #others
 981   endif
 982   set dark mergeall #dark #light
 983   eval merge #dark "shuffle"
 984 endsub
 985 sub CenterKing types
 986   verify count #types
 987   my mid s royal right
 988   gosub GetSquares #types
 989   set dark sort merge #dark #light
 990   set royal elem 0 #types
 991   pop dark right
 992   pop dark mid
 993   pop dark left
 994   if != #royal space #mid
 995     set s cond == #royal space #left #left #right
 996     swap #s #mid
 997   endif
 998 endsub
 999 sub Symmetrize
1000   my sqr piece
1001   for (sqr piece) onlyupper
1002     set s join substr #sqr 0 1 + - 1 rank "a1" - lastrank rank #sqr
1003     copy #sqr #s
1004     flip #s
1005   next
1006 endsub
1007 sub ShuffleOnePlayer otherset symset shadeset
1008   if count #symset
1009     gosub ShuffleWings #symset #otherset
1010   else
1011     gosub ShuffleOne #shadeset #otherset
1012   endif
1013 endsub
1014 set shaded array
1015 set symmetrized array
1016 set centralize array
1017 set blackset array
1018 set blacksym array
1019 set blackshaded array
1020 set shufflespecs 0
1021 sub ShuffleSetup
1022   if isconst startshuffle
1023     setsystem space @startshuffle
1024   else
1025     if #shufflespecs
1026       my i a b c
1027       set i 0
1028       do while < #i count #shufflespecs
1029         set a elem #i #shufflespecs
1030         if not #a
1031           gosub Symmetrize
1032           break
1033         endif
1034         set b elem inc #i #shufflespecs
1035         set c elem + 2 #i #shufflespecs
1036         if not #b
1037           set b array
1038         endif
1039         if not #c
1040           set c array
1041         endif
1042         gosub ShuffleOnePlayer #a #b #c
1043         set i + 3 #i
1044       loop
1045     else
1046       gosub ShuffleOnePlayer #shuffleset #symmetrized #shaded
1047       if count #blackset
1048         gosub ShuffleOnePlayer #blackset #blacksym #blackshaded
1049       else
1050         gosub CenterKing #centralize
1051         gosub Symmetrize
1052       endif
1053     endif
1054     setconst startshuffle $space
1055   endif
1056 endsub
1057 endlib

functions

Array ( [friends] => Array ( [0] => cond [1] => #0 [2] => Array ( [0] => onlylower ) [3] => Array ( [0] => onlyupper ) ) [P] => Array ( [0] => cond [1] => #0 [2] => 1 [3] => 16 ) [p] => Array ( [0] => cond [1] => #0 [2] => 32 [3] => 47 ) [N] => Array ( [0] => cond [1] => #0 [2] => 63 [3] => 0 ) [n] => Array ( [0] => cond [1] => #0 [2] => 63 [3] => 0 ) [R] => Array ( [0] => cond [1] => #0 [2] => 104 [3] => 0 ) [r] => Array ( [0] => cond [1] => #0 [2] => 104 [3] => 0 ) [Q] => Array ( [0] => cond [1] => #0 [2] => 125 [3] => 0 ) [q] => Array ( [0] => cond [1] => #0 [2] => 125 [3] => 0 ) [K] => Array ( [0] => cond [1] => #0 [2] => 166 [3] => 0 ) [k] => Array ( [0] => cond [1] => #0 [2] => 166 [3] => 0 ) [A] => Array ( [0] => cond [1] => #0 [2] => 207 [3] => 0 ) [a] => Array ( [0] => cond [1] => #0 [2] => 207 [3] => 0 ) [C] => Array ( [0] => cond [1] => #0 [2] => 268 [3] => 0 ) [c] => Array ( [0] => cond [1] => #0 [2] => 268 [3] => 0 ) [H] => Array ( [0] => cond [1] => #0 [2] => 329 [3] => 0 ) [h] => Array ( [0] => cond [1] => #0 [2] => 329 [3] => 0 ) [S] => Array ( [0] => cond [1] => #0 [2] => 370 [3] => 0 ) [s] => Array ( [0] => cond [1] => #0 [2] => 370 [3] => 0 ) )

uservar

Array ( [0] => Array ( [main] => Array ( [pseudo] => 0 [zonal] => 0 [repeats] => 3 [reploses] => 0 [rulemoves] => 100 [resetpieces] => Array ( [0] => P [1] => p ) [staledraw] => 1 [checkrule] => 1 [extinction] => 1 [nullban] => 1 [wroyal] => Array ( [0] => K ) [broyal] => Array ( [0] => k ) [iron] => Array ( ) [protected] => Array ( ) [restricted] => Array ( ) [counterstrike] => Array ( ) [negligible] => Array ( ) [opaque] => Array ( ) [brouhaha] => Array ( ) [imitators] => Array ( ) [inducers] => Array ( ) [shooters] => Array ( ) [morphers] => Array ( ) [promotables] => Array ( [0] => P [1] => p ) [inocheck] => Array ( [0] => K [1] => k ) [conversion] => Array ( ) [method] => 1 [dropdown] => 1 [crappy] => 0 [cap] => Array ( ) [tempiron] => Array ( ) [epsqrs] => 0 [strike] => 0 [traded] => 0 [nopvc] => 0 [toimitate] => p [lastfen] => 0 [epmask] => 4 [ep] => 0 [suicide] => 0 [freedrop] => 0 [converted] => 0 [hist] => zzz,nrqakchspppppppp32PPPPPPPPNRQAKCHS [posvar] => wnrqakchspppppppp32PPPPPPPPNRQAKCHS [wnrqakchspppppppp32PPPPPPPPNRQAKCHS] => 1 [legdefs] => Array ( [0] => 0 [1] => 1 [2] => 1 [3] => 0 [4] => 1 [5] => 1 [6] => 1 [7] => 1 [8] => 1 [9] => 1 [10] => 2 [11] => 1 [12] => 1 [13] => -1 [14] => 1 [15] => 2 [16] => 1 [17] => 1 [18] => 0 [19] => 2 [20] => 16577 [21] => 1 [22] => 1 [23] => 1 [24] => 1 [25] => 4 [26] => 1 [27] => 1 [28] => -1 [29] => 1 [30] => 4 [31] => 0 [32] => 1 [33] => 1 [34] => 0 [35] => -1 [36] => 1 [37] => 1 [38] => 1 [39] => -1 [40] => -1 [41] => 2 [42] => 1 [43] => 1 [44] => 1 [45] => -1 [46] => 2 [47] => 1 [48] => 1 [49] => 0 [50] => -2 [51] => 16577 [52] => 1 [53] => 1 [54] => -1 [55] => -1 [56] => 4 [57] => 1 [58] => 1 [59] => 1 [60] => -1 [61] => 4 [62] => 0 [63] => 1 [64] => 1 [65] => 1 [66] => 2 [67] => 3 [68] => 1 [69] => 1 [70] => 2 [71] => 1 [72] => 3 [73] => 1 [74] => 1 [75] => 2 [76] => -1 [77] => 3 [78] => 1 [79] => 1 [80] => 1 [81] => -2 [82] => 3 [83] => 1 [84] => 1 [85] => -1 [86] => -2 [87] => 3 [88] => 1 [89] => 1 [90] => -2 [91] => -1 [92] => 3 [93] => 1 [94] => 1 [95] => -2 [96] => 1 [97] => 3 [98] => 1 [99] => 1 [100] => -1 [101] => 2 [102] => 3 [103] => 0 [104] => 1 [105] => 99 [106] => 0 [107] => 1 [108] => 3 [109] => 1 [110] => 99 [111] => 1 [112] => 0 [113] => 3 [114] => 1 [115] => 99 [116] => 0 [117] => -1 [118] => 3 [119] => 1 [120] => 99 [121] => -1 [122] => 0 [123] => 3 [124] => 0 [125] => 1 [126] => 99 [127] => 0 [128] => 1 [129] => 3 [130] => 1 [131] => 99 [132] => 1 [133] => 1 [134] => 3 [135] => 1 [136] => 99 [137] => 1 [138] => 0 [139] => 3 [140] => 1 [141] => 99 [142] => 1 [143] => -1 [144] => 3 [145] => 1 [146] => 99 [147] => 0 [148] => -1 [149] => 3 [150] => 1 [151] => 99 [152] => -1 [153] => -1 [154] => 3 [155] => 1 [156] => 99 [157] => -1 [158] => 0 [159] => 3 [160] => 1 [161] => 99 [162] => -1 [163] => 1 [164] => 3 [165] => 0 [166] => 1 [167] => 1 [168] => 0 [169] => 1 [170] => 3 [171] => 1 [172] => 1 [173] => 1 [174] => 1 [175] => 3 [176] => 1 [177] => 1 [178] => 1 [179] => 0 [180] => 3 [181] => 1 [182] => 1 [183] => 1 [184] => -1 [185] => 3 [186] => 1 [187] => 1 [188] => 0 [189] => -1 [190] => 3 [191] => 1 [192] => 1 [193] => -1 [194] => -1 [195] => 3 [196] => 1 [197] => 1 [198] => -1 [199] => 0 [200] => 3 [201] => 1 [202] => 1 [203] => -1 [204] => 1 [205] => 3 [206] => 0 [207] => 1 [208] => 99 [209] => 1 [210] => 1 [211] => 3 [212] => 1 [213] => 99 [214] => 1 [215] => -1 [216] => 3 [217] => 1 [218] => 99 [219] => -1 [220] => -1 [221] => 3 [222] => 1 [223] => 99 [224] => -1 [225] => 1 [226] => 3 [227] => 1 [228] => 1 [229] => 1 [230] => 2 [231] => 3 [232] => 1 [233] => 1 [234] => 2 [235] => 1 [236] => 3 [237] => 1 [238] => 1 [239] => 2 [240] => -1 [241] => 3 [242] => 1 [243] => 1 [244] => 1 [245] => -2 [246] => 3 [247] => 1 [248] => 1 [249] => -1 [250] => -2 [251] => 3 [252] => 1 [253] => 1 [254] => -2 [255] => -1 [256] => 3 [257] => 1 [258] => 1 [259] => -2 [260] => 1 [261] => 3 [262] => 1 [263] => 1 [264] => -1 [265] => 2 [266] => 3 [267] => 0 [268] => 1 [269] => 99 [270] => 0 [271] => 1 [272] => 3 [273] => 1 [274] => 99 [275] => 1 [276] => 0 [277] => 3 [278] => 1 [279] => 99 [280] => 0 [281] => -1 [282] => 3 [283] => 1 [284] => 99 [285] => -1 [286] => 0 [287] => 3 [288] => 1 [289] => 1 [290] => 1 [291] => 2 [292] => 3 [293] => 1 [294] => 1 [295] => 2 [296] => 1 [297] => 3 [298] => 1 [299] => 1 [300] => 2 [301] => -1 [302] => 3 [303] => 1 [304] => 1 [305] => 1 [306] => -2 [307] => 3 [308] => 1 [309] => 1 [310] => -1 [311] => -2 [312] => 3 [313] => 1 [314] => 1 [315] => -2 [316] => -1 [317] => 3 [318] => 1 [319] => 1 [320] => -2 [321] => 1 [322] => 3 [323] => 1 [324] => 1 [325] => -1 [326] => 2 [327] => 3 [328] => 0 [329] => 1 [330] => 99 [331] => 1 [332] => 1 [333] => 3 [334] => 1 [335] => 99 [336] => 1 [337] => -1 [338] => 3 [339] => 1 [340] => 99 [341] => -1 [342] => -1 [343] => 3 [344] => 1 [345] => 99 [346] => -1 [347] => 1 [348] => 3 [349] => 1 [350] => 1 [351] => 0 [352] => 1 [353] => 3 [354] => 1 [355] => 1 [356] => 1 [357] => 0 [358] => 3 [359] => 1 [360] => 1 [361] => 0 [362] => -1 [363] => 3 [364] => 1 [365] => 1 [366] => -1 [367] => 0 [368] => 3 [369] => 0 [370] => 2 [371] => 99 [372] => 0 [373] => 1 [374] => 1 [375] => 99 [376] => 1 [377] => 1 [378] => 32771 [379] => 2 [380] => 99 [381] => 1 [382] => 1 [383] => 1 [384] => 99 [385] => 1 [386] => 0 [387] => 32771 [388] => 2 [389] => 99 [390] => 1 [391] => 0 [392] => 1 [393] => 99 [394] => 1 [395] => -1 [396] => 32771 [397] => 2 [398] => 99 [399] => 1 [400] => -1 [401] => 1 [402] => 99 [403] => 0 [404] => -1 [405] => 32771 [406] => 2 [407] => 99 [408] => 0 [409] => -1 [410] => 1 [411] => 99 [412] => -1 [413] => -1 [414] => 32771 [415] => 2 [416] => 99 [417] => -1 [418] => -1 [419] => 1 [420] => 99 [421] => -1 [422] => 0 [423] => 32771 [424] => 2 [425] => 99 [426] => -1 [427] => 0 [428] => 1 [429] => 99 [430] => -1 [431] => 1 [432] => 32771 [433] => 2 [434] => 99 [435] => -1 [436] => 1 [437] => 1 [438] => 99 [439] => 0 [440] => 1 [441] => 32771 [442] => 2 [443] => 99 [444] => 0 [445] => 1 [446] => 1 [447] => 99 [448] => 1 [449] => -1 [450] => 32771 [451] => 2 [452] => 99 [453] => 1 [454] => 1 [455] => 1 [456] => 99 [457] => 0 [458] => -1 [459] => 32771 [460] => 2 [461] => 99 [462] => 1 [463] => 0 [464] => 1 [465] => 99 [466] => -1 [467] => -1 [468] => 32771 [469] => 2 [470] => 99 [471] => 1 [472] => -1 [473] => 1 [474] => 99 [475] => -1 [476] => 0 [477] => 32771 [478] => 2 [479] => 99 [480] => 0 [481] => -1 [482] => 1 [483] => 99 [484] => -1 [485] => 1 [486] => 32771 [487] => 2 [488] => 99 [489] => -1 [490] => -1 [491] => 1 [492] => 99 [493] => 0 [494] => 1 [495] => 32771 [496] => 2 [497] => 99 [498] => -1 [499] => 0 [500] => 1 [501] => 99 [502] => 1 [503] => 1 [504] => 32771 [505] => 2 [506] => 99 [507] => -1 [508] => 1 [509] => 1 [510] => 99 [511] => 1 [512] => 0 [513] => 32771 [514] => 2 [515] => 99 [516] => 0 [517] => 1 [518] => 1 [519] => 99 [520] => -1 [521] => -1 [522] => 32771 [523] => 2 [524] => 99 [525] => 1 [526] => 1 [527] => 1 [528] => 99 [529] => -1 [530] => 0 [531] => 32771 [532] => 2 [533] => 99 [534] => 1 [535] => 0 [536] => 1 [537] => 99 [538] => -1 [539] => 1 [540] => 32771 [541] => 2 [542] => 99 [543] => 1 [544] => -1 [545] => 1 [546] => 99 [547] => 0 [548] => 1 [549] => 32771 [550] => 2 [551] => 99 [552] => 0 [553] => -1 [554] => 1 [555] => 99 [556] => 1 [557] => 1 [558] => 32771 [559] => 2 [560] => 99 [561] => -1 [562] => -1 [563] => 1 [564] => 99 [565] => 1 [566] => 0 [567] => 32771 [568] => 2 [569] => 99 [570] => -1 [571] => 0 [572] => 1 [573] => 99 [574] => 1 [575] => -1 [576] => 32771 [577] => 2 [578] => 99 [579] => -1 [580] => 1 [581] => 1 [582] => 99 [583] => 0 [584] => -1 [585] => 32771 [586] => 2 [587] => 99 [588] => 0 [589] => 1 [590] => 1 [591] => 99 [592] => -1 [593] => 1 [594] => 32771 [595] => 2 [596] => 99 [597] => 1 [598] => 1 [599] => 1 [600] => 99 [601] => 0 [602] => 1 [603] => 32771 [604] => 2 [605] => 99 [606] => 1 [607] => 0 [608] => 1 [609] => 99 [610] => 1 [611] => 1 [612] => 32771 [613] => 2 [614] => 99 [615] => 1 [616] => -1 [617] => 1 [618] => 99 [619] => 1 [620] => 0 [621] => 32771 [622] => 2 [623] => 99 [624] => 0 [625] => -1 [626] => 1 [627] => 99 [628] => 1 [629] => -1 [630] => 32771 [631] => 2 [632] => 99 [633] => -1 [634] => -1 [635] => 1 [636] => 99 [637] => 0 [638] => -1 [639] => 32771 [640] => 2 [641] => 99 [642] => -1 [643] => 0 [644] => 1 [645] => 99 [646] => -1 [647] => -1 [648] => 32771 [649] => 2 [650] => 99 [651] => -1 [652] => 1 [653] => 1 [654] => 99 [655] => -1 [656] => 0 [657] => 32771 [658] => 0 ) [supply] => Array ( [0] => N [1] => n [2] => R [3] => r [4] => Q [5] => q [6] => A [7] => a [8] => C [9] => c [10] => H [11] => h [12] => S [13] => s ) [promotab] => Array ( [0] => Array ( [0] => n [1] => r [2] => q [3] => a [4] => c [5] => h [6] => s ) [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => Array ( [0] => N [1] => R [2] => Q [3] => A [4] => C [5] => H [6] => S ) ) [shaded] => Array ( ) [symmetrized] => Array ( ) [centralize] => Array ( ) [blackset] => Array ( ) [blacksym] => Array ( ) [blackshaded] => Array ( ) [shufflespecs] => Array ( [0] => Array ( [0] => N [1] => R [2] => Q [3] => K [4] => A [5] => C [6] => H [7] => S ) [1] => 0 [2] => 0 [3] => Array ( [0] => n [1] => r [2] => q [3] => k [4] => a [5] => c [6] => h [7] => s ) [4] => 0 [5] => 0 ) [left] => Array ( [0] => a1 [1] => b1 [2] => c1 [3] => d1 ) [light] => Array ( [0] => a1 [1] => c1 [2] => e1 [3] => g1 ) [dark] => Array ( [0] => a1 [1] => c1 [2] => e1 [3] => g1 [4] => b1 [5] => d1 [6] => f1 [7] => h1 ) [RESULT] => ) ) [1] => Array ( [ShuffleSetup] => Array ( [subargs] => Array ( ) ) ) [3] => Array ( [ShuffleSetup] => Array ( [i] => 0 [a] => Array ( [0] => N [1] => R [2] => Q [3] => K [4] => A [5] => C [6] => H [7] => S ) [b] => Array ( ) [c] => Array ( ) ) ) [5] => Array ( [ShuffleOnePlayer] => Array ( [subargs] => Array ( [0] => Array ( [0] => N [1] => R [2] => Q [3] => K [4] => A [5] => C [6] => H [7] => S ) [1] => Array ( ) [2] => Array ( ) ) ) [main] => Array ( [otherset] => Array ( [0] => N [1] => R [2] => Q [3] => K [4] => A [5] => C [6] => H [7] => S ) [symset] => Array ( ) [shadeset] => Array ( ) ) ) [7] => Array ( [ShuffleOne] => Array ( [subargs] => Array ( [0] => Array ( ) [1] => Array ( [0] => N [1] => R [2] => Q [3] => K [4] => A [5] => C [6] => H [7] => S ) ) [toshuffle] => Array ( [0] => N [1] => R [2] => Q [3] => K [4] => A [5] => C [6] => H [7] => S ) ) [main] => Array ( [shaded] => Array ( ) [others] => Array ( [0] => N [1] => R [2] => Q [3] => K [4] => A [5] => C [6] => H [7] => S ) ) ) )

mline

Array ( [0] => MoveLine Object ( [movenum] => 0 [move] => [level] => 0 [comment] => [length] => 0 [newturn] => [turn] => 0 ) )

allmoves

Array ( )

movelist

constants

Array ( )