@opencharacter/wwn-srd 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. package/LICENSE +144 -0
  2. package/README.md +147 -2
  3. package/content/armor/buff-coat.yaml +7 -0
  4. package/content/armor/cuirass-and-greaves.yaml +7 -0
  5. package/content/armor/grand-plate.yaml +7 -0
  6. package/content/armor/great-armor.yaml +7 -0
  7. package/content/armor/large-shield.yaml +6 -0
  8. package/content/armor/linothorax.yaml +6 -0
  9. package/content/armor/mail-hauberk.yaml +7 -0
  10. package/content/armor/mail-shirt.yaml +6 -0
  11. package/content/armor/pieced-armor.yaml +7 -0
  12. package/content/armor/plate-armor.yaml +7 -0
  13. package/content/armor/scaled-armor.yaml +7 -0
  14. package/content/armor/small-shield.yaml +6 -0
  15. package/content/armor/war-robe.yaml +7 -0
  16. package/content/armor/war-shirt.yaml +7 -0
  17. package/content/arts/accursed/accursed-blade.yaml +5 -0
  18. package/content/arts/accursed/accursed-bolt.yaml +5 -0
  19. package/content/arts/accursed/bewitching-distraction.yaml +5 -0
  20. package/content/arts/accursed/compelling-shriek.yaml +5 -0
  21. package/content/arts/accursed/devils-bargain.yaml +4 -0
  22. package/content/arts/accursed/dire-pact.yaml +4 -0
  23. package/content/arts/accursed/lying-face.yaml +5 -0
  24. package/content/arts/accursed/night-black-eyes.yaml +4 -0
  25. package/content/arts/accursed/pacted-protection.yaml +4 -0
  26. package/content/arts/accursed/rob-vitality.yaml +5 -0
  27. package/content/arts/accursed/scourging-curse.yaml +5 -0
  28. package/content/arts/accursed/shadowed-steps.yaml +5 -0
  29. package/content/arts/accursed/snaring-speech.yaml +5 -0
  30. package/content/arts/accursed/sorcerous-battery.yaml +5 -0
  31. package/content/arts/accursed/soul-consumption.yaml +5 -0
  32. package/content/arts/accursed/tendrils-of-night.yaml +5 -0
  33. package/content/arts/accursed/unseen-steps.yaml +5 -0
  34. package/content/arts/accursed/weeping-wounds.yaml +5 -0
  35. package/content/arts/accursed/weight-of-sin.yaml +5 -0
  36. package/content/arts/bard/a-thousand-tongues.yaml +5 -0
  37. package/content/arts/bard/battle-cry.yaml +5 -0
  38. package/content/arts/bard/cursed-tune.yaml +5 -0
  39. package/content/arts/bard/deft-fingers.yaml +6 -0
  40. package/content/arts/bard/entangle-incantation.yaml +5 -0
  41. package/content/arts/bard/evoke-emotion.yaml +5 -0
  42. package/content/arts/bard/inspire-dread.yaml +5 -0
  43. package/content/arts/bard/keen-senses.yaml +4 -0
  44. package/content/arts/bard/liberating-song.yaml +5 -0
  45. package/content/arts/bard/rally.yaml +5 -0
  46. package/content/arts/bard/soothe-the-savage.yaml +5 -0
  47. package/content/arts/bard/soothing-graces.yaml +4 -0
  48. package/content/arts/bard/swift-misdirection.yaml +5 -0
  49. package/content/arts/beastmaster/beast-ward.yaml +5 -0
  50. package/content/arts/beastmaster/bind-companion.yaml +5 -0
  51. package/content/arts/beastmaster/eyes-of-the-beast.yaml +5 -0
  52. package/content/arts/beastmaster/feral-toughness.yaml +8 -0
  53. package/content/arts/beastmaster/howl-of-distant-summons.yaml +5 -0
  54. package/content/arts/beastmaster/know-the-weak-spot.yaml +5 -0
  55. package/content/arts/beastmaster/mind-call.yaml +5 -0
  56. package/content/arts/beastmaster/natural-weaponry.yaml +10 -0
  57. package/content/arts/beastmaster/savage-senses.yaml +5 -0
  58. package/content/arts/beastmaster/shared-vitality.yaml +5 -0
  59. package/content/arts/beastmaster/swift-healing.yaml +5 -0
  60. package/content/arts/beastmaster/tongue-of-the-beasts.yaml +5 -0
  61. package/content/arts/blood-priest/a-thousand-tongues.yaml +5 -0
  62. package/content/arts/blood-priest/armor-of-god.yaml +11 -0
  63. package/content/arts/blood-priest/divine-guidance.yaml +5 -0
  64. package/content/arts/blood-priest/fear-no-flame.yaml +5 -0
  65. package/content/arts/blood-priest/god-wills-it.yaml +5 -0
  66. package/content/arts/blood-priest/light-of-faith.yaml +5 -0
  67. package/content/arts/blood-priest/merciful-healing.yaml +5 -0
  68. package/content/arts/blood-priest/sanctified-ward.yaml +5 -0
  69. package/content/arts/blood-priest/smite-the-wicked.yaml +5 -0
  70. package/content/arts/blood-priest/transubstantiation.yaml +5 -0
  71. package/content/arts/blood-priest/turn-false-life.yaml +5 -0
  72. package/content/arts/blood-priest/words-of-mercy.yaml +5 -0
  73. package/content/arts/blood-priest/wrath-of-the-most-high.yaml +5 -0
  74. package/content/arts/duelist/blood-for-blood.yaml +5 -0
  75. package/content/arts/duelist/burst-of-speed.yaml +5 -0
  76. package/content/arts/duelist/code-duello.yaml +5 -0
  77. package/content/arts/duelist/crushing-superiority.yaml +5 -0
  78. package/content/arts/duelist/dauntless-step.yaml +5 -0
  79. package/content/arts/duelist/dodge-doom.yaml +5 -0
  80. package/content/arts/duelist/favored-weapon.yaml +13 -0
  81. package/content/arts/duelist/forced-engagement.yaml +5 -0
  82. package/content/arts/duelist/gentlemans-withdrawal.yaml +5 -0
  83. package/content/arts/duelist/graceful-leap.yaml +5 -0
  84. package/content/arts/duelist/lightning-draw.yaml +5 -0
  85. package/content/arts/duelist/piercing-strike.yaml +5 -0
  86. package/content/arts/duelist/spiritual-weapon.yaml +5 -0
  87. package/content/arts/duelist/unbindable.yaml +5 -0
  88. package/content/arts/duelist/unworthy-rabble.yaml +5 -0
  89. package/content/arts/duelist/whirling-evasion.yaml +10 -0
  90. package/content/arts/elementalist/beckoned-deluge.yaml +5 -0
  91. package/content/arts/elementalist/earthsight.yaml +5 -0
  92. package/content/arts/elementalist/elemental-blast.yaml +5 -0
  93. package/content/arts/elementalist/elemental-resilience.yaml +5 -0
  94. package/content/arts/elementalist/elemental-sparks.yaml +5 -0
  95. package/content/arts/elementalist/flamesight.yaml +5 -0
  96. package/content/arts/elementalist/pavis-of-elements.yaml +8 -0
  97. package/content/arts/elementalist/petrifying-stare.yaml +5 -0
  98. package/content/arts/elementalist/rune-of-destruction.yaml +5 -0
  99. package/content/arts/elementalist/steps-of-air.yaml +5 -0
  100. package/content/arts/elementalist/stunning-shock.yaml +5 -0
  101. package/content/arts/elementalist/thermal-shield.yaml +5 -0
  102. package/content/arts/healer/empowered-healer.yaml +4 -0
  103. package/content/arts/healer/facile-healer.yaml +4 -0
  104. package/content/arts/healer/far-healer.yaml +4 -0
  105. package/content/arts/healer/final-repose.yaml +5 -0
  106. package/content/arts/healer/healers-eye.yaml +5 -0
  107. package/content/arts/healer/healers-knife.yaml +4 -0
  108. package/content/arts/healer/healing-touch.yaml +6 -0
  109. package/content/arts/healer/limb-restoration.yaml +8 -0
  110. package/content/arts/healer/purge-ailment.yaml +5 -0
  111. package/content/arts/healer/refined-restoration.yaml +4 -0
  112. package/content/arts/healer/revive-the-fallen.yaml +8 -0
  113. package/content/arts/healer/swift-healer.yaml +4 -0
  114. package/content/arts/healer/tireless-vigor.yaml +5 -0
  115. package/content/arts/healer/vital-furnace.yaml +5 -0
  116. package/content/arts/high-mage/arcane-lexicon.yaml +5 -0
  117. package/content/arts/high-mage/counter-magic.yaml +5 -0
  118. package/content/arts/high-mage/empowered-sorcery.yaml +5 -0
  119. package/content/arts/high-mage/hang-sorcery.yaml +5 -0
  120. package/content/arts/high-mage/inexorable-effect.yaml +5 -0
  121. package/content/arts/high-mage/iron-resolution.yaml +5 -0
  122. package/content/arts/high-mage/preparatory-countermagic.yaml +5 -0
  123. package/content/arts/high-mage/psychic-conversion.yaml +4 -0
  124. package/content/arts/high-mage/restrained-casting.yaml +5 -0
  125. package/content/arts/high-mage/retain-sorcery.yaml +5 -0
  126. package/content/arts/high-mage/sense-magic.yaml +5 -0
  127. package/content/arts/high-mage/suppress-magic.yaml +5 -0
  128. package/content/arts/high-mage/swift-casting.yaml +5 -0
  129. package/content/arts/high-mage/ward-allies.yaml +5 -0
  130. package/content/arts/high-mage/wizards-grandeur.yaml +5 -0
  131. package/content/arts/mageslayer/absolute-negation.yaml +6 -0
  132. package/content/arts/mageslayer/antimage.yaml +8 -0
  133. package/content/arts/mageslayer/dispel-enchantment.yaml +6 -0
  134. package/content/arts/mageslayer/disrupt-sorcery.yaml +6 -0
  135. package/content/arts/mageslayer/immaculate-body.yaml +5 -0
  136. package/content/arts/mageslayer/immaculate-mind.yaml +5 -0
  137. package/content/arts/mageslayer/know-your-prey.yaml +7 -0
  138. package/content/arts/mageslayer/magebane.yaml +5 -0
  139. package/content/arts/mageslayer/share-the-pain.yaml +6 -0
  140. package/content/arts/mageslayer/spellshield.yaml +5 -0
  141. package/content/arts/mageslayer/ward-ally.yaml +6 -0
  142. package/content/arts/mageslayer/witchfinder.yaml +6 -0
  143. package/content/arts/necromancer/bonetalker.yaml +5 -0
  144. package/content/arts/necromancer/cold-flesh.yaml +6 -0
  145. package/content/arts/necromancer/consume-life-energy.yaml +4 -0
  146. package/content/arts/necromancer/false-death.yaml +5 -0
  147. package/content/arts/necromancer/gravesight.yaml +5 -0
  148. package/content/arts/necromancer/keeper-of-the-gate.yaml +5 -0
  149. package/content/arts/necromancer/life-bridge.yaml +5 -0
  150. package/content/arts/necromancer/master-of-bones.yaml +5 -0
  151. package/content/arts/necromancer/red-harvest.yaml +5 -0
  152. package/content/arts/necromancer/unaging.yaml +4 -0
  153. package/content/arts/necromancer/uncanny-ichor.yaml +4 -0
  154. package/content/arts/necromancer/unliving-persistence.yaml +5 -0
  155. package/content/arts/skinshifter/change-form.yaml +6 -0
  156. package/content/arts/skinshifter/eyes-of-the-hawk.yaml +4 -0
  157. package/content/arts/skinshifter/feline-leap.yaml +4 -0
  158. package/content/arts/skinshifter/feral-prowess.yaml +4 -0
  159. package/content/arts/skinshifter/intrinsic-armor.yaml +4 -0
  160. package/content/arts/skinshifter/manifest-wings.yaml +4 -0
  161. package/content/arts/skinshifter/monkeys-road.yaml +4 -0
  162. package/content/arts/skinshifter/octopus-embrace.yaml +4 -0
  163. package/content/arts/skinshifter/perfect-mimicry.yaml +4 -0
  164. package/content/arts/skinshifter/pliant-flesh.yaml +4 -0
  165. package/content/arts/skinshifter/savage-talons.yaml +4 -0
  166. package/content/arts/skinshifter/sculptors-beauty.yaml +4 -0
  167. package/content/arts/skinshifter/serpents-kiss.yaml +5 -0
  168. package/content/arts/skinshifter/warform.yaml +4 -0
  169. package/content/arts/skinshifter/wisdom-of-fin-and-scale.yaml +4 -0
  170. package/content/arts/thought-noble/block-memory.yaml +5 -0
  171. package/content/arts/thought-noble/elicitation-of-truth.yaml +8 -0
  172. package/content/arts/thought-noble/facile-speech.yaml +7 -0
  173. package/content/arts/thought-noble/far-speech.yaml +5 -0
  174. package/content/arts/thought-noble/hypercognition.yaml +5 -0
  175. package/content/arts/thought-noble/iconograph.yaml +5 -0
  176. package/content/arts/thought-noble/impress-imperative.yaml +5 -0
  177. package/content/arts/thought-noble/mind-light.yaml +4 -0
  178. package/content/arts/thought-noble/mind-over-matter.yaml +5 -0
  179. package/content/arts/thought-noble/mirror-mask.yaml +5 -0
  180. package/content/arts/thought-noble/open-mind.yaml +6 -0
  181. package/content/arts/thought-noble/positive-association.yaml +5 -0
  182. package/content/arts/thought-noble/read-intent.yaml +5 -0
  183. package/content/arts/thought-noble/surface-apprehension.yaml +5 -0
  184. package/content/arts/thought-noble/thoughts-like-razors.yaml +5 -0
  185. package/content/arts/thought-noble/unthinkable-thought.yaml +5 -0
  186. package/content/arts/vowed/brutal-counter.yaml +5 -0
  187. package/content/arts/vowed/faultless-awareness.yaml +4 -0
  188. package/content/arts/vowed/hurling-throw.yaml +5 -0
  189. package/content/arts/vowed/inward-eye.yaml +5 -0
  190. package/content/arts/vowed/leap-of-the-heavens.yaml +5 -0
  191. package/content/arts/vowed/martial-style.yaml +9 -0
  192. package/content/arts/vowed/masters-vigor.yaml +4 -0
  193. package/content/arts/vowed/mob-justice.yaml +5 -0
  194. package/content/arts/vowed/nimble-ascent.yaml +5 -0
  195. package/content/arts/vowed/purified-body.yaml +5 -0
  196. package/content/arts/vowed/revivifying-breath.yaml +5 -0
  197. package/content/arts/vowed/shattering-strike.yaml +5 -0
  198. package/content/arts/vowed/style-weaponry.yaml +4 -0
  199. package/content/arts/vowed/unarmed-might.yaml +10 -0
  200. package/content/arts/vowed/unarmored-defense.yaml +11 -0
  201. package/content/arts/vowed/unobtrusive-step.yaml +5 -0
  202. package/content/arts/wise/auspicious-undertaking.yaml +5 -0
  203. package/content/arts/wise/compel-truth.yaml +5 -0
  204. package/content/arts/wise/deliver-oracle.yaml +5 -0
  205. package/content/arts/wise/dread-awe.yaml +5 -0
  206. package/content/arts/wise/elite-ties.yaml +5 -0
  207. package/content/arts/wise/erudite.yaml +5 -0
  208. package/content/arts/wise/evil-eye.yaml +5 -0
  209. package/content/arts/wise/find-object.yaml +5 -0
  210. package/content/arts/wise/folk-friend.yaml +5 -0
  211. package/content/arts/wise/healer.yaml +7 -0
  212. package/content/arts/wise/holy-sanctity.yaml +5 -0
  213. package/content/arts/wise/ill-fate.yaml +5 -0
  214. package/content/arts/wise/luck-blessing.yaml +5 -0
  215. package/content/arts/wise/personal-impunity.yaml +5 -0
  216. package/content/arts/wise/read-omens.yaml +5 -0
  217. package/content/arts/wise/skilled.yaml +5 -0
  218. package/content/arts/wise/war-curse.yaml +5 -0
  219. package/content/backgrounds/artisan.yaml +18 -0
  220. package/content/backgrounds/barbarian.yaml +18 -0
  221. package/content/classes/adventurer.yaml +16 -0
  222. package/content/classes/expert.yaml +6 -0
  223. package/content/classes/mage.yaml +8 -0
  224. package/content/classes/warrior.yaml +8 -0
  225. package/content/foci/alert.yaml +10 -0
  226. package/content/foci/armored-magic.yaml +9 -0
  227. package/content/foci/armsmaster.yaml +20 -0
  228. package/content/foci/artisan.yaml +5 -0
  229. package/content/foci/assassin.yaml +5 -0
  230. package/content/foci/authority.yaml +5 -0
  231. package/content/foci/close-combatant.yaml +8 -0
  232. package/content/foci/connected.yaml +5 -0
  233. package/content/foci/cultured.yaml +5 -0
  234. package/content/foci/deadeye.yaml +11 -0
  235. package/content/foci/dealmaker.yaml +5 -0
  236. package/content/foci/developed-attribute.yaml +23 -0
  237. package/content/foci/die-hard.yaml +5 -0
  238. package/content/foci/diplomatic-grace.yaml +5 -0
  239. package/content/foci/gifted-chirurgeon.yaml +11 -0
  240. package/content/foci/henchkeeper.yaml +5 -0
  241. package/content/foci/impervious-defense.yaml +5 -0
  242. package/content/foci/impostor.yaml +5 -0
  243. package/content/foci/lucky.yaml +11 -0
  244. package/content/foci/nullifier.yaml +7 -0
  245. package/content/foci/poisoner.yaml +5 -0
  246. package/content/foci/polymath.yaml +10 -0
  247. package/content/foci/rider.yaml +5 -0
  248. package/content/foci/shocking-assault.yaml +9 -0
  249. package/content/foci/snipers-eye.yaml +5 -0
  250. package/content/foci/special-origin.yaml +5 -0
  251. package/content/foci/specialist.yaml +38 -0
  252. package/content/foci/spirit-familiar.yaml +5 -0
  253. package/content/foci/traditional-education.yaml +15 -0
  254. package/content/foci/trapmaster.yaml +5 -0
  255. package/content/foci/unarmed-combatant.yaml +16 -0
  256. package/content/foci/unique-gift.yaml +5 -0
  257. package/content/foci/valiant-defender.yaml +5 -0
  258. package/content/foci/well-met.yaml +3 -0
  259. package/content/foci/whirlwind-assault.yaml +5 -0
  260. package/content/foci/xenoblooded.yaml +22 -0
  261. package/content/gear/arrows.yaml +5 -0
  262. package/content/gear/artisans-equipment.yaml +6 -0
  263. package/content/gear/backpack.yaml +6 -0
  264. package/content/gear/battle-horse.yaml +5 -0
  265. package/content/gear/boots.yaml +6 -0
  266. package/content/gear/candle.yaml +5 -0
  267. package/content/gear/cart.yaml +4 -0
  268. package/content/gear/common-clothes.yaml +6 -0
  269. package/content/gear/cooking-utensils.yaml +5 -0
  270. package/content/gear/criminal-tools.yaml +6 -0
  271. package/content/gear/crowbar.yaml +5 -0
  272. package/content/gear/draft-horse.yaml +5 -0
  273. package/content/gear/dungeoneering-kit.yaml +6 -0
  274. package/content/gear/fine-clothes.yaml +6 -0
  275. package/content/gear/firewood.yaml +6 -0
  276. package/content/gear/flask.yaml +5 -0
  277. package/content/gear/grappling-hook.yaml +5 -0
  278. package/content/gear/healers-pouch.yaml +5 -0
  279. package/content/gear/hurlant-bolts.yaml +5 -0
  280. package/content/gear/iron-spikes.yaml +5 -0
  281. package/content/gear/lantern.yaml +5 -0
  282. package/content/gear/mirror.yaml +4 -0
  283. package/content/gear/mule.yaml +5 -0
  284. package/content/gear/noble-clothes.yaml +6 -0
  285. package/content/gear/noble-courtier-outfit.yaml +6 -0
  286. package/content/gear/oil.yaml +6 -0
  287. package/content/gear/paper.yaml +4 -0
  288. package/content/gear/performers-implements.yaml +6 -0
  289. package/content/gear/rations.yaml +5 -0
  290. package/content/gear/riding-horse.yaml +5 -0
  291. package/content/gear/rope.yaml +5 -0
  292. package/content/gear/sack.yaml +5 -0
  293. package/content/gear/shovel.yaml +5 -0
  294. package/content/gear/small-tool.yaml +5 -0
  295. package/content/gear/tinder-box.yaml +4 -0
  296. package/content/gear/torch.yaml +7 -0
  297. package/content/gear/waterskin.yaml +5 -0
  298. package/content/gear/wilderness-travel-gear.yaml +6 -0
  299. package/content/gear/working-dog.yaml +5 -0
  300. package/content/gear/writing-kit.yaml +5 -0
  301. package/content/partials/accursed.yaml +18 -0
  302. package/content/partials/bard.yaml +9 -0
  303. package/content/partials/beastmaster.yaml +9 -0
  304. package/content/partials/blood-priest.yaml +7 -0
  305. package/content/partials/duelist.yaml +10 -0
  306. package/content/partials/expert.yaml +6 -0
  307. package/content/partials/healer.yaml +9 -0
  308. package/content/partials/mage.yaml +12 -0
  309. package/content/partials/mageslayer.yaml +21 -0
  310. package/content/partials/skinshifter.yaml +9 -0
  311. package/content/partials/thought-noble.yaml +9 -0
  312. package/content/partials/vowed.yaml +41 -0
  313. package/content/partials/warrior.yaml +6 -0
  314. package/content/partials/wise.yaml +45 -0
  315. package/content/spells/elementalist/aqueous-harmony.yaml +5 -0
  316. package/content/spells/elementalist/boreal-wings.yaml +5 -0
  317. package/content/spells/elementalist/burrower-below.yaml +5 -0
  318. package/content/spells/elementalist/calcifying-scourge.yaml +5 -0
  319. package/content/spells/elementalist/elemental-favor.yaml +5 -0
  320. package/content/spells/elementalist/elemental-guardian.yaml +5 -0
  321. package/content/spells/elementalist/elemental-spy.yaml +5 -0
  322. package/content/spells/elementalist/elemental-vallation.yaml +5 -0
  323. package/content/spells/elementalist/flame-scrying.yaml +5 -0
  324. package/content/spells/elementalist/flame-without-end.yaml +5 -0
  325. package/content/spells/elementalist/fury-of-the-elements.yaml +5 -0
  326. package/content/spells/elementalist/like-the-stones.yaml +5 -0
  327. package/content/spells/elementalist/pact-of-stone-and-sea.yaml +5 -0
  328. package/content/spells/elementalist/tremors-of-the-depths.yaml +5 -0
  329. package/content/spells/elementalist/wind-walking.yaml +5 -0
  330. package/content/spells/high/abdication-of-temporal-presence.yaml +5 -0
  331. package/content/spells/high/adopt-the-simulacular-visage.yaml +5 -0
  332. package/content/spells/high/apprehending-the-arcane-form.yaml +5 -0
  333. package/content/spells/high/banishment-to-the-black-glass-labyrinth.yaml +5 -0
  334. package/content/spells/high/calculation-of-the-evoked-servitor.yaml +5 -0
  335. package/content/spells/high/calculation-of-the-phantasmal-eidolon.yaml +5 -0
  336. package/content/spells/high/casting-forth-the-inner-eye.yaml +5 -0
  337. package/content/spells/high/cognitive-supersession-of-the-inferior-orders.yaml +5 -0
  338. package/content/spells/high/conjunct-the-vital-viscera.yaml +5 -0
  339. package/content/spells/high/conjunction-of-the-inexorable-step.yaml +5 -0
  340. package/content/spells/high/contingent-excision-of-arcana.yaml +5 -0
  341. package/content/spells/high/coruscating-coffin.yaml +5 -0
  342. package/content/spells/high/damnation-of-the-sense.yaml +5 -0
  343. package/content/spells/high/dazzling-prismatic-hemicycle.yaml +5 -0
  344. package/content/spells/high/decree-of-ligneous-dissolution.yaml +5 -0
  345. package/content/spells/high/decree-of-lithic-dissolution.yaml +5 -0
  346. package/content/spells/high/deluge-of-hell.yaml +5 -0
  347. package/content/spells/high/disjunctive-temporal-reversion.yaml +5 -0
  348. package/content/spells/high/earth-as-clay.yaml +5 -0
  349. package/content/spells/high/evert-the-inwardness.yaml +5 -0
  350. package/content/spells/high/excellent-transpicuous-transformation.yaml +5 -0
  351. package/content/spells/high/exhalation-of-congelating-cold.yaml +5 -0
  352. package/content/spells/high/extirpate-arcana.yaml +5 -0
  353. package/content/spells/high/foresightful-apprehension.yaml +5 -0
  354. package/content/spells/high/glass-chimes-of-the-bamboo-terrace.yaml +5 -0
  355. package/content/spells/high/grinding-geas.yaml +5 -0
  356. package/content/spells/high/howl-of-light.yaml +5 -0
  357. package/content/spells/high/imperceptible-cerebral-divulgence.yaml +5 -0
  358. package/content/spells/high/ineluctable-shackles-of-volition.yaml +5 -0
  359. package/content/spells/high/inexorable-imputation.yaml +5 -0
  360. package/content/spells/high/invocation-of-the-invincible-citadel.yaml +5 -0
  361. package/content/spells/high/jade-palanquin-of-the-faceless-god.yaml +5 -0
  362. package/content/spells/high/long-amber-moment.yaml +5 -0
  363. package/content/spells/high/mantle-of-disjecting-dissection.yaml +5 -0
  364. package/content/spells/high/obnubilation-of-the-will.yaml +5 -0
  365. package/content/spells/high/ochre-sigil-of-juxtaposition.yaml +5 -0
  366. package/content/spells/high/open-the-high-road.yaml +5 -0
  367. package/content/spells/high/phantasmal-mimesis.yaml +5 -0
  368. package/content/spells/high/phobic-storm.yaml +5 -0
  369. package/content/spells/high/pierce-the-pallid-gate.yaml +5 -0
  370. package/content/spells/high/prudentially-transient-abnegation-of-life.yaml +5 -0
  371. package/content/spells/high/resounding-temporal-echo.yaml +5 -0
  372. package/content/spells/high/scorn-the-fetters-of-earth.yaml +5 -0
  373. package/content/spells/high/sigil-of-aeolian-auctoritas.yaml +5 -0
  374. package/content/spells/high/torment-of-tumefaction.yaml +5 -0
  375. package/content/spells/high/touch-of-elucidating-intangibility.yaml +5 -0
  376. package/content/spells/high/vallation-of-specified-exclusion.yaml +5 -0
  377. package/content/spells/high/velocitous-imbuement.yaml +5 -0
  378. package/content/spells/high/verdant-vallation.yaml +5 -0
  379. package/content/spells/high/visitation-of-the-clement-clime.yaml +5 -0
  380. package/content/spells/high/wardpact-invocation.yaml +5 -0
  381. package/content/spells/high/wind-of-the-final-repose.yaml +5 -0
  382. package/content/spells/necromancer/augment-mortal-vitality.yaml +5 -0
  383. package/content/spells/necromancer/boneshaper.yaml +5 -0
  384. package/content/spells/necromancer/call-of-the-tomb.yaml +5 -0
  385. package/content/spells/necromancer/command-the-dead.yaml +5 -0
  386. package/content/spells/necromancer/compel-flesh.yaml +5 -0
  387. package/content/spells/necromancer/enfeebling-wave.yaml +5 -0
  388. package/content/spells/necromancer/everlasting.yaml +5 -0
  389. package/content/spells/necromancer/festering-curse.yaml +5 -0
  390. package/content/spells/necromancer/final-death.yaml +5 -0
  391. package/content/spells/necromancer/forgetting-the-grave.yaml +5 -0
  392. package/content/spells/necromancer/merge-souls.yaml +5 -0
  393. package/content/spells/necromancer/query-the-skull.yaml +5 -0
  394. package/content/spells/necromancer/raise-corpse.yaml +5 -0
  395. package/content/spells/necromancer/raise-grave-knight.yaml +5 -0
  396. package/content/spells/necromancer/smite-the-dead.yaml +5 -0
  397. package/content/spells/necromancer/terrible-liveliness.yaml +5 -0
  398. package/content/traditions/elementalist.yaml +8 -0
  399. package/content/traditions/high-mage.yaml +8 -0
  400. package/content/traditions/invoker.yaml +9 -0
  401. package/content/traditions/necromancer.yaml +8 -0
  402. package/content/weapons/blackjack.yaml +8 -0
  403. package/content/weapons/claw-blades.yaml +10 -0
  404. package/content/weapons/club.yaml +10 -0
  405. package/content/weapons/crossbow.yaml +10 -0
  406. package/content/weapons/dagger.yaml +12 -0
  407. package/content/weapons/great-club.yaml +11 -0
  408. package/content/weapons/great-hammer.yaml +11 -0
  409. package/content/weapons/great-hurlant.yaml +11 -0
  410. package/content/weapons/great-sword.yaml +11 -0
  411. package/content/weapons/halberd.yaml +11 -0
  412. package/content/weapons/hand-axe.yaml +12 -0
  413. package/content/weapons/hand-hurlant.yaml +10 -0
  414. package/content/weapons/heavy-spear.yaml +11 -0
  415. package/content/weapons/large-bow.yaml +11 -0
  416. package/content/weapons/large-shield-bash.yaml +11 -0
  417. package/content/weapons/light-spear.yaml +12 -0
  418. package/content/weapons/long-hurlant.yaml +11 -0
  419. package/content/weapons/long-sword.yaml +9 -0
  420. package/content/weapons/mace.yaml +10 -0
  421. package/content/weapons/pike.yaml +11 -0
  422. package/content/weapons/short-sword.yaml +9 -0
  423. package/content/weapons/small-bow.yaml +10 -0
  424. package/content/weapons/small-shield-bash.yaml +9 -0
  425. package/content/weapons/staff.yaml +10 -0
  426. package/content/weapons/stiletto.yaml +10 -0
  427. package/content/weapons/throwing-blade.yaml +11 -0
  428. package/content/weapons/unarmed.yaml +9 -0
  429. package/content/weapons/war-axe.yaml +11 -0
  430. package/content/weapons/war-hammer.yaml +9 -0
  431. package/dist/i18n/en.d.ts +3 -0
  432. package/dist/i18n/en.js +2 -0
  433. package/dist/i18n/en.json +1175 -0
  434. package/dist/index.d.ts +3 -0
  435. package/dist/index.js +2 -0
  436. package/dist/release.json +35918 -0
  437. package/i18n/en/content.yaml +472 -0
  438. package/i18n/en.yaml +702 -0
  439. package/pack.yaml +12 -0
  440. package/package.json +58 -3
  441. package/rules/advancement.yaml +186 -0
  442. package/rules/attributes.yaml +30 -0
  443. package/rules/backgrounds.yaml +60 -0
  444. package/rules/classes.yaml +77 -0
  445. package/rules/combat.yaml +241 -0
  446. package/rules/creation-steps.yaml +258 -0
  447. package/rules/creation.yaml +383 -0
  448. package/rules/display.yaml +684 -0
  449. package/rules/equipment.yaml +45 -0
  450. package/rules/foci.yaml +58 -0
  451. package/rules/health.yaml +178 -0
  452. package/rules/magic.yaml +471 -0
  453. package/rules/saves.yaml +62 -0
  454. package/rules/skills.yaml +93 -0
  455. package/rules/tags.yaml +93 -0
  456. package/upgrades/0.1.0-to-0.2.0.yaml +61 -0
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ // Generated by pnpm build:packs. Do not edit.
2
+ export default {"manifest":{"id":"wwn-srd","version":"0.2.0","specVersion":"0.3.0","license":"CC0-1.0","notices":{"not-affiliated":"This pack is compatible with Worlds Without Number, a game by Sine Nomine Publishing. It is an unofficial work built from the game's System Reference Document, which Sine Nomine Publishing dedicates to the public domain under CC0; it is not an official Sine Nomine Publishing product, and it is not affiliated with, licensed by or endorsed by Sine Nomine Publishing."},"defaultLanguage":"en"},"rules":{"fields":{"xp.current":{"type":"integer","input":true,"default":0,"min":0},"xp.pace":{"type":"enum","values":["fast","slow"],"input":true,"default":"fast"},"xp.nextLevel":{"type":"integer","formula":"level >= 10 ? 0\n : xp.pace == 'fast' ? [3, 6, 12, 18, 27, 39, 54, 72, 93][level - 1]\n : [6, 15, 24, 36, 51, 69, 87, 105, 139][level - 1]"},"xp.levelUp":{"type":"boolean","formula":"xp.nextLevel > 0 && xp.current >= xp.nextLevel"},"attributes.str.score":{"type":"integer","input":true,"default":10,"min":3,"max":18,"tags":["attribute","attr.str"]},"attributes.dex.score":{"type":"integer","input":true,"default":10,"min":3,"max":18,"tags":["attribute","attr.dex"]},"attributes.con.score":{"type":"integer","input":true,"default":10,"min":3,"max":18,"tags":["attribute","attr.con"]},"attributes.int.score":{"type":"integer","input":true,"default":10,"min":3,"max":18,"tags":["attribute","attr.int"]},"attributes.wis.score":{"type":"integer","input":true,"default":10,"min":3,"max":18,"tags":["attribute","attr.wis"]},"attributes.cha.score":{"type":"integer","input":true,"default":10,"min":3,"max":18,"tags":["attribute","attr.cha"]},"attributes.str.modBonus":{"type":"integer","formula":0,"tags":["mod-bonus","attr.str"]},"attributes.dex.modBonus":{"type":"integer","formula":0,"tags":["mod-bonus","attr.dex"]},"attributes.con.modBonus":{"type":"integer","formula":0,"tags":["mod-bonus","attr.con"]},"attributes.int.modBonus":{"type":"integer","formula":0,"tags":["mod-bonus","attr.int"]},"attributes.wis.modBonus":{"type":"integer","formula":0,"tags":["mod-bonus","attr.wis"]},"attributes.cha.modBonus":{"type":"integer","formula":0,"tags":["mod-bonus","attr.cha"]},"attributes.str.modCap":{"type":"integer","formula":2,"tags":["mod-cap","attr.str"]},"attributes.dex.modCap":{"type":"integer","formula":2,"tags":["mod-cap","attr.dex"]},"attributes.con.modCap":{"type":"integer","formula":2,"tags":["mod-cap","attr.con"]},"attributes.int.modCap":{"type":"integer","formula":2,"tags":["mod-cap","attr.int"]},"attributes.wis.modCap":{"type":"integer","formula":2,"tags":["mod-cap","attr.wis"]},"attributes.cha.modCap":{"type":"integer","formula":2,"tags":["mod-cap","attr.cha"]},"attributes.str.mod":{"type":"integer","tags":["attribute-mod"],"formula":"max(-2, min(attributes.str.modCap, (attributes.str.score <= 3 ? -2\n : attributes.str.score <= 7 ? -1 : attributes.str.score <= 13 ? 0\n : attributes.str.score <= 17 ? 1 : 2) + attributes.str.modBonus))"},"attributes.dex.mod":{"type":"integer","tags":["attribute-mod"],"formula":"max(-2, min(attributes.dex.modCap, (attributes.dex.score <= 3 ? -2\n : attributes.dex.score <= 7 ? -1 : attributes.dex.score <= 13 ? 0\n : attributes.dex.score <= 17 ? 1 : 2) + attributes.dex.modBonus))"},"attributes.con.mod":{"type":"integer","tags":["attribute-mod"],"formula":"max(-2, min(attributes.con.modCap, (attributes.con.score <= 3 ? -2\n : attributes.con.score <= 7 ? -1 : attributes.con.score <= 13 ? 0\n : attributes.con.score <= 17 ? 1 : 2) + attributes.con.modBonus))"},"attributes.int.mod":{"type":"integer","tags":["attribute-mod"],"formula":"max(-2, min(attributes.int.modCap, (attributes.int.score <= 3 ? -2\n : attributes.int.score <= 7 ? -1 : attributes.int.score <= 13 ? 0\n : attributes.int.score <= 17 ? 1 : 2) + attributes.int.modBonus))"},"attributes.wis.mod":{"type":"integer","tags":["attribute-mod"],"formula":"max(-2, min(attributes.wis.modCap, (attributes.wis.score <= 3 ? -2\n : attributes.wis.score <= 7 ? -1 : attributes.wis.score <= 13 ? 0\n : attributes.wis.score <= 17 ? 1 : 2) + attributes.wis.modBonus))"},"attributes.cha.mod":{"type":"integer","tags":["attribute-mod"],"formula":"max(-2, min(attributes.cha.modCap, (attributes.cha.score <= 3 ? -2\n : attributes.cha.score <= 7 ? -1 : attributes.cha.score <= 13 ? 0\n : attributes.cha.score <= 17 ? 1 : 2) + attributes.cha.modBonus))"},"attributes.boosts":{"type":"integer","input":true,"default":0,"min":0,"max":5},"attributes.bestMod":{"type":"integer","formula":"max(attributes.str.mod, attributes.dex.mod, attributes.con.mod, attributes.int.mod,\n attributes.wis.mod, attributes.cha.mod)"},"level":{"type":"integer","input":true,"default":1,"min":1,"max":10},"class.warrior":{"type":"integer","formula":0},"class.expert":{"type":"integer","formula":0},"class.mage":{"type":"integer","formula":0},"chassis.attackFull":{"type":"integer","formula":0},"chassis.attackWarrior":{"type":"integer","formula":0},"chassis.attackExpert":{"type":"integer","formula":0},"chassis.hitsWarrior":{"type":"integer","formula":0},"chassis.hitsExpert":{"type":"integer","formula":0},"chassis.fragile":{"type":"integer","formula":0},"hp.dieBonus":{"type":"integer","formula":"chassis.hitsWarrior > 0 && chassis.fragile == 0 ? 2\n : chassis.hitsWarrior > 0 || chassis.hitsExpert > 0 ? 0\n : -1"},"attack.base":{"type":"integer","formula":"chassis.attackFull > 0 ? level\n : chassis.attackWarrior > 0 ? [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1]\n : chassis.attackExpert > 0 ? floor(level / 2)\n : floor(level / 5)"},"foci.allowed":{"type":"integer","formula":"1 + (class.warrior > 0 ? 1 : 0) + (class.expert > 0 ? 1 : 0)\n + (level >= 2 ? 1 : 0) + (level >= 5 ? 1 : 0) + (level >= 7 ? 1 : 0)\n + (level >= 10 ? 1 : 0)"},"foci.taken":{"type":"integer","formula":"sumCopies(copy.state.level, copy.type == 'focus')"},"companion.hitDice":{"type":"integer","input":true,"default":0,"min":0},"damage.killingBlow":{"type":"integer","formula":0},"attack.punchBase":{"type":"integer","formula":"attack.base"},"armor.wornAc":{"type":"integer","formula":"maxCopies(copy.fields.ac, copy.type == 'armor' && copy.equipped && copy.fields.category != 'shield')"},"armor.wornEnc":{"type":"integer","formula":"countCopies(copy.type == 'armor' && copy.equipped && copy.fields.category != 'shield') > 0\n ? maxCopies(copy.fields.enc, copy.type == 'armor' && copy.equipped\n && copy.fields.category != 'shield')\n : -1"},"armor.wornHeavy":{"type":"boolean","formula":"countCopies(copy.type == 'armor' && copy.equipped\n && copy.fields.category in ['medium', 'heavy']) > 0"},"armor.shield":{"type":"boolean","formula":"countCopies(copy.type == 'armor' && copy.equipped && copy.fields.category == 'shield') > 0"},"armor.shieldAc":{"type":"integer","formula":"maxCopies(copy.fields.ac, copy.type == 'armor' && copy.equipped && copy.fields.category == 'shield')"},"ac.innate":{"type":"integer","formula":10},"ac.base":{"type":"integer","formula":"max(10, armor.wornAc, ac.innate)"},"ac.withShield":{"type":"integer","formula":"!armor.shield ? ac.base : ac.base >= armor.shieldAc ? ac.base + 1 : armor.shieldAc"},"ac.cappedBonus":{"type":"integer","formula":0},"ac.value":{"type":"integer","formula":"ac.withShield + attributes.dex.mod\n + max(0, min(ac.cappedBonus, 18 - ac.withShield - attributes.dex.mod))"},"shock.bonus":{"type":"integer","formula":0},"shock.ignoresAc":{"type":"boolean","formula":false},"shock.unarmedIgnoresAc":{"type":"boolean","formula":false},"duelist.favored":{"type":"set","of":"weapon"},"attack.favoredBase":{"type":"integer","formula":"tradition.duelist.tier == 0 ? attack.base\n : max(attack.base, class.warrior > 0 ? level : [1, 1, 2, 2, 3, 3, 4, 4, 5, 5][level - 1])"},"unarmed.die":{"type":"dice","formula":"1d2"},"unarmed.shock":{"type":"integer","formula":0},"unarmed.shockAc":{"type":"integer","formula":15},"coins.copper":{"type":"integer","input":true,"default":0,"min":0},"coins.silver":{"type":"integer","input":true,"default":0,"min":0},"coins.gold":{"type":"integer","input":true,"default":0,"min":0},"enc.readied":{"type":"integer","formula":"sumCopies(ceil(copy.quantity / copy.fields.bundle) * copy.fields.enc,\n has(copy.fields.enc) && copy.equipped && !copy.fields.wornFree)"},"enc.stowed":{"type":"integer","formula":"sumCopies(ceil(copy.quantity / copy.fields.bundle) * copy.fields.enc,\n has(copy.fields.enc) && !copy.equipped)\n + floor((coins.copper + coins.silver + coins.gold) / 100)"},"enc.readiedLimit":{"type":"integer","formula":"floor(attributes.str.score / 2)"},"enc.stowedLimit":{"type":"integer","formula":"attributes.str.score"},"enc.over":{"type":"integer","formula":"max(enc.readied - enc.readiedLimit <= 0 ? 0 : enc.readied - enc.readiedLimit <= 2 ? 1\n : enc.readied - enc.readiedLimit <= 4 ? 2 : 3,\n enc.stowed - enc.stowedLimit <= 0 ? 0 : enc.stowed - enc.stowedLimit <= 4 ? 1\n : enc.stowed - enc.stowedLimit <= 8 ? 2 : 3)"},"move.feet":{"type":"integer","formula":"[30, 20, 15, 0][enc.over]"},"hp.rolled":{"type":"integer","input":true,"default":1,"min":1},"hp.max":{"type":"integer","formula":"hp.rolled","min":1},"hp.current":{"type":"integer","input":true,"default":1,"min":0,"max":"hp.max"},"strain.max":{"type":"integer","formula":"attributes.con.score"},"strain.current":{"type":"integer","input":true,"default":0,"min":0,"max":"strain.max"},"conditions.frail":{"type":"boolean","input":true,"default":false},"conditions.mortallyWounded":{"type":"boolean","input":true,"default":false},"tradition.highmage.tier":{"type":"integer","tags":["tradition-tier"],"formula":"countPicks(pick.type == 'tradition' && pick.fields.key == 'highmage')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)"},"tradition.elementalist.tier":{"type":"integer","tags":["tradition-tier"],"formula":"countPicks(pick.type == 'tradition' && pick.fields.key == 'elementalist')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)"},"tradition.necromancer.tier":{"type":"integer","tags":["tradition-tier"],"formula":"countPicks(pick.type == 'tradition' && pick.fields.key == 'necromancer')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)"},"tradition.healer.tier":{"type":"integer","tags":["tradition-tier"],"formula":"countPicks(pick.type == 'tradition' && pick.fields.key == 'healer')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)"},"tradition.vowed.tier":{"type":"integer","tags":["tradition-tier"],"formula":"countPicks(pick.type == 'tradition' && pick.fields.key == 'vowed')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)"},"tradition.accursed.tier":{"type":"integer","tags":["tradition-tier"],"formula":"countPicks(pick.type == 'tradition' && pick.fields.key == 'accursed')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)"},"tradition.bard.tier":{"type":"integer","tags":["tradition-tier"],"formula":"countPicks(pick.type == 'tradition' && pick.fields.key == 'bard')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)"},"tradition.beastmaster.tier":{"type":"integer","tags":["tradition-tier"],"formula":"countPicks(pick.type == 'tradition' && pick.fields.key == 'beastmaster')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)"},"tradition.bloodpriest.tier":{"type":"integer","tags":["tradition-tier"],"formula":"countPicks(pick.type == 'tradition' && pick.fields.key == 'bloodpriest')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)"},"tradition.duelist.tier":{"type":"integer","tags":["tradition-tier"],"formula":"countPicks(pick.type == 'tradition' && pick.fields.key == 'duelist')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)"},"tradition.mageslayer.tier":{"type":"integer","tags":["tradition-tier"],"formula":"countPicks(pick.type == 'tradition' && pick.fields.key == 'mageslayer')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)"},"tradition.skinshifter.tier":{"type":"integer","tags":["tradition-tier"],"formula":"countPicks(pick.type == 'tradition' && pick.fields.key == 'skinshifter')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)"},"tradition.thoughtnoble.tier":{"type":"integer","tags":["tradition-tier"],"formula":"countPicks(pick.type == 'tradition' && pick.fields.key == 'thoughtnoble')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)"},"tradition.invoker.tier":{"type":"integer","tags":["tradition-tier"],"formula":"countPicks(pick.type == 'tradition' && pick.fields.key == 'invoker')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)"},"tradition.wise.tier":{"type":"integer","tags":["tradition-tier"],"formula":"countPicks(pick.type == 'tradition' && pick.fields.key == 'wise')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)"},"tradition.highmage.skill":{"type":"string","formula":"''"},"tradition.elementalist.skill":{"type":"string","formula":"''"},"tradition.necromancer.skill":{"type":"string","formula":"''"},"tradition.healer.skill":{"type":"string","formula":"''"},"tradition.vowed.skill":{"type":"string","formula":"''"},"tradition.accursed.skill":{"type":"string","formula":"''"},"tradition.bard.skill":{"type":"string","formula":"''"},"tradition.beastmaster.skill":{"type":"string","formula":"''"},"tradition.bloodpriest.skill":{"type":"string","formula":"''"},"tradition.duelist.skill":{"type":"string","formula":"''"},"tradition.mageslayer.skill":{"type":"string","formula":"''"},"tradition.skinshifter.skill":{"type":"string","formula":"''"},"tradition.thoughtnoble.skill":{"type":"string","formula":"''"},"tradition.invoker.skill":{"type":"string","formula":"''"},"tradition.wise.skill":{"type":"string","formula":"''"},"spells.mode":{"type":"enum","values":["none","full","partial","dual","invoker","partial-invoker"],"formula":"tradition.invoker.tier == 2 ? 'invoker'\n : tradition.invoker.tier == 1 ? 'partial-invoker'\n : countList(keysOf('spellTrad'), fieldOf('tradition.{trad}.tier', x) == 2) > 0 ? 'full'\n : countList(keysOf('spellTrad'), fieldOf('tradition.{trad}.tier', x) == 1) >= 2 ? 'dual'\n : countList(keysOf('spellTrad'), fieldOf('tradition.{trad}.tier', x) == 1) > 0 ? 'partial'\n : 'none'"},"spells.maxLevel":{"type":"integer","formula":"spells.mode == 'full' || spells.mode == 'invoker' ? [1, 1, 2, 2, 3, 3, 4, 4, 5, 5][level - 1]\n : spells.mode == 'partial' || spells.mode == 'partial-invoker'\n ? [1, 1, 1, 1, 2, 2, 2, 2, 3, 3][level - 1]\n : spells.mode == 'dual' ? [1, 1, 1, 2, 2, 2, 3, 3, 3, 4][level - 1]\n : 0"},"spells.castsPerDay":{"type":"integer","formula":"spells.mode == 'full' ? [1, 1, 2, 2, 3, 3, 4, 4, 5, 6][level - 1]\n : spells.mode == 'partial' ? [1, 1, 1, 2, 2, 3, 3, 3, 4, 4][level - 1]\n : spells.mode == 'dual' ? [1, 1, 2, 2, 2, 3, 3, 4, 4, 5][level - 1]\n : 0"},"spells.preparedMax":{"type":"integer","formula":"spells.mode == 'full' ? [3, 3, 4, 5, 6, 7, 8, 9, 10, 12][level - 1]\n : spells.mode == 'partial' ? [2, 3, 3, 4, 5, 6, 7, 7, 8, 9][level - 1]\n : spells.mode == 'dual' ? [3, 4, 5, 6, 8, 9, 10, 12, 13, 15][level - 1]\n : spells.mode == 'invoker'\n ? max(0, [2, 3, 4, 4, 5, 6, 7, 7, 8, 9][level - 1] + attributes.int.mod)\n : spells.mode == 'partial-invoker'\n ? max(0, [1, 3, 3, 4, 4, 5, 5, 6, 6, 7][level - 1] + attributes.int.mod)\n : 0"},"spells.castsUsed":{"type":"integer","input":true,"default":0,"min":0},"spells.castsLeft":{"type":"integer","formula":"max(0, spells.castsPerDay - spells.castsUsed)"},"spells.points":{"type":"integer","formula":"spells.mode == 'invoker' ? max(0, [1, 3, 4, 5, 6, 7, 8, 9, 10, 11][level - 1] + attributes.int.mod)\n : spells.mode == 'partial-invoker'\n ? max(0, [1, 1, 2, 2, 3, 3, 4, 4, 5, 6][level - 1] + attributes.int.mod)\n : 0"},"spells.pointsUsed":{"type":"integer","input":true,"default":0,"min":0},"spells.pointsLeft":{"type":"integer","formula":"max(0, spells.points - spells.pointsUsed)"},"spells.prepared":{"type":"integer","formula":"countCopies(copy.type == 'spell' && copy.state.prepared)"},"spells.starting":{"type":"integer","formula":"spells.mode == 'full' || spells.mode == 'dual' || spells.mode == 'invoker' ? 4\n : spells.mode == 'partial' || spells.mode == 'partial-invoker' ? 2 : 0"},"invoker.education":{"type":"string","formula":"''"},"effort.highmage.max":{"type":"integer","formula":"tradition.highmage.tier == 0 ? (invoker.education == 'highmage' ? max(1, max(0, skills.magic)) : 0)\n : max(1, 1 + max(0, skills.magic) + max(attributes.int.mod, attributes.cha.mod) - (tradition.highmage.tier == 1 ? 1 : 0))"},"effort.elementalist.max":{"type":"integer","formula":"tradition.elementalist.tier == 0 ? (invoker.education == 'elementalist' ? max(1, max(0, skills.magic)) : 0)\n : max(1, 1 + max(0, skills.magic) + max(attributes.int.mod, attributes.cha.mod) - (tradition.elementalist.tier == 1 ? 1 : 0))"},"effort.necromancer.max":{"type":"integer","formula":"tradition.necromancer.tier == 0 ? (invoker.education == 'necromancer' ? max(1, max(0, skills.magic)) : 0)\n : max(1, 1 + max(0, skills.magic) + max(attributes.int.mod, attributes.cha.mod) - (tradition.necromancer.tier == 1 ? 1 : 0))"},"effort.healer.max":{"type":"integer","formula":"tradition.healer.tier == 0 ? 0\n : max(1, max(0, skills.heal) + max(attributes.int.mod, attributes.cha.mod))"},"effort.vowed.max":{"type":"integer","formula":"tradition.vowed.tier == 0 ? 0\n : max(1, (vowed.skill == '' ? 0 : max(0, fieldOf('skills.{skill}', vowed.skill))) + attributes.bestMod)"},"effort.accursed.max":{"type":"integer","formula":"tradition.accursed.tier == 0 ? 0\n : max(1, max(0, skills.magic) + max(attributes.int.mod, attributes.cha.mod))"},"effort.bard.max":{"type":"integer","formula":"tradition.bard.tier == 0 ? 0\n : max(1, max(0, skills.perform) + attributes.cha.mod)"},"effort.beastmaster.max":{"type":"integer","formula":"tradition.beastmaster.tier == 0 ? 0\n : max(1, max(0, skills.survive) + max(attributes.wis.mod, attributes.cha.mod))"},"effort.bloodpriest.max":{"type":"integer","formula":"tradition.bloodpriest.tier == 0 ? 0\n : max(1, max(0, skills.pray) + max(attributes.wis.mod, attributes.cha.mod))"},"effort.duelist.max":{"type":"integer","formula":"tradition.duelist.tier == 0 ? 0\n : max(1, max(0, skills.stab) + max(attributes.dex.mod, attributes.int.mod))"},"effort.mageslayer.max":{"type":"integer","formula":"tradition.mageslayer.tier == 0 ? 0\n : max(1, max(0, skills.magic) + max(attributes.int.mod, attributes.con.mod))"},"effort.skinshifter.max":{"type":"integer","formula":"tradition.skinshifter.tier == 0 ? 0\n : max(1, max(0, skills.survive) + max(attributes.con.mod, attributes.cha.mod))"},"effort.thoughtnoble.max":{"type":"integer","formula":"tradition.thoughtnoble.tier == 0 ? 0\n : max(1, max(0, skills.notice) + max(attributes.int.mod, attributes.wis.mod))"},"effort.highmage.scene":{"type":"integer","input":true,"default":0,"min":0},"effort.highmage.day":{"type":"integer","input":true,"default":0,"min":0},"effort.highmage.ongoing":{"type":"integer","input":true,"default":0,"min":0},"effort.elementalist.scene":{"type":"integer","input":true,"default":0,"min":0},"effort.elementalist.day":{"type":"integer","input":true,"default":0,"min":0},"effort.elementalist.ongoing":{"type":"integer","input":true,"default":0,"min":0},"effort.necromancer.scene":{"type":"integer","input":true,"default":0,"min":0},"effort.necromancer.day":{"type":"integer","input":true,"default":0,"min":0},"effort.necromancer.ongoing":{"type":"integer","input":true,"default":0,"min":0},"effort.healer.scene":{"type":"integer","input":true,"default":0,"min":0},"effort.healer.day":{"type":"integer","input":true,"default":0,"min":0},"effort.healer.ongoing":{"type":"integer","input":true,"default":0,"min":0},"effort.vowed.scene":{"type":"integer","input":true,"default":0,"min":0},"effort.vowed.day":{"type":"integer","input":true,"default":0,"min":0},"effort.vowed.ongoing":{"type":"integer","input":true,"default":0,"min":0},"effort.accursed.scene":{"type":"integer","input":true,"default":0,"min":0},"effort.accursed.day":{"type":"integer","input":true,"default":0,"min":0},"effort.accursed.ongoing":{"type":"integer","input":true,"default":0,"min":0},"effort.bard.scene":{"type":"integer","input":true,"default":0,"min":0},"effort.bard.day":{"type":"integer","input":true,"default":0,"min":0},"effort.bard.ongoing":{"type":"integer","input":true,"default":0,"min":0},"effort.beastmaster.scene":{"type":"integer","input":true,"default":0,"min":0},"effort.beastmaster.day":{"type":"integer","input":true,"default":0,"min":0},"effort.beastmaster.ongoing":{"type":"integer","input":true,"default":0,"min":0},"effort.bloodpriest.scene":{"type":"integer","input":true,"default":0,"min":0},"effort.bloodpriest.day":{"type":"integer","input":true,"default":0,"min":0},"effort.bloodpriest.ongoing":{"type":"integer","input":true,"default":0,"min":0},"effort.duelist.scene":{"type":"integer","input":true,"default":0,"min":0},"effort.duelist.day":{"type":"integer","input":true,"default":0,"min":0},"effort.duelist.ongoing":{"type":"integer","input":true,"default":0,"min":0},"effort.mageslayer.scene":{"type":"integer","input":true,"default":0,"min":0},"effort.mageslayer.day":{"type":"integer","input":true,"default":0,"min":0},"effort.mageslayer.ongoing":{"type":"integer","input":true,"default":0,"min":0},"effort.skinshifter.scene":{"type":"integer","input":true,"default":0,"min":0},"effort.skinshifter.day":{"type":"integer","input":true,"default":0,"min":0},"effort.skinshifter.ongoing":{"type":"integer","input":true,"default":0,"min":0},"effort.thoughtnoble.scene":{"type":"integer","input":true,"default":0,"min":0},"effort.thoughtnoble.day":{"type":"integer","input":true,"default":0,"min":0},"effort.thoughtnoble.ongoing":{"type":"integer","input":true,"default":0,"min":0},"effort.highmage.free":{"type":"integer","formula":"max(0, effort.highmage.max - effort.highmage.scene - effort.highmage.day\n - effort.highmage.ongoing)"},"effort.elementalist.free":{"type":"integer","formula":"max(0, effort.elementalist.max - effort.elementalist.scene - effort.elementalist.day\n - effort.elementalist.ongoing)"},"effort.necromancer.free":{"type":"integer","formula":"max(0, effort.necromancer.max - effort.necromancer.scene - effort.necromancer.day\n - effort.necromancer.ongoing)"},"effort.healer.free":{"type":"integer","formula":"max(0, effort.healer.max - effort.healer.scene - effort.healer.day\n - effort.healer.ongoing)"},"effort.vowed.free":{"type":"integer","formula":"max(0, effort.vowed.max - effort.vowed.scene - effort.vowed.day\n - effort.vowed.ongoing)"},"effort.accursed.free":{"type":"integer","formula":"max(0, effort.accursed.max - effort.accursed.scene - effort.accursed.day\n - effort.accursed.ongoing)"},"effort.bard.free":{"type":"integer","formula":"max(0, effort.bard.max - effort.bard.scene - effort.bard.day\n - effort.bard.ongoing)"},"effort.beastmaster.free":{"type":"integer","formula":"max(0, effort.beastmaster.max - effort.beastmaster.scene - effort.beastmaster.day\n - effort.beastmaster.ongoing)"},"effort.bloodpriest.free":{"type":"integer","formula":"max(0, effort.bloodpriest.max - effort.bloodpriest.scene - effort.bloodpriest.day\n - effort.bloodpriest.ongoing)"},"effort.duelist.free":{"type":"integer","formula":"max(0, effort.duelist.max - effort.duelist.scene - effort.duelist.day\n - effort.duelist.ongoing)"},"effort.mageslayer.free":{"type":"integer","formula":"max(0, effort.mageslayer.max - effort.mageslayer.scene - effort.mageslayer.day\n - effort.mageslayer.ongoing)"},"effort.skinshifter.free":{"type":"integer","formula":"max(0, effort.skinshifter.max - effort.skinshifter.scene - effort.skinshifter.day\n - effort.skinshifter.ongoing)"},"effort.thoughtnoble.free":{"type":"integer","formula":"max(0, effort.thoughtnoble.max - effort.thoughtnoble.scene - effort.thoughtnoble.day\n - effort.thoughtnoble.ongoing)"},"vowed.skill":{"type":"string","formula":"''"},"wise.skill":{"type":"string","formula":"''"},"wise.path":{"type":"enum","values":["none","priest","witch","seer","esoteric"],"formula":"'none'"},"arts.highmage.allowed":{"type":"integer","formula":"tradition.highmage.tier == 2 ? [2, 3, 3, 4, 4, 5, 5, 6, 6, 7][level - 1]\n : tradition.highmage.tier == 1 ? [1, 2, 3, 3, 3, 4, 4, 4, 5, 5][level - 1]\n : invoker.education == 'highmage' ? (tradition.invoker.tier == 2 ? 2 : 1) : 0"},"arts.elementalist.allowed":{"type":"integer","formula":"tradition.elementalist.tier == 2 ? [1, 2, 2, 3, 3, 4, 4, 5, 5, 6][level - 1]\n : tradition.elementalist.tier == 1 ? [1, 1, 2, 2, 2, 3, 3, 3, 4, 4][level - 1]\n : invoker.education == 'elementalist' ? (tradition.invoker.tier == 2 ? 1 : 1) : 0"},"arts.necromancer.allowed":{"type":"integer","formula":"tradition.necromancer.tier == 2 ? [2, 3, 3, 4, 4, 5, 5, 6, 6, 7][level - 1]\n : tradition.necromancer.tier == 1 ? [1, 2, 3, 3, 3, 4, 4, 4, 5, 5][level - 1]\n : invoker.education == 'necromancer' ? (tradition.invoker.tier == 2 ? 2 : 1) : 0"},"arts.healer.allowed":{"type":"integer","formula":"tradition.healer.tier > 0 ? [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1] : 0"},"arts.vowed.allowed":{"type":"integer","formula":"tradition.vowed.tier > 0 ? [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1] : 0"},"arts.accursed.allowed":{"type":"integer","formula":"tradition.accursed.tier > 0 ? [1, 1, 1, 1, 1, 1, 1, 1, 1, 1][level - 1] : 0"},"arts.bard.allowed":{"type":"integer","formula":"tradition.bard.tier > 0 ? [1, 2, 2, 3, 3, 4, 4, 5, 5, 6][level - 1] : 0"},"arts.beastmaster.allowed":{"type":"integer","formula":"tradition.beastmaster.tier > 0 ? [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1] : 0"},"arts.bloodpriest.allowed":{"type":"integer","formula":"tradition.bloodpriest.tier > 0 ? [2, 3, 3, 4, 5, 6, 6, 7, 7, 8][level - 1] : 0"},"arts.duelist.allowed":{"type":"integer","formula":"tradition.duelist.tier > 0 ? [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1] : 0"},"arts.mageslayer.allowed":{"type":"integer","formula":"tradition.mageslayer.tier > 0 ? [0, 0, 0, 0, 0, 0, 0, 0, 0, 0][level - 1] : 0"},"arts.skinshifter.allowed":{"type":"integer","formula":"tradition.skinshifter.tier > 0 ? [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1] : 0"},"arts.thoughtnoble.allowed":{"type":"integer","formula":"tradition.thoughtnoble.tier > 0 ? [1, 2, 3, 4, 5, 6, 7, 8, 9, 10][level - 1] : 0"},"arts.wise.allowed":{"type":"integer","formula":"tradition.wise.tier == 0 ? 0\n : wise.path == 'esoteric' ? [1, 1, 2, 2, 3, 3, 4, 4, 5, 5][level - 1]\n : [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1]"},"arts.highmage.taken":{"type":"integer","formula":"countCopies(copy.type == 'art' && copy.fields.tradition == 'highmage')"},"arts.elementalist.taken":{"type":"integer","formula":"countCopies(copy.type == 'art' && copy.fields.tradition == 'elementalist')"},"arts.necromancer.taken":{"type":"integer","formula":"countCopies(copy.type == 'art' && copy.fields.tradition == 'necromancer')"},"arts.healer.taken":{"type":"integer","formula":"countCopies(copy.type == 'art' && copy.fields.tradition == 'healer')"},"arts.vowed.taken":{"type":"integer","formula":"countCopies(copy.type == 'art' && copy.fields.tradition == 'vowed')"},"arts.accursed.taken":{"type":"integer","formula":"countCopies(copy.type == 'art' && copy.fields.tradition == 'accursed')"},"arts.bard.taken":{"type":"integer","formula":"countCopies(copy.type == 'art' && copy.fields.tradition == 'bard')"},"arts.beastmaster.taken":{"type":"integer","formula":"countCopies(copy.type == 'art' && copy.fields.tradition == 'beastmaster')"},"arts.bloodpriest.taken":{"type":"integer","formula":"countCopies(copy.type == 'art' && copy.fields.tradition == 'bloodpriest')"},"arts.duelist.taken":{"type":"integer","formula":"countCopies(copy.type == 'art' && copy.fields.tradition == 'duelist')"},"arts.mageslayer.taken":{"type":"integer","formula":"countCopies(copy.type == 'art' && copy.fields.tradition == 'mageslayer')"},"arts.skinshifter.taken":{"type":"integer","formula":"countCopies(copy.type == 'art' && copy.fields.tradition == 'skinshifter')"},"arts.thoughtnoble.taken":{"type":"integer","formula":"countCopies(copy.type == 'art' && copy.fields.tradition == 'thoughtnoble')"},"arts.wise.taken":{"type":"integer","formula":"countCopies(copy.type == 'art' && copy.fields.tradition == 'wise')"},"arts.highmage.owed":{"type":"integer","formula":"max(0, arts.highmage.allowed - arts.highmage.taken)"},"arts.elementalist.owed":{"type":"integer","formula":"max(0, arts.elementalist.allowed - arts.elementalist.taken)"},"arts.necromancer.owed":{"type":"integer","formula":"max(0, arts.necromancer.allowed - arts.necromancer.taken)"},"arts.healer.owed":{"type":"integer","formula":"max(0, arts.healer.allowed - arts.healer.taken)"},"arts.vowed.owed":{"type":"integer","formula":"max(0, arts.vowed.allowed - arts.vowed.taken)"},"arts.accursed.owed":{"type":"integer","formula":"max(0, arts.accursed.allowed - arts.accursed.taken)"},"arts.bard.owed":{"type":"integer","formula":"max(0, arts.bard.allowed - arts.bard.taken)"},"arts.beastmaster.owed":{"type":"integer","formula":"max(0, arts.beastmaster.allowed - arts.beastmaster.taken)"},"arts.bloodpriest.owed":{"type":"integer","formula":"max(0, arts.bloodpriest.allowed - arts.bloodpriest.taken)"},"arts.duelist.owed":{"type":"integer","formula":"max(0, arts.duelist.allowed - arts.duelist.taken)"},"arts.mageslayer.owed":{"type":"integer","formula":"max(0, arts.mageslayer.allowed - arts.mageslayer.taken)"},"arts.skinshifter.owed":{"type":"integer","formula":"max(0, arts.skinshifter.allowed - arts.skinshifter.taken)"},"arts.thoughtnoble.owed":{"type":"integer","formula":"max(0, arts.thoughtnoble.allowed - arts.thoughtnoble.taken)"},"arts.wise.owed":{"type":"integer","formula":"max(0, arts.wise.allowed - arts.wise.taken)"},"arts.owed":{"type":"integer","formula":"sumList(keysOf('artTrad'), fieldOf('arts.{artTrad}.owed', x))"},"magic.armoredLevel":{"type":"integer","formula":0},"magic.hindered":{"type":"boolean","formula":"(armor.wornEnc >= 0 && magic.armoredLevel < 2\n && !(magic.armoredLevel == 1 && armor.wornEnc <= 2))\n || (armor.shield && magic.armoredLevel < 1)"},"duelist.hindered":{"type":"boolean","formula":"armor.wornHeavy || (armor.shield && armor.shieldAc >= 14)"},"saves.physical":{"type":"integer","tags":["save","save.physical"],"formula":"16 - level - max(attributes.str.mod, attributes.con.mod)"},"saves.evasion":{"type":"integer","tags":["save","save.evasion"],"formula":"16 - level - max(attributes.dex.mod, attributes.int.mod)"},"saves.mental":{"type":"integer","tags":["save","save.mental"],"formula":"16 - level - max(attributes.wis.mod, attributes.cha.mod)"},"saves.luck":{"type":"integer","tags":["save","save.luck"],"formula":"16 - level"},"skills.administer":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.administer"]},"skills.connect":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.connect"]},"skills.convince":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.convince"]},"skills.craft":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.craft"]},"skills.exert":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.exert"]},"skills.heal":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.heal"]},"skills.know":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.know"]},"skills.lead":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.lead"]},"skills.magic":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.magic"]},"skills.notice":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.notice"]},"skills.perform":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.perform"]},"skills.pray":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.pray"]},"skills.punch":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.punch"]},"skills.ride":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.ride"]},"skills.sail":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.sail"]},"skills.shoot":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.shoot"]},"skills.sneak":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.sneak"]},"skills.stab":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.stab"]},"skills.survive":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.survive"]},"skills.trade":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.trade"]},"skills.work":{"type":"integer","input":true,"default":-1,"min":-1,"max":4,"tags":["skill","skill.work"]},"skillCredit.administer":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.connect":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.convince":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.craft":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.exert":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.heal":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.know":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.lead":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.magic":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.notice":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.perform":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.pray":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.punch":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.ride":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.sail":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.shoot":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.sneak":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.stab":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.survive":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.trade":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skillCredit.work":{"type":"integer","input":true,"default":0,"min":0,"max":4},"skills.noncombatFloor":{"type":"integer","formula":-1},"skillPoints.unspent":{"type":"integer","input":true,"default":0,"min":0},"skillPoints.expert":{"type":"integer","input":true,"default":0,"min":0}},"actions":[{"id":"level-up","tags":["advancement"],"available":"!character.creating && level < 10 && xp.levelUp","params":{"random":{"type":"boolean","default":false}},"results":["advanced"],"steps":[{"id":"before","kind":"branch","cases":[{"when":true,"flags":{"oldMax":"hp.max","oldRolled":"hp.rolled"}}]},{"id":"gain","tags":["advancement.level"],"kind":"changes","changes":[{"type":"adjust","field":"level","by":1},{"type":"adjust","field":"skillPoints.unspent","by":3},{"type":"adjust","when":"class.expert > 0","field":"skillPoints.expert","by":1}]},{"id":"hitDice","kind":"roll","sheet":"proposed","tags":["advancement"],"parts":[{"dice":"hp.dieBonus + attributes.con.mod >= 0 ? (level)d6\n : hp.dieBonus + attributes.con.mod == -1 ? (level)d6min2\n : hp.dieBonus + attributes.con.mod == -2 ? (level)d6min3\n : (level)d6min4"},{"value":"level * (hp.dieBonus + attributes.con.mod)"}]},{"id":"hp","kind":"changes","changes":[{"type":"set","field":"hp.rolled","value":"max(steps.hitDice.total, flags.oldRolled + 1)"}]},{"id":"focus","kind":"action","sheet":"proposed","when":"level in [2, 5, 7, 10]","use":"pick-focus","params":{"kind":"'any'","random":"params.random","points":3}},{"id":"arts","kind":"action","use":"pick-arts","params":{"random":"params.random"}},{"id":"spellTradition","kind":"choice","sheet":"proposed","random":"params.random","options":{"values":{"formula":"keysOf('spellTrad') + ['invoker']"},"where":"fieldOf('tradition.{trad}.tier', value) > 0"},"recommend":"options[0]"},{"id":"newSpells","kind":"choice","sheet":"proposed","when":"has(steps.spellTradition)","random":"params.random","repeat":{"max":"steps.spellTradition.picked == 'highmage'\n || (steps.spellTradition.picked == 'invoker' && tradition.invoker.tier == 2) ? 2 : 1","min":"steps.spellTradition.picked == 'highmage'\n || (steps.spellTradition.picked == 'invoker' && tradition.invoker.tier == 2) ? 2 : 1"},"options":{"content":{"type":"spell","where":"item.level <= spells.maxLevel && countCopies(copy.item == item.id) == 0\n && (item.list == 'high' || item.list == steps.spellTradition.picked\n || (steps.spellTradition.picked == 'invoker' && invoker.education == item.list))"}},"recommend":"options[0]","changes":[{"type":"addItem","entry":{"item":"picked.id"}}]},{"id":"current","kind":"changes","sheet":"proposed","changes":[{"type":"adjust","when":"hp.max > flags.oldMax","field":"hp.current","by":"hp.max - flags.oldMax"}]},{"id":"result","kind":"outcome","result":"'advanced'"}]},{"id":"improve","tags":["advancement"],"available":"!character.creating && skillPoints.unspent + skillPoints.expert > 0","results":["improved"],"steps":[{"id":"pick","kind":"choice","options":{"values":{"formula":"keysOf('skill') + keysOf('attr')"},"where":"value in keysOf('attr')\n ? attributes.boosts < 5 && fieldOf('attributes.{attr}.score', value) < 18\n && level >= [1, 1, 3, 6, 9][attributes.boosts]\n && attributes.boosts + 1 <= skillPoints.unspent + skillPoints.expert\n : fieldOf('skills.{skill}', value) < 4\n && level >= [1, 1, 3, 6, 9][fieldOf('skills.{skill}', value) + 1]\n && fieldOf('skills.{skill}', value) + 2 - fieldOf('skillCredit.{skill}', value)\n <= skillPoints.unspent\n + (value in ['punch', 'shoot', 'stab'] ? 0 : skillPoints.expert)"},"recommend":"options[0]"},{"id":"cost","kind":"branch","cases":[{"when":"steps.pick.picked in keysOf('attr')","flags":{"attribute":true,"cost":"attributes.boosts + 1","expert":"min(skillPoints.expert, attributes.boosts + 1)"}},{"when":true,"flags":{"attribute":false,"cost":"fieldOf('skills.{skill}', steps.pick.picked) + 2\n - fieldOf('skillCredit.{skill}', steps.pick.picked)","expert":"steps.pick.picked in ['punch', 'shoot', 'stab'] ? 0\n : min(skillPoints.expert, fieldOf('skills.{skill}', steps.pick.picked) + 2\n - fieldOf('skillCredit.{skill}', steps.pick.picked))"}}]},{"id":"pay","kind":"changes","changes":[{"type":"adjust","when":"flags.attribute","field":{"formula":"'attributes.' + steps.pick.picked + '.score'"},"by":1},{"type":"adjust","when":"flags.attribute","field":"attributes.boosts","by":1},{"type":"adjust","when":"!flags.attribute","field":{"formula":"fieldId('skills.{skill}', steps.pick.picked)"},"by":1},{"type":"set","when":"!flags.attribute","field":{"formula":"fieldId('skillCredit.{skill}', steps.pick.picked)"},"value":0},{"type":"adjust","when":"flags.expert > 0","field":"skillPoints.expert","by":"-flags.expert"},{"type":"adjust","when":"flags.cost - flags.expert > 0","field":"skillPoints.unspent","by":"-(flags.cost - flags.expert)"}]},{"id":"result","kind":"outcome","result":"'improved'"}]},{"id":"initiative","tags":["combat"],"results":["rolled"],"steps":[{"id":"roll","kind":"roll","tags":["initiative"],"parts":[{"dice":"1d8"},{"field":"'attributes.dex.mod'"}]},{"id":"result","kind":"outcome","result":"'rolled'","data":{"total":"steps.roll.total"}}]},{"id":"attack","tags":["attack"],"available":"self.equipped || 'unarmed' in item.tags","params":{"targetAc":{"type":"integer","optional":true},"thrown":{"type":"boolean","default":false}},"results":["hit","miss"],"steps":[{"id":"setup","kind":"branch","cases":[{"when":true,"flags":{"mode":"params.thrown ? 'thrown' : item.skill == 'shoot' ? 'ranged'\n : item.skill == 'punch' ? 'unarmed' : 'melee'","skill":"params.thrown ? max(skills.stab, skills.shoot)\n : fieldOf('skills.{skill}', item.skill)","attribute":"item.attribute == 'str-dex'\n ? (attributes.str.mod >= attributes.dex.mod ? 'str' : 'dex') : item.attribute","ac":"has(params.targetAc) ? params.targetAc : -1","dice":"'unarmed' in item.tags ? unarmed.die : item.damage","shock":"'unarmed' in item.tags ? unarmed.shock : item.shock","shockAc":"'unarmed' in item.tags ? unarmed.shockAc : item.shockAc"}}]},{"id":"hitRoll","kind":"roll","tags":["attack",{"formula":"'attack.' + flags.mode"}],"bands":"attack","parts":[{"dice":"1d20"},{"field":"item.skill == 'punch' ? 'attack.punchBase'\n : !params.thrown && item.id in duelist.favored ? 'attack.favoredBase'\n : 'attack.base'"},{"value":"flags.skill >= 0 ? flags.skill : -2"},{"field":"'attributes.' + flags.attribute + '.mod'"}]},{"id":"confirm","kind":"choice","when":"steps.hitRoll.band == 'rolled'","options":[{"id":"hit"},{"id":"miss"}]},{"id":"outcome","kind":"branch","cases":[{"when":true,"flags":{"hit":"steps.hitRoll.band == 'hit'\n || (has(steps.confirm) && steps.confirm.picked == 'hit')"}}]},{"id":"shock","kind":"roll","when":"flags.shock > 0 && flags.mode in ['melee', 'unarmed']","tags":["shock",{"formula":"'shock.' + flags.mode"}],"parts":[{"value":"flags.shock"},{"field":"'attributes.' + flags.attribute + '.mod'"},{"field":"'damage.killingBlow'"},{"field":"'shock.bonus'"}]},{"id":"shockApplies","kind":"branch","cases":[{"when":true,"flags":{"shockDamage":"has(steps.shock) && flags.ac >= 0\n && (flags.ac <= flags.shockAc\n || (flags.mode == 'melee' && shock.ignoresAc)\n || (flags.mode == 'unarmed' && shock.unarmedIgnoresAc))\n ? max(0, steps.shock.total) : 0"}}]},{"id":"damage","kind":"roll","when":"flags.hit","tags":["damage",{"formula":"'damage.' + flags.mode"}],"parts":[{"dice":"flags.dice","tags":["weapon-die"]},{"field":"'attributes.' + flags.attribute + '.mod'"},{"value":"max(0, skills.punch)","when":"flags.mode == 'unarmed'"},{"field":"'damage.killingBlow'"}]},{"id":"totals","kind":"branch","cases":[{"when":true,"flags":{"dealt":"flags.hit ? max(has(steps.damage) ? steps.damage.total : 0,\n flags.ac < 0 && has(steps.shock) ? steps.shock.total : flags.shockDamage, 0)\n : flags.shockDamage"}}]},{"id":"deal","kind":"changes","when":"flags.dealt > 0","to":"target","changes":[{"type":"adjust","field":"hp.current","by":"-flags.dealt","tags":["damage"]}]},{"id":"result","kind":"outcome","result":"flags.hit ? 'hit' : 'miss'","data":{"total":"steps.hitRoll.total","damage":"flags.dealt"}}]},{"id":"background-entry","available":false,"params":{"entry":{"type":"string"},"random":{"type":"boolean","default":false}},"results":["gained"],"steps":[{"id":"skill","kind":"action","when":"!(params.entry in ['any-stat', 'physical', 'mental'])","use":"gain-skill","params":{"skill":"params.entry","random":"params.random"}},{"id":"attribute","kind":"action","when":"params.entry in ['any-stat', 'physical', 'mental']","use":"gain-attributes","params":{"kind":"params.entry","random":"params.random"}},{"id":"result","kind":"outcome","result":"'gained'"}]},{"id":"gain-skill","available":false,"params":{"skill":{"type":"string"},"random":{"type":"boolean","default":false},"focus":{"type":"boolean","default":false},"points":{"type":"integer","default":0,"min":0}},"results":["gained"],"steps":[{"id":"setup","kind":"branch","sheet":"proposed","cases":[{"when":true,"flags":{"cap":"params.points > 0 ? 4 : 1","direct":"params.skill in keysOf('skill')\n && fieldOf('skills.{skill}', params.skill) < (params.points > 0 ? 4 : 1)","allowed":"params.skill == 'combat' && (skills.stab < 1 || skills.shoot < 1 || skills.punch < 1)\n ? ['stab', 'shoot', 'punch']\n : params.skill == 'punch-stab' && (skills.punch < 1 || skills.stab < 1)\n ? ['punch', 'stab']\n : params.skill == 'perform-sneak' && (skills.perform < 1 || skills.sneak < 1)\n ? ['perform', 'sneak']\n : params.skill == 'specialist'\n ? filterList(keysOf('skill'), !(x in ['magic', 'stab', 'shoot', 'punch']))\n : params.focus ? filterList(keysOf('skill'), x != 'magic')\n : keysOf('skill')"}}]},{"id":"pick","kind":"choice","sheet":"proposed","when":"!flags.direct","random":"params.random","options":{"values":{"formula":"flags.allowed"},"where":"fieldOf('skills.{skill}', value) < flags.cap"},"recommend":"options[0]"},{"id":"target","kind":"branch","sheet":"proposed","cases":[{"when":"flags.direct || has(steps.pick)","flags":{"target":"flags.direct ? params.skill : steps.pick.picked","from":"fieldOf('skills.{skill}', flags.direct ? params.skill : steps.pick.picked)","credit":"fieldOf('skillCredit.{skill}', flags.direct ? params.skill : steps.pick.picked)\n + params.points"}}]},{"id":"spend","kind":"branch","when":"params.points > 0 && has(flags.target)","cases":[{"when":true,"flags":{"first":"flags.credit >= flags.from + 2 ? 1 : 0","left":"flags.credit >= flags.from + 2 ? flags.credit - flags.from - 2 : flags.credit"}}]},{"id":"spend2","kind":"branch","when":"params.points > 0 && has(flags.target)","cases":[{"when":true,"flags":{"second":"flags.from + flags.first < 4 && flags.left >= flags.from + flags.first + 2 ? 1 : 0"}}]},{"id":"raise","kind":"changes","when":"has(flags.target)","changes":[{"type":"adjust","when":"params.points == 0","field":{"formula":"fieldId('skills.{skill}', flags.target)"},"by":1},{"type":"adjust","when":"params.points > 0 && flags.first + flags.second > 0","field":{"formula":"fieldId('skills.{skill}', flags.target)"},"by":"flags.first + flags.second"},{"type":"set","when":"params.points > 0","field":{"formula":"fieldId('skillCredit.{skill}', flags.target)"},"value":"flags.second > 0 ? flags.left - flags.from - flags.first - 2 : flags.left"}]},{"id":"result","kind":"outcome","result":"'gained'"}]},{"id":"gain-attributes","available":false,"params":{"kind":{"type":"enum","values":["any-stat","physical","mental"]},"random":{"type":"boolean","default":false}},"results":["gained"],"steps":[{"id":"one","kind":"choice","sheet":"proposed","when":"params.kind == 'any-stat'","random":"params.random","options":{"values":["str","dex","con","int","wis","cha"],"where":"fieldOf('attributes.{attr}.score', value) < 18"},"recommend":"sortList(options, fieldOf('attributes.{attr}.score', x))[0]","changes":[{"type":"adjust","field":{"formula":"'attributes.' + picked.id + '.score'"},"by":1}]},{"id":"two","kind":"allocate","sheet":"proposed","when":"params.kind != 'any-stat'","fields":{"type":"field","where":"params.kind == 'physical'\n ? item.id in [@attributes.str.score, @attributes.dex.score, @attributes.con.score]\n : item.id in [@attributes.int.score, @attributes.wis.score, @attributes.cha.score]"},"budget":2,"spend":"upTo","limit":"18 - field.value","random":true},{"id":"result","kind":"outcome","result":"'gained'"}]},{"id":"pick-focus","available":false,"params":{"kind":{"type":"enum","values":["any","combat","noncombat"]},"random":{"type":"boolean","default":false},"points":{"type":"integer","default":0,"min":0}},"results":["picked"],"steps":[{"id":"focus","kind":"choice","sheet":"proposed","random":"params.random","options":{"content":{"type":"focus","where":"(params.kind == 'any' || params.kind in item.tags)\n && (!params.random || !('gm-defined' in item.tags))\n && (item.repeatable || sumCopies(copy.state.level,\n copy.type == 'focus' && copy.item == item.id) < item.maxLevel)\n && (item.requires == 'none'\n || (item.requires == 'mage' && class.mage > 0)\n || (item.requires == 'non-mage' && class.mage == 0)\n || (item.requires == 'expert' && class.expert > 0)\n || (item.requires == 'invoker' && tradition.invoker.tier > 0)\n || (item.requires == 'low-attribute' && min(attributes.str.score,\n attributes.dex.score, attributes.con.score, attributes.int.score,\n attributes.wis.score, attributes.cha.score) <= 7))"}},"recommend":"options[0]"},{"id":"held","kind":"branch","sheet":"proposed","cases":[{"when":true,"flags":{"raise":"countCopies(copy.type == 'focus' && copy.item == steps.focus.picked\n && copy.state.level < steps.focus.item.maxLevel) > 0"}}]},{"id":"take","kind":"changes","changes":[{"type":"adjustState","when":"flags.raise","copies":{"type":"focus","where":"item.id == steps.focus.picked && self.level < item.maxLevel"},"limit":1,"key":"level","by":1},{"type":"addItem","when":"!flags.raise","entry":{"item":"steps.focus.picked","state":{"level":1}}}]},{"id":"focusChoices","kind":"choice","when":"!flags.raise","random":"params.random","options":{"pending":{"entry":"steps.take.added[0]"}},"recommend":"options[0]"},{"id":"bonusSkill","kind":"action","when":"!flags.raise && steps.focus.item.bonusSkill != 'none'","use":"gain-skill","params":{"skill":"steps.focus.item.bonusSkill == 'specialist' && has(steps.focusChoices)\n && size(steps.focusChoices.picked) > 0\n ? steps.focusChoices.picked[0] : steps.focus.item.bonusSkill","random":"params.random","focus":true,"points":"params.points"}},{"id":"result","kind":"outcome","result":"'picked'"}]},{"id":"pick-arts","available":false,"params":{"random":{"type":"boolean","default":false}},"results":["picked"],"steps":[{"id":"arts","kind":"choice","sheet":"proposed","random":"params.random","repeat":{"max":"arts.owed","min":"arts.owed"},"options":{"content":{"type":"art","where":"fieldOf('arts.{artTrad}.owed', item.tradition) > 0\n && (countCopies(copy.item == item.id) == 0 || 'repeatable' in item.tags)\n && level >= item.minLevel && !('granted' in item.tags)\n && (!has(item.requiresArt) || countCopies(copy.item == item.requiresArt) > 0)"}},"recommend":"options[0]","changes":[{"type":"addItem","entry":{"item":"picked.id"}}]},{"id":"result","kind":"outcome","result":"'picked'"}]},{"id":"create-character","tags":["creation"],"available":"character.creating && countCopies(copy.type == 'class') == 0","params":{"random":{"type":"boolean","default":false}},"results":["created"],"steps":[{"id":"method","kind":"choice","when":"!params.random","options":[{"id":"roll"},{"id":"array"}],"recommend":"'roll'"},{"id":"rolled","kind":"branch","cases":[{"when":"params.random || steps.method.picked == 'roll'","steps":[{"id":"str","kind":"roll","tags":["creation"],"parts":[{"dice":"3d6"}]},{"id":"dex","kind":"roll","tags":["creation"],"parts":[{"dice":"3d6"}]},{"id":"con","kind":"roll","tags":["creation"],"parts":[{"dice":"3d6"}]},{"id":"int","kind":"roll","tags":["creation"],"parts":[{"dice":"3d6"}]},{"id":"wis","kind":"roll","tags":["creation"],"parts":[{"dice":"3d6"}]},{"id":"cha","kind":"roll","tags":["creation"],"parts":[{"dice":"3d6"}]},{"id":"scores","kind":"changes","changes":[{"type":"set","field":"attributes.str.score","value":"steps.str.total"},{"type":"set","field":"attributes.dex.score","value":"steps.dex.total"},{"type":"set","field":"attributes.con.score","value":"steps.con.total"},{"type":"set","field":"attributes.int.score","value":"steps.int.total"},{"type":"set","field":"attributes.wis.score","value":"steps.wis.total"},{"type":"set","field":"attributes.cha.score","value":"steps.cha.total"}]},{"id":"fourteen","kind":"choice","sheet":"proposed","options":{"values":["str","dex","con","int","wis","cha"],"where":"fieldOf('attributes.{attr}.score', value) < 14"},"recommend":"sortList(options, fieldOf('attributes.{attr}.score', x))[0]","changes":[{"type":"set","field":{"formula":"'attributes.' + picked.id + '.score'"},"value":14}]}]},{"when":"steps.method.picked == 'array'","steps":[{"id":"array","kind":"allocate","fields":{"type":"field","where":"'attribute' in item.tags"},"values":[14,12,11,10,9,7],"recommend":{"attributes.str.score":14,"attributes.dex.score":12,"attributes.con.score":11,"attributes.int.score":10,"attributes.wis.score":9,"attributes.cha.score":7}}]}]},{"id":"background","kind":"choice","random":"params.random","options":{"content":{"type":"background"}},"recommend":"options[0]","changes":[{"type":"addItem","entry":{"id":"background","item":"picked.id"}}]},{"id":"tables","kind":"branch","cases":[{"when":true,"flags":{"growth":"[steps.background.item.growth1, steps.background.item.growth2,\n steps.background.item.growth3, steps.background.item.growth4,\n steps.background.item.growth5, steps.background.item.growth6]","learning":"[steps.background.item.learning1, steps.background.item.learning2,\n steps.background.item.learning3, steps.background.item.learning4,\n steps.background.item.learning5, steps.background.item.learning6,\n steps.background.item.learning7, steps.background.item.learning8]"}}]},{"id":"freeSkill","kind":"action","use":"background-entry","params":{"entry":"steps.background.item.freeSkill","random":"params.random"}},{"id":"skills","kind":"choice","when":"!params.random","options":[{"id":"pick"},{"id":"roll-tables"}],"recommend":"'pick'"},{"id":"learn","kind":"branch","cases":[{"when":"!params.random && steps.skills.picked == 'pick'","steps":[{"id":"learning","kind":"choice","repeat":{"max":2,"min":2},"options":{"values":{"formula":"flags.learning"},"where":"value != 'any' && picks < countList(flags.learning, x == value)"},"recommend":"options[0]"},{"id":"learned1","kind":"action","use":"background-entry","params":{"entry":"steps.learning.picked[0]"}},{"id":"learned2","kind":"action","use":"background-entry","params":{"entry":"steps.learning.picked[1]"}}]}]},{"id":"rolls","kind":"branch","cases":[{"when":"params.random || steps.skills.picked == 'roll-tables'","steps":[{"id":"table1","kind":"choice","random":"params.random","options":[{"id":"growth"},{"id":"learning"}],"recommend":"'learning'"},{"id":"die1","kind":"roll","tags":["creation"],"parts":[{"dice":"steps.table1.picked == 'growth' ? 1d6 : 1d8"}]},{"id":"rolled1","kind":"action","use":"background-entry","params":{"entry":"steps.table1.picked == 'growth' ? flags.growth[steps.die1.total - 1]\n : flags.learning[steps.die1.total - 1]","random":"params.random"}},{"id":"table2","kind":"choice","random":"params.random","options":[{"id":"growth"},{"id":"learning"}],"recommend":"'learning'"},{"id":"die2","kind":"roll","tags":["creation"],"parts":[{"dice":"steps.table2.picked == 'growth' ? 1d6 : 1d8"}]},{"id":"rolled2","kind":"action","use":"background-entry","params":{"entry":"steps.table2.picked == 'growth' ? flags.growth[steps.die2.total - 1]\n : flags.learning[steps.die2.total - 1]","random":"params.random"}},{"id":"table3","kind":"choice","random":"params.random","options":[{"id":"growth"},{"id":"learning"}],"recommend":"'learning'"},{"id":"die3","kind":"roll","tags":["creation"],"parts":[{"dice":"steps.table3.picked == 'growth' ? 1d6 : 1d8"}]},{"id":"rolled3","kind":"action","use":"background-entry","params":{"entry":"steps.table3.picked == 'growth' ? flags.growth[steps.die3.total - 1]\n : flags.learning[steps.die3.total - 1]","random":"params.random"}}]}]},{"id":"class","kind":"choice","random":"params.random","options":{"content":{"type":"class"}},"recommend":"options[0]","changes":[{"type":"addItem","entry":{"id":"class","item":"picked.id"}}]},{"id":"classChoices","kind":"choice","random":"params.random","options":{"pending":{"entry":"steps.class.added[0]"}},"recommend":"options[0]"},{"id":"warriorFocus","kind":"action","sheet":"proposed","when":"class.warrior > 0","use":"pick-focus","params":{"kind":"'combat'","random":"params.random"}},{"id":"expertFocus","kind":"action","sheet":"proposed","when":"class.expert > 0","use":"pick-focus","params":{"kind":"'noncombat'","random":"params.random"}},{"id":"freeFocus","kind":"action","use":"pick-focus","params":{"kind":"'any'","random":"params.random"}},{"id":"freePick","kind":"action","use":"gain-skill","params":{"skill":"'any'","random":"params.random"}},{"id":"traditionSkills","kind":"branch","sheet":"proposed","cases":[{"when":true,"flags":{"traditionSkills":"mapList(filterList(keysOf('trad'), fieldOf('tradition.{trad}.tier', x) > 0\n && fieldOf('tradition.{trad}.skill', x) != ''), fieldOf('tradition.{trad}.skill', x))"}}]},{"id":"traditionSkill","kind":"group","when":"size(flags.traditionSkills) > 0","repeat":{"while":"size(steps.traditionSkill) < size(flags.traditionSkills)","max":15},"steps":[{"id":"gain","kind":"action","sheet":"proposed","use":"gain-skill","params":{"skill":"flags.traditionSkills[size(steps.traditionSkill)]","random":"params.random"}}]},{"id":"arts","kind":"action","use":"pick-arts","params":{"random":"params.random"}},{"id":"spells","kind":"choice","sheet":"proposed","when":"spells.starting > 0","random":"params.random","repeat":{"max":"spells.starting","min":"spells.starting"},"options":{"content":{"type":"spell","where":"item.level == 1 && countCopies(copy.item == item.id) == 0\n && (item.list == 'high' || (item.list in keysOf('trad')\n && (fieldOf('tradition.{trad}.tier', item.list) > 0\n || invoker.education == item.list)))"}},"recommend":"options[0]","changes":[{"type":"addItem","entry":{"item":"picked.id","state":{"prepared":"spells.prepared < spells.preparedMax"}}}]},{"id":"hitPoints","kind":"roll","sheet":"proposed","tags":["creation"],"parts":[{"dice":"1d6"},{"field":"'hp.dieBonus'"},{"field":"'attributes.con.mod'"}]},{"id":"hp","kind":"changes","changes":[{"type":"set","field":"hp.rolled","value":"max(1, steps.hitPoints.total)"}]},{"id":"silverRoll","kind":"roll","tags":["creation"],"parts":[{"dice":"3d6"}]},{"id":"purse","tags":["creation.purse"],"kind":"changes","changes":[{"type":"adjust","field":"coins.silver","by":"steps.silverRoll.total * 10"}]},{"id":"weapon","kind":"choice","sheet":"proposed","random":"params.random","repeat":{"max":1},"options":{"content":{"type":"weapon","where":"!(item.id in [@weapons.unarmed, @weapons.large-shield-bash,\n @weapons.small-shield-bash])\n && (item.costUnit == 'cp' ? ceil(item.cost / 10) : item.cost) <= coins.silver"}},"recommend":"filterList([spells.mode != 'none' || tradition.vowed.tier > 0 ? @weapons.staff\n : class.warrior > 0 || class.expert > 0 ? @weapons.short-sword\n : @weapons.light-spear, options[0]], x in options)[0]","changes":[{"type":"addItem","entry":{"item":"picked.id","equipped":true}},{"type":"adjust","field":"coins.silver","by":"-(picked.item.costUnit == 'cp' ? ceil(picked.item.cost / 10) : picked.item.cost)"},{"type":"adjust","field":"coins.copper","when":"picked.item.costUnit == 'cp'","by":"ceil(picked.item.cost / 10) * 10 - picked.item.cost"}]},{"id":"armorBuy","kind":"choice","sheet":"proposed","options":[{"id":"buy-armor"},{"id":"no-armor"}],"recommend":"spells.mode != 'none' || tradition.vowed.tier > 0 ? 'no-armor' : 'buy-armor'"},{"id":"armor","kind":"choice","sheet":"proposed","when":"steps.armorBuy.picked == 'buy-armor'","random":"params.random","repeat":{"max":2},"options":{"content":{"type":"armor","where":"(item.category == 'shield' ? !armor.shield : armor.wornEnc < 0)\n && (item.costUnit == 'cp' ? ceil(item.cost / 10) : item.cost) <= coins.silver"}},"recommend":"filterList([@armor.linothorax, @armor.large-shield, @armor.war-shirt, options[0]],\n x in options)[0]","changes":[{"type":"addItem","entry":{"item":"picked.id","equipped":true}},{"type":"adjust","field":"coins.silver","by":"-(picked.item.costUnit == 'cp' ? ceil(picked.item.cost / 10) : picked.item.cost)"},{"type":"adjust","field":"coins.copper","when":"picked.item.costUnit == 'cp'","by":"ceil(picked.item.cost / 10) * 10 - picked.item.cost"}]},{"id":"gear","kind":"choice","sheet":"proposed","random":"params.random","repeat":{"max":6},"options":{"content":{"type":"gear","where":"picks == 0\n && (item.costUnit == 'cp' ? ceil(item.cost / 10) : item.cost) <= coins.silver\n && (item.id == @gear.backpack ? enc.readied + item.enc <= enc.readiedLimit + 4\n : enc.stowed + item.enc <= enc.stowedLimit + 8)"}},"recommend":"filterList([@gear.backpack, @gear.rations, @gear.waterskin, @gear.tinder-box,\n @gear.torch, @gear.rope, options[0]], x in options)[0]","changes":[{"type":"addItem","entry":{"item":"picked.id","equipped":"picked.id == @gear.backpack"}},{"type":"adjust","field":"coins.silver","by":"-(picked.item.costUnit == 'cp' ? ceil(picked.item.cost / 10) : picked.item.cost)"},{"type":"adjust","field":"coins.copper","when":"picked.item.costUnit == 'cp'","by":"ceil(picked.item.cost / 10) * 10 - picked.item.cost"}]},{"id":"finish","tags":["creation.finish"],"kind":"changes","sheet":"proposed","changes":[{"type":"set","field":"hp.current","value":"hp.max"},{"type":"finishCreation"}]},{"id":"result","kind":"outcome","result":"'created'"}]},{"id":"fall","tags":["health"],"available":"hp.current == 0 && !conditions.mortallyWounded","results":["mortally-wounded","dead"],"steps":[{"id":"down","kind":"changes","when":"!conditions.frail","changes":[{"type":"set","field":"conditions.mortallyWounded","value":true}]},{"id":"result","kind":"outcome","result":"conditions.frail ? 'dead' : 'mortally-wounded'"}]},{"id":"stabilize","tags":["health"],"available":"conditions.mortallyWounded","results":["stabilized"],"steps":[{"id":"stable","kind":"changes","changes":[{"type":"set","field":"conditions.mortallyWounded","value":false},{"type":"set","field":"conditions.frail","value":true},{"type":"set","field":"hp.current","value":1}]},{"id":"result","kind":"outcome","result":"'stabilized'"}]},{"id":"take-damage","tags":["health"],"params":{"amount":{"type":"integer","min":0}},"results":["taken"],"steps":[{"id":"deal","kind":"changes","changes":[{"type":"adjust","when":"params.amount > 0","field":"hp.current","by":"-params.amount","tags":["damage"]}]},{"id":"result","kind":"outcome","result":"'taken'"}]},{"id":"heal","tags":["health"],"params":{"amount":{"type":"integer","min":0},"magical":{"type":"boolean","default":false},"strain":{"type":"integer","default":0,"min":0}},"results":["healed","too-strained"],"steps":[{"id":"strained","kind":"outcome","when":"params.strain > 0 && strain.current + params.strain > strain.max","result":"'too-strained'"},{"id":"restore","kind":"changes","changes":[{"type":"adjust","when":"params.amount > 0","field":"hp.current","by":"params.amount","tags":["healing"]},{"type":"adjust","when":"params.strain > 0","field":"strain.current","by":"params.strain"},{"type":"set","when":"params.magical","field":"conditions.mortallyWounded","value":false},{"type":"set","when":"params.magical","field":"conditions.frail","value":false}]},{"id":"result","kind":"outcome","result":"'healed'"}]},{"id":"first-aid","tags":["health"],"available":"strain.current < strain.max && hp.current < hp.max","params":{"healerSkill":{"type":"integer","default":-1,"min":-1,"max":4}},"results":["healed"],"steps":[{"id":"roll","kind":"roll","tags":["healing"],"parts":[{"dice":"1d6"},{"value":"params.healerSkill"}]},{"id":"restore","kind":"changes","changes":[{"type":"adjust","field":"hp.current","by":"max(0, steps.roll.total)","tags":["healing"]},{"type":"adjust","field":"strain.current","by":1}]},{"id":"result","kind":"outcome","result":"'healed'","data":{"healed":"max(0, steps.roll.total)"}}]},{"id":"rest","tags":["rest"],"results":["rested"],"steps":[{"id":"recover","tags":["rest.night"],"kind":"changes","changes":[{"type":"adjust","when":"!conditions.frail","field":"hp.current","by":"level","tags":["healing"]},{"type":"adjust","when":"!conditions.frail && strain.current > 0","field":"strain.current","by":-1},{"type":"set","field":"spells.castsUsed","value":0},{"type":"set","field":"spells.pointsUsed","value":0},{"type":"set","forEach":"keysOf('effortTrad')","field":{"formula":"fieldId('effort.{effortTrad}.day', x)"},"value":0},{"type":"set","forEach":"keysOf('effortTrad')","field":{"formula":"fieldId('effort.{effortTrad}.scene', x)"},"value":0}]},{"id":"result","kind":"outcome","result":"'rested'"}]},{"id":"end-scene","tags":["rest"],"results":["ended"],"steps":[{"id":"reclaim","tags":["rest.scene"],"kind":"changes","changes":[{"type":"set","forEach":"keysOf('effortTrad')","field":{"formula":"fieldId('effort.{effortTrad}.scene', x)"},"value":0}]},{"id":"result","kind":"outcome","result":"'ended'"}]},{"id":"cast-spell","tags":["spell"],"available":"self.prepared && item.level <= spells.maxLevel && !magic.hindered\n && (spells.mode == 'invoker' || spells.mode == 'partial-invoker'\n ? spells.pointsLeft >= item.level : spells.castsLeft > 0)","results":["cast"],"steps":[{"id":"spend","kind":"changes","changes":[{"type":"adjust","when":"spells.mode == 'invoker' || spells.mode == 'partial-invoker'","field":"spells.pointsUsed","by":"item.level"},{"type":"adjust","when":"spells.mode != 'invoker' && spells.mode != 'partial-invoker'","field":"spells.castsUsed","by":1}]},{"id":"result","kind":"outcome","result":"'cast'","data":{"level":"item.level"}}]},{"id":"commit-effort","tags":["art"],"available":"item.effort != 'none' && level >= item.minLevel && !(item.effort == 'ongoing' && self.active)\n && item.tradition in keysOf('effortTrad')\n && fieldOf('effort.{effortTrad}.free', item.tradition) > 0\n && !(item.tradition in keysOf('armorTrad') && magic.hindered)\n && !(item.tradition in keysOf('heavyArmorTrad') && duelist.hindered)","results":["committed"],"steps":[{"id":"commit","kind":"changes","changes":[{"type":"adjust","field":{"formula":"fieldId('effort.{effortTrad}.{effortSpan}', item.tradition, item.effort)"},"by":1},{"type":"setState","when":"item.effort == 'ongoing' && !('granted' in item.tags)","entry":"self","key":"active","value":true},{"type":"setState","when":"item.effort == 'ongoing' && 'granted' in item.tags","grant":"self","key":"active","value":true}]},{"id":"result","kind":"outcome","result":"'committed'"}]},{"id":"release-effort","tags":["art"],"available":"item.effort == 'ongoing' && self.active","results":["released"],"steps":[{"id":"release","kind":"changes","changes":[{"type":"adjust","when":"fieldOf('effort.{effortTrad}.ongoing', item.tradition) > 0","field":{"formula":"fieldId('effort.{effortTrad}.ongoing', item.tradition)"},"by":-1},{"type":"setState","when":"!('granted' in item.tags)","entry":"self","key":"active","value":false},{"type":"setState","when":"'granted' in item.tags","grant":"self","key":"active","value":false}]},{"id":"result","kind":"outcome","result":"'released'"}]},{"id":"saving-throw","tags":["save"],"params":{"save":{"type":"id","of":"field","where":"'save' in item.tags"},"modifier":{"type":"integer","default":0}},"results":{"bands":"save"},"steps":[{"id":"setup","kind":"branch","cases":[{"when":true,"flags":{"target":"params.save.value"}}]},{"id":"save","kind":"roll","tags":[{"formula":"params.save.tags"}],"bands":"save","parts":[{"dice":"1d20"},{"value":"params.modifier","when":"params.modifier != 0"}]},{"id":"result","kind":"outcome","result":"steps.save.band","data":{"total":"steps.save.total"}}]},{"id":"skill-check","tags":["check"],"params":{"skill":{"type":"id","of":"field","where":"'skill' in item.tags"},"attribute":{"type":"enum","values":["str","dex","con","int","wis","cha"]},"difficulty":{"type":"integer","optional":true},"modifier":{"type":"integer","default":0}},"results":{"bands":"check"},"steps":[{"id":"setup","kind":"branch","cases":[{"when":true,"flags":{"difficulty":"has(params.difficulty) ? params.difficulty : -1","level":"params.skill.id in [@skills.stab, @skills.shoot, @skills.punch]\n ? params.skill.value : max(params.skill.value, skills.noncombatFloor)"}}]},{"id":"check","kind":"roll","tags":["check",{"formula":"params.skill.tags"}],"bands":"check","parts":[{"dice":"2d6kh2"},{"value":"flags.level"},{"field":"'attributes.' + params.attribute + '.mod'"},{"value":"params.modifier","when":"params.modifier != 0"}]},{"id":"result","kind":"outcome","result":"steps.check.band","data":{"total":"steps.check.total"}}]}],"followUps":[{"id":"level-up","while":"!character.creating && xp.levelUp","action":"level-up"},{"id":"downed","becomes":"hp.current == 0 && !conditions.mortallyWounded","required":true,"action":"fall"}],"families":{"attr":["str","dex","con","int","wis","cha"],"backgroundEntry":["freeSkill","growth1","growth2","growth3","growth4","growth5","growth6","learning1","learning2","learning3","learning4","learning5","learning6","learning7","learning8"],"trad":["highmage","elementalist","necromancer","healer","vowed","accursed","bard","beastmaster","bloodpriest","duelist","mageslayer","skinshifter","thoughtnoble","invoker","wise"],"effortTrad":["highmage","elementalist","necromancer","healer","vowed","accursed","bard","beastmaster","bloodpriest","duelist","mageslayer","skinshifter","thoughtnoble"],"artTrad":["highmage","elementalist","necromancer","healer","vowed","accursed","bard","beastmaster","bloodpriest","duelist","mageslayer","skinshifter","thoughtnoble","wise"],"effortSpan":["scene","day","ongoing"],"armorTrad":["highmage","elementalist","necromancer","vowed"],"heavyArmorTrad":["duelist"],"spellTrad":["highmage","elementalist","necromancer"],"skill":["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work"]},"contentTypes":{"background":{"copies":{"max":1},"fields":{"freeSkill":{"type":"enum","open":true,"values":["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work","any","combat","any-stat","physical","mental"],"required":true},"growth1":{"type":"enum","open":true,"values":["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work","any","combat","any-stat","physical","mental"],"required":true},"growth2":{"type":"enum","open":true,"values":["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work","any","combat","any-stat","physical","mental"],"required":true},"growth3":{"type":"enum","open":true,"values":["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work","any","combat","any-stat","physical","mental"],"required":true},"growth4":{"type":"enum","open":true,"values":["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work","any","combat","any-stat","physical","mental"],"required":true},"growth5":{"type":"enum","open":true,"values":["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work","any","combat","any-stat","physical","mental"],"required":true},"growth6":{"type":"enum","open":true,"values":["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work","any","combat","any-stat","physical","mental"],"required":true},"learning1":{"type":"enum","open":true,"values":["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work","any","combat","any-stat","physical","mental"],"required":true},"learning2":{"type":"enum","open":true,"values":["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work","any","combat","any-stat","physical","mental"],"required":true},"learning3":{"type":"enum","open":true,"values":["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work","any","combat","any-stat","physical","mental"],"required":true},"learning4":{"type":"enum","open":true,"values":["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work","any","combat","any-stat","physical","mental"],"required":true},"learning5":{"type":"enum","open":true,"values":["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work","any","combat","any-stat","physical","mental"],"required":true},"learning6":{"type":"enum","open":true,"values":["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work","any","combat","any-stat","physical","mental"],"required":true},"learning7":{"type":"enum","open":true,"values":["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work","any","combat","any-stat","physical","mental"],"required":true},"learning8":{"type":"enum","open":true,"values":["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work","any","combat","any-stat","physical","mental"],"required":true}}},"class":{"copies":{"max":1}},"partial":{"grantOnly":true,"copies":{"max":0}},"weapon":{"carried":true,"equippable":true,"fields":{"damage":{"type":"dice","required":true},"shock":{"type":"integer","default":0,"min":0},"shockAc":{"type":"integer","default":0,"min":0},"attribute":{"type":"enum","values":["str","dex","str-dex"],"required":true},"skill":{"type":"enum","values":["stab","shoot","punch"],"required":true,"open":true},"rangeShort":{"type":"integer","min":0},"rangeLong":{"type":"integer","min":0},"cost":{"type":"integer","min":0},"costUnit":{"type":"enum","values":["cp","sp"],"default":"sp"},"enc":{"type":"integer","default":1,"min":0},"bundle":{"type":"integer","default":1,"min":1},"wornFree":{"type":"boolean","default":false}},"actions":[{"use":"attack"}]},"armor":{"carried":true,"equippable":true,"fields":{"ac":{"type":"integer","required":true,"min":10},"category":{"type":"enum","values":["light","medium","heavy","shield"],"required":true},"cost":{"type":"integer","min":0},"costUnit":{"type":"enum","values":["cp","sp"],"default":"sp"},"enc":{"type":"integer","default":1,"min":0},"bundle":{"type":"integer","default":1,"min":1},"wornFree":{"type":"boolean","default":false}},"effects":[{"id":"sneak-penalty","target":{"rolls":["skill.sneak"]},"op":"add","value":"-item.enc","when":"self.equipped && item.category in ['medium', 'heavy'] && item.enc > 0"},{"id":"exert-penalty","target":{"rolls":["skill.exert"]},"op":"add","value":"-item.enc","when":"self.equipped && item.category == 'heavy' && item.enc > 0"}]},"gear":{"carried":true,"equippable":true,"fields":{"cost":{"type":"integer","min":0},"costUnit":{"type":"enum","values":["cp","sp"],"default":"sp"},"enc":{"type":"integer","default":0,"min":0},"bundle":{"type":"integer","default":1,"min":1},"wornFree":{"type":"boolean","default":false}}},"focus":{"fields":{"maxLevel":{"type":"integer","default":2,"min":1},"bonusSkill":{"type":"enum","open":true,"values":["none","any","combat","punch-stab","perform-sneak","specialist","administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work"],"default":"none"},"repeatable":{"type":"boolean","default":false},"requires":{"type":"enum","values":["none","mage","non-mage","expert","low-attribute","invoker"],"default":"none"}},"state":{"level":{"type":"integer","default":1,"min":1,"max":"item.maxLevel"}}},"tradition":{"grantOnly":true,"carried":false,"copies":{"max":0},"fields":{"key":{"type":"string","required":true}}},"spell":{"fields":{"level":{"type":"integer","required":true,"min":1,"max":5},"list":{"type":"enum","values":["high","elementalist","necromancer"],"required":true,"open":true}},"state":{"prepared":{"type":"boolean","default":false}},"actions":[{"use":"cast-spell"}]},"art":{"fields":{"tradition":{"type":"enum","open":true,"values":["highmage","elementalist","necromancer","healer","vowed","accursed","bard","beastmaster","bloodpriest","duelist","mageslayer","skinshifter","thoughtnoble","wise"],"required":true},"effort":{"type":"enum","values":["none","scene","day","ongoing"],"default":"none"},"minLevel":{"type":"integer","default":1,"min":1,"max":10},"requiresArt":{"type":"id","of":"art"}},"state":{"active":{"type":"boolean","default":false}},"actions":[{"use":"commit-effort"},{"use":"release-effort"}]}},"constraints":[{"id":"creation-class","check":"!character.creating || countCopies(copy.type == 'class') > 0"},{"id":"foci-allowed","check":"foci.taken <= foci.allowed","data":{"allowed":"foci.allowed"}},{"id":"mageslayer-pairing","check":"tradition.mageslayer.tier == 0 || class.mage == 0"},{"id":"invoker-pairing","check":"tradition.invoker.tier != 1\n || tradition.highmage.tier + tradition.elementalist.tier + tradition.necromancer.tier == 0"},{"id":"encumbrance","check":"enc.over < 3"},{"id":"focus-once","copies":{"type":"focus","where":"!item.repeatable"},"check":"countCopies(copy.type == 'focus' && copy.item == item.id) <= 1"},{"id":"spells-prepared","check":"spells.prepared <= spells.preparedMax","data":{"limit":"spells.preparedMax"}},{"id":"spell-known","copies":{"type":"spell"},"check":"item.level <= spells.maxLevel\n && (item.list == 'high' ? spells.mode != 'none'\n : item.list in keysOf('trad')\n && (fieldOf('tradition.{trad}.tier', item.list) > 0 || invoker.education == item.list))"},{"id":"art-tradition","copies":{"type":"art"},"check":"fieldOf('tradition.{trad}.tier', item.tradition) > 0 || invoker.education == item.tradition"},{"id":"arts-allowed","check":"countList(keysOf('artTrad'),\n fieldOf('arts.{artTrad}.taken', x) > fieldOf('arts.{artTrad}.allowed', x)) == 0"},{"id":"effort-committed","check":"countList(keysOf('effortTrad'), fieldOf('effort.{effortTrad}.scene', x)\n + fieldOf('effort.{effortTrad}.day', x) + fieldOf('effort.{effortTrad}.ongoing', x)\n > fieldOf('effort.{effortTrad}.max', x)) == 0"},{"id":"creation-skill-cap","check":"!character.creating || maxFields(f.value, 'skill' in f.tags) <= 1","data":{"limit":1}}],"resultBands":{"attack":[{"id":"hit","when":"roll.kept[0] == 20"},{"id":"miss","when":"roll.kept[0] == 1"},{"id":"rolled","when":"flags.ac < 0"},{"id":"hit","when":"roll.total >= flags.ac","success":true},{"id":"miss","when":true}],"save":[{"id":"success","when":"roll.total >= flags.target","success":true},{"id":"failure","when":true}],"check":[{"id":"rolled","when":"flags.difficulty < 0"},{"id":"success","when":"roll.total >= flags.difficulty","success":true},{"id":"failure","when":true}]},"standardCopies":[{"type":"weapon","where":"'unarmed' in item.tags"}],"creation":[{"id":"guided","action":"create-character"},{"id":"random","action":"create-character","params":{"random":true},"random":true}],"display":{"groups":[{"id":"summary","priority":0,"visibility":"primary"},{"id":"attributes","priority":0},{"id":"saves","priority":0,"members":{"type":"field","where":"'save' in item.tags"}},{"id":"combat","priority":0},{"id":"condition","priority":0},{"id":"skills","priority":1,"members":{"type":"field","where":"'skill' in item.tags"}},{"id":"magic","priority":1,"showWhen":"class.mage > 0 || spells.mode != 'none' || effort.mageslayer.max > 0 || effort.bard.max > 0 || tradition.wise.tier > 0"},{"id":"advancement","priority":2},{"id":"record","priority":2},{"id":"encumbrance","priority":2},{"id":"checks","kind":"actions","priority":0,"members":{"type":"action","where":"'check' in item.tags || 'save' in item.tags"}},{"id":"attacks","kind":"actions","priority":0,"members":{"type":"action","where":"'attack' in item.tags || 'combat' in item.tags"}},{"id":"magic-actions","kind":"actions","priority":1,"members":{"type":"action","where":"'spell' in item.tags || 'art' in item.tags"}},{"id":"health-actions","kind":"actions","priority":1,"members":{"type":"action","where":"'health' in item.tags || 'rest' in item.tags"}},{"id":"advancement-actions","kind":"actions","priority":2,"members":{"type":"action","where":"'advancement' in item.tags"}},{"id":"creation","kind":"actions","priority":3,"visibility":"background","members":{"type":"action","where":"'creation' in item.tags"}},{"id":"class","kind":"content","priority":0,"members":{"type":"class"}},{"id":"partials","kind":"content","priority":0,"showWhen":"hasChoice('partial')","members":{"type":"partial"}},{"id":"background","kind":"content","priority":0,"members":{"type":"background"}},{"id":"foci","kind":"content","priority":1,"members":{"type":"focus"}},{"id":"arts","kind":"content","priority":1,"members":{"type":"art"}},{"id":"spells","kind":"content","priority":1,"showWhen":"spells.mode != 'none'","members":{"type":"spell"},"sectionBy":"item.level"},{"id":"weapons","kind":"content","priority":1,"members":{"type":"weapon"}},{"id":"armor","kind":"content","priority":1,"members":{"type":"armor"}},{"id":"gear","kind":"content","priority":2,"members":{"type":"gear"}}],"fields":{"level":{"groups":["summary"],"priority":0,"visibility":"primary"},"hp.current":{"groups":["summary","condition"],"priority":1,"visibility":"primary","with":[{"field":"hp.max","as":"max"}]},"hp.max":{"groups":["condition"],"priority":2},"hp.rolled":{"groups":["condition"],"priority":3,"visibility":"background"},"ac.value":{"groups":["summary","combat"],"priority":2,"visibility":"primary"},"attack.base":{"groups":["combat"],"priority":0,"format":"signed"},"attack.punchBase":{"hidden":true},"attack.favoredBase":{"hidden":true},"hp.dieBonus":{"hidden":true},"damage.killingBlow":{"groups":["combat"],"priority":3,"showWhen":"damage.killingBlow > 0"},"ac.innate":{"hidden":true},"ac.base":{"hidden":true},"ac.withShield":{"hidden":true},"ac.cappedBonus":{"hidden":true},"armor.wornAc":{"hidden":true},"armor.wornEnc":{"hidden":true},"armor.wornHeavy":{"hidden":true},"armor.shield":{"hidden":true},"armor.shieldAc":{"hidden":true},"shock.bonus":{"hidden":true},"shock.ignoresAc":{"hidden":true},"shock.unarmedIgnoresAc":{"hidden":true},"unarmed.die":{"groups":["combat"],"priority":4,"format":"dice"},"unarmed.shock":{"hidden":true},"unarmed.shockAc":{"hidden":true},"duelist.favored":{"hidden":true},"strain.current":{"groups":["condition"],"priority":4,"with":[{"field":"strain.max","as":"max"}]},"strain.max":{"groups":["condition"],"priority":5},"conditions.frail":{"groups":["condition"],"priority":6,"input":{"widget":"checkbox"}},"conditions.mortallyWounded":{"groups":["condition"],"priority":7,"input":{"widget":"checkbox"}},"class.warrior":{"hidden":true},"class.expert":{"hidden":true},"class.mage":{"hidden":true},"chassis.attackFull":{"hidden":true},"chassis.attackWarrior":{"hidden":true},"chassis.attackExpert":{"hidden":true},"chassis.hitsWarrior":{"hidden":true},"chassis.hitsExpert":{"hidden":true},"chassis.fragile":{"hidden":true},"foci.allowed":{"groups":["advancement"],"priority":3,"visibility":"background"},"foci.taken":{"hidden":true},"companion.hitDice":{"groups":["record"],"priority":5,"showWhen":"tradition.beastmaster.tier > 0"},"xp.current":{"groups":["advancement"],"priority":0,"with":[{"field":"xp.nextLevel","as":"max"}]},"xp.nextLevel":{"groups":["advancement"],"priority":1,"showWhen":"xp.nextLevel > 0"},"xp.pace":{"groups":["advancement"],"priority":2,"visibility":"background"},"xp.levelUp":{"hidden":true},"skillPoints.unspent":{"groups":["advancement"],"priority":4},"skillPoints.expert":{"groups":["advancement"],"priority":5,"showWhen":"class.expert > 0"},"attributes.boosts":{"groups":["advancement"],"priority":6,"visibility":"background"},"attributes.bestMod":{"hidden":true},"skills.noncombatFloor":{"hidden":true},"coins.gold":{"groups":["record"],"priority":0},"coins.silver":{"groups":["record"],"priority":1},"coins.copper":{"groups":["record"],"priority":2},"enc.readied":{"groups":["encumbrance"],"priority":0,"with":[{"field":"enc.readiedLimit","as":"max"}]},"enc.stowed":{"groups":["encumbrance"],"priority":1,"with":[{"field":"enc.stowedLimit","as":"max"}]},"enc.readiedLimit":{"groups":["encumbrance"],"priority":2,"visibility":"background"},"enc.stowedLimit":{"groups":["encumbrance"],"priority":3,"visibility":"background"},"enc.over":{"hidden":true},"move.feet":{"groups":["combat"],"priority":5,"unit":"ft"},"spells.mode":{"hidden":true},"spells.maxLevel":{"groups":["magic"],"priority":0,"showWhen":"spells.maxLevel > 0"},"spells.castsUsed":{"groups":["magic"],"priority":1,"showWhen":"spells.castsPerDay > 0","with":[{"field":"spells.castsPerDay","as":"max"}]},"spells.castsPerDay":{"groups":["magic"],"priority":10,"visibility":"background","showWhen":"spells.castsPerDay > 0"},"spells.castsLeft":{"hidden":true},"spells.pointsUsed":{"groups":["magic"],"priority":1,"showWhen":"spells.points > 0","with":[{"field":"spells.points","as":"max"}]},"spells.points":{"groups":["magic"],"priority":10,"visibility":"background","showWhen":"spells.points > 0"},"spells.pointsLeft":{"hidden":true},"spells.prepared":{"groups":["magic"],"priority":2,"showWhen":"spells.preparedMax > 0","with":[{"field":"spells.preparedMax","as":"max"}]},"spells.preparedMax":{"groups":["magic"],"priority":10,"visibility":"background","showWhen":"spells.preparedMax > 0"},"spells.starting":{"hidden":true},"invoker.education":{"hidden":true},"vowed.skill":{"hidden":true},"wise.skill":{"hidden":true},"wise.path":{"hidden":true},"magic.armoredLevel":{"hidden":true},"magic.hindered":{"groups":["magic"],"priority":9,"showWhen":"magic.hindered"},"duelist.hindered":{"hidden":true},"arts.owed":{"groups":["magic"],"priority":8,"showWhen":"arts.owed > 0"},"attributes.str.score":{"groups":["attributes"],"with":[{"field":"attributes.str.mod","as":"modifier"}]},"attributes.str.mod":{"format":"signed"},"attributes.str.modBonus":{"hidden":true},"attributes.str.modCap":{"hidden":true},"attributes.dex.score":{"groups":["attributes"],"with":[{"field":"attributes.dex.mod","as":"modifier"}]},"attributes.dex.mod":{"format":"signed"},"attributes.dex.modBonus":{"hidden":true},"attributes.dex.modCap":{"hidden":true},"attributes.con.score":{"groups":["attributes"],"with":[{"field":"attributes.con.mod","as":"modifier"}]},"attributes.con.mod":{"format":"signed"},"attributes.con.modBonus":{"hidden":true},"attributes.con.modCap":{"hidden":true},"attributes.int.score":{"groups":["attributes"],"with":[{"field":"attributes.int.mod","as":"modifier"}]},"attributes.int.mod":{"format":"signed"},"attributes.int.modBonus":{"hidden":true},"attributes.int.modCap":{"hidden":true},"attributes.wis.score":{"groups":["attributes"],"with":[{"field":"attributes.wis.mod","as":"modifier"}]},"attributes.wis.mod":{"format":"signed"},"attributes.wis.modBonus":{"hidden":true},"attributes.wis.modCap":{"hidden":true},"attributes.cha.score":{"groups":["attributes"],"with":[{"field":"attributes.cha.mod","as":"modifier"}]},"attributes.cha.mod":{"format":"signed"},"attributes.cha.modBonus":{"hidden":true},"attributes.cha.modCap":{"hidden":true},"skills.administer":{"rolls":[{"action":"skill-check","params":{"skill":"skills.administer","attribute":"int"}}]},"skillCredit.administer":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.administer > 0"},"skills.connect":{"rolls":[{"action":"skill-check","params":{"skill":"skills.connect","attribute":"cha"}}]},"skillCredit.connect":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.connect > 0"},"skills.convince":{"rolls":[{"action":"skill-check","params":{"skill":"skills.convince","attribute":"cha"}}]},"skillCredit.convince":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.convince > 0"},"skills.craft":{"rolls":[{"action":"skill-check","params":{"skill":"skills.craft","attribute":"int"}}]},"skillCredit.craft":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.craft > 0"},"skills.exert":{"rolls":[{"action":"skill-check","params":{"skill":"skills.exert","attribute":"str"}}]},"skillCredit.exert":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.exert > 0"},"skills.heal":{"rolls":[{"action":"skill-check","params":{"skill":"skills.heal","attribute":"int"}}]},"skillCredit.heal":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.heal > 0"},"skills.know":{"rolls":[{"action":"skill-check","params":{"skill":"skills.know","attribute":"int"}}]},"skillCredit.know":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.know > 0"},"skills.lead":{"rolls":[{"action":"skill-check","params":{"skill":"skills.lead","attribute":"cha"}}]},"skillCredit.lead":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.lead > 0"},"skills.magic":{"rolls":[{"action":"skill-check","params":{"skill":"skills.magic","attribute":"int"}}]},"skillCredit.magic":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.magic > 0"},"skills.notice":{"rolls":[{"action":"skill-check","params":{"skill":"skills.notice","attribute":"wis"}}]},"skillCredit.notice":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.notice > 0"},"skills.perform":{"rolls":[{"action":"skill-check","params":{"skill":"skills.perform","attribute":"cha"}}]},"skillCredit.perform":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.perform > 0"},"skills.pray":{"rolls":[{"action":"skill-check","params":{"skill":"skills.pray","attribute":"wis"}}]},"skillCredit.pray":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.pray > 0"},"skills.punch":{"rolls":[{"action":"skill-check","params":{"skill":"skills.punch","attribute":"str"}}]},"skillCredit.punch":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.punch > 0"},"skills.ride":{"rolls":[{"action":"skill-check","params":{"skill":"skills.ride","attribute":"dex"}}]},"skillCredit.ride":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.ride > 0"},"skills.sail":{"rolls":[{"action":"skill-check","params":{"skill":"skills.sail","attribute":"dex"}}]},"skillCredit.sail":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.sail > 0"},"skills.shoot":{"rolls":[{"action":"skill-check","params":{"skill":"skills.shoot","attribute":"dex"}}]},"skillCredit.shoot":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.shoot > 0"},"skills.sneak":{"rolls":[{"action":"skill-check","params":{"skill":"skills.sneak","attribute":"dex"}}]},"skillCredit.sneak":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.sneak > 0"},"skills.stab":{"rolls":[{"action":"skill-check","params":{"skill":"skills.stab","attribute":"str"}}]},"skillCredit.stab":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.stab > 0"},"skills.survive":{"rolls":[{"action":"skill-check","params":{"skill":"skills.survive","attribute":"wis"}}]},"skillCredit.survive":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.survive > 0"},"skills.trade":{"rolls":[{"action":"skill-check","params":{"skill":"skills.trade","attribute":"cha"}}]},"skillCredit.trade":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.trade > 0"},"skills.work":{"rolls":[{"action":"skill-check","params":{"skill":"skills.work","attribute":"int"}}]},"skillCredit.work":{"groups":["advancement"],"priority":7,"visibility":"background","showWhen":"skillCredit.work > 0"},"saves.physical":{"rolls":[{"action":"saving-throw","params":{"save":"saves.physical"}}]},"saves.evasion":{"rolls":[{"action":"saving-throw","params":{"save":"saves.evasion"}}]},"saves.mental":{"rolls":[{"action":"saving-throw","params":{"save":"saves.mental"}}]},"saves.luck":{"rolls":[{"action":"saving-throw","params":{"save":"saves.luck"}}]},"tradition.highmage.skill":{"hidden":true},"tradition.elementalist.skill":{"hidden":true},"tradition.necromancer.skill":{"hidden":true},"tradition.healer.skill":{"hidden":true},"tradition.vowed.skill":{"hidden":true},"tradition.accursed.skill":{"hidden":true},"tradition.bard.skill":{"hidden":true},"tradition.beastmaster.skill":{"hidden":true},"tradition.bloodpriest.skill":{"hidden":true},"tradition.duelist.skill":{"hidden":true},"tradition.mageslayer.skill":{"hidden":true},"tradition.skinshifter.skill":{"hidden":true},"tradition.thoughtnoble.skill":{"hidden":true},"tradition.invoker.skill":{"hidden":true},"tradition.wise.skill":{"hidden":true},"tradition.highmage.tier":{"hidden":true},"tradition.elementalist.tier":{"hidden":true},"tradition.necromancer.tier":{"hidden":true},"tradition.healer.tier":{"hidden":true},"tradition.vowed.tier":{"hidden":true},"tradition.accursed.tier":{"hidden":true},"tradition.bard.tier":{"hidden":true},"tradition.beastmaster.tier":{"hidden":true},"tradition.bloodpriest.tier":{"hidden":true},"tradition.duelist.tier":{"hidden":true},"tradition.mageslayer.tier":{"hidden":true},"tradition.skinshifter.tier":{"hidden":true},"tradition.thoughtnoble.tier":{"hidden":true},"tradition.invoker.tier":{"hidden":true},"tradition.wise.tier":{"hidden":true},"effort.highmage.free":{"groups":["magic"],"priority":3,"showWhen":"effort.highmage.max > 0","with":[{"field":"effort.highmage.max","as":"max"}]},"effort.highmage.max":{"groups":["magic"],"priority":7,"visibility":"background","showWhen":"effort.highmage.max > 0"},"effort.highmage.scene":{"groups":["magic"],"priority":4,"visibility":"background","showWhen":"effort.highmage.max > 0"},"effort.highmage.day":{"groups":["magic"],"priority":5,"visibility":"background","showWhen":"effort.highmage.max > 0"},"effort.highmage.ongoing":{"groups":["magic"],"priority":6,"visibility":"background","showWhen":"effort.highmage.max > 0"},"effort.elementalist.free":{"groups":["magic"],"priority":3,"showWhen":"effort.elementalist.max > 0","with":[{"field":"effort.elementalist.max","as":"max"}]},"effort.elementalist.max":{"groups":["magic"],"priority":7,"visibility":"background","showWhen":"effort.elementalist.max > 0"},"effort.elementalist.scene":{"groups":["magic"],"priority":4,"visibility":"background","showWhen":"effort.elementalist.max > 0"},"effort.elementalist.day":{"groups":["magic"],"priority":5,"visibility":"background","showWhen":"effort.elementalist.max > 0"},"effort.elementalist.ongoing":{"groups":["magic"],"priority":6,"visibility":"background","showWhen":"effort.elementalist.max > 0"},"effort.necromancer.free":{"groups":["magic"],"priority":3,"showWhen":"effort.necromancer.max > 0","with":[{"field":"effort.necromancer.max","as":"max"}]},"effort.necromancer.max":{"groups":["magic"],"priority":7,"visibility":"background","showWhen":"effort.necromancer.max > 0"},"effort.necromancer.scene":{"groups":["magic"],"priority":4,"visibility":"background","showWhen":"effort.necromancer.max > 0"},"effort.necromancer.day":{"groups":["magic"],"priority":5,"visibility":"background","showWhen":"effort.necromancer.max > 0"},"effort.necromancer.ongoing":{"groups":["magic"],"priority":6,"visibility":"background","showWhen":"effort.necromancer.max > 0"},"effort.healer.free":{"groups":["magic"],"priority":3,"showWhen":"effort.healer.max > 0","with":[{"field":"effort.healer.max","as":"max"}]},"effort.healer.max":{"groups":["magic"],"priority":7,"visibility":"background","showWhen":"effort.healer.max > 0"},"effort.healer.scene":{"groups":["magic"],"priority":4,"visibility":"background","showWhen":"effort.healer.max > 0"},"effort.healer.day":{"groups":["magic"],"priority":5,"visibility":"background","showWhen":"effort.healer.max > 0"},"effort.healer.ongoing":{"groups":["magic"],"priority":6,"visibility":"background","showWhen":"effort.healer.max > 0"},"effort.vowed.free":{"groups":["magic"],"priority":3,"showWhen":"effort.vowed.max > 0","with":[{"field":"effort.vowed.max","as":"max"}]},"effort.vowed.max":{"groups":["magic"],"priority":7,"visibility":"background","showWhen":"effort.vowed.max > 0"},"effort.vowed.scene":{"groups":["magic"],"priority":4,"visibility":"background","showWhen":"effort.vowed.max > 0"},"effort.vowed.day":{"groups":["magic"],"priority":5,"visibility":"background","showWhen":"effort.vowed.max > 0"},"effort.vowed.ongoing":{"groups":["magic"],"priority":6,"visibility":"background","showWhen":"effort.vowed.max > 0"},"effort.accursed.free":{"groups":["magic"],"priority":3,"showWhen":"effort.accursed.max > 0","with":[{"field":"effort.accursed.max","as":"max"}]},"effort.accursed.max":{"groups":["magic"],"priority":7,"visibility":"background","showWhen":"effort.accursed.max > 0"},"effort.accursed.scene":{"groups":["magic"],"priority":4,"visibility":"background","showWhen":"effort.accursed.max > 0"},"effort.accursed.day":{"groups":["magic"],"priority":5,"visibility":"background","showWhen":"effort.accursed.max > 0"},"effort.accursed.ongoing":{"groups":["magic"],"priority":6,"visibility":"background","showWhen":"effort.accursed.max > 0"},"effort.bard.free":{"groups":["magic"],"priority":3,"showWhen":"effort.bard.max > 0","with":[{"field":"effort.bard.max","as":"max"}]},"effort.bard.max":{"groups":["magic"],"priority":7,"visibility":"background","showWhen":"effort.bard.max > 0"},"effort.bard.scene":{"groups":["magic"],"priority":4,"visibility":"background","showWhen":"effort.bard.max > 0"},"effort.bard.day":{"groups":["magic"],"priority":5,"visibility":"background","showWhen":"effort.bard.max > 0"},"effort.bard.ongoing":{"groups":["magic"],"priority":6,"visibility":"background","showWhen":"effort.bard.max > 0"},"effort.beastmaster.free":{"groups":["magic"],"priority":3,"showWhen":"effort.beastmaster.max > 0","with":[{"field":"effort.beastmaster.max","as":"max"}]},"effort.beastmaster.max":{"groups":["magic"],"priority":7,"visibility":"background","showWhen":"effort.beastmaster.max > 0"},"effort.beastmaster.scene":{"groups":["magic"],"priority":4,"visibility":"background","showWhen":"effort.beastmaster.max > 0"},"effort.beastmaster.day":{"groups":["magic"],"priority":5,"visibility":"background","showWhen":"effort.beastmaster.max > 0"},"effort.beastmaster.ongoing":{"groups":["magic"],"priority":6,"visibility":"background","showWhen":"effort.beastmaster.max > 0"},"effort.bloodpriest.free":{"groups":["magic"],"priority":3,"showWhen":"effort.bloodpriest.max > 0","with":[{"field":"effort.bloodpriest.max","as":"max"}]},"effort.bloodpriest.max":{"groups":["magic"],"priority":7,"visibility":"background","showWhen":"effort.bloodpriest.max > 0"},"effort.bloodpriest.scene":{"groups":["magic"],"priority":4,"visibility":"background","showWhen":"effort.bloodpriest.max > 0"},"effort.bloodpriest.day":{"groups":["magic"],"priority":5,"visibility":"background","showWhen":"effort.bloodpriest.max > 0"},"effort.bloodpriest.ongoing":{"groups":["magic"],"priority":6,"visibility":"background","showWhen":"effort.bloodpriest.max > 0"},"effort.duelist.free":{"groups":["magic"],"priority":3,"showWhen":"effort.duelist.max > 0","with":[{"field":"effort.duelist.max","as":"max"}]},"effort.duelist.max":{"groups":["magic"],"priority":7,"visibility":"background","showWhen":"effort.duelist.max > 0"},"effort.duelist.scene":{"groups":["magic"],"priority":4,"visibility":"background","showWhen":"effort.duelist.max > 0"},"effort.duelist.day":{"groups":["magic"],"priority":5,"visibility":"background","showWhen":"effort.duelist.max > 0"},"effort.duelist.ongoing":{"groups":["magic"],"priority":6,"visibility":"background","showWhen":"effort.duelist.max > 0"},"effort.mageslayer.free":{"groups":["magic"],"priority":3,"showWhen":"effort.mageslayer.max > 0","with":[{"field":"effort.mageslayer.max","as":"max"}]},"effort.mageslayer.max":{"groups":["magic"],"priority":7,"visibility":"background","showWhen":"effort.mageslayer.max > 0"},"effort.mageslayer.scene":{"groups":["magic"],"priority":4,"visibility":"background","showWhen":"effort.mageslayer.max > 0"},"effort.mageslayer.day":{"groups":["magic"],"priority":5,"visibility":"background","showWhen":"effort.mageslayer.max > 0"},"effort.mageslayer.ongoing":{"groups":["magic"],"priority":6,"visibility":"background","showWhen":"effort.mageslayer.max > 0"},"effort.skinshifter.free":{"groups":["magic"],"priority":3,"showWhen":"effort.skinshifter.max > 0","with":[{"field":"effort.skinshifter.max","as":"max"}]},"effort.skinshifter.max":{"groups":["magic"],"priority":7,"visibility":"background","showWhen":"effort.skinshifter.max > 0"},"effort.skinshifter.scene":{"groups":["magic"],"priority":4,"visibility":"background","showWhen":"effort.skinshifter.max > 0"},"effort.skinshifter.day":{"groups":["magic"],"priority":5,"visibility":"background","showWhen":"effort.skinshifter.max > 0"},"effort.skinshifter.ongoing":{"groups":["magic"],"priority":6,"visibility":"background","showWhen":"effort.skinshifter.max > 0"},"effort.thoughtnoble.free":{"groups":["magic"],"priority":3,"showWhen":"effort.thoughtnoble.max > 0","with":[{"field":"effort.thoughtnoble.max","as":"max"}]},"effort.thoughtnoble.max":{"groups":["magic"],"priority":7,"visibility":"background","showWhen":"effort.thoughtnoble.max > 0"},"effort.thoughtnoble.scene":{"groups":["magic"],"priority":4,"visibility":"background","showWhen":"effort.thoughtnoble.max > 0"},"effort.thoughtnoble.day":{"groups":["magic"],"priority":5,"visibility":"background","showWhen":"effort.thoughtnoble.max > 0"},"effort.thoughtnoble.ongoing":{"groups":["magic"],"priority":6,"visibility":"background","showWhen":"effort.thoughtnoble.max > 0"},"arts.highmage.allowed":{"hidden":true},"arts.highmage.taken":{"hidden":true},"arts.highmage.owed":{"hidden":true},"arts.elementalist.allowed":{"hidden":true},"arts.elementalist.taken":{"hidden":true},"arts.elementalist.owed":{"hidden":true},"arts.necromancer.allowed":{"hidden":true},"arts.necromancer.taken":{"hidden":true},"arts.necromancer.owed":{"hidden":true},"arts.healer.allowed":{"hidden":true},"arts.healer.taken":{"hidden":true},"arts.healer.owed":{"hidden":true},"arts.vowed.allowed":{"hidden":true},"arts.vowed.taken":{"hidden":true},"arts.vowed.owed":{"hidden":true},"arts.accursed.allowed":{"hidden":true},"arts.accursed.taken":{"hidden":true},"arts.accursed.owed":{"hidden":true},"arts.bard.allowed":{"hidden":true},"arts.bard.taken":{"hidden":true},"arts.bard.owed":{"hidden":true},"arts.beastmaster.allowed":{"hidden":true},"arts.beastmaster.taken":{"hidden":true},"arts.beastmaster.owed":{"hidden":true},"arts.bloodpriest.allowed":{"hidden":true},"arts.bloodpriest.taken":{"hidden":true},"arts.bloodpriest.owed":{"hidden":true},"arts.duelist.allowed":{"hidden":true},"arts.duelist.taken":{"hidden":true},"arts.duelist.owed":{"hidden":true},"arts.mageslayer.allowed":{"hidden":true},"arts.mageslayer.taken":{"hidden":true},"arts.mageslayer.owed":{"hidden":true},"arts.skinshifter.allowed":{"hidden":true},"arts.skinshifter.taken":{"hidden":true},"arts.skinshifter.owed":{"hidden":true},"arts.thoughtnoble.allowed":{"hidden":true},"arts.thoughtnoble.taken":{"hidden":true},"arts.thoughtnoble.owed":{"hidden":true},"arts.wise.allowed":{"hidden":true},"arts.wise.taken":{"hidden":true},"arts.wise.owed":{"hidden":true}},"types":{"class":{"quantity":{"hidden":true}},"partial":{"quantity":{"hidden":true}},"background":{"quantity":{"hidden":true}},"focus":{"quantity":{"hidden":true},"state":{"level":{"priority":0}}},"art":{"quantity":{"hidden":true},"state":{"active":{"priority":0,"showWhen":"item.effort == 'ongoing'"}}},"spell":{"quantity":{"hidden":true},"state":{"prepared":{"priority":0,"input":{"widget":"checkbox"}}}},"weapon":{"fields":{"damage":{"format":"dice"},"rangeShort":{"unit":"ft"},"rangeLong":{"unit":"ft"}}}}},"situational":[{"id":"nullified","type":"boolean","default":false,"rolls":["save"],"effects":[{"target":{"rolls":["save"]},"op":"add","value":2}]}],"tags":["attribute","attribute-mod","attr.str","attr.dex","attr.con","attr.int","attr.wis","attr.cha","mod-bonus","mod-cap","skill.administer","skill.connect","skill.convince","skill.craft","skill.exert","skill.heal","skill.know","skill.lead","skill.magic","skill.notice","skill.perform","skill.pray","skill.punch","skill.ride","skill.sail","skill.shoot","skill.sneak","skill.stab","skill.survive","skill.trade","skill.work","save.physical","save.evasion","save.mental","save.luck","tradition-tier","check","initiative","combat","attack.melee","attack.ranged","attack.thrown","attack.unarmed","damage.melee","damage.ranged","damage.thrown","damage.unarmed","shock.melee","shock.unarmed","weapon-die","healing","health","rest","rest.night","rest.scene","spell","art","creation","creation.purse","creation.finish","advancement","advancement.level","unarmed","two-handed","armor-piercing","fixed","long","less-lethal","numerous","precise","reload","subtle","slow-reload","single-shot","throwable","gear-bundle","beast","mage-class","full-mage","noncombat","gm-defined","granted","repeatable","general","divination","curse-blessing"]},"content":[{"id":"armor.buff-coat","type":"armor","fields":{"ac":12,"category":"light","cost":50,"enc":0}},{"id":"armor.cuirass-and-greaves","type":"armor","fields":{"ac":15,"category":"medium","cost":250,"enc":2}},{"id":"armor.grand-plate","type":"armor","fields":{"ac":16,"category":"heavy","cost":2000,"enc":3}},{"id":"armor.great-armor","type":"armor","fields":{"ac":19,"category":"heavy","cost":2000,"enc":3}},{"id":"armor.large-shield","type":"armor","fields":{"ac":14,"category":"shield","cost":10}},{"id":"armor.linothorax","type":"armor","fields":{"ac":13,"category":"light","cost":20}},{"id":"armor.mail-hauberk","type":"armor","fields":{"ac":16,"category":"heavy","cost":750,"enc":2}},{"id":"armor.mail-shirt","type":"armor","fields":{"ac":14,"category":"medium","cost":250}},{"id":"armor.pieced-armor","type":"armor","fields":{"ac":14,"category":"light","cost":100,"enc":2}},{"id":"armor.plate-armor","type":"armor","fields":{"ac":17,"category":"heavy","cost":1000,"enc":2}},{"id":"armor.scaled-armor","type":"armor","fields":{"ac":16,"category":"medium","cost":500,"enc":3}},{"id":"armor.small-shield","type":"armor","fields":{"ac":13,"category":"shield","cost":20}},{"id":"armor.war-robe","type":"armor","fields":{"ac":14,"category":"light","cost":50,"enc":3}},{"id":"armor.war-shirt","type":"armor","fields":{"ac":11,"category":"light","cost":5,"enc":0}},{"id":"arts.accursed.accursed-blade","type":"art","tags":["granted"],"fields":{"tradition":"accursed"}},{"id":"arts.accursed.accursed-bolt","type":"art","tags":["granted"],"fields":{"tradition":"accursed"}},{"id":"arts.accursed.bewitching-distraction","type":"art","fields":{"tradition":"accursed","effort":"day"}},{"id":"arts.accursed.compelling-shriek","type":"art","fields":{"tradition":"accursed","effort":"day"}},{"id":"arts.accursed.devils-bargain","type":"art","fields":{"tradition":"accursed"}},{"id":"arts.accursed.dire-pact","type":"art","fields":{"tradition":"accursed"}},{"id":"arts.accursed.lying-face","type":"art","fields":{"tradition":"accursed","effort":"ongoing"}},{"id":"arts.accursed.night-black-eyes","type":"art","fields":{"tradition":"accursed"}},{"id":"arts.accursed.pacted-protection","type":"art","fields":{"tradition":"accursed"}},{"id":"arts.accursed.rob-vitality","type":"art","fields":{"tradition":"accursed","effort":"scene"}},{"id":"arts.accursed.scourging-curse","type":"art","fields":{"tradition":"accursed","effort":"scene"}},{"id":"arts.accursed.shadowed-steps","type":"art","fields":{"tradition":"accursed","effort":"scene"}},{"id":"arts.accursed.snaring-speech","type":"art","fields":{"tradition":"accursed","effort":"day"}},{"id":"arts.accursed.sorcerous-battery","type":"art","fields":{"tradition":"accursed","effort":"day"}},{"id":"arts.accursed.soul-consumption","type":"art","fields":{"tradition":"accursed","effort":"day"}},{"id":"arts.accursed.tendrils-of-night","type":"art","fields":{"tradition":"accursed","effort":"ongoing"}},{"id":"arts.accursed.unseen-steps","type":"art","fields":{"tradition":"accursed","effort":"day"}},{"id":"arts.accursed.weeping-wounds","type":"art","fields":{"tradition":"accursed","effort":"scene"}},{"id":"arts.accursed.weight-of-sin","type":"art","fields":{"tradition":"accursed","effort":"day"}},{"id":"arts.bard.a-thousand-tongues","type":"art","tags":["granted"],"fields":{"tradition":"bard"}},{"id":"arts.bard.battle-cry","type":"art","fields":{"tradition":"bard","effort":"day"}},{"id":"arts.bard.cursed-tune","type":"art","fields":{"tradition":"bard","effort":"scene"}},{"id":"arts.bard.deft-fingers","type":"art","fields":{"tradition":"bard"},"effects":[{"target":"enc.readiedLimit","op":"add","value":2}]},{"id":"arts.bard.entangle-incantation","type":"art","fields":{"tradition":"bard","effort":"scene"}},{"id":"arts.bard.evoke-emotion","type":"art","fields":{"tradition":"bard","effort":"day"}},{"id":"arts.bard.inspire-dread","type":"art","fields":{"tradition":"bard","effort":"day"}},{"id":"arts.bard.keen-senses","type":"art","fields":{"tradition":"bard"}},{"id":"arts.bard.liberating-song","type":"art","fields":{"tradition":"bard","effort":"scene"}},{"id":"arts.bard.rally","type":"art","fields":{"tradition":"bard","effort":"day"}},{"id":"arts.bard.soothe-the-savage","type":"art","fields":{"tradition":"bard","effort":"day"}},{"id":"arts.bard.soothing-graces","type":"art","fields":{"tradition":"bard"}},{"id":"arts.bard.swift-misdirection","type":"art","fields":{"tradition":"bard","effort":"scene"}},{"id":"arts.beastmaster.beast-ward","type":"art","fields":{"tradition":"beastmaster","effort":"ongoing"}},{"id":"arts.beastmaster.bind-companion","type":"art","tags":["granted"],"fields":{"tradition":"beastmaster"}},{"id":"arts.beastmaster.eyes-of-the-beast","type":"art","fields":{"tradition":"beastmaster","effort":"scene"}},{"id":"arts.beastmaster.feral-toughness","type":"art","fields":{"tradition":"beastmaster"},"effects":[{"target":"ac.innate","op":"atLeast","value":"13 + ceil(level / 2)","when":"armor.wornEnc < 0"},{"target":"hp.max","op":"add","value":"companion.hitDice"}]},{"id":"arts.beastmaster.howl-of-distant-summons","type":"art","fields":{"tradition":"beastmaster","effort":"day"}},{"id":"arts.beastmaster.know-the-weak-spot","type":"art","fields":{"tradition":"beastmaster","effort":"scene"}},{"id":"arts.beastmaster.mind-call","type":"art","fields":{"tradition":"beastmaster","effort":"scene"}},{"id":"arts.beastmaster.natural-weaponry","type":"art","fields":{"tradition":"beastmaster"},"effects":[{"target":"unarmed.die","op":"set","value":"1d8 + [0, 0, 1, 1, 1, 2, 2, 2, 3, 3][level - 1]"},{"target":"unarmed.shock","op":"set","value":"2 + [0, 0, 1, 1, 1, 2, 2, 2, 3, 3][level - 1]"},{"target":"unarmed.shockAc","op":"set","value":13}]},{"id":"arts.beastmaster.savage-senses","type":"art","fields":{"tradition":"beastmaster","effort":"scene"}},{"id":"arts.beastmaster.shared-vitality","type":"art","fields":{"tradition":"beastmaster","effort":"scene"}},{"id":"arts.beastmaster.swift-healing","type":"art","fields":{"tradition":"beastmaster","effort":"day"}},{"id":"arts.beastmaster.tongue-of-the-beasts","type":"art","fields":{"tradition":"beastmaster","effort":"ongoing"}},{"id":"arts.blood-priest.a-thousand-tongues","type":"art","fields":{"tradition":"bloodpriest","effort":"ongoing"}},{"id":"arts.blood-priest.armor-of-god","type":"art","fields":{"tradition":"bloodpriest","effort":"ongoing"},"effects":[{"target":"ac.innate","op":"atLeast","value":"15 + floor(level / 2)","when":"self.active && armor.wornEnc < 0"}]},{"id":"arts.blood-priest.divine-guidance","type":"art","fields":{"tradition":"bloodpriest","effort":"day"}},{"id":"arts.blood-priest.fear-no-flame","type":"art","fields":{"tradition":"bloodpriest","effort":"day"}},{"id":"arts.blood-priest.god-wills-it","type":"art","fields":{"tradition":"bloodpriest","effort":"day"}},{"id":"arts.blood-priest.light-of-faith","type":"art","fields":{"tradition":"bloodpriest","effort":"ongoing"}},{"id":"arts.blood-priest.merciful-healing","type":"art","fields":{"tradition":"bloodpriest","effort":"day"}},{"id":"arts.blood-priest.sanctified-ward","type":"art","fields":{"tradition":"bloodpriest","effort":"ongoing"}},{"id":"arts.blood-priest.smite-the-wicked","type":"art","fields":{"tradition":"bloodpriest","effort":"day"}},{"id":"arts.blood-priest.transubstantiation","type":"art","fields":{"tradition":"bloodpriest","effort":"day"}},{"id":"arts.blood-priest.turn-false-life","type":"art","fields":{"tradition":"bloodpriest","effort":"day"}},{"id":"arts.blood-priest.words-of-mercy","type":"art","fields":{"tradition":"bloodpriest","effort":"day"}},{"id":"arts.blood-priest.wrath-of-the-most-high","type":"art","fields":{"tradition":"bloodpriest","effort":"scene"}},{"id":"arts.duelist.blood-for-blood","type":"art","fields":{"tradition":"duelist","effort":"scene"}},{"id":"arts.duelist.burst-of-speed","type":"art","fields":{"tradition":"duelist","effort":"day"}},{"id":"arts.duelist.code-duello","type":"art","fields":{"tradition":"duelist","effort":"day"}},{"id":"arts.duelist.crushing-superiority","type":"art","fields":{"tradition":"duelist","effort":"scene"}},{"id":"arts.duelist.dauntless-step","type":"art","fields":{"tradition":"duelist","effort":"scene"}},{"id":"arts.duelist.dodge-doom","type":"art","fields":{"tradition":"duelist","effort":"day"}},{"id":"arts.duelist.favored-weapon","type":"art","tags":["granted"],"fields":{"tradition":"duelist"},"choices":[{"id":"weapon","from":{"type":"weapon","where":"item.skill == 'stab' && !('unarmed' in item.tags)"},"activate":false,"recommend":"@weapons.long-sword","effects":[{"target":"duelist.favored","op":"grant","value":{"formula":"pick.id"}}]}]},{"id":"arts.duelist.forced-engagement","type":"art","fields":{"tradition":"duelist","effort":"scene"}},{"id":"arts.duelist.gentlemans-withdrawal","type":"art","fields":{"tradition":"duelist","effort":"scene"}},{"id":"arts.duelist.graceful-leap","type":"art","fields":{"tradition":"duelist","effort":"scene"}},{"id":"arts.duelist.lightning-draw","type":"art","fields":{"tradition":"duelist","effort":"day"}},{"id":"arts.duelist.piercing-strike","type":"art","fields":{"tradition":"duelist","effort":"scene"}},{"id":"arts.duelist.spiritual-weapon","type":"art","fields":{"tradition":"duelist","effort":"ongoing"}},{"id":"arts.duelist.unbindable","type":"art","fields":{"tradition":"duelist","effort":"day"}},{"id":"arts.duelist.unworthy-rabble","type":"art","fields":{"tradition":"duelist","effort":"day"}},{"id":"arts.duelist.whirling-evasion","type":"art","fields":{"tradition":"duelist"},"effects":[{"target":"ac.innate","op":"atLeast","value":"13 + ceil(level / 2)","when":"armor.wornEnc < 0 && !(armor.shield && armor.shieldAc >= 14)"}]},{"id":"arts.elementalist.beckoned-deluge","type":"art","fields":{"tradition":"elementalist","effort":"scene"}},{"id":"arts.elementalist.earthsight","type":"art","fields":{"tradition":"elementalist","effort":"scene"}},{"id":"arts.elementalist.elemental-blast","type":"art","fields":{"tradition":"elementalist","effort":"scene"}},{"id":"arts.elementalist.elemental-resilience","type":"art","tags":["granted"],"fields":{"tradition":"elementalist"}},{"id":"arts.elementalist.elemental-sparks","type":"art","tags":["granted"],"fields":{"tradition":"elementalist"}},{"id":"arts.elementalist.flamesight","type":"art","fields":{"tradition":"elementalist","effort":"ongoing"}},{"id":"arts.elementalist.pavis-of-elements","type":"art","fields":{"tradition":"elementalist","effort":"ongoing"},"effects":[{"target":"ac.cappedBonus","op":"add","value":4,"when":"self.active"}]},{"id":"arts.elementalist.petrifying-stare","type":"art","fields":{"tradition":"elementalist","effort":"day"}},{"id":"arts.elementalist.rune-of-destruction","type":"art","fields":{"tradition":"elementalist","effort":"day"}},{"id":"arts.elementalist.steps-of-air","type":"art","fields":{"tradition":"elementalist","effort":"scene"}},{"id":"arts.elementalist.stunning-shock","type":"art","fields":{"tradition":"elementalist","effort":"day"}},{"id":"arts.elementalist.thermal-shield","type":"art","fields":{"tradition":"elementalist","effort":"scene"}},{"id":"arts.healer.empowered-healer","type":"art","fields":{"tradition":"healer"}},{"id":"arts.healer.facile-healer","type":"art","fields":{"tradition":"healer"}},{"id":"arts.healer.far-healer","type":"art","fields":{"tradition":"healer"}},{"id":"arts.healer.final-repose","type":"art","fields":{"tradition":"healer","effort":"day"}},{"id":"arts.healer.healers-eye","type":"art","fields":{"tradition":"healer","effort":"ongoing"}},{"id":"arts.healer.healers-knife","type":"art","fields":{"tradition":"healer"}},{"id":"arts.healer.healing-touch","type":"art","tags":["granted"],"fields":{"tradition":"healer","effort":"scene"}},{"id":"arts.healer.limb-restoration","type":"art","fields":{"tradition":"healer","effort":"day","minLevel":8},"prerequisites":[{"id":"level","when":"level >= 8"}]},{"id":"arts.healer.purge-ailment","type":"art","fields":{"tradition":"healer","effort":"day"}},{"id":"arts.healer.refined-restoration","type":"art","fields":{"tradition":"healer"}},{"id":"arts.healer.revive-the-fallen","type":"art","fields":{"tradition":"healer","effort":"day","minLevel":8},"prerequisites":[{"id":"level","when":"level >= 8"}]},{"id":"arts.healer.swift-healer","type":"art","fields":{"tradition":"healer"}},{"id":"arts.healer.tireless-vigor","type":"art","fields":{"tradition":"healer","effort":"ongoing"}},{"id":"arts.healer.vital-furnace","type":"art","fields":{"tradition":"healer","effort":"day"}},{"id":"arts.high-mage.arcane-lexicon","type":"art","fields":{"tradition":"highmage","effort":"scene"}},{"id":"arts.high-mage.counter-magic","type":"art","fields":{"tradition":"highmage","effort":"day"}},{"id":"arts.high-mage.empowered-sorcery","type":"art","fields":{"tradition":"highmage","effort":"day"}},{"id":"arts.high-mage.hang-sorcery","type":"art","fields":{"tradition":"highmage","effort":"scene"}},{"id":"arts.high-mage.inexorable-effect","type":"art","fields":{"tradition":"highmage","effort":"day"}},{"id":"arts.high-mage.iron-resolution","type":"art","fields":{"tradition":"highmage","effort":"day"}},{"id":"arts.high-mage.preparatory-countermagic","type":"art","fields":{"tradition":"highmage","effort":"scene"}},{"id":"arts.high-mage.psychic-conversion","type":"art","fields":{"tradition":"highmage"}},{"id":"arts.high-mage.restrained-casting","type":"art","fields":{"tradition":"highmage","effort":"day"}},{"id":"arts.high-mage.retain-sorcery","type":"art","fields":{"tradition":"highmage","effort":"day"}},{"id":"arts.high-mage.sense-magic","type":"art","fields":{"tradition":"highmage","effort":"ongoing"}},{"id":"arts.high-mage.suppress-magic","type":"art","fields":{"tradition":"highmage","effort":"day"}},{"id":"arts.high-mage.swift-casting","type":"art","fields":{"tradition":"highmage","effort":"day"}},{"id":"arts.high-mage.ward-allies","type":"art","fields":{"tradition":"highmage","effort":"day"}},{"id":"arts.high-mage.wizards-grandeur","type":"art","fields":{"tradition":"highmage","effort":"ongoing"}},{"id":"arts.mageslayer.absolute-negation","type":"art","tags":["granted"],"fields":{"tradition":"mageslayer","effort":"day"}},{"id":"arts.mageslayer.antimage","type":"art","tags":["granted"],"fields":{"tradition":"mageslayer"},"grants":[{"item":"foci.nullifier","waivePrerequisites":true}]},{"id":"arts.mageslayer.dispel-enchantment","type":"art","tags":["granted"],"fields":{"tradition":"mageslayer","effort":"day"}},{"id":"arts.mageslayer.disrupt-sorcery","type":"art","tags":["granted"],"fields":{"tradition":"mageslayer","effort":"scene"}},{"id":"arts.mageslayer.immaculate-body","type":"art","tags":["granted"],"fields":{"tradition":"mageslayer"}},{"id":"arts.mageslayer.immaculate-mind","type":"art","tags":["granted"],"fields":{"tradition":"mageslayer"}},{"id":"arts.mageslayer.know-your-prey","type":"art","tags":["granted"],"fields":{"tradition":"mageslayer"},"effects":[{"target":"skills.magic","op":"add","value":1}]},{"id":"arts.mageslayer.magebane","type":"art","tags":["granted"],"fields":{"tradition":"mageslayer"}},{"id":"arts.mageslayer.share-the-pain","type":"art","tags":["granted"],"fields":{"tradition":"mageslayer","effort":"day"}},{"id":"arts.mageslayer.spellshield","type":"art","tags":["granted"],"fields":{"tradition":"mageslayer"}},{"id":"arts.mageslayer.ward-ally","type":"art","tags":["granted"],"fields":{"tradition":"mageslayer","effort":"scene"}},{"id":"arts.mageslayer.witchfinder","type":"art","tags":["granted"],"fields":{"tradition":"mageslayer","effort":"scene"}},{"id":"arts.necromancer.bonetalker","type":"art","fields":{"tradition":"necromancer","effort":"scene"}},{"id":"arts.necromancer.cold-flesh","type":"art","fields":{"tradition":"necromancer"},"effects":[{"target":"ac.innate","op":"atLeast","value":"12 + floor(level / 2)"}]},{"id":"arts.necromancer.consume-life-energy","type":"art","fields":{"tradition":"necromancer"}},{"id":"arts.necromancer.false-death","type":"art","fields":{"tradition":"necromancer","effort":"ongoing"}},{"id":"arts.necromancer.gravesight","type":"art","fields":{"tradition":"necromancer","effort":"ongoing"}},{"id":"arts.necromancer.keeper-of-the-gate","type":"art","fields":{"tradition":"necromancer","effort":"day"}},{"id":"arts.necromancer.life-bridge","type":"art","fields":{"tradition":"necromancer","effort":"day"}},{"id":"arts.necromancer.master-of-bones","type":"art","fields":{"tradition":"necromancer","effort":"scene"}},{"id":"arts.necromancer.red-harvest","type":"art","fields":{"tradition":"necromancer","effort":"day"}},{"id":"arts.necromancer.unaging","type":"art","fields":{"tradition":"necromancer"}},{"id":"arts.necromancer.uncanny-ichor","type":"art","fields":{"tradition":"necromancer"}},{"id":"arts.necromancer.unliving-persistence","type":"art","fields":{"tradition":"necromancer","effort":"day"}},{"id":"arts.skinshifter.change-form","type":"art","tags":["granted"],"fields":{"tradition":"skinshifter","effort":"day"}},{"id":"arts.skinshifter.eyes-of-the-hawk","type":"art","fields":{"tradition":"skinshifter"}},{"id":"arts.skinshifter.feline-leap","type":"art","fields":{"tradition":"skinshifter"}},{"id":"arts.skinshifter.feral-prowess","type":"art","fields":{"tradition":"skinshifter"}},{"id":"arts.skinshifter.intrinsic-armor","type":"art","fields":{"tradition":"skinshifter"}},{"id":"arts.skinshifter.manifest-wings","type":"art","fields":{"tradition":"skinshifter"}},{"id":"arts.skinshifter.monkeys-road","type":"art","fields":{"tradition":"skinshifter"}},{"id":"arts.skinshifter.octopus-embrace","type":"art","fields":{"tradition":"skinshifter"}},{"id":"arts.skinshifter.perfect-mimicry","type":"art","fields":{"tradition":"skinshifter"}},{"id":"arts.skinshifter.pliant-flesh","type":"art","fields":{"tradition":"skinshifter"}},{"id":"arts.skinshifter.savage-talons","type":"art","fields":{"tradition":"skinshifter"}},{"id":"arts.skinshifter.sculptors-beauty","type":"art","fields":{"tradition":"skinshifter"}},{"id":"arts.skinshifter.serpents-kiss","type":"art","fields":{"tradition":"skinshifter","effort":"scene"}},{"id":"arts.skinshifter.warform","type":"art","fields":{"tradition":"skinshifter"}},{"id":"arts.skinshifter.wisdom-of-fin-and-scale","type":"art","fields":{"tradition":"skinshifter"}},{"id":"arts.thought-noble.block-memory","type":"art","fields":{"tradition":"thoughtnoble","effort":"day"}},{"id":"arts.thought-noble.elicitation-of-truth","type":"art","fields":{"tradition":"thoughtnoble","effort":"day","requiresArt":"arts.thought-noble.surface-apprehension"},"prerequisites":[{"id":"surface-apprehension","when":"countCopies(copy.item == item.requiresArt) > 0"}]},{"id":"arts.thought-noble.facile-speech","type":"art","fields":{"tradition":"thoughtnoble","requiresArt":"arts.thought-noble.far-speech"},"prerequisites":[{"id":"far-speech","when":"countCopies(copy.item == item.requiresArt) > 0"}]},{"id":"arts.thought-noble.far-speech","type":"art","fields":{"tradition":"thoughtnoble","effort":"scene"}},{"id":"arts.thought-noble.hypercognition","type":"art","fields":{"tradition":"thoughtnoble","effort":"day"}},{"id":"arts.thought-noble.iconograph","type":"art","fields":{"tradition":"thoughtnoble","effort":"scene"}},{"id":"arts.thought-noble.impress-imperative","type":"art","fields":{"tradition":"thoughtnoble","effort":"day"}},{"id":"arts.thought-noble.mind-light","type":"art","fields":{"tradition":"thoughtnoble"}},{"id":"arts.thought-noble.mind-over-matter","type":"art","fields":{"tradition":"thoughtnoble","effort":"day"}},{"id":"arts.thought-noble.mirror-mask","type":"art","fields":{"tradition":"thoughtnoble","effort":"day"}},{"id":"arts.thought-noble.open-mind","type":"art","tags":["granted"],"fields":{"tradition":"thoughtnoble","effort":"ongoing"}},{"id":"arts.thought-noble.positive-association","type":"art","fields":{"tradition":"thoughtnoble","effort":"day"}},{"id":"arts.thought-noble.read-intent","type":"art","fields":{"tradition":"thoughtnoble","effort":"scene"}},{"id":"arts.thought-noble.surface-apprehension","type":"art","fields":{"tradition":"thoughtnoble","effort":"scene"}},{"id":"arts.thought-noble.thoughts-like-razors","type":"art","fields":{"tradition":"thoughtnoble","effort":"day"}},{"id":"arts.thought-noble.unthinkable-thought","type":"art","fields":{"tradition":"thoughtnoble","effort":"day"}},{"id":"arts.vowed.brutal-counter","type":"art","fields":{"tradition":"vowed","effort":"scene"}},{"id":"arts.vowed.faultless-awareness","type":"art","fields":{"tradition":"vowed"}},{"id":"arts.vowed.hurling-throw","type":"art","fields":{"tradition":"vowed","effort":"scene"}},{"id":"arts.vowed.inward-eye","type":"art","fields":{"tradition":"vowed","effort":"ongoing"}},{"id":"arts.vowed.leap-of-the-heavens","type":"art","fields":{"tradition":"vowed","effort":"scene"}},{"id":"arts.vowed.martial-style","type":"art","tags":["granted"],"fields":{"tradition":"vowed"},"effects":[{"target":"hp.dieBonus","op":"atLeast","value":0},{"target":"attack.punchBase","op":"atLeast","value":"floor(level / 2)"}]},{"id":"arts.vowed.masters-vigor","type":"art","fields":{"tradition":"vowed"}},{"id":"arts.vowed.mob-justice","type":"art","fields":{"tradition":"vowed","effort":"day"}},{"id":"arts.vowed.nimble-ascent","type":"art","fields":{"tradition":"vowed","effort":"scene"}},{"id":"arts.vowed.purified-body","type":"art","fields":{"tradition":"vowed","effort":"day"}},{"id":"arts.vowed.revivifying-breath","type":"art","fields":{"tradition":"vowed","effort":"day"}},{"id":"arts.vowed.shattering-strike","type":"art","fields":{"tradition":"vowed","effort":"day"}},{"id":"arts.vowed.style-weaponry","type":"art","fields":{"tradition":"vowed"}},{"id":"arts.vowed.unarmed-might","type":"art","tags":["granted"],"fields":{"tradition":"vowed"},"effects":[{"target":"unarmed.die","op":"set","value":"[1d6, 1d6, 1d8, 1d8, 1d10, 1d10, 1d10 + 1, 1d10 + 1, 1d10 + 2, 1d10 + 3][level - 1]"},{"target":"unarmed.shock","op":"set","value":"[1, 2, 2, 2, 2, 3, 3, 3, 4, 4][level - 1]"}]},{"id":"arts.vowed.unarmored-defense","type":"art","tags":["granted"],"fields":{"tradition":"vowed"},"effects":[{"target":"ac.innate","op":"atLeast","value":"13 + floor(level / 2)","when":"armor.wornEnc < 0 && !armor.shield"}]},{"id":"arts.vowed.unobtrusive-step","type":"art","fields":{"tradition":"vowed","effort":"day"}},{"id":"arts.wise.auspicious-undertaking","type":"art","tags":["curse-blessing"],"fields":{"tradition":"wise"}},{"id":"arts.wise.compel-truth","type":"art","tags":["divination"],"fields":{"tradition":"wise"}},{"id":"arts.wise.deliver-oracle","type":"art","tags":["divination"],"fields":{"tradition":"wise"}},{"id":"arts.wise.dread-awe","type":"art","tags":["general"],"fields":{"tradition":"wise"}},{"id":"arts.wise.elite-ties","type":"art","tags":["general"],"fields":{"tradition":"wise"}},{"id":"arts.wise.erudite","type":"art","tags":["general"],"fields":{"tradition":"wise"}},{"id":"arts.wise.evil-eye","type":"art","tags":["curse-blessing"],"fields":{"tradition":"wise"}},{"id":"arts.wise.find-object","type":"art","tags":["divination"],"fields":{"tradition":"wise"}},{"id":"arts.wise.folk-friend","type":"art","tags":["general"],"fields":{"tradition":"wise"}},{"id":"arts.wise.healer","type":"art","tags":["general"],"fields":{"tradition":"wise"},"effects":[{"target":{"rolls":["skill.heal"]},"op":"add","value":1}]},{"id":"arts.wise.holy-sanctity","type":"art","tags":["general"],"fields":{"tradition":"wise"}},{"id":"arts.wise.ill-fate","type":"art","tags":["curse-blessing"],"fields":{"tradition":"wise"}},{"id":"arts.wise.luck-blessing","type":"art","tags":["curse-blessing"],"fields":{"tradition":"wise"}},{"id":"arts.wise.personal-impunity","type":"art","tags":["general"],"fields":{"tradition":"wise"}},{"id":"arts.wise.read-omens","type":"art","tags":["divination"],"fields":{"tradition":"wise"}},{"id":"arts.wise.skilled","type":"art","tags":["general","repeatable"],"fields":{"tradition":"wise"}},{"id":"arts.wise.war-curse","type":"art","tags":["curse-blessing"],"fields":{"tradition":"wise"}},{"id":"backgrounds.artisan","type":"background","fields":{"freeSkill":"craft","growth1":"any-stat","growth2":"physical","growth3":"physical","growth4":"mental","growth5":"exert","growth6":"any","learning1":"connect","learning2":"convince","learning3":"craft","learning4":"craft","learning5":"exert","learning6":"know","learning7":"notice","learning8":"trade"}},{"id":"backgrounds.barbarian","type":"background","fields":{"freeSkill":"survive","growth1":"any-stat","growth2":"physical","growth3":"physical","growth4":"mental","growth5":"exert","growth6":"any","learning1":"combat","learning2":"connect","learning3":"exert","learning4":"lead","learning5":"notice","learning6":"punch","learning7":"sneak","learning8":"survive"}},{"id":"classes.adventurer","type":"class","choices":[{"id":"first","unique":"partials","from":{"type":"partial"},"eligible":"!(item.id == @partials.mageslayer && class.mage > 0)\n && !('mage-class' in item.tags && tradition.mageslayer.tier > 0)"},{"id":"second","unique":"partials","from":{"type":"partial"},"eligible":"!(item.id == @partials.mageslayer && class.mage > 0)\n && !('mage-class' in item.tags && tradition.mageslayer.tier > 0)"}]},{"id":"classes.expert","type":"class","effects":[{"target":"class.expert","op":"add","value":2},{"target":"chassis.attackExpert","op":"add","value":1},{"target":"chassis.hitsExpert","op":"add","value":1}]},{"id":"classes.mage","type":"class","tags":["full-mage"],"effects":[{"target":"class.mage","op":"add","value":2}],"choices":[{"id":"tradition","from":{"type":"tradition"}}]},{"id":"classes.warrior","type":"class","effects":[{"target":"class.warrior","op":"add","value":2},{"target":"chassis.attackFull","op":"add","value":1},{"target":"chassis.hitsWarrior","op":"add","value":1},{"target":"damage.killingBlow","op":"add","value":"ceil(level / 2)"}]},{"id":"foci.alert","type":"focus","tags":["combat","noncombat"],"fields":{"bonusSkill":"notice"},"effects":[{"target":{"rolls":["initiative"]},"op":"rollModifier","value":{"kind":"advantage"}}]},{"id":"foci.armored-magic","type":"focus","tags":["combat","noncombat"],"fields":{"requires":"mage"},"effects":[{"target":"magic.armoredLevel","op":"set","value":"self.level"}],"prerequisites":[{"id":"mage","when":"class.mage > 0"}]},{"id":"foci.armsmaster","type":"focus","tags":["combat"],"fields":{"bonusSkill":"stab"},"effects":[{"target":{"rolls":["damage.melee","damage.thrown"]},"op":"add","value":"max(0, skills.stab)","stackKey":"skill-damage"},{"target":{"rolls":["shock.melee"]},"op":"add","value":"max(0, skills.stab)","stackKey":"skill-damage"},{"target":{"rolls":["attack.melee","attack.thrown"]},"op":"add","value":1,"when":"self.level >= 2"},{"target":"shock.ignoresAc","op":"set","value":true,"when":"self.level >= 2"}]},{"id":"foci.artisan","type":"focus","tags":["noncombat"],"fields":{"bonusSkill":"craft"}},{"id":"foci.assassin","type":"focus","tags":["combat"],"fields":{"bonusSkill":"sneak"}},{"id":"foci.authority","type":"focus","tags":["noncombat"],"fields":{"bonusSkill":"lead"}},{"id":"foci.close-combatant","type":"focus","tags":["combat"],"fields":{"bonusSkill":"combat"},"effects":[{"target":"shock.ignoresAc","op":"set","value":true,"when":"self.level >= 2"},{"target":"shock.unarmedIgnoresAc","op":"set","value":true,"when":"self.level >= 2"}]},{"id":"foci.connected","type":"focus","tags":["noncombat"],"fields":{"bonusSkill":"connect"}},{"id":"foci.cultured","type":"focus","tags":["noncombat"],"fields":{"bonusSkill":"connect"}},{"id":"foci.deadeye","type":"focus","tags":["combat"],"fields":{"bonusSkill":"shoot"},"effects":[{"target":{"rolls":["damage.ranged","damage.thrown"]},"op":"add","value":"max(0, skills.shoot)","stackKey":"skill-damage"}]},{"id":"foci.dealmaker","type":"focus","tags":["noncombat"],"fields":{"bonusSkill":"trade"}},{"id":"foci.developed-attribute","type":"focus","tags":["combat","noncombat"],"fields":{"maxLevel":1,"repeatable":true,"requires":"non-mage"},"choices":[{"id":"attribute","from":{"values":["str","dex","con","int","wis","cha"]},"recommend":"sortList(['str', 'dex', 'con', 'int', 'wis', 'cha'], -fieldOf('attributes.{attr}.score', x))[0]","effects":[{"target":{"fields":{"where":"'mod-bonus' in item.tags && ('attr.' + pick.value) in item.tags"}},"op":"add","value":1},{"target":{"fields":{"where":"'mod-cap' in item.tags && ('attr.' + pick.value) in item.tags"}},"op":"atLeast","value":3}]}],"prerequisites":[{"id":"non-mage","when":"class.mage == 0"}]},{"id":"foci.die-hard","type":"focus","tags":["combat"],"effects":[{"target":"hp.max","op":"add","value":"2 * level"}]},{"id":"foci.diplomatic-grace","type":"focus","tags":["noncombat"],"fields":{"bonusSkill":"convince"}},{"id":"foci.gifted-chirurgeon","type":"focus","tags":["noncombat"],"fields":{"bonusSkill":"heal"},"effects":[{"target":{"rolls":["skill.heal"]},"op":"rollModifier","value":{"kind":"poolDice","count":1},"stackKey":"skill-dice"}]},{"id":"foci.henchkeeper","type":"focus","tags":["noncombat"],"fields":{"bonusSkill":"lead"}},{"id":"foci.impervious-defense","type":"focus","tags":["combat"],"effects":[{"target":"ac.innate","op":"atLeast","value":"15 + ceil(level / 2)"}]},{"id":"foci.impostor","type":"focus","tags":["noncombat"],"fields":{"bonusSkill":"perform-sneak"}},{"id":"foci.lucky","type":"focus","tags":["combat","noncombat"],"fields":{"requires":"low-attribute"},"prerequisites":[{"id":"low-attribute","when":"min(attributes.str.score, attributes.dex.score, attributes.con.score, attributes.int.score,\n attributes.wis.score, attributes.cha.score) <= 7"}]},{"id":"foci.nullifier","type":"focus","tags":["noncombat"],"fields":{"requires":"non-mage"},"prerequisites":[{"id":"non-mage","when":"class.mage == 0"}]},{"id":"foci.poisoner","type":"focus","tags":["combat","noncombat"],"fields":{"bonusSkill":"heal"}},{"id":"foci.polymath","type":"focus","tags":["noncombat"],"fields":{"bonusSkill":"any","requires":"expert"},"prerequisites":[{"id":"expert","when":"class.expert > 0"}],"effects":[{"target":"skills.noncombatFloor","op":"atLeast","value":"self.level - 1"}]},{"id":"foci.rider","type":"focus","tags":["noncombat"],"fields":{"bonusSkill":"ride"}},{"id":"foci.shocking-assault","type":"focus","tags":["combat"],"fields":{"bonusSkill":"punch-stab"},"effects":[{"target":"shock.ignoresAc","op":"set","value":true},{"target":"shock.unarmedIgnoresAc","op":"set","value":true},{"target":"shock.bonus","op":"add","value":2,"when":"self.level >= 2"}]},{"id":"foci.snipers-eye","type":"focus","tags":["combat"],"fields":{"bonusSkill":"shoot"}},{"id":"foci.special-origin","type":"focus","tags":["combat","noncombat","gm-defined"],"fields":{"maxLevel":1}},{"id":"foci.specialist","type":"focus","tags":["noncombat"],"fields":{"bonusSkill":"specialist","repeatable":true},"choices":[{"id":"skill","from":{"values":["administer","connect","convince","craft","exert","heal","know","lead","notice","perform","pray","ride","sail","sneak","survive","trade","work"]},"recommend":"'notice'","effects":[{"target":{"rolls":["check"]},"op":"rollModifier","value":{"kind":"poolDice","count":"self.level"},"stackKey":"skill-dice","when":"('skill.' + pick.value) in roll.tags"}]}]},{"id":"foci.spirit-familiar","type":"focus","tags":["noncombat"],"fields":{"maxLevel":5}},{"id":"foci.traditional-education","type":"focus","tags":["noncombat"],"fields":{"maxLevel":1,"requires":"invoker"},"prerequisites":[{"id":"invoker","when":"tradition.invoker.tier > 0"}],"choices":[{"id":"tradition","from":{"values":{"formula":"keysOf('spellTrad')"}},"recommend":"'elementalist'","effects":[{"target":"invoker.education","op":"set","value":"pick.value"}]}]},{"id":"foci.trapmaster","type":"focus","tags":["noncombat"],"fields":{"bonusSkill":"notice"}},{"id":"foci.unarmed-combatant","type":"focus","tags":["combat"],"fields":{"bonusSkill":"punch"},"effects":[{"target":"unarmed.die","op":"set","value":"[1d6, 1d8, 1d10, 1d12, 1d12 + 1][max(0, skills.punch)]","when":"tradition.vowed.tier == 0"},{"target":"unarmed.shock","op":"set","value":"skills.punch","when":"tradition.vowed.tier == 0 && skills.punch >= 1"}]},{"id":"foci.unique-gift","type":"focus","tags":["combat","noncombat","gm-defined"],"fields":{"maxLevel":1}},{"id":"foci.valiant-defender","type":"focus","tags":["combat"],"fields":{"bonusSkill":"punch-stab"}},{"id":"foci.well-met","type":"focus","tags":["noncombat"]},{"id":"foci.whirlwind-assault","type":"focus","tags":["combat"],"fields":{"bonusSkill":"stab"}},{"id":"foci.xenoblooded","type":"focus","tags":["combat","noncombat"],"fields":{"maxLevel":1},"choices":[{"id":"heritage","from":{"options":[{"id":"heat"},{"id":"water"},{"id":"heavy","effects":[{"target":"attributes.str.modBonus","op":"add","value":1},{"target":"attributes.str.modCap","op":"atLeast","value":3},{"target":"attributes.dex.modBonus","op":"add","value":-1}]},{"id":"light","effects":[{"target":"attributes.dex.modBonus","op":"add","value":1},{"target":"attributes.dex.modCap","op":"atLeast","value":3},{"target":"attributes.str.modBonus","op":"add","value":-1}]},{"id":"radiation"}]}}]},{"id":"gear.arrows","type":"gear","fields":{"cost":2,"enc":1}},{"id":"gear.artisans-equipment","type":"gear","tags":["gear-bundle"],"fields":{"cost":50,"enc":5}},{"id":"gear.backpack","type":"gear","fields":{"cost":2,"enc":1,"wornFree":true}},{"id":"gear.battle-horse","type":"gear","tags":["beast"],"fields":{"cost":2000}},{"id":"gear.boots","type":"gear","fields":{"cost":2,"enc":1,"wornFree":true}},{"id":"gear.candle","type":"gear","fields":{"cost":1,"costUnit":"cp"}},{"id":"gear.cart","type":"gear","fields":{"cost":50}},{"id":"gear.common-clothes","type":"gear","fields":{"cost":25,"enc":1,"wornFree":true}},{"id":"gear.cooking-utensils","type":"gear","fields":{"cost":4,"enc":1}},{"id":"gear.criminal-tools","type":"gear","tags":["gear-bundle"],"fields":{"cost":100,"enc":3}},{"id":"gear.crowbar","type":"gear","fields":{"cost":4,"enc":1}},{"id":"gear.draft-horse","type":"gear","tags":["beast"],"fields":{"cost":150}},{"id":"gear.dungeoneering-kit","type":"gear","tags":["gear-bundle"],"fields":{"cost":200,"enc":6}},{"id":"gear.fine-clothes","type":"gear","fields":{"cost":100,"enc":1,"wornFree":true}},{"id":"gear.firewood","type":"gear","fields":{"cost":2,"costUnit":"cp","enc":4}},{"id":"gear.flask","type":"gear","fields":{"cost":3,"enc":1}},{"id":"gear.grappling-hook","type":"gear","fields":{"cost":5,"enc":1}},{"id":"gear.healers-pouch","type":"gear","fields":{"cost":5,"enc":1}},{"id":"gear.hurlant-bolts","type":"gear","fields":{"cost":20,"enc":1}},{"id":"gear.iron-spikes","type":"gear","fields":{"cost":1,"enc":1}},{"id":"gear.lantern","type":"gear","fields":{"cost":10,"enc":1}},{"id":"gear.mirror","type":"gear","fields":{"cost":10}},{"id":"gear.mule","type":"gear","tags":["beast"],"fields":{"cost":30}},{"id":"gear.noble-clothes","type":"gear","fields":{"cost":500,"enc":2,"wornFree":true}},{"id":"gear.noble-courtier-outfit","type":"gear","tags":["gear-bundle"],"fields":{"cost":1000,"enc":2}},{"id":"gear.oil","type":"gear","fields":{"cost":1,"enc":1,"bundle":3}},{"id":"gear.paper","type":"gear","fields":{"cost":1}},{"id":"gear.performers-implements","type":"gear","tags":["gear-bundle"],"fields":{"cost":100,"enc":3}},{"id":"gear.rations","type":"gear","fields":{"cost":5,"enc":4}},{"id":"gear.riding-horse","type":"gear","tags":["beast"],"fields":{"cost":200}},{"id":"gear.rope","type":"gear","fields":{"cost":2,"enc":2}},{"id":"gear.sack","type":"gear","fields":{"cost":1,"enc":1}},{"id":"gear.shovel","type":"gear","fields":{"cost":4,"enc":2}},{"id":"gear.small-tool","type":"gear","fields":{"cost":2,"enc":1}},{"id":"gear.tinder-box","type":"gear","fields":{"cost":1}},{"id":"gear.torch","type":"gear","fields":{"cost":2,"costUnit":"cp","enc":1,"bundle":3}},{"id":"gear.waterskin","type":"gear","fields":{"cost":1,"enc":1}},{"id":"gear.wilderness-travel-gear","type":"gear","tags":["gear-bundle"],"fields":{"cost":100,"enc":5}},{"id":"gear.working-dog","type":"gear","tags":["beast"],"fields":{"cost":20}},{"id":"gear.writing-kit","type":"gear","fields":{"cost":3,"enc":1}},{"id":"partials.accursed","type":"partial","tags":["mage-class"],"effects":[{"target":"class.mage","op":"add","value":1},{"target":"tradition.accursed.tier","op":"add","value":1},{"target":"tradition.accursed.skill","op":"set","value":"'magic'"}],"choices":[{"id":"starting-art","from":{"options":[{"id":"blade","grants":[{"item":"arts.accursed.accursed-blade"}]},{"id":"bolt","grants":[{"item":"arts.accursed.accursed-bolt"}]}]}}]},{"id":"partials.bard","type":"partial","effects":[{"target":"chassis.attackExpert","op":"add","value":1},{"target":"chassis.hitsExpert","op":"add","value":1},{"target":"tradition.bard.tier","op":"add","value":1},{"target":"tradition.bard.skill","op":"set","value":"'perform'"}],"grants":[{"item":"arts.bard.a-thousand-tongues"}]},{"id":"partials.beastmaster","type":"partial","tags":["mage-class"],"effects":[{"target":"class.mage","op":"add","value":1},{"target":"tradition.beastmaster.tier","op":"add","value":1},{"target":"tradition.beastmaster.skill","op":"set","value":"'survive'"}],"grants":[{"item":"arts.beastmaster.bind-companion"}]},{"id":"partials.blood-priest","type":"partial","tags":["mage-class"],"effects":[{"target":"class.mage","op":"add","value":1},{"target":"tradition.bloodpriest.tier","op":"add","value":1},{"target":"tradition.bloodpriest.skill","op":"set","value":"'pray'"}]},{"id":"partials.duelist","type":"partial","tags":["mage-class"],"effects":[{"target":"class.mage","op":"add","value":1},{"target":"chassis.fragile","op":"add","value":1},{"target":"tradition.duelist.tier","op":"add","value":1},{"target":"tradition.duelist.skill","op":"set","value":"'stab'"}],"grants":[{"item":"arts.duelist.favored-weapon"}]},{"id":"partials.expert","type":"partial","effects":[{"target":"class.expert","op":"add","value":1},{"target":"chassis.attackExpert","op":"add","value":1},{"target":"chassis.hitsExpert","op":"add","value":1}]},{"id":"partials.healer","type":"partial","tags":["mage-class"],"effects":[{"target":"class.mage","op":"add","value":1},{"target":"tradition.healer.tier","op":"add","value":1},{"target":"tradition.healer.skill","op":"set","value":"'heal'"}],"grants":[{"item":"arts.healer.healing-touch"}]},{"id":"partials.mage","type":"partial","tags":["mage-class"],"repeatable":true,"effects":[{"target":"class.mage","op":"add","value":1}],"choices":[{"id":"tradition","unique":"partial-traditions","requiresOption":true,"from":{"type":"tradition"}}]},{"id":"partials.mageslayer","type":"partial","effects":[{"target":"chassis.attackWarrior","op":"add","value":1},{"target":"chassis.hitsExpert","op":"add","value":1},{"target":"tradition.mageslayer.tier","op":"add","value":1},{"target":"tradition.mageslayer.skill","op":"set","value":"'magic'"}],"grants":[{"item":"arts.mageslayer.antimage","when":"level >= 1"},{"item":"arts.mageslayer.magebane","when":"level >= 1"},{"item":"arts.mageslayer.witchfinder","when":"level >= 2"},{"item":"arts.mageslayer.spellshield","when":"level >= 2"},{"item":"arts.mageslayer.disrupt-sorcery","when":"level >= 3"},{"item":"arts.mageslayer.know-your-prey","when":"level >= 4"},{"item":"arts.mageslayer.share-the-pain","when":"level >= 5"},{"item":"arts.mageslayer.dispel-enchantment","when":"level >= 6"},{"item":"arts.mageslayer.ward-ally","when":"level >= 7"},{"item":"arts.mageslayer.immaculate-body","when":"level >= 8"},{"item":"arts.mageslayer.immaculate-mind","when":"level >= 9"},{"item":"arts.mageslayer.absolute-negation","when":"level >= 10"}]},{"id":"partials.skinshifter","type":"partial","tags":["mage-class"],"effects":[{"target":"class.mage","op":"add","value":1},{"target":"tradition.skinshifter.tier","op":"add","value":1},{"target":"tradition.skinshifter.skill","op":"set","value":"'survive'"}],"grants":[{"item":"arts.skinshifter.change-form"}]},{"id":"partials.thought-noble","type":"partial","tags":["mage-class"],"effects":[{"target":"class.mage","op":"add","value":1},{"target":"tradition.thoughtnoble.tier","op":"add","value":1},{"target":"tradition.thoughtnoble.skill","op":"set","value":"'notice'"}],"grants":[{"item":"arts.thought-noble.open-mind"}]},{"id":"partials.vowed","type":"partial","tags":["mage-class"],"effects":[{"target":"class.mage","op":"add","value":1},{"target":"tradition.vowed.tier","op":"add","value":1},{"target":"tradition.vowed.skill","op":"set","value":"vowed.skill"}],"grants":[{"item":"arts.vowed.martial-style"},{"item":"arts.vowed.unarmed-might"},{"item":"arts.vowed.unarmored-defense"}],"choices":[{"id":"skill","from":{"values":["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","ride","sail","sneak","survive","trade","work"]},"recommend":"'exert'","effects":[{"target":"vowed.skill","op":"set","value":"pick.value"}]}]},{"id":"partials.warrior","type":"partial","effects":[{"target":"class.warrior","op":"add","value":1},{"target":"chassis.attackWarrior","op":"add","value":1},{"target":"chassis.hitsWarrior","op":"add","value":1}]},{"id":"partials.wise","type":"partial","effects":[{"target":"chassis.hitsExpert","op":"add","value":1},{"target":"tradition.wise.tier","op":"add","value":1},{"target":"tradition.wise.skill","op":"set","value":"wise.skill"}],"choices":[{"id":"skill","from":{"values":["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work"]},"recommend":"'pray'","effects":[{"target":"wise.skill","op":"set","value":"pick.value"}]},{"id":"path","from":{"values":["priest","witch","seer","esoteric"]},"recommend":"'priest'","effects":[{"target":"wise.path","op":"set","value":"pick.value"}]}]},{"id":"spells.elementalist.aqueous-harmony","type":"spell","fields":{"level":1,"list":"elementalist"}},{"id":"spells.elementalist.boreal-wings","type":"spell","fields":{"level":2,"list":"elementalist"}},{"id":"spells.elementalist.burrower-below","type":"spell","fields":{"level":2,"list":"elementalist"}},{"id":"spells.elementalist.calcifying-scourge","type":"spell","fields":{"level":4,"list":"elementalist"}},{"id":"spells.elementalist.elemental-favor","type":"spell","fields":{"level":1,"list":"elementalist"}},{"id":"spells.elementalist.elemental-guardian","type":"spell","fields":{"level":4,"list":"elementalist"}},{"id":"spells.elementalist.elemental-spy","type":"spell","fields":{"level":1,"list":"elementalist"}},{"id":"spells.elementalist.elemental-vallation","type":"spell","fields":{"level":3,"list":"elementalist"}},{"id":"spells.elementalist.flame-scrying","type":"spell","fields":{"level":1,"list":"elementalist"}},{"id":"spells.elementalist.flame-without-end","type":"spell","fields":{"level":2,"list":"elementalist"}},{"id":"spells.elementalist.fury-of-the-elements","type":"spell","fields":{"level":5,"list":"elementalist"}},{"id":"spells.elementalist.like-the-stones","type":"spell","fields":{"level":3,"list":"elementalist"}},{"id":"spells.elementalist.pact-of-stone-and-sea","type":"spell","fields":{"level":2,"list":"elementalist"}},{"id":"spells.elementalist.tremors-of-the-depths","type":"spell","fields":{"level":5,"list":"elementalist"}},{"id":"spells.elementalist.wind-walking","type":"spell","fields":{"level":3,"list":"elementalist"}},{"id":"spells.high.abdication-of-temporal-presence","type":"spell","fields":{"level":5,"list":"high"}},{"id":"spells.high.adopt-the-simulacular-visage","type":"spell","fields":{"level":3,"list":"high"}},{"id":"spells.high.apprehending-the-arcane-form","type":"spell","fields":{"level":1,"list":"high"}},{"id":"spells.high.banishment-to-the-black-glass-labyrinth","type":"spell","fields":{"level":5,"list":"high"}},{"id":"spells.high.calculation-of-the-evoked-servitor","type":"spell","fields":{"level":2,"list":"high"}},{"id":"spells.high.calculation-of-the-phantasmal-eidolon","type":"spell","fields":{"level":4,"list":"high"}},{"id":"spells.high.casting-forth-the-inner-eye","type":"spell","fields":{"level":2,"list":"high"}},{"id":"spells.high.cognitive-supersession-of-the-inferior-orders","type":"spell","fields":{"level":1,"list":"high"}},{"id":"spells.high.conjunct-the-vital-viscera","type":"spell","fields":{"level":3,"list":"high"}},{"id":"spells.high.conjunction-of-the-inexorable-step","type":"spell","fields":{"level":2,"list":"high"}},{"id":"spells.high.contingent-excision-of-arcana","type":"spell","fields":{"level":4,"list":"high"}},{"id":"spells.high.coruscating-coffin","type":"spell","fields":{"level":1,"list":"high"}},{"id":"spells.high.damnation-of-the-sense","type":"spell","fields":{"level":1,"list":"high"}},{"id":"spells.high.dazzling-prismatic-hemicycle","type":"spell","fields":{"level":5,"list":"high"}},{"id":"spells.high.decree-of-ligneous-dissolution","type":"spell","fields":{"level":1,"list":"high"}},{"id":"spells.high.decree-of-lithic-dissolution","type":"spell","fields":{"level":2,"list":"high"}},{"id":"spells.high.deluge-of-hell","type":"spell","fields":{"level":5,"list":"high"}},{"id":"spells.high.disjunctive-temporal-reversion","type":"spell","fields":{"level":4,"list":"high"}},{"id":"spells.high.earth-as-clay","type":"spell","fields":{"level":5,"list":"high"}},{"id":"spells.high.evert-the-inwardness","type":"spell","fields":{"level":4,"list":"high"}},{"id":"spells.high.excellent-transpicuous-transformation","type":"spell","fields":{"level":1,"list":"high"}},{"id":"spells.high.exhalation-of-congelating-cold","type":"spell","fields":{"level":3,"list":"high"}},{"id":"spells.high.extirpate-arcana","type":"spell","fields":{"level":2,"list":"high"}},{"id":"spells.high.foresightful-apprehension","type":"spell","fields":{"level":3,"list":"high"}},{"id":"spells.high.glass-chimes-of-the-bamboo-terrace","type":"spell","fields":{"level":3,"list":"high"}},{"id":"spells.high.grinding-geas","type":"spell","fields":{"level":4,"list":"high"}},{"id":"spells.high.howl-of-light","type":"spell","fields":{"level":3,"list":"high"}},{"id":"spells.high.imperceptible-cerebral-divulgence","type":"spell","fields":{"level":1,"list":"high"}},{"id":"spells.high.ineluctable-shackles-of-volition","type":"spell","fields":{"level":1,"list":"high"}},{"id":"spells.high.inexorable-imputation","type":"spell","fields":{"level":2,"list":"high"}},{"id":"spells.high.invocation-of-the-invincible-citadel","type":"spell","fields":{"level":5,"list":"high"}},{"id":"spells.high.jade-palanquin-of-the-faceless-god","type":"spell","fields":{"level":2,"list":"high"}},{"id":"spells.high.long-amber-moment","type":"spell","fields":{"level":1,"list":"high"}},{"id":"spells.high.mantle-of-disjecting-dissection","type":"spell","fields":{"level":2,"list":"high"}},{"id":"spells.high.obnubilation-of-the-will","type":"spell","fields":{"level":4,"list":"high"}},{"id":"spells.high.ochre-sigil-of-juxtaposition","type":"spell","fields":{"level":4,"list":"high"}},{"id":"spells.high.open-the-high-road","type":"spell","fields":{"level":5,"list":"high"}},{"id":"spells.high.phantasmal-mimesis","type":"spell","fields":{"level":1,"list":"high"}},{"id":"spells.high.phobic-storm","type":"spell","fields":{"level":3,"list":"high"}},{"id":"spells.high.pierce-the-pallid-gate","type":"spell","fields":{"level":4,"list":"high"}},{"id":"spells.high.prudentially-transient-abnegation-of-life","type":"spell","fields":{"level":2,"list":"high"}},{"id":"spells.high.resounding-temporal-echo","type":"spell","fields":{"level":2,"list":"high"}},{"id":"spells.high.scorn-the-fetters-of-earth","type":"spell","fields":{"level":3,"list":"high"}},{"id":"spells.high.sigil-of-aeolian-auctoritas","type":"spell","fields":{"level":4,"list":"high"}},{"id":"spells.high.torment-of-tumefaction","type":"spell","fields":{"level":3,"list":"high"}},{"id":"spells.high.touch-of-elucidating-intangibility","type":"spell","fields":{"level":3,"list":"high"}},{"id":"spells.high.vallation-of-specified-exclusion","type":"spell","fields":{"level":3,"list":"high"}},{"id":"spells.high.velocitous-imbuement","type":"spell","fields":{"level":1,"list":"high"}},{"id":"spells.high.verdant-vallation","type":"spell","fields":{"level":2,"list":"high"}},{"id":"spells.high.visitation-of-the-clement-clime","type":"spell","fields":{"level":2,"list":"high"}},{"id":"spells.high.wardpact-invocation","type":"spell","fields":{"level":1,"list":"high"}},{"id":"spells.high.wind-of-the-final-repose","type":"spell","fields":{"level":1,"list":"high"}},{"id":"spells.necromancer.augment-mortal-vitality","type":"spell","fields":{"level":2,"list":"necromancer"}},{"id":"spells.necromancer.boneshaper","type":"spell","fields":{"level":4,"list":"necromancer"}},{"id":"spells.necromancer.call-of-the-tomb","type":"spell","fields":{"level":5,"list":"necromancer"}},{"id":"spells.necromancer.command-the-dead","type":"spell","fields":{"level":1,"list":"necromancer"}},{"id":"spells.necromancer.compel-flesh","type":"spell","fields":{"level":3,"list":"necromancer"}},{"id":"spells.necromancer.enfeebling-wave","type":"spell","fields":{"level":2,"list":"necromancer"}},{"id":"spells.necromancer.everlasting","type":"spell","fields":{"level":5,"list":"necromancer"}},{"id":"spells.necromancer.festering-curse","type":"spell","fields":{"level":3,"list":"necromancer"}},{"id":"spells.necromancer.final-death","type":"spell","fields":{"level":2,"list":"necromancer"}},{"id":"spells.necromancer.forgetting-the-grave","type":"spell","fields":{"level":3,"list":"necromancer"}},{"id":"spells.necromancer.merge-souls","type":"spell","fields":{"level":3,"list":"necromancer"}},{"id":"spells.necromancer.query-the-skull","type":"spell","fields":{"level":1,"list":"necromancer"}},{"id":"spells.necromancer.raise-corpse","type":"spell","fields":{"level":2,"list":"necromancer"}},{"id":"spells.necromancer.raise-grave-knight","type":"spell","fields":{"level":4,"list":"necromancer"}},{"id":"spells.necromancer.smite-the-dead","type":"spell","fields":{"level":1,"list":"necromancer"}},{"id":"spells.necromancer.terrible-liveliness","type":"spell","fields":{"level":1,"list":"necromancer"}},{"id":"traditions.elementalist","type":"tradition","fields":{"key":"elementalist"},"prerequisites":[{"id":"no-invoker","when":"tradition.invoker.tier == 0"}],"effects":[{"target":"tradition.elementalist.skill","op":"set","value":"'magic'"}]},{"id":"traditions.high-mage","type":"tradition","fields":{"key":"highmage"},"prerequisites":[{"id":"no-invoker","when":"tradition.invoker.tier == 0"}],"effects":[{"target":"tradition.highmage.skill","op":"set","value":"'magic'"}]},{"id":"traditions.invoker","type":"tradition","fields":{"key":"invoker"},"prerequisites":[{"id":"no-other-caster","when":"tradition.highmage.tier + tradition.elementalist.tier + tradition.necromancer.tier == 0"}],"effects":[{"target":"tradition.invoker.skill","op":"set","value":"'magic'"}]},{"id":"traditions.necromancer","type":"tradition","fields":{"key":"necromancer"},"prerequisites":[{"id":"no-invoker","when":"tradition.invoker.tier == 0"}],"effects":[{"target":"tradition.necromancer.skill","op":"set","value":"'magic'"}]},{"id":"weapons.blackjack","type":"weapon","tags":["subtle","less-lethal"],"fields":{"damage":"1d4","attribute":"str-dex","skill":"stab","cost":1}},{"id":"weapons.claw-blades","type":"weapon","tags":["subtle"],"fields":{"damage":"1d6","shock":2,"shockAc":13,"attribute":"str-dex","skill":"stab","cost":10}},{"id":"weapons.club","type":"weapon","tags":["throwable","less-lethal"],"fields":{"damage":"1d4","attribute":"str-dex","skill":"stab","rangeShort":10,"rangeLong":30,"cost":0}},{"id":"weapons.crossbow","type":"weapon","tags":["two-handed","slow-reload","precise"],"fields":{"damage":"1d10","attribute":"dex","skill":"shoot","rangeShort":100,"rangeLong":300,"cost":10}},{"id":"weapons.dagger","type":"weapon","tags":["subtle","throwable","precise"],"fields":{"damage":"1d4","shock":1,"shockAc":15,"attribute":"str-dex","skill":"stab","rangeShort":30,"rangeLong":60,"cost":3}},{"id":"weapons.great-club","type":"weapon","tags":["two-handed"],"fields":{"damage":"1d10","shock":2,"shockAc":15,"attribute":"str","skill":"stab","cost":1,"enc":2}},{"id":"weapons.great-hammer","type":"weapon","tags":["two-handed"],"fields":{"damage":"1d10","shock":2,"shockAc":18,"attribute":"str","skill":"stab","cost":50,"enc":2}},{"id":"weapons.great-hurlant","type":"weapon","tags":["fixed","single-shot","armor-piercing"],"fields":{"damage":"3d10","attribute":"dex","skill":"shoot","rangeShort":600,"rangeLong":2400,"cost":10000,"enc":15}},{"id":"weapons.great-sword","type":"weapon","tags":["two-handed"],"fields":{"damage":"1d12","shock":2,"shockAc":15,"attribute":"str","skill":"stab","cost":250,"enc":2}},{"id":"weapons.halberd","type":"weapon","tags":["two-handed","long"],"fields":{"damage":"1d10","shock":2,"shockAc":15,"attribute":"str","skill":"stab","cost":50,"enc":2}},{"id":"weapons.hand-axe","type":"weapon","tags":["throwable"],"fields":{"damage":"1d6","shock":1,"shockAc":15,"attribute":"str-dex","skill":"stab","rangeShort":10,"rangeLong":30,"cost":10}},{"id":"weapons.hand-hurlant","type":"weapon","tags":["single-shot","armor-piercing"],"fields":{"damage":"1d12","attribute":"dex","skill":"shoot","rangeShort":30,"rangeLong":60,"cost":1000}},{"id":"weapons.heavy-spear","type":"weapon","tags":["two-handed"],"fields":{"damage":"1d10","shock":2,"shockAc":15,"attribute":"str","skill":"stab","cost":10,"enc":2}},{"id":"weapons.large-bow","type":"weapon","tags":["two-handed","reload","precise"],"fields":{"damage":"1d8","attribute":"dex","skill":"shoot","rangeShort":100,"rangeLong":600,"cost":20,"enc":2}},{"id":"weapons.large-shield-bash","type":"weapon","tags":["less-lethal"],"fields":{"damage":"1d6","shock":1,"shockAc":13,"attribute":"str","skill":"stab","cost":0,"enc":0}},{"id":"weapons.light-spear","type":"weapon","tags":["throwable"],"fields":{"damage":"1d6","shock":2,"shockAc":13,"attribute":"str-dex","skill":"stab","rangeShort":30,"rangeLong":60,"cost":5}},{"id":"weapons.long-hurlant","type":"weapon","tags":["two-handed","single-shot","armor-piercing","precise"],"fields":{"damage":"2d8","attribute":"dex","skill":"shoot","rangeShort":200,"rangeLong":600,"cost":4000,"enc":2}},{"id":"weapons.long-sword","type":"weapon","fields":{"damage":"1d8","shock":2,"shockAc":13,"attribute":"str-dex","skill":"stab","cost":100}},{"id":"weapons.mace","type":"weapon","tags":["less-lethal"],"fields":{"damage":"1d6","shock":1,"shockAc":18,"attribute":"str","skill":"stab","cost":15}},{"id":"weapons.pike","type":"weapon","tags":["two-handed","long"],"fields":{"damage":"1d8","shock":1,"shockAc":18,"attribute":"str","skill":"stab","cost":10,"enc":2}},{"id":"weapons.short-sword","type":"weapon","fields":{"damage":"1d6","shock":2,"shockAc":15,"attribute":"str-dex","skill":"stab","cost":10}},{"id":"weapons.small-bow","type":"weapon","tags":["two-handed","reload","precise"],"fields":{"damage":"1d6","attribute":"dex","skill":"shoot","rangeShort":50,"rangeLong":300,"cost":20}},{"id":"weapons.small-shield-bash","type":"weapon","tags":["less-lethal"],"fields":{"damage":"1d4","attribute":"str-dex","skill":"stab","cost":0,"enc":0}},{"id":"weapons.staff","type":"weapon","tags":["two-handed","less-lethal"],"fields":{"damage":"1d6","shock":1,"shockAc":13,"attribute":"str-dex","skill":"stab","cost":1}},{"id":"weapons.stiletto","type":"weapon","tags":["subtle","precise"],"fields":{"damage":"1d4","shock":1,"shockAc":18,"attribute":"dex","skill":"stab","cost":10}},{"id":"weapons.throwing-blade","type":"weapon","tags":["subtle","throwable","numerous"],"fields":{"damage":"1d4","attribute":"dex","skill":"shoot","rangeShort":30,"rangeLong":60,"cost":3,"bundle":5}},{"id":"weapons.unarmed","type":"weapon","tags":["unarmed","less-lethal"],"fields":{"damage":"1d2","attribute":"str-dex","skill":"punch","cost":0,"enc":0}},{"id":"weapons.war-axe","type":"weapon","tags":["two-handed"],"fields":{"damage":"1d10","shock":3,"shockAc":15,"attribute":"str","skill":"stab","cost":50,"enc":2}},{"id":"weapons.war-hammer","type":"weapon","fields":{"damage":"1d8","shock":1,"shockAc":18,"attribute":"str","skill":"stab","cost":30}}],"upgrades":[{"pack":"wwn-srd","from":"0.1.0","to":"0.2.0","steps":[{"op":"renameOption","owner":"classes.mage","choice":"tradition","from":"high-mage","to":"traditions.high-mage"},{"op":"renameOption","owner":"classes.mage","choice":"tradition","from":"elementalist","to":"traditions.elementalist"},{"op":"renameOption","owner":"classes.mage","choice":"tradition","from":"necromancer","to":"traditions.necromancer"},{"op":"renameOption","owner":"classes.mage","choice":"tradition","from":"invoker","to":"traditions.invoker"},{"op":"renameOption","owner":"partials.mage","choice":"tradition","from":"high-mage","to":"traditions.high-mage"},{"op":"renameOption","owner":"partials.mage","choice":"tradition","from":"elementalist","to":"traditions.elementalist"},{"op":"renameOption","owner":"partials.mage","choice":"tradition","from":"necromancer","to":"traditions.necromancer"},{"op":"renameOption","owner":"partials.mage","choice":"tradition","from":"invoker","to":"traditions.invoker"}]}],"formulas":{"!('granted' in item.tags)":{"text":"!('granted' in item.tags)","tree":{"type":"unary","op":"!","operand":{"type":"binary","op":"in","left":{"type":"string","value":"granted"},"right":{"type":"name","path":["item","tags"]}}}},"!(item.id == @partials.mageslayer && class.mage > 0)\n && !('mage-class' in item.tags && tradition.mageslayer.tier > 0)":{"text":"!(item.id == @partials.mageslayer && class.mage > 0) && !('mage-class' in item.tags && tradition.mageslayer.tier > 0)","tree":{"type":"binary","op":"&&","left":{"type":"unary","op":"!","operand":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["item","id"]},"right":{"type":"ref","id":"partials.mageslayer"}},"right":{"type":"binary","op":">","left":{"type":"name","path":["class","mage"]},"right":{"type":"int","value":0}}}},"right":{"type":"unary","op":"!","operand":{"type":"binary","op":"&&","left":{"type":"binary","op":"in","left":{"type":"string","value":"mage-class"},"right":{"type":"name","path":["item","tags"]}},"right":{"type":"binary","op":">","left":{"type":"name","path":["tradition","mageslayer","tier"]},"right":{"type":"int","value":0}}}}}},"!(item.id in [@weapons.unarmed, @weapons.large-shield-bash,\n @weapons.small-shield-bash])\n && (item.costUnit == 'cp' ? ceil(item.cost / 10) : item.cost) <= coins.silver":{"text":"!(item.id in [@weapons.unarmed, @weapons.large-shield-bash, @weapons.small-shield-bash]) && (item.costUnit == 'cp' ? ceil(item.cost / 10) : item.cost) <= coins.silver","tree":{"type":"binary","op":"&&","left":{"type":"unary","op":"!","operand":{"type":"binary","op":"in","left":{"type":"name","path":["item","id"]},"right":{"type":"list","items":[{"type":"ref","id":"weapons.unarmed"},{"type":"ref","id":"weapons.large-shield-bash"},{"type":"ref","id":"weapons.small-shield-bash"}]}}},"right":{"type":"binary","op":"<=","left":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["item","costUnit"]},"right":{"type":"string","value":"cp"}},"then":{"type":"call","fn":"ceil","args":[{"type":"binary","op":"/","left":{"type":"name","path":["item","cost"]},"right":{"type":"int","value":10}}]},"else":{"type":"name","path":["item","cost"]}},"right":{"type":"name","path":["coins","silver"]}}}},"!(params.entry in ['any-stat', 'physical', 'mental'])":{"text":"!(params.entry in ['any-stat', 'physical', 'mental'])","tree":{"type":"unary","op":"!","operand":{"type":"binary","op":"in","left":{"type":"name","path":["params","entry"]},"right":{"type":"list","items":[{"type":"string","value":"any-stat"},{"type":"string","value":"physical"},{"type":"string","value":"mental"}]}}}},"!armor.shield ? ac.base : ac.base >= armor.shieldAc ? ac.base + 1 : armor.shieldAc":{"text":"!armor.shield ? ac.base : ac.base >= armor.shieldAc ? ac.base + 1 : armor.shieldAc","tree":{"type":"conditional","test":{"type":"unary","op":"!","operand":{"type":"name","path":["armor","shield"]}},"then":{"type":"name","path":["ac","base"]},"else":{"type":"conditional","test":{"type":"binary","op":">=","left":{"type":"name","path":["ac","base"]},"right":{"type":"name","path":["armor","shieldAc"]}},"then":{"type":"binary","op":"+","left":{"type":"name","path":["ac","base"]},"right":{"type":"int","value":1}},"else":{"type":"name","path":["armor","shieldAc"]}}}},"!character.creating && level < 10 && xp.levelUp":{"text":"!character.creating && level < 10 && xp.levelUp","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"unary","op":"!","operand":{"type":"name","path":["character","creating"]}},"right":{"type":"binary","op":"<","left":{"type":"name","path":["level"]},"right":{"type":"int","value":10}}},"right":{"type":"name","path":["xp","levelUp"]}}},"!character.creating && skillPoints.unspent + skillPoints.expert > 0":{"text":"!character.creating && skillPoints.unspent + skillPoints.expert > 0","tree":{"type":"binary","op":"&&","left":{"type":"unary","op":"!","operand":{"type":"name","path":["character","creating"]}},"right":{"type":"binary","op":">","left":{"type":"binary","op":"+","left":{"type":"name","path":["skillPoints","unspent"]},"right":{"type":"name","path":["skillPoints","expert"]}},"right":{"type":"int","value":0}}}},"!character.creating && xp.levelUp":{"text":"!character.creating && xp.levelUp","tree":{"type":"binary","op":"&&","left":{"type":"unary","op":"!","operand":{"type":"name","path":["character","creating"]}},"right":{"type":"name","path":["xp","levelUp"]}}},"!character.creating || countCopies(copy.type == 'class') > 0":{"text":"!character.creating || countCopies(copy.type == 'class') > 0","tree":{"type":"binary","op":"||","left":{"type":"unary","op":"!","operand":{"type":"name","path":["character","creating"]}},"right":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"class"}}]},"right":{"type":"int","value":0}}}},"!character.creating || maxFields(f.value, 'skill' in f.tags) <= 1":{"text":"!character.creating || maxFields(f.value, 'skill' in f.tags) <= 1","tree":{"type":"binary","op":"||","left":{"type":"unary","op":"!","operand":{"type":"name","path":["character","creating"]}},"right":{"type":"binary","op":"<=","left":{"type":"call","fn":"maxFields","args":[{"type":"name","path":["f","value"]},{"type":"binary","op":"in","left":{"type":"string","value":"skill"},"right":{"type":"name","path":["f","tags"]}}]},"right":{"type":"int","value":1}}}},"!conditions.frail":{"text":"!conditions.frail","tree":{"type":"unary","op":"!","operand":{"type":"name","path":["conditions","frail"]}}},"!conditions.frail && strain.current > 0":{"text":"!conditions.frail && strain.current > 0","tree":{"type":"binary","op":"&&","left":{"type":"unary","op":"!","operand":{"type":"name","path":["conditions","frail"]}},"right":{"type":"binary","op":">","left":{"type":"name","path":["strain","current"]},"right":{"type":"int","value":0}}}},"!flags.attribute":{"text":"!flags.attribute","tree":{"type":"unary","op":"!","operand":{"type":"name","path":["flags","attribute"]}}},"!flags.direct":{"text":"!flags.direct","tree":{"type":"unary","op":"!","operand":{"type":"name","path":["flags","direct"]}}},"!flags.raise":{"text":"!flags.raise","tree":{"type":"unary","op":"!","operand":{"type":"name","path":["flags","raise"]}}},"!flags.raise && steps.focus.item.bonusSkill != 'none'":{"text":"!flags.raise && steps.focus.item.bonusSkill != 'none'","tree":{"type":"binary","op":"&&","left":{"type":"unary","op":"!","operand":{"type":"name","path":["flags","raise"]}},"right":{"type":"binary","op":"!=","left":{"type":"name","path":["steps","focus","item","bonusSkill"]},"right":{"type":"string","value":"none"}}}},"!item.repeatable":{"text":"!item.repeatable","tree":{"type":"unary","op":"!","operand":{"type":"name","path":["item","repeatable"]}}},"!params.random":{"text":"!params.random","tree":{"type":"unary","op":"!","operand":{"type":"name","path":["params","random"]}}},"!params.random && steps.skills.picked == 'pick'":{"text":"!params.random && steps.skills.picked == 'pick'","tree":{"type":"binary","op":"&&","left":{"type":"unary","op":"!","operand":{"type":"name","path":["params","random"]}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["steps","skills","picked"]},"right":{"type":"string","value":"pick"}}}},"''":{"text":"''","tree":{"type":"string","value":""}},"'advanced'":{"text":"'advanced'","tree":{"type":"string","value":"advanced"}},"'advancement' in item.tags":{"text":"'advancement' in item.tags","tree":{"type":"binary","op":"in","left":{"type":"string","value":"advancement"},"right":{"type":"name","path":["item","tags"]}}},"'any'":{"text":"'any'","tree":{"type":"string","value":"any"}},"'attack' in item.tags || 'combat' in item.tags":{"text":"'attack' in item.tags || 'combat' in item.tags","tree":{"type":"binary","op":"||","left":{"type":"binary","op":"in","left":{"type":"string","value":"attack"},"right":{"type":"name","path":["item","tags"]}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"combat"},"right":{"type":"name","path":["item","tags"]}}}},"'attack.' + flags.mode":{"text":"'attack.' + flags.mode","tree":{"type":"binary","op":"+","left":{"type":"string","value":"attack."},"right":{"type":"name","path":["flags","mode"]}}},"'attribute' in item.tags":{"text":"'attribute' in item.tags","tree":{"type":"binary","op":"in","left":{"type":"string","value":"attribute"},"right":{"type":"name","path":["item","tags"]}}},"'attributes.' + flags.attribute + '.mod'":{"text":"'attributes.' + flags.attribute + '.mod'","tree":{"type":"binary","op":"+","left":{"type":"binary","op":"+","left":{"type":"string","value":"attributes."},"right":{"type":"name","path":["flags","attribute"]}},"right":{"type":"string","value":".mod"}}},"'attributes.' + params.attribute + '.mod'":{"text":"'attributes.' + params.attribute + '.mod'","tree":{"type":"binary","op":"+","left":{"type":"binary","op":"+","left":{"type":"string","value":"attributes."},"right":{"type":"name","path":["params","attribute"]}},"right":{"type":"string","value":".mod"}}},"'attributes.' + picked.id + '.score'":{"text":"'attributes.' + picked.id + '.score'","tree":{"type":"binary","op":"+","left":{"type":"binary","op":"+","left":{"type":"string","value":"attributes."},"right":{"type":"name","path":["picked","id"]}},"right":{"type":"string","value":".score"}}},"'attributes.' + steps.pick.picked + '.score'":{"text":"'attributes.' + steps.pick.picked + '.score'","tree":{"type":"binary","op":"+","left":{"type":"binary","op":"+","left":{"type":"string","value":"attributes."},"right":{"type":"name","path":["steps","pick","picked"]}},"right":{"type":"string","value":".score"}}},"'attributes.con.mod'":{"text":"'attributes.con.mod'","tree":{"type":"string","value":"attributes.con.mod"}},"'attributes.dex.mod'":{"text":"'attributes.dex.mod'","tree":{"type":"string","value":"attributes.dex.mod"}},"'cast'":{"text":"'cast'","tree":{"type":"string","value":"cast"}},"'check' in item.tags || 'save' in item.tags":{"text":"'check' in item.tags || 'save' in item.tags","tree":{"type":"binary","op":"||","left":{"type":"binary","op":"in","left":{"type":"string","value":"check"},"right":{"type":"name","path":["item","tags"]}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"save"},"right":{"type":"name","path":["item","tags"]}}}},"'combat'":{"text":"'combat'","tree":{"type":"string","value":"combat"}},"'committed'":{"text":"'committed'","tree":{"type":"string","value":"committed"}},"'created'":{"text":"'created'","tree":{"type":"string","value":"created"}},"'creation' in item.tags":{"text":"'creation' in item.tags","tree":{"type":"binary","op":"in","left":{"type":"string","value":"creation"},"right":{"type":"name","path":["item","tags"]}}},"'damage.' + flags.mode":{"text":"'damage.' + flags.mode","tree":{"type":"binary","op":"+","left":{"type":"string","value":"damage."},"right":{"type":"name","path":["flags","mode"]}}},"'damage.killingBlow'":{"text":"'damage.killingBlow'","tree":{"type":"string","value":"damage.killingBlow"}},"'elementalist'":{"text":"'elementalist'","tree":{"type":"string","value":"elementalist"}},"'ended'":{"text":"'ended'","tree":{"type":"string","value":"ended"}},"'exert'":{"text":"'exert'","tree":{"type":"string","value":"exert"}},"'gained'":{"text":"'gained'","tree":{"type":"string","value":"gained"}},"'granted' in item.tags":{"text":"'granted' in item.tags","tree":{"type":"binary","op":"in","left":{"type":"string","value":"granted"},"right":{"type":"name","path":["item","tags"]}}},"'heal'":{"text":"'heal'","tree":{"type":"string","value":"heal"}},"'healed'":{"text":"'healed'","tree":{"type":"string","value":"healed"}},"'health' in item.tags || 'rest' in item.tags":{"text":"'health' in item.tags || 'rest' in item.tags","tree":{"type":"binary","op":"||","left":{"type":"binary","op":"in","left":{"type":"string","value":"health"},"right":{"type":"name","path":["item","tags"]}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"rest"},"right":{"type":"name","path":["item","tags"]}}}},"'hp.dieBonus'":{"text":"'hp.dieBonus'","tree":{"type":"string","value":"hp.dieBonus"}},"'improved'":{"text":"'improved'","tree":{"type":"string","value":"improved"}},"'learning'":{"text":"'learning'","tree":{"type":"string","value":"learning"}},"'magic'":{"text":"'magic'","tree":{"type":"string","value":"magic"}},"'mod-bonus' in item.tags && ('attr.' + pick.value) in item.tags":{"text":"'mod-bonus' in item.tags && 'attr.' + pick.value in item.tags","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"in","left":{"type":"string","value":"mod-bonus"},"right":{"type":"name","path":["item","tags"]}},"right":{"type":"binary","op":"in","left":{"type":"binary","op":"+","left":{"type":"string","value":"attr."},"right":{"type":"name","path":["pick","value"]}},"right":{"type":"name","path":["item","tags"]}}}},"'mod-cap' in item.tags && ('attr.' + pick.value) in item.tags":{"text":"'mod-cap' in item.tags && 'attr.' + pick.value in item.tags","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"in","left":{"type":"string","value":"mod-cap"},"right":{"type":"name","path":["item","tags"]}},"right":{"type":"binary","op":"in","left":{"type":"binary","op":"+","left":{"type":"string","value":"attr."},"right":{"type":"name","path":["pick","value"]}},"right":{"type":"name","path":["item","tags"]}}}},"'noncombat'":{"text":"'noncombat'","tree":{"type":"string","value":"noncombat"}},"'none'":{"text":"'none'","tree":{"type":"string","value":"none"}},"'notice'":{"text":"'notice'","tree":{"type":"string","value":"notice"}},"'perform'":{"text":"'perform'","tree":{"type":"string","value":"perform"}},"'pick'":{"text":"'pick'","tree":{"type":"string","value":"pick"}},"'picked'":{"text":"'picked'","tree":{"type":"string","value":"picked"}},"'pray'":{"text":"'pray'","tree":{"type":"string","value":"pray"}},"'priest'":{"text":"'priest'","tree":{"type":"string","value":"priest"}},"'released'":{"text":"'released'","tree":{"type":"string","value":"released"}},"'rested'":{"text":"'rested'","tree":{"type":"string","value":"rested"}},"'roll'":{"text":"'roll'","tree":{"type":"string","value":"roll"}},"'rolled'":{"text":"'rolled'","tree":{"type":"string","value":"rolled"}},"'save' in item.tags":{"text":"'save' in item.tags","tree":{"type":"binary","op":"in","left":{"type":"string","value":"save"},"right":{"type":"name","path":["item","tags"]}}},"'shock.' + flags.mode":{"text":"'shock.' + flags.mode","tree":{"type":"binary","op":"+","left":{"type":"string","value":"shock."},"right":{"type":"name","path":["flags","mode"]}}},"'shock.bonus'":{"text":"'shock.bonus'","tree":{"type":"string","value":"shock.bonus"}},"'skill' in item.tags":{"text":"'skill' in item.tags","tree":{"type":"binary","op":"in","left":{"type":"string","value":"skill"},"right":{"type":"name","path":["item","tags"]}}},"'spell' in item.tags || 'art' in item.tags":{"text":"'spell' in item.tags || 'art' in item.tags","tree":{"type":"binary","op":"||","left":{"type":"binary","op":"in","left":{"type":"string","value":"spell"},"right":{"type":"name","path":["item","tags"]}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"art"},"right":{"type":"name","path":["item","tags"]}}}},"'stab'":{"text":"'stab'","tree":{"type":"string","value":"stab"}},"'stabilized'":{"text":"'stabilized'","tree":{"type":"string","value":"stabilized"}},"'survive'":{"text":"'survive'","tree":{"type":"string","value":"survive"}},"'taken'":{"text":"'taken'","tree":{"type":"string","value":"taken"}},"'too-strained'":{"text":"'too-strained'","tree":{"type":"string","value":"too-strained"}},"'unarmed' in item.tags":{"text":"'unarmed' in item.tags","tree":{"type":"binary","op":"in","left":{"type":"string","value":"unarmed"},"right":{"type":"name","path":["item","tags"]}}},"'unarmed' in item.tags ? unarmed.die : item.damage":{"text":"'unarmed' in item.tags ? unarmed.die : item.damage","tree":{"type":"conditional","test":{"type":"binary","op":"in","left":{"type":"string","value":"unarmed"},"right":{"type":"name","path":["item","tags"]}},"then":{"type":"name","path":["unarmed","die"]},"else":{"type":"name","path":["item","damage"]}}},"'unarmed' in item.tags ? unarmed.shock : item.shock":{"text":"'unarmed' in item.tags ? unarmed.shock : item.shock","tree":{"type":"conditional","test":{"type":"binary","op":"in","left":{"type":"string","value":"unarmed"},"right":{"type":"name","path":["item","tags"]}},"then":{"type":"name","path":["unarmed","shock"]},"else":{"type":"name","path":["item","shock"]}}},"'unarmed' in item.tags ? unarmed.shockAc : item.shockAc":{"text":"'unarmed' in item.tags ? unarmed.shockAc : item.shockAc","tree":{"type":"conditional","test":{"type":"binary","op":"in","left":{"type":"string","value":"unarmed"},"right":{"type":"name","path":["item","tags"]}},"then":{"type":"name","path":["unarmed","shockAc"]},"else":{"type":"name","path":["item","shockAc"]}}},"('skill.' + pick.value) in roll.tags":{"text":"'skill.' + pick.value in roll.tags","tree":{"type":"binary","op":"in","left":{"type":"binary","op":"+","left":{"type":"string","value":"skill."},"right":{"type":"name","path":["pick","value"]}},"right":{"type":"name","path":["roll","tags"]}}},"(armor.wornEnc >= 0 && magic.armoredLevel < 2\n && !(magic.armoredLevel == 1 && armor.wornEnc <= 2))\n || (armor.shield && magic.armoredLevel < 1)":{"text":"armor.wornEnc >= 0 && magic.armoredLevel < 2 && !(magic.armoredLevel == 1 && armor.wornEnc <= 2) || armor.shield && magic.armoredLevel < 1","tree":{"type":"binary","op":"||","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":">=","left":{"type":"name","path":["armor","wornEnc"]},"right":{"type":"int","value":0}},"right":{"type":"binary","op":"<","left":{"type":"name","path":["magic","armoredLevel"]},"right":{"type":"int","value":2}}},"right":{"type":"unary","op":"!","operand":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["magic","armoredLevel"]},"right":{"type":"int","value":1}},"right":{"type":"binary","op":"<=","left":{"type":"name","path":["armor","wornEnc"]},"right":{"type":"int","value":2}}}}},"right":{"type":"binary","op":"&&","left":{"type":"name","path":["armor","shield"]},"right":{"type":"binary","op":"<","left":{"type":"name","path":["magic","armoredLevel"]},"right":{"type":"int","value":1}}}}},"(item.category == 'shield' ? !armor.shield : armor.wornEnc < 0)\n && (item.costUnit == 'cp' ? ceil(item.cost / 10) : item.cost) <= coins.silver":{"text":"(item.category == 'shield' ? !armor.shield : armor.wornEnc < 0) && (item.costUnit == 'cp' ? ceil(item.cost / 10) : item.cost) <= coins.silver","tree":{"type":"binary","op":"&&","left":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["item","category"]},"right":{"type":"string","value":"shield"}},"then":{"type":"unary","op":"!","operand":{"type":"name","path":["armor","shield"]}},"else":{"type":"binary","op":"<","left":{"type":"name","path":["armor","wornEnc"]},"right":{"type":"int","value":0}}},"right":{"type":"binary","op":"<=","left":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["item","costUnit"]},"right":{"type":"string","value":"cp"}},"then":{"type":"call","fn":"ceil","args":[{"type":"binary","op":"/","left":{"type":"name","path":["item","cost"]},"right":{"type":"int","value":10}}]},"else":{"type":"name","path":["item","cost"]}},"right":{"type":"name","path":["coins","silver"]}}}},"(params.kind == 'any' || params.kind in item.tags)\n && (!params.random || !('gm-defined' in item.tags))\n && (item.repeatable || sumCopies(copy.state.level,\n copy.type == 'focus' && copy.item == item.id) < item.maxLevel)\n && (item.requires == 'none'\n || (item.requires == 'mage' && class.mage > 0)\n || (item.requires == 'non-mage' && class.mage == 0)\n || (item.requires == 'expert' && class.expert > 0)\n || (item.requires == 'invoker' && tradition.invoker.tier > 0)\n || (item.requires == 'low-attribute' && min(attributes.str.score,\n attributes.dex.score, attributes.con.score, attributes.int.score,\n attributes.wis.score, attributes.cha.score) <= 7))":{"text":"(params.kind == 'any' || params.kind in item.tags) && (!params.random || !('gm-defined' in item.tags)) && (item.repeatable || sumCopies(copy.state.level, copy.type == 'focus' && copy.item == item.id) < item.maxLevel) && (item.requires == 'none' || item.requires == 'mage' && class.mage > 0 || item.requires == 'non-mage' && class.mage == 0 || item.requires == 'expert' && class.expert > 0 || item.requires == 'invoker' && tradition.invoker.tier > 0 || item.requires == 'low-attribute' && min(attributes.str.score, attributes.dex.score, attributes.con.score, attributes.int.score, attributes.wis.score, attributes.cha.score) <= 7)","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"||","left":{"type":"binary","op":"==","left":{"type":"name","path":["params","kind"]},"right":{"type":"string","value":"any"}},"right":{"type":"binary","op":"in","left":{"type":"name","path":["params","kind"]},"right":{"type":"name","path":["item","tags"]}}},"right":{"type":"binary","op":"||","left":{"type":"unary","op":"!","operand":{"type":"name","path":["params","random"]}},"right":{"type":"unary","op":"!","operand":{"type":"binary","op":"in","left":{"type":"string","value":"gm-defined"},"right":{"type":"name","path":["item","tags"]}}}}},"right":{"type":"binary","op":"||","left":{"type":"name","path":["item","repeatable"]},"right":{"type":"binary","op":"<","left":{"type":"call","fn":"sumCopies","args":[{"type":"name","path":["copy","state","level"]},{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"focus"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","item"]},"right":{"type":"name","path":["item","id"]}}}]},"right":{"type":"name","path":["item","maxLevel"]}}}},"right":{"type":"binary","op":"||","left":{"type":"binary","op":"||","left":{"type":"binary","op":"||","left":{"type":"binary","op":"||","left":{"type":"binary","op":"||","left":{"type":"binary","op":"==","left":{"type":"name","path":["item","requires"]},"right":{"type":"string","value":"none"}},"right":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["item","requires"]},"right":{"type":"string","value":"mage"}},"right":{"type":"binary","op":">","left":{"type":"name","path":["class","mage"]},"right":{"type":"int","value":0}}}},"right":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["item","requires"]},"right":{"type":"string","value":"non-mage"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["class","mage"]},"right":{"type":"int","value":0}}}},"right":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["item","requires"]},"right":{"type":"string","value":"expert"}},"right":{"type":"binary","op":">","left":{"type":"name","path":["class","expert"]},"right":{"type":"int","value":0}}}},"right":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["item","requires"]},"right":{"type":"string","value":"invoker"}},"right":{"type":"binary","op":">","left":{"type":"name","path":["tradition","invoker","tier"]},"right":{"type":"int","value":0}}}},"right":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["item","requires"]},"right":{"type":"string","value":"low-attribute"}},"right":{"type":"binary","op":"<=","left":{"type":"call","fn":"min","args":[{"type":"name","path":["attributes","str","score"]},{"type":"name","path":["attributes","dex","score"]},{"type":"name","path":["attributes","con","score"]},{"type":"name","path":["attributes","int","score"]},{"type":"name","path":["attributes","wis","score"]},{"type":"name","path":["attributes","cha","score"]}]},"right":{"type":"int","value":7}}}}}},"-(flags.cost - flags.expert)":{"text":"-(flags.cost - flags.expert)","tree":{"type":"unary","op":"-","operand":{"type":"binary","op":"-","left":{"type":"name","path":["flags","cost"]},"right":{"type":"name","path":["flags","expert"]}}}},"-(picked.item.costUnit == 'cp' ? ceil(picked.item.cost / 10) : picked.item.cost)":{"text":"-(picked.item.costUnit == 'cp' ? ceil(picked.item.cost / 10) : picked.item.cost)","tree":{"type":"unary","op":"-","operand":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["picked","item","costUnit"]},"right":{"type":"string","value":"cp"}},"then":{"type":"call","fn":"ceil","args":[{"type":"binary","op":"/","left":{"type":"name","path":["picked","item","cost"]},"right":{"type":"int","value":10}}]},"else":{"type":"name","path":["picked","item","cost"]}}}},"-flags.dealt":{"text":"-flags.dealt","tree":{"type":"unary","op":"-","operand":{"type":"name","path":["flags","dealt"]}}},"-flags.expert":{"text":"-flags.expert","tree":{"type":"unary","op":"-","operand":{"type":"name","path":["flags","expert"]}}},"-item.enc":{"text":"-item.enc","tree":{"type":"unary","op":"-","operand":{"type":"name","path":["item","enc"]}}},"-params.amount":{"text":"-params.amount","tree":{"type":"unary","op":"-","operand":{"type":"name","path":["params","amount"]}}},"1 + (class.warrior > 0 ? 1 : 0) + (class.expert > 0 ? 1 : 0)\n + (level >= 2 ? 1 : 0) + (level >= 5 ? 1 : 0) + (level >= 7 ? 1 : 0)\n + (level >= 10 ? 1 : 0)":{"text":"1 + (class.warrior > 0 ? 1 : 0) + (class.expert > 0 ? 1 : 0) + (level >= 2 ? 1 : 0) + (level >= 5 ? 1 : 0) + (level >= 7 ? 1 : 0) + (level >= 10 ? 1 : 0)","tree":{"type":"binary","op":"+","left":{"type":"binary","op":"+","left":{"type":"binary","op":"+","left":{"type":"binary","op":"+","left":{"type":"binary","op":"+","left":{"type":"binary","op":"+","left":{"type":"int","value":1},"right":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["class","warrior"]},"right":{"type":"int","value":0}},"then":{"type":"int","value":1},"else":{"type":"int","value":0}}},"right":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["class","expert"]},"right":{"type":"int","value":0}},"then":{"type":"int","value":1},"else":{"type":"int","value":0}}},"right":{"type":"conditional","test":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"int","value":2}},"then":{"type":"int","value":1},"else":{"type":"int","value":0}}},"right":{"type":"conditional","test":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"int","value":5}},"then":{"type":"int","value":1},"else":{"type":"int","value":0}}},"right":{"type":"conditional","test":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"int","value":7}},"then":{"type":"int","value":1},"else":{"type":"int","value":0}}},"right":{"type":"conditional","test":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"int","value":10}},"then":{"type":"int","value":1},"else":{"type":"int","value":0}}}},"12 + floor(level / 2)":{"text":"12 + floor(level / 2)","tree":{"type":"binary","op":"+","left":{"type":"int","value":12},"right":{"type":"call","fn":"floor","args":[{"type":"binary","op":"/","left":{"type":"name","path":["level"]},"right":{"type":"int","value":2}}]}}},"13 + ceil(level / 2)":{"text":"13 + ceil(level / 2)","tree":{"type":"binary","op":"+","left":{"type":"int","value":13},"right":{"type":"call","fn":"ceil","args":[{"type":"binary","op":"/","left":{"type":"name","path":["level"]},"right":{"type":"int","value":2}}]}}},"13 + floor(level / 2)":{"text":"13 + floor(level / 2)","tree":{"type":"binary","op":"+","left":{"type":"int","value":13},"right":{"type":"call","fn":"floor","args":[{"type":"binary","op":"/","left":{"type":"name","path":["level"]},"right":{"type":"int","value":2}}]}}},"15 + ceil(level / 2)":{"text":"15 + ceil(level / 2)","tree":{"type":"binary","op":"+","left":{"type":"int","value":15},"right":{"type":"call","fn":"ceil","args":[{"type":"binary","op":"/","left":{"type":"name","path":["level"]},"right":{"type":"int","value":2}}]}}},"15 + floor(level / 2)":{"text":"15 + floor(level / 2)","tree":{"type":"binary","op":"+","left":{"type":"int","value":15},"right":{"type":"call","fn":"floor","args":[{"type":"binary","op":"/","left":{"type":"name","path":["level"]},"right":{"type":"int","value":2}}]}}},"16 - level":{"text":"16 - level","tree":{"type":"binary","op":"-","left":{"type":"int","value":16},"right":{"type":"name","path":["level"]}}},"16 - level - max(attributes.dex.mod, attributes.int.mod)":{"text":"16 - level - max(attributes.dex.mod, attributes.int.mod)","tree":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"int","value":16},"right":{"type":"name","path":["level"]}},"right":{"type":"call","fn":"max","args":[{"type":"name","path":["attributes","dex","mod"]},{"type":"name","path":["attributes","int","mod"]}]}}},"16 - level - max(attributes.str.mod, attributes.con.mod)":{"text":"16 - level - max(attributes.str.mod, attributes.con.mod)","tree":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"int","value":16},"right":{"type":"name","path":["level"]}},"right":{"type":"call","fn":"max","args":[{"type":"name","path":["attributes","str","mod"]},{"type":"name","path":["attributes","con","mod"]}]}}},"16 - level - max(attributes.wis.mod, attributes.cha.mod)":{"text":"16 - level - max(attributes.wis.mod, attributes.cha.mod)","tree":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"int","value":16},"right":{"type":"name","path":["level"]}},"right":{"type":"call","fn":"max","args":[{"type":"name","path":["attributes","wis","mod"]},{"type":"name","path":["attributes","cha","mod"]}]}}},"18 - field.value":{"text":"18 - field.value","tree":{"type":"binary","op":"-","left":{"type":"int","value":18},"right":{"type":"name","path":["field","value"]}}},"1d10":{"text":"1d10","tree":{"type":"dice","count":1,"sides":10,"modifiers":[]}},"1d12":{"text":"1d12","tree":{"type":"dice","count":1,"sides":12,"modifiers":[]}},"1d2":{"text":"1d2","tree":{"type":"dice","count":1,"sides":2,"modifiers":[]}},"1d20":{"text":"1d20","tree":{"type":"dice","count":1,"sides":20,"modifiers":[]}},"1d4":{"text":"1d4","tree":{"type":"dice","count":1,"sides":4,"modifiers":[]}},"1d6":{"text":"1d6","tree":{"type":"dice","count":1,"sides":6,"modifiers":[]}},"1d8":{"text":"1d8","tree":{"type":"dice","count":1,"sides":8,"modifiers":[]}},"1d8 + [0, 0, 1, 1, 1, 2, 2, 2, 3, 3][level - 1]":{"text":"1d8 + [0, 0, 1, 1, 1, 2, 2, 2, 3, 3][level - 1]","tree":{"type":"binary","op":"+","left":{"type":"dice","count":1,"sides":8,"modifiers":[]},"right":{"type":"index","object":{"type":"list","items":[{"type":"int","value":0},{"type":"int","value":0},{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}}}},"2 * level":{"text":"2 * level","tree":{"type":"binary","op":"*","left":{"type":"int","value":2},"right":{"type":"name","path":["level"]}}},"2 + [0, 0, 1, 1, 1, 2, 2, 2, 3, 3][level - 1]":{"text":"2 + [0, 0, 1, 1, 1, 2, 2, 2, 3, 3][level - 1]","tree":{"type":"binary","op":"+","left":{"type":"int","value":2},"right":{"type":"index","object":{"type":"list","items":[{"type":"int","value":0},{"type":"int","value":0},{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}}}},"2d6kh2":{"text":"2d6kh2","tree":{"type":"dice","count":2,"sides":6,"modifiers":[{"type":"keepHighest","count":2}]}},"2d8":{"text":"2d8","tree":{"type":"dice","count":2,"sides":8,"modifiers":[]}},"3d10":{"text":"3d10","tree":{"type":"dice","count":3,"sides":10,"modifiers":[]}},"3d6":{"text":"3d6","tree":{"type":"dice","count":3,"sides":6,"modifiers":[]}},"@weapons.long-sword":{"text":"@weapons.long-sword","tree":{"type":"ref","id":"weapons.long-sword"}},"[1, 2, 2, 2, 2, 3, 3, 3, 4, 4][level - 1]":{"text":"[1, 2, 2, 2, 2, 3, 3, 3, 4, 4][level - 1]","tree":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":4}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}}},"[1d6, 1d6, 1d8, 1d8, 1d10, 1d10, 1d10 + 1, 1d10 + 1, 1d10 + 2, 1d10 + 3][level - 1]":{"text":"[1d6, 1d6, 1d8, 1d8, 1d10, 1d10, 1d10 + 1, 1d10 + 1, 1d10 + 2, 1d10 + 3][level - 1]","tree":{"type":"index","object":{"type":"list","items":[{"type":"dice","count":1,"sides":6,"modifiers":[]},{"type":"dice","count":1,"sides":6,"modifiers":[]},{"type":"dice","count":1,"sides":8,"modifiers":[]},{"type":"dice","count":1,"sides":8,"modifiers":[]},{"type":"dice","count":1,"sides":10,"modifiers":[]},{"type":"dice","count":1,"sides":10,"modifiers":[]},{"type":"binary","op":"+","left":{"type":"dice","count":1,"sides":10,"modifiers":[]},"right":{"type":"int","value":1}},{"type":"binary","op":"+","left":{"type":"dice","count":1,"sides":10,"modifiers":[]},"right":{"type":"int","value":1}},{"type":"binary","op":"+","left":{"type":"dice","count":1,"sides":10,"modifiers":[]},"right":{"type":"int","value":2}},{"type":"binary","op":"+","left":{"type":"dice","count":1,"sides":10,"modifiers":[]},"right":{"type":"int","value":3}}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}}},"[1d6, 1d8, 1d10, 1d12, 1d12 + 1][max(0, skills.punch)]":{"text":"[1d6, 1d8, 1d10, 1d12, 1d12 + 1][max(0, skills.punch)]","tree":{"type":"index","object":{"type":"list","items":[{"type":"dice","count":1,"sides":6,"modifiers":[]},{"type":"dice","count":1,"sides":8,"modifiers":[]},{"type":"dice","count":1,"sides":10,"modifiers":[]},{"type":"dice","count":1,"sides":12,"modifiers":[]},{"type":"binary","op":"+","left":{"type":"dice","count":1,"sides":12,"modifiers":[]},"right":{"type":"int","value":1}}]},"index":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","punch"]}]}}},"[30, 20, 15, 0][enc.over]":{"text":"[30, 20, 15, 0][enc.over]","tree":{"type":"index","object":{"type":"list","items":[{"type":"int","value":30},{"type":"int","value":20},{"type":"int","value":15},{"type":"int","value":0}]},"index":{"type":"name","path":["enc","over"]}}},"[steps.background.item.growth1, steps.background.item.growth2,\n steps.background.item.growth3, steps.background.item.growth4,\n steps.background.item.growth5, steps.background.item.growth6]":{"text":"[steps.background.item.growth1, steps.background.item.growth2, steps.background.item.growth3, steps.background.item.growth4, steps.background.item.growth5, steps.background.item.growth6]","tree":{"type":"list","items":[{"type":"name","path":["steps","background","item","growth1"]},{"type":"name","path":["steps","background","item","growth2"]},{"type":"name","path":["steps","background","item","growth3"]},{"type":"name","path":["steps","background","item","growth4"]},{"type":"name","path":["steps","background","item","growth5"]},{"type":"name","path":["steps","background","item","growth6"]}]}},"[steps.background.item.learning1, steps.background.item.learning2,\n steps.background.item.learning3, steps.background.item.learning4,\n steps.background.item.learning5, steps.background.item.learning6,\n steps.background.item.learning7, steps.background.item.learning8]":{"text":"[steps.background.item.learning1, steps.background.item.learning2, steps.background.item.learning3, steps.background.item.learning4, steps.background.item.learning5, steps.background.item.learning6, steps.background.item.learning7, steps.background.item.learning8]","tree":{"type":"list","items":[{"type":"name","path":["steps","background","item","learning1"]},{"type":"name","path":["steps","background","item","learning2"]},{"type":"name","path":["steps","background","item","learning3"]},{"type":"name","path":["steps","background","item","learning4"]},{"type":"name","path":["steps","background","item","learning5"]},{"type":"name","path":["steps","background","item","learning6"]},{"type":"name","path":["steps","background","item","learning7"]},{"type":"name","path":["steps","background","item","learning8"]}]}},"ac.withShield + attributes.dex.mod\n + max(0, min(ac.cappedBonus, 18 - ac.withShield - attributes.dex.mod))":{"text":"ac.withShield + attributes.dex.mod + max(0, min(ac.cappedBonus, 18 - ac.withShield - attributes.dex.mod))","tree":{"type":"binary","op":"+","left":{"type":"binary","op":"+","left":{"type":"name","path":["ac","withShield"]},"right":{"type":"name","path":["attributes","dex","mod"]}},"right":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"call","fn":"min","args":[{"type":"name","path":["ac","cappedBonus"]},{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"int","value":18},"right":{"type":"name","path":["ac","withShield"]}},"right":{"type":"name","path":["attributes","dex","mod"]}}]}]}}},"armor.wornEnc < 0":{"text":"armor.wornEnc < 0","tree":{"type":"binary","op":"<","left":{"type":"name","path":["armor","wornEnc"]},"right":{"type":"int","value":0}}},"armor.wornEnc < 0 && !(armor.shield && armor.shieldAc >= 14)":{"text":"armor.wornEnc < 0 && !(armor.shield && armor.shieldAc >= 14)","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"<","left":{"type":"name","path":["armor","wornEnc"]},"right":{"type":"int","value":0}},"right":{"type":"unary","op":"!","operand":{"type":"binary","op":"&&","left":{"type":"name","path":["armor","shield"]},"right":{"type":"binary","op":">=","left":{"type":"name","path":["armor","shieldAc"]},"right":{"type":"int","value":14}}}}}},"armor.wornEnc < 0 && !armor.shield":{"text":"armor.wornEnc < 0 && !armor.shield","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"<","left":{"type":"name","path":["armor","wornEnc"]},"right":{"type":"int","value":0}},"right":{"type":"unary","op":"!","operand":{"type":"name","path":["armor","shield"]}}}},"armor.wornHeavy || (armor.shield && armor.shieldAc >= 14)":{"text":"armor.wornHeavy || armor.shield && armor.shieldAc >= 14","tree":{"type":"binary","op":"||","left":{"type":"name","path":["armor","wornHeavy"]},"right":{"type":"binary","op":"&&","left":{"type":"name","path":["armor","shield"]},"right":{"type":"binary","op":">=","left":{"type":"name","path":["armor","shieldAc"]},"right":{"type":"int","value":14}}}}},"arts.owed":{"text":"arts.owed","tree":{"type":"name","path":["arts","owed"]}},"arts.owed > 0":{"text":"arts.owed > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["arts","owed"]},"right":{"type":"int","value":0}}},"attack.base":{"text":"attack.base","tree":{"type":"name","path":["attack","base"]}},"attributes.boosts + 1":{"text":"attributes.boosts + 1","tree":{"type":"binary","op":"+","left":{"type":"name","path":["attributes","boosts"]},"right":{"type":"int","value":1}}},"attributes.con.score":{"text":"attributes.con.score","tree":{"type":"name","path":["attributes","con","score"]}},"attributes.str.score":{"text":"attributes.str.score","tree":{"type":"name","path":["attributes","str","score"]}},"ceil(level / 2)":{"text":"ceil(level / 2)","tree":{"type":"call","fn":"ceil","args":[{"type":"binary","op":"/","left":{"type":"name","path":["level"]},"right":{"type":"int","value":2}}]}},"ceil(picked.item.cost / 10) * 10 - picked.item.cost":{"text":"ceil(picked.item.cost / 10) * 10 - picked.item.cost","tree":{"type":"binary","op":"-","left":{"type":"binary","op":"*","left":{"type":"call","fn":"ceil","args":[{"type":"binary","op":"/","left":{"type":"name","path":["picked","item","cost"]},"right":{"type":"int","value":10}}]},"right":{"type":"int","value":10}},"right":{"type":"name","path":["picked","item","cost"]}}},"character.creating && countCopies(copy.type == 'class') == 0":{"text":"character.creating && countCopies(copy.type == 'class') == 0","tree":{"type":"binary","op":"&&","left":{"type":"name","path":["character","creating"]},"right":{"type":"binary","op":"==","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"class"}}]},"right":{"type":"int","value":0}}}},"chassis.attackFull > 0 ? level\n : chassis.attackWarrior > 0 ? [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1]\n : chassis.attackExpert > 0 ? floor(level / 2)\n : floor(level / 5)":{"text":"chassis.attackFull > 0 ? level : chassis.attackWarrior > 0 ? [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1] : chassis.attackExpert > 0 ? floor(level / 2) : floor(level / 5)","tree":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["chassis","attackFull"]},"right":{"type":"int","value":0}},"then":{"type":"name","path":["level"]},"else":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["chassis","attackWarrior"]},"right":{"type":"int","value":0}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":5},{"type":"int","value":6},{"type":"int","value":6},{"type":"int","value":7}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["chassis","attackExpert"]},"right":{"type":"int","value":0}},"then":{"type":"call","fn":"floor","args":[{"type":"binary","op":"/","left":{"type":"name","path":["level"]},"right":{"type":"int","value":2}}]},"else":{"type":"call","fn":"floor","args":[{"type":"binary","op":"/","left":{"type":"name","path":["level"]},"right":{"type":"int","value":5}}]}}}}},"chassis.hitsWarrior > 0 && chassis.fragile == 0 ? 2\n : chassis.hitsWarrior > 0 || chassis.hitsExpert > 0 ? 0\n : -1":{"text":"chassis.hitsWarrior > 0 && chassis.fragile == 0 ? 2 : chassis.hitsWarrior > 0 || chassis.hitsExpert > 0 ? 0 : -1","tree":{"type":"conditional","test":{"type":"binary","op":"&&","left":{"type":"binary","op":">","left":{"type":"name","path":["chassis","hitsWarrior"]},"right":{"type":"int","value":0}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["chassis","fragile"]},"right":{"type":"int","value":0}}},"then":{"type":"int","value":2},"else":{"type":"conditional","test":{"type":"binary","op":"||","left":{"type":"binary","op":">","left":{"type":"name","path":["chassis","hitsWarrior"]},"right":{"type":"int","value":0}},"right":{"type":"binary","op":">","left":{"type":"name","path":["chassis","hitsExpert"]},"right":{"type":"int","value":0}}},"then":{"type":"int","value":0},"else":{"type":"unary","op":"-","operand":{"type":"int","value":1}}}}},"class.expert > 0":{"text":"class.expert > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["class","expert"]},"right":{"type":"int","value":0}}},"class.mage == 0":{"text":"class.mage == 0","tree":{"type":"binary","op":"==","left":{"type":"name","path":["class","mage"]},"right":{"type":"int","value":0}}},"class.mage > 0":{"text":"class.mage > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["class","mage"]},"right":{"type":"int","value":0}}},"class.mage > 0 || spells.mode != 'none' || effort.mageslayer.max > 0 || effort.bard.max > 0 || tradition.wise.tier > 0":{"text":"class.mage > 0 || spells.mode != 'none' || effort.mageslayer.max > 0 || effort.bard.max > 0 || tradition.wise.tier > 0","tree":{"type":"binary","op":"||","left":{"type":"binary","op":"||","left":{"type":"binary","op":"||","left":{"type":"binary","op":"||","left":{"type":"binary","op":">","left":{"type":"name","path":["class","mage"]},"right":{"type":"int","value":0}},"right":{"type":"binary","op":"!=","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"none"}}},"right":{"type":"binary","op":">","left":{"type":"name","path":["effort","mageslayer","max"]},"right":{"type":"int","value":0}}},"right":{"type":"binary","op":">","left":{"type":"name","path":["effort","bard","max"]},"right":{"type":"int","value":0}}},"right":{"type":"binary","op":">","left":{"type":"name","path":["tradition","wise","tier"]},"right":{"type":"int","value":0}}}},"class.warrior > 0":{"text":"class.warrior > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["class","warrior"]},"right":{"type":"int","value":0}}},"companion.hitDice":{"text":"companion.hitDice","tree":{"type":"name","path":["companion","hitDice"]}},"conditions.frail ? 'dead' : 'mortally-wounded'":{"text":"conditions.frail ? 'dead' : 'mortally-wounded'","tree":{"type":"conditional","test":{"type":"name","path":["conditions","frail"]},"then":{"type":"string","value":"dead"},"else":{"type":"string","value":"mortally-wounded"}}},"conditions.mortallyWounded":{"text":"conditions.mortallyWounded","tree":{"type":"name","path":["conditions","mortallyWounded"]}},"countCopies(copy.item == item.requiresArt) > 0":{"text":"countCopies(copy.item == item.requiresArt) > 0","tree":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"==","left":{"type":"name","path":["copy","item"]},"right":{"type":"name","path":["item","requiresArt"]}}]},"right":{"type":"int","value":0}}},"countCopies(copy.type == 'armor' && copy.equipped\n && copy.fields.category in ['medium', 'heavy']) > 0":{"text":"countCopies(copy.type == 'armor' && copy.equipped && copy.fields.category in ['medium', 'heavy']) > 0","tree":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"armor"}},"right":{"type":"name","path":["copy","equipped"]}},"right":{"type":"binary","op":"in","left":{"type":"name","path":["copy","fields","category"]},"right":{"type":"list","items":[{"type":"string","value":"medium"},{"type":"string","value":"heavy"}]}}}]},"right":{"type":"int","value":0}}},"countCopies(copy.type == 'armor' && copy.equipped && copy.fields.category != 'shield') > 0\n ? maxCopies(copy.fields.enc, copy.type == 'armor' && copy.equipped\n && copy.fields.category != 'shield')\n : -1":{"text":"countCopies(copy.type == 'armor' && copy.equipped && copy.fields.category != 'shield') > 0 ? maxCopies(copy.fields.enc, copy.type == 'armor' && copy.equipped && copy.fields.category != 'shield') : -1","tree":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"armor"}},"right":{"type":"name","path":["copy","equipped"]}},"right":{"type":"binary","op":"!=","left":{"type":"name","path":["copy","fields","category"]},"right":{"type":"string","value":"shield"}}}]},"right":{"type":"int","value":0}},"then":{"type":"call","fn":"maxCopies","args":[{"type":"name","path":["copy","fields","enc"]},{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"armor"}},"right":{"type":"name","path":["copy","equipped"]}},"right":{"type":"binary","op":"!=","left":{"type":"name","path":["copy","fields","category"]},"right":{"type":"string","value":"shield"}}}]},"else":{"type":"unary","op":"-","operand":{"type":"int","value":1}}}},"countCopies(copy.type == 'armor' && copy.equipped && copy.fields.category == 'shield') > 0":{"text":"countCopies(copy.type == 'armor' && copy.equipped && copy.fields.category == 'shield') > 0","tree":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"armor"}},"right":{"type":"name","path":["copy","equipped"]}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","fields","category"]},"right":{"type":"string","value":"shield"}}}]},"right":{"type":"int","value":0}}},"countCopies(copy.type == 'art' && copy.fields.tradition == 'accursed')":{"text":"countCopies(copy.type == 'art' && copy.fields.tradition == 'accursed')","tree":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"art"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","fields","tradition"]},"right":{"type":"string","value":"accursed"}}}]}},"countCopies(copy.type == 'art' && copy.fields.tradition == 'bard')":{"text":"countCopies(copy.type == 'art' && copy.fields.tradition == 'bard')","tree":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"art"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","fields","tradition"]},"right":{"type":"string","value":"bard"}}}]}},"countCopies(copy.type == 'art' && copy.fields.tradition == 'beastmaster')":{"text":"countCopies(copy.type == 'art' && copy.fields.tradition == 'beastmaster')","tree":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"art"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","fields","tradition"]},"right":{"type":"string","value":"beastmaster"}}}]}},"countCopies(copy.type == 'art' && copy.fields.tradition == 'bloodpriest')":{"text":"countCopies(copy.type == 'art' && copy.fields.tradition == 'bloodpriest')","tree":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"art"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","fields","tradition"]},"right":{"type":"string","value":"bloodpriest"}}}]}},"countCopies(copy.type == 'art' && copy.fields.tradition == 'duelist')":{"text":"countCopies(copy.type == 'art' && copy.fields.tradition == 'duelist')","tree":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"art"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","fields","tradition"]},"right":{"type":"string","value":"duelist"}}}]}},"countCopies(copy.type == 'art' && copy.fields.tradition == 'elementalist')":{"text":"countCopies(copy.type == 'art' && copy.fields.tradition == 'elementalist')","tree":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"art"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","fields","tradition"]},"right":{"type":"string","value":"elementalist"}}}]}},"countCopies(copy.type == 'art' && copy.fields.tradition == 'healer')":{"text":"countCopies(copy.type == 'art' && copy.fields.tradition == 'healer')","tree":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"art"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","fields","tradition"]},"right":{"type":"string","value":"healer"}}}]}},"countCopies(copy.type == 'art' && copy.fields.tradition == 'highmage')":{"text":"countCopies(copy.type == 'art' && copy.fields.tradition == 'highmage')","tree":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"art"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","fields","tradition"]},"right":{"type":"string","value":"highmage"}}}]}},"countCopies(copy.type == 'art' && copy.fields.tradition == 'mageslayer')":{"text":"countCopies(copy.type == 'art' && copy.fields.tradition == 'mageslayer')","tree":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"art"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","fields","tradition"]},"right":{"type":"string","value":"mageslayer"}}}]}},"countCopies(copy.type == 'art' && copy.fields.tradition == 'necromancer')":{"text":"countCopies(copy.type == 'art' && copy.fields.tradition == 'necromancer')","tree":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"art"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","fields","tradition"]},"right":{"type":"string","value":"necromancer"}}}]}},"countCopies(copy.type == 'art' && copy.fields.tradition == 'skinshifter')":{"text":"countCopies(copy.type == 'art' && copy.fields.tradition == 'skinshifter')","tree":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"art"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","fields","tradition"]},"right":{"type":"string","value":"skinshifter"}}}]}},"countCopies(copy.type == 'art' && copy.fields.tradition == 'thoughtnoble')":{"text":"countCopies(copy.type == 'art' && copy.fields.tradition == 'thoughtnoble')","tree":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"art"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","fields","tradition"]},"right":{"type":"string","value":"thoughtnoble"}}}]}},"countCopies(copy.type == 'art' && copy.fields.tradition == 'vowed')":{"text":"countCopies(copy.type == 'art' && copy.fields.tradition == 'vowed')","tree":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"art"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","fields","tradition"]},"right":{"type":"string","value":"vowed"}}}]}},"countCopies(copy.type == 'art' && copy.fields.tradition == 'wise')":{"text":"countCopies(copy.type == 'art' && copy.fields.tradition == 'wise')","tree":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"art"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","fields","tradition"]},"right":{"type":"string","value":"wise"}}}]}},"countCopies(copy.type == 'focus' && copy.item == item.id) <= 1":{"text":"countCopies(copy.type == 'focus' && copy.item == item.id) <= 1","tree":{"type":"binary","op":"<=","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"focus"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","item"]},"right":{"type":"name","path":["item","id"]}}}]},"right":{"type":"int","value":1}}},"countCopies(copy.type == 'focus' && copy.item == steps.focus.picked\n && copy.state.level < steps.focus.item.maxLevel) > 0":{"text":"countCopies(copy.type == 'focus' && copy.item == steps.focus.picked && copy.state.level < steps.focus.item.maxLevel) > 0","tree":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"focus"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","item"]},"right":{"type":"name","path":["steps","focus","picked"]}}},"right":{"type":"binary","op":"<","left":{"type":"name","path":["copy","state","level"]},"right":{"type":"name","path":["steps","focus","item","maxLevel"]}}}]},"right":{"type":"int","value":0}}},"countCopies(copy.type == 'spell' && copy.state.prepared)":{"text":"countCopies(copy.type == 'spell' && copy.state.prepared)","tree":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"spell"}},"right":{"type":"name","path":["copy","state","prepared"]}}]}},"countList(keysOf('artTrad'),\n fieldOf('arts.{artTrad}.taken', x) > fieldOf('arts.{artTrad}.allowed', x)) == 0":{"text":"countList(keysOf('artTrad'), fieldOf('arts.{artTrad}.taken', x) > fieldOf('arts.{artTrad}.allowed', x)) == 0","tree":{"type":"binary","op":"==","left":{"type":"call","fn":"countList","args":[{"type":"call","fn":"keysOf","args":[{"type":"string","value":"artTrad"}]},{"type":"binary","op":">","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"arts.{artTrad}.taken"},{"type":"name","path":["x"]}]},"right":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"arts.{artTrad}.allowed"},{"type":"name","path":["x"]}]}}]},"right":{"type":"int","value":0}}},"countList(keysOf('effortTrad'), fieldOf('effort.{effortTrad}.scene', x)\n + fieldOf('effort.{effortTrad}.day', x) + fieldOf('effort.{effortTrad}.ongoing', x)\n > fieldOf('effort.{effortTrad}.max', x)) == 0":{"text":"countList(keysOf('effortTrad'), fieldOf('effort.{effortTrad}.scene', x) + fieldOf('effort.{effortTrad}.day', x) + fieldOf('effort.{effortTrad}.ongoing', x) > fieldOf('effort.{effortTrad}.max', x)) == 0","tree":{"type":"binary","op":"==","left":{"type":"call","fn":"countList","args":[{"type":"call","fn":"keysOf","args":[{"type":"string","value":"effortTrad"}]},{"type":"binary","op":">","left":{"type":"binary","op":"+","left":{"type":"binary","op":"+","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"effort.{effortTrad}.scene"},{"type":"name","path":["x"]}]},"right":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"effort.{effortTrad}.day"},{"type":"name","path":["x"]}]}},"right":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"effort.{effortTrad}.ongoing"},{"type":"name","path":["x"]}]}},"right":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"effort.{effortTrad}.max"},{"type":"name","path":["x"]}]}}]},"right":{"type":"int","value":0}}},"countPicks(pick.type == 'tradition' && pick.fields.key == 'accursed')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)":{"text":"countPicks(pick.type == 'tradition' && pick.fields.key == 'accursed') * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)","tree":{"type":"binary","op":"*","left":{"type":"call","fn":"countPicks","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["pick","type"]},"right":{"type":"string","value":"tradition"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["pick","fields","key"]},"right":{"type":"string","value":"accursed"}}}]},"right":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"class"}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"full-mage"},"right":{"type":"name","path":["copy","tags"]}}}]},"right":{"type":"int","value":0}},"then":{"type":"int","value":2},"else":{"type":"int","value":1}}}},"countPicks(pick.type == 'tradition' && pick.fields.key == 'bard')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)":{"text":"countPicks(pick.type == 'tradition' && pick.fields.key == 'bard') * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)","tree":{"type":"binary","op":"*","left":{"type":"call","fn":"countPicks","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["pick","type"]},"right":{"type":"string","value":"tradition"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["pick","fields","key"]},"right":{"type":"string","value":"bard"}}}]},"right":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"class"}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"full-mage"},"right":{"type":"name","path":["copy","tags"]}}}]},"right":{"type":"int","value":0}},"then":{"type":"int","value":2},"else":{"type":"int","value":1}}}},"countPicks(pick.type == 'tradition' && pick.fields.key == 'beastmaster')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)":{"text":"countPicks(pick.type == 'tradition' && pick.fields.key == 'beastmaster') * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)","tree":{"type":"binary","op":"*","left":{"type":"call","fn":"countPicks","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["pick","type"]},"right":{"type":"string","value":"tradition"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["pick","fields","key"]},"right":{"type":"string","value":"beastmaster"}}}]},"right":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"class"}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"full-mage"},"right":{"type":"name","path":["copy","tags"]}}}]},"right":{"type":"int","value":0}},"then":{"type":"int","value":2},"else":{"type":"int","value":1}}}},"countPicks(pick.type == 'tradition' && pick.fields.key == 'bloodpriest')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)":{"text":"countPicks(pick.type == 'tradition' && pick.fields.key == 'bloodpriest') * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)","tree":{"type":"binary","op":"*","left":{"type":"call","fn":"countPicks","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["pick","type"]},"right":{"type":"string","value":"tradition"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["pick","fields","key"]},"right":{"type":"string","value":"bloodpriest"}}}]},"right":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"class"}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"full-mage"},"right":{"type":"name","path":["copy","tags"]}}}]},"right":{"type":"int","value":0}},"then":{"type":"int","value":2},"else":{"type":"int","value":1}}}},"countPicks(pick.type == 'tradition' && pick.fields.key == 'duelist')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)":{"text":"countPicks(pick.type == 'tradition' && pick.fields.key == 'duelist') * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)","tree":{"type":"binary","op":"*","left":{"type":"call","fn":"countPicks","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["pick","type"]},"right":{"type":"string","value":"tradition"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["pick","fields","key"]},"right":{"type":"string","value":"duelist"}}}]},"right":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"class"}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"full-mage"},"right":{"type":"name","path":["copy","tags"]}}}]},"right":{"type":"int","value":0}},"then":{"type":"int","value":2},"else":{"type":"int","value":1}}}},"countPicks(pick.type == 'tradition' && pick.fields.key == 'elementalist')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)":{"text":"countPicks(pick.type == 'tradition' && pick.fields.key == 'elementalist') * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)","tree":{"type":"binary","op":"*","left":{"type":"call","fn":"countPicks","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["pick","type"]},"right":{"type":"string","value":"tradition"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["pick","fields","key"]},"right":{"type":"string","value":"elementalist"}}}]},"right":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"class"}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"full-mage"},"right":{"type":"name","path":["copy","tags"]}}}]},"right":{"type":"int","value":0}},"then":{"type":"int","value":2},"else":{"type":"int","value":1}}}},"countPicks(pick.type == 'tradition' && pick.fields.key == 'healer')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)":{"text":"countPicks(pick.type == 'tradition' && pick.fields.key == 'healer') * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)","tree":{"type":"binary","op":"*","left":{"type":"call","fn":"countPicks","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["pick","type"]},"right":{"type":"string","value":"tradition"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["pick","fields","key"]},"right":{"type":"string","value":"healer"}}}]},"right":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"class"}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"full-mage"},"right":{"type":"name","path":["copy","tags"]}}}]},"right":{"type":"int","value":0}},"then":{"type":"int","value":2},"else":{"type":"int","value":1}}}},"countPicks(pick.type == 'tradition' && pick.fields.key == 'highmage')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)":{"text":"countPicks(pick.type == 'tradition' && pick.fields.key == 'highmage') * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)","tree":{"type":"binary","op":"*","left":{"type":"call","fn":"countPicks","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["pick","type"]},"right":{"type":"string","value":"tradition"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["pick","fields","key"]},"right":{"type":"string","value":"highmage"}}}]},"right":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"class"}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"full-mage"},"right":{"type":"name","path":["copy","tags"]}}}]},"right":{"type":"int","value":0}},"then":{"type":"int","value":2},"else":{"type":"int","value":1}}}},"countPicks(pick.type == 'tradition' && pick.fields.key == 'invoker')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)":{"text":"countPicks(pick.type == 'tradition' && pick.fields.key == 'invoker') * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)","tree":{"type":"binary","op":"*","left":{"type":"call","fn":"countPicks","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["pick","type"]},"right":{"type":"string","value":"tradition"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["pick","fields","key"]},"right":{"type":"string","value":"invoker"}}}]},"right":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"class"}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"full-mage"},"right":{"type":"name","path":["copy","tags"]}}}]},"right":{"type":"int","value":0}},"then":{"type":"int","value":2},"else":{"type":"int","value":1}}}},"countPicks(pick.type == 'tradition' && pick.fields.key == 'mageslayer')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)":{"text":"countPicks(pick.type == 'tradition' && pick.fields.key == 'mageslayer') * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)","tree":{"type":"binary","op":"*","left":{"type":"call","fn":"countPicks","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["pick","type"]},"right":{"type":"string","value":"tradition"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["pick","fields","key"]},"right":{"type":"string","value":"mageslayer"}}}]},"right":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"class"}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"full-mage"},"right":{"type":"name","path":["copy","tags"]}}}]},"right":{"type":"int","value":0}},"then":{"type":"int","value":2},"else":{"type":"int","value":1}}}},"countPicks(pick.type == 'tradition' && pick.fields.key == 'necromancer')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)":{"text":"countPicks(pick.type == 'tradition' && pick.fields.key == 'necromancer') * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)","tree":{"type":"binary","op":"*","left":{"type":"call","fn":"countPicks","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["pick","type"]},"right":{"type":"string","value":"tradition"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["pick","fields","key"]},"right":{"type":"string","value":"necromancer"}}}]},"right":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"class"}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"full-mage"},"right":{"type":"name","path":["copy","tags"]}}}]},"right":{"type":"int","value":0}},"then":{"type":"int","value":2},"else":{"type":"int","value":1}}}},"countPicks(pick.type == 'tradition' && pick.fields.key == 'skinshifter')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)":{"text":"countPicks(pick.type == 'tradition' && pick.fields.key == 'skinshifter') * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)","tree":{"type":"binary","op":"*","left":{"type":"call","fn":"countPicks","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["pick","type"]},"right":{"type":"string","value":"tradition"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["pick","fields","key"]},"right":{"type":"string","value":"skinshifter"}}}]},"right":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"class"}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"full-mage"},"right":{"type":"name","path":["copy","tags"]}}}]},"right":{"type":"int","value":0}},"then":{"type":"int","value":2},"else":{"type":"int","value":1}}}},"countPicks(pick.type == 'tradition' && pick.fields.key == 'thoughtnoble')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)":{"text":"countPicks(pick.type == 'tradition' && pick.fields.key == 'thoughtnoble') * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)","tree":{"type":"binary","op":"*","left":{"type":"call","fn":"countPicks","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["pick","type"]},"right":{"type":"string","value":"tradition"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["pick","fields","key"]},"right":{"type":"string","value":"thoughtnoble"}}}]},"right":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"class"}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"full-mage"},"right":{"type":"name","path":["copy","tags"]}}}]},"right":{"type":"int","value":0}},"then":{"type":"int","value":2},"else":{"type":"int","value":1}}}},"countPicks(pick.type == 'tradition' && pick.fields.key == 'vowed')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)":{"text":"countPicks(pick.type == 'tradition' && pick.fields.key == 'vowed') * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)","tree":{"type":"binary","op":"*","left":{"type":"call","fn":"countPicks","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["pick","type"]},"right":{"type":"string","value":"tradition"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["pick","fields","key"]},"right":{"type":"string","value":"vowed"}}}]},"right":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"class"}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"full-mage"},"right":{"type":"name","path":["copy","tags"]}}}]},"right":{"type":"int","value":0}},"then":{"type":"int","value":2},"else":{"type":"int","value":1}}}},"countPicks(pick.type == 'tradition' && pick.fields.key == 'wise')\n * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)":{"text":"countPicks(pick.type == 'tradition' && pick.fields.key == 'wise') * (countCopies(copy.type == 'class' && 'full-mage' in copy.tags) > 0 ? 2 : 1)","tree":{"type":"binary","op":"*","left":{"type":"call","fn":"countPicks","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["pick","type"]},"right":{"type":"string","value":"tradition"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["pick","fields","key"]},"right":{"type":"string","value":"wise"}}}]},"right":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"class"}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"full-mage"},"right":{"type":"name","path":["copy","tags"]}}}]},"right":{"type":"int","value":0}},"then":{"type":"int","value":2},"else":{"type":"int","value":1}}}},"damage.killingBlow > 0":{"text":"damage.killingBlow > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["damage","killingBlow"]},"right":{"type":"int","value":0}}},"effort.accursed.max > 0":{"text":"effort.accursed.max > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["effort","accursed","max"]},"right":{"type":"int","value":0}}},"effort.bard.max > 0":{"text":"effort.bard.max > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["effort","bard","max"]},"right":{"type":"int","value":0}}},"effort.beastmaster.max > 0":{"text":"effort.beastmaster.max > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["effort","beastmaster","max"]},"right":{"type":"int","value":0}}},"effort.bloodpriest.max > 0":{"text":"effort.bloodpriest.max > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["effort","bloodpriest","max"]},"right":{"type":"int","value":0}}},"effort.duelist.max > 0":{"text":"effort.duelist.max > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["effort","duelist","max"]},"right":{"type":"int","value":0}}},"effort.elementalist.max > 0":{"text":"effort.elementalist.max > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["effort","elementalist","max"]},"right":{"type":"int","value":0}}},"effort.healer.max > 0":{"text":"effort.healer.max > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["effort","healer","max"]},"right":{"type":"int","value":0}}},"effort.highmage.max > 0":{"text":"effort.highmage.max > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["effort","highmage","max"]},"right":{"type":"int","value":0}}},"effort.mageslayer.max > 0":{"text":"effort.mageslayer.max > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["effort","mageslayer","max"]},"right":{"type":"int","value":0}}},"effort.necromancer.max > 0":{"text":"effort.necromancer.max > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["effort","necromancer","max"]},"right":{"type":"int","value":0}}},"effort.skinshifter.max > 0":{"text":"effort.skinshifter.max > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["effort","skinshifter","max"]},"right":{"type":"int","value":0}}},"effort.thoughtnoble.max > 0":{"text":"effort.thoughtnoble.max > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["effort","thoughtnoble","max"]},"right":{"type":"int","value":0}}},"effort.vowed.max > 0":{"text":"effort.vowed.max > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["effort","vowed","max"]},"right":{"type":"int","value":0}}},"enc.over < 3":{"text":"enc.over < 3","tree":{"type":"binary","op":"<","left":{"type":"name","path":["enc","over"]},"right":{"type":"int","value":3}}},"fieldId('effort.{effortTrad}.day', x)":{"text":"fieldId('effort.{effortTrad}.day', x)","tree":{"type":"call","fn":"fieldId","args":[{"type":"string","value":"effort.{effortTrad}.day"},{"type":"name","path":["x"]}]}},"fieldId('effort.{effortTrad}.ongoing', item.tradition)":{"text":"fieldId('effort.{effortTrad}.ongoing', item.tradition)","tree":{"type":"call","fn":"fieldId","args":[{"type":"string","value":"effort.{effortTrad}.ongoing"},{"type":"name","path":["item","tradition"]}]}},"fieldId('effort.{effortTrad}.scene', x)":{"text":"fieldId('effort.{effortTrad}.scene', x)","tree":{"type":"call","fn":"fieldId","args":[{"type":"string","value":"effort.{effortTrad}.scene"},{"type":"name","path":["x"]}]}},"fieldId('effort.{effortTrad}.{effortSpan}', item.tradition, item.effort)":{"text":"fieldId('effort.{effortTrad}.{effortSpan}', item.tradition, item.effort)","tree":{"type":"call","fn":"fieldId","args":[{"type":"string","value":"effort.{effortTrad}.{effortSpan}"},{"type":"name","path":["item","tradition"]},{"type":"name","path":["item","effort"]}]}},"fieldId('skillCredit.{skill}', flags.target)":{"text":"fieldId('skillCredit.{skill}', flags.target)","tree":{"type":"call","fn":"fieldId","args":[{"type":"string","value":"skillCredit.{skill}"},{"type":"name","path":["flags","target"]}]}},"fieldId('skillCredit.{skill}', steps.pick.picked)":{"text":"fieldId('skillCredit.{skill}', steps.pick.picked)","tree":{"type":"call","fn":"fieldId","args":[{"type":"string","value":"skillCredit.{skill}"},{"type":"name","path":["steps","pick","picked"]}]}},"fieldId('skills.{skill}', flags.target)":{"text":"fieldId('skills.{skill}', flags.target)","tree":{"type":"call","fn":"fieldId","args":[{"type":"string","value":"skills.{skill}"},{"type":"name","path":["flags","target"]}]}},"fieldId('skills.{skill}', steps.pick.picked)":{"text":"fieldId('skills.{skill}', steps.pick.picked)","tree":{"type":"call","fn":"fieldId","args":[{"type":"string","value":"skills.{skill}"},{"type":"name","path":["steps","pick","picked"]}]}},"fieldOf('arts.{artTrad}.owed', item.tradition) > 0\n && (countCopies(copy.item == item.id) == 0 || 'repeatable' in item.tags)\n && level >= item.minLevel && !('granted' in item.tags)\n && (!has(item.requiresArt) || countCopies(copy.item == item.requiresArt) > 0)":{"text":"fieldOf('arts.{artTrad}.owed', item.tradition) > 0 && (countCopies(copy.item == item.id) == 0 || 'repeatable' in item.tags) && level >= item.minLevel && !('granted' in item.tags) && (!has(item.requiresArt) || countCopies(copy.item == item.requiresArt) > 0)","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":">","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"arts.{artTrad}.owed"},{"type":"name","path":["item","tradition"]}]},"right":{"type":"int","value":0}},"right":{"type":"binary","op":"||","left":{"type":"binary","op":"==","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"==","left":{"type":"name","path":["copy","item"]},"right":{"type":"name","path":["item","id"]}}]},"right":{"type":"int","value":0}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"repeatable"},"right":{"type":"name","path":["item","tags"]}}}},"right":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"name","path":["item","minLevel"]}}},"right":{"type":"unary","op":"!","operand":{"type":"binary","op":"in","left":{"type":"string","value":"granted"},"right":{"type":"name","path":["item","tags"]}}}},"right":{"type":"binary","op":"||","left":{"type":"unary","op":"!","operand":{"type":"call","fn":"has","args":[{"type":"name","path":["item","requiresArt"]}]}},"right":{"type":"binary","op":">","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"==","left":{"type":"name","path":["copy","item"]},"right":{"type":"name","path":["item","requiresArt"]}}]},"right":{"type":"int","value":0}}}}},"fieldOf('attributes.{attr}.score', value) < 14":{"text":"fieldOf('attributes.{attr}.score', value) < 14","tree":{"type":"binary","op":"<","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"attributes.{attr}.score"},{"type":"name","path":["value"]}]},"right":{"type":"int","value":14}}},"fieldOf('attributes.{attr}.score', value) < 18":{"text":"fieldOf('attributes.{attr}.score', value) < 18","tree":{"type":"binary","op":"<","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"attributes.{attr}.score"},{"type":"name","path":["value"]}]},"right":{"type":"int","value":18}}},"fieldOf('effort.{effortTrad}.ongoing', item.tradition) > 0":{"text":"fieldOf('effort.{effortTrad}.ongoing', item.tradition) > 0","tree":{"type":"binary","op":">","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"effort.{effortTrad}.ongoing"},{"type":"name","path":["item","tradition"]}]},"right":{"type":"int","value":0}}},"fieldOf('skillCredit.{skill}', flags.direct ? params.skill : steps.pick.picked)\n + params.points":{"text":"fieldOf('skillCredit.{skill}', flags.direct ? params.skill : steps.pick.picked) + params.points","tree":{"type":"binary","op":"+","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"skillCredit.{skill}"},{"type":"conditional","test":{"type":"name","path":["flags","direct"]},"then":{"type":"name","path":["params","skill"]},"else":{"type":"name","path":["steps","pick","picked"]}}]},"right":{"type":"name","path":["params","points"]}}},"fieldOf('skills.{skill}', flags.direct ? params.skill : steps.pick.picked)":{"text":"fieldOf('skills.{skill}', flags.direct ? params.skill : steps.pick.picked)","tree":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"skills.{skill}"},{"type":"conditional","test":{"type":"name","path":["flags","direct"]},"then":{"type":"name","path":["params","skill"]},"else":{"type":"name","path":["steps","pick","picked"]}}]}},"fieldOf('skills.{skill}', steps.pick.picked) + 2\n - fieldOf('skillCredit.{skill}', steps.pick.picked)":{"text":"fieldOf('skills.{skill}', steps.pick.picked) + 2 - fieldOf('skillCredit.{skill}', steps.pick.picked)","tree":{"type":"binary","op":"-","left":{"type":"binary","op":"+","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"skills.{skill}"},{"type":"name","path":["steps","pick","picked"]}]},"right":{"type":"int","value":2}},"right":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"skillCredit.{skill}"},{"type":"name","path":["steps","pick","picked"]}]}}},"fieldOf('skills.{skill}', value) < flags.cap":{"text":"fieldOf('skills.{skill}', value) < flags.cap","tree":{"type":"binary","op":"<","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"skills.{skill}"},{"type":"name","path":["value"]}]},"right":{"type":"name","path":["flags","cap"]}}},"fieldOf('tradition.{trad}.tier', item.tradition) > 0 || invoker.education == item.tradition":{"text":"fieldOf('tradition.{trad}.tier', item.tradition) > 0 || invoker.education == item.tradition","tree":{"type":"binary","op":"||","left":{"type":"binary","op":">","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"tradition.{trad}.tier"},{"type":"name","path":["item","tradition"]}]},"right":{"type":"int","value":0}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["invoker","education"]},"right":{"type":"name","path":["item","tradition"]}}}},"fieldOf('tradition.{trad}.tier', value) > 0":{"text":"fieldOf('tradition.{trad}.tier', value) > 0","tree":{"type":"binary","op":">","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"tradition.{trad}.tier"},{"type":"name","path":["value"]}]},"right":{"type":"int","value":0}}},"filterList([@armor.linothorax, @armor.large-shield, @armor.war-shirt, options[0]],\n x in options)[0]":{"text":"filterList([@armor.linothorax, @armor.large-shield, @armor.war-shirt, options[0]], x in options)[0]","tree":{"type":"index","object":{"type":"call","fn":"filterList","args":[{"type":"list","items":[{"type":"ref","id":"armor.linothorax"},{"type":"ref","id":"armor.large-shield"},{"type":"ref","id":"armor.war-shirt"},{"type":"index","object":{"type":"name","path":["options"]},"index":{"type":"int","value":0}}]},{"type":"binary","op":"in","left":{"type":"name","path":["x"]},"right":{"type":"name","path":["options"]}}]},"index":{"type":"int","value":0}}},"filterList([@gear.backpack, @gear.rations, @gear.waterskin, @gear.tinder-box,\n @gear.torch, @gear.rope, options[0]], x in options)[0]":{"text":"filterList([@gear.backpack, @gear.rations, @gear.waterskin, @gear.tinder-box, @gear.torch, @gear.rope, options[0]], x in options)[0]","tree":{"type":"index","object":{"type":"call","fn":"filterList","args":[{"type":"list","items":[{"type":"ref","id":"gear.backpack"},{"type":"ref","id":"gear.rations"},{"type":"ref","id":"gear.waterskin"},{"type":"ref","id":"gear.tinder-box"},{"type":"ref","id":"gear.torch"},{"type":"ref","id":"gear.rope"},{"type":"index","object":{"type":"name","path":["options"]},"index":{"type":"int","value":0}}]},{"type":"binary","op":"in","left":{"type":"name","path":["x"]},"right":{"type":"name","path":["options"]}}]},"index":{"type":"int","value":0}}},"filterList([spells.mode != 'none' || tradition.vowed.tier > 0 ? @weapons.staff\n : class.warrior > 0 || class.expert > 0 ? @weapons.short-sword\n : @weapons.light-spear, options[0]], x in options)[0]":{"text":"filterList([spells.mode != 'none' || tradition.vowed.tier > 0 ? @weapons.staff : class.warrior > 0 || class.expert > 0 ? @weapons.short-sword : @weapons.light-spear, options[0]], x in options)[0]","tree":{"type":"index","object":{"type":"call","fn":"filterList","args":[{"type":"list","items":[{"type":"conditional","test":{"type":"binary","op":"||","left":{"type":"binary","op":"!=","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"none"}},"right":{"type":"binary","op":">","left":{"type":"name","path":["tradition","vowed","tier"]},"right":{"type":"int","value":0}}},"then":{"type":"ref","id":"weapons.staff"},"else":{"type":"conditional","test":{"type":"binary","op":"||","left":{"type":"binary","op":">","left":{"type":"name","path":["class","warrior"]},"right":{"type":"int","value":0}},"right":{"type":"binary","op":">","left":{"type":"name","path":["class","expert"]},"right":{"type":"int","value":0}}},"then":{"type":"ref","id":"weapons.short-sword"},"else":{"type":"ref","id":"weapons.light-spear"}}},{"type":"index","object":{"type":"name","path":["options"]},"index":{"type":"int","value":0}}]},{"type":"binary","op":"in","left":{"type":"name","path":["x"]},"right":{"type":"name","path":["options"]}}]},"index":{"type":"int","value":0}}},"flags.ac < 0":{"text":"flags.ac < 0","tree":{"type":"binary","op":"<","left":{"type":"name","path":["flags","ac"]},"right":{"type":"int","value":0}}},"flags.allowed":{"text":"flags.allowed","tree":{"type":"name","path":["flags","allowed"]}},"flags.attribute":{"text":"flags.attribute","tree":{"type":"name","path":["flags","attribute"]}},"flags.cost - flags.expert > 0":{"text":"flags.cost - flags.expert > 0","tree":{"type":"binary","op":">","left":{"type":"binary","op":"-","left":{"type":"name","path":["flags","cost"]},"right":{"type":"name","path":["flags","expert"]}},"right":{"type":"int","value":0}}},"flags.credit >= flags.from + 2 ? 1 : 0":{"text":"flags.credit >= flags.from + 2 ? 1 : 0","tree":{"type":"conditional","test":{"type":"binary","op":">=","left":{"type":"name","path":["flags","credit"]},"right":{"type":"binary","op":"+","left":{"type":"name","path":["flags","from"]},"right":{"type":"int","value":2}}},"then":{"type":"int","value":1},"else":{"type":"int","value":0}}},"flags.credit >= flags.from + 2 ? flags.credit - flags.from - 2 : flags.credit":{"text":"flags.credit >= flags.from + 2 ? flags.credit - flags.from - 2 : flags.credit","tree":{"type":"conditional","test":{"type":"binary","op":">=","left":{"type":"name","path":["flags","credit"]},"right":{"type":"binary","op":"+","left":{"type":"name","path":["flags","from"]},"right":{"type":"int","value":2}}},"then":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"name","path":["flags","credit"]},"right":{"type":"name","path":["flags","from"]}},"right":{"type":"int","value":2}},"else":{"type":"name","path":["flags","credit"]}}},"flags.dealt":{"text":"flags.dealt","tree":{"type":"name","path":["flags","dealt"]}},"flags.dealt > 0":{"text":"flags.dealt > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["flags","dealt"]},"right":{"type":"int","value":0}}},"flags.dice":{"text":"flags.dice","tree":{"type":"name","path":["flags","dice"]}},"flags.difficulty < 0":{"text":"flags.difficulty < 0","tree":{"type":"binary","op":"<","left":{"type":"name","path":["flags","difficulty"]},"right":{"type":"int","value":0}}},"flags.direct ? params.skill : steps.pick.picked":{"text":"flags.direct ? params.skill : steps.pick.picked","tree":{"type":"conditional","test":{"type":"name","path":["flags","direct"]},"then":{"type":"name","path":["params","skill"]},"else":{"type":"name","path":["steps","pick","picked"]}}},"flags.direct || has(steps.pick)":{"text":"flags.direct || has(steps.pick)","tree":{"type":"binary","op":"||","left":{"type":"name","path":["flags","direct"]},"right":{"type":"call","fn":"has","args":[{"type":"name","path":["steps","pick"]}]}}},"flags.expert > 0":{"text":"flags.expert > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["flags","expert"]},"right":{"type":"int","value":0}}},"flags.first + flags.second":{"text":"flags.first + flags.second","tree":{"type":"binary","op":"+","left":{"type":"name","path":["flags","first"]},"right":{"type":"name","path":["flags","second"]}}},"flags.from + flags.first < 4 && flags.left >= flags.from + flags.first + 2 ? 1 : 0":{"text":"flags.from + flags.first < 4 && flags.left >= flags.from + flags.first + 2 ? 1 : 0","tree":{"type":"conditional","test":{"type":"binary","op":"&&","left":{"type":"binary","op":"<","left":{"type":"binary","op":"+","left":{"type":"name","path":["flags","from"]},"right":{"type":"name","path":["flags","first"]}},"right":{"type":"int","value":4}},"right":{"type":"binary","op":">=","left":{"type":"name","path":["flags","left"]},"right":{"type":"binary","op":"+","left":{"type":"binary","op":"+","left":{"type":"name","path":["flags","from"]},"right":{"type":"name","path":["flags","first"]}},"right":{"type":"int","value":2}}}},"then":{"type":"int","value":1},"else":{"type":"int","value":0}}},"flags.hit":{"text":"flags.hit","tree":{"type":"name","path":["flags","hit"]}},"flags.hit ? 'hit' : 'miss'":{"text":"flags.hit ? 'hit' : 'miss'","tree":{"type":"conditional","test":{"type":"name","path":["flags","hit"]},"then":{"type":"string","value":"hit"},"else":{"type":"string","value":"miss"}}},"flags.hit ? max(has(steps.damage) ? steps.damage.total : 0,\n flags.ac < 0 && has(steps.shock) ? steps.shock.total : flags.shockDamage, 0)\n : flags.shockDamage":{"text":"flags.hit ? max(has(steps.damage) ? steps.damage.total : 0, flags.ac < 0 && has(steps.shock) ? steps.shock.total : flags.shockDamage, 0) : flags.shockDamage","tree":{"type":"conditional","test":{"type":"name","path":["flags","hit"]},"then":{"type":"call","fn":"max","args":[{"type":"conditional","test":{"type":"call","fn":"has","args":[{"type":"name","path":["steps","damage"]}]},"then":{"type":"name","path":["steps","damage","total"]},"else":{"type":"int","value":0}},{"type":"conditional","test":{"type":"binary","op":"&&","left":{"type":"binary","op":"<","left":{"type":"name","path":["flags","ac"]},"right":{"type":"int","value":0}},"right":{"type":"call","fn":"has","args":[{"type":"name","path":["steps","shock"]}]}},"then":{"type":"name","path":["steps","shock","total"]},"else":{"type":"name","path":["flags","shockDamage"]}},{"type":"int","value":0}]},"else":{"type":"name","path":["flags","shockDamage"]}}},"flags.learning":{"text":"flags.learning","tree":{"type":"name","path":["flags","learning"]}},"flags.level":{"text":"flags.level","tree":{"type":"name","path":["flags","level"]}},"flags.mode == 'unarmed'":{"text":"flags.mode == 'unarmed'","tree":{"type":"binary","op":"==","left":{"type":"name","path":["flags","mode"]},"right":{"type":"string","value":"unarmed"}}},"flags.raise":{"text":"flags.raise","tree":{"type":"name","path":["flags","raise"]}},"flags.second > 0 ? flags.left - flags.from - flags.first - 2 : flags.left":{"text":"flags.second > 0 ? flags.left - flags.from - flags.first - 2 : flags.left","tree":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["flags","second"]},"right":{"type":"int","value":0}},"then":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"name","path":["flags","left"]},"right":{"type":"name","path":["flags","from"]}},"right":{"type":"name","path":["flags","first"]}},"right":{"type":"int","value":2}},"else":{"type":"name","path":["flags","left"]}}},"flags.shock":{"text":"flags.shock","tree":{"type":"name","path":["flags","shock"]}},"flags.shock > 0 && flags.mode in ['melee', 'unarmed']":{"text":"flags.shock > 0 && flags.mode in ['melee', 'unarmed']","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":">","left":{"type":"name","path":["flags","shock"]},"right":{"type":"int","value":0}},"right":{"type":"binary","op":"in","left":{"type":"name","path":["flags","mode"]},"right":{"type":"list","items":[{"type":"string","value":"melee"},{"type":"string","value":"unarmed"}]}}}},"flags.skill >= 0 ? flags.skill : -2":{"text":"flags.skill >= 0 ? flags.skill : -2","tree":{"type":"conditional","test":{"type":"binary","op":">=","left":{"type":"name","path":["flags","skill"]},"right":{"type":"int","value":0}},"then":{"type":"name","path":["flags","skill"]},"else":{"type":"unary","op":"-","operand":{"type":"int","value":2}}}},"flags.traditionSkills[size(steps.traditionSkill)]":{"text":"flags.traditionSkills[size(steps.traditionSkill)]","tree":{"type":"index","object":{"type":"name","path":["flags","traditionSkills"]},"index":{"type":"call","fn":"size","args":[{"type":"name","path":["steps","traditionSkill"]}]}}},"floor(attributes.str.score / 2)":{"text":"floor(attributes.str.score / 2)","tree":{"type":"call","fn":"floor","args":[{"type":"binary","op":"/","left":{"type":"name","path":["attributes","str","score"]},"right":{"type":"int","value":2}}]}},"floor(level / 2)":{"text":"floor(level / 2)","tree":{"type":"call","fn":"floor","args":[{"type":"binary","op":"/","left":{"type":"name","path":["level"]},"right":{"type":"int","value":2}}]}},"foci.allowed":{"text":"foci.allowed","tree":{"type":"name","path":["foci","allowed"]}},"foci.taken <= foci.allowed":{"text":"foci.taken <= foci.allowed","tree":{"type":"binary","op":"<=","left":{"type":"name","path":["foci","taken"]},"right":{"type":"name","path":["foci","allowed"]}}},"has(flags.target)":{"text":"has(flags.target)","tree":{"type":"call","fn":"has","args":[{"type":"name","path":["flags","target"]}]}},"has(params.difficulty) ? params.difficulty : -1":{"text":"has(params.difficulty) ? params.difficulty : -1","tree":{"type":"conditional","test":{"type":"call","fn":"has","args":[{"type":"name","path":["params","difficulty"]}]},"then":{"type":"name","path":["params","difficulty"]},"else":{"type":"unary","op":"-","operand":{"type":"int","value":1}}}},"has(params.targetAc) ? params.targetAc : -1":{"text":"has(params.targetAc) ? params.targetAc : -1","tree":{"type":"conditional","test":{"type":"call","fn":"has","args":[{"type":"name","path":["params","targetAc"]}]},"then":{"type":"name","path":["params","targetAc"]},"else":{"type":"unary","op":"-","operand":{"type":"int","value":1}}}},"has(steps.shock) && flags.ac >= 0\n && (flags.ac <= flags.shockAc\n || (flags.mode == 'melee' && shock.ignoresAc)\n || (flags.mode == 'unarmed' && shock.unarmedIgnoresAc))\n ? max(0, steps.shock.total) : 0":{"text":"has(steps.shock) && flags.ac >= 0 && (flags.ac <= flags.shockAc || flags.mode == 'melee' && shock.ignoresAc || flags.mode == 'unarmed' && shock.unarmedIgnoresAc) ? max(0, steps.shock.total) : 0","tree":{"type":"conditional","test":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"call","fn":"has","args":[{"type":"name","path":["steps","shock"]}]},"right":{"type":"binary","op":">=","left":{"type":"name","path":["flags","ac"]},"right":{"type":"int","value":0}}},"right":{"type":"binary","op":"||","left":{"type":"binary","op":"||","left":{"type":"binary","op":"<=","left":{"type":"name","path":["flags","ac"]},"right":{"type":"name","path":["flags","shockAc"]}},"right":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["flags","mode"]},"right":{"type":"string","value":"melee"}},"right":{"type":"name","path":["shock","ignoresAc"]}}},"right":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["flags","mode"]},"right":{"type":"string","value":"unarmed"}},"right":{"type":"name","path":["shock","unarmedIgnoresAc"]}}}},"then":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["steps","shock","total"]}]},"else":{"type":"int","value":0}}},"has(steps.spellTradition)":{"text":"has(steps.spellTradition)","tree":{"type":"call","fn":"has","args":[{"type":"name","path":["steps","spellTradition"]}]}},"hasChoice('partial')":{"text":"hasChoice('partial')","tree":{"type":"call","fn":"hasChoice","args":[{"type":"string","value":"partial"}]}},"hp.current == 0 && !conditions.mortallyWounded":{"text":"hp.current == 0 && !conditions.mortallyWounded","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["hp","current"]},"right":{"type":"int","value":0}},"right":{"type":"unary","op":"!","operand":{"type":"name","path":["conditions","mortallyWounded"]}}}},"hp.dieBonus + attributes.con.mod >= 0 ? (level)d6\n : hp.dieBonus + attributes.con.mod == -1 ? (level)d6min2\n : hp.dieBonus + attributes.con.mod == -2 ? (level)d6min3\n : (level)d6min4":{"text":"hp.dieBonus + attributes.con.mod >= 0 ? (level)d6 : hp.dieBonus + attributes.con.mod == -1 ? (level)d6min2 : hp.dieBonus + attributes.con.mod == -2 ? (level)d6min3 : (level)d6min4","tree":{"type":"conditional","test":{"type":"binary","op":">=","left":{"type":"binary","op":"+","left":{"type":"name","path":["hp","dieBonus"]},"right":{"type":"name","path":["attributes","con","mod"]}},"right":{"type":"int","value":0}},"then":{"type":"dice","count":{"type":"name","path":["level"]},"sides":6,"modifiers":[]},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"binary","op":"+","left":{"type":"name","path":["hp","dieBonus"]},"right":{"type":"name","path":["attributes","con","mod"]}},"right":{"type":"unary","op":"-","operand":{"type":"int","value":1}}},"then":{"type":"dice","count":{"type":"name","path":["level"]},"sides":6,"modifiers":[{"type":"minimum","target":2}]},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"binary","op":"+","left":{"type":"name","path":["hp","dieBonus"]},"right":{"type":"name","path":["attributes","con","mod"]}},"right":{"type":"unary","op":"-","operand":{"type":"int","value":2}}},"then":{"type":"dice","count":{"type":"name","path":["level"]},"sides":6,"modifiers":[{"type":"minimum","target":3}]},"else":{"type":"dice","count":{"type":"name","path":["level"]},"sides":6,"modifiers":[{"type":"minimum","target":4}]}}}}},"hp.max":{"text":"hp.max","tree":{"type":"name","path":["hp","max"]}},"hp.max - flags.oldMax":{"text":"hp.max - flags.oldMax","tree":{"type":"binary","op":"-","left":{"type":"name","path":["hp","max"]},"right":{"type":"name","path":["flags","oldMax"]}}},"hp.max > flags.oldMax":{"text":"hp.max > flags.oldMax","tree":{"type":"binary","op":">","left":{"type":"name","path":["hp","max"]},"right":{"type":"name","path":["flags","oldMax"]}}},"hp.rolled":{"text":"hp.rolled","tree":{"type":"name","path":["hp","rolled"]}},"item.attribute == 'str-dex'\n ? (attributes.str.mod >= attributes.dex.mod ? 'str' : 'dex') : item.attribute":{"text":"item.attribute == 'str-dex' ? (attributes.str.mod >= attributes.dex.mod ? 'str' : 'dex') : item.attribute","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["item","attribute"]},"right":{"type":"string","value":"str-dex"}},"then":{"type":"conditional","test":{"type":"binary","op":">=","left":{"type":"name","path":["attributes","str","mod"]},"right":{"type":"name","path":["attributes","dex","mod"]}},"then":{"type":"string","value":"str"},"else":{"type":"string","value":"dex"}},"else":{"type":"name","path":["item","attribute"]}}},"item.effort != 'none' && level >= item.minLevel && !(item.effort == 'ongoing' && self.active)\n && item.tradition in keysOf('effortTrad')\n && fieldOf('effort.{effortTrad}.free', item.tradition) > 0\n && !(item.tradition in keysOf('armorTrad') && magic.hindered)\n && !(item.tradition in keysOf('heavyArmorTrad') && duelist.hindered)":{"text":"item.effort != 'none' && level >= item.minLevel && !(item.effort == 'ongoing' && self.active) && item.tradition in keysOf('effortTrad') && fieldOf('effort.{effortTrad}.free', item.tradition) > 0 && !(item.tradition in keysOf('armorTrad') && magic.hindered) && !(item.tradition in keysOf('heavyArmorTrad') && duelist.hindered)","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"!=","left":{"type":"name","path":["item","effort"]},"right":{"type":"string","value":"none"}},"right":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"name","path":["item","minLevel"]}}},"right":{"type":"unary","op":"!","operand":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["item","effort"]},"right":{"type":"string","value":"ongoing"}},"right":{"type":"name","path":["self","active"]}}}},"right":{"type":"binary","op":"in","left":{"type":"name","path":["item","tradition"]},"right":{"type":"call","fn":"keysOf","args":[{"type":"string","value":"effortTrad"}]}}},"right":{"type":"binary","op":">","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"effort.{effortTrad}.free"},{"type":"name","path":["item","tradition"]}]},"right":{"type":"int","value":0}}},"right":{"type":"unary","op":"!","operand":{"type":"binary","op":"&&","left":{"type":"binary","op":"in","left":{"type":"name","path":["item","tradition"]},"right":{"type":"call","fn":"keysOf","args":[{"type":"string","value":"armorTrad"}]}},"right":{"type":"name","path":["magic","hindered"]}}}},"right":{"type":"unary","op":"!","operand":{"type":"binary","op":"&&","left":{"type":"binary","op":"in","left":{"type":"name","path":["item","tradition"]},"right":{"type":"call","fn":"keysOf","args":[{"type":"string","value":"heavyArmorTrad"}]}},"right":{"type":"name","path":["duelist","hindered"]}}}}},"item.effort == 'ongoing'":{"text":"item.effort == 'ongoing'","tree":{"type":"binary","op":"==","left":{"type":"name","path":["item","effort"]},"right":{"type":"string","value":"ongoing"}}},"item.effort == 'ongoing' && !('granted' in item.tags)":{"text":"item.effort == 'ongoing' && !('granted' in item.tags)","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["item","effort"]},"right":{"type":"string","value":"ongoing"}},"right":{"type":"unary","op":"!","operand":{"type":"binary","op":"in","left":{"type":"string","value":"granted"},"right":{"type":"name","path":["item","tags"]}}}}},"item.effort == 'ongoing' && 'granted' in item.tags":{"text":"item.effort == 'ongoing' && 'granted' in item.tags","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["item","effort"]},"right":{"type":"string","value":"ongoing"}},"right":{"type":"binary","op":"in","left":{"type":"string","value":"granted"},"right":{"type":"name","path":["item","tags"]}}}},"item.effort == 'ongoing' && self.active":{"text":"item.effort == 'ongoing' && self.active","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["item","effort"]},"right":{"type":"string","value":"ongoing"}},"right":{"type":"name","path":["self","active"]}}},"item.id == steps.focus.picked && self.level < item.maxLevel":{"text":"item.id == steps.focus.picked && self.level < item.maxLevel","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["item","id"]},"right":{"type":"name","path":["steps","focus","picked"]}},"right":{"type":"binary","op":"<","left":{"type":"name","path":["self","level"]},"right":{"type":"name","path":["item","maxLevel"]}}}},"item.level":{"text":"item.level","tree":{"type":"name","path":["item","level"]}},"item.level <= spells.maxLevel\n && (item.list == 'high' ? spells.mode != 'none'\n : item.list in keysOf('trad')\n && (fieldOf('tradition.{trad}.tier', item.list) > 0 || invoker.education == item.list))":{"text":"item.level <= spells.maxLevel && (item.list == 'high' ? spells.mode != 'none' : item.list in keysOf('trad') && (fieldOf('tradition.{trad}.tier', item.list) > 0 || invoker.education == item.list))","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"<=","left":{"type":"name","path":["item","level"]},"right":{"type":"name","path":["spells","maxLevel"]}},"right":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["item","list"]},"right":{"type":"string","value":"high"}},"then":{"type":"binary","op":"!=","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"none"}},"else":{"type":"binary","op":"&&","left":{"type":"binary","op":"in","left":{"type":"name","path":["item","list"]},"right":{"type":"call","fn":"keysOf","args":[{"type":"string","value":"trad"}]}},"right":{"type":"binary","op":"||","left":{"type":"binary","op":">","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"tradition.{trad}.tier"},{"type":"name","path":["item","list"]}]},"right":{"type":"int","value":0}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["invoker","education"]},"right":{"type":"name","path":["item","list"]}}}}}}},"item.level <= spells.maxLevel && countCopies(copy.item == item.id) == 0\n && (item.list == 'high' || item.list == steps.spellTradition.picked\n || (steps.spellTradition.picked == 'invoker' && invoker.education == item.list))":{"text":"item.level <= spells.maxLevel && countCopies(copy.item == item.id) == 0 && (item.list == 'high' || item.list == steps.spellTradition.picked || steps.spellTradition.picked == 'invoker' && invoker.education == item.list)","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"<=","left":{"type":"name","path":["item","level"]},"right":{"type":"name","path":["spells","maxLevel"]}},"right":{"type":"binary","op":"==","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"==","left":{"type":"name","path":["copy","item"]},"right":{"type":"name","path":["item","id"]}}]},"right":{"type":"int","value":0}}},"right":{"type":"binary","op":"||","left":{"type":"binary","op":"||","left":{"type":"binary","op":"==","left":{"type":"name","path":["item","list"]},"right":{"type":"string","value":"high"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["item","list"]},"right":{"type":"name","path":["steps","spellTradition","picked"]}}},"right":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["steps","spellTradition","picked"]},"right":{"type":"string","value":"invoker"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["invoker","education"]},"right":{"type":"name","path":["item","list"]}}}}}},"item.level == 1 && countCopies(copy.item == item.id) == 0\n && (item.list == 'high' || (item.list in keysOf('trad')\n && (fieldOf('tradition.{trad}.tier', item.list) > 0\n || invoker.education == item.list)))":{"text":"item.level == 1 && countCopies(copy.item == item.id) == 0 && (item.list == 'high' || item.list in keysOf('trad') && (fieldOf('tradition.{trad}.tier', item.list) > 0 || invoker.education == item.list))","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["item","level"]},"right":{"type":"int","value":1}},"right":{"type":"binary","op":"==","left":{"type":"call","fn":"countCopies","args":[{"type":"binary","op":"==","left":{"type":"name","path":["copy","item"]},"right":{"type":"name","path":["item","id"]}}]},"right":{"type":"int","value":0}}},"right":{"type":"binary","op":"||","left":{"type":"binary","op":"==","left":{"type":"name","path":["item","list"]},"right":{"type":"string","value":"high"}},"right":{"type":"binary","op":"&&","left":{"type":"binary","op":"in","left":{"type":"name","path":["item","list"]},"right":{"type":"call","fn":"keysOf","args":[{"type":"string","value":"trad"}]}},"right":{"type":"binary","op":"||","left":{"type":"binary","op":">","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"tradition.{trad}.tier"},{"type":"name","path":["item","list"]}]},"right":{"type":"int","value":0}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["invoker","education"]},"right":{"type":"name","path":["item","list"]}}}}}}},"item.maxLevel":{"text":"item.maxLevel","tree":{"type":"name","path":["item","maxLevel"]}},"item.skill == 'punch' ? 'attack.punchBase'\n : !params.thrown && item.id in duelist.favored ? 'attack.favoredBase'\n : 'attack.base'":{"text":"item.skill == 'punch' ? 'attack.punchBase' : !params.thrown && item.id in duelist.favored ? 'attack.favoredBase' : 'attack.base'","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["item","skill"]},"right":{"type":"string","value":"punch"}},"then":{"type":"string","value":"attack.punchBase"},"else":{"type":"conditional","test":{"type":"binary","op":"&&","left":{"type":"unary","op":"!","operand":{"type":"name","path":["params","thrown"]}},"right":{"type":"binary","op":"in","left":{"type":"name","path":["item","id"]},"right":{"type":"name","path":["duelist","favored"]}}},"then":{"type":"string","value":"attack.favoredBase"},"else":{"type":"string","value":"attack.base"}}}},"item.skill == 'stab' && !('unarmed' in item.tags)":{"text":"item.skill == 'stab' && !('unarmed' in item.tags)","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["item","skill"]},"right":{"type":"string","value":"stab"}},"right":{"type":"unary","op":"!","operand":{"type":"binary","op":"in","left":{"type":"string","value":"unarmed"},"right":{"type":"name","path":["item","tags"]}}}}},"keysOf('effortTrad')":{"text":"keysOf('effortTrad')","tree":{"type":"call","fn":"keysOf","args":[{"type":"string","value":"effortTrad"}]}},"keysOf('skill') + keysOf('attr')":{"text":"keysOf('skill') + keysOf('attr')","tree":{"type":"binary","op":"+","left":{"type":"call","fn":"keysOf","args":[{"type":"string","value":"skill"}]},"right":{"type":"call","fn":"keysOf","args":[{"type":"string","value":"attr"}]}}},"keysOf('spellTrad')":{"text":"keysOf('spellTrad')","tree":{"type":"call","fn":"keysOf","args":[{"type":"string","value":"spellTrad"}]}},"keysOf('spellTrad') + ['invoker']":{"text":"keysOf('spellTrad') + ['invoker']","tree":{"type":"binary","op":"+","left":{"type":"call","fn":"keysOf","args":[{"type":"string","value":"spellTrad"}]},"right":{"type":"list","items":[{"type":"string","value":"invoker"}]}}},"level":{"text":"level","tree":{"type":"name","path":["level"]}},"level * (hp.dieBonus + attributes.con.mod)":{"text":"level * (hp.dieBonus + attributes.con.mod)","tree":{"type":"binary","op":"*","left":{"type":"name","path":["level"]},"right":{"type":"binary","op":"+","left":{"type":"name","path":["hp","dieBonus"]},"right":{"type":"name","path":["attributes","con","mod"]}}}},"level >= 1":{"text":"level >= 1","tree":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"level >= 10":{"text":"level >= 10","tree":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"int","value":10}}},"level >= 10 ? 0\n : xp.pace == 'fast' ? [3, 6, 12, 18, 27, 39, 54, 72, 93][level - 1]\n : [6, 15, 24, 36, 51, 69, 87, 105, 139][level - 1]":{"text":"level >= 10 ? 0 : xp.pace == 'fast' ? [3, 6, 12, 18, 27, 39, 54, 72, 93][level - 1] : [6, 15, 24, 36, 51, 69, 87, 105, 139][level - 1]","tree":{"type":"conditional","test":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"int","value":10}},"then":{"type":"int","value":0},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["xp","pace"]},"right":{"type":"string","value":"fast"}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":3},{"type":"int","value":6},{"type":"int","value":12},{"type":"int","value":18},{"type":"int","value":27},{"type":"int","value":39},{"type":"int","value":54},{"type":"int","value":72},{"type":"int","value":93}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"index","object":{"type":"list","items":[{"type":"int","value":6},{"type":"int","value":15},{"type":"int","value":24},{"type":"int","value":36},{"type":"int","value":51},{"type":"int","value":69},{"type":"int","value":87},{"type":"int","value":105},{"type":"int","value":139}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}}}}},"level >= 2":{"text":"level >= 2","tree":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"int","value":2}}},"level >= 3":{"text":"level >= 3","tree":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"int","value":3}}},"level >= 4":{"text":"level >= 4","tree":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"int","value":4}}},"level >= 5":{"text":"level >= 5","tree":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"int","value":5}}},"level >= 6":{"text":"level >= 6","tree":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"int","value":6}}},"level >= 7":{"text":"level >= 7","tree":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"int","value":7}}},"level >= 8":{"text":"level >= 8","tree":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"int","value":8}}},"level >= 9":{"text":"level >= 9","tree":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"int","value":9}}},"level in [2, 5, 7, 10]":{"text":"level in [2, 5, 7, 10]","tree":{"type":"binary","op":"in","left":{"type":"name","path":["level"]},"right":{"type":"list","items":[{"type":"int","value":2},{"type":"int","value":5},{"type":"int","value":7},{"type":"int","value":10}]}}},"magic.hindered":{"text":"magic.hindered","tree":{"type":"name","path":["magic","hindered"]}},"mapList(filterList(keysOf('trad'), fieldOf('tradition.{trad}.tier', x) > 0\n && fieldOf('tradition.{trad}.skill', x) != ''), fieldOf('tradition.{trad}.skill', x))":{"text":"mapList(filterList(keysOf('trad'), fieldOf('tradition.{trad}.tier', x) > 0 && fieldOf('tradition.{trad}.skill', x) != ''), fieldOf('tradition.{trad}.skill', x))","tree":{"type":"call","fn":"mapList","args":[{"type":"call","fn":"filterList","args":[{"type":"call","fn":"keysOf","args":[{"type":"string","value":"trad"}]},{"type":"binary","op":"&&","left":{"type":"binary","op":">","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"tradition.{trad}.tier"},{"type":"name","path":["x"]}]},"right":{"type":"int","value":0}},"right":{"type":"binary","op":"!=","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"tradition.{trad}.skill"},{"type":"name","path":["x"]}]},"right":{"type":"string","value":""}}}]},{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"tradition.{trad}.skill"},{"type":"name","path":["x"]}]}]}},"max(-2, min(attributes.cha.modCap, (attributes.cha.score <= 3 ? -2\n : attributes.cha.score <= 7 ? -1 : attributes.cha.score <= 13 ? 0\n : attributes.cha.score <= 17 ? 1 : 2) + attributes.cha.modBonus))":{"text":"max(-2, min(attributes.cha.modCap, (attributes.cha.score <= 3 ? -2 : attributes.cha.score <= 7 ? -1 : attributes.cha.score <= 13 ? 0 : attributes.cha.score <= 17 ? 1 : 2) + attributes.cha.modBonus))","tree":{"type":"call","fn":"max","args":[{"type":"unary","op":"-","operand":{"type":"int","value":2}},{"type":"call","fn":"min","args":[{"type":"name","path":["attributes","cha","modCap"]},{"type":"binary","op":"+","left":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","cha","score"]},"right":{"type":"int","value":3}},"then":{"type":"unary","op":"-","operand":{"type":"int","value":2}},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","cha","score"]},"right":{"type":"int","value":7}},"then":{"type":"unary","op":"-","operand":{"type":"int","value":1}},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","cha","score"]},"right":{"type":"int","value":13}},"then":{"type":"int","value":0},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","cha","score"]},"right":{"type":"int","value":17}},"then":{"type":"int","value":1},"else":{"type":"int","value":2}}}}},"right":{"type":"name","path":["attributes","cha","modBonus"]}}]}]}},"max(-2, min(attributes.con.modCap, (attributes.con.score <= 3 ? -2\n : attributes.con.score <= 7 ? -1 : attributes.con.score <= 13 ? 0\n : attributes.con.score <= 17 ? 1 : 2) + attributes.con.modBonus))":{"text":"max(-2, min(attributes.con.modCap, (attributes.con.score <= 3 ? -2 : attributes.con.score <= 7 ? -1 : attributes.con.score <= 13 ? 0 : attributes.con.score <= 17 ? 1 : 2) + attributes.con.modBonus))","tree":{"type":"call","fn":"max","args":[{"type":"unary","op":"-","operand":{"type":"int","value":2}},{"type":"call","fn":"min","args":[{"type":"name","path":["attributes","con","modCap"]},{"type":"binary","op":"+","left":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","con","score"]},"right":{"type":"int","value":3}},"then":{"type":"unary","op":"-","operand":{"type":"int","value":2}},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","con","score"]},"right":{"type":"int","value":7}},"then":{"type":"unary","op":"-","operand":{"type":"int","value":1}},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","con","score"]},"right":{"type":"int","value":13}},"then":{"type":"int","value":0},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","con","score"]},"right":{"type":"int","value":17}},"then":{"type":"int","value":1},"else":{"type":"int","value":2}}}}},"right":{"type":"name","path":["attributes","con","modBonus"]}}]}]}},"max(-2, min(attributes.dex.modCap, (attributes.dex.score <= 3 ? -2\n : attributes.dex.score <= 7 ? -1 : attributes.dex.score <= 13 ? 0\n : attributes.dex.score <= 17 ? 1 : 2) + attributes.dex.modBonus))":{"text":"max(-2, min(attributes.dex.modCap, (attributes.dex.score <= 3 ? -2 : attributes.dex.score <= 7 ? -1 : attributes.dex.score <= 13 ? 0 : attributes.dex.score <= 17 ? 1 : 2) + attributes.dex.modBonus))","tree":{"type":"call","fn":"max","args":[{"type":"unary","op":"-","operand":{"type":"int","value":2}},{"type":"call","fn":"min","args":[{"type":"name","path":["attributes","dex","modCap"]},{"type":"binary","op":"+","left":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","dex","score"]},"right":{"type":"int","value":3}},"then":{"type":"unary","op":"-","operand":{"type":"int","value":2}},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","dex","score"]},"right":{"type":"int","value":7}},"then":{"type":"unary","op":"-","operand":{"type":"int","value":1}},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","dex","score"]},"right":{"type":"int","value":13}},"then":{"type":"int","value":0},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","dex","score"]},"right":{"type":"int","value":17}},"then":{"type":"int","value":1},"else":{"type":"int","value":2}}}}},"right":{"type":"name","path":["attributes","dex","modBonus"]}}]}]}},"max(-2, min(attributes.int.modCap, (attributes.int.score <= 3 ? -2\n : attributes.int.score <= 7 ? -1 : attributes.int.score <= 13 ? 0\n : attributes.int.score <= 17 ? 1 : 2) + attributes.int.modBonus))":{"text":"max(-2, min(attributes.int.modCap, (attributes.int.score <= 3 ? -2 : attributes.int.score <= 7 ? -1 : attributes.int.score <= 13 ? 0 : attributes.int.score <= 17 ? 1 : 2) + attributes.int.modBonus))","tree":{"type":"call","fn":"max","args":[{"type":"unary","op":"-","operand":{"type":"int","value":2}},{"type":"call","fn":"min","args":[{"type":"name","path":["attributes","int","modCap"]},{"type":"binary","op":"+","left":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","int","score"]},"right":{"type":"int","value":3}},"then":{"type":"unary","op":"-","operand":{"type":"int","value":2}},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","int","score"]},"right":{"type":"int","value":7}},"then":{"type":"unary","op":"-","operand":{"type":"int","value":1}},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","int","score"]},"right":{"type":"int","value":13}},"then":{"type":"int","value":0},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","int","score"]},"right":{"type":"int","value":17}},"then":{"type":"int","value":1},"else":{"type":"int","value":2}}}}},"right":{"type":"name","path":["attributes","int","modBonus"]}}]}]}},"max(-2, min(attributes.str.modCap, (attributes.str.score <= 3 ? -2\n : attributes.str.score <= 7 ? -1 : attributes.str.score <= 13 ? 0\n : attributes.str.score <= 17 ? 1 : 2) + attributes.str.modBonus))":{"text":"max(-2, min(attributes.str.modCap, (attributes.str.score <= 3 ? -2 : attributes.str.score <= 7 ? -1 : attributes.str.score <= 13 ? 0 : attributes.str.score <= 17 ? 1 : 2) + attributes.str.modBonus))","tree":{"type":"call","fn":"max","args":[{"type":"unary","op":"-","operand":{"type":"int","value":2}},{"type":"call","fn":"min","args":[{"type":"name","path":["attributes","str","modCap"]},{"type":"binary","op":"+","left":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","str","score"]},"right":{"type":"int","value":3}},"then":{"type":"unary","op":"-","operand":{"type":"int","value":2}},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","str","score"]},"right":{"type":"int","value":7}},"then":{"type":"unary","op":"-","operand":{"type":"int","value":1}},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","str","score"]},"right":{"type":"int","value":13}},"then":{"type":"int","value":0},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","str","score"]},"right":{"type":"int","value":17}},"then":{"type":"int","value":1},"else":{"type":"int","value":2}}}}},"right":{"type":"name","path":["attributes","str","modBonus"]}}]}]}},"max(-2, min(attributes.wis.modCap, (attributes.wis.score <= 3 ? -2\n : attributes.wis.score <= 7 ? -1 : attributes.wis.score <= 13 ? 0\n : attributes.wis.score <= 17 ? 1 : 2) + attributes.wis.modBonus))":{"text":"max(-2, min(attributes.wis.modCap, (attributes.wis.score <= 3 ? -2 : attributes.wis.score <= 7 ? -1 : attributes.wis.score <= 13 ? 0 : attributes.wis.score <= 17 ? 1 : 2) + attributes.wis.modBonus))","tree":{"type":"call","fn":"max","args":[{"type":"unary","op":"-","operand":{"type":"int","value":2}},{"type":"call","fn":"min","args":[{"type":"name","path":["attributes","wis","modCap"]},{"type":"binary","op":"+","left":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","wis","score"]},"right":{"type":"int","value":3}},"then":{"type":"unary","op":"-","operand":{"type":"int","value":2}},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","wis","score"]},"right":{"type":"int","value":7}},"then":{"type":"unary","op":"-","operand":{"type":"int","value":1}},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","wis","score"]},"right":{"type":"int","value":13}},"then":{"type":"int","value":0},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"name","path":["attributes","wis","score"]},"right":{"type":"int","value":17}},"then":{"type":"int","value":1},"else":{"type":"int","value":2}}}}},"right":{"type":"name","path":["attributes","wis","modBonus"]}}]}]}},"max(0, arts.accursed.allowed - arts.accursed.taken)":{"text":"max(0, arts.accursed.allowed - arts.accursed.taken)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"name","path":["arts","accursed","allowed"]},"right":{"type":"name","path":["arts","accursed","taken"]}}]}},"max(0, arts.bard.allowed - arts.bard.taken)":{"text":"max(0, arts.bard.allowed - arts.bard.taken)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"name","path":["arts","bard","allowed"]},"right":{"type":"name","path":["arts","bard","taken"]}}]}},"max(0, arts.beastmaster.allowed - arts.beastmaster.taken)":{"text":"max(0, arts.beastmaster.allowed - arts.beastmaster.taken)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"name","path":["arts","beastmaster","allowed"]},"right":{"type":"name","path":["arts","beastmaster","taken"]}}]}},"max(0, arts.bloodpriest.allowed - arts.bloodpriest.taken)":{"text":"max(0, arts.bloodpriest.allowed - arts.bloodpriest.taken)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"name","path":["arts","bloodpriest","allowed"]},"right":{"type":"name","path":["arts","bloodpriest","taken"]}}]}},"max(0, arts.duelist.allowed - arts.duelist.taken)":{"text":"max(0, arts.duelist.allowed - arts.duelist.taken)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"name","path":["arts","duelist","allowed"]},"right":{"type":"name","path":["arts","duelist","taken"]}}]}},"max(0, arts.elementalist.allowed - arts.elementalist.taken)":{"text":"max(0, arts.elementalist.allowed - arts.elementalist.taken)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"name","path":["arts","elementalist","allowed"]},"right":{"type":"name","path":["arts","elementalist","taken"]}}]}},"max(0, arts.healer.allowed - arts.healer.taken)":{"text":"max(0, arts.healer.allowed - arts.healer.taken)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"name","path":["arts","healer","allowed"]},"right":{"type":"name","path":["arts","healer","taken"]}}]}},"max(0, arts.highmage.allowed - arts.highmage.taken)":{"text":"max(0, arts.highmage.allowed - arts.highmage.taken)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"name","path":["arts","highmage","allowed"]},"right":{"type":"name","path":["arts","highmage","taken"]}}]}},"max(0, arts.mageslayer.allowed - arts.mageslayer.taken)":{"text":"max(0, arts.mageslayer.allowed - arts.mageslayer.taken)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"name","path":["arts","mageslayer","allowed"]},"right":{"type":"name","path":["arts","mageslayer","taken"]}}]}},"max(0, arts.necromancer.allowed - arts.necromancer.taken)":{"text":"max(0, arts.necromancer.allowed - arts.necromancer.taken)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"name","path":["arts","necromancer","allowed"]},"right":{"type":"name","path":["arts","necromancer","taken"]}}]}},"max(0, arts.skinshifter.allowed - arts.skinshifter.taken)":{"text":"max(0, arts.skinshifter.allowed - arts.skinshifter.taken)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"name","path":["arts","skinshifter","allowed"]},"right":{"type":"name","path":["arts","skinshifter","taken"]}}]}},"max(0, arts.thoughtnoble.allowed - arts.thoughtnoble.taken)":{"text":"max(0, arts.thoughtnoble.allowed - arts.thoughtnoble.taken)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"name","path":["arts","thoughtnoble","allowed"]},"right":{"type":"name","path":["arts","thoughtnoble","taken"]}}]}},"max(0, arts.vowed.allowed - arts.vowed.taken)":{"text":"max(0, arts.vowed.allowed - arts.vowed.taken)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"name","path":["arts","vowed","allowed"]},"right":{"type":"name","path":["arts","vowed","taken"]}}]}},"max(0, arts.wise.allowed - arts.wise.taken)":{"text":"max(0, arts.wise.allowed - arts.wise.taken)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"name","path":["arts","wise","allowed"]},"right":{"type":"name","path":["arts","wise","taken"]}}]}},"max(0, effort.accursed.max - effort.accursed.scene - effort.accursed.day\n - effort.accursed.ongoing)":{"text":"max(0, effort.accursed.max - effort.accursed.scene - effort.accursed.day - effort.accursed.ongoing)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"name","path":["effort","accursed","max"]},"right":{"type":"name","path":["effort","accursed","scene"]}},"right":{"type":"name","path":["effort","accursed","day"]}},"right":{"type":"name","path":["effort","accursed","ongoing"]}}]}},"max(0, effort.bard.max - effort.bard.scene - effort.bard.day\n - effort.bard.ongoing)":{"text":"max(0, effort.bard.max - effort.bard.scene - effort.bard.day - effort.bard.ongoing)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"name","path":["effort","bard","max"]},"right":{"type":"name","path":["effort","bard","scene"]}},"right":{"type":"name","path":["effort","bard","day"]}},"right":{"type":"name","path":["effort","bard","ongoing"]}}]}},"max(0, effort.beastmaster.max - effort.beastmaster.scene - effort.beastmaster.day\n - effort.beastmaster.ongoing)":{"text":"max(0, effort.beastmaster.max - effort.beastmaster.scene - effort.beastmaster.day - effort.beastmaster.ongoing)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"name","path":["effort","beastmaster","max"]},"right":{"type":"name","path":["effort","beastmaster","scene"]}},"right":{"type":"name","path":["effort","beastmaster","day"]}},"right":{"type":"name","path":["effort","beastmaster","ongoing"]}}]}},"max(0, effort.bloodpriest.max - effort.bloodpriest.scene - effort.bloodpriest.day\n - effort.bloodpriest.ongoing)":{"text":"max(0, effort.bloodpriest.max - effort.bloodpriest.scene - effort.bloodpriest.day - effort.bloodpriest.ongoing)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"name","path":["effort","bloodpriest","max"]},"right":{"type":"name","path":["effort","bloodpriest","scene"]}},"right":{"type":"name","path":["effort","bloodpriest","day"]}},"right":{"type":"name","path":["effort","bloodpriest","ongoing"]}}]}},"max(0, effort.duelist.max - effort.duelist.scene - effort.duelist.day\n - effort.duelist.ongoing)":{"text":"max(0, effort.duelist.max - effort.duelist.scene - effort.duelist.day - effort.duelist.ongoing)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"name","path":["effort","duelist","max"]},"right":{"type":"name","path":["effort","duelist","scene"]}},"right":{"type":"name","path":["effort","duelist","day"]}},"right":{"type":"name","path":["effort","duelist","ongoing"]}}]}},"max(0, effort.elementalist.max - effort.elementalist.scene - effort.elementalist.day\n - effort.elementalist.ongoing)":{"text":"max(0, effort.elementalist.max - effort.elementalist.scene - effort.elementalist.day - effort.elementalist.ongoing)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"name","path":["effort","elementalist","max"]},"right":{"type":"name","path":["effort","elementalist","scene"]}},"right":{"type":"name","path":["effort","elementalist","day"]}},"right":{"type":"name","path":["effort","elementalist","ongoing"]}}]}},"max(0, effort.healer.max - effort.healer.scene - effort.healer.day\n - effort.healer.ongoing)":{"text":"max(0, effort.healer.max - effort.healer.scene - effort.healer.day - effort.healer.ongoing)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"name","path":["effort","healer","max"]},"right":{"type":"name","path":["effort","healer","scene"]}},"right":{"type":"name","path":["effort","healer","day"]}},"right":{"type":"name","path":["effort","healer","ongoing"]}}]}},"max(0, effort.highmage.max - effort.highmage.scene - effort.highmage.day\n - effort.highmage.ongoing)":{"text":"max(0, effort.highmage.max - effort.highmage.scene - effort.highmage.day - effort.highmage.ongoing)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"name","path":["effort","highmage","max"]},"right":{"type":"name","path":["effort","highmage","scene"]}},"right":{"type":"name","path":["effort","highmage","day"]}},"right":{"type":"name","path":["effort","highmage","ongoing"]}}]}},"max(0, effort.mageslayer.max - effort.mageslayer.scene - effort.mageslayer.day\n - effort.mageslayer.ongoing)":{"text":"max(0, effort.mageslayer.max - effort.mageslayer.scene - effort.mageslayer.day - effort.mageslayer.ongoing)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"name","path":["effort","mageslayer","max"]},"right":{"type":"name","path":["effort","mageslayer","scene"]}},"right":{"type":"name","path":["effort","mageslayer","day"]}},"right":{"type":"name","path":["effort","mageslayer","ongoing"]}}]}},"max(0, effort.necromancer.max - effort.necromancer.scene - effort.necromancer.day\n - effort.necromancer.ongoing)":{"text":"max(0, effort.necromancer.max - effort.necromancer.scene - effort.necromancer.day - effort.necromancer.ongoing)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"name","path":["effort","necromancer","max"]},"right":{"type":"name","path":["effort","necromancer","scene"]}},"right":{"type":"name","path":["effort","necromancer","day"]}},"right":{"type":"name","path":["effort","necromancer","ongoing"]}}]}},"max(0, effort.skinshifter.max - effort.skinshifter.scene - effort.skinshifter.day\n - effort.skinshifter.ongoing)":{"text":"max(0, effort.skinshifter.max - effort.skinshifter.scene - effort.skinshifter.day - effort.skinshifter.ongoing)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"name","path":["effort","skinshifter","max"]},"right":{"type":"name","path":["effort","skinshifter","scene"]}},"right":{"type":"name","path":["effort","skinshifter","day"]}},"right":{"type":"name","path":["effort","skinshifter","ongoing"]}}]}},"max(0, effort.thoughtnoble.max - effort.thoughtnoble.scene - effort.thoughtnoble.day\n - effort.thoughtnoble.ongoing)":{"text":"max(0, effort.thoughtnoble.max - effort.thoughtnoble.scene - effort.thoughtnoble.day - effort.thoughtnoble.ongoing)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"name","path":["effort","thoughtnoble","max"]},"right":{"type":"name","path":["effort","thoughtnoble","scene"]}},"right":{"type":"name","path":["effort","thoughtnoble","day"]}},"right":{"type":"name","path":["effort","thoughtnoble","ongoing"]}}]}},"max(0, effort.vowed.max - effort.vowed.scene - effort.vowed.day\n - effort.vowed.ongoing)":{"text":"max(0, effort.vowed.max - effort.vowed.scene - effort.vowed.day - effort.vowed.ongoing)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"binary","op":"-","left":{"type":"name","path":["effort","vowed","max"]},"right":{"type":"name","path":["effort","vowed","scene"]}},"right":{"type":"name","path":["effort","vowed","day"]}},"right":{"type":"name","path":["effort","vowed","ongoing"]}}]}},"max(0, skills.punch)":{"text":"max(0, skills.punch)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","punch"]}]}},"max(0, skills.shoot)":{"text":"max(0, skills.shoot)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","shoot"]}]}},"max(0, skills.stab)":{"text":"max(0, skills.stab)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","stab"]}]}},"max(0, spells.castsPerDay - spells.castsUsed)":{"text":"max(0, spells.castsPerDay - spells.castsUsed)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"name","path":["spells","castsPerDay"]},"right":{"type":"name","path":["spells","castsUsed"]}}]}},"max(0, spells.points - spells.pointsUsed)":{"text":"max(0, spells.points - spells.pointsUsed)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"-","left":{"type":"name","path":["spells","points"]},"right":{"type":"name","path":["spells","pointsUsed"]}}]}},"max(0, steps.roll.total)":{"text":"max(0, steps.roll.total)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["steps","roll","total"]}]}},"max(1, steps.hitPoints.total)":{"text":"max(1, steps.hitPoints.total)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":1},{"type":"name","path":["steps","hitPoints","total"]}]}},"max(10, armor.wornAc, ac.innate)":{"text":"max(10, armor.wornAc, ac.innate)","tree":{"type":"call","fn":"max","args":[{"type":"int","value":10},{"type":"name","path":["armor","wornAc"]},{"type":"name","path":["ac","innate"]}]}},"max(attributes.str.mod, attributes.dex.mod, attributes.con.mod, attributes.int.mod,\n attributes.wis.mod, attributes.cha.mod)":{"text":"max(attributes.str.mod, attributes.dex.mod, attributes.con.mod, attributes.int.mod, attributes.wis.mod, attributes.cha.mod)","tree":{"type":"call","fn":"max","args":[{"type":"name","path":["attributes","str","mod"]},{"type":"name","path":["attributes","dex","mod"]},{"type":"name","path":["attributes","con","mod"]},{"type":"name","path":["attributes","int","mod"]},{"type":"name","path":["attributes","wis","mod"]},{"type":"name","path":["attributes","cha","mod"]}]}},"max(enc.readied - enc.readiedLimit <= 0 ? 0 : enc.readied - enc.readiedLimit <= 2 ? 1\n : enc.readied - enc.readiedLimit <= 4 ? 2 : 3,\n enc.stowed - enc.stowedLimit <= 0 ? 0 : enc.stowed - enc.stowedLimit <= 4 ? 1\n : enc.stowed - enc.stowedLimit <= 8 ? 2 : 3)":{"text":"max(enc.readied - enc.readiedLimit <= 0 ? 0 : enc.readied - enc.readiedLimit <= 2 ? 1 : enc.readied - enc.readiedLimit <= 4 ? 2 : 3, enc.stowed - enc.stowedLimit <= 0 ? 0 : enc.stowed - enc.stowedLimit <= 4 ? 1 : enc.stowed - enc.stowedLimit <= 8 ? 2 : 3)","tree":{"type":"call","fn":"max","args":[{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"binary","op":"-","left":{"type":"name","path":["enc","readied"]},"right":{"type":"name","path":["enc","readiedLimit"]}},"right":{"type":"int","value":0}},"then":{"type":"int","value":0},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"binary","op":"-","left":{"type":"name","path":["enc","readied"]},"right":{"type":"name","path":["enc","readiedLimit"]}},"right":{"type":"int","value":2}},"then":{"type":"int","value":1},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"binary","op":"-","left":{"type":"name","path":["enc","readied"]},"right":{"type":"name","path":["enc","readiedLimit"]}},"right":{"type":"int","value":4}},"then":{"type":"int","value":2},"else":{"type":"int","value":3}}}},{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"binary","op":"-","left":{"type":"name","path":["enc","stowed"]},"right":{"type":"name","path":["enc","stowedLimit"]}},"right":{"type":"int","value":0}},"then":{"type":"int","value":0},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"binary","op":"-","left":{"type":"name","path":["enc","stowed"]},"right":{"type":"name","path":["enc","stowedLimit"]}},"right":{"type":"int","value":4}},"then":{"type":"int","value":1},"else":{"type":"conditional","test":{"type":"binary","op":"<=","left":{"type":"binary","op":"-","left":{"type":"name","path":["enc","stowed"]},"right":{"type":"name","path":["enc","stowedLimit"]}},"right":{"type":"int","value":8}},"then":{"type":"int","value":2},"else":{"type":"int","value":3}}}}]}},"max(steps.hitDice.total, flags.oldRolled + 1)":{"text":"max(steps.hitDice.total, flags.oldRolled + 1)","tree":{"type":"call","fn":"max","args":[{"type":"name","path":["steps","hitDice","total"]},{"type":"binary","op":"+","left":{"type":"name","path":["flags","oldRolled"]},"right":{"type":"int","value":1}}]}},"maxCopies(copy.fields.ac, copy.type == 'armor' && copy.equipped && copy.fields.category != 'shield')":{"text":"maxCopies(copy.fields.ac, copy.type == 'armor' && copy.equipped && copy.fields.category != 'shield')","tree":{"type":"call","fn":"maxCopies","args":[{"type":"name","path":["copy","fields","ac"]},{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"armor"}},"right":{"type":"name","path":["copy","equipped"]}},"right":{"type":"binary","op":"!=","left":{"type":"name","path":["copy","fields","category"]},"right":{"type":"string","value":"shield"}}}]}},"maxCopies(copy.fields.ac, copy.type == 'armor' && copy.equipped && copy.fields.category == 'shield')":{"text":"maxCopies(copy.fields.ac, copy.type == 'armor' && copy.equipped && copy.fields.category == 'shield')","tree":{"type":"call","fn":"maxCopies","args":[{"type":"name","path":["copy","fields","ac"]},{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"armor"}},"right":{"type":"name","path":["copy","equipped"]}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["copy","fields","category"]},"right":{"type":"string","value":"shield"}}}]}},"min(attributes.str.score, attributes.dex.score, attributes.con.score, attributes.int.score,\n attributes.wis.score, attributes.cha.score) <= 7":{"text":"min(attributes.str.score, attributes.dex.score, attributes.con.score, attributes.int.score, attributes.wis.score, attributes.cha.score) <= 7","tree":{"type":"binary","op":"<=","left":{"type":"call","fn":"min","args":[{"type":"name","path":["attributes","str","score"]},{"type":"name","path":["attributes","dex","score"]},{"type":"name","path":["attributes","con","score"]},{"type":"name","path":["attributes","int","score"]},{"type":"name","path":["attributes","wis","score"]},{"type":"name","path":["attributes","cha","score"]}]},"right":{"type":"int","value":7}}},"min(skillPoints.expert, attributes.boosts + 1)":{"text":"min(skillPoints.expert, attributes.boosts + 1)","tree":{"type":"call","fn":"min","args":[{"type":"name","path":["skillPoints","expert"]},{"type":"binary","op":"+","left":{"type":"name","path":["attributes","boosts"]},"right":{"type":"int","value":1}}]}},"options[0]":{"text":"options[0]","tree":{"type":"index","object":{"type":"name","path":["options"]},"index":{"type":"int","value":0}}},"params.amount":{"text":"params.amount","tree":{"type":"name","path":["params","amount"]}},"params.amount > 0":{"text":"params.amount > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["params","amount"]},"right":{"type":"int","value":0}}},"params.entry":{"text":"params.entry","tree":{"type":"name","path":["params","entry"]}},"params.entry in ['any-stat', 'physical', 'mental']":{"text":"params.entry in ['any-stat', 'physical', 'mental']","tree":{"type":"binary","op":"in","left":{"type":"name","path":["params","entry"]},"right":{"type":"list","items":[{"type":"string","value":"any-stat"},{"type":"string","value":"physical"},{"type":"string","value":"mental"}]}}},"params.healerSkill":{"text":"params.healerSkill","tree":{"type":"name","path":["params","healerSkill"]}},"params.kind != 'any-stat'":{"text":"params.kind != 'any-stat'","tree":{"type":"binary","op":"!=","left":{"type":"name","path":["params","kind"]},"right":{"type":"string","value":"any-stat"}}},"params.kind == 'any-stat'":{"text":"params.kind == 'any-stat'","tree":{"type":"binary","op":"==","left":{"type":"name","path":["params","kind"]},"right":{"type":"string","value":"any-stat"}}},"params.kind == 'physical'\n ? item.id in [@attributes.str.score, @attributes.dex.score, @attributes.con.score]\n : item.id in [@attributes.int.score, @attributes.wis.score, @attributes.cha.score]":{"text":"params.kind == 'physical' ? item.id in [@attributes.str.score, @attributes.dex.score, @attributes.con.score] : item.id in [@attributes.int.score, @attributes.wis.score, @attributes.cha.score]","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["params","kind"]},"right":{"type":"string","value":"physical"}},"then":{"type":"binary","op":"in","left":{"type":"name","path":["item","id"]},"right":{"type":"list","items":[{"type":"ref","id":"attributes.str.score"},{"type":"ref","id":"attributes.dex.score"},{"type":"ref","id":"attributes.con.score"}]}},"else":{"type":"binary","op":"in","left":{"type":"name","path":["item","id"]},"right":{"type":"list","items":[{"type":"ref","id":"attributes.int.score"},{"type":"ref","id":"attributes.wis.score"},{"type":"ref","id":"attributes.cha.score"}]}}}},"params.magical":{"text":"params.magical","tree":{"type":"name","path":["params","magical"]}},"params.modifier":{"text":"params.modifier","tree":{"type":"name","path":["params","modifier"]}},"params.modifier != 0":{"text":"params.modifier != 0","tree":{"type":"binary","op":"!=","left":{"type":"name","path":["params","modifier"]},"right":{"type":"int","value":0}}},"params.points":{"text":"params.points","tree":{"type":"name","path":["params","points"]}},"params.points == 0":{"text":"params.points == 0","tree":{"type":"binary","op":"==","left":{"type":"name","path":["params","points"]},"right":{"type":"int","value":0}}},"params.points > 0":{"text":"params.points > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["params","points"]},"right":{"type":"int","value":0}}},"params.points > 0 && flags.first + flags.second > 0":{"text":"params.points > 0 && flags.first + flags.second > 0","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":">","left":{"type":"name","path":["params","points"]},"right":{"type":"int","value":0}},"right":{"type":"binary","op":">","left":{"type":"binary","op":"+","left":{"type":"name","path":["flags","first"]},"right":{"type":"name","path":["flags","second"]}},"right":{"type":"int","value":0}}}},"params.points > 0 && has(flags.target)":{"text":"params.points > 0 && has(flags.target)","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":">","left":{"type":"name","path":["params","points"]},"right":{"type":"int","value":0}},"right":{"type":"call","fn":"has","args":[{"type":"name","path":["flags","target"]}]}}},"params.points > 0 ? 4 : 1":{"text":"params.points > 0 ? 4 : 1","tree":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["params","points"]},"right":{"type":"int","value":0}},"then":{"type":"int","value":4},"else":{"type":"int","value":1}}},"params.random":{"text":"params.random","tree":{"type":"name","path":["params","random"]}},"params.random || steps.method.picked == 'roll'":{"text":"params.random || steps.method.picked == 'roll'","tree":{"type":"binary","op":"||","left":{"type":"name","path":["params","random"]},"right":{"type":"binary","op":"==","left":{"type":"name","path":["steps","method","picked"]},"right":{"type":"string","value":"roll"}}}},"params.random || steps.skills.picked == 'roll-tables'":{"text":"params.random || steps.skills.picked == 'roll-tables'","tree":{"type":"binary","op":"||","left":{"type":"name","path":["params","random"]},"right":{"type":"binary","op":"==","left":{"type":"name","path":["steps","skills","picked"]},"right":{"type":"string","value":"roll-tables"}}}},"params.save.tags":{"text":"params.save.tags","tree":{"type":"name","path":["params","save","tags"]}},"params.save.value":{"text":"params.save.value","tree":{"type":"name","path":["params","save","value"]}},"params.skill == 'combat' && (skills.stab < 1 || skills.shoot < 1 || skills.punch < 1)\n ? ['stab', 'shoot', 'punch']\n : params.skill == 'punch-stab' && (skills.punch < 1 || skills.stab < 1)\n ? ['punch', 'stab']\n : params.skill == 'perform-sneak' && (skills.perform < 1 || skills.sneak < 1)\n ? ['perform', 'sneak']\n : params.skill == 'specialist'\n ? filterList(keysOf('skill'), !(x in ['magic', 'stab', 'shoot', 'punch']))\n : params.focus ? filterList(keysOf('skill'), x != 'magic')\n : keysOf('skill')":{"text":"params.skill == 'combat' && (skills.stab < 1 || skills.shoot < 1 || skills.punch < 1) ? ['stab', 'shoot', 'punch'] : params.skill == 'punch-stab' && (skills.punch < 1 || skills.stab < 1) ? ['punch', 'stab'] : params.skill == 'perform-sneak' && (skills.perform < 1 || skills.sneak < 1) ? ['perform', 'sneak'] : params.skill == 'specialist' ? filterList(keysOf('skill'), !(x in ['magic', 'stab', 'shoot', 'punch'])) : params.focus ? filterList(keysOf('skill'), x != 'magic') : keysOf('skill')","tree":{"type":"conditional","test":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["params","skill"]},"right":{"type":"string","value":"combat"}},"right":{"type":"binary","op":"||","left":{"type":"binary","op":"||","left":{"type":"binary","op":"<","left":{"type":"name","path":["skills","stab"]},"right":{"type":"int","value":1}},"right":{"type":"binary","op":"<","left":{"type":"name","path":["skills","shoot"]},"right":{"type":"int","value":1}}},"right":{"type":"binary","op":"<","left":{"type":"name","path":["skills","punch"]},"right":{"type":"int","value":1}}}},"then":{"type":"list","items":[{"type":"string","value":"stab"},{"type":"string","value":"shoot"},{"type":"string","value":"punch"}]},"else":{"type":"conditional","test":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["params","skill"]},"right":{"type":"string","value":"punch-stab"}},"right":{"type":"binary","op":"||","left":{"type":"binary","op":"<","left":{"type":"name","path":["skills","punch"]},"right":{"type":"int","value":1}},"right":{"type":"binary","op":"<","left":{"type":"name","path":["skills","stab"]},"right":{"type":"int","value":1}}}},"then":{"type":"list","items":[{"type":"string","value":"punch"},{"type":"string","value":"stab"}]},"else":{"type":"conditional","test":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["params","skill"]},"right":{"type":"string","value":"perform-sneak"}},"right":{"type":"binary","op":"||","left":{"type":"binary","op":"<","left":{"type":"name","path":["skills","perform"]},"right":{"type":"int","value":1}},"right":{"type":"binary","op":"<","left":{"type":"name","path":["skills","sneak"]},"right":{"type":"int","value":1}}}},"then":{"type":"list","items":[{"type":"string","value":"perform"},{"type":"string","value":"sneak"}]},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["params","skill"]},"right":{"type":"string","value":"specialist"}},"then":{"type":"call","fn":"filterList","args":[{"type":"call","fn":"keysOf","args":[{"type":"string","value":"skill"}]},{"type":"unary","op":"!","operand":{"type":"binary","op":"in","left":{"type":"name","path":["x"]},"right":{"type":"list","items":[{"type":"string","value":"magic"},{"type":"string","value":"stab"},{"type":"string","value":"shoot"},{"type":"string","value":"punch"}]}}}]},"else":{"type":"conditional","test":{"type":"name","path":["params","focus"]},"then":{"type":"call","fn":"filterList","args":[{"type":"call","fn":"keysOf","args":[{"type":"string","value":"skill"}]},{"type":"binary","op":"!=","left":{"type":"name","path":["x"]},"right":{"type":"string","value":"magic"}}]},"else":{"type":"call","fn":"keysOf","args":[{"type":"string","value":"skill"}]}}}}}}},"params.skill in keysOf('skill')\n && fieldOf('skills.{skill}', params.skill) < (params.points > 0 ? 4 : 1)":{"text":"params.skill in keysOf('skill') && fieldOf('skills.{skill}', params.skill) < (params.points > 0 ? 4 : 1)","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"in","left":{"type":"name","path":["params","skill"]},"right":{"type":"call","fn":"keysOf","args":[{"type":"string","value":"skill"}]}},"right":{"type":"binary","op":"<","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"skills.{skill}"},{"type":"name","path":["params","skill"]}]},"right":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["params","points"]},"right":{"type":"int","value":0}},"then":{"type":"int","value":4},"else":{"type":"int","value":1}}}}},"params.skill.id in [@skills.stab, @skills.shoot, @skills.punch]\n ? params.skill.value : max(params.skill.value, skills.noncombatFloor)":{"text":"params.skill.id in [@skills.stab, @skills.shoot, @skills.punch] ? params.skill.value : max(params.skill.value, skills.noncombatFloor)","tree":{"type":"conditional","test":{"type":"binary","op":"in","left":{"type":"name","path":["params","skill","id"]},"right":{"type":"list","items":[{"type":"ref","id":"skills.stab"},{"type":"ref","id":"skills.shoot"},{"type":"ref","id":"skills.punch"}]}},"then":{"type":"name","path":["params","skill","value"]},"else":{"type":"call","fn":"max","args":[{"type":"name","path":["params","skill","value"]},{"type":"name","path":["skills","noncombatFloor"]}]}}},"params.skill.tags":{"text":"params.skill.tags","tree":{"type":"name","path":["params","skill","tags"]}},"params.strain":{"text":"params.strain","tree":{"type":"name","path":["params","strain"]}},"params.strain > 0":{"text":"params.strain > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["params","strain"]},"right":{"type":"int","value":0}}},"params.strain > 0 && strain.current + params.strain > strain.max":{"text":"params.strain > 0 && strain.current + params.strain > strain.max","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":">","left":{"type":"name","path":["params","strain"]},"right":{"type":"int","value":0}},"right":{"type":"binary","op":">","left":{"type":"binary","op":"+","left":{"type":"name","path":["strain","current"]},"right":{"type":"name","path":["params","strain"]}},"right":{"type":"name","path":["strain","max"]}}}},"params.thrown ? 'thrown' : item.skill == 'shoot' ? 'ranged'\n : item.skill == 'punch' ? 'unarmed' : 'melee'":{"text":"params.thrown ? 'thrown' : item.skill == 'shoot' ? 'ranged' : item.skill == 'punch' ? 'unarmed' : 'melee'","tree":{"type":"conditional","test":{"type":"name","path":["params","thrown"]},"then":{"type":"string","value":"thrown"},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["item","skill"]},"right":{"type":"string","value":"shoot"}},"then":{"type":"string","value":"ranged"},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["item","skill"]},"right":{"type":"string","value":"punch"}},"then":{"type":"string","value":"unarmed"},"else":{"type":"string","value":"melee"}}}}},"params.thrown ? max(skills.stab, skills.shoot)\n : fieldOf('skills.{skill}', item.skill)":{"text":"params.thrown ? max(skills.stab, skills.shoot) : fieldOf('skills.{skill}', item.skill)","tree":{"type":"conditional","test":{"type":"name","path":["params","thrown"]},"then":{"type":"call","fn":"max","args":[{"type":"name","path":["skills","stab"]},{"type":"name","path":["skills","shoot"]}]},"else":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"skills.{skill}"},{"type":"name","path":["item","skill"]}]}}},"pick.id":{"text":"pick.id","tree":{"type":"name","path":["pick","id"]}},"pick.value":{"text":"pick.value","tree":{"type":"name","path":["pick","value"]}},"picked.id":{"text":"picked.id","tree":{"type":"name","path":["picked","id"]}},"picked.id == @gear.backpack":{"text":"picked.id == @gear.backpack","tree":{"type":"binary","op":"==","left":{"type":"name","path":["picked","id"]},"right":{"type":"ref","id":"gear.backpack"}}},"picked.item.costUnit == 'cp'":{"text":"picked.item.costUnit == 'cp'","tree":{"type":"binary","op":"==","left":{"type":"name","path":["picked","item","costUnit"]},"right":{"type":"string","value":"cp"}}},"picks == 0\n && (item.costUnit == 'cp' ? ceil(item.cost / 10) : item.cost) <= coins.silver\n && (item.id == @gear.backpack ? enc.readied + item.enc <= enc.readiedLimit + 4\n : enc.stowed + item.enc <= enc.stowedLimit + 8)":{"text":"picks == 0 && (item.costUnit == 'cp' ? ceil(item.cost / 10) : item.cost) <= coins.silver && (item.id == @gear.backpack ? enc.readied + item.enc <= enc.readiedLimit + 4 : enc.stowed + item.enc <= enc.stowedLimit + 8)","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["picks"]},"right":{"type":"int","value":0}},"right":{"type":"binary","op":"<=","left":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["item","costUnit"]},"right":{"type":"string","value":"cp"}},"then":{"type":"call","fn":"ceil","args":[{"type":"binary","op":"/","left":{"type":"name","path":["item","cost"]},"right":{"type":"int","value":10}}]},"else":{"type":"name","path":["item","cost"]}},"right":{"type":"name","path":["coins","silver"]}}},"right":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["item","id"]},"right":{"type":"ref","id":"gear.backpack"}},"then":{"type":"binary","op":"<=","left":{"type":"binary","op":"+","left":{"type":"name","path":["enc","readied"]},"right":{"type":"name","path":["item","enc"]}},"right":{"type":"binary","op":"+","left":{"type":"name","path":["enc","readiedLimit"]},"right":{"type":"int","value":4}}},"else":{"type":"binary","op":"<=","left":{"type":"binary","op":"+","left":{"type":"name","path":["enc","stowed"]},"right":{"type":"name","path":["item","enc"]}},"right":{"type":"binary","op":"+","left":{"type":"name","path":["enc","stowedLimit"]},"right":{"type":"int","value":8}}}}}},"roll.kept[0] == 1":{"text":"roll.kept[0] == 1","tree":{"type":"binary","op":"==","left":{"type":"index","object":{"type":"name","path":["roll","kept"]},"index":{"type":"int","value":0}},"right":{"type":"int","value":1}}},"roll.kept[0] == 20":{"text":"roll.kept[0] == 20","tree":{"type":"binary","op":"==","left":{"type":"index","object":{"type":"name","path":["roll","kept"]},"index":{"type":"int","value":0}},"right":{"type":"int","value":20}}},"roll.total >= flags.ac":{"text":"roll.total >= flags.ac","tree":{"type":"binary","op":">=","left":{"type":"name","path":["roll","total"]},"right":{"type":"name","path":["flags","ac"]}}},"roll.total >= flags.difficulty":{"text":"roll.total >= flags.difficulty","tree":{"type":"binary","op":">=","left":{"type":"name","path":["roll","total"]},"right":{"type":"name","path":["flags","difficulty"]}}},"roll.total >= flags.target":{"text":"roll.total >= flags.target","tree":{"type":"binary","op":">=","left":{"type":"name","path":["roll","total"]},"right":{"type":"name","path":["flags","target"]}}},"self.active":{"text":"self.active","tree":{"type":"name","path":["self","active"]}},"self.active && armor.wornEnc < 0":{"text":"self.active && armor.wornEnc < 0","tree":{"type":"binary","op":"&&","left":{"type":"name","path":["self","active"]},"right":{"type":"binary","op":"<","left":{"type":"name","path":["armor","wornEnc"]},"right":{"type":"int","value":0}}}},"self.equipped && item.category == 'heavy' && item.enc > 0":{"text":"self.equipped && item.category == 'heavy' && item.enc > 0","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"name","path":["self","equipped"]},"right":{"type":"binary","op":"==","left":{"type":"name","path":["item","category"]},"right":{"type":"string","value":"heavy"}}},"right":{"type":"binary","op":">","left":{"type":"name","path":["item","enc"]},"right":{"type":"int","value":0}}}},"self.equipped && item.category in ['medium', 'heavy'] && item.enc > 0":{"text":"self.equipped && item.category in ['medium', 'heavy'] && item.enc > 0","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"name","path":["self","equipped"]},"right":{"type":"binary","op":"in","left":{"type":"name","path":["item","category"]},"right":{"type":"list","items":[{"type":"string","value":"medium"},{"type":"string","value":"heavy"}]}}},"right":{"type":"binary","op":">","left":{"type":"name","path":["item","enc"]},"right":{"type":"int","value":0}}}},"self.equipped || 'unarmed' in item.tags":{"text":"self.equipped || 'unarmed' in item.tags","tree":{"type":"binary","op":"||","left":{"type":"name","path":["self","equipped"]},"right":{"type":"binary","op":"in","left":{"type":"string","value":"unarmed"},"right":{"type":"name","path":["item","tags"]}}}},"self.level":{"text":"self.level","tree":{"type":"name","path":["self","level"]}},"self.level - 1":{"text":"self.level - 1","tree":{"type":"binary","op":"-","left":{"type":"name","path":["self","level"]},"right":{"type":"int","value":1}}},"self.level >= 2":{"text":"self.level >= 2","tree":{"type":"binary","op":">=","left":{"type":"name","path":["self","level"]},"right":{"type":"int","value":2}}},"self.prepared && item.level <= spells.maxLevel && !magic.hindered\n && (spells.mode == 'invoker' || spells.mode == 'partial-invoker'\n ? spells.pointsLeft >= item.level : spells.castsLeft > 0)":{"text":"self.prepared && item.level <= spells.maxLevel && !magic.hindered && (spells.mode == 'invoker' || spells.mode == 'partial-invoker' ? spells.pointsLeft >= item.level : spells.castsLeft > 0)","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"name","path":["self","prepared"]},"right":{"type":"binary","op":"<=","left":{"type":"name","path":["item","level"]},"right":{"type":"name","path":["spells","maxLevel"]}}},"right":{"type":"unary","op":"!","operand":{"type":"name","path":["magic","hindered"]}}},"right":{"type":"conditional","test":{"type":"binary","op":"||","left":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"invoker"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"partial-invoker"}}},"then":{"type":"binary","op":">=","left":{"type":"name","path":["spells","pointsLeft"]},"right":{"type":"name","path":["item","level"]}},"else":{"type":"binary","op":">","left":{"type":"name","path":["spells","castsLeft"]},"right":{"type":"int","value":0}}}}},"size(flags.traditionSkills) > 0":{"text":"size(flags.traditionSkills) > 0","tree":{"type":"binary","op":">","left":{"type":"call","fn":"size","args":[{"type":"name","path":["flags","traditionSkills"]}]},"right":{"type":"int","value":0}}},"size(steps.traditionSkill) < size(flags.traditionSkills)":{"text":"size(steps.traditionSkill) < size(flags.traditionSkills)","tree":{"type":"binary","op":"<","left":{"type":"call","fn":"size","args":[{"type":"name","path":["steps","traditionSkill"]}]},"right":{"type":"call","fn":"size","args":[{"type":"name","path":["flags","traditionSkills"]}]}}},"skillCredit.administer > 0":{"text":"skillCredit.administer > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","administer"]},"right":{"type":"int","value":0}}},"skillCredit.connect > 0":{"text":"skillCredit.connect > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","connect"]},"right":{"type":"int","value":0}}},"skillCredit.convince > 0":{"text":"skillCredit.convince > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","convince"]},"right":{"type":"int","value":0}}},"skillCredit.craft > 0":{"text":"skillCredit.craft > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","craft"]},"right":{"type":"int","value":0}}},"skillCredit.exert > 0":{"text":"skillCredit.exert > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","exert"]},"right":{"type":"int","value":0}}},"skillCredit.heal > 0":{"text":"skillCredit.heal > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","heal"]},"right":{"type":"int","value":0}}},"skillCredit.know > 0":{"text":"skillCredit.know > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","know"]},"right":{"type":"int","value":0}}},"skillCredit.lead > 0":{"text":"skillCredit.lead > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","lead"]},"right":{"type":"int","value":0}}},"skillCredit.magic > 0":{"text":"skillCredit.magic > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","magic"]},"right":{"type":"int","value":0}}},"skillCredit.notice > 0":{"text":"skillCredit.notice > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","notice"]},"right":{"type":"int","value":0}}},"skillCredit.perform > 0":{"text":"skillCredit.perform > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","perform"]},"right":{"type":"int","value":0}}},"skillCredit.pray > 0":{"text":"skillCredit.pray > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","pray"]},"right":{"type":"int","value":0}}},"skillCredit.punch > 0":{"text":"skillCredit.punch > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","punch"]},"right":{"type":"int","value":0}}},"skillCredit.ride > 0":{"text":"skillCredit.ride > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","ride"]},"right":{"type":"int","value":0}}},"skillCredit.sail > 0":{"text":"skillCredit.sail > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","sail"]},"right":{"type":"int","value":0}}},"skillCredit.shoot > 0":{"text":"skillCredit.shoot > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","shoot"]},"right":{"type":"int","value":0}}},"skillCredit.sneak > 0":{"text":"skillCredit.sneak > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","sneak"]},"right":{"type":"int","value":0}}},"skillCredit.stab > 0":{"text":"skillCredit.stab > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","stab"]},"right":{"type":"int","value":0}}},"skillCredit.survive > 0":{"text":"skillCredit.survive > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","survive"]},"right":{"type":"int","value":0}}},"skillCredit.trade > 0":{"text":"skillCredit.trade > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","trade"]},"right":{"type":"int","value":0}}},"skillCredit.work > 0":{"text":"skillCredit.work > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["skillCredit","work"]},"right":{"type":"int","value":0}}},"skills.punch":{"text":"skills.punch","tree":{"type":"name","path":["skills","punch"]}},"sortList(['str', 'dex', 'con', 'int', 'wis', 'cha'], -fieldOf('attributes.{attr}.score', x))[0]":{"text":"sortList(['str', 'dex', 'con', 'int', 'wis', 'cha'], -fieldOf('attributes.{attr}.score', x))[0]","tree":{"type":"index","object":{"type":"call","fn":"sortList","args":[{"type":"list","items":[{"type":"string","value":"str"},{"type":"string","value":"dex"},{"type":"string","value":"con"},{"type":"string","value":"int"},{"type":"string","value":"wis"},{"type":"string","value":"cha"}]},{"type":"unary","op":"-","operand":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"attributes.{attr}.score"},{"type":"name","path":["x"]}]}}]},"index":{"type":"int","value":0}}},"sortList(options, fieldOf('attributes.{attr}.score', x))[0]":{"text":"sortList(options, fieldOf('attributes.{attr}.score', x))[0]","tree":{"type":"index","object":{"type":"call","fn":"sortList","args":[{"type":"name","path":["options"]},{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"attributes.{attr}.score"},{"type":"name","path":["x"]}]}]},"index":{"type":"int","value":0}}},"spells.castsPerDay > 0":{"text":"spells.castsPerDay > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["spells","castsPerDay"]},"right":{"type":"int","value":0}}},"spells.maxLevel > 0":{"text":"spells.maxLevel > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["spells","maxLevel"]},"right":{"type":"int","value":0}}},"spells.mode != 'invoker' && spells.mode != 'partial-invoker'":{"text":"spells.mode != 'invoker' && spells.mode != 'partial-invoker'","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"!=","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"invoker"}},"right":{"type":"binary","op":"!=","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"partial-invoker"}}}},"spells.mode != 'none'":{"text":"spells.mode != 'none'","tree":{"type":"binary","op":"!=","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"none"}}},"spells.mode != 'none' || tradition.vowed.tier > 0 ? 'no-armor' : 'buy-armor'":{"text":"spells.mode != 'none' || tradition.vowed.tier > 0 ? 'no-armor' : 'buy-armor'","tree":{"type":"conditional","test":{"type":"binary","op":"||","left":{"type":"binary","op":"!=","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"none"}},"right":{"type":"binary","op":">","left":{"type":"name","path":["tradition","vowed","tier"]},"right":{"type":"int","value":0}}},"then":{"type":"string","value":"no-armor"},"else":{"type":"string","value":"buy-armor"}}},"spells.mode == 'full' ? [1, 1, 2, 2, 3, 3, 4, 4, 5, 6][level - 1]\n : spells.mode == 'partial' ? [1, 1, 1, 2, 2, 3, 3, 3, 4, 4][level - 1]\n : spells.mode == 'dual' ? [1, 1, 2, 2, 2, 3, 3, 4, 4, 5][level - 1]\n : 0":{"text":"spells.mode == 'full' ? [1, 1, 2, 2, 3, 3, 4, 4, 5, 6][level - 1] : spells.mode == 'partial' ? [1, 1, 1, 2, 2, 3, 3, 3, 4, 4][level - 1] : spells.mode == 'dual' ? [1, 1, 2, 2, 2, 3, 3, 4, 4, 5][level - 1] : 0","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"full"}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":6}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"partial"}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":4}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"dual"}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":4},{"type":"int","value":5}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"int","value":0}}}}},"spells.mode == 'full' ? [3, 3, 4, 5, 6, 7, 8, 9, 10, 12][level - 1]\n : spells.mode == 'partial' ? [2, 3, 3, 4, 5, 6, 7, 7, 8, 9][level - 1]\n : spells.mode == 'dual' ? [3, 4, 5, 6, 8, 9, 10, 12, 13, 15][level - 1]\n : spells.mode == 'invoker'\n ? max(0, [2, 3, 4, 4, 5, 6, 7, 7, 8, 9][level - 1] + attributes.int.mod)\n : spells.mode == 'partial-invoker'\n ? max(0, [1, 3, 3, 4, 4, 5, 5, 6, 6, 7][level - 1] + attributes.int.mod)\n : 0":{"text":"spells.mode == 'full' ? [3, 3, 4, 5, 6, 7, 8, 9, 10, 12][level - 1] : spells.mode == 'partial' ? [2, 3, 3, 4, 5, 6, 7, 7, 8, 9][level - 1] : spells.mode == 'dual' ? [3, 4, 5, 6, 8, 9, 10, 12, 13, 15][level - 1] : spells.mode == 'invoker' ? max(0, [2, 3, 4, 4, 5, 6, 7, 7, 8, 9][level - 1] + attributes.int.mod) : spells.mode == 'partial-invoker' ? max(0, [1, 3, 3, 4, 4, 5, 5, 6, 6, 7][level - 1] + attributes.int.mod) : 0","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"full"}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":6},{"type":"int","value":7},{"type":"int","value":8},{"type":"int","value":9},{"type":"int","value":10},{"type":"int","value":12}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"partial"}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":6},{"type":"int","value":7},{"type":"int","value":7},{"type":"int","value":8},{"type":"int","value":9}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"dual"}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":6},{"type":"int","value":8},{"type":"int","value":9},{"type":"int","value":10},{"type":"int","value":12},{"type":"int","value":13},{"type":"int","value":15}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"invoker"}},"then":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"+","left":{"type":"index","object":{"type":"list","items":[{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":6},{"type":"int","value":7},{"type":"int","value":7},{"type":"int","value":8},{"type":"int","value":9}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"right":{"type":"name","path":["attributes","int","mod"]}}]},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"partial-invoker"}},"then":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"+","left":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":5},{"type":"int","value":6},{"type":"int","value":6},{"type":"int","value":7}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"right":{"type":"name","path":["attributes","int","mod"]}}]},"else":{"type":"int","value":0}}}}}}},"spells.mode == 'full' || spells.mode == 'dual' || spells.mode == 'invoker' ? 4\n : spells.mode == 'partial' || spells.mode == 'partial-invoker' ? 2 : 0":{"text":"spells.mode == 'full' || spells.mode == 'dual' || spells.mode == 'invoker' ? 4 : spells.mode == 'partial' || spells.mode == 'partial-invoker' ? 2 : 0","tree":{"type":"conditional","test":{"type":"binary","op":"||","left":{"type":"binary","op":"||","left":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"full"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"dual"}}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"invoker"}}},"then":{"type":"int","value":4},"else":{"type":"conditional","test":{"type":"binary","op":"||","left":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"partial"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"partial-invoker"}}},"then":{"type":"int","value":2},"else":{"type":"int","value":0}}}},"spells.mode == 'full' || spells.mode == 'invoker' ? [1, 1, 2, 2, 3, 3, 4, 4, 5, 5][level - 1]\n : spells.mode == 'partial' || spells.mode == 'partial-invoker'\n ? [1, 1, 1, 1, 2, 2, 2, 2, 3, 3][level - 1]\n : spells.mode == 'dual' ? [1, 1, 1, 2, 2, 2, 3, 3, 3, 4][level - 1]\n : 0":{"text":"spells.mode == 'full' || spells.mode == 'invoker' ? [1, 1, 2, 2, 3, 3, 4, 4, 5, 5][level - 1] : spells.mode == 'partial' || spells.mode == 'partial-invoker' ? [1, 1, 1, 1, 2, 2, 2, 2, 3, 3][level - 1] : spells.mode == 'dual' ? [1, 1, 1, 2, 2, 2, 3, 3, 3, 4][level - 1] : 0","tree":{"type":"conditional","test":{"type":"binary","op":"||","left":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"full"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"invoker"}}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":5}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"conditional","test":{"type":"binary","op":"||","left":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"partial"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"partial-invoker"}}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"dual"}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"int","value":0}}}}},"spells.mode == 'invoker' ? max(0, [1, 3, 4, 5, 6, 7, 8, 9, 10, 11][level - 1] + attributes.int.mod)\n : spells.mode == 'partial-invoker'\n ? max(0, [1, 1, 2, 2, 3, 3, 4, 4, 5, 6][level - 1] + attributes.int.mod)\n : 0":{"text":"spells.mode == 'invoker' ? max(0, [1, 3, 4, 5, 6, 7, 8, 9, 10, 11][level - 1] + attributes.int.mod) : spells.mode == 'partial-invoker' ? max(0, [1, 1, 2, 2, 3, 3, 4, 4, 5, 6][level - 1] + attributes.int.mod) : 0","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"invoker"}},"then":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"+","left":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":6},{"type":"int","value":7},{"type":"int","value":8},{"type":"int","value":9},{"type":"int","value":10},{"type":"int","value":11}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"right":{"type":"name","path":["attributes","int","mod"]}}]},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"partial-invoker"}},"then":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"binary","op":"+","left":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":6}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"right":{"type":"name","path":["attributes","int","mod"]}}]},"else":{"type":"int","value":0}}}},"spells.mode == 'invoker' || spells.mode == 'partial-invoker'":{"text":"spells.mode == 'invoker' || spells.mode == 'partial-invoker'","tree":{"type":"binary","op":"||","left":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"invoker"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["spells","mode"]},"right":{"type":"string","value":"partial-invoker"}}}},"spells.points > 0":{"text":"spells.points > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["spells","points"]},"right":{"type":"int","value":0}}},"spells.prepared < spells.preparedMax":{"text":"spells.prepared < spells.preparedMax","tree":{"type":"binary","op":"<","left":{"type":"name","path":["spells","prepared"]},"right":{"type":"name","path":["spells","preparedMax"]}}},"spells.prepared <= spells.preparedMax":{"text":"spells.prepared <= spells.preparedMax","tree":{"type":"binary","op":"<=","left":{"type":"name","path":["spells","prepared"]},"right":{"type":"name","path":["spells","preparedMax"]}}},"spells.preparedMax":{"text":"spells.preparedMax","tree":{"type":"name","path":["spells","preparedMax"]}},"spells.preparedMax > 0":{"text":"spells.preparedMax > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["spells","preparedMax"]},"right":{"type":"int","value":0}}},"spells.starting":{"text":"spells.starting","tree":{"type":"name","path":["spells","starting"]}},"spells.starting > 0":{"text":"spells.starting > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["spells","starting"]},"right":{"type":"int","value":0}}},"steps.armorBuy.picked == 'buy-armor'":{"text":"steps.armorBuy.picked == 'buy-armor'","tree":{"type":"binary","op":"==","left":{"type":"name","path":["steps","armorBuy","picked"]},"right":{"type":"string","value":"buy-armor"}}},"steps.background.item.freeSkill":{"text":"steps.background.item.freeSkill","tree":{"type":"name","path":["steps","background","item","freeSkill"]}},"steps.cha.total":{"text":"steps.cha.total","tree":{"type":"name","path":["steps","cha","total"]}},"steps.check.band":{"text":"steps.check.band","tree":{"type":"name","path":["steps","check","band"]}},"steps.check.total":{"text":"steps.check.total","tree":{"type":"name","path":["steps","check","total"]}},"steps.class.added[0]":{"text":"steps.class.added[0]","tree":{"type":"index","object":{"type":"name","path":["steps","class","added"]},"index":{"type":"int","value":0}}},"steps.con.total":{"text":"steps.con.total","tree":{"type":"name","path":["steps","con","total"]}},"steps.dex.total":{"text":"steps.dex.total","tree":{"type":"name","path":["steps","dex","total"]}},"steps.focus.item.bonusSkill == 'specialist' && has(steps.focusChoices)\n && size(steps.focusChoices.picked) > 0\n ? steps.focusChoices.picked[0] : steps.focus.item.bonusSkill":{"text":"steps.focus.item.bonusSkill == 'specialist' && has(steps.focusChoices) && size(steps.focusChoices.picked) > 0 ? steps.focusChoices.picked[0] : steps.focus.item.bonusSkill","tree":{"type":"conditional","test":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["steps","focus","item","bonusSkill"]},"right":{"type":"string","value":"specialist"}},"right":{"type":"call","fn":"has","args":[{"type":"name","path":["steps","focusChoices"]}]}},"right":{"type":"binary","op":">","left":{"type":"call","fn":"size","args":[{"type":"name","path":["steps","focusChoices","picked"]}]},"right":{"type":"int","value":0}}},"then":{"type":"index","object":{"type":"name","path":["steps","focusChoices","picked"]},"index":{"type":"int","value":0}},"else":{"type":"name","path":["steps","focus","item","bonusSkill"]}}},"steps.focus.picked":{"text":"steps.focus.picked","tree":{"type":"name","path":["steps","focus","picked"]}},"steps.hitRoll.band == 'hit'\n || (has(steps.confirm) && steps.confirm.picked == 'hit')":{"text":"steps.hitRoll.band == 'hit' || has(steps.confirm) && steps.confirm.picked == 'hit'","tree":{"type":"binary","op":"||","left":{"type":"binary","op":"==","left":{"type":"name","path":["steps","hitRoll","band"]},"right":{"type":"string","value":"hit"}},"right":{"type":"binary","op":"&&","left":{"type":"call","fn":"has","args":[{"type":"name","path":["steps","confirm"]}]},"right":{"type":"binary","op":"==","left":{"type":"name","path":["steps","confirm","picked"]},"right":{"type":"string","value":"hit"}}}}},"steps.hitRoll.band == 'rolled'":{"text":"steps.hitRoll.band == 'rolled'","tree":{"type":"binary","op":"==","left":{"type":"name","path":["steps","hitRoll","band"]},"right":{"type":"string","value":"rolled"}}},"steps.hitRoll.total":{"text":"steps.hitRoll.total","tree":{"type":"name","path":["steps","hitRoll","total"]}},"steps.int.total":{"text":"steps.int.total","tree":{"type":"name","path":["steps","int","total"]}},"steps.learning.picked[0]":{"text":"steps.learning.picked[0]","tree":{"type":"index","object":{"type":"name","path":["steps","learning","picked"]},"index":{"type":"int","value":0}}},"steps.learning.picked[1]":{"text":"steps.learning.picked[1]","tree":{"type":"index","object":{"type":"name","path":["steps","learning","picked"]},"index":{"type":"int","value":1}}},"steps.method.picked == 'array'":{"text":"steps.method.picked == 'array'","tree":{"type":"binary","op":"==","left":{"type":"name","path":["steps","method","picked"]},"right":{"type":"string","value":"array"}}},"steps.pick.picked in ['punch', 'shoot', 'stab'] ? 0\n : min(skillPoints.expert, fieldOf('skills.{skill}', steps.pick.picked) + 2\n - fieldOf('skillCredit.{skill}', steps.pick.picked))":{"text":"steps.pick.picked in ['punch', 'shoot', 'stab'] ? 0 : min(skillPoints.expert, fieldOf('skills.{skill}', steps.pick.picked) + 2 - fieldOf('skillCredit.{skill}', steps.pick.picked))","tree":{"type":"conditional","test":{"type":"binary","op":"in","left":{"type":"name","path":["steps","pick","picked"]},"right":{"type":"list","items":[{"type":"string","value":"punch"},{"type":"string","value":"shoot"},{"type":"string","value":"stab"}]}},"then":{"type":"int","value":0},"else":{"type":"call","fn":"min","args":[{"type":"name","path":["skillPoints","expert"]},{"type":"binary","op":"-","left":{"type":"binary","op":"+","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"skills.{skill}"},{"type":"name","path":["steps","pick","picked"]}]},"right":{"type":"int","value":2}},"right":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"skillCredit.{skill}"},{"type":"name","path":["steps","pick","picked"]}]}}]}}},"steps.pick.picked in keysOf('attr')":{"text":"steps.pick.picked in keysOf('attr')","tree":{"type":"binary","op":"in","left":{"type":"name","path":["steps","pick","picked"]},"right":{"type":"call","fn":"keysOf","args":[{"type":"string","value":"attr"}]}}},"steps.roll.total":{"text":"steps.roll.total","tree":{"type":"name","path":["steps","roll","total"]}},"steps.save.band":{"text":"steps.save.band","tree":{"type":"name","path":["steps","save","band"]}},"steps.save.total":{"text":"steps.save.total","tree":{"type":"name","path":["steps","save","total"]}},"steps.silverRoll.total * 10":{"text":"steps.silverRoll.total * 10","tree":{"type":"binary","op":"*","left":{"type":"name","path":["steps","silverRoll","total"]},"right":{"type":"int","value":10}}},"steps.spellTradition.picked == 'highmage'\n || (steps.spellTradition.picked == 'invoker' && tradition.invoker.tier == 2) ? 2 : 1":{"text":"steps.spellTradition.picked == 'highmage' || steps.spellTradition.picked == 'invoker' && tradition.invoker.tier == 2 ? 2 : 1","tree":{"type":"conditional","test":{"type":"binary","op":"||","left":{"type":"binary","op":"==","left":{"type":"name","path":["steps","spellTradition","picked"]},"right":{"type":"string","value":"highmage"}},"right":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["steps","spellTradition","picked"]},"right":{"type":"string","value":"invoker"}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","invoker","tier"]},"right":{"type":"int","value":2}}}},"then":{"type":"int","value":2},"else":{"type":"int","value":1}}},"steps.str.total":{"text":"steps.str.total","tree":{"type":"name","path":["steps","str","total"]}},"steps.table1.picked == 'growth' ? 1d6 : 1d8":{"text":"steps.table1.picked == 'growth' ? 1d6 : 1d8","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["steps","table1","picked"]},"right":{"type":"string","value":"growth"}},"then":{"type":"dice","count":1,"sides":6,"modifiers":[]},"else":{"type":"dice","count":1,"sides":8,"modifiers":[]}}},"steps.table1.picked == 'growth' ? flags.growth[steps.die1.total - 1]\n : flags.learning[steps.die1.total - 1]":{"text":"steps.table1.picked == 'growth' ? flags.growth[steps.die1.total - 1] : flags.learning[steps.die1.total - 1]","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["steps","table1","picked"]},"right":{"type":"string","value":"growth"}},"then":{"type":"index","object":{"type":"name","path":["flags","growth"]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["steps","die1","total"]},"right":{"type":"int","value":1}}},"else":{"type":"index","object":{"type":"name","path":["flags","learning"]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["steps","die1","total"]},"right":{"type":"int","value":1}}}}},"steps.table2.picked == 'growth' ? 1d6 : 1d8":{"text":"steps.table2.picked == 'growth' ? 1d6 : 1d8","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["steps","table2","picked"]},"right":{"type":"string","value":"growth"}},"then":{"type":"dice","count":1,"sides":6,"modifiers":[]},"else":{"type":"dice","count":1,"sides":8,"modifiers":[]}}},"steps.table2.picked == 'growth' ? flags.growth[steps.die2.total - 1]\n : flags.learning[steps.die2.total - 1]":{"text":"steps.table2.picked == 'growth' ? flags.growth[steps.die2.total - 1] : flags.learning[steps.die2.total - 1]","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["steps","table2","picked"]},"right":{"type":"string","value":"growth"}},"then":{"type":"index","object":{"type":"name","path":["flags","growth"]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["steps","die2","total"]},"right":{"type":"int","value":1}}},"else":{"type":"index","object":{"type":"name","path":["flags","learning"]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["steps","die2","total"]},"right":{"type":"int","value":1}}}}},"steps.table3.picked == 'growth' ? 1d6 : 1d8":{"text":"steps.table3.picked == 'growth' ? 1d6 : 1d8","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["steps","table3","picked"]},"right":{"type":"string","value":"growth"}},"then":{"type":"dice","count":1,"sides":6,"modifiers":[]},"else":{"type":"dice","count":1,"sides":8,"modifiers":[]}}},"steps.table3.picked == 'growth' ? flags.growth[steps.die3.total - 1]\n : flags.learning[steps.die3.total - 1]":{"text":"steps.table3.picked == 'growth' ? flags.growth[steps.die3.total - 1] : flags.learning[steps.die3.total - 1]","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["steps","table3","picked"]},"right":{"type":"string","value":"growth"}},"then":{"type":"index","object":{"type":"name","path":["flags","growth"]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["steps","die3","total"]},"right":{"type":"int","value":1}}},"else":{"type":"index","object":{"type":"name","path":["flags","learning"]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["steps","die3","total"]},"right":{"type":"int","value":1}}}}},"steps.take.added[0]":{"text":"steps.take.added[0]","tree":{"type":"index","object":{"type":"name","path":["steps","take","added"]},"index":{"type":"int","value":0}}},"steps.wis.total":{"text":"steps.wis.total","tree":{"type":"name","path":["steps","wis","total"]}},"strain.current < strain.max && hp.current < hp.max":{"text":"strain.current < strain.max && hp.current < hp.max","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"<","left":{"type":"name","path":["strain","current"]},"right":{"type":"name","path":["strain","max"]}},"right":{"type":"binary","op":"<","left":{"type":"name","path":["hp","current"]},"right":{"type":"name","path":["hp","max"]}}}},"strain.max":{"text":"strain.max","tree":{"type":"name","path":["strain","max"]}},"sumCopies(ceil(copy.quantity / copy.fields.bundle) * copy.fields.enc,\n has(copy.fields.enc) && !copy.equipped)\n + floor((coins.copper + coins.silver + coins.gold) / 100)":{"text":"sumCopies(ceil(copy.quantity / copy.fields.bundle) * copy.fields.enc, has(copy.fields.enc) && !copy.equipped) + floor((coins.copper + coins.silver + coins.gold) / 100)","tree":{"type":"binary","op":"+","left":{"type":"call","fn":"sumCopies","args":[{"type":"binary","op":"*","left":{"type":"call","fn":"ceil","args":[{"type":"binary","op":"/","left":{"type":"name","path":["copy","quantity"]},"right":{"type":"name","path":["copy","fields","bundle"]}}]},"right":{"type":"name","path":["copy","fields","enc"]}},{"type":"binary","op":"&&","left":{"type":"call","fn":"has","args":[{"type":"name","path":["copy","fields","enc"]}]},"right":{"type":"unary","op":"!","operand":{"type":"name","path":["copy","equipped"]}}}]},"right":{"type":"call","fn":"floor","args":[{"type":"binary","op":"/","left":{"type":"binary","op":"+","left":{"type":"binary","op":"+","left":{"type":"name","path":["coins","copper"]},"right":{"type":"name","path":["coins","silver"]}},"right":{"type":"name","path":["coins","gold"]}},"right":{"type":"int","value":100}}]}}},"sumCopies(ceil(copy.quantity / copy.fields.bundle) * copy.fields.enc,\n has(copy.fields.enc) && copy.equipped && !copy.fields.wornFree)":{"text":"sumCopies(ceil(copy.quantity / copy.fields.bundle) * copy.fields.enc, has(copy.fields.enc) && copy.equipped && !copy.fields.wornFree)","tree":{"type":"call","fn":"sumCopies","args":[{"type":"binary","op":"*","left":{"type":"call","fn":"ceil","args":[{"type":"binary","op":"/","left":{"type":"name","path":["copy","quantity"]},"right":{"type":"name","path":["copy","fields","bundle"]}}]},"right":{"type":"name","path":["copy","fields","enc"]}},{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"call","fn":"has","args":[{"type":"name","path":["copy","fields","enc"]}]},"right":{"type":"name","path":["copy","equipped"]}},"right":{"type":"unary","op":"!","operand":{"type":"name","path":["copy","fields","wornFree"]}}}]}},"sumCopies(copy.state.level, copy.type == 'focus')":{"text":"sumCopies(copy.state.level, copy.type == 'focus')","tree":{"type":"call","fn":"sumCopies","args":[{"type":"name","path":["copy","state","level"]},{"type":"binary","op":"==","left":{"type":"name","path":["copy","type"]},"right":{"type":"string","value":"focus"}}]}},"sumList(keysOf('artTrad'), fieldOf('arts.{artTrad}.owed', x))":{"text":"sumList(keysOf('artTrad'), fieldOf('arts.{artTrad}.owed', x))","tree":{"type":"call","fn":"sumList","args":[{"type":"call","fn":"keysOf","args":[{"type":"string","value":"artTrad"}]},{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"arts.{artTrad}.owed"},{"type":"name","path":["x"]}]}]}},"tradition.accursed.tier == 0 ? 0\n : max(1, max(0, skills.magic) + max(attributes.int.mod, attributes.cha.mod))":{"text":"tradition.accursed.tier == 0 ? 0 : max(1, max(0, skills.magic) + max(attributes.int.mod, attributes.cha.mod))","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","accursed","tier"]},"right":{"type":"int","value":0}},"then":{"type":"int","value":0},"else":{"type":"call","fn":"max","args":[{"type":"int","value":1},{"type":"binary","op":"+","left":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","magic"]}]},"right":{"type":"call","fn":"max","args":[{"type":"name","path":["attributes","int","mod"]},{"type":"name","path":["attributes","cha","mod"]}]}}]}}},"tradition.accursed.tier > 0 ? [1, 1, 1, 1, 1, 1, 1, 1, 1, 1][level - 1] : 0":{"text":"tradition.accursed.tier > 0 ? [1, 1, 1, 1, 1, 1, 1, 1, 1, 1][level - 1] : 0","tree":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["tradition","accursed","tier"]},"right":{"type":"int","value":0}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":1}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"int","value":0}}},"tradition.bard.tier == 0 ? 0\n : max(1, max(0, skills.perform) + attributes.cha.mod)":{"text":"tradition.bard.tier == 0 ? 0 : max(1, max(0, skills.perform) + attributes.cha.mod)","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","bard","tier"]},"right":{"type":"int","value":0}},"then":{"type":"int","value":0},"else":{"type":"call","fn":"max","args":[{"type":"int","value":1},{"type":"binary","op":"+","left":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","perform"]}]},"right":{"type":"name","path":["attributes","cha","mod"]}}]}}},"tradition.bard.tier > 0 ? [1, 2, 2, 3, 3, 4, 4, 5, 5, 6][level - 1] : 0":{"text":"tradition.bard.tier > 0 ? [1, 2, 2, 3, 3, 4, 4, 5, 5, 6][level - 1] : 0","tree":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["tradition","bard","tier"]},"right":{"type":"int","value":0}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":5},{"type":"int","value":6}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"int","value":0}}},"tradition.beastmaster.tier == 0 ? 0\n : max(1, max(0, skills.survive) + max(attributes.wis.mod, attributes.cha.mod))":{"text":"tradition.beastmaster.tier == 0 ? 0 : max(1, max(0, skills.survive) + max(attributes.wis.mod, attributes.cha.mod))","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","beastmaster","tier"]},"right":{"type":"int","value":0}},"then":{"type":"int","value":0},"else":{"type":"call","fn":"max","args":[{"type":"int","value":1},{"type":"binary","op":"+","left":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","survive"]}]},"right":{"type":"call","fn":"max","args":[{"type":"name","path":["attributes","wis","mod"]},{"type":"name","path":["attributes","cha","mod"]}]}}]}}},"tradition.beastmaster.tier > 0":{"text":"tradition.beastmaster.tier > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["tradition","beastmaster","tier"]},"right":{"type":"int","value":0}}},"tradition.beastmaster.tier > 0 ? [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1] : 0":{"text":"tradition.beastmaster.tier > 0 ? [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1] : 0","tree":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["tradition","beastmaster","tier"]},"right":{"type":"int","value":0}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":5},{"type":"int","value":6},{"type":"int","value":6},{"type":"int","value":7}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"int","value":0}}},"tradition.bloodpriest.tier == 0 ? 0\n : max(1, max(0, skills.pray) + max(attributes.wis.mod, attributes.cha.mod))":{"text":"tradition.bloodpriest.tier == 0 ? 0 : max(1, max(0, skills.pray) + max(attributes.wis.mod, attributes.cha.mod))","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","bloodpriest","tier"]},"right":{"type":"int","value":0}},"then":{"type":"int","value":0},"else":{"type":"call","fn":"max","args":[{"type":"int","value":1},{"type":"binary","op":"+","left":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","pray"]}]},"right":{"type":"call","fn":"max","args":[{"type":"name","path":["attributes","wis","mod"]},{"type":"name","path":["attributes","cha","mod"]}]}}]}}},"tradition.bloodpriest.tier > 0 ? [2, 3, 3, 4, 5, 6, 6, 7, 7, 8][level - 1] : 0":{"text":"tradition.bloodpriest.tier > 0 ? [2, 3, 3, 4, 5, 6, 6, 7, 7, 8][level - 1] : 0","tree":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["tradition","bloodpriest","tier"]},"right":{"type":"int","value":0}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":6},{"type":"int","value":6},{"type":"int","value":7},{"type":"int","value":7},{"type":"int","value":8}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"int","value":0}}},"tradition.duelist.tier == 0 ? 0\n : max(1, max(0, skills.stab) + max(attributes.dex.mod, attributes.int.mod))":{"text":"tradition.duelist.tier == 0 ? 0 : max(1, max(0, skills.stab) + max(attributes.dex.mod, attributes.int.mod))","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","duelist","tier"]},"right":{"type":"int","value":0}},"then":{"type":"int","value":0},"else":{"type":"call","fn":"max","args":[{"type":"int","value":1},{"type":"binary","op":"+","left":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","stab"]}]},"right":{"type":"call","fn":"max","args":[{"type":"name","path":["attributes","dex","mod"]},{"type":"name","path":["attributes","int","mod"]}]}}]}}},"tradition.duelist.tier == 0 ? attack.base\n : max(attack.base, class.warrior > 0 ? level : [1, 1, 2, 2, 3, 3, 4, 4, 5, 5][level - 1])":{"text":"tradition.duelist.tier == 0 ? attack.base : max(attack.base, class.warrior > 0 ? level : [1, 1, 2, 2, 3, 3, 4, 4, 5, 5][level - 1])","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","duelist","tier"]},"right":{"type":"int","value":0}},"then":{"type":"name","path":["attack","base"]},"else":{"type":"call","fn":"max","args":[{"type":"name","path":["attack","base"]},{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["class","warrior"]},"right":{"type":"int","value":0}},"then":{"type":"name","path":["level"]},"else":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":5}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}}}]}}},"tradition.duelist.tier > 0 ? [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1] : 0":{"text":"tradition.duelist.tier > 0 ? [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1] : 0","tree":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["tradition","duelist","tier"]},"right":{"type":"int","value":0}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":5},{"type":"int","value":6},{"type":"int","value":6},{"type":"int","value":7}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"int","value":0}}},"tradition.elementalist.tier == 0 ? (invoker.education == 'elementalist' ? max(1, max(0, skills.magic)) : 0)\n : max(1, 1 + max(0, skills.magic) + max(attributes.int.mod, attributes.cha.mod) - (tradition.elementalist.tier == 1 ? 1 : 0))":{"text":"tradition.elementalist.tier == 0 ? (invoker.education == 'elementalist' ? max(1, max(0, skills.magic)) : 0) : max(1, 1 + max(0, skills.magic) + max(attributes.int.mod, attributes.cha.mod) - (tradition.elementalist.tier == 1 ? 1 : 0))","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","elementalist","tier"]},"right":{"type":"int","value":0}},"then":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["invoker","education"]},"right":{"type":"string","value":"elementalist"}},"then":{"type":"call","fn":"max","args":[{"type":"int","value":1},{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","magic"]}]}]},"else":{"type":"int","value":0}},"else":{"type":"call","fn":"max","args":[{"type":"int","value":1},{"type":"binary","op":"-","left":{"type":"binary","op":"+","left":{"type":"binary","op":"+","left":{"type":"int","value":1},"right":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","magic"]}]}},"right":{"type":"call","fn":"max","args":[{"type":"name","path":["attributes","int","mod"]},{"type":"name","path":["attributes","cha","mod"]}]}},"right":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","elementalist","tier"]},"right":{"type":"int","value":1}},"then":{"type":"int","value":1},"else":{"type":"int","value":0}}}]}}},"tradition.elementalist.tier == 2 ? [1, 2, 2, 3, 3, 4, 4, 5, 5, 6][level - 1]\n : tradition.elementalist.tier == 1 ? [1, 1, 2, 2, 2, 3, 3, 3, 4, 4][level - 1]\n : invoker.education == 'elementalist' ? (tradition.invoker.tier == 2 ? 1 : 1) : 0":{"text":"tradition.elementalist.tier == 2 ? [1, 2, 2, 3, 3, 4, 4, 5, 5, 6][level - 1] : tradition.elementalist.tier == 1 ? [1, 1, 2, 2, 2, 3, 3, 3, 4, 4][level - 1] : invoker.education == 'elementalist' ? (tradition.invoker.tier == 2 ? 1 : 1) : 0","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","elementalist","tier"]},"right":{"type":"int","value":2}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":5},{"type":"int","value":6}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","elementalist","tier"]},"right":{"type":"int","value":1}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":4}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["invoker","education"]},"right":{"type":"string","value":"elementalist"}},"then":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","invoker","tier"]},"right":{"type":"int","value":2}},"then":{"type":"int","value":1},"else":{"type":"int","value":1}},"else":{"type":"int","value":0}}}}},"tradition.healer.tier == 0 ? 0\n : max(1, max(0, skills.heal) + max(attributes.int.mod, attributes.cha.mod))":{"text":"tradition.healer.tier == 0 ? 0 : max(1, max(0, skills.heal) + max(attributes.int.mod, attributes.cha.mod))","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","healer","tier"]},"right":{"type":"int","value":0}},"then":{"type":"int","value":0},"else":{"type":"call","fn":"max","args":[{"type":"int","value":1},{"type":"binary","op":"+","left":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","heal"]}]},"right":{"type":"call","fn":"max","args":[{"type":"name","path":["attributes","int","mod"]},{"type":"name","path":["attributes","cha","mod"]}]}}]}}},"tradition.healer.tier > 0 ? [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1] : 0":{"text":"tradition.healer.tier > 0 ? [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1] : 0","tree":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["tradition","healer","tier"]},"right":{"type":"int","value":0}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":5},{"type":"int","value":6},{"type":"int","value":6},{"type":"int","value":7}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"int","value":0}}},"tradition.highmage.tier + tradition.elementalist.tier + tradition.necromancer.tier == 0":{"text":"tradition.highmage.tier + tradition.elementalist.tier + tradition.necromancer.tier == 0","tree":{"type":"binary","op":"==","left":{"type":"binary","op":"+","left":{"type":"binary","op":"+","left":{"type":"name","path":["tradition","highmage","tier"]},"right":{"type":"name","path":["tradition","elementalist","tier"]}},"right":{"type":"name","path":["tradition","necromancer","tier"]}},"right":{"type":"int","value":0}}},"tradition.highmage.tier == 0 ? (invoker.education == 'highmage' ? max(1, max(0, skills.magic)) : 0)\n : max(1, 1 + max(0, skills.magic) + max(attributes.int.mod, attributes.cha.mod) - (tradition.highmage.tier == 1 ? 1 : 0))":{"text":"tradition.highmage.tier == 0 ? (invoker.education == 'highmage' ? max(1, max(0, skills.magic)) : 0) : max(1, 1 + max(0, skills.magic) + max(attributes.int.mod, attributes.cha.mod) - (tradition.highmage.tier == 1 ? 1 : 0))","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","highmage","tier"]},"right":{"type":"int","value":0}},"then":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["invoker","education"]},"right":{"type":"string","value":"highmage"}},"then":{"type":"call","fn":"max","args":[{"type":"int","value":1},{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","magic"]}]}]},"else":{"type":"int","value":0}},"else":{"type":"call","fn":"max","args":[{"type":"int","value":1},{"type":"binary","op":"-","left":{"type":"binary","op":"+","left":{"type":"binary","op":"+","left":{"type":"int","value":1},"right":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","magic"]}]}},"right":{"type":"call","fn":"max","args":[{"type":"name","path":["attributes","int","mod"]},{"type":"name","path":["attributes","cha","mod"]}]}},"right":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","highmage","tier"]},"right":{"type":"int","value":1}},"then":{"type":"int","value":1},"else":{"type":"int","value":0}}}]}}},"tradition.highmage.tier == 2 ? [2, 3, 3, 4, 4, 5, 5, 6, 6, 7][level - 1]\n : tradition.highmage.tier == 1 ? [1, 2, 3, 3, 3, 4, 4, 4, 5, 5][level - 1]\n : invoker.education == 'highmage' ? (tradition.invoker.tier == 2 ? 2 : 1) : 0":{"text":"tradition.highmage.tier == 2 ? [2, 3, 3, 4, 4, 5, 5, 6, 6, 7][level - 1] : tradition.highmage.tier == 1 ? [1, 2, 3, 3, 3, 4, 4, 4, 5, 5][level - 1] : invoker.education == 'highmage' ? (tradition.invoker.tier == 2 ? 2 : 1) : 0","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","highmage","tier"]},"right":{"type":"int","value":2}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":5},{"type":"int","value":6},{"type":"int","value":6},{"type":"int","value":7}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","highmage","tier"]},"right":{"type":"int","value":1}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":4},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":5}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["invoker","education"]},"right":{"type":"string","value":"highmage"}},"then":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","invoker","tier"]},"right":{"type":"int","value":2}},"then":{"type":"int","value":2},"else":{"type":"int","value":1}},"else":{"type":"int","value":0}}}}},"tradition.invoker.tier != 1\n || tradition.highmage.tier + tradition.elementalist.tier + tradition.necromancer.tier == 0":{"text":"tradition.invoker.tier != 1 || tradition.highmage.tier + tradition.elementalist.tier + tradition.necromancer.tier == 0","tree":{"type":"binary","op":"||","left":{"type":"binary","op":"!=","left":{"type":"name","path":["tradition","invoker","tier"]},"right":{"type":"int","value":1}},"right":{"type":"binary","op":"==","left":{"type":"binary","op":"+","left":{"type":"binary","op":"+","left":{"type":"name","path":["tradition","highmage","tier"]},"right":{"type":"name","path":["tradition","elementalist","tier"]}},"right":{"type":"name","path":["tradition","necromancer","tier"]}},"right":{"type":"int","value":0}}}},"tradition.invoker.tier == 0":{"text":"tradition.invoker.tier == 0","tree":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","invoker","tier"]},"right":{"type":"int","value":0}}},"tradition.invoker.tier == 2 ? 'invoker'\n : tradition.invoker.tier == 1 ? 'partial-invoker'\n : countList(keysOf('spellTrad'), fieldOf('tradition.{trad}.tier', x) == 2) > 0 ? 'full'\n : countList(keysOf('spellTrad'), fieldOf('tradition.{trad}.tier', x) == 1) >= 2 ? 'dual'\n : countList(keysOf('spellTrad'), fieldOf('tradition.{trad}.tier', x) == 1) > 0 ? 'partial'\n : 'none'":{"text":"tradition.invoker.tier == 2 ? 'invoker' : tradition.invoker.tier == 1 ? 'partial-invoker' : countList(keysOf('spellTrad'), fieldOf('tradition.{trad}.tier', x) == 2) > 0 ? 'full' : countList(keysOf('spellTrad'), fieldOf('tradition.{trad}.tier', x) == 1) >= 2 ? 'dual' : countList(keysOf('spellTrad'), fieldOf('tradition.{trad}.tier', x) == 1) > 0 ? 'partial' : 'none'","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","invoker","tier"]},"right":{"type":"int","value":2}},"then":{"type":"string","value":"invoker"},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","invoker","tier"]},"right":{"type":"int","value":1}},"then":{"type":"string","value":"partial-invoker"},"else":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"call","fn":"countList","args":[{"type":"call","fn":"keysOf","args":[{"type":"string","value":"spellTrad"}]},{"type":"binary","op":"==","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"tradition.{trad}.tier"},{"type":"name","path":["x"]}]},"right":{"type":"int","value":2}}]},"right":{"type":"int","value":0}},"then":{"type":"string","value":"full"},"else":{"type":"conditional","test":{"type":"binary","op":">=","left":{"type":"call","fn":"countList","args":[{"type":"call","fn":"keysOf","args":[{"type":"string","value":"spellTrad"}]},{"type":"binary","op":"==","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"tradition.{trad}.tier"},{"type":"name","path":["x"]}]},"right":{"type":"int","value":1}}]},"right":{"type":"int","value":2}},"then":{"type":"string","value":"dual"},"else":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"call","fn":"countList","args":[{"type":"call","fn":"keysOf","args":[{"type":"string","value":"spellTrad"}]},{"type":"binary","op":"==","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"tradition.{trad}.tier"},{"type":"name","path":["x"]}]},"right":{"type":"int","value":1}}]},"right":{"type":"int","value":0}},"then":{"type":"string","value":"partial"},"else":{"type":"string","value":"none"}}}}}}},"tradition.invoker.tier > 0":{"text":"tradition.invoker.tier > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["tradition","invoker","tier"]},"right":{"type":"int","value":0}}},"tradition.mageslayer.tier == 0 ? 0\n : max(1, max(0, skills.magic) + max(attributes.int.mod, attributes.con.mod))":{"text":"tradition.mageslayer.tier == 0 ? 0 : max(1, max(0, skills.magic) + max(attributes.int.mod, attributes.con.mod))","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","mageslayer","tier"]},"right":{"type":"int","value":0}},"then":{"type":"int","value":0},"else":{"type":"call","fn":"max","args":[{"type":"int","value":1},{"type":"binary","op":"+","left":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","magic"]}]},"right":{"type":"call","fn":"max","args":[{"type":"name","path":["attributes","int","mod"]},{"type":"name","path":["attributes","con","mod"]}]}}]}}},"tradition.mageslayer.tier == 0 || class.mage == 0":{"text":"tradition.mageslayer.tier == 0 || class.mage == 0","tree":{"type":"binary","op":"||","left":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","mageslayer","tier"]},"right":{"type":"int","value":0}},"right":{"type":"binary","op":"==","left":{"type":"name","path":["class","mage"]},"right":{"type":"int","value":0}}}},"tradition.mageslayer.tier > 0 ? [0, 0, 0, 0, 0, 0, 0, 0, 0, 0][level - 1] : 0":{"text":"tradition.mageslayer.tier > 0 ? [0, 0, 0, 0, 0, 0, 0, 0, 0, 0][level - 1] : 0","tree":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["tradition","mageslayer","tier"]},"right":{"type":"int","value":0}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":0},{"type":"int","value":0},{"type":"int","value":0},{"type":"int","value":0},{"type":"int","value":0},{"type":"int","value":0},{"type":"int","value":0},{"type":"int","value":0},{"type":"int","value":0},{"type":"int","value":0}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"int","value":0}}},"tradition.necromancer.tier == 0 ? (invoker.education == 'necromancer' ? max(1, max(0, skills.magic)) : 0)\n : max(1, 1 + max(0, skills.magic) + max(attributes.int.mod, attributes.cha.mod) - (tradition.necromancer.tier == 1 ? 1 : 0))":{"text":"tradition.necromancer.tier == 0 ? (invoker.education == 'necromancer' ? max(1, max(0, skills.magic)) : 0) : max(1, 1 + max(0, skills.magic) + max(attributes.int.mod, attributes.cha.mod) - (tradition.necromancer.tier == 1 ? 1 : 0))","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","necromancer","tier"]},"right":{"type":"int","value":0}},"then":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["invoker","education"]},"right":{"type":"string","value":"necromancer"}},"then":{"type":"call","fn":"max","args":[{"type":"int","value":1},{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","magic"]}]}]},"else":{"type":"int","value":0}},"else":{"type":"call","fn":"max","args":[{"type":"int","value":1},{"type":"binary","op":"-","left":{"type":"binary","op":"+","left":{"type":"binary","op":"+","left":{"type":"int","value":1},"right":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","magic"]}]}},"right":{"type":"call","fn":"max","args":[{"type":"name","path":["attributes","int","mod"]},{"type":"name","path":["attributes","cha","mod"]}]}},"right":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","necromancer","tier"]},"right":{"type":"int","value":1}},"then":{"type":"int","value":1},"else":{"type":"int","value":0}}}]}}},"tradition.necromancer.tier == 2 ? [2, 3, 3, 4, 4, 5, 5, 6, 6, 7][level - 1]\n : tradition.necromancer.tier == 1 ? [1, 2, 3, 3, 3, 4, 4, 4, 5, 5][level - 1]\n : invoker.education == 'necromancer' ? (tradition.invoker.tier == 2 ? 2 : 1) : 0":{"text":"tradition.necromancer.tier == 2 ? [2, 3, 3, 4, 4, 5, 5, 6, 6, 7][level - 1] : tradition.necromancer.tier == 1 ? [1, 2, 3, 3, 3, 4, 4, 4, 5, 5][level - 1] : invoker.education == 'necromancer' ? (tradition.invoker.tier == 2 ? 2 : 1) : 0","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","necromancer","tier"]},"right":{"type":"int","value":2}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":5},{"type":"int","value":6},{"type":"int","value":6},{"type":"int","value":7}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","necromancer","tier"]},"right":{"type":"int","value":1}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":4},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":5}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["invoker","education"]},"right":{"type":"string","value":"necromancer"}},"then":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","invoker","tier"]},"right":{"type":"int","value":2}},"then":{"type":"int","value":2},"else":{"type":"int","value":1}},"else":{"type":"int","value":0}}}}},"tradition.skinshifter.tier == 0 ? 0\n : max(1, max(0, skills.survive) + max(attributes.con.mod, attributes.cha.mod))":{"text":"tradition.skinshifter.tier == 0 ? 0 : max(1, max(0, skills.survive) + max(attributes.con.mod, attributes.cha.mod))","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","skinshifter","tier"]},"right":{"type":"int","value":0}},"then":{"type":"int","value":0},"else":{"type":"call","fn":"max","args":[{"type":"int","value":1},{"type":"binary","op":"+","left":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","survive"]}]},"right":{"type":"call","fn":"max","args":[{"type":"name","path":["attributes","con","mod"]},{"type":"name","path":["attributes","cha","mod"]}]}}]}}},"tradition.skinshifter.tier > 0 ? [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1] : 0":{"text":"tradition.skinshifter.tier > 0 ? [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1] : 0","tree":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["tradition","skinshifter","tier"]},"right":{"type":"int","value":0}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":5},{"type":"int","value":6},{"type":"int","value":6},{"type":"int","value":7}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"int","value":0}}},"tradition.thoughtnoble.tier == 0 ? 0\n : max(1, max(0, skills.notice) + max(attributes.int.mod, attributes.wis.mod))":{"text":"tradition.thoughtnoble.tier == 0 ? 0 : max(1, max(0, skills.notice) + max(attributes.int.mod, attributes.wis.mod))","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","thoughtnoble","tier"]},"right":{"type":"int","value":0}},"then":{"type":"int","value":0},"else":{"type":"call","fn":"max","args":[{"type":"int","value":1},{"type":"binary","op":"+","left":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"name","path":["skills","notice"]}]},"right":{"type":"call","fn":"max","args":[{"type":"name","path":["attributes","int","mod"]},{"type":"name","path":["attributes","wis","mod"]}]}}]}}},"tradition.thoughtnoble.tier > 0 ? [1, 2, 3, 4, 5, 6, 7, 8, 9, 10][level - 1] : 0":{"text":"tradition.thoughtnoble.tier > 0 ? [1, 2, 3, 4, 5, 6, 7, 8, 9, 10][level - 1] : 0","tree":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["tradition","thoughtnoble","tier"]},"right":{"type":"int","value":0}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":6},{"type":"int","value":7},{"type":"int","value":8},{"type":"int","value":9},{"type":"int","value":10}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"int","value":0}}},"tradition.vowed.tier == 0":{"text":"tradition.vowed.tier == 0","tree":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","vowed","tier"]},"right":{"type":"int","value":0}}},"tradition.vowed.tier == 0 && skills.punch >= 1":{"text":"tradition.vowed.tier == 0 && skills.punch >= 1","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","vowed","tier"]},"right":{"type":"int","value":0}},"right":{"type":"binary","op":">=","left":{"type":"name","path":["skills","punch"]},"right":{"type":"int","value":1}}}},"tradition.vowed.tier == 0 ? 0\n : max(1, (vowed.skill == '' ? 0 : max(0, fieldOf('skills.{skill}', vowed.skill))) + attributes.bestMod)":{"text":"tradition.vowed.tier == 0 ? 0 : max(1, (vowed.skill == '' ? 0 : max(0, fieldOf('skills.{skill}', vowed.skill))) + attributes.bestMod)","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","vowed","tier"]},"right":{"type":"int","value":0}},"then":{"type":"int","value":0},"else":{"type":"call","fn":"max","args":[{"type":"int","value":1},{"type":"binary","op":"+","left":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["vowed","skill"]},"right":{"type":"string","value":""}},"then":{"type":"int","value":0},"else":{"type":"call","fn":"max","args":[{"type":"int","value":0},{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"skills.{skill}"},{"type":"name","path":["vowed","skill"]}]}]}},"right":{"type":"name","path":["attributes","bestMod"]}}]}}},"tradition.vowed.tier > 0 ? [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1] : 0":{"text":"tradition.vowed.tier > 0 ? [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1] : 0","tree":{"type":"conditional","test":{"type":"binary","op":">","left":{"type":"name","path":["tradition","vowed","tier"]},"right":{"type":"int","value":0}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":5},{"type":"int","value":6},{"type":"int","value":6},{"type":"int","value":7}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"int","value":0}}},"tradition.wise.tier == 0 ? 0\n : wise.path == 'esoteric' ? [1, 1, 2, 2, 3, 3, 4, 4, 5, 5][level - 1]\n : [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1]":{"text":"tradition.wise.tier == 0 ? 0 : wise.path == 'esoteric' ? [1, 1, 2, 2, 3, 3, 4, 4, 5, 5][level - 1] : [1, 2, 2, 3, 4, 5, 5, 6, 6, 7][level - 1]","tree":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["tradition","wise","tier"]},"right":{"type":"int","value":0}},"then":{"type":"int","value":0},"else":{"type":"conditional","test":{"type":"binary","op":"==","left":{"type":"name","path":["wise","path"]},"right":{"type":"string","value":"esoteric"}},"then":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":5}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}},"else":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":2},{"type":"int","value":2},{"type":"int","value":3},{"type":"int","value":4},{"type":"int","value":5},{"type":"int","value":5},{"type":"int","value":6},{"type":"int","value":6},{"type":"int","value":7}]},"index":{"type":"binary","op":"-","left":{"type":"name","path":["level"]},"right":{"type":"int","value":1}}}}}},"value != 'any' && picks < countList(flags.learning, x == value)":{"text":"value != 'any' && picks < countList(flags.learning, x == value)","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":"!=","left":{"type":"name","path":["value"]},"right":{"type":"string","value":"any"}},"right":{"type":"binary","op":"<","left":{"type":"name","path":["picks"]},"right":{"type":"call","fn":"countList","args":[{"type":"name","path":["flags","learning"]},{"type":"binary","op":"==","left":{"type":"name","path":["x"]},"right":{"type":"name","path":["value"]}}]}}}},"value in keysOf('attr')\n ? attributes.boosts < 5 && fieldOf('attributes.{attr}.score', value) < 18\n && level >= [1, 1, 3, 6, 9][attributes.boosts]\n && attributes.boosts + 1 <= skillPoints.unspent + skillPoints.expert\n : fieldOf('skills.{skill}', value) < 4\n && level >= [1, 1, 3, 6, 9][fieldOf('skills.{skill}', value) + 1]\n && fieldOf('skills.{skill}', value) + 2 - fieldOf('skillCredit.{skill}', value)\n <= skillPoints.unspent\n + (value in ['punch', 'shoot', 'stab'] ? 0 : skillPoints.expert)":{"text":"value in keysOf('attr') ? attributes.boosts < 5 && fieldOf('attributes.{attr}.score', value) < 18 && level >= [1, 1, 3, 6, 9][attributes.boosts] && attributes.boosts + 1 <= skillPoints.unspent + skillPoints.expert : fieldOf('skills.{skill}', value) < 4 && level >= [1, 1, 3, 6, 9][fieldOf('skills.{skill}', value) + 1] && fieldOf('skills.{skill}', value) + 2 - fieldOf('skillCredit.{skill}', value) <= skillPoints.unspent + (value in ['punch', 'shoot', 'stab'] ? 0 : skillPoints.expert)","tree":{"type":"conditional","test":{"type":"binary","op":"in","left":{"type":"name","path":["value"]},"right":{"type":"call","fn":"keysOf","args":[{"type":"string","value":"attr"}]}},"then":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"<","left":{"type":"name","path":["attributes","boosts"]},"right":{"type":"int","value":5}},"right":{"type":"binary","op":"<","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"attributes.{attr}.score"},{"type":"name","path":["value"]}]},"right":{"type":"int","value":18}}},"right":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":3},{"type":"int","value":6},{"type":"int","value":9}]},"index":{"type":"name","path":["attributes","boosts"]}}}},"right":{"type":"binary","op":"<=","left":{"type":"binary","op":"+","left":{"type":"name","path":["attributes","boosts"]},"right":{"type":"int","value":1}},"right":{"type":"binary","op":"+","left":{"type":"name","path":["skillPoints","unspent"]},"right":{"type":"name","path":["skillPoints","expert"]}}}},"else":{"type":"binary","op":"&&","left":{"type":"binary","op":"&&","left":{"type":"binary","op":"<","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"skills.{skill}"},{"type":"name","path":["value"]}]},"right":{"type":"int","value":4}},"right":{"type":"binary","op":">=","left":{"type":"name","path":["level"]},"right":{"type":"index","object":{"type":"list","items":[{"type":"int","value":1},{"type":"int","value":1},{"type":"int","value":3},{"type":"int","value":6},{"type":"int","value":9}]},"index":{"type":"binary","op":"+","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"skills.{skill}"},{"type":"name","path":["value"]}]},"right":{"type":"int","value":1}}}}},"right":{"type":"binary","op":"<=","left":{"type":"binary","op":"-","left":{"type":"binary","op":"+","left":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"skills.{skill}"},{"type":"name","path":["value"]}]},"right":{"type":"int","value":2}},"right":{"type":"call","fn":"fieldOf","args":[{"type":"string","value":"skillCredit.{skill}"},{"type":"name","path":["value"]}]}},"right":{"type":"binary","op":"+","left":{"type":"name","path":["skillPoints","unspent"]},"right":{"type":"conditional","test":{"type":"binary","op":"in","left":{"type":"name","path":["value"]},"right":{"type":"list","items":[{"type":"string","value":"punch"},{"type":"string","value":"shoot"},{"type":"string","value":"stab"}]}},"then":{"type":"int","value":0},"else":{"type":"name","path":["skillPoints","expert"]}}}}}}},"vowed.skill":{"text":"vowed.skill","tree":{"type":"name","path":["vowed","skill"]}},"wise.skill":{"text":"wise.skill","tree":{"type":"name","path":["wise","skill"]}},"xp.nextLevel > 0":{"text":"xp.nextLevel > 0","tree":{"type":"binary","op":">","left":{"type":"name","path":["xp","nextLevel"]},"right":{"type":"int","value":0}}},"xp.nextLevel > 0 && xp.current >= xp.nextLevel":{"text":"xp.nextLevel > 0 && xp.current >= xp.nextLevel","tree":{"type":"binary","op":"&&","left":{"type":"binary","op":">","left":{"type":"name","path":["xp","nextLevel"]},"right":{"type":"int","value":0}},"right":{"type":"binary","op":">=","left":{"type":"name","path":["xp","current"]},"right":{"type":"name","path":["xp","nextLevel"]}}}}}};