Merge branch 'tmrs' into 'v1.3'
Gestion de queues, souffles, têtes See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!151
@ -1,118 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
version="1.1"
|
|
||||||
id="Capa_1"
|
|
||||||
x="0px"
|
|
||||||
y="0px"
|
|
||||||
width="512"
|
|
||||||
height="512"
|
|
||||||
viewBox="0 0 512 512"
|
|
||||||
xml:space="preserve"
|
|
||||||
sodipodi:docname="gift.svg"
|
|
||||||
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"><metadata
|
|
||||||
id="metadata51"><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="defs49" /><sodipodi:namedview
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1"
|
|
||||||
objecttolerance="10"
|
|
||||||
gridtolerance="10"
|
|
||||||
guidetolerance="10"
|
|
||||||
inkscape:pageopacity="0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:window-width="3840"
|
|
||||||
inkscape:window-height="2066"
|
|
||||||
id="namedview47"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:zoom="1"
|
|
||||||
inkscape:cx="64"
|
|
||||||
inkscape:cy="64"
|
|
||||||
inkscape:window-x="-11"
|
|
||||||
inkscape:window-y="-11"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="g14"
|
|
||||||
inkscape:document-rotation="0" />
|
|
||||||
<g
|
|
||||||
id="g14"
|
|
||||||
transform="matrix(5.7,0,0,5.7,1.6591,1.6521435)">
|
|
||||||
|
|
||||||
<g
|
|
||||||
id="g861"
|
|
||||||
style="fill:#0044aa"
|
|
||||||
transform="matrix(3.8,0,0,3.8,3.0606105,3.0571933)">
|
|
||||||
<path
|
|
||||||
d="m 15.516,6.331 c 1.966,-0.309 3.471,-1.127 3.471,-3.023 0,-0.685 -0.989,-1.596 -2.675,-1.215 -1.674,0.378 -3.837,2.241 -4.435,3.206 -0.153,-0.367 -0.515,-0.625 -0.938,-0.625 -0.421,0 -0.784,0.257 -0.938,0.623 C 9.403,4.334 7.241,2.469 5.565,2.092 3.88,1.712 2.89,2.622 2.89,3.307 2.89,5.204 4.395,6.021 6.361,6.33 H 0 v 4.167 h 1.323 v 1.778 l 1.778,-1.777 h 0.736 l -2.515,2.516 v 2.302 l 4.817,-4.817 h 0.736 l -5.553,5.554 v 2.303 L 9.178,10.5 H 9.374 V 6.356 C 9.647,6.286 9.86,6.189 9.99,6.062 c 0.15,0.378 0.516,0.648 0.948,0.648 0.432,0 0.8,-0.27 0.946,-0.65 0.13,0.127 0.343,0.225 0.616,0.294 v 4.143 h 0.456 L 3.58,19.874 h 2.302 l 9.375,-9.376 h 0.736 L 6.618,19.874 H 8.92 l 9.375,-9.376 h 0.737 l -9.376,9.376 h 2.303 l 8.592,-8.594 v -0.782 h 1.323 V 6.331 Z M 7.136,6.072 C 5.506,5.889 4.205,5.299 4.205,3.779 c 0,-0.507 0.734,-1.182 1.981,-0.9 1.451,0.327 3.405,2.167 3.405,2.674 0,0.508 -0.978,0.685 -2.455,0.519 z m 5.149,-0.518 c 0,-0.507 1.954,-2.346 3.405,-2.674 1.247,-0.282 1.98,0.393 1.98,0.9 0,1.52 -1.299,2.109 -2.931,2.293 -1.476,0.165 -2.454,-0.012 -2.454,-0.519 z"
|
|
||||||
id="path851"
|
|
||||||
style="fill:#0044aa" />
|
|
||||||
<polygon
|
|
||||||
points="2.843,19.874 12.218,10.498 12.5,10.498 10.938,8.415 9.375,10.498 9.916,10.498 1.323,19.091 1.323,19.874 "
|
|
||||||
id="polygon853"
|
|
||||||
style="fill:#0044aa" />
|
|
||||||
<polygon
|
|
||||||
points="20.553,19.874 20.553,18.095 18.774,19.874 "
|
|
||||||
id="polygon855"
|
|
||||||
style="fill:#0044aa" />
|
|
||||||
<polygon
|
|
||||||
points="18.038,19.874 20.553,17.359 20.553,15.056 15.734,19.874 "
|
|
||||||
id="polygon857"
|
|
||||||
style="fill:#0044aa" />
|
|
||||||
<polygon
|
|
||||||
points="14.998,19.874 20.553,14.32 20.553,12.017 12.695,19.874 "
|
|
||||||
id="polygon859"
|
|
||||||
style="fill:#0044aa" />
|
|
||||||
</g></g>
|
|
||||||
<g
|
|
||||||
id="g16">
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g18">
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g20">
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g22">
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g24">
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g26">
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g28">
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g30">
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g32">
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g34">
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g36">
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g38">
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g40">
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g42">
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g44">
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 3.5 KiB |
130
icons/tmr/gift.svg
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
version="1.1"
|
||||||
|
id="Capa_1"
|
||||||
|
x="0px"
|
||||||
|
y="0px"
|
||||||
|
width="512"
|
||||||
|
height="512"
|
||||||
|
viewBox="0 0 512 512"
|
||||||
|
xml:space="preserve"
|
||||||
|
sodipodi:docname="gift.svg"
|
||||||
|
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"><metadata
|
||||||
|
id="metadata51"><rdf:RDF><cc:Work
|
||||||
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
|
||||||
|
id="defs49" /><sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="3840"
|
||||||
|
inkscape:window-height="2066"
|
||||||
|
id="namedview47"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="2.415894"
|
||||||
|
inkscape:cx="64"
|
||||||
|
inkscape:cy="163.34211"
|
||||||
|
inkscape:window-x="-11"
|
||||||
|
inkscape:window-y="-11"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="g14"
|
||||||
|
inkscape:document-rotation="0" />
|
||||||
|
<g
|
||||||
|
id="g14"
|
||||||
|
transform="matrix(5.7,0,0,5.7,1.6591,1.6521435)">
|
||||||
|
|
||||||
|
<g
|
||||||
|
id="g24-9"
|
||||||
|
transform="matrix(0.1754386,0,0,0.1754386,3.2674006,3.2686582)"
|
||||||
|
style="fill:#ffffff;stroke:none"><path
|
||||||
|
d="m 81.245,212.419 c -9.902,13.127 -19.256,25.526 -8.273,47.079 4.957,9.729 18.132,11.771 28.311,11.771 20.904,0 45.125,-8.057 63.033,-19.182 -2.994,-3.719 -6.111,-8.237 -6.111,-13.949 0,-6.576 4.131,-11.571 7.451,-15.585 1.601,-1.936 3.415,-4.129 3.882,-5.569 0.523,-1.607 0.357,-4.439 0.197,-7.178 -0.299,-5.108 -0.67,-11.466 3.069,-16.605 2.653,-3.644 6.503,-5.517 10.286,-6.759 -3.608,-8.125 -8.398,-16.488 -14.204,-24.48 -14.902,-20.512 -32.983,-33.767 -46.06,-33.767 -2.845,0 -5.39,0.592 -7.78,1.81 -21.868,11.143 -21.404,26.636 -20.912,43.039 0.22,7.359 0.429,14.31 -1.603,20.561 -2.198,6.767 -6.612,12.619 -11.286,18.814 z"
|
||||||
|
id="path2"
|
||||||
|
style="fill:#ffffff;stroke:none" /><path
|
||||||
|
d="m 464.076,203.816 c -7.567,-14.789 -26.952,-17.893 -41.88,-17.893 -9.41,0 -19.295,1.161 -29.221,3.252 1.645,2.602 3.775,5.369 5.992,8.235 10.528,13.614 24.948,32.259 9.778,62.032 -5.735,11.255 -17.472,17.797 -34.132,19.144 4.004,3.046 7.514,6.264 10.369,9.608 7.716,9.035 10.98,18.948 9.44,28.668 -5.153,32.537 -27.667,39.408 -44.107,44.425 -2.622,0.8 -5.172,1.586 -7.547,2.43 17.125,17.508 34.971,27.756 49.438,27.756 4.384,0 8.483,-0.96 12.185,-2.855 32.102,-16.428 31.354,-39.981 30.631,-62.76 -0.318,-10.034 -0.619,-19.512 2.054,-27.791 2.912,-9.018 8.93,-17.024 15.301,-25.501 14.344,-19.083 27.892,-37.108 11.699,-68.75 z"
|
||||||
|
id="path4"
|
||||||
|
style="fill:#ffffff;stroke:none" /><path
|
||||||
|
d="m 270.444,394.702 c 2.878,0.456 5.642,0.687 8.214,0.687 18.176,0 25.863,-11.274 34.001,-23.211 4.148,-6.084 8.066,-11.83 13.384,-15.693 5.755,-4.182 12.766,-6.321 20.188,-8.587 15.727,-4.8 30.581,-9.333 34.364,-33.225 0.893,-5.63 -1.213,-11.479 -6.258,-17.386 -8.141,-9.532 -23.127,-18.049 -39.956,-23.652 -1.862,-0.538 -3.721,-1.116 -5.575,-1.729 -9.632,-2.772 -19.668,-4.561 -29.237,-5.027 0.292,5.036 0.549,11.19 -3.092,16.193 -3.771,5.18 -9.963,6.789 -14.938,8.081 -2.629,0.683 -5.348,1.389 -6.67,2.351 -1.28,0.933 -2.769,3.273 -4.207,5.537 -2.776,4.368 -6.232,9.804 -12.397,11.806 -1.511,0.491 -3.127,0.739 -4.804,0.739 -1.835,0 -3.626,-0.305 -5.359,-0.754 -3.383,17.09 -3.525,36.966 0.635,54.293 2.436,10.148 8.497,27.485 21.707,29.577 z"
|
||||||
|
id="path6"
|
||||||
|
style="fill:#ffffff;stroke:none" /><path
|
||||||
|
d="m 126.439,366.003 c -16.52,-4.826 -39.144,-11.435 -44.37,-44.438 -1.539,-9.719 1.725,-19.632 9.44,-28.667 2.257,-2.643 4.924,-5.206 7.915,-7.669 -19.207,-0.406 -32.657,-7.071 -38.927,-19.376 -14.955,-29.353 -0.779,-48.145 9.572,-61.866 1.457,-1.931 2.882,-3.822 4.177,-5.669 -8.438,-1.537 -16.798,-2.384 -24.81,-2.384 -15.076,0 -34.636,3.13 -42.2,18.042 -16.315,32.161 -1.866,50.776 12.108,68.778 6.156,7.931 11.971,15.422 14.674,23.692 2.944,9.006 2.782,19.021 2.61,29.623 -0.386,23.87 -0.751,46.416 30.949,62.497 3.678,1.866 7.743,2.811 12.085,2.811 15.828,0 35.7,-12.34 54.219,-33.068 -2.312,-0.8 -4.839,-1.546 -7.442,-2.306 z"
|
||||||
|
id="path8"
|
||||||
|
style="fill:#ffffff;stroke:none" /><path
|
||||||
|
d="m 276.172,62.189 c 12.786,0 24.223,5.22 34.962,15.96 9.115,9.115 11.603,22.92 7.36,39.616 9.602,-6.462 19.178,-9.98 27.922,-9.98 5.036,0 9.792,1.123 14.137,3.337 29.352,14.955 28.93,38.491 28.62,55.676 -0.036,2.032 -0.067,4.02 -0.056,5.943 13.727,-6.889 25.322,-15.114 32.853,-23.947 7.611,-8.928 10.762,-17.875 9.364,-26.592 C 425.63,86.594 402.997,80.027 381.11,73.676 371.468,70.879 362.361,68.236 355.314,63.135 347.636,57.578 341.881,49.38 335.789,40.701 324.269,24.291 312.358,7.323 285.965,7.323 c -3.748,0 -7.768,0.339 -11.947,1.009 -20.054,3.212 -28.987,28.625 -32.527,43.488 -1.487,6.242 -2.569,12.945 -3.271,19.898 3.292,-0.724 7.018,-2.048 10.899,-3.439 7.965,-2.855 16.995,-6.09 27.053,-6.09 z"
|
||||||
|
id="path10"
|
||||||
|
style="fill:#ffffff;stroke:none" /><path
|
||||||
|
d="m 80.254,180.726 c 0.028,-2.296 -0.039,-4.745 -0.114,-7.261 -0.516,-17.203 -1.222,-40.762 28.551,-55.932 4.345,-2.214 9.101,-3.336 14.136,-3.336 8.349,0 17.457,3.203 26.621,9.117 -6.331,-19.186 -4.373,-35.058 5.734,-45.165 10.691,-10.692 22.104,-15.89 34.887,-15.89 9.877,0 18.926,3.121 26.909,5.875 1.419,0.49 2.817,0.97 4.191,1.424 -0.685,-4.98 -1.561,-9.809 -2.666,-14.377 -3.594,-14.851 -12.618,-40.235 -32.683,-43.376 -4.124,-0.646 -8.094,-0.973 -11.801,-0.973 -26.95,0 -38.601,17.153 -49.868,33.742 -5.641,8.306 -10.969,16.151 -17.999,21.277 -7.655,5.583 -17.23,8.524 -27.367,11.638 -22.821,7.009 -44.376,13.629 -49.874,48.746 -1.361,8.696 1.798,17.605 9.392,26.48 9.129,10.667 24.272,20.436 41.951,28.011 z"
|
||||||
|
id="path12"
|
||||||
|
style="fill:#ffffff;stroke:none" /><path
|
||||||
|
d="m 328.161,374.443 c -1.295,1.753 -2.6,3.664 -3.935,5.621 -8.438,12.375 -19.993,29.324 -45.568,29.324 -3.304,0 -6.804,-0.289 -10.403,-0.859 -12.671,-2.006 -22.761,-11.63 -29.146,-27.494 -6.21,18.666 -16.992,30 -30.871,32.198 -3.581,0.567 -7.063,0.854 -10.349,0.854 -25.198,0 -36.474,-16.121 -45.533,-29.075 -1.561,-2.232 -3.085,-4.399 -4.611,-6.387 -2.519,4.654 -4.752,9.299 -6.633,13.862 -5.821,14.126 -13.439,39.965 0.946,54.3 11.86,11.818 23.598,17.323 36.938,17.323 11.172,0 21.87,-3.855 32.217,-7.584 9.445,-3.404 18.367,-6.619 27.066,-6.634 9.527,0 18.977,3.24 28.98,6.671 10.371,3.556 21.096,7.234 32.052,7.234 h 0.005 c 13.408,-0.002 25.147,-5.516 36.943,-17.354 14.313,-14.363 6.645,-40.121 0.8,-54.197 -2.432,-5.852 -5.439,-11.836 -8.898,-17.803 z"
|
||||||
|
id="path14"
|
||||||
|
style="fill:#ffffff;stroke:none" /><path
|
||||||
|
d="m 190.069,76.259 c -9.005,0 -16.944,3.746 -24.987,11.789 -9.459,9.458 -4.171,27.047 -0.177,36.69 7.686,18.555 21.693,36.525 36.309,48.605 2.38,-3.296 5.398,-6.483 9.806,-7.914 1.511,-0.491 3.127,-0.739 4.805,-0.739 4.22,0 8.227,1.567 11.763,2.949 2.6,1.016 5.287,2.067 7.057,2.067 1.77,0 4.457,-1.051 7.057,-2.067 3.535,-1.382 7.543,-2.948 11.762,-2.948 1.678,0 3.294,0.249 4.805,0.739 3.715,1.206 6.442,3.662 8.633,6.377 13.957,-12.04 27.143,-29.278 34.512,-47.07 3.994,-9.643 9.282,-27.231 -0.176,-36.69 -8.092,-8.091 -16.055,-11.859 -25.063,-11.859 -7.626,0 -15.102,2.679 -22.331,5.27 -6.931,2.484 -13.477,4.83 -20.049,4.83 -7.115,0 -14.044,-2.39 -21.379,-4.92 -7.286,-2.512 -14.816,-5.109 -22.347,-5.109 z"
|
||||||
|
id="path16"
|
||||||
|
style="fill:#ffffff;stroke:none" /><path
|
||||||
|
d="m 396.271,253.086 c 11.144,-21.87 1.661,-34.13 -8.379,-47.111 -4.504,-5.824 -8.758,-11.324 -10.789,-17.574 -2.199,-6.768 -2.067,-14.096 -1.928,-21.855 0.296,-16.44 0.575,-31.969 -20.978,-42.951 -2.392,-1.218 -4.936,-1.811 -7.781,-1.811 -13.076,0 -31.153,13.253 -46.055,33.763 -7.177,9.878 -12.801,20.322 -16.549,30.183 4.48,1.242 9.45,3.059 12.663,7.474 3.74,5.139 3.368,11.496 3.069,16.604 -0.16,2.739 -0.326,5.571 0.196,7.178 0.467,1.44 2.281,3.633 3.882,5.568 3.319,4.014 7.45,9.008 7.45,15.583 0,3.601 -1.241,6.724 -2.907,9.475 6.998,4.038 14.811,7.587 22.921,10.41 3.011,0.836 5.989,1.759 8.917,2.766 9.424,2.568 18.994,4.068 27.956,4.068 10.181,0.001 23.356,-2.041 28.312,-11.77 z"
|
||||||
|
id="path18"
|
||||||
|
style="fill:#ffffff;stroke:none" /><path
|
||||||
|
d="m 95.897,319.376 c 3.839,24.242 18.717,28.588 34.468,33.189 7.066,2.064 13.742,4.015 19.059,7.877 5.757,4.182 9.957,10.189 14.404,16.547 8.308,11.878 16.155,23.098 34.061,23.098 2.555,0 5.299,-0.229 8.159,-0.683 13.211,-2.092 19.271,-19.429 21.708,-29.577 4.71,-19.62 3.901,-42.504 -0.881,-60.914 -3.359,1.307 -7.109,2.672 -11.051,2.672 -1.678,0 -3.294,-0.249 -4.805,-0.739 -6.165,-2.001 -9.621,-7.438 -12.398,-11.805 -1.439,-2.264 -2.928,-4.605 -4.208,-5.538 -1.322,-0.962 -4.041,-1.668 -6.67,-2.351 -4.976,-1.292 -11.168,-2.9 -14.938,-8.08 -2.434,-3.342 -3.123,-7.199 -3.229,-10.893 -26.569,3.035 -54.982,15.244 -67.422,29.811 -5.043,5.908 -7.149,11.757 -6.257,17.386 z"
|
||||||
|
id="path20"
|
||||||
|
style="fill:#ffffff;stroke:none" /><path
|
||||||
|
d="m 246.796,295.599 c 2.499,0.978 5.084,1.988 6.664,1.988 0.204,0 0.37,-0.019 0.48,-0.055 1.376,-0.447 3.416,-3.657 4.906,-6.001 2.04,-3.21 4.354,-6.849 7.784,-9.346 3.469,-2.525 7.677,-3.618 11.388,-4.583 2.666,-0.692 6.317,-1.641 7.139,-2.768 0.79,-1.086 0.571,-4.821 0.411,-7.548 -0.225,-3.845 -0.48,-8.204 0.856,-12.32 1.292,-3.98 4.011,-7.267 6.41,-10.168 1.889,-2.283 4.238,-5.124 4.238,-6.661 0,-1.536 -2.351,-4.378 -4.238,-6.661 -2.399,-2.9 -5.118,-6.188 -6.41,-10.168 -1.336,-4.115 -1.081,-8.474 -0.856,-12.319 0.16,-2.728 0.379,-6.462 -0.412,-7.549 -0.82,-1.127 -4.471,-2.075 -7.137,-2.768 -3.712,-0.964 -7.918,-2.057 -11.388,-4.583 -3.432,-2.497 -5.745,-6.136 -7.786,-9.347 -1.489,-2.344 -3.529,-5.553 -4.904,-5.999 -0.11,-0.036 -0.276,-0.055 -0.48,-0.055 -1.58,0 -4.165,1.01 -6.665,1.988 -3.63,1.419 -7.745,3.027 -12.153,3.027 -4.408,0 -8.523,-1.609 -12.154,-3.028 -2.5,-0.978 -5.085,-1.988 -6.665,-1.988 -0.204,0 -0.371,0.019 -0.482,0.055 -1.375,0.446 -3.415,3.656 -4.904,5.999 -2.041,3.211 -4.355,6.85 -7.787,9.348 -3.47,2.525 -7.677,3.617 -11.389,4.581 -2.666,0.692 -6.317,1.64 -7.139,2.768 -0.79,1.086 -0.572,4.822 -0.413,7.549 0.225,3.845 0.48,8.203 -0.856,12.319 -1.293,3.98 -4.012,7.267 -6.41,10.167 -1.889,2.284 -4.239,5.126 -4.239,6.662 0,1.537 2.351,4.378 4.239,6.662 2.398,2.9 5.117,6.187 6.41,10.167 1.336,4.115 1.081,8.473 0.856,12.318 -0.159,2.728 -0.377,6.463 0.414,7.55 0.821,1.128 4.472,2.076 7.138,2.768 3.712,0.964 7.918,2.056 11.389,4.581 3.432,2.497 5.745,6.136 7.786,9.347 1.489,2.344 3.53,5.554 4.905,6.001 0.111,0.036 0.277,0.055 0.482,0.055 1.58,0 4.165,-1.011 6.666,-1.988 3.63,-1.419 7.745,-3.028 12.153,-3.028 4.408,0 8.523,1.612 12.153,3.031 z"
|
||||||
|
id="path22"
|
||||||
|
style="fill:#ffffff;stroke:none" /></g></g>
|
||||||
|
<g
|
||||||
|
id="g16">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g18">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g20">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g22">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g24">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g26">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g28">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g30">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g32">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g34">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g36">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g38">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g40">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g42">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g44">
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 11 KiB |
197
icons/tmr/pelerin.svg
Normal file
@ -0,0 +1,197 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="512"
|
||||||
|
height="512"
|
||||||
|
viewBox="0 0 135.46666 135.46667"
|
||||||
|
version="1.1"
|
||||||
|
id="svg878"
|
||||||
|
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
|
||||||
|
sodipodi:docname="pelerin.svg">
|
||||||
|
<defs
|
||||||
|
id="defs872">
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath1730">
|
||||||
|
<g
|
||||||
|
inkscape:label="Clip"
|
||||||
|
id="use1732"
|
||||||
|
style="fill:#d38d5f;stroke:#502d16">
|
||||||
|
<g
|
||||||
|
id="g1541"
|
||||||
|
transform="matrix(0.28980934,0,0,0.21909426,120.56466,-12.741092)"
|
||||||
|
style="display:inline;fill:#d38d5f;stroke:#502d16;stroke-width:2.16856">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cccccc"
|
||||||
|
id="path1535"
|
||||||
|
d="m -174.5565,130.97253 h 15.40856 v 508.4827 l -7.70428,24 -7.70428,-24 z"
|
||||||
|
style="fill:#d38d5f;stroke:#502d16;stroke-width:2.16856" />
|
||||||
|
<path
|
||||||
|
transform="matrix(1.001146,0,0,0.893038,2.193524,15.82179)"
|
||||||
|
style="fill:#d38d5f;stroke:#502d16;stroke-width:2.29344"
|
||||||
|
d="m -145.09735,123.91028 c 0,13.11269 -10.64218,17.6523 -23.75487,17.6523 -13.11269,0 -23.75487,-4.53961 -23.75487,-17.6523 0,-13.11269 10.64218,-23.75487 23.75487,-23.75487 13.11269,0 23.75487,10.64218 23.75487,23.75487 z"
|
||||||
|
id="path1537"
|
||||||
|
sodipodi:nodetypes="csssc" />
|
||||||
|
<path
|
||||||
|
style="fill:#d38d5f;stroke:#502d16;stroke-width:2.16856"
|
||||||
|
d="m -146.94948,221.199 c 0,8.50553 -8.91642,12.68366 -19.90273,12.68366 -10.98631,0 -19.90273,-4.17813 -19.90273,-12.68366 0,-8.50553 8.91642,-9.95873 19.90273,-9.95873 10.98631,0 19.90273,1.4532 19.90273,9.95873 z"
|
||||||
|
id="path1539"
|
||||||
|
sodipodi:nodetypes="csssc" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
style="display:inline;fill:#d38d5f;stroke:#502d16"
|
||||||
|
id="g1559"
|
||||||
|
transform="matrix(0.20847315,-0.03662954,0.03662954,0.20847315,-0.34176516,-0.20270665)">
|
||||||
|
<g
|
||||||
|
inkscape:label="Fond écu"
|
||||||
|
id="g1543"
|
||||||
|
style="fill:#d38d5f;stroke:#502d16" />
|
||||||
|
<g
|
||||||
|
style="opacity:1;fill:#d38d5f;stroke:#502d16"
|
||||||
|
inkscape:label="Meubles"
|
||||||
|
id="g1553">
|
||||||
|
<g
|
||||||
|
id="g1551"
|
||||||
|
transform="matrix(0.714908,0,0,0.756557,137.7704,128.4719)"
|
||||||
|
style="display:inline;fill:#d38d5f;fill-opacity:1;stroke:#502d16;stroke-width:2.71947;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
id="path1545"
|
||||||
|
d="m 160.08787,143.23938 39.92645,57.31251 39.53535,-57.31251 h -40.3837 z"
|
||||||
|
style="fill:#d38d5f;fill-opacity:1;fill-rule:evenodd;stroke:#502d16;stroke-width:2.71947;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccccccccccccccccccc"
|
||||||
|
id="path1547"
|
||||||
|
d="m 193.20453,145.31745 c -24.41443,20.15923 -49.98749,37.33861 -73.2768,58.5917 -6.37089,11.43876 -4.50952,20.09512 9.2768,25.68955 14.75917,-16.92275 18.76874,-17.90421 41.38418,-46.03566 -22.42258,29.55858 -41.45116,42.84434 -41.29043,46.09816 5.38114,19.66042 0.98803,22.70493 25.28125,31.0625 2.90109,-14.41044 25.62687,-63.19056 32.51802,-70.81345 -6.73696,8.18151 -29.75646,56.59527 -32.58052,71.37595 18.94602,17.92 18.75832,19.45149 44.6875,14.03125 l 0.375,-80.91001 0.375,80.91001 c 21.42445,5.42024 29.31401,4.7897 44.65625,-14.03125 -3.59166,-13.24549 -25.62533,-59.96461 -31.64832,-69.57405 4.75359,7.7904 26.43091,52.99484 31.61707,69.01155 18.88754,-8.35757 21.70202,-8.69924 25.28125,-31.0625 -1.0235,-6.998 -18.88266,-18.38043 -42.22262,-45.81545 23.11839,25.66768 42.65103,40.10972 42.31637,45.75295 15.18653,-6.16263 15.88219,-19.26899 8.92398,-28.52504 -25.17844,-18.14393 -47.18822,-37.47898 -72.36824,-56.58981 0,0 -4.64225,-4.09784 -6.93074,-3.0414 z"
|
||||||
|
style="fill:#d38d5f;fill-opacity:1;fill-rule:evenodd;stroke:#502d16;stroke-width:2.71947;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
id="path1549"
|
||||||
|
d="m 168.24779,168.92114 c 23.13397,11.51861 44.28729,9.17267 64.46537,0"
|
||||||
|
style="fill:#d38d5f;fill-opacity:1;fill-rule:evenodd;stroke:#502d16;stroke-width:2.71947;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:label="Reflet final"
|
||||||
|
id="g1555"
|
||||||
|
style="fill:#d38d5f;stroke:#502d16" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Contour final"
|
||||||
|
id="g1557"
|
||||||
|
style="fill:#d38d5f;stroke:#502d16" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.35"
|
||||||
|
inkscape:cx="400"
|
||||||
|
inkscape:cy="560"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="svg878"
|
||||||
|
inkscape:document-rotation="0"
|
||||||
|
showgrid="false"
|
||||||
|
units="px"
|
||||||
|
inkscape:window-width="2073"
|
||||||
|
inkscape:window-height="997"
|
||||||
|
inkscape:window-x="114"
|
||||||
|
inkscape:window-y="114"
|
||||||
|
inkscape:window-maximized="0" />
|
||||||
|
<metadata
|
||||||
|
id="metadata875">
|
||||||
|
<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>
|
||||||
|
<g
|
||||||
|
id="g1510"
|
||||||
|
style="fill:#784421;stroke:#ffffff;image-rendering:auto"
|
||||||
|
transform="translate(-1.0583648,-3.7366014)">
|
||||||
|
<g
|
||||||
|
inkscape:label="Clip"
|
||||||
|
id="g1726"
|
||||||
|
style="fill:#784421;stroke:#ffffff">
|
||||||
|
<g
|
||||||
|
id="g3257"
|
||||||
|
transform="matrix(0.28980934,0,0,0.21909426,120.56466,-12.741092)"
|
||||||
|
style="display:inline;fill:#784421;stroke:#ffffff;stroke-width:2.16856">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cccccc"
|
||||||
|
id="rect3250"
|
||||||
|
d="m -174.5565,130.97253 h 15.40856 v 508.4827 l -7.70428,24 -7.70428,-24 z"
|
||||||
|
style="fill:#784421;stroke:#ffffff;stroke-width:2.16856" />
|
||||||
|
<path
|
||||||
|
transform="matrix(1.001146,0,0,0.893038,2.193524,15.82179)"
|
||||||
|
style="fill:#784421;stroke:#ffffff;stroke-width:2.29344"
|
||||||
|
d="m -145.09735,123.91028 c 0,13.11269 -10.64218,17.6523 -23.75487,17.6523 -13.11269,0 -23.75487,-4.53961 -23.75487,-17.6523 0,-13.11269 10.64218,-23.75487 23.75487,-23.75487 13.11269,0 23.75487,10.64218 23.75487,23.75487 z"
|
||||||
|
id="path3252"
|
||||||
|
sodipodi:nodetypes="csssc" />
|
||||||
|
<path
|
||||||
|
style="fill:#784421;stroke:#ffffff;stroke-width:2.16856"
|
||||||
|
d="m -146.94948,221.199 c 0,8.50553 -8.91642,12.68366 -19.90273,12.68366 -10.98631,0 -19.90273,-4.17813 -19.90273,-12.68366 0,-8.50553 8.91642,-9.95873 19.90273,-9.95873 10.98631,0 19.90273,1.4532 19.90273,9.95873 z"
|
||||||
|
id="path3254"
|
||||||
|
sodipodi:nodetypes="csssc" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
style="display:inline;fill:#784421;stroke:#ffffff"
|
||||||
|
id="g2066"
|
||||||
|
transform="matrix(0.20847315,-0.03662954,0.03662954,0.20847315,-0.34176516,-0.20270665)">
|
||||||
|
<g
|
||||||
|
inkscape:label="Fond écu"
|
||||||
|
id="g2068"
|
||||||
|
style="fill:#784421;stroke:#ffffff" />
|
||||||
|
<g
|
||||||
|
style="opacity:1;fill:#784421;stroke:#ffffff"
|
||||||
|
inkscape:label="Meubles"
|
||||||
|
id="g2070">
|
||||||
|
<g
|
||||||
|
id="g4219"
|
||||||
|
transform="matrix(0.714908,0,0,0.756557,137.7704,128.4719)"
|
||||||
|
style="display:inline;fill:#784421;fill-opacity:1;stroke:#ffffff;stroke-width:2.71947;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
id="path4221"
|
||||||
|
d="m 160.08787,143.23938 39.92645,57.31251 39.53535,-57.31251 h -40.3837 z"
|
||||||
|
style="fill:#784421;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.71947;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccccccccccccccccccc"
|
||||||
|
id="path4223"
|
||||||
|
d="m 193.20453,145.31745 c -24.41443,20.15923 -49.98749,37.33861 -73.2768,58.5917 -6.37089,11.43876 -4.50952,20.09512 9.2768,25.68955 14.75917,-16.92275 18.76874,-17.90421 41.38418,-46.03566 -22.42258,29.55858 -41.45116,42.84434 -41.29043,46.09816 5.38114,19.66042 0.98803,22.70493 25.28125,31.0625 2.90109,-14.41044 25.62687,-63.19056 32.51802,-70.81345 -6.73696,8.18151 -29.75646,56.59527 -32.58052,71.37595 18.94602,17.92 18.75832,19.45149 44.6875,14.03125 l 0.375,-80.91001 0.375,80.91001 c 21.42445,5.42024 29.31401,4.7897 44.65625,-14.03125 -3.59166,-13.24549 -25.62533,-59.96461 -31.64832,-69.57405 4.75359,7.7904 26.43091,52.99484 31.61707,69.01155 18.88754,-8.35757 21.70202,-8.69924 25.28125,-31.0625 -1.0235,-6.998 -18.88266,-18.38043 -42.22262,-45.81545 23.11839,25.66768 42.65103,40.10972 42.31637,45.75295 15.18653,-6.16263 15.88219,-19.26899 8.92398,-28.52504 -25.17844,-18.14393 -47.18822,-37.47898 -72.36824,-56.58981 0,0 -4.64225,-4.09784 -6.93074,-3.0414 z"
|
||||||
|
style="fill:#784421;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.71947;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
id="path4225"
|
||||||
|
d="m 168.24779,168.92114 c 23.13397,11.51861 44.28729,9.17267 64.46537,0"
|
||||||
|
style="fill:#784421;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.71947;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:label="Reflet final"
|
||||||
|
id="g2076"
|
||||||
|
style="fill:#784421;stroke:#ffffff" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Contour final"
|
||||||
|
id="g2078"
|
||||||
|
style="fill:#784421;stroke:#ffffff" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 10 KiB |
58
icons/tmr/scroll.svg
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 511.999 511.999" style="enable-background:new 0 0 511.999 511.999;" xml:space="preserve">
|
||||||
|
<path style="fill:#CCAC68;" d="M145.179,371.239H95.282c-35.205,0-63.745,28.539-63.745,63.745l0,0
|
||||||
|
c0,35.205,28.539,63.745,63.745,63.745H266.31v-93.993L145.179,371.239z"/>
|
||||||
|
<path style="fill:#E6C275;" d="M356.848,140.762L154.642,13.272H90.44l0,0c-60.783,0-99.78,64.617-71.453,118.395l138.469,262.878
|
||||||
|
h-0.022c25.403,47.058-8.675,104.182-62.152,104.182h336.415c53.477,0,87.555-57.123,62.152-104.182L356.848,140.762z"/>
|
||||||
|
<path style="fill:#FFD782;" d="M90.44,13.272c35.205,0,63.745,28.54,63.745,63.745l0,0c0,35.205-28.54,63.745-63.745,63.745h266.408
|
||||||
|
c35.205,0,63.745-28.54,63.745-63.745l0,0c0-35.205-28.54-63.745-63.745-63.745C356.848,13.272,90.44,13.272,90.44,13.272z"/>
|
||||||
|
<path d="M342.963,489.153c0,0-195.544,0-195.559,0c1.764,0,6.043-5.742,7.172-6.989c17.747-19.618,25.167-48.132,18.443-73.982
|
||||||
|
c-2.737-10.522-8.091-19.987-13.121-29.534L27.455,127.206C15.728,104.945,16.489,78.792,29.49,57.25
|
||||||
|
c13.001-21.543,35.785-34.403,60.947-34.403c29.869,0,54.17,24.3,54.17,54.17s-24.3,54.17-54.17,54.17
|
||||||
|
c-5.289,0-9.575,4.286-9.575,9.576c0,5.289,4.286,9.575,9.575,9.575h260.695l31.745,58.803c2.512,4.655,8.318,6.387,12.973,3.877
|
||||||
|
c4.655-2.512,6.389-8.321,3.877-12.973l-27.694-51.301c33.163-7.016,58.129-36.507,58.129-71.729c0-40.429-32.892-73.32-73.32-73.32
|
||||||
|
H240.78c-5.289,0-9.575,4.286-9.575,9.575s4.286,9.575,9.575,9.575h116.063c29.869,0,54.17,24.3,54.17,54.17
|
||||||
|
c0,29.866-24.293,54.164-54.17,54.17H139.796c0.919-0.839,1.818-1.7,2.694-2.584c13.491-13.615,21.266-32.414,21.266-51.587
|
||||||
|
c0-20.045-8.544-39.648-23.128-53.374c-0.28-0.263-0.546-0.537-0.83-0.797h56.304c5.289,0,9.575-4.286,9.575-9.575
|
||||||
|
s-4.286-9.575-9.575-9.575c0,0-105.664,0-105.665,0c-31.931,0-60.842,16.32-77.341,43.658
|
||||||
|
c-16.498,27.337-17.463,60.524-2.581,88.774l118.798,225.535H95.277c-40.428,0-73.32,32.891-73.32,73.32s32.892,73.32,73.32,73.32
|
||||||
|
c0.027,0,0.052-0.001,0.078-0.001h247.609c5.289,0,9.575-4.286,9.575-9.575S348.252,489.153,342.963,489.153z M41.107,434.984
|
||||||
|
c0-29.869,24.3-54.17,54.17-54.17h44.118c3.82,7.251,8.046,14.427,11.417,21.9c3.922,8.533,5.779,17.635,5.584,26.694
|
||||||
|
c-0.706,32.866-28.393,59.744-61.136,59.744C65.399,489.146,41.107,464.848,41.107,434.984z"/>
|
||||||
|
<path d="M502.27,389.999l-78.422-145.272c-2.514-4.655-8.322-6.389-12.973-3.877c-4.655,2.512-6.389,8.321-3.877,12.973
|
||||||
|
l78.423,145.272c10.312,19.103,9.829,41.639-1.293,60.283c-11.123,18.645-30.724,29.776-52.434,29.776h-44.048
|
||||||
|
c-5.289,0-9.575,4.286-9.575,9.575s4.286,9.575,9.575,9.575h44.048c28.52,0,54.269-14.622,68.88-39.114
|
||||||
|
C515.184,444.697,515.818,415.093,502.27,389.999z"/>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.0 KiB |
62
icons/tmr/treasure-chest.svg
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 496 496" style="enable-background:new 0 0 496 496;" xml:space="preserve">
|
||||||
|
<path style="fill:#5B402E;" d="M0,232v167.2C0,460.8,52,456,113.6,456h268c61.6,0,113.6,4.8,113.6-56.8V232H0z"/>
|
||||||
|
<path style="fill:#493322;" d="M112,456h270.4c61.6,0,113.6,4.8,113.6-56.8V232"/>
|
||||||
|
<path style="fill:#5B402E;" d="M496,192v-40c0-61.6-52-112-113.6-112H113.6C52,40,0,90.4,0,152v40H496z"/>
|
||||||
|
<path style="fill:#493322;" d="M0,152v40h496v-40c0-61.6-52-112-113.6-112"/>
|
||||||
|
<rect y="232" style="fill:#F2B111;" width="496" height="64"/>
|
||||||
|
<polyline style="fill:#E88813;" points="0,296 496,296 496,232 "/>
|
||||||
|
<rect y="152" style="fill:#F2B111;" width="496" height="40"/>
|
||||||
|
<g>
|
||||||
|
<polyline style="fill:#E88813;" points="0,192 496,192 496,152 "/>
|
||||||
|
<rect x="104" y="32" style="fill:#E88813;" width="56" height="152"/>
|
||||||
|
<rect x="336" y="32" style="fill:#E88813;" width="56" height="152"/>
|
||||||
|
<rect x="104" y="288" style="fill:#E88813;" width="56" height="176"/>
|
||||||
|
<rect x="336" y="288" style="fill:#E88813;" width="56" height="176"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<circle style="fill:#493322;" cx="184" cy="264.8" r="8.8"/>
|
||||||
|
<circle style="fill:#493322;" cx="226.4" cy="264.8" r="8.8"/>
|
||||||
|
<circle style="fill:#493322;" cx="269.6" cy="264.8" r="8.8"/>
|
||||||
|
<circle style="fill:#493322;" cx="312" cy="264.8" r="8.8"/>
|
||||||
|
<circle style="fill:#493322;" cx="33.6" cy="264.8" r="8.8"/>
|
||||||
|
<circle style="fill:#493322;" cx="75.2" cy="264.8" r="8.8"/>
|
||||||
|
<circle style="fill:#493322;" cx="420" cy="264.8" r="8.8"/>
|
||||||
|
<circle style="fill:#493322;" cx="462.4" cy="264.8" r="8.8"/>
|
||||||
|
</g>
|
||||||
|
<path style="fill:#F2B111;" d="M276,346.4c0-15.2-12.8-28-28-28s-28,12.8-28,28c0,10.4,5.6,20,13.6,25.6l-8,52h44.8l-8-52
|
||||||
|
C270.4,367.2,276,356.8,276,346.4z"/>
|
||||||
|
<path style="fill:#E88813;" d="M270.4,424l-8-52c8-4.8,13.6-15.2,13.6-25.6c0-15.2-12.8-28-28-28s-28,12.8-28,28"/>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
@ -1143,12 +1143,6 @@ export class RdDActor extends Actor {
|
|||||||
displayTMRQueueSouffleInformation() {
|
displayTMRQueueSouffleInformation() {
|
||||||
let messages = [];
|
let messages = [];
|
||||||
for (let item of this.data.items) {
|
for (let item of this.data.items) {
|
||||||
if (EffetsDraconiques.isConquete(item)) {
|
|
||||||
messages.push("Vous souffrez d'une <strong>Conquête</strong> : " + item.data.description);
|
|
||||||
}
|
|
||||||
if (EffetsDraconiques.isPelerinage(item)) {
|
|
||||||
messages.push("Vous souffrez d'un <strong>Pélerinage</strong> : " + item.data.description);
|
|
||||||
}
|
|
||||||
if (EffetsDraconiques.isUrgenceDraconique(item)) {
|
if (EffetsDraconiques.isUrgenceDraconique(item)) {
|
||||||
messages.push("Vous souffrez d'une <strong>Urgence Draconique</strong> : " + item.data.description);
|
messages.push("Vous souffrez d'une <strong>Urgence Draconique</strong> : " + item.data.description);
|
||||||
}
|
}
|
||||||
@ -1811,8 +1805,8 @@ export class RdDActor extends Actor {
|
|||||||
ui.notifications.info("Aucun sort disponible pour cette case !");
|
ui.notifications.info("Aucun sort disponible pour cette case !");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (EffetsDraconiques.isConquete(this)) {
|
if (EffetsDraconiques.isSortImpossible(this)) {
|
||||||
ui.notifications.error("Vous ne pouvez pas lancer de sort sous l'effet d'une conquête!");
|
ui.notifications.error("Une queue ou un souffle vous empèche de lancer de sort!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (this.currentTMR) this.currentTMR.minimize(); // Hide
|
if (this.currentTMR) this.currentTMR.minimize(); // Hide
|
||||||
@ -1880,7 +1874,7 @@ export class RdDActor extends Actor {
|
|||||||
let countInertieDraconique = EffetsDraconiques.countInertieDraconique(this);
|
let countInertieDraconique = EffetsDraconiques.countInertieDraconique(this);
|
||||||
if (countInertieDraconique > 0) {
|
if (countInertieDraconique > 0) {
|
||||||
ChatMessage.create({
|
ChatMessage.create({
|
||||||
content: `Vous êtes sous le coup d'une Inertie Draconique : vous perdez ${countInertieDraconique + 1} cases de Fatigue par déplacement au lieu d'une.`,
|
content: `Vous êtes sous le coup d'Inertie Draconique : vous perdrez ${countInertieDraconique + 1} cases de Fatigue par déplacement au lieu d'une.`,
|
||||||
whisper: ChatMessage.getWhisperRecipients(game.user.name)
|
whisper: ChatMessage.getWhisperRecipients(game.user.name)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -1888,9 +1882,9 @@ export class RdDActor extends Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async checkSoufflePeage(cellDescr) {
|
async checkSoufflePeage(tmr) {
|
||||||
let peage = this.data.items.find(item => EffetsDraconiques.isPeage(item));
|
let peage = this.data.items.find(item => EffetsDraconiques.isPeage(item));
|
||||||
if (peage && (cellDescr.type == 'pont' || cellDescr.type == 'cite')) {
|
if (peage && (tmr.type == 'pont' || tmr.type == 'cite')) {
|
||||||
await this.reveActuelIncDec(-1);
|
await this.reveActuelIncDec(-1);
|
||||||
ChatMessage.create({
|
ChatMessage.create({
|
||||||
content: "Vous êtes sous le coup d'un Péage : l'entrée sur cette case vous a coûté 1 Point de Rêve (déduit automatiquement).",
|
content: "Vous êtes sous le coup d'un Péage : l'entrée sur cette case vous a coûté 1 Point de Rêve (déduit automatiquement).",
|
||||||
|
@ -138,18 +138,24 @@ export class RdDResolutionTable {
|
|||||||
mergeObject(chances, this._computeCell(null, newScore), { overwrite: true });
|
mergeObject(chances, this._computeCell(null, newScore), { overwrite: true });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static significativeRequise(chances) {
|
static significativeRequise(chances) {
|
||||||
chances.roll = Math.floor(chances.score / 2);
|
chances.roll = Math.floor(chances.score / 2);
|
||||||
mergeObject(chances, reussites.find(x => x.code == 'sign'), { overwrite: true });
|
mergeObject(chances, reussites.find(x => x.code == 'sign'), { overwrite: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static succesRequis(chances) {
|
||||||
|
chances.roll = chances.score;
|
||||||
|
mergeObject(chances, reussites.find(x => x.code == 'norm'), { overwrite: true });
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async rollChances(chances) {
|
static async rollChances(chances) {
|
||||||
let myRoll = new Roll("1d100").roll();
|
let myRoll = new Roll("1d100").roll();
|
||||||
myRoll.showDice = chances.showDice;
|
myRoll.showDice = chances.showDice;
|
||||||
await RdDDice.show(myRoll);
|
await RdDDice.show(myRoll);
|
||||||
chances.roll = myRoll.total;
|
chances.roll = myRoll.total;
|
||||||
mergeObject(chances, this._computeReussite(chances, chances.roll), { overwrite: true });
|
mergeObject(chances, this.computeReussite(chances, chances.roll), { overwrite: true });
|
||||||
return chances;
|
return chances;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,7 +216,7 @@ export class RdDResolutionTable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static _computeReussite(chances, roll) {
|
static computeReussite(chances, roll) {
|
||||||
return reussites.find(x => x.condition(chances, roll));
|
return reussites.find(x => x.condition(chances, roll));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
createPixiSprites() {
|
createPixiSprites() {
|
||||||
EffetsDraconiques.carteTmr._createSprite(this.pixiTMR);
|
EffetsDraconiques.carteTmr.createSprite(this.pixiTMR);
|
||||||
|
|
||||||
this.updateTokens();
|
this.updateTokens();
|
||||||
|
|
||||||
@ -123,9 +123,9 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
_tokenRencontre(rencontre) {
|
_tokenRencontre(rencontre) {
|
||||||
return EffetsDraconiques.rencontre.token(this.pixiTMR, rencontre, () => rencontre.coord);
|
return EffetsDraconiques.rencontre.token(this.pixiTMR, rencontre, () => rencontre.coord);
|
||||||
}
|
}
|
||||||
_tokenCaseSpeciale(caseSpeciale) {
|
_tokenCaseSpeciale(casetmr) {
|
||||||
const draconique = Draconique.get(caseSpeciale.data.specific);
|
const draconique = Draconique.get(casetmr.data.specific);
|
||||||
return draconique?.token(this.pixiTMR, caseSpeciale, () => caseSpeciale.data.coord);
|
return draconique?.token(this.pixiTMR, casetmr, () => casetmr.data.coord);
|
||||||
}
|
}
|
||||||
_tokenSortEnReserve(sortEnReserve) {
|
_tokenSortEnReserve(sortEnReserve) {
|
||||||
return EffetsDraconiques.sortReserve.token(this.pixiTMR, sortEnReserve.sort, () => sortEnReserve.coord);
|
return EffetsDraconiques.sortReserve.token(this.pixiTMR, sortEnReserve.sort, () => sortEnReserve.coord);
|
||||||
@ -313,7 +313,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async _tentativeMaitrise(rencontreData) {
|
async _tentativeMaitrise(rencontreData, presentCite) {
|
||||||
console.log("-> matriser", rencontreData);
|
console.log("-> matriser", rencontreData);
|
||||||
|
|
||||||
rencontreData.reve = this.actor.getReveActuel();
|
rencontreData.reve = this.actor.getReveActuel();
|
||||||
@ -321,7 +321,10 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
|
|
||||||
RollDataAjustements.calcul(rencontreData, this.actor);
|
RollDataAjustements.calcul(rencontreData, this.actor);
|
||||||
|
|
||||||
rencontreData.rolled = await RdDResolutionTable.roll(rencontreData.reve, RollDataAjustements.sum(rencontreData.ajustements));
|
rencontreData.rolled = rencontreData.presentCite
|
||||||
|
? this._rollPresentCite(rencontreData)
|
||||||
|
: await RdDResolutionTable.roll(rencontreData.reve, RollDataAjustements.sum(rencontreData.ajustements));
|
||||||
|
|
||||||
let postProcess = await TMRRencontres.gererRencontre(this, rencontreData);
|
let postProcess = await TMRRencontres.gererRencontre(this, rencontreData);
|
||||||
|
|
||||||
ChatMessage.create({
|
ChatMessage.create({
|
||||||
@ -351,6 +354,13 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_rollPresentCite(rencontreData) {
|
||||||
|
let rolled = RdDResolutionTable.computeChances(rencontreData.reve, 0);
|
||||||
|
mergeObject(rolled, { caracValue: rencontreData.reve, finalLevel: 0, roll: rolled.score });
|
||||||
|
RdDResolutionTable.succesRequis(rolled);
|
||||||
|
return rolled;
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_deleteTmrMessages(actor, nbRounds = -1) {
|
_deleteTmrMessages(actor, nbRounds = -1) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@ -381,6 +391,9 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.currentRencontre = undefined;
|
this.currentRencontre = undefined;
|
||||||
|
if (this._presentCite(tmr, postRencontre)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
let rencontre = await this._jetDeRencontre(tmr);
|
let rencontre = await this._jetDeRencontre(tmr);
|
||||||
|
|
||||||
if (rencontre) { // Manages it
|
if (rencontre) { // Manages it
|
||||||
@ -396,19 +409,43 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_presentCite(tmr, postRencontre) {
|
||||||
|
const presentCite = this.casesSpeciales.find(c => EffetsDraconiques.presentCites.isCase(c, tmr.coord));
|
||||||
|
if (presentCite) {
|
||||||
|
this.minimize();
|
||||||
|
EffetsDraconiques.presentCites.choisirUnPresent(presentCite, (type => this._utiliserPresentCite(presentCite, type, tmr, postRencontre)));
|
||||||
|
}
|
||||||
|
return presentCite;
|
||||||
|
}
|
||||||
|
|
||||||
|
async _utiliserPresentCite(presentCite, typeRencontre, tmr, postRencontre) {
|
||||||
|
this.currentRencontre = TMRRencontres.getRencontre(typeRencontre);
|
||||||
|
await TMRRencontres.evaluerForceRencontre(this.currentRencontre);
|
||||||
|
await EffetsDraconiques.presentCites.ouvrirLePresent(this.actor, presentCite);
|
||||||
|
this.removeToken(tmr, presentCite);
|
||||||
|
|
||||||
|
// simuler une rencontre
|
||||||
|
let rencontreData = {
|
||||||
|
actor: this.actor,
|
||||||
|
alias: this.actor.name,
|
||||||
|
reveDepart: this.actor.getReveActuel(),
|
||||||
|
competence: this.actor.getBestDraconic(),
|
||||||
|
rencontre: this.currentRencontre,
|
||||||
|
tmr: tmr,
|
||||||
|
presentCite: presentCite
|
||||||
|
};
|
||||||
|
await this._tentativeMaitrise(rencontreData);
|
||||||
|
|
||||||
|
this.maximize();
|
||||||
|
postRencontre();
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async _jetDeRencontre(tmr) {
|
async _jetDeRencontre(tmr) {
|
||||||
let rencontre = this.rencontresExistantes.find(prev => prev.coord == tmr.coord);
|
let rencontre = this.rencontresExistantes.find(prev => prev.coord == tmr.coord);
|
||||||
if (rencontre) {
|
if (rencontre) {
|
||||||
return rencontre;
|
return rencontre;
|
||||||
}
|
}
|
||||||
if (this.casesSpeciales.find(c => EffetsDraconiques.isPresentCite(c, tmr.coord))) {
|
|
||||||
|
|
||||||
// TODO: dialog pour remplacer la rencontre par un présent
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
let myRoll = new Roll("1d7").evaluate().total;
|
let myRoll = new Roll("1d7").evaluate().total;
|
||||||
if (TMRUtility.isForceRencontre() || myRoll == 7) {
|
if (TMRUtility.isForceRencontre() || myRoll == 7) {
|
||||||
return await this.rencontreTMRRoll(tmr, this.actor.isRencontreSpeciale());
|
return await this.rencontreTMRRoll(tmr, this.actor.isRencontreSpeciale());
|
||||||
@ -416,7 +453,6 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
this._tellToUser(myRoll + ": Pas de rencontre en " + tmr.label + " (" + tmr.coord + ")");
|
this._tellToUser(myRoll + ": Pas de rencontre en " + tmr.label + " (" + tmr.coord + ")");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rencontreTMRRoll(tmr, isMauvaise = false) {
|
async rencontreTMRRoll(tmr, isMauvaise = false) {
|
||||||
let rencontre = TMRUtility.utiliseForceRencontre() ??
|
let rencontre = TMRUtility.utiliseForceRencontre() ??
|
||||||
@ -450,8 +486,8 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
forceCarac: { 'reve-actuel': { label: "Rêve Actuel", value: this.actor.getReveActuel() } },
|
forceCarac: { 'reve-actuel': { label: "Rêve Actuel", value: this.actor.getReveActuel() } },
|
||||||
maitrise: { verbe: 'maîtriser', action: 'Maîtriser le fleuve' }
|
maitrise: { verbe: 'maîtriser', action: 'Maîtriser le fleuve' }
|
||||||
}
|
}
|
||||||
rollData.double = EffetsDraconiques.isDoubleResistanceFleuve(this.actor) ? true: undefined,
|
rollData.double = EffetsDraconiques.isDoubleResistanceFleuve(this.actor) ? true : undefined,
|
||||||
rollData.competence.data.defaut_carac = 'reve-actuel';
|
rollData.competence.data.defaut_carac = 'reve-actuel';
|
||||||
await this._rollMaitriseCaseHumide(rollData);
|
await this._rollMaitriseCaseHumide(rollData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -522,7 +558,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
await this._conquerir(tmr, {
|
await this._conquerir(tmr, {
|
||||||
difficulte: -9,
|
difficulte: -9,
|
||||||
action: 'Conquérir la cité',
|
action: 'Conquérir la cité',
|
||||||
onConqueteReussie: r => EffetsDraconiques.fermetureCites.onConquete(r.actor, tmr.coord),
|
onConqueteReussie: r => EffetsDraconiques.fermetureCites.onConquete(r.actor, tmr, (casetmr) => this.removeToken(tmr, casetmr)),
|
||||||
onConqueteEchec: r => this.close(),
|
onConqueteEchec: r => this.close(),
|
||||||
canClose: false
|
canClose: false
|
||||||
});
|
});
|
||||||
@ -540,8 +576,8 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
await this._conquerir(tmr, {
|
await this._conquerir(tmr, {
|
||||||
difficulte: -7,
|
difficulte: -7,
|
||||||
action: 'Conquérir',
|
action: 'Conquérir',
|
||||||
onConqueteReussie: r => EffetsDraconiques.conquete.onConquete(r.actor, tmr.coord, (casetmr) => this.removeToken(tmr, casetmr)),
|
onConqueteReussie: r => EffetsDraconiques.conquete.onConquete(r.actor, tmr, (casetmr) => this.removeToken(tmr, casetmr)),
|
||||||
onConqueteEchec: r => {},
|
onConqueteEchec: r => { },
|
||||||
canClose: false
|
canClose: false
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -603,13 +639,18 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
dialog.render(true);
|
dialog.render(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async validerPelerinage(tmr) {
|
||||||
|
await EffetsDraconiques.pelerinage.onFinPelerinage(this.actor, tmr, (casetmr) => this.removeToken(tmr, casetmr));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async declencheSortEnReserve(coord) {
|
async declencheSortEnReserve(coord) {
|
||||||
|
|
||||||
let sortReserveList = TMRUtility.getSortReserveList(this.sortsReserves, coord);
|
let sortReserveList = TMRUtility.getSortReserveList(this.sortsReserves, coord);
|
||||||
if (sortReserveList.length > 0) {
|
if (sortReserveList.length > 0) {
|
||||||
if (EffetsDraconiques.isConquete(this.actor)) {
|
if (EffetsDraconiques.isSortImpossible(this.actor)) {
|
||||||
ui.notifications.error("Vous ne pouvez pas déclencher de sort sous l'effet d'une conquête!");
|
ui.notifications.error("Une queue ou un souffle vous empèche de déclencher de sort!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (EffetsDraconiques.isReserveEnSecurite(this.actor) || this.isReserveExtensible(coord)) {
|
if (EffetsDraconiques.isReserveEnSecurite(this.actor) || this.isReserveExtensible(coord)) {
|
||||||
@ -795,26 +836,23 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
await this.manageCaseHumide(tmr);
|
await this.manageCaseHumide(tmr);
|
||||||
await this.conquerirCiteFermee(tmr);
|
await this.conquerirCiteFermee(tmr);
|
||||||
await this.conquerirTMR(tmr);
|
await this.conquerirTMR(tmr);
|
||||||
|
await this.validerPelerinage(tmr);
|
||||||
await this.declencheSortEnReserve(tmr.coord);
|
await this.declencheSortEnReserve(tmr.coord);
|
||||||
await this.actor.checkSoufflePeage(tmr);
|
await this.actor.checkSoufflePeage(tmr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async forceDemiRevePositionView() {
|
async forceDemiRevePositionView() {
|
||||||
this._updateDemiReve();
|
this._updateDemiReve();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async forceDemiRevePosition(coord) {
|
async forceDemiRevePosition(coord) {
|
||||||
await this.actor.updateCoordTMR(coord);
|
await this.actor.updateCoordTMR(coord);
|
||||||
this._updateDemiReve();
|
this._updateDemiReve();
|
||||||
let tmr = TMRUtility.getTMR(coord);
|
let tmr = TMRUtility.getTMR(coord);
|
||||||
if (!(this.viewOnly || this.currentRencontre)) {
|
await this.postRencontre(tmr);
|
||||||
await this.manageCaseHumide(tmr);
|
|
||||||
await this.conquerirCiteFermee(tmr);
|
|
||||||
await this.declencheSortEnReserve(tmr.coord);
|
|
||||||
}
|
|
||||||
return tmr;
|
return tmr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,60 +31,60 @@ const ajustementsEncaissement = [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, +1,
|
|||||||
|
|
||||||
const tableCaracDerivee = {
|
const tableCaracDerivee = {
|
||||||
// xp: coût pour passer du niveau inférieur à ce niveau
|
// xp: coût pour passer du niveau inférieur à ce niveau
|
||||||
1: { xp: 3, poids: "moins de 1kg", plusdom:-5, sconst: 0.5, sust: 0.1 },
|
1: { xp: 3, poids: "moins de 1kg", plusdom: -5, sconst: 0.5, sust: 0.1 },
|
||||||
2: { xp: 3, poids: "1-5", plusdom:-4, sconst: 0.5, sust: 0.3 },
|
2: { xp: 3, poids: "1-5", plusdom: -4, sconst: 0.5, sust: 0.3 },
|
||||||
3: { xp: 4, poids: "6-10", plusdom:-3, sconst: 1, sust: 0.5 , beaute:'hideux'},
|
3: { xp: 4, poids: "6-10", plusdom: -3, sconst: 1, sust: 0.5, beaute: 'hideux' },
|
||||||
4: { xp: 4, poids: "11-20", plusdom:-3, sconst: 1, sust: 1 , beaute:'repoussant'},
|
4: { xp: 4, poids: "11-20", plusdom: -3, sconst: 1, sust: 1, beaute: 'repoussant' },
|
||||||
5: { xp: 5, poids: "21-30", plusdom:-2, sconst: 1, sust: 1 , beaute:'franchement très laid'},
|
5: { xp: 5, poids: "21-30", plusdom: -2, sconst: 1, sust: 1, beaute: 'franchement très laid' },
|
||||||
6: { xp: 5, poids: "31-40", plusdom:-1, sconst: 2, sust: 2 , beaute:'laid'},
|
6: { xp: 5, poids: "31-40", plusdom: -1, sconst: 2, sust: 2, beaute: 'laid' },
|
||||||
7: { xp: 6, poids: "41-50", plusdom:-1, sconst: 2, sust: 2 , beaute:'très désavantagé'},
|
7: { xp: 6, poids: "41-50", plusdom: -1, sconst: 2, sust: 2, beaute: 'très désavantagé' },
|
||||||
8: { xp: 6, poids: "51-60", plusdom:0, sconst: 2, sust: 2 , beaute:'désavantagé'},
|
8: { xp: 6, poids: "51-60", plusdom: 0, sconst: 2, sust: 2, beaute: 'désavantagé' },
|
||||||
9: { xp: 7, poids: "61-65", plusdom:0, sconst: 3, sust: 2 , beaute:'pas terrible'},
|
9: { xp: 7, poids: "61-65", plusdom: 0, sconst: 3, sust: 2, beaute: 'pas terrible' },
|
||||||
10: { xp: 7, poids: "66-70", plusdom:0, sconst: 3, sust: 3 , beaute:'commun'},
|
10: { xp: 7, poids: "66-70", plusdom: 0, sconst: 3, sust: 3, beaute: 'commun' },
|
||||||
11: { xp: 8, poids: "71-75", plusdom:0, sconst: 3, sust: 3 , beaute:'pas mal'},
|
11: { xp: 8, poids: "71-75", plusdom: 0, sconst: 3, sust: 3, beaute: 'pas mal' },
|
||||||
12: { xp: 8, poids: "76-80", plusdom:+1, sconst: 4, sust: 3 , beaute:'avantagé'},
|
12: { xp: 8, poids: "76-80", plusdom: +1, sconst: 4, sust: 3, beaute: 'avantagé' },
|
||||||
13: { xp: 9, poids: "81-90", plusdom:+1, sconst: 4, sust: 3 , beaute:'mignon'},
|
13: { xp: 9, poids: "81-90", plusdom: +1, sconst: 4, sust: 3, beaute: 'mignon' },
|
||||||
14: { xp: 9, poids: "91-100", plusdom:+2, sconst: 4, sust: 4 , beaute:'beau'},
|
14: { xp: 9, poids: "91-100", plusdom: +2, sconst: 4, sust: 4, beaute: 'beau' },
|
||||||
15: { xp: 10, poids: "101-110", plusdom:+2, sconst: 5, sust: 4 , beaute:'très beau'},
|
15: { xp: 10, poids: "101-110", plusdom: +2, sconst: 5, sust: 4, beaute: 'très beau' },
|
||||||
16: { xp: 20, poids: "111-120", plusdom:+3, sconst: 5, sust: 4 , beaute:'éblouissant'},
|
16: { xp: 20, poids: "111-120", plusdom: +3, sconst: 5, sust: 4, beaute: 'éblouissant' },
|
||||||
17: { xp: 30, poids: "121-131", plusdom:+3, sconst: 5, sust: 5 },
|
17: { xp: 30, poids: "121-131", plusdom: +3, sconst: 5, sust: 5 },
|
||||||
18: { xp: 40, poids: "131-141", plusdom:+4, sconst: 6, sust: 5 },
|
18: { xp: 40, poids: "131-141", plusdom: +4, sconst: 6, sust: 5 },
|
||||||
19: { xp: 50, poids: "141-150", plusdom:+4, sconst: 6, sust: 5 },
|
19: { xp: 50, poids: "141-150", plusdom: +4, sconst: 6, sust: 5 },
|
||||||
20: { xp: 60, poids: "151-160", plusdom:+4, sconst: 6, sust: 6 },
|
20: { xp: 60, poids: "151-160", plusdom: +4, sconst: 6, sust: 6 },
|
||||||
21: { xp: 70, poids: "161-180", plusdom:+5, sconst: 7, sust: 6 },
|
21: { xp: 70, poids: "161-180", plusdom: +5, sconst: 7, sust: 6 },
|
||||||
22: { xp: 80, poids: "181-200", plusdom:+5, sconst: 7, sust: 7 },
|
22: { xp: 80, poids: "181-200", plusdom: +5, sconst: 7, sust: 7 },
|
||||||
23: { xp: 90, poids: "201-300", plusdom:+6, sconst: 7, sust: 8 },
|
23: { xp: 90, poids: "201-300", plusdom: +6, sconst: 7, sust: 8 },
|
||||||
24: { xp: 100, poids: "301-400", plusdom:+6, sconst: 8, sust: 9 },
|
24: { xp: 100, poids: "301-400", plusdom: +6, sconst: 8, sust: 9 },
|
||||||
25: { xp: 110, poids: "401-500", plusdom:+7, sconst: 8, sust: 10 },
|
25: { xp: 110, poids: "401-500", plusdom: +7, sconst: 8, sust: 10 },
|
||||||
26: { xp: 120, poids: "501-600", plusdom:+7, sconst: 8, sust: 11 },
|
26: { xp: 120, poids: "501-600", plusdom: +7, sconst: 8, sust: 11 },
|
||||||
27: { xp: 130, poids: "601-700", plusdom:+8, sconst: 9, sust: 12 },
|
27: { xp: 130, poids: "601-700", plusdom: +8, sconst: 9, sust: 12 },
|
||||||
28: { xp: 140, poids: "701-800", plusdom:+8, sconst: 9, sust: 13 },
|
28: { xp: 140, poids: "701-800", plusdom: +8, sconst: 9, sust: 13 },
|
||||||
29: { xp: 150, poids: "801-900", plusdom:+9, sconst: 9, sust: 14 },
|
29: { xp: 150, poids: "801-900", plusdom: +9, sconst: 9, sust: 14 },
|
||||||
30: { xp: 160, poids: "901-1000", plusdom:+9, sconst: 10, sust: 15 },
|
30: { xp: 160, poids: "901-1000", plusdom: +9, sconst: 10, sust: 15 },
|
||||||
31: { xp: 170, poids: "1001-1500", plusdom:+10, sconst: 10, sust: 16 },
|
31: { xp: 170, poids: "1001-1500", plusdom: +10, sconst: 10, sust: 16 },
|
||||||
32: { xp: 180, poids: "1501-2000", plusdom:+11, sconst: 10, sust: 17 }
|
32: { xp: 180, poids: "1501-2000", plusdom: +11, sconst: 10, sust: 17 }
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
const premierRoundInit = [
|
const premierRoundInit = [
|
||||||
{ pattern: 'hast', init: 3.90},
|
{ pattern: 'hast', init: 3.90 },
|
||||||
{ pattern: 'lance', init: 3.85},
|
{ pattern: 'lance', init: 3.85 },
|
||||||
{ pattern: 'baton', init: 3.80},
|
{ pattern: 'baton', init: 3.80 },
|
||||||
{ pattern: 'doubledragonne', init: 3.75},
|
{ pattern: 'doubledragonne', init: 3.75 },
|
||||||
{ pattern: 'esparlongue', init: 3.70},
|
{ pattern: 'esparlongue', init: 3.70 },
|
||||||
{ pattern: 'epeedragonne', init: 3.65},
|
{ pattern: 'epeedragonne', init: 3.65 },
|
||||||
{ pattern: 'epeebatarde', init: 3.60},
|
{ pattern: 'epeebatarde', init: 3.60 },
|
||||||
{ pattern: 'epeecyane', init: 3.55},
|
{ pattern: 'epeecyane', init: 3.55 },
|
||||||
{ pattern: 'epeesorde', init: 3.50},
|
{ pattern: 'epeesorde', init: 3.50 },
|
||||||
{ pattern: 'grandehache', init: 3.45},
|
{ pattern: 'grandehache', init: 3.45 },
|
||||||
{ pattern: 'bataille', init: 3.40},
|
{ pattern: 'bataille', init: 3.40 },
|
||||||
{ pattern: 'epeegnome', init: 3.35},
|
{ pattern: 'epeegnome', init: 3.35 },
|
||||||
{ pattern: 'masse', init: 3.30},
|
{ pattern: 'masse', init: 3.30 },
|
||||||
{ pattern: 'gourdin', init: 3.25},
|
{ pattern: 'gourdin', init: 3.25 },
|
||||||
{ pattern: 'fléau', init: 3.20},
|
{ pattern: 'fléau', init: 3.20 },
|
||||||
{ pattern: 'dague', init: 3.15},
|
{ pattern: 'dague', init: 3.15 },
|
||||||
{ pattern: 'autre', init: 3.10},
|
{ pattern: 'autre', init: 3.10 },
|
||||||
];
|
];
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
function _buildAllSegmentsFatigue(max) {
|
function _buildAllSegmentsFatigue(max) {
|
||||||
@ -235,7 +235,7 @@ export class RdDUtility {
|
|||||||
'systems/foundryvtt-reve-de-dragon/templates/hud-actor-attaque.html',
|
'systems/foundryvtt-reve-de-dragon/templates/hud-actor-attaque.html',
|
||||||
// messages tchat
|
// messages tchat
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html',
|
'systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html',
|
'systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-demande-defense.html',
|
'systems/foundryvtt-reve-de-dragon/templates/chat-demande-defense.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-demande-attaque-particuliere.html',
|
'systems/foundryvtt-reve-de-dragon/templates/chat-demande-attaque-particuliere.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-demande-attaque-etotal.html',
|
'systems/foundryvtt-reve-de-dragon/templates/chat-demande-attaque-etotal.html',
|
||||||
@ -254,10 +254,10 @@ export class RdDUtility {
|
|||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-actor-carac-xp.html'
|
'systems/foundryvtt-reve-de-dragon/templates/chat-actor-carac-xp.html'
|
||||||
];
|
];
|
||||||
|
|
||||||
Handlebars.registerHelper('upperFirst', str=> Misc.upperFirst(str ?? 'Null'));
|
Handlebars.registerHelper('upperFirst', str => Misc.upperFirst(str ?? 'Null'));
|
||||||
Handlebars.registerHelper('upper', str => str?.toUpperCase() ?? 'NULL' );
|
Handlebars.registerHelper('upper', str => str?.toUpperCase() ?? 'NULL');
|
||||||
Handlebars.registerHelper('le', str => Grammar.articleDetermine(str) );
|
Handlebars.registerHelper('le', str => Grammar.articleDetermine(str));
|
||||||
Handlebars.registerHelper('un', str => Grammar.articleIndetermine(str) );
|
Handlebars.registerHelper('un', str => Grammar.articleIndetermine(str));
|
||||||
|
|
||||||
return loadTemplates(templatePaths);
|
return loadTemplates(templatePaths);
|
||||||
}
|
}
|
||||||
@ -287,7 +287,7 @@ export class RdDUtility {
|
|||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getAfficheContenu(conteneurId) {
|
static getAfficheContenu(conteneurId) {
|
||||||
if ( conteneurId )
|
if (conteneurId)
|
||||||
return this.afficheContenu[conteneurId];
|
return this.afficheContenu[conteneurId];
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
@ -327,8 +327,8 @@ export class RdDUtility {
|
|||||||
console.log(dragData, actorSheet.actor._id);
|
console.log(dragData, actorSheet.actor._id);
|
||||||
let dropID = $(event.target).parents(".item").attr("data-item-id"); // Only relevant if container drop
|
let dropID = $(event.target).parents(".item").attr("data-item-id"); // Only relevant if container drop
|
||||||
let objetId = dragData.id || dragData.data._id;
|
let objetId = dragData.id || dragData.data._id;
|
||||||
if ( dragData.type == 'Item') {
|
if (dragData.type == 'Item') {
|
||||||
if ( dropID ) { // Dropped over an item !!!
|
if (dropID) { // Dropped over an item !!!
|
||||||
if (actorSheet.objetVersConteneur[objetId] != dropID && objetId != dropID) {
|
if (actorSheet.objetVersConteneur[objetId] != dropID && objetId != dropID) {
|
||||||
if (actorSheet.actor.validateConteneur(objetId, dropID) && actorSheet.actor.testConteneurCapacite(objetId, dropID)) {
|
if (actorSheet.actor.validateConteneur(objetId, dropID) && actorSheet.actor.testConteneurCapacite(objetId, dropID)) {
|
||||||
await actorSheet.actor.enleverDeConteneur(objetId, actorSheet.objetVersConteneur[objetId]);
|
await actorSheet.actor.enleverDeConteneur(objetId, actorSheet.objetVersConteneur[objetId]);
|
||||||
@ -336,14 +336,14 @@ export class RdDUtility {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (dragData.actorId && dragData.actorId != actorSheet.actor._id ) { // Un acteur est à l'origine de l'item -> deplacement
|
if (dragData.actorId && dragData.actorId != actorSheet.actor._id) { // Un acteur est à l'origine de l'item -> deplacement
|
||||||
console.log("Moving objects");
|
console.log("Moving objects");
|
||||||
actorSheet.actor.moveItemsBetweenActors( objetId, dragData.actorId);
|
actorSheet.actor.moveItemsBetweenActors(objetId, dragData.actorId);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
actorSheet.actor.computeEncombrementTotalEtMalusArmure();
|
actorSheet.actor.computeEncombrementTotalEtMalusArmure();
|
||||||
} else if ( dragData.type == "Actor" ) {
|
} else if (dragData.type == "Actor") {
|
||||||
actorSheet.actor.addSubacteur( objetId );
|
actorSheet.actor.addSubacteur(objetId);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -434,7 +434,7 @@ export class RdDUtility {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static getCaracXp(targetValue) {
|
static getCaracXp(targetValue) {
|
||||||
return tableCaracDerivee[targetValue]?.xp ?? 200 ;
|
return tableCaracDerivee[targetValue]?.xp ?? 200;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -487,13 +487,13 @@ export class RdDUtility {
|
|||||||
|
|
||||||
data.carac.derobee.value = Math.floor(parseInt(((21 - data.carac.taille.value)) + parseInt(data.carac.agilite.value)) / 2);
|
data.carac.derobee.value = Math.floor(parseInt(((21 - data.carac.taille.value)) + parseInt(data.carac.agilite.value)) / 2);
|
||||||
let bonusDomKey = Math.floor((parseInt(data.carac.force.value) + parseInt(data.carac.taille.value)) / 2);
|
let bonusDomKey = Math.floor((parseInt(data.carac.force.value) + parseInt(data.carac.taille.value)) / 2);
|
||||||
bonusDomKey = Math.min( Math.max(bonusDomKey, 0), 32); // Clamp de securite
|
bonusDomKey = Math.min(Math.max(bonusDomKey, 0), 32); // Clamp de securite
|
||||||
|
|
||||||
let tailleData = tableCaracDerivee[bonusDomKey];
|
let tailleData = tableCaracDerivee[bonusDomKey];
|
||||||
data.attributs.plusdom.value = tailleData.plusdom;
|
data.attributs.plusdom.value = tailleData.plusdom;
|
||||||
|
|
||||||
data.attributs.sconst.value = RdDUtility.calculSConst(data.carac.constitution.value);
|
data.attributs.sconst.value = RdDUtility.calculSConst(data.carac.constitution.value);
|
||||||
data.attributs.sust.value = tableCaracDerivee[Number(data.carac.taille.value)].sust;
|
data.attributs.sust.value = tableCaracDerivee[Number(data.carac.taille.value)].sust;
|
||||||
|
|
||||||
data.attributs.encombrement.value = (parseInt(data.carac.force.value) + parseInt(data.carac.taille.value)) / 2;
|
data.attributs.encombrement.value = (parseInt(data.carac.force.value) + parseInt(data.carac.taille.value)) / 2;
|
||||||
data.carac.melee.value = Math.floor((parseInt(data.carac.force.value) + parseInt(data.carac.agilite.value)) / 2);
|
data.carac.melee.value = Math.floor((parseInt(data.carac.force.value) + parseInt(data.carac.agilite.value)) / 2);
|
||||||
@ -579,10 +579,10 @@ export class RdDUtility {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getLocalisation( type = 'personnage' ) {
|
static getLocalisation(type = 'personnage') {
|
||||||
let result = new Roll("1d20").roll().total;
|
let result = new Roll("1d20").roll().total;
|
||||||
let txt = ""
|
let txt = ""
|
||||||
if ( type == 'personnage') {
|
if (type == 'personnage') {
|
||||||
if (result <= 3) txt = "Jambe, genou, pied, jarret";
|
if (result <= 3) txt = "Jambe, genou, pied, jarret";
|
||||||
else if (result <= 7) txt = "Hanche, cuisse, fesse";
|
else if (result <= 7) txt = "Hanche, cuisse, fesse";
|
||||||
else if (result <= 9) txt = "Ventre, reins";
|
else if (result <= 9) txt = "Ventre, reins";
|
||||||
@ -594,7 +594,7 @@ export class RdDUtility {
|
|||||||
} else {
|
} else {
|
||||||
if (result <= 7) txt = "Jambes/Pattes";
|
if (result <= 7) txt = "Jambes/Pattes";
|
||||||
else if (result <= 18) txt = "Corps";
|
else if (result <= 18) txt = "Corps";
|
||||||
else if (result <= 20) txt = "Tête";
|
else if (result <= 20) txt = "Tête";
|
||||||
}
|
}
|
||||||
|
|
||||||
return { result: result, label: txt };
|
return { result: result, label: txt };
|
||||||
@ -680,36 +680,36 @@ export class RdDUtility {
|
|||||||
return game.system.rdd.calendrier.requestNombreAstral(sockmsg.data);
|
return game.system.rdd.calendrier.requestNombreAstral(sockmsg.data);
|
||||||
case "msg_response_nombre_astral":
|
case "msg_response_nombre_astral":
|
||||||
return RdDUtility.responseNombreAstral(sockmsg.data);
|
return RdDUtility.responseNombreAstral(sockmsg.data);
|
||||||
case "msg_tmr_move":
|
case "msg_tmr_move":
|
||||||
if ( game.user.isGM ) {
|
if (game.user.isGM) {
|
||||||
let actor = game.actors.get( sockmsg.data.actorId);
|
let actor = game.actors.get(sockmsg.data.actorId);
|
||||||
actor.refreshTMRView( sockmsg.data.tmrPos );
|
actor.refreshTMRView(sockmsg.data.tmrPos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static processPremierRoundInit() {
|
static processPremierRoundInit() {
|
||||||
// Check if we have the whole init !
|
// Check if we have the whole init !
|
||||||
if ( game.user.isGM) {
|
if (game.user.isGM) {
|
||||||
let initDone = true;
|
let initDone = true;
|
||||||
for( let combatant of game.combat.data.combatants) {
|
for (let combatant of game.combat.data.combatants) {
|
||||||
if ( !combatant.initiative ) initDone = false;
|
if (!combatant.initiative) initDone = false;
|
||||||
}
|
}
|
||||||
if (initDone && game.combat.current.round == 1) { // Premier round !
|
if (initDone && game.combat.current.round == 1) { // Premier round !
|
||||||
for( let combatant of game.combat.data.combatants) {
|
for (let combatant of game.combat.data.combatants) {
|
||||||
let arme = combatant.initiativeData.arme;
|
let arme = combatant.initiativeData.arme;
|
||||||
//console.log("Parsed !!!", combatant, initDone, game.combat.current, arme);
|
//console.log("Parsed !!!", combatant, initDone, game.combat.current, arme);
|
||||||
if ( arme && arme.type == "arme" ) {
|
if (arme && arme.type == "arme") {
|
||||||
for (let initData of premierRoundInit) {
|
for (let initData of premierRoundInit) {
|
||||||
if ( arme.data.initpremierround.toLowerCase().includes(initData.pattern) ) {
|
if (arme.data.initpremierround.toLowerCase().includes(initData.pattern)) {
|
||||||
let msg = `<h4>L'initiative de ${combatant.actor.name} a été modifiée !</h4>
|
let msg = `<h4>L'initiative de ${combatant.actor.name} a été modifiée !</h4>
|
||||||
<hr>
|
<hr>
|
||||||
<div>
|
<div>
|
||||||
Etant donné son ${arme.name}, son initative pour ce premier round est désormais de ${initData.init}.
|
Etant donné son ${arme.name}, son initative pour ce premier round est désormais de ${initData.init}.
|
||||||
</div>`
|
</div>`
|
||||||
ChatMessage.create( { content: msg } );
|
ChatMessage.create({ content: msg });
|
||||||
game.combat.setInitiative(combatant._id, initData.init);
|
game.combat.setInitiative(combatant._id, initData.init);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -717,18 +717,18 @@ export class RdDUtility {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static rollInitiativeCompetence(combatantId, arme) {
|
static rollInitiativeCompetence(combatantId, arme) {
|
||||||
const combatant = game.combat.getCombatant(combatantId);
|
const combatant = game.combat.getCombatant(combatantId);
|
||||||
const actor = combatant.actor;
|
const actor = combatant.actor;
|
||||||
|
|
||||||
let initOffset = 0;
|
let initOffset = 0;
|
||||||
let caracForInit = 0;
|
let caracForInit = 0;
|
||||||
let compNiveau = 0;
|
let compNiveau = 0;
|
||||||
if ( actor.getSurprise() == "totale") {
|
if (actor.getSurprise() == "totale") {
|
||||||
initOffset = -1; // To force 0
|
initOffset = -1; // To force 0
|
||||||
} else if ( actor.getSurprise() == "demi") {
|
} else if (actor.getSurprise() == "demi") {
|
||||||
initOffset = 0;
|
initOffset = 0;
|
||||||
} else if (arme.name == "Autre action") {
|
} else if (arme.name == "Autre action") {
|
||||||
initOffset = 2;
|
initOffset = 2;
|
||||||
@ -738,10 +738,10 @@ export class RdDUtility {
|
|||||||
initOffset = 3; // Melée = 3.XX
|
initOffset = 3; // Melée = 3.XX
|
||||||
let competence = RdDItemCompetence.findCompetence(combatant.actor.data.items, arme.data.competence);
|
let competence = RdDItemCompetence.findCompetence(combatant.actor.data.items, arme.data.competence);
|
||||||
compNiveau = competence.data.niveau;
|
compNiveau = competence.data.niveau;
|
||||||
|
|
||||||
if (actor.data.type == 'creature' || actor.data.type == 'entite') {
|
if (actor.data.type == 'creature' || actor.data.type == 'entite') {
|
||||||
caracForInit = competence.data.carac_value;
|
caracForInit = competence.data.carac_value;
|
||||||
if ( competence.data.categorie == "lancer") {
|
if (competence.data.categorie == "lancer") {
|
||||||
initOffset = 5;
|
initOffset = 5;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -759,7 +759,7 @@ export class RdDUtility {
|
|||||||
}
|
}
|
||||||
let malus = actor.getEtatGeneral(); // Prise en compte état général
|
let malus = actor.getEtatGeneral(); // Prise en compte état général
|
||||||
// Cas des créatures et entités vs personnages
|
// Cas des créatures et entités vs personnages
|
||||||
let rollFormula = initOffset + "+ ( (" + RdDUtility.calculInitiative(compNiveau, caracForInit) + " + " + malus + ") /100)";
|
let rollFormula = initOffset + "+ ( (" + RdDUtility.calculInitiative(compNiveau, caracForInit) + " + " + malus + ") /100)";
|
||||||
// Garder la trace de l'arme/compétence utilisée pour l'iniative
|
// Garder la trace de l'arme/compétence utilisée pour l'iniative
|
||||||
combatant.initiativeData = { arme: arme } // pour reclasser l'init au round 0
|
combatant.initiativeData = { arme: arme } // pour reclasser l'init au round 0
|
||||||
game.combat.rollInitiative(combatantId, rollFormula);
|
game.combat.rollInitiative(combatantId, rollFormula);
|
||||||
@ -812,41 +812,41 @@ export class RdDUtility {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static incDecInit(combatantId, incDecValue ) {
|
static incDecInit(combatantId, incDecValue) {
|
||||||
const combatant = game.combat.getCombatant(combatantId);
|
const combatant = game.combat.getCombatant(combatantId);
|
||||||
let initValue = combatant.initiative + incDecValue;
|
let initValue = combatant.initiative + incDecValue;
|
||||||
game.combat.setInitiative( combatantId, initValue );
|
game.combat.setInitiative(combatantId, initValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static pushInitiativeOptions(html, options) {
|
static pushInitiativeOptions(html, options) {
|
||||||
for (let i =0; i<options.length; i++) {
|
for (let i = 0; i < options.length; i++) {
|
||||||
let option = options[i];
|
let option = options[i];
|
||||||
if ( option.name == 'COMBAT.CombatantReroll') { // Replace !
|
if (option.name == 'COMBAT.CombatantReroll') { // Replace !
|
||||||
option.name = "Sélectionner l'initiative...";
|
option.name = "Sélectionner l'initiative...";
|
||||||
option.condition = true;
|
option.condition = true;
|
||||||
option.icon = '<i class="far fa-question-circle"></i>';
|
option.icon = '<i class="far fa-question-circle"></i>';
|
||||||
option.callback = target => {
|
option.callback = target => {
|
||||||
RdDUtility.displayInitiativeMenu(html, target.data('combatant-id'));
|
RdDUtility.displayInitiativeMenu(html, target.data('combatant-id'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
options.push( {
|
options.push({
|
||||||
name: "Incrémenter initiative",
|
name: "Incrémenter initiative",
|
||||||
condition: true,
|
condition: true,
|
||||||
icon: '<i class="fas fa-plus"></i>',
|
icon: '<i class="fas fa-plus"></i>',
|
||||||
callback: target => {
|
callback: target => {
|
||||||
RdDUtility.incDecInit(target.data('combatant-id'), +0.01);
|
RdDUtility.incDecInit(target.data('combatant-id'), +0.01);
|
||||||
}
|
}
|
||||||
} );
|
});
|
||||||
options.push( {
|
options.push({
|
||||||
name: "Décrémenter initiative",
|
name: "Décrémenter initiative",
|
||||||
condition: true,
|
condition: true,
|
||||||
icon: '<i class="fas fa-minus"></i>',
|
icon: '<i class="fas fa-minus"></i>',
|
||||||
callback: target => {
|
callback: target => {
|
||||||
RdDUtility.incDecInit(target.data('combatant-id'), -0.01);
|
RdDUtility.incDecInit(target.data('combatant-id'), -0.01);
|
||||||
}
|
}
|
||||||
} );
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -938,96 +938,96 @@ export class RdDUtility {
|
|||||||
chatData["whisper"] = ChatMessage.getWhisperRecipients(forceWhisper);
|
chatData["whisper"] = ChatMessage.getWhisperRecipients(forceWhisper);
|
||||||
}
|
}
|
||||||
|
|
||||||
return chatData;
|
return chatData;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static confirmerSuppressionSubacteur(actorSheet, li ) {
|
static confirmerSuppressionSubacteur(actorSheet, li) {
|
||||||
let actorId = li.data("actor-id");
|
let actorId = li.data("actor-id");
|
||||||
let actor = game.actors.get( actorId );
|
let actor = game.actors.get(actorId);
|
||||||
let msgTxt = "<p>Etes vous certain de vouloir supprimer le lien vers ce véhicule/monture/suivant : " + actor.data.name +" ?</p>";
|
let msgTxt = "<p>Etes vous certain de vouloir supprimer le lien vers ce véhicule/monture/suivant : " + actor.data.name + " ?</p>";
|
||||||
let buttons = {
|
let d = new Dialog({
|
||||||
|
title: "Confirmer la suppression du lien",
|
||||||
|
content: msgTxt,
|
||||||
|
buttons: {
|
||||||
delete: {
|
delete: {
|
||||||
icon: '<i class="fas fa-check"></i>',
|
icon: '<i class="fas fa-check"></i>',
|
||||||
label: "Supprimer le lien",
|
label: "Supprimer le lien",
|
||||||
callback: () => {
|
callback: () => {
|
||||||
console.log("Delete : ", actorId);
|
console.log("Delete : ", actorId);
|
||||||
actorSheet.actor.removeSubacteur( actorId );
|
actorSheet.actor.removeSubacteur(actorId);
|
||||||
li.slideUp(200, () => actorSheet.render(false));
|
li.slideUp(200, () => actorSheet.render(false));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
cancel: {
|
cancel: {
|
||||||
icon: '<i class="fas fa-times"></i>',
|
icon: '<i class="fas fa-times"></i>',
|
||||||
label: "Annuler"
|
label: "Annuler"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
let d = new Dialog({
|
default: "cancel"
|
||||||
title: "Confirmer la suppression du lien",
|
});
|
||||||
content: msgTxt,
|
d.render(true);
|
||||||
buttons: buttons,
|
}
|
||||||
default: "cancel"
|
|
||||||
});
|
|
||||||
d.render(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async confirmerSuppression(actorSheet, li) {
|
static async confirmerSuppression(actorSheet, li) {
|
||||||
let itemId = li.data("item-id");
|
let itemId = li.data("item-id");
|
||||||
let objet = actorSheet.actor.items.find( item => item._id == itemId );
|
let objet = actorSheet.actor.items.find(item => item._id == itemId);
|
||||||
let msgTxt = "<p>Etes vous certain de vouloir supprimer cet objet ?";
|
let msgTxt = "<p>Etes vous certain de vouloir supprimer cet objet ?";
|
||||||
let buttons = { delete: {
|
let buttons = {
|
||||||
icon: '<i class="fas fa-check"></i>',
|
delete: {
|
||||||
label: "Supprimer l'objet",
|
icon: '<i class="fas fa-check"></i>',
|
||||||
callback: () => {
|
label: "Supprimer l'objet",
|
||||||
console.log("Delete : ", itemId);
|
callback: () => {
|
||||||
actorSheet.actor.deleteOwnedItem( itemId );
|
console.log("Delete : ", itemId);
|
||||||
li.slideUp(200, () => actorSheet.render(false));
|
actorSheet.actor.deleteOwnedItem(itemId);
|
||||||
}
|
li.slideUp(200, () => actorSheet.render(false));
|
||||||
},
|
}
|
||||||
cancel: {
|
},
|
||||||
icon: '<i class="fas fa-times"></i>',
|
cancel: {
|
||||||
label: "Annuler"
|
icon: '<i class="fas fa-times"></i>',
|
||||||
}
|
label: "Annuler"
|
||||||
}
|
|
||||||
if ( objet.data.type == 'conteneur' && objet.data.data.contenu.length > 0) {
|
|
||||||
msgTxt += "<br>Cet objet est aussi un conteneur avec du contenu : choisissez l'option de suppression";
|
|
||||||
buttons['deleteall'] = {
|
|
||||||
icon: '<i class="fas fa-check"></i>',
|
|
||||||
label: "Supprimer le conteneur et tout son contenu",
|
|
||||||
callback: () => {
|
|
||||||
console.log("Delete : ", itemId);
|
|
||||||
actorSheet.actor.deleteAllConteneur( itemId );
|
|
||||||
li.slideUp(200, () => actorSheet.render(false));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
msgTxt += "</p>";
|
}
|
||||||
let d = new Dialog({
|
if (objet.data.type == 'conteneur' && objet.data.data.contenu.length > 0) {
|
||||||
title: "Confirmer la suppression",
|
msgTxt += "<br>Cet objet est aussi un conteneur avec du contenu : choisissez l'option de suppression";
|
||||||
content: msgTxt,
|
buttons['deleteall'] = {
|
||||||
buttons: buttons,
|
icon: '<i class="fas fa-check"></i>',
|
||||||
default: "cancel"
|
label: "Supprimer le conteneur et tout son contenu",
|
||||||
});
|
callback: () => {
|
||||||
d.render(true);
|
console.log("Delete : ", itemId);
|
||||||
|
actorSheet.actor.deleteAllConteneur(itemId);
|
||||||
|
li.slideUp(200, () => actorSheet.render(false));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
msgTxt += "</p>";
|
||||||
|
let d = new Dialog({
|
||||||
|
title: "Confirmer la suppression",
|
||||||
|
content: msgTxt,
|
||||||
|
buttons: buttons,
|
||||||
|
default: "cancel"
|
||||||
|
});
|
||||||
|
d.render(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static afficherHeuresChanceMalchance( heureNaissance ) {
|
static afficherHeuresChanceMalchance(heureNaissance) {
|
||||||
if (heureNaissance) {
|
if (heureNaissance) {
|
||||||
let ajustement = game.system.rdd.calendrier.getAjustementAstrologique(heureNaissance);
|
let ajustement = game.system.rdd.calendrier.getAjustementAstrologique(heureNaissance);
|
||||||
ChatMessage.create( {
|
ChatMessage.create({
|
||||||
content: `A l'heure ${game.system.rdd.calendrier.getCurrentHeure()}, le modificateur de Chance/Malchance pour l'heure de naissance ${heureNaissance} est de : ${ajustement}.`,
|
content: `A l'heure ${game.system.rdd.calendrier.getCurrentHeure()}, le modificateur de Chance/Malchance pour l'heure de naissance ${heureNaissance} est de : ${ajustement}.`,
|
||||||
whisper: ChatMessage.getWhisperRecipients("MJ")
|
whisper: ChatMessage.getWhisperRecipients("MJ")
|
||||||
} );
|
});
|
||||||
}
|
}
|
||||||
else{
|
else {
|
||||||
ui.notifications.warn("Pas d'heure de naissance selectionnée")
|
ui.notifications.warn("Pas d'heure de naissance selectionnée")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------------------------- */
|
/*-------------------------------------------- */
|
||||||
static checkThanatosXP(compName) {
|
static checkThanatosXP(compName) {
|
||||||
if ( compName.includes('Thanatos') ) {
|
if (compName.includes('Thanatos')) {
|
||||||
let message = "Vous avez mis des points d'Expérience dans la Voie de Thanatos !<br>Vous devez réduire manuellement d'un même montant d'XP une autre compétence Draconique.";
|
let message = "Vous avez mis des points d'Expérience dans la Voie de Thanatos !<br>Vous devez réduire manuellement d'un même montant d'XP une autre compétence Draconique.";
|
||||||
ChatMessage.create({
|
ChatMessage.create({
|
||||||
whisper: ChatMessage.getWhisperRecipients(game.user.name),
|
whisper: ChatMessage.getWhisperRecipients(game.user.name),
|
||||||
@ -1037,7 +1037,7 @@ export class RdDUtility {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------------------------- */
|
/*-------------------------------------------- */
|
||||||
static async onRenderChatMessage( app, html, msg ) {
|
static async onRenderChatMessage(app, html, msg) {
|
||||||
// TODO
|
// TODO
|
||||||
//console.log(app, html, msg);
|
//console.log(app, html, msg);
|
||||||
}
|
}
|
||||||
|
@ -272,11 +272,12 @@ const rencontresStandard = [
|
|||||||
{ code: "rdd", name: "Rêve de Dragon", type: "rdd", genre: "m", force: "1ddr + 7", refoulement: 2, quitterTMR: true }
|
{ code: "rdd", name: "Rêve de Dragon", type: "rdd", genre: "m", force: "1ddr + 7", refoulement: 2, quitterTMR: true }
|
||||||
];
|
];
|
||||||
|
|
||||||
const presentsCite = [
|
const rencontresPresentCite = [
|
||||||
{ code: "messager2d6", name: "Messager des Rêves", type: "messager", genre: "m", force: "2d6", ignorer: true },
|
{ code: "messager2d6", name: "Messager des Rêves", type: "messager", genre: "m", force: "2d6", ignorer: true },
|
||||||
{ code: "passeur2d6", name: "Passeur des Rêves", type: "passeur", genre: "m", force: "2d6", ignorer: true },
|
{ code: "passeur2d6", name: "Passeur des Rêves", type: "passeur", genre: "m", force: "2d6", ignorer: true },
|
||||||
{ code: "fleur2d6", name: "Fleur des Rêves", type: "fleur", genre: "f", force: "2d6", ignorer: true }
|
{ code: "fleur2d6", name: "Fleur des Rêves", type: "fleur", genre: "f", force: "2d6", ignorer: true }
|
||||||
]
|
]
|
||||||
|
const rencontresAll = [].concat(rencontresStandard).concat(mauvaisesRencontres).concat(rencontresPresentCite);
|
||||||
|
|
||||||
const tableRencontres = {
|
const tableRencontres = {
|
||||||
cite: [{ code: 'messager', range: [1, 25] }, { code: 'passeur', range: [26, 50] }, { code: 'fleur', range: [51, 65] }, { code: 'mangeur', range: [66, 70] }, { code: 'changeur', range: [71, 80] }, { code: 'briseur', range: [81, 85] }, { code: 'reflet', range: [86, 90] }, { code: 'tbblanc', range: [91, 94] }, { code: 'tbnoir', range: [95, 97] }, { code: 'rdd', range: [98, 100] }],
|
cite: [{ code: 'messager', range: [1, 25] }, { code: 'passeur', range: [26, 50] }, { code: 'fleur', range: [51, 65] }, { code: 'mangeur', range: [66, 70] }, { code: 'changeur', range: [71, 80] }, { code: 'briseur', range: [81, 85] }, { code: 'reflet', range: [86, 90] }, { code: 'tbblanc', range: [91, 94] }, { code: 'tbnoir', range: [95, 97] }, { code: 'rdd', range: [98, 100] }],
|
||||||
@ -339,22 +340,17 @@ export class TMRRencontres {
|
|||||||
static getRencontre(index) {
|
static getRencontre(index) {
|
||||||
let rencontre;
|
let rencontre;
|
||||||
if (isNaN(index)) {
|
if (isNaN(index)) {
|
||||||
rencontre = rencontresStandard.find(r => r.type == index)
|
rencontre = rencontresAll.find(r => r.type == index) ?? rencontresAll.find(r => r.code == index)
|
||||||
if (!rencontre) {
|
|
||||||
rencontre = mauvaisesRencontres.find(r => r.type == index)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else if (0 <= index && index < rencontresAll.length) {
|
||||||
if (0 <= index && index < rencontresStandard.length) {
|
rencontre = rencontresAll[index];
|
||||||
rencontre = rencontresStandard[index];
|
|
||||||
}
|
|
||||||
else if (rencontresStandard.length <= index && index < rencontresStandard.length + mauvaisesRencontres.length) {
|
|
||||||
rencontre = mauvaisesRencontres[index - rencontresStandard.length];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (rencontre) {
|
if (rencontre) {
|
||||||
return duplicate(rencontre);
|
return duplicate(rencontre);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
ui.notifications.info(`Pas de rencontre pour ${index}, seulement ${rencontresAll.length} rencontres sont connues.<br>Vous pouvez aussi essayer par type (ie: mangeur, fleur, fleur2d6, ...)`)
|
||||||
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -375,7 +371,7 @@ export class TMRRencontres {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async getMauvaiseRencontre(index = undefined) {
|
static async getMauvaiseRencontre(index = undefined) {
|
||||||
const rencontre = duplicate(
|
const rencontre = duplicate(
|
||||||
(index && index>=0 && index < mauvaisesRencontres.length)
|
(index && index >= 0 && index < mauvaisesRencontres.length)
|
||||||
? mauvaisesRencontres[index]
|
? mauvaisesRencontres[index]
|
||||||
: Misc.rollOneOf(mauvaisesRencontres));
|
: Misc.rollOneOf(mauvaisesRencontres));
|
||||||
await TMRRencontres.evaluerForceRencontre(rencontre);
|
await TMRRencontres.evaluerForceRencontre(rencontre);
|
||||||
|
@ -274,7 +274,15 @@ export const tmrColors = {
|
|||||||
rencontre: 0xFF0000,
|
rencontre: 0xFF0000,
|
||||||
casehumide: 0x1050F0,
|
casehumide: 0x1050F0,
|
||||||
}
|
}
|
||||||
|
export const tmrTokenZIndex = {
|
||||||
|
sort: 40,
|
||||||
|
tetes: 20,
|
||||||
|
casehumide: 10,
|
||||||
|
conquete: 30,
|
||||||
|
rencontre: 50,
|
||||||
|
trounoir: 60,
|
||||||
|
demireve: 70,
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
|
||||||
@ -339,7 +347,7 @@ export class TMRUtility {
|
|||||||
this.prochaineRencontre.force = force;
|
this.prochaineRencontre.force = force;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
await TMRRencontres.evaluerForceRencontre(this.prochaineRencontre)
|
await TMRRencontres.evaluerForceRencontre(this.prochaineRencontre);
|
||||||
}
|
}
|
||||||
console.log("La prochaine rencontre sera:", this.prochaineRencontre.name, " force:", this.prochaineRencontre.force);
|
console.log("La prochaine rencontre sera:", this.prochaineRencontre.name, " force:", this.prochaineRencontre.force);
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ export class CarteTmr extends Draconique {
|
|||||||
code() { return 'tmr' }
|
code() { return 'tmr' }
|
||||||
img() { return 'systems/foundryvtt-reve-de-dragon/styles/img/ui/tmp_main_r1.webp' }
|
img() { return 'systems/foundryvtt-reve-de-dragon/styles/img/ui/tmp_main_r1.webp' }
|
||||||
|
|
||||||
_createSprite(pixiTMR) {
|
createSprite(pixiTMR) {
|
||||||
return pixiTMR.carteTmr(this.code());
|
return pixiTMR.carteTmr(this.code());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
|
import { Grammar } from "../grammar.js";
|
||||||
import { Misc } from "../misc.js";
|
import { Misc } from "../misc.js";
|
||||||
import { tmrColors, tmrConstants, TMRUtility } from "../tmr-utility.js";
|
import { tmrColors, tmrConstants, tmrTokenZIndex, TMRUtility } from "../tmr-utility.js";
|
||||||
import { Draconique } from "./draconique.js";
|
import { Draconique } from "./draconique.js";
|
||||||
|
|
||||||
export class Conquete extends Draconique {
|
export class Conquete extends Draconique {
|
||||||
@ -9,7 +10,7 @@ export class Conquete extends Draconique {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type() { return 'queue' }
|
type() { return 'queue' }
|
||||||
match(item) { return Draconique.isQueueDragon(item) && item.name.toLowerCase() == 'conquête'; }
|
match(item) { return Draconique.isQueueDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('conquete'); }
|
||||||
manualMessage() { return false }
|
manualMessage() { return false }
|
||||||
async onActorCreateOwned(actor, item) { await this._creerConquete(actor, item); }
|
async onActorCreateOwned(actor, item) { await this._creerConquete(actor, item); }
|
||||||
|
|
||||||
@ -17,10 +18,13 @@ export class Conquete extends Draconique {
|
|||||||
tooltip(linkData) { return `La ${this.tmrLabel(linkData)} doit être conquise` }
|
tooltip(linkData) { return `La ${this.tmrLabel(linkData)} doit être conquise` }
|
||||||
img() { return 'icons/svg/combat.svg' }
|
img() { return 'icons/svg/combat.svg' }
|
||||||
|
|
||||||
_createSprite(pixiTMR) {
|
createSprite(pixiTMR) {
|
||||||
return pixiTMR.sprite(this.code(),
|
return pixiTMR.sprite(this.code(),
|
||||||
{
|
{
|
||||||
color: tmrColors.queues, taille: tmrConstants.full, decallage: { x: 2, y: 0 }
|
zIndex: tmrTokenZIndex.conquete,
|
||||||
|
color: tmrColors.queues,
|
||||||
|
taille: tmrConstants.full,
|
||||||
|
decallage: { x: 2, y: 0 }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,11 +35,11 @@ export class Conquete extends Draconique {
|
|||||||
await this.createCaseTmr(actor, 'Conquête: ' + conquete.label, conquete, queue._id);
|
await this.createCaseTmr(actor, 'Conquête: ' + conquete.label, conquete, queue._id);
|
||||||
}
|
}
|
||||||
|
|
||||||
async onConquete(actor, coord) {
|
async onConquete(actor, tmr, onRemoveToken) {
|
||||||
let existants = actor.data.items.filter(it => this.isCase(it, coord));
|
let existants = actor.data.items.filter(it => this.isCase(it, tmr.coord));
|
||||||
for (let casetmr of existants) {
|
for (let casetmr of existants) {
|
||||||
await actor.deleteOwnedItem(casetmr._id);
|
|
||||||
await actor.deleteOwnedItem(casetmr.data.sourceid);
|
await actor.deleteOwnedItem(casetmr.data.sourceid);
|
||||||
|
onRemoveToken(tmr, casetmr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { tmrColors, tmrConstants, TMRUtility } from "../tmr-utility.js";
|
import { Grammar } from "../grammar.js";
|
||||||
|
import { tmrColors, tmrConstants, tmrTokenZIndex, TMRUtility } from "../tmr-utility.js";
|
||||||
import { Draconique } from "./draconique.js";
|
import { Draconique } from "./draconique.js";
|
||||||
|
|
||||||
export class Debordement extends Draconique {
|
export class Debordement extends Draconique {
|
||||||
@ -8,24 +9,25 @@ export class Debordement extends Draconique {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type() { return 'souffle' }
|
type() { return 'souffle' }
|
||||||
match(item) { return Draconique.isSouffleDragon(item) && item.name.toLowerCase().includes('trou noir'); }
|
match(item) { return Draconique.isSouffleDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('debordement'); }
|
||||||
manualMessage() { return false }
|
manualMessage() { return false }
|
||||||
async onActorCreateOwned(actor, item) { await this._creerCaseTmr(actor); }
|
async onActorCreateOwned(actor, souffle) {
|
||||||
|
const existants = actor.data.items.filter(it => this.isCase(it)).map(it => it.data.coord);
|
||||||
|
const tmr = TMRUtility.getTMRAleatoire(it => !(TMRUtility.isCaseHumide(it) || existants.includes(it.coord)));
|
||||||
|
await this.createCaseTmr(actor, 'Debordement: ' + tmr.label, tmr, souffle._id);
|
||||||
|
}
|
||||||
|
|
||||||
code() { return 'debordement' }
|
code() { return 'debordement' }
|
||||||
tooltip(linkData) { return `Débordement en ${this.tmrLabel(linkData)}` }
|
tooltip(linkData) { return `Débordement en ${this.tmrLabel(linkData)}` }
|
||||||
img() { return 'systems/foundryvtt-reve-de-dragon/icons/svg/wave.svg' }
|
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/wave.svg' }
|
||||||
|
|
||||||
_createSprite(pixiTMR) {
|
createSprite(pixiTMR) {
|
||||||
return pixiTMR.sprite(this.code(),
|
return pixiTMR.sprite(this.code(), {
|
||||||
{
|
color: tmrColors.casehumide,
|
||||||
color: tmrColors.casehumide, alpha: 0.5, taille: tmrConstants.twoThird, decallage: tmrConstants.bottom
|
zIndex: tmrTokenZIndex.casehumide,
|
||||||
});
|
taille: tmrConstants.twoThird,
|
||||||
|
decallage: tmrConstants.bottom
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async _creerCaseTmr(actor) {
|
|
||||||
const existants = actor.data.items.filter(it => this.isCase(it)).map(it => it.data.coord);
|
|
||||||
const tmr = TMRUtility.getTMRAleatoire(it => !(TMRUtility.isCaseHumide(it) || existants.includes(it.coord)));
|
|
||||||
await this.createCaseTmr(actor, 'Debordement: ' + tmr.label, tmr);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { tmrColors, tmrConstants } from "../tmr-utility.js";
|
import { tmrColors, tmrConstants, tmrTokenZIndex } from "../tmr-utility.js";
|
||||||
import { Draconique } from "./draconique.js";
|
import { Draconique } from "./draconique.js";
|
||||||
|
|
||||||
export class DemiReve extends Draconique {
|
export class DemiReve extends Draconique {
|
||||||
@ -13,12 +13,13 @@ export class DemiReve extends Draconique {
|
|||||||
async onActorCreateOwned(actor, item) { }
|
async onActorCreateOwned(actor, item) { }
|
||||||
|
|
||||||
code() { return 'demi-reve' }
|
code() { return 'demi-reve' }
|
||||||
tooltip(linkData) { return `Demi-rêve` }
|
tooltip(actor) { return `Demi-rêve ${actor.name}` }
|
||||||
img() { return 'icons/svg/sun.svg' }
|
img() { return 'icons/svg/sun.svg' }
|
||||||
|
|
||||||
_createSprite(pixiTMR) {
|
createSprite(pixiTMR) {
|
||||||
const sprite = pixiTMR.sprite(this.code(), {
|
const sprite = pixiTMR.sprite(this.code(), {
|
||||||
color: tmrColors.demireve,
|
color: tmrColors.demireve,
|
||||||
|
zIndex: tmrTokenZIndex.demireve,
|
||||||
taille: (tmrConstants.full * 0.7)
|
taille: (tmrConstants.full * 0.7)
|
||||||
});
|
});
|
||||||
pixiTMR.animate(pixiApp => pixiApp.ticker.add((delta) => sprite.rotation -= 0.01 * delta));
|
pixiTMR.animate(pixiApp => pixiApp.ticker.add((delta) => sprite.rotation -= 0.01 * delta));
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
|
import { Grammar } from "../grammar.js";
|
||||||
import { Misc } from "../misc.js";
|
import { Misc } from "../misc.js";
|
||||||
import { RollDataAjustements } from "../rolldata-ajustements.js";
|
import { tmrColors, tmrConstants, tmrTokenZIndex, TMRType, TMRUtility } from "../tmr-utility.js";
|
||||||
import { tmrColors, tmrConstants, TMRType, TMRUtility } from "../tmr-utility.js";
|
|
||||||
import { Debordement } from "./debordement.js";
|
|
||||||
import { Draconique } from "./draconique.js";
|
import { Draconique } from "./draconique.js";
|
||||||
|
|
||||||
export class Desorientation extends Draconique {
|
export class Desorientation extends Draconique {
|
||||||
@ -10,7 +9,7 @@ export class Desorientation extends Draconique {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type() { return 'souffle' }
|
type() { return 'souffle' }
|
||||||
match(item) { return Draconique.isSouffleDragon(item) && item.name.toLowerCase().includes('désorientation'); }
|
match(item) { return Draconique.isSouffleDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('desorientation'); }
|
||||||
manualMessage() { return false }
|
manualMessage() { return false }
|
||||||
|
|
||||||
async onActorCreateOwned(actor, souffle) {
|
async onActorCreateOwned(actor, souffle) {
|
||||||
@ -33,10 +32,14 @@ export class Desorientation extends Draconique {
|
|||||||
tooltip(linkData) { return `Désorientation, cette case n'existe plus !` }
|
tooltip(linkData) { return `Désorientation, cette case n'existe plus !` }
|
||||||
img() { return 'icons/svg/explosion.svg' }
|
img() { return 'icons/svg/explosion.svg' }
|
||||||
|
|
||||||
_createSprite(pixiTMR) {
|
createSprite(pixiTMR) {
|
||||||
return pixiTMR.sprite(this.code(),
|
return pixiTMR.sprite(this.code(),
|
||||||
{
|
{
|
||||||
color: tmrColors.trounoir, alpha: 1, taille: tmrConstants.full, decallage: { x: 2, y: 2 },
|
zIndex: tmrTokenZIndex.trounoir,
|
||||||
|
color: tmrColors.trounoir,
|
||||||
|
alpha: 1,
|
||||||
|
taille: tmrConstants.full,
|
||||||
|
decallage: { x: 2, y: 2 },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +54,12 @@ export class Draconique
|
|||||||
async onActorCreateOwned(actor, item) {
|
async onActorCreateOwned(actor, item) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
async onActorDeleteOwned(actor, item) {
|
async onActorDeleteOwned(actor, item) {
|
||||||
|
let caseTmrs = actor.data.items.filter(it => this.isCase(it) && it.data.sourceid == item._id);
|
||||||
|
for (let casetmr of caseTmrs) {
|
||||||
|
await actor.deleteOwnedItem(casetmr._id);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@ -80,7 +85,7 @@ export class Draconique
|
|||||||
*/
|
*/
|
||||||
token(pixiTMR, linkData, coordTMR, type = undefined) {
|
token(pixiTMR, linkData, coordTMR, type = undefined) {
|
||||||
const token = {
|
const token = {
|
||||||
sprite: this._createSprite(pixiTMR),
|
sprite: this.createSprite(pixiTMR),
|
||||||
coordTMR: coordTMR
|
coordTMR: coordTMR
|
||||||
};
|
};
|
||||||
token[type ?? this.code()] = linkData;
|
token[type ?? this.code()] = linkData;
|
||||||
@ -93,7 +98,7 @@ export class Draconique
|
|||||||
* factory d'élément graphique PIXI correpsondant à l'objet draconique
|
* factory d'élément graphique PIXI correpsondant à l'objet draconique
|
||||||
* @param {*} pixiTMR instance de PixiTMR qui gère les tooltips, les méthodes de création de sprite standard, les clicks.
|
* @param {*} pixiTMR instance de PixiTMR qui gère les tooltips, les méthodes de création de sprite standard, les clicks.
|
||||||
*/
|
*/
|
||||||
_createSprite(pixiTMR) {
|
createSprite(pixiTMR) {
|
||||||
if (this.img()) {
|
if (this.img()) {
|
||||||
return pixiTMR.sprite(this.code());
|
return pixiTMR.sprite(this.code());
|
||||||
}
|
}
|
||||||
@ -115,7 +120,6 @@ export class Draconique
|
|||||||
return list.find(c => this.isCase(c, coord));
|
return list.find(c => this.isCase(c, coord));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async createCaseTmr(actor, label, tmr, sourceId=undefined) {
|
async createCaseTmr(actor, label, tmr, sourceId=undefined) {
|
||||||
await actor.createOwnedItem({
|
await actor.createOwnedItem({
|
||||||
name: label, type: 'casetmr', img: this.img(), _id: randomID(16),
|
name: label, type: 'casetmr', img: this.img(), _id: randomID(16),
|
||||||
|
@ -13,7 +13,7 @@ import { Draconique } from "./draconique.js";
|
|||||||
import { PresentCites } from "./present-cites.js";
|
import { PresentCites } from "./present-cites.js";
|
||||||
import { Desorientation } from "./desorientation.js";
|
import { Desorientation } from "./desorientation.js";
|
||||||
import { Conquete } from "./conquete.js";
|
import { Conquete } from "./conquete.js";
|
||||||
|
import { Pelerinage } from "./pelerinage.js";
|
||||||
|
|
||||||
|
|
||||||
export class EffetsDraconiques {
|
export class EffetsDraconiques {
|
||||||
@ -31,6 +31,7 @@ export class EffetsDraconiques {
|
|||||||
static pontImpraticable = new PontImpraticable();
|
static pontImpraticable = new PontImpraticable();
|
||||||
static desorientation = new Desorientation();
|
static desorientation = new Desorientation();
|
||||||
static conquete = new Conquete();
|
static conquete = new Conquete();
|
||||||
|
static pelerinage = new Pelerinage();
|
||||||
|
|
||||||
static init() {
|
static init() {
|
||||||
Draconique.register(EffetsDraconiques.carteTmr);
|
Draconique.register(EffetsDraconiques.carteTmr);
|
||||||
@ -47,6 +48,7 @@ export class EffetsDraconiques {
|
|||||||
Draconique.register(EffetsDraconiques.presentCites);
|
Draconique.register(EffetsDraconiques.presentCites);
|
||||||
Draconique.register(EffetsDraconiques.desorientation);
|
Draconique.register(EffetsDraconiques.desorientation);
|
||||||
Draconique.register(EffetsDraconiques.conquete);
|
Draconique.register(EffetsDraconiques.conquete);
|
||||||
|
Draconique.register(EffetsDraconiques.pelerinage);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -59,10 +61,15 @@ export class EffetsDraconiques {
|
|||||||
return EffetsDraconiques.trouNoir.isCase(caseTMR, coord) ||
|
return EffetsDraconiques.trouNoir.isCase(caseTMR, coord) ||
|
||||||
EffetsDraconiques.desorientation.isCase(caseTMR, coord);
|
EffetsDraconiques.desorientation.isCase(caseTMR, coord);
|
||||||
}
|
}
|
||||||
|
|
||||||
static isCaseTrouNoir(caseTMR, coord) {
|
static isCaseTrouNoir(caseTMR, coord) {
|
||||||
return EffetsDraconiques.trouNoir.isCase(caseTMR, coord);
|
return EffetsDraconiques.trouNoir.isCase(caseTMR, coord);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static isCasePelerinage(caseTMR, coord) {
|
||||||
|
return EffetsDraconiques.pelerinage.isCase(caseTMR, coord);
|
||||||
|
}
|
||||||
|
|
||||||
static isReserveExtensible(caseTMR, coord) {
|
static isReserveExtensible(caseTMR, coord) {
|
||||||
return EffetsDraconiques.reserveExtensible.isCase(caseTMR, coord);
|
return EffetsDraconiques.reserveExtensible.isCase(caseTMR, coord);
|
||||||
}
|
}
|
||||||
@ -114,12 +121,16 @@ export class EffetsDraconiques {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
static isSortImpossible(element) {
|
||||||
|
return EffetsDraconiques.isMatching(element, it => EffetsDraconiques.conquete.match(it) || EffetsDraconiques.pelerinage.match(it));
|
||||||
|
}
|
||||||
|
|
||||||
static isConquete(element) {
|
static isConquete(element) {
|
||||||
return EffetsDraconiques.isMatching(element, it => EffetsDraconiques.conquete.match(it));
|
return EffetsDraconiques.isMatching(element, it => EffetsDraconiques.conquete.match(it));
|
||||||
}
|
}
|
||||||
|
|
||||||
static isPelerinage(element) {
|
static isPelerinage(element) {
|
||||||
return EffetsDraconiques.isMatching(element, it => Draconique.isQueueDragon(it) && it.name.toLowerCase() == 'pélerinage');
|
return EffetsDraconiques.isMatching(element, it => EffetsDraconiques.pelerinage.match(it));
|
||||||
}
|
}
|
||||||
|
|
||||||
static countInertieDraconique(element) {
|
static countInertieDraconique(element) {
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { tmrColors, tmrConstants, TMRUtility } from "../tmr-utility.js";
|
import { Grammar } from "../grammar.js";
|
||||||
|
import { tmrColors, tmrConstants, tmrTokenZIndex, TMRUtility } from "../tmr-utility.js";
|
||||||
import { Draconique } from "./draconique.js";
|
import { Draconique } from "./draconique.js";
|
||||||
|
|
||||||
export class FermetureCites extends Draconique {
|
export class FermetureCites extends Draconique {
|
||||||
@ -8,32 +9,37 @@ export class FermetureCites extends Draconique {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type() { return 'souffle' }
|
type() { return 'souffle' }
|
||||||
match(item) { return Draconique.isSouffleDragon(item) && item.name.toLowerCase() == 'fermeture des cités'; }
|
match(item) { return Draconique.isSouffleDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('fermeture des cites'); }
|
||||||
manualMessage() { return false }
|
manualMessage() { return false }
|
||||||
async onActorCreateOwned(actor, item) { await this._fermerLesCites(actor); }
|
async onActorCreateOwned(actor, souffle) { await this._fermerLesCites(actor, souffle); }
|
||||||
|
|
||||||
code() { return 'fermeture' }
|
code() { return 'fermeture' }
|
||||||
tooltip(linkData) { return `La ${this.tmrLabel(linkData)} est fermée` }
|
tooltip(linkData) { return `La ${this.tmrLabel(linkData)} est fermée` }
|
||||||
img() { return 'icons/svg/door-closed.svg' }
|
img() { return 'icons/svg/door-closed.svg' }
|
||||||
|
|
||||||
_createSprite(pixiTMR) {
|
createSprite(pixiTMR) {
|
||||||
return pixiTMR.sprite(this.code(),
|
return pixiTMR.sprite(this.code(),
|
||||||
{
|
{
|
||||||
color: tmrColors.souffle, alpha: 0.9, taille: tmrConstants.full, decallage: { x: 2, y: 0 }
|
zIndex: tmrTokenZIndex.conquete,
|
||||||
|
color: tmrColors.souffle,
|
||||||
|
alpha: 0.9,
|
||||||
|
taille: tmrConstants.full,
|
||||||
|
decallage: { x: 2, y: 0 }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async _fermerLesCites(actor) {
|
async _fermerLesCites(actor, souffle) {
|
||||||
let existants = actor.data.items.filter(it => this.isCase(it)).map(it => it.data.coord);
|
let existants = actor.data.items.filter(it => this.isCase(it)).map(it => it.data.coord);
|
||||||
let ouvertes = TMRUtility.filterTMR(it => it.type == 'cite' && !existants.includes(it.coord));
|
let ouvertes = TMRUtility.filterTMR(it => it.type == 'cite' && !existants.includes(it.coord));
|
||||||
for (let tmr of ouvertes) {
|
for (let tmr of ouvertes) {
|
||||||
await this.createCaseTmr(actor, 'Fermeture: ' + tmr.label, tmr);
|
await this.createCaseTmr(actor, 'Fermeture: ' + tmr.label, tmr, souffle._id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async onConquete(actor, coord) {
|
async onConquete(actor, tmr, onRemoveToken) {
|
||||||
const citeFermee = actor.data.items.find(it => this.isCase(it, coord));
|
const citeFermee = actor.data.items.find(it => this.isCase(it, tmr.coord));
|
||||||
await this.actor.deleteOwnedItem(citeFermee._id);
|
await actor.deleteOwnedItem(citeFermee._id);
|
||||||
|
onRemoveToken(tmr, citeFermee);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
42
module/tmr/pelerinage.js
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
import { Grammar } from "../grammar.js";
|
||||||
|
import { tmrConstants, tmrTokenZIndex, TMRUtility } from "../tmr-utility.js";
|
||||||
|
import { Draconique } from "./draconique.js";
|
||||||
|
|
||||||
|
export class Pelerinage extends Draconique {
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
type() { return 'queue' }
|
||||||
|
match(item) { return Draconique.isQueueDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('pelerinage'); }
|
||||||
|
manualMessage() { return false }
|
||||||
|
|
||||||
|
async onActorCreateOwned(actor, queue) {
|
||||||
|
let tmr = TMRUtility.getTMRAleatoire();
|
||||||
|
await this.createCaseTmr(actor, 'Pèlerinage: ' + tmr.label, tmr, queue._id);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
code() { return 'pelerinage' }
|
||||||
|
tooltip(linkData) { return `Votre pèlerinage en ${this.tmrLabel(linkData)}` }
|
||||||
|
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/pelerin.svg' }
|
||||||
|
|
||||||
|
createSprite(pixiTMR) {
|
||||||
|
return pixiTMR.sprite(this.code(), {
|
||||||
|
zIndex: tmrTokenZIndex.conquete,
|
||||||
|
alpha: 1,
|
||||||
|
taille: tmrConstants.twoThird,
|
||||||
|
decallage: tmrConstants.right
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async onFinPelerinage(actor, tmr, onRemoveToken) {
|
||||||
|
const pelerinages = actor.data.items.filter(it => this.isCase(it, tmr.coord));
|
||||||
|
for (let p of pelerinages){
|
||||||
|
await actor.deleteOwnedItem(p.data.sourceid);
|
||||||
|
onRemoveToken(tmr, p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
import { tmrConstants } from "../tmr-utility.js";
|
import { tmrConstants, tmrTokenZIndex } from "../tmr-utility.js";
|
||||||
|
|
||||||
const tooltipStyle = new PIXI.TextStyle({
|
const tooltipStyle = new PIXI.TextStyle({
|
||||||
fontFamily: 'CaslonAntique',
|
fontFamily: 'CaslonAntique',
|
||||||
@ -16,6 +16,7 @@ export class PixiTMR {
|
|||||||
constructor(tmrObject, pixiApp) {
|
constructor(tmrObject, pixiApp) {
|
||||||
this.tmrObject = tmrObject;
|
this.tmrObject = tmrObject;
|
||||||
this.pixiApp = pixiApp ?? tmrObject.pixiApp;
|
this.pixiApp = pixiApp ?? tmrObject.pixiApp;
|
||||||
|
this.pixiApp.stage.sortableChildren = true;
|
||||||
this.callbacksOnAnimate = [];
|
this.callbacksOnAnimate = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,7 +77,10 @@ export class PixiTMR {
|
|||||||
sprite.width = options.taille ?? tmrConstants.half;
|
sprite.width = options.taille ?? tmrConstants.half;
|
||||||
sprite.height = options.taille ?? tmrConstants.half;
|
sprite.height = options.taille ?? tmrConstants.half;
|
||||||
sprite.anchor.set(0.5);
|
sprite.anchor.set(0.5);
|
||||||
sprite.tint = options.color ?? 0x000000;
|
if (options.color) {
|
||||||
|
sprite.tint = options.color;
|
||||||
|
}
|
||||||
|
sprite.zIndex = options.zIndex ?? tmrTokenZIndex.casehumide+1;
|
||||||
sprite.alpha = options.alpha ?? 0.75;
|
sprite.alpha = options.alpha ?? 0.75;
|
||||||
sprite.decallage = options.decallage ?? tmrConstants.center;
|
sprite.decallage = options.decallage ?? tmrConstants.center;
|
||||||
this.pixiApp.stage.addChild(sprite);
|
this.pixiApp.stage.addChild(sprite);
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { tmrColors, tmrConstants, TMRUtility } from "../tmr-utility.js";
|
import { Grammar } from "../grammar.js";
|
||||||
|
import { tmrColors, tmrConstants, tmrTokenZIndex, TMRUtility } from "../tmr-utility.js";
|
||||||
import { Draconique } from "./draconique.js";
|
import { Draconique } from "./draconique.js";
|
||||||
|
|
||||||
export class PontImpraticable extends Draconique {
|
export class PontImpraticable extends Draconique {
|
||||||
@ -8,33 +9,31 @@ export class PontImpraticable extends Draconique {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type() { return 'souffle' }
|
type() { return 'souffle' }
|
||||||
match(item) { return Draconique.isSouffleDragon(item) && item.name.toLowerCase().includes('impraticabilité des ponts'); }
|
match(item) { return Draconique.isSouffleDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('impraticabilite des ponts'); }
|
||||||
|
|
||||||
async onActorCreateOwned(actor, item) { await this._creerCaseTmr(actor); }
|
async onActorCreateOwned(actor, souffle) {
|
||||||
async onActorDeleteOwned(actor, item) { await this._supprimerCaseTmr(actor); }
|
const ponts = TMRUtility.getListTMR('pont');
|
||||||
|
for (let tmr of ponts) {
|
||||||
|
await this.createCaseTmr(actor, 'Pont impraticable: ' + tmr.label, tmr, souffle._id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
code() { return 'pont-impraticable' }
|
code() { return 'pont-impraticable' }
|
||||||
tooltip(linkData) { return `${this.tmrLabel(linkData)} impraticable` }
|
tooltip(linkData) { return `${this.tmrLabel(linkData)} impraticable` }
|
||||||
img() { return 'systems/foundryvtt-reve-de-dragon/icons/svg/wave.svg' }
|
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/wave.svg' }
|
||||||
|
|
||||||
_createSprite(pixiTMR) {
|
createSprite(pixiTMR) {
|
||||||
return pixiTMR.sprite(this.code(),
|
return pixiTMR.sprite(this.code(),
|
||||||
{
|
{
|
||||||
color: tmrColors.casehumide, alpha: 0.5, taille: tmrConstants.twoThird, decallage: tmrConstants.bottom
|
zIndex: tmrTokenZIndex.casehumide,
|
||||||
|
color: tmrColors.casehumide,
|
||||||
|
alpha: 0.5,
|
||||||
|
taille: tmrConstants.twoThird,
|
||||||
|
decallage: tmrConstants.bottom
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async _creerCaseTmr(actor) {
|
async _creerCaseTmr(actor) {
|
||||||
const ponts = TMRUtility.getListTMR('pont');
|
|
||||||
for (let tmr of ponts) {
|
|
||||||
await this.createCaseTmr(actor, 'Pont impraticable: ' + tmr.label, tmr);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async _supprimerCaseTmr(actor) {
|
|
||||||
const existants = actor.data.items.filter(it => this.isCase(it));
|
|
||||||
for (let caseTMR of existants) {
|
|
||||||
await actor.deleteOwnedItem(caseTMR._id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { ChatUtility } from "../chat-utility.js";
|
import { ChatUtility } from "../chat-utility.js";
|
||||||
import { tmrColors, tmrConstants, TMRUtility } from "../tmr-utility.js";
|
import { Grammar } from "../grammar.js";
|
||||||
|
import { tmrConstants, tmrTokenZIndex, TMRUtility } from "../tmr-utility.js";
|
||||||
import { Draconique } from "./draconique.js";
|
import { Draconique } from "./draconique.js";
|
||||||
|
|
||||||
export class PresentCites extends Draconique {
|
export class PresentCites extends Draconique {
|
||||||
@ -9,22 +10,26 @@ export class PresentCites extends Draconique {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type() { return 'tete' }
|
type() { return 'tete' }
|
||||||
match(item) { return Draconique.isTeteDragon(item) && item.name.toLowerCase() == 'présent des cités'; }
|
match(item) { return Draconique.isTeteDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('present des cites'); }
|
||||||
manualMessage() { return false }
|
manualMessage() { return false }
|
||||||
async onActorCreateOwned(actor, item) { await this._ajouterPresents(actor); }
|
async onActorCreateOwned(actor, tete) { await this._ajouterPresents(actor, tete); }
|
||||||
|
|
||||||
code() { return 'present-cites' }
|
code() { return 'present-cites' }
|
||||||
tooltip(linkData) { return `La ${this.tmrLabel(linkData)} a un présent` }
|
tooltip(linkData) { return `La ${this.tmrLabel(linkData)} a un présent` }
|
||||||
img() { return 'systems/foundryvtt-reve-de-dragon/icons/svg/gift.svg' }
|
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/gift.svg' }
|
||||||
|
|
||||||
_createSprite(pixiTMR) {
|
createSprite(pixiTMR) {
|
||||||
return pixiTMR.sprite(this.code(),
|
return pixiTMR.sprite(this.code(),
|
||||||
{
|
{
|
||||||
color: tmrColors.tetes, alpha: 0.7, taille: tmrConstants.third, decallage: tmrConstants.topRight
|
zIndex: tmrTokenZIndex.tetes,
|
||||||
|
color: 0xFEFEFE,
|
||||||
|
alpha: 0.8,
|
||||||
|
taille: tmrConstants.third,
|
||||||
|
decallage: tmrConstants.topRight
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async _ajouterPresents(actor) {
|
async _ajouterPresents(actor, tete) {
|
||||||
let existants = actor.data.items.filter(it => this.isCase(it)).map(it => it.data.coord);
|
let existants = actor.data.items.filter(it => this.isCase(it)).map(it => it.data.coord);
|
||||||
if (existants.length > 0) {
|
if (existants.length > 0) {
|
||||||
ChatMessage.create({
|
ChatMessage.create({
|
||||||
@ -35,23 +40,26 @@ export class PresentCites extends Draconique {
|
|||||||
else {
|
else {
|
||||||
let cites = TMRUtility.filterTMR(it => it.type == 'cite');
|
let cites = TMRUtility.filterTMR(it => it.type == 'cite');
|
||||||
for (let tmr of cites) {
|
for (let tmr of cites) {
|
||||||
await this.createCaseTmr(actor, 'Présent: ' + tmr.label, tmr);
|
await this.createCaseTmr(actor, 'Présent: ' + tmr.label, tmr, tete._id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async choisirUnPresent(casetmr) {
|
|
||||||
|
async choisirUnPresent(casetmr, onChoixPresent) {
|
||||||
let d = new Dialog({
|
let d = new Dialog({
|
||||||
title: "Présent des cités",
|
title: "Présent des cités",
|
||||||
content: `La ${casetmr.data.coord} vous offre un présent`,
|
content: `La ${this.tmrLabel(casetmr)} vous offre un présent, faite votre choix`,
|
||||||
buttons: {
|
buttons: {
|
||||||
fleur: {
|
messager: { icon: '<i class="fas fa-check"></i>', label: "Un Messager des rêves", callback: () => onChoixPresent('messager2d6') },
|
||||||
icon: '<i class="fas fa-check"></i>',
|
passeur: { icon: '<i class="fas fa-check"></i>', label: "Un Passeur des rêves", callback: () => onChoixPresent('passeur2d6') },
|
||||||
label: "Fleur des rêves 2d6",
|
fleur: { icon: '<i class="fas fa-check"></i>', label: "Une Fleur des rêves", callback: () => onChoixPresent('fleur2d6') },
|
||||||
callback: () => this.creerObjet()
|
},
|
||||||
}
|
default: "fleur"
|
||||||
}
|
|
||||||
});
|
});
|
||||||
d.render(true);
|
d.render(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async ouvrirLePresent(actor, casetmr) {
|
||||||
|
await actor.deleteOwnedItem(casetmr._id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { tmrColors, tmrConstants, TMRUtility } from "../tmr-utility.js";
|
import { Grammar } from "../grammar.js";
|
||||||
|
import { tmrColors, tmrConstants, tmrTokenZIndex } from "../tmr-utility.js";
|
||||||
import { Draconique } from "./draconique.js";
|
import { Draconique } from "./draconique.js";
|
||||||
|
|
||||||
export class QueteEaux extends Draconique {
|
export class QueteEaux extends Draconique {
|
||||||
@ -7,19 +8,21 @@ export class QueteEaux extends Draconique {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type() { return 'tete' }
|
type() { return 'tete' }
|
||||||
match(item) { return Draconique.isTeteDragon(item) && item.name.toLowerCase().includes("quête des eaux"); }
|
match(item) { return Draconique.isTeteDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes("quete des eaux"); }
|
||||||
manualMessage() { return "Vous devrez re-configurer votre Quête des Eaux une fois un lac ou marais vaincu" }
|
manualMessage() { return "Vous devrez re-configurer votre Quête des Eaux une fois un lac ou marais vaincu" }
|
||||||
async onActorCreateOwned(actor, item) { await this._creerCaseTmr(actor); }
|
async onActorCreateOwned(actor, tete) {
|
||||||
|
await this.createCaseTmr(actor, "Quête des eaux à déterminer", { coord: 'A0' }, tete._id);
|
||||||
|
}
|
||||||
|
|
||||||
code() { return 'maitrisee' }
|
code() { return 'maitrisee' }
|
||||||
tooltip(linkData) { return `Quête des eaux, le ${this.tmrLabel(linkData)} est maîtrisé` }
|
tooltip(linkData) { return `Quête des eaux, le ${this.tmrLabel(linkData)} est maîtrisé` }
|
||||||
img() { return 'icons/svg/bridge.svg' }
|
img() { return 'icons/svg/bridge.svg' }
|
||||||
|
|
||||||
_createSprite(pixiTMR) {
|
createSprite(pixiTMR) {
|
||||||
return pixiTMR.sprite(this.code(), { color: tmrColors.tetes, decallage: tmrConstants.topRight });
|
return pixiTMR.sprite(this.code(), {
|
||||||
}
|
zIndex: tmrTokenZIndex.casehumide + 1,
|
||||||
|
color: tmrColors.tetes,
|
||||||
async _creerCaseTmr(actor) {
|
decallage: tmrConstants.topRight
|
||||||
await this.createCaseTmr(actor, "Quête des eaux à déterminer", {coord:'A0'});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { tmrColors, tmrConstants } from "../tmr-utility.js";
|
import { tmrColors, tmrConstants, tmrTokenZIndex } from "../tmr-utility.js";
|
||||||
import { Draconique } from "./draconique.js";
|
import { Draconique } from "./draconique.js";
|
||||||
|
|
||||||
export class Rencontre extends Draconique {
|
export class Rencontre extends Draconique {
|
||||||
@ -16,7 +16,12 @@ export class Rencontre extends Draconique {
|
|||||||
tooltip(linkData) { return `${linkData.name} de force ${linkData.force}` }
|
tooltip(linkData) { return `${linkData.name} de force ${linkData.force}` }
|
||||||
img() { return 'systems/foundryvtt-reve-de-dragon/icons/heures/hd06.svg' }
|
img() { return 'systems/foundryvtt-reve-de-dragon/icons/heures/hd06.svg' }
|
||||||
|
|
||||||
_createSprite(pixiTMR) {
|
createSprite(pixiTMR) {
|
||||||
return pixiTMR.sprite(this.code(), { color: tmrColors.rencontre, taille: tmrConstants.full, decallage: { x: 2, y: 2 } });
|
return pixiTMR.sprite(this.code(), {
|
||||||
|
zIndex: tmrTokenZIndex.rencontre,
|
||||||
|
color: tmrColors.rencontre,
|
||||||
|
taille: tmrConstants.full,
|
||||||
|
decallage: { x: 2, y: 2 }
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { tmrColors, tmrConstants, TMRUtility } from "../tmr-utility.js";
|
import { Grammar } from "../grammar.js";
|
||||||
|
import { tmrColors, tmrConstants, tmrTokenZIndex, TMRUtility } from "../tmr-utility.js";
|
||||||
import { Draconique } from "./draconique.js";
|
import { Draconique } from "./draconique.js";
|
||||||
|
|
||||||
export class ReserveExtensible extends Draconique {
|
export class ReserveExtensible extends Draconique {
|
||||||
@ -7,22 +8,24 @@ export class ReserveExtensible extends Draconique {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type() { return 'tete' }
|
type() { return 'tete' }
|
||||||
match(item) { return Draconique.isTeteDragon(item) && item.name.toLowerCase().includes("réserve extensible"); }
|
match(item) { return Draconique.isTeteDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes("reserve extensible"); }
|
||||||
manualMessage() { return "Vous pouvez re-configurer votre Réserve extensible" }
|
manualMessage() { return "Vous pouvez re-configurer votre Réserve extensible" }
|
||||||
async onActorCreateOwned(actor, item) { await this._creerCaseTmr(actor); }
|
async onActorCreateOwned(actor, tete) {
|
||||||
|
const existants = actor.data.items.filter(it => this.isCase(it)).map(it => it.data.coord);
|
||||||
|
const tmr = TMRUtility.getTMRAleatoire(it => !(it.type == 'fleuve' || existants.includes(it.coord)));
|
||||||
|
await this.createCaseTmr(actor, "Nouvelle Réserve extensible", tmr, tete._id);
|
||||||
|
}
|
||||||
|
|
||||||
code() { return 'reserve_extensible' }
|
code() { return 'reserve_extensible' }
|
||||||
tooltip(linkData) { return `Réserve extensible en ${this.tmrLabel(linkData)} !` }
|
tooltip(linkData) { return `Réserve extensible en ${this.tmrLabel(linkData)} !` }
|
||||||
img() { return 'icons/svg/chest.svg' }
|
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/treasure-chest.svg' }
|
||||||
|
|
||||||
_createSprite(pixiTMR) {
|
createSprite(pixiTMR) {
|
||||||
return pixiTMR.sprite(this.code(), { color: tmrColors.tetes, decallage: tmrConstants.left});
|
return pixiTMR.sprite(this.code(), {
|
||||||
}
|
zIndex: tmrTokenZIndex.tetes,
|
||||||
|
alpha: 0.9,
|
||||||
async _creerCaseTmr(actor) {
|
decallage: tmrConstants.left
|
||||||
const existants = actor.data.items.filter(it => this.isCase(it)).map(it => it.data.coord);
|
});
|
||||||
const tmr = TMRUtility.getTMRAleatoire(it => !(it.type == 'fleuve' || existants.includes(it.coord)));
|
|
||||||
await this.createCaseTmr(actor, "Nouvelle Réserve extensible", tmr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { tmrColors, tmrConstants } from "../tmr-utility.js";
|
import { tmrColors, tmrConstants, tmrTokenZIndex } from "../tmr-utility.js";
|
||||||
import { Draconique } from "./draconique.js";
|
import { Draconique } from "./draconique.js";
|
||||||
|
|
||||||
export class SortReserve extends Draconique {
|
export class SortReserve extends Draconique {
|
||||||
@ -13,10 +13,14 @@ export class SortReserve extends Draconique {
|
|||||||
async onActorCreateOwned(actor, item) { }
|
async onActorCreateOwned(actor, item) { }
|
||||||
|
|
||||||
code() { return 'sort' }
|
code() { return 'sort' }
|
||||||
tooltip(linkData) { return `${linkData.name}, r${linkData.data.ptreve_reel}` }
|
tooltip(sort) { return `${sort.name}, r${sort.data.ptreve_reel}` }
|
||||||
img() { return 'icons/svg/book.svg' }
|
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/scroll.svg' }
|
||||||
|
|
||||||
_createSprite(pixiTMR) {
|
createSprite(pixiTMR) {
|
||||||
return pixiTMR.sprite(this.code(), { color: tmrColors.sort, decallage: tmrConstants.right });
|
return pixiTMR.sprite(this.code(), {
|
||||||
|
zIndex: tmrTokenZIndex.sort,
|
||||||
|
alpha: 0.5,
|
||||||
|
decallage: tmrConstants.right
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { tmrColors, tmrConstants, TMRUtility } from "../tmr-utility.js";
|
import { Grammar } from "../grammar.js";
|
||||||
|
import { tmrColors, tmrConstants, tmrTokenZIndex } from "../tmr-utility.js";
|
||||||
import { Draconique } from "./draconique.js";
|
import { Draconique } from "./draconique.js";
|
||||||
|
|
||||||
export class TerreAttache extends Draconique {
|
export class TerreAttache extends Draconique {
|
||||||
@ -7,19 +8,23 @@ export class TerreAttache extends Draconique {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type() { return 'tete' }
|
type() { return 'tete' }
|
||||||
match(item) { return Draconique.isTeteDragon(item) && item.name.toLowerCase().includes("terre d'attache"); }
|
match(item) { return Draconique.isTeteDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes("terre d'attache"); }
|
||||||
manualMessage() { return "Vous pouvez re-configurer votre Terre d'Attache" }
|
manualMessage() { return "Vous pouvez re-configurer votre Terre d'Attache" }
|
||||||
async onActorCreateOwned(actor, item) { await this._creerCaseTmr(actor); }
|
|
||||||
|
async onActorCreateOwned(actor, tete) {
|
||||||
|
await this.createCaseTmr(actor, "Terre d'attache à déterminer", { coord: 'A0' }, tete._id);
|
||||||
|
}
|
||||||
|
|
||||||
code() { return 'attache' }
|
code() { return 'attache' }
|
||||||
tooltip(linkData) { return `Terre d'attache en ${this.tmrLabel(linkData)} !` }
|
tooltip(linkData) { return `Terre d'attache en ${this.tmrLabel(linkData)} !` }
|
||||||
img() { return 'icons/svg/anchor.svg' }
|
img() { return 'icons/svg/anchor.svg' }
|
||||||
|
|
||||||
_createSprite(pixiTMR) {
|
createSprite(pixiTMR) {
|
||||||
return pixiTMR.sprite(this.code(), { color: tmrColors.tetes, decallage: tmrConstants.topLeft });
|
return pixiTMR.sprite(this.code(), {
|
||||||
|
zIndex: tmrTokenZIndex.tetes,
|
||||||
|
color: tmrColors.tetes,
|
||||||
|
decallage: tmrConstants.topLeft
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async _creerCaseTmr(actor) {
|
|
||||||
await this.createCaseTmr(actor, "Terre d'attache à déterminer", {coord:'A0'});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { tmrColors, tmrConstants, TMRUtility } from "../tmr-utility.js";
|
import { Grammar } from "../grammar.js";
|
||||||
|
import { tmrColors, tmrConstants, tmrTokenZIndex, TMRUtility } from "../tmr-utility.js";
|
||||||
import { Draconique } from "./draconique.js";
|
import { Draconique } from "./draconique.js";
|
||||||
|
|
||||||
export class TrouNoir extends Draconique {
|
export class TrouNoir extends Draconique {
|
||||||
@ -7,24 +8,28 @@ export class TrouNoir extends Draconique {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type() { return 'souffle' }
|
type() { return 'souffle' }
|
||||||
match(item) { return Draconique.isSouffleDragon(item) && item.name.toLowerCase().includes('trou noir'); }
|
match(item) { return Draconique.isSouffleDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('trou noir'); }
|
||||||
manualMessage() { return false }
|
manualMessage() { return false }
|
||||||
async onActorCreateOwned(actor, item) { await this._creerCaseTmr(actor); }
|
|
||||||
|
async onActorCreateOwned(actor, souffle) {
|
||||||
|
const existants = actor.data.items.filter(it => this.isCase(it)).map(it => it.data.coord);
|
||||||
|
const tmr = TMRUtility.getTMRAleatoire(it => !(TMRUtility.isCaseHumide(it) || existants.includes(it.coord)));
|
||||||
|
await this.createCaseTmr(actor, 'Trou noir: ' + tmr.label, tmr, souffle._id);
|
||||||
|
}
|
||||||
|
|
||||||
code() { return 'trounoir' }
|
code() { return 'trounoir' }
|
||||||
tooltip(linkData) { return `Trou noir en ${this.tmrLabel(linkData)} !` }
|
tooltip(linkData) { return `Trou noir en ${this.tmrLabel(linkData)} !` }
|
||||||
img() { return 'icons/svg/explosion.svg' }
|
img() { return 'icons/svg/explosion.svg' }
|
||||||
|
|
||||||
_createSprite(pixiTMR) {
|
createSprite(pixiTMR) {
|
||||||
return pixiTMR.sprite(this.code(),
|
return pixiTMR.sprite(this.code(),
|
||||||
{
|
{
|
||||||
color: tmrColors.trounoir, alpha: 1, taille: tmrConstants.full, decallage: { x: 2, y: 2 },
|
zIndex: tmrTokenZIndex.trounoir,
|
||||||
|
color: tmrColors.trounoir,
|
||||||
|
alpha: 1, taille:
|
||||||
|
tmrConstants.full,
|
||||||
|
decallage: { x: 2, y: 2 },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async _creerCaseTmr(actor) {
|
|
||||||
const existants = actor.data.items.filter(it => this.isCase(it)).map(it => it.data.coord);
|
|
||||||
const tmr = TMRUtility.getTMRAleatoire(it => !(TMRUtility.isCaseHumide(it) || existants.includes(it.coord)));
|
|
||||||
await this.createCaseTmr(actor, 'Trou noir: ' + tmr.label, tmr);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,25 +1,26 @@
|
|||||||
{"name":"Désir d'escalade difficile","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Désir thanataire. Hauteur à grimper : 4d6 m, difficulté de l’escalade : 1d4-4.</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"2KM1yiEOE0ZdT2oL"}
|
{"_id":"2KM1yiEOE0ZdT2oL","name":"Désir d'escalade difficile","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Désir thanataire. Hauteur à grimper : 4d6 m, difficulté de l’escalade : 1d4-4.</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Désir de blesser un enfant","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Désir thanataire. Causer au minimum une blessure légère.</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"2KbzOC2aj98CiQbW"}
|
{"_id":"2KbzOC2aj98CiQbW","name":"Désir de blesser un enfant","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Désir thanataire. Causer au minimum une blessure légère.</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Urgence draconique","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Le haut-rêvant est pris du besoin irrésistible de déclencher immédiatement son plus proche sort en réserve. À équidistance, prendre dans le sens des aiguilles d’une montre en commençant par le haut. En cas de rencontre dans les TMR, se dérober équivaut à refouler la queue de Dragon. Si aucun sort n’est en réserve, ou si il y a impossibilité de pratiquer la magie à cause d’une autre queue ou d’un souffle, tirer à la place une idée fixe.</p>","refoulement":4},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"3dnmi4Fyh5eUQcyP"}
|
{"_id":"3dnmi4Fyh5eUQcyP","name":"Urgence draconique","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Le haut-rêvant est pris du besoin irrésistible de déclencher immédiatement son plus proche sort en réserve. À équidistance, prendre dans le sens des aiguilles d’une montre en commençant par le haut. En cas de rencontre dans les TMR, se dérober équivaut à refouler la queue de Dragon. Si aucun sort n’est en réserve, ou si il y a impossibilité de pratiquer la magie à cause d’une autre queue ou d’un souffle, tirer à la place une idée fixe.</p>","refoulement":4,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Insomnie","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Impossibilité totale de dormir, et donc de rêver, pendant un jour.</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"6MUcjYfxfi45STvo"}
|
{"_id":"6MUcjYfxfi45STvo","name":"Insomnie","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Impossibilité totale de dormir, et donc de rêver, pendant un jour.</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Désir de boire du sang chaud","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Désir thanataire. Il s’agit de sang encore chaud de la chaleur naturelle de la victime.</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"DnhuuGUEbOF95JlN"}
|
{"_id":"DnhuuGUEbOF95JlN","name":"Désir de boire du sang chaud","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Désir thanataire. Il s’agit de sang encore chaud de la chaleur naturelle de la victime.</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Conquête","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Avant de pouvoir à nouveau faire usage du haut-rêve, y compris déclencher volontairement un sort mis en réserve, le haut-rêvant doit se rendre dans une certaine case des TMR déterminée aléatoirement et la <em>maîtriser</em>, difficulté -7. Ce peut être n’importe quelle case, sauf une case humide. En cas d’échec, la concentration est rompue ; il n’y a pas de souffle de Dragon en cas d’échec total.</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"N9j8K6x89BdS7ZKN"}
|
{"_id":"N9j8K6x89BdS7ZKN","name":"Conquête","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Avant de pouvoir à nouveau faire usage du haut-rêve, y compris déclencher volontairement un sort mis en réserve, le haut-rêvant doit se rendre dans une certaine case des TMR déterminée aléatoirement et la <em>maîtriser</em>, difficulté -7. Ce peut être n’importe quelle case, sauf une case humide. En cas d’échec, la concentration est rompue ; il n’y a pas de souffle de Dragon en cas d’échec total.</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Coup de barre","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Prise immédiate de 3d6 points de fatigue.</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"PMz7SaB6sRxhwrWw"}
|
{"_id":"PMz7SaB6sRxhwrWw","name":"Coup de barre","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Prise immédiate de 3d6 points de fatigue.</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Pélerinage","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Avant de pouvoir à nouveau faire usage du haut-rêve, y compris déclencher volontairement un sort mis en réserve, le haut-rêvant doit se rendre dans une certaine case des TMR déterminée aléatoirement. Un Passeur peut l’y téléporter, mais un Messager ne peut s’y rendre à sa place. Dès que la case est atteinte, le pèlerinage est accompli.</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"PYDb8gvRWeCAdPEZ"}
|
{"name":"Pélerinage","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Avant de pouvoir à nouveau faire usage du haut-rêve, y compris déclencher volontairement un sort mis en réserve, le haut-rêvant doit se rendre dans une certaine case des TMR déterminée aléatoirement. Un Passeur peut l’y téléporter, mais un Messager ne peut s’y rendre à sa place. Dès que la case est atteinte, le pèlerinage est accompli.</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"PYDb8gvRWeCAdPEZ"}
|
||||||
{"name":"Inertie draconique","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Pendant un jour, la fatigue en TMR est doublée. Chaque case ou round coûte 2 points au lieu d’un.</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"PmEjVox3Q6SPF730"}
|
{"_id":"PmEjVox3Q6SPF730","name":"Inertie draconique","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Pendant un jour, la fatigue en TMR est doublée. Chaque case ou round coûte 2 points au lieu d’un.</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Souvenir morbide de l'archétype","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Les prochains points d’expérience dus au stress doivent être mis en Thanatos.</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"RrPMV2HW2Rg8POK1"}
|
{"_id":"RrPMV2HW2Rg8POK1","name":"Souvenir morbide de l'archétype","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Les prochains points d’expérience dus au stress doivent être mis en Thanatos.</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Mauvaise rencontre en perspective","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Tirer la prochaine rencontre dans les TMR sur la @RollTable[52ymSWISvXPUhRyQ]{Table spéciale de rencontres}</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"S7se7qPnL6WDg5U5"}
|
{"_id":"S7se7qPnL6WDg5U5","name":"Mauvaise rencontre en perspective","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Tirer la prochaine rencontre dans les TMR sur la @RollTable[52ymSWISvXPUhRyQ]{Table spéciale de rencontres}</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Dépouillement","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Faire don de toute la monnaie actuellement possédée à la première personne inconnue rencontrée. En attendant, se garder d’aucune dépense.</p>","refoulement":4},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"UmvGxA4cFSoRE82Z"}
|
{"_id":"UmvGxA4cFSoRE82Z","name":"Dépouillement","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Faire don de toute la monnaie actuellement possédée à la première personne inconnue rencontrée. En attendant, se garder d’aucune dépense.</p>","refoulement":4,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Amnésie sélective","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Pendant un jour, perte totale d’une compétence, à l’exclusion du Draconic. Déterminer aléatoirement la compétence visée qui, pratiquement, retourne au niveau de base. Si elle est déjà au niveau de base, en choisir une autre.</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"aZWuRmi8lplZQcdM"}
|
{"_id":"aZWuRmi8lplZQcdM","name":"Amnésie sélective","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Pendant un jour, perte totale d’une compétence, à l’exclusion du Draconic. Déterminer aléatoirement la compétence visée qui, pratiquement, retourne au niveau de base. Si elle est déjà au niveau de base, en choisir une autre.</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Couardise irraisonnée","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>la prochaine occasion de combat, obligation de fuir, de se cacher ou de se rendre. Impossibilité d’utiliser aucune magie, ni sur l’ennemi, ni sur soi-même.</p>","refoulement":4},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"cUkRSRz5DJYb3WM8"}
|
{"_id":"cUkRSRz5DJYb3WM8","name":"Couardise irraisonnée","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>la prochaine occasion de combat, obligation de fuir, de se cacher ou de se rendre. Impossibilité d’utiliser aucune magie, ni sur l’ennemi, ni sur soi-même.</p>","refoulement":4,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Haine fatale","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>On devient immédiatement haineux et jaloux envers la première personne inconnue de même sexe et de même espèce rencontrée. Traiter comme le Coup de foudre fatal. La satisfaction s’obtient en blessant gravement ou en infligeant une cuisante humiliation publique.</p>","refoulement":4},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"dFf8jaC0RvidC1ZC"}
|
{"_id":"dFf8jaC0RvidC1ZC","name":"Haine fatale","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>On devient immédiatement haineux et jaloux envers la première personne inconnue de même sexe et de même espèce rencontrée. Traiter comme le Coup de foudre fatal. La satisfaction s’obtient en blessant gravement ou en infligeant une cuisante humiliation publique.</p>","refoulement":4,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Infarctus","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Perte immédiate de 4 points de vie (et 8 points d’endurance). Ces points pourront commencer à être regagnés au bout d’un jour complet.</p>","refoulement":0},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"e67rXcuO236ioYAr"}
|
{"_id":"e67rXcuO236ioYAr","name":"Infarctus","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Perte immédiate de 4 points de vie (et 8 points d’endurance). Ces points pourront commencer à être regagnés au bout d’un jour complet.</p>","refoulement":0,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Désir de dormir dans un cercueil","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Désir thanataire.</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"fO1jjVlOb6faLv3T"}
|
{"_id":"fO1jjVlOb6faLv3T","name":"Désir de dormir dans un cercueil","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Désir thanataire.</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Injurier la première personne inconnue rencontrée","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Désir d'injurier la première personne inconnue rencontrée</p>","refoulement":4},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"fUKNZ0uEG2y2PkOk"}
|
{"_id":"fUKNZ0uEG2y2PkOk","name":"Injurier la première personne inconnue rencontrée","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Désir d'injurier la première personne inconnue rencontrée</p>","refoulement":4,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Désir de blesser une femme","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Désir thanataire. Causer au minimum une blessure légère.</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"gT0PQAxlYrtITyut"}
|
{"_id":"gT0PQAxlYrtITyut","name":"Désir de blesser une femme","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Désir thanataire. Causer au minimum une blessure légère.</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Désir de parler à un crâne (humain)","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Désir thanataire. La \"conversation\" doit durer un minimum de 15 minutes.</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"lz3ghhJzkPRWJ2jz"}
|
{"_id":"lz3ghhJzkPRWJ2jz","name":"Désir de parler à un crâne (humain)","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Désir thanataire. La \"conversation\" doit durer un minimum de 15 minutes.</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Héroïsme forcené","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>À la prochaine occasion de combat, obligation de foncer en tête en corps à corps ou avec une arme de mêlée. Impossibilité d’utiliser aucune magie, ni sur l’ennemi, ni sur soi-même.</p>","refoulement":4},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"spYuiInqbCoDsKvd"}
|
{"_id":"spYuiInqbCoDsKvd","name":"Héroïsme forcené","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>À la prochaine occasion de combat, obligation de foncer en tête en corps à corps ou avec une arme de mêlée. Impossibilité d’utiliser aucune magie, ni sur l’ennemi, ni sur soi-même.</p>","refoulement":4,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Désir d'entendre hurler de terreur","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Désir thanataire. Il doit s’agir d’un hurlement humain.</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"twUoR8ALYiabkfoE"}
|
{"_id":"twUoR8ALYiabkfoE","name":"Désir d'entendre hurler de terreur","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Désir thanataire. Il doit s’agir d’un hurlement humain.</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Montée laborieuse","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Pendant un jour, monter en TMR coûte 2 points de rêve au lieu d’un, et 3 points en déplacement accéléré.</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"uQ4PwcwplvZarfn1"}
|
{"_id":"uQ4PwcwplvZarfn1","name":"Montée laborieuse","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Pendant un jour, monter en TMR coûte 2 points de rêve au lieu d’un, et 3 points en déplacement accéléré.</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Désir d'assister à une pendaison","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Désir thanataire.</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"wqWkQQsAPVlFw4ft"}
|
{"_id":"wqWkQQsAPVlFw4ft","name":"Désir d'assister à une pendaison","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Désir thanataire.</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
{"name":"Réinsertion aléatoire","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Comme après une sortie de la carte, le gardien des rêves réintroduit secrètement le demi-rêve du haut-rêvant dans les TMR.</p>","refoulement":1},"flags":{},"img":"icons/svg/mystery-man.svg","_id":"yEHdCabJYx0qvoL5"}
|
{"_id":"yEHdCabJYx0qvoL5","name":"Réinsertion aléatoire","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"ombre","data":{"description":"<p>Comme après une sortie de la carte, le gardien des rêves réintroduit secrètement le demi-rêve du haut-rêvant dans les TMR.</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]}
|
||||||
|
{"name":"Pèlerinage","permission":{"default":0,"Q2G6GTdrotKzYGUC":3},"type":"ombre","data":{"description":"<p>Avant de pouvoir à nouveau faire usage du haut-rêve, y compris déclencher volontairement un sort mis en réserve, le haut-rêvant doit se rendre dans une certaine case des TMR déterminée aléatoirement. Un Passeur peut l’y téléporter, mais un Messager ne peut s’y rendre à sa place. Dès que la case est atteinte, le pèlerinage est accompli.</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"zIXgRwfB83DMaNX8"}
|
||||||
|
@ -1,56 +1,57 @@
|
|||||||
{"_id":"0jrEZ62Q2Jz4kBGf","name":"Mauvaise rencontre en perspective","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Tirer la prochaine rencontre dans les TMR sur la @Compendium[foundryvtt-reve-de-dragon.tables-diverses.66ye0OOxBO9LEjdd]{Table spéciale de rencontres}</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp"}
|
{"_id":"0jrEZ62Q2Jz4kBGf","name":"Mauvaise rencontre en perspective","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Tirer la prochaine rencontre dans les TMR sur la @Compendium[foundryvtt-reve-de-dragon.tables-diverses.66ye0OOxBO9LEjdd]{Table spéciale de rencontres}</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"name":"Idée fixe : Anorexie. Ne rien avaler, ni solide, ni liquide, pas même une potion","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"anorexie.png","effects":[],"_id":"0uc2pMIGL03Hq2Hn"}
|
{"_id":"0uc2pMIGL03Hq2Hn","name":"Idée fixe : Anorexie. Ne rien avaler, ni solide, ni liquide, pas même une potion","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"anorexie.png","effects":[]}
|
||||||
{"_id":"1gGVlZM0UyifL6RK","name":"Souvenir obsessionnel de l'archétype","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Les prochains points d’expérience dus au stress doivent être mis dans une compétence déterminée aléatoirement par la table de @Compendium[foundryvtt-reve-de-dragon.tables-diverses.E0WLgjn6LA9WsvKJ]{Détermination aléatoire de compétence}.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp"}
|
{"_id":"1gGVlZM0UyifL6RK","name":"Souvenir obsessionnel de l'archétype","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Les prochains points d’expérience dus au stress doivent être mis dans une compétence déterminée aléatoirement par la table de @Compendium[foundryvtt-reve-de-dragon.tables-diverses.E0WLgjn6LA9WsvKJ]{Détermination aléatoire de compétence}.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"name":"Désir lancinant : Briser un objet de verre","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"briser_verre.png","effects":[],"_id":"1l59lWbtvYp74OTb"}
|
{"_id":"1l59lWbtvYp74OTb","name":"Désir lancinant : Briser un objet de verre","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"name":"Idée fixe : Cracher dans toute nourriture ou boisson aperçue","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"cracher_nourriture.png","effects":[],"_id":"22EQLBJfHVYs96iC"}
|
{"_id":"22EQLBJfHVYs96iC","name":"Idée fixe : Cracher dans toute nourriture ou boisson aperçue","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"cracher_nourriture.png","effects":[]}
|
||||||
{"name":"Idée fixe : Éteindre tout feu rencontré (feu de camp, torche, lanterne, etc.)","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"eteindre_feu.png","effects":[],"_id":"2Rtm78bMKPy8eG4q"}
|
{"_id":"2Rtm78bMKPy8eG4q","name":"Idée fixe : Éteindre tout feu rencontré (feu de camp, torche, lanterne, etc.)","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"eteindre_feu.png","effects":[]}
|
||||||
{"name":"Désir lancinant : Danser avec un(e) partenaire inconnu(e) (Beauté 13 minimum)","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"danser_inconnu.png","effects":[],"_id":"2i3PndTKG1n3hEUU"}
|
{"_id":"2i3PndTKG1n3hEUU","name":"Désir lancinant : Danser avec un(e) partenaire inconnu(e) (Beauté 13 minimum)","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"name":"Idée fixe : Traîner son épée en laisse (ou sa meilleure arme)","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"trainer_laisse.png","effects":[],"_id":"2j1q9e07ZLlIQDYl"}
|
{"_id":"2j1q9e07ZLlIQDYl","name":"Idée fixe : Traîner son épée en laisse (ou sa meilleure arme)","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"trainer_laisse.png","effects":[]}
|
||||||
{"_id":"32LbwxxokC9Tn370","name":"Coup de foudre fatal","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>On devient immédiatement amoureux fou de la première personne inconnue de sexe opposé et de même espèce rencontrée. Tant que satisfaction n’est pas obtenue, traiter comme un désir lancinant. </p>","refoulement":2},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp"}
|
{"_id":"32LbwxxokC9Tn370","name":"Coup de foudre fatal","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>On devient immédiatement amoureux fou de la première personne inconnue de sexe opposé et de même espèce rencontrée. Tant que satisfaction n’est pas obtenue, traiter comme un désir lancinant. </p>","refoulement":2},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"name":"Désir lancinant : Gagner de l’argent (minimum 10 deniers)","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"gagner_argent.png","effects":[],"_id":"3BcC8lSsP5WIyva7"}
|
{"_id":"3BcC8lSsP5WIyva7","name":"Désir lancinant : Gagner de l’argent (minimum 10 deniers)","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"gagner_argent.png","effects":[]}
|
||||||
{"name":"Désir lancinant : Mégalomanie. Être acclamé par un minimum de 10 personnes","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"megalomanie.png","effects":[],"_id":"3ZjwYyQRatCMnBCi"}
|
{"_id":"3ZjwYyQRatCMnBCi","name":"Désir lancinant : Mégalomanie. Être acclamé par un minimum de 10 personnes","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"megalomanie.png","effects":[]}
|
||||||
{"_id":"5knw1NcnBsLIjHpr","name":"Montée laborieuse","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Pendant un jour, monter en TMR coûte 2 points de rêve au lieu d’un, et 3 points en déplacement accéléré.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp"}
|
{"_id":"5knw1NcnBsLIjHpr","name":"Montée laborieuse","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Pendant un jour, monter en TMR coûte 2 points de rêve au lieu d’un, et 3 points en déplacement accéléré.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"name":"Idée fixe : Avoir le visage noirci à la cendre","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"avoir_visage.png","effects":[],"_id":"6G0lF06jSryTduAt"}
|
{"_id":"6G0lF06jSryTduAt","name":"Idée fixe : Avoir le visage noirci à la cendre","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"avoir_visage.png","effects":[]}
|
||||||
{"name":"Idée fixe : Ne marcher qu’à quatre pattes","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"marcher_quatre_pattes.png","effects":[],"_id":"7TKsit2Mv9mWGq3C"}
|
{"_id":"7TKsit2Mv9mWGq3C","name":"Idée fixe : Ne marcher qu’à quatre pattes","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"marcher_quatre_pattes.png","effects":[]}
|
||||||
{"name":"Désir lancinant : Acquérir une chèvre","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"acqu%C3%A9rir_chevre.png","effects":[],"_id":"8sLXQBqo8XwjAFG0"}
|
{"_id":"8sLXQBqo8XwjAFG0","name":"Désir lancinant : Acquérir une chèvre","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"name":"Idée fixe : Garder les yeux bandés","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"garder_yeux.png","effects":[],"_id":"E902EEYZHg3zFKq6"}
|
{"_id":"E902EEYZHg3zFKq6","name":"Idée fixe : Garder les yeux bandés","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"garder_yeux.png","effects":[]}
|
||||||
{"_id":"EUrxQGd7FuW628NS","name":"Inertie draconique","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Pendant un jour, la fatigue en TMR est doublée. Chaque case ou round coûte 2 points au lieu d’un.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp"}
|
{"_id":"EUrxQGd7FuW628NS","name":"Inertie draconique","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Pendant un jour, la fatigue en TMR est doublée. Chaque case ou round coûte 2 points au lieu d’un.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"name":"Désir lancinant : Danser nu sous la pluie","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"danser_pluie.png","effects":[],"_id":"F6qL4d4g3qjh045R"}
|
{"_id":"F6qL4d4g3qjh045R","name":"Désir lancinant : Danser nu sous la pluie","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"name":"Idée fixe : Garder sur soi 3d6 kilos de cailloux","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"garder_cailloux.png","effects":[],"_id":"F8G3rdU1nfJzYwYR"}
|
{"_id":"F8G3rdU1nfJzYwYR","name":"Idée fixe : Garder sur soi 3d6 kilos de cailloux","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"garder_cailloux.png","effects":[]}
|
||||||
{"name":"Désir lancinant : Se faire raser la tête","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"raser_tete.png","effects":[],"_id":"HSNOvBR890dsEDw2"}
|
{"_id":"HSNOvBR890dsEDw2","name":"Désir lancinant : Se faire raser la tête","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"raser_tete.png","effects":[]}
|
||||||
{"name":"Idée fixe : Aller tout nu, sans porter le moindre paquet ni objet","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"aller_nu.png","effects":[],"_id":"I0CtQ05xFW6ghcdP"}
|
{"_id":"I0CtQ05xFW6ghcdP","name":"Idée fixe : Aller tout nu, sans porter le moindre paquet ni objet","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"aller_nu.png","effects":[]}
|
||||||
{"_id":"J3XtcVuQo846U1OT","name":"Idée fixe","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Tirer [[/r 1d20]] sur la table des @Compendium[foundryvtt-reve-de-dragon.tables-diverses.nbH4v630P7ARaAHk]{Idées fixes}. Les idées fixes prennent effet immédiatement et durent jusqu’à l’extrême fin de l’heure du Château Dormant du lendemain. Si passé ce délai, l’occasion de les manifester ne s’est pas présentée, la queue prend fin néanmoins. Si elles entrent en contradiction avec une autre queue de Dragon, retirer.</p>\n<p> </p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
{"_id":"J3XtcVuQo846U1OT","name":"Idée fixe","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Tirer [[/r 1d20]] sur la table des @Compendium[foundryvtt-reve-de-dragon.tables-diverses.nbH4v630P7ARaAHk]{Idées fixes}. Les idées fixes prennent effet immédiatement et durent jusqu’à l’extrême fin de l’heure du Château Dormant du lendemain. Si passé ce délai, l’occasion de les manifester ne s’est pas présentée, la queue prend fin néanmoins. Si elles entrent en contradiction avec une autre queue de Dragon, retirer.</p>\n<p> </p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"name":"Idée fixe : Boulimie. Manger au moins un point de sust. par heure","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"boulimie.png","effects":[],"_id":"JcTX8qMS0z8bmdVt"}
|
{"_id":"JcTX8qMS0z8bmdVt","name":"Idée fixe : Boulimie. Manger au moins un point de sust. par heure","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"boulimie.png","effects":[]}
|
||||||
{"name":"Désir lancinant : Passer une nuit sur une échelle","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"nuit_echelle.png","effects":[],"_id":"LlELEB0FhymLx6VM"}
|
{"_id":"LlELEB0FhymLx6VM","name":"Désir lancinant : Passer une nuit sur une échelle","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"nuit_echelle.png","effects":[]}
|
||||||
{"_id":"Ltgqj86rYQr8D8LW","name":"Désir lancinant","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Tirer [[/r 1d20]] sur la table des @Compendium[foundryvtt-reve-de-dragon.tables-diverses.sVWhyr4wPnieuPP8]{Désirs lancinants}. Les désirs lancinants durent jusqu’à ce qu’ils soient satisfaits ou refoulés. Tant que satisfaction n’est pas obtenue, aucun point d’expérience ne peut plus être gagné par l’exercice en cas de particulière et d’ajustement final négatif. Les points d’expérience dus au stress ne sont pas affectés.</p>\n<p> </p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
{"_id":"Ltgqj86rYQr8D8LW","name":"Désir lancinant","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Tirer [[/r 1d20]] sur la table des @Compendium[foundryvtt-reve-de-dragon.tables-diverses.sVWhyr4wPnieuPP8]{Désirs lancinants}. Les désirs lancinants durent jusqu’à ce qu’ils soient satisfaits ou refoulés. Tant que satisfaction n’est pas obtenue, aucun point d’expérience ne peut plus être gagné par l’exercice en cas de particulière et d’ajustement final négatif. Les points d’expérience dus au stress ne sont pas affectés.</p>\n<p> </p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"_id":"NF4E7jTty1QGjaNj","name":"Pélerinage","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Avant de pouvoir à nouveau faire usage du haut-rêve, y compris déclencher volontairement un sort mis en réserve, le haut-rêvant doit se rendre dans une certaine case des TMR déterminée aléatoirement. Un Passeur peut l’y téléporter, mais un Messager ne peut s’y rendre à sa place. Dès que la case est atteinte, le pèlerinage est accompli.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp"}
|
{"_id":"NF4E7jTty1QGjaNj","name":"Pélerinage","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Avant de pouvoir à nouveau faire usage du haut-rêve, y compris déclencher volontairement un sort mis en réserve, le haut-rêvant doit se rendre dans une certaine case des TMR déterminée aléatoirement. Un Passeur peut l’y téléporter, mais un Messager ne peut s’y rendre à sa place. Dès que la case est atteinte, le pèlerinage est accompli.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp"}
|
||||||
{"name":"Idée fixe : Refuser de monter dans les TMR","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"refuser_tmr.png","effects":[],"_id":"NpTDqICR7ZuToQrg"}
|
{"_id":"NpTDqICR7ZuToQrg","name":"Idée fixe : Refuser de monter dans les TMR","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"refuser_tmr.png","effects":[]}
|
||||||
{"name":"Désir lancinant : Masochisme. Perdre 3 points d’endurance minimum en 1 round","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"masochisme.png","effects":[],"_id":"NzJJNK0YMAbobu0p"}
|
{"_id":"NzJJNK0YMAbobu0p","name":"Désir lancinant : Masochisme. Perdre 3 points d’endurance minimum en 1 round","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"masochisme.png","effects":[]}
|
||||||
{"_id":"OSV2b7bVWv2SCfUY","name":"Urgence draconique","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Le haut-rêvant est pris du besoin irrésistible de déclencher immédiatement son plus proche sort en réserve. À équidistance, prendre dans le sens des aiguilles d’une montre en commençant par le haut. En cas de rencontre dans les TMR, se dérober équivaut à refouler la queue de Dragon. Si aucun sort n’est en réserve, ou si il y a impossibilité de pratiquer la magie à cause d’une autre queue ou d’un souffle, tirer à la place une idée fixe.</p>","refoulement":2},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp"}
|
{"_id":"OSV2b7bVWv2SCfUY","name":"Urgence draconique","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Le haut-rêvant est pris du besoin irrésistible de déclencher immédiatement son plus proche sort en réserve. À équidistance, prendre dans le sens des aiguilles d’une montre en commençant par le haut. En cas de rencontre dans les TMR, se dérober équivaut à refouler la queue de Dragon. Si aucun sort n’est en réserve, ou si il y a impossibilité de pratiquer la magie à cause d’une autre queue ou d’un souffle, tirer à la place une idée fixe.</p>","refoulement":2},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"name":"Désir lancinant : Casser 3d6 oeufs en les jetant à terre","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"casser_oeufs.png","effects":[],"_id":"OjG8XRbeYtq2jcgB"}
|
{"_id":"OjG8XRbeYtq2jcgB","name":"Désir lancinant : Casser 3d6 oeufs en les jetant à terre","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"name":"Désir lancinant : Traire une vache","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"traire_vache.png","effects":[],"_id":"QHUOwjMR6AvepGPm"}
|
{"_id":"QHUOwjMR6AvepGPm","name":"Désir lancinant : Traire une vache","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"traire_vache.png","effects":[]}
|
||||||
{"_id":"Qgj5eSMpQ0IDHwZX","name":"Coup de barre","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Prise immédiate de 3d6 points de fatigue.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp"}
|
{"_id":"Qgj5eSMpQ0IDHwZX","name":"Coup de barre","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Prise immédiate de 3d6 points de fatigue.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"name":"Désir lancinant : Pisser dans un violon (luth, mandoline, etc.)","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"pisser_violon.png","effects":[],"_id":"S8PVNgxb7TcFXq9g"}
|
{"name":"Pèlerinage","permission":{"default":0,"Q2G6GTdrotKzYGUC":3},"type":"queue","data":{"description":"<p>Avant de pouvoir à nouveau faire usage du haut-rêve, y compris déclencher volontairement un sort mis en réserve, le haut-rêvant doit se rendre dans une certaine case des TMR déterminée aléatoirement. Un Passeur peut l’y téléporter, mais un Messager ne peut s’y rendre à sa place. Dès que la case est atteinte, le pèlerinage est accompli.</p>","refoulement":1,"duree":"","restant":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[],"_id":"RVslW735GbPbXCpP"}
|
||||||
{"name":"Désir lancinant : Manger du poisson","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"manger_poisson.png","effects":[],"_id":"SY0SsWtZdxSodMcl"}
|
{"_id":"S8PVNgxb7TcFXq9g","name":"Désir lancinant : Pisser dans un violon (luth, mandoline, etc.)","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"pisser_violon.png","effects":[]}
|
||||||
{"_id":"TmEeikWOQt6NZGVY","name":"Masque de Narcos","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Pendant 1d7 jours à compter du lendemain, la caractéristique APPARENCE baisse de 1d6 points, de même que la Beauté.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp"}
|
{"_id":"SY0SsWtZdxSodMcl","name":"Désir lancinant : Manger du poisson","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"manger_poisson.png","effects":[]}
|
||||||
{"name":"Idée fixe : Ne pas franchir de porte. (On peut franchir une fenêtre)","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"pas-franchir.png","effects":[],"_id":"UUTbsktTcxsIe5L5"}
|
{"_id":"TmEeikWOQt6NZGVY","name":"Masque de Narcos","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Pendant 1d7 jours à compter du lendemain, la caractéristique APPARENCE baisse de 1d6 points, de même que la Beauté.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"name":"Idée fixe : Refuser de se délester du moindre objet, ni donner ni prêter","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"refuser_delester.png","effects":[],"_id":"VChJbtGFtWoiFNky"}
|
{"_id":"UUTbsktTcxsIe5L5","name":"Idée fixe : Ne pas franchir de porte. (On peut franchir une fenêtre)","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"pas-franchir.png","effects":[]}
|
||||||
{"name":"Idée fixe : Ne s’exprimer que par des cris d’animaux (meuh ! coin-coin ! etc.)","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"exprimer_cris.png","effects":[],"_id":"YCHBbRLiMzTH7IBj"}
|
{"_id":"VChJbtGFtWoiFNky","name":"Idée fixe : Refuser de se délester du moindre objet, ni donner ni prêter","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"refuser_delester.png","effects":[]}
|
||||||
{"name":"Idée fixe : Vider sur sa tête toute fiole ou flacon aperçu","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"verser_flacon.png","effects":[],"_id":"afGp9CewfyJKecEE"}
|
{"_id":"YCHBbRLiMzTH7IBj","name":"Idée fixe : Ne s’exprimer que par des cris d’animaux (meuh ! coin-coin ! etc.)","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"exprimer_cris.png","effects":[]}
|
||||||
{"name":"Désir lancinant : Faire des bulles de savon","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"bulles_savon.png","effects":[],"_id":"df5oN8Ub3dWTVxNj"}
|
{"_id":"afGp9CewfyJKecEE","name":"Idée fixe : Vider sur sa tête toute fiole ou flacon aperçu","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"verser_flacon.png","effects":[]}
|
||||||
{"name":"Désir lancinant : Entendre braire un âne","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"entendre_ane.png","effects":[],"_id":"diCCimukdNM6bPub"}
|
{"_id":"df5oN8Ub3dWTVxNj","name":"Désir lancinant : Faire des bulles de savon","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"bulles_savon.png","effects":[]}
|
||||||
{"name":"Désir lancinant : Se rouler dans la boue","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"se_rouler_boue.png","effects":[],"_id":"el4lofhhSucMv5xv"}
|
{"_id":"diCCimukdNM6bPub","name":"Désir lancinant : Entendre braire un âne","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"entendre_ane.png","effects":[]}
|
||||||
{"name":"Idée fixe : Ne dire que «non» ou négation analogue","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"dire_non.png","effects":[],"_id":"gMmqdJ9I7Mt8Tg3f"}
|
{"_id":"el4lofhhSucMv5xv","name":"Désir lancinant : Se rouler dans la boue","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"se_rouler_boue.png","effects":[]}
|
||||||
{"name":"Désir lancinant : Manger des champignons","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"manger_champignons.png","effects":[],"_id":"gadh6aI5iCM82qpP"}
|
{"_id":"gMmqdJ9I7Mt8Tg3f","name":"Idée fixe : Ne dire que «non» ou négation analogue","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"dire_non.png","effects":[]}
|
||||||
{"name":"Idée fixe : Refuser de se déplacer autrement que porté","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"refuser_deplacer.png","effects":[],"_id":"hghw6Cldrad1CIiJ"}
|
{"_id":"gadh6aI5iCM82qpP","name":"Désir lancinant : Manger des champignons","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"manger_champignons.png","effects":[]}
|
||||||
{"_id":"iHuLw0I1Gc5mIucG","name":"Réinsertion aléatoire","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Comme après une sortie de la carte, le gardien des rêves réintroduit secrètement le demi-rêve du haut-rêvant dans les TMR.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp"}
|
{"_id":"hghw6Cldrad1CIiJ","name":"Idée fixe : Refuser de se déplacer autrement que porté","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"refuser_deplacer.png","effects":[]}
|
||||||
{"_id":"iJw6j7kuP1eAHIck","name":"Amnésie sélective","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Pendant un jour, perte totale d’une compétence, à l’exclusion du Draconic. Déterminer aléatoirement la compétence visée qui, pratiquement, retourne au niveau de base. Si elle est déjà au niveau de base, en choisir une autre.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp"}
|
{"_id":"iHuLw0I1Gc5mIucG","name":"Réinsertion aléatoire","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Comme après une sortie de la carte, le gardien des rêves réintroduit secrètement le demi-rêve du haut-rêvant dans les TMR.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"name":"Idée fixe : Garder une main sur la tête","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"garder_main.png","effects":[],"_id":"iPYPgxL2uUnphStc"}
|
{"_id":"iJw6j7kuP1eAHIck","name":"Amnésie sélective","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Pendant un jour, perte totale d’une compétence, à l’exclusion du Draconic. Déterminer aléatoirement la compétence visée qui, pratiquement, retourne au niveau de base. Si elle est déjà au niveau de base, en choisir une autre.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"name":"Idée fixe : Appeler les hommes «madame» et les femmes «messire»","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"appeler_hommes_femmes.png","effects":[],"_id":"j2xIrFWYqhDM4TcN"}
|
{"_id":"iPYPgxL2uUnphStc","name":"Idée fixe : Garder une main sur la tête","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"garder_main.png","effects":[]}
|
||||||
{"name":"Désir lancinant : Se soûler (minimum pas frais)","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"se_souler.png","effects":[],"_id":"jShpKV8mVcqWmYvp"}
|
{"_id":"j2xIrFWYqhDM4TcN","name":"Idée fixe : Appeler les hommes «madame» et les femmes «messire»","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"appeler_hommes_femmes.png","effects":[]}
|
||||||
{"_id":"kHWwwxA0alcpDYpf","name":"Insomnie","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Impossibilité totale de dormir, et donc de rêver, pendant un jour.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp"}
|
{"_id":"jShpKV8mVcqWmYvp","name":"Désir lancinant : Se soûler (minimum pas frais)","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"se_souler.png","effects":[]}
|
||||||
{"_id":"lBkO8FvFqXoKNhvk","name":"Conquête","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Avant de pouvoir à nouveau faire usage du haut-rêve, y compris déclencher volontairement un sort mis en réserve, le haut-rêvant doit se rendre dans une certaine case des TMR déterminée aléatoirement et la <em>maîtriser</em>, difficulté -7. Ce peut être n’importe quelle case, sauf une case humide. En cas d’échec, la concentration est rompue ; il n’y a pas de souffle de Dragon en cas d’échec total.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp"}
|
{"_id":"kHWwwxA0alcpDYpf","name":"Insomnie","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Impossibilité totale de dormir, et donc de rêver, pendant un jour.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"name":"Désir lancinant : Construire une cabane","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"construire_cabane.png","effects":[],"_id":"mN0yghXkFfj2YctJ"}
|
{"_id":"lBkO8FvFqXoKNhvk","name":"Conquête","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Avant de pouvoir à nouveau faire usage du haut-rêve, y compris déclencher volontairement un sort mis en réserve, le haut-rêvant doit se rendre dans une certaine case des TMR déterminée aléatoirement et la <em>maîtriser</em>, difficulté -7. Ce peut être n’importe quelle case, sauf une case humide. En cas d’échec, la concentration est rompue ; il n’y a pas de souffle de Dragon en cas d’échec total.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"name":"Désir lancinant : Embrasser un cochon sur le groin","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"embrasser_cochon.png","effects":[],"_id":"sjXBBr85OBk4Yg4t"}
|
{"_id":"mN0yghXkFfj2YctJ","name":"Désir lancinant : Construire une cabane","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
{"_id":"vft88ioHpGxMzdML","name":"Dépouillement","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Faire don de toute la monnaie actuellement possédée à la première personne inconnue rencontrée. En attendant, se garder d’aucune dépense.</p>","refoulement":2},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp"}
|
{"_id":"sjXBBr85OBk4Yg4t","name":"Désir lancinant : Embrasser un cochon sur le groin","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Tant que satisfaction n'est pas obtenue, aucun point d'expérience ne peut plus être gagné par l'exercice en cas de particulière et d'ajustement final négatif.<br />Les points d'expérience dus au stress ne sont pas affectés.</p>","refoulement":1},"flags":{},"img":"embrasser_cochon.png","effects":[]}
|
||||||
{"name":"Idée fixe : Faire le mort","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"faire_mort.png","effects":[],"_id":"xa4t9Lbt6uLEjap6"}
|
{"_id":"vft88ioHpGxMzdML","name":"Dépouillement","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"type":"queue","data":{"description":"<p>Faire don de toute la monnaie actuellement possédée à la première personne inconnue rencontrée. En attendant, se garder d’aucune dépense.</p>","refoulement":2},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp","effects":[]}
|
||||||
|
{"_id":"xa4t9Lbt6uLEjap6","name":"Idée fixe : Faire le mort","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"queue","data":{"description":"<p>Prend effet immédiatement et dure jusqu'à la <strong>fin de l'heure du Château Dormant </strong>du <strong>lendemain.<br /></strong>Si passé ce délai, l'occasion de la manifester ne s'est pas présentée, la queue prend fin.</p>\n<p>Si elle entre en contradiction avec une autre queue, retirer.</p>","refoulement":1},"flags":{},"img":"faire_mort.png","effects":[]}
|
||||||
|