Improve autoplay, debug move reception while autoplay and/or analyze is on. Add Ambig...
authorBenjamin Auder <benjamin.auder@somewhere>
Mon, 6 Apr 2020 22:19:41 +0000 (00:19 +0200)
committerBenjamin Auder <benjamin.auder@somewhere>
Mon, 6 Apr 2020 22:19:41 +0000 (00:19 +0200)
30 files changed:
client/public/images/pieces/Ambiguous/bc.svg [new file with mode: 0644]
client/public/images/pieces/Ambiguous/bg.svg [new file with mode: 0644]
client/public/images/pieces/Ambiguous/bl.svg [new file with mode: 0644]
client/public/images/pieces/Ambiguous/bo.svg [new file with mode: 0644]
client/public/images/pieces/Ambiguous/bs.svg [new file with mode: 0644]
client/public/images/pieces/Ambiguous/bt.svg [new file with mode: 0644]
client/public/images/pieces/Ambiguous/bu.svg [new file with mode: 0644]
client/public/images/pieces/Ambiguous/wc.svg [new file with mode: 0644]
client/public/images/pieces/Ambiguous/wg.svg [new file with mode: 0644]
client/public/images/pieces/Ambiguous/wl.svg [new file with mode: 0644]
client/public/images/pieces/Ambiguous/wo.svg [new file with mode: 0644]
client/public/images/pieces/Ambiguous/ws.svg [new file with mode: 0644]
client/public/images/pieces/Ambiguous/wt.svg [new file with mode: 0644]
client/public/images/pieces/Ambiguous/wu.svg [new file with mode: 0644]
client/src/components/BaseGame.vue
client/src/components/ComputerGame.vue
client/src/components/GameList.vue
client/src/translations/about/en.pug
client/src/translations/about/es.pug
client/src/translations/about/fr.pug
client/src/translations/rules/Ambiguous/en.pug [new file with mode: 0644]
client/src/translations/rules/Ambiguous/es.pug [new file with mode: 0644]
client/src/translations/rules/Ambiguous/fr.pug [new file with mode: 0644]
client/src/translations/rules/Rifle/en.pug
client/src/translations/rules/Rifle/es.pug
client/src/translations/rules/Rifle/fr.pug
client/src/variants/Ambiguous.js [new file with mode: 0644]
client/src/views/Game.vue
client/src/views/Hall.vue
client/src/views/MyGames.vue

diff --git a/client/public/images/pieces/Ambiguous/bc.svg b/client/public/images/pieces/Ambiguous/bc.svg
new file mode 100644 (file)
index 0000000..03c4273
--- /dev/null
@@ -0,0 +1,94 @@
+<?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="bc.svg"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14">
+  <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" />
+        <dc:title></dc:title>
+      </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="1920"
+     inkscape:window-height="1060"
+     id="namedview18"
+     showgrid="false"
+     inkscape:zoom="0.11523438"
+     inkscape:cx="1041.3559"
+     inkscape:cy="1024"
+     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:#aa0000;fill-opacity:1;stroke-width:8.67796612"
+     d="m 588.3661,1806.9043 c -140.23544,-21.1298 -204.39621,-20.6655 -259.5019,1.8779 -16.2447,6.6456 -30.23101,11.0554 -31.0807,9.7995 -35.96451,-53.1571 -82.34661,-142.2128 -78.83437,-151.3656 6.51642,-16.9815 87.66619,-52.8844 143.43971,-63.4616 68.1344,-12.9214 120.91212,-10.9979 260.68913,9.5008 146.49435,21.4839 174.87198,17.5972 232.65788,-31.8654 38.04886,-32.5684 40.24466,-47.1255 7.10842,-47.1255 -26.20215,0 -155.33701,-33.9649 -164.97106,-43.3905 -4.37824,-4.2835 13.23685,-59.6688 41.22034,-129.6047 26.87617,-67.1687 48.86577,-123.7619 48.86577,-125.7628 0,-2.0009 -27.08103,-21.6414 -60.18007,-43.6456 C 635.14989,1130.281 595.93066,1056.1639 595.64535,942.15247 595.32739,815.09576 632.71111,746.38082 755.6375,648.07111 849.62661,572.90383 961.51864,468.15819 961.51864,455.3393 c 0,-4.21397 -9.84073,-15.40249 -21.8683,-24.86338 -49.81664,-39.18578 -62.4405,-112.72331 -28.03,-163.28281 43.95297,-64.5803 107.49346,-84.57707 169.01566,-53.19078 87.8805,44.83331 98.4051,161.46802 20.2732,224.67101 l -21.1518,17.11027 64.5416,64.37856 c 35.4979,35.40821 96.0034,88.27038 134.4567,117.4715 112.8465,85.69483 141.6889,125.13229 165.2212,225.91436 22.6,96.78918 3.2669,194.32507 -53.1897,268.34357 -11.8057,15.4781 -46.6364,44.4207 -77.4014,64.3168 l -55.9364,36.1749 14.2774,35.9575 c 7.8525,19.7767 30.7334,76.9609 50.8464,127.0761 25.9358,64.6237 33.5999,92.8072 26.3577,96.9256 -15.6736,8.9131 -149.3244,41.9219 -169.7394,41.9219 -53.942,0 30.5251,76.2259 100.6463,90.8265 15.3486,3.1958 84.7086,-2.6302 156.2034,-13.1206 88.8154,-13.032 148.9911,-17.3471 194.5258,-13.9493 70.3813,5.2517 148.5137,30.01 184.812,58.5622 l 22.2161,17.4752 -44.0299,71.1199 c -24.2163,39.116 -45.2702,72.4127 -46.7864,73.9926 -1.5162,1.5799 -11.1141,-1.6001 -21.3286,-7.0668 -47.8594,-25.6136 -115.1656,-26.7104 -274.5188,-4.4737 -181.0592,25.2657 -213.7654,26.316 -264.2958,8.4879 -54.7038,-19.3006 -126.5456,-78.0493 -144.1004,-117.8381 -8.2131,-18.6155 -17.302,-33.8463 -20.1975,-33.8463 -2.8956,0 -10.149,13.5073 -16.1187,30.0163 -14.5729,40.3007 -79.19646,95.5786 -137.03754,117.2197 -59.22578,22.1592 -107.56401,21.3389 -280.81536,-4.7656 z m 385.81112,-176.6024 c 2.7527,-4.454 8.33663,-25.9319 12.40873,-47.7288 7.39285,-39.5721 7.36694,-39.6307 -17.50971,-39.6307 -13.70244,0 -24.91353,3.3552 -24.91353,7.4562 0,4.1009 -15.95222,25.5789 -35.44938,47.7288 L 873.26396,1638.4 h 47.95417 c 26.37481,0 50.2064,-3.6441 52.95909,-8.0981 z m 176.66458,-15.7663 c -12.2073,-13.1254 -29.0073,-34.6034 -37.3334,-47.7288 -19.7924,-31.201 -56.5321,-33.4526 -56.5321,-3.4644 0,11.2199 4.2871,32.6978 9.5269,47.7288 9.1533,26.2571 11.4289,27.3288 58.0303,27.3288 h 48.5035 z m 122.6248,-201.1221 c -13.5873,-34.208 -26.4857,-53.248 -38.2273,-56.4293 -54.2484,-14.6978 -216.4602,-22.3342 -302.08568,-14.2212 -133.48885,12.6482 -131.64355,11.8389 -156.3763,68.585 -11.78301,27.0345 -20.02908,50.6967 -18.32458,52.5827 1.70449,1.886 33.44754,-2.0191 70.54012,-8.678 86.69607,-15.5636 333.83234,-13.9043 405.88174,2.7252 28.6373,6.6096 53.6497,10.9029 55.5832,9.5405 1.9335,-1.3623 -5.7125,-25.7096 -16.9912,-54.1049 z m -246.8632,-161.183 c 62.0474,0 129.487,2.9872 149.8656,6.6383 l 37.0521,6.6384 -14.2646,-32.6723 c -7.8455,-17.9697 -16.1376,-41.1963 -18.4268,-51.6146 -2.2893,-10.4184 -10.3968,-21.3348 -18.0167,-24.2588 -18.5728,-7.1271 -263.30563,-6.8273 -281.99736,0.3453 -8.11504,3.1141 -14.75462,12.5774 -14.75462,21.0296 0,8.4523 -5.85763,29.387 -13.01695,46.5217 -7.15932,17.1347 -13.01695,33.278 -13.01695,35.8742 0,2.5961 16.59661,1.7453 36.88135,-1.8907 20.28475,-3.6361 87.64746,-6.6111 149.69493,-6.6111 z m 22.2654,-221.5935 c 13.7152,-7.3401 16.7854,-18.4512 16.7854,-60.74572 v -51.76247 h 43.9604 c 57.51,0 77.5312,-11.20475 77.5312,-43.38983 0,-32.18507 -20.0212,-43.38983 -77.5312,-43.38983 h -43.9604 v -50.3322 c 0,-56.28724 -9.4759,-71.15932 -45.3402,-71.15932 -29.08705,0 -41.43942,24.43161 -41.43942,81.9626 v 37.4429 l -52.75739,3.81612 c -53.12381,3.84263 -68.3295,13.42013 -68.60125,43.20937 -0.25068,27.47928 24.87622,41.84019 73.20667,41.84019 h 46.06594 l 3.81613,52.75739 c 4.69394,64.8931 25.16892,82.8147 68.26412,59.7508 z"
+     id="path24"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/client/public/images/pieces/Ambiguous/bg.svg b/client/public/images/pieces/Ambiguous/bg.svg
new file mode 100644 (file)
index 0000000..498fad6
--- /dev/null
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<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"
+   width="225.85715"
+   height="225.85715"
+   id="svg2"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14"
+   sodipodi:docname="bg.svg">
+  <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="namedview2990"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="1.2685914"
+     inkscape:cx="150.98606"
+     inkscape:cy="79.109664"
+     inkscape:window-x="0"
+     inkscape:window-y="20"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <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>
+  <g
+     id="layer1"
+     transform="matrix(0.85,0,0,0.85,-173.64285,-305.57927)">
+    <path
+       d="m 448.57143,492.36218 a 111.42857,111.42857 0 1 1 -222.85715,0 111.42858,111.42858 0 1 1 222.85715,0 z"
+       id="path2985"
+       style="fill:#999999;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+  </g>
+  <path
+     style="fill:#ffd42a;fill-opacity:1;stroke-width:0.7882759"
+     d="M 96.622502,204.53012 C 67.564648,199.26282 42.624761,180.44711 29.459638,153.85964 22.437471,139.67809 19.495398,125.46102 20.222589,109.22312 20.77764,96.829044 22.227554,89.714148 26.358534,79.113332 31.043685,67.090418 37.122548,57.822271 46.775992,47.983831 60.753949,33.738004 75.249188,25.794002 95.021575,21.543219 c 8.947575,-1.923603 26.891915,-1.898909 36.099935,0.04968 49.11824,10.394322 81.14147,56.240108 73.7121,105.529261 -5.86471,38.90854 -36.85818,70.61346 -75.64015,77.37647 -8.38903,1.46292 -24.58784,1.47858 -32.570958,0.0315 z"
+     id="path3711"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#d40000;fill-opacity:1;stroke-width:0.7882759"
+     d="M 94.072543,203.6975 C 59.729911,196.32861 32.073763,169.81325 22.997244,135.55397 20.95699,127.85304 20.155808,107.72266 21.518622,98.402317 25.876857,68.596169 48.279482,39.640892 76.140639,27.80364 91.058265,21.46565 109.54295,19.014674 125.9413,21.200323 c 35.96175,4.793152 67.27849,32.743841 76.65409,68.415014 2.48306,9.447249 3.36421,27.139783 1.86299,37.406703 -5.51291,37.70304 -36.0962,69.60647 -73.53422,76.70834 -8.04917,1.5269 -29.67218,1.50761 -36.851617,-0.0329 z"
+     id="path9"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/client/public/images/pieces/Ambiguous/bl.svg b/client/public/images/pieces/Ambiguous/bl.svg
new file mode 100644 (file)
index 0000000..965d8de
--- /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="bl.svg"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14">
+  <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" />
+        <dc:title></dc:title>
+      </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.11523438"
+     inkscape:cx="1041.3559"
+     inkscape:cy="1024"
+     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:#aa0000;fill-opacity:1;stroke-width:8.67796612"
+     d="m 439.32682,1131.2116 c -98.82271,-105.3974 -111.7667,-134.02476 -95.73625,-211.73358 7.73972,-37.51884 17.18343,-55.62427 40.09616,-76.87211 67.97136,-63.0324 207.47751,-72.60657 311.53302,-21.38021 121.28402,59.70793 191.91453,166.13911 208.99297,314.9258 l 4.60567,40.1244 -97.31089,5.9429 c -92.49989,5.6491 -247.34705,24.8888 -275.24004,34.1985 -8.35119,2.7874 -42.95058,-27.6237 -96.94064,-85.2057 z"
+     id="path26"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#aa0000;fill-opacity:1;stroke-width:8.67796612"
+     d="m 1005.1044,774.15188 c -10.55563,-23.42963 -21.23712,-56.85097 -23.73661,-74.26963 -3.84815,-26.81744 -1.24252,-33.83383 17.00471,-45.78988 16.4602,-10.78511 26.8921,-12.08824 44.1731,-5.518 34.2561,13.02416 36.1042,40.76668 7.2254,108.46198 l -25.4744,59.71487 z"
+     id="path28"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#aa0000;fill-opacity:1;stroke-width:8.67796612"
+     d="m 1460.5017,1207.9452 c -28.6373,-6.3435 -113.6885,-16.2631 -189.0027,-22.0435 l -136.9349,-10.5097 5.7244,-52.6994 c 14.2209,-130.91879 92.9106,-244.32988 209.2242,-301.54301 54.6546,-26.88388 64.581,-28.84612 145.5674,-28.77556 72.7791,0.0634 92.7333,3.1768 122.7029,19.1449 53.6661,28.5939 79.094,63.73513 85.9762,118.81872 9.1819,73.48905 -5.0423,102.20955 -99.2517,200.40135 -45.793,47.7288 -85.2126,87.2207 -87.599,87.7597 -2.3865,0.5391 -27.7695,-4.21 -56.4068,-10.5535 z"
+     id="path30"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#aa0000;fill-opacity:1;stroke-width:8.67796612"
+     d="m 785.92018,1863.2971 c -201.24404,-16.6257 -379.79137,-63.1895 -379.79137,-99.0467 0,-6.9033 13.8276,-63.5869 30.72799,-125.9637 l 30.72797,-113.4124 -17.76195,-97.271 c -9.76907,-53.4991 -21.72672,-98.6003 -26.57257,-100.2249 -20.82867,-6.9831 -112.32734,-81.8827 -154.49038,-126.4639 -54.61477,-57.7471 -83.98352,-118.2082 -96.85629,-199.397 -12.45395,-78.54728 -0.40692,-136.18907 42.26009,-202.20323 112.11625,-173.46565 287.8935,-210.56482 532.27438,-112.34072 l 91.49115,36.77308 4.41236,-54.96859 c 3.31286,-41.27141 10.45025,-63.68128 28.64329,-89.93385 62.04763,-89.53476 185.73005,-108.4543 267.63655,-40.94002 43.9988,36.2675 65.8803,82.91028 65.8803,140.431 v 47.27066 l 70.4895,-29.7287 c 196.4792,-82.86444 340.4643,-84.76224 456.771,-6.0205 78.4784,53.13115 148.9638,171.8734 149.4148,251.70945 0.762,134.87732 -74.3963,258.28002 -217.7037,357.44772 -43.889,30.3709 -47.418,35.5365 -57.3235,83.9086 -25.0377,122.2687 -24.0831,148.4142 9.9696,273.0685 36.8902,135.0416 39.6815,127.1799 -55.6045,156.6107 -166.211,51.3374 -501.3376,73.2706 -774.59472,50.6955 z M 649.11186,1706.8698 c 195.25251,-35.9892 601.19994,-30.9348 799.35874,9.9526 44.8001,9.244 85.9001,16.8585 91.3333,16.9212 13.3744,0.1545 -12.0864,-104.8009 -28.6791,-118.2217 -6.7055,-5.4236 -55.9845,-17.1364 -109.5091,-26.0286 -139.1908,-23.1239 -606.26613,-23.5441 -750.44941,-0.6751 -53.75822,8.5266 -102.76239,17.4294 -108.89818,19.7839 -9.04089,3.4693 -40.68167,97.7781 -40.68167,121.2561 0,3.3929 12.69153,3.3875 28.20339,-0.01 15.51186,-3.3996 69.20678,-13.7388 119.32203,-22.9762 z m 44.12555,-194.4725 c 204.53804,-29.7929 538.21829,-25.2765 730.84309,9.892 42.0159,7.671 77.9526,12.3872 79.8594,10.4803 1.9069,-1.9069 6.9393,-25.6087 11.183,-52.6708 l 7.7159,-49.2038 -57.2024,-12.8975 c -122.8995,-27.7101 -215.9846,-35.1662 -439.033,-35.1662 -223.92949,0 -316.05364,7.4341 -440.82011,35.5727 l -58.98959,13.3039 5.48176,40.4309 c 9.44606,69.6694 9.81098,70.2025 41.97347,61.322 15.73305,-4.3441 69.27787,-13.8227 118.98848,-21.0635 z m 891.91639,-236.8458 c 26.899,-22.97 73.0853,-60.1206 102.6362,-82.5568 89.4999,-67.9515 116.4813,-122.1203 116.7182,-234.32671 0.177,-83.88867 -25.8732,-144.05703 -84.8445,-195.96564 -95.7999,-84.32645 -264.6372,-86.24052 -433.7158,-4.91695 -137.3485,66.06195 -217.6108,209.20757 -226.6018,404.1382 l -4.6404,100.6084 116.1183,6.0859 c 136.4965,7.154 289.4128,27.3349 362.262,47.8091 1.7384,0.4885 25.1689,-17.9054 52.0678,-40.8755 z m -927.36397,11.69 c 45.34237,-7.1901 138.08814,-15.6866 206.1017,-18.8812 l 123.66101,-5.8083 v -87.9477 c 0,-130.6831 -28.09478,-218.54319 -102.53655,-320.65979 C 820.48276,765.4201 664.92476,697.09289 527.62034,696.96224 c -126.31097,-0.12018 -203.8673,40.92543 -256.24146,135.61222 -23.62437,42.71032 -25.67384,53.22802 -25.12588,128.94418 0.89364,123.48236 23.35594,161.71286 155.76012,265.10156 38.99403,30.4488 76.24398,61.8026 82.77767,69.6752 12.94977,15.6036 19.74715,15.2478 172.99904,-9.0539 z M 1096.4427,831.34915 c 65.1512,-143.28338 63.2234,-208.98378 -7.3955,-252.04287 -34.0369,-20.75359 -100.55873,-22.39132 -137.3211,-3.38075 -28.51738,14.74691 -50.95322,57.71487 -50.95322,97.58297 0,31.47804 23.808,100.95947 68.93487,201.17999 19.3604,42.99677 35.20075,81.82146 35.20075,86.2771 0,4.45563 4.4566,19.09436 9.9036,32.53049 l 9.9036,24.42932 15.1476,-47.72879 c 8.3312,-26.25085 33.7919,-88.7322 56.5794,-138.84746 z"
+     id="path32"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#aa0000;fill-opacity:1;stroke-width:8.67796612"
+     d="M 994.4412,421.31525 991.89153,358.4 935.48475,354.06102 c -48.90829,-3.76218 -56.75086,-6.74717 -58.99505,-22.45428 -3.75804,-26.30261 14.26853,-36.90089 67.93608,-39.94136 l 47.46575,-2.68911 2.5634,-53.46 c 2.75393,-57.43339 14.48147,-71.43611 45.79407,-54.67813 13.6245,7.2916 16.7273,18.47695 16.7273,60.30055 v 51.34838 l 54.2373,2.58359 c 53.9042,2.56771 54.2372,2.74345 54.2372,28.61748 0,25.87402 -0.333,26.04976 -54.2372,28.61747 l -54.2373,2.58359 v 64.67065 64.67066 h -29.9927 -29.99274 z"
+     id="path34"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/client/public/images/pieces/Ambiguous/bo.svg b/client/public/images/pieces/Ambiguous/bo.svg
new file mode 100644 (file)
index 0000000..a3e425a
--- /dev/null
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   height="100%"
+   width="100%"
+   version="1.1"
+   viewBox="0 0 2048 2048"
+   id="svg18"
+   sodipodi:docname="bo.svg"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14">
+  <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" />
+        <dc:title></dc:title>
+      </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.11523438"
+     inkscape:cx="1041.3559"
+     inkscape:cy="1024"
+     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:#aa0000;fill-opacity:1;stroke-width:8.67796612"
+     d="m 646.21921,1832.2079 c -10.00828,-10.0082 -6.30707,-75.2883 7.31789,-129.0694 27.57329,-108.8385 73.24924,-181.1348 197.493,-312.5933 128.44638,-135.9053 160.6095,-189.813 169.0975,-283.4197 l 4.725,-52.1083 -33.83647,22.2525 c -18.61006,12.2389 -63.1246,34.6632 -98.92121,49.8319 -77.93743,33.0257 -143.03789,73.5851 -195.02734,121.5072 -36.95402,34.0631 -55.25152,59.8891 -117.30029,165.5634 -43.42063,73.9489 -89.96943,87.6211 -142.19631,41.7652 -26.00964,-22.8367 -34.35014,-25.5487 -63.99469,-20.8083 -67.1276,10.7341 -154.55105,-60.6648 -180.25316,-147.2132 -33.0723,-111.3665 -11.69934,-184.2653 99.51191,-339.41421 86.82291,-121.12518 111.75745,-175.12012 121.88812,-263.94475 8.87757,-77.83762 21.35225,-103.80076 88.01133,-183.17507 l 32.96696,-39.25542 -17.81128,-56.20221 C 507.24622,372.33801 498.11422,313.52758 495.19655,259.7764 l -4.88234,-89.94563 20.82256,6.45933 c 69.74805,21.63642 181.04741,92.41254 256.8937,163.36069 l 54.17301,50.67454 20.73439,-46.33555 c 24.62032,-55.01949 87.52909,-128.77622 109.83614,-128.77622 16.95035,0 88.96959,74.96611 108.73049,113.17959 10.4458,20.19979 20.4378,24.51428 78.4435,33.87162 281.7725,45.45478 487.1035,222.21278 620.3091,533.98952 78.1472,182.90861 102.0903,333.07871 109.6803,687.90841 l 5.4296,253.8305 h -611.6812 c -336.42473,0 -614.28467,-2.6034 -617.46659,-5.7853 z M 1762.8767,1692.6373 c 13.654,-206.1902 2.6158,-460.2011 -25.2131,-580.1967 C 1703.1619,963.67214 1649.8798,831.23499 1582.828,727.58348 1506.5698,609.70041 1422.9542,537.98321 1289.9234,476.35885 1224.8518,446.21546 1110.396,410.5622 1102.8677,418.0905 c -1.6178,1.61781 -0.2907,25.49356 2.9486,53.05722 4.6832,39.84656 9.4128,51.03695 23.0817,54.61142 34.386,8.99216 175.7428,81.92122 215.8462,111.35983 97.5639,71.61851 192.5346,263.62226 246.305,497.95903 11.9645,52.1423 15.7265,122.4629 18.9182,353.6271 l 3.984,288.5424 h 71.6612 71.6612 z M 507.37237,1334.9712 c 20.55826,-51.706 15.68732,-78.4017 -14.30534,-78.4017 -16.11508,0 -78.26025,81.3404 -78.26025,102.4331 0,14.353 27.61574,27.8896 52.04043,25.5092 17.46106,-1.7019 25.32851,-11.3195 40.52516,-49.5406 z M 360.47983,1263.078 c 4.69917,-5.9661 10.98909,-21.1073 13.97759,-33.647 2.98851,-12.5399 15.24222,-29.2265 27.23049,-37.0815 37.59148,-24.6308 23.39389,-65.9495 -22.66105,-65.9495 -48.06383,0 -106.80373,90.7585 -85.04876,131.408 9.9471,18.5863 53.30676,22.0223 66.50173,5.27 z m 719.12927,-262.6575 c 49.0435,-49.04358 91.0188,-201.77738 64.301,-233.97025 -12.9227,-15.57092 -57.148,-17.61614 -66.1449,-3.05888 -3.4481,5.57915 -7.1601,30.25614 -8.2488,54.83776 -1.8989,42.86996 -35.3883,126.25508 -55.7649,138.84855 -15.31299,9.46392 -9.6222,37.62295 10.4438,51.67772 25.5672,17.9079 29.8089,17.2699 55.4138,-8.3349 z M 554.32803,802.96295 c 7.59653,-16.67257 14.31795,-19.19914 43.63712,-16.40311 47.48399,4.52833 68.50265,-15.24546 68.50265,-64.44545 0,-29.49959 3.56342,-38.25207 17.35593,-42.62964 21.36617,-6.78136 23.78917,-48.94253 3.76768,-65.5589 -11.14905,-9.25288 -19.32737,-9.24006 -45.55933,0.0712 -94.58155,33.57321 -185.04038,152.37994 -149.04466,195.75213 16.50526,19.88762 50.92201,16.07993 61.34061,-6.78641 z m 220.42209,-272.8114 47.92107,-23.5027 v -42.16684 c 0,-39.72789 -1.12936,-41.81846 -19.52543,-36.1437 -51.63915,15.92948 -119.32203,61.18842 -119.32203,79.78958 0,19.88352 17.17128,45.52635 30.48595,45.52635 6.88566,0 34.08385,-10.57621 60.44044,-23.50269 z"
+     id="path26"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/client/public/images/pieces/Ambiguous/bs.svg b/client/public/images/pieces/Ambiguous/bs.svg
new file mode 100644 (file)
index 0000000..fab7c21
--- /dev/null
@@ -0,0 +1,62 @@
+<?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"
+   viewBox="0 0 2048 2048"
+   version="1.1"
+   id="svg4"
+   sodipodi:docname="bs.svg"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14">
+  <metadata
+     id="metadata10">
+    <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="defs8" />
+  <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="namedview6"
+     showgrid="false"
+     inkscape:zoom="0.11523438"
+     inkscape:cx="1041.3559"
+     inkscape:cy="1024"
+     inkscape:window-x="0"
+     inkscape:window-y="20"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg4" />
+  <path
+     style="color:black;"
+     d="m1024 205h-540q-40 100-40 209 0 185 105 332t270 210q-71 33-115 99t-45 151q0 105 70 182t172 89q-81 61-81 161 0 84 59 144t145 60q84 0 144-60t60-144q0-100-81-161 102-12 172-89t70-182q0-84-45-150t-116-100q165-63 270-210t105-332q0-108-39-209h-540z"
+     fill-rule="nonzero"
+     transform="translate(0,2048) scale(1,-1)"
+     display="block"
+     fill="#000"
+     id="path2" />
+  <path
+     style="fill:#aa0000;fill-opacity:1;stroke-width:8.67796612"
+     d="m 469.31646,1788.1605 c -11.61476,-37.5927 -15.29959,-77.897 -14.88199,-162.7774 0.50066,-101.7611 2.9474,-119.1722 24.97416,-177.716 13.43051,-35.6963 39.62644,-88.9815 58.21317,-118.4115 48.85236,-77.3523 148.25891,-168.3848 222.66932,-203.9117 33.7718,-16.1243 61.62304,-31.3576 61.89166,-33.8519 0.26858,-2.4942 -13.43621,-12.0339 -30.45518,-21.1992 -41.35934,-22.2735 -79.80482,-67.4541 -105.89865,-124.45051 -18.71228,-40.87297 -20.95348,-55.85031 -17.58997,-117.54853 4.37581,-80.2672 16.78508,-109.89694 70.55808,-168.47227 36.96271,-40.26374 107.49168,-79.8968 142.4504,-80.04858 25.73651,-0.11175 24.84417,-4.12898 -9.94513,-44.77247 -70.84573,-82.76729 -61.74879,-196.19826 21.75579,-271.27605 52.32789,-47.04727 106.0704,-61.96735 172.15668,-47.79438 149.9893,32.16696 208.6663,224.02326 101.0632,330.44722 -25.9659,25.68142 -25.5135,26.31205 29.5457,41.18098 116.7417,31.52649 204.1497,164.44684 187.5896,285.2654 -10.5135,76.70514 -69.3478,167.43729 -128.3611,197.95429 -13.4842,6.9729 -24.5166,15.7046 -24.5166,19.4038 0,3.6993 18.5491,15.7065 41.2203,26.6826 150.1855,72.7117 269.4605,218.1014 310.1069,378.003 17.6521,69.4431 16.2055,218.7233 -2.7785,286.7191 l -14.537,52.0678 -539.8969,2.2351 -539.89692,2.2351 z"
+     id="path12"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/client/public/images/pieces/Ambiguous/bt.svg b/client/public/images/pieces/Ambiguous/bt.svg
new file mode 100644 (file)
index 0000000..311d5fd
--- /dev/null
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   height="100%"
+   width="100%"
+   version="1.1"
+   viewBox="0 0 2048 2048"
+   id="svg12"
+   sodipodi:docname="bt.svg"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14">
+  <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" />
+        <dc:title></dc:title>
+      </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="1920"
+     inkscape:window-height="1060"
+     id="namedview14"
+     showgrid="false"
+     inkscape:zoom="0.11523438"
+     inkscape:cx="1041.3559"
+     inkscape:cy="1024"
+     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:#aa0000;fill-opacity:1;stroke-width:8.67796612"
+     d="m 822.67119,1855.297 c -180.52333,-14.9818 -350.15015,-51.8342 -389.59443,-84.6417 l -18.15803,-15.1028 31.01025,-115.8962 31.01024,-115.8963 -13.80948,-81.0148 c -11.60124,-68.0599 -20.88223,-93.2389 -58.03956,-157.4597 l -44.23006,-76.4448 -42.23213,-307.69057 c -43.50945,-316.99676 -43.61493,-321.25423 -7.9568,-321.16288 7.15932,0.0182 28.26779,26.31787 46.90771,58.44338 18.63992,32.12553 79.16874,134.5592 134.50847,227.63039 l 100.61771,169.22038 5.41801,-125.83055 c 2.97989,-69.20678 5.9087,-192.70509 6.50847,-274.44068 L 605.72203,486.4 l 27.66102,-5.5322 c 15.21356,-3.04272 30.25849,-2.55458 33.43318,1.08474 3.17469,3.63932 49.71187,123.76949 103.41596,266.95593 53.7041,143.18645 100.86815,263.77643 104.809,267.97783 3.94087,4.2013 9.93712,-7.514 13.325,-26.03394 3.3879,-18.51999 28.21517,-150.82524 55.17173,-294.01168 l 49.01192,-260.33899 31.15676,-2.63035 c 26.4724,-2.23489 31.8408,0.37454 35.7061,17.35593 2.5022,10.99246 27.0071,141.04392 54.4553,289.00324 27.4483,147.95932 52.5036,272.01819 55.6783,275.68649 3.1748,3.6682 51.8549,-116.41318 108.178,-266.84751 63.0581,-168.42281 106.7926,-273.51695 113.8232,-273.51695 6.2797,0 21.4345,3.80843 33.6774,8.46318 l 22.2598,8.46318 v 269.23174 c 0,148.07745 2.9289,269.13726 6.5085,269.02176 3.5797,-0.1155 67.0373,-102.99897 141.017,-228.6299 127.7343,-216.91613 135.4918,-227.98 154.0339,-219.6852 10.739,4.80408 19.5254,12.9122 19.5254,18.01806 0,5.10585 -18.0755,144.0858 -40.1677,308.84434 l -40.1678,299.561 -43.652,73.7627 c -36.239,61.2361 -46.243,87.763 -58.9084,156.2034 l -15.2562,82.4407 29.6524,109.6894 c 16.3087,60.3293 29.6522,115.8765 29.6522,123.4382 0,29.9564 -117.0414,66.1083 -286.0604,88.3589 -122.6973,16.1525 -397.80461,22.7863 -520.99041,12.563 z M 649.11186,1706.8698 c 195.25251,-35.9892 601.19994,-30.9348 799.35874,9.9526 44.8001,9.244 85.9001,16.8585 91.3333,16.9212 13.3744,0.1545 -12.0864,-104.8009 -28.6791,-118.2217 -6.7055,-5.4236 -55.9845,-17.1364 -109.5091,-26.0286 -139.1908,-23.1239 -606.26613,-23.5441 -750.44941,-0.6751 -53.75822,8.5266 -102.76239,17.4294 -108.89818,19.7839 -9.04089,3.4693 -40.68167,97.7781 -40.68167,121.2561 0,3.3929 12.69153,3.3875 28.20339,-0.01 15.51186,-3.3996 69.20678,-13.7388 119.32203,-22.9762 z m 47.72882,-194.5141 c 197.08117,-29.8042 534.85912,-25.1903 727.23982,9.9336 42.0159,7.671 77.9526,12.3872 79.8594,10.4803 1.9069,-1.9069 6.9393,-25.6087 11.183,-52.6708 l 7.7159,-49.2038 -57.2024,-12.8975 c -122.8995,-27.7101 -215.9846,-35.1662 -439.033,-35.1662 -223.92949,0 -316.05364,7.4341 -440.82011,35.5727 l -58.98959,13.3039 5.48176,40.4309 c 9.50433,70.0991 9.28518,69.8049 45.51823,61.0961 17.74703,-4.2657 71.31817,-13.6613 119.04699,-20.8792 z m 870.30072,-211.6338 28.2052,-51.3053 -76.1004,-17.4843 c -277.0485,-63.6525 -699.23196,-65.8529 -978.79072,-5.1013 -86.4101,18.778 -86.24551,18.5751 -58.35057,71.9386 21.90243,41.8997 25.91682,45.2546 49.85441,41.6645 14.31865,-2.1475 70.94237,-10.7646 125.83051,-19.1491 77.63183,-11.8589 157.61778,-15.3633 360.13557,-15.7787 258.1251,-0.5294 378.3091,7.8883 470.0626,32.9238 23.0656,6.2936 43.9649,11.9276 46.4429,12.52 2.4779,0.5927 17.1977,-22.0104 32.7105,-50.2282 z"
+     id="path20"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#aa0000;fill-opacity:1;stroke-width:8.67796612"
+     d="m 545.17481,456.51841 c -98.2783,-50.63299 -95.72312,-184.28376 4.45029,-232.77688 53.74389,-26.01697 101.1103,-17.62428 144.30314,25.56856 57.31547,57.31547 52.86179,142.17807 -10.10451,192.53604 -43.50368,34.79254 -90.03749,39.71689 -138.64892,14.67228 z"
+     id="path22"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#aa0000;fill-opacity:1;stroke-width:8.67796612"
+     d="m 161.78419,558.79732 c -39.19303,-27.20368 -64.140205,-85.54505 -55.73591,-130.3438 6.65537,-35.47617 39.95853,-78.24942 75.05615,-96.39911 105.38182,-54.49505 226.34374,65.15877 173.59618,171.71891 -25.03664,50.57877 -54.84905,70.06224 -113.05885,73.88795 -40.47781,2.66031 -53.16476,-0.33662 -79.85757,-18.86395 z"
+     id="path24"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#aa0000;fill-opacity:1;stroke-width:8.67796612"
+     d="m 974.10537,411.75119 c -35.5659,-16.127 -71.4059,-60.29067 -78.16468,-96.31807 -7.95608,-42.40956 2.74678,-79.88455 32.48988,-113.76007 51.56311,-58.72714 134.43053,-56.96409 191.46093,4.07344 31.5899,33.8095 37.1663,51.75721 32.6004,104.9247 -6.8165,79.37485 -104.3602,134.64649 -178.38653,101.08 z"
+     id="path26"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#aa0000;fill-opacity:1;stroke-width:8.67796612"
+     d="m 1386.6068,456.02712 c -98.4624,-49.90758 -97.2074,-181.27547 2.2046,-230.76986 51.7422,-25.76096 98.9418,-19.8734 141.7087,17.67638 73.6587,64.67324 55.9853,175.00971 -34.6245,216.16261 -46.123,20.94802 -62.8312,20.47881 -109.2888,-3.06913 z"
+     id="path28"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#aa0000;fill-opacity:1;stroke-width:8.67796612"
+     d="m 1744.6258,562.37908 c -81.8609,-49.9112 -83.457,-160.69556 -3.1874,-221.24303 32.4941,-24.5103 102.7223,-27.05411 137.8545,-4.99337 46.2129,29.01875 64.3204,66.10175 60.5998,124.10457 -3.4319,53.50156 -22.4243,83.05357 -68.9262,107.24846 -33.8091,17.59089 -93.0311,15.19248 -126.3407,-5.11663 z"
+     id="path30"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/client/public/images/pieces/Ambiguous/bu.svg b/client/public/images/pieces/Ambiguous/bu.svg
new file mode 100644 (file)
index 0000000..bce3eed
--- /dev/null
@@ -0,0 +1,94 @@
+<?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="0.92.4 5da689c313, 2019-01-14">
+  <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" />
+        <dc:title></dc:title>
+      </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="1920"
+     inkscape:window-height="1060"
+     id="namedview18"
+     showgrid="false"
+     inkscape:zoom="0.23046875"
+     inkscape:cx="1041.3559"
+     inkscape:cy="1024"
+     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:#aa0000;fill-opacity:1;stroke-width:4.33898306"
+     d="m 341.91186,1721.7085 v -117.1526 h 78.1017 78.10169 v -103.0926 -103.0925 l 84.64611,-84.5626 84.6461,-84.5626 L 666.28678,988.74598 665.1661,748.24639 555.60678,663.86727 446.04746,579.48815 V 393.44577 207.40339 h 134.50847 134.50848 v 67.25424 67.25423 h 86.77966 86.77966 v -67.25423 -67.25424 h 134.50847 134.5085 v 67.25424 67.25423 h 86.7796 86.7797 v -67.25423 -67.25424 h 136.678 136.6779 l -0.1349,185.49152 -0.135,185.49153 -112.6786,86.49485 -112.6786,86.49481 v 238.68741 238.68739 l 86.7797,87.1566 86.7796,87.1566 v 100.7459 100.7459 h 75.9322 75.9322 v 117.1526 117.1525 H 1023.1322 341.91186 Z M 1487.4034,1639.2678 V 1587.2 H 1025.3017 563.2 v 52.0678 52.0678 h 462.1017 462.1017 z m -0.1011,-183.322 -0.1011,-31.4577 -25.5942,-22.7796 -25.5941,-22.7797 H 1023.2109 610.409 l -23.60468,22.3243 -23.60432,22.3243 v 31.913 31.913 h 462.1017 462.1017 z m -112.7125,-141.414 c 0,-2.0081 -12.6915,-15.8382 -28.2034,-30.7335 -27.9077,-26.7984 -28.2033,-27.3286 -28.2033,-50.586 v -23.5038 H 1025.3017 732.42034 v 22.6776 c 0,22.3396 -0.46733,23.1481 -31.34903,54.2373 l -31.34904,31.5597 h 352.43383 c 193.8385,0 352.4337,-1.6431 352.4337,-3.6513 z m -57.3077,-573.88696 1.2687,-28.6569 29.1042,-23.4109 29.1043,-23.41094 -176.8135,-1.13343 c -97.2475,-0.62338 -256.14765,-0.62338 -353.11151,0 l -176.29792,1.13343 30.77174,23.86441 30.77175,23.86441 0.17022,29.31868 0.17026,29.31868 291.79656,-1.11529 291.7967,-1.1153 z m 184.223,-169.16694 33.6271,-26.267 v -25.71732 -25.71731 h -512 -512 v 25.58082 25.58082 l 35.50525,26.48697 35.50526,26.48698 442.86759,-0.0835 442.8677,-0.0835 z"
+     id="path24"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/client/public/images/pieces/Ambiguous/wc.svg b/client/public/images/pieces/Ambiguous/wc.svg
new file mode 100644 (file)
index 0000000..b51dea5
--- /dev/null
@@ -0,0 +1,126 @@
+<?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="wc.svg"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14">
+  <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" />
+        <dc:title></dc:title>
+      </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.16296602"
+     inkscape:cx="1041.3559"
+     inkscape:cy="1024"
+     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:#ffcc00;fill-opacity:1;stroke-width:8.67796612"
+     d="m 800.97627,1159.9976 c -87.05319,-45.5347 -134.28336,-121.7479 -134.4237,-216.91333 -0.0957,-64.874 16.01692,-118.77001 48.07071,-160.79468 11.9796,-15.70607 75.36062,-75.0641 140.8467,-131.90673 65.48609,-56.84264 130.14234,-115.11812 143.68056,-129.50107 l 24.61496,-26.15082 53.5363,53.32604 c 29.4449,29.32932 95.1582,87.77276 146.0294,129.8743 50.8712,42.10154 102.3803,91.48882 114.4646,109.7495 88.4137,133.60205 46.2579,305.60949 -91.1339,371.85219 -34.534,16.6504 -43.4781,17.4252 -102.906,8.9146 -59.5244,-8.5245 -247.60906,-4.9704 -290.71183,5.4933 -9.54576,2.3173 -32.97627,-3.9571 -52.0678,-13.9433 z m 255.69463,-145.8407 c 4.9409,-9.2319 8.9833,-36.3812 8.9833,-60.33163 v -43.54624 l 54.2373,-2.58359 54.2373,-2.58358 V 874.73898 844.3661 l -54.2373,-2.58358 -54.2373,-2.58358 v -45.65611 c 0,-56.70368 -13.6186,-77.51264 -48.1567,-73.58221 -25.2414,2.87247 -25.64251,3.74795 -28.17196,61.49023 l -2.56599,58.57627 h -55.42549 c -47.804,0 -56.18298,2.3866 -60.93406,17.35593 -3.0297,9.54576 -3.0297,25.1661 0,34.71187 4.51121,14.21358 13.13006,17.35593 47.60385,17.35593 65.68527,0 69.54869,3.38582 69.54869,60.95104 0,32.21321 3.91652,51.99651 10.84746,54.79321 24.0776,9.7155 49.7684,4.8489 58.2709,-11.0382 z"
+     id="path26"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:8.67796612"
+     d="M 980.80548,383.94182 C 965.9735,373.5531 961.51864,361.83719 961.51864,333.219 c 0,-45.35868 19.33129,-65.93764 61.93996,-65.93764 40.385,0 58.8912,15.24021 65.1207,53.62822 4.3157,26.59489 1.4726,35.57656 -17.1596,54.20882 -25.6026,25.60251 -61.6477,29.11236 -90.61422,8.82342 z"
+     id="path28"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:6.13624859"
+     d="m 824.27286,1308.2731 22.31222,-58.1295 27.739,-4.767 c 41.69951,-7.1662 295.03742,-5.0229 313.07462,2.6486 11.7646,5.0037 20.0466,19.0271 35.5293,60.1597 11.1038,29.4994 18.9677,54.8562 17.4753,56.3485 -1.4923,1.4923 -18.8612,-0.51 -38.5974,-4.4497 -62.8066,-12.5372 -254.18711,-14.5583 -326.90268,-3.4524 -35.18755,5.3743 -65.99454,9.7714 -68.45997,9.7714 -2.46544,0 5.55788,-26.1583 17.82961,-58.1296 z"
+     id="path30"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:6.13624859"
+     d="m 917.40371,1478.8636 c -8.43734,-1.3511 -44.3344,-8.386 -79.77123,-15.6331 l -64.43062,-13.1767 30.68125,-7.8691 c 92.74715,-23.7878 307.47489,-26.448 416.02979,-5.154 29.695,5.825 53.073,11.5089 51.9509,12.631 -1.1221,1.1221 -36.8103,9.0803 -79.3071,17.6849 -64.1926,12.9976 -92.711,15.5034 -168.5396,14.8092 -50.20003,-0.4597 -98.17605,-1.9411 -106.61339,-3.2922 z"
+     id="path32"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:6.13624859"
+     d="m 1226.5694,1756.5958 c -85.9282,-20.8535 -148.5732,-92.8152 -164.7316,-189.231 -3.5744,-21.3281 -2.7675,-23.0109 11.0339,-23.0109 10.0951,0 20.3623,7.4104 31.8819,23.0109 49.5841,67.1496 92.5625,97.6408 163.0995,115.7115 35.0317,8.9747 42.4333,8.7516 121.0967,-3.6493 46.0814,-7.2646 99.3702,-17.1567 118.4195,-21.9826 63.8895,-16.1854 178.1437,-8.0013 236.3262,16.9284 l 19.3751,8.3017 -22.0782,35.5659 c -18.3708,29.5934 -24.2005,34.8766 -34.7158,31.4615 -6.9506,-2.2574 -32.7732,-7.8997 -57.3835,-12.5385 -41.9984,-7.9162 -52.7373,-7.3136 -174.8831,9.813 -139.1255,19.5074 -197.3666,21.7715 -247.4406,9.6194 z"
+     id="path34"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:6.13624859"
+     d="m 656.61314,1759.3398 c -16.87468,-2.8531 -72.10092,-10.8073 -122.72497,-17.6761 -83.4441,-11.3218 -96.56781,-11.6966 -140.46584,-4.0122 -26.63215,4.6621 -51.21774,11.2721 -54.63464,14.689 -4.19258,4.1926 -11.67949,-2.4079 -23.02639,-20.3001 -34.29128,-54.0718 -34.79139,-50.0288 8.03284,-64.9395 58.74999,-20.4559 158.16962,-23.6557 228.80111,-7.3639 30.21035,6.9682 84.43739,16.9551 120.50454,22.1929 73.86422,10.727 104.55953,7.5072 159.32433,-16.7124 41.13417,-18.1914 68.31378,-41.5723 100.32021,-86.2991 17.92779,-25.0528 28.4976,-34.3355 39.20627,-34.4322 13.99857,-0.1263 14.49707,1.2543 11.02825,30.5429 -5.39032,45.5132 -24.09109,81.9322 -63.03786,122.7638 -46.40503,48.6508 -80.91833,61.9238 -168.216,64.6916 -35.43683,1.1235 -78.23717,-0.2916 -95.11185,-3.1447 z"
+     id="path36"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/client/public/images/pieces/Ambiguous/wg.svg b/client/public/images/pieces/Ambiguous/wg.svg
new file mode 100644 (file)
index 0000000..bcf1629
--- /dev/null
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<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"
+   width="225.85715"
+   height="225.85715"
+   id="svg2"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14"
+   sodipodi:docname="wg.svg">
+  <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="namedview2990"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="1.2685914"
+     inkscape:cx="149.40951"
+     inkscape:cy="79.109664"
+     inkscape:window-x="0"
+     inkscape:window-y="20"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <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>
+  <g
+     id="layer1"
+     transform="matrix(0.85,0,0,0.85,-173.64285,-305.57927)">
+    <path
+       d="m 448.57143,492.36218 a 111.42857,111.42857 0 1 1 -222.85715,0 111.42858,111.42858 0 1 1 222.85715,0 z"
+       id="path2985"
+       style="fill:#999999;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+  </g>
+  <path
+     style="fill:#ffd42a;fill-opacity:1;stroke-width:0.7882759"
+     d="M 96.622502,204.53012 C 67.564648,199.26282 42.624761,180.44711 29.459638,153.85964 22.437471,139.67809 19.495398,125.46102 20.222589,109.22312 20.77764,96.829044 22.227554,89.714148 26.358534,79.113332 31.043685,67.090418 37.122548,57.822271 46.775992,47.983831 60.753949,33.738004 75.249188,25.794002 95.021575,21.543219 c 8.947575,-1.923603 26.891915,-1.898909 36.099935,0.04968 49.11824,10.394322 81.14147,56.240108 73.7121,105.529261 -5.86471,38.90854 -36.85818,70.61346 -75.64015,77.37647 -8.38903,1.46292 -24.58784,1.47858 -32.570958,0.0315 z"
+     id="path3711"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/client/public/images/pieces/Ambiguous/wl.svg b/client/public/images/pieces/Ambiguous/wl.svg
new file mode 100644 (file)
index 0000000..322c54c
--- /dev/null
@@ -0,0 +1,124 @@
+<?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="wl.svg"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14">
+  <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" />
+        <dc:title></dc:title>
+      </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.11523438"
+     inkscape:cx="1041.3559"
+     inkscape:cy="1024"
+     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:#ffcc00;fill-opacity:1;stroke-width:8.67796612"
+     d="m 383.03567,1205.1689 c -105.99809,-88.475 -133.59261,-139.9162 -132.45004,-246.9108 0.7615,-71.31086 10.26284,-101.85753 48.49408,-155.90774 90.63834,-128.14186 326.68084,-133.11317 511.16521,-10.7657 87.7216,58.17575 161.45674,201.26075 173.65637,336.98484 l 6.04518,67.2542 h -77.79149 c -137.59645,0 -267.76383,16.5969 -449.61939,57.3285 -11.93079,2.6722 -36.78099,-12.3265 -79.49992,-47.9833 z"
+     id="path26"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:8.67796612"
+     d="M 1017.5383,974.53559 C 1010.378,954.66005 981.33843,884.06646 939.00306,783.62034 890.14568,667.6999 904.42735,591.05673 978.60737,571.08212 c 70.74513,-19.04968 138.40633,14.31467 157.36683,77.59893 11.1621,37.25596 0.097,80.3255 -46.9281,182.6681 -14.2552,31.02373 -34.7692,79.83729 -45.5868,108.47458 -15.8795,42.03783 -20.8727,48.72447 -25.921,34.71186 z"
+     id="path30"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:8.67796612"
+     d="m 1538.6034,1242.9695 c -76.6525,-21.2841 -213.4658,-38.7073 -347.7261,-44.2829 l -130.777,-5.431 3.2917,-48.6142 c 10.7318,-158.49703 89.9776,-307.13586 197.2702,-370.01347 79.5751,-46.63413 158.2416,-67.63186 256.2463,-68.39747 77.611,-0.6063 97.689,2.26217 135.4404,19.34988 118.4057,53.59482 173.8493,188.22493 134.2228,325.92466 -13.6125,47.3028 -77.8269,123.0538 -147.9466,174.5264 -46.6117,34.2161 -41.1362,33.2888 -100.0217,16.9381 z"
+     id="path32"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:8.67796612"
+     d="m 524.39888,1448.9453 c -2.16755,-7.9626 -6.36809,-30.0978 -9.33452,-49.1894 -2.96643,-19.0915 -7.41004,-44.9375 -9.87468,-57.4355 -4.12206,-20.9027 -1.25316,-23.5365 35.80059,-32.8667 199.30282,-50.1851 651.82343,-57.0832 898.58693,-13.6979 117.1382,20.5949 109.9898,12.4696 93.6286,106.4224 l -9.7367,55.9118 -31.4837,-5.4653 c -171.5669,-29.7826 -224.2581,-33.7233 -456.704,-34.1566 -236.2115,-0.4403 -391.69667,11.5282 -479.0979,36.8787 -22.982,6.6659 -28.53173,5.5481 -31.78462,-6.4015 z"
+     id="path34"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:8.67796612"
+     d="m 510.26441,1633.0456 c 0,-3.5881 6.259,-28.8309 13.9089,-56.0949 l 13.9089,-49.5709 96.73516,-16.0831 c 141.35286,-23.5012 662.33203,-21.9898 790.25223,2.2925 l 86.0594,16.3362 15.4783,55.1374 15.4782,55.1374 -19.097,-5.1829 c -237.4101,-64.4318 -778.14573,-64.3834 -997.53765,0.089 -8.35254,2.4546 -15.18644,1.5271 -15.18644,-2.0611 z"
+     id="path36"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:8.67796612"
+     d="M 748.90847,1793.7305 C 663.75136,1784.847 551.37641,1762.6453 515.36585,1747.59 l -26.79636,-11.2031 60.74576,-18.2931 c 138.43078,-41.6872 210.32612,-49.0743 477.28815,-49.0405 207.317,0.026 266.9521,2.8519 338.4407,16.0356 89.5021,16.5058 199.7674,47.1482 193.2202,53.6954 -10.7394,10.7394 -154.7451,40.5988 -249.5738,51.7488 -117.677,13.8365 -440.13961,15.6784 -559.78203,3.1974 z"
+     id="path38"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/client/public/images/pieces/Ambiguous/wo.svg b/client/public/images/pieces/Ambiguous/wo.svg
new file mode 100644 (file)
index 0000000..0e3bd47
--- /dev/null
@@ -0,0 +1,71 @@
+<?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="wo.svg"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14">
+  <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="1920"
+     inkscape:window-height="1060"
+     id="namedview8"
+     showgrid="false"
+     inkscape:zoom="0.11523438"
+     inkscape:cx="1041.3559"
+     inkscape:cy="1024"
+     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:#ffcc00;fill-opacity:1;stroke-width:8.67796612"
+     d="m 722.74458,1727.3607 c 16.40726,-109.4115 63.67577,-182.6701 199.96743,-309.9175 83.23649,-77.713 104.10369,-102.5993 129.91119,-154.9325 38.7086,-78.4943 53.3173,-152.8139 42.3597,-215.499 -7.3451,-42.0189 -5.7974,-51.49462 16.2498,-99.49011 29.0323,-63.20179 43.8935,-142.67319 32.3551,-173.02155 -6.0672,-15.95776 -14.4923,-21.25258 -33.8168,-21.25258 -32.2052,0 -37.9061,9.2458 -39.6909,64.37136 -0.7855,24.25677 -9.4727,62.15409 -19.3051,84.21629 -32.5474,73.0306 -72.41612,106.88849 -197.95463,168.10979 -150.88953,73.5842 -228.01818,143.0876 -298.61096,269.089 -47.61765,84.9931 -63.27682,101.2682 -80.68573,83.8592 -6.93497,-6.9349 -1.83237,-24.7258 18.68537,-65.149 31.8715,-62.792 32.79204,-95.3592 2.8157,-99.6156 -14.60744,-2.0742 -23.42111,4.3334 -34.71186,25.2359 -8.32328,15.4087 -25.37742,39.895 -37.8981,54.4138 -56.20367,65.1735 -161.78391,2.1435 -176.57684,-105.4139 -8.3618,-60.7976 10.55309,-105.8294 105.67285,-251.58186 102.82608,-157.56091 123.8202,-201.21193 124.04174,-257.90786 0.18267,-46.74605 30.82423,-124.20952 62.51052,-158.02983 l 17.97199,-19.18236 16.79537,21.35185 c 18.20256,23.14081 40.68698,27.44124 57.18992,10.9383 15.47223,-15.47223 13.27433,-27.96929 -19.34645,-110.00203 -27.52833,-69.22653 -54.37982,-180.16774 -45.706,-188.84156 5.77615,-5.77615 128.94222,79.11386 155.9892,107.51277 l 24.11642,25.32186 -35.49115,16.00428 c -44.41077,20.02646 -55.43387,38.54413 -37.87079,63.61895 16.49659,23.55217 27.89964,23.4312 78.03159,-0.82779 l 40.34981,-19.52543 13.0086,19.52543 c 8.43604,12.66218 21.72941,19.52542 37.81868,19.52542 20.06687,0 25.767,-4.56242 29.81528,-23.86441 17.49782,-83.42855 25.29925,-106.27688 48.89022,-143.18644 14.49044,-22.67122 29.64551,-41.22037 33.67793,-41.22037 13.11696,0 52.47762,58.6544 69.59962,103.71595 9.1944,24.19761 16.717,62.69816 16.717,85.5568 0,47.54783 10.6948,62.38827 44.9601,62.38827 29.3042,0 37.8281,-24.23251 30.4467,-86.5564 -5.6719,-47.89102 -10.5631,-47.04037 89.4746,-15.56102 145.9368,45.92263 280.8633,145.66447 363.2466,268.52305 69.6749,103.90646 133.4153,263.42643 166.6274,417.01043 20.2898,93.8263 32.0005,386.0828 21.5662,538.2111 l -6.3985,93.2881 H 1233.0542 716.56493 Z m -364.96444,-484.428 c 7.50025,-7.5002 13.63681,-20.4873 13.63681,-28.8602 0,-8.3729 9.94031,-24.5618 22.08958,-35.9755 24.88653,-23.3797 25.9875,-57.3133 2.33977,-72.1159 -31.07515,-19.4519 -86.83428,35.2232 -99.25463,97.3249 -9.16803,45.8402 29.76275,71.0525 61.18847,39.6267 z M 594.24473,803.14576 c 12.64983,-15.61639 23.03712,-18.99915 51.88393,-16.89673 29.40919,2.14342 38.62092,-1.01662 49.8983,-17.11734 7.60686,-10.86031 13.83067,-32.89524 13.83067,-48.9665 0,-19.4332 6.25147,-34.28259 18.66417,-44.33377 22.50576,-18.22407 16.93304,-57.22656 -9.36938,-65.57463 -55.67266,-17.66981 -191.53208,102.04858 -191.53208,168.77677 0,44.25275 38.9045,58.33278 66.62439,24.1122 z"
+     id="path14"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/client/public/images/pieces/Ambiguous/ws.svg b/client/public/images/pieces/Ambiguous/ws.svg
new file mode 100644 (file)
index 0000000..dfcd791
--- /dev/null
@@ -0,0 +1,71 @@
+<?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="ws.svg"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14">
+  <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="1920"
+     inkscape:window-height="1060"
+     id="namedview8"
+     showgrid="false"
+     inkscape:zoom="0.11523438"
+     inkscape:cx="1041.3559"
+     inkscape:cy="1024"
+     inkscape:window-x="0"
+     inkscape:window-y="20"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg6" />
+  <path
+     style="color:black;"
+     d="m1024 273h491q21 72 21 141 0 156-86 283t-223 187q-66 5-66 72 0 53 67 78 93 65 93 172 0 77-52 135t-126 67q-60 5-60 68 0 28 22 52 54 42 54 110 0 56-40 96t-95 40q-57 0-96-40t-40-96q0-67 54-110 22-22 22-52 0-63-59-68-75-9-126-67t-52-135q0-107 93-172 67-26 67-78 0-67-67-72-136-60-222-187t-86-283q0-74 21-141h491zm0-68h-540q-40 100-40 209 0 185 105 332t270 210q-71 33-115 99t-45 151q0 105 70 182t172 89q-81 61-81 161 0 84 59 144t145 60q84 0 144-60t60-144q0-100-81-161 102-12 172-89t70-182q0-84-45-150t-116-100q165-63 270-210t105-332q0-108-39-209h-540z"
+     fill-rule="nonzero"
+     transform="translate(0,2048) scale(1,-1)"
+     display="block"
+     fill="#000"
+     id="path2" />
+  <path
+     style="color:black;"
+     d="m1024 1775h491q21-72 21-141 0-156-86-283t-223-187q-66-5-66-72 0-53 67-78 93-65 93-172 0-77-52-135t-126-67q-60-5-60-68 0-28 22-52 54-42 54-110 0-56-40-96t-95-40q-57 0-96 40t-40 96q0 67 54 110 22 22 22 52 0 63-59 68-75 9-126 67t-52 135q0 107 93 172 67 26 67 78 0 67-67 72-136 60-222 187t-86 283q0 74 21 141h491z"
+     fill-rule="nonzero"
+     display="block"
+     fill="#fff"
+     id="path4" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:8.67796612"
+     d="m 530.51551,1757.722 c -11.56221,-18.4249 -13.98618,-183.0494 -3.44305,-233.8354 30.86336,-148.6681 167.86144,-314.2043 293.39179,-354.5085 42.10797,-13.5197 60.67979,-30.2303 67.35021,-60.6005 6.64553,-30.2569 -14.5735,-74.3868 -39.58439,-82.325 -50.41474,-16.001 -106.70711,-91.74529 -117.26813,-157.79033 -15.6993,-98.17803 66.46814,-209.49645 165.60947,-224.36361 72.1681,-10.82228 90.96067,-71.74246 40.02622,-129.75359 -50.0224,-56.97236 -58.11106,-112.21326 -25.04542,-171.04563 65.44593,-116.44533 240.88169,-69.48178 240.88169,64.4832 0,47.27635 -8.0535,66.94767 -44.6625,109.0922 -46.9025,53.99453 -27.483,114.40491 40.9006,127.23374 103.2185,19.36391 168.9829,99.55401 168.4527,205.40332 -0.349,69.65536 -29.6897,112.33403 -129.5206,188.399 -20.2268,15.4115 -26.4922,27.0447 -26.4922,49.1885 0,47.2555 7.0561,54.8616 84.6094,91.2043 181.5573,85.0807 300.613,287.9589 285.1599,485.9302 -2.7942,35.7966 -7.5365,73.8712 -10.5387,84.6102 l -5.4582,19.5254 h -488.7809 c -381.60888,0 -490.27335,-2.3785 -495.58789,-10.8475 z"
+     id="path14"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/client/public/images/pieces/Ambiguous/wt.svg b/client/public/images/pieces/Ambiguous/wt.svg
new file mode 100644 (file)
index 0000000..e2a5a23
--- /dev/null
@@ -0,0 +1,204 @@
+<?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="wt.svg"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14">
+  <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" />
+        <dc:title></dc:title>
+      </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.23046875"
+     inkscape:cx="1041.3559"
+     inkscape:cy="1024"
+     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:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="m 209.08584,512.48735 c -5.04076,-0.99113 -14.80347,-7.68734 -21.69492,-14.88046 -11.68421,-12.19569 -12.5299,-15.42603 -12.5299,-47.86128 0,-33.66656 0.44642,-35.18176 13.90981,-47.2113 23.94702,-21.39666 71.99101,-22.58681 93.85391,-2.32496 30.04512,27.84488 22.43336,94.51793 -12.45492,109.09518 -13.91991,5.81611 -40.61671,7.20716 -61.08398,3.18282 z"
+     id="path42"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="m 577.66146,402.44442 c -30.71593,-9.35977 -47.42412,-50.30499 -35.53808,-87.08986 7.98586,-24.71461 23.57903,-35.35751 55.14881,-37.64106 47.45137,-3.43232 70.08026,17.51893 70.04718,64.85411 -0.0174,24.77895 -10.22666,47.29994 -25.03497,55.22511 -12.49714,6.68826 -49.25621,9.33426 -64.62294,4.6517 z"
+     id="path44"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="m 992.84854,350.31749 c -18.28856,-7.68984 -25.52854,-17.20772 -30.7136,-40.37698 -6.19241,-27.6706 0.14512,-55.44183 16.00671,-70.14186 21.66878,-20.08194 70.46615,-18.83064 94.24605,2.41674 13.1817,11.77786 13.6598,13.42923 13.6598,47.18931 0,33.61718 -0.546,35.53034 -13.9712,48.95554 -12.3469,12.34689 -17.1392,14.11707 -41.2204,15.22599 -14.987,0.69014 -32.09033,-0.78079 -38.00736,-3.26874 z"
+     id="path46"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="m 1415.9763,400.72211 c -21.3755,-7.89802 -31.5611,-20.86452 -35.2317,-44.85059 -7.5667,-49.44536 16.4897,-79.05498 64.2143,-79.03766 38.8651,0.0141 64.1186,25.26754 64.1327,64.13262 0.01,25.73118 -9.8041,46.79338 -25.6106,54.96725 -19.5773,10.12381 -47.6713,12.11663 -67.5047,4.78838 z"
+     id="path48"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="m 1779.5275,509.14004 c -18.0881,-7.86794 -27.1831,-22.49559 -30.1198,-48.44208 -2.9839,-26.36363 5.3492,-52.19862 20.45,-63.40086 16.5539,-12.28014 58.1601,-14.7834 77.6813,-4.67374 41.8722,21.68487 40.4667,98.80445 -2.1252,116.60045 -18.6839,7.80664 -47.8317,7.76958 -65.8863,-0.0838 z"
+     id="path50"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="m 1098.4594,1054.3539 c -2.5809,-1.6601 -7.9887,-9.4504 -12.0172,-17.3119 -13.8954,-27.1165 -51.5691,-40.77071 -84.9209,-30.7783 -12.608,3.7775 -23.9727,12.0888 -37.18963,27.1977 -10.46831,11.9668 -19.7286,20.8841 -20.57845,19.8161 -1.14345,-1.4371 69.77088,-410.58807 79.99878,-461.56477 0.8523,-4.24823 19.8557,97.99754 42.2298,227.21282 22.374,129.21529 39.8904,235.72655 38.9252,236.69175 -0.9652,0.9652 -3.8666,0.3966 -6.4476,-1.2634 z"
+     id="path52"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="m 663.40964,853.91186 c 0.0963,-153.9586 1.45991,-215.8929 4.58555,-208.27118 19.61035,47.81868 153.68522,420.88132 151.26041,420.88132 -1.71119,0 -9.74577,-4.8499 -17.85462,-10.7776 -42.61589,-31.1529 -57.4587,-36.0492 -85.9908,-28.3663 -15.8716,4.2738 -29.67944,15.4489 -45.68498,36.9744 -5.73959,7.7191 -6.43746,-15.5345 -6.31556,-210.44064 z"
+     id="path54"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="m 483.43968,1127.0563 c -19.84874,-4.9847 -67.92911,-29.8593 -70.42812,-36.4363 -2.58632,-6.8069 -53.49038,-320.84852 -52.21425,-322.12466 0.60259,-0.60259 47.54132,79.04851 104.3083,177.00244 56.76697,97.95392 102.25022,179.06052 101.07389,180.23682 -4.39952,4.3995 -66.53206,5.3921 -82.73982,1.3217 z"
+     id="path56"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="m 1371.9082,1064.0668 c -24.7771,-32.4844 -72.951,-42.6391 -101.897,-21.479 -26.6104,19.4526 -40.347,27.9803 -42.1566,26.1708 -1.8138,-1.8138 149.0322,-419.91061 155.7885,-431.79589 2.0778,-3.65522 3.7576,91.92866 3.8317,218.0339 0.073,123.49831 -0.7449,224.54239 -1.8167,224.54239 -1.0718,0 -7.2592,-6.9625 -13.7499,-15.4722 z"
+     id="path58"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="m 1485.0589,1132.259 c -8.0184,-2.5557 1.3301,-20.207 99.1598,-187.22849 59.407,-101.42373 107.0002,-179.52543 105.7626,-173.55932 -1.2375,5.9661 -13.5287,82.49682 -27.3137,170.06826 l -25.0636,159.22075 -21.2977,11.5917 c -11.7138,6.3755 -31.353,14.269 -43.6427,17.5413 -22.8848,6.0933 -71.7681,7.4134 -87.6047,2.3658 z"
+     id="path60"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="m 459.45728,1246.3799 c -17.48574,-29.9459 -30.98236,-55.2571 -29.99249,-56.247 0.98988,-0.9898 12.44796,1.0892 25.46241,4.6201 13.30228,3.609 42.66025,6.4671 67.05246,6.5279 80.7446,0.2009 140.14372,-24.3503 195.6475,-80.8665 l 22.08817,-22.491 23.47115,14.818 c 49.7452,31.4055 111.25515,40.0009 165.76636,23.1641 27.72237,-8.5625 71.95266,-34.659 87.08746,-51.3829 7.549,-8.3415 7.9881,-8.1565 25.3566,10.6862 10.5738,11.4712 30.4518,25.4895 49.4783,34.8929 27.9062,13.792 36.8124,15.9802 72.6754,17.8561 48.8255,2.5538 88.418,-7.4178 123.6857,-31.1513 l 22.0339,-14.8277 31.5751,31.4652 c 36.9581,36.8295 78.8482,59.6044 129.2022,70.245 37.2549,7.8726 89.1743,5.9961 123.4585,-4.4621 11.8208,-3.6059 22.2148,-5.8338 23.0976,-4.9509 1.216,1.2159 -51.6055,97.4908 -58.1616,106.0081 -0.6886,0.8946 -22.3235,-3.4756 -48.0775,-9.7115 -250.2901,-60.6036 -741.3591,-59.833 -981.73581,1.5407 -18.77083,4.7926 -34.86012,8.7138 -35.75397,8.7138 -0.89386,0 -15.9317,-24.5012 -33.41744,-54.4472 z"
+     id="path62"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="m 531.08587,1445.0983 c -3.57034,-17.5263 -11.20493,-67.5018 -11.24292,-73.5955 -0.0811,-13.0011 135.92246,-35.992 277.66213,-46.9377 93.79147,-7.243 340.07572,-8.3141 436.06782,-1.8965 122.8302,8.2118 291.281,33.8087 295.3839,44.885 0.9916,2.6767 -1.6922,23.4159 -5.9639,46.0871 -6.7322,35.7296 -8.8974,41.1584 -16.2544,40.7552 -4.6682,-0.2558 -38.7521,-5.6218 -75.7419,-11.9244 -231.8009,-39.4958 -605.74635,-37.7049 -831.86715,3.984 -31.54727,5.8163 -59.21586,10.575 -61.48575,10.575 -2.26989,0 -5.22091,-5.3695 -6.55783,-11.9322 z"
+     id="path64"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="m 529.3171,1586.1153 c 7.21792,-26.8475 14.77604,-51.935 16.79583,-55.7499 6.53363,-12.3408 153.59869,-33.5508 296.87743,-42.8163 88.54143,-5.7258 274.30484,-5.7328 366.71814,-0.014 80.3066,4.9697 195.0415,18.2706 253.7061,29.4114 l 38.9265,7.3924 11.9297,43.27 c 18.7141,67.8774 18.9017,69.1805 9.417,65.4108 -16.0543,-6.381 -130.7321,-28.2661 -181.6403,-34.6643 -93.1187,-11.7031 -175.3734,-15.8084 -316.7458,-15.8084 -208.74325,0 -354.80697,13.4881 -472.76608,43.6569 -18.76248,4.7987 -34.61499,8.7248 -35.2278,8.7248 -0.61281,0 4.79136,-21.9661 12.00928,-48.8135 z"
+     id="path66"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="m 878.273,1795.4808 c -105.9941,-5.2713 -206.41387,-17.2105 -276.02215,-32.817 -46.31474,-10.384 -104.01105,-28.9686 -101.67388,-32.7502 3.58805,-5.8056 91.9873,-32.7754 138.55523,-42.2719 112.15777,-22.8722 214.58287,-31.1389 385.7297,-31.1321 174.6265,0.01 277.2556,8.1383 388.4645,30.7783 55.6286,11.3249 141.2747,38.3953 136.4713,43.1348 -11.3722,11.2207 -132.7348,39.035 -216.4282,49.6017 -124.5297,15.7224 -317.7774,22.2857 -455.0965,15.4564 z"
+     id="path68"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/client/public/images/pieces/Ambiguous/wu.svg b/client/public/images/pieces/Ambiguous/wu.svg
new file mode 100644 (file)
index 0000000..b2bfd22
--- /dev/null
@@ -0,0 +1,128 @@
+<?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="0.92.4 5da689c313, 2019-01-14">
+  <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" />
+        <dc:title></dc:title>
+      </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.23046875"
+     inkscape:cx="1041.3559"
+     inkscape:cy="1024"
+     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:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="M 515.47119,391.81017 V 272.48814 h 64.97456 64.97457 l 1.19492,68.33898 1.19493,68.33898 155.11864,1.13955 155.11865,1.13956 v -69.47854 -69.47853 h 65.08474 65.0847 v 69.42372 69.42373 h 156.2034 156.2034 v -69.42373 -69.42372 h 67.2543 67.2542 V 391.81017 511.1322 H 1025.3017 515.47119 Z"
+     id="path26"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="m 637.90297,631.53898 -60.68466,-48.81356 222.95695,-1.12379 c 122.62632,-0.61809 323.83034,-0.61809 447.12004,0 l 224.1632,1.12379 -60.3665,48.74728 -60.3666,48.74727 -326.0689,0.0663 -326.06887,0.0663 z"
+     id="path28"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="M 736.75932,990.58983 V 754.11525 h 288.54238 288.5424 V 990.58983 1227.0644 H 1025.3017 736.75932 Z"
+     id="path30"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="m 643.47119,1346.6036 52.06779,-49.6746 329.83352,-0.2205 329.8334,-0.2204 49.7568,49.8983 49.7568,49.8983 H 1023.0614 591.40339 Z"
+     id="path32"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="M 566.09266,1601.6633 C 564.50169,1600.0723 563.2,1569.8079 563.2,1534.409 v -64.3615 h 459.9322 459.9322 v 67.2542 67.2542 h -457.0395 c -251.37179,0 -458.34128,-1.3017 -459.93224,-2.8926 z"
+     id="path34"
+     inkscape:connector-curvature="0" />
+  <path
+     style="fill:#ffcc00;fill-opacity:1;stroke-width:4.33898306"
+     d="m 411.33559,1723.878 v -49.8983 h 613.96611 613.9661 v 49.8983 49.8983 H 1025.3017 411.33559 Z"
+     id="path36"
+     inkscape:connector-curvature="0" />
+</svg>
index fdbd2c3..8cb1f68 100644 (file)
@@ -94,7 +94,6 @@ export default {
       incheck: [], //for Board
       inMultimove: false,
       autoplay: false,
-      autoplayLoop: null,
       inPlay: false,
       stackToPlay: []
     };
@@ -164,7 +163,8 @@ export default {
       .addEventListener("click", processModalClick);
   },
   beforeDestroy: function() {
-    if (!!this.autoplayLoop) clearInterval(this.autoplayLoop);
+    // TODO: probably not required
+    this.autoplay = false;
   },
   methods: {
     focusBg: function() {
@@ -216,6 +216,10 @@ export default {
       const firstMoveColor = parsedFen.turn;
       this.firstMoveNumber = Math.floor(parsedFen.movesCount / 2) + 1;
       let L = this.moves.length;
+      if (L == 0) {
+        this.incheck = [];
+        this.score = "*";
+      }
       this.moves.forEach((move,idx) => {
         // Strategy working also for multi-moves:
         if (!Array.isArray(move)) move = [move];
@@ -229,8 +233,8 @@ export default {
           if (idxM == Lm - 1) m.fen = this.vr.getFen();
           if (idx == L - 1 && idxM == Lm - 1) {
             this.incheck = checkSquares;
-            const score = this.vr.getCurrentScore();
-            if (["1-0", "0-1"].includes(score)) m.notation += "#";
+            this.score = this.vr.getCurrentScore();
+            if (["1-0", "0-1"].includes(this.score)) m.notation += "#";
           }
         });
       });
@@ -333,32 +337,15 @@ export default {
       document.getElementById("modalEog").checked = true;
     },
     runAutoplay: function() {
-      const infinitePlay = () => {
-        if (this.cursor == this.moves.length - 1) {
-          clearInterval(this.autoplayLoop);
-          this.autoplayLoop = null;
-          this.autoplay = false;
-          return;
-        }
-        if (this.inPlay || this.inMultimove)
-          // Wait next tick
-          return;
-        this.play();
-      };
       if (this.autoplay) {
         this.autoplay = false;
-        clearInterval(this.autoplayLoop);
-        this.autoplayLoop = null;
-      } else {
+        if (this.stackToPlay.length > 0)
+          // Move(s) arrived in-between
+          this.play(this.stackToPlay.pop(), "received");
+      }
+      else if (this.cursor < this.moves.length - 1) {
         this.autoplay = true;
-        setTimeout(
-          () => {
-            infinitePlay();
-            this.autoplayLoop = setInterval(infinitePlay, 1500);
-          },
-          // Small delay otherwise the first move is played too fast
-          500
-        );
+        this.play();
       }
     },
     // Animate an elementary move
@@ -417,7 +404,7 @@ export default {
       if (!!move) this.play(move);
     },
     // "light": if gotoMove() or gotoEnd()
-    play: function(move, received, light, noemit) {
+    play: function(move, received, light) {
       // Freeze while choices are shown:
       if (this.$refs["board"].choices.length > 0) return;
       const navigate = !move;
@@ -432,18 +419,17 @@ export default {
         return;
       }
       if (!!received) {
-        if (this.mode == "analyze") this.toggleAnalyze();
-        if (this.cursor < this.moves.length - 1)
-          // To play a received move, cursor must be at the end of the game:
-          this.gotoEnd();
-      }
-      if (!!noemit) {
-        if (this.inPlay) {
-          // Received moves in observed games can arrive too fast:
+        if (this.autoplay || this.inPlay) {
+          // Received moves while autoplaying are stacked,
+          // and in observed games they could arrive too fast:
           this.stackToPlay.unshift(move);
           return;
         }
         this.inPlay = true;
+        if (this.mode == "analyze") this.toggleAnalyze();
+        if (this.cursor < this.moves.length - 1)
+          // To play a received move, cursor must be at the end of the game:
+          this.gotoEnd();
       }
       // The board may show some the possible moves: (TODO: bad solution)
       this.$refs["board"].resetCurrentAttempt();
@@ -494,8 +480,7 @@ export default {
           if (animate && smove.start.x >= 0) {
             self.animateMove(smove, () => {
               playSubmove(smove);
-              if (moveIdx < move.length)
-                setTimeout(executeMove, 500);
+              if (moveIdx < move.length) setTimeout(executeMove, 500);
               else afterMove(smove, initurn);
             });
           } else {
@@ -508,7 +493,7 @@ export default {
       const computeScore = () => {
         const score = this.vr.getCurrentScore();
         if (!navigate) {
-          if (["1-0","0-1"].includes(score)) {
+          if (["1-0", "0-1"].includes(score)) {
             if (Array.isArray(this.lastMove)) {
               const L = this.lastMove.length;
               this.lastMove[L - 1].notation += "#";
@@ -532,18 +517,27 @@ export default {
           this.emitFenIfAnalyze();
           this.inMultimove = false;
           this.score = computeScore();
+          if (this.autoplay) {
+            if (this.cursor < this.moves.length - 1)
+              setTimeout(this.play, 1000);
+            else {
+              this.autoplay = false;
+              if (this.stackToPlay.length > 0)
+                // Move(s) arrived in-between
+                this.play(this.stackToPlay.pop(), "received");
+            }
+          }
           if (this.mode != "analyze" && !navigate) {
-            if (!noemit && this.mode != "analyze") {
+            if (!received) {
               // Post-processing (e.g. computer play).
               const L = this.moves.length;
-              // NOTE: always emit the score, even in unfinished,
-              // to tell Game::processMove() that it's not a received move.
+              // NOTE: always emit the score, even in unfinished
               this.$emit("newmove", this.moves[L-1], { score: this.score });
             } else {
               this.inPlay = false;
               if (this.stackToPlay.length > 0)
                 // Move(s) arrived in-between
-                this.play(this.stackToPlay.pop(), received, light, noemit);
+                this.play(this.stackToPlay.pop(), "received");
             }
           }
         }
index 44bfb6a..ad56543 100644 (file)
@@ -43,8 +43,8 @@ export default {
       let self = this;
       setTimeout(() => {
         if (this.currentUrl != document.location.href) return; //page change
-        // NOTE: BaseGame::play() will trigger processMove() here
         self.$refs["basegame"].play(compMove, "received");
+        self.processMove(compMove);
         self.compThink = false;
         if (self.game.score != "*")
           // User action
@@ -89,6 +89,7 @@ export default {
     processMove: function(move, scoreObj) {
       playMove(move, this.vr);
       // This move could have ended the game:
+      if (!scoreObj) scoreObj = { score: this.vr.getCurrentScore() };
       if (scoreObj.score != "*") {
         this.gameOver(scoreObj.score);
         return;
index 5596e44..d81a1de 100644 (file)
@@ -64,8 +64,9 @@ export default {
       if (
         this.st.user.sid == g.players[0].sid ||
         this.st.user.id == g.players[0].id
-      )
+      ) {
         return g.players[1].name || "@nonymous";
+      }
       return g.players[0].name || "@nonymous";
     },
     sortedGames: function() {
index 4f08d9a..7023912 100644 (file)
@@ -55,3 +55,4 @@ h3 Related links
   a(href="https://www.facebook.com/groups/592562551198628") A Facebook group
   a(href="http://www.zillions-of-games.com/") zillions-of-games.com
   a(href="https://en.wikipedia.org/wiki/Fairy_chess_piece") Fairy chess pieces
+  a(href="http://abrobecker.free.fr/chess/fairyblitz.htm") fairyblitz.htm
index 1dc2b9b..2c5860f 100644 (file)
@@ -53,3 +53,4 @@ 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://abrobecker.free.fr/chess/fairyblitz.htm") fairyblitz.htm
index be36f3e..32da0e0 100644 (file)
@@ -52,3 +52,4 @@ 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://abrobecker.free.fr/chess/fairyblitz.htm") fairyblitz.htm
diff --git a/client/src/translations/rules/Ambiguous/en.pug b/client/src/translations/rules/Ambiguous/en.pug
new file mode 100644 (file)
index 0000000..1db9367
--- /dev/null
@@ -0,0 +1,37 @@
+p.boxed
+  | Your moves are decided by the opponent, to a square that you choose.
+
+p.
+  At each turn you must first play a move with opponent's pieces to the
+  marked square, and then play a move freely with your pieces.
+  The target in the first part of the move is indicated either by a colored
+  discus for an empty square, or by a colored piece for a capture.
+
+p.
+  Exceptions: the first move of the game (which just mark a square), and a
+  move which captures a king don't have a second part.
+
+p.
+  No check or checkmate, one wins by capturing the opponent's king.
+  There is no castling.
+
+figure.diagram-container
+  .diagram.diag12
+    | fen:rnbqkbnr/pppppppp/8/8/8/5g2/PPPPPPPP/RNBQKBNR:
+  .diagram.diag12
+    | fen:rnbqkbnr/pppppppp/8/3G4/8/5P2/PPPPP1PP/RNBQKBNR:
+  figcaption.
+    Left: White plays 1.Nf3.
+    Right: Black executes 1.f3 instead, then plays 1...d5.
+
+h3 Source
+
+p
+  | The 
+  a(href="http://www.pion.ch/echecs/variante.php?jeu=ambigus")
+    | rules description
+  | &nbsp;by the author of this variant, which is also playable 
+  a(href="https://brainking.com/en/GameRules?tp=85") on brainking.com
+  | .
+
+p Inventor: Fabrice Liardet (2005)
diff --git a/client/src/translations/rules/Ambiguous/es.pug b/client/src/translations/rules/Ambiguous/es.pug
new file mode 100644 (file)
index 0000000..af1f07d
--- /dev/null
@@ -0,0 +1,38 @@
+p.boxed
+  | Tus jugadas son decididos por el oponente, hacia una casilla que tendrás
+  | elegido.
+
+p.
+  En cada turno, primero debes hacer un movimiento con las piezas opuestas
+  hacia el espacio designado, luego juega libremente con tus piezas.
+  El objetivo en la primera parte del movimiento se indica mediante un disco
+  coloreado para una casilla vacía, o por una pieza coloreada para una captura.
+
+p.
+  Excepciones: el primer movimiento del juego (que solo marca un cuadrado), y
+  una jugada que captura a un rey no tiene una segunda parte.
+
+p.
+  Sin jaque o jaque mate, el objetivo es capturar al rey contrario.
+  No hay enroque.
+
+figure.diagram-container
+  .diagram.diag12
+    | fen:rnbqkbnr/pppppppp/8/8/8/5g2/PPPPPPPP/RNBQKBNR:
+  .diagram.diag12
+    | fen:rnbqkbnr/pppppppp/8/3G4/8/5P2/PPPPP1PP/RNBQKBNR:
+  figcaption.
+    Izquierda: las blancas juegan 1.Nf3.
+    Derecha: las negras ejecutan 1.f3 en su lugar, luego juegan 1...d5.
+
+h3 Fuente
+
+p
+  | La 
+  a(href="http://www.pion.ch/echecs/variante.php?jeu=ambigus")
+    | descripción de las reglas
+  | &nbsp;por el autor de esta variante, que también es jugable
+  a(href="https://brainking.com/en/GameRules?tp=85") en brainking.com
+  | .
+
+p Inventor: Fabrice Liardet (2005)
diff --git a/client/src/translations/rules/Ambiguous/fr.pug b/client/src/translations/rules/Ambiguous/fr.pug
new file mode 100644 (file)
index 0000000..e71661c
--- /dev/null
@@ -0,0 +1,38 @@
+p.boxed
+  | Vos coups sont décidés par l'adversaire, vers une case que vous aurez
+  | choisi.
+
+p.
+  À chaque tour vous devez d'abord jouer un coup avec les pièces adverses
+  vers la case désignée, puis jouer un coup librement avec vos pièces.
+  La cible dans la première partie du coup est indiquée soit par un disque
+  coloré pour une case vide, soit par une pièce colorée pour une capture.
+
+p.
+  Exceptions : le premier coup de la partie (qui marque juste une case), et
+  un coup capturant un roi n'ont pas de seconde partie.
+
+p.
+  Pas d'échec ou de mat, l'objectif est de capturer le roi adverse.
+  Il n'y a pas de roque.
+
+figure.diagram-container
+  .diagram.diag12
+    | fen:rnbqkbnr/pppppppp/8/8/8/5g2/PPPPPPPP/RNBQKBNR:
+  .diagram.diag12
+    | fen:rnbqkbnr/pppppppp/8/3G4/8/5P2/PPPPP1PP/RNBQKBNR:
+  figcaption.
+    Gauche : Les blancs jouent 1.Nf3.
+    Droite : Les noirs exécutent 1.f3 à la place, puis jouent 1...d5.
+
+h3 Source
+
+p
+  | La 
+  a(href="http://www.pion.ch/echecs/variante.php?jeu=ambigus")
+    | description des règles
+  | &nbsp;par l'auteur de cette variante, qui est jouable également
+  a(href="https://brainking.com/en/GameRules?tp=85") sur brainking.com
+  | .
+
+p Inventeur : Fabrice Liardet (2005)
index 04c4172..561346c 100644 (file)
@@ -23,4 +23,4 @@ p
   a(href="https://www.chessvariants.com/difftaking.dir/rifle.html") Rifle Chess
   | &nbsp;on chessvariants.com.
 
-p Inventor: W. B. Seabrook (1921)
+p Inventor: William Buehler Seabrook (1921)
index 5b76a3e..d98f3e5 100644 (file)
@@ -27,4 +27,4 @@ p
     | variante Rifle
   | &nbsp;en chessvariants.com.
 
-p Inventor: W. B. Seabrook (1921)
+p Inventor: William Buehler Seabrook (1921)
index 08913d1..3aa407a 100644 (file)
@@ -26,4 +26,4 @@ p
     | variante Rifle
   | &nbsp;sur chessvariants.com.
 
-p Inventeur : W. B. Seabrook (1921)
+p Inventeur : William Buehler Seabrook (1921)
diff --git a/client/src/variants/Ambiguous.js b/client/src/variants/Ambiguous.js
new file mode 100644 (file)
index 0000000..dea19d5
--- /dev/null
@@ -0,0 +1,257 @@
+import { ChessRules } from "@/base_rules";
+
+export class AmbiguousRules extends ChessRules {
+  static get HasFlags() {
+    return false;
+  }
+
+  setOtherVariables(fen) {
+    super.setOtherVariables(fen);
+    if (this.movesCount == 0) this.subTurn = 2;
+    else this.subTurn = 1;
+  }
+
+  // Subturn 1: play a move for the opponent on the designated square.
+  // Subturn 2: play a move for me (which just indicate a square).
+  getPotentialMovesFrom([x, y]) {
+    const color = this.turn;
+    const oppCol = V.GetOppCol(color);
+    if (this.subTurn == 2) {
+      // Just play a normal move (which in fact only indicate a square)
+      return (
+        super.getPotentialMovesFrom([x, y])
+        .map(m => {
+          if (m.vanish.length == 1) m.appear[0].p = V.GOAL;
+          else m.appear[0].p = V.TARGET_CODE[m.vanish[1].p];
+          m.appear[0].c = oppCol;
+          m.vanish.shift();
+          return m;
+        })
+      );
+    }
+    // At subTurn == 1, play a targeted move for opponent
+    // Search for target (we could also have it in a stack...)
+    let target = { x: -1, y: -1 };
+    outerLoop: 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 piece = this.board[i][j][1];
+          if (
+            piece == V.GOAL ||
+            Object.keys(V.TARGET_DECODE).includes(piece)
+          ) {
+            target = { x: i, y: j};
+            break outerLoop;
+          }
+        }
+      }
+    }
+    // TODO: could be more efficient than generating all moves.
+    this.turn = oppCol;
+    const emptyTarget = (this.board[target.x][target.y][1] == V.GOAL);
+    if (emptyTarget) this.board[target.x][target.y] = V.EMPTY;
+    let moves = super.getPotentialMovesFrom([x, y]);
+    if (emptyTarget) {
+      this.board[target.x][target.y] = color + V.GOAL;
+      moves.forEach(m => {
+        m.vanish.push({
+          x: target.x,
+          y: target.y,
+          c: color,
+          p: V.GOAL
+        });
+      });
+    }
+    this.turn = color;
+    return moves.filter(m => m.end.x == target.x && m.end.y == target.y);
+  }
+
+  canIplay(side, [x, y]) {
+    const color = this.getColor(x, y);
+    return (
+      (this.subTurn == 1 && color != side) ||
+      (this.subTurn == 2 && color == side)
+    );
+  }
+
+  getPpath(b) {
+    if (b[1] == V.GOAL || Object.keys(V.TARGET_DECODE).includes(b[1]))
+      return "Ambiguous/" + b;
+    return b;
+  }
+
+  // Code for empty square target
+  static get GOAL() {
+    return 'g';
+  }
+
+  static get TARGET_DECODE() {
+    return {
+      's': 'p',
+      't': 'q',
+      'u': 'r',
+      'o': 'n',
+      'c': 'b',
+      'l': 'k'
+    };
+  }
+
+  static get TARGET_CODE() {
+    return {
+      'p': 's',
+      'q': 't',
+      'r': 'u',
+      'n': 'o',
+      'b': 'c',
+      'k': 'l'
+    };
+  }
+
+  static get PIECES() {
+    return (
+      ChessRules.PIECES.concat(Object.keys(V.TARGET_DECODE)).concat([V.GOAL])
+    );
+  }
+
+  getAllPotentialMoves() {
+    const color = this.turn;
+    let potentialMoves = [];
+    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 &&
+          this.getColor(i, j) == color &&
+          this.board[i][j][1] != V.GOAL &&
+          !(Object.keys(V.TARGET_DECODE).includes(this.board[i][j][1]))
+        ) {
+          Array.prototype.push.apply(
+            potentialMoves,
+            this.getPotentialMovesFrom([i, j])
+          );
+        }
+      }
+    }
+    return potentialMoves;
+  }
+
+  atLeastOneMove() {
+    // Since there are no checks this seems true (same as for Magnetic...)
+    return true;
+  }
+
+  filterValid(moves) {
+    return moves;
+  }
+
+  getCheckSquares() {
+    return [];
+  }
+
+  getCurrentScore() {
+    // This function is only called at subTurn 1
+    const color = V.GetOppCol(this.turn);
+    if (this.kingPos[color][0] < 0) return (color == 'w' ? "0-1" : "1-0");
+    return "*";
+  }
+
+  prePlay(move) {
+    const c = V.GetOppCol(this.turn);
+    const piece = move.vanish[0].p;
+    if (piece == V.KING) {
+      // (Opp) king moves:
+      this.kingPos[c][0] = move.appear[0].x;
+      this.kingPos[c][1] = move.appear[0].y;
+    }
+    if (move.vanish.length == 2 && [V.KING, 'l'].includes(move.vanish[1].p))
+      // (My) king is captured:
+      this.kingPos[this.turn] = [-1, -1];
+  }
+
+  play(move) {
+    let kingCaptured = false;
+    if (this.subTurn == 1) {
+      this.prePlay(move);
+      this.epSquares.push(this.getEpSquare(move));
+      kingCaptured = this.kingPos[this.turn][0] < 0;
+    }
+    if (kingCaptured) move.kingCaptured = true;
+    V.PlayOnBoard(this.board, move);
+    if (this.subTurn == 2 || kingCaptured) {
+      this.turn = V.GetOppCol(this.turn);
+      this.movesCount++;
+    }
+    if (!kingCaptured) this.subTurn = 3 - this.subTurn;
+  }
+
+  undo(move) {
+    if (!move.kingCaptured) this.subTurn = 3 - this.subTurn;
+    if (this.subTurn == 2 || !!move.kingCaptured) {
+      this.turn = V.GetOppCol(this.turn);
+      this.movesCount--;
+    }
+    V.UndoOnBoard(this.board, move);
+    if (this.subTurn == 1) {
+      this.epSquares.pop();
+      this.postUndo(move);
+    }
+  }
+
+  postUndo(move) {
+    // (Potentially) Reset king(s) position
+    const c = V.GetOppCol(this.turn);
+    const piece = move.vanish[0].p;
+    if (piece == V.KING) {
+      // (Opp) king moved:
+      this.kingPos[c][0] = move.vanish[0].x;
+      this.kingPos[c][1] = move.vanish[0].y;
+    }
+    if (move.vanish.length == 2 && [V.KING, 'l'].includes(move.vanish[1].p))
+      // (My) king was captured:
+      this.kingPos[this.turn] = [move.vanish[1].x, move.vanish[1].y];
+  }
+
+  static GenRandInitFen(randomness) {
+    if (randomness == 0)
+      return "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w 0 -";
+
+    let pieces = { w: new Array(8), b: new Array(8) };
+    for (let c of ["w", "b"]) {
+      if (c == 'b' && randomness == 1) {
+        pieces['b'] = pieces['w'];
+        break;
+      }
+
+      // Get random squares for every piece, totally freely
+      let positions = shuffle(ArrayFun.range(8));
+      const composition = ['b', 'b', 'r', 'r', 'n', 'n', 'k', 'q'];
+      const rem2 = positions[0] % 2;
+      if (rem2 == positions[1] % 2) {
+        // Fix bishops (on different colors)
+        for (let i=2; i<8; i++) {
+          if (positions[i] % 2 != rem2)
+            [positions[1], positions[i]] = [positions[i], positions[1]];
+        }
+      }
+      for (let i = 0; i < 8; i++) pieces[c][positions[i]] = composition[i];
+    }
+    return (
+      pieces["b"].join("") +
+      "/pppppppp/8/8/8/8/PPPPPPPP/" +
+      pieces["w"].join("").toUpperCase() +
+      // En-passant allowed, but no flags
+      " w 0 -"
+    );
+  }
+
+  getNotation(move) {
+    if (this.subTurn == 2) return "T:" + V.CoordsToSquare(move.end);
+    // Remove and re-add target to get a good notation:
+    const withTarget = move.vanish[1];
+    if (move.vanish[1].p == V.GOAL) move.vanish.pop();
+    else move.vanish[1].p = V.TARGET_DECODE[move.vanish[1].p];
+    const notation = super.getNotation(move);
+    if (move.vanish.length == 1) move.vanish.push(withTarget);
+    else move.vanish[1].p = V.TARGET_CODE[move.vanish[1].p];
+    return notation;
+  }
+};
index 7dae055..0d9cba2 100644 (file)
@@ -815,8 +815,7 @@ export default {
                   GameStorage.update(this.gameRef, { drawOffer: "" });
                 }
               }
-              this.$refs["basegame"].play(
-                movePlus.move, "received", null, true);
+              this.$refs["basegame"].play(movePlus.move, "received");
               this.game.clocks[moveColIdx] = movePlus.clock;
               this.processMove(
                 movePlus.move,
@@ -883,6 +882,8 @@ export default {
             this.$router.push("/game/" + gameInfo.id);
           } else {
             this.rematchId = gameInfo.id;
+            document.getElementById("modalRules").checked = false;
+            document.getElementById("modalScore").checked = false;
             document.getElementById("modalRematch").checked = true;
           }
           break;
@@ -945,7 +946,7 @@ export default {
       this.game.clocks[oppIdx] = data.clock;
       if (data.movesCount > L) {
         // Just got last move from him
-        this.$refs["basegame"].play(data.lastMove, "received", null, true);
+        this.$refs["basegame"].play(data.lastMove, "received");
         this.processMove(data.lastMove);
       } else {
         if (!!this.clockUpdate) clearInterval(this.clockUpdate);
@@ -1566,6 +1567,7 @@ export default {
       this.game.score = score;
       if (!scoreMsg) scoreMsg = getScoreMessage(score);
       this.game.scoreMsg = scoreMsg;
+      document.getElementById("modalRules").checked = false;
       // Display result in a un-missable way:
       document.getElementById("modalScore").checked = true;
       this.$set(this.game, "scoreMsg", scoreMsg);
index 04ac6b8..cb08808 100644 (file)
@@ -186,13 +186,13 @@ main
         GameList(
           v-show="gdisplay=='live'"
           :games="filterGames('live')"
-          :showBoth="true"
+          :show-both="true"
           @show-game="showGame"
         )
         div(v-show="gdisplay=='corr'")
           GameList(
             :games="filterGames('corr')"
-            :showBoth="true"
+            :show-both="true"
             @show-game="showGame"
           )
           button#loadMoreBtn(
index 10ec0c2..a48c8d4 100644 (file)
@@ -31,6 +31,7 @@ main
         v-show="display=='import'"
         ref="importgames"
         :games="importGames"
+        :show-both="true"
         @show-game="showGame"
       )
       button#loadMoreBtn(