More balanced Shinobi according to Couch Tomato + Fables tests
authorBenjamin Auder <benjamin.auder@somewhere>
Sun, 28 Mar 2021 09:27:22 +0000 (11:27 +0200)
committerBenjamin Auder <benjamin.auder@somewhere>
Sun, 28 Mar 2021 09:27:22 +0000 (11:27 +0200)
TODO
client/public/images/pieces/Shinobi/wd.svg [new file with mode: 0644]
client/public/images/pieces/Shinobi/ws.svg [deleted file]
client/src/translations/rules/Shinobi/en.pug
client/src/translations/rules/Shinobi/es.pug
client/src/translations/rules/Shinobi/fr.pug
client/src/variants/Shinobi.js

diff --git a/TODO b/TODO
index 1ab5046..b13d9b5 100644 (file)
--- a/TODO
+++ b/TODO
@@ -9,3 +9,6 @@ Or, with other board shapes (see greenchess.net for example)
 Would be nice to display some better variants names (Pacosako -> Paco-Ŝako etc),
 but the "formatted" name with uppercase + all lower cases would still be required.
 (For example in variants list, or tournament variant field).
 Would be nice to display some better variants names (Pacosako -> Paco-Ŝako etc),
 but the "formatted" name with uppercase + all lower cases would still be required.
 (For example in variants list, or tournament variant field).
+
+Chessplode
+Tablut
diff --git a/client/public/images/pieces/Shinobi/wd.svg b/client/public/images/pieces/Shinobi/wd.svg
new file mode 100644 (file)
index 0000000..0e1f9ce
--- /dev/null
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="177.17"
+   height="177.17"
+   shape-rendering="geometricPrecision"
+   image-rendering="optimizeQuality"
+   fill-rule="evenodd"
+   clip-rule="evenodd"
+   viewBox="0 0 50 50"
+   version="1.1"
+   id="svg1519"
+   sodipodi:docname="wD.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
+  <metadata
+     id="metadata1523">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1676"
+     inkscape:window-height="1767"
+     id="namedview1521"
+     showgrid="false"
+     inkscape:zoom="0.50288117"
+     inkscape:cx="-80.186482"
+     inkscape:cy="802.81337"
+     inkscape:window-x="8380"
+     inkscape:window-y="1097"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg1519"
+     inkscape:document-rotation="0" />
+  <defs
+     id="defs1513">
+    <linearGradient
+       id="0"
+       x1="21.405"
+       x2="77.64"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop1508" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop1510" />
+    </linearGradient>
+  </defs>
+  <g
+     id="g4479"
+     style="opacity:0.99;stroke:#000000;stroke-width:1.00157;stroke-miterlimit:4;stroke-dasharray:none"
+     transform="matrix(1.4649611,0,0,1.4649611,-79.809876,-85.425679)">
+    <g
+       id="g4408"
+       style="stroke:#000000;stroke-width:1.00157;stroke-miterlimit:4;stroke-dasharray:none">
+      <g
+         style="opacity:1;stroke:#000000;stroke-width:1.67347;stroke-miterlimit:4;stroke-dasharray:none"
+         transform="matrix(0.5985,0,0,0.5985,-0.89497712,-1.5691449)"
+         id="g2585">
+        <g
+           transform="matrix(1.1490749,0,0,1.1490749,4.8774524,-52.324711)"
+           id="g5991-8-6"
+           style="stroke:#000000;stroke-width:1.45637;stroke-miterlimit:4;stroke-dasharray:none">
+          <g
+             id="g5959-6-1"
+             style="stroke:#000000;stroke-width:1.45637;stroke-miterlimit:4;stroke-dasharray:none">
+            <path
+               sodipodi:nodetypes="ccccc"
+               inkscape:connector-curvature="0"
+               id="path5925-18-5"
+               d="m 76.814514,188.49725 c -0.382792,-1.61452 0.982033,-3.33321 3.033308,-3.87609 -1.474925,-0.98619 -1.96609,-1.96962 -1.96609,-1.96962 0.66148,-0.0209 2.351743,-0.41657 2.953798,-1.42262 -0.278994,-0.0915 -1.725339,-0.57385 -1.940887,-1.46547"
+               style="display:inline;fill:none;stroke:#000000;stroke-width:1.09228;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               transform="matrix(1.3333333,0,0,-1.3333333,0,396.85067)" />
+            <g
+               id="g5957-11-8"
+               style="stroke:#000000;stroke-width:1.45637;stroke-miterlimit:4;stroke-dasharray:none">
+              <g
+                 id="g5949-4-4"
+                 style="stroke:#000000;stroke-width:1.45637;stroke-miterlimit:4;stroke-dasharray:none">
+                <path
+                   sodipodi:nodetypes="cc"
+                   inkscape:connector-curvature="0"
+                   id="path5927-1-6"
+                   d="m 106.85537,157.38289 c 7.55631,-2.27747 12.29422,1.14184 14.61505,5.6409"
+                   style="fill:none;stroke:#000000;stroke-width:1.45637;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+                <path
+                   sodipodi:nodetypes="cc"
+                   inkscape:connector-curvature="0"
+                   id="path5929-1-8"
+                   d="m 109.36814,159.69053 c 8.1436,0.28405 5.92715,9.6573 3.89734,14.71761"
+                   style="fill:none;stroke:#000000;stroke-width:1.45637;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+                <path
+                   sodipodi:nodetypes="cc"
+                   inkscape:connector-curvature="0"
+                   id="path5931-3-9"
+                   d="m 113.77829,156.87008 c 3.37122,1.83329 6.18854,4.36711 4.97425,11.99972"
+                   style="fill:none;stroke:#000000;stroke-width:1.45637;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+                <g
+                   style="stroke:#000000;stroke-width:1.45637;stroke-miterlimit:4;stroke-dasharray:none"
+                   id="g5947-9-3" />
+              </g>
+              <path
+                 style="fill:none;stroke:#000000;stroke-width:1.45637;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 d="m 93.112096,152.2548 c 2.016656,-2.72178 3.802894,-5.72006 7.128044,-6.87164"
+                 id="path5951-3-7"
+                 inkscape:connector-curvature="0"
+                 sodipodi:nodetypes="cc" />
+              <path
+                 style="fill:none;stroke:#000000;stroke-width:1.45637;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 d="m 96.650476,155.22909 c 2.546951,-0.30884 5.093904,-0.47217 7.640854,-0.10256"
+                 id="path5953-9-6"
+                 inkscape:connector-curvature="0"
+                 sodipodi:nodetypes="cc" />
+              <path
+                 style="fill:none;stroke:#000000;stroke-width:1.45637;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 d="m 96.137669,153.12657 c 1.402563,-1.75471 4.191461,-2.26173 6.922921,-2.82044"
+                 id="path5955-1-3"
+                 inkscape:connector-curvature="0"
+                 sodipodi:nodetypes="cc" />
+            </g>
+          </g>
+          <path
+             sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccsccc"
+             inkscape:connector-curvature="0"
+             id="path5965-8-5"
+             d="m 99.938985,158.29805 c -5.049569,1.29768 -6.422852,9.83907 -10.660754,13.34408 -0.735784,-0.3683 -0.827866,-1.19226 -0.797743,-2.90089 l -2.828362,-1.52297 3.141086,-0.97405 -1.473076,-1.20161 3.326708,-0.70193 -1.078522,-2.19895 2.773805,0.0153 0.1996,-2.77114 1.377919,-0.72522 V 156.485 l -0.725219,-1.08783 -1.160357,0.14505 0.07252,1.0153 -1.446453,0.58816 -0.120426,2.16833 c -0.905393,-0.44815 -0.794251,0.62859 -1.877598,0.22422 l -0.07784,1.16103 -2.103139,-0.0725 -0.466397,3.5456 c -0.474479,-0.38678 -1.050909,0.26037 -2.294759,-0.12642 -0.385357,2.27236 -0.384308,3.29323 -0.38856,5.56559 l -3.408538,-4.78647 c 0.270013,-0.65709 1.00717,-0.59849 1.522962,-2.10313 -0.04517,-1.04998 -0.08546,-2.09753 -0.507653,-3.33602 2.560131,-1.26401 4.783339,-3.53879 6.962125,-5.94682 l 0.07252,-5.00402 c 0.912496,-2.4981 1.545022,-3.85079 2.330563,-5.13578 0.05745,1.85848 0.453866,2.31327 0.927478,3.36262 1.622506,-1.8574 2.693961,-5.69799 6.465887,-8.6382 -1.436602,2.57898 -3.634626,4.75711 -2.030611,7.30756 5.712439,-7.08218 9.984249,-10.62666 17.036729,-8.13713 -6.95992,0.57064 -12.10611,4.59635 -10.90437,8.94829 4.37307,-4.88595 9.73578,-3.75434 11.45621,-2.9151 -5.42728,0.56055 -7.6467,2.64073 -6.49866,5.71537 6.14453,-1.76511 10.84868,-1.49675 13.70668,1.37792 -3.44196,-0.37601 -8.44829,-1.44309 -8.58036,0.57138 15.77569,6.08756 12.77743,18.13932 -2.33407,26.83997 l -18.589263,0.0318 c 5.93239,-6.92697 8.052804,-5.76983 12.991043,-8.09481 5.40946,-2.54682 8.74343,-12.41169 0.80866,-12.52149 -0.67413,1.41992 -1.05907,3.56566 -0.68601,6.29969 -1.65605,-4.87067 -4.461577,-6.29292 -8.049948,-5.36664"
+             style="fill:#fae4ed;fill-opacity:1;stroke:#1f1a17;stroke-width:1.909;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+          <g
+             style="stroke:#000000;stroke-width:1.45637;stroke-miterlimit:4;stroke-dasharray:none"
+             id="g5985-8-9">
+            <path
+               transform="matrix(1.3333333,0,0,-1.3333333,0,396.85067)"
+               style="display:inline;fill:none;stroke:#000000;stroke-width:1.09228;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.992157"
+               d="m 76.814514,188.49725 c -0.382792,-1.61452 0.982033,-3.33321 3.033308,-3.87609 -1.474925,-0.98619 -1.96609,-1.96962 -1.96609,-1.96962 0.66148,-0.0209 2.351743,-0.41657 2.953798,-1.42262 -0.278994,-0.0915 -1.725339,-0.57385 -1.940887,-1.46547"
+               id="path5967-73-9"
+               inkscape:connector-curvature="0"
+               sodipodi:nodetypes="ccccc" />
+            <g
+               style="stroke:#000000;stroke-width:1.45637;stroke-miterlimit:4;stroke-dasharray:none"
+               id="g5983-9-3">
+              <g
+                 style="stroke:#000000;stroke-width:1.45637;stroke-miterlimit:4;stroke-dasharray:none"
+                 id="g5977-0-6">
+                <path
+                   style="fill:none;stroke:#000000;stroke-width:1.45637;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.992157"
+                   d="m 106.85537,157.38289 c 7.55631,-2.27747 12.29422,1.14184 14.61505,5.6409"
+                   id="path5969-4-8"
+                   inkscape:connector-curvature="0"
+                   sodipodi:nodetypes="cc" />
+                <path
+                   style="fill:none;stroke:#000000;stroke-width:1.45637;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.992157"
+                   d="m 109.36814,159.69053 c 8.1436,0.28405 5.92715,9.6573 3.89734,14.71761"
+                   id="path5971-9-3"
+                   inkscape:connector-curvature="0"
+                   sodipodi:nodetypes="cc" />
+                <g
+                   id="g5975-81-9"
+                   style="stroke:#000000;stroke-width:1.45637;stroke-miterlimit:4;stroke-dasharray:none">
+                  <path
+                     sodipodi:nodetypes="cc"
+                     inkscape:connector-curvature="0"
+                     id="path5973-7-4"
+                     d="m 109.62454,160.92127 c 8.39582,10.39706 -4.39843,7.25768 -8.83774,17.36196"
+                     style="fill:none;stroke:#000000;stroke-width:1.45637;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.992157" />
+                </g>
+              </g>
+            </g>
+          </g>
+          <path
+             inkscape:connector-curvature="0"
+             id="path5987-5-8"
+             d="m 92.892698,148.0356 -2.988834,2.60941 -0.278513,4.40375 c 1.122405,-0.62704 3.056771,-2.18229 3.486745,-2.79396 0.147642,-0.91332 -0.04814,-3.62478 -0.219398,-4.2192 z"
+             style="fill:#000000;fill-opacity:0.992157;stroke:none;stroke-width:1.45625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.992157"
+             sodipodi:nodetypes="ccccc" />
+        </g>
+        <path
+           sodipodi:nodetypes="cc"
+           inkscape:connector-curvature="0"
+           id="path9570-8-0"
+           d="m 121.08075,143.70635 c 1.13217,1.46215 1.96546,2.68318 3.75317,2.67036"
+           style="display:inline;fill:none;stroke:#000000;stroke-width:1.67347;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.992157" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/client/public/images/pieces/Shinobi/ws.svg b/client/public/images/pieces/Shinobi/ws.svg
deleted file mode 100644 (file)
index 93ed344..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="177.17"
-   height="177.17"
-   shape-rendering="geometricPrecision"
-   image-rendering="optimizeQuality"
-   fill-rule="evenodd"
-   clip-rule="evenodd"
-   viewBox="0 0 50 50"
-   version="1.1"
-   id="svg3333"
-   sodipodi:docname="wS.svg"
-   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
-  <metadata
-     id="metadata3337">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <sodipodi:namedview
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1"
-     objecttolerance="10"
-     gridtolerance="10"
-     guidetolerance="10"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:window-width="1676"
-     inkscape:window-height="1767"
-     id="namedview3335"
-     showgrid="false"
-     inkscape:zoom="2.0115246"
-     inkscape:cx="-49.321113"
-     inkscape:cy="286.53498"
-     inkscape:window-x="8380"
-     inkscape:window-y="1097"
-     inkscape:window-maximized="0"
-     inkscape:current-layer="svg3333"
-     inkscape:document-rotation="0" />
-  <defs
-     id="defs3327">
-    <linearGradient
-       id="0"
-       x1="21.13"
-       y1="37.592"
-       x2="77.64"
-       y2="37.469"
-       gradientUnits="userSpaceOnUse">
-      <stop
-         stop-color="#fff"
-         id="stop3322" />
-      <stop
-         offset="1"
-         stop-color="#fff"
-         stop-opacity="0"
-         id="stop3324" />
-    </linearGradient>
-    <inkscape:path-effect
-       effect="mirror_symmetry"
-       start_point="275.14301,98.12006"
-       end_point="275.14301,350.07326"
-       center_point="275.14301,224.09666"
-       id="path-effect4547-0-2"
-       is_visible="true"
-       mode="free"
-       discard_orig_path="false"
-       fuse_paths="true"
-       oposite_fuse="false"
-       lpeversion="0"
-       split_items="false" />
-    <inkscape:path-effect
-       effect="mirror_symmetry"
-       start_point="274.67636,240.21573"
-       end_point="274.67636,418.88419"
-       center_point="274.67636,329.54996"
-       id="path-effect4551-7-2"
-       is_visible="true"
-       mode="free"
-       discard_orig_path="false"
-       fuse_paths="false"
-       oposite_fuse="false"
-       lpeversion="0"
-       split_items="false" />
-    <inkscape:path-effect
-       effect="mirror_symmetry"
-       start_point="273.50283,331.92091"
-       end_point="273.50283,477.30227"
-       center_point="273.50283,404.61159"
-       id="path-effect4557-0-7"
-       is_visible="true"
-       mode="free"
-       discard_orig_path="false"
-       fuse_paths="false"
-       oposite_fuse="false"
-       lpeversion="0"
-       split_items="false" />
-    <inkscape:path-effect
-       effect="mirror_symmetry"
-       start_point="315.71788,90.192596"
-       end_point="315.71788,96.192596"
-       center_point="315.71788,93.192596"
-       id="path-effect4669-0"
-       is_visible="true"
-       mode="free"
-       discard_orig_path="false"
-       fuse_paths="false"
-       oposite_fuse="false"
-       lpeversion="0"
-       split_items="false" />
-    <inkscape:path-effect
-       oposite_fuse="false"
-       fuse_paths="false"
-       discard_orig_path="false"
-       mode="free"
-       is_visible="true"
-       id="path-effect4802-2"
-       center_point="316.91112,93.060013"
-       end_point="316.91112,96.060013"
-       start_point="316.91112,90.060013"
-       effect="mirror_symmetry"
-       lpeversion="0"
-       split_items="false" />
-  </defs>
-  <g
-     style="opacity:1;stroke-width:0.998358;stroke-miterlimit:4;stroke-dasharray:none"
-     transform="matrix(-1.4222799,0,0,1.4045664,312.67189,-40.107398)"
-     id="g8011">
-    <g
-       id="g7992-4"
-       style="stroke-width:0.998358;stroke-miterlimit:4;stroke-dasharray:none">
-      <g
-         transform="matrix(0.70055036,0,0,0.70055036,30.938451,-14.965608)"
-         id="g4792-8-6"
-         style="display:inline;stroke-width:1.4251;stroke-miterlimit:4;stroke-dasharray:none">
-        <path
-           style="fill:#fae4ed;fill-opacity:1;stroke:#1f1a17;stroke-width:1.4251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="m 240.19817,99.644866 -1.42679,4.708964 -0.91096,-0.3636 -0.99702,3.08605 c 4.98874,2.09723 11.13084,1.98068 15.24942,0 l -0.99702,-3.08605 -0.85392,0.3636 -1.31325,-4.708964"
-           id="path4767-7-3"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cccccccc" />
-        <g
-           transform="translate(-71.190918,-1.25)"
-           id="g4722-9-55"
-           style="stroke-width:1.4251;stroke-miterlimit:4;stroke-dasharray:none">
-          <g
-             id="g4712-6-6"
-             transform="translate(31.466251,-52.325905)"
-             style="stroke:#000000;stroke-width:1.4251;stroke-miterlimit:4;stroke-dasharray:none">
-            <path
-               sodipodi:nodetypes="ccccc"
-               inkscape:connector-curvature="0"
-               id="path4708-6-6"
-               d="m 273.60415,150.86398 c 7.0269,6.45529 14.16897,5.79244 21.32768,0 l -4.02309,-11.78114 c -5.55216,2.37564 -8.76694,2.0991 -13.5,0.43745 z"
-               style="fill:#1f1a17;fill-opacity:1;stroke:#1f1a17;stroke-width:1.4251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-            <path
-               sodipodi:nodetypes="cccccc"
-               inkscape:original-d="m 128.12147,339.22317 -29.4431,64.09739 c -3.406729,-2.03298 6.60864,9.49088 -6.592588,1.00836 -14.054409,23.33805 -19.002142,29.83307 -33.968561,54.71538 21.968053,17.08583 45.092959,28.25212 66.540599,35.50326 13.29286,-25.8462 37.33683,-75.99061 56.23651,-117.53591"
-               inkscape:path-effect="#path-effect4557-0-7"
-               inkscape:connector-curvature="0"
-               id="path4706-0-4"
-               d="m 128.12147,339.22317 -29.4431,64.09739 c -3.406729,-2.03298 6.60864,9.49088 -6.592588,1.00836 -14.054409,23.33805 -19.002142,29.83307 -33.968561,54.71538 21.968053,17.08583 45.092959,28.25212 66.540599,35.50326 13.29286,-25.8462 37.33683,-75.99061 56.23651,-117.53591 m 237.98986,-37.78848 29.4431,64.09739 c 3.40673,-2.03298 -6.60864,9.49088 6.59259,1.00836 14.05441,23.33805 19.00214,29.83307 33.96856,54.71538 -21.96805,17.08583 -45.09296,28.25212 -66.5406,35.50326 -13.29286,-25.8462 -37.33683,-75.99061 -56.23651,-117.53591"
-               style="fill:#fae4ed;fill-opacity:1;stroke:#1f1a17;stroke-width:19.1343;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               transform="matrix(0.06852995,0,0,0.08094496,265.43337,113.5891)" />
-            <path
-               inkscape:original-d="m 148.02602,275.09111 c -28.03086,-24.44704 -42.208,-21.88308 -80.017252,-17.21986 l -35.659979,52.99649 c 47.787583,6.44001 110.760271,8.05847 123.583381,91.95566 27.65294,-32.78615 23.1623,-43.05822 34.86109,-81.47379"
-               inkscape:path-effect="#path-effect4551-7-2"
-               sodipodi:nodetypes="ccccc"
-               inkscape:connector-curvature="0"
-               id="path4704-4-1"
-               d="m 148.02602,275.09111 c -28.03086,-24.44704 -42.208,-21.88308 -80.017252,-17.21986 l -35.659979,52.99649 c 47.787583,6.44001 110.760271,8.05847 123.583381,91.95566 27.65294,-32.78615 23.1623,-43.05822 34.86109,-81.47379 m 210.53344,-46.2585 c 28.03086,-24.44704 42.208,-21.88308 80.01725,-17.21986 l 35.65998,52.99649 c -47.78758,6.44001 -110.76027,8.05847 -123.58338,91.95566 -27.65294,-32.78615 -23.1623,-43.05822 -34.86109,-81.47379"
-               style="fill:#fae4ed;fill-opacity:1;stroke:#1f1a17;stroke-width:19.1343;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               transform="matrix(0.06852995,0,0,0.08094496,265.45547,113.567)" />
-            <path
-               transform="matrix(0.06852995,0,0,0.08094496,265.4105,113.5891)"
-               inkscape:original-d="m 89.878164,104.45867 c 71.228006,71.22916 31.757136,135.82089 52.509626,165.37853 28.87071,49.94709 71.08258,59.60515 129.34256,59.36887 78.85687,-0.3198 172.12578,-122.30069 182.82859,-223.37245 -55.01799,87.29707 -93.67242,160.95929 -167.89643,181.7447 -10.56829,-0.19825 -25.58122,0.0296 -36.09748,-2.90333 -115.61675,-16.44623 -83.3766,-149.2152 -45.53806,-137.91415 -5.21985,-13.69739 -26.63935,-31.94802 -52.25128,-16.77733 -20.17236,0.0804 -51.29271,-30.539477 -62.897526,-25.52484 z"
-               inkscape:path-effect="#path-effect4547-0-2"
-               sodipodi:nodetypes="ccscccccc"
-               inkscape:connector-curvature="0"
-               id="path4702-1-36"
-               d="m 89.878164,104.45867 c 71.228006,71.22916 31.757136,135.82089 52.509626,165.37853 28.87071,49.94709 71.08258,59.60515 129.34256,59.36887 1.13467,-0.005 2.27232,-0.0344 3.41266,-0.089 1.14034,0.0546 2.27799,0.0843 3.41266,0.089 58.25998,0.23628 100.47185,-9.42178 129.34256,-59.36887 20.75249,-29.55764 -18.71838,-94.14937 52.50963,-165.37853 -11.60482,-5.014637 -42.72517,25.60524 -62.89753,25.52484 -25.61193,-15.17069 -47.03143,3.07994 -52.25128,16.77733 37.83854,-11.30105 70.07869,121.46792 -45.53806,137.91415 -7.06656,1.97083 -16.16354,2.51444 -24.57798,2.71917 -8.41444,-0.20473 -17.51142,-0.74834 -24.57798,-2.71917 -115.61675,-16.44623 -83.3766,-149.2152 -45.53806,-137.91415 -5.21985,-13.69739 -26.63935,-31.94802 -52.25128,-16.77733 -20.17236,0.0804 -51.29271,-30.539477 -62.897526,-25.52484 z"
-               style="fill:#fae4ed;fill-opacity:1;stroke:#1f1a17;stroke-width:19.1343;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-          </g>
-          <path
-             transform="translate(-1.25,3.7384348)"
-             inkscape:original-d="m 304.03366,89.759167 c 0.17995,0.09055 0.40659,0.383558 0.60988,0.575337 l 3.62394,2.343928"
-             inkscape:path-effect="#path-effect4802-2"
-             sodipodi:nodetypes="ccc"
-             inkscape:connector-curvature="0"
-             id="path4800-6-5"
-             d="m 304.03366,89.759167 c 0.17995,0.09055 0.40659,0.383558 0.60988,0.575337 l 3.62394,2.343928 m 21.5211,-2.919265 c -0.17995,0.09055 -0.40659,0.383558 -0.60988,0.575337 l -3.62394,2.343928"
-             style="fill:none;stroke:#1f1a17;stroke-width:1.4251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-        </g>
-        <path
-           sodipodi:nodetypes="ccc"
-           inkscape:connector-curvature="0"
-           id="path4728-2-4"
-           d="m 239.02396,80.488643 c 3.43837,-2.880918 8.29988,-2.419643 11.03729,0.134758 -2.36495,3.350653 -9.49455,2.30614 -11.03729,-0.134758 z"
-           style="fill:#1f1a17;stroke:#1f1a17;stroke-width:1.4251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1" />
-        <ellipse
-           style="opacity:1;fill:#fae4ed;fill-opacity:1;stroke:#1f1a17;stroke-width:1.4251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
-           id="path4730-7-2"
-           cx="244.54137"
-           cy="79.184608"
-           rx="3.7668824"
-           ry="3.8183067" />
-        <path
-           sodipodi:nodetypes="cssc"
-           inkscape:connector-curvature="0"
-           id="path4774-6-3"
-           d="m 238.51647,104.40646 c 0.15538,0.0361 0.19708,0.0445 0.26002,0.066 3.27921,1.12025 8.76778,0.8749 11.58445,-0.009 0.079,-0.0248 0.12485,-0.026 0.27075,-0.0614"
-           style="fill:none;stroke:#1f1a17;stroke-width:1.4251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      </g>
-    </g>
-  </g>
-  <path
-     style="fill:#fae4ed;fill-opacity:1;stroke:#1f1a17;stroke-width:1.41107;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-     d="m 18.554538,26.640221 c 5.110293,2.590707 7.77851,2.614363 12.87243,0.210449 l -0.699282,-3.354199 c -4.365601,1.071961 -6.926096,0.915591 -11.455375,0 z"
-     id="path14802"
-     sodipodi:nodetypes="ccccc" />
-</svg>
index eac9a6f..0b55d72 100644 (file)
@@ -27,10 +27,10 @@ p
 h3 New pieces
 
 p.
 h3 New pieces
 
 p.
-  There are five new units unique to the Clan: Ninja, Samurai, Lances,
+  There are five new units unique to the Clan: Ninja, Dragon, Lance,
   (Wooden) Horses, and Monks. Captains are a new piece available to both
   sides, but only the Clan starts with one on the board.
   (Wooden) Horses, and Monks. Captains are a new piece available to both
   sides, but only the Clan starts with one on the board.
-  Ninja, Samurai, and Captains do not promote (see below).
+  Ninja, Dragon, and Captains do not promote (see below).
 
 p.
   The Clan's king is called a Kage (K) and has a different symbol, but the
 
 p.
   The Clan's king is called a Kage (K) and has a different symbol, but the
@@ -39,8 +39,8 @@ p.
 ul
   li Captain (C) &ndash; Moves like a King. Pawns promote to a Captain.
   li Ninja (J) = Knight + Bishop.
 ul
   li Captain (C) &ndash; Moves like a King. Pawns promote to a Captain.
   li Ninja (J) = Knight + Bishop.
-  li Samurai (S) = Knight + Rook.
   li Monk (M) &ndash; One-step bishop.
   li Monk (M) &ndash; One-step bishop.
+  li Dragon (D) = Rook + Monk.
   li.
     Horse (H) &ndash; Moves only forward two squares,
     and then one square to the side.
   li.
     Horse (H) &ndash; Moves only forward two squares,
     and then one square to the side.
@@ -54,8 +54,8 @@ p.
 h3 Promotion
 
 p.
 h3 Promotion
 
 p.
-  Pawns promote into Captains when reaching the 6th rank.
-  All minor Clan pieces also promote upon reaching the 6th rank (or beyond):
+  Pawns promote into Captains when reaching the 7th rank.
+  All minor Clan pieces also promote upon reaching the two last ranks:
 ul
   li Monk into Bishop.
   li Horse into Knight.
 ul
   li Monk into Bishop.
   li Horse into Knight.
index e3d6669..e15dcd1 100644 (file)
@@ -28,10 +28,10 @@ p
 h3 Piezas nuevas
 
 p.
 h3 Piezas nuevas
 
 p.
-  Cinco nuevas unidades son exclusivas del Clan: Ninja, Samurai, Lances,
+  Cinco nuevas unidades son exclusivas del Clan: Ninja, Dragón, Lanza,
   Jamelgos y Monjes. Los Capitanes son una nueva pieza disponible en ambos
   lados, pero solo el Clan comienza con uno en el tablero.
   Jamelgos y Monjes. Los Capitanes son una nueva pieza disponible en ambos
   lados, pero solo el Clan comienza con uno en el tablero.
-  Los Ninja, Samuráis y Capitanes no son promovidos (ver más abajo).
+  Los Ninja, Dragón y Capitanes no son promovidos (ver más abajo).
 
 p.
   El rey del Clan se llama Kage (K) y tiene un símbolo diferente, pero el
 
 p.
   El rey del Clan se llama Kage (K) y tiene un símbolo diferente, pero el
@@ -40,8 +40,8 @@ p.
 ul
   li Capitán (C) &ndash; Muévese como un rey. Los peones ascienden a Capitán.
   li Ninja (J) = Caballo + Alfil.
 ul
   li Capitán (C) &ndash; Muévese como un rey. Los peones ascienden a Capitán.
   li Ninja (J) = Caballo + Alfil.
-  li Samurái (S) = Caballo + Torre.
   li Monje (M) &ndash; Alfil limitado a una casilla.
   li Monje (M) &ndash; Alfil limitado a una casilla.
+  li Dragón (D) = Torre + Monje.
   li Jamelgo (H) &ndash; Avanza dos espacios, luego una casilla al costado.
   li.
     Lanza (L) &ndash; Se mueve hacia adelante,
   li Jamelgo (H) &ndash; Avanza dos espacios, luego una casilla al costado.
   li.
     Lanza (L) &ndash; Se mueve hacia adelante,
@@ -55,9 +55,9 @@ p.
 h3 Promoción
 
 p.
 h3 Promoción
 
 p.
-  Los peones son promovidos a Capitanes cuando alcanzan la sexta fila.
+  Los peones son promovidos a Capitanes cuando alcanzan la séptima fila.
   Todas las piezas menores del Clan también se promocionan una vez en
   Todas las piezas menores del Clan también se promocionan una vez en
-  la sexta fila (o más):
+  las dos ultimas filas:
 ul
   li Monje &rarr; Alfil.
   li Jamelgo &rarr; Caballo.
 ul
   li Monje &rarr; Alfil.
   li Jamelgo &rarr; Caballo.
index d1ba950..ae6a9db 100644 (file)
@@ -28,10 +28,10 @@ p
 h3 Nouvelles pièces
 
 p.
 h3 Nouvelles pièces
 
 p.
-  Cinq nouvelles unités sont uniques au Clan : les Ninja, Samurai, Lances,
+  Cinq nouvelles unités sont uniques au Clan : les Ninja, Dragon, Lance,
   Chevaux (de Bois), et Moines. Les Capitaines sont une nouvelle pièce
   disponible des deux côtés, mais seul le Clan démarre avec un sur l'échiquier.
   Chevaux (de Bois), et Moines. Les Capitaines sont une nouvelle pièce
   disponible des deux côtés, mais seul le Clan démarre avec un sur l'échiquier.
-  Les Ninja, Samourai et Capitaines ne sont pas promus (voir ci-dessous).
+  Les Ninja, Dragon et Capitaines ne sont pas promus (voir ci-dessous).
 
 p.
   Le roi du Clan est appelé Kage (K), et a un symbole différent, mais le
 
 p.
   Le roi du Clan est appelé Kage (K), et a un symbole différent, mais le
@@ -43,8 +43,8 @@ ul
     Capitaine (C) &ndash; Se déplace comme un Roi.
     Les pions se promeuvent en Capitaine.
   li Ninja (J) = Cavalier + Fou.
     Capitaine (C) &ndash; Se déplace comme un Roi.
     Les pions se promeuvent en Capitaine.
   li Ninja (J) = Cavalier + Fou.
-  li Samurai (S) = Cavalier + Tour.
   li Moine (M) &ndash; Fou limité à une case.
   li Moine (M) &ndash; Fou limité à une case.
+  li Dragon (D) = Tour + Moine.
   li.
     Cheval (H) &ndash; Se déplace vers l'avant de deux cases,
     puis d'une case sur le coté.
   li.
     Cheval (H) &ndash; Se déplace vers l'avant de deux cases,
     puis d'une case sur le coté.
@@ -60,9 +60,9 @@ p.
 h3 Promotion
 
 p.
 h3 Promotion
 
 p.
-  Les pions sont promus en Capitaines quand ils atteignent la 6eme rangée.
+  Les pions sont promus en Capitaines quand ils atteignent la 7eme rangée.
   Toutes les pièces mineures du Clan se promeuvent également une fois sur
   Toutes les pièces mineures du Clan se promeuvent également une fois sur
-  la 6eme rangée (ou plus loin) :
+  les deux dernières rangées :
 ul
   li Moine &rarr; Fou.
   li Cheval &rarr; Cavalier.
 ul
   li Moine &rarr; Fou.
   li Cheval &rarr; Cavalier.
index faa4cd7..dbce82c 100644 (file)
@@ -12,8 +12,8 @@ export class ShinobiRules extends ChessRules {
   static get NINJA() {
     return 'j';
   }
   static get NINJA() {
     return 'j';
   }
-  static get SAMURAI() {
-    return 's';
+  static get DRAGON() {
+    return 'd';
   }
   static get MONK() {
     return 'm';
   }
   static get MONK() {
     return 'm';
@@ -33,7 +33,7 @@ export class ShinobiRules extends ChessRules {
   static get PIECES() {
     return (
       ChessRules.PIECES
   static get PIECES() {
     return (
       ChessRules.PIECES
-      .concat([V.CAPTAIN, V.NINJA, V.SAMURAI, V.MONK, V.HORSE, V.LANCE])
+      .concat([V.CAPTAIN, V.NINJA, V.DRAGON, V.MONK, V.HORSE, V.LANCE])
     );
   }
 
     );
   }
 
@@ -60,7 +60,7 @@ export class ShinobiRules extends ChessRules {
     if (!ChessRules.IsGoodFen(fen)) return false;
     const fenParsed = V.ParseFen(fen);
     // 5) Check reserve
     if (!ChessRules.IsGoodFen(fen)) return false;
     const fenParsed = V.ParseFen(fen);
     // 5) Check reserve
-    if (!fenParsed.reserve || !fenParsed.reserve.match(/^[0-9]{5,5}$/))
+    if (!fenParsed.reserve || !fenParsed.reserve.match(/^[0-2]{6,6}$/))
       return false;
     return true;
   }
       return false;
     return true;
   }
@@ -73,12 +73,12 @@ export class ShinobiRules extends ChessRules {
     );
   }
 
     );
   }
 
-  // In hand initially: ninja, samurai + 2 x monk, horse, lance.
+  // In hand initially: ninja, dragon, 2 x (monk, horse), lance, pawn.
   static GenRandInitFen(randomness) {
     const baseFen = ChessRules.GenRandInitFen(Math.min(randomness, 1));
     return (
       baseFen.substr(0, 35) + "3CK3 " +
   static GenRandInitFen(randomness) {
     const baseFen = ChessRules.GenRandInitFen(Math.min(randomness, 1));
     return (
       baseFen.substr(0, 35) + "3CK3 " +
-      "w 0 " + baseFen.substr(48, 2) + " - 11222"
+      "w 0 " + baseFen.substr(48, 2) + " - 112211"
     );
   }
 
     );
   }
 
@@ -102,10 +102,11 @@ export class ShinobiRules extends ChessRules {
     this.reserve = {
       w: {
         [V.NINJA]: reserve[0],
     this.reserve = {
       w: {
         [V.NINJA]: reserve[0],
-        [V.SAMURAI]: reserve[1],
+        [V.DRAGON]: reserve[1],
         [V.MONK]: reserve[2],
         [V.HORSE]: reserve[3],
         [V.MONK]: reserve[2],
         [V.HORSE]: reserve[3],
-        [V.LANCE]: reserve[4]
+        [V.LANCE]: reserve[4],
+        [V.PAWN]: reserve[5]
       }
     };
   }
       }
     };
   }
@@ -121,7 +122,7 @@ export class ShinobiRules extends ChessRules {
   }
 
   static get RESERVE_PIECES() {
   }
 
   static get RESERVE_PIECES() {
-    return [V.NINJA, V.SAMURAI, V.MONK, V.HORSE, V.LANCE];
+    return [V.NINJA, V.DRAGON, V.MONK, V.HORSE, V.LANCE, V.PAWN];
   }
 
   getReserveMoves([x, y]) {
   }
 
   getReserveMoves([x, y]) {
@@ -176,7 +177,7 @@ export class ShinobiRules extends ChessRules {
       case V.KING: return this.getPotentialKingMoves(sq);
       case V.CAPTAIN: return this.getPotentialCaptainMoves(sq);
       case V.NINJA: return this.getPotentialNinjaMoves(sq);
       case V.KING: return this.getPotentialKingMoves(sq);
       case V.CAPTAIN: return this.getPotentialCaptainMoves(sq);
       case V.NINJA: return this.getPotentialNinjaMoves(sq);
-      case V.SAMURAI: return this.getPotentialSamuraiMoves(sq);
+      case V.DRAGON: return this.getPotentialDragonMoves(sq);
     }
     let moves = [];
     switch (piece) {
     }
     let moves = [];
     switch (piece) {
@@ -194,7 +195,7 @@ export class ShinobiRules extends ChessRules {
         moves = this.getPotentialLanceMoves(sq);
         break;
     }
         moves = this.getPotentialLanceMoves(sq);
         break;
     }
-    const promotionZone = (this.turn == 'w' ? [0, 1, 2] : [5, 6, 7]);
+    const promotionZone = (this.turn == 'w' ? [0, 1] : [7, 6]);
     const promotedForm = V.MapUnpromoted[piece];
     moves.forEach(m => {
       if (promotionZone.includes(m.end.x)) m.appear[0].p = promotedForm;
     const promotedForm = V.MapUnpromoted[piece];
     moves.forEach(m => {
       if (promotionZone.includes(m.end.x)) m.appear[0].p = promotedForm;
@@ -224,10 +225,10 @@ export class ShinobiRules extends ChessRules {
     );
   }
 
     );
   }
 
-  getPotentialSamuraiMoves(sq) {
+  getPotentialDragonMoves(sq) {
     return (
       super.getSlideNJumpMoves(sq, V.steps[V.ROOK])
     return (
       super.getSlideNJumpMoves(sq, V.steps[V.ROOK])
-      .concat(super.getSlideNJumpMoves(sq, V.steps[V.KNIGHT], "oneStep"))
+      .concat(super.getSlideNJumpMoves(sq, V.steps[V.BISHOP], "oneStep"))
     );
   }
 
     );
   }
 
@@ -252,7 +253,7 @@ export class ShinobiRules extends ChessRules {
       super.isAttackedByPawn(sq, 'w') ||
       this.isAttackedByCaptain(sq, 'w') ||
       this.isAttackedByNinja(sq, 'w') ||
       super.isAttackedByPawn(sq, 'w') ||
       this.isAttackedByCaptain(sq, 'w') ||
       this.isAttackedByNinja(sq, 'w') ||
-      this.isAttackedBySamurai(sq, 'w') ||
+      this.isAttackedByDragon(sq, 'w') ||
       this.isAttackedByMonk(sq, 'w') ||
       this.isAttackedByHorse(sq, 'w') ||
       this.isAttackedByLance(sq, 'w') ||
       this.isAttackedByMonk(sq, 'w') ||
       this.isAttackedByHorse(sq, 'w') ||
       this.isAttackedByLance(sq, 'w') ||
@@ -277,11 +278,11 @@ export class ShinobiRules extends ChessRules {
     );
   }
 
     );
   }
 
-  isAttackedBySamurai(sq, color) {
+  isAttackedByDragon(sq, color) {
     return (
     return (
-      super.isAttackedBySlideNJump(sq, color, V.SAMURAI, V.steps[V.ROOK]) ||
+      super.isAttackedBySlideNJump(sq, color, V.DRAGON, V.steps[V.ROOK]) ||
       super.isAttackedBySlideNJump(
       super.isAttackedBySlideNJump(
-        sq, color, V.SAMURAI, V.steps[V.KNIGHT], "oneStep")
+        sq, color, V.DRAGON, V.steps[V.BISHOP], "oneStep")
     );
   }
 
     );
   }
 
@@ -385,7 +386,7 @@ export class ShinobiRules extends ChessRules {
         {
           c: 4,
           j: 7,
         {
           c: 4,
           j: 7,
-          s: 8,
+          d: 7,
           m: 2,
           h: 2,
           l: 2
           m: 2,
           h: 2,
           l: 2
@@ -406,7 +407,12 @@ export class ShinobiRules extends ChessRules {
   }
 
   getNotation(move) {
   }
 
   getNotation(move) {
-    if (move.vanish.length > 0) return super.getNotation(move);
+    if (move.vanish.length > 0) {
+      let notation = super.getNotation(move);
+      if (move.vanish[0].p != V.PAWN && move.appear[0].p != move.vanish[0].p)
+        notation += "=" + move.appear[0].p.toUpperCase();
+      return notation;
+    }
     // Drop:
     const piece =
       move.appear[0].p != V.PAWN ? move.appear[0].p.toUpperCase() : "";
     // Drop:
     const piece =
       move.appear[0].p != V.PAWN ? move.appear[0].p.toUpperCase() : "";