Syntax Error on line 753

The function 'Chariot' has not been defined. Its arguments are a10 e1

Edit the Settings File for Chinese Chess

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 setflag d1 e1 f1 d2 e2 f2 e3 d3 f3 d8 e8 f8 d9 e9 f9 d10 e10 f10
   1 set kpos findpiece g spaces
   2 set Kpos findpiece G spaces
   3 include fairychess-test
   4 setconst c Cannon
   5 setconst C Cannon
   6 alias Chariot Rook
   7 setconst R Rook
   8 setconst r Rook
   9 alias Horse Mao
  10 setconst N Mao
  11 setconst n Mao
  12 alias Guard Chinese_Guard
  13 setconst f Chinese_Guard
  14 setconst F Chinese_Guard
  15 alias General Chinese_General
  16 setconst g Chinese_General
  17 setconst G Chinese_General
  18 alias Minister White_Chinese_Elephant
  19 alias Elephant Black_Chinese_Elephant
  20 setconst E White_Chinese_Elephant
  21 setconst e Black_Chinese_Elephant
  22 alias Soldier White_Chinese_Pawn
  23 alias Soldier Black_Chinese_Pawn
  24 setconst P White_Chinese_Pawn
  25 setconst p Black_Chinese_Pawn
  26 setflag rules
  27 sub postauto1
  28   if not isconst alias $moved
  29     die The piece moved is undefined.
  30   elseif isupper $old
  31     die You may not capture your own pieces.
  32   elseif islower $moved
  33     die You may not move one of your opponent's pieces.
  34   endif
  35   set codename const alias $moved
  36   if fn #codename $origin $dest and isfunc #codename
  37   else
  38     set name alias #codename
  39     set errmsg list "You may not move your" #name "from" $origin "to" join $dest ".
" 40 set desc join #codename "-Desc" 41 set errmsg str_replace "_" " " join #errmsg str_replace "%s" #name var #desc 42 die #errmsg 43 endif 44 if == moved G 45 set Kpos dest 46 endif 47 if sub checked var Kpos 48 die You may not move into check. 49 endif 50 endsub 51 sub postauto2 52 if not isconst $moved 53 die The piece $moved is undefined. 54 elseif islower $old 55 die You may not capture your own pieces. 56 elseif isupper $moved 57 die You may not move one of your opponent's pieces. 58 endif 59 set codename const alias $moved 60 if fn #codename $origin $dest and isfunc #codename 61 else 62 set name alias #codename 63 set errmsg list "You may not move your" #name "from" $origin "to" join $dest ".
" 64 set desc join #codename "-Desc" 65 set errmsg str_replace "_" " " join #errmsg str_replace "%s" #name var #desc 66 die #errmsg 67 endif 68 if == moved g 69 set kpos dest 70 endif 71 if sub checked var kpos 72 die You may not move into check. 73 endif 74 endsub 75 moveindex 0 76 MOVE: C h3-e3 77 postauto1 78 moveindex 1 79 MOVE: n h10-g8 80 postauto2 81 moveindex 2 82 MOVE: N h1-g3 83 postauto1 84 moveindex 3 85 MOVE: p c7-c6 86 postauto2 87 moveindex 4 88 MOVE: P g4-g5 89 postauto1 90 moveindex 5 91 MOVE: c b8-e8 92 postauto2 93 moveindex 6 94 MOVE: R i1-i2 95 postauto1 96 moveindex 7 97 MOVE: r a10-a9 98 postauto2 99 moveindex 8 100 MOVE: R i2-f2 101 postauto1 102 moveindex 9 103 MOVE: n b10-c8 104 postauto2 105 moveindex 10 106 MOVE: R a1-a2 107 postauto1 108 moveindex 11 109 MOVE: n c8-d6 110 postauto2 111 moveindex 12 112 MOVE: R a2-d2 113 postauto1 114 moveindex 13 115 MOVE: n d6-e4 116 postauto2 117 moveindex 14 118 MOVE: N g3-e4 119 postauto1 120 moveindex 15 121 MOVE: c e8-e4 122 postauto2 123 moveindex 16 124 MOVE: F f1-e2 125 postauto1 126 moveindex 17 127 MOVE: c h8-h1 128 postauto2 129 moveindex 18 130 MOVE: resign 131 postauto1 132 if sub stalemated #kpos 133 if sub checked #kpos 134 say Checkmate! Red has won! 135 else 136 say Stalemate! Red has won! 137 endif 138 won 139 elseif sub checked #kpos 140 say Check! 141 endif 142 end 143 144 lib fairychess-test 145 if flag use-chess-defaults 146 setconst k King 147 setconst K King 148 setconst q Queen 149 setconst Q Queen 150 setconst r Rook 151 setconst R Rook 152 setconst b Bishop 153 setconst B Bishop 154 setconst n Knight 155 setconst N Knight 156 setconst p Black_Pawn 157 setconst P White_Pawn 158 endif 159 if flag use-chess-defaults 160 set wpr 2 161 set bpr 7 162 set fps 2 163 set pzs 1 164 set wcastle c1 g1 165 set bcastle c8 g8 166 set wprom Q R B N 167 set bprom q r b n 168 elseif not isset wpr 169 set message join "Set the wpr variable to the value of White's Pawn Rank. This is the single rank on which all of White's Pawns start. This would be 2 for Chess.
" var message 170 elseif not isset bpr 171 set message join "Set the bpr variable to the value of Black's Pawn Rank. This is the single rank on which all of Black's Pawns start. This would be 7 for Chess.
" var message 172 elseif not isset fps 173 set message join "Set the fps variable to the value of the maximum number of spaces a Pawn may move on its first move. This would be 2 in Chess.
" var message 174 elseif not isset pzs 175 set message join "Set the pzs variable to the value of the Promotion Zone Size. This is the number of ranks on the opposite side of the board on which Pawns may promote. This would be 1 for Chess.
" var message 176 elseif not isset wcastle 177 set message join "Set the wcastle variable to a space-separated list of the coordinates of the spaces the White King may move to when castling. This would be c1 g1 for Chess.
" var message 178 elseif not isset bcastle 179 set message join "Set the bcastle variable to a space-separated list of the coordinates of the spaces the Black King may move to when castling. This would be c8 g8 for Chess.
" var message 180 elseif not isset wprom 181 set message join "Set the wprom variable to the pieces that a White Pawn may promote to on reaching the Promotion Zone. White's pieces will normally be uppercase, and this would be Q R B N for Chess.
" var message 182 elseif not isset bprom 183 set message join "Set the bprom variable to the pieces that a Black Pawn may promote to on reaching the Promotion Zone. Black's pieces will normally be lowercase, and this would be q r b n for Chess.
" var message 184 endif 185 set ep false 186 setsystem maxmove 2 187 ban commands allmoves 188 allow moves 1 captures 1 promotions 2 189 set Aanca-Desc "The %s may move one space orthgonally, and so long as it is unblocked, it may continue its move in an outward diagonal direction." 190 def Aanca fn (checkride #0 #1 1 1 and empty #0) where #0 0 sign - rank #1 rank #0 #1 or fn (checkride #0 #1 1 1 and empty #0) where #0 sign - file #1 file #0 0 #1 or checkleap #0 #1 1 0 191 def Aanca-Range mergeall leaps #0 1 0 rays where #0 0 1 1 1 rays where #0 0 -1 1 1 rays where #0 1 0 1 1 rays where #0 -1 0 1 1 192 set Amazon-Desc "The %s may move in a straight line in any direction, as a Queen does, or it may leap the the opposite end of a 1x2 rectangle, as a Knight does." 193 def Amazon fn Bishop #0 #1 or fn Rook #0 #1 or fn Knight #0 #1 194 def Amazon-Range merge leaps # 1 2 merge rays #0 1 0 rays #0 1 1 195 set Bede-Desc "The %s may move along any diagonal line, as a Bishop does, or it may leap two spaces away in any orthogonal direction, as a Dabababah does." 196 def Bede checkride #0 #1 1 1 or checkleap #0 #1 0 2 197 def Bede-Range merge rays #0 1 1 leaps #0 0 2 198 def White_Berolina_Pawn remove var epc and checkleap #0 #1 1 0 and == #1 var epp or and checkride #0 #1 1 1 == rankname #0 var wpr or checkleap #0 #1 1 1 and empty #1 or and islower space #1 checkleap #0 #1 1 0 and <= distance #0 #1 var fps and > rank #1 rank #0 199 def Black_Berolina_Pawn remove var epc and checkleap #0 #1 1 0 and == #1 var epp or and checkride #0 #1 1 1 == rankname #0 var bpr or checkleap #0 #1 1 1 and empty #1 or and isupper space #1 checkleap #0 #1 1 0 and <= distance #0 #1 var fps and < rank #1 rank #0 200 def White_Berolina_Pawn-Range array where #0 0 1 where #0 -1 1 where #0 1 1 where #0 -2 2 where #0 2 2 201 def Black_Berolina_Pawn-Range array where #0 0 -1 where #0 -1 -1 where #0 1 -1 where #0 -2 -2 where #0 2 -2 202 set White_Berolina_Pawn-Desc "The %s may move one space diagonally forward without capturing, or it may move one space straight forward to capture. On its first move, it may move two spaces diagonally forward without capturing so long as it isn't blocked. If this move takes it next to an enemy %s that could have captured it if it had just moved one space, that %s may immediately capture it by en passant, moving to the space it passed over. On reaching the last rank, it may promote." 203 set Black_Berolina_Pawn-Desc var White_Berolina_Pawn-Desc 204 sub White_Berolina_Pawn from to 205 verify > rank #to rank #from 206 verify <= distance #to #from #fps 207 if capture 208 verify checkleap #from #to 1 0 209 set epp false 210 set epc false 211 elseif checkleap #from #to 1 0 and == #to #epp 212 capture #epc 213 set epp false 214 set epc false 215 elseif > distance #to #from 1 216 verify == rankname #from #wpr 217 verify checkride #from #to 1 1 218 set epp elem 0 path #from #to 219 set epc #to 220 else 221 verify checkleap #from #to 1 1 222 set epp false 223 set epc false 224 endif 225 if onboard where #to 0 #pzs 226 if != space #to $moved 227 set name alias const alias $moved 228 die "You may not promote a" #name "until it reaches the promotion zone." 229 endif 230 elseif onboard where #to 0 1 231 if == White_Berolina_Pawn const alias space #to and count var wprom 232 if not $answered and == mln $maxmln 233 push wprom space #to 234 askpromote #wprom 235 endif 236 elseif not match space #to var wprom and != White_Pawn const alias space #to 237 set name alias const alias $moved 238 set newname alias const alias space #to 239 set msg list "You may not promote your" #name "to a" join #newname ".
" 240 set msg str_replace "_" " " var msg 241 die #msg 242 endif 243 elseif count var wprom 244 if == White_Berolina_Pawn const alias space #to 245 if == count var wprom 1 246 set newpiece join list var wprom 247 set newmove join #newpiece "-dest" 248 add #newpiece $dest 249 appendmove #newmove 250 else 251 askpromote #wprom 252 endif 253 elseif not match space #to var wprom 254 set name alias const alias $moved 255 set newname alias const alias space #to 256 set msg list "You may not promote your" #name "to a" join #newname ".
" 257 set msg str_replace "_" " " var msg 258 die #msg 259 endif 260 else 261 set name alias const alias $moved 262 set msg list "You may not advance your" #name "to the last rank, because there is nothing you may promote it to." 263 set msg str_replace "_" " " var msg 264 die #msg 265 endif 266 set nopvc 0 267 return true 268 endsub 269 sub Black_Berolina_Pawn from to 270 verify < rank #to rank #from 271 verify <= distance #to #from #fps 272 if capture 273 verify checkleap #from #to 1 0 274 set epp false 275 set epc false 276 elseif checkleap #from #to 1 0 and == #to #epp 277 capture #epc 278 set epp false 279 set epc false 280 elseif > distance #to #from 1 281 verify == rankname #from #bpr 282 verify checkride #from #to 1 1 283 set epp elem 0 path #from #to 284 set epc #to 285 else 286 verify checkleap #from #to 1 1 287 set epp false 288 set epc false 289 endif 290 if onboard where #to 0 neg #pzs 291 if != space #to $moved 292 set name alias const alias $moved 293 die "You may not promote a" #name "until it reaches the promotion zone." 294 endif 295 elseif onboard where #to 0 -1 296 if == Black_Berolina_Pawn const alias space #to and count var bprom 297 if not $answered and == mln $maxmln 298 push bprom space #to 299 askpromote #bprom 300 endif 301 elseif not match space #to var bprom and != Black_Pawn const alias space #to 302 set name alias const alias $moved 303 set newname alias const alias space #to 304 set msg list "You may not promote your" #name "to a" join #newname ".
" 305 set msg str_replace "_" " " var msg 306 die #msg 307 endif 308 elseif count var bprom 309 if == Black_Berolina_Pawn const alias space #to 310 if == count var bprom 1 311 set newpiece join list var bprom 312 set newmove join #newpiece "-dest" 313 add #newpiece $dest 314 appendmove #newmove 315 else 316 askpromote #bprom 317 endif 318 elseif not match space #to var bprom 319 set name alias const alias $moved 320 set newname alias const alias space #to 321 set msg list "You may not promote your" #name "to a" join #newname ".
" 322 set msg str_replace "_" " " var msg 323 die #msg 324 endif 325 else 326 set name alias const alias $moved 327 set msg list "You may not advance your" #name "to the last rank, because there is nothing you may promote it to." 328 set msg str_replace "_" " " var msg 329 die #msg 330 endif 331 set nopvc 0 332 return true 333 endsub 334 def Bishop checkride #0 #1 1 1 335 def Bishop-Range rays #0 1 1 336 set Bishop-Desc "The %s may move diagonally any number of spaces until it reaches an occupied space." 337 def Cannon cond cond empty #0 capture (not empty #1) (checkhop #0 #1 0 1) (checkride #0 #1 0 1) and #1 338 def Cannon-Range rays #0 1 0 339 set Cannon-Desc "The %s moves any number of spaces orthogonally, as a Rook does, but it must hop over an intervening piece to capture." 340 def Camel checkleap #0 #1 1 3 341 def Camel-Range leaps #0 1 3 342 set Camel-Desc "The %s leaps to any space at the opposite corner of a 1x3 rectangle." 343 def Camelrider checkride #0 #1 1 3 344 def Camelrider-Range rays #0 1 3 345 set Camelrider-Desc "The %s may make any number of Camel moves in the same direction until it lands on an occupied space." 346 def Cardinal fn Bishop #0 #1 or fn Knight #0 #1 347 def Cardinal-Range merge leaps #0 1 2 rays #0 1 1 348 set Cardinal-Desc "The %s may move along diagonals as a Bishop or leap as a Knight." 349 def Champion fn Elephant #0 #1 or fn Dabbabah #0 #1 or fn Wazir #0 #1 350 def Champion-Range mergeall leaps #0 2 2 leaps #0 2 0 leaps #0 1 0 351 set Champion-Desc "The %s may leap one or two spaces orthogonally or two spaces diagonally." 352 def White_Charging_Knight cond < rank #0 rank #1 (checkleap #0 #1 1 2) (checkleap #0 #1 1 1 or checkleap #0 #1 1 0) 353 def White_Charging_Knight-Range mergeall leaps #0 1 2 leaps #0 1 1 leaps #0 1 0 354 set White_Charging_Knight-Desc "The %s may leap forward as a Knight or move one space sideways or backwards like a King." 355 def Black_Charging_Knight cond > rank #0 rank #1 (checkleap #0 #1 1 2) (checkleap #0 #1 1 1 or checkleap #0 #1 1 0) 356 def Black_Charging_Knight-Range mergeall leaps #0 1 2 leaps #0 1 1 leaps #0 1 0 357 set Black_Charging_Knight-Desc "The %s may leap forward as a Knight or move one space sideways or backwards like a King." 358 def White_Charging_Rook checkride #0 #1 1 0 and <= rank #0 rank #1 or checkaleap #0 #1 -1 -1 or checkaleap #0 #1 -1 0 or checkaleap #0 #1 -1 1 359 def White_Charging_Rook-Range mergeall ray #0 0 -1 ray #0 1 0 ray #0 0 1 where #0 -1 1 where #0 1 0 where #0 1 1 360 set White_Charging_Rook-Desc "The %s may move forward or sideways along its file or rank like a Rook, or it may move one space backwards in any direction like a King." 361 def Black_Charging_Rook checkride #0 #1 1 0 and >= rank #0 rank #1 or checkaleap #0 #1 -1 1 or checkaleap #0 #1 1 0 or checkaleap #0 #1 1 1 362 def Black_Charging_Rook-Range mergeall ray #0 0 -1 ray #0 -1 0 ray #0 0 1 where #0 -1 1 where #0 1 0 where #0 1 1 363 set Black_Charging_Rook-Desc "The %s may move forward or sideways along its file or rank like a Rook, or it may move one space backwards in any direction like a King." 364 def Chinese_Elephant checkpath #0 #1 1 1 1 1 365 def Chinese_Elephant-Range leaps #0 2 2 366 set Chinese_Elephant-Desc "The %s may move two spaces diagonally so long as the space in between is empty." 367 def White_Chinese_Elephant checkpath #0 #1 1 1 1 1 and < rank #1 + 1 / lastrank 2 368 def White_Chinese_Elephant-Range leaps #0 2 2 369 set White_Chinese_Elephant-Desc "The %s may move two spaces diagonally so long as the space in between is empty, but it is confined to the ranks on its own side of the board." 370 def Black_Chinese_Elephant checkpath #0 #1 1 1 1 1 and >= rank #1 + 1 / lastrank 2 371 def Black_Chinese_Elephant-Range leaps #0 2 2 372 set Black_Chinese_Elephant-Desc "The %s may move two spaces diagonally so long as the space in between is empty, but it is confined to the ranks on its own side of the board." 373 def Chinese_General checkride #0 #1 1 0 and == Chinese_General const alias cond empty #0 capture space #1 or checkleap #0 #1 0 1 and flag #1 374 def Chinese_General-Range merge leaps #0 1 0 (var kpos var Kpos) 375 set Chinese_General-Desc "The %s may move one space orthogonally within the confines of the Palace, or it may threaten check against the opponent's %s along an open file." 376 def Chinese_Guard checkleap #0 #1 1 1 and flag #1 377 def Chinese_Guard-Range leaps #0 1 1 378 set Chinese_Guard-Desc "The %s may move one space diagonally within the confines of the palace." 379 def White_Chinese_Pawn checkaleap #0 #1 -1 0 or checkaleap #0 #1 1 0 and >= rank #0 + 1 / lastrank 2 or checkaleap #0 #1 0 1 380 def Black_Chinese_Pawn checkaleap #0 #1 -1 0 or checkaleap #0 #1 1 0 and < rank #0 + 1 / lastrank 2 or checkaleap #0 #1 0 -1 381 def White_Chinese_Pawn-Range leaps #0 1 0 382 def Black_Chinese_Pawn-Range leaps #0 1 0 383 set White_Chinese_Pawn-Desc "The %s may move one space forward. Once it has reached the other side of the board, it may also move one space sideways." 384 set Black_Chinese_Pawn-Desc "The %s may move one space forward. Once it has reached the other side of the board, it may also move one space sideways." 385 def White_Colonel checkride #0 #1 1 0 or checkleap #0 #1 1 2 and >= rank #1 rank #0 or checkleap #0 #1 1 1 or checkleap #0 #1 1 0 386 def White_Colonel mergeall rays #0 1 0 leaps #0 1 2 leaps #0 1 1 387 set White_Colonel-Desc "The %s may move forward or sideways as a Rook, forward as a Knight, and one space in any direction as a King." 388 def Black_Colonel checkride #0 #1 1 0 or checkleap #0 #1 1 2 and <= rank #1 rank #0 or checkleap #0 #1 1 1 or checkleap #0 #1 1 0 389 def Black_Colonel mergeall rays #0 1 0 leaps #0 1 2 leaps #0 1 1 390 set Black_Colonel-Desc "The %s may move forward or sideways as a Rook, forward as a Knight, and one space in any direction as a King." 391 def Dabbabah checkleap #0 #1 0 2 392 def Dabbabah-Range leaps #0 0 2 393 set Dabbabah-Desc "The %s may leap two spaces vertically or horizontally." 394 def Dabbabahrider checkride #0 #1 0 2 395 def Dabbabahrider-Range rays #0 0 2 396 set Dabbabahrider-Desc "The %s may make any number of two space orthogonal leaps in the same direction until it reaches an occupied space." 397 def Dragon_Horse checkride #0 #1 1 1 or checkleap #0 #1 1 0 398 def Dragon_Horse-Range merge leaps #0 1 0 rays #0 1 1 399 set Dragon_Horse-Desc "The %s may move along diagonals as a Bishop or move on space orthogonally as a Wazir." 400 def Dragon_King checkride #0 #1 1 0 or checkleap #0 #1 1 1 401 def Dragon_King-Range merge leaps #0 1 1 rays #0 1 0 402 set Dragon_King-Desc "The %s may move along its rank or file as a Rook or one space diagonally as a Ferz." 403 def Elephant checkleap #0 #1 2 2 404 def Elephant-Range leaps #0 2 2 405 set Elephant-Desc "The %s may leap two spaces in any diagonal direction." 406 def Elephantrider checkride #0 #1 2 2 407 def Elephantrider-Range rays #0 2 2 408 set Elephantrider-Desc "The %s may make a series of two-space diagonal leaps in the same direction. Each leap but the last must be to an empty space, though a leap may take it over an intervening piece." 409 def Eques_Rex checkleap #0 #1 1 1 or checkleap #0 #1 1 0 or checkleap #0 #1 1 2 410 def Eques_Rex-Range merge leaps #0 1 2 merge leaps #0 1 0 leaps #0 1 1 411 set Eques_Rex-Desc "The %s may move to any adjacent space as a King or leap like a Knight." 412 def Fad checkleap #0 #1 1 1 or checkleap #0 #1 2 2 or checkleap #0 #1 2 0 413 def Fad-Range mergeall leaps #0 1 1 leaps #0 2 2 leaps #0 2 0 414 set Fad-Desc "The %s may move one space diagonally, or it may leap two spaces diagonally or orthogonally." 415 def Ferz checkleap #0 #1 1 1 416 def Ferz-Range leaps #0 1 1 417 set Ferz-Desc "The %s may move one space diagonally." 418 def Fibnif checkleap #0 #1 1 2 or checkleap #0 #1 1 1 and == 1 abs - file #0 file #1 419 def Fibnif-Range merge leaps #0 1 2 leaps #0 1 1 420 set Fibnif-Desc "The %s may move one space diagonally or leap as a Knight to any space that is one file and two ranks away." 421 def Giraffe checkleap #0 #1 1 4 422 def Giraffe-Range leaps #0 1 4 423 set Giraffe-Desc "The %s may leap to any space that is one file and four ranks or one rank and four files away." 424 def White_Gold_General checkaleap #0 #1 1 1 or checkaleap #0 #1 -1 1 or checkleap #0 #1 0 1 425 def White_Gold_General-Range mergeall leaps #0 1 0 where #0 1 1 where #0 -1 1 426 set White_Gold_General-Desc "The %s may move one space in any orthgonal direction or one space diagonally forward." 427 def Black_Gold_General checkaleap #0 #1 1 -1 or checkaleap #0 #1 -1 -1 or checkleap #0 #1 0 1 428 def Black_Gold_General-Range mergeall leaps #0 1 0 where #0 1 -1 where #0 -1 -1 429 set Black_Gold_General-Desc "The %s may move one space in any orthgonal direction or one space diagonally forward." 430 def Grasshopper checkgrasshop #0 #1 1 1 or checkgrasshop #0 #1 1 0 431 def Grasshopper-Range merge rays #0 1 0 rays #0 1 1 432 set "The %s moves any number of spaces orthogonally or diagonally like a Queen except that it must hop over exactly one piece, and it must end its move immediately after the piece it hopped over." 433 def Griffon fn (checkride #0 #1 1 0 and empty #0) where #0 sign - file #1 file #0 sign - rank #1 rank #0 #1 and != file #1 file #0 and != rank #1 rank #0 or checkleap #0 #1 1 1 434 def Griffon-Range mergeall leaps #0 1 1 rays where #0 1 1 1 0 rays where #0 1 -1 1 0 rays where #0 -1 -1 1 0 rays where #0 -1 1 1 0 435 set Griffon-Desc "The %s may move one space diagonally, and it may continue its move by moving as a Rook in an outward orthogonal direction. It may not pass over other pieces." 436 def King checkleap #0 #1 1 1 or checkleap #0 #1 1 0 437 def King-Range merge leaps #0 1 0 leaps #0 1 1 438 set King-Desc "The %s leaps one space in any direction. It may castle with a rook on its first move so long as it is not in check, there is nothing in between it and the rook, it doesn't pass through check while castling, and the rook hasn't moved." 439 sub King from to 440 if not fn King #from #to 441 verify sub castle #from #to and match #to var cond isupper space #to wcastle bcastle 442 endif 443 if isupper space #to 444 set Kpos #to 445 else 446 set kpos #to 447 endif 448 return true 449 endsub 450 def Knight checkleap #0 #1 1 2 451 def Knight-Range leaps #0 1 2 452 set Knight-Desc "The %s may leap to any space that is one rank and two files away or two ranks and one file away." 453 def Korean_Elephant checkpath #0 #1 1 0 1 1 1 1 454 def Korean_Elephant-Range leaps #0 2 3 455 set "The %s may move one space orthogonally, followed by two more spaces in the same outward diagonal direction. It must complete every part of its move, and it may not pass over an occupied space." 456 def White_Lance checkaride #0 #1 0 1 457 def White_Lance-Range ray #0 0 1 458 set "The %s may move forward in its file as a Rook." 459 def Black_Lance checkaride #0 #1 0 -1 460 def Black_Lance-Range ray #0 0 -1 461 set "The %s may move forward in its file as a Rook." 462 def Leo fn Vao #0 #1 or fn Cannon #0 #1 463 def Leo-Range merge rays #0 1 0 rays #0 1 1 464 set Leo-Desc "The %s may move any number of spaces diagonally or orthogonally, as a Queen does, but it must hop over one intervening piece when it captures." 465 def Mao checktwostep #0 #1 0 1 1 1 466 def Mao-Range leaps #0 1 2 467 set Mao-Desc "The %s moves one space orthogonally, followed by one more space in an outward diagonal direction. It must complete both parts of its move, and it may not pass over an occupied space. It can reach the same spaces as a Knight except that it can be blocked on the first step of its two-space move." 468 def Marshall fn Knight #0 #1 or fn Rook #0 #1 469 def Marshall-Range merge rays #0 1 0 leaps #0 1 2 470 set Marshall-Desc "The %s moves orthogonally as a Rook or leaps as a Knight." 471 def Moa checktwostep #0 #1 1 1 0 1 472 def Moa-Range leaps #0 1 2 473 set Moa-Desc "The %s moves one space diagonally, followed by one more space in an outward orthogonal direction. It must complete both parts of its move, and it may not pass over an occupied space. It can reach the same spaces as a Knight except that it can be blocked on the first step of its two-space move." 474 def Murray_Lion checkleap #0 #1 1 0 or checkleap #0 #1 1 1 and cond empty #0 capture (not empty #1) or checkleap #0 #1 2 2 or checkleap #0 #1 0 2 475 def Murray_Lion-Range merge merge leaps #0 2 0 leaps #0 2 2 merge leaps #0 1 0 leaps #0 1 1 476 set Murray_Lion-Desc "The %s may leap two spaces in any diagonal or orthogonal direction, and it may capture (but not otherwise move) one space in any direction." 477 def Nightrider checkride #0 #1 1 2 478 def Nightrider-Range rays #0 1 2 479 set Nightrider-Desc "The %s may leap as a Knight any number of times in the same direction. While each Knight leap may take it over other pieces, each leap but the last must be to an empty space." 480 set White_Pawn-Desc "The %s may move one space straight forward without capturing, or it may move one space diagonally forward to capture. On its first move, it may move two spaces forward without capturing so long as it isn't blocked. If this move takes it next to an enemy %s that could have captured it if it had just moved one space, that %s may immediately capture it by en passant, moving to the space it passed over. On reaching the last rank, it may promote." 481 set Black_Pawn-Desc var White_Pawn-Desc 482 def White_Pawn remove var ep and < rankname #1 var bpr and < rankname var ep rankname #1 and == filename var ep filename #1 and checkleap #0 #1 1 1 and var ep or and checkride #0 #1 0 1 == rankname #0 var wpr or checkleap #0 #1 0 1 and empty #1 and != var movetype CHECK or and islower space #1 checkleap #0 #1 1 1 and any onboard where #1 0 1 == var movetype CHECK count var wprom and <= distance #0 #1 var fps and > rank #1 rank #0 483 def Black_Pawn remove var ep and > rankname #1 var wpr and > rankname var ep rankname #1 and == filename var ep filename #1 and checkleap #0 #1 1 1 and var ep or and checkride #0 #1 0 1 == rankname #0 var bpr or checkleap #0 #1 0 1 and empty #1 and != var movetype CHECK or and isupper space #1 checkleap #0 #1 1 1 and any count var bprom onboard where #1 0 -1 == var movetype CHECK and <= distance #0 #1 var fps and < rank #1 rank #0 484 def White_Pawn-Range array where #0 0 2 where #0 0 1 where #0 -1 1 where #0 1 1 485 def Black_Pawn-Range array where #0 0 -2 where #0 0 -1 where #0 -1 -1 where #0 1 -1 486 sub White_Pawn from to 487 my newpiece 488 my newmove 489 verify > rank #to rank #from 490 verify <= distance #to #from #fps 491 if capture 492 verify checkleap #from #to 1 1 493 set ep false 494 elseif checkleap #from #to 1 1 and #ep 495 verify == filename var ep filename #to 496 verify < rankname var ep rankname #to 497 verify < rankname #to var bpr 498 capture #ep 499 set ep false 500 elseif > distance #to #from 1 501 verify == rankname #from #wpr 502 verify checkride #from #to 0 1 503 set ep #to 504 else 505 verify checkleap #from #to 0 1 506 set ep false 507 endif 508 if onboard where #to 0 #pzs 509 if != space #to $moved 510 set name alias const alias $moved 511 die "You may not promote a" #name "until it reaches the promotion zone." 512 endif 513 elseif onboard where #to 0 1 514 if == White_Pawn const alias space #to and count var wprom 515 if not $answered and == mln $maxmln 516 push wprom space #to 517 askpromote #wprom 518 endif 519 elseif not match space #to var wprom and != White_Pawn const alias space #to 520 set name alias const alias $moved 521 set newname alias const alias space #to 522 set msg list "You may not promote your" #name "to a" join #newname ".
" 523 set msg str_replace "_" " " var msg 524 die #msg 525 endif 526 elseif count var wprom 527 if == White_Pawn const alias space #to 528 if == count var wprom 1 529 set newpiece join list var wprom 530 set newmove join #newpiece "-dest" 531 add #newpiece $dest 532 appendmove #newmove 533 else 534 askpromote #wprom 535 endif 536 elseif not match space #to var wprom 537 set name alias const alias $moved 538 set newname alias const alias space #to 539 set msg list "You may not promote your" #name "to a" join #newname ".
" 540 set msg str_replace "_" " " var msg 541 die #msg 542 endif 543 else 544 set name alias const alias $moved 545 set msg list "You may not advance your" #name "to the last rank, because there is nothing you may promote it to." 546 set msg str_replace "_" " " var msg 547 die #msg 548 endif 549 set nopvc 0 550 return true 551 endsub 552 sub Black_Pawn from to 553 my newpiece 554 my newmove 555 verify < rank #to rank #from 556 verify <= distance #to #from #fps 557 if capture 558 verify checkleap #from #to 1 1 559 set ep false 560 elseif checkleap #from #to 1 1 and #ep 561 verify == filename var ep filename #to 562 verify > rankname var ep rankname #to 563 verify > rankname #to var wpr 564 capture #ep 565 set ep false 566 elseif > distance #to #from 1 567 verify == rankname #from #bpr 568 verify checkride #from #to 0 1 569 set ep #to 570 else 571 verify checkleap #from #to 0 1 572 set ep false 573 endif 574 if onboard where #to 0 neg #pzs 575 if != space #to $moved 576 set name alias const alias $moved 577 die "You may not promote a" #name "until it reaches the promotion zone." 578 endif 579 elseif onboard where #to 0 -1 580 if == Black_Pawn const alias space #to and count var bprom 581 if not $answered and == mln $maxmln 582 push bprom space #to 583 askpromote #bprom 584 endif 585 elseif not match space #to var bprom and != Black_Pawn const alias space #to 586 set name alias const alias $moved 587 set newname alias const alias space #to 588 set msg list "You may not promote your" #name "to a" join #newname ".
" 589 set msg str_replace "_" " " var msg 590 die #msg 591 endif 592 elseif count var bprom 593 if == Black_Pawn const alias space #to 594 if == count var bprom 1 595 set newpiece join list var bprom 596 set newmove join #newpiece "-dest" 597 add #newpiece $dest 598 appendmove #newmove 599 else 600 askpromote #bprom 601 endif 602 elseif not match space #to var bprom 603 set name alias const alias $moved 604 set newname alias const alias space #to 605 set msg list "You may not promote your" #name "to a" join #newname ".
" 606 set msg str_replace "_" " " var msg 607 die #msg 608 endif 609 else 610 set name alias const alias $moved 611 set msg list "You may not advance your" #name "to the last rank, because there is nothing you may promote it to." 612 set msg str_replace "_" " " var msg 613 die #msg 614 endif 615 set nopvc 0 616 return true 617 endsub 618 def Queen fn Bishop #0 #1 or fn Rook #0 #1 619 def Queen-Range merge rays #0 1 0 rays #0 1 1 620 set Queen-Desc "The %s may move any number of spaces in any orthogonal or diagonal direction until it reaches an occupied space." 621 def Rook checkride #0 #1 1 0 622 def Rook-Range rays #0 1 0 623 set Rook-Desc "The %s may move any number of spaces in any vertical or horizontal direction until it reaches an occupied space." 624 def Short_Rook checkride #0 #1 1 0 and <= distance #0 #1 4 625 def Short_Rook-Range merge merge leaps #0 1 0 leaps #0 2 0 merge leaps #0 3 0 leaps #0 4 0 626 set "The %s may move up to four spaces along its rank or file as a Rook." 627 def White_Shogi_Knight checkaleap #0 #1 1 2 or checkaleap #0 #1 -1 2 628 def White_Shogi_Knight array where #0 1 2 where #0 -1 2 629 set White_Shogi_Knight-Desc "The %s may leap to either space that is two ranks ahead and one file to the side." 630 def Black_Shogi_Knight checkaleap #0 #1 1 -2 or checkaleap #0 #1 -1 -2 631 def Black_Shogi_Knight array where #0 1 -2 where #0 -1 -2 632 set Black_Shogi_Knight-Desc "The %s may leap to either space that is two ranks ahead and one file to the side." 633 def White_Shogi_Pawn checkaleap #0 #1 0 1 634 def White_Shogi_Pawn-Range where #0 0 1 635 set White_Shogi_Pawn-Desc "The %s map move one space forward in the same file." 636 def Black_Shogi_Pawn checkaleap #0 #1 0 -1 637 def Black_Shogi_Pawn-Range where #0 0 -1 638 set Black_Shogi_Pawn-Desc "The %s map move one space forward in the same file." 639 def White_Silver_General checkaleap #0 #1 0 1 or checkleap #0 #1 1 1 640 def White_Silver_General-Range mergeall leaps #0 1 1 where #0 0 1 641 set White_Silver_General-Desc "The %s may move one space in any diagonal direction or one space vertically foward." 642 def Black_Silver_General checkaleap #0 #1 0 -1 or checkleap #0 #1 1 1 643 def Black_Silver_General-Range mergeall leaps #0 1 1 where #0 0 -1 644 set Black_Silver_General-Desc "The %s may move one space in any diagonal direction or one space vertically foward." 645 def Squirrel fn Elephant #0 #1 or fn Dabbabah #0 #1 or fn Knight #0 #1 646 def Squirrel-Range mergeall leaps #0 2 2 leaps #0 2 0 leaps #0 1 2 647 set Squirrel-Desc "The %s may leap any non-adjacent space that is no more than two spaces away." 648 def Spider fn Dabbabah #0 #1 or fn Elephant #0 #1 649 def Spider-Range merge leaps #0 2 2 leaps #0 0 2 650 set Spider-Desc "The %s may leap to any space that is two spaces away orthogonally or diagonally." 651 def Spider-rider fn Dabbabahrider #0 #1 or fn Elephantrider #0 #1 652 def Spider-rider-Range merge rays #0 2 2 rays #0 0 2 653 set Spider-rider-Desc "The %s may make any number of two-space leaps in a single orthogonal or diagonal direction. While each leap may take it over an occupied space, each leap but the last must be to an empty space." 654 def Squire checktwostep #0 #1 0 1 1 1 or checktwostep #0 #1 1 1 0 1 655 def Squire-Range leaps #0 1 2 656 set Squire-Desc "The %s may move one space orthogonally, followed by one more space in an outward diagonal direction, or it may move one space diagonally, followed by one more space in an outward orthogonal direction. It must complete both parts of its move, and it may not pass over an occupied space. It can reach the same spaces as a Knight except that it can be blocked on the first step of its two-space move." 657 def Unicorn fn Nightrider #0 #1 or fn Bishop #0 #1 658 def Unicorn-Range merge rays #0 1 2 rays #0 1 1 659 set Unicorn-Desc "The %s may make consecutive Knight moves in the same direction, as a Nightrider does, or it may move diagonally as a Bishop." 660 def Vao cond cond empty #0 capture (not empty #1) (checkhop #0 #1 1 1) (checkride #0 #1 1 1) and #1 661 def Vao-Range rays #0 1 1 662 set Vao-Desc "The %s may move diagonally as a Bishop, but it must hop over exactly one intervening piece when it captures." 663 def Wazir checkleap #0 #1 1 0 664 def Wazir-Range leaps #0 1 0 665 set Wazir-Desc "The %s may move one space horizontally or vertically." 666 def Wizard fn Ferz #0 #1 or fn Camel #0 #1 667 def Wizard-Range merge leaps #0 1 1 leaps #0 1 3 668 set Wizard-Desc "The %s Wizard may move one space diagonally, or it may leap to a space three ranks and one file or three files and one rank away, as a Camel does." 669 def Woody_Rook checkleap #0 #1 0 2 or checkleap #0 #1 0 1 670 def Woody_Rook-Range merge leaps #0 0 1 leaps #0 0 2 671 set Woody_Rook-Desc "The %s may leap one or two spaces orthogonally. It may pass over another piece when moving two spaces." 672 def Zebra checkleap #0 #1 2 3 673 def Zebra-Range leaps #0 2 3 674 set Zebra-Desc "The %s may leap to any space that is 2 ranks and 3 files or 2 files and 3 ranks away." 675 def Elephant_Ferz fn Ferz #0 #1 or fn Elephant #0 #1 676 def Elephant_Ferz-Range merge leaps #0 2 2 leaps #0 1 1 677 set Elephant_Ferz-Desc "The %s may leap one or two spaces diagonally. It may pass over another piece when moving two spaces." 678 def Elephant_Wazir fn Wazir #0 #1 or fn Elephant #0 #1 679 def Elephant_Wazir-Range merge leaps #0 2 2 leaps #0 1 0 680 set Elephant_Wazir-Desc "The %s may move one space orthogonally, as a Wazir, or leap two spaces diagonally, as an Elephant." 681 def Half_Duck fn Ferz #0 #1 or fn Dabbabah #0 #1 or checkleap #0 #1 3 0 682 def Half_Duck-Range mergeall leaps #0 1 1 leaps #0 2 0 leaps #0 3 0 683 set Half_Duck-Desc "The %s may move one space diagonally, or it may leap 2 or 3 spaces orthogonally, passing over any pieces in the way." 684 def Knight_Wazir fn Knight #0 #1 or fn Wazir #0 #1 685 def Knight_Wazir-Range merge leaps #0 1 2 leaps #0 1 0 686 set Knight_Wazir-Desc "The %s may move one space orthogonally, as a Wazir, or it may leap as a Knight to any space one file and two ranks or two files and one rank away." 687 def Frog fn Ferz #0 #1 or checkleap #0 #1 3 0 688 def Frog-Range merge leaps #0 1 1 leaps #0 3 0 689 set Frog-Desc "The %s may move one space diagonally or directly leap 3 spaces orthogonally." 690 def @ false 691 sub attacked start finish 692 my from piece actual 693 local movetype 694 set movetype MOVE 695 if empty #start 696 set actual true 697 move #finish #start 698 add $old #finish 699 endif 700 if isupper space #start 701 def enemies onlylower 702 else 703 def enemies onlyupper 704 endif 705 for (from piece) fn enemies 706 if fn const alias #piece #from #to 707 if #actual 708 move #start #finish 709 endif 710 return #from 711 endif 712 next 713 if #actual 714 move #start #finish 715 endif 716 return false 717 endsub 718 sub fission-attacked start finish 719 my from piece p1 p2 720 local movetype 721 set p1 space #start 722 set p2 space #finish 723 if match K toupper #p1 toupper #p2 724 set movetype CHECK 725 else 726 set movetype MOVE 727 endif 728 if isupper #p1 729 def enemies onlylower 730 else 731 def enemies onlyupper 732 endif 733 empty #finish 734 for (from piece) fn enemies 735 if fn const alias #piece #from #start 736 add #p2 #finish 737 return #from 738 endif 739 next 740 add #p2 #finish 741 return false 742 endsub 743 sub checked king 744 my from piece 745 local movetype 746 set movetype CHECK 747 if isupper cond empty var king $moved space var king 748 def enemies onlylower 749 else 750 def enemies onlyupper 751 endif 752 for (from piece) fn enemies 753 if fn const alias #piece #from var king 754 return #from 755 endif 756 next 757 echo #piece #from #king 758 return false 759 endsub 760 sub uncheckedpath start finish 761 my from to piece kingpos 762 local movetype 763 set movetype CHECK 764 if empty #finish 765 set kingpos #start 766 else 767 set kingpos #finish 768 endif 769 if isupper space #kingpos 770 def enemies onlylower 771 else 772 def enemies onlyupper 773 endif 774 for to path #start #finish 775 move #kingpos #to 776 for (from piece) fn enemies 777 if fn const alias #piece #from #to 778 move #to #kingpos 779 return false 780 endif 781 next 782 move #to #kingpos 783 next 784 return true 785 endif 786 sub uncheckedknightleap start finish 787 my from to piece kingpos kingpiece checkedpaths 788 local movetype 789 echo "uncheckedknightleap" #start #finish 790 set movetype CHECK 791 if empty #start 792 set kingpos #finish 793 else 794 set kingpos #start 795 endif 796 if isupper space #kingpos 797 def enemies onlylower 798 else 799 def enemies onlyupper 800 endif 801 set kingpiece space #kingpos 802 set avenues merge intersection leaps #start 1 0 leaps #finish 1 1 intersection leaps #start 1 1 leaps #finish 1 0 803 echo "avenues:" 804 printr avenues 805 set checkdpaths 0 806 for to #avenues 807 if empty #to 808 move #kingpos #to 809 else 810 empty #kingpos 811 endif 812 echo "To:" #to 813 for (from piece) fn enemies 814 echo "From:" #from 815 if fn const alias #piece #from #to 816 inc checkedpaths 817 echo const alias #piece "at" #from "checks" #to 818 break 819 endif 820 next 821 if == space #to #kingpiece 822 move #to #kingpos 823 else 824 add #kingpiece #kingpos 825 endif 826 if == checkedpaths 0 827 break 828 endif 829 next 830 return < var checkedpaths 2 831 endif 832 sub castle from to 833 local coord RPOS RDEST xdir 834 if not flag #from 835 die A King may not castle after it moves. 836 endif 837 if capture 838 die A King may not castle to an occupied space. 839 endif 840 set xdir sign minus file #to file #from 841 if not checkaride #from #to #xdir 0 842 die A King may not castle across any occupied space. 843 endif 844 set coord #to 845 do 846 set coord where #coord #xdir 0 847 if flag #coord 848 break 849 elseif not onboard #coord 850 die No piece was found to castle with. 851 elseif not empty #coord 852 die The King cannot castle with the piece at #coord 853 endif 854 loop 855 set RPOS #coord 856 move #to #from 857 if sub checked #from 858 die A King may not castle out of check. 859 endif 860 store 861 for coord path #from #to 862 move #from #coord 863 if sub checked #coord 864 die A King may not castle through check. 865 endif 866 restore 867 next 868 move #from #to 869 set RDEST where #to neg #xdir 0 870 move #RPOS #RDEST 871 return true 872 endsub 873 sub castlepos from to 874 local coord RPOS RDEST xdir safe 875 verify flag #from 876 verify empty #to 877 set xdir sign minus file #to file #from 878 verify checkaride #from #to #xdir 0 879 verify not sub checked #from 880 set coord #to 881 do 882 set coord where #coord #xdir 0 883 if flag #coord 884 break 885 endif 886 verify onboard #coord 887 verify empty #coord 888 loop 889 verify flag #coord 890 set RPOS #coord 891 store 892 for coord path #from #to 893 move #from #coord 894 set safe not sub checked #coord 895 restore 896 verify #safe 897 next 898 move #from #to 899 set RDEST where #to neg #xdir 0 900 move #RPOS #RDEST 901 set safe not sub checked #to 902 restore 903 return #safe 904 endsub 905 sub stalemated kingpos 906 store 907 local from piece to movetype 908 set movetype MOVE 909 if isupper space #kingpos 910 def friends onlyupper 911 def friend isupper #0 912 set cspaces var wcastle 913 else 914 def friends onlylower 915 def friend islower #0 916 set cspaces var bcastle 917 endif 918 set royal space var kingpos 919 store 920 for (from piece) fn friends 921 for to fn join const alias #piece "-Range" #from 922 if fn const alias #piece #from #to and not fn friend space #to and onboard #to 923 move #from #to 924 if not sub checked cond == #from #kingpos #to #kingpos 925 setlegal #from #to 926 endif 927 endif 928 restore 929 next 930 next 931 if > count var cspaces 0 932 for to var cspaces 933 if sub castlepos #kingpos #to 934 setlegal #kingpos #to 935 endif 936 next 937 endif 938 return cond count system legalmoves false true 939 endsub 940 sub fusion-stalemated kingpos 941 store 942 local from piece to movetype 943 set movetype MOVE 944 if isupper space #kingpos 945 def friends onlyupper 946 def friend isupper #0 947 set cspaces var wcastle 948 else 949 def friends onlylower 950 def friend islower #0 951 set cspaces var bcastle 952 endif 953 set royal space var kingpos 954 store 955 for (from piece) fn friends 956 for to fn join const alias #piece "-Range" #from 957 if != space #to #piece and match toupper alias space #to K R B N and match toupper alias #piece R B N or not fn friend space #to and fn const alias #piece #from #to and onboard #to 958 move #from #to 959 if not sub checked cond == #from #kingpos #to #kingpos 960 setlegal #from #to 961 endif 962 endif 963 restore 964 next 965 next 966 if > count var cspaces 0 967 for to var cspaces 968 if sub castlepos #kingpos #to 969 setlegal #kingpos #to 970 endif 971 next 972 endif 973 return cond count system legalmoves false true 974 endsub 975 endlib

functions

Array ( [Aanca] => Array ( [0] => fn [1] => Array ( [0] => checkride [1] => #0 [2] => #1 [3] => 1 [4] => 1 [5] => and [6] => empty [7] => #0 ) [2] => where [3] => #0 [4] => 0 [5] => sign [6] => - [7] => rank [8] => #1 [9] => rank [10] => #0 [11] => #1 [12] => or [13] => fn [14] => Array ( [0] => checkride [1] => #0 [2] => #1 [3] => 1 [4] => 1 [5] => and [6] => empty [7] => #0 ) [15] => where [16] => #0 [17] => sign [18] => - [19] => file [20] => #1 [21] => file [22] => #0 [23] => 0 [24] => #1 [25] => or [26] => checkleap [27] => #0 [28] => #1 [29] => 1 [30] => 0 ) [Aanca-Range] => Array ( [0] => mergeall [1] => leaps [2] => #0 [3] => 1 [4] => 0 [5] => rays [6] => where [7] => #0 [8] => 0 [9] => 1 [10] => 1 [11] => 1 [12] => rays [13] => where [14] => #0 [15] => 0 [16] => -1 [17] => 1 [18] => 1 [19] => rays [20] => where [21] => #0 [22] => 1 [23] => 0 [24] => 1 [25] => 1 [26] => rays [27] => where [28] => #0 [29] => -1 [30] => 0 [31] => 1 [32] => 1 ) [Amazon] => Array ( [0] => fn [1] => Bishop [2] => #0 [3] => #1 [4] => or [5] => fn [6] => Rook [7] => #0 [8] => #1 [9] => or [10] => fn [11] => Knight [12] => #0 [13] => #1 ) [Amazon-Range] => Array ( [0] => merge [1] => leaps [2] => # [3] => 1 [4] => 2 [5] => merge [6] => rays [7] => #0 [8] => 1 [9] => 0 [10] => rays [11] => #0 [12] => 1 [13] => 1 ) [Bede] => Array ( [0] => checkride [1] => #0 [2] => #1 [3] => 1 [4] => 1 [5] => or [6] => checkleap [7] => #0 [8] => #1 [9] => 0 [10] => 2 ) [Bede-Range] => Array ( [0] => merge [1] => rays [2] => #0 [3] => 1 [4] => 1 [5] => leaps [6] => #0 [7] => 0 [8] => 2 ) [White_Berolina_Pawn] => Array ( [0] => remove [1] => var [2] => epc [3] => and [4] => checkleap [5] => #0 [6] => #1 [7] => 1 [8] => 0 [9] => and [10] => == [11] => #1 [12] => var [13] => epp [14] => or [15] => and [16] => checkride [17] => #0 [18] => #1 [19] => 1 [20] => 1 [21] => == [22] => rankname [23] => #0 [24] => var [25] => wpr [26] => or [27] => checkleap [28] => #0 [29] => #1 [30] => 1 [31] => 1 [32] => and [33] => empty [34] => #1 [35] => or [36] => and [37] => islower [38] => space [39] => #1 [40] => checkleap [41] => #0 [42] => #1 [43] => 1 [44] => 0 [45] => and [46] => <= [47] => distance [48] => #0 [49] => #1 [50] => var [51] => fps [52] => and [53] => > [54] => rank [55] => #1 [56] => rank [57] => #0 ) [Black_Berolina_Pawn] => Array ( [0] => remove [1] => var [2] => epc [3] => and [4] => checkleap [5] => #0 [6] => #1 [7] => 1 [8] => 0 [9] => and [10] => == [11] => #1 [12] => var [13] => epp [14] => or [15] => and [16] => checkride [17] => #0 [18] => #1 [19] => 1 [20] => 1 [21] => == [22] => rankname [23] => #0 [24] => var [25] => bpr [26] => or [27] => checkleap [28] => #0 [29] => #1 [30] => 1 [31] => 1 [32] => and [33] => empty [34] => #1 [35] => or [36] => and [37] => isupper [38] => space [39] => #1 [40] => checkleap [41] => #0 [42] => #1 [43] => 1 [44] => 0 [45] => and [46] => <= [47] => distance [48] => #0 [49] => #1 [50] => var [51] => fps [52] => and [53] => < [54] => rank [55] => #1 [56] => rank [57] => #0 ) [White_Berolina_Pawn-Range] => Array ( [0] => array [1] => where [2] => #0 [3] => 0 [4] => 1 [5] => where [6] => #0 [7] => -1 [8] => 1 [9] => where [10] => #0 [11] => 1 [12] => 1 [13] => where [14] => #0 [15] => -2 [16] => 2 [17] => where [18] => #0 [19] => 2 [20] => 2 ) [Black_Berolina_Pawn-Range] => Array ( [0] => array [1] => where [2] => #0 [3] => 0 [4] => -1 [5] => where [6] => #0 [7] => -1 [8] => -1 [9] => where [10] => #0 [11] => 1 [12] => -1 [13] => where [14] => #0 [15] => -2 [16] => -2 [17] => where [18] => #0 [19] => 2 [20] => -2 ) [Bishop] => Array ( [0] => checkride [1] => #0 [2] => #1 [3] => 1 [4] => 1 ) [Bishop-Range] => Array ( [0] => rays [1] => #0 [2] => 1 [3] => 1 ) [Cannon] => Array ( [0] => cond [1] => cond [2] => empty [3] => #0 [4] => capture [5] => Array ( [0] => not [1] => empty [2] => #1 ) [6] => Array ( [0] => checkhop [1] => #0 [2] => #1 [3] => 0 [4] => 1 ) [7] => Array ( [0] => checkride [1] => #0 [2] => #1 [3] => 0 [4] => 1 ) [8] => and [9] => #1 ) [Cannon-Range] => Array ( [0] => rays [1] => #0 [2] => 1 [3] => 0 ) [Camel] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 1 [4] => 3 ) [Camel-Range] => Array ( [0] => leaps [1] => #0 [2] => 1 [3] => 3 ) [Camelrider] => Array ( [0] => checkride [1] => #0 [2] => #1 [3] => 1 [4] => 3 ) [Camelrider-Range] => Array ( [0] => rays [1] => #0 [2] => 1 [3] => 3 ) [Cardinal] => Array ( [0] => fn [1] => Bishop [2] => #0 [3] => #1 [4] => or [5] => fn [6] => Knight [7] => #0 [8] => #1 ) [Cardinal-Range] => Array ( [0] => merge [1] => leaps [2] => #0 [3] => 1 [4] => 2 [5] => rays [6] => #0 [7] => 1 [8] => 1 ) [Champion] => Array ( [0] => fn [1] => Elephant [2] => #0 [3] => #1 [4] => or [5] => fn [6] => Dabbabah [7] => #0 [8] => #1 [9] => or [10] => fn [11] => Wazir [12] => #0 [13] => #1 ) [Champion-Range] => Array ( [0] => mergeall [1] => leaps [2] => #0 [3] => 2 [4] => 2 [5] => leaps [6] => #0 [7] => 2 [8] => 0 [9] => leaps [10] => #0 [11] => 1 [12] => 0 ) [White_Charging_Knight] => Array ( [0] => cond [1] => < [2] => rank [3] => #0 [4] => rank [5] => #1 [6] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 1 [4] => 2 ) [7] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 1 [4] => 1 [5] => or [6] => checkleap [7] => #0 [8] => #1 [9] => 1 [10] => 0 ) ) [White_Charging_Knight-Range] => Array ( [0] => mergeall [1] => leaps [2] => #0 [3] => 1 [4] => 2 [5] => leaps [6] => #0 [7] => 1 [8] => 1 [9] => leaps [10] => #0 [11] => 1 [12] => 0 ) [Black_Charging_Knight] => Array ( [0] => cond [1] => > [2] => rank [3] => #0 [4] => rank [5] => #1 [6] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 1 [4] => 2 ) [7] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 1 [4] => 1 [5] => or [6] => checkleap [7] => #0 [8] => #1 [9] => 1 [10] => 0 ) ) [Black_Charging_Knight-Range] => Array ( [0] => mergeall [1] => leaps [2] => #0 [3] => 1 [4] => 2 [5] => leaps [6] => #0 [7] => 1 [8] => 1 [9] => leaps [10] => #0 [11] => 1 [12] => 0 ) [White_Charging_Rook] => Array ( [0] => checkride [1] => #0 [2] => #1 [3] => 1 [4] => 0 [5] => and [6] => <= [7] => rank [8] => #0 [9] => rank [10] => #1 [11] => or [12] => checkaleap [13] => #0 [14] => #1 [15] => -1 [16] => -1 [17] => or [18] => checkaleap [19] => #0 [20] => #1 [21] => -1 [22] => 0 [23] => or [24] => checkaleap [25] => #0 [26] => #1 [27] => -1 [28] => 1 ) [White_Charging_Rook-Range] => Array ( [0] => mergeall [1] => ray [2] => #0 [3] => 0 [4] => -1 [5] => ray [6] => #0 [7] => 1 [8] => 0 [9] => ray [10] => #0 [11] => 0 [12] => 1 [13] => where [14] => #0 [15] => -1 [16] => 1 [17] => where [18] => #0 [19] => 1 [20] => 0 [21] => where [22] => #0 [23] => 1 [24] => 1 ) [Black_Charging_Rook] => Array ( [0] => checkride [1] => #0 [2] => #1 [3] => 1 [4] => 0 [5] => and [6] => >= [7] => rank [8] => #0 [9] => rank [10] => #1 [11] => or [12] => checkaleap [13] => #0 [14] => #1 [15] => -1 [16] => 1 [17] => or [18] => checkaleap [19] => #0 [20] => #1 [21] => 1 [22] => 0 [23] => or [24] => checkaleap [25] => #0 [26] => #1 [27] => 1 [28] => 1 ) [Black_Charging_Rook-Range] => Array ( [0] => mergeall [1] => ray [2] => #0 [3] => 0 [4] => -1 [5] => ray [6] => #0 [7] => -1 [8] => 0 [9] => ray [10] => #0 [11] => 0 [12] => 1 [13] => where [14] => #0 [15] => -1 [16] => 1 [17] => where [18] => #0 [19] => 1 [20] => 0 [21] => where [22] => #0 [23] => 1 [24] => 1 ) [Chinese_Elephant] => Array ( [0] => checkpath [1] => #0 [2] => #1 [3] => 1 [4] => 1 [5] => 1 [6] => 1 ) [Chinese_Elephant-Range] => Array ( [0] => leaps [1] => #0 [2] => 2 [3] => 2 ) [White_Chinese_Elephant] => Array ( [0] => checkpath [1] => #0 [2] => #1 [3] => 1 [4] => 1 [5] => 1 [6] => 1 [7] => and [8] => < [9] => rank [10] => #1 [11] => + [12] => 1 [13] => / [14] => lastrank [15] => 2 ) [White_Chinese_Elephant-Range] => Array ( [0] => leaps [1] => #0 [2] => 2 [3] => 2 ) [Black_Chinese_Elephant] => Array ( [0] => checkpath [1] => #0 [2] => #1 [3] => 1 [4] => 1 [5] => 1 [6] => 1 [7] => and [8] => >= [9] => rank [10] => #1 [11] => + [12] => 1 [13] => / [14] => lastrank [15] => 2 ) [Black_Chinese_Elephant-Range] => Array ( [0] => leaps [1] => #0 [2] => 2 [3] => 2 ) [Chinese_General] => Array ( [0] => checkride [1] => #0 [2] => #1 [3] => 1 [4] => 0 [5] => and [6] => == [7] => Chinese_General [8] => const [9] => alias [10] => cond [11] => empty [12] => #0 [13] => capture [14] => space [15] => #1 [16] => or [17] => checkleap [18] => #0 [19] => #1 [20] => 0 [21] => 1 [22] => and [23] => flag [24] => #1 ) [Chinese_General-Range] => Array ( [0] => merge [1] => leaps [2] => #0 [3] => 1 [4] => 0 [5] => Array ( [0] => var [1] => kpos [2] => var [3] => Kpos ) ) [Chinese_Guard] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 1 [4] => 1 [5] => and [6] => flag [7] => #1 ) [Chinese_Guard-Range] => Array ( [0] => leaps [1] => #0 [2] => 1 [3] => 1 ) [White_Chinese_Pawn] => Array ( [0] => checkaleap [1] => #0 [2] => #1 [3] => -1 [4] => 0 [5] => or [6] => checkaleap [7] => #0 [8] => #1 [9] => 1 [10] => 0 [11] => and [12] => >= [13] => rank [14] => #0 [15] => + [16] => 1 [17] => / [18] => lastrank [19] => 2 [20] => or [21] => checkaleap [22] => #0 [23] => #1 [24] => 0 [25] => 1 ) [Black_Chinese_Pawn] => Array ( [0] => checkaleap [1] => #0 [2] => #1 [3] => -1 [4] => 0 [5] => or [6] => checkaleap [7] => #0 [8] => #1 [9] => 1 [10] => 0 [11] => and [12] => < [13] => rank [14] => #0 [15] => + [16] => 1 [17] => / [18] => lastrank [19] => 2 [20] => or [21] => checkaleap [22] => #0 [23] => #1 [24] => 0 [25] => -1 ) [White_Chinese_Pawn-Range] => Array ( [0] => leaps [1] => #0 [2] => 1 [3] => 0 ) [Black_Chinese_Pawn-Range] => Array ( [0] => leaps [1] => #0 [2] => 1 [3] => 0 ) [White_Colonel] => Array ( [0] => mergeall [1] => rays [2] => #0 [3] => 1 [4] => 0 [5] => leaps [6] => #0 [7] => 1 [8] => 2 [9] => leaps [10] => #0 [11] => 1 [12] => 1 ) [Black_Colonel] => Array ( [0] => mergeall [1] => rays [2] => #0 [3] => 1 [4] => 0 [5] => leaps [6] => #0 [7] => 1 [8] => 2 [9] => leaps [10] => #0 [11] => 1 [12] => 1 ) [Dabbabah] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 0 [4] => 2 ) [Dabbabah-Range] => Array ( [0] => leaps [1] => #0 [2] => 0 [3] => 2 ) [Dabbabahrider] => Array ( [0] => checkride [1] => #0 [2] => #1 [3] => 0 [4] => 2 ) [Dabbabahrider-Range] => Array ( [0] => rays [1] => #0 [2] => 0 [3] => 2 ) [Dragon_Horse] => Array ( [0] => checkride [1] => #0 [2] => #1 [3] => 1 [4] => 1 [5] => or [6] => checkleap [7] => #0 [8] => #1 [9] => 1 [10] => 0 ) [Dragon_Horse-Range] => Array ( [0] => merge [1] => leaps [2] => #0 [3] => 1 [4] => 0 [5] => rays [6] => #0 [7] => 1 [8] => 1 ) [Dragon_King] => Array ( [0] => checkride [1] => #0 [2] => #1 [3] => 1 [4] => 0 [5] => or [6] => checkleap [7] => #0 [8] => #1 [9] => 1 [10] => 1 ) [Dragon_King-Range] => Array ( [0] => merge [1] => leaps [2] => #0 [3] => 1 [4] => 1 [5] => rays [6] => #0 [7] => 1 [8] => 0 ) [Elephant] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 2 [4] => 2 ) [Elephant-Range] => Array ( [0] => leaps [1] => #0 [2] => 2 [3] => 2 ) [Elephantrider] => Array ( [0] => checkride [1] => #0 [2] => #1 [3] => 2 [4] => 2 ) [Elephantrider-Range] => Array ( [0] => rays [1] => #0 [2] => 2 [3] => 2 ) [Eques_Rex] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 1 [4] => 1 [5] => or [6] => checkleap [7] => #0 [8] => #1 [9] => 1 [10] => 0 [11] => or [12] => checkleap [13] => #0 [14] => #1 [15] => 1 [16] => 2 ) [Eques_Rex-Range] => Array ( [0] => merge [1] => leaps [2] => #0 [3] => 1 [4] => 2 [5] => merge [6] => leaps [7] => #0 [8] => 1 [9] => 0 [10] => leaps [11] => #0 [12] => 1 [13] => 1 ) [Fad] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 1 [4] => 1 [5] => or [6] => checkleap [7] => #0 [8] => #1 [9] => 2 [10] => 2 [11] => or [12] => checkleap [13] => #0 [14] => #1 [15] => 2 [16] => 0 ) [Fad-Range] => Array ( [0] => mergeall [1] => leaps [2] => #0 [3] => 1 [4] => 1 [5] => leaps [6] => #0 [7] => 2 [8] => 2 [9] => leaps [10] => #0 [11] => 2 [12] => 0 ) [Ferz] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 1 [4] => 1 ) [Ferz-Range] => Array ( [0] => leaps [1] => #0 [2] => 1 [3] => 1 ) [Fibnif] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 1 [4] => 2 [5] => or [6] => checkleap [7] => #0 [8] => #1 [9] => 1 [10] => 1 [11] => and [12] => == [13] => 1 [14] => abs [15] => - [16] => file [17] => #0 [18] => file [19] => #1 ) [Fibnif-Range] => Array ( [0] => merge [1] => leaps [2] => #0 [3] => 1 [4] => 2 [5] => leaps [6] => #0 [7] => 1 [8] => 1 ) [Giraffe] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 1 [4] => 4 ) [Giraffe-Range] => Array ( [0] => leaps [1] => #0 [2] => 1 [3] => 4 ) [White_Gold_General] => Array ( [0] => checkaleap [1] => #0 [2] => #1 [3] => 1 [4] => 1 [5] => or [6] => checkaleap [7] => #0 [8] => #1 [9] => -1 [10] => 1 [11] => or [12] => checkleap [13] => #0 [14] => #1 [15] => 0 [16] => 1 ) [White_Gold_General-Range] => Array ( [0] => mergeall [1] => leaps [2] => #0 [3] => 1 [4] => 0 [5] => where [6] => #0 [7] => 1 [8] => 1 [9] => where [10] => #0 [11] => -1 [12] => 1 ) [Black_Gold_General] => Array ( [0] => checkaleap [1] => #0 [2] => #1 [3] => 1 [4] => -1 [5] => or [6] => checkaleap [7] => #0 [8] => #1 [9] => -1 [10] => -1 [11] => or [12] => checkleap [13] => #0 [14] => #1 [15] => 0 [16] => 1 ) [Black_Gold_General-Range] => Array ( [0] => mergeall [1] => leaps [2] => #0 [3] => 1 [4] => 0 [5] => where [6] => #0 [7] => 1 [8] => -1 [9] => where [10] => #0 [11] => -1 [12] => -1 ) [Grasshopper] => Array ( [0] => checkgrasshop [1] => #0 [2] => #1 [3] => 1 [4] => 1 [5] => or [6] => checkgrasshop [7] => #0 [8] => #1 [9] => 1 [10] => 0 ) [Grasshopper-Range] => Array ( [0] => merge [1] => rays [2] => #0 [3] => 1 [4] => 0 [5] => rays [6] => #0 [7] => 1 [8] => 1 ) [Griffon] => Array ( [0] => fn [1] => Array ( [0] => checkride [1] => #0 [2] => #1 [3] => 1 [4] => 0 [5] => and [6] => empty [7] => #0 ) [2] => where [3] => #0 [4] => sign [5] => - [6] => file [7] => #1 [8] => file [9] => #0 [10] => sign [11] => - [12] => rank [13] => #1 [14] => rank [15] => #0 [16] => #1 [17] => and [18] => != [19] => file [20] => #1 [21] => file [22] => #0 [23] => and [24] => != [25] => rank [26] => #1 [27] => rank [28] => #0 [29] => or [30] => checkleap [31] => #0 [32] => #1 [33] => 1 [34] => 1 ) [Griffon-Range] => Array ( [0] => mergeall [1] => leaps [2] => #0 [3] => 1 [4] => 1 [5] => rays [6] => where [7] => #0 [8] => 1 [9] => 1 [10] => 1 [11] => 0 [12] => rays [13] => where [14] => #0 [15] => 1 [16] => -1 [17] => 1 [18] => 0 [19] => rays [20] => where [21] => #0 [22] => -1 [23] => -1 [24] => 1 [25] => 0 [26] => rays [27] => where [28] => #0 [29] => -1 [30] => 1 [31] => 1 [32] => 0 ) [King] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 1 [4] => 1 [5] => or [6] => checkleap [7] => #0 [8] => #1 [9] => 1 [10] => 0 ) [King-Range] => Array ( [0] => merge [1] => leaps [2] => #0 [3] => 1 [4] => 0 [5] => leaps [6] => #0 [7] => 1 [8] => 1 ) [Knight] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 1 [4] => 2 ) [Knight-Range] => Array ( [0] => leaps [1] => #0 [2] => 1 [3] => 2 ) [Korean_Elephant] => Array ( [0] => checkpath [1] => #0 [2] => #1 [3] => 1 [4] => 0 [5] => 1 [6] => 1 [7] => 1 [8] => 1 ) [Korean_Elephant-Range] => Array ( [0] => leaps [1] => #0 [2] => 2 [3] => 3 ) [White_Lance] => Array ( [0] => checkaride [1] => #0 [2] => #1 [3] => 0 [4] => 1 ) [White_Lance-Range] => Array ( [0] => ray [1] => #0 [2] => 0 [3] => 1 ) [Black_Lance] => Array ( [0] => checkaride [1] => #0 [2] => #1 [3] => 0 [4] => -1 ) [Black_Lance-Range] => Array ( [0] => ray [1] => #0 [2] => 0 [3] => -1 ) [Leo] => Array ( [0] => fn [1] => Vao [2] => #0 [3] => #1 [4] => or [5] => fn [6] => Cannon [7] => #0 [8] => #1 ) [Leo-Range] => Array ( [0] => merge [1] => rays [2] => #0 [3] => 1 [4] => 0 [5] => rays [6] => #0 [7] => 1 [8] => 1 ) [Mao] => Array ( [0] => checktwostep [1] => #0 [2] => #1 [3] => 0 [4] => 1 [5] => 1 [6] => 1 ) [Mao-Range] => Array ( [0] => leaps [1] => #0 [2] => 1 [3] => 2 ) [Marshall] => Array ( [0] => fn [1] => Knight [2] => #0 [3] => #1 [4] => or [5] => fn [6] => Rook [7] => #0 [8] => #1 ) [Marshall-Range] => Array ( [0] => merge [1] => rays [2] => #0 [3] => 1 [4] => 0 [5] => leaps [6] => #0 [7] => 1 [8] => 2 ) [Moa] => Array ( [0] => checktwostep [1] => #0 [2] => #1 [3] => 1 [4] => 1 [5] => 0 [6] => 1 ) [Moa-Range] => Array ( [0] => leaps [1] => #0 [2] => 1 [3] => 2 ) [Murray_Lion] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 1 [4] => 0 [5] => or [6] => checkleap [7] => #0 [8] => #1 [9] => 1 [10] => 1 [11] => and [12] => cond [13] => empty [14] => #0 [15] => capture [16] => Array ( [0] => not [1] => empty [2] => #1 ) [17] => or [18] => checkleap [19] => #0 [20] => #1 [21] => 2 [22] => 2 [23] => or [24] => checkleap [25] => #0 [26] => #1 [27] => 0 [28] => 2 ) [Murray_Lion-Range] => Array ( [0] => merge [1] => merge [2] => leaps [3] => #0 [4] => 2 [5] => 0 [6] => leaps [7] => #0 [8] => 2 [9] => 2 [10] => merge [11] => leaps [12] => #0 [13] => 1 [14] => 0 [15] => leaps [16] => #0 [17] => 1 [18] => 1 ) [Nightrider] => Array ( [0] => checkride [1] => #0 [2] => #1 [3] => 1 [4] => 2 ) [Nightrider-Range] => Array ( [0] => rays [1] => #0 [2] => 1 [3] => 2 ) [White_Pawn] => Array ( [0] => remove [1] => var [2] => ep [3] => and [4] => < [5] => rankname [6] => #1 [7] => var [8] => bpr [9] => and [10] => < [11] => rankname [12] => var [13] => ep [14] => rankname [15] => #1 [16] => and [17] => == [18] => filename [19] => var [20] => ep [21] => filename [22] => #1 [23] => and [24] => checkleap [25] => #0 [26] => #1 [27] => 1 [28] => 1 [29] => and [30] => var [31] => ep [32] => or [33] => and [34] => checkride [35] => #0 [36] => #1 [37] => 0 [38] => 1 [39] => == [40] => rankname [41] => #0 [42] => var [43] => wpr [44] => or [45] => checkleap [46] => #0 [47] => #1 [48] => 0 [49] => 1 [50] => and [51] => empty [52] => #1 [53] => and [54] => != [55] => var [56] => movetype [57] => CHECK [58] => or [59] => and [60] => islower [61] => space [62] => #1 [63] => checkleap [64] => #0 [65] => #1 [66] => 1 [67] => 1 [68] => and [69] => any [70] => onboard [71] => where [72] => #1 [73] => 0 [74] => 1 [75] => == [76] => var [77] => movetype [78] => CHECK [79] => count [80] => var [81] => wprom [82] => and [83] => <= [84] => distance [85] => #0 [86] => #1 [87] => var [88] => fps [89] => and [90] => > [91] => rank [92] => #1 [93] => rank [94] => #0 ) [Black_Pawn] => Array ( [0] => remove [1] => var [2] => ep [3] => and [4] => > [5] => rankname [6] => #1 [7] => var [8] => wpr [9] => and [10] => > [11] => rankname [12] => var [13] => ep [14] => rankname [15] => #1 [16] => and [17] => == [18] => filename [19] => var [20] => ep [21] => filename [22] => #1 [23] => and [24] => checkleap [25] => #0 [26] => #1 [27] => 1 [28] => 1 [29] => and [30] => var [31] => ep [32] => or [33] => and [34] => checkride [35] => #0 [36] => #1 [37] => 0 [38] => 1 [39] => == [40] => rankname [41] => #0 [42] => var [43] => bpr [44] => or [45] => checkleap [46] => #0 [47] => #1 [48] => 0 [49] => 1 [50] => and [51] => empty [52] => #1 [53] => and [54] => != [55] => var [56] => movetype [57] => CHECK [58] => or [59] => and [60] => isupper [61] => space [62] => #1 [63] => checkleap [64] => #0 [65] => #1 [66] => 1 [67] => 1 [68] => and [69] => any [70] => count [71] => var [72] => bprom [73] => onboard [74] => where [75] => #1 [76] => 0 [77] => -1 [78] => == [79] => var [80] => movetype [81] => CHECK [82] => and [83] => <= [84] => distance [85] => #0 [86] => #1 [87] => var [88] => fps [89] => and [90] => < [91] => rank [92] => #1 [93] => rank [94] => #0 ) [White_Pawn-Range] => Array ( [0] => array [1] => where [2] => #0 [3] => 0 [4] => 2 [5] => where [6] => #0 [7] => 0 [8] => 1 [9] => where [10] => #0 [11] => -1 [12] => 1 [13] => where [14] => #0 [15] => 1 [16] => 1 ) [Black_Pawn-Range] => Array ( [0] => array [1] => where [2] => #0 [3] => 0 [4] => -2 [5] => where [6] => #0 [7] => 0 [8] => -1 [9] => where [10] => #0 [11] => -1 [12] => -1 [13] => where [14] => #0 [15] => 1 [16] => -1 ) [Queen] => Array ( [0] => fn [1] => Bishop [2] => #0 [3] => #1 [4] => or [5] => fn [6] => Rook [7] => #0 [8] => #1 ) [Queen-Range] => Array ( [0] => merge [1] => rays [2] => #0 [3] => 1 [4] => 0 [5] => rays [6] => #0 [7] => 1 [8] => 1 ) [Rook] => Array ( [0] => checkride [1] => #0 [2] => #1 [3] => 1 [4] => 0 ) [Rook-Range] => Array ( [0] => rays [1] => #0 [2] => 1 [3] => 0 ) [Short_Rook] => Array ( [0] => checkride [1] => #0 [2] => #1 [3] => 1 [4] => 0 [5] => and [6] => <= [7] => distance [8] => #0 [9] => #1 [10] => 4 ) [Short_Rook-Range] => Array ( [0] => merge [1] => merge [2] => leaps [3] => #0 [4] => 1 [5] => 0 [6] => leaps [7] => #0 [8] => 2 [9] => 0 [10] => merge [11] => leaps [12] => #0 [13] => 3 [14] => 0 [15] => leaps [16] => #0 [17] => 4 [18] => 0 ) [White_Shogi_Knight] => Array ( [0] => array [1] => where [2] => #0 [3] => 1 [4] => 2 [5] => where [6] => #0 [7] => -1 [8] => 2 ) [Black_Shogi_Knight] => Array ( [0] => array [1] => where [2] => #0 [3] => 1 [4] => -2 [5] => where [6] => #0 [7] => -1 [8] => -2 ) [White_Shogi_Pawn] => Array ( [0] => checkaleap [1] => #0 [2] => #1 [3] => 0 [4] => 1 ) [White_Shogi_Pawn-Range] => Array ( [0] => where [1] => #0 [2] => 0 [3] => 1 ) [Black_Shogi_Pawn] => Array ( [0] => checkaleap [1] => #0 [2] => #1 [3] => 0 [4] => -1 ) [Black_Shogi_Pawn-Range] => Array ( [0] => where [1] => #0 [2] => 0 [3] => -1 ) [White_Silver_General] => Array ( [0] => checkaleap [1] => #0 [2] => #1 [3] => 0 [4] => 1 [5] => or [6] => checkleap [7] => #0 [8] => #1 [9] => 1 [10] => 1 ) [White_Silver_General-Range] => Array ( [0] => mergeall [1] => leaps [2] => #0 [3] => 1 [4] => 1 [5] => where [6] => #0 [7] => 0 [8] => 1 ) [Black_Silver_General] => Array ( [0] => checkaleap [1] => #0 [2] => #1 [3] => 0 [4] => -1 [5] => or [6] => checkleap [7] => #0 [8] => #1 [9] => 1 [10] => 1 ) [Black_Silver_General-Range] => Array ( [0] => mergeall [1] => leaps [2] => #0 [3] => 1 [4] => 1 [5] => where [6] => #0 [7] => 0 [8] => -1 ) [Squirrel] => Array ( [0] => fn [1] => Elephant [2] => #0 [3] => #1 [4] => or [5] => fn [6] => Dabbabah [7] => #0 [8] => #1 [9] => or [10] => fn [11] => Knight [12] => #0 [13] => #1 ) [Squirrel-Range] => Array ( [0] => mergeall [1] => leaps [2] => #0 [3] => 2 [4] => 2 [5] => leaps [6] => #0 [7] => 2 [8] => 0 [9] => leaps [10] => #0 [11] => 1 [12] => 2 ) [Spider] => Array ( [0] => fn [1] => Dabbabah [2] => #0 [3] => #1 [4] => or [5] => fn [6] => Elephant [7] => #0 [8] => #1 ) [Spider-Range] => Array ( [0] => merge [1] => leaps [2] => #0 [3] => 2 [4] => 2 [5] => leaps [6] => #0 [7] => 0 [8] => 2 ) [Spider-rider] => Array ( [0] => fn [1] => Dabbabahrider [2] => #0 [3] => #1 [4] => or [5] => fn [6] => Elephantrider [7] => #0 [8] => #1 ) [Spider-rider-Range] => Array ( [0] => merge [1] => rays [2] => #0 [3] => 2 [4] => 2 [5] => rays [6] => #0 [7] => 0 [8] => 2 ) [Squire] => Array ( [0] => checktwostep [1] => #0 [2] => #1 [3] => 0 [4] => 1 [5] => 1 [6] => 1 [7] => or [8] => checktwostep [9] => #0 [10] => #1 [11] => 1 [12] => 1 [13] => 0 [14] => 1 ) [Squire-Range] => Array ( [0] => leaps [1] => #0 [2] => 1 [3] => 2 ) [Unicorn] => Array ( [0] => fn [1] => Nightrider [2] => #0 [3] => #1 [4] => or [5] => fn [6] => Bishop [7] => #0 [8] => #1 ) [Unicorn-Range] => Array ( [0] => merge [1] => rays [2] => #0 [3] => 1 [4] => 2 [5] => rays [6] => #0 [7] => 1 [8] => 1 ) [Vao] => Array ( [0] => cond [1] => cond [2] => empty [3] => #0 [4] => capture [5] => Array ( [0] => not [1] => empty [2] => #1 ) [6] => Array ( [0] => checkhop [1] => #0 [2] => #1 [3] => 1 [4] => 1 ) [7] => Array ( [0] => checkride [1] => #0 [2] => #1 [3] => 1 [4] => 1 ) [8] => and [9] => #1 ) [Vao-Range] => Array ( [0] => rays [1] => #0 [2] => 1 [3] => 1 ) [Wazir] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 1 [4] => 0 ) [Wazir-Range] => Array ( [0] => leaps [1] => #0 [2] => 1 [3] => 0 ) [Wizard] => Array ( [0] => fn [1] => Ferz [2] => #0 [3] => #1 [4] => or [5] => fn [6] => Camel [7] => #0 [8] => #1 ) [Wizard-Range] => Array ( [0] => merge [1] => leaps [2] => #0 [3] => 1 [4] => 1 [5] => leaps [6] => #0 [7] => 1 [8] => 3 ) [Woody_Rook] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 0 [4] => 2 [5] => or [6] => checkleap [7] => #0 [8] => #1 [9] => 0 [10] => 1 ) [Woody_Rook-Range] => Array ( [0] => merge [1] => leaps [2] => #0 [3] => 0 [4] => 1 [5] => leaps [6] => #0 [7] => 0 [8] => 2 ) [Zebra] => Array ( [0] => checkleap [1] => #0 [2] => #1 [3] => 2 [4] => 3 ) [Zebra-Range] => Array ( [0] => leaps [1] => #0 [2] => 2 [3] => 3 ) [Elephant_Ferz] => Array ( [0] => fn [1] => Ferz [2] => #0 [3] => #1 [4] => or [5] => fn [6] => Elephant [7] => #0 [8] => #1 ) [Elephant_Ferz-Range] => Array ( [0] => merge [1] => leaps [2] => #0 [3] => 2 [4] => 2 [5] => leaps [6] => #0 [7] => 1 [8] => 1 ) [Elephant_Wazir] => Array ( [0] => fn [1] => Wazir [2] => #0 [3] => #1 [4] => or [5] => fn [6] => Elephant [7] => #0 [8] => #1 ) [Elephant_Wazir-Range] => Array ( [0] => merge [1] => leaps [2] => #0 [3] => 2 [4] => 2 [5] => leaps [6] => #0 [7] => 1 [8] => 0 ) [Half_Duck] => Array ( [0] => fn [1] => Ferz [2] => #0 [3] => #1 [4] => or [5] => fn [6] => Dabbabah [7] => #0 [8] => #1 [9] => or [10] => checkleap [11] => #0 [12] => #1 [13] => 3 [14] => 0 ) [Half_Duck-Range] => Array ( [0] => mergeall [1] => leaps [2] => #0 [3] => 1 [4] => 1 [5] => leaps [6] => #0 [7] => 2 [8] => 0 [9] => leaps [10] => #0 [11] => 3 [12] => 0 ) [Knight_Wazir] => Array ( [0] => fn [1] => Knight [2] => #0 [3] => #1 [4] => or [5] => fn [6] => Wazir [7] => #0 [8] => #1 ) [Knight_Wazir-Range] => Array ( [0] => merge [1] => leaps [2] => #0 [3] => 1 [4] => 2 [5] => leaps [6] => #0 [7] => 1 [8] => 0 ) [Frog] => Array ( [0] => fn [1] => Ferz [2] => #0 [3] => #1 [4] => or [5] => checkleap [6] => #0 [7] => #1 [8] => 3 [9] => 0 ) [Frog-Range] => Array ( [0] => merge [1] => leaps [2] => #0 [3] => 1 [4] => 1 [5] => leaps [6] => #0 [7] => 3 [8] => 0 ) [@] => Array ( [0] => false ) [enemies] => Array ( [0] => onlylower ) )

uservar

Array ( [0] => Array ( [main] => Array ( [kpos] => e10 [Kpos] => e1 [message] => Set the wpr variable to the value of White's Pawn Rank. This is the single rank on which all of White's Pawns start. This would be 2 for Chess.
[ep] => [Aanca-Desc] => The %s may move one space orthgonally, and so long as it is unblocked, it may continue its move in an outward diagonal direction. [Amazon-Desc] => The %s may move in a straight line in any direction, as a Queen does, or it may leap the the opposite end of a 1x2 rectangle, as a Knight does. [Bede-Desc] => The %s may move along any diagonal line, as a Bishop does, or it may leap two spaces away in any orthogonal direction, as a Dabababah does. [White_Berolina_Pawn-Desc] => The %s may move one space diagonally forward without capturing, or it may move one space straight forward to capture. On its first move, it may move two spaces diagonally forward without capturing so long as it isn't blocked. If this move takes it next to an enemy %s that could have captured it if it had just moved one space, that %s may immediately capture it by en passant, moving to the space it passed over. On reaching the last rank, it may promote. [Black_Berolina_Pawn-Desc] => The %s may move one space diagonally forward without capturing, or it may move one space straight forward to capture. On its first move, it may move two spaces diagonally forward without capturing so long as it isn't blocked. If this move takes it next to an enemy %s that could have captured it if it had just moved one space, that %s may immediately capture it by en passant, moving to the space it passed over. On reaching the last rank, it may promote. [Bishop-Desc] => The %s may move diagonally any number of spaces until it reaches an occupied space. [Cannon-Desc] => The %s moves any number of spaces orthogonally, as a Rook does, but it must hop over an intervening piece to capture. [Camel-Desc] => The %s leaps to any space at the opposite corner of a 1x3 rectangle. [Camelrider-Desc] => The %s may make any number of Camel moves in the same direction until it lands on an occupied space. [Cardinal-Desc] => The %s may move along diagonals as a Bishop or leap as a Knight. [Champion-Desc] => The %s may leap one or two spaces orthogonally or two spaces diagonally. [White_Charging_Knight-Desc] => The %s may leap forward as a Knight or move one space sideways or backwards like a King. [Black_Charging_Knight-Desc] => The %s may leap forward as a Knight or move one space sideways or backwards like a King. [White_Charging_Rook-Desc] => The %s may move forward or sideways along its file or rank like a Rook, or it may move one space backwards in any direction like a King. [Black_Charging_Rook-Desc] => The %s may move forward or sideways along its file or rank like a Rook, or it may move one space backwards in any direction like a King. [Chinese_Elephant-Desc] => The %s may move two spaces diagonally so long as the space in between is empty. [White_Chinese_Elephant-Desc] => The %s may move two spaces diagonally so long as the space in between is empty, but it is confined to the ranks on its own side of the board. [Black_Chinese_Elephant-Desc] => The %s may move two spaces diagonally so long as the space in between is empty, but it is confined to the ranks on its own side of the board. [Chinese_General-Desc] => The %s may move one space orthogonally within the confines of the Palace, or it may threaten check against the opponent's %s along an open file. [Chinese_Guard-Desc] => The %s may move one space diagonally within the confines of the palace. [White_Chinese_Pawn-Desc] => The %s may move one space forward. Once it has reached the other side of the board, it may also move one space sideways. [Black_Chinese_Pawn-Desc] => The %s may move one space forward. Once it has reached the other side of the board, it may also move one space sideways. [White_Colonel-Desc] => The %s may move forward or sideways as a Rook, forward as a Knight, and one space in any direction as a King. [Black_Colonel-Desc] => The %s may move forward or sideways as a Rook, forward as a Knight, and one space in any direction as a King. [Dabbabah-Desc] => The %s may leap two spaces vertically or horizontally. [Dabbabahrider-Desc] => The %s may make any number of two space orthogonal leaps in the same direction until it reaches an occupied space. [Dragon_Horse-Desc] => The %s may move along diagonals as a Bishop or move on space orthogonally as a Wazir. [Dragon_King-Desc] => The %s may move along its rank or file as a Rook or one space diagonally as a Ferz. [Elephant-Desc] => The %s may leap two spaces in any diagonal direction. [Elephantrider-Desc] => The %s may make a series of two-space diagonal leaps in the same direction. Each leap but the last must be to an empty space, though a leap may take it over an intervening piece. [Eques_Rex-Desc] => The %s may move to any adjacent space as a King or leap like a Knight. [Fad-Desc] => The %s may move one space diagonally, or it may leap two spaces diagonally or orthogonally. [Ferz-Desc] => The %s may move one space diagonally. [Fibnif-Desc] => The %s may move one space diagonally or leap as a Knight to any space that is one file and two ranks away. [Giraffe-Desc] => The %s may leap to any space that is one file and four ranks or one rank and four files away. [White_Gold_General-Desc] => The %s may move one space in any orthgonal direction or one space diagonally forward. [Black_Gold_General-Desc] => The %s may move one space in any orthgonal direction or one space diagonally forward. [The %s moves any number of spaces orthogonally or diagonally like a Queen except that it must hop over exactly one piece, and it must end its move immediately after the piece it hopped over] => Array ( [] => ) [Griffon-Desc] => The %s may move one space diagonally, and it may continue its move by moving as a Rook in an outward orthogonal direction. It may not pass over other pieces. [King-Desc] => The %s leaps one space in any direction. It may castle with a rook on its first move so long as it is not in check, there is nothing in between it and the rook, it doesn't pass through check while castling, and the rook hasn't moved. [Knight-Desc] => The %s may leap to any space that is one rank and two files away or two ranks and one file away. [The %s may move one space orthogonally, followed by two more spaces in the same outward diagonal direction] => Array ( [ It must complete every part of its move, and it may not pass over an occupied space] => Array ( [] => ) ) [The %s may move forward in its file as a Rook] => Array ( [] => ) [Leo-Desc] => The %s may move any number of spaces diagonally or orthogonally, as a Queen does, but it must hop over one intervening piece when it captures. [Mao-Desc] => The %s moves one space orthogonally, followed by one more space in an outward diagonal direction. It must complete both parts of its move, and it may not pass over an occupied space. It can reach the same spaces as a Knight except that it can be blocked on the first step of its two-space move. [Marshall-Desc] => The %s moves orthogonally as a Rook or leaps as a Knight. [Moa-Desc] => The %s moves one space diagonally, followed by one more space in an outward orthogonal direction. It must complete both parts of its move, and it may not pass over an occupied space. It can reach the same spaces as a Knight except that it can be blocked on the first step of its two-space move. [Murray_Lion-Desc] => The %s may leap two spaces in any diagonal or orthogonal direction, and it may capture (but not otherwise move) one space in any direction. [Nightrider-Desc] => The %s may leap as a Knight any number of times in the same direction. While each Knight leap may take it over other pieces, each leap but the last must be to an empty space. [White_Pawn-Desc] => The %s may move one space straight forward without capturing, or it may move one space diagonally forward to capture. On its first move, it may move two spaces forward without capturing so long as it isn't blocked. If this move takes it next to an enemy %s that could have captured it if it had just moved one space, that %s may immediately capture it by en passant, moving to the space it passed over. On reaching the last rank, it may promote. [Black_Pawn-Desc] => The %s may move one space straight forward without capturing, or it may move one space diagonally forward to capture. On its first move, it may move two spaces forward without capturing so long as it isn't blocked. If this move takes it next to an enemy %s that could have captured it if it had just moved one space, that %s may immediately capture it by en passant, moving to the space it passed over. On reaching the last rank, it may promote. [Queen-Desc] => The %s may move any number of spaces in any orthogonal or diagonal direction until it reaches an occupied space. [Rook-Desc] => The %s may move any number of spaces in any vertical or horizontal direction until it reaches an occupied space. [The %s may move up to four spaces along its rank or file as a Rook] => Array ( [] => ) [White_Shogi_Knight-Desc] => The %s may leap to either space that is two ranks ahead and one file to the side. [Black_Shogi_Knight-Desc] => The %s may leap to either space that is two ranks ahead and one file to the side. [White_Shogi_Pawn-Desc] => The %s map move one space forward in the same file. [Black_Shogi_Pawn-Desc] => The %s map move one space forward in the same file. [White_Silver_General-Desc] => The %s may move one space in any diagonal direction or one space vertically foward. [Black_Silver_General-Desc] => The %s may move one space in any diagonal direction or one space vertically foward. [Squirrel-Desc] => The %s may leap any non-adjacent space that is no more than two spaces away. [Spider-Desc] => The %s may leap to any space that is two spaces away orthogonally or diagonally. [Spider-rider-Desc] => The %s may make any number of two-space leaps in a single orthogonal or diagonal direction. While each leap may take it over an occupied space, each leap but the last must be to an empty space. [Squire-Desc] => The %s may move one space orthogonally, followed by one more space in an outward diagonal direction, or it may move one space diagonally, followed by one more space in an outward orthogonal direction. It must complete both parts of its move, and it may not pass over an occupied space. It can reach the same spaces as a Knight except that it can be blocked on the first step of its two-space move. [Unicorn-Desc] => The %s may make consecutive Knight moves in the same direction, as a Nightrider does, or it may move diagonally as a Bishop. [Vao-Desc] => The %s may move diagonally as a Bishop, but it must hop over exactly one intervening piece when it captures. [Wazir-Desc] => The %s may move one space horizontally or vertically. [Wizard-Desc] => The %s Wizard may move one space diagonally, or it may leap to a space three ranks and one file or three files and one rank away, as a Camel does. [Woody_Rook-Desc] => The %s may leap one or two spaces orthogonally. It may pass over another piece when moving two spaces. [Zebra-Desc] => The %s may leap to any space that is 2 ranks and 3 files or 2 files and 3 ranks away. [Elephant_Ferz-Desc] => The %s may leap one or two spaces diagonally. It may pass over another piece when moving two spaces. [Elephant_Wazir-Desc] => The %s may move one space orthogonally, as a Wazir, or leap two spaces diagonally, as an Elephant. [Half_Duck-Desc] => The %s may move one space diagonally, or it may leap 2 or 3 spaces orthogonally, passing over any pieces in the way. [Knight_Wazir-Desc] => The %s may move one space orthogonally, as a Wazir, or it may leap as a Knight to any space one file and two ranks or two files and one rank away. [Frog-Desc] => The %s may move one space diagonally or directly leap 3 spaces orthogonally. [codename] => Cannon ) ) [1] => Array ( [postauto1] => Array ( [subargs] => Array ( ) ) ) [3] => Array ( [checked] => Array ( [subargs] => Array ( [0] => e1 ) [from] => a10 [piece] => r ) [main] => Array ( [king] => e1 [movetype] => CHECK ) ) )

mline

Array ( [0] => MoveLine Object ( [movenum] => 1 [move] => C h3-e3 [level] => 0 [comment] => [length] => 10 [newturn] => 1 [turn] => 1 ) [1] => MoveLine Object ( [movenum] => 2 [move] => n h10-g8 [level] => 0 [comment] => [length] => 13 [newturn] => [turn] => 1 ) [2] => MoveLine Object ( [movenum] => 3 [move] => N h1-g3 [level] => 0 [comment] => [length] => 10 [newturn] => 1 [turn] => 2 ) [3] => MoveLine Object ( [movenum] => 4 [move] => p c7-c6 [level] => 0 [comment] => [length] => 12 [newturn] => [turn] => 2 ) [4] => MoveLine Object ( [movenum] => 5 [move] => P g4-g5 [level] => 0 [comment] => [length] => 10 [newturn] => 1 [turn] => 3 ) [5] => MoveLine Object ( [movenum] => 6 [move] => c b8-e8 [level] => 0 [comment] => [length] => 12 [newturn] => [turn] => 3 ) [6] => MoveLine Object ( [movenum] => 7 [move] => R i1-i2 [level] => 0 [comment] => [length] => 10 [newturn] => 1 [turn] => 4 ) [7] => MoveLine Object ( [movenum] => 8 [move] => r a10-a9 [level] => 0 [comment] => [length] => 13 [newturn] => [turn] => 4 ) [8] => MoveLine Object ( [movenum] => 9 [move] => R i2-f2 [level] => 0 [comment] => [length] => 10 [newturn] => 1 [turn] => 5 ) [9] => MoveLine Object ( [movenum] => 10 [move] => n b10-c8 [level] => 0 [comment] => [length] => 13 [newturn] => [turn] => 5 ) [10] => MoveLine Object ( [movenum] => 11 [move] => R a1-a2 [level] => 0 [comment] => [length] => 10 [newturn] => 1 [turn] => 6 ) [11] => MoveLine Object ( [movenum] => 12 [move] => n c8-d6 [level] => 0 [comment] => [length] => 12 [newturn] => [turn] => 6 ) [12] => MoveLine Object ( [movenum] => 13 [move] => R a2-d2 [level] => 0 [comment] => [length] => 10 [newturn] => 1 [turn] => 7 ) [13] => MoveLine Object ( [movenum] => 14 [move] => n d6-e4 [level] => 0 [comment] => [length] => 12 [newturn] => [turn] => 7 ) [14] => MoveLine Object ( [movenum] => 15 [move] => N g3-e4 [level] => 0 [comment] => [length] => 10 [newturn] => 1 [turn] => 8 ) [15] => MoveLine Object ( [movenum] => 16 [move] => c e8-e4 [level] => 0 [comment] => // - Check! - [length] => 26 [newturn] => [turn] => 8 ) [16] => MoveLine Object ( [movenum] => 17 [move] => F f1-e2 [level] => 0 [comment] => [length] => 10 [newturn] => 1 [turn] => 9 ) [17] => MoveLine Object ( [movenum] => 18 [move] => c h8-h1 [level] => 0 [comment] => // - Check! - [length] => 26 [newturn] => [turn] => 9 ) [18] => MoveLine Object ( [movenum] => 19 [move] => resign [level] => 0 [comment] => // - per hommerberg has resigned. - [length] => 46 [newturn] => 1 [turn] => 10 ) )

allmoves

Array ( [0] => moveindex 18;MOVE: resign;postauto1 [1] => moveindex 17;MOVE: c h8-h1;postauto2 [2] => moveindex 16;MOVE: F f1-e2;postauto1 [3] => moveindex 15;MOVE: c e8-e4;postauto2 [4] => moveindex 14;MOVE: N g3-e4;postauto1 [5] => moveindex 13;MOVE: n d6-e4;postauto2 [6] => moveindex 12;MOVE: R a2-d2;postauto1 [7] => moveindex 11;MOVE: n c8-d6;postauto2 [8] => moveindex 10;MOVE: R a1-a2;postauto1 [9] => moveindex 9;MOVE: n b10-c8;postauto2 [10] => moveindex 8;MOVE: R i2-f2;postauto1 [11] => moveindex 7;MOVE: r a10-a9;postauto2 [12] => moveindex 6;MOVE: R i1-i2;postauto1 [13] => moveindex 5;MOVE: c b8-e8;postauto2 [14] => moveindex 4;MOVE: P g4-g5;postauto1 [15] => moveindex 3;MOVE: p c7-c6;postauto2 [16] => moveindex 2;MOVE: N h1-g3;postauto1 [17] => moveindex 1;MOVE: n h10-g8;postauto2 [18] => moveindex 0;MOVE: C h3-e3;postauto1 )

movelist

1. C h3-e3 1... n h10-g8 2. N h1-g3 2... p c7-c6 3. P g4-g5 3... c b8-e8 4. R i1-i2 4... r a10-a9 5. R i2-f2 5... n b10-c8 6. R a1-a2 6... n c8-d6 7. R a2-d2 7... n d6-e4 8. N g3-e4 8... c e8-e4 // - Check! - 9. F f1-e2 9... c h8-h1 // - Check! - 10. resign // - per hommerberg has resigned. -

constants

Array ( [c] => Cannon [C] => Cannon [R] => Chariot [r] => Chariot [N] => Horse [n] => Horse [f] => Guard [F] => Guard [g] => General [G] => General [E] => Minister [e] => Elephant [P] => Red_Soldier [p] => Blue_Soldier )