From 49c3560771bacf6fea57836d749024ce1c2392e3 Mon Sep 17 00:00:00 2001 From: sladecraven Date: Thu, 4 Aug 2022 10:25:40 +0200 Subject: [PATCH] Add shield skills --- images/icons/saves/fortitude_save.webp | Bin 0 -> 7106 bytes images/icons/saves/reflex_save.webp | Bin 0 -> 11574 bytes images/icons/saves/will_save.webp | Bin 0 -> 8678 bytes modules/crucible-actor-sheet.js | 11 +++++ modules/crucible-actor.js | 56 +++++++++++++++++++------ modules/crucible-item-sheet.js | 1 + modules/crucible-utility.js | 7 +++- packs/action-tokens.db | 0 packs/armor.db | 0 packs/classpowers.db | 0 packs/conditions.db | 0 packs/equipment.db | 0 packs/feats.db | 0 packs/lore-air.db | 0 packs/lore-earth.db | 0 packs/lore-fire.db | 0 packs/lore-shadow.db | 0 packs/lore-water.db | 0 packs/monster-powers.db | 0 packs/poisons.db | 0 packs/shields.db | 0 packs/skills.db | 4 +- packs/trickstraps.db | 0 packs/weapons.db | 0 styles/simple.css | 2 + system.json | 4 +- template.json | 3 ++ templates/actor-sheet.html | 34 +++++++++++++++ templates/chat-generic-result.html | 6 +-- templates/item-shield-sheet.html | 11 +++++ templates/item-skill-sheet.html | 4 ++ templates/partial-actor-status.html | 6 ++- 32 files changed, 128 insertions(+), 21 deletions(-) create mode 100644 images/icons/saves/fortitude_save.webp create mode 100644 images/icons/saves/reflex_save.webp create mode 100644 images/icons/saves/will_save.webp mode change 100755 => 100644 packs/action-tokens.db mode change 100755 => 100644 packs/armor.db mode change 100755 => 100644 packs/classpowers.db mode change 100755 => 100644 packs/conditions.db mode change 100755 => 100644 packs/equipment.db mode change 100755 => 100644 packs/feats.db mode change 100755 => 100644 packs/lore-air.db mode change 100755 => 100644 packs/lore-earth.db mode change 100755 => 100644 packs/lore-fire.db mode change 100755 => 100644 packs/lore-shadow.db mode change 100755 => 100644 packs/lore-water.db mode change 100755 => 100644 packs/monster-powers.db mode change 100755 => 100644 packs/poisons.db mode change 100755 => 100644 packs/shields.db mode change 100755 => 100644 packs/skills.db mode change 100755 => 100644 packs/trickstraps.db mode change 100755 => 100644 packs/weapons.db diff --git a/images/icons/saves/fortitude_save.webp b/images/icons/saves/fortitude_save.webp new file mode 100644 index 0000000000000000000000000000000000000000..7077346fe1ff1051d070bf99d0f389fa8a490e76 GIT binary patch literal 7106 zcmX|>Wl$UpuZ0&cu0@Kw`{J&}U0d8KTHK36aVuNg7I$}8+}$beE?r#j``P`MnPhTu zCQqUvFDu(d3;^iLNUG_m@l#a&6RTwbvS641umD)mM7cagT5v&LVQNWW4GyxUN6wIqdQcrLDj#(s&R5-+yDK@s)6z4{X%06_ zAV1-)R-yXhJ6%kztMk#!aOAI$f+Bl5=0_dy%@BS;n@ZUL;D ziAoIeOpqW4?d6-MmQU?O*hb^#^3c~a=I_QHhJSc#ldU)K2hrL5B``}UCz|)C{&?PD z!E3X`7F78QI*;pw4RL9s?695Dc3^tEA}9C^UTR^{Ta%gf5M_lt0*_hM2o4#~Ff8}^ zN-MB*~@f z@5ZWCbv8K9#xqfInPMk4KFQEU&ldbhmzKTNW>7%YiSo!umoxmrgR>P)|9K3gt4v}e z=0v&`sc-NBVQn3IImUSv!Lq98_4y_lW=N;ZM;Xg-S=l@(y*LY3i@A+vmGLSnhMmWg z1@Cn7e()ti4n^lqln|AMA{B}T>%UZ@15CsS-=Z#G<_Nl)OuiTyEu9=~aApawmuBI{+Go)>bA)BJ0Y&Pxw7X1Z&+V{%ikO#&-jER5Vv-F~Yu} z119rz#hqiR5LIT|#qJCX`*O2mYW%JL2ZY@y`lmkLAU22X+CyQyc{Ea(V}D*xlTjAG z4FuFtOes7gggBtX=W}b>_)0Y`qpnLK3uSSBc(woAr~j^S^+m|9A6w!0>O#CyI{P^I;Inv)%j2^67r4}p;IOuw#M}ROYongN*yydeSD9(!(CgRPG3o6;=Csd zNGZPd?(Sd@5(BIL*9!p{NB7Y)yil_19N8=k48 zUB-VHnDeU3a@vcdepg&2v8DKQEE!y*a8#NV-?>X};G>#6ioU+pRn|(odYqa<$-E0^ zl4&QHuO$00Rq`NO)tz#PhB8&TW!r8Z@rhZq9nMCHKv`6qpHDhbE(kiWI|Vmf=OcX7 zR)bVqLfQO6bWJ~YpKM8%kF%e!lFo1T`P`n<*_Mc_DVfp@_#?OA>BBxEE7K;BQBF~N!Fy$EI+Qg*X)fi75Vp(!6m+@MP z&oM>%uw5vn*O3?J#4oWQc9q5xxWCCGm=z}mV}$*c99QRW`#kV=#;a?!K!#GhhR&!k zig;I3J{ke7g#=eC1y=5t%lHWNN&&dic2R=4ePBa=8OKD6Qyk zsLxnYZ3BJ%sz${7{Omc|5;=n--px0!V~La39H4?gB|K0k^k~nHq(C%36Zh_nKOO(Z z0h?vALUObsk}#(cy_b&Xil~^(EuTUZt@CF*iI~`Km)-?_JynkMPG@unkh2fg^2XWe zu;bPVb`gu#xG+h`H=^BgNyZ2w14hhwHLp_cMnf*DD&wheRA!O}hM488{Tw;+!%*VM zzFNtzF&Un*07nup!Sj!@ms}3j4=UzpXExm3ot*(Leva#X%AnRaX>C0@@HL+}>bM8d zIHRs76>jeMQu<dk~uXrBaW3kDwUn9&8DfI99tMrqFax_jJCCfq z2gG+rJh~lJOHB}y0x$oqwva_K-ljyUzbs_a&!US^5`G}*q7GL{Adyz`!FzuC)1V(%7 z&cK7oG=7?t%Z26^w^a60H#~K=jrEf!c8OuPaF|^!vY7x4YL6ajxbOJjxXh^mtyc3| zFm*chwRNg+F0T1ERWXWQrx-8)KilP3-7&0-nFTF5-M@%vz+f}r^;^+&|F>n=Nwb#z zmBU^{Z`nr_1O4!FzU@b*!K>MXg~D#8Yv}~ff`|Axf?kZwn*arHz0|sb3(7eE>vYXS z<)dC~`Rb5_tJ{!Q#96iOulnCIY`tXEvJ|OhSx~l^t~NGK=JvlsPC`g-*Ts`0Dx%-f zm^ca134rjM`+32HBj5bk-oMg&c5{ouYM@t0&QXz z?eybY_EV+^yEtaxKF(tJJPxPAtBxesZBb!@pEcG=E_Yx)v<+?C5ns*dLvrFu1s1n@g2;)luv^>C+s887`KGT1zs1cbgm`xCu-O z7ps0fVxMPk?r-hO3ytFJ_b9k>YZZ5E-1!WwzM7fmWGEBTGaz_r-G zSh3^DgM*jLwVSVYn7$l;E62fa;)6kS34bdOS;7=o`*h|TFZc4Yn^zY@mh`v(styr; zCGVn8#zd{utMS9JqQ?0pM*TN_xKJ_ydHu6`YJ@Uqr|lL9<78iYfT)WSpbHDV*Nkf& z!YWs{q-#?9a1oXOxA<|bfq^LvzLQaLZiD-@1NBoM3^-{xyJaEa@C%pXA+@&eH-p4E zSnw`${T(-ycIH9T{gO27>-MfQ&~eb&nl-#;l1O?)RE3O#+n7C=*o5Z+u%b4JYY}bN zMY%UwnCMQ9Uru(N9UK8dn=P*z54c+_3mSP>(it89rKI7!b?vz>ni$aYy^2cLb9~3s zK8jJa@!O1yUEd{DI)Nv`3DdV@IKG)mi8Slyptc1hDwc@``R;!HAcbWz6Huy^Vnk&~ zMXWb#?UQ(@YbV=>tTN>Dfp{7a+bz92EHLWirC7)`*DM^+FsuFZHg4wCO&p~&)Xlvp z*v3s+7+X!)uPgHQpnWGVI=ht(ty_Ti=`gYpw+i1AK~_R;qU_Gnwjy^SB9DfmlTdPsRg1GyUs!31I_fQpx&v4&de5eG+aUqV48k>~`l_~^rdu0}c`@0D| zi-v0i2>Tf>PO;t7Wk%N%l9jrsL*e;S@uk|z*aEoqdXH2pu!WYu*WxIlUj|2!>|7n{ zewW!54`<#{zIlcVuf6RH)7xB~ePYT2O;20?I)-mwg2<(sMZ$5o;=ibwS!@v8b>0vS zaJ!9(q@?}1qmRrD$o6kVJU`mB|J~G$CJ+CsHJtG7@%vVnEv{dwHDi4>dkMU(1qK=Y&AI4Y+#I#=cOh+D zm$TEASL2^sq496Fg7U0eKM~}Xo|t8N>h!kweyI##lWHu&8O2&cEN@i#LJUnzK$1y8 zOp~8b^ylvkiKsmx#%?kf$ai0=w2ZWDj6HkmMNt(2*U<%Fmo?PMf@kTY0-Jl8o6U}h z(lt~h+DGjP4GGJk8YEh+a~^{npLlk@v*jkRq`PW8_ z>B6V5a5`tttVO-#FDPf~#$*r~XaV$Db_7j{OY-^SKkwZ4Uu)g{m`c8A6z^&i$lgB<@jxuadq9Z+A6gXC)lJa8^q zk>tX3YxzZesoCHU@CUpu+$-u>Q`}Gf@E1MNvtv8Vsx|KGLNI>5875EVCo~ZaqoHK5 zq(6Cfm;aTCBn@s`D1gbI3u7&eos9UB9MGVWPmspkXGJZhbBaKUde`S#FTyNM6dCV3 z_G~R;I>nL2iX?1uq?~=_bwb*7V5}L!P7nXET@~~?8|`%VLkV%rv(V@s7HLDp8MF)J zl*?joCU+tNv(H&yLHE@P6Lm1sZ}oYDmiciuwc3Wu&K)n&wanYsDjZ1@mN2lrY?fa? zJT(VM9afAZ6{QipI49YUMzL|7EeFFzmTCXsuaN8`Mj1Bc|Dfa5)dhDZf=BuYIX=i7 z97t^NX|MjIo3Ang8=84hpPyc}K|Vw1HnJB^hpnQpWCg)ksMp4Bwq-~&@Z%XDwPvPx#DJC%PE1r;ITo^`WW~BvHdl@K;EXt)6 z{CeIuy|sX6b020xUg;FQT~j12%S25Zt%5&{{i z%d7&B=h1q+?wyUr-g+49q+QYsa+el-*15K`$SF1+HLZ3QQsQl;YR(Wx@gqGUOZXHm z5hQ1Xh}?mkUsCV@G?af^hZ$87&VYOkm+meH$lMnDLt$TPGJp$w62sBVH206o%#HMJ z*+Y{Eg*SC>!AmzIC(+lq>LI3AKF-Y#j4%4FOP^<*=dhpDkp@O^;F9=rD|?yP&|tXe znn*42W2m(e^l5mc&o-s2b6x`I63#Sx6AXG76vPknYNgq~5UKQ(%_cWNbF?c(WMW2- z*^s0JS4uYQsSwhwJYa!qm~`dy>_mloR7{?cO3K^GZPG1SAIXeU?WgqEAy!90 zS{;-IY|!CR$TjoiiPZVGc9ou~=&+0aI)dmT6$)%a+XhV! z3&bYl>2()}vBD#m1hFBP9YN&sEe^=i3L11us|d9l5QmOyWjzN{7lBGoudmJadM>W(X(_(kp9J+eEet$T z8J4f{TSO8iAIvt{9ZUh|%%pdC+Y8%K9ATm~OLkv&c~k5Med~?01pa=E7DAf} z!6R{f@Cq1)-T)1LvKj<*z~c+>R4}ywa0whHc6m|1>uT_3e$Qf_<~@2?QT0^7DzBva z()M*hTV7RLt6?tv7-zy+>E}4Zk!8!)o$NqDrl_~BW?n6cwgIaTc&$d`V}yj zS*gjC1MLG*ljCOy=6VZ0j+2ZlC{?hDrkfltmSI>bdEmK36jPJpeKy0CF@;b717p)h z_uPS2lI?-VaXYCz75_`1sT|DbV4+Eq63eZvtR2IaBe(v0` zu#MwY9AdnC52JbpPxj=*55w}Y6sAs8H|{<8ba=Ru_M*(f@fbW=8(Wg8>@C~dQE?4@ z3CL10x}V7w*Bjgw3%ws$WIcrcD)4(Z76kyCg8#Y>I=p(O4K=O3>_hxG&Hj1rkT3SK zC*TuYLalN`u(w$h!B;RJ{ho3IhZ7&@wz#CZaBNC-2T*=)zb|0wlveRg7LY*|Mz;)Z zHxNR-(e-1^m^iNhz+uc1aj4i{jqIi6d3n=lqqa?^>9&+MmJl8CQ(*_Ej*I2dW{ zz68Pd72l{4+f@}MEdrnYo3^&jXf7y@WuB;P7tSzh0DyB?YHlcwpnc5lt2G(aMnE%3 zGP}LVT~ayTzh9(nDHS=HBHcoCC2*%r2y>=)NMI@ammVrljmp+AU(M2JKKWg{@rXEF zTgU5p2sFDn=YHau2~I%l9Bn3Hb~ab(P%vP%`orI!cq5(fOC-@l3t+VOnx)E3{QzrP zr9W6so-mMBG5JWnAYfRkU?jM7Gq!R*fRKB^P7Q3t`j$r zxO4L3pMUO^EuSXl!hW{9Cw8zh zG&Rg>WtkJy+s5s=wH=abU6D-V<|hMBITAeKobQN-%4>baDrjK`*>%e`q$h4bDH z!Oq7PpKC%sgZf-4Zsn*suMP=Acq(+5n{oNK`Wec(^{PqA%aiynrFMQbRU7+wSI&-J z@HZv)12XUk*@j$7-FU`i-4EV^->fg2_OV<7l#d-m2EXhIEh3@_?1oNl0fP-9x>_R5 zgtZu?h70Pz6`G)NS8cWzy^!Arh85=^gZHUh%vgx<(k7T({nd>x#U_cSZfzIS=dzZL z0u4Ag5#<>f{I&-|UfAa!Y-4Ee*jTi%nV>+rK$OBDWhq z3LNx|*{33O%|KTOk=neFQUcO8;*Wax-zUm{Wc4LhTYcnpR?Q=wB2ViEncpr23LC*W#3R>!PQ9nhRvq0g^^CBT0Y{zfCngO7|8HWiEMjce#??;pzD0OE6`R<#4ybiylQvV z{?0tsPf3IUl;zP!SY{BB%mZKEDV;|ZYSD}CWu#gn?0^yW ziEv>D_?#eW&oFVNNl^C5^G>|n*!rQm{&jv7d=y7$EH#UJV`nOCPUIZ6_RY|0q`$u1 zj>DIY>4|Vv@GE9D`%f>)t||St{*m%k`h{K)=u=W@nnyN+Q}L9EhG5xCF{zy%`vbZS z0N~2#bxOX-(bgp4{l{pUe3v96<_M<2DRHV*t7Pj!SUyXg*iLR?cW;iZ^_@{Hh50UB z>$cztH1|sJAfkqp$I3(Ghv;)0DXl%Wkh8NAZMv%fX-eI&D}Ydr0!SQwc$0M(Vcw~! ziw)Yn5o(`}&KXQYGX262Lha-yHiQkvDYtp^(CU==>q)xn!rbQcIexwG{z$mb^Z#bh zRL$h0_nC&xN#f%veE(cO`~LO;^8UExY#^o9a&I!v35VsPq^Z$C5&Q&G&yMG=aZP#Z z#f*yucsv92o9ALzW|B`jR$M{>6D;D1BO2^#0^8^k4pN3OOM3Nl2b*xT7WsW%BO%g- zlx-3)n#|{Fwncku+GD>&@A!Nv^OmgM+@-u6wF@@Y4H0hf4^-+T7jf8zBz~G#J&?!YeC%diDRX3Hqf|iZK1bSNk&F4EdT&lMM6+kP&gnWEdT(J-T<8eDgXii0zQ#MpGhU8BOxm?NieVy z31x2lY5W+-aNos0-#im<^O&dD|5+vht{qOFSC=2o_r(9n>eu|Qq_?0iN59Pd3I96u z*WLB?mHwsEWB<$A@Bf#sj-Ah%zt;L#_~++;ul|trm-btbL_~fo{KGr{-gk%i-|N4x ze!#z#e^v7!_x{6eOZ*?~hp-o@KP>cW{9iIZ(*INJ0sfcL{_-yj{df2P{yqI4(kn<` zNB+G05C1p+h1Rq8huAyzILgm5&^9Jif#OxW!WYhShF|E-6m4evq?b>jJu4-0 z!;V=UddR-(cP8(ph(|MpQ~6xXcN30BwGDs(JWDCY^r6j$4ioHE9Nse{NG$_ng#hM} z`VeSejQkY5-=ON=GB_OuBZ7C$RBsY@fp5a?PDy6i2$#ODi?vb0fO9PZ-J+-_nRDtm z7l8atdkJ}Hi&VX}2nk{U0(z|ZgZ3f6%Vsz|=wpmmV)Y({nPf$S zX26EbG~pFH`^*e+y%enRq##5C+cjSWIk+967$cl;peDSEGS}e^AhZpR6a$%a zS*Hqyn6vNM%upU0ol0CXdBp`zsHRp?Tp^?ufv!*u@VxBG9!JJl+b)%>-qPSvT`(h= z*jcevnQxmlz0(N~+))-*3jfE*vWG)5o9S&LeHT{b7Pyh^UlI#*oF*rsFRFxMWUuP( zSR$#Cd>W<}`@i(5Zop@-r+Gj%ytEC$--92>wZ>&^VCbsbf(~VMMXd$mLgVs)b1eeU ziHavlq>C`mQLU1xcb~*ttfQQnC@c z^k{F15HKZTw41JbtMoz%>7FNwU@>bUwb75K?FPEE>pozdkdNe8DO zwyku(d_H&J6S~LS+~(ZqMrYVte+ra3vT)gqZR9-H^FY3@i$K`WQBpAn9lZyxd36nRW!z&?thCs+On=!)QhuCg8$bmlBg*m%=w?N z!A>&q(idzzzQG3=K`Iv#<1WjZt-OYQ^*kn^ z{zx~Ta@I4==u01V1g#Awf}8n&P}h`tswiKjjYdj;o!Qu~EcSwPRLZ7y%nZvw*x^7q zmVvRx?0^`Py#{)EF_3!JA1J0R8YWBv5$Fpd8CSQBwkFZC=g7WaYKonat4De`9(|#p|#$CN33t2{@=`&i4xqe z**V|oEQ}gg{M4pP2+g|uJ5>13{w?dZfH_ z%n<$#trRj;|1T+X94I!?&sQn|L@C)Am{hFa z!}ct|PYB=H3vfSem(iE7mnzJiXGO(hES?;XpZ-fw97Xn|rwYlbMv*0RH^9 z-~a#s00A-!EXs{`RmIg;z*EgOLsCLa8)5Yek=J~4v#)NlTxOZT5yJXIvzknf7THWL z;Gjf=O>_kUH^}uMv|tf`g$VYaq!WXXUyy>2w&vBZV7yz%Poo}M--+6w6LeVnpe1X% zJJ^Us$WqUP4Gn3kAHS>RUt5U=5%xKjDAkye{&#qOc>RZi`UDz>3raOn;Wq{lcx1Gc zvZT-IgUT!Q-yLF3!o)6wahu%X-%kBV2i72#8Y}9?vpP6Nmnekzt|gu_dYSYG-G?QO zYlFXlOQcF=1X~IaeC$K|-#e|=G+Lg@CC}3+fr?Mx@H<~(3wd@m@+gNJXrV#p2OJs5 z`0q5#rKX)aT&Mm5ec}6*XQMho2;A<7g(V$HSO3H!uMq>S%<6Yg81ukG&zV^T5Wjd_ zZ4Hw=^GkH9>4`T;)b@%cU(aYc=s5CQIw94ywf5N@7!%1kOV={?EABhb^03#DfGSM3 z)I$8*{SRh9|_ zDuM@reZOO(yuCvIc^*`FfB@l-yjL`|QfVs4h6r9h2U4=8x}bVt2=v7h8G(BRQnXwc zj8^141gM!DV$oZ=maakMoL)E&q;`}GdHRpk?PMXOBJ3uz-Zf(oK8e@r=i?kV{#m!8 z#13D+!OS$^P-mOh;(JzbC{Z59TYqYE$M*;5T$)Bgbxf5!wid8Q|F3uahw6KJS7Dbs zOp-+niu0yPIno#up6Nv2w&p;0w0lYS@(ew8(#B|B*b2v#p zQ0CH?*N%QZ@=9-JQ)4;ul-qUP(rPrlXpIo?UE2?3ZuwmBhtWHDF>A;SsC8>B4V-RRz2d`8V7IC#0=ztfVUK%*9vlwc7su3e}@l zkm1Qy!YpZ*zP_V{_oO!P!pk#zcoC(IuI9VQ1fCxRvH6K%`m&~0;ZM_a0rO@^>r}OB zOWT)xs+wwjvDeB-JgW+O?L`UY6`S2D(m7MW8+c(km1U1I6cFe~-bkwv%>0EU$lt;b z%Irgk!2aaU!0oxU#Zsd@7_w5#QYQgUfpOvhz9VXb8Il>11?NyM*0Nb5t?t#svO^ry^#h(Y_@+IEj}3{ilZhf#fv%{7 zI>rqVQunbZfxk60U7EqQluq`fy6ZOTVijekPz`S=O2y?WjD%e3DWg?n0DvNyilw<|pIZWwRP!i$ zHcM6dW)t5Z^wu#BTcDTgQb9q)W(w}+EZBRq@cu%aamJd)&uZ7MPGn%#h|1;Ww40@| zt%_a6NEc?QWnyx*M@laQaqF9;6}O)s#Xu$M9fwiS)lRWF!0KZd4y3}&Ch2@}YN7Zl z?xv4R&3}&XU|R$IbGg}BwTgTGkR=r*t`>f%n@{lLct`SQP&XI= z0ILg9p&DJR8UdMqwS5RG1f3z>{@*x#b)#W>m)6L3V<%Jr6Sr5XomUKfmwfw?KqRX_ z?=ZMpTK$4)n~c^XMY&{&g?pe}x8lDcAHbf#2;+Zg+whAc5l7dKxGZ=!gXtc3u@E{g z*q~y2D>I5$=W@d^mf1r2!Lx|Wc+N3Ki#c7_=tZR5ql*yPRm}@wqeecXjY8H-1>mKH66t55#lLH=4=m?C$$pMAqUDS%7-xATL4M`!>wc!?yjZe2;?j z%vSM6XQp)Dp^FMA&KFRfd7Bj$X4x6VfDLYjOb(!746%Y>()sK84=X_RlbXALk5C3l zFkg9JKa*UBmdm?&X*a)0OI^(S7R%7*b%ml$EqYrEBRpvc_o~8G>%pgPUx<9>-am6S znSvd@rbwGi(29-kt@DQP?en5w1a;CvYN9>JHcP1dFMG?|U@pe9*^79%srAXCj2J08 zbUcUZ{PE%61V4vAbJ=q-wB-vH$+ziZ%j>gNqah~D(*lFsU1Gkn7h6UQjLMC1$4i}% z!jrs_Ov*eP`FqK|(sHHB4~6qGlTlV@rfH*^8bg0GP|`KO)hA%8SvR@B7t41Q|J$xh zMj;nZq_z_pF%*G;a!H)1)j`Zi0(49XO2jfb`-f*=J1RnHz^-7RB$EE)7Ctb)ge67Hm~b#P)aTSaWi z8cgb8L(RJe|4&#KOEeLFYq^fgPLN`dzc@^221;N?TYfYaj+V>P@3@kXLMpK`Pw(Bc5(GPdmYEV3kF$u4_HcxR@$rj8 z=NvXxaZ;<`U=S8TW_2&atRC}x0~vWycf&F{T6)+{F?dI3%qUErw@A+G8y*O4;82&g z^Wpn~f>U=G5HE;%3P+HaZfg|=CEs|lt5^(*VuwXxS8~aJ+L7@D7!~f`FQ_gGL+qr$ zG$mXb2X-{|as8elK4|D#4-6U}2qj?OISO<5q*Ok7yV#k`?n%A9+-Qh^IWMS1MAQtn6* z`A6QkI1s?oY_m2WDJ}l%2vPl66cCt91S8wJETb%aa1ha7ytui*d?5|jXHL7U1^=B`oatH-6eGg2|N$_jr;bnyZ-|0q@o@QbmP?fH308g;G4XN z&hAW0lj1^Kq^VU+5IJR;MWt)ZRC-p%whyC9TFng3 zAC+e=Ij*;{jIjT>+PywyRL}`~sV9QxKY_ncljES4UDZntr-21rbpzJSXgA!${L0E` zUid~41CIlgoR1H`tHRmdEYcoZR#t_A2NhEV@SC6p)1%{S_v8-L@i(-k_GqK4{VD~e zVuD1uZ2I^gF2ReOdI(pkm)NGwyO>KSD9TTI4_NdK)$y2@S3aag z?A%d`QoRESQm(W!+jC>c#(ez^B)Zv3~1WJdBA?fD(=8j_0w(K79CZGVB;t0=% z4$^Y_?udqg>>fE0Zl@~=@INr)#XiAil)pn{QRBhTR!wi~;AS~fP2#I(in{PcI^^|p z1{3CuW5Nw;r$2>1L6@YVRRv#8n>ytXK+-&1fU8k|$=zo&@=)I!aZB9H%24oA@}usb z8qGRFDIh-`i;j3^$|o>dVBdCbJcsk@LVKel|1ABUq`XKkSKV9rjMnbO zO5FGIhr%E+>(i__Ibw%EP*X+nq`7do;eW9GY<2F(LUAx|ZA!{u%(zIwe!y*lV)U3A zS-6cH!Uwoa()shm)VrPKF}od&(&MFfu>eqBOG7vp?_3uxpHft(<24Rl@277t_wY;e zBwoEC34QE-Ik(EsLhUlb1L|{w_a)yM@K@Bw&ayt>iAn4pwZsUtr*;t-Cc_vpK6!_P zc+JHQWo@*AzFgQ}FKr5<38iT%!TD$hFaUw@DsO*9h(366kE3^sa%!ZRgc@9bz)+j= z*ANhb75Oi`+^MHs*g zU0gvVD_(gcMDVCGt%ks82UYP3b4ejlug828{c*Nxr7u+bmdv`!7o98Xd*()VpvOMJ z$e+uFG9{?I<_zStPxfd6qL6)SEFD($iB7TszTGv8+|_`YE=|A^HMByto)$s?+0mkz?Lq=E&)G2z^&_^_d5)*yVcDBN zSp&-*VvCc`akwh`D`T+b&4heUeqkVfsfb*fS)vi^oFaDfB&$nP#?3Yxf#og)8l3gLczR7sW97~wFQ z7_Vdy*zJOBg`)yjI0&x_WA1*4zZ4_02dNT*{|~F0SgRF@|HLJL9lt6AZo-P3{%odF zvsEQK}y+VA{73NO?FW#`%l8+z)05-SzM!p{VRG$FDPI4 z(eSJgZ>?TEhEawl00001U#T(6SA-E3Sxy*{rXoyTxv81bn8AXYL3AP7EpVRJh3=Ha zoUlNWd{Oe22t!frSBgg;B%64S2v7fc`tEA3b+(eENh-hQKi^Xy;(Z;A#F6Jq4eX6o z{4-O{eKujDgLUZ!LYj<}oT>Q`mzQ1yBwZK>fB6NKuQl<AIwz_)76p|liy_F-TR$QRX6D!VL4P{0Cd>9 z;u14vEdRfzHy`Fb>u};E7&I6uroQJ2#yuO-4finkK6C^tLWZ7#aRZJe649~H3Uk$d z;cN$A2bM*5{^J!>1}G-CG7yJ4sENm1G=B60G3dSCFOi%?@P~GYx@A%w*YlkXw$&)} zfLJ}9_buN9lrHR8zIW3l5{ZgRIbk7{e**Sn+0@znLW&^~pQGu@Z88NR-TvH*?~uUF z?rJU2X^bj$#V$MYJfTX-JmImWx-Xp^qhH%hkDL-z21`cm165!X*%DwEu-02d_ zQE^>c=E&7Pt4-7p^^xGC1dc-@I9KV|N`E?{Wy!ADhN=pLc_{VH#lDsJsg8efAH^-J z(h^xhviXskviyVd5Wj&Z79RPm6>jp08fSI91Y*MkIkqoj?gkc)&6R3ENy<*3GK#OHGk3av|_ZBZy+wjJ9sBey)@@0TxX%5&Gq)J+vGk6;R%(-a?y%+|MEpM6xjS$v5*b0DAjR2j1-t3i9xaL#y zO#d2AW_@&7W1Q2-zg8p&61d=foc{k1hG)!~k_cLfz7Zrnq$p*6_?O-y4VE)5w)Eq&u;CU5PSloXkLl$)`?}3|R@sanf*qw{7guKr8%T zyZ6>H{A6jK;21`fUAnfg_HH+V6 zan=F%eUj(yLrbg4*$zjjv>TXNvEA+>%{ zU!0Y^hFy}hIAqLwwt|AXkmZv^>@IViGvhPKYzpZQE|GWT0x{mo|A+yz!OXkIR@-$myIk!fIu+gJ5{SRslq6+)H zUdf2P8}>rUyuQ4&f27pp`}1c^C6fO`*>rlFTQSBoG+o;t!3s~e;M;`)yY)3Q-3F9Q zroxXAEG-)TG-6w1soZ24-muv?Div=-hUfm3`F=-#1?G3)HwQKH#=fF=ZyJcn-YF?) z430bLm;k*&_qsk6*tBJK629e_+Rq1bv|xVX(sht^KyHro(o_`>2-$ft`W9Ligirku7OK9M@;P%WUFMozlR^rLC z_hR(z4IwUkbFE8f91@sPmWqaJyD4KldOL?RUr#9Ez}aXe%-eJ14T|V?HLM3Vsjz1* zj&biYjDfFGRxXYydm@Sn^_OihB>W!2){EZ87!E5S5RA~+*yjS?r!N^BdjYN&ozHU! z5dE z+wQS-(d9{;NgIawj^yy{okgK1r*kpd51x}Ix`UxG7p)yHxey;yg?~yG^pHrlI}RRx z|L)Z*U@`kSKTwW&7YUkpl-3q+x73@(wK}A|Y4U+VMeyRF#Y;joV6`IhHw9%D{o|n$ z3FzMo>WY%_EruI9NvrjOz`AR(mFO_N`4+hAyw_=*3V4ORA>+9JI1$$axQ{vFEe`6Y zXr!w5>p^%Zu!7^?pV1%`tuaY7@4v}Dnw#nzB1HE@6XyXAzyVk9euD=HIR7HklS7_f)=g^^f;d4FPxUEwXo{qVY8xic8 zqkt9L)5|m_K>}A*S;yq3x~C{+?f~!|NOH7a{;ZVB@*^y?VCXT<{IpqrFrEWZuJ4vl1<8q ze-4G5?5O5@;e13R>RE1@FY$Wburu|`I2jGV?BqGW4+t4XY67f`YGMNaI8B&2Gk09; zmPu!2KA#i-Cu{DH{sqnv7XzBavjap%|Fm%@10lC!evtK1E(s;4ExS7*Dkeu5v}dQ! zP7K9QJ?o{_V@g}{aX=$#IMNVS-#6<4coABJ^`D>mm7Kx9>?QtUl^h|{x+07)SNA0w z^Ktozk|rzLQ9e%n?itUvVPR_f2KY!X7GZY#h7Q5^jEUJJ zg^A8dWeUsbOrUsVT)riH4f3n1xy!G;dySU=hxUphy>CVQx+O`BAz>LbIm~n;MkX)9 zmI!`@)L`h~xPfF2sT#Bh@9(OE&^N?tk>GB_aGR=cfNNM3M5Z__F2g!eV@Te2v-KU^ zP^AC@1FrP}kBZcUX@zFt&&y^fRB9XnSvZY;(@wM}yum(hkcC)arQ;WILX>Tfm=Y@Y z1=;6#HO$4bMmhwI+%E*Y-_YG5a;*pG%$L*~30pd83w2SSSB!-wIxRMEYalMiWF>>U z-4+kX68`6Mcnd}Q0tNyM=L<9Tq3d>YiP}?GSe#z+X{RuprBaDYKC!fWpxZaWaWa)B zq7o)0i!{ej=Eqi~mban`qw4L?Am5WH&t|;ky|A75v_5geWh`S`jIYRd*UyBZayY?c z>3ijp@Rmn0UD!@WxGyBiw+VxlIv4@jDFbE05nccdcUa156VeIQykh6`-KcgOgcjVJ z4An|Ks;-L{WIb4La^rwFoi!lG8(FDoJ4tnDkwr~PRj}vrRAb5bLA>d8BjWrTyw?|*o;m@gEwfFl6 zU~~KovjOI-`L(Aj0{`@Y84#?^>qx$QB?(J$^3x>>h;PukY_m8XE7K4hD2=Zvvidc- zO#hd|8ZbeOk6VmrnkEXia$pH1t$c754%zZ`q-Gt$ofLU!$y6Uyk+@$uDzTEthh`&2 z4d%`ApNzz_s5in~@b!XXTuK(Hx3HxvIVitW#+e7}|BM5Bx;WgOfdT`6ecPj!}aO@g|};a0-z?`EGK zfQB5=%eJ9`?7s2PRYbk~^*Nk$mX@q}6i6XFOOc|IHq}%l=I3>n#O~I01Mpw z1?m4Zp(gHplS^H)lo$AB;l&4I_n>Cmq9qV@ zx6R-3t1#J{=Er#>RwZS0@aFNW190PJIoz-Rb=0zk9{D{w<8)n z6K%SM*WDsr3n`?6|B63u!UU$Kv4EAti0q+}KPf#nMVnRL-l|jOn}|GgttL|#%?5)= zSo)RXwL)i9v0sZQK>OoGqW??lg7NSQyladmDQcNEXbFn@qyI)~5gBQyhAJqrOPd9C zvPSxGu8x&LLw0m6{!+{;OtZin(!pU8^L|fx;3oq3=G|B2p@5?Mb*l{jHRJXl?aTf% zcgER zq9 za3RZa*>zKxHgW7`V+C5&j|?$1a$11Fhr(%&HTYY}7-%O65Lc=|NOEhp;sZh?bJhK& zvQ2nkOkJxOodgMZgs-pXH>q!{_w4EhyzI5+Xr&Yb)=WwWs1d0748l7+qo=2^fFqpi zD&#-Dr@O=05||;STelBju_M15x*m6%=J`kiX1vMdoHSfKobOdbd>nbF?irMX$>;5p zO?c?fc{#VVSH%7Jy2pjbxUy5d8s$g!`8hj*ChzC`X2t2bOg9KU0hXfnh0v>&{jyRb zxMMw-1wS9uEbES^fBk(BJ?1y|{ z6C$mFxF?V9B`9!0+Bj@FfRtgtH->{ADz`7B^^IDcOdi-ZiboybbAtGW}T1zkC4pl4V9^@*Z zoL0489G5Vh?h7nXpi7(>+Qw&-uat^?8IA+~8Y!>{PE#I(5(xg$PHxI4a(Y2sWN5w) zW^9}*`#&Z_eRFaU&I$y&-TkC`r3jbcI8Z7QGWQF53F{I@JYXHHRFZ-J}+i$sT0?u-iiGa>v9>hq`WC;|}e$o=S;attm*6Ysigp%ZK1Jsi0c|p2vj4=LR-< zPOXu2weGt1E|Trd(sm$>`)W>{AB&&}`Z^;+2CLxVyAoe|_Cqxc0>U(~Z&lf!fs zA{iA5&kMNOH~x}$oxUuQ7BTqeN}xGF(rZKnI;!-6zJelAGl`#PHjBhIGtUcQNs0F| z3$x-^u)9!Xy1(vD^2LxSNmlwFP76Pib`y(v=FJ!Mp3#%|Y`T?Q@|62ar0_L9Y54k_ zCV`oXvBFO>nALdrekZH$kNyHkR3)aO7^tGfE^HOnMvn%@K6~dvLv~}A*lZ-LqH%Lc z#n2}OHTx6Uy7y8GXn{MlnSt(~YiWO}L@F`JU7l0e(mOU1s-AKk0cA~fD%Z_22W$L! z3F$hceQbPrL>gyR!yt#Kizi??7dXD*ax}i|3}}I` zk#p{Siue3YWmA-rbt{O`4-;vgF##J7Gka+A%&*mnLGLc%^~q@z!~>xRy)7%m^h^CxTUh%(S#zwg$B zmuZ=ECIGW0cLJ7OeO6DC_l6gX4$BsY_)h`}@|QfX2uT0vYKmgqIuPf6rBBC|0?4Ly z-kI|+ufAmS<{^0s)q)f#fKyKGbF_y>_fK@R=|@c(GsusHj9|aSZonP zzTX?}YNt#vz0q*yx40BBkonJad&*kbPou?qa`pZDA4bM@K=Hj~mpufnBjKfF1v>*+ zg~^kpT#@VZ;BFENyWh=fbiyK_^;i6A{PgSaM^^x?g=G{*-TaO!12XY}FJ%7V?oB1J<}s$9nh8gS}mL1*;fcB(dTaTnOJ%M=`MKVP903B5ZfqwUi%bwzw6szb%>u4@&wYl{08}Q z%rubaTs7Jq{sCw7;nc`->aJaQ181J?s5880PHrhaJ8q8jJs%mRLX+S z>5$Mg6tZoEqT;ZDBMfyu??64}qP{WFurAO>{~rc?(sy5Fnp9=?;N(DQ(j zSF^46ECg6XpSz(UwZ{;uXXvJs$7hs=i=_~oMpk?tQ=qBX3S+yy@h6AXGN+?1DUss9 zaexaDpHwXs9H=bbosIIT5dEx)P3d!^gNJmENKNZ*Ch8ukrvO)L`R?_?(xUhFl)TQ` z9Z*Oo;6W+^A$ECvXML&8vhv#qIPq`rHaT&o6ZtnbT=%y9D1%#WDb80j--Kk_7Aj4mg!a#aJ_V4u1PXQefDbPn#av? znx6!0Z^@q|si;I}+4n5tCU^QK|8bjo5b~`tCz<4n9KMKV{RT_x1^p5W5IlpSkSF?* z4cVun1X$eECn!dNp=V>MvVOEX<$trQzxgY#iy`2Ag|20Bk=fT~Gq@IcHhjet05Ytk zk2Y$qZ0vwS1nmd4;YCb{Dah_x);J0ZdZ1cuOEcH~?UJPPvW!JTJW>xmBZ;}!+DKI} z5z%rwEq)D}K!}E*z`~*+A(bATI$RZ4zDuynvV+^3dziQhLW2b!Kj9eiU=Qt7cvauJ@;DZm`Vh(6x8Ag7$>+aLLVzJa!71 z9dR|$PM?QXj-&D)u6`uCy+#$jT9d3S{+TQUMa6WYj1N|yQ0i1>GzJd*$ia_iL{)3t z=8+Cd`eK*dc8uC|z3iPD>K#hR=y?qAX(;O@f$C&7U{hPRxJJ2wF9kItK?DWPjA>mov^?^XK0# zV}m#W=wm4hKblBH-BnFf24K2W1+&&PFZ4?o1T%Oz(;17_gC1DjOsFi?MI-jvAQ+wM z9WR347L;xe1%h7HGBc^P`PkG(v$P*wYLq#x-q>-FoRyP)vi3z?!bVnJrF{HgHh zZv7UxOE)imWp(MwAF5?RXY}Fu3}&RLW^+5oY=}cH7ytnN{nF?F000AqJz4=BA=ef7 z000gRY*WaNK1wa{clR74JvS_R)To{4RE#g74MQ(Dz!*O+E|#l!zEmVAzeQ{P8<$0xGcuAef5i41BrX*Hp&%j+~wOy1M6NJ zFUAoYXM69Of+-R*&R4$OA4kKh5AIYVP|K{%nwwpJ7#b-E3x*bhRJ{%Pxy2OWKxNf^ z%|7S<7A8b~V@v|~T4>~|iVae7Zh=KWCQ}s8Kw%PJHOan6c0mgPBK_=m&`@ZEinhMrUM#sI?@Wy6SG z{Kpd>4c5rO0qmQ`aGdqcdvQGc^TxTOqD5SK`{^;94yG&2Akyw%q6cCWuB{Is2C3Q5 z-iLVo=)X%SB$MSK5I6Fl<%Eqfih;lp$zg;-Kt!8fiq}SB<*G%VhVnoq)l!oy;E86s zWLTv9Zas@Fk4B;$nrk97mvz=Z53RT3N-a3G@tHkcSm7H!7Y`UqH>amf!(wrk$;@c5 zcsv~UT%=4RDKSDs{wUvHy3AhZ-7bx-A=2dEbfFm;PWoM8=056I;dRtDE)I<#3yEGm zJuDUH`q~#LVy8YD6lq7oEg6je3b(RDxbfuOJDqsLfEkvoUUB=Rf?N1su)$ z+PO(g`{tyYLQe+WReF7@iHgL?$pSFnLeA3lFY69tXV3X+!JnKRkR?b@{RdK zA`ia&9alu6hS0-Fm*w=NcxigNhG90WjQvY@aW?_dlxL@NQh+)%03#g8Ka1V^8E*=3 z7m59MFV5{IgmEhi?)bvd5olx+ZTQH+phE1#H=N!ba$u;~%79U%hPT(OoX~^S!m1*i z69dL#ddnc*cw;O+`cgCzXzI!pa(O2>CrEe9cRK_P<~b8{<@6mrrPy}3&HM9rL;_;W_(#Xv$ve1liRYpv50vD-C%QFShhBMt*Q%|HbOwY0R6G=dh}#JHk;V1h z7zsJoHI{)oPT5uYaTgXB2R=e5&5ux|ppJ6Zdjk&GN8Jy>*Hf;lV~krutQagRZ~V{N$p_&9!QLtr4qE0KLD93%)!# zNH&BEnMvUetAn-Eb1A#E3f@DVVhk5Z^DA>c000#E&$1Lo2N2WLM#qcNrq-K)FGW~M z6DGOM?nGnZ*~xXLk{budg-)q142d1AGHX}P89Vc$-G zzxAy3o8+DL4>~Vl&eZdoC_7Up82#wteGZSD!|3%DwH5cS7(&YM$c=e32`y)BiOf760*w6Y(<52wujZMy~d@WwmjfcNN|r2zfXhMFmfE(WwVOpG(HBW zic6*~0X=KgL@S(^p%VG~em=GJ`$T$pTRe976G!Hsx=WI^1e`VcL&WuH(flM5?yIs0 zgSX$vbu5jG7uf7_TIn{q6&vWG z2kJ<-Uf(BIhzx@<-nC%}ZHCz(&i;ik31>Be-k_s23wiPO`ywxTuMC7l-CJhR)A2n) zIl#daq~>30YH?e3P%(AmA*?>iy39jtDGZLQ@j!S;lAZg`T_+x3Iy;0mK7%YrtbI7o7`QHyF~(Ft z4P738Ysfza7{uf?H8jna=hk@Y=42d&Hs+OP0Syp_=69j--J^mx0^t1L$y&!b&PgYh zIvDP?@IZ*L^lo|3;W5kdlyiS$!96k&BznLxv>YabVDu0qg5a^%lI6r7xX&N_rv5Pp z9ks=D?q>QLnmcOb5u_mp&^4uS^R+lUZ2HRg2aQXnrCH##Xz-bhIXr~8Pi&4aENffa zzlqUBYfMJu_lw|2U?PE`$00e;4s`_0g)?1jd94$DN5iS$jA^9GRrEA%b>_h6*{<3a z-n@rh2E0w8*JIcucFHH>EFF}yY&Av)h9P!mNI1?P#%tx=ZqF2ZfKx4CH#_t@{@+A^ zCUlw!P**LSuH(TaAZ}+9mvWbE3XBbN!2!fZz}wy1Q{T_~&&Ga~0QQa)AooLJP+_@uv&}U) zfZc?DzEbfSQ1~X$deoT68>xVbPs2MpI~x(IKmsiPgQrZh8J<9s>hHga!BilY#3PB# zwsJhZ`?!W9WY?&X$~8VQQ&a;`0&UhNq`TbhpcTE%%kAa>8%SHD)cLTCcB=ix38MAf zrjk!yJ9*ZlR}Wx)ss6ZBYR9KxQ|-f{HbvF2Yanr6i?u$iDL7oF9evrIod%)upDAJ0 z+;+q+T40j@BEJ_91(>5R+xuChMXkxh4!U%9o*AgUbNB7;N-vj?JOl4@Jo9{lz1EH{}N zpk{hPAG(*_VjtA;2GjdZ_I;)z<*7g%S);mME|dPXLbwndzxp;4k!RKd?*h*rrSwQ< ziEPm?9}I~2U&9V%@Sm95vAsT_CZK7u7g}3Me;pD9#{IB@1?-SP5vf0y)=I|)IU8-B zpVa5=-NHcudKGLfhne-LmUsFM==ixzk{D1@4LL=uK2u>f2Q!rV$d&@O&3X%|9z+Rk zzdxtMZL6*UH)-FuX!2w1vobB2P`wa!HvpxaeG56BTAtvpa5fTc43`T}m(3VWcSVkH zIa41z?l$Z_H2jL$pgG~@Asjs^WUOb2p@J*qavz9ZyKM5iAT}FSHqhv`&mKc{F zcb6K-bXEIXlrE`@av=JwzoDJ8Cm1G5I-8|OEGe29(!&v z2x=EQ(@#?&Mcp4-V_Y>@>7=b~^2tFxBirV%E}W*!O`vqPl9!SMg#l}<29#N+5L}Pv z&q0laDu&%_Or0JfI55wSc9Ogu{x9fZy4q0u#~0_0dEkRKPZD&=VZ`5* zPoxpM=shUJA^8*XP6f+npLt|@t`Cq>C0+cLV>(eSfq%^78LnD3(UbT@cGjIR88%=)jfP|u zs=3!9PI+1aFl_(k2XQDURFNLh>kMtYY|YA)`yRH^pi0PfAK=uOk8#BSN?;E@Psr6LyY~7 zBY4};;W20(ITKj@1<4*?CfHOpK1&ANR_^gdO6ZMvwh$O2gt4Z;j#r{XzED5SXu)jfLZ$cFn9Rg#(h@mrnlv}WVb9`J35 zlCCohSA3Hrn>u(@2oBE0!w_NpuMSZ%{`}A~h!y^df|ug&3>U~2Qs`q=yf?bFdi>zaGdE1DT*eG#89R2?5Kc6mN4^MERfN;r1+pnXvi$<{JH zF4fE5aKqfgnvhDyq37*psP=XZJyNXVMb0KH1-K8l5RJ}P!wH*frsw@qojZ&iBtvvm z13X8v2&y5J#mT!J z3_FD+SqSW}<40&5?!4L6u&}lh{M+B1@Or*UG0+>4CrEQ!zZ8I#VDkE_pte)fRTXjx zM~Mnr+TfVzc4PQQb9*iTcc`Ie(wvf6WjY0$tvC#SO{BdyLCJ!lY@igC+H6phXRd}H zRpoL71YNCEgzKxmSIP z!L{3h5ga>qxwV9k#Wn{2umt1Qu9wkHDxsdqE5IwQ!bwDyy+x*7y=k`QRP%LPsDA7Eqefl>r64cXB5u8O4P= zz|%LfpK9HU3&l|E50xOphkB5DA_}9^Fn{+h@OYLsmK)~kJ*Paw2!JQ&>=B@XRTmy9 z|GE9}E1iIgDpB(f6aWdU%5@o=T2SjdCbkf{{weQefmX<5?16bbEYoTRht4 zp+TAbz`SmKdSKMCaeUZT!^27u8IbiYSaBQHoFMN!tj)x2fXvIeCDw_fd9Cuc>=T9+ z3|c@CoA=WJ5Jh*s?;DeH#0F*TARHx_rQgPCzMzeZNkaJWuk|e@x}TKK@_sKPldO-L zh9bjbFAYsHKnvoa6?x`hWkkLKxOdsYkf{L4=_-!(8d|?Fs>B)KcncY$$q6683m1yn z;dVdYyg>2bIJtTWCJ~eFYzJZJpqyY1VHPb9s7uwjw5_hR$N5mNH7W_j&*$@gJ^!y8 zWP;iy@AL!5*g7WSMnH8QwuN(%12#6l33(CYZJcVRt#ilR=w{!1>n+$bGpOy&F%k#Q zM3~$Iv-U=d8a}786=p`(Xkd};mfG@EHyA(HAgM!5WwD`0$62D~x%AGft&8Y@7{M5_ z5nxfg2jA|opZlXqVRVt;frhmZ(*g{E_QVHktVpTyQ$VI0&iF2cBaIB^JczyA0EygC zVfi;*UnPSl23z>mvF^UddQX7$MC6~M_!m~(c^@<(xwAZqY3;RDHrIinzKT<9Y3q?> zr1v>^C+yopMyk9A#amwJ<3srCc|gFvM#4aflFAryhh6rGF&o740W7sE{v*J^Y!X55 zTWJ^~fI%YTQt`#c;*j$CLvhd6-r?iCMG@+YOdmgp@jd9Y_*tvT?yCHm2^h?-mvFu_ zj7vZxX&E9)I?-J~j6>q9W3`Cig=FbXOLpm*+>`WJ;QsC1`;JvkGJK%jex0hR0X(cn zI7hpL|AH82t$G#{P1Z*t)HJrX9cc5YWrL}8N2j#u=X9jPn3i@nH9X9N#^ z%ks|{y+Hx#v9xJ1>h0K2UI%hq-B*~$esB0RJm+f%w14cn3xAAX1Ho}K9QA}P(zDJU zeICo#oZykzLcH>J-Z~cyCOf7_?Tt4FiXy8m&GN;|(gn~3%Kv_U!V_NTz5xY`tIB*2 z4PA@L@>2!X4sx9mTOL1~%IE9_$H+mMu^NyUTKhetJqK-I`UD7OU#k2P=A+Z|uNUic zV6yni2TPQ+>9-OzwRcnNR6mDm#AH`Emt9-x+A$aP7EG=G+uGRmg9>~CfhyE$XHFyD zi^Eb5y*Jr7EP@|Xk8LY(n1?xz?Cf@y&#jy)kyGkzz!$0s>1Y#4Yp@o|Y z-PL<#fd_z-YeYlhInfnmsJ>WO zgmse}OI4Z`&@~nKskdT+ZH++#>lSd6U#Xq*oq4T0%z!edC3$5a3#F@$gP;VVUY40z zU#}wwKhC@YsGs_6gilrwaNcrlx%OdnyrA+^cF~B zIVBkaz8}#e<`lFDnQglM0K*ba(Unl{<&;4e^yLiqaPhDYE^;Qb?zAldj>BSHRd=y5-ph8+uBd8ebv$ z@!kzi9wRefPN=SPu-xX+YYZx-B&+Xe2K zfN@YF1vT>Mo%*lTDQivvG7W)#CJAN;n>3Tp4X?uzY={tk%cuh>D( z2A_Ua=nmVPeS-XLVcky^W)xT8XR-F!xOJiC^Ordy$Z&ARE(4_4RHk!}HRgw`e4|$U!U#Ggdq` zP$8!3(?D345gxZ){70<{2UwR!O_X&|jU=f+8pZ@dT79F>J1VZArvd=w!MTM9(=pYy zz2z4Wa)m#MTt)@ieP74x$6lc<-IqDYJwJ{0N~cm}CUOKX_XM0c|ph^O+309&0r zi{qhgpyc6zZ0o}lzVp&VQ%{dCq2YWfOpc=)~}AqckQb z0!a>)g0K8~XeApZf5?n>Na?JhZ6b0(WddByvf}oQLuT;BKs9tljI&at(*ulKHU9HQhjnuSjA*lq}Zh23I2w;eU zNV>(In5M3z`!#xa>)_>or}XWHq1Wy#37w5`^_(~Q^IC^Vuy;-B3g)rVb63T!4Mzin zqahdKie(3Gd|?6ws?#(rUc(|Os3BGpX`PTP?twk~IS>C=5-Dc(jZ2x3Yd&3@^MhBs z68#+#4muy(k5b3)Ks$y4X1SZdQLa9Qd5TV>JP~VrM=p_C5!dBhgNuIvM}`Bc!yx?e zmy>NOgz6M4!gorpQMPFZ@tz$=6xE|DL93y_NmCCGvbn5HqMFp8HoIudK{09(zK<{r z!0y7LQq72n{8rm!Vpk45CY=>+>`{c9QOLApwQ`96gW)CN#^b>wP`*AB@2 zDohIw)&Taf5#dE^tfL*#Hfu?nSdWYAPo=}%!ml^TA&U6G_3c9xGM)dS$lWwql+f{O zXRLxzNjcW-r3@RW0Ovf_v%RO#Wp#3kfFlLX9Lng)(0FYcQVs%6j=lOb>ET*;+}`FV zDjvNG6MH@cYU@bSf!I58$*1%Q@vn9fH`{;#Y(!xFwM7 z&lnmMvT5@UP_KEGvA?!GxRL8Ug~e!Kzxo}RYk@hl5N!#wAK&N?w6Um13@XGUH~;_u E0LVS_GXMYp literal 0 HcmV?d00001 diff --git a/modules/crucible-actor-sheet.js b/modules/crucible-actor-sheet.js index ab699c2..42f7a67 100644 --- a/modules/crucible-actor-sheet.js +++ b/modules/crucible-actor-sheet.js @@ -45,6 +45,8 @@ export class CrucibleActorSheet extends ActorSheet { spells: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getLore())), equipments: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquipmentsOnly()) ), equippedWeapons: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquippedWeapons()) ), + equippedArmor: this.actor.getEquippedArmor(), + equippedShield: this.actor.getEquippedShield(), feats: duplicate(this.actor.getFeats()), subActors: duplicate(this.actor.getSubActors()), race: duplicate(this.actor.getRace()), @@ -150,6 +152,15 @@ export class CrucibleActorSheet extends ActorSheet { const skillId = li.data("item-id") this.actor.rollWeapon(skillId) }); + html.find('.roll-armor-die').click((event) => { + //TODO + ui.notifications.warn("Not implemented") + }); + html.find('.roll-shield-die').click((event) => { + //TODO + ui.notifications.warn("Not implemented") + }); + html.find('.roll-save').click((event) => { const saveKey = $(event.currentTarget).data("save-key") this.actor.rollSave(saveKey) diff --git a/modules/crucible-actor.js b/modules/crucible-actor.js index 165a0d8..48a0b09 100644 --- a/modules/crucible-actor.js +++ b/modules/crucible-actor.js @@ -62,23 +62,23 @@ export class CrucibleActor extends Actor { } /* -------------------------------------------- */ - computeHitPoints( ) { + computeHitPoints() { let hp = duplicate(this.data.data.secondary.hp) let max = (this.data.data.abilities.str.value + this.data.data.abilities.con.value) * 6 - if ( max != hp.max || hp.value > max) { + if (max != hp.max || hp.value > max) { hp.max = max hp.value = max // Init case - this.update({ 'data.secondary.hp': hp}) + this.update({ 'data.secondary.hp': hp }) } } /* -------------------------------------------- */ - computeEffortPoints( ) { + computeEffortPoints() { let effort = duplicate(this.data.data.secondary.effort) let max = (this.data.data.abilities.con.value + this.data.data.abilities.int.value) * 6 - if ( max != effort.max || effort.value > max) { + if (max != effort.max || effort.value > max) { effort.max = max effort.value = max // Init case - this.update({ 'data.secondary.effort': effort}) + this.update({ 'data.secondary.effort': effort }) } } @@ -146,12 +146,27 @@ export class CrucibleActor extends Actor { CrucibleUtility.sortArrayObjectsByName(comp) return comp; } + getEquippedArmor() { + let comp = this.data.items.find(item => item.type == 'armor' && item.data.data.equipped) + if (comp) { + return duplicate(comp) + } + return undefined + } /* -------------------------------------------- */ getShields() { let comp = duplicate(this.data.items.filter(item => item.type == 'shield') || []); CrucibleUtility.sortArrayObjectsByName(comp) return comp; } + getEquippedShield() { + let comp = this.data.items.find(item => item.type == 'shield' && item.data.data.equipped) + if (comp) { + return duplicate(comp) + } + return undefined + } + /* -------------------------------------------- */ getRace() { let race = this.data.items.filter(item => item.type == 'race') return race[0] ?? []; @@ -205,8 +220,22 @@ export class CrucibleActor extends Actor { /* -------------------------------------------- */ async equipItem(itemId) { - let item = this.data.items.find(item => item.id == itemId); + let item = this.data.items.find(item => item.id == itemId) if (item && item.data.data) { + if (item.type == "armor") { + let armor = this.data.items.find(item => item.id != itemId && item.type == "armor" && item.data.data.equipped) + if (armor) { + ui.notifications.warn("You already have an armor equipped!") + return + } + } + if (item.type == "shield") { + let shield = this.data.items.find(item => item.id != itemId && item.type == "shield" && item.data.data.equipped) + if (shield) { + ui.notifications.warn("You already have a shield equipped!") + return + } + } let update = { _id: item.id, "data.equipped": !item.data.data.equipped }; await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity } @@ -236,15 +265,18 @@ export class CrucibleActor extends Actor { getSaveRoll() { return { reflex: { - "label": "Reflex", + "label": "Reflex Save", + "img": "systems/fvtt-crucible-rpg/images/icons/saves/reflex_save.webp", "value": this.data.data.abilities.agi.value + this.data.data.abilities.wit.value }, fortitude: { - "label": "Fortitude", + "label": "Fortitude Save", + "img": "systems/fvtt-crucible-rpg/images/icons/saves/fortitude_save.webp", "value": this.data.data.abilities.str.value + this.data.data.abilities.con.value }, willpower: { - "label": "Willpower", + "label": "Willpower Save", + "img": "systems/fvtt-crucible-rpg/images/icons/saves/will_save.webp", "value": this.data.data.abilities.int.value + this.data.data.abilities.cha.value } } @@ -521,7 +553,7 @@ export class CrucibleActor extends Actor { let weapon = this.data.items.get(weaponId) if (weapon) { weapon = duplicate(weapon) - let skill = this.data.items.find( item => item.name.toLowerCase() == weapon.data.skill.toLowerCase()) + let skill = this.data.items.find(item => item.name.toLowerCase() == weapon.data.skill.toLowerCase()) if (skill) { skill = duplicate(skill) CrucibleUtility.updateSkill(skill) @@ -539,7 +571,7 @@ export class CrucibleActor extends Actor { } } /* -------------------------------------------- */ - rollSave( saveKey) { + rollSave(saveKey) { let saves = this.getSaveRoll() let save = saves[saveKey] if (save) { diff --git a/modules/crucible-item-sheet.js b/modules/crucible-item-sheet.js index 09e35f7..5b8c9fa 100644 --- a/modules/crucible-item-sheet.js +++ b/modules/crucible-item-sheet.js @@ -64,6 +64,7 @@ export class CrucibleItemSheet extends ItemSheet { editable: this.isEditable, cssClass: this.isEditable ? "editable" : "locked", weaponSkills: CrucibleUtility.getWeaponSkills(), + shieldSkills: CrucibleUtility.getShieldSkills(), data: itemData, limited: this.object.limited, options: this.options, diff --git a/modules/crucible-utility.js b/modules/crucible-utility.js index 4283254..3c4d391 100644 --- a/modules/crucible-utility.js +++ b/modules/crucible-utility.js @@ -55,12 +55,17 @@ export class CrucibleUtility { static getWeaponSkills() { return duplicate(this.weaponSkills) } - + /*-------------------------------------------- */ + static getShieldSkills() { + return duplicate(this.shieldSkills) + } + /* -------------------------------------------- */ static async ready() { const skills = await CrucibleUtility.loadCompendium("fvtt-crucible-rpg.skills") this.skills = skills.map(i => i.toObject()) this.weaponSkills = duplicate( this.skills.filter( item => item.data.isweaponskill)) + this.shieldSkills = duplicate( this.skills.filter( item => item.data.isshieldskill)) } /* -------------------------------------------- */ diff --git a/packs/action-tokens.db b/packs/action-tokens.db old mode 100755 new mode 100644 diff --git a/packs/armor.db b/packs/armor.db old mode 100755 new mode 100644 diff --git a/packs/classpowers.db b/packs/classpowers.db old mode 100755 new mode 100644 diff --git a/packs/conditions.db b/packs/conditions.db old mode 100755 new mode 100644 diff --git a/packs/equipment.db b/packs/equipment.db old mode 100755 new mode 100644 diff --git a/packs/feats.db b/packs/feats.db old mode 100755 new mode 100644 diff --git a/packs/lore-air.db b/packs/lore-air.db old mode 100755 new mode 100644 diff --git a/packs/lore-earth.db b/packs/lore-earth.db old mode 100755 new mode 100644 diff --git a/packs/lore-fire.db b/packs/lore-fire.db old mode 100755 new mode 100644 diff --git a/packs/lore-shadow.db b/packs/lore-shadow.db old mode 100755 new mode 100644 diff --git a/packs/lore-water.db b/packs/lore-water.db old mode 100755 new mode 100644 diff --git a/packs/monster-powers.db b/packs/monster-powers.db old mode 100755 new mode 100644 diff --git a/packs/poisons.db b/packs/poisons.db old mode 100755 new mode 100644 diff --git a/packs/shields.db b/packs/shields.db old mode 100755 new mode 100644 diff --git a/packs/skills.db b/packs/skills.db old mode 100755 new mode 100644 index 4b98de1..3fbc232 --- a/packs/skills.db +++ b/packs/skills.db @@ -13,7 +13,7 @@ {"_id":"Y4o571K5DQseDaGT","name":"Swim","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Swim.webp","data":{"ability":"str","armorpenalty":true,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"

Kick you feet and don't forget to breathe!

"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} {"_id":"ZfIwXZwaBKaVoYbG","name":"Athletics","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Athletics.png","data":{"ability":"agi","armorpenalty":true,"bonusdice":"none","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"

Your ability to run, jump, and climb; a measure of your physical coordination.

"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} {"_id":"cc74gHSQK4hRR8Vj","name":"Brawn","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Brawn.png","data":{"ability":"str","armorpenalty":false,"bonusdice":"none","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"

A combination of your Size and Strength.

"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"fJjXMpUILcN983XV","name":"Axe","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/icon_skill.webp","data":{"ability":"agi","armorpenalty":false,"isproficient":true,"isweaponskill":true,"isfeatdie":false,"islore":false,"skilltype":"complex","isinnate":false,"bonusdice":"none","background":0,"basic":0,"class":0,"exp":0,"explevel":0,"description":"","level":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{"core":{"sourceId":"Item.Cnw8keaxD1SI3vun"}}} +{"_id":"fJjXMpUILcN983XV","name":"Axe","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/icon_skill.webp","data":{"ability":"agi","armorpenalty":false,"isproficient":true,"isweaponskill":true,"isshiedskill":false,"isfeatdie":false,"issl2":false,"islore":false,"skilltype":"complex","isinnate":false,"bonusdice":"none","background":0,"basic":0,"class":0,"exp":0,"explevel":0,"description":"","level":2,"isshieldskill":true},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{"core":{"sourceId":"Item.Cnw8keaxD1SI3vun"}}} {"_id":"fegRI4Vsyr0Us1Ga","name":"Research","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Research.webp","data":{"ability":"int","armorpenalty":false,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"

Give me a moment to look that up....

"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} {"_id":"i8eeE2I9vv2kHwdJ","name":"Shadow Lore","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Shadow%20Lore.webp","data":{"ability":"int","armorpenalty":true,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"

You can cast Shadow Lore spells.

"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} {"_id":"lfB80K2lFSzQH442","name":"Intuition","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Intuition.png","data":{"ability":"wit","armorpenalty":false,"bonusdice":"none","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"

I see what you did there.  I think you're up to something....

"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} @@ -23,3 +23,5 @@ {"_id":"s2AAQviLttcHul3X","name":"Charm","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Charm.png","data":{"ability":"cha","armorpenalty":false,"bonusdice":"none","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"

Getting someone to do what you want because they want to do it.

"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} {"_id":"xlYUHAUSfQrsjQoi","name":"Survival","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Survival.webp","data":{"ability":"wit","armorpenalty":false,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"

Help me set this snare and we'll eat like kings in the morning.

"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} {"_id":"yAhtkgqf7pKyjJTA","name":"Poison Use","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Poison%20Use.webp","data":{"ability":"dex","armorpenalty":false,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"

Let me apply this to my blade.

"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"fJjXMpUILcN983XV","name":"Axe","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/icon_skill.webp","data":{"ability":"agi","armorpenalty":false,"isproficient":true,"isweaponskill":true,"isshieldskill":false,"isfeatdie":false,"issl2":false,"islore":false,"skilltype":"complex","isinnate":false,"bonusdice":"none","background":0,"basic":0,"class":0,"exp":0,"explevel":0,"description":"","isshiedskill":false,"level":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{"core":{"sourceId":"Item.Cnw8keaxD1SI3vun"}}} +{"_id":"fJjXMpUILcN983XV","name":"Axe","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/icon_skill.webp","data":{"ability":"agi","armorpenalty":false,"isproficient":true,"isweaponskill":true,"isshieldskill":true,"isfeatdie":false,"issl2":false,"islore":false,"skilltype":"complex","isinnate":false,"bonusdice":"none","background":0,"basic":0,"class":0,"exp":0,"explevel":0,"description":"","isshiedskill":false,"level":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{"core":{"sourceId":"Item.Cnw8keaxD1SI3vun"}}} diff --git a/packs/trickstraps.db b/packs/trickstraps.db old mode 100755 new mode 100644 diff --git a/packs/weapons.db b/packs/weapons.db old mode 100755 new mode 100644 diff --git a/styles/simple.css b/styles/simple.css index 21a1a95..494a9ff 100644 --- a/styles/simple.css +++ b/styles/simple.css @@ -581,7 +581,9 @@ ul, li { .sheet-competence-img { width: 24px; + max-width: 24px; height: 24px; + max-height: 24px; flex-grow: 0; margin-right: 0.25rem; } diff --git a/system.json b/system.json index 268565f..e173e21 100644 --- a/system.json +++ b/system.json @@ -208,11 +208,11 @@ "styles": [ "styles/simple.css" ], - "templateVersion": 12, + "templateVersion": 14, "title": "Crucible RPG", "manifest": "https://www.uberwald.me/gitea/public/fvtt-crucible-rpg/raw/master/system.json", "download": "https://www.uberwald.me/gitea/public/fvtt-crucible-rpg/archive/fvtt-crucible-rpg-v0.1.20.zip", "url": "https://www.uberwald.me/gitea/public/fvtt-crucible-rpg", - "version": "0.1.20", + "version": "0.1.22", "background" : "./images/ui/crucible_welcome_page.webp" } diff --git a/template.json b/template.json index 21ce799..e340786 100644 --- a/template.json +++ b/template.json @@ -4,6 +4,7 @@ "templates": { "biodata": { "biodata": { + "class": "", "age": 0, "size": "", "weight": "", @@ -121,6 +122,7 @@ "armorpenalty": false, "isproficient": false, "isweaponskill": false, + "isshieldskill": false, "isfeatdie": false, "issl2": false, "islore": false, @@ -147,6 +149,7 @@ }, "shield": { "shielddie": "", + "skill": "", "equipped": false, "cost": 0, "description":"" diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html index ff010c9..1c928c5 100644 --- a/templates/actor-sheet.html +++ b/templates/actor-sheet.html @@ -17,6 +17,22 @@ {{/if}} {{/each}} + +
  • + +

    Class

    +
    + +
  • +
    @@ -26,6 +42,24 @@ {{> systems/fvtt-crucible-rpg/templates/partial-actor-ability-block.html ability=ability key=key}} {{/if}} {{/each}} + + {{#if equippedArmor}} +
  • + + +

    {{equippedArmor.name}}

    +
    +
  • + {{/if}} + {{#if equippedShield}} +
  • + + +

    {{ability-margin.name}}

    +
    +
  • + {{/if}} +
    diff --git a/templates/chat-generic-result.html b/templates/chat-generic-result.html index 17a0077..3d7bd96 100644 --- a/templates/chat-generic-result.html +++ b/templates/chat-generic-result.html @@ -59,14 +59,14 @@ {{/each}}) {{/if}} - {{#if (eq advantage "disadvantage1")}} + {{#if (eq disadvantage "disadvantage1")}}
  • 1 Disadvantage Die !  ({{#each roll.terms.10.results as |die idx|}} {{die.result}}  {{/each}})
  • {{/if}} - {{#if (eq advantage "disadvantage2")}} + {{#if (eq disadvantage "disadvantage2")}}
  • 2 Disadvantage Dice !  ({{#each roll.terms.10.results as |die idx|}} {{die.result}}  @@ -101,7 +101,7 @@ {{/if}} {{#if hasFeatDie}} -
  • Feature Die : d10 +
  • Feat Die : d10  ({{#each roll.terms.4.results as |die idx|}} {{die.result}}  {{/each}}) diff --git a/templates/item-shield-sheet.html b/templates/item-shield-sheet.html index 34a1076..e6a2f7f 100644 --- a/templates/item-shield-sheet.html +++ b/templates/item-shield-sheet.html @@ -28,6 +28,17 @@
  • +
  • + +
  • + +
  • diff --git a/templates/item-skill-sheet.html b/templates/item-skill-sheet.html index 8ba301d..9538827 100644 --- a/templates/item-skill-sheet.html +++ b/templates/item-skill-sheet.html @@ -59,6 +59,10 @@ +
  • + +
  • +