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://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
 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]));
       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];
       }
         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://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
   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="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
   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://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
   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://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
   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://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
   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://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
   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",
   "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",
   "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",
   "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",
   "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",
   "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",
   "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",
   "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",
   "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",
   "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",
   "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",
   "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",
   "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",
     "Avalanche",
     "Bicolour",
     "Brotherhood",
+    "Capablanca",
     "Castle",
     "Crossing",
     "Doublearmy",
     "Castle",
     "Crossing",
     "Doublearmy",
@@ -411,6 +412,7 @@ p.
     "Magnetic",
     "Maharajah",
     "Mesmer",
     "Magnetic",
     "Maharajah",
     "Mesmer",
+    "Musketeer",
     "Otage",
     "Pacosako",
     "Parachute",
     "Otage",
     "Pacosako",
     "Parachute",
index e3a287f..9ba6c2d 100644 (file)
@@ -408,6 +408,7 @@ p.
     "Avalanche",
     "Bicolour",
     "Brotherhood",
     "Avalanche",
     "Bicolour",
     "Brotherhood",
+    "Capablanca",
     "Castle",
     "Crossing",
     "Doublearmy",
     "Castle",
     "Crossing",
     "Doublearmy",
@@ -422,6 +423,7 @@ p.
     "Magnetic",
     "Maharajah",
     "Mesmer",
     "Magnetic",
     "Maharajah",
     "Mesmer",
+    "Musketeer",
     "Otage",
     "Pacosako",
     "Parachute",
     "Otage",
     "Pacosako",
     "Parachute",
index cd1a6e4..82a3842 100644 (file)
@@ -407,6 +407,7 @@ p.
     "Avalanche",
     "Bicolour",
     "Brotherhood",
     "Avalanche",
     "Bicolour",
     "Brotherhood",
+    "Capablanca",
     "Castle",
     "Crossing",
     "Doublearmy",
     "Castle",
     "Crossing",
     "Doublearmy",
@@ -421,6 +422,7 @@ p.
     "Magnetic",
     "Maharajah",
     "Mesmer",
     "Magnetic",
     "Maharajah",
     "Mesmer",
+    "Musketeer",
     "Otage",
     "Pacosako",
     "Parachute",
     "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);
 
       // 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;
       // 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);
       // 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);
       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);
       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);
       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);
       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,
       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";
 
       // 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 (
     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 => {
     ) {
       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;
   }
 
     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'),
   ('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)'),
   ('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'),
   ('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)'),
   ('Omega', 'A wizard in the corner'),
   ('Orda', 'Mongolian Horde (v1)'),
   ('Ordamirror', 'Mongolian Horde (v2)'),