Fix Tori and Alien Wa
authorH.G.Muller <hgm@hgm-xboard.(none)>
Mon, 19 Feb 2018 13:12:52 +0000 (14:12 +0100)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Mon, 19 Feb 2018 13:12:52 +0000 (14:12 +0100)
Slipping in the alternative definition of Wa Shogi as 11x17+16_chu, for
the benefit of the WinBoard Alien Edition, had broken Tori Shogi, as
well as being defective itself, because the ptc[], betza[] and pstType[]
and lances[] tables (which are indexed by the variant number) were not
adapted to the new variant numbering.

dropper.c

index f45319d..93e3a7a 100644 (file)
--- a/dropper.c
+++ b/dropper.c
@@ -340,7 +340,7 @@ shogiProms[16] = { Z_MUST, Z_2ND, COLOR, 0, Z_MUST, Z_MUST, Z_2ND },
 toriProms[16]  = { Z_MUST, 0, 0, 0, 0, Z_MUST },
 waProms[16]    = { Z_MUST, Z_2ND, Z_MUST, Z_MUST, Z_MUST, COLOR, COLOR, Z_MUST, Z_MUST, Z_MUST, COLOR, Z_MUST, COLOR, Z_MUST };
 
-int lances[] = { 1, 3, 0103, 0103, 3, 1, 1 }; // bitmap indicating piece types with drop restriction (LSB = Pawn) in various variants
+int lances[] = { 1, 3, 0103, 0103, 3, 3, 1 }; // bitmap indicating piece types with drop restriction (LSB = Pawn) in various variants
 
 char *betza[] = { // piece defs for sending to GUI
   NULL, // suppresses setup command
@@ -349,6 +349,7 @@ char *betza[] = { // piece defs for sending to GUI
   NULL,
   ",P& fW,L& fWbF,U& fWbF,C& fFsW,G& fFvW,M& fFvW,D& fFbsW,V& FfW,W& WfF,O& fR,H& fRbW2,S& sRvW,F& BfW,E& vRfF3bFsW,R& fRFbW,X& FAvWvD"
   ",+P& WfF,+L& vRfF3bFsW,+U& BfW,+C& vRfFsW,+G& sRvW,+M& FfW,+D& WfF,+V& FfsW,+W& K,+O& K,+H& vN,+S& R,+F& BvRsW,+R& FAvWvD",
+  NULL,
   ",S& fW,P& fDbF,L& fRbrBblF,R& fRblBbrF,C& FvW,F& FfsW,+S& fAbD,+F& fBbRbF2fsW",
 };
 
@@ -359,6 +360,7 @@ char *ptc[] = { // XBoard 4.9 piece-to-char table
   NULL,
   "P..^S^FV..^LW^OH.F.^R.E....R...D.GOL^M..^H.M.C.^CU.^W../.......^V.^P.^U..^DS.^GXK"
   "p..^s^fv..^lw^oh.f.^r.e....r...d.gol^m..^h.m.c.^cu.^w../.......^v.^p.^u..^ds.^gxk",
+   NULL,
   "S.....F..........^F.P........^S....L........C......RKs.....f..........^f.p........^s....l........c......rk"
 };
 
@@ -368,6 +370,7 @@ char *pstType[] = {
   "3077160 7777187",
   "3077160 7777187",
   "3055676777060100 77100787777801",
+  "3055676777060100 77100787777801",
   "770076 100001"
 };
 
@@ -459,9 +462,9 @@ GameInit (char *name)
 
     // determine variant parameters
     if(sscanf(name, "%dx%d+%d_%c", &f, &r, &i, &c) == 4) {
-       for(v=TORI_NR; --v>0; ) if(variants[v].files == f && variants[v].ranks == r && variants[v].hand == i) break;
+       for(v=TORI_NR+1; --v>0; ) if(variants[v].files == f && variants[v].ranks == r && variants[v].hand == i) break;
     } else
-    for(v=TORI_NR; --v>0;) if(!strcmp(name, variants[v].name)) break;
+    for(v=TORI_NR+1; --v>0;) if(!strcmp(name, variants[v].name)) break;
     nrFiles = variants[v].files;
     nrRanks = variants[v].ranks;
     zone    = variants[v].zone;