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.

406 lines
21 KiB

  1. <form class="{{cssClass}}" autocomplete="off" spellcheck="false" data-tooltip-class="pf2e">
  2. <header class="army-sheet-header">
  3. {{!-- Portrait --}}
  4. <section class="frame">
  5. <img src="{{actor.img}}" data-edit="img" data-tooltip="{{actor.name}}"/>
  6. </section>
  7. <div class="details">
  8. <input class="name" name="name" type="text" value="{{actor.name}}" placeholder="{{localize "PF2E.Kingmaker.Army.NamePlaceholder"}}" spellcheck="false" />
  9. {{!-- TRAITS --}}
  10. <div class="tags paizo-style">
  11. <select class="tag rarity {{data.traits.rarity}}" data-property="system.traits.rarity">
  12. {{#select data.traits.rarity}}
  13. {{#each rarityTraits as |label key|}}
  14. <option value="{{key}}">{{localize label}}</option>
  15. {{/each}}
  16. {{/select}}
  17. </select>
  18. <select class="alignment tag {{data.details.alignment}}" name="system.details.alignment">
  19. {{#select data.details.alignment}}
  20. {{#each alignments as |alignment|}}
  21. <option value="{{alignment}}">{{alignment}}</option>
  22. {{/each}}
  23. {{/select}}
  24. </select>
  25. <select name="system.traits.type" class="tag">
  26. {{#select data.traits.type}}
  27. {{#each armyTypes as |label type|}}
  28. <option value="{{type}}">{{localize label}}</option>
  29. {{/each}}
  30. {{/select}}
  31. </select>
  32. </div>
  33. <label class="level-label stats">
  34. {{localize "TYPES.Actor.army"}}
  35. <input class="level stats" type="number" value="{{data.details.level.value}}"/>
  36. </label>
  37. <div class="alliance">
  38. <span data-tooltip="PF2E.Kingmaker.Army.Alliance.Info">
  39. {{#if (eq document.alliance "party")}}
  40. {{localize "PF2E.Kingmaker.Army.Alliance.Kingdom"}}
  41. {{else}}
  42. {{localize "PF2E.Kingmaker.Army.Alliance.Enemy"}}
  43. {{/if}}
  44. </span>
  45. {{#if (and (eq document.alliance "party") (not linked))}}
  46. <a data-action="link-actor" data-tooltip="PF2E.Kingmaker.Army.Alliance.UnlinkedError">
  47. <i class="fa-solid fa-link-slash error"></i>
  48. </a>
  49. {{/if}}
  50. </div>
  51. </div>
  52. </header>
  53. <section class="army-sidebar">
  54. {{!-- AC --}}
  55. <section>
  56. <header>
  57. <i class="fa-solid fa-fw fa-shield-alt"></i>
  58. <h4 data-tooltip="{{ac.breakdown}}">{{localize "PF2E.ArmorClassLabel"}}</h4>
  59. <input type="number" class="stats {{ac.adjustmentClass}}" data-property="system.ac.value" value="{{ac.value}}" data-dtype="Number"/>
  60. </header>
  61. </section>
  62. {{!-- HP --}}
  63. <section>
  64. <header>
  65. <i class="fa-solid fa-fw fa-heart"></i>
  66. <h4>{{localize "PF2E.HitPointsShortLabel"}}</h4>
  67. <input type="number" data-property="system.attributes.hp.value" value="{{hitPoints.value}}" data-dtype="Number"/>
  68. <span class="slash">/</span>
  69. <input type="number" class="{{hitPoints.max.adjustmentClass}}" data-property="system.attributes.hp.max" value="{{hitPoints.max.value}}" data-dtype="Number"/>
  70. </header>
  71. <label {{#if document.routed}}class="routed" data-tooltip="{{localize "PF2E.Kingmaker.Army.RoutedDescription"}}"{{/if}}>
  72. <span>{{localize "PF2E.Kingmaker.Army.RoutThreshold"}}</span>
  73. <input type="number" class="{{hitPoints.routThreshold.adjustmentClass}}" data-property="system.attributes.hp.routThreshold" value="{{hitPoints.routThreshold.value}}" data-dtype="Number"/>
  74. </label>
  75. </section>
  76. <section class="saves">
  77. {{#each saves as |save|}}
  78. <div class="save" data-statistic="{{save.slug}}">
  79. <a class="attribute-label rollable" data-tooltip="{{save.breakdown}}">{{localize save.label}}</a>
  80. <input type="text" value="{{numberFormat save.mod decimals=0 sign=true}}" class="modifier adjustable {{save.adjustmentClass}}" data-property="system.saves.{{save.slug}}" data-dtype="Number" placeholder="0" />
  81. </div>
  82. {{/each}}
  83. </section>
  84. <section>
  85. <header>
  86. <i class="fa-solid fa-fw fa-eye"></i>
  87. <h4>{{localize "PF2E.Kingmaker.Army.Stats"}}</h4>
  88. </header>
  89. <div class="row">
  90. <span data-tooltip="{{document.scouting.breakdown}}">{{document.scouting.label}}</span>
  91. <section class="roll" data-statistic="scouting">
  92. <a data-attribute="scouting" class="rollable roll-icon"><i class="fa-solid fa-dice-d20"></i></a>
  93. <input class="stats modifier" type="text" data-property="system.scouting" value="{{numberFormat document.scouting.mod decimals=0 sign=true}}" data-dtype="Number"/>
  94. </section>
  95. </div>
  96. <label>
  97. <span>{{localize "PF2E.Kingmaker.Consumption.Label"}}</span>
  98. <input class="{{consumption.adjustmentClass}}" type="number" data-property="system.consumption" value="{{consumption.value}}"/>
  99. </label>
  100. <label>
  101. <span>{{localize "PF2E.Kingmaker.Army.RecruitmentDC"}}</span>
  102. <input type="number" data-property="system.recruitmentDC" value="{{data.recruitmentDC}}"/>
  103. </label>
  104. {{#if data.traits.senses.length}}
  105. <ol class="tags senses">
  106. {{#each data.traits.senses as |sense slug|}}
  107. {{#if sense.label}}<li class="tag tag_alt" data-slug="{{slug}}">{{sense.label}}</li>{{/if}}
  108. {{/each}}
  109. </ol>
  110. {{/if}}
  111. </section>
  112. <section>
  113. <header>
  114. <i class="fa-solid fa-toolbox"></i>
  115. <h4>{{localize "PF2E.Kingmaker.Army.Gear.Label"}}</h4>
  116. </header>
  117. <div class="row gear">
  118. <span>{{localize "PF2E.Kingmaker.Army.Potions.Label"}}</span>
  119. {{#if (eq @root.data.resources.potions.value 0)}}
  120. <span data-tooltip="{{localize "PF2E.Kingmaker.Army.Potions.OutOfPotions"}}" class="disabled"><i class="fa-light fa-champagne-glasses"></i></span>
  121. {{else if (gte @root.document.hitPoints.value @root.document.hitPoints.max)}}
  122. <span data-tooltip="{{localize "PF2E.Kingmaker.Army.Potions.FullHP"}}" class="disabled"><i class="fa-light fa-champagne-glasses"></i></span>
  123. {{else}}
  124. <a data-tooltip="{{localize "PF2E.Kingmaker.Army.Potions.UsePotion"}}" data-action="use-potion"><i class="fa-solid fa-champagne-glasses"></i></a>
  125. {{/if}}
  126. <a class="pips" data-action="change-resource" data-resource="potions">
  127. {{#times @root.data.resources.potions.max as |idx|}}
  128. <i class="{{#if (gt @root.data.resources.potions.value idx)}}fa-regular filled{{else}}fa-light empty{{/if}} fa-flask-round-potion"></i>
  129. {{/times}}
  130. </a>
  131. {{#if document.kingdom}}
  132. <a data-action="show-gear" data-gear="potions" data-tooltip="{{localize "PF2E.Kingmaker.Army.Gear.GearInfo"}}">
  133. <i class="fa-regular fa-comment-alt"></i>
  134. </a>
  135. {{/if}}
  136. </div>
  137. <div class="row gear">
  138. <span>{{localize "PF2E.Kingmaker.Army.Armor"}}</span>
  139. <a class="pips" data-action="change-magic-armor">
  140. {{#times 3}}
  141. <i class="{{#if (gt @root.data.ac.potency this)}}fa-regular fa-shield filled{{else}}fa-light fa-shield empty{{/if}}"></i>
  142. {{/times}}
  143. </a>
  144. {{#if document.kingdom}}
  145. <a data-action="show-gear" data-gear="armor" data-tooltip="{{localize "PF2E.Kingmaker.Army.Gear.GearInfo"}}">
  146. <i class="fa-regular fa-comment-alt"></i>
  147. </a>
  148. {{/if}}
  149. </div>
  150. <div class="row gear">
  151. <span>{{localize "PF2E.Kingmaker.Army.Strikes.melee"}}</span>
  152. <a class="pips" data-action="change-magic-weapon" data-weapon="melee">
  153. <i class="{{#if data.weapons.melee}}fa-solid filled{{else}}fa-regular{{/if}} fa-circle split"></i>
  154. <span>
  155. {{#times 3}}
  156. <i class="{{#if (gt @root.data.weapons.melee.potency this)}}fa-regular fa-sword filled{{else}}fa-light fa-sword{{/if}}"></i>
  157. {{/times}}
  158. </span>
  159. </a>
  160. {{#if document.kingdom}}
  161. <a data-action="show-gear" data-gear="melee" data-tooltip="{{localize "PF2E.Kingmaker.Army.Gear.GearInfo"}}">
  162. <i class="fa-regular fa-comment-alt"></i>
  163. </a>
  164. {{/if}}
  165. </div>
  166. <div class="row gear">
  167. <span>{{localize "PF2E.Kingmaker.Army.Strikes.ranged"}}</span>
  168. <a class="pips" data-action="change-magic-weapon" data-weapon="ranged">
  169. <i class="{{#if data.weapons.ranged}}fa-solid filled{{else}}fa-regular{{/if}} fa-circle split"></i>
  170. <span>
  171. {{#times 3}}
  172. <i class="{{#if (gt @root.data.weapons.ranged.potency this)}}fa-regular fa-bow-arrow filled{{else}}fa-light fa-bow-arrow{{/if}}"></i>
  173. {{/times}}
  174. </span>
  175. </a>
  176. {{#if document.kingdom}}
  177. <a data-action="show-gear" data-gear="ranged" data-tooltip="{{localize "PF2E.Kingmaker.Army.Gear.GearInfo"}}">
  178. <i class="fa-regular fa-comment-alt"></i>
  179. </a>
  180. {{/if}}
  181. </div>
  182. </section>
  183. </section>
  184. <section class="army-body sheet-body">
  185. <fieldset>
  186. <legend>
  187. <i class="fa-light fa-note"></i> {{localize "PF2E.Kingmaker.Army.Description"}}
  188. {{#if @root.options.editable}}
  189. <div class="item-controls">
  190. <a data-action="edit-description" data-tooltip="{{localize "PF2E.EditItemTitle"}}"><i class="fa-solid fa-fw fa-edit"></i></a>
  191. </div>
  192. {{/if}}
  193. </legend>
  194. {{editor data.details.description target="system.details.description" button=true owner=owner editable=editable}}
  195. </fieldset>
  196. <!-- TOGGLES -->
  197. {{#if toggles}}
  198. <section class="toggles">
  199. {{> "systems/pf2e/templates/actors/partials/toggles.hbs" toggles=toggles}}
  200. </section>
  201. {{/if}}
  202. <fieldset class="weapons">
  203. <legend>
  204. <i class="fa-light fa-swords"></i>
  205. {{localize "PF2E.Kingmaker.Army.Strikes.Label"}}
  206. {{#if document.strikes.ranged}}
  207. <div class="ammunition">
  208. (
  209. <span>{{localize "PF2E.Kingmaker.Army.Ammunition"}}</span>
  210. <a class="pips" data-action="change-resource" data-resource="ammunition" data-tooltip="{{localize "PF2E.Kingmaker.Army.Strikes.CurrentAmmo" current=data.resources.ammunition.value max=data.resources.ammunition.max}}">
  211. {{#times @root.data.resources.ammunition.max}}
  212. <i class="{{#if (gt @root.data.resources.ammunition.value this)}}fa-regular fa-dagger filled{{else}}fa-light fa-dagger empty{{/if}}"></i>
  213. {{/times}}
  214. </a>
  215. <a data-action="reset-ammo" data-tooltip="{{localize "PF2E.Kingmaker.Army.Strikes.RestoreAmmunition"}}" >
  216. <i class="{{#if (eq @root.data.weapons.ammunition.value 5)}}fa-light fa-refresh empty{{else}}fa-regular fa-refresh filled{{/if}}"></i>
  217. </a>
  218. )
  219. </div>
  220. {{/if}}
  221. </legend>
  222. {{#unless (or document.strikes.melee document.strikes.ranged)}}
  223. <p>{{localize "PF2E.Kingmaker.Army.Strikes.None"}}</p>
  224. {{/unless}}
  225. {{#each document.strikes as |strike type|}}
  226. <div class="strike" data-strike="{{type}}">
  227. {{#if (eq type "melee")}}
  228. <i class="fa-solid fa-fw fa-sword"></i>
  229. {{else}}
  230. <i class="fa-solid fa-fw fa-bow-arrow"></i>
  231. {{/if}}
  232. <input class="name" type="text" name="system.weapons.{{type}}.name" value="{{strike.label}}" placeholder="{{localize (concat "PF2E.Kingmaker.Army.Strikes." type)}}" />
  233. {{#each strike.variants as |variant index|}}
  234. <button
  235. type="button"
  236. data-action="strike-attack"
  237. data-variant-index="{{index}}"
  238. class="attack"
  239. {{#unless (or @root.data.resources.ammunition.value (ne type "ranged"))}}
  240. disabled
  241. data-tooltip="{{localize "PF2E.Kingmaker.Army.Strikes.OutOfAmmo"}}"
  242. {{/unless}}>
  243. {{#if (eq index 0)}}
  244. <span class="name">{{localize "PF2E.WeaponStrikeLabel"}}</span>
  245. <span class="action-glyph">{{strike.glyph}}</span>
  246. {{/if}}
  247. {{variant.label}}
  248. </button>
  249. {{/each}}
  250. <button type="button" data-action="strike-damage" class="damage">{{localize "PF2E.DamageLabel"}}</button>
  251. <button type="button" data-action="strike-damage" data-outcome="criticalSuccess" class="damage critical">{{localize "PF2E.CriticalDamageLabel"}}</button>
  252. </div>
  253. {{/each}}
  254. </fieldset>
  255. <fieldset class="conditions">
  256. <legend>
  257. <i class="fa-light fa-sparkles"></i> {{localize "PF2E.ConditionsLabel"}}
  258. </legend>
  259. <ol class="item-list">
  260. {{#each document.itemTypes.effect as |effect|}}
  261. <li class="item" data-item-id="{{effect._id}}">
  262. <a class="icon item-image">
  263. <img class="item-icon" src="{{effect.img}}" alt="{{effect.name}}" />
  264. <i class="fa-solid fa-fw fa-comment-alt"></i>
  265. </a>
  266. <h4 class="item-name">
  267. <a data-action="toggle-summary">{{effect.name}}</a>
  268. </h4>
  269. {{#if (and (eq effect.type "effect") (eq effect.badge.type "counter"))}}
  270. ({{coalesce effect.badge.label effect.badge.value}})
  271. {{/if}}
  272. {{#if (eq effect.type "condition")}}{{#unless effect.active}}<span> (Inactive)</span>{{/unless}}{{/if}}
  273. <div class="item-controls">
  274. {{#if (and @root.options.editable (not effect.readonly))}}
  275. {{#if (eq effect.badge.type "counter")}}
  276. <a class="item-control increment" data-tooltip="{{localize "PF2E.IncrementEffectTitle"}}"><i class="fa-solid fa-fw fa-plus"></i></a>
  277. <a class="item-control decrement" data-tooltip="{{localize "PF2E.DecrementEffectTitle"}}"><i class="fa-solid fa-fw fa-minus"></i></a>
  278. {{/if}}
  279. {{#if (eq effect.type "effect")}}
  280. <a class="item-control item-edit" data-tooltip="{{localize "PF2E.EditItemTitle"}}"><i class="fa-solid fa-fw fa-edit"></i></a>
  281. {{/if}}
  282. <a class="item-control item-delete" data-tooltip="{{localize "PF2E.DeleteItemTitle"}}"><i class="fa-solid fa-fw fa-trash"></i></a>
  283. {{else if effect.readonly}}
  284. <a class="item-control info-only" data-tooltip="{{effect.breakdown}}"><i class="fa-solid fa-fw fa-info-circle"></i></a>
  285. {{/if}}
  286. </div>
  287. <div class="item-summary" hidden></div>
  288. </li>
  289. {{/each}}
  290. </ol>
  291. </fieldset>
  292. <fieldset class="actions">
  293. <legend>
  294. <i class="fa-light fa-diamond"></i> {{localize "PF2E.Kingmaker.Army.BasicWarActions"}}
  295. </legend>
  296. <ol class="item-list">
  297. {{#each basicWarActions as |action|}}
  298. <li class="item basic-war-action" data-slug="{{action.slug}}">
  299. <a class="icon item-image" data-action="use-basic-war-action">
  300. <img class="item-icon" src="{{action.img}}" alt="{{action.name}}" />
  301. <i class="fa-solid fa-fw fa-comment-alt"></i>
  302. </a>
  303. <h4 class="item-name">
  304. <a data-action="toggle-basic-war-action-summary">{{action.name}}</a>
  305. </h4>
  306. <div class="item-summary" hidden></div>
  307. </li>
  308. {{/each}}
  309. </ol>
  310. </fieldset>
  311. {{#if warActions.length}}
  312. <fieldset class="actions">
  313. <legend>
  314. <i class="fa-light fa-diamond"></i> {{localize "PF2E.Kingmaker.Army.TacticalWarActions"}}
  315. </legend>
  316. <ol class="item-list">
  317. {{#each warActions as |action|}}
  318. {{> actionItem action=action}}
  319. {{/each}}
  320. </ol>
  321. </fieldset>
  322. {{/if}}
  323. <fieldset data-group-id="{{document.tactics.id}}">
  324. <legend>
  325. <i class="fa-light fa-flag-swallowtail"></i>
  326. {{localize "PF2E.Kingmaker.Army.Tactics"}}
  327. </legend>
  328. <ol class="item-list">
  329. {{#each document.tactics.feats as |entry|}}
  330. {{> actionItem action=entry.feat slotId=entry.id}}
  331. {{/each}}
  332. </ol>
  333. </fieldset>
  334. {{#if document.bonusTactics.feats.length}}
  335. <fieldset>
  336. <legend>
  337. <i class="fa-light fa-gift"></i>
  338. {{localize "PF2E.Kingmaker.Army.TacticsFree"}}
  339. </legend>
  340. <ol class="item-list">
  341. {{#each document.bonusTactics.feats as |entry|}}
  342. {{> actionItem action=entry.feat slotId=entry.id}}
  343. {{/each}}
  344. </ol>
  345. </fieldset>
  346. {{/if}}
  347. </section>
  348. </form>
  349. {{#*inline "actionItem"}}
  350. {{#if action}}
  351. <li class="item" {{#if action}}data-item-id="{{action._id}}"{{/if}} {{#if slotId}}data-slot-id="{{slotId}}"{{/if}}>
  352. <div class="icon item-image">
  353. <img class="item-icon" src="{{action.img}}" alt="{{action.name}}" />
  354. <i class="fa-solid fa-fw fa-comment-alt"></i>
  355. </div>
  356. <h4 class="item-name">
  357. <a data-action="toggle-summary">{{action.name}}</a>
  358. </h4>
  359. {{#if action.system.frequency}}
  360. <section class="item-frequency">
  361. <input type="number" value="{{action.system.frequency.value}}" data-item-id="{{action._id}}" data-item-property="system.frequency.value"/>
  362. <span>
  363. /
  364. {{action.system.frequency.max}}
  365. {{localize "PF2E.Frequency.per"}}
  366. {{localize (lookup @root.frequencies action.system.frequency.per)}}
  367. </span>
  368. </section>
  369. {{/if}}
  370. {{#if @root.options.editable}}
  371. <div class="item-controls">
  372. <a class="item-control item-edit" data-tooltip="{{localize "PF2E.EditItemTitle"}}"><i class="fa-solid fa-fw fa-edit"></i></a>
  373. {{#if action.granter}}
  374. <i class="fa-solid fa-lock fa-fw" data-tooltip="{{localize "PF2E.Kingmaker.GrantedBy" granter=action.granter.name}}"></i>
  375. {{else}}
  376. <a class="item-control item-delete" data-tooltip="{{localize "PF2E.DeleteItemTitle"}}"><i class="fa-solid fa-fw fa-trash"></i></a>
  377. {{/if}}
  378. </div>
  379. {{/if}}
  380. <div class="item-summary" hidden></div>
  381. </li>
  382. {{else}}
  383. <li class="item empty" {{#if slotId}}data-slot-id="{{slotId}}"{{/if}}>
  384. <div class="item-icon"></div>
  385. <div class="item-name">{{localize "PF2E.EmptySlot"}}</div>
  386. </li>
  387. {{/if}}
  388. {{/inline}}