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 endlibfunctions
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 ( )