Add Capablanca + Musketeer Chess
authorBenjamin Auder <benjamin.auder@somewhere>
Tue, 12 Jan 2021 01:20:32 +0000 (02:20 +0100)
committerBenjamin Auder <benjamin.auder@somewhere>
Tue, 12 Jan 2021 01:20:32 +0000 (02:20 +0100)
57 files changed:
TODO
client/public/images/pieces/Musketeer/SOURCE [new file with mode: 0644]
client/public/images/pieces/Musketeer/ba.svg [new file with mode: 0644]
client/public/images/pieces/Musketeer/bc.svg [new symlink]
client/public/images/pieces/Musketeer/bd.svg [new file with mode: 0644]
client/public/images/pieces/Musketeer/be.svg [new symlink]
client/public/images/pieces/Musketeer/bf.svg [new file with mode: 0644]
client/public/images/pieces/Musketeer/bh.svg [new symlink]
client/public/images/pieces/Musketeer/bj.svg [new file with mode: 0644]
client/public/images/pieces/Musketeer/bl.svg [new symlink]
client/public/images/pieces/Musketeer/bm.svg [new file with mode: 0644]
client/public/images/pieces/Musketeer/bo.svg [new symlink]
client/public/images/pieces/Musketeer/bs.svg [new file with mode: 0644]
client/public/images/pieces/Musketeer/bt.svg [new symlink]
client/public/images/pieces/Musketeer/bu.svg [new file with mode: 0644]
client/public/images/pieces/Musketeer/bv.svg [new symlink]
client/public/images/pieces/Musketeer/bw.svg [new symlink]
client/public/images/pieces/Musketeer/bx.svg [new file with mode: 0644]
client/public/images/pieces/Musketeer/by.svg [new file with mode: 0644]
client/public/images/pieces/Musketeer/wa.svg [new file with mode: 0644]
client/public/images/pieces/Musketeer/wc.svg [new symlink]
client/public/images/pieces/Musketeer/wd.svg [new file with mode: 0644]
client/public/images/pieces/Musketeer/we.svg [new symlink]
client/public/images/pieces/Musketeer/wf.svg [new file with mode: 0644]
client/public/images/pieces/Musketeer/wh.svg [new symlink]
client/public/images/pieces/Musketeer/wj.svg [new file with mode: 0644]
client/public/images/pieces/Musketeer/wl.svg [new symlink]
client/public/images/pieces/Musketeer/wm.svg [new file with mode: 0644]
client/public/images/pieces/Musketeer/wo.svg [new symlink]
client/public/images/pieces/Musketeer/ws.svg [new file with mode: 0644]
client/public/images/pieces/Musketeer/wt.svg [new symlink]
client/public/images/pieces/Musketeer/wu.svg [new file with mode: 0644]
client/public/images/pieces/Musketeer/wv.svg [new symlink]
client/public/images/pieces/Musketeer/ww.svg [new symlink]
client/public/images/pieces/Musketeer/wx.svg [new file with mode: 0644]
client/public/images/pieces/Musketeer/wy.svg [new file with mode: 0644]
client/src/base_rules.js
client/src/translations/about/en.pug
client/src/translations/about/es.pug
client/src/translations/about/fr.pug
client/src/translations/en.js
client/src/translations/es.js
client/src/translations/fr.js
client/src/translations/rules/Capablanca/en.pug [new file with mode: 0644]
client/src/translations/rules/Capablanca/es.pug [new file with mode: 0644]
client/src/translations/rules/Capablanca/fr.pug [new file with mode: 0644]
client/src/translations/rules/Musketeer/en.pug [new file with mode: 0644]
client/src/translations/rules/Musketeer/es.pug [new file with mode: 0644]
client/src/translations/rules/Musketeer/fr.pug [new file with mode: 0644]
client/src/translations/variants/en.pug
client/src/translations/variants/es.pug
client/src/translations/variants/fr.pug
client/src/variants/Capablanca.js [new file with mode: 0644]
client/src/variants/Grand.js
client/src/variants/Musketeer.js [new file with mode: 0644]
client/src/variants/Titan.js
server/db/populate.sql

diff --git a/TODO b/TODO
index 4707a60..734ab15 100644 (file)
--- a/TODO
+++ b/TODO
@@ -18,9 +18,6 @@ https://www.chessvariants.com/incinf.dir/bario.html
   https://www.bario-chess-checkers-chessphotography-spaceart.de/
   https://le-cdn.website-editor.net/20ef5f800ea646c29f6852cfc5ceda07/dms3rep/multi/opt/BAR028-e15a849c-960w.jpg
 
-https://musketeerchess.net/games/musketeer/index.php Attention règle de promotion + SVG / PNG
-https://musketeerchess.net/games/cerebral/rules/rules.php : from Titan, should be easy
-
 Non-chess:
 gomoku, avalam, draughts, draughts8
 Yoté https://fr.wikipedia.org/wiki/Yot%C3%A9 http://www.zillionsofgames.com/cgi-bin/zilligames/submissions.cgi/92187?do=show;id=960
diff --git a/client/public/images/pieces/Musketeer/SOURCE b/client/public/images/pieces/Musketeer/SOURCE
new file mode 100644 (file)
index 0000000..32c0346
--- /dev/null
@@ -0,0 +1,7 @@
+https://www.flaticon.com/free-icon/spider_1234574?related_item_id=1235131&term=spider
+https://www.flaticon.com/free-icon/tarantula_3012674?related_item_id=3012893&term=spider
+https://www.svgrepo.com/svg/231793/fortress
+https://www.svgrepo.com/svg/231846/fortress
+https://commons.wikimedia.org/wiki/File:Chess_Ult45.svg
+https://commons.wikimedia.org/wiki/File:Chess_Udt45.svg
+https://en.everybodywiki.com/File:W-_-B-Leopard-Diagram.svg
diff --git a/client/public/images/pieces/Musketeer/ba.svg b/client/public/images/pieces/Musketeer/ba.svg
new file mode 100644 (file)
index 0000000..584f515
--- /dev/null
@@ -0,0 +1,92 @@
+<?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"
+   height="100%"
+   width="100%"
+   version="1.1"
+   viewBox="0 0 2048 2048"
+   id="svg16"
+   sodipodi:docname="ba.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07, custom)">
+  <metadata
+     id="metadata22">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs20" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="960"
+     inkscape:window-height="1060"
+     id="namedview18"
+     showgrid="false"
+     inkscape:zoom="0.43115234"
+     inkscape:cx="1024"
+     inkscape:cy="1021.6806"
+     inkscape:window-x="0"
+     inkscape:window-y="20"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg16" />
+  <path
+     style="color:black;"
+     d="m1290 582l-42 102q-102 22-224 22-121 0-222-22l-42-101q124 31 264 31 138 0 266-32zm-84 206l-29 70v27q-76 11-153 11-75 0-152-11l-1-27-27-70q85 15 180 15 96 0 182-15zm-35-378q-40 30-80 95h-32q0-49 23-95h89zm-206 0q23 49 23 95h-32q-39-64-81-95h90zm59-18q-14-57-34-79t-53-46q-36-25-85-42t-109-9l-281 39q-17 2-30 0t-26-2q-21 0-53-9t-51-28l-97 159q18 20 32 28t33 17q58 27 124 33 28 2 55 1t56 2q54-9 108-16t110-16q60 0 81 12 11 6 35 22t48 47q-53 6-108 20t-97 31l104 258q-78 45-109 72t-49 64q-26 46-33 89t-7 77q1 60 28 132t104 130q63 48 123 99t119 119q-74 38-74 121 0 56 39 96t97 40q56 0 96-40t40-96q0-82-74-121 58-68 117-119t125-99q75-57 102-129t29-133q0-34-7-77t-32-89q-20-36-50-63t-108-73l104-258q-44-16-99-30t-106-21q23-31 47-47t36-22q21-12 81-12 54 8 108 15t110 17q27-3 54-2t57-1q64-6 124-33 18-9 32-17t33-28l-98-159q-18 18-50 27t-53 10q-13 0-26 2t-31 0l-280-39q-60-9-111 8t-85 45q-33 27-52 46t-33 77zm-37 744v-85q0-37 37-37t37 37v86h90q35 0 35 36t-35 36h-90v90q0 37-37 37t-37-37v-90h-88q-35 0-35-36t35-36l88-1z"
+     fill-rule="nonzero"
+     transform="translate(0,2048) scale(1,-1)"
+     display="block"
+     fill="#000"
+     id="path2" />
+  <g
+     fill-rule="nonzero"
+     fill="#fff"
+     id="g14">
+    <path
+       style="color:black;"
+       d="m1290 1466-42-102q-102-22-224-22-121 0-222 22l-42 101q124-31 264-31 138 0 266 32z"
+       display="block"
+       id="path4" />
+    <path
+       style="color:black;"
+       d="m1206 1260-29-70v-27q-76-11-153-11-75 0-152 11l-1 27-27 70q85-15 180-15 96 0 182 15z"
+       display="block"
+       id="path6" />
+    <path
+       style="color:black;"
+       d="m1171 1638q-40-30-80-95h-32q0 49 23 95h89z"
+       display="block"
+       id="path8" />
+    <path
+       style="color:black;"
+       d="m965 1638q23-49 23-95h-32q-39 64-81 95h90z"
+       display="block"
+       id="path10" />
+    <path
+       style="color:black;"
+       d="m987 912v85q0 37 37 37t37-37v-86h90q35 0 35-36t-35-36h-90v-90q0-37-37-37t-37 37v90h-88q-35 0-35 36t35 36l88 1z"
+       display="block"
+       id="path12" />
+  </g>
+  <path
+     style="fill:#800000;stroke:#000000;stroke-width:2.31937"
+     d="m 751.47452,1831.8127 c -3.82695,-0.5231 -71.14655,-9.86 -149.5991,-20.7488 -141.96441,-19.7039 -142.80052,-19.7904 -176.2718,-18.2291 -53.52578,2.4967 -88.42492,11.1906 -111.51668,27.7804 -6.52525,4.6879 -12.16017,8.1908 -12.52204,7.7843 -1.88697,-2.1201 -91.95415,-150.7195 -92.99301,-153.4268 -2.45244,-6.3909 23.96923,-26.7404 53.27615,-41.0323 62.49527,-30.4767 105.39226,-39.0504 197.38639,-39.4511 l 51.02605,-0.2222 105.53114,15.2177 c 110.20705,15.892 129.83007,17.3547 160.18164,11.9398 19.68513,-3.5119 29.84029,-8.1364 56.67906,-25.8108 17.51548,-11.5347 54.5051,-46.5135 54.5051,-51.5422 0,-1.2752 -6.00136,-3.026 -13.33636,-3.8907 -41.11827,-4.8473 -107.9183,-20.7118 -158.61108,-37.6688 l -31.6258,-10.579 51.92025,-128.8821 c 28.55615,-70.8852 51.92026,-129.0841 51.92026,-129.3308 0,-0.2467 -7.56693,-4.8923 -16.8154,-10.3234 -31.28665,-18.3729 -81.68271,-52.7518 -95.28672,-65.0021 -20.18579,-18.1772 -34.9957,-39.19 -52.48142,-74.4623 -25.48116,-51.4007 -33.9708,-93.64656 -31.85294,-158.50545 1.33646,-40.92887 6.25444,-66.72602 20.78179,-109.01019 22.09456,-64.30984 49.14634,-98.18017 126.94801,-158.94602 74.52475,-58.20646 125.15499,-101.69176 165.88155,-142.47231 21.71186,-21.74065 43.87298,-44.87059 49.24693,-51.39988 l 9.77084,-11.87142 -13.34777,-8.23871 c -28.42046,-17.54211 -49.91746,-47.3758 -57.59289,-79.9278 -4.91538,-20.84645 -3.15491,-56.44439 3.78203,-76.47597 32.46604,-93.75092 151.6525,-121.20968 221.3926,-51.00553 20.0069,20.14012 29.9155,36.87981 36.0672,60.93262 14.7399,57.63262 -6.2612,113.43604 -54.668,145.26168 l -14.6909,9.65869 7.4099,9.39376 c 14.7151,18.65484 84.6101,88.36408 114.1007,113.79757 32.6376,28.1475 72.929,60.37126 107.8505,86.25518 81.1089,60.11817 115.532,113.90303 137.1411,214.27827 6.8436,31.78899 7.35,86.32076 1.1499,123.84949 -10.4607,63.31862 -39.7824,120.36822 -81.4818,158.53462 -16.4943,15.0968 -54.5428,41.7134 -89.8601,62.8611 -11.162,6.6837 -20.2945,12.3835 -20.2945,12.6663 0,0.2827 23.3593,58.3997 51.9095,129.1489 l 51.9095,128.6349 -26.9763,8.8733 c -37.4532,12.3194 -109.1341,30.2905 -145.8438,36.5644 -16.9024,2.8887 -30.7316,6.0193 -30.7316,6.957 0,3.9901 24.7347,30.8414 36.775,39.9219 42.1182,31.7647 66.7218,40.7821 111.7733,40.966 17.1394,0.07 155.9415,-18.1329 215.5921,-28.2734 23.4324,-3.9834 129.7385,-1.5154 157.7481,3.6623 41.5786,7.686 85.9817,23.2769 117.2574,41.1714 20.7421,11.8678 41.1557,29.3056 39.4648,33.7119 -0.964,2.5123 -55.2632,91.3289 -88.781,145.2184 l -5.4116,8.7007 -12.4245,-8.2494 c -24.4105,-16.2076 -62.203,-25.4077 -114.1174,-27.7803 -31.8889,-1.4574 -34.0648,-1.2222 -183.0314,19.783 -143.3613,20.2148 -152.2382,21.202 -180.9105,20.1177 -37.669,-1.4245 -60.7059,-7.6908 -99.7327,-27.1284 -28.7801,-14.3343 -47.0002,-27.6371 -82.905,-60.5308 -22.8441,-20.9283 -32.0939,-36.7044 -41.6668,-71.0657 -2.922,-10.4882 -5.8346,-19.0696 -6.4724,-19.0696 -0.6378,0 -3.5504,8.5814 -6.4724,19.0696 -2.922,10.4883 -9.0441,26.8274 -13.6046,36.3092 -24.27547,50.4706 -120.32263,110.9327 -191.73296,120.6966 -17.53612,2.3977 -46.37785,2.7942 -60.71552,0.8347 z m 219.15734,-203.0381 c 7.75354,-17.5491 15.82626,-49.148 17.52181,-68.5854 l 1.65482,-18.9706 h -17.14125 -17.14127 l -13.88983,21.3777 c -8.55609,13.1686 -24.16848,31.8721 -40.65702,48.7067 l -26.76722,27.3289 h 46.03241 46.03238 z m 185.69664,-5.5817 c -16.8294,-15.5815 -37.5964,-40.8303 -55.5003,-67.4783 l -9.7394,-14.496 h -16.1492 -16.1491 v 13.7645 c 0,18.0693 5.1872,42.0965 14.0492,65.0766 l 7.1622,18.5722 h 46.5011 46.5011 z M 834.97169,1450.8372 c 131.56697,-22.4816 275.77691,-20.3955 405.88901,5.8717 21.6861,4.378 41.7776,8.606 44.6478,9.3955 2.8702,0.7895 5.2109,0.531 5.2015,-0.5745 -0.01,-1.1056 -9.2578,-24.3733 -20.5521,-51.7061 -15.0596,-36.4449 -21.7864,-50.1588 -25.2279,-51.4319 -7.2124,-2.6681 -58.471,-10.9278 -93.3649,-15.0447 -42.1815,-4.9767 -166.40513,-7.0017 -213.43032,-3.4791 -38.15697,2.8583 -107.20572,12.1683 -126.14785,17.0089 l -11.38794,2.9101 -20.39112,48.7067 c -11.21511,26.7886 -20.44162,49.8581 -20.50334,51.2654 -0.0733,1.6732 8.1157,0.7028 23.66127,-2.8037 13.07542,-2.9493 36.29807,-7.5026 51.60589,-10.1183 z m 53.34541,-196.1383 c 88.78217,-11.4746 191.7058,-10.9624 282.6593,1.4066 18.9679,2.5795 34.8791,4.2979 35.3583,3.8188 0.4792,-0.4792 -5.9075,-17.2227 -14.1927,-37.2078 -12.1345,-29.2704 -15.0639,-38.7497 -15.0639,-48.7463 v -12.4098 l -22.6138,-2.716 c -81.9685,-9.8446 -171.729,-9.8523 -258.60926,-0.023 l -24.93318,2.8211 v 12.1831 c 0,9.3114 -3.2803,20.7389 -13.9162,48.4796 -7.6539,19.963 -13.91619,36.8737 -13.91619,37.5793 0,0.7057 4.43578,0.5694 9.8573,-0.3029 5.42152,-0.8723 21.33817,-3.0698 35.37033,-4.8833 z m 158.7983,-224.86 c 12.5172,-6.4729 13.9945,-13.6921 13.9945,-68.38728 v -48.78118 l 49.2865,-0.051 c 43.8102,-0.0452 50.3915,-0.55245 59.2311,-4.56442 13.1863,-5.98478 17.5277,-16.01028 16.3048,-37.6525 -0.7979,-14.12101 -1.6813,-16.57251 -8.3921,-23.28731 l -7.5004,-7.50477 -54.465,-0.69899 -54.4649,-0.69901 v -52.88326 c 0,-51.23344 -0.1654,-53.12913 -5.2989,-60.7642 -12.3193,-18.32213 -51.3027,-18.32213 -63.62196,0 -5.13445,7.63637 -5.29889,9.5258 -5.29889,60.88335 v 53.00243 h -50.09568 c -55.17716,0 -61.5078,1.26217 -68.87373,13.73169 -6.19988,10.49557 -5.44838,36.7096 1.34191,46.80867 8.04945,11.9718 15.38206,13.40123 69.50066,13.54844 l 48.12684,0.1309 v 49.98155 c 0,60.69079 0.97098,63.67559 23.05825,70.88059 8.5007,2.773 28.5065,0.7848 37.167,-3.6937 z"
+     id="path24" />
+</svg>
diff --git a/client/public/images/pieces/Musketeer/bc.svg b/client/public/images/pieces/Musketeer/bc.svg
new file mode 120000 (symlink)
index 0000000..2c60908
--- /dev/null
@@ -0,0 +1 @@
+ba.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Musketeer/bd.svg b/client/public/images/pieces/Musketeer/bd.svg
new file mode 100644 (file)
index 0000000..0d15479
--- /dev/null
@@ -0,0 +1,61 @@
+<?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"
+   version="1.0"
+   width="119pt"
+   height="119pt"
+   viewBox="0 0 119 119"
+   preserveAspectRatio="xMidYMid meet"
+   id="svg6"
+   sodipodi:docname="W-_-B-Leopard-Diagram___.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07, custom)">
+  <metadata
+     id="metadata12">
+    <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>
+  <defs
+     id="defs10" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="960"
+     inkscape:window-height="1060"
+     id="namedview8"
+     showgrid="false"
+     inkscape:zoom="4.6191589"
+     inkscape:cx="77.083325"
+     inkscape:cy="79.333333"
+     inkscape:window-x="0"
+     inkscape:window-y="20"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg6" />
+  <g
+     transform="matrix(0.12719628,0,0,-0.13955042,-134.57374,146.30159)"
+     fill="#000000"
+     stroke="none"
+     id="g4">
+    <path
+       d="M 1458,946 C 1308,893 1226,815 1165,670 l -37,-89 22,-30 c 13,-19 30,-31 44,-31 16,0 27,-10 39,-38 17,-38 76,-103 64,-71 -3,9 -9,38 -13,64 l -7,48 71,-6 c 93,-8 108,-16 115,-69 7,-51 3,-57 -21,-35 -10,10 -21,17 -23,17 -3,0 -2,-23 1,-52 12,-90 71,-119 140,-69 19,14 24,26 22,49 -4,37 31,122 50,122 40,-1 132,-31 149,-49 46,-49 83,-12 118,119 24,86 28,223 10,296 -12,47 -56,94 -89,94 -11,0 -24,8 -29,18 -10,16 -10,15 -11,-3 0,-15 -2,-17 -9,-6 -9,14 -70,12 -116,-4 -13,-4 -12,-1 5,9 24,15 21,15 -55,15 -59,1 -98,-6 -147,-23 z m 156,-20 c -10,-8 -21,-12 -24,-10 -5,6 21,24 34,24 6,0 1,-6 -10,-14 z m 141,-38 c -23,-43 -64,-98 -75,-98 -4,0 4,13 19,29 15,16 35,47 46,70 10,23 20,39 22,37 3,-2 -3,-19 -12,-38 z M 1409,779 c 20,-57 18,-59 -59,-58 -76,2 -86,11 -47,46 56,51 91,55 106,12 z"
+       id="path2" />
+  </g>
+</svg>
diff --git a/client/public/images/pieces/Musketeer/be.svg b/client/public/images/pieces/Musketeer/be.svg
new file mode 120000 (symlink)
index 0000000..4595ef8
--- /dev/null
@@ -0,0 +1 @@
+../Shako/be.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Musketeer/bf.svg b/client/public/images/pieces/Musketeer/bf.svg
new file mode 100644 (file)
index 0000000..be83f16
--- /dev/null
@@ -0,0 +1,132 @@
+<?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"
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   viewBox="0 0 512 512"
+   style="enable-background:new 0 0 512 512;"
+   xml:space="preserve"
+   sodipodi:docname="bf.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07, custom)"><metadata
+   id="metadata55"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+   id="defs53" /><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="1060"
+   id="namedview51"
+   showgrid="false"
+   inkscape:zoom="1.7246094"
+   inkscape:cx="256"
+   inkscape:cy="267.61097"
+   inkscape:window-x="0"
+   inkscape:window-y="20"
+   inkscape:window-maximized="0"
+   inkscape:current-layer="Layer_1" />
+<g
+   id="g6"
+   transform="matrix(0.8,0,0,0.9,51.2,25.60005)">
+       <g
+   id="g4">
+               <path
+   d="m 495.304,189.217 h -22.261 v 283.826 c 0,5.882 -1.205,11.448 -3.076,16.696 h 25.337 c 9.217,0 16.696,-7.479 16.696,-16.696 v -267.13 c 0,-9.217 -7.479,-16.696 -16.696,-16.696 z"
+   id="path2" />
+       </g>
+</g>
+<g
+   id="g12"
+   transform="matrix(0.8,0,0,0.9,51.2,25.60005)">
+       <g
+   id="g10">
+               <path
+   d="M 38.957,473.043 V 189.217 H 16.696 C 7.479,189.217 0,196.696 0,205.913 v 267.13 c 0,9.217 7.479,16.696 16.696,16.696 h 25.337 c -1.87,-5.248 -3.076,-10.813 -3.076,-16.696 z"
+   id="path8" />
+       </g>
+</g>
+<g
+   id="g18"
+   transform="matrix(0.8,0,0,0.9,51.2,25.60005)">
+       <g
+   id="g16">
+               <path
+   d="m 422.957,22.261 h -66.783 c -9.217,0 -16.696,7.479 -16.696,16.696 V 89.044 H 306.087 V 38.957 c 0,-9.217 -7.479,-16.696 -16.696,-16.696 h -66.783 c -9.217,0 -16.696,7.479 -16.696,16.696 V 89.044 H 172.521 V 38.957 c 0,-9.217 -7.479,-16.696 -16.696,-16.696 H 89.044 c -9.217,0 -16.696,7.479 -16.696,16.696 v 434.087 c 0,9.217 7.479,16.696 16.696,16.696 h 333.913 c 9.217,0 16.696,-7.479 16.696,-16.696 V 38.957 C 439.652,29.739 432.174,22.261 422.957,22.261 Z M 155.826,205.913 c 0,-18.413 14.978,-33.391 33.391,-33.391 18.413,0 33.391,14.978 33.391,33.391 v 33.391 h -66.783 v -33.391 z m 83.478,250.435 H 172.521 V 372.87 c 0,-40.316 28.724,-74.04 66.783,-81.795 v 165.273 z m 100.174,0 H 272.695 V 291.074 c 38.058,7.756 66.783,41.48 66.783,81.795 z m 16.696,-217.044 h -66.783 v -33.391 c 0,-18.413 14.978,-33.391 33.391,-33.391 18.413,0 33.391,14.978 33.391,33.391 v 33.391 z"
+   id="path14" />
+       </g>
+</g>
+<g
+   id="g20"
+   transform="matrix(0.8,0,0,0.9,51.2,25.60005)">
+</g>
+<g
+   id="g22"
+   transform="matrix(0.8,0,0,0.9,51.2,25.60005)">
+</g>
+<g
+   id="g24"
+   transform="matrix(0.8,0,0,0.9,51.2,25.60005)">
+</g>
+<g
+   id="g26"
+   transform="matrix(0.8,0,0,0.9,51.2,25.60005)">
+</g>
+<g
+   id="g28"
+   transform="matrix(0.8,0,0,0.9,51.2,25.60005)">
+</g>
+<g
+   id="g30"
+   transform="matrix(0.8,0,0,0.9,51.2,25.60005)">
+</g>
+<g
+   id="g32"
+   transform="matrix(0.8,0,0,0.9,51.2,25.60005)">
+</g>
+<g
+   id="g34"
+   transform="matrix(0.8,0,0,0.9,51.2,25.60005)">
+</g>
+<g
+   id="g36"
+   transform="matrix(0.8,0,0,0.9,51.2,25.60005)">
+</g>
+<g
+   id="g38"
+   transform="matrix(0.8,0,0,0.9,51.2,25.60005)">
+</g>
+<g
+   id="g40"
+   transform="matrix(0.8,0,0,0.9,51.2,25.60005)">
+</g>
+<g
+   id="g42"
+   transform="matrix(0.8,0,0,0.9,51.2,25.60005)">
+</g>
+<g
+   id="g44"
+   transform="matrix(0.8,0,0,0.9,51.2,25.60005)">
+</g>
+<g
+   id="g46"
+   transform="matrix(0.8,0,0,0.9,51.2,25.60005)">
+</g>
+<g
+   id="g48"
+   transform="matrix(0.8,0,0,0.9,51.2,25.60005)">
+</g>
+</svg>
diff --git a/client/public/images/pieces/Musketeer/bh.svg b/client/public/images/pieces/Musketeer/bh.svg
new file mode 120000 (symlink)
index 0000000..3a672eb
--- /dev/null
@@ -0,0 +1 @@
+../Schess/bh.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Musketeer/bj.svg b/client/public/images/pieces/Musketeer/bj.svg
new file mode 100644 (file)
index 0000000..ec7b5fc
--- /dev/null
@@ -0,0 +1,113 @@
+<?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"
+   height="100%"
+   width="100%"
+   version="1.1"
+   viewBox="0 0 2048 2048"
+   id="svg18"
+   sodipodi:docname="bj.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07, custom)">
+  <metadata
+     id="metadata24">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs22" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="960"
+     inkscape:window-height="1060"
+     id="namedview20"
+     showgrid="false"
+     inkscape:zoom="0.43115234"
+     inkscape:cx="1024"
+     inkscape:cy="1021.6806"
+     inkscape:window-x="0"
+     inkscape:window-y="20"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg18" />
+  <g
+     fill-rule="nonzero"
+     fill="#fff"
+     id="g8">
+    <path
+       style="color:black;"
+       d="m1060 1261q172 3 282 17t198 33q55-54 122-103t94-84q48-65 48-162 0-89-43-149-77-113-235-113-92 0-192 40-91 36-132 78-85 82-124 216-15 46-16 117t-2 110z"
+       display="block"
+       id="path2" />
+    <path
+       style="color:black;"
+       d="m988 1260q0-40-2-110t-15-118q-41-134-124-216-43-42-132-78-102-40-193-40-158 0-234 113-43 60-43 150 0 98 48 161 25 36 96 89t120 98q87-19 196-33t283-16z"
+       display="block"
+       id="path4" />
+    <path
+       style="color:black;"
+       d="m1024 1009q7-28 12-39 10-39 23-66 6-17 17-39t25-52q8-17 17-41t18-49q8-20 8-43 0-49-35-83t-85-35q-119 0-119 119 0 23 8 43 22 65 34 90 13 29 24 51t19 40q13 33 22 66 2 6 12 38z"
+       display="block"
+       id="path6" />
+  </g>
+  <g
+     fill-rule="nonzero"
+     id="g16">
+    <path
+       style="color:black;"
+       d="m1133 865q0 29 6 82t21 84q37 81 106 150 20 20 86 54 65 32 139 32 56 0 111-19t84-60q25-34 25-110 0-60-49-112-32-33-69-66t-71-79q-58 20-161 31t-228 13zm-73-78q172-3 282-17t198-33q55 54 122 103t94 84q48 65 48 162 0 89-43 149-77 113-235 113-92 0-192-40-91-36-132-78-85-82-124-216-15-46-16-117t-2-110zm458-173q-184 51-490 51-308 0-496-52l15-101q189 49 481 49 291 0 474-48l16 101zm26-299l-30 118q-195 45-490 45-292 0-488-45l-32-119q190 58 521 58 159 0 295-16t224-41zm-1081 207l-33 187q-1 0-3 4-5 7-28 18t-55 40q-44 37-68 60t-45 50q-61 84-68 203-10 115 93 229 104 114 281 107 66-4 155-32 29-12 59-23t61-24q16-8 28-16-5 21-5 42 0 78 55 133t134 56q78 0 133-55t55-133q0-16-4-42 14 9 27 15 46 20 121 47 86 29 155 33 177 8 280-107 101-114 94-229-8-119-69-203-20-27-45-50t-67-60q-33-28-56-39t-27-19q-1-2-2-3t-1-2l-32-188 66-247q-50-45-224-74t-402-29q-232 0-408 30t-221 77l66 244zm525 266q0 40-2 110t-15 118q-41 134-124 216-43 42-132 78-102 40-193 40-158 0-234-113-43-60-43-150 0-98 48-161 25-36 96-89t120-98q87 19 196 33t283 16zm36 251q7 28 12 39 10 39 23 66 6 17 17 39t25 52q8 17 17 41t18 49q8 20 8 43 0 49-35 83t-85 35q-119 0-119-119 0-23 8-43 22-65 34-90 13-29 24-51t19-40q13-33 22-66 2-6 12-38zm35 520h-71v131h-83q-34 0-34 33v1q0 33 34 33h83v85q0 35 36 35 35 0 35-35v-85h86q33 0 33-33v-1q0-33-33-33l-85-1-1-130zm-147-694q-125-2-228-13t-161-31q-30 37-69 74t-70 71q-50 51-50 112 0 75 25 110 27 40 83 59t113 20q72 0 138-32 65-34 86-54 68-69 106-150 13-30 19-83t8-83zm112 345q-2 10-5 17-6 20-10 29-3 7-8 17t-10 23q-3 7-7 18t-8 22q-3 9-3 19 0 53 51 53 53 0 53-52 0-13-4-19-14-38-15-41-15-30-19-39-7-16-9-29-3-6-4-10t-2-8z"
+       transform="translate(0,2048) scale(1,-1)"
+       display="block"
+       fill="#000"
+       id="path10" />
+    <path
+       style="color:black;"
+       d="m1518 1434q-184-51-490-51-308 0-496 52l15 101q189-49 481-49 291 0 474 48l16-101z"
+       display="block"
+       fill="#fff"
+       id="path12" />
+    <path
+       style="color:black;"
+       d="m1544 1733-30-118q-195-45-490-45-292 0-488 45l-32 119q190-58 521-58 159 0 295 16t224 41z"
+       display="block"
+       fill="#fff"
+       id="path14" />
+  </g>
+  <path
+     style="fill:#800000;stroke:#000000;stroke-width:2.31937"
+     d="m 901.07361,1873.6552 c -157.02735,-6.8564 -299.56662,-25.7507 -392.87865,-52.078 -44.87133,-12.6602 -82.22543,-29.1351 -100.30271,-44.2382 l -9.38047,-7.8372 32.917,-121.7611 32.91697,-121.7611 -16.68999,-94.4302 c -12.03315,-68.0821 -17.79777,-95.6542 -20.66024,-98.8172 -2.18363,-2.4128 -10.4352,-7.8038 -18.33679,-11.9799 -23.95194,-12.6588 -40.23591,-24.6897 -81.5385,-60.242 -86.0223,-74.0461 -118.58918,-117.3569 -142.8849,-190.0233 -17.45281,-52.1999 -24.87734,-122.17408 -17.4589,-164.54543 11.37898,-64.99244 48.10618,-128.84277 107.31308,-186.56407 42.15466,-41.09692 96.33064,-69.07883 160.52323,-82.91028 32.82524,-7.07279 99.50329,-8.70341 137.58508,-3.36464 41.95058,5.88114 101.86668,21.86164 147.96526,39.4645 71.45013,27.28342 92.8104,36.14211 106.27824,44.07646 7.243,4.2671 13.46159,7.46889 13.81908,7.11507 0.35748,-0.35382 -0.55598,-8.35263 -2.02991,-17.77513 -7.34562,-46.95894 6.89508,-101.08626 36.3536,-138.17604 48.01908,-60.45854 122.00193,-86.54754 195.80321,-69.04724 44.122,10.46253 90.008,45.29988 115.6558,87.80764 18.5344,30.71834 27.4593,74.49521 23.1461,113.53305 -1.2473,11.28969 -1.8016,20.99301 -1.2317,21.56293 0.5699,0.56992 7.6844,-2.60802 15.81,-7.06209 16.319,-8.94529 87.392,-37.39874 130.7421,-52.34145 116.8484,-40.27742 211.8465,-45.03644 301.9153,-15.12473 27.915,9.27051 46.2614,18.18176 71.5026,34.73028 49.4271,32.40515 95.1871,85.81394 125.2178,146.14776 26.0323,52.30089 34.5079,95.0211 29.3412,147.89072 -8.8987,91.05919 -41.7188,166.43669 -97.3537,223.59149 -22.0121,22.6134 -82.1131,76.3146 -101.6829,90.8553 -8.0042,5.9472 -24.7548,16.6828 -37.2235,23.8568 -16.9123,9.7307 -23.6892,15.0326 -26.6817,20.8743 -2.3778,4.6418 -10.2722,45.3515 -19.3859,99.9695 l -15.3746,92.1389 32.8699,123.2212 c 18.0785,67.7717 32.5425,123.4564 32.1425,123.7438 -0.4002,0.2873 -4.3805,3.2208 -8.8453,6.5186 -61.2284,45.2261 -246.0618,81.1448 -474.3103,92.1728 -42.7381,2.0649 -224.14201,2.617 -265.56739,0.8082 z M 540.41223,1725.4971 c 92.22838,-24.2357 196.3134,-38.0326 341.66128,-45.2886 62.42348,-3.1162 273.08509,-1.6265 323.99669,2.2912 123.1295,9.475 243.7893,26.9646 313.901,45.4998 11.9134,3.1495 22.4847,5.7264 23.4916,5.7264 1.0069,0 -4.9206,-26.9922 -13.1722,-59.9826 l -15.003,-59.9827 -29.363,-6.1081 c -133.6397,-27.7999 -303.8595,-40.5701 -504.83287,-37.8735 -149.73143,2.009 -250.90384,9.6802 -358.34201,27.1705 -26.51028,4.3158 -86.32054,15.9801 -87.45169,17.0551 -0.26151,0.2485 -7.342,25.9828 -15.73442,57.1874 -8.39241,31.2045 -15.86583,58.7199 -16.60758,61.1453 -1.08915,3.5612 -0.51618,4.0897 2.9779,2.7464 2.3796,-0.9148 17.89484,-5.2288 34.4783,-9.5866 z m 28.60564,-193.4198 c 157.33149,-39.8385 435.44223,-54.6521 675.32193,-35.9711 92.725,7.2211 198.6518,23.6548 254.0811,39.4186 4.518,1.2849 5.1132,-1.0009 12.2175,-46.924 4.1074,-26.551 7.4497,-49.9868 7.4273,-52.0794 -0.03,-2.7795 -4.8846,-5.0892 -18.0159,-8.5711 -143.8093,-38.1325 -387.1531,-54.2742 -632.60699,-41.9626 -95.91443,4.8109 -187.47109,15.6257 -264.4077,31.2321 -60.71277,12.3155 -71.99196,15.625 -71.42668,20.9575 0.98244,9.2677 12.45861,88.1885 13.55022,93.184 1.38383,6.3326 1.64654,6.3405 23.85922,0.716 z m 980.46443,-227.7501 c 13.8751,-14.8162 65.114,-58.4032 96.9273,-82.4525 99.0872,-74.9051 122.4453,-100.9674 142.8498,-159.3879 11.0658,-31.6825 14.9196,-57.4742 14.9345,-99.94999 0.014,-40.2493 -3.4072,-63.83844 -13.6104,-93.83697 -23.4512,-68.94944 -82.7972,-128.28046 -152.2137,-152.17525 -58.7961,-20.23899 -135.1775,-22.6612 -210.1471,-6.6642 -66.7306,14.23896 -146.9951,47.35449 -194.782,80.3631 -39.1213,27.02288 -89.1724,87.88362 -117.2527,142.57596 -21.3088,41.50357 -42.0948,101.88395 -49.3607,143.38625 -3.3103,18.9079 -7.7206,111.2058 -7.9518,166.4145 l -0.085,20.2945 h 28.4122 c 120.9299,0.014 280.4224,15.8979 406.8093,40.512 21.4989,4.1869 41.2419,7.7428 43.8734,7.9019 2.6414,0.1596 7.8362,-2.9692 11.5969,-6.9849 z m -1007.55054,-0.8121 c 55.66337,-10.9023 123.7759,-21.546 185.18942,-28.9388 37.76586,-4.5461 110.67297,-9.1694 185.54543,-11.7659 41.45656,-1.4377 75.84352,-3.082 76.4155,-3.6539 2.27562,-2.2757 -4.74674,-163.3621 -8.02693,-184.1305 -15.65027,-99.08873 -80.85745,-219.04867 -148.7635,-273.67628 -59.72346,-48.04506 -166.93746,-89.9815 -258.24864,-101.01317 -66.96601,-8.09043 -131.49021,-0.70736 -180.88291,20.6972 -67.42874,29.22057 -121.94601,93.18724 -140.59489,164.96398 -4.9842,19.18346 -6.2384,30.26137 -7.25389,64.07084 -1.77685,59.15813 5.19344,97.20323 25.15725,137.31293 23.54008,47.2948 45.46597,69.1831 150.67614,150.4179 20.94932,16.1753 48.88724,38.8761 62.08427,50.4462 13.19701,11.57 25.19972,21.0324 26.67271,21.0274 1.47296,0 15.88649,-2.596 32.03004,-5.7579 z M 1035.5484,974.68764 c 12.1598,-41.36988 26.3082,-76.59576 55.185,-137.39659 11.5113,-24.23737 27.9861,-63.37667 36.6107,-86.97621 13.6575,-37.37149 15.8167,-45.46677 16.7333,-62.73577 1.824,-34.36447 -7.4359,-61.96329 -28.7006,-85.5416 -24.4884,-27.15264 -54.0366,-39.9982 -92.5365,-40.22862 -79.29291,-0.47457 -118.23724,38.36626 -118.07913,117.76533 0.0483,24.28836 0.5596,26.96035 10.65039,55.66478 17.62825,50.14548 25.67125,69.53138 52.44432,126.40543 20.33685,43.20162 28.69881,64.24187 40.32112,101.4556 8.0648,25.82278 15.1852,46.94631 15.823,46.94131 0.6378,0 5.8346,-15.9142 11.5484,-35.35366 z"
+     id="path26" />
+  <path
+     style="fill:#800000;stroke:#000000;stroke-width:2.31937"
+     d="m 514.4591,1214.5297 c -4.79953,-5.9284 -38.54266,-41.0466 -74.98472,-78.0405 -36.44207,-36.9938 -70.85132,-74.0259 -76.46501,-82.2934 -21.97522,-32.364 -29.41066,-61.02072 -27.07989,-104.36802 1.59903,-29.73872 7.73344,-57.30518 17.04292,-76.58656 8.10217,-16.78086 36.80597,-45.43769 56.39566,-56.30339 33.25869,-18.4474 85.95718,-31.54898 134.787,-33.50992 64.45627,-2.58849 112.55841,10.26078 178.78449,47.75775 35.96132,20.36116 51.11733,32.05175 73.14976,56.42401 48.55518,53.71174 87.57141,118.33633 97.91931,162.18863 6.24229,26.4536 18.6891,128.0788 16.00601,130.6852 -0.45279,0.4399 -29.52539,1.9873 -64.6058,3.4388 -139.75032,5.7824 -248.34873,18.8314 -307.81155,36.9862 l -14.41177,4.4 z"
+     id="path28" />
+  <path
+     style="fill:#800000;stroke:#000000;stroke-width:2.31937"
+     d="m 1022.344,825.69422 c -1.3788,-2.5513 -3.695,-9.0636 -5.1471,-14.47179 -1.452,-5.40818 -7.6933,-21.0639 -13.8695,-34.79048 -20.94237,-46.5449 -28.03955,-68.29041 -27.98314,-85.7395 0.1133,-35.05044 18.76017,-51.63448 54.83604,-48.76977 29.158,2.31538 44.8509,18.66389 44.8405,46.71392 -0.01,15.63595 -12.6264,52.48801 -29.1085,84.99613 -4.8162,9.49905 -11.5252,26.14258 -14.9091,36.98562 -5.3069,17.00555 -6.4968,19.07718 -8.6592,15.07587 z"
+     id="path30" />
+  <path
+     style="fill:#800000;stroke:#000000;stroke-width:2.31937"
+     d="m 1513.6714,1223.2842 c -10.6445,-4.2604 -50.4369,-13.5222 -78.7583,-18.3312 -60.2546,-10.2314 -151.841,-18.0364 -261.0727,-22.2486 l -39.188,-1.5112 1.3702,-29.3101 c 1.8567,-39.7184 7.3622,-79.0709 14.5279,-103.8438 12.2792,-42.4511 46.8569,-101.03349 87.4295,-148.12537 26.9883,-31.32483 33.0523,-37.01348 55.0664,-51.65786 42.2817,-28.12689 93.3709,-50.82336 134.7201,-59.8496 23.8626,-5.20903 78.2662,-6.95943 104.8107,-3.37222 99.1522,13.39942 157.9063,56.51987 172.3316,126.47651 5.5238,26.78844 5.5975,76.96393 0.1396,94.95544 -11.853,39.0717 -31.227,64.3644 -94.4646,123.3236 -39.5027,36.8302 -62.6873,61.3417 -84.7748,89.6272 -2.7349,3.5023 -5.3442,6.3017 -5.7985,6.2208 -0.4542,-0.081 -3.3068,-1.14 -6.339,-2.3536 z"
+     id="path32" />
+  <path
+     style="fill:#800000;stroke:#000000;stroke-width:2.31937"
+     d="m 989.20951,422.25012 v -65.97639 l -51.2206,-0.70538 -51.2206,-0.70538 -6.76355,-7.57453 c -5.99406,-6.71279 -6.76354,-9.28136 -6.76354,-22.57723 0,-13.1269 0.8057,-15.90443 6.44403,-22.21481 8.60081,-9.62598 18.05881,-11.19158 68.35552,-11.31498 l 41.16874,-0.10101 V 244.6186 c 0,-52.16857 1.52633,-59.30534 14.35649,-67.12766 9.3521,-5.70185 29.1632,-6.30021 39.0648,-1.17988 13.3101,6.8829 14.8706,13.48151 15.7599,66.64251 l 0.8051,48.12684 43.2855,0.18666 c 49.0159,0.21136 61.3409,2.39672 68.5811,12.16009 5.8891,7.94137 6.6964,29.89969 1.459,39.68574 -6.0847,11.36947 -12.0494,12.69357 -64.8199,14.38932 l -48.911,1.57171 v 64.57628 64.57629 H 1024 989.20951 Z"
+     id="path34" />
+</svg>
diff --git a/client/public/images/pieces/Musketeer/bl.svg b/client/public/images/pieces/Musketeer/bl.svg
new file mode 120000 (symlink)
index 0000000..a5a5fe5
--- /dev/null
@@ -0,0 +1 @@
+bj.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Musketeer/bm.svg b/client/public/images/pieces/Musketeer/bm.svg
new file mode 100644 (file)
index 0000000..0416488
--- /dev/null
@@ -0,0 +1,97 @@
+<?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"
+   height="100%"
+   width="100%"
+   version="1.1"
+   viewBox="0 0 2048 2048"
+   id="svg18"
+   sodipodi:docname="bm.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07, custom)">
+  <metadata
+     id="metadata24">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs22" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="960"
+     inkscape:window-height="1060"
+     id="namedview20"
+     showgrid="false"
+     inkscape:zoom="0.43115234"
+     inkscape:cx="1024"
+     inkscape:cy="1021.6806"
+     inkscape:window-x="0"
+     inkscape:window-y="20"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg18" />
+  <path
+     style="color:black;"
+     d="m490 683q4 9 13 27 17 42 17 50-2 28-29 28-20 0-47-57-4-8-12-14-27-28 8-47 32-19 50 13zm590 371q70 92 69 205-4 33-38 33-46 0-36-34 3-55-11-91-23-57-51-85-15-30 18-44 32-15 49 16zm-261 488q-5 36 2 78-60-12-113-56-32-17-15-47 17-31 47-10 21 11 38 20t41 15zm937-1268q-1 0 2 54t3 118q1 125 0 258t-36 267q-34 128-75 218t-89 157q-72 108-196 183t-259 98q4-23 3-47t0-46q97-33 183-82t126-106q48-66 89-156t75-219q34-133 35-266t1-259q0-63-3-117t0-55h141zm-677 1423q157-10 291-81t228-182q66-78 124-188t94-233q40-143 50-300t11-292v-218t-155 0-404 0h-671q-9 0-9 49t7 79q4 24 19 68t50 107q16 32 76 93t138 143q45 46 70 116t22 127q-37-30-81-49-212-76-307-220-7-9-45-81-20-38-34-52-19-19-55-21-56-3-87 54-42-12-75-10-56 21-81 45-51 51-66 102t-16 110q0 84 104 222 122 159 130 242 0 36 7 81 6 31 25 60 13 20 17 27t17 23q9 12 15 18t15 18q11 13 28 30-53 146-43 301 199-71 334-223 33 113 130 183 80-56 127-148zm-675-836q29 20 6 48-24 23-53 4-61-40-65-105 1-33 39-31 36 3 35 37 8 32 38 47zm252 498q22 11 22 11 30 12 19 44-12 30-46 20-118-43-163-158-7-33 24-45 31-10 42 22 8 17 12 22 11-9 29-12 61-10 71 54 3 22-10 42z"
+     fill-rule="nonzero"
+     transform="translate(0,2048) scale(1,-1)"
+     display="block"
+     fill="#000"
+     id="path2" />
+  <g
+     fill-rule="nonzero"
+     fill="#fff"
+     id="g16">
+    <path
+       style="color:black;"
+       d="m490 1365q4-9 13-27 17-42 17-50-2-28-29-28-20 0-47 57-4 8-12 14-27 28 8 47 32 19 50-13z"
+       display="block"
+       id="path4" />
+    <path
+       style="color:black;"
+       d="m1080 994q70-92 69-205-4-33-38-33-46 0-36 34 3 55-11 91-23 57-51 85-15 30 18 44 32 15 49-16z"
+       display="block"
+       id="path6" />
+    <path
+       style="color:black;"
+       d="m819 506q-5-36 2-78-60 12-113 56-32 17-15 47 17 31 47 10 21-11 38-20t41-15z"
+       display="block"
+       id="path8" />
+    <path
+       style="color:black;"
+       d="m1756 1774q-1 0 2-54t3-118q1-125 0-258t-36-267q-34-128-75-218t-89-157q-72-108-196-183t-259-98q4 23 3 47t0 46q97 33 183 82t126 106q48 66 89 156t75 219q34 133 35 266t1 259q0 63-3 117t0 55h141z"
+       display="block"
+       id="path10" />
+    <path
+       style="color:black;"
+       d="m404 1187q29-20 6-48-24-23-53-4-61 40-65 105 1 33 39 31 36-3 35-37 8-32 38-47z"
+       display="block"
+       id="path12" />
+    <path
+       style="color:black;"
+       d="m656 689q22-11 22-11 30-12 19-44-12-30-46-20-118 43-163 158-7 33 24 45 31 10 42-22 8-17 12-22 11 9 29 12 61 10 71-54 3-22-10-42z"
+       display="block"
+       id="path14" />
+  </g>
+  <path
+     style="fill:#800000;stroke:#000000;stroke-width:2.31937"
+     d="m 646.52676,1843.1458 c -8.5627,-5.4372 -9.59194,-76.8371 -1.71104,-118.6973 14.85072,-78.881 61.60013,-180.3559 106.85307,-231.9366 7.27455,-8.2917 49.97649,-53.1715 94.89323,-99.7327 112.0609,-116.1638 113.53936,-117.9563 136.78179,-165.8347 22.21009,-45.7519 34.85379,-93.2221 37.62729,-141.2704 1.1896,-20.6084 0.8939,-24.9519 -1.5941,-23.4143 -1.68,1.0383 -10.5863,7.2916 -19.7919,13.8963 -22.0285,15.8048 -50.8805,30.512 -88.87373,45.3031 -112.58585,43.8307 -207.27402,111.2231 -264.11315,187.9771 -17.09256,23.0813 -25.0751,36.42 -57.19215,95.5669 -22.00203,40.5192 -32.26377,55.3378 -45.00156,64.9855 -20.03744,15.1766 -60.5027,19.0581 -84.41664,8.0975 -15.60891,-7.1542 -31.40414,-21.113 -41.24667,-36.4513 l -7.11813,-11.0926 -17.94291,4.3098 c -9.86859,2.3704 -26.29262,4.9396 -36.49783,5.7093 -17.61162,1.3283 -19.54231,0.9794 -37.97679,-6.8621 -30.93908,-13.1606 -51.03797,-26.2339 -69.87372,-45.4494 -42.54958,-43.4075 -63.70709,-89.2041 -71.81432,-155.4461 -10.9559,-89.5178 11.70092,-148.1219 107.62585,-278.38477 53.11545,-72.12903 73.59509,-104.18311 95.42341,-149.35376 20.19933,-41.79965 25.93679,-63.09041 28.72773,-106.60373 4.17516,-65.09446 9.49544,-83.38373 37.13734,-127.6649 14.50854,-23.24208 36.92655,-51.65821 74.82012,-94.83884 l 10.9915,-12.52506 -7.0169,-20.65407 C 509.2041,395.61689 497.57758,341.48422 491.64879,286.44168 c -3.86009,-35.8371 -4.66807,-120.60703 -1.14954,-120.60703 4.47169,0 50.45363,19.17056 80.16092,33.4203 83.04204,39.83286 145.11059,83.48569 212.69941,149.59156 21.39782,20.92832 39.23866,37.62775 39.64629,37.10985 0.40765,-0.5179 3.652,-9.29135 7.20966,-19.49656 9.22205,-26.4537 26.344,-59.45595 42.71766,-82.33749 15.63343,-21.84708 46.58047,-54.28263 66.32602,-69.51622 l 12.836,-9.9029 13.33858,9.94597 c 19.66669,14.66454 58.19001,53.97364 74.25621,75.77087 7.7245,10.47983 19.4718,28.45816 26.1052,39.95185 13.6281,23.61341 8.9832,21.3292 52.1391,25.64025 128.2088,12.80739 263.4068,69.69004 374.5776,157.59814 31.7525,25.1082 97.964,91.93687 122.7607,123.90488 92.3068,119.0023 169.3396,278.62676 207.7796,430.55285 39.0479,154.3288 52.0552,312.1921 52.124,632.607 l 0.031,144.3805 -612.8924,-0.035 c -337.09079,-0.019 -614.19542,-0.863 -615.78804,-1.8742 z m 1111.35584,-85.6464 c 2.9418,-39.7741 4.1607,-442.0892 1.4529,-479.5288 -6.0954,-84.2788 -20.2578,-159.3935 -47.6658,-252.8109 -36.4937,-124.38556 -78.0396,-216.41494 -139.2586,-308.47567 -31.8219,-47.85348 -54.1376,-74.94214 -91.0505,-110.52481 -89.7043,-86.4715 -222.0929,-155.26839 -348.508,-181.1051 -13.7994,-2.82033 -25.439,-4.63326 -25.8657,-4.02872 -0.4268,0.60455 -0.3941,21.97347 0.072,47.48649 l 0.8483,46.38732 30.5264,11.27239 c 57.6784,21.29874 119.8255,51.00267 167.369,79.99588 81.8823,49.93393 127.6673,105.3275 187.0469,226.30124 57.0584,116.24467 100.631,266.51098 116.7398,402.59358 5.5559,46.9347 9.477,323.5775 6.0654,427.923 -1.4182,43.3721 -2.5689,86.4253 -2.5572,95.6738 l 0.021,16.8154 h 71.7171 71.7171 z M 480.18589,1378.4841 c 9.76399,-8.5729 19.03475,-26.0498 31.78758,-59.9246 9.89216,-26.2763 10.67564,-38.364 3.2238,-49.737 -4.49393,-6.8586 -19.33535,-11.8195 -28.50018,-9.5265 -9.76748,2.4438 -24.63995,19.8465 -36.41038,42.6049 -5.72825,11.0757 -13.75386,23.2687 -17.83469,27.0957 -7.80991,7.324 -13.80649,18.7992 -13.80649,26.4203 0,12.0907 25.80559,30.1017 43.40739,30.2962 7.75693,0.086 11.50287,-1.4077 18.13297,-7.229 z M 348.3039,1267.6768 c 11.94498,-5.4234 15.95324,-11.4301 19.06044,-28.5638 3.98886,-21.9953 12.36213,-34.2897 32.81146,-48.1765 16.26489,-11.0453 21.80555,-20.1112 20.09324,-32.8776 -3.50872,-26.1593 -33.19401,-39.5572 -59.35362,-26.7882 -15.57755,7.6037 -48.87674,41.6499 -56.6134,57.8835 -13.70889,28.7648 -16.94304,60.8151 -7.23536,71.7021 10.35867,11.6169 33.80035,14.7374 51.23724,6.8205 z m 719.0442,-256.6776 c 2.7931,-1.737 12.0307,-13.12975 20.5279,-25.31726 39.6496,-56.86925 61.3698,-121.72451 61.3698,-183.24708 0,-20.67636 -0.6526,-24.57844 -5.2648,-31.48259 -9.5869,-14.35063 -30.7252,-19.82779 -52.8265,-13.6879 -17.2897,4.80318 -17.2638,4.73562 -17.5022,45.62919 -0.1417,24.29257 -1.4621,42.35559 -3.9025,53.38067 -6.6164,29.89189 -28.1373,73.04339 -49.5206,99.29353 -8.8161,10.82272 -11.0889,15.49974 -11.9655,24.62306 -1.3415,13.96128 2.7373,20.92758 16.3501,27.92428 17.4699,8.9793 31.4189,9.9207 42.7343,2.8841 z M 542.4963,815.02779 c 3.40378,-2.67743 9.89188,-12.67174 14.41799,-22.2096 6.61353,-13.93672 8.98909,-17.00986 12.09918,-15.65215 37.27613,16.27309 70.1407,12.32634 85.05764,-10.21467 12.52348,-18.92426 16.49927,-48.9123 8.97717,-67.71187 -2.07316,-5.18135 -3.37781,-9.77548 -2.89921,-10.2092 0.4786,-0.4337 7.13247,-3.93879 14.78638,-7.78908 20.98131,-10.55457 25.56704,-16.53506 25.26364,-32.9474 -0.64283,-34.77309 -25.05024,-45.74327 -65.08212,-29.25186 -60.87853,25.0793 -106.83164,67.93039 -136.68308,127.45638 -12.08471,24.0978 -12.89948,26.75484 -12.01719,39.18919 0.76822,10.82692 2.22882,14.70172 7.75638,20.5769 8.84884,9.40533 18.18686,13.42827 31.43033,13.5406 7.46255,0.0633 12.57838,-1.38346 16.89289,-4.77724 z M 758.57486,533.02654 c 19.05654,-9.80257 40.38176,-19.59809 47.38938,-21.76783 l 12.74113,-3.94497 0.18393,-30.99776 c 0.10112,-17.04876 1.00704,-34.91168 2.01302,-39.69537 1.64606,-7.82739 1.35108,-8.69762 -2.94807,-8.69762 -16.80894,0 -66.56599,22.1544 -92.68541,41.26831 -8.20534,6.00459 -18.49126,13.30627 -22.85761,16.22596 -9.42151,6.3 -17.02683,17.92793 -17.00735,26.0029 0.007,3.18913 2.55613,11.25862 5.66317,17.9322 6.07962,13.05831 16.62128,21.47331 26.91886,21.48834 3.26739,0.005 21.53239,-8.0116 40.58891,-17.81416 z"
+     id="path26" />
+</svg>
diff --git a/client/public/images/pieces/Musketeer/bo.svg b/client/public/images/pieces/Musketeer/bo.svg
new file mode 120000 (symlink)
index 0000000..0c757e2
--- /dev/null
@@ -0,0 +1 @@
+bm.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Musketeer/bs.svg b/client/public/images/pieces/Musketeer/bs.svg
new file mode 100644 (file)
index 0000000..bba410c
--- /dev/null
@@ -0,0 +1,102 @@
+<?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"
+   height="100%"
+   width="100%"
+   version="1.1"
+   viewBox="0 0 2048 2048"
+   id="svg12"
+   sodipodi:docname="bs.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07, custom)">
+  <metadata
+     id="metadata18">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs16" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="960"
+     inkscape:window-height="1060"
+     id="namedview14"
+     showgrid="false"
+     inkscape:zoom="0.43115234"
+     inkscape:cx="1024"
+     inkscape:cy="1021.6806"
+     inkscape:window-x="0"
+     inkscape:window-y="20"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg12" />
+  <path
+     style="color:black;"
+     d="m1588 793q-83 30-233 49t-333 20q-178 0-326-18t-233-49l50-91q84 25 218 36t293 11q159 0 294-11t219-37l51 90zm226 668q-57 0-97 39t-40 97q0 56 40 96t97 41q56 0 96-40t40-97q0-57-40-96t-96-40zm-1578 0q-57 0-96 39t-40 97q0 56 39 96t97 41q57 0 97-40t40-97q0-57-40-96t-97-40zm1208 110q-57 0-96 39t-40 97q0 56 39 96t97 40q57 0 97-40t40-96q0-57-40-96t-97-40zm-840 0q-57 0-97 39t-40 97q0 56 40 96t97 40q56 0 96-40t40-96q0-57-40-96t-96-40zm1036-1288q-49-43-220-72t-394-29q-227 0-399 30t-217 75l63 240-28 157-88 153-85 622 49 19 274-462 6 550 68 12 209-553 112 595h69l112-593 207 551 69-12 6-550 275 463 47-22-83-619-89-153-28-159 65-243zm-96 32l-30 118q-195 45-490 45-292 0-488-45l-32-119q190 58 521 58 159 0 295-16t224-41zm-26 299q-184 51-490 51-308 0-496-52l15-101q189 49 481 49 291 0 474-48l16 101zm-494 1007q-57 0-96 40t-40 97q0 56 39 96t97 40q56 0 96-40t41-96q0-57-40-97t-97-40z"
+     fill-rule="nonzero"
+     transform="translate(0,2048) scale(1,-1)"
+     display="block"
+     fill="#000"
+     id="path2" />
+  <g
+     fill-rule="nonzero"
+     fill="#fff"
+     id="g10">
+    <path
+       style="color:black;"
+       d="m1588 1255q-83-30-233-49t-333-20q-178 0-326 18t-233 49l50 91q84-25 218-36t293-11 294 11 219 37l51-90z"
+       display="block"
+       id="path4" />
+    <path
+       style="color:black;"
+       d="m1544 1733-30-118q-195-45-490-45-292 0-488 45l-32 119q190-58 521-58 159 0 295 16t224 41z"
+       display="block"
+       id="path6" />
+    <path
+       style="color:black;"
+       d="m1518 1434q-184-51-490-51-308 0-496 52l15 101q189-49 481-49 291 0 474 48l16-101z"
+       display="block"
+       id="path8" />
+  </g>
+  <path
+     style="fill:#800000;stroke:#000000;stroke-width:2.31937"
+     d="m 972.97395,1864.3033 c -222.07649,-2.8778 -440.23546,-36.2848 -525.90799,-80.5329 -11.19575,-5.7824 -23.79882,-13.4065 -28.00684,-16.9426 l -7.65095,-6.4292 31.45281,-119.613 31.45281,-119.6131 -14.02118,-78.6927 -14.02118,-78.6927 -44.08789,-76.968 -44.08789,-76.968 -41.43251,-303.40799 C 293.87526,739.5687 274.8829,600.05109 274.4579,596.40396 c -0.74742,-6.41391 -0.0129,-6.92632 22.42092,-15.64176 12.75651,-4.95584 23.26358,-9.0169 23.34903,-9.02458 0.0855,-0.008 61.66462,103.80977 136.84258,230.70545 75.17798,126.89568 137.26835,230.74533 137.97864,230.77693 0.71028,0.032 2.58187,-123.3199 4.15906,-274.11444 1.57719,-150.79454 3.34682,-274.65107 3.93249,-275.23673 1.05283,-1.05285 57.85947,-11.78365 62.70887,-11.84574 1.38098,-0.0176 49.39185,124.15656 106.69083,275.94276 57.29896,151.78619 104.71777,275.98825 105.37507,276.00455 0.65734,0.016 26.14401,-132.78308 56.63709,-295.1097 30.49305,-162.32661 55.89884,-296.44394 56.4573,-298.0385 0.74781,-2.13521 9.67662,-2.89921 33.88242,-2.89921 h 32.8671 l 55.3779,293.97961 c 30.4579,161.68879 56.1033,295.3948 56.9899,297.1245 2.0142,3.9295 -9.3374,33.3098 107.8542,-279.14941 54.5431,-145.42424 99.903,-265.22577 100.7997,-266.22564 1.6408,-1.82947 60.2907,7.01023 64.7347,9.7568 1.5819,0.97768 3.3513,93.60134 5.2661,275.6705 1.586,150.80897 3.4634,274.17675 4.1721,274.15075 0.7087,-0.026 62.1132,-102.57107 136.4547,-227.87773 74.3414,-125.30666 136.0993,-229.32449 137.2398,-231.15073 1.7124,-2.74206 5.8424,-1.57994 23.7103,6.67159 11.9002,5.49562 21.9991,10.30934 22.4419,10.69715 0.4429,0.3878 -17.7452,139.33076 -40.418,308.76215 l -41.2231,308.05707 -44.5426,76.6404 -44.5425,76.6404 -14.201,80.2162 -14.2009,80.2161 32.4163,121.1469 32.4164,121.1468 -5.1552,4.2123 c -9.9229,8.1079 -40.1524,22.7849 -63.7918,30.9723 -127.8329,44.274 -346.2226,67.9667 -596.58425,64.7223 z M 540.41223,1725.4971 c 92.22838,-24.2357 196.3134,-38.0326 341.66128,-45.2886 62.42348,-3.1162 273.08509,-1.6265 323.99669,2.2912 123.1295,9.475 243.7893,26.9646 313.901,45.4998 11.9134,3.1495 22.4847,5.7264 23.4916,5.7264 1.0069,0 -4.9206,-26.9922 -13.1722,-59.9826 l -15.003,-59.9827 -29.363,-6.1081 c -133.6397,-27.7999 -303.8595,-40.5701 -504.83287,-37.8735 -149.73143,2.009 -250.90384,9.6802 -358.34201,27.1705 -26.51028,4.3158 -86.32054,15.9801 -87.45169,17.0551 -0.26151,0.2485 -7.342,25.9828 -15.73442,57.1874 -8.39241,31.2045 -15.86583,58.7199 -16.60758,61.1453 -1.08915,3.5612 -0.51618,4.0897 2.9779,2.7464 2.3796,-0.9148 17.89484,-5.2288 34.4783,-9.5866 z m 28.60564,-193.4198 c 157.33149,-39.8385 435.44223,-54.6521 675.32193,-35.9711 92.725,7.2211 198.6518,23.6548 254.0811,39.4186 4.518,1.2849 5.1132,-1.0009 12.2175,-46.924 4.1074,-26.551 7.4497,-49.9868 7.4273,-52.0794 -0.03,-2.7795 -4.8846,-5.0892 -18.0159,-8.5711 -143.8093,-38.1325 -387.1531,-54.2742 -632.60699,-41.9626 -95.91443,4.8109 -187.47109,15.6257 -264.4077,31.2321 -60.71277,12.3155 -71.99196,15.625 -71.42668,20.9575 0.98244,9.2677 12.45861,88.1885 13.55022,93.184 1.38383,6.3326 1.64654,6.3405 23.85922,0.716 z m 994.88383,-231.4929 25.9246,-45.8075 -7.3336,-3.0793 c -4.0334,-1.6935 -20.4497,-6.677 -36.4805,-11.0742 -211.5733,-58.0346 -599.01329,-72.6239 -883.83326,-33.2812 -69.33635,9.5775 -133.15164,22.8993 -176.85165,36.9187 -12.4376,3.9901 -22.61381,8.1723 -22.61381,9.2938 0,2.4395 45.76449,86.1169 48.75687,89.1488 1.24791,1.2644 13.97202,-0.8076 31.7478,-5.1699 72.05727,-17.6834 159.80841,-28.1769 297.55195,-35.5821 70.04566,-3.7656 297.6438,-3.7718 366.4598,-0.01 109.3685,5.9787 183.2291,13.2363 241.5166,23.7316 29.8347,5.3721 69.8771,14.5925 78.5559,18.0887 3.1891,1.2847 6.8956,2.402 8.2366,2.4829 1.341,0.081 14.1043,-20.4664 28.3627,-45.6605 z"
+     id="path20" />
+  <path
+     style="fill:#800000;stroke:#000000;stroke-width:2.31937"
+     d="M 212.22197,584.03862 C 159.95644,575.29941 115.59454,531.2298 104.10069,476.62967 89.791778,408.65699 132.62046,339.9277 201.72681,319.96423 c 18.32036,-5.29239 51.37664,-5.29239 69.69701,0 42.93201,12.40222 80.08667,47.28082 93.32521,87.6082 24.50651,74.65192 -19.21659,153.86687 -95.72851,173.43534 -16.76357,4.28739 -41.4162,5.60289 -56.79855,3.03085 z"
+     id="path22" />
+  <path
+     style="fill:#800000;stroke:#000000;stroke-width:2.31937"
+     d="m 584.20481,474.41394 c -41.33884,-6.41437 -78.07291,-31.09391 -98.54308,-66.20556 -11.41732,-19.58366 -16.36937,-38.95516 -16.60157,-64.94224 -0.35598,-39.83857 11.24632,-67.99056 39.77632,-96.51382 24.0432,-24.03751 46.23083,-35.10604 78.66924,-39.24497 79.29708,-10.11777 151.42286,54.02749 151.17202,134.44524 -0.24726,79.2663 -76.40779,144.57435 -154.47293,132.46135 z"
+     id="path24" />
+  <path
+     style="fill:#800000;stroke:#000000;stroke-width:2.31937"
+     d="m 995.00793,422.88932 c -35.85147,-6.78735 -74.71687,-38.30236 -91.45505,-74.15868 -25.55597,-54.74567 -16.2808,-110.76791 25.33626,-153.03166 18.5394,-18.82748 34.87462,-28.69445 59.28195,-35.80808 18.35341,-5.3492 53.20101,-5.36003 71.77911,-0.0223 45.9798,13.21058 83.2912,52.30562 96.2168,100.81645 1.4939,5.60644 2.6966,19.7091 2.6727,31.33924 -0.053,25.81149 -7.532,51.85091 -20.3803,70.95646 -32.2376,47.93774 -86.6509,70.66198 -143.45147,59.90857 z"
+     id="path26" />
+  <path
+     style="fill:#800000;stroke:#000000;stroke-width:2.31937"
+     d="m 1423.8636,474.41983 c -42.836,-6.65252 -81.8371,-35.18156 -99.7976,-73.00125 -26.2041,-55.17834 -17.1123,-112.24608 24.6452,-154.69355 27.9282,-28.38963 55.9991,-39.96858 96.2537,-39.70358 39.4797,0.2599 70.115,13.72075 97.6526,42.9076 24.4541,25.91873 36.3665,55.23993 36.507,89.85804 0.1605,39.56274 -10.7817,66.09711 -38.8378,94.18027 -26.4784,26.50399 -52.0808,38.26786 -89.5234,41.1345 -8.2917,0.63483 -20.3966,0.32791 -26.8997,-0.68203 z"
+     id="path28" />
+  <path
+     style="fill:#800000;stroke:#000000;stroke-width:2.31937"
+     d="m 1778.236,580.94319 c -81.9756,-21.47526 -123.3042,-112.78754 -85.8307,-189.6357 11.0434,-22.64721 39.3273,-50.5201 62.2876,-61.38272 21.9848,-10.40105 37.8411,-14.02897 61.2766,-14.02007 33.0284,0.0126 62.8423,12.07571 87.9937,35.60367 30.3501,28.39099 43.9677,58.83878 44.0305,98.44859 0.061,38.52064 -11.5609,67.311 -37.996,94.12435 -34.7796,35.27722 -84.6034,49.21603 -131.7617,36.86188 z"
+     id="path30" />
+</svg>
diff --git a/client/public/images/pieces/Musketeer/bt.svg b/client/public/images/pieces/Musketeer/bt.svg
new file mode 120000 (symlink)
index 0000000..4ab8f86
--- /dev/null
@@ -0,0 +1 @@
+bs.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Musketeer/bu.svg b/client/public/images/pieces/Musketeer/bu.svg
new file mode 100644 (file)
index 0000000..c1205e4
--- /dev/null
@@ -0,0 +1,92 @@
+<?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"
+   height="100%"
+   width="100%"
+   version="1.1"
+   viewBox="0 0 2048 2048"
+   id="svg16"
+   sodipodi:docname="bu.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07, custom)">
+  <metadata
+     id="metadata22">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs20" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="960"
+     inkscape:window-height="1060"
+     id="namedview18"
+     showgrid="false"
+     inkscape:zoom="0.43115234"
+     inkscape:cx="1024"
+     inkscape:cy="1021.6806"
+     inkscape:window-x="0"
+     inkscape:window-y="20"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg16" />
+  <path
+     style="color:black;"
+     d="m1161 1706h170v137h274v-375l-222-171v-478l170-170v-205h153v-239h-1365v239h153v205l171 170v478l-222 171v375h273v-137h171v137h274v-137zm-597-1246v-102h920v102h-920zm460 1092h-512v-46l73-55h879l71 55v46h-511zm0-169h-350l60-47v-57h580v57l60 47h-350zm0-546h-290v-46l-60-58h700l-60 58v46h-290zm0-172h-414l-46-43v-58h920v58l-46 43h-414z"
+     fill-rule="nonzero"
+     transform="translate(0,2048) scale(1,-1)"
+     display="block"
+     fill="#000"
+     id="path2" />
+  <g
+     fill-rule="nonzero"
+     fill="#fff"
+     id="g14">
+    <path
+       style="color:black;"
+       d="m564 1588v102h920v-102h-920z"
+       display="block"
+       id="path4" />
+    <path
+       style="color:black;"
+       d="m1024 496h-512v46l73 55h879l71-55v-46h-511z"
+       display="block"
+       id="path6" />
+    <path
+       style="color:black;"
+       d="m1024 665h-350l60 47v57h580v-57l60-47h-350z"
+       display="block"
+       id="path8" />
+    <path
+       style="color:black;"
+       d="m1024 1211h-290v46l-60 58h700l-60-58v-46h-290z"
+       display="block"
+       id="path10" />
+    <path
+       style="color:black;"
+       d="m1024 1383h-414l-46 43v58h920v-58l-46-43h-414z"
+       display="block"
+       id="path12" />
+  </g>
+  <path
+     style="fill:#800000;stroke:#000000;stroke-width:2.31937"
+     d="m 342.10646,1724.4485 v -118.2877 h 76.53907 76.53907 v -102.6437 -102.6437 l 85.81653,-85.793 85.81654,-85.793 V 989.92246 750.55756 L 555.63291,665.19949 444.44816,579.84145 444.30335,392.55266 444.15855,205.26387 h 135.6829 135.6829 v 68.42129 68.4213 h 85.81653 85.81654 v -68.4213 -68.42129 H 1024 1160.8426 v 68.42129 68.4213 h 85.8165 85.8166 v -68.4213 -68.42129 h 135.6829 135.6828 l -0.1329,187.28879 -0.1328,187.28879 -111.1967,85.4208 -111.1966,85.42079 v 239.30216 239.3022 l 85.8165,85.793 85.8165,85.793 v 102.6437 102.6437 h 76.5391 76.5391 v 118.2877 118.2876 H 1024 342.10648 v -118.2876 z m 1143.44734,-84.6569 v -52.1857 H 1024 562.44621 v 52.1857 52.1857 H 1024 1485.5538 Z m 0,-184.185 v -29.9472 l -23.5741,-22.2385 -23.574,-22.2386 H 1024 609.59432 l -23.57406,22.2386 -23.57405,22.2385 v 29.9472 29.9472 H 1024 1485.5538 Z m -111.3296,-141.3421 c 0,-1.0866 -13.0464,-14.2258 -28.992,-29.1982 l -28.9921,-27.2226 v -24.1472 -24.1472 H 1024 731.75991 v 24.1472 24.1472 l -28.99207,27.2226 c -15.94564,14.9724 -28.99208,28.1116 -28.99208,29.1982 0,1.0866 157.60091,1.9756 350.22424,1.9756 192.6233,0 350.2242,-0.889 350.2242,-1.9756 z m -57.9841,-572.7251 v -29.64971 l 26.6947,-20.58539 c 14.6821,-11.32196 27.8564,-21.98501 29.2761,-23.69568 2.1566,-2.5985 -55.1177,-3.11032 -348.0638,-3.11032 -192.85481,0 -350.10164,0.87932 -349.43742,1.95407 0.66422,1.07472 13.77158,11.7728 29.12745,23.7735 l 27.91976,21.81943 0.002,29.57191 0.002,29.57192 H 1024 1316.2401 Z m 185.1273,-171.48686 35.2124,-27.18415 V 519.0265 495.1846 H 1024 511.42016 v 23.99284 23.99282 l 35.37033,26.96274 35.37033,26.96275 441.99708,0.0705 441.997,0.0705 35.2125,-27.18415 z"
+     id="path24" />
+</svg>
diff --git a/client/public/images/pieces/Musketeer/bv.svg b/client/public/images/pieces/Musketeer/bv.svg
new file mode 120000 (symlink)
index 0000000..f1403ed
--- /dev/null
@@ -0,0 +1 @@
+bu.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Musketeer/bw.svg b/client/public/images/pieces/Musketeer/bw.svg
new file mode 120000 (symlink)
index 0000000..a8dd04b
--- /dev/null
@@ -0,0 +1 @@
+../Shako/bc.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Musketeer/bx.svg b/client/public/images/pieces/Musketeer/bx.svg
new file mode 100644 (file)
index 0000000..02b0894
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="45" height="45">\r
+ <g>\r
+  <title>Unicorn</title>\r
+  <g id="Head" style="opacity:1; fill:none; fill-opacity:1; fill-rule:evenodd; stroke:#000000; stroke-width:1.5; stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4; stroke-dasharray:none; stroke-opacity:1;">\r
+    <path id="Neck" d="M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18" style="fill:#000000; stroke:#000000;"/>\r
+    <path id="Face" fill="#000000" d="m24,18c0.38,2.91 -5.55,7.37 -8,9c-3,2 -2.82,4.34 -5,4c-1.042,-0.94 1.41,-3.04 0,-3c-1,0 0.19,1.23 -1,2c-1,0 -4,1 -4,-4c0,-2 6,-12 6,-12c0,0 -7.5275,-6.475 -7.0413,-7.15c0.4863,-0.675 8.9863,4.45 9.0413,3.65c-0.73,-0.994 -0.5,-2 -0.5,-3c1,-1 3,2.5 3,2.5l2,0c0,0 0.78,-1.992 2.5,-3c1,0 1,3 1,3" style="fill:#000000; stroke:#000000;"/>\r
+    <path id="Nose" d="M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z" style="fill:#ffffff; stroke:#ffffff;"/>\r
+    <path id="Eye" d="M 15 15.5 A 0.5 1.5 0 1 1  14,15.5 A 0.5 1.5 0 1 1  15 15.5 z" transform="matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)" style="fill:#ffffff; stroke:#ffffff;"/>\r
+    <path id="Mane" d="M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z " style="fill:#ffffff; stroke:none;"/>\r
+  </g>\r
+ </g>\r
+</svg>\r
diff --git a/client/public/images/pieces/Musketeer/by.svg b/client/public/images/pieces/Musketeer/by.svg
new file mode 100644 (file)
index 0000000..f9b413b
--- /dev/null
@@ -0,0 +1,144 @@
+<?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"
+   height="512pt"
+   viewBox="-4 0 512 512"
+   width="512pt"
+   version="1.1"
+   id="svg97"
+   sodipodi:docname="by.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07, custom)">
+  <metadata
+     id="metadata103">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs101" />
+  <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="1060"
+     id="namedview99"
+     showgrid="false"
+     inkscape:zoom="1.293457"
+     inkscape:cx="341.33333"
+     inkscape:cy="341.33333"
+     inkscape:window-x="0"
+     inkscape:window-y="20"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg97" />
+  <path
+     d="m 341.54391,268.52282 c 19.17093,-24.4097 30.43906,-54.08907 32.30218,-85.07125 0,-67.48157 -54.70437,-122.185945 -122.18593,-122.185945 -67.48157,0 -122.18594,54.704375 -122.18594,122.185945 1.86657,30.98218 13.13469,60.66155 32.30219,85.07125"
+     fill="#2c2f38"
+     id="path57"
+     style="stroke-width:0.88" />
+  <path
+     d="m 324.68984,268.52282 c 15.93625,-25.6197 24.97688,-54.92439 26.24532,-85.07125 0,-67.50564 -44.41937,-122.185945 -99.275,-122.185945 -54.85219,0 -99.275,54.680305 -99.275,122.185945 1.26843,30.14686 10.3125,59.45155 26.24531,85.07125"
+     fill="#2c3e50"
+     id="path59"
+     style="stroke-width:0.88" />
+  <g
+     fill="#2c2f38"
+     id="g67"
+     transform="matrix(0.88,0,0,0.88,30.199219,30.72)">
+    <path
+       d="m 362.56641,396.92969 25.66015,54.19531 c 1.39844,2.95312 1.01953,6.44141 -0.98047,9.02344 L 347.11719,512 l 8.09765,-45.8125 c 0.375,-2.125 -0.0586,-4.31641 -1.21484,-6.14063 L 328.83594,420.1875 H 174.51562 l -25.16796,39.85937 c -1.15625,1.82422 -1.58985,4.01563 -1.21485,6.14063 l 8.07031,45.8125 -40.125,-51.85156 c -2,-2.58203 -2.3789,-6.07032 -0.98046,-9.02344 l 25.66015,-54.19531 z m 0,0"
+       id="path61" />
+    <path
+       d="m 381.74219,338.52734 37.98437,-37.98437 c 3.12891,-3.12891 8.10547,-3.40235 11.5586,-0.64063 l 36.57031,29.26172 c 0.5,0.39844 0.95703,0.85156 1.35156,1.35547 l 34.11328,42.63281 v -56.5039 c 0,-2.67578 -1.23437,-5.20313 -3.34765,-6.84375 L 430.81641,256 c -3.25391,-2.53516 -7.84375,-2.42578 -10.97657,0.26172 l -48.07421,41.21875 H 131.55859 L 83.480469,256.26953 c -3.128907,-2.6875 -7.71875,-2.79297 -10.976563,-0.26172 L 3.351562,309.80469 C 1.238281,311.44531 0,313.97266 0,316.64844 v 56.5039 l 34.113281,-42.63281 c 0.398438,-0.5039 0.851563,-0.95703 1.355469,-1.35547 l 36.558594,-29.26172 c 3.453125,-2.76171 8.433594,-2.48828 11.558594,0.64063 l 37.992192,37.98437 z m 0,0"
+       id="path63" />
+    <path
+       d="M 390.50781,355.79687 H 430 c 2.48047,0 4.83984,1.0625 6.48437,2.91407 l 62.48047,70.29297 c 2.58203,2.88672 2.9375,7.13672 0.86719,10.41406 l -39.89844,63.90234 v -66.375 c 0,-1.97265 -0.67187,-3.88672 -1.90234,-5.42578 l -30.20703,-37.75781 c -1.64844,-2.05859 -4.14063,-3.25391 -6.77735,-3.25391 H 90.953125 c -2.636719,0 -5.128906,1.19532 -6.777344,3.25391 L 53.96875,431.51953 c -1.230469,1.53906 -1.902344,3.45313 -1.902344,5.42578 v 66.375 L 12.148438,439.41016 c -2.066407,-3.27735 -1.710938,-7.52735 0.867187,-10.41407 L 75.542969,358.70312 C 77.183594,356.85937 79.53125,355.80469 82,355.79687 Z m 0,0"
+       id="path65" />
+  </g>
+  <path
+     d="m 212.25609,410.64282 c 13.09345,1.30625 26.24532,1.94218 39.40407,1.9078 13.15875,0.0343 26.31063,-0.60155 39.40406,-1.9078 l 11.76312,-4.27625 c 37.6475,-10.15782 63.38407,-33.60157 63.38407,-73.99907 0,-56.96968 -51.24282,-103.09407 -114.55125,-103.09407 -63.30844,0 -114.54782,46.12439 -114.54782,103.09407 0,40.3975 25.73313,63.84125 63.38407,73.99907 z m 0,0"
+     fill="#2c3e50"
+     id="path69"
+     style="stroke-width:0.88" />
+  <path
+     d="m 217.50859,410.80093 c 22.70813,2.33407 45.595,2.33407 68.30313,0 l 10.19562,-3.91531 c 32.62188,-9.31905 54.92782,-30.80687 54.92782,-67.83905 0,-52.21907 -44.40562,-94.50032 -99.275,-94.50032 -54.86937,0 -99.275,42.28125 -99.275,94.50032 0,37.03218 22.30593,58.52 54.93125,67.83905 z m 0,0"
+     fill="#35495e"
+     id="path71"
+     style="stroke-width:0.88" />
+  <path
+     d="m 228.06516,300.06187 c 0.46063,1.82188 0.69438,3.69531 0.6875,5.57563 0.0275,12.22375 -9.5425,22.31968 -21.74907,22.93843 -12.20655,0.61875 -22.7528,-8.45281 -23.95937,-20.61811 -1.21,-12.16189 7.34594,-23.13095 19.43562,-24.92532"
+     fill="#c03a2b"
+     id="path73"
+     style="stroke-width:0.88" />
+  <path
+     d="m 236.38734,313.27562 c -1.50562,-0.003 -2.97687,-0.44687 -4.23155,-1.28562 l -45.81845,-30.54563 c -2.26875,-1.5125 -3.56125,-4.125 -3.3825,-6.8475 0.17532,-2.7225 1.79095,-5.1425 4.23845,-6.3525 2.44405,-1.21 5.35218,-1.02094 7.62093,0.495 l 45.81844,30.54563 c 2.80156,1.86657 4.04938,5.34875 3.07313,8.56968 -0.9797,3.22439 -3.9497,5.42439 -7.31845,5.42094 z m 0,0"
+     fill="#2c2f38"
+     id="path75"
+     style="stroke-width:0.88" />
+  <path
+     d="m 300.84047,283.0325 c 12.09312,1.79437 20.64562,12.76343 19.43907,24.92532 -1.21,12.1653 -11.75282,21.23686 -23.96282,20.61811 -12.20656,-0.61875 -21.77656,-10.71468 -21.74563,-22.93843 -0.007,-1.88032 0.22345,-3.75375 0.6875,-5.57563"
+     fill="#c03a2b"
+     id="path77"
+     style="stroke-width:0.88" />
+  <path
+     d="m 266.93297,313.27562 c -3.36531,0.003 -6.33875,-2.19655 -7.315,-5.42094 -0.97968,-3.22093 0.26812,-6.70311 3.06969,-8.56968 l 45.82188,-30.54563 c 2.26875,-1.51594 5.17343,-1.705 7.62093,-0.495 2.44407,1.21 4.05969,3.63 4.23844,6.3525 0.17531,2.7225 -1.11375,5.335 -3.38594,6.8475 L 271.16454,311.99 c -1.25125,0.83875 -2.72595,1.28218 -4.23157,1.28562 z m 0,0"
+     fill="#2c2f38"
+     id="path79"
+     style="stroke-width:0.88" />
+  <path
+     d="m 282.20579,366.73218 h -91.63688 l 12.30281,49.19407 c 0.40562,1.61907 1.815,2.79125 3.48219,2.8875 1.66718,0.0962 3.20718,-0.90407 3.795,-2.46813 l 18.60375,-49.61344"
+     fill="#d1d4d1"
+     id="path81"
+     style="stroke-width:0.88" />
+  <path
+     d="m 221.11454,366.73218 h 91.6403 l -12.3028,49.19407 c -0.40563,1.61907 -1.81845,2.79125 -3.48563,2.8875 -1.66719,0.0962 -3.20375,-0.90407 -3.79157,-2.46813 l -18.60375,-49.61344"
+     fill="#d1d4d1"
+     id="path83"
+     style="stroke-width:0.88" />
+  <path
+     d="m 274.57109,168.17875 v 16.72343 c -0.44,3.795 -3.8328,6.545 -7.63812,6.1875 h -30.54563 c -3.8053,0.3575 -7.19468,-2.3925 -7.63468,-6.1875 v -16.72343 z m 0,0"
+     fill="#c03a2b"
+     id="path85"
+     style="stroke-width:0.88" />
+  <path
+     d="m 297.48204,128.16282 c -0.0207,4.9328 -1.2547,9.78311 -3.5922,14.12811 -0.76655,1.39219 -1.6053,2.74314 -2.51968,4.04594 -2.57125,3.3172 -6.215,5.64095 -10.30907,6.56906 h -58.80187 c -4.09406,-0.92811 -7.73781,-3.25186 -10.30906,-6.56906 -0.91094,-1.3028 -1.75312,-2.65375 -2.51969,-4.04594 -4.785,-8.81031 -4.785,-19.44593 0,-28.25625 2.45094,-4.50311 5.80594,-8.45625 9.85187,-11.60843 4.35188,-3.41 9.26063,-6.043125 14.5097,-7.789375 11.6153,-3.7675 24.12437,-3.7675 35.73968,0 5.24562,1.74625 10.15437,4.379375 14.50969,7.789375 4.04593,3.15218 7.3975,7.10532 9.84843,11.60843 2.3375,4.345 3.57157,9.19532 3.5922,14.12814 z m 0,0"
+     fill="#c03a2b"
+     id="path87"
+     style="stroke-width:0.88" />
+  <path
+     d="m 236.38734,137.63312 c -2.03155,0.0172 -3.98405,-0.7803 -5.42093,-2.21375 -0.67375,-0.74594 -1.21687,-1.59844 -1.60532,-2.52312 -0.42625,-0.90407 -0.63593,-1.8975 -0.60843,-2.90125 0.0275,-2.02125 0.81813,-3.95657 2.21375,-5.42093 2.19656,-2.16564 5.47938,-2.79814 8.32218,-1.60532 1.91813,0.69437 3.43063,2.20687 4.125,4.125 0.8147,1.84937 0.8147,3.95657 0,5.8025 -0.38843,0.92468 -0.93155,1.77718 -1.6053,2.52312 -1.43688,1.43345 -3.38938,2.23095 -5.42095,2.21375 z m 0,0"
+     fill="#2c2f38"
+     id="path89"
+     style="stroke-width:0.88" />
+  <path
+     d="m 266.93297,137.63312 c -2.02813,0.0172 -3.98406,-0.7803 -5.42093,-2.21375 -0.67375,-0.74594 -1.21345,-1.59844 -1.60188,-2.52312 -0.42969,-0.90407 -0.63937,-1.8975 -0.61187,-2.90125 0.0275,-2.02125 0.81812,-3.95657 2.21375,-5.42093 2.19655,-2.16564 5.47937,-2.79814 8.32562,-1.60532 1.91813,0.69437 3.42718,2.20687 4.12156,4.125 0.81469,1.84937 0.81469,3.95657 0,5.8025 -0.38843,0.92468 -0.93156,1.77718 -1.60188,2.52312 -1.4403,1.43345 -3.3928,2.23095 -5.42437,2.21375 z m 0,0"
+     fill="#2c2f38"
+     id="path91"
+     style="stroke-width:0.88" />
+  <path
+     d="m 251.66016,68.90375 c -4.21782,0 -7.63469,-3.420313 -7.63469,-7.638125 v -22.9075 c 0,-4.217813 3.41687,-7.638125 7.63469,-7.638125 4.21781,0 7.63813,3.420312 7.63813,7.638125 v 22.9075 c 0,4.217812 -3.42032,7.638125 -7.63813,7.638125 z m 0,0"
+     fill="#bdc3c7"
+     id="path93"
+     style="stroke-width:0.88" />
+  <path
+     d="M 328.02766,374.36687 H 175.29609 c -4.2178,0 -7.63812,-3.41687 -7.63812,-7.63469 0,-4.21781 3.42032,-7.63811 7.63812,-7.63811 h 152.73157 c 4.21781,0 7.63468,3.4203 7.63468,7.63811 0,4.21782 -3.41687,7.63469 -7.63468,7.63469 z m 0,0"
+     fill="#2c2f38"
+     id="path95"
+     style="stroke-width:0.88" />
+</svg>
diff --git a/client/public/images/pieces/Musketeer/wa.svg b/client/public/images/pieces/Musketeer/wa.svg
new file mode 100644 (file)
index 0000000..38f87a2
--- /dev/null
@@ -0,0 +1,119 @@
+<?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"
+   height="100%"
+   width="100%"
+   version="1.1"
+   viewBox="0 0 2048 2048"
+   id="svg18"
+   sodipodi:docname="wa.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07, custom)">
+  <metadata
+     id="metadata24">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs22" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="960"
+     inkscape:window-height="1060"
+     id="namedview20"
+     showgrid="false"
+     inkscape:zoom="0.43115234"
+     inkscape:cx="1024"
+     inkscape:cy="1021.6806"
+     inkscape:window-x="0"
+     inkscape:window-y="20"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg18" />
+  <path
+     style="color:black;"
+     d="m1024 1166q97 0 186 15 98-35 142-109 38-64 38-141 0-46-23-101t-75-101q-59-49-129-107t-139-137q-70 78-140 136t-128 108q-53 45-75 100t-23 102q0 77 37 141 43 74 143 109 88-15 186-15z"
+     fill-rule="nonzero"
+     display="block"
+     fill="#fff"
+     id="path2" />
+  <path
+     style="color:black;"
+     d="m988 1138l-83 1q-34 0-34 34t34 34h83v86q0 35 36 35 35 0 35-35v-86h86q33 0 33-34t-33-34h-86v-82q0-36-35-36-36 0-36 36v81zm36-578q68 0 132 11t125 28q-117 31-257 31-142 0-257-31 58-16 123-27t134-12zm0 1089q68 0 68 68t-68 68-68-68 68-68zm0-949q117 0 225-23l-48 123q-88 14-177 14-91 0-178-14l-48-123q107 23 226 23zm0 182q97 0 186-15 98 35 142 109 38 64 38 141 0 46-23 101t-75 101q-59 49-129 107t-139 137q-70-78-140-136t-128-108q-53-45-75-100t-23-102q0-77 37-141 43-74 143-109 88 15 186 15zm-36-377h-32q-56-90-107-113-24-12-53-22t-67-10q-7 0-107 16-48 7-76 15t-44 10q-57 7-133-6-46-8-86-29l48-78q12 12 31 15t36 8q42 7 80 2 13-3 51-7t101-15q75-11 102-11 105 0 161 40 34 26 64 72t31 113zm36-113q-14-57-34-79t-53-46q-36-25-85-42t-109-9l-281 39q-17 2-30 0t-26-2q-21 0-53-9t-51-28l-97 159q18 20 32 28t33 17q58 27 124 33 28 2 55 1t56 2q54-9 108-16t110-16q60 0 81 12 11 6 35 22t48 47q-53 6-108 20t-97 31l104 258q-78 45-109 72t-49 64q-26 46-33 89t-7 77q1 60 28 132t104 130q63 48 123 99t119 119q-74 38-74 121 0 56 39 96t97 40q56 0 96-40t40-96q0-82-74-121 58-68 117-119t125-99q75-57 102-129t29-133q0-34-7-77t-32-89q-20-36-50-63t-108-73l104-258q-44-16-99-30t-106-21q23-31 47-47t36-22q21-12 81-12 54 8 108 15t110 17q27-3 54-2t57-1q64-6 124-33 18-9 32-17t33-28l-98-159q-18 18-50 27t-53 10q-13 0-26 2t-31 0l-280-39q-60-9-111 8t-85 45q-33 27-52 46t-33 77zm35 113q0-66 30-112t66-73q55-40 161-40 26 0 102 11 62 10 100 14t51 8q38 5 80-2 16-4 35-7t33-16l48 78q-41 21-87 29-76 13-133 6-17-2-44-10t-75-15q-101-16-107-16-39 0-68 10t-52 22q-53 24-108 113h-32z"
+     fill-rule="nonzero"
+     transform="translate(0,2048) scale(1,-1)"
+     display="block"
+     fill="#000"
+     id="path4" />
+  <g
+     fill-rule="nonzero"
+     fill="#fff"
+     id="g16">
+    <path
+       style="color:black;"
+       d="m1024 1488q68 0 132-11t125-28q-117-31-257-31-142 0-257 31 58 16 123 27t134 12z"
+       display="block"
+       id="path6" />
+    <path
+       style="color:black;"
+       d="m1024 399q68 0 68-68t-68-68-68 68 68 68z"
+       display="block"
+       id="path8" />
+    <path
+       style="color:black;"
+       d="m1024 1348q117 0 225 23l-48-123q-88-14-177-14-91 0-178 14l-48 123q107-23 226-23z"
+       display="block"
+       id="path10" />
+    <path
+       style="color:black;"
+       d="m988 1543h-32q-56 90-107 113-24 12-53 22t-67 10q-7 0-107-16-48-7-76-15t-44-10q-57-7-133 6-46 8-86 29l48 78q12-12 31-15t36-8q42-7 80-2 13 3 51 7t101 15q75 11 102 11 105 0 161-40 34-26 64-72t31-113z"
+       display="block"
+       id="path12" />
+    <path
+       style="color:black;"
+       d="m1059 1543q0 66 30 112t66 73q55 40 161 40 26 0 102-11 62-10 100-14t51-8q38-5 80 2 16 4 35 7t33 16l48-78q-41-21-87-29-76-13-133-6-17 2-44 10t-75 15q-101 16-107 16-39 0-68-10t-52-22q-53-24-108-113h-32z"
+       display="block"
+       id="path14" />
+  </g>
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 814.35955,1170.2447 c -44.93573,-19.9466 -83.95216,-49.998 -106.87624,-82.3185 -70.68326,-99.65589 -60.90214,-240.93929 23.03796,-332.77161 10.28142,-11.24809 58.92052,-53.25208 135.76186,-117.24187 31.92518,-26.58577 69.40247,-61.01177 104.16573,-95.68488 l 54.29944,-54.15856 15.0125,16.89401 c 37.7507,42.48183 92.7574,93.27511 177.44,163.84821 48.7312,40.61183 93.9663,80.04566 100.5224,87.63071 65.0855,75.30011 86.048,167.15295 58.7042,257.22769 -7.595,25.0188 -26.4903,61.0894 -42.8183,81.7384 -24.7643,31.3179 -60.5252,57.5992 -103.3469,75.9513 l -19.5533,8.3799 -25.513,-3.5859 c -61.0227,-8.5769 -77.3055,-9.5115 -163.5153,-9.3859 -75.1993,0.1098 -92.47206,0.8167 -127.56508,5.2222 -22.3239,2.8024 -44.76376,5.6149 -49.86637,6.2499 -7.36946,0.9171 -13.51655,-0.7272 -29.8896,-7.9951 z m 231.80585,-147.2772 c 12.0006,-7.8631 13.5655,-14.9343 14.5287,-65.64927 l 0.892,-46.96715 h 46.2237 c 60.8416,0 67.6246,-2.83047 70.7878,-29.5391 1.7397,-14.68903 -2.1417,-26.60463 -11.1297,-34.16755 l -6.9812,-5.87433 h -49.4577 -49.4578 l -0.8733,-49.28652 c -0.9699,-54.74028 -2.4414,-60.92123 -16.1962,-68.03412 -8.8875,-4.59592 -31.5434,-4.94338 -40.3677,-0.61911 -3.5142,1.72213 -8.57082,6.07486 -11.23686,9.67273 -4.51267,6.08998 -4.89602,10.05301 -5.5527,57.4043 l -0.70536,50.86272 h -47.53666 c -52.41334,0 -58.1389,1.22551 -64.66225,13.84028 -5.54785,10.72835 -4.69228,35.06775 1.50984,42.95246 8.95279,11.38163 16.17245,12.78824 65.63801,12.78824 h 45.30213 v 45.30213 c 0,47.68059 1.39827,55.84929 11.02749,64.42189 2.59036,2.306 7.69196,5.1473 11.33706,6.3139 9.162,2.9324 30.1881,0.9833 36.9107,-3.4215 z"
+     id="path38" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 823.00352,1309.6207 23.565,-60.363 13.91619,-2.3925 c 7.65391,-1.3158 30.09377,-4.2007 49.86637,-6.4108 50.23697,-5.6151 176.88622,-5.6299 226.13812,-0.026 43.0371,4.8965 61.8048,7.9038 63.8733,10.2348 2.0057,2.2604 46.5983,117.102 45.7568,117.8397 -0.3409,0.2989 -11.5789,-1.4463 -24.9732,-3.8782 -98.0156,-17.7957 -200.5268,-21.9121 -305.31304,-12.2601 -32.97516,3.0374 -93.50084,11.8735 -110.42185,16.1204 -5.79235,1.4538 -5.26119,-0.3235 17.59231,-58.864 z"
+     id="path40" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 984.50432,1485.3828 c -17.25784,-0.9916 -44.91628,-3.5285 -61.46319,-5.6376 -53.0623,-6.7635 -152.76317,-28.1861 -146.68257,-31.5175 4.20121,-2.3017 54.59318,-12.9848 80.6471,-17.0972 69.90917,-11.0345 191.92934,-14.9937 262.08834,-8.504 51.639,4.7766 115.1323,15.0582 147.2797,23.8493 l 9.2775,2.537 -10.4372,3.1643 c -20.889,6.3331 -94.7366,21.6853 -126.4455,26.2868 -30.0506,4.3609 -99.726,9.7969 -115.9282,9.0448 -3.8269,-0.1777 -21.0781,-1.1344 -38.33598,-2.1259 z"
+     id="path42" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 663.33862,1760.426 c -21.68607,-2.9406 -52.47565,-7.5012 -68.42129,-10.1348 -15.94564,-2.6335 -45.69151,-6.8719 -66.10193,-9.4185 -20.41042,-2.5467 -45.98142,-5.8131 -56.82446,-7.2587 -23.58242,-3.144 -56.56053,-1.304 -82.33749,4.5939 -10.20521,2.335 -22.72978,4.9699 -27.83239,5.8552 -5.1026,0.8854 -13.90384,4.1733 -19.55832,7.3066 -8.28373,4.5902 -10.81131,5.1193 -13.01152,2.7241 -4.5056,-4.9048 -42.80954,-68.1896 -42.80954,-70.7287 0,-2.4977 19.67034,-11.8298 37.24207,-17.6685 40.76695,-13.5461 78.67641,-18.7788 135.55068,-18.7104 44.50177,0.054 47.4715,0.3481 73.06002,7.2457 39.65596,10.6896 92.69608,20.274 183.1859,33.1016 33.49934,4.7489 74.71097,-3.4926 119.49134,-23.8956 44.72653,-20.3786 73.0985,-46.6676 110.00065,-101.9249 l 12.0042,-17.9751 h 15.27672 15.27671 l -1.58074,17.9751 c -2.05174,23.3309 -8.86381,52.0601 -16.367,69.0261 -9.90539,22.3979 -31.29783,52.0246 -54.59242,75.606 -19.64941,19.8913 -24.66954,23.5879 -46.38732,34.1575 -52.26619,25.437 -118.32015,31.9128 -205.26387,20.1234 z"
+     id="path44" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 1257.4088,1763.5654 c -56.4842,-7.2537 -94.8932,-25.7676 -130.5843,-62.9443 -41.8887,-43.6322 -62.0562,-85.3388 -65.0234,-134.4693 l -1.3658,-22.6139 h 14.8614 14.8614 l 12.4669,18.8494 c 30.9801,46.8404 62.7315,77.6902 97.7984,95.0211 68.5322,33.8704 93.7803,36.6595 191.1961,21.1205 76.3461,-12.1782 78.0106,-12.504 116.425,-22.7871 31.6788,-8.4801 32.5006,-8.5717 78.4017,-8.745 51.0603,-0.1929 86.3523,3.8868 121.6372,14.061 24.87,7.1711 53.4749,19.0282 53.4749,22.1661 0,1.3258 -10.1279,18.8625 -22.5065,38.9704 l -22.5065,36.5599 -7.0654,-5.213 c -9.4016,-6.9368 -11.6819,-7.6563 -44.9943,-14.1974 -35.1985,-6.9115 -68.5087,-9.1014 -88.4765,-5.8168 -8.2918,1.364 -34.9065,5.0829 -59.1439,8.2641 -24.2373,3.1813 -57.6362,7.8871 -74.2197,10.4575 -87.4036,13.5471 -141.9296,16.8783 -185.2367,11.3168 z"
+     id="path46" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 995.40254,394.00644 c -26.12366,-8.02606 -40.8928,-35.66102 -37.93213,-70.97588 1.91867,-22.88591 10.64017,-39.89904 25.00694,-48.78133 14.44433,-8.93024 36.53765,-12.26115 57.67655,-8.69561 34.1236,5.75568 49.8149,25.43702 49.9018,62.59114 0.025,10.86806 -1.4575,24.94429 -3.2954,31.28051 -4.5665,15.74354 -18.8811,29.88667 -35.1343,34.71333 -15.1468,4.49813 -41.353,4.43654 -56.22346,-0.13216 z"
+     id="path48" />
+</svg>
diff --git a/client/public/images/pieces/Musketeer/wc.svg b/client/public/images/pieces/Musketeer/wc.svg
new file mode 120000 (symlink)
index 0000000..d17eb13
--- /dev/null
@@ -0,0 +1 @@
+wa.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Musketeer/wd.svg b/client/public/images/pieces/Musketeer/wd.svg
new file mode 100644 (file)
index 0000000..e8bdf9d
--- /dev/null
@@ -0,0 +1,73 @@
+<?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"
+   version="1.0"
+   width="119pt"
+   height="119pt"
+   viewBox="0 0 119 119"
+   preserveAspectRatio="xMidYMid meet"
+   id="svg10"
+   sodipodi:docname="wd.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07, custom)">
+  <metadata
+     id="metadata16">
+    <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>
+  <defs
+     id="defs14" />
+  <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="1060"
+     id="namedview12"
+     showgrid="false"
+     inkscape:zoom="4.6191589"
+     inkscape:cx="142.66667"
+     inkscape:cy="79.116843"
+     inkscape:window-x="0"
+     inkscape:window-y="20"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg10"
+     inkscape:document-rotation="0" />
+  <g
+     transform="matrix(0.12119887,0,0,-0.13266833,-9.3364069,144.58469)"
+     fill="#000000"
+     stroke="none"
+     id="g8">
+    <path
+       d="M 533,984 C 356,937 246,833 169,639 l -20,-52 23,-33 c 13,-19 35,-36 50,-39 15,-4 30,-15 33,-26 10,-29 65,-89 82,-89 13,0 14,10 8,55 l -6,55 h 50 c 64,0 101,-14 101,-38 0,-15 -5,-18 -26,-14 l -27,5 5,-63 c 4,-55 8,-66 36,-91 37,-33 69,-36 115,-13 41,21 47,31 47,75 0,55 19,99 42,99 42,0 111,-24 134,-46 28,-29 44,-30 77,-4 39,31 87,196 87,299 0,55 -15,143 -30,182 -6,14 -35,39 -68,59 -55,32 -61,33 -177,36 -78,1 -138,-3 -172,-12 z m 97,-39 c -21,-26 -2,-30 49,-12 50,17 111,23 111,10 0,-17 -62,-114 -75,-120 -22,-8 -18,-33 4,-33 22,0 57,42 90,107 21,43 22,43 53,30 59,-24 72,-55 76,-175 3,-78 -1,-125 -13,-171 -31,-120 -69,-169 -95,-122 -11,21 -148,58 -176,47 -20,-8 -47,-72 -49,-121 -2,-32 -8,-43 -31,-57 -37,-23 -40,-23 -69,7 -32,31 -33,62 -2,61 21,-1 22,2 19,54 -2,30 -8,60 -14,67 -15,19 -101,33 -198,33 -83,0 -91,2 -105,24 -15,22 -14,29 24,109 24,53 58,106 87,138 70,73 201,137 288,138 33,1 37,-1 26,-14 z"
+       id="path2" />
+    <path
+       d="m 385,808 c -31,-17 -65,-50 -65,-63 0,-9 23,-13 70,-14 77,-1 79,1 59,58 -12,33 -30,38 -64,19 z"
+       id="path4" />
+    <path
+       d="m 710,752 c 0,-4 9,-25 20,-47 11,-22 20,-51 20,-66 0,-31 -32,-75 -60,-84 -25,-8 -26,-35 -1,-35 25,0 68,35 87,72 18,36 12,90 -16,136 -18,29 -50,44 -50,24 z"
+       id="path6" />
+  </g>
+  <path
+     style="fill:#ffffff;stroke:#000000;stroke-width:0.21649"
+     d="m 73.157836,137.15323 c -0.849603,-0.46252 -4.056576,-3.73725 -5.387957,-5.50179 -1.451901,-1.92427 -2.230246,-3.737 -2.339294,-5.4481 -0.08497,-1.33332 -0.03742,-1.59013 0.395682,-2.13701 0.687842,-0.86854 1.673517,-1.21858 3.431393,-1.21858 2.827628,0 3.121543,-0.81481 2.811298,-7.79363 -0.270857,-6.09283 -1.06974,-11.23714 -2.075876,-13.36733 C 68.715644,98.982198 60.877741,96.83871 48.385436,95.777597 46.837535,95.646117 41.430707,95.454199 36.370262,95.351113 26.343759,95.146861 24.961257,94.993968 23.189477,93.893414 22.185115,93.269548 20.953805,91.670014 20.063859,89.83308 18.630579,86.87465 19.010432,85.337127 24.182206,73.163379 29.763435,60.02582 36.239452,49.558453 42.264166,43.937005 52.718747,34.182201 66.606403,26.583915 78.693984,24.005333 c 3.060703,-0.652924 10.039726,-1.004244 10.8917,-0.548281 0.67498,0.361238 0.600914,0.702251 -0.517978,2.384909 -1.229648,1.849222 -1.46807,3.03449 -0.716314,3.56104 1.104236,0.773437 3.801519,0.295359 9.39368,-1.664977 5.196248,-1.821547 9.794768,-2.781765 13.530598,-2.825327 2.34061,-0.02729 3.53169,0.248093 3.77106,0.871895 0.44716,1.165279 -4.74325,11.262665 -9.04849,17.602873 -1.69589,2.497488 -2.69928,3.609555 -3.75649,4.163352 -1.0931,0.5726 -1.61422,1.581448 -1.51446,2.931917 0.0939,1.270987 0.52323,1.899996 1.61123,2.360499 1.84152,0.779428 3.58678,0.0057 6.21384,-2.754934 3.20039,-3.363054 6.63325,-9.003214 10.32195,-16.958868 1.22188,-2.635294 2.06073,-4.155232 2.61463,-4.73749 0.75845,-0.797301 0.88186,-0.849835 1.7631,-0.750507 0.52116,0.05874 2.04113,0.604849 3.37771,1.213571 10.0113,4.559459 11.93203,9.9275 12.4843,34.891075 0.27284,12.332409 -0.48697,19.668754 -3.07173,29.659079 -3.00748,11.624201 -6.53322,19.212141 -9.67065,20.812731 -1.55951,0.79561 -2.67083,0.26454 -4.15237,-1.9843 -1.20766,-1.83312 -1.77653,-2.2706 -4.89029,-3.76083 -7.84364,-3.75391 -21.376836,-6.69713 -24.164839,-5.2554 -2.317578,1.19847 -5.117278,6.81133 -6.779202,13.59101 -0.604026,2.46407 -0.845851,4.13443 -1.305904,9.02027 -0.422913,4.49141 -1.277724,6.16653 -4.279407,8.38609 -4.092901,3.02644 -6.078079,3.7898 -7.641822,2.9385 z M 101.3885,100.30276 c 3.90639,-1.532484 9.19996,-7.022187 11.52435,-11.951363 2.89602,-6.141363 2.22557,-14.944206 -1.75204,-23.003818 -2.01144,-4.075668 -4.8999,-6.955898 -7.19715,-7.176633 -0.94028,-0.09035 -1.11544,-0.04087 -1.42624,0.40285 -0.67016,0.956798 -0.40387,1.926262 2.19379,7.986649 2.37518,5.541331 3.51767,9.173319 3.84765,12.231664 0.40947,3.795158 -1.95265,9.105608 -5.73566,12.894752 -1.50399,1.50643 -2.20574,2.026358 -3.745148,2.774793 -2.314891,1.125465 -3.008463,1.915197 -3.146776,3.583068 -0.08488,1.02352 -0.02909,1.218166 0.527823,1.841457 1.028577,1.151171 2.679724,1.291281 4.909401,0.416581 z M 60.222873,62.95268 c 1.984844,-0.91623 2.147973,-2.558678 0.738268,-7.433206 -2.441691,-8.44297 -5.380639,-9.671878 -12.228302,-5.113204 -5.024715,3.34509 -9.710201,8.574252 -9.504165,10.606977 0.188613,1.860838 3.817504,2.497177 13.919534,2.440834 5.715264,-0.03188 6.119603,-0.06053 7.074665,-0.501401 z"
+     id="path232"
+     transform="scale(0.74999998)" />
+</svg>
diff --git a/client/public/images/pieces/Musketeer/we.svg b/client/public/images/pieces/Musketeer/we.svg
new file mode 120000 (symlink)
index 0000000..d642197
--- /dev/null
@@ -0,0 +1 @@
+../Shako/we.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Musketeer/wf.svg b/client/public/images/pieces/Musketeer/wf.svg
new file mode 100644 (file)
index 0000000..3e80ae0
--- /dev/null
@@ -0,0 +1,153 @@
+<?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"
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   viewBox="0 0 512 512"
+   style="enable-background:new 0 0 512 512;"
+   xml:space="preserve"
+   sodipodi:docname="wf.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07, custom)"><metadata
+   id="metadata166"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+   id="defs164" /><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="1060"
+   id="namedview162"
+   showgrid="false"
+   inkscape:zoom="1.7246094"
+   inkscape:cx="256"
+   inkscape:cy="255.42016"
+   inkscape:window-x="0"
+   inkscape:window-y="20"
+   inkscape:window-maximized="0"
+   inkscape:current-layer="Layer_1" />
+<g
+   id="g117"
+   transform="matrix(0.8,0,0,0.9,51.2001,25.6)">
+       <g
+   id="g115">
+               <path
+   d="M 495.304,189.217 H 439.652 V 38.957 c 0,-9.22 -7.475,-16.696 -16.696,-16.696 h -66.783 c -9.22,0 -16.696,7.475 -16.696,16.696 V 89.044 H 306.086 V 38.957 c 0,-9.22 -7.475,-16.696 -16.696,-16.696 h -66.783 c -9.22,0 -16.696,7.475 -16.696,16.696 V 89.044 H 172.52 V 38.957 c 0,-9.22 -7.475,-16.696 -16.696,-16.696 h -66.78 c -9.22,0 -16.696,7.475 -16.696,16.696 V 189.218 H 16.696 C 7.475,189.217 0,196.693 0,205.913 v 267.13 c 0,9.22 7.475,16.696 16.696,16.696 19.041,0 452.498,0 478.609,0 9.22,0 16.696,-7.475 16.696,-16.696 V 205.913 C 512,196.693 504.525,189.217 495.304,189.217 Z M 72.348,456.348 H 33.391 V 222.609 h 38.957 z m 166.956,0 H 205.913 V 372.87 c 0,-21.766 13.959,-40.323 33.391,-47.215 z m 66.783,0 H 272.696 V 325.654 c 19.433,6.892 33.391,25.45 33.391,47.215 z m 100.174,0 H 339.478 V 372.87 c 0,-46.03 -37.448,-83.478 -83.478,-83.478 -46.03,0 -83.478,37.448 -83.478,83.478 v 83.478 h -66.783 c 0,-12.024 0,-390.37 0,-400.696 h 33.391 v 50.087 c 0,9.22 7.475,16.696 16.696,16.696 h 66.783 c 9.22,0 16.696,-7.475 16.696,-16.696 V 55.652 h 33.391 v 50.087 c 0,9.22 7.475,16.696 16.696,16.696 h 66.783 c 9.22,0 16.696,-7.475 16.696,-16.696 V 55.652 h 33.391 c -10e-4,10.336 -10e-4,388.675 -10e-4,400.696 z m 72.348,0 H 439.652 V 222.609 h 38.957 z"
+   id="path113" />
+       </g>
+</g>
+<g
+   id="g123"
+   transform="matrix(0.8,0,0,0.9,51.2001,25.6)">
+       <g
+   id="g121">
+               <path
+   d="m 189.217,155.826 c -27.618,0 -50.087,22.469 -50.087,50.087 v 33.391 c 0,9.22 7.475,16.696 16.696,16.696 h 66.783 c 9.22,0 16.696,-7.475 16.696,-16.696 v -33.391 c -0.001,-27.618 -22.47,-50.087 -50.088,-50.087 z m 16.696,66.783 h -33.391 v -16.696 c 0,-9.206 7.49,-16.696 16.696,-16.696 9.206,0 16.696,7.49 16.696,16.696 v 16.696 z"
+   id="path119" />
+       </g>
+</g>
+<g
+   id="g129"
+   transform="matrix(0.8,0,0,0.9,51.2001,25.6)">
+       <g
+   id="g127">
+               <path
+   d="m 322.783,155.826 c -27.618,0 -50.087,22.469 -50.087,50.087 v 33.391 c 0,9.22 7.475,16.696 16.696,16.696 h 66.783 c 9.22,0 16.696,-7.475 16.696,-16.696 v -33.391 c -10e-4,-27.618 -22.47,-50.087 -50.088,-50.087 z m 16.695,66.783 h -33.391 v -16.696 c 0,-9.206 7.49,-16.696 16.696,-16.696 9.206,0 16.696,7.49 16.696,16.696 v 16.696 z"
+   id="path125" />
+       </g>
+</g>
+<g
+   id="g131"
+   transform="matrix(0.8,0,0,0.9,51.2001,25.6)">
+</g>
+<g
+   id="g133"
+   transform="matrix(0.8,0,0,0.9,51.2001,25.6)">
+</g>
+<g
+   id="g135"
+   transform="matrix(0.8,0,0,0.9,51.2001,25.6)">
+</g>
+<g
+   id="g137"
+   transform="matrix(0.8,0,0,0.9,51.2001,25.6)">
+</g>
+<g
+   id="g139"
+   transform="matrix(0.8,0,0,0.9,51.2001,25.6)">
+</g>
+<g
+   id="g141"
+   transform="matrix(0.8,0,0,0.9,51.2001,25.6)">
+</g>
+<g
+   id="g143"
+   transform="matrix(0.8,0,0,0.9,51.2001,25.6)">
+</g>
+<g
+   id="g145"
+   transform="matrix(0.8,0,0,0.9,51.2001,25.6)">
+</g>
+<g
+   id="g147"
+   transform="matrix(0.8,0,0,0.9,51.2001,25.6)">
+</g>
+<g
+   id="g149"
+   transform="matrix(0.8,0,0,0.9,51.2001,25.6)">
+</g>
+<g
+   id="g151"
+   transform="matrix(0.8,0,0,0.9,51.2001,25.6)">
+</g>
+<g
+   id="g153"
+   transform="matrix(0.8,0,0,0.9,51.2001,25.6)">
+</g>
+<g
+   id="g155"
+   transform="matrix(0.8,0,0,0.9,51.2001,25.6)">
+</g>
+<g
+   id="g157"
+   transform="matrix(0.8,0,0,0.9,51.2001,25.6)">
+</g>
+<g
+   id="g159"
+   transform="matrix(0.8,0,0,0.9,51.2001,25.6)">
+</g>
+<path
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.579841"
+   d="M 135.97282,256 V 75.669309 h 13.02273 13.02273 l 0.16866,24.498301 c 0.16814,24.42147 0.17302,24.50793 1.55556,27.56769 1.57581,3.48746 5.09338,6.80961 8.15427,7.70125 1.33161,0.3879 12.48781,0.53674 31.67371,0.42258 l 29.61803,-0.17623 2.83776,-1.75486 c 1.75739,-1.08676 3.50584,-2.83508 4.5926,-4.59228 l 1.75486,-2.83742 0.16796,-25.41452 0.16796,-25.414511 h 13.31335 13.31335 l 0.0255,24.498301 c 0.0191,18.4154 0.21022,25.0152 0.76958,26.58005 1.18926,3.32703 3.70991,6.15555 6.90396,7.74721 l 2.96585,1.47795 h 29.47669 c 23.6978,0 29.85076,-0.1563 31.38472,-0.79722 3.03965,-1.27005 5.9154,-4.16808 7.40392,-7.4613 1.37099,-3.03317 1.37871,-3.17067 1.54653,-27.54669 l 0.16866,-24.498301 h 13.02273 13.02273 V 256 436.33069 h -26.34565 -26.34564 l -0.2403,-42.47339 c -0.25999,-45.95579 -0.21188,-45.19755 -3.61544,-56.96942 -5.40205,-18.68401 -19.10051,-35.78092 -35.379,-44.15619 -9.11288,-4.68858 -17.69754,-6.75092 -28.10115,-6.75092 -10.40931,0 -18.98217,2.06078 -28.12231,6.76017 -16.18245,8.32018 -29.98036,25.54792 -35.35784,44.14694 -3.40357,11.77187 -3.35545,11.01363 -3.61544,56.96942 l -0.2403,42.47339 H 162.3185 135.97286 Z m 98.88696,-1.0899 c 2.73358,-1.2417 5.21735,-3.9845 6.76784,-7.47365 1.02961,-2.31697 1.08688,-3.87381 0.8959,-24.35334 -0.23004,-24.66807 -0.26809,-24.94056 -4.75535,-34.0548 -4.48921,-9.11819 -10.95488,-15.75123 -19.27546,-19.77441 -22.89839,-11.07185 -49.12696,3.79348 -55.35181,31.37124 -0.58042,2.57138 -0.78529,8.84943 -0.78529,24.06342 0,22.74499 -0.0279,22.54962 3.8549,26.97191 3.92605,4.47153 2.37263,4.28672 36.15416,4.30117 28.031,0.012 30.31657,-0.062 32.49511,-1.05154 z m 106.88979,-0.0356 c 1.21342,-0.61903 3.06216,-2.1004 4.10833,-3.29191 3.81063,-4.34009 3.78649,-4.16862 3.78649,-26.89402 0,-15.21399 -0.20488,-21.49204 -0.78529,-24.06342 -6.22484,-27.57776 -32.45342,-42.44309 -55.35181,-31.37124 -8.32058,4.02318 -14.78625,10.65622 -19.27546,19.77441 -4.48726,9.11424 -4.52531,9.38673 -4.75535,34.0548 -0.19098,20.47953 -0.13371,22.03637 0.8959,24.35334 1.55049,3.48915 4.03426,6.23195 6.76784,7.47365 2.17565,0.98825 4.49259,1.06534 32.37325,1.07717 28.59569,0.0121 30.13526,-0.0411 32.2361,-1.11279 z"
+   id="path218" /><path
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.579841"
+   d="m 77.988675,331.37939 v -104.9513 h 15.365798 15.365797 v 104.9513 104.9513 H 93.354473 77.988675 Z"
+   id="path220" /><path
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.579841"
+   d="m 403.27973,331.37939 v -104.9513 h 15.3658 15.3658 v 104.9513 104.9513 h -15.3658 -15.3658 z"
+   id="path222" /><path
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.579841"
+   d="m 216.139,395.30691 c 0.21117,-39.66968 0.25926,-41.17907 1.4571,-45.7284 3.48794,-13.24701 11.65274,-23.88434 22.60322,-29.4481 l 1.88449,-0.95747 v 58.57887 58.57888 h -13.08159 -13.08159 z"
+   id="path224" /><path
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.579841"
+   d="m 269.91619,377.75181 v -58.57887 l 1.88449,0.96846 c 11.12107,5.71525 19.08977,16.0932 22.60322,29.43711 1.19784,4.54933 1.24593,6.05872 1.4571,45.7284 l 0.21837,41.02378 h -13.08159 -13.08159 z"
+   id="path226" /><path
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.579841"
+   d="m 189.4255,216.42582 c 0.21226,-8.83204 0.32266,-9.60735 1.76188,-12.37383 5.12423,-9.84983 16.43019,-10.42978 22.18055,-1.13776 1.75048,2.82859 1.75354,2.84896 1.93558,12.88354 l 0.18234,10.05047 h -13.1434 -13.1434 z"
+   id="path228" /><path
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.579841"
+   d="m 296.69649,215.79777 c 0.18204,-10.03458 0.1851,-10.05495 1.93557,-12.88354 5.75037,-9.29202 17.05633,-8.71207 22.18056,1.13776 1.43922,2.76648 1.54962,3.54179 1.76188,12.37383 l 0.22645,9.42242 h -13.1434 -13.1434 z"
+   id="path230" /></svg>
diff --git a/client/public/images/pieces/Musketeer/wh.svg b/client/public/images/pieces/Musketeer/wh.svg
new file mode 120000 (symlink)
index 0000000..d5ee68d
--- /dev/null
@@ -0,0 +1 @@
+../Schess/wh.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Musketeer/wj.svg b/client/public/images/pieces/Musketeer/wj.svg
new file mode 100644 (file)
index 0000000..97e92bb
--- /dev/null
@@ -0,0 +1,117 @@
+<?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"
+   height="100%"
+   width="100%"
+   version="1.1"
+   viewBox="0 0 2048 2048"
+   id="svg18"
+   sodipodi:docname="wj.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07, custom)">
+  <metadata
+     id="metadata24">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs22" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="960"
+     inkscape:window-height="1060"
+     id="namedview20"
+     showgrid="false"
+     inkscape:zoom="0.43115234"
+     inkscape:cx="1024"
+     inkscape:cy="1021.6806"
+     inkscape:window-x="0"
+     inkscape:window-y="20"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg18" />
+  <path
+     style="color:black;"
+     d="m524 583q190 48 504 48 308 0 497-46l25 147q-201 53-526 53-327 0-525-54l25-148zm-61-61l-33 187q-1 0-3 4-5 7-28 18t-55 40q-44 37-68 60t-45 50q-61 84-68 203-10 115 93 229 104 114 281 107 66-4 155-32 29-12 59-23t61-24q16-8 28-16-5 21-5 42 0 78 55 133t134 56q78 0 133-55t55-133q0-16-4-42 14 9 27 15 46 20 121 47 86 29 155 33 177 8 280-107 101-114 94-229-8-119-69-203-20-27-45-50t-67-60q-33-28-56-39t-27-19q-1-2-2-3t-1-2l-32-188 66-247q-50-45-224-74t-402-29q-232 0-408 30t-221 77l66 244zm1081-117l-30 115q-198 44-490 44-291 0-489-44l-32-116q191 56 522 56 329 0 519-55zm26-94q-193 78-542 78-362 0-548-80 176-70 545-70 176 0 321 19t224 53zm-581 542q-1 39-3 77t-15 86q-41 134-124 216-43 42-132 78-102 40-193 40-158 0-234-113-43-60-43-150 0-98 48-161 29-37 74-74t84-67q175 63 538 68zm35 186q7 28 12 39 10 39 23 66 6 17 17 39t25 52q8 17 17 41t18 49q8 20 8 43 0 49-35 83t-85 35q-119 0-119-119 0-23 8-43 22-65 34-90 13-29 24-51t19-40q13-33 22-66 2-6 12-38zm34-186q172-2 315-20t224-47q38 30 83 66t75 75q48 61 48 161 0 90-43 150-77 112-234 112-94 0-193-39-87-35-132-78-84-84-124-216-14-47-16-85t-3-79zm1 706h-71v131h-83q-34 0-34 33v1q0 33 34 33h83v85q0 35 36 35 35 0 35-35v-85h86q33 0 33-33v-1q0-33-33-33l-85-1-1-130z"
+     fill-rule="nonzero"
+     transform="translate(0,2048) scale(1,-1)"
+     display="block"
+     fill="#000"
+     id="path2" />
+  <g
+     fill-rule="nonzero"
+     fill="#fff"
+     id="g16">
+    <path
+       style="color:black;"
+       d="m524 1465q190-48 504-48 308 0 497 46l25-147q-201-53-526-53-327 0-525 54l25 148z"
+       display="block"
+       id="path4" />
+    <path
+       style="color:black;"
+       d="m1544 1643-30-115q-198-44-490-44-291 0-489 44l-32 116q191-56 522-56 329 0 519 55z"
+       display="block"
+       id="path6" />
+    <path
+       style="color:black;"
+       d="m1570 1737q-193-78-542-78-362 0-548 80 176 70 545 70 176 0 321-19t224-53z"
+       display="block"
+       id="path8" />
+    <path
+       style="color:black;"
+       d="m989 1195q-1-39-3-77t-15-86q-41-134-124-216-43-42-132-78-102-40-193-40-158 0-234 113-43 60-43 150 0 98 48 161 29 37 74 74t84 67q175-63 538-68z"
+       display="block"
+       id="path10" />
+    <path
+       style="color:black;"
+       d="m1024 1009q7-28 12-39 10-39 23-66 6-17 17-39t25-52q8-17 17-41t18-49q8-20 8-43 0-49-35-83t-85-35q-119 0-119 119 0 23 8 43 22 65 34 90 13 29 24 51t19 40q13 33 22 66 2 6 12 38z"
+       display="block"
+       id="path12" />
+    <path
+       style="color:black;"
+       d="m1058 1195q172 2 315 20t224 47q38-30 83-66t75-75q48-61 48-161 0-90-43-150-77-112-234-112-94 0-193 39-87 35-132 78-84 84-124 216-14 47-16 85t-3 79z"
+       display="block"
+       id="path14" />
+  </g>
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 402.04002,1222.8856 c -78.97653,-63.3445 -109.0257,-95.2273 -129.51882,-137.4224 -20.50881,-42.2274 -26.68969,-76.0749 -24.90985,-136.41086 1.39888,-47.42127 7.1464,-73.4727 23.59707,-106.957 57.20773,-116.44269 182.20942,-165.11072 342.26383,-133.25664 65.11314,12.95884 142.35219,43.77943 193.86695,77.35845 48.18801,31.41052 92.2843,85.80526 127.38287,157.13243 36.15075,73.46542 52.00811,141.85582 52.13136,224.83452 l 0.0367,24.7167 -21.45414,1.303 c -11.79977,0.7167 -42.32842,1.8925 -67.84145,2.6129 -167.1694,4.7203 -326.01012,26.348 -424.44394,57.7921 -10.20521,3.26 -19.80705,5.9406 -21.33742,5.9569 -1.53038,0.016 -23.92831,-16.9308 -49.77318,-37.6601 z"
+     id="path26" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 1021.6806,1000.5932 c 0,-1.90319 -6.6348,-23.76901 -14.7441,-48.59074 -10.37787,-31.76571 -21.37708,-59.0544 -37.1425,-92.14931 -26.92558,-56.52241 -34.66252,-74.96287 -50.42845,-120.19266 -11.58259,-33.2285 -12.05919,-35.56566 -12.25293,-60.08631 -0.40784,-51.62026 16.37999,-85.35268 51.13174,-102.74088 19.53171,-9.77278 35.77098,-13.08282 63.43624,-12.93016 28.1517,0.15533 46.6363,5.272 66.7537,18.47787 35.7844,23.49029 53.8534,56.38064 53.8534,98.02759 0,17.98229 -1.1655,23.4231 -11.2501,52.52126 -14.2737,41.1851 -29.3304,77.78112 -44.1582,107.32903 -19.2782,38.4164 -38.7402,86.25077 -50.3915,123.85437 -10.4095,33.5958 -14.8073,44.43044 -14.8073,36.47994 z"
+     id="path28" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 1587.6059,1257.9266 c -12.2323,-4.9673 -65.1811,-18.6046 -97.3901,-25.0835 -97.4593,-19.604 -223.4133,-32.4372 -363.8254,-37.0696 -36.1699,-1.1934 -66.2633,-2.6694 -66.874,-3.2801 -2.2257,-2.2257 3.8298,-95.9819 7.4372,-115.148 22.2915,-118.43532 93.2913,-238.29794 172.317,-290.90746 41.4325,-27.58279 109.9701,-57.37439 163.8075,-71.20315 53.2838,-13.68659 119.4691,-19.17943 165.8546,-13.76458 79.3393,9.26175 140.8377,43.01332 183.9693,100.96601 34.3476,46.15034 48.0855,91.55953 48.0855,158.9409 0,84.57918 -20.4199,135.49518 -77.6661,193.65638 -21.523,21.867 -123.2709,105.7267 -127.8767,105.3948 -1.1222,-0.081 -4.6497,-1.2066 -7.8388,-2.5017 z"
+     id="path30" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 525.11843,1461.7803 c -2.37305,-6.3142 -24.39312,-142.5764 -23.23752,-143.7959 0.90411,-0.9541 17.24953,-5.3153 36.32314,-9.6915 131.73261,-30.2244 279.90316,-43.48 485.79595,-43.4602 205.1075,0.02 348.1038,12.5053 485.7729,42.4145 18.2635,3.9678 34.4923,8.0089 36.064,8.9803 2.1942,1.3561 0.024,18.4066 -9.3462,73.4458 l -12.2038,71.6798 -41.9804,-8.5238 c -111.9087,-22.7222 -233.0633,-33.4778 -406.1208,-36.0535 -205.38781,-3.057 -378.94204,9.9724 -513.90356,38.5807 -32.2826,6.8431 -36.718,7.6097 -37.16371,6.4238 z"
+     id="path32" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 505.81171,1637.6391 c 0.67688,-2.6431 7.71429,-28.2487 15.63867,-56.9014 l 14.40798,-52.0958 19.67218,-3.9991 c 142.63039,-28.9949 299.37336,-40.7842 510.21806,-38.3755 112.7293,1.2878 147.2862,2.7851 226.1381,9.7979 98.3666,8.7485 217.2778,27.8639 221.272,35.5704 2.7401,5.2867 28.897,106.9344 27.7974,108.0227 -0.4935,0.4884 -17.5966,-3.1719 -38.0071,-8.134 -79.0632,-19.2214 -165.6814,-31.046 -291.0804,-39.7365 -57.8623,-4.0101 -315.02829,-4.034 -373.41786,-0.035 -126.90572,8.6919 -230.48412,23.4905 -308.99602,44.1473 -24.40797,6.4218 -24.85066,6.4543 -23.64301,1.7388 z"
+     id="path34" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 890.63647,1805.4384 c -133.02127,-5.7267 -258.59254,-21.7784 -335.14836,-42.8418 -29.63803,-8.1546 -71.91532,-22.8141 -70.23645,-24.3543 3.75298,-3.443 55.60995,-21.0938 88.33121,-30.0656 107.23293,-29.4022 232.09683,-44.0616 406.34918,-47.7064 198.70915,-4.1564 383.26585,14.3027 511.03615,51.1133 32.7897,9.4467 75.7634,23.9794 75.7634,25.6214 0,2.1977 -45.8972,16.8522 -80.0181,25.5489 -86.5519,22.0603 -202.3468,36.5496 -342.1065,42.8074 -58.9587,2.6399 -191.28255,2.5758 -253.97053,-0.1229 z"
+     id="path36" />
+</svg>
diff --git a/client/public/images/pieces/Musketeer/wl.svg b/client/public/images/pieces/Musketeer/wl.svg
new file mode 120000 (symlink)
index 0000000..155f179
--- /dev/null
@@ -0,0 +1 @@
+wj.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Musketeer/wm.svg b/client/public/images/pieces/Musketeer/wm.svg
new file mode 100644 (file)
index 0000000..7f087be
--- /dev/null
@@ -0,0 +1,69 @@
+<?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"
+   height="100%"
+   width="100%"
+   version="1.1"
+   viewBox="0 0 2048 2048"
+   id="svg6"
+   sodipodi:docname="wm.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07, custom)">
+  <metadata
+     id="metadata12">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs10" />
+  <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="1060"
+     id="namedview8"
+     showgrid="false"
+     inkscape:zoom="0.43115234"
+     inkscape:cx="1024"
+     inkscape:cy="1021.6806"
+     inkscape:window-x="0"
+     inkscape:window-y="20"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg6" />
+  <path
+     style="color:black;"
+     d="m1756 1774q-1 0 2-54t3-118q1-125 0-258t-36-267q-34-128-75-218t-89-157q-72-108-196-183t-259-98q9 49 8 96-2 36-34 36-37 0-33-36 3-132-94-226-76 80-82 186-2 35-36 31-32-1-32-37 0 0 2-8-41 13-86 37-29 20-47-10t16-47q43-22 65-33-86-88-196-142 12 139 76 263 17 26-8 46-28 22-47-7-7-10-20-36-21 21-28 31-7 9-24 40t-26 51q-9 25-8 40t3 35q-9 59-40 111t-81 127q-47 72-72 108t-38 92q-9 34 0 82t39 76q46 47 89 43 14 0 37-11t37-42q26-57 43-57 25 0 27 28 0 6-16 50-9 20-24 42-19 26-17 22 16 57 53 20 11-11 25-41t44-81q35-59 75-96t71-60q18-13 44-30t70-35q35-14 77-34t76-53q46-45 71-111 13-37 10-91-9-34 34-34 32 0 36 33 0 113-64 206 21 64 11 140-9 61-42 130t-136 155q-207 172-196 354 0 0 170 0t321 0h547z"
+     fill-rule="nonzero"
+     display="block"
+     fill="#fff"
+     id="path2" />
+  <path
+     style="color:black;"
+     d="m697 1359q13-20 10-42-10-64-71-54-18 3-29 12-4-5-12-22-11-32-42-22-31 12-24 45 45 115 163 158 34 10 45-20 12-32-18-44-6-3-11-5t-11-6zm-297-477q-29-18-35-48 1-33-31-36-35-4-36 30 4 66 59 105 26 21 48-4 22-27-5-47zm679 815q157-10 291-81t228-182q66-78 124-188t94-233q40-143 50-300t11-292v-218t-155 0-404 0h-671q-9 0-9 49t7 79q4 24 19 68t50 107q16 32 76 93t138 143q45 46 70 116t22 127q-37-30-81-49-212-76-307-220-7-9-45-81-20-38-34-52-19-19-55-21-56-3-87 54-42-12-75-10-56 21-81 45-51 51-66 102t-16 110q0 84 104 222 122 159 130 242 0 36 7 81 6 31 25 60 13 20 17 27t17 23q9 12 15 18t15 18q11 13 28 30-53 146-43 301 199-71 334-223 33 113 130 183 80-56 127-148zm677-1423q-1 0 2 54t3 118q1 125 0 258t-36 267q-34 128-75 218t-89 157q-72 108-196 183t-259 98q9-49 8-96-2-36-34-36-37 0-33 36 3 132-94 226-76-80-82-186-2-35-36-31-32 1-32 37 0 0 2 8-41-13-86-37-29-20-47 10t16 47q43 22 65 33-86 88-196 142 12-139 76-263 17-26-8-46-28-22-47 7-7 10-20 36-21-21-28-31-7-9-24-40t-26-51q-9-25-8-40t3-35q-9-59-40-111t-81-127q-47-72-72-108t-38-92q-9-34 0-82t39-76q46-47 89-43 14 0 37 11t37 42q26 57 43 57 25 0 27-28 0-6-16-50-9-20-24-42-19-26-17-22 16-57 53-20 11 11 25 41t44 81q35 59 75 96t71 60q18 13 44 30t70 35q35 14 77 34t76 53q46 45 71 111 13 37 10 91-9 34 34 34 32 0 36-33 0-113-64-206 21-64 11-140-9-61-42-130t-136-155q-207-172-196-354 0 0 170 0t321 0h547z"
+     fill-rule="nonzero"
+     transform="translate(0,2048) scale(1,-1)"
+     display="block"
+     fill="#000"
+     id="path4" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 718.84132,1770.5735 c -2.56462,-4.1496 1.1986,-49.9663 6.11049,-74.3944 11.48888,-57.1374 41.08721,-115.8949 86.82195,-172.3558 24.77804,-30.5892 56.85571,-62.4674 107.85478,-107.1841 63.39692,-55.5873 89.68046,-83.5791 115.10956,-122.5908 26.4423,-40.566 51.845,-110.549 58.7258,-161.7859 5.0893,-37.8973 1.5831,-94.7107 -7.7322,-125.2886 l -3.4204,-11.22767 7.9164,-12.37528 c 20.8749,-32.63269 40.5872,-81.36467 48.3471,-119.52153 1.9585,-9.63029 4.6818,-29.55401 6.0517,-44.27498 3.5685,-38.34649 -0.5238,-52.97107 -17.0117,-60.79513 -15.2978,-7.25931 -43.5558,-3.32174 -51.7847,7.21585 -2.3976,3.07026 -2.8124,9.29943 -1.7358,26.06826 2.8888,44.99716 -5.552,83.90684 -27.1889,125.33338 -14.9158,28.55819 -30.7181,49.82953 -54.42071,73.25515 -31.50968,31.14145 -64.24611,50.29855 -140.82554,82.40965 -58.91773,24.7053 -97.86033,47.5615 -144.25258,84.6647 -78.43309,62.7286 -112.29161,106.2782 -168.32044,216.4979 -13.3592,26.2802 -19.98472,36.5458 -30.31313,46.9672 -10.91972,11.0181 -14.58524,13.3363 -21.0867,13.3363 -9.25617,0 -17.92993,-7.9604 -23.54276,-21.6066 l -3.64014,-8.8501 12.41761,-17.8226 c 18.35678,-26.3469 25.9132,-40.9047 35.20785,-67.8297 12.34341,-35.7568 9.6545,-51.5333 -9.88207,-57.981 -16.74775,-5.5272 -28.62984,5.8932 -49.30018,47.3849 -15.91599,31.9482 -24.10634,41.1514 -46.1372,51.8429 -15.97898,7.7545 -19.68797,8.6379 -36.34961,8.6575 -16.1456,0.018 -20.64104,-0.9608 -34.62062,-7.5456 -19.30608,-9.0938 -44.31998,-28.813 -57.42909,-45.2732 -21.37841,-26.8434 -32.6282,-63.5775 -32.80374,-107.1146 -0.10366,-25.7112 1.87942,-36.6966 12.77002,-70.7407 8.42765,-26.3448 19.63997,-45.6267 74.85286,-128.7248 56.10526,-84.44115 98.95063,-151.58241 113.22569,-177.43146 11.69002,-21.16811 21.92577,-48.02971 28.20767,-74.02516 4.57595,-18.93597 5.20554,-26.35113 4.25045,-50.06091 -0.98065,-24.3443 -0.486,-29.72177 3.94696,-42.90827 9.80247,-29.15907 46.85824,-93.80979 65.71287,-114.64845 l 12.44634,-13.75602 9.8144,17.7793 c 10.39612,18.83314 20.39567,30.48633 28.31776,33.00071 18.00584,5.71482 46.15327,-16.59453 46.15327,-36.5806 0,-3.10943 -5.33027,-16.51998 -11.84507,-29.80123 -38.0045,-77.47716 -59.78879,-152.21988 -70.05018,-240.3449 l -1.13807,-9.77362 14.26413,7.18956 c 34.35064,17.3138 82.35465,48.94793 118.60374,78.15862 17.63469,14.2106 56.85628,51.08812 56.85628,53.45829 0,0.80845 -16.84326,10.26437 -37.42946,21.01313 -39.75154,20.75564 -46.0415,26.33468 -46.05903,40.85321 -0.0209,16.82208 18.30494,38.05449 32.84407,38.05449 3.65957,0 18.11371,-5.74739 32.12034,-12.77197 19.82545,-9.94285 69.46689,-31.3629 72.49595,-31.28168 0.29326,0.008 0.63057,5.04941 0.74955,11.20345 0.44528,23.02885 13.89467,34.04277 39.57383,32.40764 20.23925,-1.28873 25.7426,-6.76241 28.90014,-28.74434 8.84453,-61.5733 13.86243,-80.2427 30.49391,-113.45409 10.84512,-21.65669 22.53305,-39.3534 39.28945,-59.48823 l 12.01763,-14.44067 14.73523,16.09016 c 50.20552,54.82205 77.14722,122.94156 77.14722,195.05963 0,41.98189 6.7087,50.81195 37.2919,49.08383 17.4892,-0.98821 23.7293,-4.73621 29.1301,-17.49636 5.2983,-12.51797 3.5792,-75.87465 -2.8746,-105.94341 l -1.4415,-6.71602 10.1158,1.59661 c 60.926,9.61616 149.6481,41.75652 216.2861,78.35157 133.1705,73.13206 220.9219,167.40865 296.6811,318.74223 51.1841,102.24331 95.3016,239.12926 115.039,356.93866 12.9062,77.0349 12.9771,78.7311 12.9771,310.795 0,118.6356 -0.8913,231.0959 -1.9807,249.9117 l -1.9806,34.2107 h -516.8406 c -377.05888,0 -517.27206,-0.6982 -518.43608,-2.5817 z M 352.63469,1245.653 c 7.09991,-4.652 11.94181,-14.9711 13.79775,-29.4058 1.94729,-15.1453 13.87539,-33.5285 29.83299,-45.9777 20.91885,-16.3197 24.03466,-25.2663 15.17399,-43.57 -6.57931,-13.5911 -18.55774,-21.5217 -32.50637,-21.5217 -9.09212,0 -12.95605,1.5864 -24.39477,10.016 -36.02838,26.5505 -56.49977,64.3176 -56.49977,104.2348 0,16.0593 4.61291,25.3183 14.81638,29.7394 7.35251,3.1857 33.01378,0.9183 39.7798,-3.515 z M 581.12181,816.35437 c 4.82704,-2.49617 9.61618,-9.04632 16.22577,-22.19213 5.15755,-10.25786 10.11274,-18.26355 11.01149,-17.79037 18.68832,9.83854 43.39357,13.47331 60.32956,8.87598 21.05254,-5.71478 37.09659,-28.99268 39.26336,-56.96615 0.98272,-12.68714 -0.5955,-20.52287 -7.2678,-36.08405 -1.1845,-2.76248 2.29821,-5.41704 14.80653,-11.28575 8.99543,-4.22051 18.42337,-10.30277 20.95099,-13.51611 9.39267,-11.94084 3.4768,-40.19493 -10.76867,-51.43101 -27.88184,-21.99176 -125.90225,35.35312 -167.86656,98.20696 -35.98042,53.89123 -39.65003,86.66774 -11.2756,100.71269 11.86908,5.87502 24.99388,6.43276 34.59093,1.46994 z"
+     id="path14" />
+</svg>
diff --git a/client/public/images/pieces/Musketeer/wo.svg b/client/public/images/pieces/Musketeer/wo.svg
new file mode 120000 (symlink)
index 0000000..a9c2cd1
--- /dev/null
@@ -0,0 +1 @@
+wm.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Musketeer/ws.svg b/client/public/images/pieces/Musketeer/ws.svg
new file mode 100644 (file)
index 0000000..a2b8cdc
--- /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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   height="100%"
+   width="100%"
+   version="1.1"
+   viewBox="0 0 2048 2048"
+   id="svg34"
+   sodipodi:docname="ws.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07, custom)">
+  <metadata
+     id="metadata40">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs38" />
+  <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="1060"
+     id="namedview36"
+     showgrid="false"
+     inkscape:zoom="0.43115234"
+     inkscape:cx="1024"
+     inkscape:cy="1021.6806"
+     inkscape:window-x="0"
+     inkscape:window-y="20"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg34" />
+  <path
+     style="color:black;"
+     d="m1024 1621q-57 0-96 40t-40 97q0 56 39 96t97 40q56 0 96-40t41-96q0-57-40-97t-97-40zm0 70q67 0 67 67 0 66-67 66-66 0-66-66 0-67 66-67zm509-1007q-193 49-505 49-320 0-511-50l15-96q195 46 496 46 299 0 488-45l17 96zm25 60 65 115q-48-19-98-19-134 0-214 109-60-50-134-50-96 0-153 75-64-70-153-70-72 0-132 49-84-107-217-107-51 0-101 19l70-120q194 56 533 56 345 0 534-57zm-448 239-85 489-85-483q3 2 14 10 23 45 70 45 51 0 66-45 6-6 20-16zm277-19v463l-165-454q19 7 32 18 20 25 54 25 40 0 64-35 3-4 7-8t8-9zm-562 14-164 449v-457q3 4 9 10 20 42 66 42 38 0 62-32 27-12 27-12zm-254-56-215 371 55-338q57-40 111-40 21 0 49 7zm903-5q23-7 51-7 61 0 114 38l55 346-220-377zm60-506-30 113q-196 43-480 43-281 0-479-43l-31-114q186 56 511 56 317 0 509-55zm106-128q-49-43-220-72t-394-29q-227 0-399 30t-217 75l63 240-28 157-88 153-85 622 49 19 274-462 6 550 68 12 209-553 112 595h69l112-593 207 551 69-12 6-550 275 463 47-22-83-619-89-153-28-159 65-243zm-81 36q-183 76-531 76-355 0-537-78 175-69 534-69 172 0 314 19t220 52zm-955 1252q-57 0-97 39t-40 97q0 56 40 96t97 40q56 0 96-40t40-96q0-57-40-96t-96-40zm0 70q66 0 66 66t-66 66q-67 0-67-66t67-66zm840 0q67 0 67 66t-67 66q-66 0-66-66t66-66zm0-70q-57 0-96 39t-40 97q0 56 39 96t97 40q57 0 97-40t40-96q0-57-40-96t-97-40zm-1208-110q-57 0-96 39t-40 97q0 56 39 96t97 41q57 0 97-40t40-97-40-96-97-40zm0 70q67 0 67 66 0 67-67 67-66 0-66-67 0-66 66-66zm1578 0q66 0 66 66 0 67-66 67-67 0-67-67 0-66 67-66zm0-70q-57 0-97 39t-40 97q0 56 40 96t97 41q56 0 96-40t40-97-40-96-96-40z"
+     fill-rule="nonzero"
+     transform="translate(0,2048) scale(1,-1)"
+     display="block"
+     fill="#000"
+     id="path2" />
+  <g
+     fill-rule="nonzero"
+     fill="#fff"
+     id="g32">
+    <path
+       style="color:black;"
+       d="m1024 357q67 0 67-67 0-66-67-66-66 0-66 66 0 67 66 67z"
+       display="block"
+       id="path4" />
+    <path
+       style="color:black;"
+       d="m1533 1364q-193-49-505-49-320 0-511 50l15 96q195-46 496-46 299 0 488 45l17-96z"
+       display="block"
+       id="path6" />
+    <path
+       style="color:black;"
+       d="m1558 1304 65-115q-48 19-98 19-134 0-214-109-60 50-134 50-96 0-153-75-64 70-153 70-72 0-132-49-84 107-217 107-51 0-101-19l70 120q194-56 533-56 345 0 534 57z"
+       display="block"
+       id="path8" />
+    <path
+       style="color:black;"
+       d="m1110 1065-85-489-85 483q3-2 14-10 23-45 70-45 51 0 66 45 6 6 20 16z"
+       display="block"
+       id="path10" />
+    <path
+       style="color:black;"
+       d="m1387 1084v-463l-165 454q19-7 32-18 20-25 54-25 40 0 64 35 3 4 7 8t8 9z"
+       display="block"
+       id="path12" />
+    <path
+       style="color:black;"
+       d="m825 1070-164-449v457q3-4 9-10 20-42 66-42 38 0 62 32 27 12 27 12z"
+       display="block"
+       id="path14" />
+    <path
+       style="color:black;"
+       d="m571 1126-215-371 55 338q57 40 111 40 21 0 49-7z"
+       display="block"
+       id="path16" />
+    <path
+       style="color:black;"
+       d="m1474 1131q23 7 51 7 61 0 114-38l55-346-220 377z"
+       display="block"
+       id="path18" />
+    <path
+       style="color:black;"
+       d="m1534 1637-30-113q-196-43-480-43-281 0-479 43l-31 114q186-56 511-56 317 0 509 55z"
+       display="block"
+       id="path20" />
+    <path
+       style="color:black;"
+       d="m1559 1729q-183-76-531-76-355 0-537 78 175 69 534 69 172 0 314-19t220-52z"
+       display="block"
+       id="path22" />
+    <path
+       style="color:black;"
+       d="m604 407q66 0 66-66t-66-66q-67 0-67 66t67 66z"
+       display="block"
+       id="path24" />
+    <path
+       style="color:black;"
+       d="m1444 407q67 0 67-66t-67-66q-66 0-66 66t66 66z"
+       display="block"
+       id="path26" />
+    <path
+       style="color:black;"
+       d="m236 517q67 0 67-66 0-67-67-67-66 0-66 67 0 66 66 66z"
+       display="block"
+       id="path28" />
+    <path
+       style="color:black;"
+       d="m1814 517q66 0 66-66 0-67-66-67-67 0-67 67 0 66 67 66z"
+       display="block"
+       id="path30" />
+  </g>
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 662.34236,850.76429 c 0.1368,-186.00815 0.65891,-220.89344 3.20427,-214.09838 10.88381,29.05521 155.14443,424.06779 156.06349,427.33099 1.93867,6.8835 -19.86622,-4.1962 -31.12153,-15.8138 -16.03009,-16.5461 -31.93435,-22.6994 -57.58844,-22.2808 -26.11215,0.4261 -44.4755,10.485 -58.14147,31.8484 -4.33792,6.7812 -8.94297,12.9821 -10.23344,13.7796 -1.57636,0.9743 -2.29268,-71.4704 -2.18288,-220.76601 z"
+     id="path42" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 503.04764,1130.4345 c -25.86537,-2.9402 -59.53609,-16.7608 -88.36171,-36.2693 -2.36773,-1.6025 -57.61315,-329.66498 -55.7697,-331.17589 0.32201,-0.26392 47.78878,81.0563 105.48172,180.71162 l 104.89626,181.19147 -10.96194,2.5145 c -17.26665,3.9607 -37.38422,5.0624 -55.28463,3.0276 z"
+     id="path44" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 208.00679,511.79972 c -25.7541,-9.21182 -36.42191,-27.41696 -36.29912,-61.94624 0.0648,-18.20936 0.93664,-22.73971 6.60671,-34.32892 10.49597,-21.45299 26.12445,-29.4799 57.691,-29.63054 43.3619,-0.20693 64.90918,20.15867 65.32613,61.74358 0.4551,45.38961 -17.77365,65.63759 -60.89468,67.64012 -15.65602,0.72706 -22.82242,-0.0415 -32.43004,-3.478 z"
+     id="path46" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 589.11891,404.66236 c -16.63268,-2.51813 -24.34732,-6.03477 -34.16616,-15.57427 -10.99061,-10.67794 -16.21562,-26.19006 -16.21562,-48.14132 0,-21.92779 5.22529,-37.45321 16.21562,-48.17998 11.89234,-11.60714 25.24079,-15.86733 49.8314,-15.9038 25.65509,-0.038 41.83843,6.47224 52.42821,21.09102 15.81958,21.83829 15.81958,64.14724 0,85.98553 -12.0248,16.59975 -39.69861,25.0217 -68.09345,20.72282 z"
+     id="path48" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 996.19959,351.61612 c -24.09548,-8.57633 -37.14183,-30.26569 -37.14183,-61.74774 0,-28.71305 10.64785,-48.66362 31.04,-58.15873 9.68208,-4.50822 15.66384,-5.53034 32.47344,-5.54883 27.1263,-0.0298 37.291,3.24005 50.1997,16.14871 12.6767,12.67677 16.1713,23.08588 16.1713,48.16852 0,31.32461 -8.8387,48.49497 -29.9418,58.16583 -17.707,8.11455 -44.7565,9.39476 -62.80081,2.97224 z"
+     id="path50" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 1428.6804,404.75692 c -32.1676,-4.72596 -49.8174,-27.33324 -49.8174,-63.81015 0,-28.84648 10.8111,-48.89714 31.4627,-58.35176 10.3778,-4.75108 16.1488,-5.75685 32.8902,-5.73202 24.5906,0.0365 37.939,4.29666 49.8314,15.9038 10.9252,10.66329 16.2173,26.27364 16.2097,47.81483 -0.01,23.01768 -3.7513,34.90345 -14.7499,46.83544 -13.5661,14.71754 -38.6683,21.32987 -65.8267,17.33986 z"
+     id="path52" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 1791.0549,513.67483 c -12.9445,-3.266 -20.9986,-8.00629 -28.9068,-17.01314 -10.1017,-11.50526 -13.3463,-22.85948 -13.3463,-46.70473 0,-18.25175 0.83,-22.56466 6.6067,-34.32891 10.6791,-21.74796 26.1225,-29.57841 58.3356,-29.57841 20.9969,0 30.9625,2.33721 41.8889,9.82412 21.865,14.98217 30.021,55.77345 17.6022,88.03619 -3.8701,10.0543 -15.9915,22.12836 -26.4697,26.36641 -11.507,4.65415 -43.0963,6.58117 -55.7106,3.39847 z"
+     id="path54" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 1372.1048,1065.3193 c -20.4903,-25.3237 -43.5366,-36.1832 -71.289,-33.5916 -17.2724,1.6129 -29.0198,7.179 -44.8792,21.2644 -10.5277,9.35 -29.6734,21.1921 -31.1977,19.2965 -0.328,-0.4079 35.736,-100.41635 80.1422,-222.24103 l 80.7385,-221.49944 0.1007,225.55833 c 0.055,124.05707 -0.3737,225.55834 -0.9536,225.55834 -0.5799,0 -6.2778,-6.4555 -12.6619,-14.3455 z"
+     id="path56" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 1500.0645,1135.4484 c -17.8192,-2.8248 -24.2108,-4.6914 -23.3731,-6.826 1.6341,-4.1639 213.8524,-366.59804 214.3595,-366.09093 0.2994,0.29939 -11.4827,76.17827 -26.1825,168.61973 -20.7582,130.541 -27.5785,168.7512 -30.5405,171.1014 -8.5794,6.8075 -51.2235,25.9764 -65.3954,29.3959 -18.7087,4.5141 -52.575,6.3827 -68.868,3.7999 z"
+     id="path58" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 1098.7811,1055.0617 c -4.0782,-3.1917 -9.357,-10.1933 -11.7306,-15.5592 -5.5487,-12.544 -17.3246,-24.2506 -30.5533,-30.3739 -15.2142,-7.0423 -50.1379,-6.7668 -65.06519,0.5133 -11.9593,5.8326 -25.95753,18.6114 -33.55046,30.6277 -5.93112,9.3864 -12.21923,15.176 -14.263,13.1323 -1.13403,-1.1341 79.67315,-467.6533 81.31065,-469.42593 0.2562,-0.27732 19.0363,106.5189 41.7337,237.32493 22.6973,130.80604 40.8775,238.2195 40.4005,238.6965 -0.4771,0.477 -4.2041,-1.744 -8.2823,-4.9357 z"
+     id="path60" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 458.45119,1245.3378 c -18.28255,-31.3734 -32.84247,-57.441 -32.35537,-57.9281 0.4871,-0.4871 7.6207,1.1236 15.85244,3.5795 54.18223,16.1646 117.1386,15.2257 170.3006,-2.5396 40.66242,-13.5883 75.31224,-36.4108 108.40975,-71.4051 l 19.21908,-20.3205 11.59683,8.8763 c 15.73161,12.041 44.79662,26.0894 67.26161,32.5104 24.33497,6.9555 77.38081,7.6003 100.61177,1.2231 34.83265,-9.5621 58.18191,-22.1165 86.6454,-46.5871 l 18.5062,-15.9102 10.3749,11.8599 c 20.647,23.6027 49.3322,42.0419 81.9002,52.6464 18.169,5.9161 22.715,6.4321 57.9842,6.5813 33.1564,0.1403 40.684,-0.5378 56.3408,-5.0759 21.6461,-6.274 46.3564,-18.3213 65.6535,-32.0086 l 14.1438,-10.0322 13.0225,15.8295 c 29.0231,35.2793 67.0238,62.0623 109.8847,77.4472 50.4725,18.1171 119.9565,19.1029 170.7674,2.4229 6.142,-2.0162 11.724,-3.1092 12.4045,-2.4287 1.2763,1.2763 -56.4528,105.1891 -59.4762,107.0577 -0.9318,0.5759 -11.1934,-1.5559 -22.8035,-4.7373 -121.592,-33.3189 -289.7339,-49.6837 -510.6963,-49.7046 -182.78804,-0.017 -315.09417,9.9126 -434.88109,32.6392 -32.72433,6.2086 -85.23084,18.367 -94.22724,21.8192 -2.22224,0.8528 -13.3525,-16.1951 -36.44048,-55.8147 z"
+     id="path62" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 532.29445,1458.2433 c 0,-1.1606 -3.17882,-22.2315 -7.06404,-46.8243 -3.88523,-24.5927 -6.65903,-45.1191 -6.164,-45.6141 1.83802,-1.8381 61.88992,-14.7854 94.40584,-20.3542 107.82409,-18.4662 212.63531,-26.5171 371.09853,-28.5053 203.81772,-2.5571 367.74782,9.4867 497.50392,36.5514 49.9516,10.419 50.4142,10.5892 48.8536,17.979 -0.7233,3.4251 -4.4889,23.9282 -8.3679,45.5624 -3.8791,21.6343 -7.4176,39.6997 -7.8635,40.1456 -0.4458,0.4458 -19.449,-2.8526 -42.2294,-7.3298 -104.0435,-20.4483 -198.5885,-29.6188 -353.9599,-34.3328 -138.06121,-4.1888 -291.3846,1.2601 -406.4623,14.445 -59.85533,6.8579 -150.48916,21.9284 -175.69196,29.2138 -2.23239,0.6454 -4.05889,0.2238 -4.05889,-0.9367 z"
+     id="path64" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 516.52398,1632.6449 c 0.66589,-2.4476 7.22654,-26.89 14.57921,-54.3165 7.35268,-27.4265 14.18893,-50.7652 15.19167,-51.8637 3.99842,-4.3806 100.91168,-21.1038 162.27139,-28.0013 101.73318,-11.436 184.45824,-15.4968 315.43375,-15.484 142.0836,0.014 228.1174,4.5913 336.308,17.8932 40.4143,4.9689 127.4391,19.3582 139.3533,23.0417 2.6139,0.8081 7.766,16.6143 17.8984,54.9104 7.8254,29.5767 13.8016,54.2021 13.2805,54.7232 -0.5211,0.521 -16.4032,-2.7985 -35.2936,-7.3768 -135.0337,-32.7268 -317.4975,-48.3726 -520.25328,-44.6103 -143.15731,2.6565 -237.14771,10.2534 -337.45294,27.2751 -36.68945,6.2261 -105.59427,21.7151 -118.09541,26.5464 -3.59537,1.3895 -4.20323,0.8729 -3.22099,-2.7374 z"
+     id="path66" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 904.55266,1797.0338 c -109.22626,-3.5609 -239.61617,-19.0316 -317.72142,-37.6975 -25.02575,-5.9807 -84.6614,-24.0715 -90.21089,-27.366 -4.84525,-2.8764 63.05715,-25.9802 109.89381,-37.3914 112.60217,-27.4343 242.78787,-39.6774 422.12454,-39.6981 201.3376,-0.023 345.7735,16.2503 466.1528,52.5213 29.8659,8.9988 58.0239,19.5691 58.0239,21.7819 0,2.7513 -52.8837,19.679 -86.7148,27.757 -82.957,19.8077 -191.6331,33.2607 -318.0145,39.3669 -43.4273,2.0982 -188.20193,2.5297 -243.53344,0.7259 z"
+     id="path68" />
+</svg>
diff --git a/client/public/images/pieces/Musketeer/wt.svg b/client/public/images/pieces/Musketeer/wt.svg
new file mode 120000 (symlink)
index 0000000..f1c400f
--- /dev/null
@@ -0,0 +1 @@
+ws.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Musketeer/wu.svg b/client/public/images/pieces/Musketeer/wu.svg
new file mode 100644 (file)
index 0000000..feef69c
--- /dev/null
@@ -0,0 +1,121 @@
+<?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"
+   height="100%"
+   width="100%"
+   version="1.1"
+   viewBox="0 0 2048 2048"
+   id="svg18"
+   sodipodi:docname="wu.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07, custom)">
+  <metadata
+     id="metadata24">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs22" />
+  <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="1060"
+     id="namedview20"
+     showgrid="false"
+     inkscape:zoom="0.43115234"
+     inkscape:cx="1024"
+     inkscape:cy="1021.6806"
+     inkscape:window-x="0"
+     inkscape:window-y="20"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg18" />
+  <path
+     style="color:black;"
+     d="m1161 1706h170v137h274v-375l-222-171v-478l170-170v-205h153v-239h-1365v239h153v205l171 170v478l-222 171v375h273v-137h171v137h274v-137zm478-1330h-1230v-103h1230v103zm-155 204h-920v-136h920v136zm-170 717h-580v-478h580v478zm222 239v239h-137v-137h-308v137h-135v-137h-307v137h-137v-239h1024zm-77-887l-103 102h-663l-105-102h871zm-110 716l127 103h-904l128-103h649z"
+     fill-rule="nonzero"
+     transform="translate(0,2048) scale(1,-1)"
+     display="block"
+     fill="#000"
+     id="path2" />
+  <g
+     fill-rule="nonzero"
+     fill="#fff"
+     id="g12">
+    <path
+       style="color:black;"
+       d="m1639 1672h-1230v103h1230v-103z"
+       display="block"
+       id="path4" />
+    <path
+       style="color:black;"
+       d="m1484 1468h-920v136h920v-136z"
+       display="block"
+       id="path6" />
+    <path
+       style="color:black;"
+       d="m1314 751h-580v478h580v-478z"
+       display="block"
+       id="path8" />
+    <path
+       style="color:black;"
+       d="m1536 512v-239h-137v137h-308v-137h-135v137h-307v-137h-137v239h1024z"
+       display="block"
+       id="path10" />
+  </g>
+  <path
+     style="color:black;"
+     d="m1459 1399-103-102h-663l-105 102h871z"
+     fill-rule="nonzero"
+     display="block"
+     fill="#fff"
+     id="path14" />
+  <path
+     style="color:black;"
+     d="m1349 683 127-103h-904l128 103h649z"
+     fill-rule="nonzero"
+     display="block"
+     fill="#fff"
+     id="path16" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="M 513.73952,393.1325 V 274.84485 h 67.26161 67.26161 v 68.42129 68.42129 h 154.23783 154.23782 v -68.42129 -68.42129 h 66.06691 66.0669 l 0.6149,67.84145 0.6148,67.84145 154.8177,0.59628 154.8177,0.59628 v -68.43773 -68.43773 h 67.2616 67.2616 V 393.1325 511.42016 H 1024 513.73952 Z"
+     id="path26" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 638.33544,632.41875 -62.11304,-50.25793 223.8888,-0.59138 c 123.13884,-0.32526 324.6637,-0.32526 447.8331,0 l 223.9442,0.59138 -62.1685,50.42022 -62.1685,50.42023 L 1024,682.83898 700.44847,682.67669 Z"
+     id="path28" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="M 734.07928,990.3692 V 752.6342 H 1024 1313.9207 v 237.735 237.735 H 1024 734.07928 Z"
+     id="path30" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 642.46433,1347.5426 51.02604,-49.6853 330.50963,-0.063 330.5096,-0.063 51.0261,49.7224 51.026,49.7224 -432.5617,0.026 -432.56172,0.026 51.02605,-49.6853 z"
+     id="path32" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 564.76557,1536.5798 v -67.2616 H 1024 1483.2344 v 67.2616 67.2616 H 1024 564.76557 Z"
+     id="path34" />
+  <path
+     style="fill:#ffdead;stroke:#000000;stroke-width:2.31937"
+     d="m 409.36806,1723.2888 v -49.8664 H 1024 1638.6319 v 49.8664 49.8664 H 1024 409.36806 Z"
+     id="path36" />
+</svg>
diff --git a/client/public/images/pieces/Musketeer/wv.svg b/client/public/images/pieces/Musketeer/wv.svg
new file mode 120000 (symlink)
index 0000000..da776a4
--- /dev/null
@@ -0,0 +1 @@
+wu.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Musketeer/ww.svg b/client/public/images/pieces/Musketeer/ww.svg
new file mode 120000 (symlink)
index 0000000..8eeec8e
--- /dev/null
@@ -0,0 +1 @@
+../Shako/wc.svg
\ No newline at end of file
diff --git a/client/public/images/pieces/Musketeer/wx.svg b/client/public/images/pieces/Musketeer/wx.svg
new file mode 100644 (file)
index 0000000..644d6e8
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="45" height="45">\r
+ <g>\r
+  <title>Unicorn</title>\r
+  <g id="Head" style="opacity:1; fill:none; fill-opacity:1; fill-rule:evenodd; stroke:#000000; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; stroke-miterlimit:4; stroke-dasharray:none; stroke-opacity:1;">\r
+    <path id="Neck" d="M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18" style="fill:#ffffff; stroke:#000000;"/>\r
+   <path id="Face" d="m24,18c0.38,2.91 -5.55,7.37 -8,9c-3,2 -2.82,4.34 -5,4c-1.042,-0.94 1.41,-3.04 0,-3c-1,0 0.19,1.23 -1,2c-1,0 -4,1 -4,-4c0,-2 6,-12 6,-12c0,0 -7.5275,-6.475 -7.0413,-7.15c0.4863,-0.675 8.9863,4.45 9.0413,3.65c-0.73,-0.994 -0.5,-2 -0.5,-3c1,-1 3,2.5 3,2.5l2,0c0,0 0.78,-1.992 2.5,-3c1,0 1,3 1,3" style="fill:#ffffff; stroke:#000000;"/>\r
+    <path id="Nose" d="M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z" style="fill:#000000; stroke:#000000;"/>\r
+    <path id="Eye" d="M 15 15.5 A 0.5 1.5 0 1 1  14,15.5 A 0.5 1.5 0 1 1  15 15.5 z" transform="matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)" style="fill:#000000; stroke:#000000;"/>\r
+  </g>\r
+ </g>\r
+</svg>\r
diff --git a/client/public/images/pieces/Musketeer/wy.svg b/client/public/images/pieces/Musketeer/wy.svg
new file mode 100644 (file)
index 0000000..95e4b12
--- /dev/null
@@ -0,0 +1,134 @@
+<?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"
+   height="512pt"
+   viewBox="0 0 512 512.00028"
+   width="512pt"
+   version="1.1"
+   id="svg180"
+   sodipodi:docname="wy.svg"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07, custom)">
+  <metadata
+     id="metadata186">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs184" />
+  <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="1060"
+     id="namedview182"
+     showgrid="false"
+     inkscape:zoom="1.293457"
+     inkscape:cx="341.33333"
+     inkscape:cy="341.33333"
+     inkscape:window-x="0"
+     inkscape:window-y="20"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg180" />
+  <path
+     d="m 236.62626,289.12376 h -0.0447 L 200.0925,264.80001 c -3.45125,-2.29969 -8.1125,-1.36812 -10.41563,2.07968 -2.29969,3.45125 -1.36812,8.11595 2.07969,10.41563 l 0.49844,0.33 c -10.27469,8.12969 -14.08344,21.98282 -9.41532,34.21687 4.67157,12.2375 16.74407,20.03032 29.82032,19.24657 13.07281,-0.78719 24.12781,-9.96532 27.30062,-22.67375 0.33688,0.0757 0.67719,0.12718 1.02094,0.15125 3.31031,0.003 6.23219,-2.16219 7.19469,-5.32812 0.9625,-3.16938 -0.26469,-6.59313 -3.01813,-8.42875 z m -25.68157,26.95 c -7.32188,-0.0447 -13.54375,-5.35907 -14.72968,-12.58469 -1.18595,-7.22218 3.0078,-14.24843 9.93093,-16.63406 l 19.69,13.12781 c 0,0.36782 0.12719,0.69782 0.12719,1.0725 0,8.29469 -6.72375,15.01844 -15.01844,15.01844 z m 0,0"
+     id="path168"
+     style="stroke-width:0.88" />
+  <path
+     d="m 319.74844,277.59782 0.495,-0.33 c 2.23094,-1.49188 3.49937,-4.05625 3.3275,-6.73406 -0.17531,-2.67782 -1.76343,-5.06 -4.16968,-6.24937 -2.40625,-1.18595 -5.26282,-1.00375 -7.49375,0.48812 l -36.4822,24.32031 -0.0653,0.0447 -8.50781,5.67187 c -2.75344,1.83563 -3.98063,5.25594 -3.02156,8.42531 0.95906,3.16594 3.8775,5.33157 7.18781,5.33157 0.34031,-0.0241 0.68062,-0.0756 1.01406,-0.15125 3.17969,12.69812 14.23125,21.86593 27.29719,22.64625 13.06594,0.78031 25.12812,-7.00563 29.79969,-19.23282 4.67156,-12.22718 0.86968,-26.07343 -9.39125,-34.20312 z m -18.69313,38.47594 c -8.29468,0 -15.01843,-6.72375 -15.01843,-15.01844 0,-0.37468 0.10659,-0.70468 0.12718,-1.0725 l 19.69,-13.12781 c 6.92313,2.38563 11.11688,9.41188 9.93095,16.63406 -1.18595,7.22562 -7.40782,12.54 -14.7297,12.58469 z m 0,0"
+     id="path170"
+     style="stroke-width:0.88" />
+  <path
+     d="m 210.90001,148.82564 c 3.7228,4.88812 9.06125,8.29812 15.06312,9.62155 v 23.87 c 0.41593,7.8925 7.1225,13.97 15.01843,13.60907 h 30.03688 c 7.89594,0.36093 14.6025,-5.71657 15.01844,-13.60907 v -23.87 c 5.99843,-1.32343 11.33343,-4.73 15.05625,-9.61125 1.13093,-1.54343 2.14843,-3.16593 3.04906,-4.85375 5.89875,-10.87625 5.89875,-24.00062 0,-34.8803 -2.88063,-5.32813 -6.83718,-10.003127 -11.61531,-13.725945 -4.9775,-3.905 -10.59094,-6.912807 -16.59625,-8.892807 -12.94907,-4.241877 -26.91219,-4.241877 -39.86125,0 -6.00532,1.98 -11.61875,4.987807 -16.59625,8.892807 -4.77469,3.722818 -8.73125,8.394375 -11.61532,13.719065 -5.89875,10.87968 -5.89875,24.00063 0,34.88031 0.8972,1.68782 1.9147,3.31032 3.0422,4.85032 z m 30.08155,31.96187 v -14.89812 h 30.03688 v 15.01843 z m -19.86875,-64.63532 c 1.9147,-3.5028 4.53407,-6.56905 7.69657,-9.00968 3.59906,-2.82219 7.66563,-4.99469 12.01406,-6.42125 9.845,-3.20719 20.44969,-3.20719 30.29469,0 4.345,1.42656 8.41156,3.59906 12.01406,6.42125 3.15907,2.43718 5.78187,5.50688 7.69657,9.00968 3.54405,6.46938 3.54405,14.29657 0,20.76595 -0.57063,1.05875 -1.21345,2.07968 -1.92157,3.05593 -2.65031,2.93907 -6.48656,4.52719 -10.43968,4.3175 -3.75032,0.0241 -6.8922,2.84282 -7.32188,6.56907 h -30.41157 c -0.44343,-3.69188 -3.54062,-6.49345 -7.26343,-6.5622 -3.94969,0.20625 -7.7825,-1.38187 -10.42937,-4.32437 -0.7047,-0.97625 -1.3475,-1.99718 -1.9147,-3.05593 -3.54405,-6.46938 -3.54405,-14.29657 0,-20.76595 z m 0,0"
+     id="path172"
+     style="stroke-width:0.88" />
+  <path
+     d="m 235.65001,133.67314 c 2.95968,2.90468 7.70343,2.90468 10.66312,0 0.66,-0.7322 1.19281,-1.57095 1.57781,-2.47845 0.80094,-1.81843 0.80094,-3.8878 0,-5.70625 -0.68406,-1.88718 -2.16906,-3.37218 -4.05625,-4.05625 -2.79468,-1.17562 -6.02593,-0.55343 -8.18468,1.57782 -1.37157,1.44031 -2.15188,3.34468 -2.17938,5.33156 -0.0241,0.98657 0.18218,1.96282 0.60156,2.85312 0.385,0.9075 0.91782,1.74625 1.57782,2.47845 z m 0,0"
+     id="path174"
+     style="stroke-width:0.88" />
+  <path
+     d="m 265.68688,133.67314 c 2.96313,2.90468 7.70343,2.90468 10.66313,0 0.66,-0.7322 1.19625,-1.57095 1.5778,-2.47845 0.80095,-1.81843 0.80095,-3.8878 0,-5.70625 -0.68405,-1.88718 -2.16905,-3.37218 -4.05625,-4.05625 -2.79468,-1.17562 -6.02593,-0.55343 -8.18468,1.57782 -1.37157,1.44031 -2.14844,3.34468 -2.17594,5.33156 -0.0275,0.98657 0.17875,1.96282 0.59812,2.85312 0.385,0.9075 0.91782,1.74625 1.57782,2.47845 z m 0,0"
+     id="path176"
+     style="stroke-width:0.88" />
+  <path
+     d="m 475.48438,292.87751 -59.85032,-46.5575 c -5.64093,-4.35875 -13.5678,-4.16625 -18.99218,0.45718 l -34.54344,29.61063 c -2.47843,-4.18688 -5.23875,-8.19843 -8.26031,-12.01406 17.71688,-24.39937 28.06375,-53.36719 29.82031,-83.46594 -0.11,-67.51593 -52.75188,-123.279059 -120.1475,-127.276872 v -15.4 c 0,-4.149062 -3.36188,-7.510937 -7.51093,-7.510937 -4.14563,0 -7.5075,3.361875 -7.5075,7.510937 v 15.4 c -67.39907,3.997813 -120.04095,59.760942 -120.15095,127.276872 1.7497,30.10219 12.09313,59.07344 29.80313,83.47969 -3.01813,3.81563 -5.77843,7.83063 -8.26031,12.01406 l -34.54,-29.61406 c -5.42782,-4.62 -13.34782,-4.80562 -18.985316,-0.44344 l -59.850311,46.5575 c -3.6575,2.8325 -5.795625,7.20157 -5.78875,11.825 v 48.895 c 0,3.19 2.014373,6.03282 5.022186,7.08812 3.01125,1.05875 6.359376,0.0962 8.353126,-2.39593 l 29.510938,-36.89125 31.652507,-25.32407 30.62812,30.63157 c 0,0.20281 -0.0343,0.40563 -0.0343,0.60843 0,1.27532 0.0962,2.5025 0.14093,3.75375 h -26.80905 c -4.29,0.003 -8.3772,1.83907 -11.226878,5.04625 l -54.065004,60.82657 c -4.4,4.99468 -5.011875,12.28218 -1.502188,17.94031 l 34.543438,55.30594 c 1.36125,2.20343 3.760623,3.5475 6.3525,3.55781 0.70125,0 1.399061,-0.0997 2.072811,-0.29218 3.2175,-0.9247 5.434693,-3.8672 5.434693,-7.21532 v -57.43031 l 26.131878,-32.68032 h 33.87655 l -19.76562,41.72782 c -2.43375,5.10813 -1.78063,11.15468 1.69125,15.62688 l 34.72907,44.85937 c 1.42312,1.83906 3.61625,2.915 5.94,2.915 1.04843,0.003 2.08655,-0.21657 3.04218,-0.64625 3.15907,-1.39907 4.95344,-4.76782 4.35532,-8.17094 l -7.00563,-39.64125 18.44218,-29.18093 c 2.3272,0.8628 4.72313,1.66718 7.18782,2.42 l 4.24188,16.96062 c 0.7975,3.19 3.575,5.48968 6.85437,5.67875 l 0.42968,0.0137 c 3.13157,0.003 5.93313,-1.93532 7.03657,-4.86407 l 4.35531,-11.6325 c 10.70782,0.91438 21.91062,1.5022 33.66344,1.5022 11.75281,0 22.95563,-0.56375 33.66343,-1.5022 l 4.35532,11.6325 c 1.10343,2.92875 3.90843,4.8675 7.03656,4.86407 h 0.42969 c 3.27938,-0.18562 6.05688,-2.48875 6.85438,-5.67532 l 4.24187,-16.96405 c 2.46468,-0.75282 4.86063,-1.5572 7.18781,-2.42 l 18.44219,29.18437 -7.00562,39.64125 c -0.59813,3.39968 1.19968,6.77188 4.3553,8.1675 0.95907,0.42625 1.99375,0.63938 3.0422,0.6325 2.32375,0 4.51687,-1.07594 5.94,-2.915 l 34.72905,-44.85937 c 3.47188,-4.46875 4.12845,-10.51188 1.69125,-15.62 l -19.76562,-41.7347 h 41.38407 l 26.13187,32.67 v 57.44063 c 0,3.34812 2.22063,6.29062 5.43813,7.21532 0.67375,0.1925 1.37155,0.29218 2.0728,0.29218 2.58845,0 4.9947,-1.33375 6.36625,-3.52688 l 34.54345,-55.30593 c 3.50968,-5.65812 2.8978,-12.94562 -1.5022,-17.94032 l -54.065,-60.82655 c -2.84968,-3.22438 -6.9403,-5.07032 -11.24405,-5.0772 h -34.1722 c -0.055,0 -0.0997,0 -0.14437,0 0.0447,-1.26155 0.14437,-2.49905 0.14437,-3.75375 0,-0.2028 0,-0.40562 -0.0378,-0.60843 l 30.62813,-30.62125 31.6525,25.31375 29.51093,36.89125 c 1.99375,2.49218 5.34188,3.45468 8.35313,2.39593 3.01125,-1.0553 5.02219,-3.89812 5.02219,-7.08812 v -48.895 c 0.0138,-4.63375 -2.13125,-9.01313 -5.79563,-11.84906 z m -156.27907,94.91968 c -0.1478,0.0825 -0.3128,0.0825 -0.45718,0.17188 l -0.0447,0.0447 -1.7875,0.75281 6.44188,-25.795 c 0.56719,-2.24813 0.0688,-4.63031 -1.35438,-6.45563 -1.42656,-1.82875 -3.61281,-2.89437 -5.92968,-2.89437 h -120.1475 c -2.31344,0 -4.49282,1.06562 -5.91594,2.8875 -1.42313,1.82187 -1.92844,4.19719 -1.36813,6.43844 l 6.44188,25.795 -1.7875,-0.74938 -0.0447,-0.0481 c -0.14095,-0.0894 -0.29907,-0.0894 -0.44345,-0.165 -10.2678,-4.00125 -19.5078,-10.2575 -27.0325,-18.30812 -0.16843,-0.19938 -0.35062,-0.38844 -0.53968,-0.57063 -1.21344,-1.38187 -2.35812,-2.82562 -3.42719,-4.32437 l -0.20281,-0.29219 c -7.36657,-10.88313 -11.12375,-23.80813 -10.73532,-36.94625 0,-51.76188 47.15563,-93.86781 105.12907,-93.86781 57.97343,0 105.1325,42.10593 105.1325,93.86781 0.53625,15.17312 -4.59937,29.99906 -14.40312,41.58687 -0.1925,0.17875 -0.3747,0.37125 -0.54313,0.57063 -7.51437,8.03687 -16.73375,14.29312 -26.98094,18.30125 z m -19.58343,8.19157 -10.2575,-27.34875 h 17.09125 z m -76.98625,-27.34875 -10.2575,27.34875 -6.83375,-27.34875 z M 256.00001,68.267824 c 62.18093,0.06875 112.57125,50.459066 112.64,112.639996 -1.68782,25.85344 -10.35032,50.765 -25.06625,72.08782 -49.28345,-46.09688 -125.86407,-46.09688 -175.1475,0 -14.71595,-21.32282 -23.37845,-46.23438 -25.06625,-72.08782 0.0722,-62.18093 50.45905,-112.571246 112.64,-112.639996 z M 115.87719,285.48001 c -5.41063,-5.40719 -14.02156,-5.885 -19.999376,-1.11032 l -31.635311,25.30688 c -0.873127,0.69437 -1.66375,1.485 -2.358127,2.35812 l -16.145937,20.17813 v -27.48625 l 59.843441,-46.5575 37.54438,32.19219 c -2.2447,5.55843 -3.98407,11.30593 -5.19407,17.17375 z m -10.67343,81.28313 -26.125007,32.66655 c -2.134688,2.66407 -3.3,5.97782 -3.303438,9.39125 v 31.25375 l -20.686876,-33.1375 54.065001,-60.82655 h 28.72375 c 1.09657,5.16655 2.73625,10.19905 4.88812,15.01843 h -25.83968 c -4.56157,-0.01 -8.87907,2.06594 -11.72187,5.63407 z m 55.89375,58.03875 c -2.00407,3.15905 -2.75,6.95062 -2.09688,10.63218 l 1.705,9.67312 -16.09094,-20.8003 17.77532,-37.54782 c 4.92937,4.12844 10.285,7.71375 15.9775,10.70094 z m 66.69093,-27.12188 10.88657,-29.04 h 34.65 l 10.88655,29.04 c -18.78593,1.31313 -37.63718,1.31313 -56.42312,0 z m 123.50594,47.43406 1.705,-9.66968 c 0.65313,-3.685 -0.0928,-7.48 -2.09687,-10.6425 l -17.27,-27.335 c 5.6925,-2.98375 11.04812,-6.5725 15.9775,-10.70095 l 17.7753,37.54782 z m 24.85656,-99.00343 h 34.17219 l 54.06843,60.82655 -20.65937,33.1375 v -31.25375 c 0,-3.40655 -1.15843,-6.71687 -3.28625,-9.3775 l -26.14218,-32.6803 c -2.84282,-3.56813 -7.16032,-5.64438 -11.72188,-5.63407 h -33.34719 c 2.20344,-4.94313 3.87062,-10.10625 4.97062,-15.40688 0.62563,0.21657 1.2822,0.3472 1.94563,0.38845 z m 90.11062,-13.89782 -16.12875,-20.16438 c -0.6978,-0.86968 -1.48843,-1.66375 -2.35812,-2.365 l -31.6525,-25.31375 c -5.97781,-4.77468 -14.58875,-4.29687 -19.99938,1.11032 l -22.06187,22.06531 c -1.21,-5.87125 -2.94938,-11.61875 -5.19406,-17.17375 l 37.54438,-32.19218 59.8503,46.54718 z m 0,0"
+     id="path178"
+     style="stroke-width:0.88" />
+  <path
+     style="fill:#ffffff;stroke:#000000;stroke-width:0.637826"
+     d="m 164.99756,246.91104 c -10.20444,-16.35948 -17.43405,-36.28795 -20.23079,-55.76631 -2.75376,-19.17902 0.85571,-39.68545 10.42048,-59.20178 15.34692,-31.31444 44.08351,-53.766226 77.96217,-60.911528 34.20565,-7.214263 70.36129,2.374491 96.86723,25.689937 21.40415,18.827751 34.50423,44.295371 37.67841,73.249841 1.60754,14.66382 -1.96642,36.12261 -8.93491,53.64705 -3.40522,8.56351 -12.30182,25.34795 -15.07736,28.44514 -0.1031,0.11505 -2.43733,-1.68753 -5.18718,-4.00573 -18.98205,-16.00245 -42.608,-26.10464 -68.07516,-29.10815 -8.10564,-0.95594 -28.83308,-0.41017 -36.10073,0.95057 -23.71111,4.43948 -43.60743,13.68703 -61.07234,28.38562 -2.54046,2.13807 -4.69744,3.8874 -4.79328,3.8874 -0.0958,0 -1.65129,-2.36792 -3.45654,-5.26206 z m 112.2307,-51.72668 c 3.0386,-1.27334 6.07215,-4.06084 7.65433,-7.03352 1.28963,-2.42301 1.41746,-3.6931 1.62031,-16.09946 l 0.22023,-13.46893 2.4353,-0.72963 c 4.70546,-1.4098 9.95811,-5.57407 13.26237,-10.51434 4.4812,-6.69995 6.19989,-12.47071 6.19989,-20.81705 0,-8.25034 -1.66696,-13.94009 -6.04996,-20.65006 -11.19147,-17.133092 -34.65747,-25.882714 -58.33991,-21.752837 -18.59339,3.242415 -34.267,15.603039 -39.31051,31.001317 -2.18904,6.68335 -2.18277,16.13863 0.0152,22.85038 2.2418,6.84565 6.80932,13.36897 11.60126,16.5689 2.12831,1.42123 4.96553,2.91239 6.30494,3.31369 l 2.43531,0.72963 0.22023,13.46893 c 0.20285,12.40636 0.33068,13.67645 1.62031,16.09946 1.54361,2.90018 4.56776,5.72008 7.51536,7.00775 2.79721,1.22198 39.68754,1.24429 42.59536,0.0257 z"
+     id="path188" />
+  <path
+     style="fill:#ffffff;stroke:#000000;stroke-width:0.637826"
+     d="m 240.69225,149.42014 c 0,-2.20325 -3.48429,-4.91748 -6.88714,-5.36503 -5.6325,-0.74079 -6.60348,-1.07371 -8.82794,-3.02681 -1.22428,-1.07493 -2.99546,-3.41538 -3.93596,-5.20097 -1.50695,-2.86106 -1.71,-3.96604 -1.71,-9.3059 0,-5.44322 0.18712,-6.41605 1.84025,-9.56739 4.0475,-7.7157 13.4973,-14.49817 23.66665,-16.98642 6.03325,-1.476231 16.47348,-1.46412 22.32391,0.02591 10.73672,2.73446 20.11909,9.59136 23.76031,17.36469 1.4808,3.16123 1.75271,4.5828 1.75271,9.16324 0,4.75442 -0.23545,5.88901 -1.91347,9.22076 -2.64091,5.24358 -5.38456,7.27302 -10.88581,8.05209 -5.17808,0.7333 -7.07537,1.82494 -8.3108,4.78174 l -0.91202,2.18277 h -14.98035 c -14.79017,0 -14.98034,-0.017 -14.98034,-1.33866 z m 5.44272,-15.26472 c 2.85878,-2.6857 3.33783,-6.14383 1.39637,-10.08025 -1.50998,-3.06156 -6.92951,-4.26967 -10.61172,-2.36553 -1.96234,1.01477 -3.88129,4.41967 -3.88129,6.8868 0,1.98612 2.43261,5.6276 4.48393,6.71222 2.26174,1.19586 6.75224,0.59458 8.61271,-1.15324 z m 30.4009,-0.55028 c 2.27328,-2.54425 2.77524,-4.67825 1.837,-7.80982 -1.76888,-5.904 -11.19362,-6.90154 -14.08913,-1.49122 -2.0584,3.84615 -0.54184,8.97191 3.25868,11.01385 2.60587,1.40008 6.95157,0.57245 8.99345,-1.71281 z"
+     id="path190" />
+  <path
+     style="fill:#ffffff;stroke:#000000;stroke-width:0.637826"
+     d="m 241.33007,173.40162 v -7.33499 h 14.66999 14.67 v 7.33499 7.335 h -14.67 -14.66999 z"
+     id="path192" />
+  <path
+     style="fill:#ffffff;stroke:#000000;stroke-width:0.637826"
+     d="m 189.1855,385.81337 c -11.38322,-5.34107 -23.88062,-15.80312 -28.7512,-24.06873 -3.5648,-6.04965 -6.53553,-13.64399 -7.88103,-20.14704 -1.84147,-8.90009 -1.3708,-24.34583 1.03284,-33.8943 5.53961,-22.00616 19.59685,-41.54664 39.5612,-54.99266 41.40463,-27.88605 99.12669,-24.41632 136.37605,8.19772 14.15814,12.39631 24.42472,29.08761 28.98786,47.12823 1.63724,6.47287 1.75961,7.85918 1.74063,19.71886 -0.0193,12.09919 -0.1114,13.05231 -1.78635,18.49695 -4.43872,14.42864 -12.88566,25.5604 -25.7738,33.96586 -4.34092,2.83108 -13.92141,7.81173 -15.02619,7.81173 -0.15799,0 1.1075,-5.52517 2.81221,-12.27814 3.81794,-15.12432 3.91063,-17.04848 0.96326,-19.99585 l -2.1686,-2.1686 h -63.27232 -63.27231 l -2.16861,2.1686 c -2.94736,2.94737 -2.85467,4.87153 0.96327,19.99585 1.70471,6.75297 2.91725,12.26783 2.69455,12.25523 -0.2227,-0.0125 -2.48686,-0.99977 -5.03146,-2.19371 z m 30.59677,-55.81611 c 9.10968,-2.8137 16.91392,-10.24353 19.60643,-18.66582 0.58784,-1.83875 1.10013,-2.39185 2.21543,-2.39185 2.33223,0 5.65174,-2.65864 6.67442,-5.34562 0.81373,-2.13805 0.81666,-2.79574 0.0226,-5.09246 -0.86561,-2.5038 -2.05825,-3.40744 -23.55459,-17.84674 -12.45355,-8.36516 -23.87682,-15.77566 -25.38504,-16.46778 -2.91859,-1.33931 -5.57757,-1.17092 -8.15261,0.51631 -3.00787,1.97083 -3.80289,7.89531 -1.49451,11.13712 l 1.3239,1.85924 -2.66599,3.02291 c -8.57102,9.7185 -10.14654,24.47477 -3.79788,35.57106 2.04325,3.57123 7.17476,8.72449 11.0467,11.09354 6.39611,3.91347 16.43137,4.99756 24.1611,2.61009 z m 88.44821,0.58979 c 10.41981,-2.40215 19.95443,-11.93677 22.35658,-22.35658 2.24413,-9.73432 -0.87353,-21.19684 -7.72066,-28.38613 l -1.89307,-1.98768 1.31574,-2.1582 c 1.53931,-2.5249 1.70564,-6.2605 0.39188,-8.80103 -1.25651,-2.42982 -4.93068,-4.12061 -7.78904,-3.58437 -1.38202,0.25926 -11.25566,6.45998 -26.24709,16.48336 -22.07513,14.75957 -24.10603,16.26846 -24.94468,18.53302 -0.79172,2.13782 -0.79188,2.81279 -0.002,5.08181 0.98897,2.83806 4.23048,5.52834 6.66107,5.52834 1.14089,0 1.67564,0.71 2.76229,3.6675 2.82223,7.68122 10.43464,14.68186 18.87563,17.35869 4.30316,1.36461 11.76873,1.65036 16.23256,0.62127 z"
+     id="path194" />
+  <path
+     style="fill:#ffffff;stroke:#000000;stroke-width:0.637826"
+     d="m 206.3872,314.7498 c -5.20614,-1.79831 -8.39842,-5.41402 -9.63361,-10.91145 -1.2943,-5.76052 1.60003,-12.27438 6.71857,-15.12054 l 2.52843,-1.40593 9.69192,6.44532 c 9.45263,6.28618 9.69192,6.50095 9.69192,8.699 0,5.26706 -4.62933,10.81543 -10.48043,12.56106 -3.9337,1.17359 -4.38604,1.15938 -8.5168,-0.26746 z"
+     id="path196" />
+  <path
+     style="fill:#ffffff;stroke:#000000;stroke-width:0.637826"
+     d="m 233.19779,397.80262 c -2.54333,-0.14363 -4.62423,-0.4565 -4.62423,-0.69528 0,-0.23879 2.34625,-6.6842 5.21388,-14.32314 l 5.21388,-13.88898 h 17.02956 17.02956 l 5.27058,14.05096 c 2.89881,7.72802 5.08369,14.23783 4.85529,14.46624 -0.46583,0.46583 -42.7975,0.79626 -49.98852,0.3902 z"
+     id="path198" />
+  <path
+     style="fill:#ffffff;stroke:#000000;stroke-width:0.637826"
+     d="m 209.17845,381.91206 c -1.69559,-6.84064 -2.9434,-12.57702 -2.77291,-12.74751 0.17048,-0.17049 3.75189,-0.22908 7.95867,-0.1302 l 7.64871,0.17978 -4.64281,12.33475 c -2.55354,6.78412 -4.74764,12.43959 -4.87579,12.56774 -0.12814,0.12814 -1.62029,-5.36391 -3.31587,-12.20456 z"
+     id="path200" />
+  <path
+     style="fill:#ffffff;stroke:#000000;stroke-width:0.637826"
+     d="m 297.91654,390.26238 c -0.93254,-2.45563 -3.09945,-8.19607 -4.81537,-12.75652 l -3.11984,-8.29173 7.65164,-0.17978 c 4.2084,-0.0989 7.79352,-0.0379 7.96693,0.13551 0.1734,0.17341 -1.10292,5.99474 -2.83628,12.93629 l -3.15156,12.62101 z"
+     id="path202" />
+  <path
+     style="fill:#ffffff;stroke:#000000;stroke-width:0.637826"
+     d="m 296.82091,315.00382 c -5.64307,-1.80768 -10.20521,-7.41697 -10.20521,-12.54762 0,-2.19822 0.23897,-2.41262 9.70817,-8.70981 l 9.70817,-6.45612 2.56998,1.49989 c 5.14866,3.00487 7.86615,9.36754 6.57881,15.40348 -1.6884,7.9164 -10.74573,13.24929 -18.35992,10.81018 z"
+     id="path204" />
+  <path
+     style="fill:#ffffff;stroke:#000000;stroke-width:0.637826"
+     d="m 46.182145,317.7097 0.02676,-12.91597 29.700259,-23.07481 29.700266,-23.07482 18.26938,15.67608 c 10.04814,8.62183 18.36054,15.74809 18.47195,15.8361 0.11144,0.088 -0.70859,3.13044 -1.82229,6.76092 -1.11368,3.63048 -2.22625,7.2971 -2.47234,8.14806 -0.41503,1.43503 -1.29852,0.7001 -12.18831,-10.13868 -12.52339,-12.46473 -14.73037,-14.01361 -20.00172,-14.03731 -5.877886,-0.0264 -7.350157,0.86548 -25.786907,15.62191 l -17.659236,14.13412 -7.922103,9.99019 c -4.357156,5.4946 -8.016681,9.99018 -8.132278,9.99018 -0.115597,0 -0.198138,-5.81218 -0.183424,-12.91597 z"
+     id="path206" />
+  <path
+     style="fill:#ffffff;stroke:#000000;stroke-width:0.637826"
+     d="m 65.409959,422.7374 c -9.736257,-15.67619 -9.76274,-15.7291 -8.550183,-17.08388 0.668981,-0.74744 12.748287,-14.3467 26.842896,-30.22059 l 25.626578,-28.86161 h 14.33652 c 13.71726,0 14.33653,0.053 14.33653,1.22586 0,0.67424 0.86106,3.75748 1.91348,6.85167 1.05241,3.09418 1.91348,5.67628 1.91348,5.738 0,0.0617 -6.52975,0.20902 -14.51054,0.32732 -16.15252,0.23944 -17.33173,0.51767 -21.5963,5.09548 -3.61493,3.88046 -27.514497,34.09269 -28.722042,36.30848 -1.046273,1.91985 -1.223681,4.19027 -1.504998,19.26029 l -0.318912,17.08388 z"
+     id="path208" />
+  <path
+     style="fill:#ffffff;stroke:#000000;stroke-width:0.637826"
+     d="m 457.50228,320.63549 -7.9221,-9.99019 -17.65924,-14.13412 c -18.34345,-14.68175 -19.90859,-15.63592 -25.64794,-15.63592 -5.23083,0 -7.03904,1.28265 -19.91302,14.12524 l -12.19414,12.16442 -0.45917,-2.46125 c -0.25254,-1.35369 -1.31674,-5.14222 -2.36487,-8.41896 -1.04813,-3.27675 -1.81213,-6.0269 -1.69777,-6.11145 0.11436,-0.0845 8.34386,-7.1221 18.28779,-15.63902 14.76918,-12.64974 18.2955,-15.38487 19.25755,-14.93681 0.64775,0.30168 14.09954,10.59425 29.89287,22.87239 l 28.71516,22.32391 0.0237,12.91597 c 0.013,7.10379 -0.0709,12.91597 -0.18651,12.91597 -0.11559,0 -3.77512,-4.49558 -8.13227,-9.99018 z"
+     id="path210" />
+  <path
+     style="fill:#ffffff;stroke:#000000;stroke-width:0.637826"
+     d="m 444.03783,421.43909 -0.19809,-17.14455 -1.74122,-2.87021 c -0.95767,-1.57862 -7.98969,-10.6198 -15.62672,-20.09151 -12.04931,-14.94398 -14.30724,-17.43216 -17.07464,-18.81586 -3.14259,-1.57129 -3.45209,-1.59742 -21.20771,-1.79046 -9.91022,-0.10773 -18.01858,-0.26916 -18.01858,-0.35871 0,-0.0896 0.86106,-2.7102 1.91348,-5.82366 1.05242,-3.11344 1.91348,-6.18101 1.91348,-6.81682 0,-1.08896 1.04992,-1.15599 18.10711,-1.15599 h 18.10711 l 24.78667,27.90119 c 13.63267,15.34566 25.70739,28.92883 26.83273,30.18483 l 2.04606,2.28362 -9.82081,15.82134 -9.82081,15.82133 z"
+     id="path212" />
+  <path
+     style="fill:#ffffff;stroke:#000000;stroke-width:0.637826"
+     d="m 352.718,439.69387 c 0.92408,-5.88878 0.60946,-10.88599 -0.86338,-13.71325 -0.73099,-1.40322 -4.94549,-8.2673 -9.36553,-15.25352 -4.42006,-6.98622 -8.02725,-12.87016 -8.01598,-13.07543 0.0112,-0.20526 2.09216,-1.58302 4.62424,-3.06168 2.53206,-1.47866 5.9181,-3.69428 7.52453,-4.92359 l 2.92077,-2.23513 5.93674,12.5775 c 3.26521,6.91763 7.16974,15.21118 8.67672,18.43012 l 2.73997,5.85261 -7.0584,9.1363 c -3.88211,5.02496 -7.19604,9.2798 -7.36428,9.4552 -0.16824,0.17541 -0.0582,-1.25971 0.2446,-3.18913 z"
+     id="path214" />
+  <path
+     style="fill:#ffffff;stroke:#000000;stroke-width:0.637826"
+     d="m 152.35338,433.60673 c -3.85885,-5.03592 -6.9305,-9.49924 -6.82589,-9.91848 0.10461,-0.41925 3.95924,-8.74665 8.56586,-18.50535 l 8.37566,-17.74309 2.91501,2.23085 c 1.60325,1.22698 4.9867,3.44067 7.51876,4.91933 2.53207,1.47866 4.61297,2.85435 4.62424,3.0571 0.0113,0.20274 -3.9751,6.6951 -8.8586,14.42748 -4.88349,7.73237 -9.24239,15.27148 -9.68643,16.75358 -0.64643,2.15762 -0.65064,3.77865 -0.0211,8.1328 0.43245,2.99093 0.70129,5.51994 0.59742,5.62002 -0.10386,0.10009 -3.34608,-3.93833 -7.20493,-8.97424 z"
+     id="path216" />
+</svg>
index c849626..0a68127 100644 (file)
@@ -713,7 +713,7 @@ export const ChessRules = class ChessRules {
       let j = y + step[1];
       while (V.OnBoard(i, j) && this.board[i][j] == V.EMPTY) {
         moves.push(this.getBasicMove([x, y], [i, j]));
-        if (oneStep) continue outerLoop;
+        if (!!oneStep) continue outerLoop;
         i += step[0];
         j += step[1];
       }
index cfd3ca9..1e8d475 100644 (file)
@@ -46,6 +46,7 @@ h3 Related links
   a(href="https://greenchess.net/") greenchess.net
   a(href="http://pychess-variants.herokuapp.com/") pychess-variants.com
   a(href="https://glukkazan.github.io/") Dagaz demo + server
+  a(href="https://www.jocly.com/#/games") jocly.com
   a(href="https://musketeerchess.net/home/index.html") musketeerchess.net
   a(href="https://schemingmind.com/") schemingmind.com
   a(href="https://echekk.fr/spip.php?page=rubrique&id_rubrique=1") echekk.fr
@@ -55,6 +56,8 @@ h3 Related links
   a(href="https://www.facebook.com/groups/592562551198628") A Facebook group
   a(href="http://www.zillions-of-games.com/") zillions-of-games.com
   a(href="https://en.wikipedia.org/wiki/Fairy_chess_piece") Fairy chess pieces
+  a(href="http://gambiter.com/chess/variants/Fairy_chess_piece.html")
+    | Another list
   a(href="http://www.pion.ch/echecs/liste_variantes.php") pion.ch
   a(href="https://www.jatektan.hu/_2018_vissza/2011_ig/uj2001/isakk1.html")
     | List of variants
index 3805605..f58ef19 100644 (file)
@@ -45,6 +45,7 @@ h3 Enlaces relacionados
   a(href="https://greenchess.net/") greenchess.net
   a(href="http://pychess-variants.herokuapp.com/") pychess-variants.com
   a(href="https://glukkazan.github.io/") Dagaz demo + servidor
+  a(href="https://www.jocly.com/#/games") jocly.com
   a(href="https://musketeerchess.net/home/index.html") musketeerchess.net
   a(href="https://schemingmind.com/") schemingmind.com
   a(href="https://echekk.fr/spip.php?page=rubrique&id_rubrique=1") echekk.fr
@@ -55,6 +56,8 @@ h3 Enlaces relacionados
   a(href="http://www.zillions-of-games.com/") zillions-of-games.com
   a(href="https://en.wikipedia.org/wiki/Fairy_chess_piece")
     | Piezas de ajedrez magicas
+  a(href="http://gambiter.com/chess/variants/Fairy_chess_piece.html")
+    | Una otra lista
   a(href="http://www.pion.ch/echecs/liste_variantes.php") pion.ch
   a(href="https://www.jatektan.hu/_2018_vissza/2011_ig/uj2001/isakk1.html")
     | Listado de variantes
index 39e22b4..b9f4ec7 100644 (file)
@@ -46,6 +46,7 @@ h3 Liens connexes
   a(href="https://greenchess.net/") greenchess.net
   a(href="http://pychess-variants.herokuapp.com/") pychess-variants.com
   a(href="https://glukkazan.github.io/") Dagaz demo + serveur
+  a(href="https://www.jocly.com/#/games") jocly.com
   a(href="https://musketeerchess.net/home/index.html") musketeerchess.net
   a(href="https://schemingmind.com/") schemingmind.com
   a(href="https://echekk.fr/spip.php?page=rubrique&id_rubrique=1") echekk.fr
@@ -56,6 +57,8 @@ h3 Liens connexes
   a(href="http://www.zillions-of-games.com/") zillions-of-games.com
   a(href="https://en.wikipedia.org/wiki/Fairy_chess_piece")
     | Pièces d'échecs féériques
+  a(href="http://gambiter.com/chess/variants/Fairy_chess_piece.html")
+    | Une autre liste
   a(href="http://www.pion.ch/echecs/liste_variantes.php") pion.ch
   a(href="https://www.jatektan.hu/_2018_vissza/2011_ig/uj2001/isakk1.html")
     | Liste de variantes
index 10ac4f8..1839c66 100644 (file)
@@ -179,6 +179,7 @@ export const translations = {
   "Board upside down": "Board upside down",
   "Both sides of the mirror": "Both sides of the mirror",
   "Burmese Chess": "Burmese Chess",
+  "Capablanca Chess": "Capablanca Chess",
   "Capture all of a kind": "Capture all of a kind",
   "Capture and release hostages": "Capture and release hostages",
   "Capture both colors": "Capture both colors",
@@ -250,6 +251,7 @@ export const translations = {
   "Move under cover": "Move under cover",
   "Moving forward": "Moving forward",
   "Neverending rows": "Neverending rows",
+  "New fairy pieces": "New fairy pieces",
   "No paralyzed pieces": "No paralyzed pieces",
   "No-check mode": "No-check mode",
   "Non-conformism and utopia": "Non-conformism and utopia",
index 7ae7098..322661c 100644 (file)
@@ -179,6 +179,7 @@ export const translations = {
   "Board upside down": "Tablero al revés",
   "Both sides of the mirror": "Ambos lados del espejo",
   "Burmese Chess": "Ajedrez birmano",
+  "Capablanca Chess": "Ajedrez Capablanca",
   "Capture all of a kind": "Capturar todo del mismo tipo",
   "Capture and release hostages": "Captura y libera a los rehenes",
   "Capture both colors": "Captura ambos colores",
@@ -250,6 +251,7 @@ export const translations = {
   "Move under cover": "Ir bajo cubierta",
   "Moving forward": "Ir adelante",
   "Neverending rows": "Filas interminables",
+  "New fairy pieces": "Nuevas piezas magicas",
   "No paralyzed pieces": "No piezas paralizadas",
   "No-check mode": "Modo sin jaque",
   "Non-conformism and utopia": "No-conformismo y utopía",
index f905ab3..94a3618 100644 (file)
@@ -179,6 +179,7 @@ export const translations = {
   "Board upside down": "Échiquier à l'envers",
   "Both sides of the mirror": "Les deux côté du miroir",
   "Burmese Chess": "Échecs birmans",
+  "Capablanca Chess": "Échecs Capablanca",
   "Capture all of a kind": "Capturez tout d'un même type",
   "Capture and release hostages": "Capturez et libérez les otages",
   "Capture both colors": "Capturer les deux couleurs",
@@ -250,6 +251,7 @@ export const translations = {
   "Move under cover": "Avancez à couvert",
   "Moving forward": "Aller de l'avant",
   "Neverending rows": "Rangées sans fin",
+  "New fairy pieces": "Nouvelles pièces féériques",
   "No paralyzed pieces": "Pas de pièces paralysées",
   "No-check mode": "Mode sans échec",
   "Non-conformism and utopia": "Non-conformisme et utopie",
diff --git a/client/src/translations/rules/Capablanca/en.pug b/client/src/translations/rules/Capablanca/en.pug
new file mode 100644 (file)
index 0000000..c725003
--- /dev/null
@@ -0,0 +1,28 @@
+p.boxed
+  | Extended board with two new pieces.
+
+p.
+  Capablanca Chess was created by World Chess Champion José Raúl Capablanca
+  in the 1920s. The game is played on a 10 x 8 board and adds
+  two new hybrid pieces: the Princess (S) and the Empress (E).
+
+figure.diagram-container
+  .diagram
+    | fen:rnsbqkbenr/pppppppppp/91/91/91/91/PPPPPPPPPP/RNSBQKBENR:
+  figcaption Initial deterministic position.
+
+p Movements of the hybrid pieces:
+ul
+  li Princess = Bishop + Knight.
+  li Empress = Rook + Knight.
+
+p.
+  For castling, the king then moves three squares instead of two.
+  Pawns may promote to the Princess and Empress as well.
+
+h3 More information
+
+p
+  | The variant is playable on 
+  a(href="https://www.pychess.org/variant/capablanca") pychess-variants
+  | . See also the Wikipedia page.
diff --git a/client/src/translations/rules/Capablanca/es.pug b/client/src/translations/rules/Capablanca/es.pug
new file mode 100644 (file)
index 0000000..8f3b8f6
--- /dev/null
@@ -0,0 +1,29 @@
+p.boxed
+  | Tablero de ajedrez extendido con dos piezas nuevas.
+
+p.
+  El Ajedrez Capablanca fue inventado por el ex campeón mundial
+  José Raúl Capablanca en la década de 1920. Se juegan sobre un tablero
+  10 x 8 e introducir dos nuevas piezas híbridas:
+  la Princesa (S) y la Emperatriz (E).
+
+figure.diagram-container
+  .diagram
+    | fen:rnsbqkbenr/pppppppppp/91/91/91/91/PPPPPPPPPP/RNSBQKBENR:
+  figcaption Posición inicial determinista.
+
+p Desplazamiento de piezas híbridas:
+ul
+  li Princesa = Alfil + Caballo.
+  li Emperatriz = Torre + Caballo.
+
+p.
+  Durante el enroque, el rey mueve tres casillas en lugar de dos.
+  Los peones también pueden ser promovidos a princesa o emperatriz.
+
+h3 Más información
+
+p
+  | La variante se puede jugar en 
+  a(href="https://www.pychess.org/variant/capablanca") pychess-variants
+  | . Consulte también la página de Wikipedia.
diff --git a/client/src/translations/rules/Capablanca/fr.pug b/client/src/translations/rules/Capablanca/fr.pug
new file mode 100644 (file)
index 0000000..5f3999f
--- /dev/null
@@ -0,0 +1,29 @@
+p.boxed
+  | Échiquier étendu avec deux nouvelles pièces.
+
+p.
+  Les Échecs Capablanca furent inventés par l'ancien champion du monde
+  José Raúl Capablanca dans les années 1920. Ils se jouent sur un échiquier
+  10 x 8, et introduisent deux nouvelles pièces hybrides :
+  la Princesse (S) et l'Impératrice (E).
+
+figure.diagram-container
+  .diagram
+    | fen:rnsbqkbenr/pppppppppp/91/91/91/91/PPPPPPPPPP/RNSBQKBENR:
+  figcaption Position initiale déterministe.
+
+p Déplacement des pièces hybrides :
+ul
+  li Princesse = Fou + Cavalier.
+  li Impératrice = Tour + Cavalier.
+
+p.
+  Lors du roque, le roi se déplace de trois cases au lieu de deux.
+  Les pions peuvent être promus en Princess ou Impératrice également.
+
+h3 Plus d'information
+
+p
+  | La variante est jouable sur 
+  a(href="https://www.pychess.org/variant/capablanca") pychess-variants
+  | . Voir aussi la page Wikipedia.
diff --git a/client/src/translations/rules/Musketeer/en.pug b/client/src/translations/rules/Musketeer/en.pug
new file mode 100644 (file)
index 0000000..e90cbe9
--- /dev/null
@@ -0,0 +1,91 @@
+p.boxed
+  | Two new pieces are introduced out of seven available.
+
+p
+  | Musketeer Chess was invented by Zied Haddad in 2011.
+  | You can read the rules of this game and order fairy pieces sets on the 
+  a(href="https://musketeerchess.net/home/index.html") official website
+  | . The corresponding 
+  a(href="https://www.jocly.com/#/games") playing area
+  | &nbsp;allows to play (really) many games, with nice 3-D pieces. It seems
+  | that for now you can only play against a AI, but this will change.
+
+figure.showPieces.text-center
+  img(src="/images/pieces/Musketeer/wd.svg")
+  img(src="/images/pieces/Musketeer/ww.svg")
+  img(src="/images/pieces/Musketeer/wx.svg")
+  img(src="/images/pieces/Musketeer/we.svg")
+  img(src="/images/pieces/Musketeer/wh.svg")
+  img(src="/images/pieces/Musketeer/wf.svg")
+  img(src="/images/pieces/Musketeer/wy.svg")
+  figcaption New pieces for Musketeer Chess.
+
+h3 Rules summary
+
+p.
+  At the very first turn of the game, White must choose a piece which will
+  be later introduced into play.
+  Play this move from the reserve below the board to any free square.
+  Then, Black must do the same with another of the remaining pieces.
+
+p.
+  At the second move, White brings the first chosen piece (still from the
+  reserve) to any location on its first rank.
+  Then Black do the same for this first piece,
+  and on the third turn a location for the second selected piece is decided.
+
+p.
+  The game now proceeds normally, following orthodox chess rules.
+  However, when a piece where you placed an extra figure is moved for the
+  first time, the new piece comes into play on the starting square &mdash;
+  as in Seirawan Chess.
+
+figure.diagram-container
+  .diagram.diag12
+    | fen:rnbs2or/ppp2ppp/3bp3/3pN3/k2P3P/6P1/PPP1PP2/RMBQKC1R:
+  .diagram.diag22
+    | fen:rnbs2or/ppp2ppp/3bp3/3pN3/k2P3P/2N3P1/PPP1PP2/RXBQKC1R:
+  figcaption Before and after Nc3, a Unicorn appears on b1: double check.
+
+h3 New pieces movements
+
+p
+  | They are detailed for example on the 
+  a(href="https://www.chessvariants.com/rules/musketeer-chess")
+    | chessvariants page
+  | , but let's sum up their behavior here as well.
+  | "Bishop[X]" indicates a piece moving like a limited range Bishop,
+  | restricted to X squares in any diagonal direction.
+
+ul
+  li Leopard (L) = Knight + Bishop[2]
+  li Cannon (C) = King + Wide Knight + Dabbabah
+  li Unicorn (U) = Knight + Camel
+  li Elephant (E) = King + Alfil + Dabbabh
+  li Hawk (H) = Alfil + Tripper
+  li Fortress (F) = Narrow Knight + Dabbabah + Bishop[3]
+  li Spider (S) = Knight + Dabbabah + Bishop[2]
+
+p With
+ul
+  li Alfil = two squares leaper in diagonal
+  li Dabbabah = 2 squares leaper orthogonally
+  li
+    a(href="http://gambiter.com/chess/variants/Tripper_chess.html") Tripper
+    | &nbsp;= 3 squares leaper diagonally
+  li.
+    Camel = extended Knight,
+    3 squares in one direction and then 1 to the side
+  li Wide Knight and Narrow Knight: restricted Knight, see the image below.
+
+figure.diagram-container
+  .diagram.diag12
+    | fen:8/8/8/3N4/8/8/8/8 b6,b4,f6,f4:
+  .diagram.diag22
+    | fen:8/8/8/8/4N3/8/8/8/8 d6,f6,d2,f2:
+  figcaption Movements of the Wide Knight (left) and Narrow Knight (right).
+
+p.
+  Note: the Dragon, Chancellor and Archbishop were removed, because these
+  pieces are already seen in several other variants, and, they are a bit
+  too powerful &mdash; especially the Dragon.
diff --git a/client/src/translations/rules/Musketeer/es.pug b/client/src/translations/rules/Musketeer/es.pug
new file mode 100644 (file)
index 0000000..3a1534d
--- /dev/null
@@ -0,0 +1,94 @@
+p.boxed
+  | Se introducen dos nuevas piezas entre las siete disponibles.
+
+p
+  | El Ajedrez Mosquetero fue inventado por Zied Haddad en 2011.
+  | Puedes leer las reglas y ordenar juegos de piezas magicas en el 
+  a(href="https://musketeerchess.net/home/index.html") sitio oficial
+  | . La 
+  a(href="https://www.jocly.com/#/games") zona de juego
+  | & nbsp;correspondiente permite de jugar (realmente) muchos juegos,
+  | con bonitas piezas en 3-D. Parece limitado a partidos contra la IA,
+  | pero eso cambiará.
+
+figure.showPieces.text-center
+  img(src="/images/pieces/Musketeer/wd.svg")
+  img(src="/images/pieces/Musketeer/ww.svg")
+  img(src="/images/pieces/Musketeer/wx.svg")
+  img(src="/images/pieces/Musketeer/we.svg")
+  img(src="/images/pieces/Musketeer/wh.svg")
+  img(src="/images/pieces/Musketeer/wf.svg")
+  img(src="/images/pieces/Musketeer/wy.svg")
+  figcaption Nuevas piezas para el Ajedrez Mosquetero.
+
+h3 Resumen de reglas
+
+p.
+  En el primer movimiento del juego, las blancas deben elegir una pieza que
+  más tarde se introducirá en el juego.
+  Juega este movimiento desde la reserva debajo del tablero hasta
+  una casilla vacía. Entonces las negras deben hacer lo mismo con otra pieza
+  entre los que quedan.
+
+p.
+  En el segundo movimiento, las blancas traen la primera pieza seleccionada
+  (siempre desde la reserva) a cualquier casilla de su primer
+  fila. Entonces las negras hacen lo mismo con su primera pieza,
+  y en la tercera ronda se elige una ubicación para la segunda pieza
+  seleccionada.
+
+p.
+  El juego procede entonces normalmente, siguiendo las reglas del
+  Ajedrez ortodoxo. Sin embargo, cuando una pieza donde ha colocado
+  una unidad adicional se mueve por la primera vez, la pieza nueva
+  entra en juego en la casilla inicial &mdash; como en el Ajedrez Seirawan.
+
+figure.diagram-container
+  .diagram.diag12
+    | fen:rnbs2or/ppp2ppp/3bp3/3pN3/k2P3P/6P1/PPP1PP2/RMBQKC1R:
+  .diagram.diag22
+    | fen:rnbs2or/ppp2ppp/3bp3/3pN3/k2P3P/2N3P1/PPP1PP2/RXBQKC1R:
+  figcaption Antes y después de Nc3, aparece un Unicornio en b1: doble jaque.
+
+h3 Desplazamiento de piezas nuevas
+
+p
+  | Se detallan, por ejemplo, en la 
+  a(href="https://www.chessvariants.com/rules/musketeer-chess")
+    | página chessvariants
+  | , pero aquí también resumimos su comportamiento.
+  | "Alfil[X]" indica una pieza que se mueve como un Alfil a un alcance
+  | limitado, restringido a X casillas en cualquier dirección diagonal.
+
+ul
+  li Leopardo (L) = Caballo + Alfil [2]
+  li Canon (C) = Rey + Wide Knight + Dabbabah
+  li Unicornio (U) = Caballo + Camello
+  li Elefante (E) = Rey + Alfil + Dabbabah
+  li Halcón (H) = Alfil + Tripper
+  li Fortaleza (F) = Narrow Knight + Dabbabah + Alfil[3]
+  li Araña (S) = Caballo + Dabbabah + Alfil[2]
+
+p Con
+ul
+  li Alfil = saltar 2 casillas en diagonal
+  li Dabbabah = saltar 2 casillas ortogonalmente
+  li
+    a(href="http://gambiter.com/chess/variants/Tripper_chess.html") Tripper
+    | &nbsp;= saltar 3 casillas en diagonal
+  li Camel = Caballo acostado, 3 casillas en una dirección y luego 1 en el lado
+  li.
+    Wide Knight y Narrow Knight:
+    Caballo restringido, ver imagen a continuación.
+
+figure.diagram-container
+  .diagram.diag12
+    | fen:8/8/8/3N4/8/8/8/8 b6,b4,f6,f4:
+  .diagram.diag22
+    | fen:8/8/8/8/4N3/8/8/8/8 d6,f6,d2,f2:
+  figcaption Movimientos de Wide Knight (izquierda) y Narrow Knight (derecha).
+
+p.
+  Nota: se han eliminado el Dragón, el Canciller y el Arzobispo, ya que estas
+  piezas ya están presentes en otras variantes, y, son un poco
+  demasiado poderoso &mdash; especialmente el Dragón.
diff --git a/client/src/translations/rules/Musketeer/fr.pug b/client/src/translations/rules/Musketeer/fr.pug
new file mode 100644 (file)
index 0000000..de221b2
--- /dev/null
@@ -0,0 +1,95 @@
+p.boxed
+  | Deux nouvelles pièces sont introduites parmi sept disponibles.
+
+p
+  | Les Échecs Mousquetaires furent inventés par Zied Haddad en 2011.
+  | Vous pouvez lire les règles et commander
+  | des jeux de pièces féériques sur le 
+  a(href="https://musketeerchess.net/home/index.html") site officiel
+  | . La 
+  a(href="https://www.jocly.com/#/games") zone de jeu
+  | &nbsp;correspondante permet de jouer à (vraiment) beaucoup de jeux,
+  | avec de jolies pièces 3-D. Elle semble limitée à des matchs contre l'IA,
+  | mais cela va changer.
+
+figure.showPieces.text-center
+  img(src="/images/pieces/Musketeer/wd.svg")
+  img(src="/images/pieces/Musketeer/ww.svg")
+  img(src="/images/pieces/Musketeer/wx.svg")
+  img(src="/images/pieces/Musketeer/we.svg")
+  img(src="/images/pieces/Musketeer/wh.svg")
+  img(src="/images/pieces/Musketeer/wf.svg")
+  img(src="/images/pieces/Musketeer/wy.svg")
+  figcaption Nouvelles pièces pour les Échecs Mousquetaires.
+
+h3 Résumé des règles
+
+p.
+  Au tout premier coup de la partie, les blancs doivent choisir une pièce qui
+  sera plus tard introduite dans le jeu.
+  Jouez ce coup depuis la réserve sous l'échiquier vers une case vide.
+  Ensuite, les noirs doivent faire de même avec une autre pièce
+  parmi celles qui restent.
+
+p.
+  Au second coup, les blancs amènent la première pièce sélectionnée
+  (toujours depuis la réserve) vers n'importe quelle case de leur première
+  rangée. Ensuite les noirs procèdent de même pour leur première pièce,
+  et au troisième tour un emplacement est choisi pour la seconde pièce
+  sélectionnée.
+
+p.
+  Le jeu se déroule alors normalement, suivant les règles des
+  échecs orthodoxes. Cependant, quand une pièce où vous avez placé une
+  unité supplémentaire se déplace pour la première fois, la nouvelle pièce
+  entre en jeu sur la case de départ &mdash; comme aux Échecs Seirawan.
+
+figure.diagram-container
+  .diagram.diag12
+    | fen:rnbs2or/ppp2ppp/3bp3/3pN3/k2P3P/6P1/PPP1PP2/RMBQKC1R:
+  .diagram.diag22
+    | fen:rnbs2or/ppp2ppp/3bp3/3pN3/k2P3P/2N3P1/PPP1PP2/RXBQKC1R:
+  figcaption Avant et après Nc3, une Licorne apparaît en b1 : échec double.
+
+h3 Déplacement des nouvelles pièces
+
+p
+  | Ils sont détaillés par exemple sur la 
+  a(href="https://www.chessvariants.com/rules/musketeer-chess")
+    | page chessvariants
+  | , mais on résume leur comportement ici aussi.
+  | "Fou[X]" indique une pièce se déplaçant comme un fou à portée limitée,
+  | restreint à X cases dans n'importe quelle direction diagonale.
+
+ul
+  li Léopard (L) = Cavalier + Fou[2]
+  li Canon (C) = Roi + Wide Knight + Dabbabah
+  li Licorne (U) = Cavalier + Chameau
+  li Éléphant (E) = Roi + Alfil + Dabbabah
+  li Faucon (H) = Alfil + Tripper
+  li Forteresse (F) = Narrow Knight + Dabbabah + Fou[3]
+  li Araignée (S) = Cavalier + Dabbabah + Fou[2]
+
+p Avec
+ul
+  li Alfil = saute de 2 cases en diagonale
+  li Dabbabah = saute de 2 cases orthogonalement
+  li
+    a(href="http://gambiter.com/chess/variants/Tripper_chess.html") Tripper
+    | &nbsp;= saute de 3 cases en diagonale
+  li Chameau = Cavalier allongé, 3 cases dans une direction puis 1 sur le côté
+  li.
+    Wide Knight et narrow Knight :
+    Cavalier restreint, voir l'image ci-dessous.
+
+figure.diagram-container
+  .diagram.diag12
+    | fen:8/8/8/3N4/8/8/8/8 b6,b4,f6,f4:
+  .diagram.diag22
+    | fen:8/8/8/8/4N3/8/8/8/8 d6,f6,d2,f2:
+  figcaption Déplacements du Wide Knight (gauche) et Narrow Knight (droite).
+
+p.
+  Note: le Dragon, le Chancelier et l'Archevêque ont été retirés, car ces
+  pièces sont déjà présentes dans d'autres variantes, et, elles sont un peu
+  trop puissantes &mdash; surtout le Dragon.
index f77c4b1..7d788bd 100644 (file)
@@ -397,6 +397,7 @@ p.
     "Avalanche",
     "Bicolour",
     "Brotherhood",
+    "Capablanca",
     "Castle",
     "Crossing",
     "Doublearmy",
@@ -411,6 +412,7 @@ p.
     "Magnetic",
     "Maharajah",
     "Mesmer",
+    "Musketeer",
     "Otage",
     "Pacosako",
     "Parachute",
index e3a287f..9ba6c2d 100644 (file)
@@ -408,6 +408,7 @@ p.
     "Avalanche",
     "Bicolour",
     "Brotherhood",
+    "Capablanca",
     "Castle",
     "Crossing",
     "Doublearmy",
@@ -422,6 +423,7 @@ p.
     "Magnetic",
     "Maharajah",
     "Mesmer",
+    "Musketeer",
     "Otage",
     "Pacosako",
     "Parachute",
index cd1a6e4..82a3842 100644 (file)
@@ -407,6 +407,7 @@ p.
     "Avalanche",
     "Bicolour",
     "Brotherhood",
+    "Capablanca",
     "Castle",
     "Crossing",
     "Doublearmy",
@@ -421,6 +422,7 @@ p.
     "Magnetic",
     "Maharajah",
     "Mesmer",
+    "Musketeer",
     "Otage",
     "Pacosako",
     "Parachute",
diff --git a/client/src/variants/Capablanca.js b/client/src/variants/Capablanca.js
new file mode 100644 (file)
index 0000000..ec1e299
--- /dev/null
@@ -0,0 +1,184 @@
+import { ChessRules } from "@/base_rules";
+import { ArrayFun } from "@/utils/array";
+import { randInt } from "@/utils/alea";
+
+export class CapablancaRules extends ChessRules {
+
+  static get PawnSpecs() {
+    return Object.assign(
+      {},
+      ChessRules.PawnSpecs,
+      {
+        promotions:
+          ChessRules.PawnSpecs.promotions
+          .concat([V.EMPRESS, V.PRINCESS])
+      }
+    );
+  }
+
+  getPpath(b) {
+    return ([V.EMPRESS, V.PRINCESS].includes(b[1]) ? "Capablanca/" : "") + b;
+  }
+
+  static get size() {
+    return { x: 8, y: 10 };
+  }
+
+  // Rook + knight:
+  static get EMPRESS() {
+    return "e";
+  }
+
+  // Bishop + knight
+  static get PRINCESS() {
+    return "s";
+  }
+
+  static get PIECES() {
+    return ChessRules.PIECES.concat([V.EMPRESS, V.PRINCESS]);
+  }
+
+  getPotentialMovesFrom([x, y]) {
+    switch (this.getPiece(x, y)) {
+      case V.EMPRESS:
+        return this.getPotentialEmpressMoves([x, y]);
+      case V.PRINCESS:
+        return this.getPotentialPrincessMoves([x, y]);
+      default:
+        return super.getPotentialMovesFrom([x, y]);
+    }
+  }
+
+  getPotentialEmpressMoves(sq) {
+    return this.getSlideNJumpMoves(sq, V.steps[V.ROOK]).concat(
+      this.getSlideNJumpMoves(sq, V.steps[V.KNIGHT], "oneStep")
+    );
+  }
+
+  getPotentialPrincessMoves(sq) {
+    return this.getSlideNJumpMoves(sq, V.steps[V.BISHOP]).concat(
+      this.getSlideNJumpMoves(sq, V.steps[V.KNIGHT], "oneStep")
+    );
+  }
+
+  isAttacked(sq, color) {
+    return (
+      super.isAttacked(sq, color) ||
+      this.isAttackedByEmpress(sq, color) ||
+      this.isAttackedByPrincess(sq, color)
+    );
+  }
+
+  isAttackedByEmpress(sq, color) {
+    return (
+      this.isAttackedBySlideNJump(sq, color, V.EMPRESS, V.steps[V.ROOK]) ||
+      this.isAttackedBySlideNJump(
+        sq,
+        color,
+        V.EMPRESS,
+        V.steps[V.KNIGHT],
+        "oneStep"
+      )
+    );
+  }
+
+  isAttackedByPrincess(sq, color) {
+    return (
+      this.isAttackedBySlideNJump(sq, color, V.PRINCESS, V.steps[V.BISHOP]) ||
+      this.isAttackedBySlideNJump(
+        sq,
+        color,
+        V.PRINCESS,
+        V.steps[V.KNIGHT],
+        "oneStep"
+      )
+    );
+  }
+
+  static get VALUES() {
+    return Object.assign(
+      { s: 5, e: 7 },
+      ChessRules.VALUES
+    );
+  }
+
+  static get SEARCH_DEPTH() {
+    return 2;
+  }
+
+  static GenRandInitFen(randomness) {
+    if (randomness == 0) {
+      return (
+        "rnsbqkbenr/pppppppppp/91/91/91/91/PPPPPPPPPP/RNSBQKBENR w 0 ajaj -"
+      );
+    }
+
+    let pieces = { w: new Array(10), b: new Array(10) };
+    let flags = "";
+    for (let c of ["w", "b"]) {
+      if (c == 'b' && randomness == 1) {
+        pieces['b'] = pieces['w'];
+        flags += flags;
+        break;
+      }
+
+      let positions = ArrayFun.range(10);
+
+      // Get random squares for bishops
+      let randIndex = 2 * randInt(5);
+      const bishop1Pos = positions[randIndex];
+      // The second bishop must be on a square of different color
+      let randIndex_tmp = 2 * randInt(5) + 1;
+      const bishop2Pos = positions[randIndex_tmp];
+      // Remove chosen squares
+      positions.splice(Math.max(randIndex, randIndex_tmp), 1);
+      positions.splice(Math.min(randIndex, randIndex_tmp), 1);
+
+      // Get random square for empress
+      randIndex = randInt(8);
+      const empressPos = positions[randIndex];
+      positions.splice(randIndex, 1);
+
+      // Get random square for princess
+      randIndex = randInt(7);
+      const princessPos = positions[randIndex];
+      positions.splice(randIndex, 1);
+
+      // Get random squares for knights
+      randIndex = randInt(6);
+      const knight1Pos = positions[randIndex];
+      positions.splice(randIndex, 1);
+      randIndex = randInt(5);
+      const knight2Pos = positions[randIndex];
+      positions.splice(randIndex, 1);
+
+      // Get random square for queen
+      randIndex = randInt(4);
+      const queenPos = positions[randIndex];
+      positions.splice(randIndex, 1);
+
+      // Now rooks + king positions are fixed:
+      const rook1Pos = positions[0];
+      const kingPos = positions[1];
+      const rook2Pos = positions[2];
+
+      // Finally put the shuffled pieces in the board array
+      pieces[c][rook1Pos] = "r";
+      pieces[c][knight1Pos] = "n";
+      pieces[c][bishop1Pos] = "b";
+      pieces[c][queenPos] = "q";
+      pieces[c][empressPos] = "e";
+      pieces[c][princessPos] = "s";
+      pieces[c][kingPos] = "k";
+      pieces[c][bishop2Pos] = "b";
+      pieces[c][knight2Pos] = "n";
+      pieces[c][rook2Pos] = "r";
+      flags += V.CoordToColumn(rook1Pos) + V.CoordToColumn(rook2Pos);
+    }
+    return (
+      pieces["b"].join("") + "/pppppppppp/91/91/91/91/PPPPPPPPPP/" +
+      pieces["w"].join("").toUpperCase() + " w 0 " + flags + " - -"
+    );
+  }
+
+};
index 5dc355f..1f3e861 100644 (file)
@@ -264,39 +264,39 @@ export class GrandRules extends ChessRules {
 
       // Get random squares for bishops
       let randIndex = 2 * randInt(4);
-      let bishop1Pos = positions[randIndex];
+      const bishop1Pos = positions[randIndex];
       // The second bishop must be on a square of different color
       let randIndex_tmp = 2 * randInt(4) + 1;
-      let bishop2Pos = positions[randIndex_tmp];
+      const bishop2Pos = positions[randIndex_tmp];
       // Remove chosen squares
       positions.splice(Math.max(randIndex, randIndex_tmp), 1);
       positions.splice(Math.min(randIndex, randIndex_tmp), 1);
 
       // Get random squares for knights
       randIndex = randInt(6);
-      let knight1Pos = positions[randIndex];
+      const knight1Pos = positions[randIndex];
       positions.splice(randIndex, 1);
       randIndex = randInt(5);
-      let knight2Pos = positions[randIndex];
+      const knight2Pos = positions[randIndex];
       positions.splice(randIndex, 1);
 
       // Get random square for queen
       randIndex = randInt(4);
-      let queenPos = positions[randIndex];
+      const queenPos = positions[randIndex];
       positions.splice(randIndex, 1);
 
       // ...random square for marshall
       randIndex = randInt(3);
-      let marshallPos = positions[randIndex];
+      const marshallPos = positions[randIndex];
       positions.splice(randIndex, 1);
 
       // ...random square for cardinal
       randIndex = randInt(2);
-      let cardinalPos = positions[randIndex];
+      const cardinalPos = positions[randIndex];
       positions.splice(randIndex, 1);
 
       // King position is now fixed,
-      let kingPos = positions[0];
+      const kingPos = positions[0];
 
       // Finally put the shuffled pieces in the board array
       pieces[c][knight1Pos] = "n";
diff --git a/client/src/variants/Musketeer.js b/client/src/variants/Musketeer.js
new file mode 100644 (file)
index 0000000..7fa3930
--- /dev/null
@@ -0,0 +1,769 @@
+import { ChessRules, Move, PiPo } from "@/base_rules";
+import { randInt } from "@/utils/alea";
+
+export class MusketeerRules extends ChessRules {
+
+  // Extra pieces get strange letters because many taken by combinations below
+  static get LEOPARD() {
+    return "d";
+  }
+  static get CANNON() {
+    return "w";
+  }
+  static get UNICORN() {
+    return "x";
+  }
+  static get ELEPHANT() {
+    return "e";
+  }
+  static get HAWK() {
+    return "h";
+  }
+  static get FORTRESS() {
+    return "f";
+  }
+  static get SPIDER() {
+    return "y";
+  }
+
+  static get RESERVE_PIECES() {
+    return (
+      [V.LEOPARD, V.CANNON, V.UNICORN, V.ELEPHANT,
+      V.HAWK, V.FORTRESS, V.SPIDER]
+    );
+  }
+
+  static get PIECES() {
+    return ChessRules.PIECES.concat(V.RESERVE_PIECES);
+  }
+
+  // Decode if normal piece, or + piece1 or piece2
+  getPiece(i, j) {
+    if (i >= V.size.x) return V.RESERVE_PIECES[j];
+    const piece = this.board[i][j].charAt(1);
+    if (V.PIECES.includes(piece)) return piece;
+    // Augmented piece:
+    switch (piece) {
+      case 'a':
+      case 'c':
+        return 'b';
+      case 'j':
+      case 'l':
+        return 'k';
+      case 'm':
+      case 'o':
+        return 'n';
+      case 's':
+      case 't':
+        return 'q';
+      case 'u':
+      case 'v':
+        return 'r';
+    }
+  }
+
+  getColor(i, j) {
+    if (i >= V.size.x) return i == V.size.x ? "w" : "b";
+    return this.board[i][j].charAt(0);
+  }
+
+  // Code: a/c = bishop + piece1/piece2 j/l for king,
+  // m/o for knight, s/t for queen, u/v for rook
+  static get AUGMENTED_PIECES() {
+    return [
+      'a',
+      'c',
+      'j',
+      'l',
+      'm',
+      'o',
+      's',
+      't',
+      'u',
+      'v'
+    ];
+  }
+
+  getPpath(b) {
+    return (ChessRules.PIECES.includes(b[1]) ? "" : "Musketeer/") + b;
+  }
+
+  getReservePpath(index, color) {
+    return "Musketeer/" + color + V.RESERVE_PIECES[index];
+  }
+
+  // Decode above notation into additional piece
+  getExtraPiece(symbol) {
+    if (['a','j','m','s','u'].includes(symbol))
+      return this.extraPieces[0];
+    return this.extraPieces[1];
+  }
+
+  // Inverse operation: augment piece
+  getAugmented(piece) {
+    const p1 = [2, 3].includes(this.movesCount);
+    switch (piece) {
+      case V.ROOK: return (p1 ? 'u' : 'v');
+      case V.KNIGHT: return (p1 ? 'm' : 'o');
+      case V.BISHOP: return (p1 ? 'a' : 'c');
+      case V.QUEEN: return (p1 ? 's' : 't');
+      case V.KING: return (p1 ? 'j' : 'l');
+    }
+    return '_'; //never reached
+  }
+
+  static IsGoodFen(fen) {
+    if (!ChessRules.IsGoodFen(fen)) return false;
+    const fenParsed = V.ParseFen(fen);
+    // 5) Check extra pieces
+    if (!fenParsed.extraPieces) return false;
+    // Not exact matching (would need to look at movesCount), but OK for now
+    if (!fenParsed.extraPieces.match(/^[dwxejfy-]{2,2}$/)) return false;
+    return true;
+  }
+
+  static IsGoodPosition(position) {
+    if (position.length == 0) return false;
+    const rows = position.split("/");
+    if (rows.length != V.size.x) return false;
+    let kings = { "w": 0, "b": 0 };
+    const allPiecesCodes = V.PIECES.concat(V.AUGMENTED_PIECES);
+    const kingBlackCodes = ['j','k','l'];
+    const kingWhiteCodes = ['J','K','L'];
+    for (let row of rows) {
+      let sumElts = 0;
+      for (let i = 0; i < row.length; i++) {
+        if (kingBlackCodes.includes(row[i])) kings['b']++;
+        else if (kingWhiteCodes.includes(row[i])) kings['w']++;
+        if (allPiecesCodes.includes(row[i].toLowerCase())) sumElts++;
+        else {
+          const num = parseInt(row[i], 10);
+          if (isNaN(num)) return false;
+          sumElts += num;
+        }
+      }
+      if (sumElts != V.size.y) return false;
+    }
+    // Both kings should be on board, only one of each color:
+    if (Object.values(kings).some(v => v != 1)) return false;
+    return true;
+  }
+
+  static ParseFen(fen) {
+    const fenParts = fen.split(" ");
+    return Object.assign(
+      ChessRules.ParseFen(fen),
+      { extraPieces: fenParts[5] }
+    );
+  }
+
+  static GenRandInitFen(randomness) {
+    return ChessRules.GenRandInitFen(randomness) + " --";
+  }
+
+  getFen() {
+    return super.getFen() + " " + this.extraPieces.join("");
+  }
+
+  setOtherVariables(fen) {
+    super.setOtherVariables(fen);
+    // Extra pieces may not be defined yet (thus '-')
+    this.extraPieces = V.ParseFen(fen).extraPieces.split("");
+    // At early stages, also init reserves
+    if (this.movesCount <= 5) {
+      const condShow = (piece) => {
+        if (this.movesCount == 0) return true;
+        if (this.movesCount == 1) return piece != this.extraPieces[0];
+        if (this.movesCount <= 3) return this.extraPiece.includes(piece);
+        return this.extraPiece[1] == piece;
+      }
+      this.reserve = { w : {}, b: {} };
+      for (let c of ['w', 'b']) {
+        V.RESERVE_PIECES.forEach(p =>
+          this.reserve[c][p] = condShow(p) ? 1 : 0);
+      }
+    }
+  }
+
+  // Kings may be augmented:
+  scanKings(fen) {
+    this.kingPos = { w: [-1, -1], b: [-1, -1] };
+    const rows = V.ParseFen(fen).position.split("/");
+    for (let i = 0; i < rows.length; i++) {
+      let k = 0; //column index on board
+      for (let j = 0; j < rows[i].length; j++) {
+        const piece = rows[i].charAt(j);
+        if (['j','k','l'].includes(piece.toLowerCase())) {
+          const color = (piece.charCodeAt(0) <= 90 ? 'w' : 'b');
+          this.kingPos[color] = [i, k];
+        }
+        else {
+          const num = parseInt(rows[i].charAt(j), 10);
+          if (!isNaN(num)) k += num - 1;
+        }
+        k++;
+      }
+    }
+  }
+
+  getReserveMoves([x, y]) {
+    const color = this.turn;
+    const p = V.RESERVE_PIECES[y];
+    if (
+      this.reserve[color][p] == 0 ||
+      ([2, 3].includes(this.movesCount) && p != this.extraPieces[0]) ||
+      ([4, 5].includes(this.movesCount) && p != this.extraPieces[1])
+    ) {
+      return [];
+    }
+    let moves = [];
+    const iIdx =
+      (this.movesCount <= 1 ? [2, 3, 4, 5] : [color == 'w' ? 7 : 0]);
+    const mappingAppear = [ [3, 4], [3, 3], [4, 4], [4, 3] ];
+    for (let i of iIdx) {
+      for (let j = 0; j < V.size.y; j++) {
+        if (
+          (this.movesCount <= 1 && this.board[i][j] == V.EMPTY) ||
+          (
+            this.movesCount >= 2 &&
+            ChessRules.PIECES.includes(this.board[i][j].charAt(1))
+          )
+        ) {
+          const [appearX, appearY] =
+            this.movesCount <= 1
+              ? mappingAppear[this.movesCount]
+              : [i, j];
+          const pOnBoard =
+            (this.movesCount >= 2 ? this.board[i][j].charAt(1) : '');
+          let mv = new Move({
+            appear: [
+              new PiPo({
+                x: appearX,
+                y: appearY,
+                c: color,
+                p: (this.movesCount <= 1 ? p : this.getAugmented(pOnBoard))
+              })
+            ],
+            vanish: [],
+            start: { x: x, y: y }, //a bit artificial...
+            end: { x: i, y: j }
+          });
+          if (this.movesCount >= 2)
+            mv.vanish.push(new PiPo({ x: i, y: j, c: color, p: pOnBoard }))
+          moves.push(mv);
+        }
+      }
+    }
+    return moves;
+  }
+
+  // Assumption: movesCount >= 6
+  getPotentialMovesFrom([x, y]) {
+    // Standard moves. If piece not in usual list, new piece appears.
+    const initialPiece = this.getPiece(x, y);
+    if (V.RESERVE_PIECES.includes(initialPiece)) {
+      switch (initialPiece) {
+        case V.LEOPARD: return this.getPotentialLeopardMoves([x, y]);
+        case V.CANNON: return this.getPotentialCannonMoves([x, y]);
+        case V.UNICORN: return this.getPotentialUnicornMoves([x, y]);
+        case V.ELEPHANT: return this.getPotentialElephantMoves([x, y]);
+        case V.HAWK: return this.getPotentialHawkMoves([x, y]);
+        case V.FORTRESS: return this.getPotentialFortressMoves([x, y]);
+        case V.SPIDER: return this.getPotentialSpiderMoves([x, y]);
+      }
+      return []; //never reached
+    }
+    // Following is mostly copy-paste from Titan Chess (TODO?)
+    let moves = [];
+    if (initialPiece == V.PAWN) {
+      const promotions =
+        ChessRules.PawnSpecs.promotions.concat(this.extraPieces);
+      moves = super.getPotentialPawnMoves([x, y], promotions);
+    }
+    else moves = super.getPotentialMovesFrom([x, y]);
+    const color = this.turn;
+    if (
+      ((color == 'w' && x == 7) || (color == "b" && x == 0)) &&
+      V.AUGMENTED_PIECES.includes(this.board[x][y][1])
+    ) {
+      const newPiece = this.getExtraPiece(this.board[x][y][1]);
+      moves.forEach(m => {
+        m.appear[0].p = initialPiece;
+        m.appear.push(
+          new PiPo({
+            p: newPiece,
+            c: color,
+            x: x,
+            y: y
+          })
+        );
+      });
+      moves.forEach(m => {
+        if (m.vanish.length <= 1) return;
+        const [vx, vy] = [m.vanish[1].x, m.vanish[1].y];
+        if (
+          m.appear.length >= 2 && //3 if the king was also augmented
+          m.vanish.length == 2 &&
+          m.vanish[1].c == color &&
+          V.AUGMENTED_PIECES.includes(this.board[vx][vy][1])
+        ) {
+          // Castle, rook is an "augmented piece"
+          m.appear[1].p = V.ROOK;
+          m.appear.push(
+            new PiPo({
+              p: this.getExtraPiece(this.board[vx][vy][1]),
+              c: color,
+              x: vx,
+              y: vy
+            })
+          );
+        }
+      });
+    }
+    return moves;
+  }
+
+  getSlideNJumpMoves([x, y], steps, nbSteps) {
+    let moves = [];
+    outerLoop: for (let step of steps) {
+      let i = x + step[0];
+      let j = y + step[1];
+      let stepCounter = 1;
+      while (V.OnBoard(i, j) && this.board[i][j] == V.EMPTY) {
+        moves.push(this.getBasicMove([x, y], [i, j]));
+        if (
+          !!nbSteps &&
+          // Next condition to remain compatible with super method
+          (isNaN(parseInt(nbSteps, 10)) || nbSteps >= stepCounter)
+        ) {
+          continue outerLoop;
+        }
+        i += step[0];
+        j += step[1];
+        stepCounter++;
+      }
+      if (V.OnBoard(i, j) && this.canTake([x, y], [i, j]))
+        moves.push(this.getBasicMove([x, y], [i, j]));
+    }
+    return moves;
+  }
+
+  // All types of leaps used here:
+  static get Leap2Ortho() {
+    return [ [-2, 0], [0, -2], [2, 0], [0, 2] ];
+  }
+  static get Leap2Diago() {
+    return [ [-2, -2], [-2, 2], [2, -2], [2, 2] ];
+  }
+  static get Leap3Ortho() {
+    return [ [-3, 0], [0, -3], [3, 0], [0, 3] ];
+  }
+  static get Leap3Diago() {
+    return [ [-3, -3], [-3, 3], [3, -3], [3, 3] ];
+  }
+  static get CamelSteps() {
+    return [
+      [-3, -1], [-3, 1], [-1, -3], [-1, 3],
+      [1, -3], [1, 3], [3, -1], [3, 1]
+    ];
+  }
+  static get VerticalKnight() {
+    return [ [-2, -1], [-2, 1], [2, -1], [2, 1] ];
+  }
+  static get HorizontalKnight() {
+    return [ [-1, -2], [-1, 2], [1, -2], [1, 2] ];
+  }
+
+  getPotentialLeopardMoves(sq) {
+    return (
+      this.getSlideNJumpMoves(sq, V.steps[V.BISHOP], 2)
+      .concat(super.getPotentialKnightMoves(sq))
+    );
+  }
+
+  getPotentialCannonMoves(sq) {
+    const steps =
+      V.steps[V.ROOK].concat(V.steps[V.BISHOP])
+      .concat(V.Leap2Ortho).concat(V.HorizontalKnight);
+    return super.getSlideNJumpMoves(sq, steps, "oneStep");
+  }
+
+  getPotentialUnicornMoves(sq) {
+    return (
+      super.getPotentialKnightMoves(sq)
+      .concat(super.getSlideNJumpMoves(sq, V.CamelSteps, "oneStep"))
+    );
+  }
+
+  getPotentialElephantMoves(sq) {
+    const steps =
+      V.steps[V.ROOK].concat(V.steps[V.BISHOP])
+      .concat(V.Leap2Ortho)
+      .concat(V.Leap2Diago);
+    return super.getSlideNJumpMoves(sq, steps, "oneStep");
+  }
+
+  getPotentialHawkMoves(sq) {
+    const steps =
+      V.Leap2Ortho.concat(V.Leap2Diago)
+      .concat(V.Leap3Ortho).concat(V.Leap3Diago);
+    return super.getSlideNJumpMoves(sq, steps, "oneStep");
+  }
+
+  getPotentialFortressMoves(sq) {
+    const steps = V.Leap2Ortho.concat(V.VerticalKnight)
+    return (
+      super.getSlideNJumpMoves(sq, steps, "oneStep")
+      .concat(this.getSlideNJumpMoves(sq, V.steps[V.BISHOP], 3))
+    );
+  }
+
+  getPotentialSpiderMoves(sq) {
+    const steps = V.Leap2Ortho.concat(V.steps[V.KNIGHT])
+    return (
+      super.getSlideNJumpMoves(sq, steps, "oneStep")
+      .concat(this.getSlideNJumpMoves(sq, V.steps[V.BISHOP], 2))
+    );
+  }
+
+  getPossibleMovesFrom([x, y]) {
+    if (this.movesCount <= 5)
+      return (x >= V.size.x ? this.getReserveMoves([x, y]) : []);
+    return super.getPossibleMovesFrom([x, y]);
+  }
+
+  getAllValidMoves() {
+    if (this.movesCount >= 6) return super.getAllValidMoves();
+    let moves = [];
+    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 moves;
+  }
+
+  atLeastOneMove() {
+    if (this.movesCount <= 5) return true;
+    return super.atLeastOneMove();
+  }
+
+  isAttacked(sq, color) {
+    if (super.isAttacked(sq, color)) return true;
+    if (
+      this.extraPieces.includes(V.LEOPARD) &&
+      this.isAttackedByLeopard(sq, color)
+    ) {
+      return true;
+    }
+    if (
+      this.extraPieces.includes(V.CANNON) &&
+      this.isAttackedByCannon(sq, color)
+    ) {
+      return true;
+    }
+    if (
+      this.extraPieces.includes(V.UNICORN) &&
+      this.isAttackedByUnicorn(sq, color)
+    ) {
+      return true;
+    }
+    if (
+      this.extraPieces.includes(V.ELEPHANT) &&
+      this.isAttackedByElephant(sq, color)
+    ) {
+      return true;
+    }
+    if (
+      this.extraPieces.includes(V.HAWK) &&
+      this.isAttackedByHawk(sq, color)
+    ) {
+      return true;
+    }
+    if (
+      this.extraPieces.includes(V.FORTRESS) &&
+      this.isAttackedByFortress(sq, color)
+    ) {
+      return true;
+    }
+    if (
+      this.extraPieces.includes(V.SPIDER) &&
+      this.isAttackedBySpider(sq, color)
+    ) {
+      return true;
+    }
+    return false;
+  }
+
+  // Modify because of the limiyted steps options of some of the pieces here
+  isAttackedBySlideNJump([x, y], color, piece, steps, nbSteps) {
+    if (!!nbSteps && isNaN(parseInt(nbSteps, 10))) nbSteps = 1;
+    for (let step of steps) {
+      let rx = x + step[0],
+          ry = y + step[1];
+      let stepCounter = 1;
+      while (
+        V.OnBoard(rx, ry) && this.board[rx][ry] == V.EMPTY &&
+        (!nbSteps || stepCounter < nbSteps)
+      ) {
+        rx += step[0];
+        ry += step[1];
+        stepCounter++;
+      }
+      if (
+        V.OnBoard(rx, ry) &&
+        this.board[rx][ry] != V.EMPTY &&
+        this.getPiece(rx, ry) == piece &&
+        this.getColor(rx, ry) == color
+      ) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  isAttackedByLeopard(sq, color) {
+    return (
+      super.isAttackedBySlideNJump(
+        sq, color, V.LEOPARD, V.steps[V.KNIGHT], "oneStep") ||
+      this.isAttackedBySlideNJump(sq, color, V.LEOPARD, V.steps[V.BISHOP], 2)
+    );
+  }
+
+  isAttackedByCannon(sq, color) {
+    const steps =
+      V.steps[V.ROOK].concat(V.steps[V.BISHOP])
+      .concat(V.Leap2Ortho).concat(V.HorizontalKnight);
+    return super.isAttackedBySlideNJump(sq, color, V.CANNON, steps, "oneStep");
+  }
+
+  isAttackedByUnicorn(sq, color) {
+    const steps = V.steps[V.KNIGHT].concat(V.CamelSteps)
+    return (
+      super.isAttackedBySlideNJump(sq, color, V.UNICORN, steps, "oneStep")
+    );
+  }
+
+  isAttackedByElephant(sq, color) {
+    const steps =
+      V.steps[V.ROOK].concat(V.steps[V.BISHOP])
+      .concat(V.Leap2Ortho)
+      .concat(V.Leap2Diago);
+    return (
+      super.isAttackedBySlideNJump(sq, color, V.ELEPHANT, steps, "oneStep")
+    );
+  }
+
+  isAttackedByHawk(sq, color) {
+    const steps =
+      V.Leap2Ortho.concat(V.Leap2Diago)
+      .concat(V.Leap3Ortho).concat(V.Leap3Diago);
+    return super.isAttackedBySlideNJump(sq, color, V.HAWK, steps, "oneStep");
+  }
+
+  isAttackedByFortress(sq, color) {
+    const steps = V.Leap2Ortho.concat(V.VerticalKnight)
+    return (
+      super.isAttackedBySlideNJump(sq, color, V.FORTRESS, steps, "oneStep") ||
+      this.isAttackedBySlideNJump(sq, color, V.FORTRESS, V.steps[V.BISHOP], 3)
+    );
+  }
+
+  isAttackedBySpider(sq, color) {
+    const steps = V.Leap2Ortho.concat(V.steps[V.KNIGHT])
+    return (
+      super.isAttackedBySlideNJump(sq, color, V.SPIDER, steps, "oneStep") ||
+      this.isAttackedBySlideNJump(sq, color, V.SPIDER, V.steps[V.BISHOP], 2)
+    );
+  }
+
+  getCheckSquares() {
+    if (this.movesCount <= 6) return [];
+    return super.getCheckSquares();
+  }
+
+  // At movesCount == 0,1: show full reserves [minus chosen piece1]
+  // At movesCount == 2,3: show reserve with only 2 selected pieces
+  // At movesCount == 4,5: show reserve with only piece2
+  // Then, no reserve.
+  postPlay(move) {
+    if (this.movesCount > 6) super.postPlay(move);
+    else {
+      switch (this.movesCount) {
+        case 1:
+          this.reserve['w'][move.appear[0].p]--;
+          this.reserve['b'][move.appear[0].p]--;
+          this.extraPieces[0] = move.appear[0].p;
+          break;
+        case 2:
+          this.extraPieces[1] = move.appear[0].p;
+          for (let p of V.RESERVE_PIECES) {
+            const resVal = (this.extraPieces.includes(p) ? 1 : 0);
+            this.reserve['w'][p] = resVal;
+            this.reserve['b'][p] = resVal;
+          }
+          break;
+        case 3:
+          this.reserve['w'][this.extraPieces[0]]--;
+          break;
+        case 4:
+          this.reserve['b'][this.extraPieces[0]]--;
+          break;
+        case 5:
+          this.reserve['w'][this.extraPieces[1]]--;
+          break;
+        case 6:
+          this.reserve = null;
+          this.board[3][3] = "";
+          this.board[3][4] = "";
+          break;
+      }
+    }
+  }
+
+  postUndo(move) {
+    if (this.movesCount >= 6) super.postUndo(move);
+    else {
+      switch (this.movesCount) {
+        case 0:
+          this.reserve['w'][move.appear[0].p]++;
+          this.reserve['b'][move.appear[0].p]++;
+          this.extraPieces[0] = '-';
+          break;
+        case 1:
+          this.extraPieces[1] = '-';
+          for (let p of V.RESERVE_PIECES) {
+            const resVal = (p != this.extraPieces[0] ? 1 : 0);
+            this.reserve['w'][p] = resVal;
+            this.reserve['b'][p] = resVal;
+          }
+          break;
+        case 2:
+          this.reserve['w'][this.extraPieces[0]]++;
+          break;
+        case 3:
+          this.reserve['b'][this.extraPieces[0]]++;
+          break;
+        case 4:
+          this.reserve['w'][this.extraPieces[1]]++;
+          break;
+        case 5:
+          this.reserve = { w: {}, b: {} };
+          for (let c of ['w', 'b'])
+            V.RESERVE_PIECES.forEach(p => this.reserve[c][p] = 0);
+          this.reserve['b'][this.extraPieces[1]] = 1;
+          this.board[3][3] = 'b' + this.extraPieces[1];
+          this.board[3][4] = 'w' + this.extraPieces[0];
+          break;
+      }
+    }
+  }
+
+  getComputerMove() {
+    if (this.movesCount >= 6) return super.getComputerMove();
+    // Choose a move at random
+    const moves = this.getAllValidMoves();
+    return moves[randInt(moves.length)];
+  }
+
+  static get SEARCH_DEPTH() {
+    return 2;
+  }
+
+  evalPosition() {
+    let evaluation = 0;
+    for (let i = 0; i < V.size.x; i++) {
+      for (let j = 0; j < V.size.y; j++) {
+        if (this.board[i][j] != V.EMPTY) {
+          const sign = this.getColor(i, j) == "w" ? 1 : -1;
+          const piece = this.getPiece(i, j);
+          evaluation += sign * V.VALUES[piece];
+          const symbol = this.board[i][j][1];
+          if (V.AUGMENTED_PIECES.includes(symbol)) {
+            const extraPiece = this.getExtraPiece(symbol);
+            evaluation += sign * V.VALUES[extraPiece]
+          }
+        }
+      }
+    }
+    return evaluation;
+  }
+
+  static get VALUES() {
+    return Object.assign(
+      {
+        d: 6.7,
+        w: 7.5,
+        x: 5.6,
+        e: 6.3,
+        h: 5.5,
+        f: 7.6,
+        y: 8.15
+      },
+      ChessRules.VALUES
+    );
+  }
+
+  static get ExtraDictionary() {
+    return {
+      [V.LEOPARD]: { prefix: 'L', name: "Leopard" },
+      [V.CANNON]: { prefix: 'C', name: "Cannon" },
+      [V.UNICORN]: { prefix: 'U', name: "Unicorn" },
+      [V.ELEPHANT]: { prefix: 'E', name: "Elephant" },
+      [V.HAWK]: { prefix: 'H', name: "Hawk" },
+      [V.FORTRESS]: { prefix: 'F', name: "Fortress" },
+      [V.SPIDER]: { prefix: 'S', name: "Spider" }
+    }
+  }
+
+  getNotation(move) {
+    if (this.movesCount <= 5) {
+      if (this.movesCount <= 1)
+        return V.ExtraDictionary[move.appear[0].p].name;
+      // Put something on the board:
+      return (
+        V.ExtraDictionary[V.RESERVE_PIECES[move.start.y]].prefix +
+        "@" + V.CoordsToSquare(move.end)
+      );
+    }
+    let notation = "";
+    if (
+      V.AUGMENTED_PIECES.includes(move.vanish[0].p) ||
+      (
+        move.vanish.length >= 2 &&
+        V.AUGMENTED_PIECES.includes(move.vanish[1].p)
+      )
+    ) {
+      // Simplify move before calling super.getNotation()
+      let smove = JSON.parse(JSON.stringify(move));
+      if (ChessRules.PIECES.includes(move.vanish[0].p)) {
+        // Castle with an augmented rook
+        smove.appear.pop();
+        smove.vanish[1].p = smove.appear[1].p;
+      }
+      else {
+        // Moving an augmented piece
+        smove.appear.pop();
+        smove.vanish[0].p = smove.appear[0].p;
+        if (
+          smove.vanish.length == 2 &&
+          smove.vanish[0].c == smove.vanish[1].c &&
+          V.AUGMENTED_PIECES.includes(move.vanish[1].p)
+        ) {
+          // Castle with an augmented rook
+          smove.appear.pop();
+          smove.vanish[1].p = smove.appear[1].p;
+        }
+      }
+      notation = super.getNotation(smove);
+    }
+    // Else, more common case:
+    notation = super.getNotation(move);
+    const pieceSymbol = notation.charAt(0).toLowerCase();
+    if (move.vanish[0].p != V.PAWN && V.RESERVE_PIECES.includes(pieceSymbol))
+      notation = V.ExtraDictionary[pieceSymbol].prefix + notation.substr(1);
+    return notation;
+  }
+
+};
index e9b0594..9e651b0 100644 (file)
@@ -145,8 +145,8 @@ export class TitanRules extends ChessRules {
     const initialPiece = this.getPiece(x, y);
     const color = this.turn;
     if (
-      V.AUGMENTED_PIECES.includes(this.board[x][y][1]) &&
-      ((color == 'w' && x == 7) || (color == "b" && x == 0))
+      ((color == 'w' && x == 7) || (color == "b" && x == 0)) &&
+      V.AUGMENTED_PIECES.includes(this.board[x][y][1])
     ) {
       const newPiece = this.getExtraPiece(this.board[x][y][1]);
       moves.forEach(m => {
@@ -160,28 +160,28 @@ export class TitanRules extends ChessRules {
           })
         );
       });
+      moves.forEach(m => {
+        if (m.vanish.length <= 1) return;
+        const [vx, vy] = [m.vanish[1].x, m.vanish[1].y];
+        if (
+          m.appear.length >= 2 && //3 if the king was also augmented
+          m.vanish.length == 2 &&
+          m.vanish[1].c == color &&
+          V.AUGMENTED_PIECES.includes(this.board[vx][vy][1])
+        ) {
+          // Castle, rook is an "augmented piece"
+          m.appear[1].p = V.ROOK;
+          m.appear.push(
+            new PiPo({
+              p: this.getExtraPiece(this.board[vx][vy][1]),
+              c: color,
+              x: vx,
+              y: vy
+            })
+          );
+        }
+      });
     }
-    moves.forEach(m => {
-      if (m.vanish.length <= 1) return;
-      const [vx, vy] = [m.vanish[1].x, m.vanish[1].y];
-      if (
-        m.appear.length >= 2 && //3 if the king was also augmented
-        m.vanish.length == 2 &&
-        m.vanish[1].c == color &&
-        V.AUGMENTED_PIECES.includes(this.board[vx][vy][1])
-      ) {
-        // Castle, rook is an "augmented piece"
-        m.appear[1].p = V.ROOK;
-        m.appear.push(
-          new PiPo({
-            p: this.getExtraPiece(this.board[vx][vy][1]),
-            c: color,
-            x: vx,
-            y: vy
-          })
-        );
-      }
-    });
     return moves;
   }
 
index be0f09b..b6d0bf7 100644 (file)
@@ -33,6 +33,7 @@ insert or ignore into Variants (name, description) values
   ('Bishopawns', 'Bishop versus pawns'),
   ('Brotherhood', 'Friendly pieces'),
   ('Cannibal', 'Capture powers'),
+  ('Capablanca', 'Capablanca Chess'),
   ('Capture', 'Mandatory captures'),
   ('Castle', 'Win by castling long'),
   ('Checkered1', 'Shared pieces (v1)'),
@@ -94,6 +95,7 @@ insert or ignore into Variants (name, description) values
   ('Minixiangqi', 'Xiangqi 7 x 7'),
   ('Monochrome', 'All of the same color'),
   ('Monster', 'White move twice'),
+  ('Musketeer', 'New fairy pieces'),
   ('Omega', 'A wizard in the corner'),
   ('Orda', 'Mongolian Horde (v1)'),
   ('Ordamirror', 'Mongolian Horde (v2)'),