-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathCOM_5ePack_ERFLW - Artificer.user
4259 lines (3932 loc) · 280 KB
/
COM_5ePack_ERFLW - Artificer.user
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="UTF-8"?>
<document signature="Hero Lab Data">
<thing id="cHelpAtf" name="Artificer" description="Masters of unlocking magic in everyday objects, artificers are supreme inventors. They see magic as a complex system waiting to be decoded and controlled. Artificers use tools to channel arcane power, crafting temporary and permanent magical objects. To cast a spell, an artificer could use alchemist’s supplies to create a potent elixir, calligrapher’s supplies to inscribe a sigil of power on an ally’s armor, or tinker’s tools to craft a temporary charm. The magic of artificers is tied to their tools and their talents." compset="Class" maxlimit="" uniqueness="unique">
<fieldval field="cToolMax" value="1"/>
<fieldval field="shortname" value="Artificer"/>
<fieldval field="cHDSides" value="8"/>
<fieldval field="cSpecSing" value="Artificer Specialist"/>
<fieldval field="cSkillMax3" value="2"/>
<fieldval field="cAbbr" value="ArR"/>
<fieldval field="StartWeap" value="• any two simple weapons{br}• a light crossbow and 20 bolts"/>
<fieldval field="StartArmor" value="(a) studded leather armor or (b) scale mail"/>
<fieldval field="StartGear" value="thieves’ tools and a dungeoneer’s pack"/>
<fieldval field="StartAll" value="You start with the following equipment, in addition to the equipment granted by your background:{br}• any two simple weapons{br}• a light crossbow and 20 bolts{br}• (a) studded leather armor or (b) scale mail{br}• thieves’ tools and a dungeoneer’s pack{br}{br}If you forgo this starting equipment, as well as the items offered by your background, you start with 5d4 × 10 gp to buy your equipment.{br}"/>
<arrayval field="cAttrArray" index="18" value="10"/>
<arrayval field="cAttrArray" index="3" value="2"/>
<arrayval field="cAttrArray" index="7" value="4"/>
<arrayval field="cAttrArray" index="11" value="6"/>
<arrayval field="cCustTot" index="2" value="1"/>
<arrayval field="cAttrArray" index="15" value="8"/>
<arrayval field="cArrKnCan" index="0" value="2"/>
<arrayval field="cArrKnCan" index="9" value="3"/>
<arrayval field="cArrKnCan" index="13" value="4"/>
<usesource source="5eRftLWCP"/>
<usesource source="5eTCoE"/>
<tag group="ProfSave" tag="svINT"/>
<tag group="AllowSkl3" tag="skInvestig"/>
<tag group="AllowTool1" tag="Artisan"/>
<tag group="PrimeAbil" tag="aINT"/>
<tag group="ProfSave" tag="svCON"/>
<tag group="CasterType" tag="MemAll"/>
<tag group="sClass" tag="cHelpAtf"/>
<tag group="CasterSrc" tag="Arcane"/>
<tag group="Helper" tag="HalfCaster"/>
<tag group="AllowSkl3" tag="skMedicine"/>
<tag group="AllowSkl3" tag="skArcana"/>
<tag group="AllowSkl3" tag="skNature"/>
<tag group="AllowSkl3" tag="skHistory"/>
<tag group="AllowSkl3" tag="skPercep"/>
<tag group="AllowSkl3" tag="skSleight"/>
<tag group="Classes" tag="ArtificerR" name="Artificer"/>
<tag group="ArmProfGrp" tag="ArmorLight"/>
<tag group="ArmProfGrp" tag="ArmorMed"/>
<tag group="ArmProfGrp" tag="Shields"/>
<tag group="ArmProfGrp" tag="WepSimple"/>
<bootstrap thing="gTooThieve">
<autotag group="Proficienc" tag="Tool"/>
</bootstrap>
<bootstrap thing="cAtf5CToolExp">
<autotag group="ClSpecWhen" tag="6"/>
</bootstrap>
<bootstrap thing="cAtf5CSSItem">
<autotag group="ClSpecWhen" tag="11"/>
</bootstrap>
<bootstrap thing="cAtf5CSoA">
<autotag group="ClSpecWhen" tag="20"/>
</bootstrap>
<bootstrap thing="cAtf5CMagIAd">
<autotag group="ClSpecWhen" tag="10"/>
</bootstrap>
<bootstrap thing="cAtf5CMagISa">
<autotag group="ClSpecWhen" tag="14"/>
</bootstrap>
<bootstrap thing="cAtf5CMagIMa">
<autotag group="ClSpecWhen" tag="18"/>
</bootstrap>
<bootstrap thing="cAtf5CInfItem">
<autotag group="ClSpecWhen" tag="2"/>
</bootstrap>
<bootstrap thing="gTooTinker">
<autotag group="Proficienc" tag="Tool"/>
</bootstrap>
<bootstrap thing="cAtf5CMagTink">
<autotag group="ClSpecWhen" tag="1"/>
</bootstrap>
<bootstrap thing="cAtf5CFlaGen">
<autotag group="ClSpecWhen" tag="7"/>
</bootstrap>
<bootstrap thing="cAtf5CRghToo">
<autotag group="ClSpecWhen" tag="3"/>
</bootstrap>
<bootstrap thing="cAtf5CCntrps">
<autotag group="ClSpecWhen" tag="1"/>
</bootstrap>
<link linkage="castattr" thing="aINT"/>
<eval phase="PostAttr" priority="101" index="4"><![CDATA[doneif (hero.tagcount[Classes.ArtificerR] <> 1)
var spl as number
spl = hero.childfound[aINT].field[aBonus].value
spl = maximum(1,spl)
field[cMaxSpMem].value = spl]]></eval>
<eval phase="Level" priority="6000" index="2"><![CDATA[ ~ Don't reduce our capabilities for multiclassing if this is the first
~ class we have taken.
doneif (tagis[Helper.FirstLevel] <> 0)
~ Multiclass Artificers lose simple weapons ~ proficiencies, all skills, and all save proficiencies
perform delete[ArmProfGrp.WepSimple]
perform delete[ProfSave.?]
field[cSkillMax3].value -= 2
field[cToolMax].value -= 1
~<before name="Class Helper forwards Proficiency Tags"/>
~<before name="Weapon and Armor group proficiencies forwarded to hero"/>
~<after name="Declare First Level"/>]]></eval>
<eval phase="PreLevel" index="3">~Deal with out half level round up casting situation
var lev as number
var rnd as number
var dwn as number
lev = hero.tagcount[Classes.ArtificerR]
rnd = lev/2
dwn = lev/2
rnd = round(rnd,0,0)
dwn = round(dwn,0,-1)
if (rnd - dwn = 1) then
field[cCasterLev].value += 1
endif</eval>
</thing>
<thing id="cArtificerR" name="Artificer" compset="ClassLevel" maxlimit="20">
<usesource source="5eRftLWCP"/>
<usesource source="5eTCoE"/>
<tag group="ClassType" tag="Normal"/>
<bootstrap thing="cHelpAtf"></bootstrap>
<link linkage="helper" thing="cHelpAtf"/>
</thing>
<thing id="p5CAtfMagTink" name="Artificer: Magical Tinkering" description="You learn how to invest a spark of magic into otherwise mundane objects. To use this ability, you must have thieves’ tools or other artisan’s tools in hand. You use an action to touch a Tiny nonmagical object and give it one of these magical properties of your choice:\n\n{b}(1){/b} - The object sheds bright light in a 5-foot radius and dim light for an additional 5 feet.\n{b}(2){/b} - Whenever tapped by a creature, the object plays a recorded message, audible up to 10 feet away. You speak the message when you bestow this property on the object, and the recording cannot be more than 6 seconds long.\n{b}(3){/b} - The object continuously emits your choice of an odor or a nonverbal sound (wind, waves, chirping, or the like). The chosen smell or sound is perceivable up to 10 feet away.\n{b}(4){/b} - A static visual effect appears on one of the object’s surfaces. The effect can be a picture, up to 25 words of text, lines and shapes, or a mixture of these elements, as you choose. The chosen property lasts indefinitely. You can also use an action to touch the object and end this property.\n\nYou can do this to multiple objects, touching one object each time you use the feature, but a single object can bear only one of the properties at a time. The maximum number of objects you can affect with the feature at one time is equal to your Intelligence modifier (minimum of one object). If you try to exceed your maximum, the oldest property immediately ends, and then the new property applies." compset="InPlay" summary="A Tiny nonmagical object">
<fieldval field="pCandExpr" value="component.OnlyGear"/>
<fieldval field="pMinimum" value="1"/>
<fieldval field="pMaximum" value="4"/>
<fieldval field="pSource" value="Tiny nonmagical object"/>
<usesource source="5eRftLWCP"/>
<usesource source="5eTCoE"/>
<tag group="Helper" tag="AdjNoPlus"/>
<tag group="OthAdjCat" tag="Class"/>
<tag group="ChooseSrc1" tag="Hero"/>
<tag group="Helper" tag="AdjInfo"/>
<eval phase="Render" priority="999999999">~ If we're not enabled, get out now
doneif (field[pIsOn].value = 0)
~ If nothing's been chosen, get out now
doneif (field[pChosen].ischosen = 0)
var iVar as number
var sText as string
var sString as string
iVar = field[pAdjust].value
if (iVar = 1) then
sText = " (Radiate light)"
sString = "The object sheds bright light in a 5-foot radius and dim light for an additional 5 feet."
endif
if (iVar = 2) then
sText = " (Message)"
sString = "Whenever tapped by a creature, the object emits a recorded message that can be heard up to 10 feet away. You utter the message when you bestow this property on the object, and the recording can be no more than 6 seconds long."
endif
if (iVar = 3) then
sText = " (Sound)"
sString = "The object continuously emits your choice of an odor or a nonverbal sound (wind, waves,chirping, or the like). The chosen phenomenon is perceivable up to 10 feet away."
endif
if (iVar = 4) then
sText = " (Visual Effect)"
sString = "A static visual effect appears on one of the object’s surfaces. This effect can be a picture, up to 25 words of text, lines and shapes, or a mixture of these elements, as you like."
endif
field[pChosen].chosen.field[livename].text = field[pChosen].chosen.field[name].text & sText
field[pChosen].chosen.field[CustDesc].text = sString
field[pChosen].chosen.field[DescAppend].text = field[pDuration].text</eval>
<pickreq thing="cArtificerR"/>
</thing>
<thing id="cAtf5CMagTink" name="Magical Tinkering" description="You learn how to invest a spark of magic into otherwise mundane objects. To use this ability, you must have thieves’ tools or other artisan’s tools in hand. You use an action to touch a Tiny nonmagical object and give it one of these magical properties of your choice:\n\n• The object sheds bright light in a 5-foot radius and dim light for an additional 5 feet.\n• Whenever tapped by a creature, the object plays a recorded message, audible up to 10 feet away. You speak the message when you bestow this property on the object, and the recording cannot be more than 6 seconds long.\n• The object continuously emits your choice of an odor or a nonverbal sound (wind, waves, chirping, or the like). The chosen smell or sound is perceivable up to 10 feet away.\n• A static visual effect appears on one of the object’s surfaces. The effect can be a picture, up to 25 words of text, lines and shapes, or a mixture of these elements, as you choose. The chosen property lasts indefinitely. You can also use an action to touch the object and end this property.\n\nYou can do this to multiple objects, touching one object each time you use the feature, but a single object can bear only one of the properties at a time. The maximum number of objects you can affect with the feature at one time is equal to your Intelligence modifier (minimum of one object). If you try to exceed your maximum, the oldest property immediately ends, and then the new property applies.\n\n{i}{b}Note:{/b} You can add the {u}Magical Tinkering{/u} Adjustment to select an item to add your chosen option to.{/i}" compset="ClSpecial" summary="Imbue a Tiny nonmagical object with simple magic.">
<fieldval field="abDuration" value="Indefinite; see description"/>
<tag group="abAction" tag="LongRest"/>
<tag group="abRange" tag="Touch"/>
<tag group="FeatureTyp" tag="Special"/>
<tag group="ChargeCalc" tag="AttrOnly"/>
<tag group="ChargeAttr" tag="aINT"/>
<tag group="Usage" tag="UsedUp"/>
</thing>
<thing id="cAtf5CToolExp" name="Tool Expertise" description="Starting at 6th level, your proficiency bonus is doubled for any ability check you make that uses your proficiency with a tool." compset="ClSpecial" summary="Double your proficiency bonus for proficient tools.">
<comment>~foreach pick in hero from BaseEquip where “Profienc.Tool”
~ if (eachpick.tagis[ProfTool.?] <= 0) then
~ perform hero.assign[ProfTooDbl.eachpick]
~ endif
~ nexteach</comment>
<tag group="Helper" tag="SpecUp"/>
<eval phase="PostLevel" priority="10000"><![CDATA[ doneif (tagis[Helper.ShowSpec] = 0)
doneif (tagis[Helper.Disable] <> 0)
foreach pick in hero from BaseEquip where "Proficienc.Tool"
if (eachpick.tagis[ProfTool.?] >= 1) then
perform eachpick.pulltags[ProfTooDbl.?]
perform hero.pushtags[ProfTooDbl.?]
endif
nexteach]]>
<before name="Calc skProfBon"/>
</eval>
</thing>
<thing id="cAtf5CAlchemist" name="Alchemist" description="Among Artificers, alchemists are the greatest healers, as well as the ones most adept at wielding dangerous chemicals.\n\n{b}Proficiencies.{/b} You gain proficiency with alchemist’s supplies, assuming you don’t already have it. If you do, you gain proficiency in another artisan's tool of your choice." compset="CustomSpec" uniqueness="unique">
<usesource source="5eRftLWCP"/>
<usesource source="5eTCoE"/>
<tag group="Helper" tag="Primary"/>
<tag group="SpecSource" tag="cHelpAtf"/>
<bootstrap thing="c5CAtf5CAlcSav">
<autotag group="ClSpecWhen" tag="5"/>
</bootstrap>
<bootstrap thing="cAtf5CAlcSpl">
<autotag group="ClSpecWhen" tag="3"/>
</bootstrap>
<bootstrap thing="c5CAtfCheMst">
<autotag group="ClSpecWhen" tag="15"/>
</bootstrap>
<bootstrap thing="c5CAtfExpElx">
<autotag group="ClSpecWhen" tag="3"/>
</bootstrap>
<bootstrap thing="gSupAlchem">
<autotag group="Hide" tag="Tool"/>
</bootstrap>
<bootstrap thing="c5CAtfRstRea">
<autotag group="ClSpecWhen" tag="9"/>
</bootstrap>
<eval phase="PostLevel" priority="2400"><![CDATA[ doneif (tagis[Helper.Disable] <> 0)
if (hero.tagcount[ProfTool.gSupAlchem] = 0) then
perform hero.childfound[gSupAlchem].assign[Proficienc.Tool]
perform hero.childfound[gSupAlchem].assign[Helper.TrainTool]
perform hero.assign[ProfTool.gSupAlchem]
elseif (hero.tagcount[ProfTool.gSupAlchem] <> 0) then
hero.childfound[cHelpAtf].field[cToolMax].value += 1
endif]]></eval>
</thing>
<thing id="cAtf5CArtillerist" name="Artillerist" description="An Artillerist specializes in using magic to throw energy, projectiles, and explosions across the field of battle.\n\n{b}Proficiencies.{/b} You gain proficiency with woodcarver’s tools, assuming you don’t already have it. If you do, you gain proficiency in another artisan's tool of your choice." compset="CustomSpec" uniqueness="unique">
<usesource source="5eRftLWCP"/>
<usesource source="5eTCoE"/>
<tag group="Helper" tag="Primary"/>
<tag group="SpecSource" tag="cHelpAtf"/>
<bootstrap thing="c5CAtfEldCan">
<autotag group="ClSpecWhen" tag="3"/>
</bootstrap>
<bootstrap thing="cAtf5CForPos">
<autotag group="ClSpecWhen" tag="15"/>
</bootstrap>
<bootstrap thing="c5CAtfArcFir">
<autotag group="ClSpecWhen" tag="5"/>
</bootstrap>
<bootstrap thing="c5CAtfExpCan">
<autotag group="ClSpecWhen" tag="9"/>
</bootstrap>
<bootstrap thing="gTooCarver">
<autotag group="Hide" tag="Tool"/>
</bootstrap>
<bootstrap thing="cAtf5CArtSpl">
<autotag group="ClSpecWhen" tag="3"/>
</bootstrap>
<eval phase="PreLevel" priority="2400"><![CDATA[
doneif (tagis[Helper.Disable] <> 0)
if (hero.tagcount[ProfTool.gTooCarver] = 0) then
perform hero.childfound[gTooCarver].assign[Proficienc.Tool]
perform hero.childfound[gTooCarver].assign[Helper.TrainTool]
perform hero.assign[ProfTool.gTooCarver]
elseif (hero.tagcount[ProfTool.gTooCarver] <> 0) then
hero.childfound[cHelpAtf].field[cToolMax].value += 1
endif]]></eval>
</thing>
<thing id="cAtf5CSSItem" name="Spell-Storing Item" description="Whenever you complete a long rest, you can touch a simple or martial weapon or an item that you are able to use as a spellcasting focus. You store a spell in it, choosing one 1st- or 2nd-level spell from the artificer spell list with a casting time of 1 action. You don’t need to have the spell prepared to choose it. With the object in hand, a creature can use an action to produce the spell’s effect from it, using your spellcasting ability modifier.\n\nThe spell stays in the object until it has been used a number of times equal to twice your Intelligence modifier (minimum of twice) or until you use this feature again." compset="ClSpecial" summary="Store a 1st or 2nd level spell inside an item for multiple uses.">
<fieldval field="actName" value="Active?"/>
<tag group="ChooseSrc1" tag="Thing"/>
<tag group="Usage" tag="UsedUp"/>
<tag group="User" tag="Tracker"/>
<tag group="ChooseSrc2" tag="Hero"/>
<tag group="ChargeCalc" tag="AttrOnly"/>
<tag group="Helper" tag="ActivMenu"/>
<tag group="ChargeAttr" tag="aINT"/>
<tag group="User" tag="Activation"/>
<eval phase="Render" priority="9999999" index="2"><![CDATA[
doneif (tagis[Helper.ShowSpec] = 0)
doneif (tagis[Helper.Disable] <> 0)
field[usrChosen2].chosen.field[livename].text &= " (" & field[usrChosen1].chosen.field[shortname].text & " stored)"
field[usrChosen2].chosen.field[sbName].text &= " (" & field[usrChosen1].chosen.field[shortname].text & " stored)"]]></eval>
<eval phase="Final" priority="30000"><![CDATA[
doneif (tagis[Helper.ShowSpec] = 0)
doneif (tagis[Helper.Disable] <> 0)
field[trkMax].value *= 2]]></eval>
<eval phase="Final" index="3"><![CDATA[
doneif (tagis[Helper.ShowSpec] = 0)
doneif (tagis[Helper.Disable] <> 0)
doneif (field[abilActive].value = 0)
field[usrCandid1].text = "component.BaseSpell & sClass.cHelpAtf & (sLevel.1 | sLevel.2) & sCastTime.Action1"
field[usrCandid2].text = "(wProfReq.Martial|wProfReq.Simple) | (ToolCat.Artisan & GearType.gtTools & !Hide.Tool) | (thingid.gTooThieve & !Hide.Tool) | (!component.BaseCustSp & Custom.Infus) | (component.BaseArmor & Custom.ArcArm) | Custom.5CEbArcFoc"]]></eval>
</thing>
<thing id="cAtf5CMagIAd" name="Magic Item Adept" description="You are able to attune to up to four magic items at once.\n\nIf you craft a common or uncommon magic item, it only takes you one quarter of the usual time, and costs you only half the normal amount of gold." compset="ClSpecial" summary="Attune to up to four magic items, and your crafting time is reduced.">
<eval phase="PostLevel" priority="10000"><![CDATA[
doneif (tagis[Helper.ShowSpec] = 0)
doneif (tagis[Helper.Disable] <> 0)
herofield[tAttunMax].value += 1]]></eval>
</thing>
<thing id="cAtf5CMagISa" name="Magic Item Savant" description="You are able to attune to up to five magic items at once.\n\nYou can ignore class, racial, spell, and level requirements to attune to or use a magic item." compset="ClSpecial" summary="Attune to up to five magic items, and ignore class, spell, or racial requirements.">
<eval phase="PostLevel" priority="10000"><![CDATA[
doneif (tagis[Helper.ShowSpec] = 0)
doneif (tagis[Helper.Disable] <> 0)
herofield[tAttunMax].value += 1]]></eval>
<eval phase="Final" index="2"><![CDATA[
doneif (tagis[Helper.ShowSpec] = 0)
doneif (tagis[Helper.Disable] <> 0)
foreach pick in hero from BaseEquip where "Helper.NeedAttune"
perform eachpick.assign[thing.skipprereq]
nexteach]]></eval>
</thing>
<thing id="cAtf5CMagIMa" name="Magic Item Master" description="You are able to attune to up to six magic items at once." compset="ClSpecial" summary="Attune to up to six magic items.">
<eval phase="PostLevel" priority="10000"><![CDATA[
doneif (tagis[Helper.ShowSpec] = 0)
doneif (tagis[Helper.Disable] <> 0)
herofield[tAttunMax].value += 1]]></eval>
</thing>
<thing id="cAtf5CSoA" name="Soul of Artifice" description="You gain a +1 bonus to all saving throws for every magic item you are currently attuned to. Additionally, when you are reduced to 0 hit points but not killed outright, you can take a reaction to end one of your infusions. This causes you to drop to 1 hit point instead of 0." compset="ClSpecial" summary="Gain a bonus to saving throws for every attuned magic item. End an infusion to prevent death.">
<tag group="abAction" tag="Reaction"/>
<eval phase="PostLevel" priority="10000"><![CDATA[
doneif (tagis[Helper.ShowSpec] = 0)
doneif (tagis[Helper.Disable] <> 0)
var iCount as number
iCount = 0
foreach pick in hero from BaseEquip
if (eachpick.field[gIsAttuned].value = 1) then
iCount += 1
endif
nexteach
hero.child[svAll].field[Bonus].value += iCount]]></eval>
</thing>
<thing id="c5CAtf5CAlcSav" name="Alchemical Savant" description="The healing and damage you create through magical chemicals is enhanced. When you cast a spell using your alchemist’s supplies as the spellcasting focus, you gain a bonus to one roll of the spell. That roll must restore hit points or be a acid or poison damage-dealing roll. The bonus equals your Intelligence modifier (minimum of +1)." compset="ClSpecial" summary="Gain +INT to healing, acid damage, or poison damage rolls."></thing>
<thing id="cAtf5CAlcSpl" name="Alchemist Spells" description="Starting at 3rd level, you always have certain spells prepared after you reach particular levels in this class, as shown in the Alchemist Spells table. These spells count as artificer spells for you, but they don’t count against the number of artificer spells you prepare.\n\n{b}Alchemist Spells{/b}\n{b}Artificer Level Spell{/b}\n3rd {i}healing word, ray of sickness{/i}\n5th {i}acid arrow, flaming sphere{/i}\n9th {i}gaseous form, mass healing word{/i}\n13th {i}blight, death ward{/i}\n17th {i}cloudkill, raise dead{/i}" compset="ClSpecial" summary="Gain new spells as an Alchemist.">
<tag group="Helper" tag="SpecUp"/>
<bootstrap thing="sp5CRaySi">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="3"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spAcidArro">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="5"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spBlight">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="13"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spCloudkil">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="17"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spMsHealWd">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="9"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spDeatWard">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="13"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spRaisDead">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="17"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spGaseForm">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="9"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spFlamSphe">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="5"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spHealWord">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="3"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
</thing>
<thing id="c5CAtfCheMst" name="Chemical Mastery" description="You gain resistance to acid damage and poison damage, and you are now immune to the poisoned condition.\n\nIn addition, you can cast {i}greater restoration{/i} and {i}heal{/i} once each without expending a spell slot and without providing the material component, provided you use alchemist’s supplies as the spellcasting focus. You regain the ability to cast each spell at the end of your next long rest." compset="ClSpecial" summary="Resist acid and poison, immune to poison, cast greater restoration and heal 1/long rest.">
<bootstrap thing="spGreaRest">
<containerreq phase="First" priority="500"><![CDATA[count:Classes.ArtificerR >=15]]></containerreq>
<autotag group="Helper" tag="SpellLike"/>
<autotag group="Usage" tag="LongRest"/>
<assignval field="trkMax" value="1"/>
</bootstrap>
<bootstrap thing="spHeal">
<containerreq phase="First" priority="500"><![CDATA[count:Classes.ArtificerR >=15]]></containerreq>
<autotag group="Usage" tag="LongRest"/>
<autotag group="Helper" tag="SpellLike"/>
<assignval field="trkMax" value="1"/>
</bootstrap>
<eval phase="PostAttr"><![CDATA[ doneif (tagis[Helper.ShowSpec] = 0)
doneif (tagis[Helper.Disable] <> 0)
perform hero.assign[CondImm.pcnPoison]
perform hero.assign[DamageRes.dtAcid]
perform hero.assign[DamageRes.dtPoison]]]></eval>
</thing>
<thing id="cAtf5CArtSpl" name="Artillerist Spells" description="Starting at 3rd level, you always have certain spells prepared after you reach particular levels in this class, as shown in the Artillerist Spells table. These spells count as artificer spells for you, but they don’t count against the number of artificer spells you prepare.\n\n{b}Artillerist Spells{/b}\n{b}Artificer Level Spell{/b}\n3rd {i}shield, thunderwave{/i}\n5th {i}scorching ray, shatter{/i}\n9th {i}fireball, wind wall{/i}\n13th {i}ice storm, wall of fire{/i}\n17th {i}cone of cold, wall of force{/i}" compset="ClSpecial" summary="Gain new spells as an Artillerist.">
<tag group="Helper" tag="SpecUp"/>
<bootstrap thing="spShield">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="3"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spScorRay">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="5"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spWallFire">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="13"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spConeCold">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="17"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spFireball">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="9"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spIceStor">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="13"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spWallForc">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="17"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spWindWall">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="9"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spShatter">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="5"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spThunderw">
<autotag group="Helper" tag="Free"/>
<autotag group="BonusSplAt" tag="3"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
</thing>
<thing id="c5CAtfEldCan" name="Eldritch Cannon" description="Using woodcarver's tools or smith's tools, you can use an action to magically create a Small or Tiny eldritch cannon in an open space on a horizontal surface within 5 feet of you. A Small eldritch cannon occupies its space, and a Tiny one can be held in one hand.\n\nOnce you've created a cannon, you cannot make another one until you complete a long rest or until you spend a spell slot of 1st level or higher. You can have only one cannon at a time, and you can't create one while your cannon is present.\n\nThe cannon is a magical object with AC of 18 and hit points equaling five times your artificer level. It is immune to poison damage and psychic damage, and all conditions. If it is forced to make an ability check or a saving throw, treat all its ability scores as 10 (+0). If the {i}mending{/i} spell is cast on it, it regains 2d6 hit points. It disappears if it is reduced to 0 hit points or after 1 hour has passed. You can also dismiss it early as an action.\n\nWhen you create the cannon, you determine its appearance and whether it has legs. You also decide which type of cannon it is, choosing from the options below. On each of your turns, if you are within 60 feet of it, you can use a bonus action to cause the cannon to activate. As part of the same bonus action, you can direct the cannon to walk or climb up to 15 feet to an unoccupied space, provided it has legs.\n\n{b}Flamethrower.{/b} The turret blasts fire in an adjacent 15-foot cone that you choose. Each creature in that area must make a Dexterity save verus your spell save DC, suffering 2d8 fire damage on a failure or half that on a success. The fire ignites any flammable objects in the area that aren’t being worn or carried.\n\n{b}Force Ballista.{/b} Make a ranged spell attack from the turret's space, targeting one creature or object within 120 feet of it. On a hit, the target takes 2d8 force damage. If the target is a creature, it's pushed up to 5 feet away from the cannon.\n\n{b}Protector.{/b} The turret emits a field of positive energy that grants itself and each creature of your choice within 10 feet of it a temporary hit points equaling 1d8 + your Intelligence modifier (a minimum of 1 temporary hit point).\n\n{i}Note: The turret will appear as a companion creature on you hero, but is an object. Choose its size and type from that companion. If you choose Tiny, the turret will also appear as a weapon in your weapons tab, so that you can hold it.{/i}" compset="ClSpecial" summary="Create a turret that can damage or heal.">
<tag group="Custom" tag="Cannon1"/>
<tag group="Custom" tag="Cannon2"/>
<bootstrap thing="thp5CAtfDfTr">
<containerreq phase="First" priority="100">fieldval:abValue4 = 1</containerreq>
</bootstrap>
<bootstrap thing="i5CEldCan">
<containerreq phase="First" priority="100"><![CDATA[fieldval:abValue5 > 1]]></containerreq>
<autotag group="Custom" tag="Cannon2"/>
</bootstrap>
<bootstrap thing="i5CEldCan">
<containerreq phase="First" priority="100"><![CDATA[fieldval:abValue5 > 0]]></containerreq>
<autotag group="Custom" tag="Cannon1"/>
</bootstrap>
<bootstrap thing="c5CEldCan">
<autotag group="Custom" tag="Cannon1"/>
</bootstrap>
</thing>
<thing id="cAtf5CForPos" name="Fortified Position" description="Your eldritch cannon produces a shimmering field of magical protection, providing half cover to you and your allies while you are within 10 feet of it.\n\nAlso, you can now have two cannons at the same time. You can create two with the same action (but not with the same spell slot). You can activate both of them with the same bonus action. They can be identical to each other or different, your choice. You cannot create a third cannon while you already have two." compset="ClSpecial" summary="You can create two cannons, and they provide half cover.">
<tag group="Custom" tag="Cannon2"/>
<bootstrap thing="c5CEldCan">
<containerreq phase="First" priority="450"><![CDATA[count:Classes.ArtificerR >=15]]></containerreq>
<autotag group="Custom" tag="Cannon2"/>
</bootstrap>
</thing>
<thing id="r5CAtfEldCan" name="Eldritch Cannon" description="The eldritch cannon is an object, not a creature. Any features or attacks that target only creatures do not affect the cannon.\n\nUse the Size and Type fields in the In-Play tab to select what size and type of eldritch cannon this is." compset="Race">
<fieldval field="rAC" value="8"/>
<fieldval field="rSpeed" value="0"/>
<fieldval field="rHPStart" value="1"/>
<usesource source="5eTCoE"/>
<usesource source="5eRftLWCP"/>
<tag group="DamageImm" tag="dtPsychic"/>
<tag group="CondImm" tag="pcnBlind"/>
<tag group="CondImm" tag="pcnCharmed"/>
<tag group="CondImm" tag="pcnDeaf"/>
<tag group="CondImm" tag="pcnExhaust"/>
<tag group="CondImm" tag="pcnFright"/>
<tag group="CondImm" tag="pcnGrapple"/>
<tag group="CondImm" tag="pcnIncapa"/>
<tag group="CondImm" tag="pcnParaly"/>
<tag group="CondImm" tag="pcnPetri"/>
<tag group="CondImm" tag="pcnPoison"/>
<tag group="CondImm" tag="pcnProne"/>
<tag group="CondImm" tag="pcnRestr"/>
<tag group="CondImm" tag="pcnStunned"/>
<tag group="CondImm" tag="pcnUnconc"/>
<tag group="RaceType" tag="NPC"/>
<tag group="RaceSize" tag="Small11"/>
<tag group="Alignment" tag="Unaligned"/>
<tag group="DamageImm" tag="dtPoison"/>
<bootstrap thing="ra5CEldCanSz"></bootstrap>
<bootstrap thing="tp5CObject"></bootstrap>
<bootstrap thing="xClimb">
<containerreq phase="First" priority="500"><![CDATA[fieldval:rSpeed <> 0]]></containerreq>
<autotag group="Value" tag="15"/>
</bootstrap>
<eval phase="PostAttr" priority="11000">~Add back in the original 5 per the stat block, then remove it all
~Add that entire thing to our total Bonus HP
~We remove it from the total instead of just removing the total in case
~something else is adding to that as well.
var HPAdj as number
HPAdj = hero.childfound[ra5cEldCanTyp].field[abValue5].value * 5 - 1
herofield[tBonusHP].value = HPAdj</eval>
</thing>
<thing id="ra5CArtFlmThr" name="Flamethrower" description="When you use your bonus action to command it to, the turret blasts fire in an adjacent 15-foot cone that you choose. Each creature in that area must make a Dexterity save verus your spell save DC, suffering 1d8 fire damage on a failure or half that on a success. The fire ignites any flammable objects in the area that aren’t being worn or carried." compset="RaceSpec">
<fieldval field="wDieCount" value="2"/>
<fieldval field="wDieSize" value="8"/>
<fieldval field="abRange" value="15-foot cone"/>
<tag group="Helper" tag="NoAttrDam"/>
<tag group="DamageType" tag="dtFire"/>
<tag group="abAction" tag="Bonus"/>
<tag group="Helper" tag="WeaponSpec"/>
<tag group="abSave" tag="aDEX"/>
<tag group="Helper" tag="SingleAtt"/>
<tag group="Helper" tag="ShowSpec"/>
<tag group="FeatureTyp" tag="Special"/>
<tag group="LvNamePar" tag="AppText"/>
<eval phase="Final" priority="50000">~ If we're disabled, do nothing &
doneif (tagis[Helper.Disable] = 1)
field[abDC].value = hero.childfound[ra5cEldCanTyp].field[abValue3].value
var Dice as number
Dice = 2
if (hero.childfound[ra5cEldCanTyp].field[abValue5].value >= 9) then
Dice = 3
endif
field[CustDesc].text = "The turret blasts fire in an adjacent 15-foot cone that you choose. Each creature in that area must make a DC " & field[abDC].value & " Dexterity save, suffering " & Dice & "d8 fire damage on a failure or half that on a success. The fire ignites any flammable objects in the area that aren’t being worn or carried."
field[wDieCount].value = Dice
field[abText].text = Dice & "d8 fire"</eval>
</thing>
<thing id="ra5CArtFrcBl" name="Force Ballista" description="When you use your bonus action to command the turret, you make a ranged spell attack from the turret's space, targeting one creature or object within 120 feet of it. On a hit, the target takes 2d8 force damage. If the target is a creature, it's pushed up to 5 feet away from the cannon." compset="RaceSpec">
<fieldval field="abRange" value="120"/>
<fieldval field="wDieCount" value="2"/>
<fieldval field="wDieSize" value="8"/>
<tag group="Helper" tag="NoAttrDam" name="NoAttrDam" abbrev="NoAttrDam"/>
<tag group="Helper" tag="ShowSpec" name="Show Spec" abbrev="Show Spec"/>
<tag group="DamageType" tag="dtForce"/>
<tag group="Helper" tag="SingleAtt" name="SingleAtt" abbrev="SingleAtt"/>
<tag group="Helper" tag="WeaponSpec" name="WeaponSpec" abbrev="WeaponSpec"/>
<tag group="abRange" tag="Feet"/>
<tag group="abAction" tag="Bonus" name="Bonus" abbrev="Bon"/>
<tag group="wCategory" tag="RangeProj"/>
<tag group="wProperty" tag="SpellB"/>
<tag group="FeatureTyp" tag="Special"/>
<eval phase="Final" priority="99999"><![CDATA[
~ If we're disabled, do nothing &
doneif (tagis[Helper.Disable] = 1)
field[wRanAtk].value = hero.childfound[ra5cEldCanTyp].field[abValue4].value]]></eval>
</thing>
<thing id="ra5CArtDef" name="Protector" description="When you use your bonus action to command it to, the turret emits a field of positive energy that grants itself and each creature of your choice within 10 feet of it a temporary hit points equaling 1d8 + your Intelligence modifier (a minimum of 1 temporary hit point)." compset="RaceSpec">
<fieldval field="abRange" value="10-foot radius"/>
<tag group="abAction" tag="Bonus" name="Bonus" abbrev="Bon"/>
<tag group="Helper" tag="ShowSpec"/>
<tag group="FeatureTyp" tag="Special"/>
<tag group="LvNamePar" tag="AppText"/>
<bootstrap thing="thp5CAtfDfTr"></bootstrap>
<eval phase="PostAttr" priority="10000"><![CDATA[
doneif (tagis[Helper.Disable] <> 0)
var iMod as number
iMod = maximum(1,master.child[aINT].field[aModBonus].value)
field[abText].text = "1d8+" & iMod & " temp HP"]]></eval>
</thing>
<thing id="cAtf5CBatSmi" name="Battle Smith" description="Battle Smiths are experts at repairing both materiel and people. They are often accompanied by a protective companion, a steel defender.\n\n{b}Tool Proficiency.{/b} You gain proficiency with smith’s tools, assuming you don’t already it. If you do, you gain proficiency in another artisan's tool of your choice." compset="CustomSpec" uniqueness="unique">
<usesource source="5eRftLWCP"/>
<usesource source="5eTCoE"/>
<tag group="Helper" tag="Primary" name="Primary" abbrev="Primary"/>
<tag group="SpecSource" tag="cHelpAtf" name="Artificer (2019)" abbrev="Artificer (2019)"/>
<bootstrap thing="cAtf5CArcJolt">
<autotag group="ClSpecWhen" tag="9"/>
</bootstrap>
<bootstrap thing="cAtf5CBatSpl">
<autotag group="ClSpecWhen" tag="3"/>
</bootstrap>
<bootstrap thing="cAtf5CImpDef">
<autotag group="ClSpecWhen" tag="15"/>
</bootstrap>
<bootstrap thing="cAtf5CBatRdy">
<autotag group="ClSpecWhen" tag="3"/>
</bootstrap>
<bootstrap thing="cExtraAtt">
<autotag group="ClSpecWhen" tag="5"/>
</bootstrap>
<bootstrap thing="cAtf5CSteDef">
<autotag group="ClSpecWhen" tag="3"/>
</bootstrap>
<bootstrap thing="gTooSmith">
<containerreq phase="First" priority="495">hero#ProfTool.gTooSmith = 0</containerreq>
<autotag group="Hide" tag="Tool"/>
</bootstrap>
<eval phase="PostLevel" priority="2400"><![CDATA[
doneif (tagis[Helper.Disable] <> 0)
if (hero.tagcount[ProfTool.gTooSmith] = 0) then
perform hero.childfound[gTooSmith].assign[Proficienc.Tool]
perform hero.childfound[gTooSmith].assign[Helper.TrainTool]
perform hero.assign[ProfTool.gTooSmith]
elseif (hero.tagcount[ProfTool.gTooSmith] <> 0) then
hero.childfound[cHelpAtf].field[cToolMax].value += 1
endif]]></eval>
</thing>
<thing id="cAtf5CBatSpl" name="Battle Smith Spells" description="Starting at 3rd level, you always have certain spells prepared after you reach particular levels in this class, as shown in the Battle Smith Spells table. These spells count as artificer spells for you, but they don’t count against the number of artificer spells you prepare.\n\n{b}Battle Smith Spells{/b}\n{b}Artificer Level Spell{/b}\n3rd {i}heroism, shield{/i}\n5th {i}branding smite, warding bond{/i}\n9th {i}aura of vitality, conjure barrage{/i}\n13th {i}aura of purity, fire shield{/i}\n17th {i}banishing smite, mass cure wounds{/i}" compset="ClSpecial" summary="Gain new spells as a Battle Smith.">
<tag group="Helper" tag="SpecUp" name="SpecUp" abbrev="SpecUp"/>
<bootstrap thing="spHeroism">
<autotag group="BonusSplAt" tag="3"/>
<autotag group="Helper" tag="Free"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spBranSmit">
<autotag group="BonusSplAt" tag="5"/>
<autotag group="Helper" tag="Free"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spFireShie">
<autotag group="BonusSplAt" tag="13"/>
<autotag group="Helper" tag="Free"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spMassCure">
<autotag group="BonusSplAt" tag="17"/>
<autotag group="Helper" tag="Free"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="sp5CAurVit">
<autotag group="BonusSplAt" tag="9"/>
<autotag group="Helper" tag="Free"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="sp5CBanSmi">
<autotag group="BonusSplAt" tag="17"/>
<autotag group="Helper" tag="Free"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="sp5CAurPur">
<autotag group="BonusSplAt" tag="13"/>
<autotag group="Helper" tag="Free"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="sp5CConjBa">
<autotag group="BonusSplAt" tag="9"/>
<autotag group="Helper" tag="Free"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spWardBond">
<autotag group="BonusSplAt" tag="5"/>
<autotag group="Helper" tag="Free"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
<bootstrap thing="spShield">
<autotag group="BonusSplAt" tag="3"/>
<autotag group="Helper" tag="Free"/>
<autotag group="Helper" tag="Memorized"/>
<autotag group="SpellType" tag="cHelpAtf"/>
</bootstrap>
</thing>
<thing id="cAtf5CBatRdy" name="Battle Ready" description="When you reach 3rd level, your combat training and your experiments with magic and have paid off in two ways:\n\n• You gain proficiency with martial weapons.\n• When you attack with a magic weapon, you can use your Intelligence modifier, instead of Strength or Dexterity, for the attack and damage rolls." compset="ClSpecial" summary="Martial weapon proficiency and use Intelligence for attacks.">
<tag group="ArmProfGrp" tag="WepMartial" name="Martial Weapons" abbrev="Martial Weapons"/>
<eval phase="PostAttr"><![CDATA[ doneif (tagis[Helper.ShowSpec] = 0)
doneif (tagis[Helper.Disable] <> 0)
foreach pick in hero where "component.BaseWep"
if (eachpick.tagcount[Helper.EquipMag] = 1) then
~ Change melee combat from strength to Intelligence
perform eachpick.assign[MelAttOpt.aINT]
perform eachpick.assign[RanAttOpt.aINT]
perform eachpick.assign[DamageOpt.aINT]
endif
nexteach]]></eval>
<eval phase="PostLevel" priority="10000" index="2"><![CDATA[ doneif (tagis[Helper.ShowSpec] = 0)
doneif (tagis[Helper.Disable] <> 0)
perform hero.assign[ArmProfGrp.WepMartial]]]></eval>
</thing>
<thing id="ra5CAtfBSVig" name="Vigilant" description="The defender cannot be surprised." compset="RaceSpec">
<tag group="Helper" tag="ShowSpec"/>
<tag group="FeatureTyp" tag="Special"/>
<tag group="abAction" tag="None"/>
</thing>
<thing id="ra5CAtfRepair" name="Repair" description="The steel defender restores 2d8 + it's proficiency bonus hit points to itself or to a construct or object within 5 feet of it." compset="RaceSpec">
<fieldval field="trkMax" value="3"/>
<fieldval field="abRange" value="Self or 5-feet"/>
<tag group="Helper" tag="ShowSpec"/>
<tag group="Usage" tag="Day"/>
<tag group="User" tag="Tracker"/>
<tag group="abDuration" tag="Instant"/>
<tag group="abAction" tag="abArRBnsAct" name="Action (Requires Your Bonus Action)" abbrev="Action"/>
<tag group="LvNamePar" tag="AppText"/>
<tag group="FeatureTyp" tag="Action"/>
<eval phase="Final"><![CDATA[ ~ If we're disabled, do nothing &
doneif (tagis[Helper.Disable] = 1)
field[abText].text = "2d8+" & hero.childfound[ra5CSteDeBnd].field[abValue2].value & " HP"
field[CustDesc].text = "The steel defender restores 2d8+" & hero.childfound[ra5CSteDeBnd].field[abValue2].value & " hit points to itself or to a construct or object within 5 feet of it."]]></eval>
</thing>
<thing id="cAtf5CSteDef" name="Steel Defender" description="By 3rd level, the tinkering in your free time has borne you a steel defender. It is friendly to you and your companions, and it obeys your commands. You determine its appearance, including number of legs, which has no effect on its stats.\n\nThe steel defender shares your initiative, but takes its turn right after yours. It moves and uses its reaction without needing to be commanded. You can use a bonus action to command it to take an action, which can be from its stat block or any other action it is capable of doing. If you issue no such command, it takes the Dodge action. When you're incapacitated, it can use any of those actions, not just Dodge.\n\nIf the mending spell is cast on it, it regains 2d6 hit points. If it has died within the last hour, you can use your smith’s tools as an action to revive it, so long as you are within 5 feet of it and you spend a 1st level or greater spell slot. The steel defender returns to life after 1 minute with all its hit points restored.\n\nWhen you finish a long rest, you can make a steel iron defender if you have your smith’s tools with you. Any existing steel defender of yours immediately perishes." compset="ClSpecial" summary="Create a steel defender, a companion creature that acts with you.">
<bootstrap thing="c5CSteelDef"></bootstrap>
</thing>
<thing id="cAtf5CArcJolt" name="Arcane Jolt" description="At 9th level, you learn new ways to channel arcane energy. Whenever your steel defender hits a target, or you hit one with a magical weapon attack, you can channel magical energy through the attack to cause one of these effects:\n\n• The target takes an additional 2d6 force damage.\n• Pick a creature or object you can see within 30 feet of the target. The chosen recipient is healed 2d6 hit points.\n\nYou can channel this magical energy a number of times equal to your Intelligence modifier (minimum of once), but you can only do it once per turn. You regain all spent uses of this feature when you complete a long rest." compset="ClSpecial" summary="Do 2d6 damage or healing when you or your defender hits with an attack.">
<tag group="User" tag="Tracker"/>
<tag group="ChargeCalc" tag="AttrOnly"/>
<tag group="Usage" tag="LongRest"/>
<tag group="ChargeCalc" tag="FinalMin1"/>
<tag group="ChargeAttr" tag="aINT"/>
<tag group="LvNamePar" tag="AppText"/>
<eval phase="Final"><![CDATA[
if (hero.child[cHelpAtf].field[cTotalLev].value >= 15) then
field[abText].text = "4d6 force or HP"
else
field[abText].text = "2d6 force or HP"
endif]]></eval>
</thing>
<thing id="cAtf5CImpDef" name="Improved Defender" description="At 15th level, your Arcane Jolt and steel defender become more powerful:\n\n• The extra damage and the healing of your Arcane Jolt both increase to 4d6.\n• Your steel defender's AC increases by 2.\n• Whenever your steel defender uses Deflect Attack, the attacker suffers force damage equal to 1d4 + your Intelligence modifier." compset="ClSpecial" summary="Arcane Jolt now is 4d6, and your Steel Defender improves."></thing>
<thing id="cAtf5CFlaGen" name="Flash of Genius" description="When you or another creature visible to and within 30 feet of you makes an ability check or a saving throw, you can use a reaction to add your Intelligence modifier to the roll.\n\nYou can do this a number of times equal to your Intelligence modifier (minimum of one use) and gain all spent uses of it back at the end of your next long rest." compset="ClSpecial" summary="Reaction to add your INT mod to a check or save.">
<fieldval field="abRange" value="30"/>
<tag group="ChargeCalc" tag="AttrOnly"/>
<tag group="ChargeCalc" tag="FinalMin1"/>
<tag group="ChargeAttr" tag="aINT"/>
<tag group="Usage" tag="LongRest"/>
<tag group="User" tag="Tracker"/>
<tag group="abRange" tag="Feet"/>
<tag group="abAction" tag="Reaction"/>
</thing>
<thing id="cAtf5CRghToo" name="The Right Tool for the Job" description="Using your tinker's tools, you can magically create one set of artisan's tools in an open spot within 5 feet of you. This requires 1 hour of uninterrupted work, which can occur during a short or long rest. Though magically produced, the tools are not magical, and they vanish when you use this feature again." compset="ClSpecial" summary="Create a temporary set of artisan's tools."></thing>
<thing id="cAtf5CCntrps" name="Cantrips" description="When you gain a level in the Artificer class, you can replace one of your known artificer cantrips with another cantrip from the artificer spell list." compset="ClSpecial" summary="Replace a cantrip when you gain a level."></thing>
<thing id="c5CSteelDef" name="Steel Defender" compset="Companion" stacking="never" uniqueness="unique">
<fieldval field="CompType" value="Steel Defender"/>
<eval phase="First" priority="455" index="4"><![CDATA[~ Well, there's no way (afaik) to count the class levels from the hero
~ at the minion, so we need to do it somewhere in the hero context and
~ send the info to be used at the minion.
~
~ In this case, since all animal companions will receive the
~ companion bond racial ability to add their extra skills, we'll
~ use it to bootstrap the extra HD as well. The tag expression used
~ in the condition for the bootstrap will test the value of the
~ abValue5 field, which we set here.
~ This must be done at the First stage, since the bootstraps happen
~ there. Or so I'm told by the error messages.
var level as number
level = hero.tagcount[Classes.ArtificerR]
minion.childfound[ra5CSteDeBnd].field[abValue5].value = level]]></eval>
<minion id="Familiar" isinherit="no">
<tag group="AllowRCust" tag="Familiar" name="Familiar" abbrev="Familiar"/>
<tag group="CompIs" tag="Familiar" name="Familiar" abbrev="Familiar"/>
<tag group="Hero" tag="NoAdvance" name="NoAdvance" abbrev="NoAdvance"/>
<tag group="Hero" tag="NoFamLvReq" name="No familiar Level requirements" abbrev="No familiar Level requirements"/>
<tag group="HideTab" tag="background" name="background" abbrev="background"/>
<tag group="Hero" tag="FixedRace"/>
<bootstrap thing="ra5CSteDeBnd"></bootstrap>
<bootstrap thing="r5CSteelDef"></bootstrap>
</minion>
</thing>
<thing id="r5CSteelDef" name="Steel Defender" compset="Race">
<fieldval field="rHitDice" value="1"/>
<fieldval field="rHDSides" value="8"/>
<fieldval field="rSpeed" value="40"/>
<fieldval field="rSTR" value="4"/>
<fieldval field="rDEX" value="2"/>
<fieldval field="rCON" value="4"/>
<fieldval field="rINT" value="-6"/>
<fieldval field="rCHA" value="-4"/>
<fieldval field="rAC" value="4"/>
<tag group="ProfSave" tag="svDEX" name="Dexterity" abbrev="Dexterity"/>
<tag group="ProfSkill" tag="skAthletic" name="Athletics" abbrev="Athletics"/>
<tag group="ProfSkill" tag="skPercep" name="Perception" abbrev="Perception"/>
<tag group="RaceSize" tag="Medium0" name="Medium" abbrev="Medium"/>
<tag group="RaceType" tag="NPC" name="NPC Race" abbrev="NPC Race"/>
<tag group="Alignment" tag="Unaligned" name="Unaligned" abbrev="UN"/>
<tag group="ProfDouble" tag="skPercep"/>
<tag group="ProfSave" tag="svCON" name="Constitution" abbrev="Constitution"/>
<tag group="DamageImm" tag="dtPoison"/>
<tag group="CondImm" tag="pcnCharmed"/>
<tag group="CondImm" tag="pcnExhaust"/>
<tag group="CondImm" tag="pcnPoison"/>
<bootstrap thing="tpConst"></bootstrap>
<bootstrap thing="wOtherMel">
<autotag group="AttackTarg" tag="1Target"/>
<autotag group="DamTypeOvr" tag="dtForce"/>
<assignval field="livename" value="Force-Empowered Rend"/>
<assignval field="sbName" value="Force-Empowered Rend"/>
<assignval field="wDieCount" value="1"/>
<assignval field="wDieSize" value="8"/>
<assignval field="wDamBonus" value="-2"/>
</bootstrap>
<bootstrap thing="lOther">
<assignval field="lCustName" value="Understands your languages"/>
<assignval field="sbName" value="Understands your languages"/>
</bootstrap>
<bootstrap thing="raDarkVis">
<autotag group="Value" tag="60"/>
</bootstrap>
<bootstrap thing="ra5CAtfRepair"></bootstrap>
<bootstrap thing="ra5CAtfBSVig"></bootstrap>
<bootstrap thing="ra5CStlDefAtk"></bootstrap>
<eval phase="PostAttr" priority="11000">~Subtract out the CON bonus HP by finding the base bonus * # Hit Dice
~Add back in the original 5 per the stat block, then remove it all
~Add that entire thing to our total Bonus HP
~We remove it from the total instead of just removing the total in case
~something else is adding to that as well.
var HPAdj as number
HPAdj -= hero.childfound[aCON].field[aModBonus].value
HPAdj *= (field[rHitDice].value)
HPAdj += 2
HPAdj += master.childfound[aINT].field[aModBonus].value
herofield[tBonusHP].value += HPAdj</eval>
<eval phase="Final" priority="50000" index="2"><![CDATA[
~ pull our STR and prof to determine what our attack bonus currently is
var CrAt as number
CrAt = (hero.childfound[aSTR].field[aModBonus].value + hero.childfound[ProfBonus].field[tProfBonus].value)
~ add our spell attack (abValue4 of Steel Defender Bond) and subtract
~ the current to attack bonus from any natural attacks. This way any
~ other additions to the bonus can still count
foreach pick in hero from BaseWep where "wGroup.Natural"
eachpick.field[wAttack].value += hero.childfound[ra5CSteDeBnd].field[abValue4].value - CrAt
nexteach]]></eval>
</thing>
<thing id="ra5CSteDeBnd" name="Steel Defender Bond" description="The Steel Defender's features rely on your Artificer level and proficiency bonus." compset="RaceSpec">
<fieldval field="abValue" value="2"/>
<eval phase="First" priority="500"><![CDATA[ ~ If we're disabled, do nothing &
doneif (tagis[Helper.Disable] = 1)
foreach pick in hero from BaseRace
eachpick.field[rHitDice].value = field[abValue5].value
nexteach]]></eval>
<eval phase="Final" priority="49000" index="4"><![CDATA[
~ If we're disabled, do nothing &
doneif (tagis[Helper.Disable] = 1)
~Pull master's spell save DC into abValue3 for use in other features
field[abValue3].value = master.childfound[cHelpAtf].field[cSplSaveDC].value
~Pull master's spell attack into abValue4 for use in other features
field[abValue4].value = master.childfound[cHelpAtf].field[cSplAttack].value]]></eval>
<eval phase="PostAttr" priority="12000" index="5"><![CDATA[ ~ If we're disabled, do nothing &
doneif (tagis[Helper.Disable] = 1)
~ Add +2 to our AC if level 15...
if (field[abValue5].value >= 15) then
hero.childfound[ArmorClass].field[Bonus].value += 2
endif
~ and damage.
foreach pick in hero from BaseWep where "wGroup.Natural"
eachpick.field[dmmBonus].value += field[abValue2].value
eachpick.field[dmrBonus].value += field[abValue2].value
nexteach]]></eval>
<eval phase="PostLevel" index="6"><![CDATA[ ~ If we're disabled, do nothing &
doneif (tagis[Helper.Disable] = 1)
~ store the proficiency of the hero in abValue2:
field[abValue2].value = master.childfound[ProfBonus].field[tProfBonus].value
~ now we replace the prof bonus of the minion with the stored hero one
hero.childfound[ProfBonus].field[tProfBonus].value = field[abValue2].value]]></eval>
</thing>
<thing id="ra5CStlDefAtk" name="Deflect Attack" description="The defender can use a reaction to impose disadvantage on the attack roll of a creature it can see within 5 feet of itself, but only if the attack roll is against a creature other than the defender." compset="RaceSpec">
<tag group="Helper" tag="ShowSpec"/>
<tag group="abAction" tag="Reaction"/>
<tag group="FeatureTyp" tag="Reaction"/>
<tag group="LvNamePar" tag="AppText"/>
<eval phase="Final"><![CDATA[ if (hero.childfound[ra5CSteDeBnd].field[abValue5].value >= 15) then
field[abText].text = "1d4+" & master.childfound[aINT].field[aModBonus].value & " force"
field[CustDesc].text = "The defender can use a reaction to impose disadvantage on the attack roll of a creature it can see within 5 feet of itself, but only if the attack roll is against a creature other than the defender. The attacker also takes " & field[abText].text & " damage."
endif]]></eval>
</thing>
<thing id="c5CAtfRstRea" name="Restorative Reagents" description="Whenever a creature drinks one of your {i}experimental elixirs{/i}, they also gain temporary hit points equalling 2d6 + your Intelligence modifier (a minimum of 1).\n\nIn addition, you can cast {i}lesser restoration{/i} without expending a spell slot, so long as you use alchemist’s supplies as the spellcasting focus. You can do so a number of times per long rest equal to your Intelligence modifier (minimum of once)." compset="ClSpecial" summary="Grant 2d6+INT temp HP when your elixirs are drank and cast lesser restoration.">
<tag group="LvNamePar" tag="AppText"/>
<bootstrap thing="spLessRest">
<containerreq phase="First" priority="500"><![CDATA[count:Classes.ArtificerR >=5]]></containerreq>
<autotag group="Usage" tag="LongRest"/>
<autotag group="Helper" tag="SpellLike"/>
<assignval field="trkMax" value="1"/>
</bootstrap>
<eval phase="PostAttr" priority="2400"><![CDATA[
doneif (tagis[Helper.ShowSpec] = 0)
doneif (tagis[Helper.Disable] <> 0)
var iMod as number
iMod = maximum(1,hero.child[aINT].field[aModBonus].value)
hero.childfound[spLessRest].field[trkMax].value = iMod
field[abText].text = "2d6+" & iMod & " temp HP"]]></eval>
</thing>
<thing id="c5CAtfExpElx" name="Experimental Elixir" description="When you finish a long rest, you can magically produce an {i}experimental elixir{/i} by touching an empty flask. A creature can use an action to drink the elixir or to administer it to an incapacitated creature. Roll on the Experimental Elixir table to determine the effect that will occur when the elixir is drunk. \n\nYou must have your alchemist's supplies on you to create the elixir, and any elixir created this way lasts until it is drunk or until the end of your next long rest.\n\nYou can make more elixirs when you reach additional levels in this class: two at 6th level and three at 15th level. Each elixir requires its own flask, and you roll for each elixir's effect individually. \n\nYou can also spend a spell slot of 1st level or higher to create an additional elixir. You can use an action to do so, touching the empty flask and choosing the effect from the table.\n\n{u}{b}Experimental Elixir{/b}{/u}\n{b}d6 Effect{/b}\n1 {b}Healing.{/b} The drinker regains 2d4 + your Intelligence modifier hit points.\n2 {b}Swiftness.{/b} For the next hour, the drinker's walking speed increases by 10 feet.\n3 {b}Resilience.{/b} The drinker's AC gets a +1 bonus for 10 minutes.\n4 {b}Boldness.{/b} For the next minute, the drinker can add 1d4 to their attack rolls and saving throws.\n5 {b}Flight.{/b} The drinker gains 10 feet of flying speed for 10 minutes.\n6 {b}Transformation.{/b} The drinker is altered as if under the {i}alter self{/i} spell. The drinker chooses the transformation, and it lasts for 10 minutes.\n\n{i}Note: The experimental elixir can be found on the magic tab.{/i}" compset="ClSpecial" summary="Create a magical elixir daily with special effects.">
<tag group="LvNamePar" tag="AppText"/>
<eval phase="Final"><![CDATA[ doneif (tagis[Helper.ShowSpec] = 0)
doneif (tagis[Helper.Disable] <> 0)
if (hero.child[cHelpAtf].field[cTotalLev].value >= 15) then
field[abText].text = "3 elixirs/long rest"
elseif (hero.child[cHelpAtf].field[cTotalLev].value >= 6) then
field[abText].text = "2 elixirs/long rest"
else
field[abText].text = "1 elixir/long rest"
endif]]></eval>
</thing>
<thing id="ip5CExpElix" name="Experimental Elixir" description="An artificer alchemist has provided this elixir. You can use an action to drink it, or to administer it to an incapacitated creature. The alchemist rolls on the table when the elixir is created.\n\n{u}{b}Experimental Elixir{/b}{/u}\n{b}d6 Effect{/b}\n1 {b}Healing.{/b} The drinker regains 2d4 + the alchemist's Intelligence modifier hit points.\n2 {b}Swiftness.{/b} For the next hour, the drinker's walking speed increases by 10 feet.\n3 {b}Resilience.{/b} The drinker's AC gets a +1 bonus for 10 minutes.\n4 {b}Boldness.{/b} For the next minute, the drinker can add 1d4 to their attack rolls and saving throws.\n5 {b}Flight.{/b} The drinker gains 10 feet of flying speed for 10 minutes.\n6 {b}Transformation.{/b} The drinker is altered as if under the {i}alter self{/i} spell. The drinker chooses the transformation, and it lasts for 10 minutes." compset="Potion">
<arrayval field="usrArray" index="0" value="Healing"/>
<arrayval field="usrArray" index="1" value="Swiftness"/>
<arrayval field="usrArray" index="2" value="Resilience"/>
<arrayval field="usrArray" index="3" value="Boldness"/>
<arrayval field="usrArray" index="4" value="Flight"/>
<arrayval field="usrArray" index="5" value="Transformation"/>
<usesource source="5eRftLWCP"/>
<usesource source="5eTCoE"/>
</thing>
<thing id="i5CEldCan" name="Eldritch Cannon" compset="MagicWep">
<tag group="Helper" tag="ShowSpec"/>
<tag group="Helper" tag="AlwaysAvl"/>
<tag group="Helper" tag="Proficient"/>