Add Shogun Chess
authorBenjamin Auder <benjamin.auder@somewhere>
Fri, 15 Jan 2021 00:17:22 +0000 (01:17 +0100)
committerBenjamin Auder <benjamin.auder@somewhere>
Fri, 15 Jan 2021 00:17:22 +0000 (01:17 +0100)
35 files changed:
client/public/images/pieces/Shogun/SOURCE [new file with mode: 0644]
client/public/images/pieces/Shogun/bM.svg [new file with mode: 0644]
client/public/images/pieces/Shogun/ba.svg [new file with mode: 0644]
client/public/images/pieces/Shogun/bb.svg [new symlink]
client/public/images/pieces/Shogun/bc.svg [new file with mode: 0644]
client/public/images/pieces/Shogun/bf.svg [new file with mode: 0644]
client/public/images/pieces/Shogun/bg.svg [new file with mode: 0644]
client/public/images/pieces/Shogun/bk.svg [new file with mode: 0644]
client/public/images/pieces/Shogun/bn.svg [new symlink]
client/public/images/pieces/Shogun/bp.svg [new symlink]
client/public/images/pieces/Shogun/bq.svg [new file with mode: 0644]
client/public/images/pieces/Shogun/br.svg [new symlink]
client/public/images/pieces/Shogun/wa.svg [new file with mode: 0644]
client/public/images/pieces/Shogun/wb.svg [new symlink]
client/public/images/pieces/Shogun/wc.svg [new file with mode: 0644]
client/public/images/pieces/Shogun/wf.svg [new file with mode: 0644]
client/public/images/pieces/Shogun/wg.svg [new file with mode: 0644]
client/public/images/pieces/Shogun/wk.svg [new file with mode: 0644]
client/public/images/pieces/Shogun/wm.svg [new file with mode: 0644]
client/public/images/pieces/Shogun/wn.svg [new symlink]
client/public/images/pieces/Shogun/wp.svg [new symlink]
client/public/images/pieces/Shogun/wq.svg [new file with mode: 0644]
client/public/images/pieces/Shogun/wr.svg [new symlink]
client/public/variants/Shogun/Promotions.png [new file with mode: 0644]
client/src/translations/en.js
client/src/translations/es.js
client/src/translations/fr.js
client/src/translations/rules/Shogun/en.pug
client/src/translations/rules/Shogun/es.pug
client/src/translations/rules/Shogun/fr.pug
client/src/translations/variants/en.pug
client/src/translations/variants/es.pug
client/src/translations/variants/fr.pug
client/src/variants/Shogun.js [new file with mode: 0644]
server/db/populate.sql

diff --git a/client/public/images/pieces/Shogun/SOURCE b/client/public/images/pieces/Shogun/SOURCE
new file mode 100644 (file)
index 0000000..9de3788
--- /dev/null
@@ -0,0 +1,2 @@
+https://github.com/gbtami/pychess-variants/tree/master/static/images/pieces/shogun/blue
+By Couch Tomato
diff --git a/client/public/images/pieces/Shogun/bM.svg b/client/public/images/pieces/Shogun/bM.svg
new file mode 100644 (file)
index 0000000..e222195
--- /dev/null
@@ -0,0 +1,174 @@
+<?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="svg10137"
+   sodipodi:docname="bM.svg"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+   inkscape:export-filename="D:\Pictures\Chess Variants\Chess\pieces\Shogun\BlackMortar.png"
+   inkscape:export-xdpi="198.53"
+   inkscape:export-ydpi="198.53">
+  <metadata
+     id="metadata10141">
+    <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="1920"
+     inkscape:window-height="1017"
+     id="namedview10139"
+     showgrid="false"
+     inkscape:zoom="2.6641079"
+     inkscape:cx="-17.005271"
+     inkscape:cy="117.34301"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg10137" />
+  <defs
+     id="defs10131">
+    <linearGradient
+       id="0"
+       x1="21.376"
+       x2="77.64"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(5.0935658,27.115748)">
+      <stop
+         stop-color="#fff"
+         id="stop10126" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop10128" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(17.679678,31.473797)"
+       id="0-2"
+       x1="21.190001"
+       y1="37.551998"
+       x2="77.739998"
+       y2="37.429001"
+       gradientUnits="userSpaceOnUse"
+       xlink:href="#linearGradient940">
+      <stop
+         stop-color="#fff"
+         id="stop15856" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop15858" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient940"
+       id="linearGradient16471"
+       x1="93.92865"
+       y1="104.95064"
+       x2="144.68373"
+       y2="104.95064"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient940"
+       inkscape:collect="always">
+      <stop
+         id="stop936"
+         offset="0"
+         style="stop-color:#ffe680;stop-opacity:1" />
+      <stop
+         id="stop938"
+         offset="1"
+         style="stop-color:#b89200;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient940"
+       id="linearGradient2946"
+       x1="29.989677"
+       y1="45.766796"
+       x2="55.364677"
+       y2="45.766796"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <g
+     id="g10710"
+     transform="matrix(0.88963841,-0.16235103,0.16235103,0.88963841,0.63252059,6.8524838)">
+    <path
+       sodipodi:nodetypes="cccsssc"
+       inkscape:connector-curvature="0"
+       id="path10688"
+       d="M 20.598979,27.528386 6.5916734,17.715781 16.01534,5.8058262 36.104392,18.38993 c 3.359829,2.104651 5.245889,8.165002 3.071121,11.01109 -2.01284,2.634176 -6.336052,4.927633 -9.812605,2.996215 z"
+       style="fill:#1f1a17;fill-opacity:1;stroke:#1f1a17;stroke-width:1.87242186;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="ccsccsc"
+       inkscape:connector-curvature="0"
+       id="path10690"
+       d="M 12.658898,22.245762 22.82839,9.5868642 c 0,0 1.215432,-0.7616529 1.747881,-0.4766949 0.639924,0.342477 0.688559,2.0656777 0.688559,2.0656777 l -10.169491,12.76483 c 0,0 -1.726503,0.81767 -2.330509,0.317797 -0.517574,-0.428342 -0.105932,-2.012712 -0.105932,-2.012712 z"
+       style="fill:#ffe680;stroke:#1f1a17;stroke-width:1.56035157;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="ccsccsc"
+       inkscape:connector-curvature="0"
+       id="path10690-3"
+       d="M 3.5726054,15.914934 13.212436,3.9975604 c 0,0 1.480263,-1.1324157 2.012712,-0.8474577 0.639924,0.342477 0.790192,2.6557235 0.790192,2.6557235 L 6.5916734,17.715781 c 0,0 -2.30913,0.711738 -2.913136,0.211865 -0.517574,-0.428342 -0.105932,-2.012712 -0.105932,-2.012712 z"
+       style="fill:#ffe680;stroke:#1f1a17;stroke-width:1.69328892;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+  <path
+     style="fill:#1f1a17;fill-opacity:1;stroke:#1f1a17;stroke-width:1.69328892;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="m 21.590698,33.741618 2.202811,-8.650492 c 0.995427,-3.909066 11.466536,-3.745608 12.470169,0 l 2.339932,8.732741 v 3.958562 H 21.533158 Z"
+     id="path10686"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="csscccc" />
+  <g
+     id="g16445"
+     transform="translate(-12.586112,-4.358049)">
+    <path
+       sodipodi:nodetypes="ccccccccccccccc"
+       style="fill:#1f1a17;stroke-width:1"
+       inkscape:connector-curvature="0"
+       id="path15863"
+       d="m 46.087678,40.693797 h 4.216 v -3.395 h 6.796 v 9.295 l -5.5,4.243 h -17.81 l -5.508,-4.243 v -9.295 h 6.774 v 3.395 h 4.242 v -3.395 h 6.79 z" />
+    <path
+       sodipodi:nodetypes="cccccccc"
+       style="fill:url(#linearGradient2946);stroke-width:1;fill-opacity:1.0"
+       inkscape:connector-curvature="0"
+       id="path15865"
+       d="m 42.689678,44.513797 h -12.7 v 1.143 l 1.812,1.363 h 21.802 l 1.761,-1.363 v -1.143 h -12.675" />
+  </g>
+  <path
+     style="fill:url(#linearGradient16471);fill-opacity:1.0;stroke:none;stroke-width:5.5186615;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="m 106.4043,79.591797 c -9.346101,-0.06659 -18.688431,2.985376 -20.31055,9.355469 l -7.179688,28.193354 -0.1875,13.16993 h 15.76286 l 0.160342,-13.5883 23.695976,-0.0361 -0.0349,13.62441 h 3.3841 12.66639 V 117.4082 l -7.625,-28.460934 c -1.63549,-6.103727 -10.98594,-9.288878 -20.33203,-9.355469 z m 0.0273,4.974609 c 7.51314,0.05353 15.02901,2.612869 16.34375,7.519532 l 5.00478,18.749942 -42.695426,-0.21484 5.018812,-18.535102 c 1.303989,-5.120789 8.814985,-7.573063 16.328124,-7.519532 z"
+     transform="scale(0.28221482)"
+     id="path16460"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="scccccccccccscccccsc" />
+</svg>
diff --git a/client/public/images/pieces/Shogun/ba.svg b/client/public/images/pieces/Shogun/ba.svg
new file mode 100644 (file)
index 0000000..75c0b04
--- /dev/null
@@ -0,0 +1,366 @@
+<?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="svg7104"
+   sodipodi:docname="bAshogun.svg"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+  <metadata
+     id="metadata7108">
+    <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="1920"
+     inkscape:window-height="1017"
+     id="namedview7106"
+     showgrid="false"
+     inkscape:object-nodes="false"
+     inkscape:zoom="0.9419044"
+     inkscape:cx="407.91192"
+     inkscape:cy="-123.54158"
+     inkscape:window-x="1912"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg7104"
+     inkscape:snap-nodes="false" />
+  <defs
+     id="defs7098">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient13395">
+      <stop
+         style="stop-color:#ffe680;stop-opacity:1;"
+         offset="0"
+         id="stop13391" />
+      <stop
+         style="stop-color:#ffe680;stop-opacity:0;"
+         offset="1"
+         id="stop13393" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient33768">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0"
+         id="stop33764" />
+      <stop
+         style="stop-color:#e6e6e6;stop-opacity:1"
+         offset="1"
+         id="stop33766" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient32542">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0"
+         id="stop32538" />
+      <stop
+         style="stop-color:#b3b3b3;stop-opacity:1"
+         offset="1"
+         id="stop32540" />
+    </linearGradient>
+    <linearGradient
+       id="0"
+       x1="21.405"
+       x2="77.64"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.84732229,0,0,0.84860456,3.1918211,-2.021577)">
+      <stop
+         stop-color="#fff"
+         id="stop7093" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop7095" />
+    </linearGradient>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath8236">
+      <rect
+         style="opacity:1;fill:#d40000;fill-opacity:1;stroke:#d40000;stroke-width:0.36687925;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
+         id="rect8238"
+         width="56.567795"
+         height="26.271185"
+         x="-1.4830509"
+         y="-7.2033896" />
+    </clipPath>
+    <linearGradient
+       id="0-7"
+       x1="21.375999"
+       x2="77.639999"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop7670" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop7672" />
+    </linearGradient>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath8276">
+      <rect
+         style="opacity:1;fill:#d40000;fill-opacity:1;stroke:#d40000;stroke-width:0.36687925;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
+         id="rect8278"
+         width="56.567795"
+         height="26.271185"
+         x="-2.5423729"
+         y="-1.9067795" />
+    </clipPath>
+    <linearGradient
+       id="0-1"
+       x1="21.375999"
+       x2="77.639999"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop7670-0" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop7672-6" />
+    </linearGradient>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath5191">
+      <rect
+         style="opacity:1;fill:#d40000;fill-opacity:1;stroke:#000000;stroke-width:0.2045171;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
+         id="rect5193"
+         width="35.162529"
+         height="15.671"
+         x="7.2068729"
+         y="4.0289068"
+         clip-path="none" />
+    </clipPath>
+    <linearGradient
+       id="0-3"
+       x1="21.375999"
+       x2="77.639999"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop4571" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop4573" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient32542"
+       id="linearGradient32544"
+       x1="1.7936434"
+       y1="74.318817"
+       x2="12.63324"
+       y2="73.869385"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient33768"
+       id="linearGradient33814"
+       gradientUnits="userSpaceOnUse"
+       x1="-0.058763873"
+       y1="118.91294"
+       x2="4.2020578"
+       y2="118.91294"
+       gradientTransform="translate(-2.449432,-44.343985)" />
+    <linearGradient
+       id="linearGradient940"
+       inkscape:collect="always">
+      <stop
+         id="stop936"
+         offset="0"
+         style="stop-color:#ffe680;stop-opacity:1" />
+      <stop
+         id="stop938"
+         offset="1"
+         style="stop-color:#b89200;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient940"
+       id="linearGradient13379"
+       x1="-8.8450384"
+       y1="91.893539"
+       x2="7.2221651"
+       y2="91.893539"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-0.07944915)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient940"
+       id="linearGradient13387"
+       x1="-5.9627137"
+       y1="85.976685"
+       x2="4.8151217"
+       y2="85.976685"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient33768"
+       id="linearGradient13389"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-2.3969721,-44.343985)"
+       x1="-0.058763873"
+       y1="118.91294"
+       x2="4.2020578"
+       y2="118.91294" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient13395"
+       id="linearGradient13397"
+       x1="-5.8112926"
+       y1="74.703705"
+       x2="4.5278864"
+       y2="74.703705"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient940"
+       id="linearGradient13405"
+       x1="-6.0496321"
+       y1="72.505302"
+       x2="4.8101459"
+       y2="72.505302"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient940"
+       id="linearGradient13407"
+       x1="-5.8112926"
+       y1="74.703705"
+       x2="4.5278864"
+       y2="74.703705"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient940"
+       id="linearGradient13415"
+       x1="-6.4993348"
+       y1="72.549019"
+       x2="4.3840117"
+       y2="72.549019"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient940"
+       id="linearGradient13417"
+       x1="-6.027205"
+       y1="68.83271"
+       x2="5.7175536"
+       y2="68.83271"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient940"
+       id="linearGradient13419"
+       x1="-5.3577819"
+       y1="72.461586"
+       x2="4.8888688"
+       y2="72.461586"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient940"
+       id="linearGradient13421"
+       x1="-5.6526632"
+       y1="80.305206"
+       x2="4.781251"
+       y2="80.305206"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <g
+     id="g32536"
+     style="fill:url(#linearGradient32544);fill-opacity:1"
+     transform="translate(25.211864,-48.303673)">
+    <path
+       sodipodi:nodetypes="ccccccccacccccaccccccc"
+       inkscape:connector-curvature="0"
+       id="path31799"
+       d="m 0.5859365,56.17703 c 0.7960066,-1.020015 -0.3788487,-2.345177 -1.3068235,-2.345578 -0.7032446,0.06761 -2.4032857,1.12243 -1.3068233,2.479612 -1.5679946,6.247019 -4.6143343,11.207329 -10.9907077,13.269271 0.772685,5.835682 4.7398273,9.845965 7.5058526,14.542581 -0.402536,0.380608 -1.2797124,0.749544 -1.8262037,1.189546 0.084992,0.995123 0.2798869,1.916985 1.2900669,2.295318 l -1.8094413,2.479607 c 0,0 -1.3033945,-0.221657 -1.7187392,0.177365 -0.26616,0.255694 -0.1577336,1.095956 -0.1577336,1.095956 L -12.415274,93.90733 H 6.6207631 10.705421 L 8.4268633,91.427724 c 0,0 0.06342,-0.993607 -0.268067,-1.273321 C 7.7145662,89.779581 6.416369,90.087363 6.416369,90.087363 L 4.6069216,87.339697 C 5.3197548,86.992767 6.0478973,86.666905 6.06453,85.362699 5.534902,84.850693 4.8938804,84.563337 4.4058731,84.189912 6.8645903,79.464965 10.860256,75.40465 11.241558,69.781364 6.0603183,66.727843 1.8586778,62.783752 0.5859305,56.17703 Z"
+       style="fill:#1f1a17;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
+       inkscape:connector-curvature="0"
+       id="path31801"
+       d="m -4.2776582,87.274357 c -1.2293684,-0.970178 -1.2467044,-1.677847 -0.058033,-2.542373 l 7.587461,-0.105932 c 1.3453266,0.890535 1.3025035,1.573618 0.068806,2.701271 z"
+       style="fill:url(#linearGradient13387);fill-opacity:1;stroke:none;stroke-width:0.56305051px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path31803"
+       d="m -6.6209876,90.559427 -2.823294,2.50933 H 7.7465029 l -2.541118,-2.50933 z"
+       style="fill:url(#linearGradient13379);fill-opacity:1;stroke:none;stroke-width:0.56305051px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+    <circle
+       style="opacity:1;fill:#f9df75;fill-opacity:1;stroke:url(#linearGradient13415);stroke-width:1.69328892;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
+       id="path29818-2"
+       cx="-5.2523627"
+       cy="72.549019"
+       r="0.69994909" />
+    <circle
+       style="opacity:1;fill:#be990b;fill-opacity:1;stroke:url(#linearGradient13419);stroke-width:1.69328892;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
+       id="path29818-3-6"
+       cx="3.7542548"
+       cy="72.461586"
+       r="0.69994909" />
+    <circle
+       style="opacity:1;fill:#dfc046;fill-opacity:1;stroke:url(#linearGradient13417);stroke-width:1.69328892;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
+       id="path29818-9-6"
+       cx="-0.81024778"
+       cy="68.83271"
+       r="0.69994909" />
+    <circle
+       style="opacity:1;fill:url(#linearGradient33814);fill-opacity:1;stroke:url(#linearGradient13421);stroke-width:1.69328892;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
+       id="path29818-99-3"
+       cx="-0.810233"
+       cy="80.305206"
+       r="0.69994909" />
+    <path
+       style="fill:url(#linearGradient13389);fill-opacity:1;stroke:url(#linearGradient13405);stroke-width:1.69328892;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m -4.3429314,72.103065 h 7.2577571 v 0.80447 h -7.2752471 z"
+       id="path29847-7"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:url(#linearGradient13397);fill-opacity:1;stroke:url(#linearGradient13407);stroke-width:1.69328892;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m -0.5134593,69.856275 v 9.75254 h -0.5935622 v -9.77604 z"
+       id="path29847-3-1"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/client/public/images/pieces/Shogun/bb.svg b/client/public/images/pieces/Shogun/bb.svg
new file mode 120000 (symlink)
index 0000000..dfaa068
--- /dev/null
@@ -0,0 +1 @@
+../bb.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Shogun/bc.svg b/client/public/images/pieces/Shogun/bc.svg
new file mode 100644 (file)
index 0000000..95043bc
--- /dev/null
@@ -0,0 +1,199 @@
+<?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="bC.svg"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+  <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 />
+      </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="1920"
+     inkscape:window-height="1017"
+     id="namedview4800"
+     showgrid="false"
+     inkscape:zoom="3.7676176"
+     inkscape:cx="70.467247"
+     inkscape:cy="73.22492"
+     inkscape:window-x="1912"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg4798"
+     inkscape:snap-nodes="false" />
+  <defs
+     id="defs4788">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient946">
+      <stop
+         style="stop-color:#ffe680;stop-opacity:1"
+         offset="0"
+         id="stop942" />
+      <stop
+         style="stop-color:#b89200;stop-opacity:1"
+         offset="1"
+         id="stop944" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient940"
+       inkscape:collect="always">
+      <stop
+         id="stop936"
+         offset="0"
+         style="stop-color:#ffe680;stop-opacity:1" />
+      <stop
+         id="stop938"
+         offset="1"
+         style="stop-color:#b89200;stop-opacity:1" />
+    </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="#linearGradient940"
+       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="#linearGradient946"
+       id="linearGradient948"
+       x1="18.720703"
+       y1="76.7248"
+       x2="136.30045"
+       y2="76.7248"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.28221482,0,0,0.28221482,0,4.1105181)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient940"
+       id="linearGradient956"
+       x1="22.879358"
+       y1="9.9480667"
+       x2="27.12064"
+       y2="9.9480667"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,4.1105181)" />
+  </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.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:#1f1a17;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="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.69328892;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.28221482px;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(#linearGradient948);fill-opacity:1;stroke:none;stroke-width:1.58653069;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(#linearGradient956);fill-opacity:1;stroke:none;stroke-width:0.22712019px;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/Shogun/bf.svg b/client/public/images/pieces/Shogun/bf.svg
new file mode 100644 (file)
index 0000000..7e05d5b
--- /dev/null
@@ -0,0 +1,109 @@
+<?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="svg15290"
+   sodipodi:docname="bD.svg"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+   inkscape:export-filename="D:\Pictures\Chess Variants\Chess\pieces\Shogun\wD.png"
+   inkscape:export-xdpi="108.37049"
+   inkscape:export-ydpi="108.37049">
+  <metadata
+     id="metadata15294">
+    <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="1920"
+     inkscape:window-height="1017"
+     id="namedview15292"
+     showgrid="false"
+     inkscape:zoom="2.664108"
+     inkscape:cx="67.937984"
+     inkscape:cy="34.930839"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg15290" />
+  <defs
+     id="defs15282">
+    <linearGradient
+       id="0"
+       x1="21.253"
+       y1="37.22"
+       x2="77.64"
+       y2="37.35"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop15277" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop15279" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(0.12393216,-0.27128804)"
+       id="0-1"
+       x1="21.253"
+       y1="37.220001"
+       x2="77.760002"
+       y2="37.360001"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop16502" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop16504" />
+    </linearGradient>
+  </defs>
+  <g
+     id="g15288"
+     transform="translate(0,4.1946909)"
+     style="stroke:#1f1a17;stroke-width:0.076">
+    <path
+       d="m 44.541,14.723 c -0.94,0 -1.744,-0.33 -2.405,-0.982 -0.66,-0.652 -0.991,-1.448 -0.991,-2.396 0,-0.923 0.33,-1.719 0.991,-2.388 0.66,-0.677 1.465,-1.01 2.405,-1.01 0.931,0 1.727,0.33 2.388,1.01 0.66,0.669 0.991,1.465 0.991,2.388 0,0.948 -0.33,1.744 -0.991,2.396 -0.66,0.652 -1.456,0.982 -2.388,0.982 z m -4.31,25.025299 c -0.813,0.711 -2.633,1.304 -5.461,1.786 -2.828,0.474 -6.087,0.72 -9.77,0.72 -3.751,0 -7.05,-0.254 -9.898,-0.745 -2.845,-0.499 -4.64,-1.118 -5.385,-1.863 L 11.058284,34.892785 8.4424527,30.275905 6.297,14.775 7.508,14.301 15.101492,27.186085 c 1.19031,-0.566072 1.257078,-0.777346 2.482201,-2.007822 L 20.955237,26.966085 24.103,10.779 h 1.719 l 3.18898,16.205108 c 1.575611,-0.258062 2.459179,-1.341488 3.48627,-1.828063 0.644572,0.762385 1.438955,1.937322 2.083527,2.323778 L 42.416,14.276 l 1.16,0.542 -2.057,15.359 -2.604378,3.993731 1.317378,5.580568 z M 5.399,14.725 c -0.94,0 -1.736,-0.33 -2.388,-0.982 -0.652,-0.652 -0.982,-1.448 -0.982,-2.396 0,-0.923 0.33,-1.719 0.982,-2.388 0.652,-0.677 1.448,-1.01 2.388,-1.01 0.948,0 1.744,0.33 2.413,1.01 0.66,0.669 0.991,1.465 0.991,2.388 0,0.948 -0.33,1.744 -0.991,2.396 -0.669,0.652 -1.465,0.982 -2.413,0.982 z m 19.55,-3.971 c -0.94,0 -1.744,-0.33 -2.396,-0.991 -0.652,-0.66 -0.974,-1.465 -0.974,-2.405 0,-0.931 0.322,-1.727 0.974,-2.388 0.652,-0.66 1.456,-0.991 2.396,-0.991 0.923,0 1.727,0.33 2.396,0.991 0.669,0.66 0.999,1.456 0.999,2.388 0,0.94 -0.33,1.744 -0.999,2.405 -0.669,0.66 -1.473,0.991 -2.396,0.991 z"
+       id="path15284"
+       inkscape:connector-curvature="0"
+       style="fill:#1f1a17"
+       sodipodi:nodetypes="scscscscsccsccccccccccccccccccccssscscscsscscscscs" />
+  </g>
+  <path
+     inkscape:connector-curvature="0"
+     style="fill:url(#0-1);stroke-width:1"
+     d="m 39.060932,35.046137 c -1.372,-0.5 -3.302,-0.906 -5.791,-1.228 -2.489,-0.322 -5.232,-0.483 -8.246,-0.483 -2.946,0 -5.639,0.152 -8.09,0.457 -2.447,0.305 -4.377,0.703 -5.783,1.202 l 1.245,2.252 c 1.389,-0.406 3.192,-0.703 5.41,-0.889 2.21,-0.178 4.631,-0.271 7.264,-0.271 2.633,0 5.063,0.093 7.29,0.271 2.235,0.186 4.047,0.491 5.436,0.914 l 1.261,-2.227 m -1.092,7.827576 -0.737,-2.929 c -8.305377,-1.302895 -16.184594,-1.782217 -24.268,0 l -0.787,2.955 c 3.141,-0.957 7.442,-1.439 12.92,-1.439 2.625,0 5.072,0.136 7.315,0.398 2.252,0.262 4.106,0.601 5.554,1.016"
+     id="path16523"
+     sodipodi:nodetypes="cssccccscccccccscc" />
+</svg>
diff --git a/client/public/images/pieces/Shogun/bg.svg b/client/public/images/pieces/Shogun/bg.svg
new file mode 100644 (file)
index 0000000..0d0678a
--- /dev/null
@@ -0,0 +1,255 @@
+<?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="svg8675"
+   sodipodi:docname="bG.svg"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+  <metadata
+     id="metadata8679">
+    <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="1920"
+     inkscape:window-height="1017"
+     id="namedview8677"
+     showgrid="false"
+     inkscape:zoom="2.664108"
+     inkscape:cx="25.963083"
+     inkscape:cy="23.056949"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg8675" />
+  <defs
+     id="defs8669">
+    <linearGradient
+       gradientTransform="matrix(0.80688623,0,0,0.80688623,50.509002,7.9437927)"
+       gradientUnits="userSpaceOnUse"
+       x2="77.639999"
+       x1="21.405001"
+       id="linearGradient9313">
+      <stop
+         id="stop9309"
+         stop-color="#fff" />
+      <stop
+         id="stop9311"
+         stop-opacity="0"
+         stop-color="#fff"
+         offset="1"
+         style="stop-color:#b3b3b3;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="0"
+       x1="21.253"
+       y1="37.592"
+       x2="77.64"
+       y2="37.469"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop8664" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop8666" />
+    </linearGradient>
+    <linearGradient
+       id="0-7"
+       x1="21.405001"
+       x2="77.639999"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.80688623,0,0,0.80688623,50.509002,7.9437927)">
+      <stop
+         stop-color="#fff"
+         id="stop1179" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop1181" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient940"
+       id="linearGradient9307"
+       x1="25.574814"
+       y1="27.912001"
+       x2="43.112312"
+       y2="27.912001"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient940"
+       id="linearGradient6699"
+       x1="22.510593"
+       y1="9.7722454"
+       x2="40.413136"
+       y2="9.7722454"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5460518,0,0,0.5460518,-22.15244,3.7178171)" />
+    <linearGradient
+       gradientTransform="matrix(0.19148631,0,0,0.19148631,-25.384424,2.3449359)"
+       inkscape:collect="always"
+       xlink:href="#linearGradient940"
+       id="linearGradient6689"
+       x1="60.948723"
+       y1="78.781807"
+       x2="158.5957"
+       y2="78.781807"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       gradientTransform="matrix(0.67851261,0,0,0.67851261,-25.384424,2.3449359)"
+       inkscape:collect="always"
+       xlink:href="#linearGradient940"
+       id="linearGradient6663"
+       x1="18.65144"
+       y1="35.580711"
+       x2="30.711206"
+       y2="35.580711"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="0-4"
+       x1="21.405001"
+       x2="77.639999"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.80688623,0,0,0.80688623,-52.497581,36.238717)">
+      <stop
+         stop-color="#fff"
+         id="stop1179-9" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop1181-9" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient940"
+       inkscape:collect="always">
+      <stop
+         id="stop936"
+         offset="0"
+         style="stop-color:#ffe680;stop-opacity:1" />
+      <stop
+         id="stop938"
+         offset="1"
+         style="stop-color:#b89200;stop-opacity:1" />
+    </linearGradient>
+  </defs>
+  <g
+     id="g10085"
+     transform="matrix(0.81398754,0.60700667,-0.60700667,0.81398754,51.909168,4.0387524)">
+    <g
+       style="fill:#1f1a17;fill-opacity:1;stroke:#1f1a17;stroke-opacity:1"
+       transform="matrix(0.67851261,0,0,0.67851261,-57.885715,-0.23765662)"
+       id="g5409">
+      <path
+         style="fill:#1f1a17;fill-opacity:1;stroke:#1f1a17;stroke-width:1.69328892;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         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"
+         id="path4760"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cssssccc" />
+      <path
+         style="fill:#1f1a17;fill-opacity:1;stroke:#1f1a17;stroke-width:1.69328892;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         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"
+         id="path5347"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccccc" />
+      <path
+         style="fill:#1f1a17;fill-opacity:1;stroke:#1f1a17;stroke-width:1.69328892;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         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"
+         id="path5355"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cscc" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       inkscape:connector-curvature="0"
+       id="path6655"
+       d="m -16.84595,25.038408 v 2.896981 c 5.882529,-2.301621 11.1599864,-2.031886 16.36540489,0 v -2.89698 C -6.1498959,22.695204 -11.44728,23.050722 -16.84595,25.038408 Z"
+       style="fill:url(#linearGradient6663);fill-opacity:1.0;stroke:none;stroke-width:0.19148631px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="ssccssssssssccss"
+       inkscape:connector-curvature="0"
+       id="path4760-0"
+       d="m -9.2621736,10.80549 c -5.6438934,-0.02822 -12.5374924,1.045271 -12.5374924,6.729322 0,2.667368 3.180519,5.259566 4.887764,5.733604 6.054543,-1.939128 10.3008848,-2.039114 16.47044125,-0.08153 1.95230265,-0.589903 5.42594315,-2.644562 5.42594315,-5.809899 0,-2.357639 -1.6054504,-3.829437 -3.4119725,-4.78828 -2.6530387,-1.408149 -6.403013,-1.666369 -9.7250352,-1.763769 -0.3627409,-0.01064 -0.7333886,-0.01757 -1.1096483,-0.01945 z m 0.1810143,0.946211 c 0.32851,0.0015 0.6518376,0.007 0.9675298,0.01533 2.8911429,0.07666 6.1546148,0.279913 8.46354515,1.388275 1.57221005,0.754712 3.29304015,1.984861 3.29304015,3.840573 0,2.491456 -2.0272539,3.947675 -4.2082105,4.678912 -5.254116,-2.000523 -11.0120083,-2.006579 -16.0728823,3.83e-4 -2.330035,-1.162604 -3.349688,-2.396898 -3.496121,-4.626563 -0.293194,-4.464334 6.125449,-5.319124 11.0530987,-5.296915 z"
+       style="fill:url(#linearGradient6689);fill-opacity:1.0;stroke:none;stroke-width:1.0764811;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="ccsc"
+       inkscape:connector-curvature="0"
+       id="path6691"
+       d="m -9.8604901,9.6757974 h 2.8777626 C -7.1121347,8.767986 -7.9090729,8.5081567 -8.4433004,8.5139458 -8.99318,8.5199032 -9.6993874,8.8081795 -9.8604901,9.6757974 Z"
+       style="fill:url(#linearGradient6699);fill-opacity:1.0;stroke:none;stroke-width:0.15410392px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+  </g>
+  <g
+     id="g9363"
+     transform="matrix(0.80688867,0,0,0.80688867,0.11546202,8.9714879)">
+    <path
+       id="path8671"
+       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 c 0,0 -1.287,0 -3.861,0 -2.565,0 -5.901,0 -10.01,0 H 15.468 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 0.999,-1.016 2.134,-2.201 3.429,-3.539 0.745,-0.762 1.321,-1.719 1.744,-2.879 0.423,-1.151 0.601,-2.201 0.533,-3.15 -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 10.842,37.605 10.122,37.165 9.606,36.217 8.912,36.42 8.294,36.505 7.743,36.471 6.82,36.124 6.151,35.751 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"
+       inkscape:connector-curvature="0"
+       style="fill:#1f1a17" />
+    <path
+       style="fill:#ffe680"
+       id="path9297"
+       d="m 15.688,17.786 c 0.364,-0.186 0.542,-0.279 0.542,-0.279 0.499,-0.195 0.652,-0.559 0.474,-1.092 -0.195,-0.491 -0.576,-0.66 -1.143,-0.491 -1.947,0.711 -3.294,2.02 -4.04,3.92 -0.118,0.542 0.076,0.914 0.593,1.118 0.516,0.161 0.864,-0.017 1.041,-0.55 0.136,-0.279 0.229,-0.466 0.296,-0.542 0.186,0.144 0.423,0.245 0.72,0.296 1.01,0.161 1.6,-0.279 1.761,-1.338 0.051,-0.364 -0.034,-0.711 -0.246,-1.041"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffe680"
+       id="path9293"
+       d="m 26.202,25.347 c 1.16,-1.524 1.727,-3.217 1.71,-5.08 -0.068,-0.55 -0.381,-0.821 -0.94,-0.821 -0.762,0 -1.058,0.279 -0.898,0.838 0.051,0.914 -0.034,1.668 -0.271,2.261 -0.381,0.94 -0.804,1.642 -1.261,2.108 -0.254,0.5 -0.102,0.864 0.449,1.092 0.525,0.245 0.931,0.119 1.211,-0.398"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffe680;fill-opacity:1"
+       id="path9291"
+       d="m 19.725,13.237 c -0.076,-0.593 -0.059,-1.236 0.051,-1.93 -0.991,0.195 -1.922,0.66 -2.802,1.389 -0.525,0.279 -0.652,0.669 -0.373,1.168 0.279,0.508 0.669,0.593 1.168,0.246 0.347,-0.186 0.669,-0.356 0.957,-0.508 0.288,-0.161 0.618,-0.279 0.999,-0.364"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:url(#linearGradient9307);fill-opacity:1.0"
+       id="path9289"
+       d="m 42.975,44.692 c -0.017,0 0,-0.449 0.042,-1.346 0.131,-3.107 0.095,-6.221 0.076,-9.33 -0.017,-2.21 -0.313,-4.411 -0.889,-6.613 -0.84,-3.31 -2.124,-6.485 -4.072,-9.296 -2.634,-3.845 -6.814,-6.03 -11.286,-6.976 0.126,0.766 0.033,1.54 0.076,2.311 1.6,0.542 3.116,1.219 4.538,2.032 4.241,2.554 6.414,7.275 7.197,11.93 1.272,6.154 0.453,11.557 0.813,17.289 h 3.505"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path9295"
+       transform="scale(0.28221482)"
+       d="m 102.15039,41.398438 c -0.48232,0 -11.477236,12.615893 -24.238281,27.537109 L 66.5,45.958984 c -2.300928,1.735997 -1.795016,1.338761 -5.310547,2.373047 l 12.994141,24.97461 c -6.455142,7.571808 -12.893469,15.178687 -18.8125,22.238281 l -21.726563,-15.5 c -1.123908,2.654198 -1.391323,3.431739 -3.917969,6.085937 l 21.476563,14.404301 c -7.844878,9.40936 -13.785685,16.68595 -14.251953,17.66211 -0.240951,0.4819 -0.598816,0.89898 -1.048828,1.22851 -1.590987,1.65123 -1.351546,3.03154 0.689453,4.14063 1.886963,1.1081 3.327783,0.74912 4.408203,-1.13868 0.209061,-0.53859 30.721532,-35.949196 31.263672,-36.998042 0.988608,-2.45912 34.784618,-39.213383 35.347658,-41.759766 -1.59003,-0.774775 -3.86995,-2.271484 -5.46094,-2.271484 z"
+       style="fill:#ffe680;stroke-width:3.54340005;fill-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffe680"
+       id="path8673"
+       d="M 9.438,30.139 C 9.912,29.8 9.963,29.411 9.582,28.945 9.184,28.564 8.752,28.53 8.27,28.843 7.26,29.503 6.721,30.375 6.653,31.451 6.67,31.993 7,32.255 7.627,32.222 8.22,32.171 8.508,31.866 8.491,31.299 8.626,30.774 8.94,30.385 9.439,30.139"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/client/public/images/pieces/Shogun/bk.svg b/client/public/images/pieces/Shogun/bk.svg
new file mode 100644 (file)
index 0000000..73c588e
--- /dev/null
@@ -0,0 +1,110 @@
+<?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="svg3017"
+   sodipodi:docname="bKshogun.svg"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+  <metadata
+     id="metadata3021">
+    <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="1920"
+     inkscape:window-height="1017"
+     id="namedview3019"
+     showgrid="false"
+     inkscape:zoom="1.332054"
+     inkscape:cx="-81.25746"
+     inkscape:cy="161.85693"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3007">
+    <linearGradient
+       id="0"
+       x1="21.129999"
+       y1="37.220001"
+       x2="77.760002"
+       y2="37.469002"
+       gradientUnits="userSpaceOnUse"
+       xlink:href="#linearGradient940">
+      <stop
+         stop-color="#fff"
+         id="stop3002" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop3004" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient940"
+       inkscape:collect="always">
+      <stop
+         id="stop936"
+         offset="0"
+         style="stop-color:#ffe680;stop-opacity:1" />
+      <stop
+         id="stop938"
+         offset="1"
+         style="stop-color:#b89200;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient940"
+       id="linearGradient7289"
+       x1="5.6290002"
+       y1="28.362499"
+       x2="44.291"
+       y2="28.362499"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <g
+     fill="#1f1a17"
+     id="g3013">
+    <path
+       d="m25.821 12.02h-1.761v-3.251h-2.066c-.559 0-.838-.271-.838-.821v-.025c0-.542.279-.813.838-.813h2.066v-2.108c0-.584.296-.872.889-.872.576 0 .872.288.872.872v2.108h2.134c.542 0 .813.271.813.813v.025c0 .55-.271.821-.813.821l-2.117.025-.017 3.226"
+       id="path3009" />
+    <path
+       d="m11.03 37.744l-.813-4.64c-.017 0-.042-.034-.076-.102-.085-.118-.322-.271-.711-.457-.381-.195-.838-.516-1.346-.982-.728-.61-1.295-1.109-1.702-1.49-.406-.373-.771-.787-1.101-1.236-1.01-1.389-1.575-3.065-1.685-5.04-.169-1.897.601-3.793 2.303-5.681 1.719-1.88 4.047-2.769 6.968-2.65 1.092.068 2.379.33 3.844.796.483.195.974.39 1.482.576.5.195.999.389 1.499.584.262.135.5.271.694.398-.085-.347-.127-.694-.127-1.041 0-1.287.457-2.388 1.38-3.302.914-.906 2.024-1.372 3.311-1.389 1.287 0 2.388.466 3.302 1.38.906.914 1.363 2.02 1.363 3.285 0 .262-.034.61-.102 1.041.229-.144.457-.271.669-.372.762-.33 1.761-.72 3.01-1.16 1.422-.483 2.701-.754 3.844-.821 2.921-.136 5.241.754 6.943 2.65 1.668 1.888 2.447 3.785 2.328 5.681-.127 1.973-.703 3.649-1.71 5.04-.33.449-.703.864-1.118 1.253-.406.39-.965.881-1.66 1.473-.542.466-1.01.796-1.389.982-.381.186-.601.347-.669.457-.017.034-.034.059-.051.076-.017.017-.025.034-.025.051l-.796 4.665 1.643 6.121c-.83.745-2.684 1.355-5.554 1.837-2.879.483-6.206.72-9.974.72-3.835 0-7.214-.254-10.118-.754-2.912-.508-4.741-1.143-5.486-1.897l1.634-6.05"
+       id="path3011" />
+  </g>
+  <path
+     fill="url(#0)"
+     d="m24.949 20.675c-.034-.161-.076-.305-.127-.423-.093-.33-.178-.567-.245-.72-.051-.11-.119-.254-.195-.432-.085-.169-.169-.356-.254-.559-.051-.119-.11-.271-.186-.457-.068-.195-.136-.373-.186-.533-.042-.152-.068-.305-.068-.474 0-.872.415-1.312 1.262-1.312.881 0 1.312.432 1.312 1.287 0 .22-.034.373-.093.474-.237.627-.356.965-.372 1.016-.254.5-.406.821-.474.965-.119.271-.195.508-.22.72-.051.102-.085.186-.102.262-.017.076-.034.136-.051.186m-2.777 8.56c-2.066.034-3.954.135-5.673.322-1.71.178-3.03.44-3.979.77-.491-.618-1.067-1.228-1.719-1.854-.66-.618-1.228-1.202-1.727-1.744-.83-.847-1.236-1.77-1.236-2.777 0-1.245.203-2.151.618-2.726.44-.669 1.135-1.16 2.057-1.482.923-.322 1.863-.483 2.803-.483 1.194 0 2.328.262 3.42.796 1.075.559 1.787 1.01 2.134 1.338 1.126 1.143 2.01 2.379 2.633 3.717.212.5.372 1.194.483 2.074.11.889.169 1.566.186 2.049m2.777-4.318c.119-.466.212-.787.296-.965.169-.643.356-1.194.576-1.643.093-.279.237-.601.432-.974.186-.373.389-.804.61-1.279.127-.279.271-.627.415-1.033.152-.406.305-.804.449-1.202.135-.33.203-.686.203-1.067 0-.813-.296-1.499-.872-2.066-.576-.576-1.279-.864-2.108-.864-1.964 0-2.955.991-2.955 2.955 0 .381.068.737.203 1.067.364 1.075.643 1.82.838 2.235.22.474.415.906.601 1.279.178.372.339.694.466.974.22.55.398 1.092.55 1.643.034.093.127.415.296.94m-.889 6.223c0-.66-.017-1.575-.051-2.735-.034-1.168-.161-2.142-.372-2.921-.677-2.21-1.702-3.996-3.082-5.351-.711-.694-1.795-1.346-3.268-1.939-1.685-.66-3.285-.991-4.792-.991-2.608 0-4.547.931-5.8 2.803-.711.991-1.067 2.235-1.067 3.717 0 1.626.398 2.955 1.185 3.996.415.593 1.211 1.329 2.388 2.21 1.168.872 2.168 1.685 2.972 2.43 1.439-.313 3.065-.584 4.877-.821 1.812-.229 4.149-.364 7.01-.398m13.784 11.735l-.737-2.929c-3.226-.737-7.281-1.109-12.158-1.109-4.826 0-8.865.373-12.11 1.109l-.787 2.955c3.141-.957 7.442-1.439 12.92-1.439 2.625 0 5.072.136 7.315.398 2.252.262 4.106.601 5.554 1.016m-.643-7.417c-3.04-.838-7.095-1.262-12.15-1.262-5.097 0-9.195.432-12.302 1.287l.373 2.506c3.124-.813 7.095-1.219 11.93-1.219 4.809 0 8.729.398 11.752 1.194l.398-2.506m-11.362-4.293c2.845.051 5.182.195 7 .423 1.812.229 3.454.508 4.911.821.906-.898 1.913-1.744 3.02-2.557 1.109-.813 1.888-1.507 2.337-2.083.787-1.075 1.185-2.413 1.185-4.02 0-1.465-.356-2.701-1.067-3.692-1.27-1.871-3.217-2.803-5.825-2.803-1.524 0-3.107.33-4.767.991-1.507.593-2.591 1.236-3.277 1.93-1.405 1.363-2.43 3.15-3.073 5.359-.245.762-.381 1.727-.406 2.904-.025 1.177-.042 2.083-.042 2.726m1.812-1.93c0-.483.059-1.16.161-2.049.11-.881.279-1.575.508-2.074.618-1.338 1.49-2.574 2.633-3.717.33-.33 1.041-.779 2.134-1.338 1.075-.533 2.227-.796 3.446-.796.931 0 1.846.161 2.769.483.914.322 1.609.813 2.066 1.482.415.559.627 1.465.627 2.726 0 .991-.406 1.913-1.219 2.777-.525.542-1.101 1.092-1.71 1.651-.61.55-1.202 1.202-1.761 1.947-.957-.33-2.294-.593-4-.77-1.71-.186-3.59-.288-5.647-.322"
+     id="path3015"
+     style="fill-opacity:1.0;fill:url(#linearGradient7289)" />
+</svg>
diff --git a/client/public/images/pieces/Shogun/bn.svg b/client/public/images/pieces/Shogun/bn.svg
new file mode 120000 (symlink)
index 0000000..63b2458
--- /dev/null
@@ -0,0 +1 @@
+../bn.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Shogun/bp.svg b/client/public/images/pieces/Shogun/bp.svg
new file mode 120000 (symlink)
index 0000000..b360324
--- /dev/null
@@ -0,0 +1 @@
+../bp.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Shogun/bq.svg b/client/public/images/pieces/Shogun/bq.svg
new file mode 100644 (file)
index 0000000..44678e9
--- /dev/null
@@ -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: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="svg11192"
+   sodipodi:docname="bQshogun.svg"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+  <metadata
+     id="metadata11196">
+    <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="1920"
+     inkscape:window-height="1017"
+     id="namedview11194"
+     showgrid="false"
+     inkscape:zoom="1.332054"
+     inkscape:cx="193.6189"
+     inkscape:cy="74.445674"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg11192" />
+  <defs
+     id="defs11174">
+    <linearGradient
+       id="0"
+       x1="21.253"
+       y1="37.220001"
+       x2="77.760002"
+       y2="37.360001"
+       gradientUnits="userSpaceOnUse"
+       xlink:href="#linearGradient940">
+      <stop
+         stop-color="#fff"
+         id="stop11169" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop11171" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient940"
+       inkscape:collect="always">
+      <stop
+         id="stop936"
+         offset="0"
+         style="stop-color:#ffe680;stop-opacity:1" />
+      <stop
+         id="stop938"
+         offset="1"
+         style="stop-color:#b89200;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient940"
+       id="linearGradient11774"
+       x1="11.027"
+       y1="36.375"
+       x2="38.937"
+       y2="36.375"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <g
+     fill="#1f1a17"
+     id="g11188">
+    <path
+       d="m24.949 10.752c-.94 0-1.744-.33-2.396-.991-.652-.66-.974-1.465-.974-2.405 0-.931.322-1.727.974-2.388.652-.66 1.456-.991 2.396-.991.923 0 1.727.33 2.396.991.669.66.999 1.456.999 2.388 0 .94-.33 1.744-.999 2.405-.669.66-1.473.991-2.396.991"
+       id="path11176" />
+    <path
+       d="m40.23 43.942c-.813.711-2.633 1.304-5.461 1.786-2.828.474-6.087.72-9.77.72-3.751 0-7.05-.254-9.898-.745-2.845-.499-4.64-1.118-5.385-1.863l1.566-5.952-.694-3.895-2.184-3.793-2.108-15.426 1.211-.474 6.799 11.455.152-13.64 1.685-.296 5.182 13.716 2.777-14.757h1.719l2.777 14.707 5.131-13.665 1.71.296.152 13.64 6.824-11.481 1.16.542-2.057 15.359-2.21 3.793-.694 3.946 1.617 6.03"
+       id="path11178" />
+    <path
+       d="m14.535 11.989c-.948 0-1.753-.322-2.413-.974-.66-.652-.991-1.456-.991-2.396 0-.923.33-1.719.991-2.379.66-.66 1.465-.991 2.413-.991.923 0 1.719.33 2.379.991.66.66.991 1.456.991 2.379 0 .94-.33 1.744-.991 2.396-.66.652-1.456.974-2.379.974"
+       id="path11180" />
+    <path
+       d="m35.36 11.989c-.94 0-1.736-.322-2.388-.974-.652-.652-.982-1.456-.982-2.396 0-.923.33-1.719.982-2.379.652-.66 1.448-.991 2.388-.991.948 0 1.753.33 2.413.991.66.66.991 1.456.991 2.379 0 .94-.33 1.744-.991 2.396-.66.652-1.465.974-2.413.974"
+       id="path11182" />
+    <path
+       d="m5.4 14.723c-.94 0-1.736-.33-2.388-.982-.652-.652-.982-1.448-.982-2.396 0-.923.33-1.719.982-2.388.652-.677 1.448-1.01 2.388-1.01.948 0 1.744.33 2.413 1.01.66.669.991 1.465.991 2.388 0 .948-.33 1.744-.991 2.396-.669.652-1.465.982-2.413.982"
+       id="path11184" />
+    <path
+       d="m44.541 14.723c-.94 0-1.744-.33-2.405-.982-.66-.652-.991-1.448-.991-2.396 0-.923.33-1.719.991-2.388.66-.677 1.465-1.01 2.405-1.01.931 0 1.727.33 2.388 1.01.66.669.991 1.465.991 2.388 0 .948-.33 1.744-.991 2.396-.66.652-1.456.982-2.388.982"
+       id="path11186" />
+  </g>
+  <path
+     fill="url(#0)"
+     d="m37.2 35.729c-3.04-.838-7.095-1.262-12.15-1.262-5.097 0-9.195.432-12.302 1.287l.373 2.506c3.124-.813 7.095-1.219 11.93-1.219 4.809 0 8.729.398 11.752 1.194l.398-2.506m1.736-4.437c-1.372-.5-3.302-.906-5.791-1.228-2.489-.322-5.232-.483-8.246-.483-2.946 0-5.639.152-8.09.457-2.447.305-4.377.703-5.783 1.202l1.245 2.252c1.389-.406 3.192-.703 5.41-.889 2.21-.178 4.631-.271 7.264-.271 2.633 0 5.063.093 7.29.271 2.235.186 4.047.491 5.436.914l1.261-2.227m-1.092 11.853l-.737-2.929c-3.226-.737-7.281-1.109-12.158-1.109-4.826 0-8.865.373-12.11 1.109l-.787 2.955c3.141-.957 7.442-1.439 12.92-1.439 2.625 0 5.072.136 7.315.398 2.252.262 4.106.601 5.554 1.016"
+     id="path11190"
+     style="fill-opacity:1.0;fill:url(#linearGradient11774)" />
+</svg>
diff --git a/client/public/images/pieces/Shogun/br.svg b/client/public/images/pieces/Shogun/br.svg
new file mode 120000 (symlink)
index 0000000..f7661a2
--- /dev/null
@@ -0,0 +1 @@
+../br.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Shogun/wa.svg b/client/public/images/pieces/Shogun/wa.svg
new file mode 100644 (file)
index 0000000..b72430c
--- /dev/null
@@ -0,0 +1,269 @@
+<?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="svg7104"
+   sodipodi:docname="wAshogun.svg"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+  <metadata
+     id="metadata7108">
+    <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="1920"
+     inkscape:window-height="1017"
+     id="namedview7106"
+     showgrid="false"
+     inkscape:object-nodes="false"
+     inkscape:zoom="2.664108"
+     inkscape:cx="148.69238"
+     inkscape:cy="32.204379"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="g32536" />
+  <defs
+     id="defs7098">
+    <linearGradient
+       id="linearGradient6975"
+       inkscape:collect="always">
+      <stop
+         id="stop6971"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1" />
+      <stop
+         id="stop6973"
+         offset="1"
+         style="stop-color:#000080;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient32542">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0"
+         id="stop32538" />
+      <stop
+         style="stop-color:#b3b3b3;stop-opacity:1"
+         offset="1"
+         id="stop32540" />
+    </linearGradient>
+    <linearGradient
+       id="0"
+       x1="21.405"
+       x2="77.64"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.84732229,0,0,0.84860456,3.1918211,-2.021577)">
+      <stop
+         stop-color="#fff"
+         id="stop7093" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop7095" />
+    </linearGradient>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath8236">
+      <rect
+         style="opacity:1;fill:#d40000;fill-opacity:1;stroke:#d40000;stroke-width:0.36687925;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
+         id="rect8238"
+         width="56.567795"
+         height="26.271185"
+         x="-1.4830509"
+         y="-7.2033896" />
+    </clipPath>
+    <linearGradient
+       id="0-7"
+       x1="21.375999"
+       x2="77.639999"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop7670" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop7672" />
+    </linearGradient>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath8276">
+      <rect
+         style="opacity:1;fill:#d40000;fill-opacity:1;stroke:#d40000;stroke-width:0.36687925;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
+         id="rect8278"
+         width="56.567795"
+         height="26.271185"
+         x="-2.5423729"
+         y="-1.9067795" />
+    </clipPath>
+    <linearGradient
+       id="0-1"
+       x1="21.375999"
+       x2="77.639999"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop7670-0" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop7672-6" />
+    </linearGradient>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath5191">
+      <rect
+         style="opacity:1;fill:#d40000;fill-opacity:1;stroke:#000000;stroke-width:0.2045171;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
+         id="rect5193"
+         width="35.162529"
+         height="15.671"
+         x="7.2068729"
+         y="4.0289068"
+         clip-path="none" />
+    </clipPath>
+    <linearGradient
+       id="0-3"
+       x1="21.375999"
+       x2="77.639999"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop4571" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop4573" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient32542"
+       id="linearGradient32544"
+       x1="1.7936434"
+       y1="74.318817"
+       x2="12.63324"
+       y2="73.869385"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6975"
+       id="linearGradient32546"
+       gradientUnits="userSpaceOnUse"
+       x1="-5.3339276"
+       y1="73.869385"
+       x2="49.969395"
+       y2="73.869385" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient32542"
+       id="linearGradient32548"
+       gradientUnits="userSpaceOnUse"
+       x1="1.7936434"
+       y1="74.318817"
+       x2="12.63324"
+       y2="73.869385" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient32542"
+       id="linearGradient32550"
+       gradientUnits="userSpaceOnUse"
+       x1="1.7936434"
+       y1="74.318817"
+       x2="12.63324"
+       y2="73.869385" />
+  </defs>
+  <g
+     id="g32536"
+     style="fill:url(#linearGradient32544);fill-opacity:1"
+     transform="translate(25.211864,-48.303673)">
+    <path
+       sodipodi:nodetypes="ccccccccaccccacccccc"
+       inkscape:connector-curvature="0"
+       id="path31799"
+       d="m 0.5859365,56.17703 c 0.7960066,-1.020015 -0.3788487,-2.345177 -1.3068235,-2.345578 -0.7032446,0.06761 -2.4032857,1.12243 -1.3068233,2.479612 -1.5679946,6.247019 -4.6143343,11.207329 -10.9907077,13.269271 0.772685,5.835682 4.7398273,9.845965 7.5058526,14.542581 -0.402536,0.380608 -1.2797124,0.749544 -1.8262037,1.189546 0.084992,0.995123 0.2798869,1.916985 1.2900669,2.295318 l -1.8094413,2.479607 c 0,0 -1.3033945,-0.221657 -1.7187392,0.177365 -0.26616,0.255694 -0.1577336,1.095956 -0.1577336,1.095956 L -12.415274,93.90733 H 10.705421 L 8.4268633,91.427724 c 0,0 0.06342,-0.993607 -0.268067,-1.273321 C 7.7145662,89.779581 6.416369,90.087363 6.416369,90.087363 L 4.6069216,87.339697 C 5.3197548,86.992767 6.0478973,86.666905 6.06453,85.362699 5.534902,84.850693 4.8938804,84.563337 4.4058731,84.189912 6.8645903,79.464965 10.860256,75.40465 11.241558,69.781364 6.0603183,66.727843 1.8586778,62.783752 0.5859305,56.17703 Z"
+       style="fill:url(#linearGradient32546);fill-opacity:1;stroke:#000080;stroke-width:1.69328892;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path31801"
+       d="M -3.7555256,87.274357 H 2.4522809"
+       style="fill:url(#linearGradient32548);fill-opacity:1;stroke:#000080;stroke-width:0.56305051px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path31803"
+       d="M -5.7970285,90.638876 H 4.343973"
+       style="fill:url(#linearGradient32550);fill-opacity:1;stroke:#000080;stroke-width:0.56305051px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <g
+       id="g34127"
+       transform="translate(-18.388907,-15.083224)"
+       style="fill:#1a1a1a;stroke:#1a1a1a">
+      <circle
+         style="opacity:1;fill:#1a1a1a;fill-opacity:1;stroke:#000080;stroke-width:1.69328892;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
+         id="path29818-2-6"
+         cx="12.934354"
+         cy="87.472137"
+         r="0.69994909" />
+      <circle
+         style="opacity:1;fill:#1a1a1a;fill-opacity:1;stroke:#000080;stroke-width:1.69328892;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
+         id="path29818-3-6-5"
+         cx="21.940971"
+         cy="87.384705"
+         r="0.69994909" />
+      <circle
+         style="opacity:1;fill:#1a1a1a;fill-opacity:1;stroke:#000080;stroke-width:1.69328892;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
+         id="path29818-9-6-9"
+         cx="17.376469"
+         cy="83.755836"
+         r="0.69994909" />
+      <circle
+         style="opacity:1;fill:#1a1a1a;fill-opacity:1;stroke:#000080;stroke-width:1.69328892;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
+         id="path29818-99-3-4"
+         cx="17.376484"
+         cy="95.228325"
+         r="0.69994909" />
+      <path
+         style="fill:#1a1a1a;stroke:#000080;stroke-width:1.69328892;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 13.843785,87.026179 h 7.257757 v 0.804477 h -7.275247 z"
+         id="path29847-7-7"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a1a1a;stroke:#000080;stroke-width:1.69328892;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 17.673257,84.779395 v 9.752541 h -0.593562 v -9.776045 z"
+         id="path29847-3-1"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/client/public/images/pieces/Shogun/wb.svg b/client/public/images/pieces/Shogun/wb.svg
new file mode 120000 (symlink)
index 0000000..5197a2e
--- /dev/null
@@ -0,0 +1 @@
+../wb.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Shogun/wc.svg b/client/public/images/pieces/Shogun/wc.svg
new file mode 100644 (file)
index 0000000..030c22e
--- /dev/null
@@ -0,0 +1,162 @@
+<?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="wC.svg"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+  <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 />
+      </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="1920"
+     inkscape:window-height="1017"
+     id="namedview4800"
+     showgrid="false"
+     inkscape:zoom="1.8838088"
+     inkscape:cx="118.04522"
+     inkscape:cy="50.213344"
+     inkscape:window-x="1912"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg4798" />
+  <defs
+     id="defs4788">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6292">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop6288" />
+      <stop
+         style="stop-color:#dadaec;stop-opacity:1"
+         offset="1"
+         id="stop6290" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6286"
+       inkscape:collect="always">
+      <stop
+         id="stop6282"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop6284"
+         offset="1"
+         style="stop-color:#000080;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5385">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5381" />
+      <stop
+         style="stop-color:#9898cc;stop-opacity:1"
+         offset="1"
+         id="stop5383" />
+    </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
+       inkscape:collect="always"
+       xlink:href="#linearGradient6286"
+       id="linearGradient5387"
+       x1="62.930347"
+       y1="26.730312"
+       x2="131.59767"
+       y2="26.730312"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5385"
+       id="linearGradient5395"
+       x1="58.476898"
+       y1="39.452381"
+       x2="89.779778"
+       y2="39.452381"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6292"
+       id="linearGradient5403"
+       x1="67.722641"
+       y1="13.960634"
+       x2="79.088898"
+       y2="13.960634"
+       gradientUnits="userSpaceOnUse" />
+  </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:url(#linearGradient5387);fill-opacity:1;stroke:#000080;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:url(#linearGradient5395);fill-opacity:1;stroke:#000080;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:#000080;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:url(#linearGradient5403);fill-opacity:1;stroke:#000080;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/Shogun/wf.svg b/client/public/images/pieces/Shogun/wf.svg
new file mode 100644 (file)
index 0000000..1cfb24f
--- /dev/null
@@ -0,0 +1,89 @@
+<?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="svg15290"
+   sodipodi:docname="wD.svg"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+  <metadata
+     id="metadata15294">
+    <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="1920"
+     inkscape:window-height="1017"
+     id="namedview15292"
+     showgrid="false"
+     inkscape:zoom="3.7676176"
+     inkscape:cx="160.04359"
+     inkscape:cy="69.271751"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg15290" />
+  <defs
+     id="defs15282">
+    <linearGradient
+       id="0"
+       x1="21.253"
+       y1="37.22"
+       x2="77.64"
+       y2="37.35"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop15277" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop15279" />
+    </linearGradient>
+  </defs>
+  <g
+     id="g15288"
+     transform="translate(0,4.1946909)"
+     style="stroke:#1f1a17;stroke-width:0.076">
+    <path
+       d="m 44.541,14.723 c -0.94,0 -1.744,-0.33 -2.405,-0.982 -0.66,-0.652 -0.991,-1.448 -0.991,-2.396 0,-0.923 0.33,-1.719 0.991,-2.388 0.66,-0.677 1.465,-1.01 2.405,-1.01 0.931,0 1.727,0.33 2.388,1.01 0.66,0.669 0.991,1.465 0.991,2.388 0,0.948 -0.33,1.744 -0.991,2.396 -0.66,0.652 -1.456,0.982 -2.388,0.982 z m -4.31,25.025299 c -0.813,0.711 -2.633,1.304 -5.461,1.786 -2.828,0.474 -6.087,0.72 -9.77,0.72 -3.751,0 -7.05,-0.254 -9.898,-0.745 -2.845,-0.499 -4.64,-1.118 -5.385,-1.863 L 11.058284,34.892785 8.4424527,30.275905 6.297,14.775 7.508,14.301 15.101492,27.186085 c 1.19031,-0.566072 1.257078,-0.777346 2.482201,-2.007822 L 20.955237,26.966085 24.103,10.779 h 1.719 l 3.204493,16.121895 c 1.789358,-0.214964 2.443666,-1.258275 3.470757,-1.74485 0.644572,0.762385 1.463556,1.875269 2.108128,2.261725 L 42.416,14.276 l 1.16,0.542 -2.057,15.359 -2.604378,3.993731 1.317378,5.580568 z M 5.399,14.725 c -0.94,0 -1.736,-0.33 -2.388,-0.982 -0.652,-0.652 -0.982,-1.448 -0.982,-2.396 0,-0.923 0.33,-1.719 0.982,-2.388 0.652,-0.677 1.448,-1.01 2.388,-1.01 0.948,0 1.744,0.33 2.413,1.01 0.66,0.669 0.991,1.465 0.991,2.388 0,0.948 -0.33,1.744 -0.991,2.396 -0.669,0.652 -1.465,0.982 -2.413,0.982 z m 19.55,-3.971 c -0.94,0 -1.744,-0.33 -2.396,-0.991 -0.652,-0.66 -0.974,-1.465 -0.974,-2.405 0,-0.931 0.322,-1.727 0.974,-2.388 0.652,-0.66 1.456,-0.991 2.396,-0.991 0.923,0 1.727,0.33 2.396,0.991 0.669,0.66 0.999,1.456 0.999,2.388 0,0.94 -0.33,1.744 -0.999,2.405 -0.669,0.66 -1.473,0.991 -2.396,0.991 z"
+       id="path15284"
+       inkscape:connector-curvature="0"
+       style="fill:#1f1a17"
+       sodipodi:nodetypes="scscscscsccsccccccccccccccccccccssscscscsscscscscs" />
+    <path
+       d="m 38.22,38.732941 c -3.02,-1.253 -7.417,-1.88 -13.166,-1.88 -5.876,0 -10.312,0.643 -13.327,1.93 2.896,1.143 7.315,1.71 13.25,1.71 2.845,0 5.444,-0.152 7.798,-0.466 2.362,-0.313 4.174,-0.745 5.444,-1.295 z M 24.953,9.01 c 1.109,0 1.66,-0.559 1.66,-1.659 0,-1.092 -0.55,-1.643 -1.66,-1.643 -1.092,0 -1.634,0.55 -1.634,1.643 0,1.101 0.542,1.659 1.634,1.659 z m 13.242,23.487 1.617,-2.853 c -0.796,0.322 -1.609,0.474 -2.43,0.474 -2.218,0 -3.988,-0.897 -5.309,-2.701 -0.991,0.821 -2.1,1.236 -3.327,1.236 -1.583,0 -2.853,-0.618 -3.793,-1.863 -1.058,1.16 -2.32,1.744 -3.793,1.744 -1.194,0 -2.286,-0.406 -3.277,-1.219 -1.389,1.77 -3.183,2.65 -5.385,2.65 -0.838,0 -1.676,-0.152 -2.506,-0.466 l 1.736,2.972 c 3.209,-0.923 7.62,-1.389 13.225,-1.389 5.706,0 10.118,0.474 13.242,1.414 z M 27.085,26.57 24.977,14.437 22.869,26.426 c 0.051,-0.034 0.161,-0.119 0.347,-0.254 0.381,-0.745 0.957,-1.118 1.736,-1.118 0.847,0 1.389,0.372 1.634,1.118 0.102,0.102 0.271,0.237 0.5,0.398 z m -13.368,1.516 -5.334,-9.203 1.363,8.382 c 0.94,0.66 1.863,0.991 2.752,0.991 0.347,0 0.754,-0.059 1.219,-0.169 z m 22.394,0.119 c 0.381,0.119 0.804,0.178 1.27,0.178 1.01,0 1.947,-0.313 2.828,-0.94 l 1.363,-8.585 z m 1.49,8.248941 -0.745,-2.802 c -8.142764,-1.270858 -15.89594,-1.669692 -23.783,0 l -0.771,2.828 c 3.073,-0.931 7.298,-1.389 12.675,-1.389 5.241,0 9.449,0.449 12.624,1.363 z M 5.405,12.982 c 1.109,0 1.668,-0.55 1.668,-1.643 0,-1.109 -0.559,-1.659 -1.668,-1.659 -1.084,0 -1.634,0.55 -1.634,1.659 0,1.092 0.55,1.643 1.634,1.643 z m 39.14,0 c 1.092,0 1.642,-0.55 1.642,-1.643 0,-1.109 -0.55,-1.659 -1.642,-1.659 -1.101,0 -1.66,0.55 -1.66,1.659 0,1.092 0.559,1.643 1.66,1.643 z"
+       id="path15286"
+       inkscape:connector-curvature="0"
+       style="fill:url(#0)"
+       sodipodi:nodetypes="cscscccsssssccscscscsccsccccccsccccccscccscccccccscssssssssss" />
+  </g>
+</svg>
diff --git a/client/public/images/pieces/Shogun/wg.svg b/client/public/images/pieces/Shogun/wg.svg
new file mode 100644 (file)
index 0000000..90a0cf4
--- /dev/null
@@ -0,0 +1,189 @@
+<?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="svg1190"
+   sodipodi:docname="wG.svg"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+   inkscape:export-filename="D:\Pictures\Chess Variants\Chess\pieces\WhitePrince.png"
+   inkscape:export-xdpi="198.53"
+   inkscape:export-ydpi="198.53">
+  <metadata
+     id="metadata1194">
+    <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="1920"
+     inkscape:window-height="1017"
+     id="namedview1192"
+     showgrid="false"
+     inkscape:zoom="2.3931817"
+     inkscape:cx="-66.442241"
+     inkscape:cy="135.33056"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg1190" />
+  <defs
+     id="defs1184">
+    <linearGradient
+       id="linearGradient8660"
+       inkscape:collect="always">
+      <stop
+         id="stop8656"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop8658"
+         offset="1"
+         style="stop-color:#9e9ecf;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="0"
+       x1="21.405"
+       x2="77.64"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.80688625,0,0,0.80688625,-0.84624244,8.9715975)">
+      <stop
+         stop-color="#fff"
+         id="stop1179" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop1181" />
+    </linearGradient>
+    <linearGradient
+       id="0-0"
+       x1="21.253"
+       y1="37.220001"
+       x2="77.639999"
+       y2="37.349998"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop1423" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop1425" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient8660"
+       id="linearGradient5387"
+       x1="62.930347"
+       y1="26.730312"
+       x2="91.34343"
+       y2="26.730312"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5385">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5381" />
+      <stop
+         style="stop-color:#999999;stop-opacity:1"
+         offset="1"
+         id="stop5383" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient8660"
+       id="linearGradient5395"
+       x1="58.476898"
+       y1="39.452381"
+       x2="89.779778"
+       y2="39.452381"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5385"
+       id="linearGradient5403"
+       x1="62.955688"
+       y1="13.960634"
+       x2="88.305"
+       y2="13.960634"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <g
+     id="g5409"
+     transform="matrix(0.69176037,0,0,0.69176037,-15.974339,-10.520553)">
+    <g
+       id="g8639"
+       transform="translate(1.3510638,1.6278938)">
+      <g
+         id="g8645"
+         transform="rotate(37.851734,61.490295,27.611213)">
+        <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:url(#linearGradient5387);fill-opacity:1;stroke:#000080;stroke-width:2.44779706;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:url(#linearGradient5395);fill-opacity:1.0;stroke:#000080;stroke-width:2.44779706;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:#000080;stroke-width:2.44779706;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:url(#linearGradient5403);fill-opacity:1;stroke:#000080;stroke-width:1.69328892;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      </g>
+    </g>
+  </g>
+  <path
+     d="m 20.278041,16.552295 c 2.097098,0.136364 4.034432,0.67617 5.827333,1.629909 1.783219,0.942445 3.30662,2.158423 4.563748,3.641478 0.88112,1.038463 1.708179,2.295593 2.486825,3.764125 0.785907,1.462079 1.407208,3.019368 1.871975,4.658962 0.532544,1.913127 0.874665,3.914205 1.011029,6.018565 0.143626,2.097097 0.212211,4.0425 0.212211,5.833788 v 4.3588 c 0,0 -1.038463,0 -3.115388,0 -2.069664,0 -4.761436,0 -8.076932,0 H 11.634675 c -0.122647,0 -0.177514,-0.327597 -0.171059,-0.97714 0.0064,-0.655998 0.0476,-1.182089 0.129907,-1.584724 0.04761,-0.321142 0.177516,-0.772191 0.37601,-1.359604 0.204949,-0.587413 0.532545,-1.29828 1.004573,-2.138248 0.211404,-0.430071 0.717322,-1.05218 1.516946,-1.871978 0.806079,-0.819795 1.721896,-1.775955 2.766814,-2.85557 0.601129,-0.614847 1.065896,-1.387037 1.407209,-2.323025 0.341312,-0.928726 0.484938,-1.775957 0.430071,-2.541692 -0.4922,0.403443 -1.032008,0.73104 -1.621842,0.983595 -2.828137,1.011028 -4.881662,2.479561 -6.141211,4.399144 -0.09602,0.122646 -0.396182,0.662453 -0.9021,1.629911 -0.266272,0.505917 -0.4986551,0.853684 -0.6834311,1.038462 -0.252556,0.252556 -0.6221098,0.396181 -1.0997868,0.423615 -0.744757,0.03389 -1.3257145,-0.32114 -1.7420678,-1.086069 C 6.3447281,38.358397 5.8460724,38.426982 5.401478,38.399548 4.6567221,38.119558 4.1169151,37.818591 3.7796367,37.497449 3.096204,36.814016 2.6588716,36.137846 2.4474674,35.454412 2.2425183,34.770981 2.1400437,34.039941 2.1400437,33.254841 c 0,-1.120765 0.6898878,-2.603015 2.0833804,-4.447558 1.6299103,-2.118076 2.4932786,-3.73669 2.5957532,-4.841317 0,-0.478484 0.047607,-1.01829 0.1436257,-1.621841 0.082302,-0.417161 0.2461003,-0.814956 0.4986558,-1.202261 0.1775146,-0.266272 0.293707,-0.451049 0.3485752,-0.546262 0.061324,-0.102474 0.1710601,-0.252555 0.3348581,-0.451049 0.116191,-0.163798 0.218665,-0.287252 0.300968,-0.368748 0.07504,-0.08876 0.177516,-0.204949 0.300969,-0.355029 0.143626,-0.171061 0.327596,-0.368747 0.5599788,-0.601131 -0.7100598,-1.947017 -0.9973108,-3.955356 -0.8609478,-6.018565 2.6506209,0.942443 4.8816619,2.428728 6.6810189,4.461275 0.443787,-1.509684 1.311997,-2.732924 2.603014,-3.66165 1.065898,0.744756 1.913128,1.735613 2.541693,2.958045"
+     id="path1186"
+     inkscape:connector-curvature="0"
+     style="fill:#000080;stroke-width:0.80688632" />
+  <path
+     d="m 33.830503,45.033768 c -0.01372,0 0,-0.362292 0.03389,-1.08607 0.04115,-0.731039 0.06133,-1.516946 0.06133,-2.356915 0.01372,-1.667027 0.01372,-3.388922 0,-5.171334 -0.01372,-1.783219 -0.252556,-3.559175 -0.717323,-5.335939 -0.457504,-1.708178 -0.95616,-3.162994 -1.503229,-4.372516 -0.546261,-1.209523 -1.140937,-2.247986 -1.783218,-3.129106 -0.95616,-1.441099 -2.268158,-2.664338 -3.921468,-3.66165 -1.65331,-1.004573 -3.38166,-1.659766 -5.18505,-1.967189 0.122646,0.655999 0.177514,1.29828 0.163797,1.926845 -0.02743,0.478483 -0.252556,0.717322 -0.683433,0.717322 -0.4922,0 -0.710867,-0.238839 -0.662454,-0.717322 0.04115,-1.76224 -0.587413,-3.272731 -1.87843,-4.522598 -1.011029,1.065897 -1.564553,2.302047 -1.639594,3.716519 -0.02743,0.471221 -0.266272,0.67617 -0.723777,0.622109 -0.423615,-0.01372 -0.635019,-0.259817 -0.635019,-0.737494 0,0 -0.397517,0.053 -0.363628,-0.110796 -0.182221,0.05921 3.235324,5.695448 3.074625,5.819021 -0.19342,0.148736 -0.520667,0.616721 -0.727194,0.768864 -0.143546,0.105746 -3.530354,-5.9889 -3.695233,-5.900817 -0.382464,0.266273 -0.673726,0.202373 -0.912565,-0.193808 -0.238838,-0.402636 -0.136363,-0.717322 0.321142,-0.942444 0.573696,-0.293706 1.004574,-0.512373 1.29828,-0.662454 -1.147392,-1.174825 -2.452935,-2.118075 -3.9214681,-2.841851 0.157343,1.858258 0.6697151,3.60678 1.5234011,5.267352 0.225121,0.341313 0.17106,0.648736 -0.163797,0.915816 -0.376009,0.293707 -0.689889,0.252556 -0.942443,-0.136363 -0.08876,-0.136365 -0.225123,-0.376009 -0.3961821,-0.723777 -0.279989,0.279989 -0.471222,0.4922 -0.559979,0.621302 -0.09521,0.122646 -0.2598168,0.389726 -0.4922008,0.799625 -0.232383,0.416353 -0.402636,0.758472 -0.512372,1.024744 -0.116193,0.334859 -0.17106,0.601131 -0.150081,0.814956 0.02017,0.204948 0.04115,0.430071 0.05487,0.689887 -0.08979,0.575369 -0.260454,1.124789 -0.5097747,1.651427 -0.091231,0.192707 4.7961616,4.467495 4.6839746,4.654256 -0.164724,0.268266 -0.465175,0.533822 -0.663695,0.84967 -0.118457,0.188466 -4.927475,-3.951489 -5.0584502,-3.746081 -0.214004,0.335622 -0.6304684,0.97212 -0.8791689,1.352971 -0.6285645,0.95616 -1.107048,1.680745 -1.441099,2.158421 -0.3348578,0.484939 -0.5874132,1.093332 -0.7584731,1.844543 -0.1226468,0.451048 -0.1226468,1.004573 0,1.646854 0.1161916,0.648736 0.3824641,1.154654 0.7786453,1.516946 0.6148473,0.621303 1.2095225,0.908554 1.7832187,0.860948 0.184777,0 0.4373323,-0.07504 0.7512111,-0.225121 0.3138788,-0.143626 0.5535239,-0.423616 0.7310385,-0.839969 5.0446896,-5.398958 10.2645496,-12.332884 15.7997796,-17.232991 0.572128,0.212181 0.681587,0.262641 1.104573,0.464577 -0.982818,1.07315 -1.561703,2.068009 -4.716328,5.272038 -0.572869,0.58184 -2.737535,3.167322 -3.317059,3.750116 -3.919538,3.941654 -6.7004461,7.610901 -7.4578099,8.25326 -0.435342,0.412197 -0.613531,0.462878 -0.812025,0.756584 -0.259818,0.348575 -0.3687468,0.4922 -0.341313,0.437332 0.211404,0.764929 0.567241,0.894838 1.058635,0.402637 0.143626,-0.143626 0.3138788,-0.423616 0.4986548,-0.819796 0.191233,-0.402637 0.48494,-0.942444 0.8811201,-1.621842 0.471222,-0.792362 0.969878,-1.428189 1.503229,-1.926844 0.532546,-0.492201 1.004574,-0.894838 1.420927,-1.195806 0.238839,-0.177514 0.532546,-0.376009 0.88112,-0.60113 0.348576,-0.232384 0.814955,-0.464767 1.400755,-0.703605 0.464767,-0.184777 0.983595,-0.416354 1.550835,-0.689888 0.567241,-0.273535 1.072352,-0.621302 1.509685,-1.05218 0.614848,-0.60113 1.086068,-1.338624 1.420927,-2.220551 0.177515,-0.492201 0.238838,-1.099785 0.197686,-1.82437 -0.116191,-0.451049 0.109737,-0.676171 0.683434,-0.676171 0.43007,0 0.669715,0.218667 0.724584,0.662454 0,1.50323 -0.430071,2.875743 -1.284564,4.119155 0.27999,0.853686 0.355031,1.789673 0.218667,2.800702 -0.116192,0.814955 -0.403444,1.687199 -0.847231,2.616732 -0.45105,0.922271 -1.352341,1.95428 -2.711945,3.087954 -2.766813,2.295592 -4.074775,4.658962 -3.921467,7.084462 h 3.409094 6.414747 10.951058 M 6.6868479,32.867535 C 6.2971218,33.106374 6.0655455,33.427515 5.983243,33.830958 5.99696,34.26829 5.7920111,34.507128 5.3683957,34.54828 4.8971741,34.60315 4.657529,34.404654 4.6438118,33.947149 4.6986798,33.06603 5.0875993,32.36888 5.8259002,31.850052 c 0.3485749,-0.27999 0.6697156,-0.259817 0.9634223,0.07504 0.2937067,0.362292 0.2598174,0.67617 -0.1024746,0.942443 m 5.9435241,-9.543853 c 0.17106,0.266272 0.238839,0.546262 0.198495,0.839969 -0.129909,0.853685 -0.608392,1.209522 -1.420927,1.079613 -0.238838,-0.04115 -0.43007,-0.122645 -0.580958,-0.238837 -0.0476,0.06132 -0.129909,0.211404 -0.238839,0.437332 -0.143626,0.430071 -0.423616,0.573696 -0.8399681,0.443787 -0.409899,-0.163797 -0.5736958,-0.464766 -0.478483,-0.902098 0.601129,-1.537119 1.6871991,-2.589299 3.2598201,-3.162995 0.457505,-0.136364 0.758472,0 0.902099,0.396181 0.163798,0.430071 0.04115,0.724584 -0.362292,0.88112 -0.07504,0.04115 -0.150081,0.0823 -0.218667,0.109737 -0.06859,0.03389 -0.136364,0.07504 -0.218666,0.116191"
+     id="path1188"
+     style="fill:url(#0);stroke-width:0.80688632"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="ccccccccccsccccccssccccccccccccccscssccccccccccssccccccccccscccscccccccccccccccccccccccccccc" />
+</svg>
diff --git a/client/public/images/pieces/Shogun/wk.svg b/client/public/images/pieces/Shogun/wk.svg
new file mode 100644 (file)
index 0000000..345954e
--- /dev/null
@@ -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="svg9408"
+   sodipodi:docname="wKshogun.svg"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+  <metadata
+     id="metadata9412">
+    <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="1920"
+     inkscape:window-height="1017"
+     id="namedview9410"
+     showgrid="false"
+     inkscape:zoom="3.7676176"
+     inkscape:cx="62.277519"
+     inkscape:cy="93.591033"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg9408" />
+  <defs
+     id="defs9398">
+    <linearGradient
+       id="0"
+       x1="21.376"
+       x2="77.64"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop9393" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop9395" />
+    </linearGradient>
+  </defs>
+  <g
+     fill="#1f1a17"
+     id="g9404">
+    <path
+       d="m25.821 12.02h-1.761v-3.251h-2.066c-.559 0-.838-.271-.838-.821v-.025c0-.542.279-.813.838-.813h2.066v-2.108c0-.584.296-.872.889-.872.576 0 .872.288.872.872v2.108h2.134c.542 0 .813.271.813.813v.025c0 .55-.271.821-.813.821l-2.117.025-.017 3.226"
+       id="path9400"
+       style="fill:#000080" />
+    <path
+       d="m11.03 37.744l-.813-4.64c-.017 0-.042-.034-.076-.102-.085-.118-.322-.271-.711-.457-.381-.195-.838-.516-1.346-.982-.728-.61-1.295-1.109-1.702-1.49-.406-.373-.771-.787-1.101-1.236-1.01-1.389-1.575-3.065-1.685-5.04-.169-1.897.601-3.793 2.303-5.681 1.719-1.88 4.047-2.769 6.968-2.65 1.092.068 2.379.33 3.844.796.483.195.974.39 1.482.576.5.195.999.389 1.499.584.262.135.5.271.694.398-.085-.347-.127-.694-.127-1.041 0-1.287.457-2.388 1.38-3.302.914-.906 2.024-1.372 3.311-1.389 1.287 0 2.388.466 3.302 1.38.906.914 1.363 2.02 1.363 3.285 0 .262-.034.61-.102 1.041.229-.144.457-.271.669-.372.762-.33 1.761-.72 3.01-1.16 1.422-.483 2.701-.754 3.844-.821 2.921-.136 5.241.754 6.943 2.65 1.668 1.888 2.447 3.785 2.328 5.681-.127 1.973-.703 3.649-1.71 5.04-.33.449-.703.864-1.118 1.253-.406.39-.965.881-1.66 1.473-.542.466-1.01.796-1.389.982-.381.186-.601.347-.669.457-.017.034-.034.059-.051.076-.017.017-.025.034-.025.051l-.796 4.665 1.643 6.121c-.83.745-2.684 1.355-5.554 1.837-2.879.483-6.206.72-9.974.72-3.835 0-7.214-.254-10.118-.754-2.912-.508-4.741-1.143-5.486-1.897l1.634-6.05"
+       id="path9402"
+       style="fill:#000080" />
+  </g>
+  <path
+     fill="url(#0)"
+     d="m25.796 29.532c2.845.034 5.444.203 7.806.508 2.371.305 4.225.694 5.563 1.151.627-.491 1.312-1.041 2.057-1.651.745-.601 1.363-1.219 1.863-1.846.787-1.01 1.185-2.337 1.185-3.996 0-1.482-.356-2.726-1.067-3.717-1.27-1.854-3.209-2.777-5.8-2.777-1.558 0-3.15.322-4.792.965-1.439.584-2.532 1.228-3.268 1.939-1.389 1.389-2.421 3.175-3.082 5.351-.229.779-.364 1.49-.406 2.125-.042.635-.059 1.287-.059 1.947m-13.25 6.697c3.141-.796 7.307-1.194 12.505-1.194 5.089 0 9.203.381 12.327 1.143l.618-3.649c-3.327-.872-7.671-1.312-13.05-1.312-5.41 0-9.745.449-13.02 1.338l.618 3.675m25.298 4.411l-.737-2.845c-3.277-.728-7.332-1.092-12.158-1.092-4.809 0-8.856.364-12.133 1.092l-.787 2.87c3.158-.923 7.468-1.389 12.945-1.389 5.444 0 9.728.457 12.869 1.363m.652 2.337c-3.192-1.287-7.679-1.939-13.445-1.939-5.986 0-10.516.66-13.598 1.99 2.913 1.151 7.417 1.736 13.521 1.736 2.913 0 5.563-.161 7.959-.483 2.404-.322 4.25-.762 5.563-1.304m-14.419-13.445c-.008-.643-.034-1.287-.068-1.922-.034-.635-.161-1.346-.372-2.125-.677-2.21-1.702-3.996-3.082-5.351-.711-.694-1.795-1.346-3.268-1.939-1.685-.66-3.285-.991-4.792-.991-2.608 0-4.547.931-5.8 2.802-.711.991-1.067 2.235-1.067 3.717 0 1.626.398 2.955 1.185 3.996.483.61 1.092 1.228 1.837 1.837.745.61 1.439 1.168 2.083 1.66 2.896-1.041 7.341-1.6 13.343-1.685m.872-4.614c.119-.466.212-.787.296-.965.169-.643.356-1.194.576-1.643.093-.279.237-.601.432-.974.186-.373.389-.804.61-1.279.127-.279.271-.627.415-1.033.152-.406.305-.804.449-1.202.135-.33.203-.686.203-1.067 0-.813-.296-1.499-.872-2.066-.576-.576-1.279-.864-2.108-.864-1.964 0-2.955.991-2.955 2.955 0 .381.068.737.203 1.067.364 1.075.643 1.82.838 2.235.22.474.415.906.601 1.279.178.372.339.694.466.974.22.55.398 1.092.55 1.643.034.093.127.415.296.94"
+     id="path9406" />
+</svg>
diff --git a/client/public/images/pieces/Shogun/wm.svg b/client/public/images/pieces/Shogun/wm.svg
new file mode 100644 (file)
index 0000000..e73a47c
--- /dev/null
@@ -0,0 +1,173 @@
+<?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="svg10137"
+   sodipodi:docname="wM.svg"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+   inkscape:export-filename="D:\Pictures\Chess Variants\Chess\pieces\Shogun\WhiteMortar.png"
+   inkscape:export-xdpi="198.53"
+   inkscape:export-ydpi="198.53">
+  <metadata
+     id="metadata10141">
+    <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="1920"
+     inkscape:window-height="1017"
+     id="namedview10139"
+     showgrid="false"
+     inkscape:zoom="3.7676175"
+     inkscape:cx="120.81909"
+     inkscape:cy="70.535398"
+     inkscape:window-x="1912"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg10137"
+     showguides="false" />
+  <defs
+     id="defs10131">
+    <linearGradient
+       id="linearGradient6969"
+       inkscape:collect="always">
+      <stop
+         id="stop6965"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1" />
+      <stop
+         id="stop6967"
+         offset="1"
+         style="stop-color:#a7a7d3;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4919"
+       inkscape:collect="always">
+      <stop
+         id="stop4915"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1" />
+      <stop
+         id="stop4917"
+         offset="1"
+         style="stop-color:#c1c1e0;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient10716">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0"
+         id="stop10712" />
+      <stop
+         style="stop-color:#999999;stop-opacity:1"
+         offset="1"
+         id="stop10714" />
+    </linearGradient>
+    <linearGradient
+       id="0"
+       x1="21.375999"
+       x2="37.041283"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(5.0935658,27.115748)"
+       xlink:href="#linearGradient10716"
+       y2="-4.2632564e-14">
+      <stop
+         stop-color="#fff"
+         id="stop10126" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop10128"
+         style="stop-color:#c1c1e0;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6969"
+       id="linearGradient10718"
+       x1="23.811516"
+       y1="31.436777"
+       x2="41.166084"
+       y2="31.436777"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4919"
+       id="linearGradient10728"
+       gradientUnits="userSpaceOnUse"
+       x1="14.216018"
+       y1="20.581211"
+       x2="40.472511"
+       y2="24.951797" />
+  </defs>
+  <g
+     id="g10710"
+     transform="matrix(0.88963841,-0.16235103,0.16235103,0.88963841,0.63252059,6.8524838)">
+    <path
+       sodipodi:nodetypes="cccsssc"
+       inkscape:connector-curvature="0"
+       id="path10688"
+       d="M 20.598979,27.528386 6.5916734,17.715781 16.01534,5.8058262 36.104392,18.38993 c 3.359829,2.104651 5.245889,8.165002 3.071121,11.01109 -2.01284,2.634176 -6.336052,4.927633 -9.812605,2.996215 z"
+       style="fill:url(#linearGradient10728);fill-opacity:1;stroke:#000080;stroke-width:1.87242186;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="ccsccsc"
+       inkscape:connector-curvature="0"
+       id="path10690"
+       d="M 12.658898,22.245762 22.82839,9.5868642 c 0,0 1.215432,-0.7616529 1.747881,-0.4766949 0.639924,0.342477 0.688559,2.0656777 0.688559,2.0656777 l -10.169491,12.76483 c 0,0 -1.726503,0.81767 -2.330509,0.317797 -0.517574,-0.428342 -0.105932,-2.012712 -0.105932,-2.012712 z"
+       style="fill:#ffffff;stroke:#000080;stroke-width:1.56035157;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="ccsccsc"
+       inkscape:connector-curvature="0"
+       id="path10690-3"
+       d="M 3.5726054,15.914934 13.212436,3.9975604 c 0,0 1.480263,-1.1324157 2.012712,-0.8474577 0.639924,0.342477 0.790192,2.6557235 0.790192,2.6557235 L 6.5916734,17.715781 c 0,0 -2.30913,0.711738 -2.913136,0.211865 -0.517574,-0.428342 -0.105932,-2.012712 -0.105932,-2.012712 z"
+       style="fill:#ffffff;stroke:#000080;stroke-width:1.69328892;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+  <path
+     style="fill:url(#linearGradient10718);fill-opacity:1;stroke:#000080;stroke-width:1.69328892;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="m 21.590698,33.741618 2.202811,-8.650492 c 0.995427,-3.909066 11.466536,-3.745608 12.470169,0 l 2.339932,8.732741 v 3.958562 H 21.533158 Z"
+     id="path10686"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="csscccc" />
+  <path
+     d="m 33.501566,36.335748 h 4.216 v -3.395 h 6.796 v 9.295 l -5.5,4.243 h -17.81 l -5.508,-4.243 v -9.295 h 6.774 v 3.395 h 4.242 v -3.395 h 6.79 z"
+     id="path10133"
+     inkscape:connector-curvature="0"
+     style="fill:#000080"
+     sodipodi:nodetypes="ccccccccccccccc" />
+  <path
+     d="m 38.163566,44.793748 3.15,-2.557 h -22.42 l 3.175,2.557 h 16.1 m 4.64,-4.237 v -5.927 h -3.395 v 3.395 h -7.645 v -3.395 h -3.344 v 3.395 h -7.62 v -3.395 h -3.395 v 5.927 h 25.4"
+     id="path10135"
+     inkscape:connector-curvature="0"
+     style="fill:url(#0);fill-opacity:1"
+     sodipodi:nodetypes="cccccccccccccccccc" />
+</svg>
diff --git a/client/public/images/pieces/Shogun/wn.svg b/client/public/images/pieces/Shogun/wn.svg
new file mode 120000 (symlink)
index 0000000..6051b0e
--- /dev/null
@@ -0,0 +1 @@
+../wn.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Shogun/wp.svg b/client/public/images/pieces/Shogun/wp.svg
new file mode 120000 (symlink)
index 0000000..3a15545
--- /dev/null
@@ -0,0 +1 @@
+../wp.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Shogun/wq.svg b/client/public/images/pieces/Shogun/wq.svg
new file mode 100644 (file)
index 0000000..b5343f3
--- /dev/null
@@ -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="svg10006"
+   sodipodi:docname="wQshogun.svg"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+  <metadata
+     id="metadata10010">
+    <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="1920"
+     inkscape:window-height="1017"
+     id="namedview10008"
+     showgrid="false"
+     inkscape:zoom="2.6641079"
+     inkscape:cx="83.551313"
+     inkscape:cy="104.4283"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg10006" />
+  <defs
+     id="defs9998">
+    <linearGradient
+       id="0"
+       x1="21.253"
+       y1="37.22"
+       x2="77.64"
+       y2="37.35"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#fff"
+         id="stop9993" />
+      <stop
+         offset="1"
+         stop-color="#fff"
+         stop-opacity="0"
+         id="stop9995" />
+    </linearGradient>
+  </defs>
+  <g
+     stroke="#1f1a17"
+     stroke-width=".076"
+     id="g10004">
+    <path
+       fill="#1f1a17"
+       d="m44.541 14.723c-.94 0-1.744-.33-2.405-.982-.66-.652-.991-1.448-.991-2.396 0-.923.33-1.719.991-2.388.66-.677 1.465-1.01 2.405-1.01.931 0 1.727.33 2.388 1.01.66.669.991 1.465.991 2.388 0 .948-.33 1.744-.991 2.396-.66.652-1.456.982-2.388.982zm-4.31 29.22c-.813.711-2.633 1.304-5.461 1.786-2.828.474-6.087.72-9.77.72-3.751 0-7.05-.254-9.898-.745-2.845-.499-4.64-1.118-5.385-1.863l1.566-5.952-.694-3.895-2.184-3.793-2.108-15.426 1.211-.474 6.799 11.455.152-13.64 1.685-.296 5.182 13.716 2.777-14.757h1.719l2.777 14.707 5.131-13.665 1.71.296.152 13.64 6.824-11.481 1.16.542-2.057 15.359-2.21 3.793-.694 3.946 1.617 6.03zm-25.696-31.953c-.948 0-1.753-.322-2.413-.974-.66-.652-.991-1.456-.991-2.396 0-.923.33-1.719.991-2.379.66-.66 1.465-.991 2.413-.991.923 0 1.719.33 2.379.991.66.66.991 1.456.991 2.379 0 .94-.33 1.744-.991 2.396-.66.652-1.456.974-2.379.974zm-9.136 2.735c-.94 0-1.736-.33-2.388-.982-.652-.652-.982-1.448-.982-2.396 0-.923.33-1.719.982-2.388.652-.677 1.448-1.01 2.388-1.01.948 0 1.744.33 2.413 1.01.66.669.991 1.465.991 2.388 0 .948-.33 1.744-.991 2.396-.669.652-1.465.982-2.413.982zm19.55-3.971c-.94 0-1.744-.33-2.396-.991-.652-.66-.974-1.465-.974-2.405 0-.931.322-1.727.974-2.388.652-.66 1.456-.991 2.396-.991.923 0 1.727.33 2.396.991.669.66.999 1.456.999 2.388 0 .94-.33 1.744-.999 2.405-.669.66-1.473.991-2.396.991zm10.414 1.236c-.94 0-1.736-.322-2.388-.974-.652-.652-.982-1.456-.982-2.396 0-.923.33-1.719.982-2.379.652-.66 1.448-.991 2.388-.991.948 0 1.753.33 2.413.991.66.66.991 1.456.991 2.379 0 .94-.33 1.744-.991 2.396-.66.652-1.465.974-2.413.974z"
+       id="path10000"
+       style="fill:#000080" />
+    <path
+       fill="url(#0)"
+       d="m38.22 43.04c-3.02-1.253-7.417-1.88-13.166-1.88-5.876 0-10.312.643-13.327 1.93 2.896 1.143 7.315 1.71 13.25 1.71 2.845 0 5.444-.152 7.798-.466 2.362-.313 4.174-.745 5.444-1.295zm-13.267-34.03c1.109 0 1.66-.559 1.66-1.659 0-1.092-.55-1.643-1.66-1.643-1.092 0-1.634.55-1.634 1.643 0 1.101.542 1.659 1.634 1.659zm12.624 24.977c-3.192-.813-7.366-1.211-12.522-1.211-5.292 0-9.517.406-12.675 1.236l.373 2.379c3.217-.762 7.324-1.143 12.302-1.143 4.944 0 8.975.373 12.1 1.118l.423-2.379zm.618-1.49l1.617-2.853c-.796.322-1.609.474-2.43.474-2.218 0-3.988-.897-5.309-2.701-.991.821-2.1 1.236-3.327 1.236-1.583 0-2.853-.618-3.793-1.863-1.058 1.16-2.32 1.744-3.793 1.744-1.194 0-2.286-.406-3.277-1.219-1.389 1.77-3.183 2.65-5.385 2.65-.838 0-1.676-.152-2.506-.466l1.736 2.972c3.209-.923 7.62-1.389 13.225-1.389 5.706 0 10.118.474 13.242 1.414zm-11.11-5.927l-2.108-12.133-2.108 11.989c.051-.034.161-.119.347-.254.381-.745.957-1.118 1.736-1.118.847 0 1.389.372 1.634 1.118.102.102.271.237.5.398zm6.867.474v-11.489l-4.089 11.261c.313-.11.576-.262.796-.44.33-.415.779-.627 1.338-.627.66 0 1.194.296 1.592.872.042.068.102.136.169.212.068.076.136.144.195.212zm-13.936-.347l-4.064-11.142v11.337c.042-.068.119-.144.22-.245.33-.694.872-1.041 1.634-1.041.627 0 1.143.262 1.541.796.449.195.669.296.669.296zm-6.299 1.389l-5.334-9.203 1.363 8.382c.94.66 1.863.991 2.752.991.347 0 .754-.059 1.219-.169zm22.394.119c.381.119.804.178 1.27.178 1.01 0 1.947-.313 2.828-.94l1.363-8.585-5.461 9.347zm1.49 12.556l-.745-2.802c-3.243-.711-7.205-1.067-11.904-1.067-4.648 0-8.611.356-11.879 1.067l-.771 2.828c3.073-.931 7.298-1.389 12.675-1.389 5.241 0 9.449.449 12.624 1.363zm-23.06-30.514c1.084 0 1.634-.542 1.634-1.634 0-1.092-.55-1.634-1.634-1.634-1.109 0-1.668.542-1.668 1.634 0 1.092.559 1.634 1.668 1.634zm20.828 0c1.109 0 1.668-.542 1.668-1.634 0-1.092-.559-1.634-1.668-1.634-1.084 0-1.634.542-1.634 1.634 0 1.092.55 1.634 1.634 1.634zm-29.964 2.735c1.109 0 1.668-.55 1.668-1.643 0-1.109-.559-1.659-1.668-1.659-1.084 0-1.634.55-1.634 1.659 0 1.092.55 1.643 1.634 1.643zm39.14 0c1.092 0 1.642-.55 1.642-1.643 0-1.109-.55-1.659-1.642-1.659-1.101 0-1.66.55-1.66 1.659 0 1.092.559 1.643 1.66 1.643z"
+       id="path10002" />
+  </g>
+</svg>
diff --git a/client/public/images/pieces/Shogun/wr.svg b/client/public/images/pieces/Shogun/wr.svg
new file mode 120000 (symlink)
index 0000000..6a8519b
--- /dev/null
@@ -0,0 +1 @@
+../wr.svg
\ No newline at end of file
diff --git a/client/public/variants/Shogun/Promotions.png b/client/public/variants/Shogun/Promotions.png
new file mode 100644 (file)
index 0000000..0bcab41
--- /dev/null
@@ -0,0 +1 @@
+#$# git-fat d23fcfb7e4255ae6acf730983c4a88997da42e51               102584
index bf58f25..9608ef1 100644 (file)
@@ -215,6 +215,7 @@ export const translations = {
   "Friendly pieces": "Friendly pieces",
   "In the shadow": "In the shadow",
   "Interweaved colorbound teams": "Interweaved colorbound teams",
+  "General's Chess": "General's Chess",
   "Geometric Chess": "Geometric Chess",
   "Get strong at self-mate": "Get strong at self-mate",
   "Give three checks": "Give three checks",
index f9a9d99..980f6f9 100644 (file)
@@ -215,6 +215,7 @@ export const translations = {
   "Friendly pieces": "Piezas amistosas",
   "In the shadow": "En la sombra",
   "Interweaved colorbound teams": "Equipos unicolores entrelazados",
+  "General's Chess": "Ajedrez de los Generales",
   "Geometric Chess": "Ajedrez geométrico",
   "Get strong at self-mate": "Progreso en mates asistidos",
   "Give three checks": "Dar tres jaques",
index 101436d..5b70405 100644 (file)
@@ -215,6 +215,7 @@ export const translations = {
   "Friendly pieces": "Pièces amies",
   "In the shadow": "Dans l'ombre",
   "Interweaved colorbound teams": "Équipes unicolores entremêlées",
+  "General's Chess": "Échecs des Généraux",
   "Geometric Chess": "Échecs géométriques",
   "Get strong at self-mate": "Progressez en mats aidés",
   "Give three checks": "Donnez trois échecs",
index 21203ba..92ff37f 100644 (file)
@@ -1 +1,41 @@
-p.boxed TODO
+p.boxed
+  | Each piece has a promoted form. Captured pieces can be dropped later.
+
+p
+  | Shogun Chess is a chess variant designed in 2019-2020 by Couch Tomato.
+  | It is explained, and playable 
+  a(href="https://www.pychess.org/variant/shogun") on pychess-variants
+  | .
+
+figure
+  img.img-center(src="/variants/Shogun/Promotions.png")
+  figcaption.text-center.
+    Pieces and their promoted forms, with movements summary.
+
+h3 General rules
+
+ul
+  li.
+    The three farthest ranks are the promotion zone.
+    Every starting piece except the king and queen may promote by moving into
+    the promotion zone or moving from within the promotion zone.
+  li.
+    However, only one of each major piece (queen, mortar, archbishop, or
+    general) can be out on each side at a time.
+  li.
+    Captured pieces may be dropped back into the board as your own piece.
+    Pieces can be dropped anywhere within the first 5 ranks.
+  li.
+    When promoted pieces are captured, they revert to their unpromoted side.
+    This is the only way that a queen becomes a duchess.
+
+p Note: pawns cannot promote if capturing en passant.
+
+h3 (New) Pieces
+
+ul
+  li Archbishop (A) = Bishop + Knight.
+  li Mortar (M) = Rook + Knight.
+  li General (G) = King (non-royal) + Knight.
+  li Captain (C) = King (non-royal).
+  li Duchess (F) = Ferz (one step diagonally).
index 21203ba..bac69b5 100644 (file)
@@ -1 +1,43 @@
-p.boxed TODO
+p.boxed
+  | Cada pieza tiene una forma promocionada.
+  | Las piezas capturadas se pueden lanzar en paracaídas más tarde.
+
+p
+  | Shogun Chess es una variante desarrollada en 2019-2020 por Couch Tomato.
+  | Se explican y se puede jugar 
+  a(href="https://www.pychess.org/variant/shogun") en pychess-variants
+  | .
+
+figure
+  img.img-center(src="/variants/Shogun/Promotions.png")
+  figcaption.text-center.
+    Piezas y sus formas promocionadas, con resumen de movimientos.
+
+h3 Reglas generales
+
+ul
+  li.
+    Las últimas tres filas definen el área de promoción.
+    Cada pieza inicial, excepto el rey y la reina, puede ser
+    promovido moviéndose hacia o desde el área de promoción.
+  li.
+    Sin embargo, solo una de las piezas principales (dama, mortero, arzobispo
+    o general) pueden estar presentes en el tablero para cada lado.
+  li.
+    Las piezas capturadas cambian de color y luego se pueden lanzar en
+    paracaídas en el tablero, en cualquier lugar de las primeras 5 filas.
+  li.
+    Cuando se captura una pieza promocionada, vuelve a su forma no
+    promocionada. Esta es la única manera de
+    que una dama se convierta en duquesa.
+
+p Nota: los peones no pueden promocionarse mediante una captura en passant.
+
+h3 (Nuevas) Piezas
+
+ul
+  li Arzobispo (A) = Alfil + Caballo.
+  li Mortero (M) = Torre + Caballo.
+  li General (G) = Rey (no real) + Caballo.
+  li Capitán (C) = Rey (no real).
+  li Duquesa (F) = Ferz (un paso en diagonal).
index 21203ba..c989f72 100644 (file)
@@ -1 +1,42 @@
-p.boxed TODO
+p.boxed
+  | Chaque pièce a une forme promue.
+  | Les pièces capturées peuvent être parachutées plus tard.
+
+p
+  | Les Échecs Shogun sont une variante élaborée en 2019-2020 par Couch Tomato.
+  | Ils sont expliqué, et jouables 
+  a(href="https://www.pychess.org/variant/shogun") sur pychess-variants
+  | .
+
+figure
+  img.img-center(src="/variants/Shogun/Promotions.png")
+  figcaption.text-center.
+    Pièces et leurs formes promues, avec résumé des déplacements.
+
+h3 Règles générales
+
+ul
+  li.
+    Les trois dernières rangées définissent la zone de promotion.
+    Chaque pièce initiale à l'exception du roi et de la dame peuvent être
+    promue en se déplaçant vers ou depuis la zone de promotion.
+  li.
+    Cependant, une seule des pièces majeures (dame, mortier, achevêque ou
+    général) peut être présente sur l'échiquier pour chaque camp.
+  li.
+    Les pièces capturées changent de couleur puis peuvent être parachutées
+    sur l'échiquier, n'importe où sur les 5 premières rangées.
+  li.
+    Quand une pièce promue est capturée, elle reprend sa forme non promue.
+    C'est la seule façon pour une dame de devenir une duchesse.
+
+p Note : les pions ne peuvent pas se promouvoir via une capture en passant.
+
+h3 (Nouvelles) Pièces
+
+ul
+  li Archevêque (A) = Fou + Cavalier.
+  li Mortier (M) = Tour + Cavalier.
+  li Général (G) = Roi (non royal) + Cavalier.
+  li Capitaine (C) = Roi (non royal).
+  li Duchesse (F) = Ferz (un pas en diagonale).
index 55c778d..af4c550 100644 (file)
@@ -320,6 +320,7 @@ p Pieces can be drop on the board, either immediately or later in the game.
     "Madhouse",
     "Rampage",
     "Recycle",
+    "Shogun",
     "Teleport"
   ]
 ul
index 7a3dea3..b638617 100644 (file)
@@ -329,6 +329,7 @@ p.
     "Madhouse",
     "Rampage",
     "Recycle",
+    "Shogun",
     "Teleport"
   ]
 ul
index 9673a53..9ce0160 100644 (file)
@@ -328,6 +328,7 @@ p.
     "Madhouse",
     "Rampage",
     "Recycle",
+    "Shogun",
     "Teleport"
   ]
 ul
diff --git a/client/src/variants/Shogun.js b/client/src/variants/Shogun.js
new file mode 100644 (file)
index 0000000..1a20d32
--- /dev/null
@@ -0,0 +1,436 @@
+import { ChessRules, PiPo, Move } from "@/base_rules";
+import { ArrayFun } from "@/utils/array";
+
+export class ShogunRules extends ChessRules {
+
+  static get CAPTAIN() {
+    return 'c';
+  }
+  static get GENERAL() {
+    return 'g';
+  }
+  static get ARCHBISHOP() {
+    return 'a';
+  }
+  static get MORTAR() {
+    return 'm';
+  }
+  static get DUCHESS() {
+    return 'f';
+  }
+
+  static get PIECES() {
+    return (
+      ChessRules.PIECES
+      .concat([V.CAPTAIN, V.GENERAL, V.ARCHBISHOP, V.MORTAR, V.DUCHESS])
+    );
+  }
+
+  getPpath(b) {
+    return "Shogun/" + b;
+  }
+
+  getReservePpath(index, color) {
+    return "Shogun/" + color + V.RESERVE_PIECES[index];
+  }
+
+  static IsGoodFen(fen) {
+    if (!ChessRules.IsGoodFen(fen)) return false;
+    const fenParsed = V.ParseFen(fen);
+    // 5) Check reserves
+    if (!fenParsed.reserve || !fenParsed.reserve.match(/^[0-9]{10,10}$/))
+      return false;
+    return true;
+  }
+
+  static ParseFen(fen) {
+    const fenParts = fen.split(" ");
+    return Object.assign(
+      ChessRules.ParseFen(fen),
+      { reserve: fenParts[5] }
+    );
+  }
+
+  static GenRandInitFen(randomness) {
+    return ChessRules.GenRandInitFen(randomness) + " 0000000000";
+  }
+
+  getFen() {
+    return super.getFen() + " " + this.getReserveFen();
+  }
+
+  getFenForRepeat() {
+    return super.getFenForRepeat() + "_" + this.getReserveFen();
+  }
+
+  getReserveFen() {
+    let counts = new Array(10);
+    for (let i = 0; i < V.RESERVE_PIECES.length; i++) {
+      counts[i] = this.reserve["w"][V.RESERVE_PIECES[i]];
+      counts[5 + i] = this.reserve["b"][V.RESERVE_PIECES[i]];
+    }
+    return counts.join("");
+  }
+
+  setOtherVariables(fen) {
+    super.setOtherVariables(fen);
+    // Also init reserves (used by the interface to show landable pieces)
+    const reserve =
+      V.ParseFen(fen).reserve.split("").map(x => parseInt(x, 10));
+    this.reserve = {
+      w: {
+        [V.PAWN]: reserve[0],
+        [V.ROOK]: reserve[1],
+        [V.KNIGHT]: reserve[2],
+        [V.BISHOP]: reserve[3],
+        [V.DUCHESS]: reserve[4]
+      },
+      b: {
+        [V.PAWN]: reserve[5],
+        [V.ROOK]: reserve[6],
+        [V.KNIGHT]: reserve[7],
+        [V.BISHOP]: reserve[8],
+        [V.DUCHESS]: reserve[9]
+      }
+    };
+  }
+
+  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.PAWN, V.ROOK, V.KNIGHT, V.BISHOP, V.DUCHESS];
+  }
+
+  getReserveMoves([x, y]) {
+    const color = this.turn;
+    const iZone = (color == 'w' ? [3, 4, 5, 6, 7] : [0, 1, 2, 3, 4]);
+    const p = V.RESERVE_PIECES[y];
+    if (this.reserve[color][p] == 0) return [];
+    let moves = [];
+    for (let i of iZone) {
+      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 }, //a bit artificial...
+            end: { x: i, y: j }
+          });
+          moves.push(mv);
+        }
+      }
+    }
+    return moves;
+  }
+
+  static get MapUnpromoted() {
+    return {
+      f: 'q',
+      r: 'm',
+      b: 'a',
+      p: 'c',
+      n: 'g'
+    };
+  }
+
+  getPotentialMovesFrom([x, y]) {
+    if (x >= V.size.x)
+      // Reserves, outside of board: x == sizeX(+1)
+      return this.getReserveMoves([x, y]);
+    // Standard moves
+    const piece = this.getPiece(x, y);
+    const sq = [x, y];
+    if (piece == V.KING) return super.getPotentialKingMoves(sq);
+    let moves = [];
+    switch (piece) {
+      // Unpromoted
+      case V.PAWN:
+        return this.getPotentialPawnMoves(sq);
+      case V.ROOK:
+        moves = super.getPotentialRookMoves(sq);
+        break;
+      case V.KNIGHT:
+        moves = super.getPotentialKnightMoves(sq);
+        break;
+      case V.BISHOP:
+        moves = super.getPotentialBishopMoves(sq);
+        break;
+      case V.DUCHESS:
+        moves = this.getPotentialDuchessMoves(sq);
+        break;
+    }
+    if ([V.ROOK, V.KNIGHT, V.BISHOP, V.DUCHESS].includes(piece)) {
+      let extraMoves = [];
+      // Check that no promoted form is already on board:
+      const promotedForm = V.MapUnpromoted[piece];
+      const c = this.turn;
+      if (
+        this.board.some(b =>
+          b.some(cell =>
+            cell[0] == c && cell[1] == promotedForm)
+        )
+      ) {
+        return moves;
+      }
+      const promotionZone = (this.turn == 'w' ? [0, 1, 2] : [5, 6, 7]);
+      moves.forEach(m => {
+        if (
+          promotionZone.includes(m.end.x) ||
+          promotionZone.includes(m.start.x)
+        ) {
+          let newMove = JSON.parse(JSON.stringify(m));
+          newMove.appear[0].p = promotedForm;
+          extraMoves.push(newMove);
+        }
+      });
+      return moves.concat(extraMoves);
+    }
+    switch (piece) {
+      // Promoted
+      case V.CAPTAIN: return this.getPotentialCaptainMoves(sq);
+      case V.MORTAR: return this.getPotentialMortarMoves(sq);
+      case V.GENERAL: return this.getPotentialGeneralMoves(sq);
+      case V.ARCHBISHOP: return this.getPotentialArchbishopMoves(sq);
+      case V.QUEEN: return super.getPotentialQueenMoves(sq);
+    }
+    return []; //never reached
+  }
+
+  getPotentialPawnMoves([x, y]) {
+    // NOTE: apply promotion freely, but not on en-passant
+    const c = this.turn;
+    const oppCol = V.GetOppCol(c);
+    const forward = (c == 'w' ? -1 : 1);
+    const initialRank = (c == 'w' ? 6 : 1);
+    let moves = [];
+    // Pawn push
+    let [i, j] = [x + forward, y];
+    if (this.board[i][j] == V.EMPTY) {
+      moves.push(this.getBasicMove([x, y], [i, j]));
+      if (x == initialRank && this.board[i + forward][j] == V.EMPTY)
+        moves.push(this.getBasicMove([x, y], [i + forward, j]));
+    }
+    // Captures
+    for (let shiftY of [-1, 1]) {
+      [i, j] = [x + forward, y + shiftY];
+      if (
+        V.OnBoard(i, j) &&
+        this.board[i][j] != V.EMPTY &&
+        this.getColor(i, j) == oppCol
+      ) {
+        moves.push(this.getBasicMove([x, y], [i, j]));
+      }
+    }
+    let extraMoves = [];
+    const promotionZone = (this.turn == 'w' ? [1, 2] : [5, 6]);
+    const lastRank = (c == 'w' ? 0 : 7);
+    moves.forEach(m => {
+      if (m.end.x == lastRank)
+        // Force promotion
+        m.appear[0].p = V.CAPTAIN;
+      else if (promotionZone.includes(m.end.x)) {
+        let newMove = JSON.parse(JSON.stringify(m));
+        newMove.appear[0].p = V.CAPTAIN;
+        extraMoves.push(newMove);
+      }
+    });
+    return (
+      moves.concat(extraMoves)
+      .concat(super.getEnpassantCaptures([x, y], forward))
+    );
+  }
+
+  getPotentialDuchessMoves(sq) {
+    return super.getSlideNJumpMoves(sq, V.steps[V.BISHOP], "oneStep");
+  }
+
+  getPotentialCaptainMoves(sq) {
+    const steps = V.steps[V.ROOK].concat(V.steps[V.BISHOP]);
+    return super.getSlideNJumpMoves(sq, steps, "oneStep");
+  }
+
+  getPotentialMortarMoves(sq) {
+    return (
+      super.getSlideNJumpMoves(sq, V.steps[V.ROOK])
+      .concat(super.getSlideNJumpMoves(sq, V.steps[V.KNIGHT], "oneStep"))
+    );
+  }
+
+  getPotentialGeneralMoves(sq) {
+    const steps =
+      V.steps[V.BISHOP].concat(V.steps[V.ROOK]).concat(V.steps[V.KNIGHT]);
+    return super.getSlideNJumpMoves(sq, steps, "oneStep");
+  }
+
+  getPotentialArchbishopMoves(sq) {
+    return (
+      super.getSlideNJumpMoves(sq, V.steps[V.BISHOP])
+      .concat(super.getSlideNJumpMoves(sq, V.steps[V.KNIGHT], "oneStep"))
+    );
+  }
+
+  isAttacked(sq, color) {
+    return (
+      super.isAttacked(sq, color) ||
+      this.isAttackedByDuchess(sq, color) ||
+      this.isAttackedByCaptain(sq, color) ||
+      this.isAttackedByMortar(sq, color) ||
+      this.isAttackedByGeneral(sq, color) ||
+      this.isAttackedByArchbishop(sq, color)
+    );
+  }
+
+  isAttackedByDuchess(sq, color) {
+    return (
+      super.isAttackedBySlideNJump(
+        sq, color, V.DUCHESS, V.steps[V.BISHOP], "oneStep")
+    );
+  }
+
+  isAttackedByCaptain(sq, color) {
+    const steps = V.steps[V.BISHOP].concat(V.steps[V.ROOK]);
+    return (
+      super.isAttackedBySlideNJump(sq, color, V.DUCHESS, steps, "oneStep")
+    );
+  }
+
+  isAttackedByMortar(sq, color) {
+    return (
+      super.isAttackedBySlideNJump(sq, color, V.MORTAR, V.steps[V.ROOK]) ||
+      super.isAttackedBySlideNJump(
+        sq, color, V.MORTAR, V.steps[V.KNIGHT], "oneStep")
+    );
+  }
+
+  isAttackedByGeneral(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")
+    );
+  }
+
+  isAttackedByArchbishop(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;
+  }
+
+  static get MapPromoted() {
+    return {
+      q: 'f',
+      m: 'r',
+      a: 'b',
+      c: 'p',
+      g: 'n'
+    };
+  }
+
+  getUnpromotedForm(piece) {
+    if (Object.keys(V.MapPromoted).includes(piece))
+      return V.MapPromoted[piece];
+    return piece;
+  }
+
+  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]--;
+    else if (move.vanish.length == 2)
+      this.reserve[color][this.getUnpromotedForm(move.vanish[1].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]++;
+    else if (move.vanish.length == 2)
+      this.reserve[color][this.getUnpromotedForm(move.vanish[1].p)]--;
+  }
+
+  static get SEARCH_DEPTH() {
+    return 2;
+  }
+
+  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);
+    // Rebirth:
+    const piece =
+      move.appear[0].p != V.PAWN ? move.appear[0].p.toUpperCase() : "";
+    return piece + "@" + V.CoordsToSquare(move.end);
+  }
+
+};
index 3a5e517..b274032 100644 (file)
@@ -129,6 +129,7 @@ insert or ignore into Variants (name, description) values
   ('Shako', 'Non-conformism and utopia'),
   ('Shatranj', 'Ancient rules'),
   ('Shogi', 'Japanese Chess'),
+  ('Shogun', 'General''s Chess'),
   ('Sittuyin', 'Burmese Chess'),
   ('Spartan', 'Spartan versus Persians'),
   ('Squatter1', 'Squat last rank (v1)'),