Implement variant Makruk
[fairymax.git] / fairymax.c
index aa845dc..b5086d5 100644 (file)
@@ -92,6 +92,7 @@ int GameNr;
 int Resign;\r
 int Threshold = 800;\r
 int Score;\r
+int makruk;\r
 char piecename[32], piecetype[32], blacktype[32];\r
 char *inifile = INI_FILE;\r
 \r
@@ -192,6 +193,7 @@ int k,q,l,e,E,z,n;      /* (q,l)=window, e=current eval. score, E=e.p. sqr.*/
               +(w[b[x^16]&15]<0))              /*** cling to magnetic K ***/\r
               +(R-76>>2);                      /* end-game Pawn-push bonus */\r
          b[y]+=V=y+r+1&S?647-p:2*(u&y+16&32);  /* upgrade P or convert to Q*/\r
+         if(V&makruk)b[y]=u|7,V=480;           /* Makruk promotion on 6th  */\r
          V>>=sh;                               /* for Shatranj promo to F  */\r
          i+=V;                                 /* promotion / passer bonus */\r
         } if(z&S && GamePtr<6) v+=(rand()>>10&31)-16;\r
@@ -469,6 +471,7 @@ int LoadGame(char *name)
 \r
         fclose(f);\r
        sh = w[7] < 250 ? 3 : 0;\r
+       makruk = w[7]==181 ? 64 : 0; // w[7] is used as kludge to enable makruk promotions\r
 }\r
 \r
 int main(int argc, char **argv)\r