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).
+
+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.
-  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.
-  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
@@ -39,8 +39,8 @@ p.
 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 Dragon (D) = Rook + Monk.
   li.
     Horse (H) &ndash; Moves only forward two squares,
     and then one square to the side.
@@ -54,8 +54,8 @@ 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.
index e3d6669..e15dcd1 100644 (file)
@@ -28,10 +28,10 @@ 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.
-  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
@@ -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.
-  li Samurái (S) = Caballo + Torre.
   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,
@@ -55,9 +55,9 @@ 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
-  la sexta fila (o más):
+  las dos ultimas filas:
 ul
   li Monje &rarr; Alfil.
   li Jamelgo &rarr; Caballo.
index d1ba950..ae6a9db 100644 (file)
@@ -28,10 +28,10 @@ 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.
-  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
@@ -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.
-  li Samurai (S) = Cavalier + Tour.
   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é.
@@ -60,9 +60,9 @@ 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
-  la 6eme rangée (ou plus loin) :
+  les deux dernières rangées :
 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 SAMURAI() {
-    return 's';
+  static get DRAGON() {
+    return 'd';
   }
   static get MONK() {
     return 'm';
@@ -33,7 +33,7 @@ export class ShinobiRules extends ChessRules {
   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 (!fenParsed.reserve || !fenParsed.reserve.match(/^[0-9]{5,5}$/))
+    if (!fenParsed.reserve || !fenParsed.reserve.match(/^[0-2]{6,6}$/))
       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 " +
-      "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],
-        [V.SAMURAI]: reserve[1],
+        [V.DRAGON]: reserve[1],
         [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() {
-    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]) {
@@ -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.SAMURAI: return this.getPotentialSamuraiMoves(sq);
+      case V.DRAGON: return this.getPotentialDragonMoves(sq);
     }
     let moves = [];
     switch (piece) {
@@ -194,7 +195,7 @@ export class ShinobiRules extends ChessRules {
         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;
@@ -224,10 +225,10 @@ export class ShinobiRules extends ChessRules {
     );
   }
 
-  getPotentialSamuraiMoves(sq) {
+  getPotentialDragonMoves(sq) {
     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') ||
-      this.isAttackedBySamurai(sq, 'w') ||
+      this.isAttackedByDragon(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 (
-      super.isAttackedBySlideNJump(sq, color, V.SAMURAI, V.steps[V.ROOK]) ||
+      super.isAttackedBySlideNJump(sq, color, V.DRAGON, V.steps[V.ROOK]) ||
       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,
-          s: 8,
+          d: 7,
           m: 2,
           h: 2,
           l: 2
@@ -406,7 +407,12 @@ export class ShinobiRules extends ChessRules {
   }
 
   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() : "";