Merge branch 'main' into design/action-settings-dialog-style
18
assets/icons/dice/adv/d10.svg
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="40 40 100 100" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="200" y1="300" x2="450" y2="350">
|
||||
<stop offset="3%" stop-color="#40A640"/>
|
||||
<stop offset="85%" stop-color="#011B01"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<g fill="url(#gold-gradient)">
|
||||
<g transform="matrix(1.1679092,0,0,1.1679092,-274.931,-137.53749)">
|
||||
<path d="M313.653,154.602l-26.488,55.612l24.356,15.89l26.354-15.928L313.653,154.602z"/>
|
||||
<path d="M314.9,153.687l24.49,55.919l14.175-4.584l0.915-22.612L314.9,153.687z"/>
|
||||
<path d="M312.359,227.393v8.568l40.76-28.762l-13.608,3.825L312.359,227.393z"/>
|
||||
<path d="M312.359,153.927l-26.756,55.732l-13.925-5.99l-1.229-22.679L312.359,153.927z"/>
|
||||
<path d="M310.517,227.213v8.75l-39.019-30.157l13.513,5.275L310.517,227.213z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 927 B |
15
assets/icons/dice/adv/d12.svg
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="20%" y1="20%" x2="100%" y2="100%">
|
||||
<stop offset="3%" stop-color="#40A640"/>
|
||||
<stop offset="85%" stop-color="#011B01"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<path fill="url(#gold-gradient)" d="M34.449,72.826L23.851,41.064l26.853-21.056l27.455,21.056 l-10.2,32.344L34.449,72.826z"/>
|
||||
<path fill="url(#gold-gradient)" d="M2.878,34.373L3.77,66.281l17.192,23.602l12.24-15.092 l-11.28-34.152L2.878,34.373z"/>
|
||||
<path fill="url(#gold-gradient)" d="M67.664,75.568l-33.525-0.201L23.358,90.52l27.099,8.449 l27.684-8.83L67.664,75.568z"/>
|
||||
<path fill="url(#gold-gradient)" d="M4.499,33.375L21.4,10.646l27.974-9.616v16.901L22.35,39.216 L4.499,33.375z"/>
|
||||
<path fill="url(#gold-gradient)" d="M52.702,1.047l27.682,9.325l16.153,23.325l-17.028,5.967 l-27.1-21.423L52.702,1.047z"/>
|
||||
<path fill="url(#gold-gradient)" d="M69.944,74.227l10.415-31.761l16.762-5.829l-0.076,28.558 L80.436,88.506L69.944,74.227z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
11
assets/icons/dice/adv/d20.svg
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 280 320" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="120%" y1="120%" x2="200%" y2="200%">
|
||||
<stop offset="3%" stop-color="#40A640"/>
|
||||
<stop offset="85%" stop-color="#011B01"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g transform="translate(-246.69456,-375.66745)">
|
||||
<path fill="url(#gold-gradient)" d="M379.93,375.668c-0.57,0.019-1.226,0.228-1.585,0.731l-80.673,96.527 c-1.342,1.681-1.433,2.056,0.366,2.073l161.59-0.427c2.221-0.182,2.23-0.07,0.792-1.951l-79.27-96.527 C380.986,375.84,380.501,375.654,379.93,375.668L379.93,375.668z M395.419,384.266l72.746,88.478 c0.974,1.182,1.212,1.249,2.927,0.427l38.354-17.562c2.513-1.134,2.165-1.366,0.487-2.5L395.419,384.266z M361.454,387.498 c-0.034-0.072-0.625,0.37-1.952,1.281L253.89,458.292l33.05,15.001c1.724,0.568,2.239,0.599,3.354-0.793l69.698-83.234 C360.973,388.129,361.487,387.57,361.454,387.498L361.454,387.498z M515.056,459.756c-0.328,0.023-0.846,0.212-1.646,0.548 l-39.392,17.989c-1.398,0.635-1.311,1.49-0.792,2.561l45.793,116.162l-3.292-135.309 C515.626,460.228,515.604,459.717,515.056,459.756L515.056,459.756z M250.902,463.354l-4.208,131.651l38.782-113.907 c0.573-1.682,0.559-1.767-0.61-2.317L250.902,463.354L250.902,463.354z M461.761,480.427l-165.249,0.427 c-2.361-0.035-2.264-0.033-1.098,1.89l83.905,141.529c1.417,2.159,1.265,2.092,2.744-0.121l80.612-141.772 C463.383,481.253,463.887,480.466,461.761,480.427L461.761,480.427z M468.347,484.147c-0.152,0.064-0.318,0.639-0.793,1.524 l-81.16,142.809c-0.887,1.508-1.097,2.048,1.036,1.708l128.845-17.744c2.044-0.467,1.982-1.197,1.281-3.232l-48.6-123.479 C468.635,484.55,468.5,484.083,468.347,484.147L468.347,484.147z M290.171,485.489c-0.158,0.113-0.3,0.715-0.609,1.585 l-41.16,121.162c-0.701,2.573-0.78,3.541,1.829,4.024l123.113,17.805c2.328,0.351,2.03-0.822,1.463-1.951l-83.783-141.345 C290.498,485.702,290.329,485.375,290.171,485.489L290.171,485.489z M258.158,619.334l120.796,68.538 c1.564,0.949,1.929,0.604,1.707-1.036l-2.561-48.05c-0.07-1.551-0.28-2.183-1.89-2.439L258.158,619.334L258.158,619.334z M507.922,619.455l-122.625,16.952c-1.618,0.238-1.326,1.032-1.342,2.195l2.622,48.903c0.135,1.483,0.091,2.017,1.89,1.098 L507.922,619.455z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
12
assets/icons/dice/adv/d4.svg
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="5 0 64 74" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="20%" y1="20%" x2="100%" y2="100%">
|
||||
<stop offset="3%" stop-color="#40A640"/>
|
||||
<stop offset="85%" stop-color="#011B01"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<polygon points="36.421875,0.2080078 0.2910156,62.7871094 36.421875,41.8974609" fill="url(#gold-gradient)"/>
|
||||
<polygon points="37.5771484,0.2094727 37.5771484,41.8984375 73.7089844,62.7871094" fill="url(#gold-gradient)"/>
|
||||
<polygon points="36.9990234,42.8984375 0.8603516,63.7919922 73.1376953,63.7919922" fill="url(#gold-gradient)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 710 B |
9
assets/icons/dice/adv/d6.svg
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="3%" stop-color="#40A640"/>
|
||||
<stop offset="85%" stop-color="#011B01"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g fill="url(#gold-gradient)"><rect x="6" y="6" width="52" height="52" rx="4"/></g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 453 B |
16
assets/icons/dice/adv/d8.svg
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="40 40 100 100" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="320" y1="520" x2="380" y2="620">
|
||||
<stop offset="3%" stop-color="#40A640"/>
|
||||
<stop offset="85%" stop-color="#011B01"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g>
|
||||
<g transform="translate(-242.40981,-473.89862)">
|
||||
<path fill="url(#gold-gradient)" d="M293.527,582.264l38.894-67.597l39.229,67.261L293.527,582.264z"/>
|
||||
<path fill="url(#gold-gradient)" d="M291.304,581.946l-0.562-38.354l39.36-29.039L291.304,581.946z"/>
|
||||
<path fill="url(#gold-gradient)" d="M373.477,581.529l0.6-37.685l-39.565-29.314L373.477,581.529z"/>
|
||||
<path fill="url(#gold-gradient)" d="M332.421,613.268l-38.894-29.016l78.122-0.621L332.421,613.268z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 914 B |
1
assets/icons/dice/default/d10.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="40 40 100 100" width="64" height="64"><g><g transform="matrix(1.1679092,0,0,1.1679092,-274.931,-137.53749)"><path fill="#efe6d8" d="M313.653,154.602l-26.488,55.612l24.356,15.89l26.354-15.928 L313.653,154.602z"/><path fill="#efe6d8" d="M314.9,153.687l24.49,55.919l14.175-4.584l0.915-22.612 L314.9,153.687z"/><path fill="#efe6d8" d="M312.359,227.393v8.568l40.76-28.762l-13.608,3.825 L312.359,227.393z"/><path fill="#efe6d8" d="M312.359,153.927l-26.756,55.732l-13.925-5.99l-1.229-22.679 L312.359,153.927z"/><path fill="#efe6d8" d="M310.517,227.213v8.75l-39.019-30.157l13.513,5.275 L310.517,227.213z"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 676 B |
1
assets/icons/dice/default/d12.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="64" height="64"><path fill="#efe6d8" d="M34.449,72.826L23.851,41.064l26.853-21.056l27.455,21.056 l-10.2,32.344L34.449,72.826z"/><path fill="#efe6d8" d="M2.878,34.373L3.77,66.281l17.192,23.602l12.24-15.092 l-11.28-34.152L2.878,34.373z"/><path fill="#efe6d8" d="M67.664,75.568l-33.525-0.201L23.358,90.52l27.099,8.449 l27.684-8.83L67.664,75.568z"/><path fill="#efe6d8" d="M4.499,33.375L21.4,10.646l27.974-9.616v16.901L22.35,39.216 L4.499,33.375z"/><path fill="#efe6d8" d="M52.702,1.047l27.682,9.325l16.153,23.325l-17.028,5.967 l-27.1-21.423L52.702,1.047z"/><path fill="#efe6d8" d="M69.944,74.227l10.415-31.761l16.762-5.829l-0.076,28.558 L80.436,88.506L69.944,74.227z"/></svg>
|
||||
|
After Width: | Height: | Size: 747 B |
3
assets/icons/dice/default/d20.svg
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 280 320" width="64" height="64">
|
||||
<g transform="translate(-246.69456,-375.66745)">
|
||||
<path fill="#efe6d8" d="M379.93,375.668c-0.57,0.019-1.226,0.228-1.585,0.731l-80.673,96.527 c-1.342,1.681-1.433,2.056,0.366,2.073l161.59-0.427c2.221-0.182,2.23-0.07,0.792-1.951l-79.27-96.527 C380.986,375.84,380.501,375.654,379.93,375.668L379.93,375.668z M395.419,384.266l72.746,88.478 c0.974,1.182,1.212,1.249,2.927,0.427l38.354-17.562c2.513-1.134,2.165-1.366,0.487-2.5L395.419,384.266z M361.454,387.498 c-0.034-0.072-0.625,0.37-1.952,1.281L253.89,458.292l33.05,15.001c1.724,0.568,2.239,0.599,3.354-0.793l69.698-83.234 C360.973,388.129,361.487,387.57,361.454,387.498L361.454,387.498z M515.056,459.756c-0.328,0.023-0.846,0.212-1.646,0.548 l-39.392,17.989c-1.398,0.635-1.311,1.49-0.792,2.561l45.793,116.162l-3.292-135.309 C515.626,460.228,515.604,459.717,515.056,459.756L515.056,459.756z M250.902,463.354l-4.208,131.651l38.782-113.907 c0.573-1.682,0.559-1.767-0.61-2.317L250.902,463.354L250.902,463.354z M461.761,480.427l-165.249,0.427 c-2.361-0.035-2.264-0.033-1.098,1.89l83.905,141.529c1.417,2.159,1.265,2.092,2.744-0.121l80.612-141.772 C463.383,481.253,463.887,480.466,461.761,480.427L461.761,480.427z M468.347,484.147c-0.152,0.064-0.318,0.639-0.793,1.524 l-81.16,142.809c-0.887,1.508-1.097,2.048,1.036,1.708l128.845-17.744c2.044-0.467,1.982-1.197,1.281-3.232l-48.6-123.479 C468.635,484.55,468.5,484.083,468.347,484.147L468.347,484.147z M290.171,485.489c-0.158,0.113-0.3,0.715-0.609,1.585 l-41.16,121.162c-0.701,2.573-0.78,3.541,1.829,4.024l123.113,17.805c2.328,0.351,2.03-0.822,1.463-1.951l-83.783-141.345 C290.498,485.702,290.329,485.375,290.171,485.489L290.171,485.489z M258.158,619.334l120.796,68.538 c1.564,0.949,1.929,0.604,1.707-1.036l-2.561-48.05c-0.07-1.551-0.28-2.183-1.89-2.439L258.158,619.334L258.158,619.334z M507.922,619.455l-122.625,16.952c-1.618,0.238-1.326,1.032-1.342,2.195l2.622,48.903c0.135,1.483,0.091,2.017,1.89,1.098 L507.922,619.455z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 2 KiB |
1
assets/icons/dice/default/d4.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="5 0 64 74" width="64" height="64"><polygon points="36.421875,0.2080078 0.2910156,62.7871094 36.421875,41.8974609" fill="#efe6d8"/><polygon points="37.5771484,0.2094727 37.5771484,41.8984375 73.7089844,62.7871094" fill="#efe6d8"/><polygon points="36.9990234,42.8984375 0.8603516,63.7919922 73.1376953,63.7919922" fill="#efe6d8"/></svg>
|
||||
|
After Width: | Height: | Size: 383 B |
1
assets/icons/dice/default/d6.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64"><g fill="#efe6d8"><rect x="6" y="6" width="52" height="52" rx="4"/></g></svg>
|
||||
|
After Width: | Height: | Size: 160 B |
1
assets/icons/dice/default/d8.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="40 40 100 100" width="64" height="64"><g><g transform="translate(-242.40981,-473.89862)"><path fill="#efe6d8" d="M293.527,582.264l38.894-67.597l39.229,67.261L293.527,582.264z"/><path fill="#efe6d8" d="M291.304,581.946l-0.562-38.354l39.36-29.039L291.304,581.946z"/><path fill="#efe6d8" d="M373.477,581.529l0.6-37.685l-39.565-29.314L373.477,581.529z"/><path fill="#efe6d8" d="M332.421,613.268l-38.894-29.016l78.122-0.621L332.421,613.268z"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 501 B |
18
assets/icons/dice/disadv/d10.svg
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="40 40 100 100" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="200" y1="300" x2="450" y2="350">
|
||||
<stop offset="3%" stop-color="#E54E4E"/>
|
||||
<stop offset="85%" stop-color="#3C0000"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<g fill="url(#gold-gradient)">
|
||||
<g transform="matrix(1.1679092,0,0,1.1679092,-274.931,-137.53749)">
|
||||
<path d="M313.653,154.602l-26.488,55.612l24.356,15.89l26.354-15.928L313.653,154.602z"/>
|
||||
<path d="M314.9,153.687l24.49,55.919l14.175-4.584l0.915-22.612L314.9,153.687z"/>
|
||||
<path d="M312.359,227.393v8.568l40.76-28.762l-13.608,3.825L312.359,227.393z"/>
|
||||
<path d="M312.359,153.927l-26.756,55.732l-13.925-5.99l-1.229-22.679L312.359,153.927z"/>
|
||||
<path d="M310.517,227.213v8.75l-39.019-30.157l13.513,5.275L310.517,227.213z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 927 B |
15
assets/icons/dice/disadv/d12.svg
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="20%" y1="20%" x2="100%" y2="100%">
|
||||
<stop offset="3%" stop-color="#E54E4E"/>
|
||||
<stop offset="85%" stop-color="#3C0000"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<path fill="url(#gold-gradient)" d="M34.449,72.826L23.851,41.064l26.853-21.056l27.455,21.056 l-10.2,32.344L34.449,72.826z"/>
|
||||
<path fill="url(#gold-gradient)" d="M2.878,34.373L3.77,66.281l17.192,23.602l12.24-15.092 l-11.28-34.152L2.878,34.373z"/>
|
||||
<path fill="url(#gold-gradient)" d="M67.664,75.568l-33.525-0.201L23.358,90.52l27.099,8.449 l27.684-8.83L67.664,75.568z"/>
|
||||
<path fill="url(#gold-gradient)" d="M4.499,33.375L21.4,10.646l27.974-9.616v16.901L22.35,39.216 L4.499,33.375z"/>
|
||||
<path fill="url(#gold-gradient)" d="M52.702,1.047l27.682,9.325l16.153,23.325l-17.028,5.967 l-27.1-21.423L52.702,1.047z"/>
|
||||
<path fill="url(#gold-gradient)" d="M69.944,74.227l10.415-31.761l16.762-5.829l-0.076,28.558 L80.436,88.506L69.944,74.227z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
11
assets/icons/dice/disadv/d20.svg
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 280 320" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="120%" y1="120%" x2="200%" y2="200%">
|
||||
<stop offset="3%" stop-color="#E54E4E"/>
|
||||
<stop offset="85%" stop-color="#3C0000"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g transform="translate(-246.69456,-375.66745)">
|
||||
<path fill="url(#gold-gradient)" d="M379.93,375.668c-0.57,0.019-1.226,0.228-1.585,0.731l-80.673,96.527 c-1.342,1.681-1.433,2.056,0.366,2.073l161.59-0.427c2.221-0.182,2.23-0.07,0.792-1.951l-79.27-96.527 C380.986,375.84,380.501,375.654,379.93,375.668L379.93,375.668z M395.419,384.266l72.746,88.478 c0.974,1.182,1.212,1.249,2.927,0.427l38.354-17.562c2.513-1.134,2.165-1.366,0.487-2.5L395.419,384.266z M361.454,387.498 c-0.034-0.072-0.625,0.37-1.952,1.281L253.89,458.292l33.05,15.001c1.724,0.568,2.239,0.599,3.354-0.793l69.698-83.234 C360.973,388.129,361.487,387.57,361.454,387.498L361.454,387.498z M515.056,459.756c-0.328,0.023-0.846,0.212-1.646,0.548 l-39.392,17.989c-1.398,0.635-1.311,1.49-0.792,2.561l45.793,116.162l-3.292-135.309 C515.626,460.228,515.604,459.717,515.056,459.756L515.056,459.756z M250.902,463.354l-4.208,131.651l38.782-113.907 c0.573-1.682,0.559-1.767-0.61-2.317L250.902,463.354L250.902,463.354z M461.761,480.427l-165.249,0.427 c-2.361-0.035-2.264-0.033-1.098,1.89l83.905,141.529c1.417,2.159,1.265,2.092,2.744-0.121l80.612-141.772 C463.383,481.253,463.887,480.466,461.761,480.427L461.761,480.427z M468.347,484.147c-0.152,0.064-0.318,0.639-0.793,1.524 l-81.16,142.809c-0.887,1.508-1.097,2.048,1.036,1.708l128.845-17.744c2.044-0.467,1.982-1.197,1.281-3.232l-48.6-123.479 C468.635,484.55,468.5,484.083,468.347,484.147L468.347,484.147z M290.171,485.489c-0.158,0.113-0.3,0.715-0.609,1.585 l-41.16,121.162c-0.701,2.573-0.78,3.541,1.829,4.024l123.113,17.805c2.328,0.351,2.03-0.822,1.463-1.951l-83.783-141.345 C290.498,485.702,290.329,485.375,290.171,485.489L290.171,485.489z M258.158,619.334l120.796,68.538 c1.564,0.949,1.929,0.604,1.707-1.036l-2.561-48.05c-0.07-1.551-0.28-2.183-1.89-2.439L258.158,619.334L258.158,619.334z M507.922,619.455l-122.625,16.952c-1.618,0.238-1.326,1.032-1.342,2.195l2.622,48.903c0.135,1.483,0.091,2.017,1.89,1.098 L507.922,619.455z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
12
assets/icons/dice/disadv/d4.svg
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="5 0 64 74" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="20%" y1="20%" x2="100%" y2="100%">
|
||||
<stop offset="3%" stop-color="#E54E4E"/>
|
||||
<stop offset="85%" stop-color="#3C0000"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<polygon points="36.421875,0.2080078 0.2910156,62.7871094 36.421875,41.8974609" fill="url(#gold-gradient)"/>
|
||||
<polygon points="37.5771484,0.2094727 37.5771484,41.8984375 73.7089844,62.7871094" fill="url(#gold-gradient)"/>
|
||||
<polygon points="36.9990234,42.8984375 0.8603516,63.7919922 73.1376953,63.7919922" fill="url(#gold-gradient)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 710 B |
9
assets/icons/dice/disadv/d6.svg
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="3%" stop-color="#E54E4E"/>
|
||||
<stop offset="85%" stop-color="#3C0000"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g fill="url(#gold-gradient)"><rect x="6" y="6" width="52" height="52" rx="4"/></g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 453 B |
16
assets/icons/dice/disadv/d8.svg
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="40 40 100 100" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="320" y1="520" x2="380" y2="620">
|
||||
<stop offset="3%" stop-color="#E54E4E"/>
|
||||
<stop offset="85%" stop-color="#3C0000"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g>
|
||||
<g transform="translate(-242.40981,-473.89862)">
|
||||
<path fill="url(#gold-gradient)" d="M293.527,582.264l38.894-67.597l39.229,67.261L293.527,582.264z"/>
|
||||
<path fill="url(#gold-gradient)" d="M291.304,581.946l-0.562-38.354l39.36-29.039L291.304,581.946z"/>
|
||||
<path fill="url(#gold-gradient)" d="M373.477,581.529l0.6-37.685l-39.565-29.314L373.477,581.529z"/>
|
||||
<path fill="url(#gold-gradient)" d="M332.421,613.268l-38.894-29.016l78.122-0.621L332.421,613.268z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 914 B |
20
assets/icons/dice/fear/d10.svg
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="40 40 100 100" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="200" y1="300" x2="450" y2="350">
|
||||
<stop offset="3.51%" stop-color="#352AB2"/>
|
||||
<stop offset="96.49%" stop-color="#18162E"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<g fill="url(#gold-gradient)">
|
||||
<g transform="matrix(1.1679092,0,0,1.1679092,-274.931,-137.53749)">
|
||||
<path d="M313.653,154.602l-26.488,55.612l24.356,15.89l26.354-15.928L313.653,154.602z"/>
|
||||
<path d="M314.9,153.687l24.49,55.919l14.175-4.584l0.915-22.612L314.9,153.687z"/>
|
||||
<path d="M312.359,227.393v8.568l40.76-28.762l-13.608,3.825L312.359,227.393z"/>
|
||||
<path d="M312.359,153.927l-26.756,55.732l-13.925-5.99l-1.229-22.679L312.359,153.927z"/>
|
||||
<path d="M310.517,227.213v8.75l-39.019-30.157l13.513,5.275L310.517,227.213z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 971 B |
15
assets/icons/dice/fear/d12.svg
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="20%" y1="20%" x2="100%" y2="100%">
|
||||
<stop offset="3.51%" stop-color="#352AB2"/>
|
||||
<stop offset="96.49%" stop-color="#18162E"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<path fill="url(#gold-gradient)" d="M34.449,72.826L23.851,41.064l26.853-21.056l27.455,21.056 l-10.2,32.344L34.449,72.826z"/>
|
||||
<path fill="url(#gold-gradient)" d="M2.878,34.373L3.77,66.281l17.192,23.602l12.24-15.092 l-11.28-34.152L2.878,34.373z"/>
|
||||
<path fill="url(#gold-gradient)" d="M67.664,75.568l-33.525-0.201L23.358,90.52l27.099,8.449 l27.684-8.83L67.664,75.568z"/>
|
||||
<path fill="url(#gold-gradient)" d="M4.499,33.375L21.4,10.646l27.974-9.616v16.901L22.35,39.216 L4.499,33.375z"/>
|
||||
<path fill="url(#gold-gradient)" d="M52.702,1.047l27.682,9.325l16.153,23.325l-17.028,5.967 l-27.1-21.423L52.702,1.047z"/>
|
||||
<path fill="url(#gold-gradient)" d="M69.944,74.227l10.415-31.761l16.762-5.829l-0.076,28.558 L80.436,88.506L69.944,74.227z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
11
assets/icons/dice/fear/d20.svg
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 280 320" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="120%" y1="120%" x2="200%" y2="200%">
|
||||
<stop offset="3.51%" stop-color="#352AB2"/>
|
||||
<stop offset="96.49%" stop-color="#18162E"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g transform="translate(-246.69456,-375.66745)">
|
||||
<path fill="url(#gold-gradient)" d="M379.93,375.668c-0.57,0.019-1.226,0.228-1.585,0.731l-80.673,96.527 c-1.342,1.681-1.433,2.056,0.366,2.073l161.59-0.427c2.221-0.182,2.23-0.07,0.792-1.951l-79.27-96.527 C380.986,375.84,380.501,375.654,379.93,375.668L379.93,375.668z M395.419,384.266l72.746,88.478 c0.974,1.182,1.212,1.249,2.927,0.427l38.354-17.562c2.513-1.134,2.165-1.366,0.487-2.5L395.419,384.266z M361.454,387.498 c-0.034-0.072-0.625,0.37-1.952,1.281L253.89,458.292l33.05,15.001c1.724,0.568,2.239,0.599,3.354-0.793l69.698-83.234 C360.973,388.129,361.487,387.57,361.454,387.498L361.454,387.498z M515.056,459.756c-0.328,0.023-0.846,0.212-1.646,0.548 l-39.392,17.989c-1.398,0.635-1.311,1.49-0.792,2.561l45.793,116.162l-3.292-135.309 C515.626,460.228,515.604,459.717,515.056,459.756L515.056,459.756z M250.902,463.354l-4.208,131.651l38.782-113.907 c0.573-1.682,0.559-1.767-0.61-2.317L250.902,463.354L250.902,463.354z M461.761,480.427l-165.249,0.427 c-2.361-0.035-2.264-0.033-1.098,1.89l83.905,141.529c1.417,2.159,1.265,2.092,2.744-0.121l80.612-141.772 C463.383,481.253,463.887,480.466,461.761,480.427L461.761,480.427z M468.347,484.147c-0.152,0.064-0.318,0.639-0.793,1.524 l-81.16,142.809c-0.887,1.508-1.097,2.048,1.036,1.708l128.845-17.744c2.044-0.467,1.982-1.197,1.281-3.232l-48.6-123.479 C468.635,484.55,468.5,484.083,468.347,484.147L468.347,484.147z M290.171,485.489c-0.158,0.113-0.3,0.715-0.609,1.585 l-41.16,121.162c-0.701,2.573-0.78,3.541,1.829,4.024l123.113,17.805c2.328,0.351,2.03-0.822,1.463-1.951l-83.783-141.345 C290.498,485.702,290.329,485.375,290.171,485.489L290.171,485.489z M258.158,619.334l120.796,68.538 c1.564,0.949,1.929,0.604,1.707-1.036l-2.561-48.05c-0.07-1.551-0.28-2.183-1.89-2.439L258.158,619.334L258.158,619.334z M507.922,619.455l-122.625,16.952c-1.618,0.238-1.326,1.032-1.342,2.195l2.622,48.903c0.135,1.483,0.091,2.017,1.89,1.098 L507.922,619.455z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
12
assets/icons/dice/fear/d4.svg
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="5 0 64 74" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="20%" y1="20%" x2="100%" y2="100%">
|
||||
<stop offset="3.51%" stop-color="#352AB2"/>
|
||||
<stop offset="96.49%" stop-color="#18162E"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<polygon points="36.421875,0.2080078 0.2910156,62.7871094 36.421875,41.8974609" fill="url(#gold-gradient)"/>
|
||||
<polygon points="37.5771484,0.2094727 37.5771484,41.8984375 73.7089844,62.7871094" fill="url(#gold-gradient)"/>
|
||||
<polygon points="36.9990234,42.8984375 0.8603516,63.7919922 73.1376953,63.7919922" fill="url(#gold-gradient)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 716 B |
9
assets/icons/dice/fear/d6.svg
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="3.51%" stop-color="#352AB2"/>
|
||||
<stop offset="96.49%" stop-color="#18162E"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g fill="url(#gold-gradient)"><rect x="6" y="6" width="52" height="52" rx="4"/></g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 459 B |
16
assets/icons/dice/fear/d8.svg
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="40 40 100 100" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="320" y1="520" x2="380" y2="620">
|
||||
<stop offset="3.51%" stop-color="#352AB2"/>
|
||||
<stop offset="96.49%" stop-color="#18162E"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g>
|
||||
<g transform="translate(-242.40981,-473.89862)">
|
||||
<path fill="url(#gold-gradient)" d="M293.527,582.264l38.894-67.597l39.229,67.261L293.527,582.264z"/>
|
||||
<path fill="url(#gold-gradient)" d="M291.304,581.946l-0.562-38.354l39.36-29.039L291.304,581.946z"/>
|
||||
<path fill="url(#gold-gradient)" d="M373.477,581.529l0.6-37.685l-39.565-29.314L373.477,581.529z"/>
|
||||
<path fill="url(#gold-gradient)" d="M332.421,613.268l-38.894-29.016l78.122-0.621L332.421,613.268z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 920 B |
20
assets/icons/dice/hope/d10.svg
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="40 40 100 100" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="200" y1="300" x2="450" y2="350">
|
||||
<stop offset="3.51%" stop-color="#F3C267"/>
|
||||
<stop offset="96.49%" stop-color="#4C3407"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<g fill="url(#gold-gradient)">
|
||||
<g transform="matrix(1.1679092,0,0,1.1679092,-274.931,-137.53749)">
|
||||
<path d="M313.653,154.602l-26.488,55.612l24.356,15.89l26.354-15.928L313.653,154.602z"/>
|
||||
<path d="M314.9,153.687l24.49,55.919l14.175-4.584l0.915-22.612L314.9,153.687z"/>
|
||||
<path d="M312.359,227.393v8.568l40.76-28.762l-13.608,3.825L312.359,227.393z"/>
|
||||
<path d="M312.359,153.927l-26.756,55.732l-13.925-5.99l-1.229-22.679L312.359,153.927z"/>
|
||||
<path d="M310.517,227.213v8.75l-39.019-30.157l13.513,5.275L310.517,227.213z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 971 B |
15
assets/icons/dice/hope/d12.svg
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="20%" y1="20%" x2="100%" y2="100%">
|
||||
<stop offset="3.51%" stop-color="#F3C267"/>
|
||||
<stop offset="96.49%" stop-color="#4C3407"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<path fill="url(#gold-gradient)" d="M34.449,72.826L23.851,41.064l26.853-21.056l27.455,21.056 l-10.2,32.344L34.449,72.826z"/>
|
||||
<path fill="url(#gold-gradient)" d="M2.878,34.373L3.77,66.281l17.192,23.602l12.24-15.092 l-11.28-34.152L2.878,34.373z"/>
|
||||
<path fill="url(#gold-gradient)" d="M67.664,75.568l-33.525-0.201L23.358,90.52l27.099,8.449 l27.684-8.83L67.664,75.568z"/>
|
||||
<path fill="url(#gold-gradient)" d="M4.499,33.375L21.4,10.646l27.974-9.616v16.901L22.35,39.216 L4.499,33.375z"/>
|
||||
<path fill="url(#gold-gradient)" d="M52.702,1.047l27.682,9.325l16.153,23.325l-17.028,5.967 l-27.1-21.423L52.702,1.047z"/>
|
||||
<path fill="url(#gold-gradient)" d="M69.944,74.227l10.415-31.761l16.762-5.829l-0.076,28.558 L80.436,88.506L69.944,74.227z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
11
assets/icons/dice/hope/d20.svg
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 280 320" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="120%" y1="120%" x2="200%" y2="200%">
|
||||
<stop offset="3.51%" stop-color="#F3C267"/>
|
||||
<stop offset="96.49%" stop-color="#4C3407"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g transform="translate(-246.69456,-375.66745)">
|
||||
<path fill="url(#gold-gradient)" d="M379.93,375.668c-0.57,0.019-1.226,0.228-1.585,0.731l-80.673,96.527 c-1.342,1.681-1.433,2.056,0.366,2.073l161.59-0.427c2.221-0.182,2.23-0.07,0.792-1.951l-79.27-96.527 C380.986,375.84,380.501,375.654,379.93,375.668L379.93,375.668z M395.419,384.266l72.746,88.478 c0.974,1.182,1.212,1.249,2.927,0.427l38.354-17.562c2.513-1.134,2.165-1.366,0.487-2.5L395.419,384.266z M361.454,387.498 c-0.034-0.072-0.625,0.37-1.952,1.281L253.89,458.292l33.05,15.001c1.724,0.568,2.239,0.599,3.354-0.793l69.698-83.234 C360.973,388.129,361.487,387.57,361.454,387.498L361.454,387.498z M515.056,459.756c-0.328,0.023-0.846,0.212-1.646,0.548 l-39.392,17.989c-1.398,0.635-1.311,1.49-0.792,2.561l45.793,116.162l-3.292-135.309 C515.626,460.228,515.604,459.717,515.056,459.756L515.056,459.756z M250.902,463.354l-4.208,131.651l38.782-113.907 c0.573-1.682,0.559-1.767-0.61-2.317L250.902,463.354L250.902,463.354z M461.761,480.427l-165.249,0.427 c-2.361-0.035-2.264-0.033-1.098,1.89l83.905,141.529c1.417,2.159,1.265,2.092,2.744-0.121l80.612-141.772 C463.383,481.253,463.887,480.466,461.761,480.427L461.761,480.427z M468.347,484.147c-0.152,0.064-0.318,0.639-0.793,1.524 l-81.16,142.809c-0.887,1.508-1.097,2.048,1.036,1.708l128.845-17.744c2.044-0.467,1.982-1.197,1.281-3.232l-48.6-123.479 C468.635,484.55,468.5,484.083,468.347,484.147L468.347,484.147z M290.171,485.489c-0.158,0.113-0.3,0.715-0.609,1.585 l-41.16,121.162c-0.701,2.573-0.78,3.541,1.829,4.024l123.113,17.805c2.328,0.351,2.03-0.822,1.463-1.951l-83.783-141.345 C290.498,485.702,290.329,485.375,290.171,485.489L290.171,485.489z M258.158,619.334l120.796,68.538 c1.564,0.949,1.929,0.604,1.707-1.036l-2.561-48.05c-0.07-1.551-0.28-2.183-1.89-2.439L258.158,619.334L258.158,619.334z M507.922,619.455l-122.625,16.952c-1.618,0.238-1.326,1.032-1.342,2.195l2.622,48.903c0.135,1.483,0.091,2.017,1.89,1.098 L507.922,619.455z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
12
assets/icons/dice/hope/d4.svg
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="5 0 64 74" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="20%" y1="20%" x2="100%" y2="100%">
|
||||
<stop offset="3.51%" stop-color="#F3C267"/>
|
||||
<stop offset="96.49%" stop-color="#4C3407"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<polygon points="36.421875,0.2080078 0.2910156,62.7871094 36.421875,41.8974609" fill="url(#gold-gradient)"/>
|
||||
<polygon points="37.5771484,0.2094727 37.5771484,41.8984375 73.7089844,62.7871094" fill="url(#gold-gradient)"/>
|
||||
<polygon points="36.9990234,42.8984375 0.8603516,63.7919922 73.1376953,63.7919922" fill="url(#gold-gradient)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 716 B |
9
assets/icons/dice/hope/d6.svg
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="3.51%" stop-color="#F3C267"/>
|
||||
<stop offset="96.49%" stop-color="#4C3407"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g fill="url(#gold-gradient)"><rect x="6" y="6" width="52" height="52" rx="4"/></g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 459 B |
16
assets/icons/dice/hope/d8.svg
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="40 40 100 100" width="64" height="64">
|
||||
<defs>
|
||||
<linearGradient id="gold-gradient" gradientUnits="userSpaceOnUse" x1="320" y1="520" x2="380" y2="620">
|
||||
<stop offset="3.51%" stop-color="#F3C267"/>
|
||||
<stop offset="96.49%" stop-color="#4C3407"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g>
|
||||
<g transform="translate(-242.40981,-473.89862)">
|
||||
<path fill="url(#gold-gradient)" d="M293.527,582.264l38.894-67.597l39.229,67.261L293.527,582.264z"/>
|
||||
<path fill="url(#gold-gradient)" d="M291.304,581.946l-0.562-38.354l39.36-29.039L291.304,581.946z"/>
|
||||
<path fill="url(#gold-gradient)" d="M373.477,581.529l0.6-37.685l-39.565-29.314L373.477,581.529z"/>
|
||||
<path fill="url(#gold-gradient)" d="M332.421,613.268l-38.894-29.016l78.122-0.621L332.421,613.268z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 920 B |
|
|
@ -124,7 +124,7 @@ Hooks.once('init', () => {
|
|||
CONFIG.Token.rulerClass = placeables.DhTokenRuler;
|
||||
|
||||
CONFIG.ui.resources = applications.ui.DhFearTracker;
|
||||
CONFIG.ux.ContextMenu = applications.ux.ContextMenu;
|
||||
CONFIG.ux.ContextMenu = applications.ux.DHContextMenu;
|
||||
CONFIG.ux.TooltipManager = documents.DhTooltipManager;
|
||||
|
||||
game.socket.on(`system.${SYSTEM.id}`, socketRegistration.handleSocketEvent);
|
||||
|
|
|
|||
|
|
@ -245,7 +245,8 @@
|
|||
"potentialAdversaries": "Potential Adversaries",
|
||||
"adversaries": "Adversaries"
|
||||
},
|
||||
"basics": "Basics"
|
||||
"basics": "Basics",
|
||||
"dualityRoll": "Duality Roll"
|
||||
},
|
||||
"ActionType": {
|
||||
"passive": "Passive",
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ export default class CostSelectionDialog extends HandlebarsApplicationMixin(Appl
|
|||
static PARTS = {
|
||||
costSelection: {
|
||||
id: 'costSelection',
|
||||
template: 'systems/daggerheart/templates/dialogs/costSelection.hbs'
|
||||
template: 'systems/daggerheart/templates/dialogs/dice-roll/costSelection.hbs'
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -20,10 +20,12 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio
|
|||
static DEFAULT_OPTIONS = {
|
||||
tag: 'form',
|
||||
id: 'roll-selection',
|
||||
classes: ['daggerheart', 'views', 'roll-selection'],
|
||||
classes: ['daggerheart', 'dialog', 'dh-style', 'views', 'roll-selection'],
|
||||
position: {
|
||||
width: 400,
|
||||
height: 'auto'
|
||||
width: 550
|
||||
},
|
||||
window: {
|
||||
icon: 'fa-solid fa-dice'
|
||||
},
|
||||
actions: {
|
||||
updateIsAdvantage: this.updateIsAdvantage,
|
||||
|
|
@ -37,20 +39,29 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio
|
|||
}
|
||||
};
|
||||
|
||||
get title() {
|
||||
return this.config.title;
|
||||
}
|
||||
|
||||
/** @override */
|
||||
static PARTS = {
|
||||
costSelection: {
|
||||
id: 'costSelection',
|
||||
template: 'systems/daggerheart/templates/dialogs/costSelection.hbs'
|
||||
header: {
|
||||
id: 'header',
|
||||
template: 'systems/daggerheart/templates/dialogs/dice-roll/header.hbs'
|
||||
},
|
||||
rollSelection: {
|
||||
id: 'rollSelection',
|
||||
template: 'systems/daggerheart/templates/dialogs/rollSelection.hbs'
|
||||
template: 'systems/daggerheart/templates/dialogs/dice-roll/rollSelection.hbs'
|
||||
},
|
||||
costSelection: {
|
||||
id: 'costSelection',
|
||||
template: 'systems/daggerheart/templates/dialogs/dice-roll/costSelection.hbs'
|
||||
}
|
||||
};
|
||||
|
||||
async _prepareContext(_options) {
|
||||
const context = await super._prepareContext(_options);
|
||||
context.rollConfig = this.config;
|
||||
context.hasRoll = !!this.config.roll;
|
||||
context.roll = this.roll;
|
||||
context.rollType = this.roll?.constructor.name;
|
||||
|
|
@ -60,6 +71,7 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio
|
|||
}));
|
||||
context.selectedExperiences = this.config.experiences;
|
||||
context.advantage = this.config.roll?.advantage;
|
||||
context.disadvantage = this.config.roll?.disadvantage;
|
||||
context.diceOptions = CONFIG.DH.GENERAL.diceTypes;
|
||||
context.canRoll = true;
|
||||
context.isLite = this.config.roll?.lite;
|
||||
|
|
@ -75,7 +87,6 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio
|
|||
}
|
||||
context.extraFormula = this.config.extraFormula;
|
||||
context.formula = this.roll.constructFormula(this.config);
|
||||
|
||||
return context;
|
||||
}
|
||||
|
||||
|
|
@ -96,6 +107,9 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio
|
|||
|
||||
static updateIsAdvantage(_, button) {
|
||||
const advantage = Number(button.dataset.advantage);
|
||||
this.advantage = advantage === 1;
|
||||
this.disadvantage = advantage === -1;
|
||||
|
||||
this.config.roll.advantage = this.config.roll.advantage === advantage ? 0 : advantage;
|
||||
this.render();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ export default class DamageDialog extends HandlebarsApplicationMixin(Application
|
|||
static PARTS = {
|
||||
damageSelection: {
|
||||
id: 'damageSelection',
|
||||
template: 'systems/daggerheart/templates/dialogs/damageSelection.hbs'
|
||||
template: 'systems/daggerheart/templates/dialogs/dice-roll/damageSelection.hbs'
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ export default class DamageSelectionDialog extends HandlebarsApplicationMixin(Ap
|
|||
static PARTS = {
|
||||
damageSelection: {
|
||||
id: 'damageSelection',
|
||||
template: 'systems/daggerheart/templates/dialogs/damageSelection.hbs'
|
||||
template: 'systems/daggerheart/templates/dialogs/dice-roll/damageSelection.hbs'
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -85,7 +85,8 @@ export default class AdversarySheet extends DaggerheartSheet(ActorSheetV2) {
|
|||
static async reactionRoll(event) {
|
||||
const config = {
|
||||
event: event,
|
||||
title: `${this.actor.name} - Reaction Roll`,
|
||||
title: `Reaction Roll: ${this.actor.name}`,
|
||||
headerTitle: 'Adversary Reaction Roll',
|
||||
roll: {
|
||||
// modifier: null,
|
||||
type: 'reaction'
|
||||
|
|
|
|||
|
|
@ -490,6 +490,19 @@ export default class CharacterSheet extends DaggerheartSheet(ActorSheetV2) {
|
|||
}
|
||||
}
|
||||
|
||||
static async rollAttribute(event, button) {
|
||||
const abilityLabel = game.i18n.localize(abilities[button.dataset.attribute].label);
|
||||
const config = {
|
||||
event: event,
|
||||
title: `${game.i18n.localize('DAGGERHEART.General.dualityRoll')}: ${this.actor.name}`,
|
||||
headerTitle: game.i18n.format('DAGGERHEART.Chat.DualityRoll.AbilityCheckTitle', { ability: abilityLabel }),
|
||||
roll: {
|
||||
trait: button.dataset.attribute
|
||||
}
|
||||
};
|
||||
this.document.diceRoll(config);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/* Filter Menus */
|
||||
/* -------------------------------------------- */
|
||||
|
|
|
|||
|
|
@ -50,13 +50,13 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo
|
|||
element.addEventListener('mouseenter', this.hoverAdvantage)
|
||||
);
|
||||
html.querySelectorAll('.advantage').forEach(element =>
|
||||
element.addEventListener('click', event => this.selectAdvantage.bind(this)(event, data.message))
|
||||
element.addEventListener('click', event => this.selectAdvantage.call(this, event, data.message))
|
||||
);
|
||||
html.querySelectorAll('.ability-use-button').forEach(element =>
|
||||
element.addEventListener('click', event => this.abilityUseButton.bind(this)(event, data.message))
|
||||
element.addEventListener('click', event => this.abilityUseButton.call(this, event, data.message))
|
||||
);
|
||||
html.querySelectorAll('.action-use-button').forEach(element =>
|
||||
element.addEventListener('click', event => this.actionUseButton.bind(this)(event, data.message))
|
||||
element.addEventListener('click', event => this.actionUseButton.call(this, event, data.message))
|
||||
);
|
||||
};
|
||||
|
||||
|
|
@ -156,8 +156,8 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo
|
|||
|
||||
getTargetList = (event, message) => {
|
||||
const targetSelection = event.target
|
||||
.closest('.message-content')
|
||||
.querySelector('.button-target-selection.target-selected'),
|
||||
.closest('.message-content')
|
||||
.querySelector('.button-target-selection.target-selected'),
|
||||
isHit = Boolean(targetSelection.dataset.targetHit);
|
||||
return {
|
||||
isHit,
|
||||
|
|
@ -229,24 +229,54 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo
|
|||
}
|
||||
};
|
||||
|
||||
onToggleTargets = async event => {
|
||||
/**
|
||||
* Toggle visibility of target containers.
|
||||
* @param {MouseEvent} event
|
||||
*/
|
||||
onToggleTargets(event) {
|
||||
event.stopPropagation();
|
||||
$($(event.currentTarget).parent()).find('.target-container').toggleClass('hidden');
|
||||
};
|
||||
event.currentTarget.parentElement
|
||||
?.querySelectorAll('.target-container')
|
||||
.forEach(el => el.classList.toggle('hidden'));
|
||||
}
|
||||
|
||||
hoverAdvantage = event => {
|
||||
$(event.currentTarget).siblings('.advantage').toggleClass('unused');
|
||||
};
|
||||
/**
|
||||
* Highlight advantage icons on hover.
|
||||
* @param {MouseEvent} event
|
||||
*/
|
||||
hoverAdvantage(event) {
|
||||
const parent = event.currentTarget.parentElement;
|
||||
if (!parent) return;
|
||||
|
||||
selectAdvantage = async (event, message) => {
|
||||
parent.querySelectorAll('.advantage').forEach(el => {
|
||||
if (el !== event.currentTarget) {
|
||||
el.classList.toggle('unused');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handle selecting an advantage and disable further selection.
|
||||
* @param {MouseEvent} event
|
||||
* @param {object} message
|
||||
*/
|
||||
async selectAdvantage(event, message) {
|
||||
event.stopPropagation();
|
||||
|
||||
const updateMessage = game.messages.get(message._id);
|
||||
await updateMessage.update({ system: { advantageSelected: event.currentTarget.id === 'hope' ? 1 : 2 } });
|
||||
await updateMessage?.update({
|
||||
system: { advantageSelected: event.currentTarget.id === 'hope' ? 1 : 2 }
|
||||
});
|
||||
|
||||
const parent = event.currentTarget.parentElement;
|
||||
if (!parent) return;
|
||||
|
||||
parent.querySelectorAll('.advantage').forEach(el => {
|
||||
el.replaceWith(el.cloneNode(true));
|
||||
});
|
||||
}
|
||||
|
||||
$(event.currentTarget).siblings('.advantage').off('click');
|
||||
$(event.currentTarget).off('click');
|
||||
};
|
||||
|
||||
abilityUseButton = async (event, message) => {
|
||||
event.stopPropagation();
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
export { default as FilterMenu } from './filter-menu.mjs';
|
||||
export { default as ContextMenu } from './contextMenu.mjs';
|
||||
export { default as DHContextMenu } from './contextMenu.mjs';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,63 @@
|
|||
export default class DhContextMenu extends foundry.applications.ux.ContextMenu.implementation {
|
||||
/**
|
||||
* @typedef ContextMenuEntry
|
||||
* @property {string} name The context menu label. Can be localized.
|
||||
* @property {string} [icon] A string containing an HTML icon element for the menu item.
|
||||
* @property {string} [classes] Additional CSS classes to apply to this menu item.
|
||||
* @property {string} [group] An identifier for a group this entry belongs to.
|
||||
* @property {ContextMenuJQueryCallback} callback The function to call when the menu item is clicked.
|
||||
* @property {ContextMenuCondition|boolean} [condition] A function to call or boolean value to determine if this entry
|
||||
* appears in the menu.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @callback ContextMenuCondition
|
||||
* @param {jQuery|HTMLElement} html The element of the context menu entry.
|
||||
* @returns {boolean} Whether the entry should be rendered in the context menu.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @callback ContextMenuCallback
|
||||
* @param {HTMLElement} target The element that the context menu has been triggered for.
|
||||
* @returns {unknown}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @callback ContextMenuJQueryCallback
|
||||
* @param {HTMLElement|jQuery} target The element that the context menu has been triggered for. Will
|
||||
* either be a jQuery object or an HTMLElement instance, depending
|
||||
* on how the ContextMenu was configured.
|
||||
* @returns {unknown}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef ContextMenuOptions
|
||||
* @property {string} [eventName="contextmenu"] Optionally override the triggering event which can spawn the menu. If
|
||||
* the menu is using fixed positioning, this event must be a MouseEvent.
|
||||
* @property {ContextMenuCallback} [onOpen] A function to call when the context menu is opened.
|
||||
* @property {ContextMenuCallback} [onClose] A function to call when the context menu is closed.
|
||||
* @property {boolean} [fixed=false] If true, the context menu is given a fixed position rather than being
|
||||
* injected into the target.
|
||||
* @property {boolean} [jQuery=true] If true, callbacks will be passed jQuery objects instead of HTMLElement
|
||||
* instances.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef ContextMenuRenderOptions
|
||||
* @property {Event} [event] The event that triggered the context menu opening.
|
||||
* @property {boolean} [animate=true] Animate the context menu opening.
|
||||
*/
|
||||
|
||||
/**
|
||||
* A subclass of ContextMenu.
|
||||
* @extends {foundry.applications.ux.ContextMenu}
|
||||
*/
|
||||
export default class DHContextMenu extends foundry.applications.ux.ContextMenu {
|
||||
/**
|
||||
* @param {HTMLElement|jQuery} container - The HTML element that contains the context menu targets.
|
||||
* @param {string} selector - A CSS selector which activates the context menu.
|
||||
* @param {ContextMenuEntry[]} menuItems - An Array of entries to display in the menu
|
||||
* @param {ContextMenuOptions} [options] - Additional options to configure the context menu.
|
||||
*/
|
||||
constructor(container, selector, menuItems, options) {
|
||||
super(container, selector, menuItems, options);
|
||||
|
||||
|
|
@ -6,12 +65,21 @@ export default class DhContextMenu extends foundry.applications.ux.ContextMenu.i
|
|||
this.#jQuery = options.jQuery;
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether to pass jQuery objects or HTMLElement instances to callback.
|
||||
* @type {boolean}
|
||||
*/
|
||||
#jQuery;
|
||||
|
||||
/**@inheritdoc */
|
||||
activateListeners(menu) {
|
||||
menu.addEventListener('click', this.#onClickItem.bind(this));
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle click events on context menu items.
|
||||
* @param {PointerEvent} event The click event
|
||||
*/
|
||||
#onClickItem(event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
|
@ -22,6 +90,12 @@ export default class DhContextMenu extends foundry.applications.ux.ContextMenu.i
|
|||
this.close();
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Trigger a context menu event in response to a normal click on a additional options button.
|
||||
* @param {PointerEvent} event
|
||||
*/
|
||||
static triggerContextMenu(event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
|
|
|||
|
|
@ -197,10 +197,12 @@ export default class FilterMenu extends foundry.applications.ux.ContextMenu {
|
|||
}
|
||||
}));
|
||||
|
||||
const sort = arr => game.i18n.sortObjects(arr, 'name');
|
||||
|
||||
return [
|
||||
...game.i18n.sortObjects(typesFilters, 'name'),
|
||||
...game.i18n.sortObjects(burdenFilter, 'name'),
|
||||
...game.i18n.sortObjects(damageTypeFilter, 'name')
|
||||
...sort(typesFilters, 'name'),
|
||||
...sort(burdenFilter, 'name'),
|
||||
...sort(damageTypeFilter, 'name')
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -244,7 +244,6 @@ export default class DHBaseAction extends foundry.abstract.DataModel {
|
|||
}
|
||||
|
||||
if (this.hasRoll) {
|
||||
console.log(config);
|
||||
const rollConfig = this.prepareRoll(config);
|
||||
config.roll = rollConfig;
|
||||
config = await this.actor.diceRoll(config);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// import { actionsTypes } from '../action/_module.mjs';
|
||||
import { actionsTypes } from '../action/_module.mjs';
|
||||
|
||||
/**
|
||||
* Describes metadata about the item data model type
|
||||
|
|
@ -55,24 +55,28 @@ export default class BaseDataItem extends foundry.abstract.TypeDataModel {
|
|||
return data;
|
||||
}
|
||||
|
||||
/**@inheritdoc */
|
||||
async _preCreate(data, options, user) {
|
||||
// Skip if no initial action is required or actions already exist
|
||||
if (!this.constructor.metadata.hasInitialAction || !foundry.utils.isEmpty(this.actions)) return;
|
||||
const actionType = {
|
||||
weapon: 'attack'
|
||||
}[this.constructor.metadata.type],
|
||||
cls = game.system.api.models.actionsTypes[actionType],
|
||||
// cls = actionsTypes.attack,
|
||||
action = new cls(
|
||||
{
|
||||
_id: foundry.utils.randomID(),
|
||||
type: actionType,
|
||||
name: game.i18n.localize(CONFIG.DH.ACTIONS.actionTypes[actionType].name),
|
||||
...cls.getSourceConfig(this.parent)
|
||||
},
|
||||
{
|
||||
parent: this.parent
|
||||
}
|
||||
);
|
||||
|
||||
const metadataType = this.constructor.metadata.type;
|
||||
const actionType = { weapon: "attack" }[metadataType];
|
||||
const ActionClass = actionsTypes[actionType];
|
||||
|
||||
const action = new ActionClass(
|
||||
{
|
||||
_id: foundry.utils.randomID(),
|
||||
type: actionType,
|
||||
name: game.i18n.localize(CONFIG.DH.ACTIONS.actionTypes[actionType].name),
|
||||
...ActionClass.getSourceConfig(this.parent)
|
||||
},
|
||||
{
|
||||
parent: this.parent
|
||||
}
|
||||
);
|
||||
|
||||
this.updateSource({ actions: [action] });
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,49 +7,11 @@ export default class RegisterHandlebarsHelpers {
|
|||
join: this.join,
|
||||
add: this.add,
|
||||
subtract: this.subtract,
|
||||
objectSelector: this.objectSelector,
|
||||
includes: this.includes,
|
||||
debug: this.debug,
|
||||
signedNumber: this.signedNumber,
|
||||
length: this.length,
|
||||
switch: this.switch,
|
||||
case: this.case,
|
||||
eq: this.eq,
|
||||
ne: this.ne,
|
||||
lt: this.lt,
|
||||
gt: this.gt,
|
||||
lte: this.lte,
|
||||
gte: this.gte,
|
||||
and: this.and,
|
||||
or: this.or
|
||||
});
|
||||
}
|
||||
|
||||
static eq(v1, v2) {
|
||||
return v1 === v2;
|
||||
}
|
||||
static ne(v1, v2) {
|
||||
return v1 !== v2;
|
||||
}
|
||||
static lt(v1, v2) {
|
||||
return v1 < v2;
|
||||
}
|
||||
static gt(v1, v2) {
|
||||
return v1 > v2;
|
||||
}
|
||||
static lte(v1, v2) {
|
||||
return v1 <= v2;
|
||||
}
|
||||
static gte(v1, v2) {
|
||||
return v1 >= v2;
|
||||
}
|
||||
static and() {
|
||||
return Array.prototype.every.call(arguments, Boolean);
|
||||
}
|
||||
static or() {
|
||||
return Array.prototype.slice.call(arguments, 0, -1).some(Boolean);
|
||||
}
|
||||
|
||||
static times(nr, block) {
|
||||
var accum = '';
|
||||
for (var i = 0; i < nr; ++i) accum += block.fn(i);
|
||||
|
|
@ -72,59 +34,11 @@ export default class RegisterHandlebarsHelpers {
|
|||
return (Number.isNaN(aNum) ? 0 : aNum) - (Number.isNaN(bNum) ? 0 : bNum);
|
||||
}
|
||||
|
||||
static objectSelector(options) {
|
||||
let { title, values, titleFontSize, ids, style } = options.hash;
|
||||
|
||||
const titleLength = getWidthOfText(title, titleFontSize, true, true);
|
||||
const margins = 12;
|
||||
|
||||
const buttons = options.fn();
|
||||
const nrButtons = Math.max($(buttons).length - 1, 1);
|
||||
const iconWidth = 26;
|
||||
|
||||
const texts = values
|
||||
.reduce((acc, x, index) => {
|
||||
if (x) {
|
||||
acc.push(
|
||||
`<span class="object-select-item" data-action="viewObject" data-value="${ids[index]}">${x}</span>`
|
||||
);
|
||||
}
|
||||
|
||||
return acc;
|
||||
}, [])
|
||||
.join(' ');
|
||||
|
||||
const html = `<div ${style ? 'style="' + style + '"' : ''}">
|
||||
<div class="object-select-display iconbar">
|
||||
<span class="object-select-title">${title}</span>
|
||||
<div class="object-select-text" style="padding-left: ${titleLength + margins}px; padding-right: ${nrButtons * iconWidth}px;">
|
||||
${texts}
|
||||
</div>
|
||||
${buttons}
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
return new Handlebars.SafeString(html);
|
||||
}
|
||||
|
||||
static includes(list, item) {
|
||||
return list.includes(item);
|
||||
}
|
||||
|
||||
static signedNumber(number) {
|
||||
return number >= 0 ? `+${number}` : number;
|
||||
}
|
||||
|
||||
static length(obj) {
|
||||
return Object.keys(obj).length;
|
||||
}
|
||||
|
||||
static switch(value, options) {
|
||||
this.switch_value = value;
|
||||
this.switch_break = false;
|
||||
return options.fn(this);
|
||||
}
|
||||
|
||||
static case(value, options) {
|
||||
if (value == this.switch_value) {
|
||||
|
|
@ -132,9 +46,4 @@ export default class RegisterHandlebarsHelpers {
|
|||
return options.fn(this);
|
||||
}
|
||||
}
|
||||
|
||||
static debug(a) {
|
||||
console.log(a);
|
||||
return a;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -233,81 +233,6 @@ div.daggerheart.views.multiclass {
|
|||
}
|
||||
|
||||
.roll-dialog-container {
|
||||
.disadvantage,
|
||||
.advantage {
|
||||
border: 2px solid @secondaryAccent;
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 4px;
|
||||
margin-bottom: 6px;
|
||||
|
||||
&.selected {
|
||||
filter: drop-shadow(0px 0px 3px @mainShadow);
|
||||
}
|
||||
|
||||
input {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
button {
|
||||
flex: 0;
|
||||
border-radius: 50%;
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin: 2px 0 2px 4px;
|
||||
padding: 12px;
|
||||
|
||||
i {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.roll-dialog-experience-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
gap: @halfMargin;
|
||||
|
||||
.roll-dialog-chip {
|
||||
border: @thinBorder solid black;
|
||||
border-radius: 6px;
|
||||
min-width: calc(33% - 2px);
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: @halfMargin;
|
||||
cursor: pointer;
|
||||
padding: @fullPadding;
|
||||
background: grey;
|
||||
overflow: hidden;
|
||||
font-weight: bold;
|
||||
|
||||
&.hover {
|
||||
filter: drop-shadow(0 0 3px @mainShadow);
|
||||
}
|
||||
|
||||
span {
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
&.selected {
|
||||
background: green;
|
||||
|
||||
span {
|
||||
filter: drop-shadow(0 0 3px @secondaryShadow);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.hope-container {
|
||||
display: flex;
|
||||
gap: @fullMargin;
|
||||
|
|
@ -371,28 +296,6 @@ div.daggerheart.views.multiclass {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
.roll-dialog-experience-container {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
flex-wrap: wrap;
|
||||
gap: @halfMargin;
|
||||
flex: 1;
|
||||
height: 100%;
|
||||
|
||||
.experience-chip {
|
||||
opacity: 0.6;
|
||||
border-radius: 16px;
|
||||
width: calc(50% - 4px);
|
||||
white-space: nowrap;
|
||||
|
||||
&.active,
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
background: var(--button-hover-background-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -53,6 +53,8 @@
|
|||
@import './less/items/domainCard.less';
|
||||
@import './less/items/class.less';
|
||||
|
||||
@import './less/dialog/dice-roll/roll-selection.less';
|
||||
|
||||
@import './less/utils/colors.less';
|
||||
@import './less/utils/fonts.less';
|
||||
|
||||
|
|
|
|||
128
styles/less/dialog/dice-roll/roll-selection.less
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
@import '../../utils/colors.less';
|
||||
@import '../../utils/fonts.less';
|
||||
|
||||
.application.daggerheart.dialog.dh-style.views.roll-selection {
|
||||
.roll-dialog-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
|
||||
.dices-section {
|
||||
display: flex;
|
||||
gap: 60px;
|
||||
justify-content: center;
|
||||
|
||||
.dice-option {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
width: 120px;
|
||||
|
||||
.dice-icon {
|
||||
width: 70px;
|
||||
height: 70px;
|
||||
object-fit: contain;
|
||||
}
|
||||
.dice-select {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
height: 32px;
|
||||
|
||||
.label {
|
||||
font-family: @font-subtitle;
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-size: 16px;
|
||||
line-height: 19px;
|
||||
|
||||
color: light-dark(@dark, @beige);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.experience-container {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.experience-chip {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border-radius: 5px;
|
||||
width: fit-content;
|
||||
gap: 5px;
|
||||
cursor: pointer;
|
||||
padding: 5px;
|
||||
background: light-dark(@dark-blue-10, @golden-10);
|
||||
color: light-dark(@dark-blue, @golden);
|
||||
|
||||
.label {
|
||||
font-family: @font-body;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
line-height: 17px;
|
||||
}
|
||||
|
||||
&.selected {
|
||||
background: light-dark(@dark-blue-40, @golden-40);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.modifier-container {
|
||||
.advantage-chip,
|
||||
.disadvantage-chip {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border-radius: 5px;
|
||||
width: fit-content;
|
||||
gap: 5px;
|
||||
cursor: pointer;
|
||||
padding: 5px;
|
||||
transition: all 0.3s ease;
|
||||
|
||||
.label {
|
||||
font-family: @font-body;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
line-height: 17px;
|
||||
}
|
||||
}
|
||||
|
||||
.advantage-chip {
|
||||
background: @green-10;
|
||||
color: @green;
|
||||
|
||||
&.selected {
|
||||
color: @beige;
|
||||
background: @gradient-green;
|
||||
}
|
||||
}
|
||||
|
||||
.disadvantage-chip {
|
||||
background: @red-10;
|
||||
color: @red;
|
||||
|
||||
&.selected {
|
||||
color: @beige;
|
||||
background: @gradient-red;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.formula-label {
|
||||
font-family: @font-body;
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
line-height: 17px;
|
||||
|
||||
color: light-dark(@dark, @beige);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,22 +1,47 @@
|
|||
@primary-blue: #1488cc;
|
||||
@secondary-blue: #2b32b2;
|
||||
|
||||
@golden: #f3c267;
|
||||
@golden-40: #f3c26740;
|
||||
@dark-blue-40: #18162e40;
|
||||
@golden-10: #f3c26710;
|
||||
@dark-blue-10: #18162e10;
|
||||
@dark-blue-50: #18162e50;
|
||||
@golden-40: #f3c26740;
|
||||
|
||||
@red: #e54e4e;
|
||||
@red-10: #e54e4e10;
|
||||
@red-40: #e54e4e40;
|
||||
|
||||
@dark-red: #3c0000;
|
||||
@dark-red-10: #3c000010;
|
||||
@dark-red-40: #3c000040;
|
||||
|
||||
@green: #40a640;
|
||||
@green-10: #40a64010;
|
||||
@green-40: #40a64040;
|
||||
|
||||
@dark-green: #011b01;
|
||||
@dark-green-10: #011b0110;
|
||||
@dark-green-40: #011b0140;
|
||||
|
||||
@dark-blue: #18162e;
|
||||
@dark-blue-10: #18162e10;
|
||||
@dark-blue-40: #18162e40;
|
||||
@dark-blue-50: #18162e50;
|
||||
@semi-transparent-dark-blue: rgba(24, 22, 46, 0.33);
|
||||
|
||||
@dark: #222;
|
||||
@dark-15: #22222215;
|
||||
|
||||
@deep-black: #0e0d15;
|
||||
|
||||
@beige: #efe6d8;
|
||||
@beige-15: #efe6d815;
|
||||
@beige-50: #efe6d850;
|
||||
@dark-blue: rgb(24, 22, 46);
|
||||
@semi-transparent-dark-blue: rgba(24, 22, 46, 0.33);
|
||||
@dark: #222;
|
||||
@dark-15: #22222215;
|
||||
|
||||
@light-black: rgba(0, 0, 0, 0.3);
|
||||
@soft-shadow: rgba(0, 0, 0, 0.05);
|
||||
|
||||
@gradient-green: linear-gradient(151.21deg, @green 7.21%, @dark-green 92.79%);
|
||||
@gradient-red: linear-gradient(151.21deg, @red 7.21%, @dark-red 92.79%);
|
||||
|
||||
@gradient-hp: linear-gradient(15deg, rgb(70, 20, 10) 0%, rgb(190, 0, 0) 42%, rgb(252, 176, 69) 100%);
|
||||
@gradient-stress: linear-gradient(15deg, rgb(130, 59, 1) 0%, rgb(252, 142, 69) 65%, rgb(190, 0, 0) 100%);
|
||||
|
||||
|
|
|
|||
|
|
@ -5,18 +5,18 @@
|
|||
*/
|
||||
.appTheme(@darkRules, @lightRules) {
|
||||
// Dark theme selectors
|
||||
.themed.theme-dark .application.sheet.dh-style,
|
||||
.themed.theme-dark.application.sheet.dh-style,
|
||||
body.theme-dark .application,
|
||||
body.theme-dark.application {
|
||||
.themed.theme-dark .application.daggerheart.sheet.dh-style,
|
||||
.themed.theme-dark.application.daggerheart.sheet.dh-style,
|
||||
body.theme-dark .application.daggerheart,
|
||||
body.theme-dark.application.daggerheart {
|
||||
@darkRules();
|
||||
}
|
||||
|
||||
// Light theme selectors
|
||||
.themed.theme-light .application.sheet.dh-style,
|
||||
.themed.theme-light.application.sheet.dh-style,
|
||||
body.theme-light .application,
|
||||
body.theme-light.application {
|
||||
.themed.theme-light .application.daggerheart.sheet.dh-style,
|
||||
.themed.theme-light.application.daggerheart.sheet.dh-style,
|
||||
body.theme-light .application.daggerheart,
|
||||
body.theme-light.application.daggerheart {
|
||||
@lightRules();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@
|
|||
{{#each experience.values as |experience id|}}
|
||||
<div class="experience-container">
|
||||
<input class="experience-description" type="text" name="{{concat "experiences." id ".description" }}" value="{{experience.description}}" placeholder="{{localize "DAGGERHEART.CharacterCreation.NewExperience"}}" />
|
||||
<div class="experience-value">{{signedNumber this.value}}</div>
|
||||
<div class="experience-value">{{numberFormat this.value sign=true}}</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
|
|
|
|||
7
templates/dialogs/dice-roll/header.hbs
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<header class="dialog-header">
|
||||
{{#if rollConfig.headerTitle}}
|
||||
<h1>{{rollConfig.headerTitle}}</h1>
|
||||
{{else}}
|
||||
<h1>{{rollConfig.title}}</h1>
|
||||
{{/if}}
|
||||
</header>
|
||||
126
templates/dialogs/dice-roll/rollSelection.hbs
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
<div>
|
||||
{{#if @root.hasRoll}}
|
||||
<div class="roll-dialog-container">
|
||||
{{#unless @root.isLite}}
|
||||
<div class="dices-section">
|
||||
{{#if (eq @root.rollType 'D20Roll')}}
|
||||
<div class="dice-option">
|
||||
<img class="dice-icon" src="{{concat 'systems/daggerheart/assets/icons/dice/default/' @root.roll.d20.denomination '.svg'}}" alt="">
|
||||
<div class="dice-select">
|
||||
<select name="roll.dice.d20">
|
||||
{{selectOptions diceOptions selected=@root.roll.d20.denomination}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{{#if @root.advantage}}
|
||||
{{#if (eq @root.advantage 1)}}
|
||||
<div class="dice-option">
|
||||
<img class="dice-icon" src="{{concat 'systems/daggerheart/assets/icons/dice/adv/' @root.roll.d20.denomination '.svg'}}" alt="">
|
||||
<div class="dice-select">
|
||||
<span class="label">Advantage</span>
|
||||
</div>
|
||||
</div>
|
||||
{{else if (eq @root.advantage -1)}}
|
||||
<div class="dice-option">
|
||||
<img class="dice-icon" src="{{concat 'systems/daggerheart/assets/icons/dice/disadv/' @root.roll.d20.denomination '.svg'}}" alt="">
|
||||
<div class="dice-select">
|
||||
<span class="label">Disdvantage</span>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{#if (eq @root.rollType 'DualityRoll')}}
|
||||
<div class="dice-option">
|
||||
<img class="dice-icon" src="{{concat 'systems/daggerheart/assets/icons/dice/hope/' @root.roll.dHope.denomination '.svg'}}" alt="">
|
||||
<div class="dice-select">
|
||||
<span class="label">Hope</span>
|
||||
<select name="roll.dice.dHope">
|
||||
{{selectOptions diceOptions selected=@root.roll.dHope.denomination}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dice-option">
|
||||
<img class="dice-icon" src="{{concat 'systems/daggerheart/assets/icons/dice/fear/' @root.roll.dFear.denomination '.svg'}}" alt="">
|
||||
<div class="dice-select">
|
||||
<span class="label">Fear</span>
|
||||
<select name="roll.dice.dFear">
|
||||
{{selectOptions diceOptions selected=@root.roll.dFear.denomination}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{{#if @root.advantage}}
|
||||
{{#if (eq @root.advantage 1)}}
|
||||
<div class="dice-option">
|
||||
<img class="dice-icon" src="{{concat 'systems/daggerheart/assets/icons/dice/adv/' @root.roll.dAdvantage.denomination '.svg'}}" alt="">
|
||||
<div class="dice-select">
|
||||
<span class="label">Advantage</span>
|
||||
</div>
|
||||
</div>
|
||||
{{else if (eq @root.advantage -1)}}
|
||||
<div class="dice-option">
|
||||
<img class="dice-icon" src="{{concat 'systems/daggerheart/assets/icons/dice/disadv/' @root.roll.dAdvantage.denomination '.svg'}}" alt="">
|
||||
<div class="dice-select">
|
||||
<span class="label">Disdvantage</span>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<fieldset class="experience-container">
|
||||
<legend>Experiences</legend>
|
||||
{{#each experiences}}
|
||||
{{#if name}}
|
||||
<div class="experience-chip {{#if (includes ../selectedExperiences id)}}selected{{/if}}" data-action="selectExperience" data-key="{{id}}">
|
||||
{{#if (includes ../selectedExperiences id)}}
|
||||
<span><i class="fa-solid fa-circle"></i></span>
|
||||
{{else}}
|
||||
<span><i class="fa-regular fa-circle"></i></span>
|
||||
{{/if}}
|
||||
{{#if (eq @root.rollType 'D20Roll')}}
|
||||
<span class="label">{{name}} +{{modifier}}</span>
|
||||
{{else}}
|
||||
<span class="label">{{name}} +{{value}}</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</fieldset>
|
||||
<fieldset class="modifier-container one-column">
|
||||
<legend>Modifiers</legend>
|
||||
<div class="nest-inputs">
|
||||
<button class="advantage-chip flex1 {{#if (eq advantage 1)}}selected{{/if}}" data-action="updateIsAdvantage" data-advantage="1">
|
||||
{{#if (eq advantage 1)}}
|
||||
<span><i class="fa-solid fa-circle"></i></span>
|
||||
{{else}}
|
||||
<span><i class="fa-regular fa-circle"></i></span>
|
||||
{{/if}}
|
||||
<span class="label">{{localize "DAGGERHEART.General.Advantage.Full"}}</span>
|
||||
</button>
|
||||
<button class="disadvantage-chip flex1 {{#if (eq advantage -1)}}selected{{/if}}" data-action="updateIsAdvantage" data-advantage="-1">
|
||||
{{#if (eq advantage -1)}}
|
||||
<span><i class="fa-solid fa-circle"></i></span>
|
||||
{{else}}
|
||||
<span><i class="fa-regular fa-circle"></i></span>
|
||||
{{/if}}
|
||||
<span class="label">{{localize "DAGGERHEART.General.Disadvantage.Full"}}</span>
|
||||
</button>
|
||||
{{#unless (eq @root.rollType 'D20Roll')}}
|
||||
<select name="roll.dice.advantageFaces">
|
||||
{{selectOptions diceOptions selected=@root.roll.dAdvantage.denomination}}
|
||||
</select>
|
||||
{{/unless}}
|
||||
</div>
|
||||
<input type="text" value="{{extraFormula}}" name="extraFormula" placeholder="Situational Bonus">
|
||||
</fieldset>
|
||||
{{/unless}}
|
||||
<span class="formula-label"><b>Formula:</b> {{@root.formula}}</span>
|
||||
<button class="sunmit-btn" data-action="submitRoll"{{#unless canRoll}} disabled{{/unless}}>
|
||||
<i class="fa-solid fa-dice"></i>
|
||||
<span class="label">Roll</span>
|
||||
</button>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
|
||||
<div class="npc-roll-dialog-container">
|
||||
<div class="selection-container">
|
||||
<div class="dice-container">
|
||||
<div class="dice-inner-container">
|
||||
<img src="icons/svg/d20-grey.svg" />
|
||||
<div class="dice-number">d20</div>
|
||||
</div>
|
||||
<div class="advantage-container">
|
||||
<button class="advantage-button {{#if this.advantage}}active{{/if}} advantage" data-action="updateIsAdvantage" data-advantage="true">{{localize "DAGGERHEART.General.Advantage.Full"}}</button>
|
||||
<button class="advantage-button {{#if (eq this.advantage false)}}active{{/if}} disadvantage" data-action="updateIsAdvantage">{{localize "DAGGERHEART.General.Disadvantage.Full"}}</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="roll-dialog-experience-container">
|
||||
{{#each this.experiences as |experience|}}
|
||||
<button class="experience-chip {{#if experience.selected}}active{{/if}}" data-action="selectExperience" id="{{id}}">{{experience.name}} {{experience.value}}</button>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
<footer class="flexrow">
|
||||
<button type="submit" class="roll-button">Roll</button>
|
||||
</footer>
|
||||
</div>
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
<div>
|
||||
{{#if @root.hasRoll}}
|
||||
<div class="roll-dialog-container">
|
||||
<div class="flexcol">
|
||||
<div>
|
||||
{{!-- <input type="text" value="{{@root.formula}}" disabled> --}}
|
||||
<div>{{@root.formula}}</div>
|
||||
</div>
|
||||
{{#unless @root.isLite}}
|
||||
<div class="roll-dialog-experience-container">
|
||||
{{#each experiences}}
|
||||
{{#if name}}
|
||||
<div class="roll-dialog-chip {{#if (includes ../selectedExperiences id)}}selected{{/if}}" data-action="selectExperience" data-key="{{id}}">
|
||||
<span>{{name}}</span>
|
||||
<span>+{{value}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<button class="disadvantage flex1 {{#if (eq advantage 1)}}selected{{/if}}" data-action="updateIsAdvantage" data-advantage="1">{{localize "DAGGERHEART.General.Advantage.Full"}}</button>
|
||||
<button class="disadvantage flex1 {{#if (eq advantage -1)}}selected{{/if}}" data-action="updateIsAdvantage" data-advantage="-1">{{localize "DAGGERHEART.General.Disadvantage.Full"}}</button>
|
||||
</div>
|
||||
{{#if (eq @root.rollType 'D20Roll')}}
|
||||
<div class="flexrow">
|
||||
<select name="roll.dice.d20">
|
||||
{{selectOptions diceOptions selected=@root.roll.d20.denomination}}
|
||||
</select>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if (eq @root.rollType 'DualityRoll')}}
|
||||
<div class="flexrow">
|
||||
<div>Hope Dice</div>
|
||||
<select name="roll.dice.dHope">
|
||||
{{selectOptions diceOptions selected=@root.roll.dHope.denomination}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<div>Fear Dice</div>
|
||||
<select name="roll.dice.dFear">
|
||||
{{selectOptions diceOptions selected=@root.roll.dFear.denomination}}
|
||||
</select>
|
||||
</div>
|
||||
{{#if roll.advantage}}
|
||||
<div class="flexrow">
|
||||
<div>Adv/Disadv Dice</div>
|
||||
<select name="roll.dice.advantageFaces">
|
||||
{{selectOptions diceOptions selected=@root.roll.dAdvantage.denomination}}
|
||||
</select>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
<div>
|
||||
<input type="text" value="{{extraFormula}}" name="extraFormula" placeholder="Situational Bonus">
|
||||
</div>
|
||||
{{/unless}}
|
||||
{{!-- {{#if (not isNpc)}} --}}
|
||||
{{!-- <div class="form-group">
|
||||
<label>Hope</label>
|
||||
<div class="form-fields">
|
||||
<select name="hope">
|
||||
{{selectOptions diceOptions selected=hope valueAttr="value" labelAttr="name" localize=true}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Fear</label>
|
||||
<div class="form-fields">
|
||||
<select name="fear">
|
||||
{{selectOptions diceOptions selected=fear valueAttr="value" labelAttr="name" localize=true}}
|
||||
</select>
|
||||
</div>
|
||||
</div> --}}
|
||||
{{!-- {{/if}} --}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<footer>
|
||||
<button data-action="submitRoll"{{#unless canRoll}} disabled{{/unless}}>Roll</button>
|
||||
</footer>
|
||||
</div>
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
<div class="achievement-experience-card">
|
||||
<div class="flexrow">
|
||||
<input type="text" name="{{concat "levelup.levels." this.level ".achievements.experiences." this.key ".name"}}" value="{{this.name}}" placeholder="{{localize "DAGGERHEART.Application.LevelUp.summary.experiencePlaceholder"}}" />
|
||||
<div class="flex0">{{signedNumber this.modifier}}</div>
|
||||
<div class="flex0">{{numberFormat this.modifier sign=true}}</div>
|
||||
</div>
|
||||
<div class="achievement-experience-marker">
|
||||
{{#if this.name}}<i class="fa-solid fa-check"></i>{{/if}}
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@
|
|||
<h5>{{localize "DAGGERHEART.Application.LevelUp.summary.newExperiences"}}</h5>
|
||||
<div class="summary-selection-container">
|
||||
{{#each this.achievements.experiences.values}}
|
||||
<div class="summary-selection">{{this.name}} {{signedNumber this.modifier}}</div>
|
||||
<div class="summary-selection">{{this.name}} {{numberFormat this.modifier sign=true}}</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -125,7 +125,7 @@
|
|||
<h5>{{localize "DAGGERHEART.Application.LevelUp.summary.experienceIncreases"}}</h5>
|
||||
<div class="summary-selection-container">
|
||||
{{#each this.advancements.experiences}}
|
||||
<div class="summary-selection">{{this.name}} {{signedNumber this.modifier}}</div>
|
||||
<div class="summary-selection">{{this.name}} {{numberFormat this.modifier sign=true}}</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
{{#each source.system.experiences as |experience key|}}
|
||||
<div class="flexrow">
|
||||
<input type="text" name="{{concat "system.experiences." key ".name"}}" value="{{experience.name}}" />
|
||||
<div>{{signedNumber experience.value}}</div>
|
||||
<div>{{numberFormat experience.value sign=true}}</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -2,8 +2,6 @@ import fs from 'fs';
|
|||
import path from 'path';
|
||||
import readline from 'readline';
|
||||
|
||||
console.log('Reforging Symlinks');
|
||||
|
||||
const askQuestion = question => {
|
||||
const rl = readline.createInterface({
|
||||
input: process.stdin,
|
||||
|
|
|
|||