All user data for FoundryVTT. Includes worlds, systems, modules, and any asset in the "foundryuserdata" directory. Does NOT include the FoundryVTT installation itself.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

812 lines
41 KiB

  1. <form>
  2. <!-- Navigation Tabs -->
  3. <nav class="sheet-tabs tabs tva-setting-nav" data-group="primary-tabs">
  4. {{#if enabledTabs.searchPaths}}<a class="item" data-tab="searchPaths"><i class="fas fa-search"></i> Search Paths</a>{{/if}}
  5. {{#if enabledTabs.searchFilters}}<a class="item" data-tab="searchFilters"><i class="fas fa-filter"></i> Search Filters</a>{{/if}}
  6. {{#if enabledTabs.searchAlgorithm}}<a class="item" data-tab="searchAlgorithm"><i class="fas fa-plug"></i> Search Algorithm</a>{{/if}}
  7. {{#if enabledTabs.randomizer}}<a class="item" data-tab="randomizer"><i class="fas fa-dice"></i> Randomizer</a>{{/if}}
  8. {{#if enabledTabs.features}}<a class="item" data-tab="features"><i class="fas fa-power-off"></i> Features</a>{{/if}}
  9. <hr>
  10. {{#if enabledTabs.popup}}<a class="item" data-tab="popup"><i class="fas fa-book-open"></i> Pop-up</a>{{/if}}
  11. {{#if enabledTabs.permissions}}<a class="item" data-tab="permissions"><i class="fas fa-user-lock"></i> Permissions</a>{{/if}}
  12. {{#if enabledTabs.worldHud}}<a class="item" data-tab="worldHud"><i class="fas fa-images"></i> Token HUD</a>{{/if}}
  13. {{#if enabledTabs.activeEffects}}<a class="item" data-tab="activeEffects"><i class="fas fa-sun"></i> Effects</a>{{/if}}
  14. {{#if enabledTabs.misc}}<a class="item" data-tab="misc"><i class="fas fa-bars"></i> Misc</a>{{/if}}
  15. </nav>
  16. <!-- Main Content Section -->
  17. <section class="content">
  18. <!-- SEARCH PATHS -->
  19. {{#if enabledTabs.searchPaths}}
  20. <div class="tab" data-tab="searchPaths" data-group="primary-tabs">
  21. <ol class="token-variant-table">
  22. <li class="table-row table-header flexrow">
  23. <div class="path-image">
  24. <a class="create-path" title="Add new path"><i class="fas fa-plus"></i></a>
  25. </div>
  26. <div class="path-source"><label>Source</label></div>
  27. <div class="path-text"><label>Path</label></div>
  28. <div class="path-category"><label>Category</label></div>
  29. <div class="path-config"><label>Config</label></div>
  30. <div class="path-cache"><label>Cache</label></div>
  31. <div class="path-controls"></div>
  32. </li>
  33. {{#each searchPaths as |path index|}}
  34. <li class="table-row flexrow">
  35. <div class="path-image source-icon">
  36. <a><i class="{{path.icon}}"></i></a>
  37. </div>
  38. <div class="path-source">
  39. <input class="searchSource" type="text" name="searchPaths.{{index}}.source" value="{{path.source}}" placeholder="data"/>
  40. </div>
  41. <div class="path-text">
  42. <input class="searchPath" type="text" name="searchPaths.{{index}}.text" value="{{path.text}}" placeholder="Path to folder"/>
  43. </div>
  44. <div class="imgur-control {{#if (eq path.source 'imgur')}}active{{/if}}">
  45. <a class="convert-imgur" title="Convert to Rolltable">
  46. <i class="fas fa-angle-double-left"></i>
  47. </a>
  48. </div>
  49. <div class="json-control {{#if (eq path.source 'json')}}active{{/if}}">
  50. <a class="convert-json" title="Convert to Rolltable">
  51. <i class="fas fa-angle-double-left"></i>
  52. </a>
  53. </div>
  54. <div class="path-category">
  55. <a class="select-category" title="Select image categories/filters"><i class="fas fa-swatchbook"></i></a>
  56. <input type="hidden" name="searchPaths.{{index}}.types" value="{{path.types}}">
  57. </div>
  58. <div class="path-config">
  59. <a class="select-config {{#if path.hasConfig}}active{{/if}}" title="Apply token configuration to images under this path."><i class="fas fa-cog fa-lg"></i></a>
  60. <input type="hidden" name="searchPaths.{{index}}.config" value="{{path.config}}">
  61. </div>
  62. <div class="path-cache">
  63. <input type="checkbox" name="searchPaths.{{index}}.cache" data-dtype="Boolean" {{#if path.cache}}checked{{/if}}/>
  64. </div>
  65. <div class="path-controls">
  66. <a class="delete-path" title="Delete path"><i class="fas fa-trash"></i></a>
  67. </div>
  68. </li>
  69. {{/each}}
  70. </ol>
  71. <p class="notes">
  72. <b>Formats:</b><br />
  73. <span>Note: the path start from the 'data' folder of Foundry by default<span><br />
  74. data | path/to/folder<br />
  75. s3:my_bucket | token/art/folder/<br />
  76. rolltable | rolltableName<br />
  77. json | path/to/folder/data.json<br />
  78. imgur | galleryId
  79. </p>
  80. </div>
  81. {{/if}}
  82. <!-- SEARCH FILTERS -->
  83. {{#if enabledTabs.searchFilters}}
  84. <div class="tab" data-tab="searchFilters" data-group="primary-tabs">
  85. <p class="notes">Define filters for each image category. Images will be limited to files that include/exclude these pieces of text or match a regular expression.</p>
  86. <hr>
  87. {{#each searchFilters}}
  88. <label><b>{{this.label}}</b></label>
  89. <div class="form-group">
  90. <label>{{localize "token-variants.common.include"}}</label>
  91. <div class="form-fields">
  92. <input type="text" name="searchFilters.{{@key}}.include" value="{{this.include}}" data-dtype="String">
  93. </div>
  94. &nbsp;&nbsp;
  95. <label>{{localize "token-variants.common.exclude"}}</label>
  96. <div class="form-fields">
  97. <input type="text" name="searchFilters.{{@key}}.exclude" value="{{this.exclude}}" data-dtype="String">
  98. </div>
  99. &nbsp;&nbsp;
  100. <label>RegEx</label>
  101. <div class="form-fields">
  102. <input class="filterRegex" type="text" name="searchFilters.{{@key}}.regex" value="{{this.regex}}" data-dtype="String">
  103. </div>
  104. </div>
  105. <hr />
  106. {{/each}}
  107. </div>
  108. {{/if}}
  109. <!-- SEARCH ALGORITHM -->
  110. {{#if enabledTabs.searchAlgorithm}}
  111. <div class="tab" data-tab="searchAlgorithm" data-group="primary-tabs">
  112. <div class="form-group">
  113. <label>{{localize "token-variants.settings.keywords-search.Name"}}</label>
  114. <div class="form-fields">
  115. <input type="checkbox" name="keywordSearch" data-dtype="Boolean" {{#if keywordSearch}}checked{{/if}}>
  116. </div>
  117. <p class="notes">{{localize "token-variants.settings.keywords-search.Hint"}}</p>
  118. </div>
  119. <div class="form-group">
  120. <label>{{localize "token-variants.settings.excluded-keywords.Name"}}</label>
  121. <div class="form-fields">
  122. <input type="text" name="excludedKeywords" data-dtype="String" value="{{excludedKeywords}}">
  123. </div>
  124. <p class="notes">{{localize "token-variants.settings.excluded-keywords.Hint"}}</p>
  125. </div>
  126. <div class="form-group">
  127. <label>{{localize "token-variants.settings.run-search-on-path.Name"}}</label>
  128. <div class="form-fields">
  129. <input type="checkbox" name="runSearchOnPath" data-dtype="Boolean" {{#if runSearchOnPath}}checked{{/if}}>
  130. </div>
  131. <p class="notes">{{localize "token-variants.settings.run-search-on-path.Hint"}}</p>
  132. </div>
  133. <h1>Search Method</h1>
  134. <hr>
  135. <h2>{{localize "token-variants.common.exact"}}</h2>
  136. <div class="form-group">
  137. <label>{{localize "token-variants.common.enable"}}</label>
  138. <input type="checkbox" name="algorithm.exact" data-dtype="Boolean" {{#if algorithm.exact}}checked{{/if}}>
  139. <p class="notes">{{localize "token-variants.settings.algorithm.window.exact-hint"}}</p>
  140. </div>
  141. <h2>{{localize "token-variants.common.fuzzy"}}</h2>
  142. <div class="form-group">
  143. <label>{{localize "token-variants.common.enable"}}</label>
  144. <input type="checkbox" name="algorithm.fuzzy" data-dtype="Boolean" {{#if algorithm.fuzzy}}checked{{/if}}>
  145. <p class="notes">{{localize "token-variants.settings.algorithm.window.fuzzy-hint"}}</p>
  146. </div>
  147. <div class="form-group">
  148. <label>{{localize "token-variants.settings.algorithm.window.percentage-match.Name"}}</label>
  149. <input
  150. type="range"
  151. name="algorithm.fuzzyThreshold"
  152. data-dtype="Number"
  153. value="{{algorithm.fuzzyThreshold}}"
  154. min="0"
  155. max="100"
  156. step="1"
  157. />
  158. <span class="token-variants-range-value">{{algorithm.fuzzyThreshold}}%</span>
  159. <p class="notes">
  160. {{localize "token-variants.settings.algorithm.window.percentage-match.Hint"}}
  161. </p>
  162. </div>
  163. <div class="form-group">
  164. <label>{{localize "token-variants.settings.algorithm.window.art-select-slider.Name"}}</label>
  165. <input type="checkbox" name="algorithm.fuzzyArtSelectPercentSlider" data-dtype="Boolean" {{#if
  166. algorithm.fuzzyArtSelectPercentSlider}}checked{{/if}}>
  167. <p class="notes">
  168. {{localize "token-variants.settings.algorithm.window.art-select-slider.Hint"}}
  169. </p>
  170. </div>
  171. <div class="form-group">
  172. <label>{{localize "token-variants.common.limit"}}</label>
  173. <input
  174. type="text"
  175. name="algorithm.fuzzyLimit"
  176. value="{{algorithm.fuzzyLimit}}"
  177. placeholder="1"
  178. data-dtype="Number"
  179. />
  180. <p class="notes">{{localize "token-variants.settings.algorithm.window.limit-hint"}}</p>
  181. </div>
  182. </div>
  183. {{/if}}
  184. <!-- Randomizer -->
  185. {{#if enabledTabs.randomizer}}
  186. <div class="tab" data-tab="randomizer" data-group="primary-tabs">
  187. <h2>{{localize "token-variants.common.randomize"}}</h2>
  188. <div class="form-group">
  189. <label>
  190. {{localize "token-variants.settings.randomizer.window.portrait-image-on-actor-create"}}
  191. </label>
  192. <input type="checkbox" name="randomizer.actorCreate" data-dtype="Boolean" {{#if randomizer.actorCreate}}checked{{/if}}>
  193. </div>
  194. <hr />
  195. <div class="form-group">
  196. <label>
  197. {{localize "token-variants.settings.randomizer.window.token-image-on-token-create"}}
  198. </label>
  199. <input type="checkbox" name="randomizer.tokenCreate" data-dtype="Boolean" {{#if randomizer.tokenCreate}}checked{{/if}}>
  200. </div>
  201. <div class="form-group">
  202. <label>
  203. {{localize "token-variants.settings.randomizer.window.token-image-on-token-copy-paste"}}
  204. </label>
  205. <input type="checkbox" name="randomizer.tokenCopyPaste" data-dtype="Boolean" {{#if randomizer.tokenCopyPaste}}checked{{/if}}>
  206. </div>
  207. <div class="form-group">
  208. <label>&nbsp;&nbsp;&nbsp;&nbsp; {{localize "token-variants.settings.randomizer.window.token-to-portrait"}}</label>
  209. <input type="checkbox" name="randomizer.tokenToPortrait" data-dtype="Boolean" {{#if randomizer.tokenToPortrait}}checked{{/if}} {{#if randomizer.tokenToPortraitDisabled}}disabled{{/if}}>
  210. </div>
  211. <hr />
  212. <div class="form-group">
  213. <label>{{localize "token-variants.settings.randomizer.window.different-images"}}</label>
  214. <input type="checkbox" name="randomizer.diffImages" data-dtype="Boolean" {{#if randomizer.diffImages}}checked{{/if}}>
  215. </div>
  216. <div class="form-group">
  217. <label>&nbsp;&nbsp;&nbsp;&nbsp; {{localize "token-variants.settings.randomizer.window.sync-images"}}</label>
  218. <input type="checkbox" name="randomizer.syncImages" data-dtype="Boolean" {{#if randomizer.syncImages}}checked{{/if}} {{#unless randomizer.diffImages}}disabled{{/unless}}>
  219. </div>
  220. <h2>{{localize "token-variants.settings.randomizer.window.search-types-heading"}}</h2>
  221. <div class="form-group">
  222. <label>{{localize "token-variants.common.name"}}</label>
  223. <input type="checkbox" name="randomizer.tokenName" data-dtype="Boolean" {{#if randomizer.tokenName}}checked{{/if}}>
  224. </div>
  225. <div class="form-group">
  226. <label>{{localize "token-variants.common.keywords"}}</label>
  227. <input type="checkbox" name="randomizer.keywords" data-dtype="Boolean" {{#if randomizer.keywords}}checked{{/if}}>
  228. </div>
  229. <div class="form-group">
  230. <label>{{localize "token-variants.common.shared"}} <i class="fas fa-share"></i></label>
  231. <input type="checkbox" name="randomizer.shared" data-dtype="Boolean" {{#if randomizer.shared}}checked{{/if}}>
  232. </div>
  233. <div class="form-group">
  234. <label>Wildcard *</label>
  235. <input type="checkbox" name="randomizer.wildcard" data-dtype="Boolean" {{#if randomizer.wildcard}}checked{{/if}}>
  236. </div>
  237. <h2>{{localize "token-variants.settings.randomizer.window.disable-for"}}</h2>
  238. <div class="form-group">
  239. <label>&nbsp;&nbsp;&nbsp;&nbsp;{{localize "token-variants.settings.randomizer.window.tokens-with-represented-actor"}}</label>
  240. <input type="checkbox" name="randomizer.representedActorDisable" data-dtype="Boolean" {{#if randomizer.representedActorDisable}}checked{{/if}}>
  241. </div>
  242. <div class="form-group">
  243. <label>&nbsp;&nbsp;&nbsp;&nbsp;{{localize "token-variants.settings.randomizer.window.tokens-with-linked-actor-data"}}</label>
  244. <input type="checkbox" name="randomizer.linkedActorDisable" data-dtype="Boolean" {{#if randomizer.linkedActorDisable}}checked{{/if}}>
  245. </div>
  246. <hr />
  247. <h3>Actor Types</h3>
  248. {{#each randomizer.actorTypes}}
  249. <div class="form-group">
  250. <label>&nbsp;&nbsp;&nbsp;&nbsp;{{this.label}}</label>
  251. <input type="checkbox" name="randomizer.{{@key}}Disable" data-dtype="Boolean" {{#if this.disable}}checked{{/if}}>
  252. </div>
  253. {{/each}}
  254. <hr />
  255. <div class="form-group">
  256. <h4>{{localize "token-variants.settings.randomizer.window.pop-up-if-randomization-disabled"}}</h4>
  257. <input type="checkbox" name="randomizer.popupOnDisable" data-dtype="Boolean" {{#if randomizer.popupOnDisable}}checked{{/if}}>
  258. </div>
  259. </div>
  260. {{/if}}
  261. <!-- Features -->
  262. {{#if enabledTabs.features}}
  263. <div class="tab token-variants-permissions" data-tab="features" data-group="primary-tabs">
  264. <p class="notes">Fully turn-off module features.</p>
  265. <header class="table-header flexrow">
  266. <label class="index">Features</label>
  267. <label>Enabled</label>
  268. </header>
  269. <ul class="permissions-list">
  270. <li class="permission form-group">
  271. <label class="index">Effect Mappings</label>
  272. <div class="form-fields">
  273. <input type="checkbox" name="features.EffectMappings" {{ checked features.EffectMappings}} />
  274. </div>
  275. <p class="hint"></p>
  276. </li>
  277. <li class="permission form-group">
  278. <label class="index">Overlays</label>
  279. <div class="form-fields">
  280. <input type="checkbox" name="features.Overlays" {{ checked features.Overlays}} />
  281. </div>
  282. <p class="hint"></p>
  283. </li>
  284. </ul>
  285. </div>
  286. {{/if}}
  287. <!-- Pop-up -->
  288. {{#if enabledTabs.popup}}
  289. <div class="tab token-variants-popup-settings" data-tab="popup" data-group="primary-tabs">
  290. <div class="form-group">
  291. <label>{{localize "token-variants.settings.pop-up.window.two-pop-ups.Name"}}</label>
  292. <input type="checkbox" name="popup.twoPopups" data-dtype="Boolean" {{#if popup.twoPopups}}checked{{/if}}>
  293. <p class="notes">{{localize "token-variants.settings.pop-up.window.two-pop-ups.Hint"}}</p>
  294. </div>
  295. <div class="form-group">
  296. <label>{{localize "token-variants.settings.pop-up.window.no-dialog.Name"}}</label>
  297. <input type="checkbox" name="popup.twoPopupsNoDialog" data-dtype="Boolean" {{#if popup.twoPopupsNoDialog}}checked{{/if}}>
  298. <p class="notes">{{localize "token-variants.settings.pop-up.window.no-dialog.Hint"}}</p>
  299. </div>
  300. <div class="form-group">
  301. <label>{{localize "token-variants.settings.pop-up.window.disable-automatic-pop-ups-for"}}</label>
  302. </div>
  303. {{#each popup.actorTypes}}
  304. <header class="table-header flexrow">
  305. {{#each this}}
  306. <label>{{this.label}}</label>
  307. {{/each}}
  308. </header>
  309. <ul class="setting-list">
  310. <li class="setting form-group">
  311. <div class="form-fields">
  312. {{#each this}} <input type="checkbox" name="popup.{{this.type}}Disable" data-dtype="Boolean" {{#if
  313. this.disable}}checked{{/if}}> {{/each}}
  314. </div>
  315. </li>
  316. </ul>
  317. {{/each}}
  318. <header class="table-header flexrow">
  319. <label class="index">{{localize "token-variants.settings.pop-up.window.on-actor-create"}}</label>
  320. <label>{{localize "token-variants.settings.pop-up.window.on-token-create"}}</label>
  321. <label>{{localize "token-variants.settings.pop-up.window.on-token-copy-paste"}}</label>
  322. </header>
  323. <ul class="setting-list">
  324. <li class="setting form-group">
  325. <div class="form-fields">
  326. <input type="checkbox" name="popup.disableAutoPopupOnActorCreate" data-dtype="Boolean" {{#if popup.disableAutoPopupOnActorCreate}}checked{{/if}}>
  327. <input type="checkbox" name="popup.disableAutoPopupOnTokenCreate" data-dtype="Boolean" {{#if popup.disableAutoPopupOnTokenCreate}}checked{{/if}}>
  328. <input type="checkbox" name="popup.disableAutoPopupOnTokenCopyPaste" data-dtype="Boolean" {{#if popup.disableAutoPopupOnTokenCopyPaste}}checked{{/if}}>
  329. </div>
  330. </li>
  331. </ul>
  332. </div>
  333. {{/if}}
  334. <!-- Permissions -->
  335. {{#if enabledTabs.permissions}}
  336. <div class="tab token-variants-permissions" data-tab="permissions" data-group="primary-tabs">
  337. <p class="notes">Configure which User role has permission to access which module features.</p>
  338. <header class="table-header flexrow">
  339. <label class="index">Features</label>
  340. <label>Player</label>
  341. <label>Trusted Player</label>
  342. <label>Assistant GM</label>
  343. <label>Game Master</label>
  344. </header>
  345. <ul class="permissions-list">
  346. <li class="permission form-group">
  347. <label class="index">Automatic Pop-ups</label>
  348. <div class="form-fields">
  349. <input type="checkbox" name="permissions.popups.1" {{#if permissions.popups.[1]}}checked{{/if}} />
  350. <input type="checkbox" name="permissions.popups.2" {{#if permissions.popups.[2]}}checked{{/if}} />
  351. <input type="checkbox" name="permissions.popups.3" {{#if permissions.popups.[3]}}checked{{/if}} />
  352. <input type="checkbox" name="permissions.popups.4" {{#if permissions.popups.[4]}}checked{{/if}} />
  353. </div>
  354. <p class="hint">Allow players with this role to be shown automatic Art Select pop-ups.</p>
  355. </li>
  356. <li class="permission form-group">
  357. <label class="index">Portrait/Icon Right-click</label>
  358. <div class="form-fields">
  359. <input type="checkbox" name="permissions.portrait_right_click.1" {{#if permissions.portrait_right_click.[1]}}checked{{/if}} />
  360. <input type="checkbox" name="permissions.portrait_right_click.2" {{#if permissions.portrait_right_click.[2]}}checked{{/if}} />
  361. <input type="checkbox" name="permissions.portrait_right_click.3" {{#if permissions.portrait_right_click.[3]}}checked{{/if}} />
  362. <input type="checkbox" name="permissions.portrait_right_click.4" {{#if permissions.portrait_right_click.[4]}}checked{{/if}} />
  363. </div>
  364. <p class="hint">Allow players with this role to open Art Select windows via Right-click of images on various forms.</p>
  365. </li>
  366. <li class="permission form-group">
  367. <label class="index">Art Select Buttons</label>
  368. <div class="form-fields">
  369. <input type="checkbox" name="permissions.image_path_button.1" {{#if permissions.image_path_button.[1]}}checked{{/if}} />
  370. <input type="checkbox" name="permissions.image_path_button.2" {{#if permissions.image_path_button.[2]}}checked{{/if}} />
  371. <input type="checkbox" name="permissions.image_path_button.3" {{#if permissions.image_path_button.[3]}}checked{{/if}} />
  372. <input type="checkbox" name="permissions.image_path_button.4" {{#if permissions.image_path_button.[4]}}checked{{/if}} />
  373. </div>
  374. <p class="hint">Allow players with this role to open the Art Select windows via buttons inserted into various forms.</p>
  375. </li>
  376. <li class="permission form-group">
  377. <label class="index">Token HUD button</label>
  378. <div class="form-fields">
  379. <input type="checkbox" name="permissions.hud.1" {{#if permissions.hud.[1]}}checked{{/if}} />
  380. <input type="checkbox" name="permissions.hud.2" {{#if permissions.hud.[2]}}checked{{/if}} />
  381. <input type="checkbox" name="permissions.hud.3" {{#if permissions.hud.[3]}}checked{{/if}} />
  382. <input type="checkbox" name="permissions.hud.4" {{#if permissions.hud.[4]}}checked{{/if}} />
  383. </div>
  384. <p class="hint">Allow players with this role access to the Token HUD button (Shared and Wildcard art only)</p>
  385. </li>
  386. <li class="permission form-group">
  387. <label class="index">Token HUD button FULL ACCESS</label>
  388. <div class="form-fields">
  389. <input type="checkbox" name="permissions.hudFullAccess.1" {{#if permissions.hudFullAccess.[1]}}checked{{/if}} />
  390. <input type="checkbox" name="permissions.hudFullAccess.2" {{#if permissions.hudFullAccess.[2]}}checked{{/if}} />
  391. <input type="checkbox" name="permissions.hudFullAccess.3" {{#if permissions.hudFullAccess.[3]}}checked{{/if}} />
  392. <input type="checkbox" name="permissions.hudFullAccess.4" {{#if permissions.hudFullAccess.[4]}}checked{{/if}} />
  393. </div>
  394. <p class="hint">Allow players with this role unrestricted access to all art via the Token HUD button</p>
  395. </li>
  396. <li class="permission form-group">
  397. <label class="index">Status Config</label>
  398. <div class="form-fields">
  399. <input type="checkbox" name="permissions.statusConfig.1" {{#if permissions.statusConfig.[1]}}checked{{/if}} />
  400. <input type="checkbox" name="permissions.statusConfig.2" {{#if permissions.statusConfig.[2]}}checked{{/if}} />
  401. <input type="checkbox" name="permissions.statusConfig.3" {{#if permissions.statusConfig.[3]}}checked{{/if}} />
  402. <input type="checkbox" name="permissions.statusConfig.4" {{#if permissions.statusConfig.[4]}}checked{{/if}} />
  403. </div>
  404. <p class="hint">Allow players with this role to configure image mappings to status effects, visibility and combat states. ('Use File Browser' or 'Token Configuration Art Select' required to select images)</p>
  405. </li>
  406. </ul>
  407. </div>
  408. {{/if}}
  409. <!-- World HUD -->
  410. {{#if enabledTabs.worldHud}}
  411. <div class="tab" data-tab="worldHud" data-group="primary-tabs">
  412. <h2>World Settings</h2>
  413. <div class="form-group">
  414. <label
  415. >{{localize "token-variants.settings.token-hud.window.display-shared-only.Name"}}
  416. <i class="fas fa-share"></i
  417. ></label>
  418. <div class="form-fields">
  419. <input type="checkbox" name="worldHud.displayOnlySharedImages" data-dtype="Boolean" {{#if worldHud.displayOnlySharedImages}}checked{{/if}}>
  420. </div>
  421. <p class="notes">
  422. {{localize "token-variants.settings.token-hud.window.display-shared-only.Hint"}}
  423. </p>
  424. </div>
  425. <div class="form-group">
  426. <label> {{localize "token-variants.settings.compendium-mapper.window.include-keywords"}}</label>
  427. <div class="form-fields">
  428. <input type="checkbox" name="worldHud.includeKeywords" data-dtype="Boolean" {{#if worldHud.includeKeywords}}checked{{/if}}>
  429. </div>
  430. </div>
  431. <div class="form-group">
  432. <label>{{localize "token-variants.settings.token-hud.window.include-wildcard.Name"}}</label>
  433. <div class="form-fields">
  434. <input type="checkbox" name="worldHud.includeWildcard" data-dtype="Boolean" {{#if worldHud.includeWildcard}}checked{{/if}}>
  435. </div>
  436. <p class="notes">
  437. {{localize "token-variants.settings.token-hud.window.include-wildcard.Hint"}}
  438. </p>
  439. </div>
  440. <div class="form-group">
  441. <label>Show full path on hover</label>
  442. <div class="form-fields">
  443. <input type="checkbox" name="worldHud.showFullPath" data-dtype="Boolean" {{#if worldHud.showFullPath}}checked{{/if}}>
  444. </div>
  445. <p class="notes">
  446. When hovering over images instead of the file name full file path will be shown.
  447. </p>
  448. </div>
  449. <hr/>
  450. <div class="form-group">
  451. <label>{{localize "token-variants.settings.token-hud.window.update-actor-image.Name"}}</label>
  452. <div class="form-fields">
  453. <input type="checkbox" name="worldHud.updateActorImage" data-dtype="Boolean" {{#if worldHud.updateActorImage}}checked{{/if}}>
  454. </div>
  455. <p class="notes">
  456. {{localize "token-variants.settings.token-hud.window.update-actor-image.Hint"}}
  457. </p>
  458. </div>
  459. <div class="form-group">
  460. <label>Use a similarly named file</label>
  461. <div class="form-fields">
  462. <input type="checkbox" name="worldHud.useNameSimilarity" data-dtype="Boolean" {{#if worldHud.useNameSimilarity}}checked{{/if}} {{#unless worldHud.updateActorImage}}disabled{{/unless}}>
  463. </div>
  464. <p class="notes">
  465. Instead of using the same image for the portrait the module will perform a Portrait image search and attempt to find a similarly named image.
  466. </p>
  467. </div>
  468. <div class="form-group">
  469. <label>Token Animation</label>
  470. <div class="form-fields">
  471. <input type="checkbox" name="worldHud.animate" data-dtype="Boolean" {{checked worldHud.animate}}>
  472. </div>
  473. <p class="notes">Apply core foundry animations on image change.</p>
  474. </div>
  475. <hr/>
  476. {{#if worldHud.tokenHUDWildcardActive}}
  477. <h2><b>Token HUD Wildcard</b></h2>
  478. <div class="form-group">
  479. <label>{{localize "token-variants.settings.token-hud.window.disable-if-token-hud-wildcard-active.Name"}}</label>
  480. <div class="form-fields">
  481. <input type="checkbox" name="worldHud.disableIfTHWEnabled" data-dtype="Boolean" {{#if worldHud.disableIfTHWEnabled}}checked{{/if}}>
  482. </div>
  483. <p class="notes">
  484. {{localize "token-variants.settings.token-hud.window.disable-if-token-hud-wildcard-active.Hint"}}
  485. </p>
  486. </div>
  487. {{/if}}
  488. </div>
  489. {{/if}}
  490. <!-- Active Effects -->
  491. {{#if enabledTabs.activeEffects}}
  492. <div class="tab" data-tab="activeEffects" data-group="primary-tabs">
  493. <div class="form-group">
  494. <label>Merge Global and Actor mappings based on Groups</label>
  495. <div class="form-fields">
  496. <input type="checkbox" name="mergeGroup" data-dtype="Boolean" {{#if mergeGroup}}checked{{/if}}>
  497. </div>
  498. <p class="notes">Instead of comparing `Labels` Actor mappings will take precedent over Global ones if they belong to the same group.</p>
  499. </div>
  500. <div class="form-group">
  501. <label>Stack Effect Mapping Token Configs and Overlays</label>
  502. <div class="form-fields">
  503. <input type="checkbox" name="stackStatusConfig" data-dtype="Boolean" {{#if stackStatusConfig}}checked{{/if}}>
  504. </div>
  505. <p class="notes">When multiple Effect Mappings are active Token Configurations and Overlays will accumulate on the token instead of overriding each other.</p>
  506. </div>
  507. {{#if dnd5e}}
  508. <fieldset>
  509. <legend>DnD5e</legend>
  510. <div class="form-group">
  511. <label>Disable image updates on Polymorphed</label>
  512. <div class="form-fields">
  513. <input type="checkbox" name="disableImageChangeOnPolymorphed" data-dtype="Boolean" {{#if disableImageChangeOnPolymorphed}}checked{{/if}}>
  514. </div>
  515. <p class="notes">Active Effect changes will not update images on tokens with polymorphed or wild shaped actors.</p>
  516. </div>
  517. </fieldset>
  518. {{/if}}
  519. <div class="form-group">
  520. <label>Disable image updates on manually changed tokens</label>
  521. <div class="form-fields">
  522. <input type="checkbox" name="disableImageUpdateOnNonPrototype" data-dtype="Boolean" {{#if disableImageUpdateOnNonPrototype}}checked{{/if}}>
  523. </div>
  524. <p class="notes">Active Effect changes will not update images on tokens that have an image not corresponding to the prototype or any configurations.</p>
  525. </div>
  526. <div class="form-group">
  527. <label>Disable Token Animation</label>
  528. <div class="form-fields">
  529. <input type="checkbox" name="disableTokenUpdateAnimation" data-dtype="Boolean" {{#if disableTokenUpdateAnimation}}checked{{/if}}>
  530. </div>
  531. <p class="notes">Active Effect changes affecting Token appearance will not trigger core Foundry's Token animation.</p>
  532. </div>
  533. <div class="form-group">
  534. <label>Global Effect Mappings</label>
  535. <button class="token-variants-global-mapping" type="button">
  536. <i class="fas fa-angle-double-right"></i>
  537. <label>Configure</label>
  538. </button>
  539. <p class="notes">Configurations to be applied on ALL tokens. Will be overridden by token specific configurations.</p>
  540. </div>
  541. <div class="form-group">
  542. <label>System's HP Path</label>
  543. <div class="form-fields">
  544. <input type="text" name="systemHpPath" data-dtype="String" value="{{systemHpPath}}">
  545. </div>
  546. <p class="notes">Path to the game system's HP min, max, and value properties.</p>
  547. </div>
  548. <hr>
  549. <div class="form-group">
  550. <label>Display Token Effect Icons on Hover</label>
  551. <div class="form-fields">
  552. <input type="checkbox" name="displayEffectIconsOnHover" data-dtype="Boolean" {{#if displayEffectIconsOnHover}}checked{{/if}}>
  553. </div>
  554. <p class="notes">Effect icons will only be displayed while hovering over the token.</p>
  555. </div>
  556. <hr>
  557. <div class="form-group">
  558. <label>Disable ALL Effect Icons</label>
  559. <div class="form-fields">
  560. <input type="checkbox" name="disableEffectIcons" data-dtype="Boolean" {{#if disableEffectIcons}}checked{{/if}}>
  561. </div>
  562. <p class="notes">Prevents drawing of temporary effects on the token and combat tracker.</p>
  563. </div>
  564. <hr>
  565. {{#unless pathfinder}}
  566. <div class="form-group">
  567. <label>Disable SOME Effect Icons</label>
  568. <div class="form-fields">
  569. <input type="checkbox" name="filterEffectIcons" data-dtype="Boolean" {{#if filterEffectIcons}}checked{{/if}}>
  570. </div>
  571. <p class="notes">Disable drawing of the following effects on the token and combat tracker:</p>
  572. </div>
  573. <div class="form-group">
  574. <label>Effects with mappings</label>
  575. <div class="form-fields">
  576. <input type="checkbox" name="filterCustomEffectIcons" data-dtype="Boolean" {{#if filterCustomEffectIcons}}checked{{/if}}>
  577. </div>
  578. <p class="notes">Prevents drawing of temporary effects on the token if a mapping exists for it.</p>
  579. </div>
  580. <div class="form-group">
  581. <label>Additional Restricted Effects</label>
  582. <div class="form-fields">
  583. <input type="text" name="filterIconList" data-dtype="String" value="{{filterIconList}}" placeholder="e.g. Sharpshooter,Asleep">
  584. </div>
  585. </div>
  586. {{/unless}}
  587. <hr>
  588. <fieldset>
  589. <legend>Internal Effects</legend>
  590. <div class="form-group slim">
  591. <label>HP Change (hp-- hp++)</label>
  592. <div class="form-fields">
  593. <label>Enabled</label>
  594. <input type="checkbox" name="internalEffects.hpChange.enabled" data-dtype="Boolean" {{checked internalEffects.hpChange.enabled}}>
  595. <label>Duration <span class="units">(seconds)</span></label>
  596. <input type="number" name="internalEffects.hpChange.duration" data-dtype="Number" value="{{internalEffects.hpChange.duration}}" min="0.001" max="50" step="any" placeholder="infinite">
  597. </div>
  598. <p class="notes">Flags will be stored on tokens to allow the use of `hp--` (decreased) and `hp++` (increased) expressions in effect mappings.</p>
  599. </div>
  600. </fieldset>
  601. </div>
  602. {{/if}}
  603. <!-- Misc -->
  604. {{#if enabledTabs.misc}}
  605. <div class="tab" data-tab="misc" data-group="primary-tabs">
  606. <div class="form-group">
  607. <label>{{localize "token-variants.settings.disable-notifs.Name"}}</label>
  608. <div class="form-fields">
  609. <input type="checkbox" name="disableNotifs" data-dtype="Boolean" {{#if disableNotifs}}checked{{/if}}>
  610. </div>
  611. <p class="notes">{{localize "token-variants.settings.disable-notifs.Hint"}}</p>
  612. </div>
  613. <div class="form-group">
  614. <label>Static Cache</label>
  615. <div class="form-fields">
  616. <input type="checkbox" name="staticCache" data-dtype="Boolean" {{#if staticCache}}checked{{/if}}>
  617. </div>
  618. <p class="notes">Cached images will be stored in a file and read upon world load. Cache will be refreshed on search path changes or by clicking the button bellow.</p>
  619. </div>
  620. <div class="form-group">
  621. <label>Cache File</label>
  622. <div class="form-fields">
  623. <input type="text" name="staticCacheFile" data-dtype="String" value="{{staticCacheFile}}">
  624. </div>
  625. <p class="notes">Name and location of the image cache.</p>
  626. </div>
  627. <div class="form-group">
  628. <label></label>
  629. <button class="token-variants-cache-images" type="button">
  630. <i class="fas fa-sync-alt"></i>
  631. <label>Cache Images</label>
  632. </button>
  633. </div>
  634. <hr>
  635. <div class="form-group">
  636. <label>Tile HUD</label>
  637. <div class="form-fields">
  638. <input type="checkbox" name="tilesEnabled" data-dtype="Boolean" {{#if tilesEnabled}}checked{{/if}}>
  639. </div>
  640. <p class="notes">Enables the Tile HUD button</p>
  641. </div>
  642. <div class="form-group">
  643. <label>{{localize "token-variants.settings.imgur-client-id.Name"}}</label>
  644. <div class="form-fields">
  645. <input type="text" name="imgurClientId" data-dtype="String" value="{{imgurClientId}}">
  646. </div>
  647. <p class="notes">{{localize "token-variants.settings.imgur-client-id.Hint"}}</p>
  648. </div>
  649. <hr>
  650. <div class="form-group">
  651. <label>Custom Image Categories</label>
  652. <div class="form-fields">
  653. <input type="text" name="customImageCategories" data-dtype="String" value="{{customImageCategories}}" placeholder="e.g. Dragons,Vampires">
  654. </div>
  655. <p class="notes">Additional types that will be used by the module to group images on.</p>
  656. </div>
  657. <hr>
  658. <fieldset>
  659. <legend>Image Updates</legend>
  660. <div class="form-group">
  661. <label>Transfer Token Updates to Prototype</label>
  662. <div class="form-fields">
  663. <input type="checkbox" name="updateTokenProto" data-dtype="Boolean" {{#if updateTokenProto}}checked{{/if}}>
  664. </div>
  665. <p class="notes">Token updates using the module will also affect the prototype token.</p>
  666. </div>
  667. <fieldset>
  668. <legend>Dimensions in Image Names</legend>
  669. <div class="form-group">
  670. <label>Token HUD Wildcard</label>
  671. <div class="form-fields">
  672. <input type="checkbox" name="imgNameContainsDimensions" data-dtype="Boolean" {{#if imgNameContainsDimensions}}checked{{/if}}>
  673. </div>
  674. <p class="notes">Module will recognize `_scale#.#_`, `_width#.#_`, and `_height#.#_` in image names and apply them to the token.</p>
  675. </div>
  676. <div class="form-group">
  677. <label>Forgotten Adventures</label>
  678. <div class="form-fields">
  679. <input type="checkbox" name="imgNameContainsFADimensions" data-dtype="Boolean" {{#if imgNameContainsFADimensions}}checked{{/if}}>
  680. </div>
  681. <p class="notes">Module will recognize `_Scale###_` in image names and apply it to the token.</p>
  682. </div>
  683. </fieldset>
  684. </fieldset>
  685. <hr>
  686. <div class="form-group">
  687. <label>Play Videos on mouse hover</label>
  688. <div class="form-fields">
  689. <input type="checkbox" name="playVideoOnHover" data-dtype="Boolean" {{#if playVideoOnHover}}checked{{/if}}>
  690. </div>
  691. <p class="notes">When enabled videos will not auto-play, and instead will unpause only when the mouse is hovered over them.</p>
  692. </div>
  693. <div class="form-group">
  694. <label>Pause Videos on mouse hover out</label>
  695. <div class="form-fields">
  696. <input type="checkbox" name="pauseVideoOnHoverOut" data-dtype="Boolean" {{#if pauseVideoOnHoverOut}}checked{{/if}}>
  697. </div>
  698. <p class="notes">When enabled videos will pause when the mouse leaves them.</p>
  699. </div>
  700. </div>
  701. {{/if}}
  702. </section>
  703. <!-- Settings Footer -->
  704. <footer class="sheet-footer flexrow">
  705. <button type="submit" name="submit">
  706. <i class="far fa-save"></i> Save Changes
  707. </button>
  708. </footer>
  709. </form>