From 269f9cfd01c74902e6f443b881aa0e608f385c82 Mon Sep 17 00:00:00 2001
From: Benjamin Auder <benjamin.auder@somewhere>
Date: Thu, 18 Mar 2021 11:44:43 +0100
Subject: [PATCH] First draft of Shinobi (unworking)

---
 client/public/images/pieces/Shinobi/bc.svg | 188 ++++++++++
 client/public/images/pieces/Shinobi/wb.svg |  84 +++++
 client/public/images/pieces/Shinobi/wc.svg |  99 ++++++
 client/public/images/pieces/Shinobi/wh.svg |  96 ++++++
 client/public/images/pieces/Shinobi/wj.svg | 122 +++++++
 client/public/images/pieces/Shinobi/wk.svg | 105 ++++++
 client/public/images/pieces/Shinobi/wl.svg | 107 ++++++
 client/public/images/pieces/Shinobi/wm.svg |  98 ++++++
 client/public/images/pieces/Shinobi/wn.svg |  79 +++++
 client/public/images/pieces/Shinobi/wp.svg |  82 +++++
 client/public/images/pieces/Shinobi/wr.svg |  86 +++++
 client/public/images/pieces/Shinobi/ws.svg | 234 +++++++++++++
 client/src/variants/Copycat.js             |   4 +
 client/src/variants/Shinobi.js             | 377 +++++++++++++++++++++
 14 files changed, 1761 insertions(+)
 create mode 100644 client/public/images/pieces/Shinobi/bc.svg
 create mode 100644 client/public/images/pieces/Shinobi/wb.svg
 create mode 100644 client/public/images/pieces/Shinobi/wc.svg
 create mode 100644 client/public/images/pieces/Shinobi/wh.svg
 create mode 100644 client/public/images/pieces/Shinobi/wj.svg
 create mode 100644 client/public/images/pieces/Shinobi/wk.svg
 create mode 100644 client/public/images/pieces/Shinobi/wl.svg
 create mode 100644 client/public/images/pieces/Shinobi/wm.svg
 create mode 100644 client/public/images/pieces/Shinobi/wn.svg
 create mode 100644 client/public/images/pieces/Shinobi/wp.svg
 create mode 100644 client/public/images/pieces/Shinobi/wr.svg
 create mode 100644 client/public/images/pieces/Shinobi/ws.svg
 create mode 100644 client/src/variants/Shinobi.js

diff --git a/client/public/images/pieces/Shinobi/bc.svg b/client/public/images/pieces/Shinobi/bc.svg
new file mode 100644
index 00000000..75f91988
--- /dev/null
+++ b/client/public/images/pieces/Shinobi/bc.svg
@@ -0,0 +1,188 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   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="svg4798"
+   sodipodi:docname="bCaptain.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
+  <metadata
+     id="metadata4802">
+    <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="3360"
+     inkscape:window-height="1780"
+     id="namedview4800"
+     showgrid="false"
+     inkscape:zoom="1.8838088"
+     inkscape:cx="2.924289"
+     inkscape:cy="73.544656"
+     inkscape:window-x="6708"
+     inkscape:window-y="1085"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg4798"
+     inkscape:snap-nodes="false"
+     inkscape:document-rotation="0" />
+  <defs
+     id="defs4788">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6661">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop6657" />
+      <stop
+         style="stop-color:#b3b3b3;stop-opacity:1"
+         offset="1"
+         id="stop6659" />
+    </linearGradient>
+    <linearGradient
+       id="0"
+       x1="21.376"
+       x2="77.64"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop4783" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop4785" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(50.708427,-1.9548155)"
+       id="0-3"
+       x1="21.129999"
+       y1="37.220001"
+       x2="77.760002"
+       y2="37.469002"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop5461" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop5463" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(-54.458725,-1.3555716)"
+       id="0-2"
+       x1="21.375999"
+       x2="77.639999"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop6058" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop6060" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6661"
+       id="linearGradient6663"
+       x1="18.65144"
+       y1="35.580711"
+       x2="30.711206"
+       y2="35.580711"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,4.1105181)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6661"
+       id="linearGradient6689"
+       x1="60.948723"
+       y1="78.781807"
+       x2="158.5957"
+       y2="78.781807"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.28221482,0,0,0.28221482,0,4.1105181)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6661"
+       id="linearGradient6699"
+       x1="22.510593"
+       y1="9.7722454"
+       x2="40.413136"
+       y2="9.7722454"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.80477768,0,0,0.80477768,4.7633367,6.1338868)" />
+  </defs>
+  <g
+     id="g5409"
+     transform="translate(-47.90079,0.30426217)"
+     style="fill:#1f1a17;fill-opacity:1;stroke:#1f1a17;stroke-opacity:1">
+    <path
+       sodipodi:nodetypes="cssssccc"
+       inkscape:connector-curvature="0"
+       id="path4760"
+       d="m 59.323542,36.845189 c -4.923955,-4.423162 -7.488294,-6.501829 -7.488294,-10.697558 0,-9.536991 12.337066,-10.822594 21.466437,-10.554927 5.225494,0.153208 11.124384,0.559374 15.29758,2.774372 2.841632,1.508247 5.367066,3.823463 5.367066,7.531995 0,4.979028 -4.86475,7.93099 -8.255477,11.017435 -9.050136,-4.451366 -17.738141,-4.590077 -26.387312,-0.07133 z"
+       style="fill:#1f1a17;fill-opacity:1;stroke:#1f1a17;stroke-width:1.69329;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="cccccc"
+       inkscape:connector-curvature="0"
+       id="path5347"
+       d="m 59.323542,36.845189 v 4.984114 c 8.612444,4.713783 17.405516,4.682783 26.375269,0 l 0.01211,-4.912797 v 0 C 76.184699,32.072204 67.50711,32.82843 59.323542,36.845182 Z"
+       style="fill:#1f1a17;fill-opacity:1;stroke:#1f1a17;stroke-width:1.69329;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="cscc"
+       inkscape:connector-curvature="0"
+       id="path5355"
+       d="m 69.58961,15.521388 c 0.403124,-1.901498 1.356191,-3.235945 3.280585,-3.244926 1.682343,-0.0078 3.026638,1.263387 3.423218,3.351902 z"
+       style="fill:#1f1a17;fill-opacity:1;stroke:#1f1a17;stroke-width:1.69329;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+  <path
+     style="fill:url(#linearGradient6663);fill-opacity:1;stroke:none;stroke-width:0.282215px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     d="m 12.584104,37.556428 v 4.269606 c 8.669742,-3.392157 16.447722,-2.994618 24.119531,0 V 37.55643 c -8.355558,-3.453444 -16.162906,-2.929477 -24.119531,-2e-6 z"
+     id="path6655"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:url(#linearGradient6689);fill-opacity:1;stroke:none;stroke-width:1.58653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="m 23.761165,16.579783 c -8.318038,-0.04159 -18.4779052,1.540534 -18.4779052,9.917756 0,3.931199 4.6874857,7.751611 7.2036432,8.450254 8.923259,-2.85791 15.181568,-3.005271 24.274335,-0.120162 2.877326,-0.869405 7.996819,-3.897588 7.996819,-8.562698 0,-3.474716 -2.366131,-5.64387 -5.028605,-7.057024 -3.910081,-2.075346 -9.436838,-2.455914 -14.332874,-2.599464 -0.534612,-0.01567 -1.080877,-0.02589 -1.635413,-0.02866 z m 0.266781,1.394538 c 0.484162,0.0022 0.960686,0.01026 1.425957,0.0226 4.261001,0.112989 9.070745,0.41254 12.473675,2.046057 2.317141,1.112303 4.853321,2.925312 4.853321,5.660282 0,3.671938 -2.987791,5.818131 -6.202111,6.895837 -7.743579,-2.948395 -16.22963,-2.95732 -23.688406,5.64e-4 C 9.4563486,30.886201 7.9535714,29.067084 7.7377572,25.780978 7.3056445,19.20139 16.765517,17.941589 24.027946,17.974321 Z"
+     id="path4760-0"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="ssccssssssssccss" />
+  <path
+     style="fill:url(#linearGradient6699);fill-opacity:1;stroke:none;stroke-width:0.22712px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     d="m 22.879359,14.914829 h 4.241281 c -0.190722,-1.337943 -1.365259,-1.720882 -2.15261,-1.71235 -0.810419,0.0088 -1.851236,0.433645 -2.088671,1.71235 z"
+     id="path6691"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="ccsc" />
+</svg>
diff --git a/client/public/images/pieces/Shinobi/wb.svg b/client/public/images/pieces/Shinobi/wb.svg
new file mode 100644
index 00000000..335a7828
--- /dev/null
+++ b/client/public/images/pieces/Shinobi/wb.svg
@@ -0,0 +1,84 @@
+<?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="wB.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="7.0994842"
+     inkscape:cy="267.8389"
+     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>
+  </defs>
+  <path
+     fill="#1f1a17"
+     d="m 25.447,42.01 c -0.229,0.94 -0.517,1.592 -0.847,1.956 -0.33,0.364 -0.762,0.745 -1.312,1.143 -0.593,0.415 -1.295,0.762 -2.108,1.05 -0.813,0.288 -1.71,0.364 -2.701,0.212 l -6.968,-0.965 c -0.288,-0.034 -0.533,-0.034 -0.762,0 -0.22,0.034 -0.432,0.051 -0.635,0.051 -0.347,0 -0.787,0.076 -1.321,0.237 -0.542,0.152 -0.957,0.381 -1.253,0.677 L 5.135,42.425 c 0.296,-0.33 0.559,-0.559 0.787,-0.694 0.237,-0.127 0.508,-0.271 0.821,-0.415 0.957,-0.449 1.981,-0.72 3.073,-0.821 0.466,-0.034 0.923,-0.042 1.363,-0.025 0.449,0.017 0.914,0 1.397,-0.051 0.889,0.152 1.786,0.288 2.684,0.406 0.906,0.127 1.812,0.254 2.718,0.389 0.991,0 1.66,-0.102 2.01,-0.296 0.186,-0.102 0.474,-0.288 0.872,-0.55 0.398,-0.262 0.796,-0.652 1.194,-1.168 -0.881,-0.093 -1.77,-0.262 -2.684,-0.508 -0.906,-0.237 -1.71,-0.491 -2.404,-0.754 l 2.582,-6.401 c -1.295,-0.745 -2.193,-1.338 -2.709,-1.795 -0.508,-0.457 -0.914,-0.982 -1.211,-1.575 -0.432,-0.762 -0.711,-1.499 -0.83,-2.21 -0.127,-0.711 -0.178,-1.346 -0.161,-1.913 0.017,-0.991 0.245,-2.083 0.703,-3.285 0.457,-1.194 1.312,-2.269 2.565,-3.209 1.041,-0.796 2.066,-1.617 3.057,-2.455 2.105679,-2.519451 1.158148,-3.124929 1.117,-5.952 0,-0.931 0.322,-1.719 0.974,-2.388 0.652,-0.66 1.456,-0.991 2.396,-0.991 0.923,0 1.719,0.33 2.379,0.991 0.66,0.669 0.991,1.456 0.991,2.388 -0.275972,3.594339 -0.419808,3.778971 1.084,5.952 0.982,0.838 2.02,1.66 3.09,2.455 1.236,0.94 2.083,2.02 2.523,3.209 0.449,1.202 0.694,2.294 0.72,3.285 0,0.567 -0.051,1.202 -0.169,1.913 -0.118,0.711 -0.381,1.448 -0.796,2.21 -0.33,0.593 -0.745,1.118 -1.253,1.575 -0.5,0.457 -1.389,1.05 -2.667,1.795 l 2.582,6.401 c -0.728,0.263 -1.549,0.517 -2.455,0.754 -0.914,0.246 -1.787,0.415 -2.633,0.508 0.381,0.517 0.77,0.906 1.168,1.168 0.398,0.263 0.694,0.449 0.898,0.55 0.347,0.195 1.016,0.296 2.01,0.296 0.889,-0.136 1.786,-0.263 2.692,-0.389 0.898,-0.118 1.803,-0.254 2.718,-0.406 0.44,0.051 0.889,0.068 1.346,0.051 0.457,-0.017 0.923,-0.008 1.405,0.025 1.058,0.102 2.083,0.373 3.073,0.821 0.296,0.144 0.567,0.288 0.804,0.415 0.245,0.135 0.508,0.364 0.804,0.694 l -2.43,3.946 c -0.296,-0.296 -0.711,-0.525 -1.253,-0.677 -0.533,-0.161 -0.965,-0.237 -1.295,-0.237 -0.22,0 -0.44,-0.017 -0.66,-0.051 -0.22,-0.034 -0.474,-0.034 -0.754,0 l -6.951,0.965 c -0.991,0.152 -1.913,0.085 -2.76,-0.195 -0.855,-0.279 -1.558,-0.652 -2.1,-1.118 -0.542,-0.449 -0.982,-0.83 -1.304,-1.151 -0.322,-0.322 -0.593,-0.957 -0.804,-1.897"
+     id="path3329"
+     sodipodi:nodetypes="cscscccscccccccccccscccccccccccccsccccccscccccccccccsccccccsscccccc" />
+  <path
+     fill="url(#0)"
+     d="m 26.32,39.2 c 0,1.092 0.245,2.024 0.753,2.794 0.5,0.77 1.041,1.372 1.626,1.795 0.906,0.669 2.235,0.999 3.988,0.999 0.432,0 1.279,-0.093 2.532,-0.279 1.025,-0.161 1.854,-0.279 2.481,-0.356 0.627,-0.076 1.05,-0.135 1.27,-0.186 0.627,-0.085 1.287,-0.068 1.981,0.051 0.262,0.068 0.559,0.127 0.88,0.186 0.322,0.059 0.593,0.186 0.804,0.381 l 1.194,-1.93 c -0.677,-0.347 -1.397,-0.593 -2.159,-0.72 -1.253,-0.22 -2.354,-0.263 -3.302,-0.152 -0.279,0.034 -0.643,0.118 -1.101,0.245 -0.457,0.136 -1.067,0.263 -1.846,0.373 -1.676,0.271 -2.557,0.398 -2.659,0.398 -0.644,0 -1.202,-0.076 -1.685,-0.246 C 30.594,42.384 30.171,42.206 29.79,42.011 28.909,41.613 28.02,40.673 27.106,39.2 h -0.787 m -1.761,0 h -0.796 c -0.931,1.49 -1.812,2.43 -2.659,2.811 -0.398,0.195 -0.83,0.373 -1.312,0.542 -0.483,0.169 -1.033,0.246 -1.66,0.246 -0.119,0 -0.999,-0.127 -2.659,-0.398 -0.787,-0.11 -1.422,-0.237 -1.88,-0.373 -0.466,-0.127 -0.83,-0.212 -1.092,-0.245 -0.948,-0.11 -2.04,-0.068 -3.302,0.152 -0.762,0.127 -1.473,0.373 -2.134,0.72 l 1.194,1.93 c 0.195,-0.195 0.457,-0.322 0.779,-0.381 0.322,-0.059 0.618,-0.118 0.88,-0.186 0.694,-0.119 1.355,-0.136 1.981,-0.051 0.22,0.051 0.643,0.11 1.27,0.186 0.627,0.076 1.465,0.195 2.506,0.356 1.236,0.186 2.083,0.279 2.532,0.279 1.736,0 3.065,-0.33 3.988,-0.999 0.567,-0.423 1.101,-1.025 1.6,-1.795 0.508,-0.77 0.762,-1.702 0.762,-2.794 m 0.889,-9.347 c 1.6,0 3.141,0.127 4.614,0.373 1.617,-0.576 2.794,-1.482 3.522,-2.701 0.627,-1.058 0.94,-2.227 0.94,-3.497 0,-0.762 -0.186,-1.6 -0.567,-2.523 -0.381,-0.914 -0.999,-1.744 -1.863,-2.489 -0.974,-0.813 -2.04,-1.702 -3.2,-2.667 -3.31491,-0.629853 -3.746723,-0.578533 -6.917,0 -1.16,0.965 -2.218,1.854 -3.175,2.667 -0.881,0.745 -1.499,1.575 -1.871,2.489 -0.372,0.923 -0.559,1.761 -0.559,2.523 0,1.27 0.305,2.438 0.914,3.497 0.711,1.219 1.897,2.125 3.548,2.701 1.456,-0.246 2.997,-0.373 4.614,-0.373 m 0,4.513 c 1.939,0 3.793,0.195 5.579,0.576 l -1.185,-3.057 c -1.456,-0.229 -2.921,-0.347 -4.394,-0.347 -1.507,0 -2.98,0.119 -4.411,0.347 l -1.194,3.057 c 1.77,-0.381 3.641,-0.576 5.605,-0.576 m 0,3.473 c 1.126,0 2.218,-0.093 3.285,-0.279 1.067,-0.195 2.1,-0.423 3.09,-0.686 -1.939,-0.508 -4.064,-0.77 -6.375,-0.77 -2.345,0 -4.47,0.263 -6.375,0.77 0.957,0.263 1.973,0.491 3.048,0.686 1.075,0.186 2.184,0.279 3.327,0.279 m -0.889,-13.441143 -1.371555,-0.01259 c -0.106767,0 -0.05984,1.787654 -0.112063,2.704951 -0.533737,0.145084 -1.453981,0.0912 -1.506863,-0.110119 -0.06418,-0.244342 0.08648,-3.101656 0.08648,-3.454233 0,-0.559 0.279,-0.838 0.838,-0.838 h 2.066 v -1.452321 c 0,-0.182509 -2.168364,-6.78e-4 -2.483438,-0.137317 -0.395503,-0.171512 -0.182595,-1.327321 -0.01413,-1.394005 0.120883,-0.04785 3.217324,-0.02236 3.386569,-0.02236 0.576,0 0.872,0.296 0.872,0.872 v 2.134 l 1.414754,0.03721 c 0.144615,0.0038 0.0136,-3.054017 0.119657,-3.014245 0.142244,0.05334 1.086251,-0.121326 1.456718,0.129242 0.206261,0.860225 -0.04413,3.476121 -0.04413,3.6858 0,0.567 -0.271,0.847 -0.813,0.847 h -2.134 l 0.01027,1.462293 c 8.76e-4,0.124711 1.932103,0.02149 2.624983,0.105183 0.320735,0.38771 0.08485,1.414684 -0.0067,1.416271 -0.353296,0.0061 -3.168268,-0.05375 -3.500563,-0.05375 -0.593,0 -0.889,-0.296 -0.889,-0.898 v -2.01"
+     id="path3331"
+     style="fill:#fae4ed;fill-opacity:1"
+     sodipodi:nodetypes="cccscccccccccccsccccccccsccccccsccscsccccccsccccccsccccccsccccccsccccccssscssssscsscsscscsssc" />
+</svg>
diff --git a/client/public/images/pieces/Shinobi/wc.svg b/client/public/images/pieces/Shinobi/wc.svg
new file mode 100644
index 00000000..ea711545
--- /dev/null
+++ b/client/public/images/pieces/Shinobi/wc.svg
@@ -0,0 +1,99 @@
+<?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="svg4798"
+   sodipodi:docname="wC.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
+  <metadata
+     id="metadata4802">
+    <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="3360"
+     inkscape:window-height="1780"
+     id="namedview4800"
+     showgrid="false"
+     inkscape:zoom="3.7676176"
+     inkscape:cx="98.051469"
+     inkscape:cy="42.367322"
+     inkscape:window-x="6708"
+     inkscape:window-y="1085"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg4798"
+     inkscape:document-rotation="0" />
+  <defs
+     id="defs4788">
+    <linearGradient
+       id="0"
+       x1="21.376"
+       x2="77.64"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop4783" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop4785" />
+    </linearGradient>
+  </defs>
+  <g
+     id="g5409"
+     transform="translate(-47.90079,0.30426217)">
+    <path
+       sodipodi:nodetypes="cssssccc"
+       inkscape:connector-curvature="0"
+       id="path4760"
+       d="m 59.323542,36.845189 c -4.923955,-4.423162 -7.488294,-6.501829 -7.488294,-10.697558 0,-9.536991 12.337066,-10.822594 21.466437,-10.554927 5.225494,0.153208 11.124384,0.559374 15.29758,2.774372 2.841632,1.508247 5.367066,3.823463 5.367066,7.531995 0,4.979028 -4.86475,7.93099 -8.255477,11.017435 -9.050136,-4.451366 -17.738141,-4.590077 -26.387312,-0.07133 z"
+       style="fill:#fae4ed;fill-opacity:1;stroke:#1f1a17;stroke-width:1.69328892;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="cccccc"
+       inkscape:connector-curvature="0"
+       id="path5347"
+       d="m 59.323542,36.845189 v 4.984114 c 8.612444,4.713783 17.405516,4.682783 26.375269,0 l 0.01211,-4.912797 v 0 C 76.184699,32.072204 67.50711,32.82843 59.323542,36.845182 Z"
+       style="fill:#fae4ed;fill-opacity:1;stroke:#1f1a17;stroke-width:1.69328892;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="ccc"
+       inkscape:connector-curvature="0"
+       id="path5353"
+       d="m 59.323542,41.829303 c 8.60722,-4.521092 17.387757,-4.795999 26.375269,0 v 0"
+       style="fill:none;stroke:#1f1a17;stroke-width:1.69328892;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="cscc"
+       inkscape:connector-curvature="0"
+       id="path5355"
+       d="m 69.664515,15.521388 c 0.403124,-1.901498 1.356191,-3.235945 3.280585,-3.244926 1.682343,-0.0078 3.026638,1.263387 3.423218,3.351902 z"
+       style="fill:#fae4ed;fill-opacity:1;stroke:#1f1a17;stroke-width:1.69328892;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/client/public/images/pieces/Shinobi/wh.svg b/client/public/images/pieces/Shinobi/wh.svg
new file mode 100644
index 00000000..d4095e39
--- /dev/null
+++ b/client/public/images/pieces/Shinobi/wh.svg
@@ -0,0 +1,96 @@
+<?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="wH.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="4.0230493"
+     inkscape:cx="70.316171"
+     inkscape:cy="117.65721"
+     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>
+  <path
+     fill="#1f1a17"
+     d="m 26.18,9.395 c 2.599,0.169 5,0.838 7.222,2.02 2.21,1.168 4.098,2.675 5.656,4.513 1.092,1.287 2.117,2.845 3.082,4.665 0.974,1.812 1.744,3.742 2.32,5.774 0.66,2.371 1.084,4.851 1.253,7.459 0.178,2.599 0.263,5.01 0.263,7.23 v 5.402 H 42.115 32.105 19.080698 c -0.152,0 -0.22,-0.406 -0.212,-1.211 0.008,-0.813 0.059,-1.465 0.161,-1.964 0.059,-0.398 0.22,-0.957 0.466,-1.685 0.254,-0.728 0.66,-1.609 1.245,-2.65 0.262,-0.533 0.889,-1.304 1.88,-2.32 2.853845,-3.875496 2.485682,-5.62775 2.093302,-9.568 -0.61,0.5 -1.279,0.906 -2.01,1.219 -3.505,1.253 -6.05,3.073 -7.611,5.452 -0.119,0.152 -0.491,0.821 -1.118,2.02 -0.33,0.627 -0.618,1.058 -0.847,1.287 -0.313,0.313 -0.771,0.491 -1.363,0.525 C 8.9930723,37.860447 7.6506161,37.133654 5.733,35.353 4.886,34.506 4.344,33.668 4.082,32.821 3.828,31.974 3.701,31.068 3.701,30.095 c 0,-1.389 0.855,-3.226 2.582,-5.512 2.02,-2.625 3.09,-4.631 3.217,-6 0,-0.593 0.059,-1.262 0.178,-2.01 0.102,-0.517 0.305,-1.01 0.618,-1.49 0.22,-0.33 0.364,-0.559 0.432,-0.677 0.076,-0.127 0.212,-0.313 0.415,-0.559 0.144,-0.203 0.271,-0.356 0.373,-0.457 0.093,-0.11 0.22,-0.254 0.373,-0.44 0.178,-0.212 0.406,-0.457 0.694,-0.745 -0.88,-2.413 -1.236,-4.902 -1.067,-7.459 3.285,1.168 6.05,3.01 8.28,5.529 0.55,-1.871 1.626,-3.387 3.226,-4.538 1.321,0.923 2.371,2.151 3.15,3.666"
+     id="path1515"
+     sodipodi:nodetypes="ccccccscccscccccccccscccsccccccccccccc" />
+  <path
+     fill="url(#0)"
+     d="m 42.976,44.693 c -0.017,0 0,-0.449 0.042,-1.346 0.051,-0.906 0.076,-1.88 0.076,-2.921 0.017,-2.066 0.017,-4.2 0,-6.409 -0.017,-2.21 -0.313,-4.411 -0.889,-6.613 -0.567,-2.117 -1.185,-3.92 -1.863,-5.419 -0.677,-1.499 -1.414,-2.786 -2.21,-3.878 -1.185,-1.786 -2.811,-3.302 -4.86,-4.538 -2.049,-1.245 -4.191,-2.057 -6.426,-2.438 0.152,0.813 0.22,1.609 0.203,2.388 -0.034,0.593 -0.313,0.889 -0.847,0.889 -0.61,0 -0.881,-0.296 -0.821,-0.889 0.051,-2.184 -0.728,-4.056 -2.328,-5.605 -1.253,1.321 -1.939,2.853 -2.032,4.606 -0.034,0.584 -0.33,0.838 -0.897,0.771 -0.525,-0.017 -0.787,-0.322 -0.787,-0.914 0,0 0.017,-0.068 0.042,-0.203 -0.677,0.22 -1.389,0.525 -2.134,0.923 -0.474,0.33 -0.864,0.245 -1.16,-0.246 -0.296,-0.499 -0.169,-0.889 0.398,-1.168 0.711,-0.364 1.245,-0.635 1.609,-0.821 -1.422,-1.456 -3.04,-2.625 -4.86,-3.522 0.195,2.303 0.83,4.47 1.888,6.528 0.279,0.423 0.212,0.804 -0.203,1.135 -0.466,0.364 -0.855,0.313 -1.168,-0.169 -0.11,-0.169 -0.279,-0.466 -0.491,-0.897 -0.347,0.347 -0.584,0.61 -0.694,0.77 -0.118,0.152 -0.322,0.483 -0.61,0.991 -0.288,0.516 -0.499,0.94 -0.635,1.27 -0.144,0.415 -0.212,0.745 -0.186,1.01 0.025,0.254 0.051,0.533 0.068,0.855 -0.152,0.974 -0.491,1.888 -1.01,2.752 -0.525,0.855 -1.185,1.905 -1.998,3.15 -0.779,1.185 -1.372,2.083 -1.786,2.675 -0.415,0.601 -0.728,1.355 -0.94,2.286 -0.152,0.559 -0.152,1.245 0,2.041 0.144,0.804 0.4389253,1.658986 0.9299253,2.107986 0.4064646,0.574552 0.8276424,0.994501 1.8943273,1.680808 1.6414673,0.924892 3.7273714,0.917247 4.4397474,-0.570794 0.237,-0.499 0.601,-1.168 1.092,-2.01 0.584,-0.982 1.202,-1.77 1.863,-2.388 0.66,-0.61 1.245,-1.109 1.761,-1.482 0.296,-0.22 0.66,-0.466 1.092,-0.745 0.432,-0.288 1.01,-0.576 1.736,-0.872 0.576,-0.229 1.219,-0.516 1.922,-0.855 0.703,-0.339 1.329,-0.77 1.871,-1.304 0.762,-0.745 1.346,-1.659 1.761,-2.752 0.22,-0.61 0.296,-1.363 0.245,-2.261 -0.144,-0.559 0.136,-0.838 0.847,-0.838 0.533,0 0.83,0.271 0.898,0.821 0,1.863 -1.915124,4.195268 -1.416626,5.806495 1.253552,3.759057 1.419945,6.987377 -0.544323,9.690695 -2.592687,3.474631 -4.628192,6.005603 -4.562381,8.92881 h 4.225 3.88133 13.572 M 9.336,29.615 c -0.483,0.296 -0.77,0.694 -0.872,1.194 0.017,0.542 -0.237,0.838 -0.762,0.889 -0.584,0.068 -0.881,-0.178 -0.898,-0.745 0.068,-1.092 0.55,-1.956 1.465,-2.599 0.432,-0.347 0.83,-0.322 1.194,0.093 0.364,0.449 0.322,0.838 -0.127,1.168 m 7.366,-11.828 c 0.212,0.33 0.296,0.677 0.246,1.041 -0.161,1.058 -0.754,1.499 -1.761,1.338 -0.296,-0.051 -0.533,-0.152 -0.72,-0.296 -0.059,0.076 -0.161,0.262 -0.296,0.542 -0.178,0.533 -0.525,0.711 -1.041,0.55 -0.508,-0.203 -0.711,-0.576 -0.593,-1.118 0.745,-1.905 2.091,-3.209 4.04,-3.92 0.567,-0.169 0.94,0 1.118,0.491 0.203,0.533 0.051,0.898 -0.449,1.092 -0.093,0.051 -0.186,0.102 -0.271,0.136 -0.085,0.042 -0.169,0.093 -0.271,0.144"
+     id="path1517"
+     style="fill:#fae4ed;fill-opacity:1"
+     sodipodi:nodetypes="cccsccccccscccccccccccccccccccccccccccccccccscccscccccccccccccccccccccccccc" />
+  <path
+     style="fill:#fae4ed;fill-opacity:1;stroke:none;stroke-width:0.282215px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     d="m 17.113095,14.980159 c 0,0 -4.017857,0.248016 -4.960318,3.373016 -0.94246,3.124999 -0.496031,4.06746 -0.496031,4.06746 l 6.200396,0.446428 c 0,0 2.641004,-4.994359 1.450528,-6.284042 -1.190476,-1.289682 -2.194575,-1.602862 -2.194575,-1.602862 z"
+     id="path11989"
+     sodipodi:nodetypes="csccsc" />
+  <path
+     style="fill:#fae4ed;stroke:none;stroke-width:0.282215px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+     d="m 8.2776387,26.570073 -1.6835876,2.314933 -0.070149,3.226875 2.4552319,0.350748 1.753738,-4.349268 z"
+     id="path11997" />
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1.69329;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="m 14.171,20.412 5.681303,-1.62852"
+     id="path11999"
+     sodipodi:nodetypes="cc" />
+</svg>
diff --git a/client/public/images/pieces/Shinobi/wj.svg b/client/public/images/pieces/Shinobi/wj.svg
new file mode 100644
index 00000000..70a320db
--- /dev/null
+++ b/client/public/images/pieces/Shinobi/wj.svg
@@ -0,0 +1,122 @@
+<?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="wJ.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 />
+      </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="3360"
+     inkscape:window-height="1780"
+     id="namedview1521"
+     showgrid="false"
+     inkscape:zoom="4.0230492"
+     inkscape:cx="-28.122358"
+     inkscape:cy="121.52888"
+     inkscape:window-x="6708"
+     inkscape:window-y="1085"
+     inkscape:window-maximized="1"
+     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="g5357"
+     transform="matrix(0.6912555,0,0,0.6912555,48.874461,-22.971562)">
+    <path
+       style="fill:#fae4ed;fill-opacity:1;stroke:#1f1a17;stroke-width:2.44958478;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m -33.333332,51.091268 c -4.339131,0.02427 -9.346989,0.401228 -12.599207,3.27381 -5.573586,4.922974 -9.340661,13.38048 -8.234125,20.734126 1.540018,10.234413 9.117466,23.521944 19.444443,24.206349 9.848858,0.652718 19.006843,-10.867741 21.42857,-20.436507 2.132172,-8.424672 -1.889057,-18.245 -8.246162,-24.170241 -3.015661,-2.810794 -7.671112,-3.630597 -11.793519,-3.607537 z"
+       id="path5326"
+       sodipodi:nodetypes="sssssss" />
+    <path
+       style="fill:#1f1a17;stroke:#1f1a17;stroke-width:1.41107;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+       d="m -33.994234,71.667677 c -4.374096,-0.046 -8.860917,-2.669807 -13.047802,-1.402989 -0.87401,0.264448 -1.748703,0.912757 -2.104484,1.753736 -0.603024,1.425403 -0.303619,3.227294 0.350748,4.629867 0.58027,1.243751 1.629813,2.48812 2.946277,2.876128 7.423754,2.188045 16.386619,2.180677 23.429926,0.631345 1.860494,-0.409256 3.496963,-2.051073 4.279118,-3.788071 0.643254,-1.428525 0.778843,-3.340653 0,-4.700016 -0.390763,-0.682023 -1.2676,-1.01942 -2.034334,-1.192542 -4.510066,-1.018333 -9.196102,1.241168 -13.819449,1.192542 z"
+       id="path5328"
+       sodipodi:nodetypes="ssssssssss" />
+    <path
+       style="fill:#1f1a17;stroke:none;stroke-width:0.282215px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+       d="M -52.930113,52.728903 -64.732141,40.600197 c 0,0 -0.899577,-0.127799 -1.496608,0.229233 -0.939182,0.561644 -1.939501,1.457064 -2.579363,2.65377 -0.272311,0.509291 -0.214703,1.38287 -0.214703,1.38287 l 11.863667,12.0295 -1.819027,1.884192 c 0,0 -0.197635,0.848701 0.12401,1.314483 0.309904,0.448779 1.215276,0.520833 1.215276,0.520833 l 8.531746,-8.531746 c 0,0 -0.02226,-0.845175 -0.322421,-1.24008 -0.373832,-0.491829 -1.240079,-0.223212 -1.240079,-0.223212 z"
+       id="path5330"
+       sodipodi:nodetypes="ccsscccsccscc" />
+    <path
+       style="fill:#fae4ed;fill-opacity:1;stroke:none;stroke-width:0.282215px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m -65.133792,44.738787 v 2.350009 l 2.350006,0.03507 0.02631,-2.358774 z"
+       id="path5332"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#fae4ed;fill-opacity:1;stroke:none;stroke-width:0.282215px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m -61.941991,48.035813 v 2.350009 l 2.350006,0.03507 1e-6,-2.38508 z"
+       id="path5334"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#fae4ed;fill-opacity:1;stroke:none;stroke-width:0.282215px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m -58.627427,51.402988 v 2.350009 l 2.350006,0.03507 10e-7,-2.376311 z"
+       id="path5336"
+       inkscape:transform-center-x="2.841054"
+       inkscape:transform-center-y="-3.788072"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:none;stroke:#1f1a17;stroke-width:2.04132065;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m -55.453165,58.172416 2.665682,2.420156"
+       id="path5338"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#1f1a17;stroke-width:2.04132065;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m -51.910616,54.454492 2.06941,1.858961"
+       id="path5342"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:#1f1a17;stroke:none;stroke-width:0.282215;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+       d="m -13.408418,67.166223 c 0,0 2.182294,-1.858852 3.28937,-2.136462 1.1576173,-0.290283 2.6021652,-0.478932 3.9682544,0.545635 2.0890118,1.566759 1.7896771,2.346199 3.125,3.42262 0.9142346,0.736976 2.97619043,1.884919 2.97619043,1.884919 0.12599288,1.274357 -6.18637593,1.406447 -6.49801593,0.44643 0.538889,0.350042 0.8522595,1.932722 1.0912699,1.88492 -0.096451,0 -0.7714283,3.869047 -0.6448411,4.067461 0.1193125,0.187011 1.190476,3.720237 1.190476,3.720237 -1.4925689,-0.366478 -2.9637724,-0.562033 -4.7123014,-2.976192 -0.2487549,-3.506493 -0.7901093,-6.01817 -2.4801583,-6.101188 z"
+       id="path5344"
+       sodipodi:nodetypes="cssscccscccc" />
+  </g>
+</svg>
diff --git a/client/public/images/pieces/Shinobi/wk.svg b/client/public/images/pieces/Shinobi/wk.svg
new file mode 100644
index 00000000..854df921
--- /dev/null
+++ b/client/public/images/pieces/Shinobi/wk.svg
@@ -0,0 +1,105 @@
+<?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="svg909"
+   sodipodi:docname="wK.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
+  <metadata
+     id="metadata913">
+    <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="1662"
+     inkscape:window-height="1767"
+     id="namedview911"
+     showgrid="false"
+     inkscape:zoom="4.0230492"
+     inkscape:cx="100.32402"
+     inkscape:cy="120.43362"
+     inkscape:window-x="1703"
+     inkscape:window-y="182"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg909"
+     inkscape:document-rotation="0" />
+  <defs
+     id="defs903">
+    <linearGradient
+       id="0"
+       x1="21.376"
+       x2="77.64"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop898" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop900" />
+    </linearGradient>
+  </defs>
+  <g
+     id="g17084"
+     transform="translate(40.444642,-0.63800887)">
+    <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 -15.50127,4.6463282 c -6.391728,3.5636501 -12.513606,7.9763598 -16.204233,12.2546088 5.433139,2.85946 10.923053,6.455192 16.488406,8.256936 5.912894,-2.226341 10.7241605,-6.285775 15.05551798,-9.434679 C -4.3487956,11.67809 -9.3474258,7.6954807 -15.50127,4.6463282 Z"
+       id="path17064"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#ffffff;stroke:#1f1a17;stroke-width:1.12886;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m -20.711,20.199543 5.404642,-5.897357 5.4202589,5.673973 -5.4127859,2.933302 z"
+       id="path17066"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.744524;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m -29.960843,16.64633 c 5.023904,2.568463 9.811454,5.364493 14.580541,7.295912 5.5038551,-2.230723 9.6502188,-5.185395 13.4741018,-8.320719"
+       id="path17068"
+       sodipodi:nodetypes="ccc" />
+    <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 -26.693033,20.124904 c 0,0 0.260889,9.524264 -1.424239,14.322494 -0.717251,2.0423 -3.516225,5.459404 -3.516225,5.459404 0,0 3.237126,1.768592 4.626613,2.961027 0.779476,0.668935 1.143897,1.803674 2.035709,2.313311 1.281519,0.732336 4.349016,1.758112 4.349016,0.83279 0,-0.925323 0.427812,-22.783476 0.427812,-22.783476 z"
+       id="path17070"
+       sodipodi:nodetypes="cscssscc" />
+    <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 -4.0252261,18.824915 c 0,0 -0.3600949,10.627964 1.3250321,15.426192 0.717252,2.0423 3.51622598,5.459404 3.51622598,5.459404 0,0 -3.23712598,1.768592 -4.62661198,2.961027 -0.779476,0.668935 -1.143898,1.803674 -2.03571,2.313311 -1.281519,0.732335 -4.349016,1.758112 -4.349016,0.832789 0,-0.925322 -0.01646,-22.986725 -0.01646,-22.986725 z"
+       id="path17072"
+       sodipodi:nodetypes="cscssscc" />
+    <path
+       style="fill:#1f1a17;fill-opacity:1;stroke:none;stroke-width:0.186131px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m -20.903319,23.136232 6.132651,1.72402 4.459696,-1.536833 -0.01523,15.333054 c 0,0 -3.279089,1.431747 -5.021768,1.45582 -1.797091,0.0248 -5.218057,-1.357675 -5.218057,-1.357675 z"
+       id="path17076"
+       sodipodi:nodetypes="ccccscc" />
+  </g>
+</svg>
diff --git a/client/public/images/pieces/Shinobi/wl.svg b/client/public/images/pieces/Shinobi/wl.svg
new file mode 100644
index 00000000..6b4f6d1e
--- /dev/null
+++ b/client/public/images/pieces/Shinobi/wl.svg
@@ -0,0 +1,107 @@
+<?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="svg909"
+   sodipodi:docname="wL.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
+  <metadata
+     id="metadata913">
+    <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="1662"
+     inkscape:window-height="1767"
+     id="namedview911"
+     showgrid="false"
+     inkscape:zoom="4.0230492"
+     inkscape:cx="104.79903"
+     inkscape:cy="-7.1411981"
+     inkscape:window-x="1703"
+     inkscape:window-y="182"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg909"
+     inkscape:document-rotation="0" />
+  <defs
+     id="defs903">
+    <linearGradient
+       id="0"
+       x1="21.376"
+       x2="77.64"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop898" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop900" />
+    </linearGradient>
+  </defs>
+  <g
+     transform="matrix(1.2108754,0,0,-1.0098715,-392.5823,266.33544)"
+     style="display:inline;stroke-width:0.754734;stroke-miterlimit:4;stroke-dasharray:none"
+     id="g2196">
+    <g
+       style="stroke-width:3.21763;stroke-miterlimit:4;stroke-dasharray:none"
+       transform="matrix(0.36754398,0,0,0.61619193,230.69697,62.808035)"
+       id="g2188" />
+    <g
+       id="g11215">
+      <g
+         id="g11208">
+        <g
+           style="stroke-width:1.53126;stroke-miterlimit:4;stroke-dasharray:none"
+           id="g2194"
+           transform="translate(-125.28541,-2.8138692)">
+          <path
+             sodipodi:nodetypes="cccccc"
+             inkscape:connector-curvature="0"
+             id="path2190"
+             d="m 469.92093,260.57241 -9.8696,-30.68076 9.36845,-3.32597 h 1.31068 l 9.49859,3.32597 z"
+             style="fill:#fae4ed;fill-opacity:1;stroke:#1f1a17;stroke-width:1.53126;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+          <path
+             style="fill:none;stroke:#1f1a17;stroke-width:1.53126;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             d="m 469.4849,226.49242 v -5.17688 h 1.28718 c 0,3.12599 0.006,-1.49822 0.0307,5.16792 z"
+             id="path2192"
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="ccccc" />
+        </g>
+      </g>
+      <path
+         style="fill:none;stroke:#1f1a17;stroke-width:1.53126;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 344.85985,247.42006 V 228.95157"
+         id="path11203" />
+    </g>
+  </g>
+</svg>
diff --git a/client/public/images/pieces/Shinobi/wm.svg b/client/public/images/pieces/Shinobi/wm.svg
new file mode 100644
index 00000000..72edfaa9
--- /dev/null
+++ b/client/public/images/pieces/Shinobi/wm.svg
@@ -0,0 +1,98 @@
+<?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="svg909"
+   sodipodi:docname="wM.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
+  <metadata
+     id="metadata913">
+    <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="1662"
+     inkscape:window-height="1767"
+     id="namedview911"
+     showgrid="false"
+     inkscape:zoom="11.378902"
+     inkscape:cx="111.33047"
+     inkscape:cy="79.703723"
+     inkscape:window-x="1703"
+     inkscape:window-y="182"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg909"
+     inkscape:document-rotation="0" />
+  <defs
+     id="defs903">
+    <linearGradient
+       id="0"
+       x1="21.376"
+       x2="77.64"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop898" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop900" />
+    </linearGradient>
+  </defs>
+  <g
+     id="g10570"
+     transform="translate(-50.923732,1.8466766)">
+    <g
+       id="g10562"
+       transform="translate(-1.5873016,-6.8259073)">
+      <ellipse
+         style="fill:#1f1a17;fill-opacity:1;stroke:#1f1a17;stroke-width:0.56443;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
+         id="path10554"
+         cx="77.511047"
+         cy="29.081352"
+         rx="9.7507782"
+         ry="12.20601" />
+      <path
+         style="fill:#fae4ed;fill-opacity:1;stroke:#1f1a17;stroke-width:1.69329;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 77.509139,15.179751 c 8.698496,-5.49e-4 18.96239,15.185724 18.96239,15.185724 H 58.550365 c 0,0 10.261155,-15.185174 18.958774,-15.185724 z"
+         id="path10558"
+         sodipodi:nodetypes="sccs" />
+    </g>
+    <ellipse
+       style="fill:none;fill-opacity:1;stroke:#1f1a17;stroke-width:1.69329;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
+       id="path10564"
+       cx="75.923729"
+       cy="35.899956"
+       rx="5.6119585"
+       ry="7.8567424" />
+  </g>
+</svg>
diff --git a/client/public/images/pieces/Shinobi/wn.svg b/client/public/images/pieces/Shinobi/wn.svg
new file mode 100644
index 00000000..505cc174
--- /dev/null
+++ b/client/public/images/pieces/Shinobi/wn.svg
@@ -0,0 +1,79 @@
+<?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="wN.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="5.6894509"
+     inkscape:cx="88.584999"
+     inkscape:cy="88.584999"
+     inkscape:window-x="8391"
+     inkscape:window-y="1097"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg1519" />
+  <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>
+  <path
+     fill="#1f1a17"
+     d="m26.18 9.395c2.599.169 5 .838 7.222 2.02 2.21 1.168 4.098 2.675 5.656 4.513 1.092 1.287 2.117 2.845 3.082 4.665.974 1.812 1.744 3.742 2.32 5.774.66 2.371 1.084 4.851 1.253 7.459.178 2.599.263 5.01.263 7.23v5.402c0 0-1.287 0-3.861 0-2.565 0-5.901 0-10.01 0h-16.637c-.152 0-.22-.406-.212-1.211.008-.813.059-1.465.161-1.964.059-.398.22-.957.466-1.685.254-.728.66-1.609 1.245-2.65.262-.533.889-1.304 1.88-2.32.999-1.016 2.134-2.201 3.429-3.539.745-.762 1.321-1.719 1.744-2.879.423-1.151.601-2.201.533-3.15-.61.5-1.279.906-2.01 1.219-3.505 1.253-6.05 3.073-7.611 5.452-.119.152-.491.821-1.118 2.02-.33.627-.618 1.058-.847 1.287-.313.313-.771.491-1.363.525-.923.042-1.643-.398-2.159-1.346-.694.203-1.312.288-1.863.254-.923-.347-1.592-.72-2.01-1.118-.847-.847-1.389-1.685-1.651-2.532-.254-.847-.381-1.753-.381-2.726 0-1.389.855-3.226 2.582-5.512 2.02-2.625 3.09-4.631 3.217-6 0-.593.059-1.262.178-2.01.102-.517.305-1.01.618-1.49.22-.33.364-.559.432-.677.076-.127.212-.313.415-.559.144-.203.271-.356.373-.457.093-.11.22-.254.373-.44.178-.212.406-.457.694-.745-.88-2.413-1.236-4.902-1.067-7.459 3.285 1.168 6.05 3.01 8.28 5.529.55-1.871 1.626-3.387 3.226-4.538 1.321.923 2.371 2.151 3.15 3.666"
+     id="path1515" />
+  <path
+     fill="url(#0)"
+     d="m42.976 44.693c-.017 0 0-.449.042-1.346.051-.906.076-1.88.076-2.921.017-2.066.017-4.2 0-6.409-.017-2.21-.313-4.411-.889-6.613-.567-2.117-1.185-3.92-1.863-5.419-.677-1.499-1.414-2.786-2.21-3.878-1.185-1.786-2.811-3.302-4.86-4.538-2.049-1.245-4.191-2.057-6.426-2.438.152.813.22 1.609.203 2.388-.034.593-.313.889-.847.889-.61 0-.881-.296-.821-.889.051-2.184-.728-4.056-2.328-5.605-1.253 1.321-1.939 2.853-2.032 4.606-.034.584-.33.838-.897.771-.525-.017-.787-.322-.787-.914 0 0 .017-.068.042-.203-.677.22-1.389.525-2.134.923-.474.33-.864.245-1.16-.246-.296-.499-.169-.889.398-1.168.711-.364 1.245-.635 1.609-.821-1.422-1.456-3.04-2.625-4.86-3.522.195 2.303.83 4.47 1.888 6.528.279.423.212.804-.203 1.135-.466.364-.855.313-1.168-.169-.11-.169-.279-.466-.491-.897-.347.347-.584.61-.694.77-.118.152-.322.483-.61.991-.288.516-.499.94-.635 1.27-.144.415-.212.745-.186 1.01.025.254.051.533.068.855-.152.974-.491 1.888-1.01 2.752-.525.855-1.185 1.905-1.998 3.15-.779 1.185-1.372 2.083-1.786 2.675-.415.601-.728 1.355-.94 2.286-.152.559-.152 1.245 0 2.041.144.804.474 1.431.965 1.88.762.77 1.499 1.126 2.21 1.067.229 0 .542-.093.931-.279.389-.178.686-.525.906-1.041.423-.94.779-1.414 1.067-1.414.406 0 .635.237.669.694 0 .102-.136.517-.398 1.245-.152.33-.347.677-.593 1.041-.322.432-.457.61-.423.542.262.948.703 1.109 1.312.499.178-.178.389-.525.618-1.016.237-.499.601-1.168 1.092-2.01.584-.982 1.202-1.77 1.863-2.388.66-.61 1.245-1.109 1.761-1.482.296-.22.66-.466 1.092-.745.432-.288 1.01-.576 1.736-.872.576-.229 1.219-.516 1.922-.855.703-.339 1.329-.77 1.871-1.304.762-.745 1.346-1.659 1.761-2.752.22-.61.296-1.363.245-2.261-.144-.559.136-.838.847-.838.533 0 .83.271.898.821 0 1.863-.533 3.564-1.592 5.105.347 1.058.44 2.218.271 3.471-.144 1.01-.5 2.091-1.05 3.243-.559 1.143-1.676 2.422-3.361 3.827-3.429 2.845-5.05 5.774-4.86 8.78 0 0 1.405 0 4.225 0 2.819 0 5.47 0 7.95 0h13.572m-33.638-15.08c-.483.296-.77.694-.872 1.194.017.542-.237.838-.762.889-.584.068-.881-.178-.898-.745.068-1.092.55-1.956 1.465-2.599.432-.347.83-.322 1.194.093.364.449.322.838-.127 1.168m7.366-11.828c.212.33.296.677.246 1.041-.161 1.058-.754 1.499-1.761 1.338-.296-.051-.533-.152-.72-.296-.059.076-.161.262-.296.542-.178.533-.525.711-1.041.55-.508-.203-.711-.576-.593-1.118.745-1.905 2.091-3.209 4.04-3.92.567-.169.94 0 1.118.491.203.533.051.898-.449 1.092-.093.051-.186.102-.271.136-.085.042-.169.093-.271.144"
+     id="path1517"
+     style="fill:#fae4ed;fill-opacity:1" />
+</svg>
diff --git a/client/public/images/pieces/Shinobi/wp.svg b/client/public/images/pieces/Shinobi/wp.svg
new file mode 100644
index 00000000..e0898cdd
--- /dev/null
+++ b/client/public/images/pieces/Shinobi/wp.svg
@@ -0,0 +1,82 @@
+<?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="svg861"
+   sodipodi:docname="wP.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
+  <metadata
+     id="metadata865">
+    <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="1678"
+     inkscape:window-height="1767"
+     id="namedview863"
+     showgrid="false"
+     inkscape:zoom="2.0115246"
+     inkscape:cx="-75.659301"
+     inkscape:cy="-86.197728"
+     inkscape:window-x="6709"
+     inkscape:window-y="1097"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg861" />
+  <defs
+     id="defs855">
+    <linearGradient
+       id="0"
+       gradientUnits="userSpaceOnUse"
+       x1="21.13"
+       y1="37.35"
+       x2="77.76"
+       y2="37.469"
+       gradientTransform="matrix(1 0 0 .97324 0 1.243)">
+      <stop
+         stop-color="#fff"
+         id="stop850" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop852" />
+    </linearGradient>
+  </defs>
+  <path
+     d="m25 46.45h-13.394c-.66-1.607-.991-3.288-.991-5.04 0-2.975.864-5.644 2.599-8.02 1.736-2.365 3.971-4.054 6.697-5.068-1.168-.527-2.125-1.327-2.862-2.398-.737-1.071-1.101-2.283-1.101-3.634 0-1.689.576-3.156 1.736-4.392 1.152-1.244 2.574-1.961 4.267-2.151-1.346-.981-2.02-2.282-2.02-3.889 0-1.351.491-2.513 1.482-3.477.982-.964 2.176-1.442 3.581-1.442 1.389 0 2.582.478 3.573 1.442.991.964 1.49 2.126 1.49 3.477 0 1.607-.669 2.909-2.02 3.889 1.693.19 3.116.906 4.267 2.151 1.16 1.236 1.736 2.703 1.736 4.392 0 1.351-.373 2.563-1.126 3.634-.753 1.071-1.71 1.87-2.862 2.398 2.726 1.014 4.961 2.703 6.697 5.068 1.736 2.373 2.599 5.04 2.599 8.02 0 1.739-.322 3.42-.965 5.04h-13.394"
+     fill="#1f1a17"
+     id="path857" />
+  <path
+     d="m25 44.808h12.175c.347-1.154.525-2.291.525-3.403 0-2.513-.711-4.787-2.142-6.831-1.431-2.044-3.277-3.552-5.52-4.516-1.584-.62-1.643-.659-1.643-1.739 0-.849.559-1.475 1.668-1.879 1.532-1.047 2.303-2.431 2.303-4.153 0-1.244-.432-2.324-1.287-3.263-.864-.931-1.905-1.467-3.124-1.615-.999-.082-1.49-.626-1.49-1.64 0-.453.178-.873.542-1.261.898-.676 1.346-1.557 1.346-2.653 0-.898-.339-1.673-.999-2.316-.66-.643-1.448-.964-2.354-.964-.94 0-1.744.321-2.396.964-.652.643-.974 1.417-.974 2.316 0 1.079.44 1.961 1.338 2.653.364.354.542.775.542 1.261 0 1.014-.483 1.557-1.465 1.64-1.236.148-2.286.684-3.133 1.615-.855.939-1.279 2.02-1.279 3.263 0 1.722.77 3.106 2.303 4.153 1.109.412 1.668 1.046 1.668 1.879 0 1.079-.067 1.118-1.668 1.739-2.244.964-4.081 2.472-5.503 4.516-1.422 2.044-2.134 4.318-2.134 6.831 0 1.195.178 2.324.525 3.403h12.175"
+     fill="url(#0)"
+     id="path859"
+     style="fill:#fae4ed;fill-opacity:1" />
+</svg>
diff --git a/client/public/images/pieces/Shinobi/wr.svg b/client/public/images/pieces/Shinobi/wr.svg
new file mode 100644
index 00000000..6e4360fa
--- /dev/null
+++ b/client/public/images/pieces/Shinobi/wr.svg
@@ -0,0 +1,86 @@
+<?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="svg909"
+   sodipodi:docname="wR.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
+  <metadata
+     id="metadata913">
+    <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="namedview911"
+     showgrid="false"
+     inkscape:zoom="2.0115246"
+     inkscape:cx="181.03337"
+     inkscape:cy="121.86961"
+     inkscape:window-x="8380"
+     inkscape:window-y="1097"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg909"
+     inkscape:document-rotation="0" />
+  <defs
+     id="defs903">
+    <linearGradient
+       id="0"
+       x1="21.376"
+       x2="77.64"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop898" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop900" />
+    </linearGradient>
+  </defs>
+  <g
+     id="g10552"
+     transform="translate(-37.522978,0.12215172)">
+    <path
+       style="fill:#fae4ed;fill-opacity:1;stroke:none;stroke-width:0.282215px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 62.292741,10.50584 c -1.179771,1.835372 -3.184573,3.093222 -6.234402,3.619553 l 1.008955,0.747283 2.83809,1.189813 v 2.538258 l -2.708133,1.189831 -3.823644,1.546821 1.794688,1.308795 2.833392,1.110379 -0.05821,3.795592 -3.154259,0.46206 c -1.320776,1.090066 -2.797366,1.556877 -4.492033,1.151378 l 1.992601,2.840292 3.252974,-1.4e-5 v 3.014184 l -2.661503,1.189807 c -1.461702,0.543274 -2.669418,1.594521 -4.828856,0.742323 l 3.44504,3.303025 v 4.600581 h 22.051013 l 0.769093,-5.7904 2.63644,-1.41171 c -2.622771,0.08891 -3.830391,-0.608378 -4.789334,-1.443819 l -1.511301,-1.150108 -1.150201,-3.053883 2.498592,-1.193757 2.847759,-1.646521 c -1.678544,-0.217835 -3.664531,-0.128227 -4.285451,-1.403686 l -3.51983,-0.911862 4e-6,-3.093482 3.23637,-1.110379 2.464423,-1.547782 -4.504222,-1.307834 -2.892493,-0.418236 -0.207772,-3.309853 2.838079,-1.189813 1.00896,-0.747283 C 66.196956,13.384712 63.960967,12.181844 62.292741,10.50584 Z"
+       id="path10548"
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccc" />
+    <path
+       sodipodi:nodetypes="cccccccccccccccscccccccccccccsccccscccsccccccccccccccccccccccscccscccccscccccccccccccccccccccccccccccccccccccccccccccscscccccscscccscccccccccccccccccccsccccccccccccccccccccscccccccccccccccccccccscccccccc"
+       inkscape:connector-curvature="0"
+       id="path2174"
+       d="m 50.502303,45.8509 -0.194697,-0.194696 v -2.730437 -2.730445 l -1.942751,-1.480777 c -2.024301,-1.542939 -2.141226,-1.66711 -1.954986,-2.07585 0.137895,-0.302638 0.435223,-0.375791 0.935788,-0.230286 1.51067,0.439179 3.307148,0.09612 4.475066,-0.854585 l 0.509553,-0.41477 1.031169,-0.03966 1.031164,-0.03966 0.02166,-1.526917 0.02166,-1.52692 H 53.362846 52.289782 L 50.485771,30.64704 c -0.992206,-0.747364 -1.882135,-1.434474 -1.97762,-1.52692 -0.268445,-0.259899 -0.30142,-0.533654 -0.09576,-0.795106 0.159708,-0.20302 0.209308,-0.219432 0.539896,-0.178415 0.200227,0.02479 0.524663,0.08081 0.720982,0.124379 0.529012,0.117439 1.635959,0.100166 2.206993,-0.03447 0.683,-0.161012 1.259888,-0.446532 1.933744,-0.957045 l 0.566845,-0.429449 h 1.215627 1.215627 V 25.303291 23.756539 H 55.740593 54.669241 L 52.865227,22.39973 c -0.992203,-0.746253 -1.884324,-1.44428 -1.982484,-1.55118 -0.47573,-0.518064 0.136382,-1.240291 0.765746,-0.903468 0.287977,0.154124 1.417613,0.239835 2.074853,0.157411 1.047116,-0.131293 1.739993,-0.443575 2.802944,-1.263296 0.303802,-0.234278 0.325792,-0.238478 1.249301,-0.238478 h 0.940048 V 17.331591 16.06246 h -0.914731 c -0.619703,0 -0.997059,-0.03653 -1.16998,-0.113082 -0.140373,-0.06215 -0.89694,-0.606704 -1.681236,-1.210018 -1.566634,-1.205114 -1.700667,-1.370852 -1.415787,-1.750718 0.18439,-0.245837 0.305411,-0.255021 1.691631,-0.128241 0.955375,0.08738 1.902074,0.0078 2.480844,-0.208891 0.289955,-0.108489 0.672475,-0.358777 1.068493,-0.699136 0.33926,-0.291593 1.196454,-0.991645 1.904876,-1.555667 L 61.967769,9.3712111 V 7.9633639 6.5555166 l 0.208995,-0.1643779 c 0.263659,-0.2074032 0.428836,-0.2074032 0.692495,0 l 0.208995,0.1643779 v 1.4078473 1.4078472 l 1.288026,1.0254959 c 0.708425,0.564022 1.565619,1.264074 1.904879,1.555667 0.397404,0.341546 0.778682,0.590806 1.071755,0.700629 0.578093,0.216639 1.514643,0.295275 2.477574,0.208003 1.393719,-0.12631 1.505806,-0.117856 1.69082,0.127615 0.286083,0.379572 0.152245,0.545153 -1.41497,1.750721 -0.784297,0.603311 -1.540853,1.147818 -1.681237,1.210016 -0.172936,0.07658 -0.550272,0.113081 -1.169976,0.113081 h -0.914732 v 1.269131 1.269128 h 1.115698 c 1.167031,0 1.263203,0.02218 1.654075,0.379042 0.65227,0.595763 1.635855,1.015334 2.651812,1.131215 0.67736,0.07718 0.916624,0.0597 1.893023,-0.138599 0.563642,-0.114491 0.62783,-0.113969 0.811769,0.006 0.254238,0.166595 0.339829,0.490044 0.19347,0.731252 -0.06108,0.100662 -0.964001,0.827251 -2.006496,1.614674 l -1.895476,1.432199 h -1.257094 -1.2571 v 1.546742 1.546752 h 1.024693 1.024682 l 0.422908,0.361811 c 0.496249,0.424559 1.340273,0.855843 2.006147,1.025105 0.595867,0.151463 1.761377,0.152819 2.382783,0.0029 0.649011,-0.156707 0.88441,-0.148331 1.070828,0.03809 0.226946,0.226946 0.202315,0.565906 -0.05946,0.818868 -0.11997,0.1159 -1.017351,0.817895 -1.994181,1.559965 l -1.776041,1.349211 h -0.863067 -0.863068 l 0.02166,1.52693 0.02139,1.526909 1.031161,0.03966 1.031163,0.03966 0.509553,0.41477 c 1.169419,0.95191 2.963653,1.298583 4.456487,0.861064 0.519356,-0.15222 0.814589,-0.08297 0.954378,0.223814 0.186243,0.408754 0.06927,0.532901 -1.954983,2.075853 l -1.942759,1.480795 v 2.730435 2.730445 l -0.194697,0.194696 -0.194696,0.194697 H 62.523035 50.697083 Z m 9.254505,-0.995099 c 6.574889,0.05213 -3.874643,0 6.890839,0 h 5.431088 1.469719 v -2.3003 -2.300281 H 62.52298 51.497441 v 2.300281 2.3003 h 1.229466 1.229469 c 4.045312,0 2.689645,0.04034 5.800432,0 z m 15.346191,-6.392172 c 0.431996,-0.330974 0.79734,-0.634368 0.811881,-0.674221 0.01461,-0.03987 -0.09576,-0.07246 -0.245105,-0.07246 -0.762998,0 -2.290346,-0.58579 -3.071,-1.177853 l -0.434122,-0.329223 h -9.641699 -9.641701 l -0.434125,0.329225 c -0.780657,0.592063 -2.308004,1.177854 -3.071002,1.177854 -0.149349,0 -0.259639,0.03259 -0.245106,0.07246 0.01461,0.03987 0.379891,0.343247 0.811886,0.674221 l 0.78544,0.601769 h 11.794603 11.794598 z m -5.599851,-4.95065 v -1.507098 h -6.980194 -6.980198 v 1.507098 1.507087 h 6.980198 6.980194 z m 3.315526,-3.328476 0.816932,-0.628889 -0.301352,-0.04741 c -1.22413,-0.192609 -2.336705,-0.62289 -3.071425,-1.187904 l -0.390457,-0.300274 -7.541576,-0.0029 -7.541583,-0.0029 -0.528529,0.371097 c -0.290694,0.204116 -0.729909,0.46017 -0.976048,0.56904 -0.553272,0.244662 -1.504804,0.512911 -1.825286,0.514532 -0.525874,0.0029 -0.469849,0.116343 0.364807,0.740154 l 0.812272,0.607074 9.682657,-0.002 9.682653,-0.002 z m -5.774453,-4.881189 v -1.546741 h -4.521267 -4.521266 v 1.546741 1.546741 h 4.521266 4.521267 z m 4.122666,-3.311531 0.886292,-0.654297 -0.54131,-0.09072 c -1.138466,-0.190835 -2.051856,-0.555517 -2.828592,-1.129308 l -0.442484,-0.32688 h -5.521762 -5.521778 l -0.502326,0.358443 c -0.814547,0.581243 -1.732099,0.93369 -2.930798,1.125728 l -0.39052,0.06265 0.615452,0.463095 c 0.338493,0.254707 0.742297,0.549178 0.897339,0.654396 l 0.281895,0.191304 h 7.55615 7.55615 z m -6.026361,-4.660164 v -1.26913 h -2.617572 -2.617569 v 1.26913 1.269128 h 2.617569 2.617572 z m 3.342557,-2.832582 0.504484,-0.373644 -0.713893,-0.10301 c -1.19431,-0.172336 -1.946443,-0.477479 -2.602056,-1.055669 -0.555787,-0.490151 -3.09588,-2.53597 -3.148664,-2.53597 -0.05278,0 -2.592876,2.045819 -3.148664,2.53597 -0.655612,0.57819 -1.407745,0.883333 -2.602066,1.055669 l -0.713883,0.10301 0.504476,0.373642 0.504479,0.373641 h 5.455658 5.455656 z"
+       style="display:inline;fill:#1f1a17;fill-opacity:1;stroke:#1f1a17;stroke-width:0.56443;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+  </g>
+</svg>
diff --git a/client/public/images/pieces/Shinobi/ws.svg b/client/public/images/pieces/Shinobi/ws.svg
new file mode 100644
index 00000000..93ed344d
--- /dev/null
+++ b/client/public/images/pieces/Shinobi/ws.svg
@@ -0,0 +1,234 @@
+<?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>
diff --git a/client/src/variants/Copycat.js b/client/src/variants/Copycat.js
index 089b92f8..78299c69 100644
--- a/client/src/variants/Copycat.js
+++ b/client/src/variants/Copycat.js
@@ -141,4 +141,8 @@ export class CopycatRules extends ChessRules {
     );
   }
 
+  static get SEARCH_DEPTH() {
+    return 2;
+  }
+
 };
diff --git a/client/src/variants/Shinobi.js b/client/src/variants/Shinobi.js
new file mode 100644
index 00000000..5eed0d39
--- /dev/null
+++ b/client/src/variants/Shinobi.js
@@ -0,0 +1,377 @@
+import { ChessRules, PiPo, Move } from "@/base_rules";
+import { ArrayFun } from "@/utils/array";
+
+export class ShinobiRules extends ChessRules {
+
+  /* Would be unused:
+  static get PawnSpecs() {
+    return Object.assign(
+      { promotions: [V.PAWN] },
+      ChessRules.PawnSpecs
+    );
+  } */
+
+  static get CAPTAIN() {
+    return 'c';
+  }
+  static get NINJA() {
+    return 'j';
+  }
+  static get SAMURAI() {
+    return 's';
+  }
+  static get MONK() {
+    return 'm';
+  }
+  static get HORSE() {
+    return 'h';
+  }
+  static get LANCE() {
+    return 'l';
+  }
+
+  static get PIECES() {
+    return (
+      ChessRules.PIECES
+      .concat([V.CAPTAIN, V.NINJA, V.SAMURAI, V.MONK, V.HORSE, V.LANCE])
+    );
+  }
+
+  getPpath(b) {
+    if (b[0] == 'b' && b[1] != 'c') return b;
+    return "Shinobi/" + b;
+  }
+
+  getReservePpath(index, color) {
+    return "Shinobi/" + color + V.RESERVE_PIECES[index];
+  }
+
+  static IsGoodFen(fen) {
+    if (!ChessRules.IsGoodFen(fen)) return false;
+    const fenParsed = V.ParseFen(fen);
+    // 5) Check reserve
+    if (!fenParsed.reserve || !fenParsed.reserve.match(/^[0-9]{6,6}$/))
+      return false;
+    return true;
+  }
+
+  static ParseFen(fen) {
+    const fenParts = fen.split(" ");
+    return Object.assign(
+      ChessRules.ParseFen(fen),
+      { reserve: fenParts[5] }
+    );
+  }
+
+  // In hand initially: another captain, a ninja + a samurai,
+  // and 2 x monk, horse, lance (TODO)
+  static GenRandInitFen(randomness) {
+    const baseFen = ChessRules.GenRandInitFen(Math.min(randomness, 1));
+    return (
+      baseFen.substr(0, 33) + "3CK3 " +
+      "w 0 " + baseFen.substr(38, 2) + " - 111222"
+    );
+  }
+
+  getFen() {
+    return super.getFen() + " " + this.getReserveFen();
+  }
+
+  getFenForRepeat() {
+    return super.getFenForRepeat() + "_" + this.getReserveFen();
+  }
+
+  getReserveFen() {
+    // TODO: can simplify other drops variants with this code:
+    return Object.values(this.reserve['w']).join("");
+  }
+
+  setOtherVariables(fen) {
+    super.setOtherVariables(fen);
+    const reserve =
+      V.ParseFen(fen).reserve.split("").map(x => parseInt(x, 10));
+    this.reserve = {
+      w: {
+        [V.CAPTAIN]: reserve[0],
+        [V.NINJA]: reserve[1],
+        [V.SAMURAI]: reserve[2],
+        [V.MONK]: reserve[3],
+        [V.HORSE]: reserve[4]
+        [V.LANCE]: reserve[5]
+      }
+    };
+  }
+
+  getColor(i, j) {
+    if (i >= V.size.x) return i == V.size.x ? "w" : "b";
+    return this.board[i][j].charAt(0);
+  }
+
+  getPiece(i, j) {
+    if (i >= V.size.x) return V.RESERVE_PIECES[j];
+    return this.board[i][j].charAt(1);
+  }
+
+  // Ordering on reserve pieces
+  static get RESERVE_PIECES() {
+    return [V.CAPTAIN, V.NINJA, V.SAMURAI, V.MONK, V.HORSE, V.LANCE];
+  }
+
+  getReserveMoves([x, y]) {
+    // color == 'w', no drops for black.
+    const p = V.RESERVE_PIECES[y];
+    if (this.reserve['w'][p] == 0) return [];
+    let moves = [];
+    for (let i of [4, 5, 6, 7]) {
+      for (let j = 0; j < V.size.y; j++) {
+        if (this.board[i][j] == V.EMPTY) {
+          let mv = new Move({
+            appear: [
+              new PiPo({
+                x: i,
+                y: j,
+                c: color,
+                p: p
+              })
+            ],
+            vanish: [],
+            start: { x: x, y: y },
+            end: { x: i, y: j }
+          });
+          moves.push(mv);
+        }
+      }
+    }
+    return moves;
+  }
+
+  static get MapUnpromoted() {
+    return {
+      m: 'b',
+      h: 'n',
+      l: 'r',
+      p: 'c'
+    };
+  }
+
+  getPotentialMovesFrom([x, y]) {
+    if (x >= V.size.x) {
+      // Reserves, outside of board: x == sizeX(+1)
+      if (this.turn == 'b') return [];
+      return this.getReserveMoves([x, y]);
+    }
+    // Standard moves
+    const piece = this.getPiece(x, y);
+    const sq = [x, y];
+    if (ChessRules.includes(piece)) return super.getPotentialMovesFrom(sq);
+    switch (piece) {
+      case V.KING: return super.getPotentialKingMoves(sq);
+      case V.CAPTAIN: return this.getPotentialCaptainMoves(sq);
+      case V.NINJA: return this.getPotentialNinjaMoves(sq);
+      case V.SAMURAI: return this.getPotentialSamuraiMoves(sq);
+    }
+    let moves = [];
+    switch (piece) {
+      // Unpromoted
+      case V.PAWN:
+        moves = super.getPotentialPawnMoves(sq);
+      case V.MONK:
+        moves = this.getPotentialMonkMoves(sq);
+        break;
+      case V.HORSE:
+        moves = this.getPotentialHorseMoves(sq);
+        break;
+      case V.LANCE:
+        moves = this.getPotentialLanceMoves(sq);
+        break;
+    }
+    const promotionZone = (this.turn == 'w' ? [0, 1, 2] : [5, 6, 7]);
+    const promotedForm = V.MapUnpromoted[piece];
+    moves.forEach(m => {
+      if (promotionZone.includes(m.end.x)) move.appear[0].p = promotedForm;
+    });
+    return moves;
+  }
+
+  getPotentialCaptainMoves([x, y]) {
+  }
+
+  // TODO: adapt...
+  getPotentialNinjaMoves(sq) {
+    return super.getSlideNJumpMoves(sq, V.steps[V.BISHOP], "oneStep");
+  }
+
+  getPotentialSamuraiMoves(sq) {
+    const steps = V.steps[V.ROOK].concat(V.steps[V.BISHOP]);
+    return super.getSlideNJumpMoves(sq, steps, "oneStep");
+  }
+
+  getPotentialMonkMoves(sq) {
+    return (
+      super.getSlideNJumpMoves(sq, V.steps[V.ROOK])
+      .concat(super.getSlideNJumpMoves(sq, V.steps[V.KNIGHT], "oneStep"))
+    );
+  }
+
+  getPotentialHorseMoves(sq) {
+    const steps =
+      V.steps[V.BISHOP].concat(V.steps[V.ROOK]).concat(V.steps[V.KNIGHT]);
+    return super.getSlideNJumpMoves(sq, steps, "oneStep");
+  }
+
+  getPotentialLanceMoves(sq) {
+    return (
+      super.getSlideNJumpMoves(sq, V.steps[V.BISHOP])
+      .concat(super.getSlideNJumpMoves(sq, V.steps[V.KNIGHT], "oneStep"))
+    );
+  }
+
+  isAttacked(sq, color) {
+    if (color == 'b')
+      return (super.isAttacked(sq, 'b') || this.isAttackedByCaptain(sq, 'b'));
+    // Attacked by white:
+    return (
+      super.isAttackedByKing(sq, 'w') ||
+      this.isAttackedByCaptain(sq, 'w') ||
+      this.isAttackedByNinja(sq, 'w')
+      this.isAttackedBySamurai(sq, 'w')
+      this.isAttackedByMonk(sq, 'w') ||
+      this.isAttackedByHorse(sq, 'w') ||
+      this.isAttackedByLance(sq, 'w') ||
+      super.isAttackedByBishop(sq, 'w') ||
+      super.isAttackedByKnight(sq, 'w') ||
+      super.isAttackedByRook(sq, 'w')
+    );
+  }
+
+  isAttackedByCaptain(sq, color) {
+    const steps = V.steps[V.BISHOP].concat(V.steps[V.ROOK]);
+    return (
+      super.isAttackedBySlideNJump(sq, color, V.DUCHESS, steps, "oneStep")
+    );
+  }
+
+  isAttackedByNinja(sq, color) {
+    return (
+      super.isAttackedBySlideNJump(
+        sq, color, V.DUCHESS, V.steps[V.BISHOP], "oneStep")
+    );
+  }
+
+  isAttackedBySamurai(sq, color) {
+    return (
+      super.isAttackedBySlideNJump(sq, color, V.MORTAR, V.steps[V.ROOK]) ||
+      super.isAttackedBySlideNJump(
+        sq, color, V.MORTAR, V.steps[V.KNIGHT], "oneStep")
+    );
+  }
+
+  isAttackedByMonk(sq, color) {
+    const steps =
+      V.steps[V.BISHOP].concat(V.steps[V.ROOK]).concat(V.steps[V.KNIGHT]);
+    return (
+      super.isAttackedBySlideNJump(sq, color, V.GENERAL, steps, "oneStep")
+    );
+  }
+
+  isAttackedByHorse(sq, color) {
+    return (
+      super.isAttackedBySlideNJump(sq, color, V.ARCHBISHOP, V.steps[V.BISHOP])
+      ||
+      super.isAttackedBySlideNJump(
+        sq, color, V.ARCHBISHOP, V.steps[V.KNIGHT], "oneStep")
+    );
+  }
+
+  isAttackedByLance(sq, color) {
+    return (
+      super.isAttackedBySlideNJump(sq, color, V.ARCHBISHOP, V.steps[V.BISHOP])
+      ||
+      super.isAttackedBySlideNJump(
+        sq, color, V.ARCHBISHOP, V.steps[V.KNIGHT], "oneStep")
+    );
+  }
+
+  getAllValidMoves() {
+    let moves = super.getAllPotentialMoves();
+    const color = this.turn;
+    for (let i = 0; i < V.RESERVE_PIECES.length; i++) {
+      moves = moves.concat(
+        this.getReserveMoves([V.size.x + (color == "w" ? 0 : 1), i])
+      );
+    }
+    return this.filterValid(moves);
+  }
+
+  atLeastOneMove() {
+    if (!super.atLeastOneMove()) {
+      // Search one reserve move
+      for (let i = 0; i < V.RESERVE_PIECES.length; i++) {
+        let moves = this.filterValid(
+          this.getReserveMoves([V.size.x + (this.turn == "w" ? 0 : 1), i])
+        );
+        if (moves.length > 0) return true;
+      }
+      return false;
+    }
+    return true;
+  }
+
+  // TODO: only black can castle (see Orda)
+
+  postPlay(move) {
+    super.postPlay(move);
+    // Skip castle:
+    if (move.vanish.length == 2 && move.appear.length == 2) return;
+    const color = move.appear[0].c;
+    if (move.vanish.length == 0) this.reserve[color][move.appear[0].p]--;
+  }
+
+  postUndo(move) {
+    super.postUndo(move);
+    if (move.vanish.length == 2 && move.appear.length == 2) return;
+    const color = this.turn;
+    if (move.vanish.length == 0) this.reserve[color][move.appear[0].p]++;
+  }
+
+  /*
+  static get SEARCH_DEPTH() {
+    return 2;
+  } */
+
+  // TODO:
+  static get VALUES() {
+    return (
+      Object.assign(
+        {
+          c: 4,
+          g: 5,
+          a: 7,
+          m: 7,
+          f: 2
+        },
+        ChessRules.VALUES
+      )
+    );
+  }
+
+  evalPosition() {
+    let evaluation = super.evalPosition();
+    // Add reserves:
+    for (let i = 0; i < V.RESERVE_PIECES.length; i++) {
+      const p = V.RESERVE_PIECES[i];
+      evaluation += this.reserve["w"][p] * V.VALUES[p];
+      evaluation -= this.reserve["b"][p] * V.VALUES[p];
+    }
+    return evaluation;
+  }
+
+  getNotation(move) {
+    if (move.vanish.length > 0) return super.getNotation(move);
+    // Drop:
+    const piece =
+      move.appear[0].p != V.PAWN ? move.appear[0].p.toUpperCase() : "";
+    return piece + "@" + V.CoordsToSquare(move.end);
+  }
+
+};
-- 
2.44.0