From ac076efc5044d14a7f86c0108c2a50257d08bfd0 Mon Sep 17 00:00:00 2001 From: Jaysyn904 <68194417+Jaysyn904@users.noreply.github.com> Date: Sun, 20 Jul 2025 12:36:58 -0400 Subject: [PATCH] 2025/07/20 Afternoon Update Updated PEPS AI. --- _module/ncs/0c_assoc_actions.ncs | Bin 24458 -> 24591 bytes _module/ncs/0e_c2_7_ondeath.ncs | Bin 2447 -> 2509 bytes _module/ncs/0e_ch_7_ondeath.ncs | Bin 4642 -> 4864 bytes _module/ncs/0e_gui_events.ncs | Bin 74130 -> 74263 bytes _module/ncs/0e_id_events.ncs | Bin 0 -> 18654 bytes _module/ncs/0e_nui.ncs | Bin 478671 -> 481938 bytes _module/ncs/0e_nui_dm.ncs | Bin 111472 -> 111472 bytes _module/ncs/0e_onclientload.ncs | Bin 75172 -> 75734 bytes _module/ncs/0e_player_target.ncs | Bin 198646 -> 199332 bytes _module/ncs/ai_a_default.ncs | Bin 149397 -> 152151 bytes _module/ncs/ai_a_druid.ncs | Bin 138260 -> 138292 bytes _module/ncs/ai_default.ncs | Bin 151540 -> 151540 bytes _module/ncs/ai_druid.ncs | Bin 136355 -> 136355 bytes _module/ncs/hcrh_spawnin.ncs | Bin 153102 -> 147640 bytes _module/ncs/nw_c2_bossdie.ncs | Bin 148638 -> 143176 bytes _module/ncs/nw_c2_default1.ncs | Bin 195235 -> 194206 bytes _module/ncs/nw_c2_default2.ncs | Bin 126852 -> 58435 bytes _module/ncs/nw_c2_default3.ncs | Bin 20674 -> 20676 bytes _module/ncs/nw_c2_default4.ncs | Bin 115087 -> 115089 bytes _module/ncs/nw_c2_default5.ncs | Bin 19000 -> 19002 bytes _module/ncs/nw_c2_default6.ncs | Bin 32156 -> 32158 bytes _module/ncs/nw_c2_default8.ncs | Bin 323 -> 339 bytes _module/ncs/nw_c2_defaultb.ncs | Bin 68287 -> 68289 bytes _module/ncs/nw_c2_defaulte.ncs | Bin 52629 -> 52661 bytes _module/ncs/nw_ch_ac1.ncs | Bin 200825 -> 201387 bytes _module/ncs/nw_ch_ac4.ncs | Bin 186195 -> 186328 bytes _module/ncs/nw_ch_aca.ncs | Bin 90766 -> 91340 bytes _module/ncs/nw_ch_ace.ncs | Bin 105568 -> 105701 bytes _module/ncs/pe_crafting.ncs | Bin 67260 -> 67325 bytes _module/ncs/pe_henchmen.ncs | Bin 73382 -> 74132 bytes _module/ncs/pe_test.ncs | Bin 6478 -> 0 bytes _module/ncs/pi_crafting.ncs | Bin 35301 -> 35353 bytes _module/ncs/pi_debug.ncs | Bin 15880 -> 15880 bytes _module/ncs/pi_forcerest.ncs | Bin 91013 -> 91587 bytes _module/ncs/pi_test.ncs | Bin 8555 -> 0 bytes _module/ncs/pri_barmaid_spwn.ncs | Bin 154306 -> 148844 bytes _module/ncs/x0_ch_hen_block.ncs | Bin 0 -> 47 bytes _module/ncs/x0_ch_hen_combat.ncs | Bin 0 -> 506 bytes _module/ncs/x0_ch_hen_conv.ncs | Bin 0 -> 258495 bytes _module/ncs/x0_ch_hen_rest.ncs | Bin 0 -> 47 bytes _module/ncs/xx_pc_1_hb.ncs | Bin 119587 -> 119720 bytes _module/ncs/xx_pc_4_convers.ncs | Bin 185407 -> 185540 bytes _module/ncs/xx_pc_e_blocked.ncs | Bin 105847 -> 105980 bytes _module/ncs/zep_gob_worg_spw.ncs | Bin 153917 -> 148455 bytes _module/ncs/zep_shrieker_spw.ncs | Bin 153917 -> 148455 bytes _module/nss/0e_c2_7_ondeath.nss | 6 +- _module/nss/0e_ch_7_ondeath.nss | 7 +- _module/nss/0e_id_events.nss | 277 ++++++++++++++++ _module/nss/0e_nui.nss | 61 ++-- _module/nss/0i_constants.nss | 2 +- _module/nss/0i_main.nss | 57 ++-- _module/nss/0i_menus.nss | 546 +++++++++++++++++++------------ _module/nss/0i_spells.nss | 27 +- _module/nss/0i_talents.nss | 2 + _module/nss/0i_time.nss | 66 +++- _module/nss/ai_a_default.nss | 18 +- _module/nss/ai_a_druid.nss | 6 +- _module/nss/ai_default.nss | 9 +- _module/nss/ai_druid.nss | 4 +- _module/nss/nw_c2_default1.nss | 8 +- _module/nss/nw_c2_default2.nss | 54 +-- _module/nss/nw_c2_default3.nss | 2 +- _module/nss/nw_c2_default4.nss | 2 +- _module/nss/nw_c2_default5.nss | 2 +- _module/nss/nw_c2_default6.nss | 4 +- _module/nss/nw_c2_default8.nss | 8 +- _module/nss/nw_c2_defaultb.nss | 2 +- _module/nss/nw_c2_defaulte.nss | 1 + _module/nss/pe_crafting.nss | 2 + _module/nss/pe_test.nss | 227 ------------- _module/nss/pi_crafting.nss | 3 +- _module/nss/pi_test.nss | 103 ------ _module/nss/pinc_henchmen.nss | 22 +- _module/nss/x0_ch_hen_block.nss | 14 + _module/nss/x0_ch_hen_combat.nss | 36 ++ _module/nss/x0_ch_hen_conv.nss | 91 ++++++ _module/nss/x0_ch_hen_rest.nss | 15 + 77 files changed, 981 insertions(+), 703 deletions(-) create mode 100644 _module/ncs/0e_id_events.ncs delete mode 100644 _module/ncs/pe_test.ncs delete mode 100644 _module/ncs/pi_test.ncs create mode 100644 _module/ncs/x0_ch_hen_block.ncs create mode 100644 _module/ncs/x0_ch_hen_combat.ncs create mode 100644 _module/ncs/x0_ch_hen_conv.ncs create mode 100644 _module/ncs/x0_ch_hen_rest.ncs create mode 100644 _module/nss/0e_id_events.nss delete mode 100644 _module/nss/pe_test.nss delete mode 100644 _module/nss/pi_test.nss create mode 100644 _module/nss/x0_ch_hen_block.nss create mode 100644 _module/nss/x0_ch_hen_combat.nss create mode 100644 _module/nss/x0_ch_hen_conv.nss create mode 100644 _module/nss/x0_ch_hen_rest.nss diff --git a/_module/ncs/0c_assoc_actions.ncs b/_module/ncs/0c_assoc_actions.ncs index bd9e1de70a1597c5e44404600b9bda297fb147a3..cdbaad078d084997063732c707f1cebb4e39bd3d 100644 GIT binary patch delta 1380 zcmaJ>O=uHQ5Pt7%cAI8*6Vn7EtxYzGEn+eLA+=3STcb_XT8eGOO2GzeF;J_B;;FO; z|L~yHId~B9prCjVwKp&7K@m|Z9y}=&ky51994hn>h_kcVnrQLzc4y|BnQy*%yH}s{ z>o2(8mFzJNZHaB(#n_-{QvbmVlll4${(wVbjB)ccn8XW(!W?r1(X}Q`R<39*K_?#+ zk>u1P-X}$>Mnec;^_0x;oM2_i{tVQ~hVZvSO5P_LssQ9p{t9N~R=x;^lHzyagpw9b z{qR)Dik4oet;q84aJgbg#4o@?#W4{N!9iz&e}GBnZvG2CIg|VeR97a%9xoiJY~!Vh z;y2-^Y6$%tc(t8EjY78;6#8m7t%Z^M4Xv3!gZJo42VntSdGP3Qk%~j79^!XkL^nig z46f;o$nCWr6sbCxHGL8|-OZ7XVnV>MdDG}|$=vNVUR7{_CP`=jOLNS1a>oOKdT zpQFr`=~5~ZvK2-6dNWl7HZp14)DF4RERLcseMPmtk-$Y|Q0)?B(4v+Iu~JEya+U-@ zAOTz}>XaM*N2vF9U3(-gLT|RfA-k;oq~$GZ*l&YLm!%TQwmNt-{)jqUC@c>~JQ>Y^ zzX)3{R7#;*^L9ge{%`PF^X^ub6nG5N8v=0H>+>Lq690Lat_g(ek&kmYb22-U&73Kh zkXGCZ6Af!UL#Iw=M>A)S4_OGvBz;}xH7oxnW@xx3sievB_dtorn_@XCU1j0uT%0=L b-|G?c6A(*8p=Gx=^)@x1Vf0%gYn`= z2ujKv44M#+#Df}}aPWX8UWieN#&E*KgNbNFOQHz}lDgeeLkU+e`*!}jGxM97ePb_S z{E_wl$f46T?jHp3v!8=IgCodsdqJc_3Zbm+zh zYz^T;K_?5g*VI8s2N;fa>|6=20A0Ja7T;DK+56ImHb{ z_)F2KnnIg;fSM-ps9HwV1P-bm#y+kFp&H*ZDK>#iOuCF#b3KhtW1HCxPV6&lG`fO! z%{7KlHZwkrY&8)QeOQ|5m=^<$B_cDgq0tib9-P^LM~J?D2vINgSUf=RrbVZRS8&!6 zXKk`sUsG`cKUv?f&O9pI=M%6N<@wv>gtHZax;_&sYXvjvC58!Ql7~w zX!yOtk7>Kh`kRRB0(`||u42?3MbUiyNgzApRU-1ai;BkSD_Km#&~ShMz{MfRyr6uy zE7?OqtR+_qv&pA<1g7%um$g%n2=oc~ z-e=dDl)IvO`Ht~(Za25sbLU?M$XYW6O1Yekyr0WIP%GL7iwNa*7t2y1Wa`T`i|uue zMsYc0|Hmd<*Vyk diff --git a/_module/ncs/0e_c2_7_ondeath.ncs b/_module/ncs/0e_c2_7_ondeath.ncs index 0383e463ec636366751d3de3b7fe25df8229cdc6..c5ae737dc84e9ec6243f86ec0326059b6d1e4c6f 100644 GIT binary patch delta 137 zcmeAdJ}b=Y=NzmMW~gW2#K6FLb|P<&0;3cY8w)c70|OH?o0cfCu0|Uck2Syb} Kw#})GS{wjm=o@bU delta 79 zcmX>r+%L@Q=NzmMW~gW2#K6GWKasabf#D7l8w)c70|O&7rsKW@6fL>Y5^67 z10$|LWdPrbkVs}vPtP&{eWC~dz;n62)EB9DLD}B9IRNhE3EB&rkR;H|Vh*)g#rJq_ ze&ZB=GeuFyA7)X!-ch9rSQD;~xlv?Dly0uP+H5W{Q^%@=rvj~CGUZx?8$-1{4QkfC zd?zHgT$*c99l?Mz!5O#5G$+V3k!b{j*~>UQY=0kWL~)TTgx&xrI>Z%4r8JGeTvfZI zKYCVoZVpvBBo3}A-KnC3XXB33(iQ-J=?cESBw?{UMVL#1X zUn+|oQ^%573i2(wJc?--OEq?vsCAEw_b3GKn9OR9spCcd*UhMXUD*`Dr^oK)^WVl) z3~s;93-<6_riLUhlO0ehd=~M50f*!7)#qor G6WjppZaY2z delta 677 zcmZorTcpD4=NzmMW~gW2#K0h=G?BMQf#Dz%8w)c70|OH?k*f!LE6#ZAGAJ}|I==`Rc{tPBimnPfq-Y%u*Q%s_K~NHc&;lLe9SlNU42 zXN;Qc%%s8SG&zUKfH83LT&8q&=6;wWkai|kpkZu|p79}$?l4<`rkgTN-p42|3}kUD zgIvU{z{CuZo*c`pG+B*Jnjh#4B!iw$4q($n6I(xd1B;jtPaq6z43CT3_5GER=+l$PfafN0$Y*7^e)R!^V- z%Q%^zQ-Tx7gUC)6U=cTYffAl87`c_%AV!#g6}^FIWqtt+1O`SR5yL2=Jb5RlE~CTb zFiu5THfUUJ1IHXASP#sC50iO0rKn_Gv;*8Zs4;a1oDM9R!LjfGH8p^P4Cn)}+z+sv U5G1yc$R7$5V8q9b0R(@G*6foLR+piP@F zcUszbPTY*Gd6opCRn^$Cpi5L7h+hzqXPdC6*VO}bP9+Qd0y#ke76B+GTXFj)OJtKE z1vE4QEEEykCcOJ7e26~E$tyYpiT4%DXAc-ytI+9PTFxu%S9t^LxEZa^)?oMS$<=g; zLGW`yP_xg5FJu@N2x);PlSIW1UsP+Kw8i~0adl@Hyq8i+tbGMu#%%H~q+q+#gPXt( zfLp-(MJ7vg*Qo@+O3OIAH1>IAlOz7OW9H{S9XD`6MjY^~bUamMX3r-(o~gRyEj|qR z4-^Io*i~UAuYx&|H^~?RAnI^{ZH$)JHS-Epgh_YV7XwGBR>dntgGU_0uJ`} z!cu1>Wa1+4GfISJUliW)+F5L*3nL&rg?R|QUe~#)p<)Qp^+}@4HPdYKrE#Yau9S_sDVHU%E2+KqA{jnqeBxyQ`-+j7; z{87bL>}ZVEV$Nq*z=3ynBx26zM_~ky=K3eXGPPDd?biXhS;$u$#afgK4v}9ggC#n= zRWO3w_)A4&`nG?dKVNhgUWS1@dS`n&ys0AOtJ`fruB{6aL}2ocI&yUrn`V%ot5p>5 z#J{thT)Dx4M|YhkKi%Ttq1{s;?lCTXTf98(%TxdXGrmcb3yLHlmoMSYJ&RyIMt?=g zrAD?8gOz)SgU`3Oh+I4yoDU<7h=u#jXxbM?F0|rHrQ>kfzWZQSh}dpuG4Jbowl{pX zekc!B@%_klK0{y2zmR)*G<>_#FBCx5+@NbFkw$V=2U(${8?$jlL-C(8z2-r-Ml@BxcmGtU&m2q7m zt{r5eZUQMJ`@!Ry>=U$+fHi#8FC1i0JSLG~fg-DAZy0kWh!S*_o;4Muvfl zWYs8|cyB~l+3GN`YS@KlJBUt?h91yEbmWpBxyyr!^3ryOHRHXFVf3~h23eMKo#0;} zOyQ8NG}QpZj7gyuGFK{2pMtkS3@`nl%kbj&L(xl*g&H14Gb3RTc(7&d)AW2K3?S}2 zsx`t;m=QD@9<2zwQ@Kx3iI;8SLfzR%E|hplRzQD`ksaw0%JmzJ>_{`VJ^?!usvk#3 fMZtLD_ABtRf+*006MGxo6$`&X_p)3YgoXbL+VLs_ delta 1858 zcmb_dYfzL`7~c2&zTJgz+0|VxvWURCULZgcYG_grFPN58l4%)?&7}R1i-3)|L@vrS zW|PQk9u*BOO%Q{aPgyQG3c5Ou<%mvpQ_)Ea(;>!jCJk#l-}ykd`rH0E`=0ka&-*;* z`mqyo&2iZ@f5w97g~^GNGj$MC(_;Dtqc&HK)$w1f1U{edo=z73*L89fPuA#bq&S#H z@zN6zM7dHtR$rlw(iE(2pkvaLP)xr|Q(&4BFYo(cg0#u5<0T%9QOg-nFY9%N>Cfin zOwSS}2Xs84OGR4xR9FO$f*h)@6phlOVZ06GUSy{`WT((M!SD-3ZkeP;B z%M$0wLD9mtlNU9Xtjfy}M$n^$_GRXk}6a=(grv>f^K5 z0dJOo%|YO?(dYKj#tcy!xxB;Ps>uk}u!LB@|6MjEGZr3F-hcrp->43JU0?K!Q za?>U$H@8$G-VSG7Hn5SKErQ0akv!^W!FVg4l6Ixj)NOA;uQuMXtpo;nasdt0%2c)8 zi#OBgTCJ7xc2r{DY(8Qq^C$z!wU=NoALxY>)U`7o{!o&3B>~=W@|=T`+6}bf#a^oz{AlkyypkpS z#q1lz%gcu-2Fm*EEM6)Q-KY0wLmf5OO;^tBPXVZ+YfTQt(I5kUzl6tDdgj2Z&`<0D z!|z_^iBNjJGn{f8op?Tssv7I@+l7AF@eoeQO*YzgFaj^GqU`2bbpPNT*sfM3b5oBx zqr4ji>aR0WUPlvrNSixD>8eMjiJi-_JBW8<@l+|Ru!CJW*O?D^a<<5MPl_C! z>x`nEN22gTDQhu6h|+T;4qyYhkG-xeJ~|%oIG^A#H+DPewXSKD*%c0Fd2|muv#6pw zlm@!=RMede@3GU7T;WJ}I$-x)<*(!X9CWRs9&ea3+j}t%yvmq?oKg5r0%fe5Xo%uZ zPq~lnK}fLns81K{R8tlA)pnheT|=0OYDswz5WeXS)qx z#)@*aGY%_i*^9w2)8g78xcrt2!Ub}thOi7Hyu#MXV1-@O5^beTm1fo|LkF%&(Z62vfg$1xpcj$xpb}9 zT&`Z{@6z?0T8B#D%Is^mSTcY!NrS&)kCUW=~@ot zH~f7gD>OlB$e<7y`c!~$RBC7KCYWk&@Yh}qel|;PX*NqA(`>E`^oN#a4%^IR4}u{T zeDs@p0$Xf`$ygM^Hku&~epKy6vZH3uo7#mtNp<(ORZ|JDfCc{4;zSGIzT!y!$+5DR vERbv|wEL?S=M1ZjWv48Vg+(!JX%K{Z#*YLHz{qkIHyUohR*xkDi~)ZGV|1ig diff --git a/_module/ncs/0e_id_events.ncs b/_module/ncs/0e_id_events.ncs new file mode 100644 index 0000000000000000000000000000000000000000..259080cae12bdd6979330dcab5a741729dc09143 GIT binary patch literal 18654 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

|~rUFxDK|qQAAbI$aqb zA3K2(I1QIN$5jdg2VfZf1t6DHjWVYWPE1YX+_-r5R6>!^iP(XVm&l;~pepRhQ`cy8 zhP+}c(!kz=IAYkJa)~&YKF_vf4C?>|( z#g=F^iY758Hmp%B{ATyQ2M<5~+W-6e{m=Ow&+*;6J3BKwJ3Bi&yK}j)B4FXZ0LPZ~ z+6H%skBO^mW9YJQw_{xfzrEtESpf6nL)q_aJx@|9IQZEV78c$Nu(7eZxtA}1Ft|CF zn_xV1<-5}&cz0bzkBj=?AgZ?UE(X1kNwuE*kj}$#zg1~J{+n(c8_6dt&)JvU))>GS zs%=?+{#Nnfh3a~?&HPl3|EZrHG*u9VN6|K*Q*`vG=oqnb#YPFVv0;v1@cD)y_6vV% z8_3TaYOu$IZ!DY22iW?9{SGstviz=bI$J}90qm!uvXi#u*b-{k(QBtfdDD#gnugl` z9#6IFq}y6rhaoeW55H^|%)a9_T7<`N8-oMi!Xt?6~}Q^HW5?P=@Ul(AfX=ZMFiJ*7%97SB((U1Od0tZ|>D zXJvShUjm#=<=y?3vr*jD&25jp|8%2Wj?%G~CD7I%pa7s_>87r@)b z&S$qJP8L@Sh8*CDakXJW7|)2S2NTEfALHs8Csq~1Y4GPsLp*u#&~h;0DQ^|uz&K&6 zDA&)UaxcDfXjz!hi{Ff|Z=4V)%XR$Vu$nNcJ?~wiHH@0a4^*fNOTziP3ZKD}Og^mQ z2=KhY?^PTQ)fVy2m6}7E8_(|?s#BL{^K+FtK`J-D#_<-FJ3^|v_KLgt*~*=aDT@RR zR>*S(RyN{a^5uK}eqdwcied8QGu~oQC0N~*KdDj+R=?vhRa?QD8hldKWLSNlU#!|3 zHu~)es&<93eLQ532T$8-dJf_A0()7P-3}!=k`44%JU$^E zHmv506M7go)D(maz4@^uH||=iDXjmQcdymUxLz`#UoOjU)@o{8Z!ZA#l|=zA3(>pq zpV~z8iM1VJ-9|pAb{|+*o4>5x7uH_oDRp|o+9CYMI(=a62p*l-)0mYd8tcyRAvL{u zc4B?Vs>NR=_JGV^dFP}w$Q;8DCG~_%Hy&I!71n&iC)Z7fH7)s{b$h_-2fT5;bXYx| zZ?D%DGRJdPza3c%~q)`Mk#@Geaoz>05qR?{Tosy_w1GK^pB-O!lH zBw8QS_2Ee;ZItnz`{1XRdOmUc*?Vr zd&7d6+^aRcMes4L(_sEj{MXj$Fuy0S-6jR*>-g$6J&p5L3$*%GQfvI%HidcBdB3*3 zVD4ppUi=K^mD;5k=Q;`~)qxLb>w{;ifIUCbt_IB6#0%P`!<>3NrF}ZgzRkaH-vefk z=iwdFV74!x-k}%F+RGnx=w+PMQnZH_lFFctO=0HW{6NR`HKmy>XK8qe#}432c>(OnxEb9PC@t~|cG8=u#; zBK!b6H>DEK``jD8-^&A2Tk})hyy3^6`Gju0;KyP7NotI&Jmt+JySIZg9r)z#{o&iO zgtQ`Qpf?<9L5O3;qw%|SC6N2c`lGLiKyx^{nUME~?@trr=6q->k?Tds8^Q?(LY%-~ zf8h-$n-=Tx#6_gbXW15>SHVZ8&U(m~_bAWO`GRyeeyv9kiE2)h`FP|9e;$;s zvUBonaC#_t4-3*OdZkO(<{jvyX?>xY){I?z&3J!X%}ue{Uv^>7aM*8yyD#cId99v3 z!R?rw4<2jy$(~8z6V2^=wE^EFJhfLx7}uH~=v5acMDcgM$n?JFNxd6D#w9+ZcM^R0 zfuHH!9H#nmpFYjutFydspB9jv&G*w=b~;x`{b$VPjrul%nbCZH-_|heKL5RMYvZiN zLU6X*i*$SOGd{6jBH$jL)2}fs`YnAsYIF9A`?+<1nbTb#b%Ishp4rd%Dkl>QS1eq zekPM6nI*{88%kp7LWIm?2-9qF8PI z_qd9%%9aO?ufi_z_TwvhtuCRznmcCG=K<+&80)#PXP|AarqU}D_=E9XV8B}5Xu=ie zNU80|wW`6BFut?ilP6A`04I0w1v|Vj?zGMz9h$Uma>=;XqtqVvNlA>gbb^Z}esW41xY(2Xe?>ped>H-Y z9^%KvPhajmm44j#Ao{s*l;?<_f!uvs8{-8pA#+_Per$$2|8iP&IR8EWZdzO8`N2|c zcFOXo>D7(ry=6gXSulBebvX9}KRmrHoEySjXS6k*ldA{oBC9iIREM+2`JowY;p|ZE z@^xF|SzkG{U1jy8udBnEAJHY5`C)3f>dNnZ?ZUpnJAR5Ax0|_?johdytj*;;pUrN_SUzUOFi(DAPP*egS^Gkg((}Zdo{;=R z3U%n*-t04eb#7g@0JAPCZkX}28o(RRb79Hyo#!9)M}H@Skl z8e#O|Z_ppwGYhd&JYlH|J0oeOEiKFDidMw;J)}RUKgH2PwIxi>O}{*l40PgO%o2SBKIb@XhK)q(eP=gB#CU6U^>uk5|`} zX4%?fVy42KGXrQlDS;9*Ls&!Yab#u?951CkZ^;Z~dD`O*0^WtkyjeN^Zc8bipJjk% zH+e!*)E=U zD2e-Ra)c(ec==6Vz=(N#?rtyMY(ocVs4oE=%>y?cA|s?VaAIc(ek===;DNqQFR!=lHkSRs?UpvRiJUJV_)QN?OxGCi}NT{GK(3 zEXWM2^oYAl8$7w&o=}#HJu=h)3@)cS;n40(#S;aJC*~dm+a*7!iX+I@c@p(aWVYar zyJ{*%Cp%eAbAd?S)RAt7@FS?_aZBA}vo&K;?X3iPXeOLv{v|(0mhY8N%J@P)U~dpR z&S&mz?AT0Bn|v{CU@_0l4dt+}r_;hHS^QcSGyZmK0H43l5!h9}X5Uh_v{)K04~=}$ z{*C3TX#UkZGbKycsS}biaYFlEWvqc`na;CsX&+mjxyV7@OS|OV$GyRBn|W+|K!uGK z{Qtwjt=L8m*!*>Jz>LpnaLe0GqhcCw8ws zI|%pwWcz6leq6TLkR)5U_Tcd+LupMElQ(p(rHvfhJx5RaGB|yb-#9fBPIkqRsY*FM z?{p<6P_=(jDhDuVvf7Y4pV5njSQgRl=uByfu_c}HdT;p%glr_?% zrHbo1Tpg$SW2~dz509p+dYpHbscbK)Wdxp>tU6<69fQhpFxjYumQ6#4Zk>WOSYjElK`qBF67mB}LNtu_a2 zvO%@dy~7&YT{0A3mciejujAwqFAdKOf!yVDp1amPI84l;KVtT=JmMY;8XL@(eg~S%h%8)0JfSYAfE^51!~)PjTDx^_4=J47B(owmMwjS$NnH{tHc=nJ|8jmc{8Jt**?5?J7o6)s4bH^RM z6eHQtEHxMteo*Z(w7TLJO4dlx3l(xGZ9bLILj0ByrFxt^K=BBs-Ht>_zeIX7vkx`H z*O0|87T)#Yuhu#FB}rA(OGU}Iw9uF#(tZ>OA`L1hfWRwSvwE~p$?lrUc zPUNOe&WjKd;pOhQ@WMR5#hyAZF+0t}DOt>uoK)ALYg3|_zg@55%X9irJbzp*$dXl)Y6aX8Jo3aHR<0#f3}f%h&@pg z>>9uZu~hBZHINNs8?@&$fov4}Q#`lBB|)qgMYid=v3IaGBAVH-skKqg)Mem>t@Fr9 ziU=dTbAnkE8!W&ZAqyciyR_${;`ymWgQ+#>gk@%F)`Qj53Mz%NvE(jGo?Tv${1LNy0TK#H^R};%n@&wVc87v z=@aIO8_Tjy?7G(Yd=+ZEwjAru%4!9TBiInyJIj_IB1i}awCClqgyjc{WU)A$>_#(0 z(is}boY`2M6v>*it^%-ODI;mC951t6;;&*@6zjq^i|QtLGKx7FN=s4ALf4nf7bC;S zMB7EPaQ3f8iWqib!*ND5^}3qYiiXDC!Nw-`8`*F+$@tDyy{9JQu`#R+GCxb#X9h6` zg+OiaO$_VIu4p)keHYdex5ctOy3{I}Vda}A&DUF&FJB+m|lCn${MU9ch&Dl_>v5&_X z_~5+C)bFTDtSq~%fzUuYvlh6$66;GfvQ@XrR5S+%Rc5K0d>iAfvdn=*QTD3DwTMJ9 zuLfb8Q<+4WT7{KiSz1#XS!deq-KxU6vPYt*5z=@%+S%BY>1!7MIRp4%*RsqT&s1eW zEI~r~P`|Au6TV+Ub0ReS39aQp)mb2ZRgK`MXjn;?9jQ&&dwf@ol=zfZ`qxqBNNk4H zD{3A8Oz$gNd*Gw$EJB10gj`7bo!LwrT7$J?J+-FxHEFDVL;sp2y^T1zChN$8@p?@X z?>|}_(oqNMM@TOXHx6}$K%qw7crk&6v3LPhX~|#Afbq3h6}HpVuNJG%NKY?5QQS;9 zwHcjhHOJV-%+K^Hi2)c^%JuRgW+ka1rr`SQCM&gCTU2OGy3EKcunBL8$I7We7~POn zWutIjHS%qOUn#0-T0^#(v1%qlXA6dI)|k?o3QQ>n zQR?QH$B|6CX9%(d%#A`6!tRRNdWrv08`195ON@;GpZ_1=%$w(HlI-RSp2_nqWu4$cC>o*L#$F*xV|So>B_zyh&MGlSQ-khoAh0{8-Kp#%u!%S&oh;2x69qvUGcsGdI?;Mvw-@`K-9WWB`;)yi zJ?PD@8XXr1b!5v0M&3^HjCn&?A}lP_xHK|n;N6SZ)D`ma!tKJzLs>Z-Jd{*QaJXc# zUcsM+vKZ%X);#jh#Gx|n>5VkYs|{lfV1A*PPF|)Z!&nbJv&Gk=*l#RS{B$wJjbRgX ztgUJ1I5v>6ztDFATg48U4oqOrfOWua8MNkYG@Z*}0YgB#YG z!e+4uy!e^U8}CdZ8)t_}U$HD=Q5L=ZilrEyiUwrVh6n1sF_sQDvH2D<9<{S+XPG&b z4cFzB*6}o>JC>V9mgFE_yr&DYm6t6F3+FDxv}r7dl{bYoy{n+&iCtzB&KVdVMvG0xZ1#=8Tf)7;N#XhkoV1Pw;G{Xs z$OaUFMB|w`Y$|kqV`?*(J<&n42&}h|HH4;j&>^0@m7NP&C^TJ$9pd$6#7m$-nwO?6 zO@W;GGSZ*wi`XSr2OSo(vxd(kx%HZ~o-JnChRw2MBWBek`5j)uzF{{_Ly;vgwg$H^ zWqs{$Nq`V?o^-foJN2Pj9qLVkWo(V1kE}vWP1J{>^K!P(utk>8jSn#zhnBNVhWq9c ziGTbGD$z!4oq5DovRy0%AFX7qA#uDZaTTiqY@BKI8fMSfP~06xE6VCj_LpIh#8Vx! zujqqtTNZoEn&GCk>^*B?+OUo_U}T(QA|V)OZ=}_GL?i^7T5VuHjD3yGT@5wy!A54w z3)iWpZ#J@;j47tao7fb_GH{Z+!Phi<3sV3pl*bkop&UMXsCU936KTya+t@zV8;?~Y zxA(&?Qr7J4>?#|CWvdXSP20)-w66mGn7f0WFm#m+R=}VKq*teR(T$mk|LEQD%`O&# zxz)(Sjmf6%Xzg8WFl%VqzKdg2(hPHy8 zfHc0lnj5<2usrZ5Pc&ZjijbRoIYo2LuD_kOXLmelDV4v6apIS>lTPW$^hU>iT9t^y z%nMiT*ukfRFH$ZH+cn0^uOUFp?$K{TeeT6wy4IbF$dorx~RSk}8 zGY>fyM8gl9lyWFnYcq8^GWAMeDmsnNXG3K=)1K9}{%NAk$ z309hZk}lKwH3kYiecKu4j?Bl{@0b@3J;TaUq{8Sw-^`&ExkYBsn>gfW=1uly-YHhu z3IX*n28W$vo?%5u%}B)7P+4j2pcU`hP&=0FY}P2fTeKFVEm0v|mg6>>%-%`9w4mr- zOg+zn4CW{j2B(nUbf`Dh$YOU zwzya3joH^&r2oeqlU!&*-HVAo5#b4mv?DLXi-UC@-j>~}#H$Ph^X~ez)hIQ&%o>H zpJ~wu%Vaml=AD{YAmwj~$^N%i^{L7J2@SxB=b8Saa^ZCaToLAl;tl4gubL&tz&vZ@ zyu~U_RabvY2t*hxHMT@p?Ej+?@dej+|1&G%3p%q8{K7n2%+|wh%758R@)5!OOJrcUEYirOY*edC>&`6%RaM zzg0HRs)s@-@Q_I@rwy8BkZ2oOiS*hs^(X{K+l~(}3iyt>UamJS%a&G}KM!du6OPGe z=*GZ&H#!~c-T@5g^N3u8{pl3n7v2Zwv8sO2Uh_`K%8(HN)ZgtSwBe zMWHHMNrycqN6&2(w$3EK(xnrqxa2Ww1CD9f<0)$f6S`o$2l(g;OI^pL7vwbOG$gXA z`Kp6bIJjJC%zdJG;jmG3+>vol^~CE>*b=b6u8|mbrkDg7_8#XHe@s-wkpn+j}n#$yYs%Hb&9c-b*x^_Qf=H*+n5b5#qb>FAD*slf>=u zn$S8Nu;RcLW#7pwEQ}$ybH#Iter{tICy9lxnHSh!HgjYAM{rZ$7PMaX ztYhZKMex%zMDm0AZH%+MWe9b9ZS`HDC~$AU7d#o5x z7HSN9`JQ#AxjRU}MWEpW^9B7$GYh)g+8`tf7E&siJDnllJT;OvtVsG7vR?4+B=sc% zw-r)f)KDve066@i8nf6N`oh~&1XLfCFf$=mbMaGX23_ZCBtZ76>t`AX4=WNm43eRs zniN-M06&0bl7yak`cOzwQBrE%4LE|jYinE(~=m9V7CH`~+1j76N#XJ=> z)_6K=fUfW&L;^|mZes*5c$Z=3;SCBN>X#*b5@Xx;;U}3OTO(`FOD3?MEro&Qgzsew zsqkznVUNH(J5cbMEnzRnE9T?hqZ%LW?H~=Fatov%ym@S9;a^pmFvY28H|5f@3a zb%NIKR#yFfWl#Nn@>EmXFCD-aUbiSF_%ccobpA`)`}^jdtb#pmGY=1PpEO_7A=vE6 zZzGM#uTPusWzQ*I+`$pT;qi4TtxQM4{BKQc-B0nwxKd!mLKPg~MRUn6#yNq(u4R@* zUYO(r?$C0ICZP-YYFV7}O7DZeIzc0NR8e9iW9Nu%ohf+wa!xVB&jx8`@t`wx>tS^Z zWNCQ8%@TULRVs>Ih7?J&Ldxjbov!-uLCAT^id|LDL zZqNztzY+_U8-DIa+V%K2@$8Qe-N4_AHg{sjRpW+bwH0p(t$4^&Pt5B|;(PQ`(5Zu) z?o*gG?l(n`!`kRo-G@i*iN8{U~t`{(Ne^rdiCcl};l8g*e6@*g65OOckYDSA6PB*|%^eu1}B^pV)d3sS@e zNdg6-s}Fbukt;5F&Ni!vb}TPl|H8uhQ5w+M;vIpu0?Q_wC8ol9uOtvAdxO!7%A}@& zgjjEe$k8C?xay5wR7Mbq=5TkW8DgdeaaiD>GKoWDY^52ZoyN*xGb>aqfwT)TOU*!m z0w~CfUa6ASF3APCqhcD@rL!jLF{aQh9WN@A&9yVC`DTc3G#Vre*^r7QP_TTPZ3ZI$ zP6&=fWGPm3VqKDNnsf{6Hk3e1e2EklNi2yH;43p07mb-(ZX^;alMopaB13~n`c;D% zBydoffM6Pt@n(qi8Yd(Q*^r6_5NJRYuo1mZ8iL1sNhI_tDiy7Agt@YsM#IUEXi%Ae zFlrFP%n+c_AW=vfR4jlJHK0KnP~uq)h$JL|sF;Argv+;nW}qb+t!zPy$_Rp_CLwy6 zA<{I6NA4sODkBK8z!D)xGc+1U1Pv-92x>2pC7U7IXf#L`mSO>vp#e2F15twDFo>ZGy~929 zm255YOU6k75KV_;I|85`>x8>IkU5bqJ29iV?5vH2b6gq()d==t5Ok%V=wMpmpOhyb z{Y@bFQ$dcGzBc9tf{~uP2f^nhKx@-UFfGaBgP}B)uL*{c*snYlgohB8sWD`^x``(O z^29kIWIn0Z!RR(a>k`js?2o^MKtF1mSQ=_-ZHGmX+uE}OFGTvMPV@ZI5hcUv=(zb|0V2$)8t z|In3KI{AD5oKAkTjiebh%R@9Cs7T{nry;rFlgiULkFEx#@jLNE6;2q_5^OQQJP|2d z9h@;JlBfq(0ln_SeMKA@91viRcyBYs*7G+oj}rK+M3KuQ@slnD3e^6%RXhpQ{P7zj z-im?%f!WE$JZl=u3Gv~ck2rV;#e`_UA_}1;kcY-VjD|cYj+p8fLzpCmjApdY-7Ivr zh|Huwx}I`dKnPlRYZEirnkoI^jdYk1jNR|jBADoBP;o^xb$Mtc!PVMK?oO-QRuw*& z7Egkkv6*CjE0Sd07;9IeGpf`Ol3#cn5s=*_jzWu=(PJ-jh1O@u%t}!tJ8m}9W_Ip& zm1ingBbH7qyy9UnQJA%rPB9u|c09DiYPD%m@~A*EtlEfr*s21AA!U+y;@1^G$Y)0d z=wz&Ko?DoiM+YKjcIWE zR|OaJ+D;qT_Z6sYOd>ctYfH8n>!zCGkY}X8N}*>l?ORl)X)ihSt_%)z9Rf;esP|Q- zep|5G<3E*Yf(V3Cvn*V0xGK(wrfXdOSjEC+VHHbft5+rYTCl`P1Rk1sHFLDSft;k~ z^Q3}GG?>?Rk&4PgrJu!XW_21zuWB>_B-e5RbQKCJxxQV4#*<#{@YiY<*3){D646yj=OsGBqy3liv1SqQ^T9*Kk8X~eU!5R)SEqV;8MV3b3z`zJng%0$pA(=%# z?`x5*r%E?$R-3Gbq)Zw~mrHBYn8{YP{q>IMyN9gZutc(UiAB8-i=d4rIVu!R=9L(v z1HBMDkVw>~?xDlndh|=w@y%g5?6amd+GZVP966vI{ zv>-6RXyF8p)`dz$BsB?Y6tPT4l}Ut~sJNoEE`KMH+RFaX?A2qry0oMw%4NY;LteOS zInwE4xW@f&;B{dBsPfPLyg zSu^?%7d9guYF0*v`lL*SjYxN|*Mt5VhvD@t%*_^0LhjPI(oJu{<<0s~nSM$&fVvvI zTdeoTaCn)4Pg}F{;?sgq*7WE zcjrc=Do+}c_DKS58(9;W+X%u+>Vd`KGUGloM4ZBg-vrVb_6sF*+^8AJp=!9EayXiirI_JG7Y3x+Jt8U^g^*6( zZw9f1BV-$00f}lZwfb1J5{!MDlM9rH^z4DzZnX6ZHj&+sj?{tX;2)G=)?k{AhT!0~ zy+?c=ELB+(PXa!t%yvQ03kS4-V2u{G0Qy)19%%vTT2+|CD6drVjQn3BC6`HB-A&8dTJ8K~nwvWYQDI~vt z+CvI#^rrnk^E9Q=XAl@{9f_>25~5+->VO$F4dEEqhs^i|(A!~rC)y&rH`2DuTc&AS z<}HgkdlrCaJ3)Wg(qAT0Vbjhq2TJAAom6i=FW*in{II!!#*Kd$=m49ew4FV@c;V_U z&|XB3p6I$% zigq|0)0lmmN(9#*)LsGy5ew;QRK32NR&p>6TEM!3VoX_HR()yHgXEQY6z}waEU*hN zhFY^y&WG{m1KhPNHOT@%343_^rBE_=IG*zRg1KWyk5`})?6;G zSedU?eASy2VNH-#MS`f1z4XRH0mhIG_NK#%nX#jaUfA)iJpwr}^KM)-0&ZNXc5P`U% zKU9Ymp&DH(2|$+tB;BR*fW-|hSXxq8+zO^}091fwlsI4s3@v$7gtI(m4TP$&EW)a` zVNvY}SUR-0V)5*viZCQG>JbLhjKwp>AdBv6Amax^Yl?SYx2j3D8fc#(kO0dXV8#~HPPmFydH+mpf8ko^ZDEL z7(E)YVMQvsjwa!}9}O>Q)f3Mq*DoL?0QyDa@FfrheGBneS2{L0ums%P`(BhbZKbej z{TIpqbF~Y1&z4XSx$hUUO-SEn(!Si3b~;yH=VG=JS{xL8=wHjq;`Q%bZ1MV!`Pkz1 zS#E9d`ezqeybd^VDfP5(HC*tT)NJ2UC=Gp{V$wKbwQNJWOjx*-bQqd7qy7f)$1RO` zei_}cN>~9-Fg68etRV4>OTgfj1T}7!Y4A$e#h~XsD|^>*HN>&=xcjosLo;SQQ>{#6 z&p`sz8}nCFu&}3In7J|-^pr?sXVKusuYoAmT^LI*8Te2CTC;TNORcP9dhEx|jF}J# z-J*qc^kaLpCOy8lYSN?g$4zc!LNs)3uNl;|8(N#Rf2`W1P5wk1d){>g`A2KP2f9o! zH`bXOmlD?4u3me2&Z$ywLeA1%^32)>Bknp%udUXB!DE$WU@Su|mS9Z!Ll*(G&MsL8 zYjA%SxgU+!1Em_D!^!pOyfI@vNh@U*9xI?^6v~oR`GprgICLS|;l*o`Ku z)Hq+)syzIAKz<_0wBJ`5Z42MI;BH@?7d8x2GW{R@MThR%-5ctQ?At?0?wx54-f38{Ql?mjlHiBssqTeq*7zNn!5 zqJwSAFzKq^&D6V!5=#eMbZ5Aha=;mWWTxa6N_)ll^$58~rgMuFrIG1HYvnJ1X|+wi zwNuDfGvbAGrJHGJCnZ`3lO||y1znXV0ORAdw??VTG#!j-ZX(EO_3Xw%M7a5*}qxY$e=2kHg8dOGpJ0HZ=157 zL8aOzwnN#;pu$|!?wv{ogLnt*G?!I34a!zpGlTFY7A`^JcEPVW7b}}isAXK(hY0vQvxA;2zKA6xpiBYM!zes-P^s(?o+pPi zQ)HlGk1W+q_bz0DB@4?RCzd8Fy1J91*S(8gQ^dS0y3}R{(}Y6`+JkQd_BchSP7yyT zN#GHRcM|FTsmX^tZ2UH zTBzSuq#n?>5it0?qGDh#)kF8LB4u5P4`BG$Reg2u>i;hMbDY>qO>=)2Ur+AB7{y4m z43V0X1UG)T{H)?SW4ZE0@TlC7NH=#J>Hi;s>?qvbz|An^%=K5J`u= zKa&s_$A2Wm#dnZJszLbVl2Qeh+G5Vnbi*t9ha%3G86)}%!c&%8F&$CLnrftn71QNc zS~DG4U9>I#SYtYpX4XZel}ouYC7M(Il;Be`UDMHu>9UhGrWY*zi0Ormt(aakOk=uy zdBL{o?8 ziPnLKWVrFX-3~bKhT;rP5jZ?i^~Stkl_TJkW6Hdtgfehkf%M>Q`t7C?!@!}fc=Iup zxuuK&N_tz9r&Oa)SFQTRhmSw&uO(^w-BFIQj`-UhCEhQx=wjG-^BUDptWh>LwOz#r z9ZfawD$YihB=50f`ajCIpj(Rp50nbN)uiAkXrS6q=AbYkOk3psz=vNdaopjYt^61U zZhN4(fX#aR?txMXDqqIu50rFtnNFwcne-V8%;`c?_0&Vfk5Y&Je5g!?O5f3)F{K|S zb8@n-KT;M$#cxH)R$uRG=F6JZv_mr+J1w)@@efm_C(2=+xbTTV&y^?>{Wk`1O+%WE zAD+?PUOt_FseJ1zhmX1{ZpoVO&3TJHDE)YR19zTcZ!GiLl2Wg)Z&42U>n`E?Yqv-< zG09i)aLcq&9ON}P^@)U8PjNc&2~f5k&*dwTcqCtObr8aVTbknFvDtdJCVR~tP+hb; zbXpQJl~STE<)4|qW2)Urv*4vV`?e#~+w|xqGxue2E)IXH1PCgn+(c~DMq>toWo-IV9SES(UjBEC!L&T%d08|!@gwMMn7Na#KS|Dl)q|TN8)KM1J2`+|GnOW_4JvB`*9A`bn7%@*@SG z>}jysOWSOo0W_vkd=8qo_WNpddZQ$KEDu6iqVNCF*;eIMqh_33q~Z(^=^7VVk;SG9 zasMGPYjJ#3OXx~{B>s}Z!Y7~8K}%vwy^HaUCaV`X{gv|2F3wZClB1uE+5ak`rp$kp zIt*ecegC!c3~mj?TF;b*IImD~H^mkxbpdXiD=J!s8SiO+%CS!wGC^)LthB-|nS#<=338^FT@%x5r6dp zCcj1E z>RyZwPygN>n2v-Ndl_{cGvaweWd1IJ9Z6#W~3Rfw+ z=u&|U57cf%0nvw#=twZCtXdU%#hZGURsE^@9!`!WgTA7i`Wh}?kuRnl5$Yus&fGUq z)plk)T|)}%8t%?uZnpVmN#4hxyA*5AZBJA3-gP?e$)2QhUp$1&DbLWA6%P)=IBLiJ zHm6H&QdJCYp*MgHIq}EIsc8?mU>k*=ga6Pel}nqymC;DffOlqcv~Q7PT$*fsN6-wJ zd$2a_Ucv5|6sC9Q$sT&l{X*vkh2414?{2u`1F7TtbL39didSP`m<^@{(cUO_uwq2# zyP%pD#H;HRICN0v4PcWh>Nq%5UVFJ-Mco1i2Wc-@RjmLA!%b(ZssTDM=}rICP~CNy zG@7ub{G-?fi2N$O`STjrEK7ryVdXF$k4+^ViX5+cI8j}(eZ7VkcaTRTGGEvg-uj#e zK1o%LMwi+RbDGj0S5$mv9@S(RIR@_lC9aGvz=9um`=HUA1JHH_ORvdG2Ngb+bO9~l7e~bNrk92B)*G)@fX%FMg_Am!2cQBGJX0=e%XdfaVN2*zo zK6H?Sdz}1nHIy*T{egM0n|MJ{Jtzlka246qRaHaqgd=mZrMvVpl|DMLFSE%Ew%|lZR3Sf7o*8NQ89MD>iSgsW-Jora zUu$V8l)B~ON?nzdNXvzoxmM(*iB@>w5*;ds|45@|ktm;c)R%JEDCsOf>p6cp+9X$PO$id41Io1F5DytJ8XKH+4)+=@;?*8Fy~iF%#`Ez$?n^{ zr|ygI3u)d_p3FqV)4$S1iBAu@*)Pa7>jG((He8jU;$ z)!nwJyV%1)O)!sCJR>V1w9{YDU+fz z=aia1voF7Z=&(uC+Y)f*bTo&l|8>jw?0?-dl1Bdv^i37%a0X7K?oQ07FG`)SYB2CB z-&2~1w@yzgm|N8l%o7`^^sNz@u1cvB!rWaG=I#``W+Gb^%gAPFwr1@uxk3=IP(9uU zT`}}W%7i^B4Gj;xZZs}3+jATiYA8+fO=hi<4v7(5QKKmDEQGRWho7U_Gha(uy{09t zUel6RbG4+^Ynp{PE-VBd{+StL=9{r=VwOWAGgj4(|L+=!9{(qegsmk3^uJ;om^lqh zvkfyn$u`uUtvCA8X3HuI?2|V4f5&K)FPgX|MpcgO|5?+4NB-}cj&lD~(=lA?YBmO~ zqKjQK(^OAbP=j=Z-`7>+G?1y6Wz{(!6K(qM7q{|1GhNiHH3U zM0Cp=Cnc%}!7-sIIu`-^t``O8YS_NreO=8esFxLB{tW? zE&H_`PD^O6u<%eN8Asz86IE=|kbJJd%L=7tL@ueP#=)V2{|K_#jnQaj)FaHhZxsdE zeBn^47Gle7w_N6@9-R}e}g%A6xRbW}YqIeE@ug{A@IZlmKXIOdykA={3KCqv91C}M2f*Pp~ z43@@V$SoxtS2fk!VlLCErnJT?Fj(?0&Kamq#|KT+Gsev?h{t#IJrs&mmBl$t)j+@A zqk0b+;T|e@-@H=V`WMo`z1_N|Sm3<>QDOm&5=p+#{qcjML^(TwguP%JM*_jc>e zBE0@V#?%o*hYlLif0%}Q)7BEWb41891Ygu3uk}r3gFUusu13Jtt2m*#+6ET-nJzY0 zDfqiHO&np>!s#v55wO!%2E5!_sf+1=d`l~}n&FZ}nt@51$>B^JLCd^bvg*mcGL=tO z73TLvQGjZUdHL-n`&M}Tp$t%UZLRj#vy13L4!-Hvj_L^`4F6MVGLj}&G8LrJVha!3 zmsIBvSVZAXp}~s|6>0Fdy0;G;tW=n9u~y-ETZEwI&n%Xx2rzrX0{UQ-Ilk-%Yehg$ zhL?M|%{}>%3NKUsQ-$@qw{PD{9bR_2qz?PS{l-=*Ja4C!3NMSbQsFsGEz3JGSh%d4 zU~}GiD;1u_wZ4Z

KcJp|9*#8>~9O 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 delta 32652 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 delta 17 ZcmezHjP1iSwhim|GZ`9f-nf7NX8>Aq3K0MR diff --git a/_module/ncs/0e_onclientload.ncs b/_module/ncs/0e_onclientload.ncs index c10f8f66f71f1c7fe7b654e74e3cc4aa53bc0158..fc0ff671643ed2b2b4e9ad1ed90f81bd0768089d 100644 GIT binary patch delta 5465 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 dcc|u0;riq4!tyKa;`1!_lL2Xp8zihz61aO diff --git a/_module/ncs/0e_player_target.ncs b/_module/ncs/0e_player_target.ncs index 9c9b80b7984cc146e9c8934251dc826f031c7640..2864f9a651b95eaeb8b167c9939d6d99fb10bcc3 100644 GIT binary patch delta 7257 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 diff --git a/_module/ncs/ai_a_default.ncs b/_module/ncs/ai_a_default.ncs index 1338667fed956c05688a28813d5aeb1ca6bea1fa..7122b9bbb38db7e8fdb9cbf4649e3a4512cda69a 100644 GIT binary patch delta 3993 zcmbW33s6+&702&6cb^UKUF6L!3-|JXyEBS^)S4V8 zV@G||*Q~iJe<|otL{S9p+$LzE1pyW(O8`#?H|wl!PqfLtnw3%(MB?+&6!Qj{sD26P zXmbe|q)O0-!Z{Q*qU@yv`==622yT-a;8D}(eM5;KOBzfzm3r9i(o+}%nNkkgFxV!Q z;e7iMH>Xya124JAm91KxTi#IlSN`DPU)`U7PNawbFI0aeg%6~X^gwB{#*&$1>E_*hhLsIzg_hn zewnJD`d6B!O~Bput%X`vs0G~%Y(p`G>F}vJY~Rc9ga)UY+4(I{E8^=SZQKS&@z)C} zwiIU3v?2&%B`-o4V9r!JeHtR^_-W8fv(tT~KN$>^me0$$DIZ?IBdZ9yAxheuA0V~l z8R(q?h@!?x=)(>dz+A+N>D0asPLMel0#<3_v;stl3iKgo>5E$Vc;s5Zt7a?6FIA_Y zQOhVHfPZJ;zdnkd1SOXboTYn5(8y0|;(9aO-L*fQlb2GRfwJn4REVaUcU-CzZ~R%VyUuHx_ft* zBg86DeFcP3_e9jr)E)dkYLsh8^zowR)d8tF>{U&bs-}7nYF>3$v-kExYP9S7Qv)}= zsCi{TYAU^|c~ez$Y!GT*aaXhFth*Y!W=4N%gi~JBZ0S)WxEh?cx51SU?mgI|F!C!q zTIlZD6R5riX0gJPj;=k4CR&~g##Q1rPZYOa`}TlPoZU>^=1x+!L?N-*uX}>@TCm15 zO_1!#rs+wO*g7z_Q1vx~WOumTM^(643B4$SuJ1hn|Mmix(gOzB$dx_d9VDw9rZZO^_rt4AIh?>p{XDza?uC3|9=RH*mxDA7w)-O(=wF+#W@LErjv- zT0SKe!!%k{1XZ~0Kh#wONl4Gg#&J|o%7>4VQkzKEf*^zr2lBlxl!67n+dyrlun;%> zi)L(xX53_C2|M^2i|g3-U2qJ1VxLpTxkqezD-{^QM%Gkb@#|tSj4CIiFHsryFPy?U z${-tX*A;453l_F%FPH(x6_H~f6k&T8!8wSK_C;uEqyw(tSY*0#xC^*`4gFVwXk1@S zQTt&eS}Uc3Ng=d+KO8W2b!IF5S>gfbClG*K3Vcf)VZbx!Y7ol5z2 zC^xQKsVwnBxT!OIWLE~j$LKdpAefDA06#Oncazcz!9q*_3>`T7IyrJ6niVubwHA;2 zv*0Um-iS46bTJdHOmhP=#^c(rugYt%90+yermN-nuy+4uvhtj=aI11-K!{UZxrydJF?sFvcaxy;96x`BTBix7#LMrqITKI^_?J2=kcWoZ zW#BIzEcan$k6{jAlV6Y7#>S-LR$jxG++*43hbM3W##z{`iO5gsixF-Qgr=b%;2)cN zO|&8%t8v*^Og{w~;OCiAm9L2oWnyB*PqD>tdA@RVyh68{q)Fj=I+O@{GG?H!;c~R| ltE?AIbjAV0=(!9G!p#R+ZU#mIo-J{O`T{@uRnLz8{{!M>b9Vp$ delta 1848 zcmaJ>X;77A6u#%V3y>_zy&#LMBW~aoA;A#_R4j7?DHAI*)G-B@B&D1pmKdSN1TL?7 zP(cN4w9y1Adl3=0Y|2R#&1Ez%ml++?)NsMfLFv1fCG*bo{rKiP=Xu`eEblqrg&j`o zi=A8&6J86PIno$DUWJM4O)d+`&6GLJUwb(~r957~s?N^NM}Equ=9KlV(m}1!aq>_y zg!`*hl<=V)Z(|P+YBedR+f*7W^Q~KgXo|-sUEnh(+HA@}VlEB9{7c;WHhFW?XmS+W z$iWMO*B+jM@n>8L#Rh(i>iFL+)>oh?E%!D0|x^$B)ZjF^ZZf=EL!3}&$wGjirW zL%L;614TWF+rr)I4tupL{RQ9H@#p*>f6+xdzOjpMYiS1$Hj`ddXdDcSA3VdfHH01r zi^gEcP}>2&bO9B1zz!SmezYBsWdl}3*a0&{syaM;rIQ`dx2G)o-n(BBht)}*hK=@@ zs47<4Kf=c_<9R*R)Gj@ds~wF`DZgGT>$RjymrdE^O<0x8$&&hS$fXi|x01)X!cSJ` zk^sI;5$C;Mt@5`19A^N=s5R zNyo8U>0_r(TqEmh?h$$J2C=E3k8IgW9faEtMf{)u?x>{I@bcjNDjI^kIpVI@aCxbU z3Y{_Xb)H{M<8i~0cUDvEz@^8!m;A75U=XPW_AYCkb!$4GE`4kW6t0#49#lgCj`wES zqV7_nddqifXcEEik*uwy22yvbYvl58DFq10u}uV9_E9`S2FsxDDH>Q@%f|f_&89lq zjPxs3qX_BKxN$%2LfUq#9mQMfsTt>1%Zvl$PWUy0m5x{G?$RYZH8{PQSX)8Y6Njy*|H()k44*W=K9NoH%D zG0J=@A~LdtsBd`GF6If}d zUhMtcm-XTJ8=Z^9ks5EY%}Fc6MgoNE$2dF!VW^nGl@ajb`Vkn4jh|VK1k5?xb^KO~^_U`vLb&dN@gonHm zj~9W~NYQNa7I!?|Ic_{I!xAcj+`L7qo13tdI?JR4q!G+tbUTA(`vl|@a;Ep_1#{iY zmn*s y3KYqCdOny0Uq?%Mx97+*y)YYfyr!Ij*k?N2vBpOlr(*!2`Eid-6Po+?B>xX&kY|jA)MgGUya*)7 z`G|)gQX@w>-I@xo7e)pp;YDd(mf%H17eNMn5uv?v1>v5n|L>gh|DWf1`ln4((p?Yu{t*NYiP@k)&H&Tl<-!Nn?ZfO-a6&oAw^F#`JO{6FMVF zBuUU5D>{9uPKUEM*kY$dQH-2zRe46`Ki^8kVVDuOkW6*$;>&Sae3lGi4)GbSe?vY+ zL(XN!*vdsZ?Uw7~Vj8ljrUE<{Or;6eWB2JVYj4;uI|?@%^|`!S0lR1+lN4uG`ragD ze2i{yFvZ45%hBfw3uL*ia$}e@(On{`B@!%77PVNVJLA0Qf{nAk!X%dM2A-^gLMn;J z&Ryzi9R$(XYgL>_GbrFv^$mCidPiJjCL1qZz(JbmQSBFT6BPFGNF(y;>3d#kL>~8g zAXDfY`#s2^@GB8+O61b5Fz^o#3MlOPS1|I)PVAsi1}_dm8`-Rl40K{A1>f>)Cr0T} zp>TI6iuiH^_gq1MLT*v!Oy$#EI7A`Gx(;^X3=A+RqLR>Xn_&*FkfA8BMbCk3u{7A9hV|y{|8puFh&0C zsPlUp`e?)(fpiYEYoB(1PSxNS=-xcLo*+{c&sYb1Na5QSvZ>A0aDd$7JX{Vt57nTT i#uvD32`OTzHD0ZDp_}OLq%dzk$p>mtqt1G9YVZ%;x%-g- delta 837 zcmZXRT}V@57{~X2b~Y!u=5VP?og>i7LCcH2=t8Y-%BV|Mupmhc zn@oJ|3XGf*goob$<)+Wb5|hoz@?a3{L?hogKZKVYI*(O}TN9jIunc=gx`7{7!bz{@ z#&!`hIqCPd)U>0 zW_ljvsYWQ^e1|B2bVd1%U@UD3Z%A4+g0FrUN1?C_;%L*wP%BYu zM@ziTWMbqvsZ?x2GkgxjNQxqaUIZb^2YWJ@&Y8iGj^|;o{r%@#3)WurSQb5&5tT$8 zks(UdxMXMX z3UfhsFta>Sd^i@Hf~qcq(ZAA&$Hhs5aaGKz_JsH(v(50!DvC^5H$MHJD^trugNytK zEmB=%@CH`%>O2O|y_#3QH{_)UUog0@;#gJu*x)irmkG1y`S~!`^PgJuk^cpIUD!?& z7M^xto`wXE)nONn&*_}Q1C8+0P?Z?{nke2K2;(bF@R85Uwq~3rU!h*pxT6^k8l2_@ zJshmjYnrUM3kRsUU09DMi_(+fJhBE+{OcY@>Dd->;&UR8-G`lWyScOt$N9`CtRnJo zG*7i5NBUb(4l2wwH23p-E7sD}ndJ%ToZW^@+FhWJ`OSeAtm8fPI7fXddmCWm@p?R> zC-x9rzOI3nL$KMcf#-V=XIf zbp~{JMV&=@-6U)7;0vh3E+*Zvoc|VK+%tg)j`^wGY8tUaY+H)pQYYGp&vIEG;zZ2* zFp;{nfzvCs@Nv(|Fh+i>M5dW`4oOQj@=TO2WM4Oqj*;YcZj6PtlK>CoH63f0QDj$p7Z}dzvq9>nI6fS9?2Rr zP?!t`%+AhEN%9IwLY>DZC05aLDdA0*B#zXp?UE^l`<2G|7UIr_(>S-z$wtXix$A_; zCZ{*FIhDfHLTT5^(zv%ew-DWAPooD#8x>M}KvZJ2n4kh{`|~7b?oK%8v&6^U<`Q(| zq!Ds5u@tvArV`R8QDvwpENC$$KSBSJUpz5vfUCV(R-0vfKf|xX=%?s=o(!T$l*|<&f^H2jVyx5CW+2zqGPu8U#?6?0?k zy?{qFWaV5h)=@OXr|MCzb!HcMwu#j8QFZ(yYE`NtUNsvwA!JTin=^Na^{YM><+@ zk9w@S_|}@}h;w?rxQ;le+bbq-n0fmP7Ci zoae(~QZ{MT#+^RYQsfo?)XYeoR&DB$OQ;2{Zxi_*t2lWegU7P5h<`L7MqR~X{}&67 zUPcYsx_Dmzd--?_`66dWE>8qdt`7N82U@!(ZTK;NZNy^gd^4Z0ic141Bdbe``K=yO XkQ=2ve)a4Ys>+~hhZ@~U)j9tF`ED9C diff --git a/_module/ncs/ai_druid.ncs b/_module/ncs/ai_druid.ncs index a0a1ca9b5a038ff3d9bbd677b4359d2187753dfe..fdc177884aeb8935584ae1cc3ad974334db88615 100644 GIT binary patch delta 538 zcmZ3yl4J2ojty5CCo?lShb3pTDabPbfrK=}|NsBL$O4(nuRtUN8xu1#BT(!E1B)C3 z17k`GhPp#Abx@UWAS&~AOm<{cn{1=ZFA5+KQrx?Lci z@Z|n~9NRbLGjcOBt(}Arxm5rXS(619nY^!oZ8}F0<7B4QTfoLl-&@2uiD@+hh_i)h zl^2Ls+^$i=c$1N7h2M1XZH%hZHOd(8Fs-nktk@zsUA~-g1Jm-7=@-ix!g;<)=$lGCEEd=4BGzJ}H$^f|032Z+fFKquBKLNsMfh-*8Az z|L}>Cb^41m#%!hyfzv-;WR#tLft!hIvO*!-_NH{kW+tYECX+QJ{ilazF(zz}s$}$> F4FDnFtK$Fw delta 496 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 Xqm;xoKS^IMz%wWJyF>SX-nF4N diff --git a/_module/ncs/nw_c2_bossdie.ncs b/_module/ncs/nw_c2_bossdie.ncs index e3b3b329a08d864d44c8deee29aae64e2f7c1377..a1996a4d21f90584efd852905fa64a8c6a0f5398 100644 GIT binary patch delta 2716 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 diff --git a/_module/ncs/nw_c2_default1.ncs b/_module/ncs/nw_c2_default1.ncs index f3f324e0484b8d9c547b0ead948d96f704b77182..3cd4c74f12b2d7b37a0e3bcc592e2eb69d71412d 100644 GIT binary patch delta 6060 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 literal 126852 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 diff --git a/_module/ncs/nw_c2_default3.ncs b/_module/ncs/nw_c2_default3.ncs index 571ab3f7dae5e6c2cee1ec69df5f29a40450bab2..e5599759368e67dc7df4fcba58cc191d524a799a 100644 GIT binary patch delta 36 scmX@KknzYuMqWSXV1+P4Jp(5OhJYgzc>_3@8UO$P|A&EPV{&`|0N=F?(EtDd delta 34 ocmX@Iknzw$MqWSXV1+P4Jp(5OhJZs8c>~y3*cgCdV`_W=0I$Ue*Z=?k diff --git a/_module/ncs/nw_c2_default4.ncs b/_module/ncs/nw_c2_default4.ncs index 10b7b208c3c51fa3b032b36b515d6f69496b2e3c..14626ccb7086a2edb70e197ee932524e6d39d2f2 100644 GIT binary patch delta 39 vcmeBgW}n#1&glyuMqWSXV1+P4Jp(5O1~03Lya61{jQ{`t|HHttG5M+|0MP3Uf&c&j delta 34 ocmdlrg>lCeMqWSXV1+P4Jp(5O1}}?=ya8-1Yz#oKG4-k^0HSvYi2wiq diff --git a/_module/ncs/nw_c2_default6.ncs b/_module/ncs/nw_c2_default6.ncs index e50a17e52563a3c1955693bca5f4abe7378fc12f..6ec1b103b7860877784399666e4532cc265b0783 100644 GIT binary patch delta 36 scmbR9n{nQ6MqWSXV1+P4Jp(5OhT3@(c>_3@8UO$P|A&EPW3pu}0PTtmM*si- delta 34 ocmbRDn{m!>MqWSXV1+P4Jp(5OhT1t3c>~y3*cgCdW2$8>0KB{jP5=M^ diff --git a/_module/ncs/nw_c2_default8.ncs b/_module/ncs/nw_c2_default8.ncs index 631a522690534e5a665de666540cf44901c2b291..803613391ebe56655abe286725c063d7cd4b27f3 100644 GIT binary patch delta 80 zcmX@ibeW0Q&pB8j%uvt3iGhJJcp`5A2Q%aU|Ns9muuP0q)i#o600I>jW(Ef453CFf aEsS8<9}Fx&PBW7%NR~~S0i*= delta 63 zcmcc2beM_P&pB8j%uvt3iGhL9c_MGX#8g#fEqMkYP-0V!Z diff --git a/_module/ncs/nw_c2_defaultb.ncs b/_module/ncs/nw_c2_defaultb.ncs index c74e073fcfce268246d40fbe01ee17713c9cac64..4ac42af4ddd30c979a36537435ccbcc6eee1cd18 100644 GIT binary patch delta 92 zcmdl#mF3`67G6K+V1+P4Jp(5OMy`Vsc>@%f8UO$P|A&Evg_VK7peQ*$uOK&m1X}_7G6K+V1+P4Jp(5OMy~x6c>^Za`k9BzGXQ~vG{gV@|9{8=nM}?gl7Wqd m4Mef9GVm7^CCBF#B*zyQq~_!#masA~a4E++sJaTlln diff --git a/_module/ncs/nw_c2_defaulte.ncs b/_module/ncs/nw_c2_defaulte.ncs index ce10b922dc9f79a63c1cbe0836e28db2de49638d..953e07bd8b6f22e4becfc481862864ad300ba0c9 100644 GIT binary patch delta 60 zcmbO_n|bSOW?nz%V1+P4Jp(5OhO=8I@&+g{Gyebo{|^HT3o8SEK~ZviUO{qvQciwy Qc4`VM0|N)s##oE909pMLq5uE@ delta 27 jcmdlwn|bPNW?nz%V1+P4Jp(5OhO<*A@&;_IwKxj^dhZEB diff --git a/_module/ncs/nw_ch_ac1.ncs b/_module/ncs/nw_ch_ac1.ncs index a4307e62382bd9940bf5d6f8c8af5204a7a342f2..35341336554c8b40454f2c31f80a8c8687199da1 100644 GIT binary patch delta 7277 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 L$#RIBGz9($-~ERB delta 7330 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 B!QlV^ delta 3517 zcmb_ed03R?7N2vz*3Tu~uS5Y4nqO-}h* zmf_W|b}JPpdBv2pt2fh>)XFRu%oJ1*?fQ_9sdL}?X2g1W`tS0`$DH$?^>>!{{eFk; z^md(oc>mE6e@pC=kg32kqpS4af%^1Xl|uT49W1~Qr-Z9iIAsM@XgcDBUnpM_Lf>fu zvHm~QteFeNG)bF;mwpudVA`P#(kSf;@mE7LeXU{U1f?VhkiSX^TrO9WLK&`5pxHv; zV+9i#76n%L#?zBNHt0bMd~BL-ZTi7I@?=HDpVdtRe`i?xd&8zU+V7i4Hs5%7mWKG+ zU=mIB4G%M}{wq_)x$a2NI9}+D#HZh*09{0w;mTi$8;;51hAP<&)7huCZhhIl=zNC?e;QyCG9qyfq89=QOx;) zd4IN5vq=u-t~aP#o}hd_r_zaA(eISA!&9*UPdP{C*)c>~6RHq_-?s^a3N@;fDup^D zCvQwf7VWgf1Sxb;?vh9mD9JX3EtLYBSbi9UQN^>N6qD)?4YcpsSozluR#glZy&_sj zX^Q4epFVR&5jj##Qc1jm5=RA+uE69Ll+xlAEO8!~wTccNyUfuE0;%$ArPdtB~(MytRa*OgaOjO-JidGc##_B{`+si`lPS(;-1^uC}jT$gH19#8xl0$H}j;>FR zhAR|M*g@JKDUsu>iG~%fgkPO!3%}QfwWK`m?!^k(tK1+iSBs5~&$42RM2oLk@#Zyx z+1;cMQKEx|7Q9u?0#2jFSuooKxVbAWm{V=M(#hKu0`73pMO)RBS=0}Yx2Kbb!f0lc zhTbnSLk;aMvcU%WzUXy0>6|+E7zk9~nKy~p{6c)cXjgGl5U$cVZ?1kV1}a!ph}a92 zd-To?yC(xK^=)HN6yJ9vs)NFy)$7IUh%~+P$Mmz8Cz1x>N-lbs;*07SLj{!;d03wgE%T+R!${Va$GJ-ZVB;gANs%r>_1{nu(HDp^7 zy2>q?FM}wi&5c2RA{mC+Slw|{QCVXT>^*>ud;!gLw6PpE($H(xu=y`N_V>pE%%A2) zK74*|n}Aj{se7+@D^%RsTa6O*L{Tt1i7eLxFs__FRtHhqbqyvcDEoRY{NQ}+Ishh& zqfO1>wD(3QOlT+nR5r!IVP`_qV8AXfu*KWN)_J2j2ZtxI@{V9)=Q@C|^M11gIB0?s zTJEUf8mpZGaXQyXqj!d0p%LAJsCs~rMNEYO^j7NuQQcWNHfQm#FKVUCXZ)DM1R=Wv zU@xGf3;zm0wEG$|^bTfUe+6pZSp|c9L=SA5Ze{I4h0l%tun$hSX)>HwTI=}Mj5swf12$V#)n43LPT?R zTUJ|O8y6XFQ^I9;Q$(=A@z4ctE@X?xqJ!RT4&*!I!6<=0IjU{EJ^`ZD(9(9u()FO{ zIVoV*pmv^&h~(04yv062KsK*Gj$=Awo@w-gp( zbrelV4iWCE@360rqJ@3-3hH^>OAw1tNp%&$Y{xwjThYs~NWxPo^6a=1*K+-<@TP=S zk!)281dH+1^24j3s~WD$(MnE(nw1qmD$jodzCft<rq>)@Ob#B z8d4ygG0ThbimiN2EvO`1mgD6tTg(I}l%G5Z*AbUQdf7|HdDwRk z!7d3)yLo(-j_2o&KztC~Aj29Hn^h0~EUq3BrQiG_Smi~qv(kF_0FFO8)${C2a8ZTb z^H|+Ac$x2L06Rhr7sMO@C*53~%qoKf{>yGaFksiQ?BH@VG5mi|y_1V5q)A>#2Y6T{t0WD&=A=XHU<>V6M3j=gpeU zUe@X{Xl3gA;Li;P+@;6gma@a)n4a3=T@aD-&bt5j4i<~?!GjU<6C*5Mp;WtXU0KGn zXdgW2#?tMWjEM_*i5=rqu!nDHkH`)(qJ1)N?TH4!@X@TM zC-wmgv-iX9EWVcjxT3dkU0){d@gNqFiUDwlC8lCj=t_Cb$Tm zeZ@x%jz6y-j3?bt?iwnf)J=8=(3w>Z7d?_W3@@T@uePf7fvaxINvzW_wDJSP(FJgX zW#poRUF`|Rb%mnb?~Fq|Ey^^p=j+giM~=i+#4l#>kTKZDf>jCpiD_5>aFo|Rhlc^T z&*ICbW3>;|ta}QA*@*q9;^T|)A1d76jz4@6kNcoAo#mgv2;TfM4oVgqOArn|c0c9- zE}Sk?Oi*v|v7ez$2XFJDqqtBbroQDQ)}WZj>9%10?^9R<_}U~^`VH=b_vz-uU_Rzs HdAOmCK{Wecg~W2oqh z9yJZ6OkB_q@N-Kc^HEF1Gc=v9xi3UulDQj^OD5i_(%igw=gY{r9b}t{yYzwkXc88(9 zzW!#ILHwCbM)3vnG5HwG34^lI6H<&2vsVp*VTfbUh#LlzuENZ6QqbD0e?+*@HEv)= z$^A-GVOJ@qI;6EU>hIL%(XCtS?0y)9pbbNm5qubXhG7qlhqwYU9nYlJoJV zQJnB7$gxg~qNm4&9@PgH%%S>4owPjB>v>jsCeI;$D|~Pc{9+q-#U&YhZ=;u? z+Z`bnyiEIR!^^*0{4g+=@NN(lEox5LOIqM=nz6(M3$0%ghqLs-l4R_q;Fs>V&1x&0 zNf@eq6Z^{V9Gdx31XjuK9#X~cvvlsIM5RmyE=ne)PEgnU7^T*mm$Z_m<&VZ?`eS}J z+7M_U&0MOW3q7|q6O$y}VVQ#26t^q~J0x8z=mT_Z*<_JNO}=Qkf}d#D@@(8C=;17} zl%^C+!V`i>p_CGZ^B7ngBnsIP7(ydy8lKbiD4eMlb{j)5W>^H(WoOZltD zB16)7#TIt=WJ+2+2CoW63gvH5*j>Bn#_An-g*Nj{Y$4;CEL@V(+t(<#MhDi6L^nxi zu2s;F9$h3~8@^Oz&D6kL?zCl?&FuedcWe>DpEQbJ32jG2_zM&eV+ zn7_)xx}{U~Ym?DhGWO(Kn5&R-H)m-kLqGAcEjSj!@ylBGyWxepF_&TVtY&3?J*OhGoM$yXh z*}i|$c3(&dSt?SMS+Xev>}$Nxr|FT3I2OvNxT1@1kz}RQ>52%k!7LU1saK^{$!nxg zOd~2?Vk<4GoPaOrN@Y~5Z61I&ehAHgYZL`s45fSb^ur6~Pwlx27%sfJhjpGOonw0w zkW6)Dj`FO%vmk2q!M@qPFKUXdrcmnsRHcXadbYl_eSc59MStGk#Wzcnvf0UgAOcTI z|K=XBDgzqHk0XA-g(vCQfeF}5oexH}n%2a>sMgZI`3L)nUA_O{d&1OX-#DoDm=DDq z3K3gTQfJNd`I}wvL!-G6jp8N-d-D0$I>R;8CgFp4gk6$xg{{E4}!R+p9RB-MK_?16-eq1P~lz;NW#Q>JO zSl!3)BV(>xRQ;5V>RS11IpG7au9rQu`lT6xU|lNtEnh^kF3WjjGej9Dw>MJR<2E|j zqlG%78D3*7x=6MAV>sBHGwSpJd<|r(!z~B{;<*@;R8_%~CiY+_9%IJ<_P}R+jvUwW z!*&c}52UKi199Dlg_Q4cptFg6eogHfj-Cu@>iBl>2a?s9?ZM!mAYrSwxZ5~*Sp-7) zstEiHC#Og;v{zSjKr&dsdG+Itcm^1&4vWSDFuzaKPdkYp7^aTxg0_sE*}$K5;Yal0 z^Sa>%64Y5SumZ8_f>?2bfJ0r=9VJF~>oGMk4y~l2o?>M0?pCMXgG{g=|Dqo6g&tsk zSJj)n(FyEEz8cjR)n*o!&95ZjdsCY%X5_Vr2=8;!eHm)5$a`Ch{h-!Z3xUL;ql1`M-|UXMo-LFcMgG#VI$u*0Ik_O-)NUnF?nGSBKfTW z=+7$$!WtoWxsP~9 zopxjOUEvaIiXXbi6}&DU9WCsbW<`qZy&^vU4tcvI{{bDM8V$zpJJtL)#Hj>hxE)_g}Bs!pi z?mZI@nGF}eavv=G%@nlc&I~l?F%Ki4!DTHKu}wW@dIiq9)8J|Oe7#HT`)N~p5MMV6 zt~O0IrNesCMQf!Yy!mPOE~@vZ{;EAh0JsdNKufLZ5$1m8yd#Sk+c?Gc2tnJO(L?_* zas1Sr>CS|4Q>RaTVxBX`X^)Ubj&gMj5<;3fp(PxPTn0XQG+bt_c<__vbAaMv9{ zh)+sKOAo;K)&JK4X6mm4jG?>xq!&et&>o^SUPZd7Be|$p!<*1|vs*!Qt(L0)6D<1Z z4p{U%o9=&yGUn>rC==9lgUhlBbQ^`iI8LX&w1qXGjQ+2hmcIZZx;49*rO=H!643u0 j%xT-yB@J^7=KnbIIPQQv-NbtfibJ delta 4799 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 DCk>n! diff --git a/_module/ncs/nw_ch_ace.ncs b/_module/ncs/nw_ch_ace.ncs index 4ad1b39eb82b9b001150daedaccb90b298fed4fc..29d75f3d066e1e729cbd9a1b028025847da6fc23 100644 GIT binary patch delta 1144 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 delta 1825 zcmb_cYfMyE5WX|}00e{z?6SMSZUF^+EW4rzY6_^>XcVQQBtnadsHnVLL=zfc5v?&T zg(=>qr9Pq(Tc|>>1w_OL5v$h9f@1O28lZrpE)|Ffl-_%nKIre>ANS0BXJ)=LGiT0c zwbG&sQpc#d%XBM@dczzByo$;kV;u2J6D2y%vn{KY!0_(yi&TnWEdPm%R&Y{C;$)h5 z!1G7BM2}O5Ro{`LHVT#sfrxcba0j(Z04rO#hq_z#`0OB8JlPD`SxGze2e9x{GXChs zo{@l@9=pa;cHmrC#dGb#!pA&O3>JPw(F!GZ+HerDb%2`{l(bJL$<;7I0-g;2$x$Yi zG4hB72{94xiiuhBs@1f#S?J1Ikc>a*+?HY@<>mFgrL~naf4<*NjwLTgiA)L%Kp+3Tu_YYkF~BIjv)4kEfS0 z%qg(m$(0oknP_$FY)*5Lg%~ z9n-ke>{i?VfqG{6-^Ux>&xc|jp%SrG7HiW*(?Lcm*1n6(@ml)+!a2+eqx72fIN(Rk zHD=r@p^}SfSh`WT$6UxI8-Qb6_~ioteRSi>Bq*W2D*@wjcB4!T$EV}P->c%ioUt|! z;TNjC>JR1Ab=4ntE+j?W2bda4S#|56fgaWE!jz?4!nLmuPSVizqqxzTj@#1mo{`LNXcE zZj{SQ`$qh`CQeLGPEAbMkd&IZAtfnwvM$6JG+7t1c5QO%dflR|&C4=ZXD&)MW$H51 zxaPZNfF`c^ULHW5IDspgui>6;bh+D`BJMXKyO2{oIA;f1(zbb$rBx4lUh+kMM~ZBV zgEic-wkkkVB;~~gl2?bE^4rzWDZ1Zo*8(?!YcVrc0P{N?DYb*wY^<6K#W&f}tqy0X zv;vdRlq`BL=`4UkYU_LlP4Rp`-sa{%jpZlt*@yU4PfNP?9oIYu#3Ay0kq(!+PhMmL zGQDJP34lSGZizypfpRPhsoOFS?on{}0o;_q$34U*jNzY-BRx~8?)MFFp8{X)!WltS z_G&rJ?kV7bhMonGMIOCjV4(Qkb+#?p;+^?{W)1pLckdi_raL%eXeiC^TLo&ar7s%o zbk>0Z1*>-hHO2NT@mB{fy+0hN{mmA+@B+Y1GCx;Q(ZF)3p}~O}_^5=^`_t&eUonWmDugT< zDPS2ke8D;?AsipNv(ZYJi&x5p)rI|933@cwv&~9~!p3~TBM0mI*;03S&$gjLtW_av zKMp+D2`X5L^?vLg6?~3nU_I23h(C9*yVcNw+vC`E8rX!}^4Z0n;7-n_G1B4TEe3j= zIf2!Bzy!>GpYk$wJec){qEBilaK~6)$$3IAcg|t&d%yzx*ibRv6AAz`p0L$kFm-Ik zw_ZZ2gN3m)trTY@x5d_uf7nDMi${FXRKQ;+7dB1{M&}GCagzTs*iYueYPMVpd6=rB Nw>B#(5_B*f{sdf)wMGB{ diff --git a/_module/ncs/pe_test.ncs b/_module/ncs/pe_test.ncs deleted file mode 100644 index 0268a86f9f9132f05ac1cedbcb48e94ac90ffee9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6478 zcmc&&O>9(E6u$3gUZ-@Z)1g&Rpbts}D?d{R${?cCGO3m6PdcSBYMe}`FQqV)G7QL0 zP1v9b5p}0*j4@FcZj6ahw}gcY7Z@=ikr)>>=>n5RtAW(>bKlIpZ)RXHwzkQ8Z|={z z=ljlg&pY=G^<~`go}KYtA=V9T6z~^zh3SNZ^{z0CrKP1sVLu|^e%lP$A<>!~$c`mP z`%`1t!Qn$G3r8#n=n#8NeK>W&WZOZbEt~20ZDDuf&j-uBFf-ESxY)Yt7_ECLxUOx& zKREObcg%?hIkaHL$jYy@{Cb0a%!>%!uTkS#1I+(u>5iEW7+X`pk<4U<`v#I@4CV$+ ze4-YZIqK>*He0lWkL7Xt1zy=ULQ}7>`bDc{i-<5lv6dXaxdDd7uH#iWG#Ma(Pi_uM%H(Fm@65XzsK-m7AXNCf)Wf zn!|LyY_xa5fb}l;>lLTHnY`zgPSQ}f$1Qkgy~57+E&}~DhaGtf@7W>92s0NY=K6=z zhcx2EDfDJ*)E@}|d#im1Y-$ z-NKO+*$Q&2$*7`Hx)R@~(x|w?G#0(nC9k~vR$9KR#`4dllDd$@Z&F6QWp?wH0ZoBC zdg?}=y=0~>(hH{>HXQ1|ytzK$5w1fz-kHX?t* z^Jd(mUanAv9gTBR;!RX}b{^J z+36c1M3`)vdH#Fae3s|ofwUeDW6X>)6?6^bb!!xi3x@xtCm|J!T{f z$o>xb$1kM?|Ap)iqCV#V-k_HhlE5Jva|;7+6auQEE_jJi_>9PAdNJ?Y9tHpKZyRl` z4#hyia5?G1BoLBAQkQQq@O6uYwSd1B;n`zX=zUV#>4@*N4~6dFHqZQjoNjyr@P=w+ z1Mo=N0F_|ZQGVGfDnCR_bl}xw@+mp`%3s7F8INje;+#j>COMi)${NCKFxP<8s>&FS z23^?)Nba`%><_aaQ5%Zkb*FaOpoy!fY%LIsFD*6d-iZTS2o-3<8r3P;VQgz*_#>xCrgR}~@$JL$$_3d&?uSSu3 zzpxHh$>)$f+2QV|Vyjo>^cV9dJH3L;igHsAP2N zb*t->SR`W}Ow zCLiV@mLd4(4~t|$JQeubBZH0B%>#L|#9Ons-bs^09bq+m;4e*g=JOeT87h#8a;M$x zVCvZZL7<&jfLY8K*?;$&h?qcbx*eaG4W82;wGZsdLmQ#- QQw<*~)l_qvs9SW!KaIvFMgRZ+ diff --git a/_module/ncs/pi_crafting.ncs b/_module/ncs/pi_crafting.ncs index 6da3d04c9d58b6aa650be87b249ad175bc843413..7ba191b5a3e5895705dd2bed35326bf640d5f018 100644 GIT binary patch delta 99 zcmaDlnQ7(}CSE`1V1+P4Jp(5OhAzp8yzL^M#_|k6AR*20|Ns9VvOuP%{KOT8lk?*^ qgjpGwPcgDEgXFmtz{=z&2NnslfmAWDZM+%C$Ibwe-fYOfr3wJZWEI!| delta 65 zcmbO^h3V;JCSE`1V1+P4Jp(5OhR&xGdD}%i{>w7}frK=}|NsAg$O4%juP3fB+|0`u S$jAPlg&8RDe{(ATmMQ?U{}oaI diff --git a/_module/ncs/pi_debug.ncs b/_module/ncs/pi_debug.ncs index 1d9a0ea808a225436600a1d8469971f852fb0163..25f33de1fdfe2279026db8c640206c68528b152f 100644 GIT binary patch delta 15 WcmeCE>8RPD#mHo2uvv%kjtu}Ucm+TJ delta 15 WcmeCE>8RPD#mHo6v{{Gojtu}UeFZ@P diff --git a/_module/ncs/pi_forcerest.ncs b/_module/ncs/pi_forcerest.ncs index 1efb01a1545e7d3537dca3216536291973808803..0466eb6ec739be76daec011d9bb7f956ff15349f 100644 GIT binary patch delta 5222 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 b{Qg%H?V-D>zvo2ze3xv16Yl4V5upDkNqF-G delta 4862 zcmds5dsviZ7N6fcGmPA32DyVcqo9b2$jvZiWfTO|Ft-wEg_tC-fs$ESYId~(h3#mc z=87VrLKqNEq2l(&e6XpOMBq0#BI+@sFZYEe87;(iT_mlPH*ELu#(Q+)9lEqZaN0vSB6 z7X%JSq#8`ak(wHCke?^hGc9uyj-@Z`=ojc^R^9Isw%0T|@jOcgSUt}=B(9~(EPv~H zhkVuH(KFml1t$p5MT%J!OaX~TT9f8R-#qBA7jbB1ZXkWTRBv%JIYJ3F)IbiGmw5;i zg8t)>qt#4!?Rs|Mj7WL3R{dr?-nac0@Sn*p(D@wyrB7W=W2!B6L7fQ#Q zwu@lAaKh>^jaePz|ADJ+!V4meYh-=bpC-%wXy@t(d`us#&PQLe@5rDPYfKnGYu4mq zrXrg)W&uB`x*WTJQp@bvDoihxnb1goEt`Wcgr8l-hON6FdxUJPHnPNb=#T4WLN62t6@?#dd?gQAiXupp;<}WCTruxuEKrIafMA-p zJ%m6N|4Q!}>a`rKfUz>FxEC+&2lt%N%i|A3`X&!k;eh&{NiiaGVk$ z_iQlX9Q|fP4kEZboyEq}vRCs^C|p+8m^?-<>voZBL6C6K@rs@bHx5FJu-d=H#A4d% zn~ixap;K{c)~F-wtjVKP^{XkE!9Pu;QJZ}59%XF07uAX>eY42~3;noh2CfQc8!OBx zqPmLNNEF{!tTD2L23oK=2hRvaeYugvcT(7v9Gnn{{aehKOuySQ6a5r}UhR*2g`TaP zfdvA4sm#b?&r#ymd^B;zL^`w82gB*o)?60-qp(<4W#Y}Mu9}5$LJnPLWHGzR{#pT^ z77C?jBW_Ut>KuBiHiHgSn=y$xs^`EgKCj$n!b?=X?LM*G3`*K=QkJ{jjtcR8&jzE% z@E}pqHM}WT5?m@ewq^h>aI18xt}&y4cGb+lXdzF3-Hc|M^Ljp33RxM#sOw~{wd06T zyi;pN3VmFg4{t7K1oa%sA*)2dRXpH{+u=tIZzLgK;9}~`d@H5Y6`)GU7r7ipoprM~ z?b>%_!%n+*4#mBeZ5r<)oZlxLvaw@ zMh8Fhd--!c=Z<8kyE)i2-u=op5bCRtUBGel^Tso zwHn>cgB#}@XQ+zkGuvJ`@44k~T?}2fi=ProyUWgb=4}^Qc!oqn)_JK3?T{#?}UB*w;vdAF1 zxU>%qZI9sBg{keSbbhmuD%*#9@ng@~v;g7|$@~D^ntx~y4PuEaDBzQGSl@i(ljJBi zVl^Ey`pQ`b=)s~FD}uxYPkC`4n81doO3%6@f(`F4)w(0n^DhInjyr*stO>zXVm4A~ zb{{%!bd!BNu!^y$5%Q~EuxW8oK4U@{a9rZg339Rz9?`MP$E6m3Ok|mHQm69FxFDqk zAd_WmmdgWhRqqu%UNmw5Ki{>I&qxHw+xo#n$Iki6O;(Iz_)PwKAUuKhe;9wkS^4a6SQrjTx)@x?J5pB+ zt|@Lt!VDac-Q(Z~)XM$iQKMyD8u{ob^c8+?gD-GO{x%7@U_U-CXWfoCuFUX`LXTq~Xjm8*;PG+zq8rnEYT zR(#q=m8X3Bc=2NLPba0*sjx16!th<@rN$?b(R#WU=7QdaUaj!aj>{K~3V79`^Qd%~~NJlbYmddj+ z1nZ^U*%;`*zI%as4YOKBpk>nKY(#JiOu|?dl5q!L$oy;s2r=a5RnTpIG>@jyXw)2A zC9gaTj8Nu`{aWbNjem>EO4ldB;@_dsiJ@HPVtkBJe1@1xotcT8IwX4*qREn|=Qm_` zY0G3};;eLGG6wfDJTF(;r}R?Ux>L70E8d_tI37DC_ZFe?M1UxD|br-^$(sbAiFF*Z ze1yUkPV8{0_opiJ^5Q$&rO_Cir!v0`{3|@+#PWesFCQEy87IT@|B^d&cm7oFkVede z=Piz~{{>&Tjp^o#fLroKhg6!2sr2DuZ(5yZpv&*+^y2&^>%uU^OWyY(+Rq^V#ev6q yvqd!bsE&`AEKbp`XRqc~EFIB13GrWxqdiLd?~_mHEy(A)c#+yMxiuf2`o96p`K#ps diff --git a/_module/ncs/pi_test.ncs b/_module/ncs/pi_test.ncs deleted file mode 100644 index 7d3ae06383e2b009b26dea7776f1218ade205e59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8555 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 T;nE@fElmyamdm&Qj??sC3PZM{ delta 4802 zcmaJ@30PD|5}vB}n0Xw^HJ~uuM#TfqD2N9HlYChPi5k&0Cayu(BStr_t8R=z68((X zc%{`|P1X}pB9}XAyMl^$j0dv2@_Ar96HS7~YrO}yyWh+(g8<(LyuYiu>aU}_tNIJi z13NsM4eCEMDx+(sE-3~ad0<ztr_Lob+Q|GJS);?;`IP=#bI5=Dt3Xl6%?pGP##M zw1KiKWOaCq@DSippZGi{@pwU8Z?rz7!xq6Wc}rXVcfyu7iaIEcfD%j=8XJPe0jx3(w{j%7L-}Aj~NLGFXN#B})aevT-$%~~h)-H@C z&$w{t1zk9Lr4Vx7`p!u>IaU{Zaz+RYN9=-bWPCviE^IA?3ap$?juliIW$jfmx-is} zCt4y8iFhd_GD^gIMIw_#|Ft7cpy<;ERbC5R$HM@_Q7VoNj*^R9wFUA2JUHS+Q(C9V z-NG;u^|>kHyQb7mIMog{rS_dut*j}vLr%5Qrqs%uYP*_JE9Gj@S)9HMzt%?&|G7bx zcS9&DG98>y1TTrI#3)AnAoSGrWn1&8^jlBr@_S6K^1A4&vYJLI3f#A&)X;+JEij(Bk!a^&>GElEG!rJpR(Z>|w>o-U5~joYXrM^81DIc`Zf!s87F z#AymYS+&n)dLA_4$kED;IpU_Iqs#^!ahfgxJ+9|x;B%K6IZjYxj<_k|2%a_Q=qyPu z3QB6I_I$0$lJEefT@s^^^+kccoQDhLDsr$W9xjt-MLk2f#82Cb zOel`bk~;QY)wOtQ=~@oEGUg%ntI~M_>=%7K%Wiuj>h`!>lx+BM1L(nD*nIn@?b1y;;m{-dS2_MpND1a<`GqWh|=q%DatR zjZJnhGU88Z~(nNVH~ zL{6CwgRbL?>M|{As+eUODXfR)n8Zl-z(A58;7`uS1(4)z9dP1V>j&Gi5yua+-m!Ky z;+Pm~tKEfOm@&=zpF^9yalkR_$EQ=gFnPYU?EEwncAG{A_resVHsJ&I(JvaJwJM|nYe^xGq8(k&clejf_Q@E3YI9@o%W-f#n( zUuR={;HeSecXGE|c;(-^;tZOoK_Qqqc>bm92*|ve;4R~q+`s&gHk-)n|WoxUBH8H zFxznGh`2wLbr=bI0C$zryJ64{fu*^mvK-Wx!;XI~^7Pu9;~kno}XTMbi~CpdIGS7hnM9 z^kP0UVIt!CQ*7p6;cXB6=0jn18PbK>U}1B!p+dnG_t?<+FwukyZc384IDs`=1hFc9 z(VWFEgGv?W_hh~+;f9KH)7azHaL$CYriqnDz`oCcJBWW?$VxZE5(Ovz-cD$$RZrGG zxAM$Q9Zz|UM$yE4D8VU%gziT`FBXEC-Z6nETU-ddttahg^NN8PajeGrGPvgHH?oxo z*=HXr@@0!BR}Lkx3HyQg;Oluh+0-X2^%RUj9I%oVorbQe_Ijqw@eq3X2gqRk&VUbM z|0kkrN`YzTU=Cu^Ui~=H*Us}a)KK%*W)IllB3yZaEvq85Ey#t}k`5}=S)Ss;<#3PBS~eF}+yk$VJP z73kjXsL_j0A&{1J8YM5q1@G|KIp7>ArfaCg=(2{VC4sA#5LxOciYnJY_}yo!_A zX~Y7+fXl3l1>=FHnb6FNJ@G3*Kd`T@^}!&v)CX4p8nejBZZZ6JZm-n%l(QMlaXF$F z?_qyzucEP8UBD*RKN#NyR5pmzPXiVdf+2{8AYrr$6`QT6_&SUt+#qtPorhX$yT4ro z-5;Me*JB1sG}K-S7J6OwnvXyS}S}HJ#GIZvJN(SG8Qu!KeRi!gL|K_ zqp@gF@a6$g!&Fb(ZvjHh@PHh@nn9Oz!~(^3o1f}9+zFnx>NII1UG^m9JsC{*wZe{U zWoJAJ`14O}bXPp2;7?KFDh&me)Dss1UYo5KZqUmp3ujSm7l!FUTq)9N@9f13cO_E? zm?%IC#xLj+z)K@VdBy@w?u~)Y@@O$Sg!oTDB`8U7E_>tJO7 diff --git a/_module/ncs/x0_ch_hen_block.ncs b/_module/ncs/x0_ch_hen_block.ncs new file mode 100644 index 0000000000000000000000000000000000000000..77b29b8c35e60873f6355a8e75bd3ccc7a6d9496 GIT binary patch literal 47 xcmeZs4ps;=)H85mU|`Uf0}>1z3Jff4AO;I717}`&d~!y7Vsa`gP=ZN;0RWpG27>?q literal 0 HcmV?d00001 diff --git a/_module/ncs/x0_ch_hen_combat.ncs b/_module/ncs/x0_ch_hen_combat.ncs new file mode 100644 index 0000000000000000000000000000000000000000..12959eaf142ca61c971bbde253e44ff61a7b43d4 GIT binary patch literal 506 zcmZvY%S*#R5XL93(h5TDL42Tw;;D*Qa`EUU-P&T4lq5cSaY!FNKtm6Tz3YGLMZ`mq zLY>`2iN!t4vdnM3@0<0U&^)gn9NGZN*EY~8nxGr7nmpqmei+AhHwg~=I2>KaPxp`1 zsVsCR<9ZF`WO)xZVLqQvrNa89g`SVDf96HJfsXImEW##dkpb`lR4lcs?Fh>W$*%Q@ z@31gJ7DdcC#crz?wjI{d3j#4fDXD}lCxo@SX!E8Y@V~tcA;CHUXN}&1Zw}lNas^e> zHM+|(_*Ir;H^s=NB$m9zcwkY^qMDyMPM598kM5K_2{)mZ~V?!$6lGH`Byx2D-dIL0>YZ%f8I2NcKHrr!vz~I+x~?6#PR~QYv3f F_yz$AbtM1* literal 0 HcmV?d00001 diff --git a/_module/ncs/x0_ch_hen_conv.ncs b/_module/ncs/x0_ch_hen_conv.ncs new file mode 100644 index 0000000000000000000000000000000000000000..2fda87c3219a11e07e226ddec204047a6e2535f8 GIT binary patch literal 258495 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

L=+D4U#-DhJ_- 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 BR=)rM literal 0 HcmV?d00001 diff --git a/_module/ncs/x0_ch_hen_rest.ncs b/_module/ncs/x0_ch_hen_rest.ncs new file mode 100644 index 0000000000000000000000000000000000000000..19d68e352a1c9f8d3f1a4ea696909f15527dce78 GIT binary patch literal 47 xcmeZs4ps;=)H85mU|`Uf0}>1z3Jff4AO;I717}`&d~!y7VsauYP=ZN;0RWo*27dqm literal 0 HcmV?d00001 diff --git a/_module/ncs/xx_pc_1_hb.ncs b/_module/ncs/xx_pc_1_hb.ncs index bb550269d6229c09647ae63276068f30505544db..f1feac4b112454f64211264050ea0aab9f2d9aa2 100644 GIT binary patch delta 1431 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 delta 3401 zcmb_edsviZ7XQxq=7z(-+<@US!vJy-MFF`e0)hrehJd>5R-}sx2&otd(ek9Cx!D?u zy_>JurkHE$`lQeZZ)|GTdZ{%N)NC_BuoY2}OONTUrL*sRGvfB_zdL_?^S$SOe&?L` ze8=~xKiR9+%$h#O`gF|r=xG98nA)tFt-!_WNueSFyM7?i3O}-2;f38N$zjC`c!|U) zW3lHuPWL4%l|D*Ypum4^B-PCnV2qZD`~cEZCW75=?-yhiK|rH7X;+%SK)P$aNTZvX z^sBUFtjY}WBwJ-xP8>1f3-bw#GNB=Z>{R)}SkhB#bSXr^BI4&}h6QAjn+5e7xtuSo zaM(rtvo5(5{Ot~M#m$PkYmyn=X^F3E9P{9WBs{R|OdPGp-Y-+199GQX2ouv7e5#2r` zIR$&r{haM?!5DyfHtW1V^by}0x*V< z;RXXudz<_9xMqYjk~eRRXRFhLq{Katx-#qk+f!WHNJt~-OO(qFz=g@8RH7kgi6q9) zJdoxL1IbC()8yB9Aqp17Ln}?!fDc(xq$16Wro&kZw|N6CD^d_cQ98CPdvwmm7By)r z3WaOrN>Ml*AR$4(Gd3z9EhbqjBiK{NSNxd{hFlG|s(fg7Z~ ze4@A?Mbc30jYD`(VA2>TW^;v9_q_YBk6|+?X8(Z<3&o zthTa4#ei!^Io`<+ExT|{hD2tqr2rrE*W+-PKZA&}?LAx-Bk@kR4M)H>a^z|jCg$4| z-+PJhE(z#01=Os4oOGHqX=!fl_L@?X*K5L>TvFB>i!bZQ_FiAOF6BzT>Yd>oJwfWq zLJ26|m5w|MV`$x%7))kekH@4ZsI>--WOb#U?7vNn%8SlfYqD`4hxw)We1 z6mWyqm%v!HJzwvdtJjGo)`y-v33@tM0#A^|KOVz(f@$4T5J1{9qv*vp@SsP_Kx^B4 zH%28+Tj)-Qbl_*Z^6;;KLE~HA0X_zsNcSXPnpTX-EJg-eH{R4S{@_oa*T9$XmGsUs zJRnPkGslfaxPG|{;`MvjydxkNab32HvTily6o1xu3~nN>33id! zJmVyv`Wt*G;>w9mUn`$w`%giX58R@Klh8m{ck#x*-vu$^PwrM)-UWd)=L+nDGb3yb z^XY~wa*Uf#xA(#C*~(rBL}+9DPyt|Ld?X71C;W=0zryWxJ^^Z4e+x2T_`e9lx1bJZ zE#a4|fwYTi;`cyJmp=_Ew!0se0G67VVE|-+i}loZ5bk4%H}x8V!#Mpnr2V#;4GqC; znJUyE-Dl(J%&UCpihhL2@DbbbqeE|WprcC?$idAj_WfNrFDe@)+1KcVW$4Q;-iJ=3 za+izr{2Vl~bDnrigFmgMe>7v-ltI@u5&UR@N&n7!_Q8W(X}JYN2{MIaAOC_kk$PG% z0b^=emIcSkc|?^Vcm{YErHA5dpmg~Jw9-SN_!4YoG569V?s&a4&hJVbs zn_7TQ)*p=qgyXFfF&FT54b6|kEf_q_5ltxdh{s;I;GkJ(Tnt9D=?TbZ`Y*ID5vO5b zF*}inIzY=D+MLYITD<8%GRD!L6VXHqCu0?Mui{(ThYn6gEgavHgdzSL9xn~oYH)7U zhoLXh)Fd=nLx250yWx>U3jd0d(_=|!#4y97^$(F>YVBLr8uIm#&7hrI0Zk4w@A9$pDeW~X;&mF z-9DEV;)BZzX<;hP#mgGXQgIINYxPw8mjZQRRG!HTc-~QpNV+ByQ}H_``z#ZiP}Y$b zERyC+23r3Dy3;Yq{NY$d>|i!_NN~>NaH@+P{>RboJbvT-dnVq)QIkh%mJGcP!?6yA ziEYY3JHY2un~OoLDHjt(JhhD7n2pKa*c{EmOR)&x@2tKIPXHcR&gL$`RySy)FCIY) z8&i$%$?=FMJ5!5i+|ZULZH4XvK3!}b&P;%B9}_Hx9c@v&bc8}VWg8oP6wPYb#-@FN swMss?N87OtHzqi+HIlplIeW7M+W_BKKy%LHVc1P|XVFM47x4Z60A{#?a{vGU diff --git a/_module/ncs/xx_pc_e_blocked.ncs b/_module/ncs/xx_pc_e_blocked.ncs index 42b3db3910387a6ac94cdece055c45a2e3cdbe07..35b29c34281071222a200b41f69c72babcf90eec 100644 GIT binary patch delta 1108 zcmaJVFefC=W{CcVe`qb!( zbyaEG3-b#~BzOW3qC0)KO1Iw1@DBQzLUvVn_k3tk$PO1B9wdVFyNq_kw%k7M9m(T|;~tZ!_EZ zg58MJLU30Q#@q{$L|-0^sduOFagv%Tb6yi>kFfvSEya+*X|$5WJW0RT9ym@&n;9JQkF>NSt!V(F8iDUWJufd*&^eP3?`C%kkz~2DMH6A|ei6<{xT1 z%{2s;9QMBA*Y-8kXwKQ<=TS}C)EbFeW#g_Awbf{TpaqUl?b zn9m6do9o0n6wSmZoN$wok7l9_$C*7F4s2${*~pR|88W@o6USP!(T)Z^Vi9Vhk;U3t zk*c3BLITM3w|dtKw1SMa>B%m10Q*?)DxAY1wq!MaVwLV(gEtBq^+`A0$(Dyfh@RV?;4(wV0f*V*7HJR;qnMMmeDoCxB6f9-67K6U|_M85q@WqS`}KC6`x z9?QRGD*rtt8^VGgxQL$7;^{uETABXS^@R3mcJ6pC)8f|&^t%>L-{xENZjwg3PC delta 876 zcmb_ZTT4_?6h7bHGsh8|ab$+k)O2(j#}U#bi8L)Qp&2PgnpTq7b9TX^FtjAPXjbY* zcV$*SL>gJyq$j&zK@t^#MnRfMLXe0LKA4(W)1EWsFK9pP_3gdBwZ3&(cr4F8lJ&V6 zTdmvTV^^k2Xg%DeZyJCf+j1$=)jz;BWcw@Et`8L&QrOLghl0tDn`~ythGZ5zoP|IZ zF%ZU%58F|sq89?K^&pq-)2xA{JY|?Lll7ynzzIWAFuf2Wx!vxCWs*2D(Q34koR(dZ zpO(cMbWs74pDkQCsFhF(!JFb$%Mr=590*|+ivi#G0SBBayvqmeu;?YbNa0g{sH|+? z-f|XTG2saBa3IFR;q49>8?NZ|4sS9^P^ESjaKohYXcJ0gHl~=_@5{b6DrA=!tsZr$ zN2Sk68r6Q4G#ZZ=tZ#P^|CI+F=6JjvfeGV(8Pndx@UzL@1PN;3q&JX`3sni?Du&s{ z2a8~4$BbHLEHERLb-j!Tm;L|hdUgJ(s&-1!{D0l3)Wrf9=db>ZsGTHIbxBj~d8~== zuZ52FID**R7ZcBkMhqDZV-a~vd1Ev-;)x2UqmfBI?^JPt6WL-w*PO6x-$hc{%G;bU z@ewDC^j0KgZJj38>to=?7*t|bIUj>!J#O>97KACjYhVFs%2y&1g_Dd?<$4ktA=bVs z87DBwm1KO!Go>>HZ#9@#j;3Rfk~0n^Hxrqw@sXnn-F#Cex=F_#MLah9lJvrcY74VI z&?#l75lU#w2ANlvB9xa<==i-FvCcQVw+07E>pC7+D=1g}S?X&Gw`N1Hi0(6hd3LUQ z1s^+$lcXY!yX!=$r|Qs8NmMD%smC4MR~G8=19+&+G{T3HW(RjS!G)iSs~J{;Vdecr HL~H*5Q>z*r diff --git a/_module/ncs/zep_gob_worg_spw.ncs b/_module/ncs/zep_gob_worg_spw.ncs index 77c6ac6bba9c8efbdf805458fef3b1816e087291..9bd7f38bfc74a976efb665c6299d25564a838e44 100644 GIT binary patch delta 2535 zcmZ`*Yg8528J%y>T$p>2hamE}JTCYM5*08aN(>^J`r>7b7?+v=u~B0+_=t&-7?Rlf zq{bfgG}ZuCQyUc&Z{-vbt*oTlT8*wM_5FypYE>i=A6Y85XJ)RcS*!hX*X%j_`_A6` zn=^A8ciOKmw)^J}8RIHQ>7AUVV93>4|6!5nF~?mH*}Mq;$?THmWFsoCu?-vcvKd=D zvXbB4hRwx_HfG9O!`SRi??7|0!PUnom$gKMvBa9)RLcHYb1ZmEFGVGf$MZT6Ifwg78d51%;oD@Q(becDgLIS*%TTF)4}A&DPQvd51r%>FVw^X_r4inFGQV9SO1 zd(paPvpyJ%4|=;ZzWNX--Rj(057<-pi8?o}Y1yJ zsc5@d+`|IVSEF||q{fOGo#M%nA8g8dwU@%r>69!S4%$rU6Diz&G?9=tL3H$|1Rym< zJReBSK%emlyD)W>_pP$IgASYW;c zdbb0H8hV>=7=;QxB9^YAYq}`uNlp?uadg3k&XwLKQMY+jDz@<+33L?BS>j;=)e$1< zxhDrrT+gH^UNVU6JYyvJ@TzC&2*Ms2opx!er^DyoCc$^D&3Ov-P(8t4Sm?5aCW*j4 zR7R>N=(JZtbze%hsUG!~x7_i9NJ^(qp?Z8bh(iPELsj)?(MAUO@=E!uh`vF4h@ZJb zAw0H%{6y)CwAzO68jSiJeD5cUMo}2y{&(WNY{~-e)`-2ilx5Rf-!y`-6^h()noFW| zEbX%6{5q@d%D?%_Lb}7>E~Ic=J|`sbBYbmItS_P=giFiCrD8gvQ8O$0MLZw0kK%Fm zEz4T;R2li%E*6+(fHVIPYo^jr!s%7w%ryFzaI!)inNB@{<`VH}1~n3n1oM?uQthOqET7aN*!_$lB#ytajC!E{i~&ZXex*3KjHUsis~BER6KtqGVDw%E(Qggi zRQ0XHjmExt?6YUOupNt{#I#STt1mvwutaYBr8r+j2^uOV3;lCy*064cxcCKK)v#ux z_)86)@+Jo{4&(ep?w_?|)$H2kzdQLjTa-=#r3E|~g@ zlMkt0#n4m6_Pa<7CoBRo<)fgYn+<(WS{|NHFiu@HKj4Q5p1(<+uMh{S^#NN8a1}xjc2- zcu6o$Af?+6pmFU!ib8_NbeuHan$L5gNJP>T`=Mw+uQsb2uZe~)-yDWeo>@t{s0zbi z!m~?7;26A4{B{^R@$D5-{>qmn&xBRC$SxK~qMDGncA=R(u@^ zUDQQm5~15Tizl*O*g|lg;1A-EgZOS@SUgq(vGP&wibM_0*S#kF6AhE$4~&7#Ch@PH zhyX&T8*R=)Z4X{yTzv)piB6&RHbsk3JneReX*zJSWjY}hJ=FHVa0|^fQNZ7X9LoYy z+x>GzOd5(|Z+BcbV}Hym2BJV*7=Svtf$wqg>w$2pXb(3Bs%ujXmeR)7-z(sSnW$FV zRe87vqmJzDw9#yl_oK1)6jO%a0Kqd*B)^C+RXm($ydEP-1dYT}!h>Vh(1vB>6k4}R z?OE#M`!-AN;v6}#d-WFhy9s6p`NnP_wCym4Gns^IG;R^Tm9O717_Fkk;cZ_!4&{U^ cOBB|VRP0P(Sv(|M@OAFVh zOxL>VecEjS1yNbVY_v;$qPdm32HKYSm4Wt<6_KW;W`le0eP`a8L5e@%oO93lo!`0l z+(U5adR3RcB-u6lG2&)&p{56I{Lk7VQWu|i zBXoft(nYe@?T-$t%Qh&$v;QP084QL!1lDH4-*mSQuhfg;H$JmPFb{QF$oP6ExwFPj z)H*vvkbUc8Kqa|#F=S7YnV6Go+?G2ahBVchNxyoVuqK~37!wU5b$^~Wq$`k!0F^{W z>O{WwWweV$p3#}i!wfBwbt37gjp6CjwbbP0nsm}yZzq4RwUb44G11nQf#^J}RHEdmrJurv<$pY}+3o{jZ_3&#*!&ZVgOL1-)?7uFqt1*AJ6 zj-0670S#nz-I1tcz3Nsa;&dM(ugqPw{xD!nESbF_3CDz!6&uE?<+DVG7@sB&ZyZE$ zqYE3C%jIpC$o(5<;jX1ZQ;#+YFXi{#YX}*zsTjN7A#XG!Vd$^PqD{|Z_QOI`i&h9P zOqX6&H>Ht<4Y^o$QhGkLhO{=U!I|mO^VyGur{P`cSvWAAocUKVzL+LG*E~(eG#)j} z-ZK(Uqr=+ny+0>?s+=uHR-Vx42yVTP6oWUrqe0Tg;-C&k$hk{UfoIq9n(I+aeIsmon7f=re zq4GG1n%5^P-{SyO{v7=**N=iwd7MDS|MrQ>Pc#7a(l4MM3qs{_5_M{ysJt@*Q27A) zS+1voPAH^3DuEEmQ$OrE zz7nbROscP!WX5g22zlii{I7)c;!!rIlsH5A>N}*ycfq$F>GbxZhReID58S&4d4YLb zXmq`AWG^!0t}U^5a-U!bnX1`qZS)e}CJ9Gt<;vg9n(Pc7t09qOc6`!}^LUSMia@FF z@elkK=rwiy9|ryby;4W;Pc#2#gKvD>z(3*q-vBp$RP;)?yf0EV@C_;(_&-6W>pX_* zQl&2SHC4aVSN-$##(8f8-^}gBtxFHrM=|(5OKh;pyBZV}s`|bi$kyr@GB_%VY}!(w z&NwET3Lhs?rRDB1Z=@kUdawKOH*?K6CDmQk+!TW4bKE8GYzS4y9~7P;S#-~KD0i2& zby~4#iF?HHITpNS4%yN^8eNBIN)kAUy(0r%i`+#W34p_=xgR+5n4;!g6Vb+<^!yZP za{r~XzfsLe7bfLH+Ma{u?n__2tf-lV(rbtCDtDjmo@d15gYHQeQvq+?<*IcQ`GTImnbuvs-H3QABzTQaeURoDRmjZ@j=Sl9`O^hygcQ0W3DUV{p%*;RNIecOFS@8dysh+HtL&5TGszHUQhK_n z4y<1KLhe>2b;dzC8=3|MXzls#4q;Sg(t>(!JTe&4IGyhI_$E#U>Y4%$HaiQBgVOW$ z)2!et*bcNa3mi1(0))_fUIi-}0`pDy=`=kLp54wuhd~^uXI_^Hv&g>7&Md z5!q4RY3G0@PJtNOau7n;w^LywqI)naT?nrr%a{RO3N~(J@qdKXCfpFkw#duz)-oB!0XzCKoIv#@n>4o2m8+*L*S+wdTJwgYnbqsEW# z3@lSHuab@IgzF0CydbjW8!>Yno7W9#CQN=_7Jz9VGX6v?033J^oB2IFf@(^)OrGHD z!b$W#2i(e9uE1@eChzt$WBjcv>C##j0AWc#dUm`GbjVK^&6ECB46$CfL|U(4ur)^5g65hFne!+|V8cd;FQ{2@iK3wmz~&Z^<2Ip*-Y%Cix}^smq77+PgwRqj8>vN-#sgw z74Y7yFtRn*MG~j>V^xE3FXFlV;$SBzo^PXBQwCajY&U-gGVv|2db%dcM5Q7Texb~TsR&(rfLN(bYTW| z#8Ey!_S0Dd&_cf%f%Y|KjFbYsvk0T;&V1a2pWQFcaw^}oe6-UcqcDnfkHCX~r!3xu vg(LZqw(zHrhMV}27LCIH03O?>jSn`c7?%UK&7|8$V|vKGq4IO?iqr6a5{IKE diff --git a/_module/ncs/zep_shrieker_spw.ncs b/_module/ncs/zep_shrieker_spw.ncs index 15933dfe43aa2c781abd040ac0f0802db0577dd9..1aef18b3544e049af262da90b2475526736017de 100644 GIT binary patch delta 2535 zcmZ`*Yg8528J%y>T$p>2hamE}JTCYM5*08aN(>^J`r>7b7?+v=u~B0+_=t&-7?Rlf zq{bfgG}ZuCQyUc&Z{-vbt*oTlT8*wM_5FypYE>i=A6Y85XJ)RcS*!hX*X%j_`_A6` zn=^A8ciOKmw)^J}8RIHQ>7AUVV93>4|6!5nF~?mH*}Mq;$?THmWFsoCu?-vcvKd=D zvXbB4hRwx_HfG9O!`SRi??7|0!PUnom$gKMvBa9)RLcHYb1ZmEFGVGf$MZT6Ifwg78d51%;oD@Q(becDgLIS*%TTF)4}A&DPQvd51r%>FVw^X_r4inFGQV9SO1 zd(paPvpyJ%4|=;ZzWNX--Rj(057<-pi8?o}Y1yJ zsc5@d+`|IVSEF||q{fOGo#M%nA8g8dwU@%r>69!S4%$rU6Diz&G?9=tL3H$|1Rym< zJReBSK%emlyD)W>_pP$IgASYW;c zdbb0H8hV>=7=;QxB9^YAYq}`uNlp?uadg3k&XwLKQMY+jDz@<+33L?BS>j;=)e$1< zxhDrrT+gH^UNVU6JYyvJ@TzC&2*Ms2opx!er^DyoCc$^D&3Ov-P(8t4Sm?5aCW*j4 zR7R>N=(JZtbze%hsUG!~x7_i9NJ^(qp?Z8bh(iPELsj)?(MAUO@=E!uh`vF4h@ZJb zAw0H%{6y)CwAzO68jSiJeD5cUMo}2y{&(WNY{~-e)`-2ilx5Rf-!y`-6^h()noFW| zEbX%6{5q@d%D?%_Lb}7>E~Ic=J|`sbBYbmItS_P=giFiCrD8gvQ8O$0MLZw0kK%Fm zEz4T;R2li%E*6+(fHVIPYo^jr!s%7w%ryFzaI!)inNB@{<`VH}1~n3n1oM?uQthOqET7aN*!_$lB#ytajC!E{i~&ZXex*3KjHUsis~BER6KtqGVDw%E(Qggi zRQ0XHjmExt?6YUOupNt{#I#STt1mvwutaYBr8r+j2^uOV3;lCy*064cxcCKK)v#ux z_)86)@+Jo{4&(ep?w_?|)$H2kzdQLjTa-=#r3E|~g@ zlMkt0#n4m6_Pa<7CoBRo<)fgYn+<(WS{|NHFiu@HKj4Q5p1(<+uMh{S^#NN8a1}xjc2- zcu6o$Af?+6pmFU!ib8_NbeuHan$L5gNJP>T`=Mw+uQsb2uZe~)-yDWeo>@t{s0zbi z!m~?7;26A4{B{^R@$D5-{>qmn&xBRC$SxK~qMDGncA=R(u@^ zUDQQm5~15Tizl*O*g|lg;1A-EgZOS@SUgq(vGP&wibM_0*S#kF6AhE$4~&7#Ch@PH zhyX&T8*R=)Z4X{yTzv)piB6&RHbsk3JneReX*zJSWjY}hJ=FHVa0|^fQNZ7X9LoYy z+x>GzOd5(|Z+BcbV}Hym2BJV*7=Svtf$wqg>w$2pXb(3Bs%ujXmeR)7-z(sSnW$FV zRe87vqmJzDw9#yl_oK1)6jO%a0Kqd*B)^C+RXm($ydEP-1dYT}!h>Vh(1vB>6k4}R z?OE#M`!-AN;v6}#d-WFhy9s6p`NnP_wCym4Gns^IG;R^Tm9O717_Fkk;cZ_!4&{U^ cOBB|VRP0P(Sv(|M@OAFVh zOxL>VecEjS1yNbVY_v;$qPdm32HKYSm4Wt<6_KW;W`le0eP`a8L5e@%oO93lo!`0l z+(U5adR3RcB-u6lG2&)&p{56I{Lk7VQWu|i zBXoft(nYe@?T-$t%Qh&$v;QP084QL!1lDH4-*mSQuhfg;H$JmPFb{QF$oP6ExwFPj z)H*vvkbUc8Kqa|#F=S7YnV6Go+?G2ahBVchNxyoVuqK~37!wU5b$^~Wq$`k!0F^{W z>O{WwWweV$p3#}i!wfBwbt37gjp6CjwbbP0nsm}yZzq4RwUb44G11nQf#^J}RHEdmrJurv<$pY}+3o{jZ_3&#*!&ZVgOL1-)?7uFqt1*AJ6 zj-0670S#nz-I1tcz3Nsa;&dM(ugqPw{xD!nESbF_3CDz!6&uE?<+DVG7@sB&ZyZE$ zqYE3C%jIpC$o(5<;jX1ZQ;#+YFXi{#YX}*zsTjN7A#XG!Vd$^PqD{|Z_QOI`i&h9P zOqX6&H>Ht<4Y^o$QhGkLhO{=U!I|mO^VyGur{P`cSvWAAocUKVzL+LG*E~(eG#)j} z-ZK(Uqr=+ny+0>?s+=uHR-Vx42yVTP6oWUrqe0Tg;-C&k$hk{UfoIq9n(I+aeIsmon7f=re zq4GG1n%5^P-{SyO{v7=**N=iwd7MDS|MrQ>Pc#7a(l4MM3qs{_5_M{ysJt@*Q27A) zS+1voPAH^3DuEEmQ$OrE zz7nbROscP!WX5g22zlii{I7)c;!!rIlsH5A>N}*ycfq$F>GbxZhReID58S&4d4YLb zXmq`AWG^!0t}U^5a-U!bnX1`qZS)e}CJ9Gt<;vg9n(Pc7t09qOc6`!}^LUSMia@FF z@elkK=rwiy9|ryby;4W;Pc#2#gKvD>z(3*q-vBp$RP;)?yf0EV@C_;(_&-6W>pX_* zQl&2SHC4aVSN-$##(8f8-^}gBtxFHrM=|(5OKh;pyBZV}s`|bi$kyr@GB_%VY}!(w z&NwET3Lhs?rRDB1Z=@kUdawKOH*?K6CDmQk+!TW4bKE8GYzS4y9~7P;S#-~KD0i2& zby~4#iF?HHITpNS4%yN^8eNBIN)kAUy(0r%i`+#W34p_=xgR+5n4;!g6Vb+<^!yZP za{r~XzfsLe7bfLH+Ma{u?n__2tf-lV(rbtCDtDjmo@d15gYHQeQvq+?<*IcQ`GTImnbuvs-H3QABzTQaeURoDRmjZ@j=Sl9`O^hygcQ0W3DUV{p%*;RNIecOFS@8dysh+HtL&5TGszHUQhK_n z4y<1KLhe>2b;dzC8=3|MXzls#4q;Sg(t>(!JTe&4IGyhI_$E#U>Y4%$HaiQBgVOW$ z)2!et*bcNa3mi1(0))_fUIi-}0`pDy=`=kLp54wuhd~^uXI_^Hv&g>7&Md z5!q4RY3G0@PJtNOau7n;w^LywqI)naT?nrr%a{RO3N~(J@qdKXCfpFkw#duz)-oB!0XzCKoIv#@n>4o2m8+*L*S+wdTJwgYnbqsEW# z3@lSHuab@IgzF0CydbjW8!>Yno7W9#CQN=_7Jz9VGX6v?033J^oB2IFf@(^)OrGHD z!b$W#2i(e9uE1@eChzt$WBjcv>C##j0AWc#dUm`GbjVK^&6ECB46$CfL|U(4ur)^5g65hFne!+|V8cd;FQ{2@iK3wmz~&Z^<2Ip*-Y%Cix}^smq77+PgwRqj8>vN-#sgw z74Y7yFtRn*MG~j>V^xE3FXFlV;$SBzo^PXBQwCajY&U-gGVv|2db%dcM5Q7Texb~TsR&(rfLN(bYTW| z#8Ey!_S0Dd&_cf%f%Y|KjFbYsvk0T;&V1a2pWQFcaw^}oe6-UcqcDnfkHCX~r!3xu vg(LZqw(zHrhMV}27LCIH03O?>jSn`c7?%UK&7|8$V|vKGq4IO?iqr6a5{IKE diff --git a/_module/nss/0e_c2_7_ondeath.nss b/_module/nss/0e_c2_7_ondeath.nss index 129e81ec..7d9570eb 100644 --- a/_module/nss/0e_c2_7_ondeath.nss +++ b/_module/nss/0e_c2_7_ondeath.nss @@ -11,17 +11,19 @@ void main() object oCreature = OBJECT_SELF; // Added code to allow for permanent associates in the battle! object oModule = GetModule(); + if(AI_DEBUG) ai_Debug("0e_c2_7_ondeath", "14", "AI_RULE_PERM_ASSOC: " + IntToString(GetLocalInt(oModule, AI_RULE_PERM_ASSOC))); if(GetLocalInt(oModule, AI_RULE_PERM_ASSOC)) { object oAssociate; int nIndex; - for(nIndex = 1; nIndex < 5; nIndex++) + for(nIndex = 2; nIndex < 6; nIndex++) { oAssociate = GetAssociate(nIndex, oCreature); if(oAssociate != OBJECT_INVALID) { - SetIsDestroyable(FALSE, FALSE, FALSE); + SetIsDestroyable(FALSE, FALSE, FALSE, oAssociate); DelayCommand(0.1, ChangeToStandardFaction(oAssociate, STANDARD_FACTION_HOSTILE)); + DelayCommand(3.0, SetIsDestroyable(TRUE, FALSE, FALSE, oAssociate)); } } } diff --git a/_module/nss/0e_ch_7_ondeath.nss b/_module/nss/0e_ch_7_ondeath.nss index 76d955df..bb365524 100644 --- a/_module/nss/0e_ch_7_ondeath.nss +++ b/_module/nss/0e_ch_7_ondeath.nss @@ -17,13 +17,14 @@ void main() { object oAssociate; int nIndex; - for(nIndex = 2; nIndex < 5; nIndex++) + for(nIndex = 2; nIndex < 6; nIndex++) { oAssociate = GetAssociate(nIndex, oCreature); if(oAssociate != OBJECT_INVALID) { - SetIsDestroyable(FALSE, FALSE, FALSE); - ChangeFaction(oAssociate, oCreature); + SetIsDestroyable(FALSE, FALSE, FALSE, oAssociate); + DelayCommand(0.1, ChangeToStandardFaction(oAssociate, STANDARD_FACTION_HOSTILE)); + DelayCommand(3.0, SetIsDestroyable(TRUE, FALSE, FALSE, oAssociate)); } } } diff --git a/_module/nss/0e_id_events.nss b/_module/nss/0e_id_events.nss new file mode 100644 index 00000000..c68e74c9 --- /dev/null +++ b/_module/nss/0e_id_events.nss @@ -0,0 +1,277 @@ +/*////////////////////////////////////////////////////////////////////////////// +// Script Name: 0e_id_events +//////////////////////////////////////////////////////////////////////////////// + Infinite Dungeons monster event handler. +*/////////////////////////////////////////////////////////////////////////////// +#include "0i_actions" +#include "x0_i0_assoc" +// Followers special heartbeat script. +void ai_hen_id1_heart(object oCreature); +// Followers special conversation script. +void ai_hen_id1_convo(object oCreature, int nMatch); +// Followers special perception script. +void ai_hen_id1_percept(object oCreature); +// Followers special end of round script. +void ai_hen_id1_endcombat(object oCreature, int bFollower); +// Followers special castat script. +void ai_hen_id1_castat(object oCreature); + +void main() +{ + object oCreature = OBJECT_SELF; + int nEvent = GetCurrentlyRunningEvent(); + int bFollower = GetLocalInt(oCreature, "bFollower"); + //WriteTimestampedLogEntry("0e_id_events [24] " + GetName(oCreature) + " nEvent: " + IntToString(nEvent) + + // " bFollower: " + IntToString(bFollower)); + switch (nEvent) + { + case EVENT_SCRIPT_CREATURE_ON_HEARTBEAT: + { + if(bFollower) ai_hen_id1_heart(oCreature); + else ExecuteScript("nw_c2_default1", oCreature); + break; + } + case EVENT_SCRIPT_CREATURE_ON_NOTICE: + { + if(bFollower) ai_hen_id1_percept(oCreature); + else ExecuteScript("nw_c2_default2", oCreature); + break; + } + case EVENT_SCRIPT_CREATURE_ON_DIALOGUE: + { + int nMatch = GetListenPatternNumber(); + if(nMatch == -1) + { + if(ai_GetIsBusy(oCreature) || ai_Disabled(oCreature) || + GetLocalInt(oCreature, AI_AM_I_SEARCHING)) return; + ai_ClearCreatureActions(); + string sConversation = GetLocalString(oCreature, "sConversation"); + if(sConversation != "") BeginConversation(sConversation); + else BeginConversation(); + } + if(bFollower) ai_hen_id1_convo(oCreature, nMatch); + else ExecuteScript("nw_c2_default4", oCreature); + break; + } + case EVENT_SCRIPT_CREATURE_ON_MELEE_ATTACKED: + { + if(bFollower) ExecuteScript("nw_ch_ac5", oCreature); + else ExecuteScript("nw_c2_default5", oCreature); + break; + } + case EVENT_SCRIPT_CREATURE_ON_DAMAGED: + { + if(bFollower) ExecuteScript("nw_ch_ac6", oCreature); + else ExecuteScript("nw_c2_default6", oCreature); + break; + } + case EVENT_SCRIPT_CREATURE_ON_SPELLCASTAT: + { + if(bFollower) ai_hen_id1_castat(oCreature); + else ExecuteScript("nw_c2_defaultb", oCreature); + break; + } + case EVENT_SCRIPT_CREATURE_ON_END_COMBATROUND: + { + ai_hen_id1_endcombat(oCreature, bFollower); + break; + } + case EVENT_SCRIPT_CREATURE_ON_BLOCKED_BY_DOOR: + { + if(bFollower) ExecuteScript("nw_ch_ace", oCreature); + else ExecuteScript("nw_c2_defaulte", oCreature); + break; + } + case EVENT_SCRIPT_CREATURE_ON_RESTED: + { + if(bFollower) ExecuteScript("nw_ch_aca", oCreature); + break; + } + case EVENT_SCRIPT_CREATURE_ON_DISTURBED: + { + if(bFollower) ExecuteScript("nw_ch_ac8", oCreature); + else ExecuteScript("nw_c2_default8", oCreature); + break; + } + case EVENT_SCRIPT_CREATURE_ON_DEATH: + { + if(bFollower) ExecuteScript("nw_ch_ac7", oCreature); + else + { + ExecuteScript("nw_c2_default7", oCreature); + } + break; + } + } +} + +void ai_hen_id1_heart(object oCreature) +{ + // Sometimes they slip out of this mode! + if(GetAssociateState(NW_ASC_MODE_DYING, oCreature) && + GetCommandable()) + { + ActionPlayAnimation(ANIMATION_LOOPING_DEAD_FRONT, 1.0, 65.0); + SetCommandable(FALSE); + } + ExecuteScript("nw_ch_ac1", oCreature); +} +void ai_hen_id1_convo(object oCreature, int nMatch) +{ + if(nMatch == ASSOCIATE_COMMAND_INVENTORY) + { + // * cannot modify disabled equipment + if(!GetLocalInt(OBJECT_SELF, "X2_JUST_A_DISABLEEQUIP")) + { + OpenInventory(oCreature, GetLastSpeaker()); + } + // * feedback as to why + else SendMessageToPCByStrRef(GetMaster(), 100895); + return; + } + else if(nMatch == ASSOCIATE_COMMAND_LEAVEPARTY) + { + object oMaster = GetMaster(); + string sTag = GetTag(GetArea(oMaster)); + // * henchman cannot be kicked out in the reaper realm + // * Followers can never be kicked out + if (sTag == "GatesofCania" || GetIsFollower(oCreature)) return; + if(GetIsObjectValid(oMaster)) + { + ai_ClearCreatureActions(); + if(GetAssociateType(oCreature) == ASSOCIATE_TYPE_HENCHMAN) + { + string sConversation = GetLocalString(oCreature, "sConversation"); + if (sConversation == "id1_plotgiver") + { + string sVariable = GetLocalString(oCreature, "sVariable"); + object oDungeon = GetLocalObject(GetModule(), "oCurrentDungeon"); + SetLocalInt(oDungeon, "b" + sVariable + "Gone", FALSE); + } + RemoveHenchman(oMaster); + DestroyObject(oCreature); + } + } + return; + } + ExecuteScript("nw_ch_ac4", oCreature); +} +void ai_hen_id1_percept(object oCreature) +{ + // If henchman is dying and Player disappears then force a respawn of the henchman + if (GetIsHenchmanDying(oCreature)) + { + // The henchman must be removed otherwise their corpse will follow the player + object oOldMaster = GetMaster(); + object oPC = GetLastPerceived(); + int bVanish = GetLastPerceptionVanished(); + if(GetIsObjectValid(oPC) && bVanish) + { + if (oPC == oOldMaster) + { + RemoveHenchman(oPC, oCreature); + // Only in chapter 1 + if(GetTag(GetModule()) == "x0_module1") + { + SetCommandable(TRUE); + DoRespawn(oPC, oCreature); // Should teleport henchman back + } + } + } + } + ExecuteScript("nw_ch_ac2", oCreature); +} +void ai_hen_id1_endcombat(object oCreature, int bFollower) +{ + if (ai_GetIsInCombat(oCreature)) + { + int nNum; + int nLine; + string sString; + int nCreature; + int bIntelligent; + int nRandom = d100(); + // chance of a oneliner + int nOnelinerPercentage = GetLocalInt(GetModule(), "nFlagCombatOneLinerFrequencyValue"); + if(nRandom <= nOnelinerPercentage) + { + string sCreature = GetLocalString(oCreature, "sVariable"); + // if the current creature is hostile towards PCs + if(sCreature != "") + { + object oDungeon = GetLocalObject(GetModule(), "oCurrentDungeon"); + if(GetIsReactionTypeHostile(GetFirstPC())) + { + nCreature = GetLocalInt(oDungeon, "n" + sCreature); + bIntelligent = GetLocalInt(oDungeon, "bListCreature" + IntToString(nCreature) + "Intelligent"); + if(bIntelligent) + { + nNum = GetLocalInt(GetModule(), "nLinesHostileNum"); + nLine = Random(nNum) + 1; + if(nLine > 0) + { + sString = GetLocalString(GetModule(), "sLinesHostile" + IntToString(nLine)); + SpeakString(sString, TALKVOLUME_SHOUT); + } + } + } + else + { + nCreature = GetLocalInt(oDungeon, "n" + sCreature); + bIntelligent = GetLocalInt(oDungeon, "bListCreature" + IntToString(nCreature) + "Intelligent"); + if(bIntelligent) + { + nNum = GetLocalInt(GetModule(), "nLinesAlliesNum"); + nLine = Random(nNum) + 1; + if (nLine > 0) + { + sString = GetLocalString(GetModule(), "sLinesAllies" + IntToString(nLine)); + SpeakString(sString, TALKVOLUME_SHOUT); + } + } + } + } + } + } + if(bFollower) ExecuteScript("nw_ch_ac3", oCreature); + else ExecuteScript("nw_c2_default3", oCreature); +} +void ai_hen_id1_castat(object oCreature) +{ + if(!GetLastSpellHarmful()) + { + int nSpell = GetLastSpell(); + if(nSpell == SPELL_RAISE_DEAD || nSpell == SPELL_RESURRECTION) + { + object oCaster = GetLastSpellCaster(); + // Restore faction to neutral + SetStandardFactionReputation(STANDARD_FACTION_MERCHANT, 100, oCaster); + SetStandardFactionReputation(STANDARD_FACTION_COMMONER, 100, oCaster); + SetStandardFactionReputation(STANDARD_FACTION_DEFENDER, 100, oCaster); + ClearPersonalReputation(oCaster, oCreature); + AssignCommand(oCreature, SurrenderToEnemies()); + AssignCommand(oCreature, ai_ClearCreatureActions(TRUE)); + // Reset henchmen attack state - Oct 28 (BK) + ai_SetAIMode(oCreature, AI_MODE_DEFEND_MASTER, FALSE); + ai_SetAIMode(oCreature, AI_MODE_STAND_GROUND, FALSE); + ai_SetAIMode(oCreature, AI_MODE_SCOUT_AHEAD, FALSE); + ai_SetAIMode(oCreature, AI_MODE_SCOUT_AHEAD, FALSE); + ai_SetAIMode(oCreature, AI_MODE_COMMANDED, FALSE); + // Oct 30 - If player previously hired this hench + // then just have them rejoin automatically + if(GetPlayerHasHired(oCaster, oCreature)) + { + // Feb 11, 2004 - Jon: Don't fire the HireHenchman function if the + // henchman is already oCaster's associate. Fixes a silly little problem + // that occured when you try to raise a henchman who wasn't actually dead. + if(GetMaster(oCreature)!= oCaster) HireHenchman(oCaster, oCreature, TRUE); + } + else + { + string sFile = GetDialogFileToUse(oCaster); + AssignCommand(oCaster, ActionStartConversation(oCreature, sFile)); + } + } + } + ExecuteScript("nw_ch_acb", oCreature); +} diff --git a/_module/nss/0e_nui.nss b/_module/nss/0e_nui.nss index 7d18c65e..aa5dd967 100644 --- a/_module/nss/0e_nui.nss +++ b/_module/nss/0e_nui.nss @@ -1311,7 +1311,8 @@ void main() jWidget = JsonArray(); if(JsonGetLength(jSpells) == 2) jSpells = JsonArrayInsert(jSpells, JsonArray()); } - if(JsonGetLength(jWidget) < 20) + int nWidgetLength = JsonGetLength(jWidget); + if(nWidgetLength < 20) { json jData = NuiGetUserData(oPC, nToken); json jQuickListArray = JsonArrayGet(jData, 1); @@ -1320,8 +1321,7 @@ void main() jSpells = JsonArraySet(jSpells, 2, jWidget); jAIData = JsonArraySet(jAIData, 10, jSpells); ai_SetAssociateDbJson(oPC, sAssociateType, "aidata", jAIData); - DelayCommand(0.0, NuiDestroy(oPC, nToken)); - DelayCommand(0.1, ai_CreateQuickWidgetSelectionNUI(oPC, oAssociate)); + ai_PopulateWidgetList(oPC, oAssociate, nToken, jWidget); } else ai_SendMessages("The quick widget can only have 20 abilities or spells!", AI_COLOR_RED, oPC); } @@ -1331,7 +1331,7 @@ void main() json jSpell = JsonArrayGet(jQuickListArray, nIndex); ai_CreateDescriptionNUI(oPC, jSpell); } - else if(GetStringLeft(sElem, 11) == "btn_widget_") + else if(GetStringLeft(sElem, 11) == "btn_widget_") // Removes ability from quick use widget { string sIndex; if(GetStringLength(sElem) == 13) sIndex = GetStringRight(sElem, 2); @@ -1343,8 +1343,7 @@ void main() jSpells = JsonArraySet(jSpells, 2, jWidget); jAIData = JsonArraySet(jAIData, 10, jSpells); ai_SetAssociateDbJson(oPC, sAssociateType, "aidata", jAIData); - DelayCommand(0.0, NuiDestroy(oPC, nToken)); - DelayCommand(0.1, ai_CreateQuickWidgetSelectionNUI(oPC, oAssociate)); + ai_PopulateWidgetList(oPC, oAssociate, nToken, jWidget); } } else if(sEvent == "close") @@ -1393,23 +1392,22 @@ void main() int nClass = GetClassByPosition(JsonGetInt(JsonArrayGet(jSpells, 0)), oAssociate); int nLevel = JsonGetInt(JsonArrayGet(jSpells, 1)); json jSpellArray = JsonArrayGet(jData, 1); + int nSpell = JsonGetInt(JsonArrayGet(jSpellArray, nIndex)); + string sClass = GetStringByStrRef(StringToInt(Get2DAString("classes", "Name", nClass))); + string sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + string sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); + int nSlot; int nMaxMemorizationSlot = GetMemorizedSpellCountByLevel(oAssociate, nClass, nLevel); - int nSlot, nSpell; + string sSlot; while(nSlot < nMaxMemorizationSlot) { if(GetMemorizedSpellId(oAssociate, nClass, nLevel, nSlot) == -1) { - nSpell = JsonGetInt(JsonArrayGet(jSpellArray, nIndex)); SetMemorizedSpell(oAssociate, nClass, nLevel, nSlot, nSpell, FALSE); - //NuiDestroy(oPC, nToken); - //ai_CreateSpellMemorizationNUI(oPC, oAssociate); - string sClass = GetStringByStrRef(StringToInt(Get2DAString("classes", "Name", nClass))); - string sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); - string sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); - string sIndex = IntToString(nSlot); - NuiSetBind(oPC, nToken, "btn_memorized_" + sIndex + "_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_memorized_" + sIndex + "_image", JsonString(sSpellIcon)); - NuiSetBind(oPC, nToken, "btn_memorized_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sClass + " / " + IntToString(nLevel) + ")")); + sSlot = IntToString(nSlot); + NuiSetBind(oPC, nToken, "btn_memorized_" + sSlot + "_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_memorized_" + sSlot + "_image", JsonString(sSpellIcon)); + NuiSetBind(oPC, nToken, "btn_memorized_" + sSlot + "_tooltip", JsonString(" " + sName + " (" + sClass + " / " + IntToString(nLevel) + ")")); return; } nSlot++; @@ -1422,19 +1420,17 @@ void main() int nSpell = JsonGetInt(JsonArrayGet(jSpellArray, nIndex)); ai_CreateDescriptionNUI(oPC, JsonArray(), nSpell); } - else if(GetStringLeft(sElem, 14) == "btn_memorized_") + else if(GetStringLeft(sElem, 14) == "btn_memorized_") // Remove memorized spell. { json jAIData = ai_GetAssociateDbJson(oPC, sAssociateType, "aidata"); json jSpells = JsonArrayGet(jAIData, 10); int nClass = GetClassByPosition(JsonGetInt(JsonArrayGet(jSpells, 0)), oAssociate); int nLevel = JsonGetInt(JsonArrayGet(jSpells, 1)); - string sIndex = GetStringRight(sElem, 1); - ClearMemorizedSpell(oAssociate, nClass, nLevel, StringToInt(sIndex)); - NuiSetBind(oPC, nToken, "btn_memorized_" + sIndex + "_image", JsonString("ctl_cg_btn_splvl")); - NuiSetBind(oPC, nToken, "btn_memorized_" + sIndex + "_tooltip", JsonString("")); - NuiSetBind(oPC, nToken, "btn_memorized_" + sIndex + "_event", JsonBool(FALSE)); - //NuiDestroy(oPC, nToken); - //ai_CreateSpellMemorizationNUI(oPC, oAssociate); + string sSlot = GetStringRight(sElem, 1); + ClearMemorizedSpell(oAssociate, nClass, nLevel, StringToInt(sSlot)); + NuiSetBind(oPC, nToken, "btn_memorized_" + sSlot + "_image", JsonString("ctl_cg_btn_splvl")); + NuiSetBind(oPC, nToken, "btn_memorized_" + sSlot + "_tooltip", JsonString("")); + NuiSetBind(oPC, nToken, "btn_memorized_" + sSlot + "_event", JsonBool(FALSE)); } } else if(sEvent == "close") @@ -1500,6 +1496,7 @@ void main() jKnownList = JsonArray(); } int nMaxKnownSlots, nSlot; + string sClass, sName, sSpellIcon, sSlot; string sSpellKnownTable = Get2DAString("classes", "SpellKnownTable", nClass); if(sSpellKnownTable != "") nMaxKnownSlots = StringToInt(Get2DAString(sSpellKnownTable, "SpellLevel" + sLevel, GetLevelByClass(nClass, oAssociate) - 1)); else nMaxKnownSlots = 20; @@ -1511,13 +1508,13 @@ void main() jSpell = GffAddWord(JsonObject(), "Spell", nSpell); jSpell = JsonObjectSet(jSpell, "__struct_id", JsonInt(3)); jKnownList = JsonArrayInsert(jKnownList, jSpell); - string sClass = GetStringByStrRef(StringToInt(Get2DAString("classes", "Name", nClass))); - string sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); - string sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); - string sIndex = IntToString(nSlot); - NuiSetBind(oPC, nToken, "btn_known_" + sIndex + "_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_known_" + sIndex + "_image", JsonString(sSpellIcon)); - NuiSetBind(oPC, nToken, "btn_known_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sClass + " / " + sLevel + ")")); + sClass = GetStringByStrRef(StringToInt(Get2DAString("classes", "Name", nClass))); + sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); + sSlot = IntToString(nSlot); + NuiSetBind(oPC, nToken, "btn_known_" + sSlot + "_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_known_" + sSlot + "_image", JsonString(sSpellIcon)); + NuiSetBind(oPC, nToken, "btn_known_" + sSlot + "_tooltip", JsonString(" " + sName + " (" + sClass + " / " + sLevel + ")")); SetLocalInt(oAssociate, "AI_KNOWN_SPELL_CHANGE", TRUE); break; } diff --git a/_module/nss/0i_constants.nss b/_module/nss/0i_constants.nss index 5413ac4d..bb7dbe82 100644 --- a/_module/nss/0i_constants.nss +++ b/_module/nss/0i_constants.nss @@ -7,7 +7,7 @@ Changes to any constants will not take effect until the scripts are recompiled. */////////////////////////////////////////////////////////////////////////////// -const string PHILOS_VERSION = "Philos' Enhancing Player System (PEPS) version:07.12.25"; +const string PHILOS_VERSION = "Philos' Enhancing Player System (PEPS) version:07.20.25"; // The following constants are designed to be changed to allow the AI to work // differently based on what a developer wants. // If you change these constants make sure the database has been removed diff --git a/_module/nss/0i_main.nss b/_module/nss/0i_main.nss index a0a46741..e32aa716 100644 --- a/_module/nss/0i_main.nss +++ b/_module/nss/0i_main.nss @@ -121,9 +121,8 @@ void ai_SetAIRules() json jRules = ai_GetCampaignDbJson("rules"); if(JsonGetType(JsonObjectGet(jRules, AI_RULE_MORAL_CHECKS)) == JSON_TYPE_NULL) { - jRules = JsonObject(); // Variable name set to a creatures full name to set debugging on. - jRules = JsonObjectSet(jRules, AI_RULE_DEBUG_CREATURE, JsonString("")); + jRules = JsonObjectSet(JsonObject(), AI_RULE_DEBUG_CREATURE, JsonString("")); // Moral checks on or off. SetLocalInt(oModule, AI_RULE_MORAL_CHECKS, AI_MORAL_CHECKS); jRules = JsonObjectSet(jRules, AI_RULE_MORAL_CHECKS, JsonInt(AI_MORAL_CHECKS)); @@ -702,28 +701,48 @@ void ai_CheckAssociateDataAndInitialize(object oPlayer, string sAssociateType) string ai_GetAssociateType(object oPlayer, object oAssociate) { if(GetIsPC(oAssociate)) return "pc"; + int nIndex = 1; string sAITag = GetLocalString(oAssociate, AI_TAG); + object oCreature; if(sAITag == "") { int nAssociateType = GetAssociateType(oAssociate); - if(nAssociateType == ASSOCIATE_TYPE_ANIMALCOMPANION) sAITag = "companion"; - else if(nAssociateType == ASSOCIATE_TYPE_FAMILIAR) sAITag = "familiar"; - else if(nAssociateType == ASSOCIATE_TYPE_SUMMONED) sAITag = "summons"; - else if(nAssociateType == ASSOCIATE_TYPE_DOMINATED) sAITag = "dominated"; - else if(nAssociateType == ASSOCIATE_TYPE_HENCHMAN) sAITag = GetTag(oAssociate); - string sCurrentAITag; - // Check for duplicate tags and change. - int nIndex; - object oCreature; - for(nIndex = 1; nIndex <= AI_MAX_HENCHMAN; nIndex++) + if(nAssociateType == ASSOCIATE_TYPE_HENCHMAN) { + sAITag = GetTag(oAssociate); oCreature = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPlayer, nIndex); - if(oAssociate != oCreature && sAITag == GetTag(oCreature)) sAITag += IntToString(Random(1000)); + // Check for duplicate tags and change. + while(nIndex <= AI_MAX_HENCHMAN && oCreature != OBJECT_INVALID) + { + if(oAssociate != oCreature && sAITag == GetTag(oCreature)) + { + sAITag += IntToString(Random(1000)); + break; + } + oCreature = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPlayer, ++nIndex); + } } - for(nIndex = 2; nIndex < 6; nIndex++) + else if(nAssociateType == ASSOCIATE_TYPE_SUMMONED) { - oCreature = GetAssociate(nIndex, oPlayer, 1); - if(oAssociate != oCreature && sAITag == GetTag(oCreature)) sAITag += IntToString(Random(1000)); + int nCounter; + sAITag = GetTag(oAssociate); + oCreature = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPlayer, nIndex); + while(nIndex <= 10 && oCreature != OBJECT_INVALID) + { + if(oAssociate != oCreature && sAITag == GetTag(oCreature)) + { + nCounter++; + sAITag += IntToString(nCounter); + nIndex = 0; + } + oCreature = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPlayer, ++nIndex); + } + } + else + { + if(nAssociateType == ASSOCIATE_TYPE_ANIMALCOMPANION) sAITag = "companion"; + else if(nAssociateType == ASSOCIATE_TYPE_FAMILIAR) sAITag = "familiar"; + else if(nAssociateType == ASSOCIATE_TYPE_DOMINATED) sAITag = "dominated"; } SetLocalString(oAssociate, AI_TAG, sAITag); } @@ -773,7 +792,7 @@ float ai_GetAssociateDbFloat(object oPlayer, string sAssociatetype, string sData } void ai_SetAssociateDbJson(object oPlayer, string sAssociateType, string sDataField, json jData, string sTable = AI_TABLE) { - //SendMessageToPC(oPlayer, "0i_main, 629, Set DbJson - sAssociateType: " + sAssociateType + " sDataField: " + sDataField + " jData: " + JsonDump(jData)); + //SendMessageToPC(oPlayer, "0i_main, 777, Set DbJson - sAssociateType: " + sAssociateType + " sDataField: " + sDataField + " jData: " + JsonDump(jData)); string sQuery = "UPDATE " + sTable + " SET " + sDataField + " = @data WHERE name = @name;"; sqlquery sql = SqlPrepareQueryObject(oPlayer, sQuery); @@ -783,7 +802,7 @@ void ai_SetAssociateDbJson(object oPlayer, string sAssociateType, string sDataFi } json ai_GetAssociateDbJson(object oPlayer, string sAssociateType, string sDataField, string sTable = AI_TABLE) { - //SendMessageToPC(oPlayer, "0i_main, 638, Get DbJson - sAssociateType: " + sAssociateType + " sDataField: " + sDataField); + //SendMessageToPC(oPlayer, "0i_main, 787, Get DbJson - sAssociateType: " + sAssociateType + " sDataField: " + sDataField); string sQuery = "SELECT " + sDataField + " FROM " + sTable + " WHERE name = @name;"; sqlquery sql = SqlPrepareQueryObject(oPlayer, sQuery); SqlBindString (sql, "@name", sAssociateType); @@ -1082,7 +1101,7 @@ void ai_CheckAssociateData(object oPlayer, object oAssociate, string sAssociateT // These are pulled straight from the database. // ********** Locations ********** json jLocations = ai_GetAssociateDbJson(oPlayer, sAssociateType, "locations"); - if(JsonGetType(JsonObjectGet(jLocations, AI_WIDGET_NUI)) == JSON_TYPE_NULL) + if(JsonGetType(JsonObjectGet(jLocations, sAssociateType + AI_WIDGET_NUI)) == JSON_TYPE_NULL) { ai_SetupLocations(oPlayer, oAssociate, sAssociateType); } diff --git a/_module/nss/0i_menus.nss b/_module/nss/0i_menus.nss index 8d6834ce..756797cb 100644 --- a/_module/nss/0i_menus.nss +++ b/_module/nss/0i_menus.nss @@ -26,6 +26,8 @@ int ai_GetAIButton2(object oPlayer, int nButton, object oAssociate, string sAsso json ai_CreateCompanionJson(object oPC, string sCompanion2da); // Return any Metamagic or Domain attributes to place on a spell icon image. string ai_GetSpellIconAttributes(object oCaster, int nMetaMagic, int nDomain); +// Populates the Quick widget list menu. +void ai_PopulateWidgetList(object oPC, object oAssociate, int nToken, json jWidget); // Creates the AI options menu. void ai_CreateAIMainNUI(object oPC); // Creates the AI options menu. @@ -129,6 +131,211 @@ string ai_GetSpellIconAttributes(object oCaster, int nMetaMagic, int nDomain) if(nDomain > 0) sAttributeText += "D"; return sAttributeText; } +void ai_PopulateWidgetList(object oPC, object oAssociate, int nToken, json jWidget) +{ + int nSAIndex, nSpell, nClass, nFeat, nBaseItemType, nIprpSubType, nUses; + int nLevel, nMetaMagic, nDomain, nIndex; + string sIndex, sBaseName, sName, sSpellIcon, sText, sClass, sMetaMagicText; + object oItem; + json jSpell; + while(nIndex < 10) + { + jSpell = JsonArrayGet(jWidget, nIndex); + sIndex = IntToString(nIndex); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(TRUE)); + if(JsonGetType(jSpell) != JSON_TYPE_NULL) + { + nSpell = JsonGetInt(JsonArrayGet(jSpell, 0)); + nClass = JsonGetInt(JsonArrayGet(jSpell, 1)); + nFeat = JsonGetInt(JsonArrayGet(jSpell, 5)); + if(nClass == -1) // This is an Item. + { + sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + nBaseItemType = JsonGetInt(JsonArrayGet(jSpell, 3)); + nIprpSubType = JsonGetInt(JsonArrayGet(jSpell, 4)); + if(nSpell == SPELL_HEALINGKIT) + { + sName = "Healer's Kit +" + IntToString(nIprpSubType); + sSpellIcon = "isk_heal"; + sBaseName = "Healer's Kit"; + } + else if(nBaseItemType == BASE_ITEM_ENCHANTED_SCROLL || + nBaseItemType == BASE_ITEM_SCROLL || + nBaseItemType == BASE_ITEM_SPELLSCROLL) + { + sSpellIcon = Get2DAString("iprp_spells", "Icon", nIprpSubType); + sBaseName = "Scroll"; + } + else + { + if(nBaseItemType == BASE_ITEM_ENCHANTED_POTION || + nBaseItemType == BASE_ITEM_POTIONS) sBaseName = "Potion"; + else if(nBaseItemType == BASE_ITEM_ENCHANTED_WAND || + nBaseItemType == BASE_ITEM_MAGICWAND || + nBaseItemType == FEAT_CRAFT_WAND) sBaseName = "Wand"; + else sBaseName = ai_StripColorCodes(GetName(GetObjectByUUID(JsonGetString(JsonArrayGet(jSpell, 5))))); + sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); + } + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString(sSpellIcon)); + oItem = GetObjectByUUID(JsonGetString(JsonArrayGet(jSpell, 5))); + nUses = ai_GetItemUses(oItem, nIprpSubType); + if(nUses) + { + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(TRUE)); + if(nUses == 999) sText = "Unlimited"; + else sText = IntToString(nUses); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sBaseName + " / " + sText + ")")); + } + } + else if(nFeat) // This is a feat. + { + sSpellIcon = ""; + if(nSpell) + { + sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); + } + if(sSpellIcon == "" || sSpellIcon == "IR_USE") + { + sName = GetStringByStrRef(StringToInt(Get2DAString("feat", "FEAT", nFeat))); + sSpellIcon = Get2DAString("feat", "ICON", nFeat); + } + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString(sSpellIcon)); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName)); + } + else // This is a spell. + { + sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + sClass = GetStringByStrRef(StringToInt(Get2DAString("classes", "Name", nClass))); + nLevel = JsonGetInt(JsonArrayGet(jSpell, 2)); + nMetaMagic = JsonGetInt(JsonArrayGet(jSpell, 3)); + nDomain = JsonGetInt(JsonArrayGet(jSpell, 4)); + sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString(sSpellIcon)); + if(nClass == 255) + { + nSAIndex = JsonGetInt(JsonArrayGet(jSpell, 6)); + sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (Special Ability / " + IntToString(nLevel) + ")")); + } + else + { + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sClass + " / " + IntToString(nLevel) + ")")); + sMetaMagicText = ai_GetSpellIconAttributes(oAssociate, nMetaMagic, nDomain); + NuiSetBind(oPC, nToken, "metamagic_" + sIndex + "_text", JsonString(sMetaMagicText)); + } + } + } + else + { + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString("ctl_cg_btn_splvl")); + NuiSetBind(oPC, nToken, "metamagic_" + sIndex + "_text", JsonString("")); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(FALSE)); + } + ++nIndex; + } + if(nIndex < 10) return; + // Row 6 Quick widget List2 + while(nIndex < 20) + { + jSpell = JsonArrayGet(jWidget, nIndex); + sIndex = IntToString(nIndex); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(TRUE)); + if(JsonGetType(jSpell) != JSON_TYPE_NULL) + { + nSpell = JsonGetInt(JsonArrayGet(jSpell, 0)); + nClass = JsonGetInt(JsonArrayGet(jSpell, 1)); + nFeat = JsonGetInt(JsonArrayGet(jSpell, 5)); + if(nClass == -1) // This is an Item. + { + string sBaseName; + sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + int nBaseItemType = JsonGetInt(JsonArrayGet(jSpell, 3)); + int nIprpSubType = JsonGetInt(JsonArrayGet(jSpell, 4)); + if(nSpell == SPELL_HEALINGKIT) + { + sName = "Healer's Kit +" + IntToString(nIprpSubType); + sSpellIcon = "isk_heal"; + sBaseName = "Healer's Kit"; + } + else if(nBaseItemType == BASE_ITEM_ENCHANTED_SCROLL || + nBaseItemType == BASE_ITEM_SCROLL || + nBaseItemType == BASE_ITEM_SPELLSCROLL) + { + sSpellIcon = Get2DAString("iprp_spells", "Icon", nIprpSubType); + sBaseName = "Scroll"; + } + else + { + if(nBaseItemType == BASE_ITEM_ENCHANTED_POTION || + nBaseItemType == BASE_ITEM_POTIONS) sBaseName = "Potion"; + else if(nBaseItemType == BASE_ITEM_ENCHANTED_WAND || + nBaseItemType == BASE_ITEM_MAGICWAND || + nBaseItemType == FEAT_CRAFT_WAND) sBaseName = "Wand"; + else sBaseName = ai_StripColorCodes(GetName(GetObjectByUUID(JsonGetString(JsonArrayGet(jSpell, 5))))); + sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); + } + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString(sSpellIcon)); + oItem = GetObjectByUUID(JsonGetString(JsonArrayGet(jSpell, 5))); + int nUses = ai_GetItemUses(oItem, nIprpSubType); + if(nUses) + { + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(TRUE)); + if(nUses == 999) sText = "Unlimited"; + else sText = IntToString(nUses); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sBaseName + " / " + sText + ")")); + } + } + else if(nFeat) // This is a feat. + { + sSpellIcon = ""; + if(nSpell) + { + sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); + } + if(sSpellIcon == "" || sSpellIcon == "IR_USE") + { + sName = GetStringByStrRef(StringToInt(Get2DAString("feat", "FEAT", nFeat))); + sSpellIcon = Get2DAString("feat", "ICON", nFeat); + } + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString(sSpellIcon)); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName)); + } + else // This is a spell. + { + sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + sClass = GetStringByStrRef(StringToInt(Get2DAString("classes", "Name", nClass))); + nLevel = JsonGetInt(JsonArrayGet(jSpell, 2)); + nMetaMagic = JsonGetInt(JsonArrayGet(jSpell, 3)); + sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString(sSpellIcon)); + if(nClass == 255) + { + nSAIndex = JsonGetInt(JsonArrayGet(jSpell, 6)); + if(GetSpellAbilityReady(oAssociate, nSAIndex)) + { + sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (Special Ability / " + IntToString(nLevel) + ")")); + } + } + else + { + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sClass + " / " + IntToString(nLevel) + ")")); + sMetaMagicText = ai_GetSpellIconAttributes(oAssociate, nMetaMagic, nDomain); + NuiSetBind(oPC, nToken, "metamagic_" + sIndex + "_text", JsonString(sMetaMagicText)); + } + } + } + else + { + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString("ctl_cg_btn_splvl")); + NuiSetBind(oPC, nToken, "metamagic_" + sIndex + "_text", JsonString("")); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(FALSE)); + } + ++nIndex; + } +} void ai_CreateAIMainNUI(object oPC) { // Set window to not save until it has been created. @@ -1174,6 +1381,7 @@ void ai_CreateAssociateAINUI(object oPC, object oAssociate) SetLocalInt (oPC, AI_NO_NUI_SAVE, TRUE); DelayCommand (2.0, DeleteLocalInt (oPC, AI_NO_NUI_SAVE)); int bRight, bLeft; + int nAssociateType = GetAssociateType(oAssociate); float fHeight = 45.0; // ************************************************************************* Width / Height int bIsPC = ai_GetIsCharacter(oAssociate); @@ -1436,7 +1644,7 @@ void ai_CreateAssociateAINUI(object oPC, object oAssociate) jRow = JsonArrayInsert(jRow, NuiSpacer()); if(bLeft) { - if(sAssociateType != "summons" && sAssociateType != "dominated") + if(nAssociateType != ASSOCIATE_TYPE_SUMMONED && nAssociateType != ASSOCIATE_TYPE_DOMINATED) { jRow = CreateButton(jRow, "Auto Looting", "btn_loot", 200.0, 20.0, -1.0, "btn_loot_tooltip"); jRow = CreateCheckBox(jRow, "", "chbx_loot", 25.0, 20.0); @@ -1751,7 +1959,7 @@ void ai_CreateAssociateAINUI(object oPC, object oAssociate) if(ai_GetMagicMode(oAssociate, AI_MAGIC_CURE_SPELLS_OFF)) sText = " Cast Cure Spells Off"; else sText = " Cast Cure Spells On"; NuiSetBind(oPC, nToken, "btn_cure_onoff_tooltip", JsonString(sText)); - if(sAssociateType != "summons" && sAssociateType != "dominated") + if(nAssociateType != ASSOCIATE_TYPE_SUMMONED && nAssociateType != ASSOCIATE_TYPE_DOMINATED) { sRange = FloatToString(GetLocalFloat(oAssociate, AI_LOOT_CHECK_RANGE), 0, 0); if(ai_GetAIMode(oAssociate, AI_MODE_PICKUP_ITEMS)) sText = " Looting On [" + sRange + " meters]"; @@ -2238,7 +2446,7 @@ void ai_SetWidgetBinds(object oPC, object oAssociate, string sAssociateType, int object oItem; if(JsonGetType(jWidget) != JSON_TYPE_NULL) { - int nLevel, nSpell, nIndex, nClass, nMetaMagic, nDomain, nSubSpell, nFeat; + int nLevel, nSpell, nIndex, nClass, nMetaMagic, nDomain, nSubSpell, nFeat, nSAIndex; string sSpellIcon, sMetaMagicText, sSubSpell, sClass, sIndex; while(nIndex < 10) { @@ -2319,14 +2527,20 @@ void ai_SetWidgetBinds(object oPC, object oAssociate, string sAssociateType, int nSpell = JsonGetInt(JsonArrayGet(jSpell, 0)); nClass = JsonGetInt(JsonArrayGet(jSpell, 1)); nLevel = JsonGetInt(JsonArrayGet(jSpell, 2)); - nDomain = JsonGetInt(JsonArrayGet(jSpell, 4)); nMetaMagic = JsonGetInt(JsonArrayGet(jSpell, 3)); + nDomain = JsonGetInt(JsonArrayGet(jSpell, 4)); sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString(sSpellIcon)); sMetaMagicText = ai_GetSpellIconAttributes(oAssociate, nMetaMagic, nDomain); NuiSetBind(oPC, nToken, "metamagic_" + sIndex + "_text", JsonString(sMetaMagicText)); - if(GetSpellUsesLeft(oAssociate, nClass, nSpell, nMetaMagic, nDomain)) + nSAIndex = JsonGetInt(JsonArrayGet(jSpell, 6)); + if(nClass == 255 && GetSpellAbilityReady(oAssociate, nSAIndex)) + { + sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (Special Ability / " + IntToString(nLevel) + ")")); + } + else if(GetSpellUsesLeft(oAssociate, nClass, nSpell, nMetaMagic, nDomain)) { sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); sClass = GetStringByStrRef(StringToInt(Get2DAString("classes", "Name", nClass))); @@ -2419,8 +2633,8 @@ void ai_SetWidgetBinds(object oPC, object oAssociate, string sAssociateType, int { nSpell = JsonGetInt(JsonArrayGet(jSpell, 0)); nClass = JsonGetInt(JsonArrayGet(jSpell, 1)); - nDomain = JsonGetInt(JsonArrayGet(jSpell, 4)); nMetaMagic = JsonGetInt(JsonArrayGet(jSpell, 3)); + nDomain = JsonGetInt(JsonArrayGet(jSpell, 4)); sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); //SendMessageToPC(oPC, GetName(oAssociate) + " nSpell: " + IntToString(nSpell) + // " nClass: " + IntToString(nClass) + " nMetaMagic: " + IntToString(nMetaMagic) + @@ -2431,15 +2645,20 @@ void ai_SetWidgetBinds(object oPC, object oAssociate, string sAssociateType, int NuiSetBind(oPC, nToken, "metamagic_" + sIndex + "_text", JsonString(sMetaMagicText)); sSubSpell = Get2DAString("spells", "Master", nSpell); if(sSubSpell != "") nSpell = StringToInt(sSubSpell); - if(nDomain == -1 || GetSpellUsesLeft(oAssociate, nClass, nSpell, nMetaMagic, nDomain)) + if(nClass == 255) + { + nSAIndex = JsonGetInt(JsonArrayGet(jSpell, 6)); + if(GetSpellAbilityReady(oAssociate, nSAIndex)) + { + sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (Special Ability / " + IntToString(nLevel) + ")")); + } + } + else if(GetSpellUsesLeft(oAssociate, nClass, nSpell, nMetaMagic, nDomain)) { sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); - if(nDomain == -1) NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName)); - else - { - sClass = GetStringByStrRef(StringToInt(Get2DAString("classes", "Name", nClass))); - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sClass + " / " + IntToString(nLevel) + ")")); - } + sClass = GetStringByStrRef(StringToInt(Get2DAString("classes", "Name", nClass))); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sClass + " / " + IntToString(nLevel) + ")")); } else NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(FALSE)); } @@ -2876,7 +3095,6 @@ void ai_CreateWidgetNUI(object oPC, object oAssociate) } // Get the window location to restore it from the database. json jLocations = ai_GetAssociateDbJson(oPC, sAssociateType, "locations"); - //SendMessageToPC(oPC, "0i_menu, 2124, sAssociateType: " + sAssociateType + " jLocations: " + JsonDump(jLocations, 1)); if(JsonGetType(jLocations) == JSON_TYPE_NULL) { ai_SetupAssociateData(oPC, oAssociate, sAssociateType); @@ -2885,14 +3103,16 @@ void ai_CreateWidgetNUI(object oPC, object oAssociate) jLocations = JsonObjectGet(jLocations, sAssociateType + AI_WIDGET_NUI); float fX = JsonGetFloat(JsonObjectGet(jLocations, "x")); float fY = JsonGetFloat(JsonObjectGet(jLocations, "y")); + //SendMessageToPC(oPC, "0i_menu, 2901, sAssociateType: " + sAssociateType + AI_WIDGET_NUI + " jLocations: " + JsonDump(jLocations, 1)); // Keeps the widgets from bunching up in the top corner. if(fY == 0.0 && fX == 0.0) { + int nAssociateType = GetAssociateType(oAssociate); if(sAssociateType == "pc") fY = 1.0; - else if(sAssociateType == "familiar") fY = 96.0 * fScale; - else if(sAssociateType == "companion") fY = 192.0 * fScale; - else if(sAssociateType == "summons") fY = 288.0 * fScale; - else if(sAssociateType == "dominated") fY = 384.0 * fScale; + else if(nAssociateType == ASSOCIATE_TYPE_FAMILIAR) fY = 96.0 * fScale; + else if(nAssociateType == ASSOCIATE_TYPE_ANIMALCOMPANION) fY = 192.0 * fScale; + else if(nAssociateType == ASSOCIATE_TYPE_SUMMONED) fY = 288.0 * fScale; + else if(nAssociateType == ASSOCIATE_TYPE_DOMINATED) fY = 384.0 * fScale; else { int nIndex = 1; @@ -3178,24 +3398,34 @@ void ai_CreateCopySettingsNUI(object oPC, object oAssociate) jRow = JsonArrayInsert(jRow, NuiSpacer()); // Add row to the column. jCol = JsonArrayInsert(jCol, NuiRow(jRow)); - // Row 4 ******************************************************************* 244 / 185 - jRow = JsonArrayInsert(JsonArray(), NuiSpacer()); - jRow = CreateButton(jRow, "Summons", "btn_paste_summons", 220.0, 20.0); - jRow = JsonArrayInsert(jRow, NuiSpacer()); - // Add row to the column. - jCol = JsonArrayInsert(jCol, NuiRow(jRow)); - // Row 5 ******************************************************************* 244 / 213 + // Row 4 ******************************************************************* 244 / 213 jRow = JsonArrayInsert(JsonArray(), NuiSpacer()); jRow = CreateButton(jRow, "Dominated", "btn_paste_dominated", 220.0, 20.0); jRow = JsonArrayInsert(jRow, NuiSpacer()); // Add row to the column. jCol = JsonArrayInsert(jCol, NuiRow(jRow)); - // Row 5+ ****************************************************************** 244 / 241 - float fHeight = 241.0; + // Row 5+ ******************************************************************* 244 / 185 + float fHeight = 213.0; int nIndex; string sAssocName; object oAssoc; for(nIndex = 1; nIndex < AI_MAX_HENCHMAN; nIndex++) + { + oAssoc = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, nIndex); + if(oAssoc != OBJECT_INVALID) + { + sAssocName = GetName(oAssoc); + if(GetStringRight(sAssocName, 1) == "s") sAssocName = sAssocName + "'"; + else sAssocName = sAssocName + "'s"; + jRow = CreateButton(JsonArray(), sAssocName, "btn_paste_summons" + IntToString(nIndex), 220.0, 20.0); + // Add row to the column. + jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + fHeight += 28.0; + } + else break; + } + // Row 5+ ****************************************************************** 244 / 241 + for(nIndex = 1; nIndex < AI_MAX_HENCHMAN; nIndex++) { oAssoc = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, nIndex); if(oAssoc != OBJECT_INVALID) @@ -3661,7 +3891,7 @@ void ai_CreateQuickWidgetSelectionNUI(object oPC, object oAssociate) { if(StringToInt(Get2DAString("classes", "SpellCaster", nClass))) { - int nClassLevel = GetLevelByClass(nClass, oAssociate); + int nClassLevel = ai_GetCasterTotalLevel(oAssociate, nClass); string sSpellsGained = Get2DAString("classes", "SpellGainTable", nClass); int nMaxSpellLevel = StringToInt(Get2DAString(sSpellsGained, "NumSpellLevels", nClassLevel - 1)); for(nLevelIndex = 0; nLevelIndex <= 9; nLevelIndex++) @@ -3741,8 +3971,8 @@ void ai_CreateQuickWidgetSelectionNUI(object oPC, object oAssociate) jQuickListArray = ai_CheckItemAbilities(jQuickListArray, oAssociate, oItem, jSpell_Icon, jSpell_Text, FALSE); jSpell_Icon = GetLocalJson(oAssociate, "JSPELL_ICON"); jSpell_Text = GetLocalJson(oAssociate, "JSPELL_NAME"); - WriteTimestampedLogEntry("0i_menus, 3643, oAssociate: " + GetName(oAssociate) + - " jSpell_Text: " + JsonDump(jSpell_Text, 4)); + //WriteTimestampedLogEntry("0i_menus, 3643, oAssociate: " + GetName(oAssociate) + + // " jSpell_Text: " + JsonDump(jSpell_Text, 4)); } } oItem = GetNextItemInInventory(oAssociate); @@ -3811,9 +4041,9 @@ void ai_CreateQuickWidgetSelectionNUI(object oPC, object oAssociate) jSpell = JsonArray(); jSpell = JsonArrayInsert(jSpell, JsonInt(nSubSpell)); jSpell = JsonArrayInsert(jSpell, JsonInt(nClass)); - jSpell = JsonArrayInsert(jSpell, JsonInt(0)); - jSpell = JsonArrayInsert(jSpell, JsonInt(255)); - jSpell = JsonArrayInsert(jSpell, JsonInt(0)); + jSpell = JsonArrayInsert(jSpell, JsonInt(-1)); // Level + jSpell = JsonArrayInsert(jSpell, JsonInt(255)); // MetaMagic + jSpell = JsonArrayInsert(jSpell, JsonInt(0)); // Domain jSpell = JsonArrayInsert(jSpell, JsonInt(nFeat)); jQuickListArray = JsonArrayInsert(jQuickListArray, jSpell); } @@ -3828,9 +4058,9 @@ void ai_CreateQuickWidgetSelectionNUI(object oPC, object oAssociate) jSpell = JsonArray(); jSpell = JsonArrayInsert(jSpell, JsonInt(nSpell)); jSpell = JsonArrayInsert(jSpell, JsonInt(nClass)); - jSpell = JsonArrayInsert(jSpell, JsonInt(0)); - jSpell = JsonArrayInsert(jSpell, JsonInt(255)); - jSpell = JsonArrayInsert(jSpell, JsonInt(0)); + jSpell = JsonArrayInsert(jSpell, JsonInt(0)); // Level + jSpell = JsonArrayInsert(jSpell, JsonInt(0)); // MetaMagic + jSpell = JsonArrayInsert(jSpell, JsonInt(0)); // Domain jSpell = JsonArrayInsert(jSpell, JsonInt(nFeat)); jQuickListArray = JsonArrayInsert(jQuickListArray, jSpell); } @@ -3840,6 +4070,66 @@ void ai_CreateQuickWidgetSelectionNUI(object oPC, object oAssociate) } } } + // Checks for monsters special abilities. + int nCounter = 0, nPreviousSpell = -1, nMaxSpellAbility = GetSpellAbilityCount(oAssociate); + while(nCounter < nMaxSpellAbility) + { + nSpell = GetSpellAbilitySpell(oAssociate, nCounter); + if(nPreviousSpell != nSpell) + { + nPreviousSpell = nSpell; + // Check for subfeats. + nSubSpell = StringToInt(Get2DAString("spells", "SubRadSpell1", nSpell)); + if(nSubSpell) + { + for(nSubSpellIndex = 1; nSubSpellIndex <= 5; nSubSpellIndex++) + { + sSubSpellIndex = IntToString(nSubSpellIndex); + nSubSpell = StringToInt(Get2DAString("spells", "SubRadSpell" + sSubSpellIndex, nSpell)); + if(nSubSpell != 0) + { + sSpellIcon = Get2DAString("spells", "iConResRef", nSubSpell); + jSpell_Icon = JsonArrayInsert(jSpell_Icon, JsonString(sSpellIcon)); + sSpellName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSubSpell))); + jSpell_Text = JsonArrayInsert(jSpell_Text, JsonString(sSpellName)); + jSpell = JsonArray(); + jSpell = JsonArrayInsert(jSpell, JsonInt(nSubSpell)); + jSpell = JsonArrayInsert(jSpell, JsonInt(nClass)); + jSpell = JsonArrayInsert(jSpell, JsonInt(0)); // Level + jSpell = JsonArrayInsert(jSpell, JsonInt(255)); // MetaMagic + jSpell = JsonArrayInsert(jSpell, JsonInt(0)); // Domain + jSpell = JsonArrayInsert(jSpell, JsonInt(0)); // Feat + jQuickListArray = JsonArrayInsert(jQuickListArray, jSpell); + } + } + } + else + { + sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); + jSpell_Icon = JsonArrayInsert(jSpell_Icon, JsonString(sSpellIcon)); + sSpellName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + jSpell_Text = JsonArrayInsert(jSpell_Text, JsonString(sSpellName)); + sMetaMagicText = ai_GetSpellIconAttributes(oAssociate, nMetaMagic, nDomain); + jMetaMagic_Text = JsonArrayInsert(jMetaMagic_Text, JsonString(sMetaMagicText)); + jSpell = JsonArray(); + jSpell = JsonArrayInsert(jSpell, JsonInt(nSpell)); + jSpell = JsonArrayInsert(jSpell, JsonInt(255)); // Class - Special abilities is always 255. + jSpell = JsonArrayInsert(jSpell, JsonInt(GetSpellAbilityCasterLevel(oAssociate, nCounter))); + jSpell = JsonArrayInsert(jSpell, JsonInt(0)); // metamagic + jSpell = JsonArrayInsert(jSpell, JsonInt(0)); // domain + jSpell = JsonArrayInsert(jSpell, JsonInt(0)); // feat + // Index of Special ability on monster. + jSpell = JsonArrayInsert(jSpell, JsonInt(nCounter)); + jQuickListArray = JsonArrayInsert(jQuickListArray, jSpell); + //SendMessageToPC(oPC, "nSpell: " + IntToString(nSpell) + + // " sSpellIcon: " + sSpellIcon + + // " sSpellName: " + sSpellName+ + // " nMaxSlot: " + IntToString(nMaxSpellAbility) + + // " nSpellAbilityIndex: " + IntToString(nCounter)); + } + } + nCounter++; + } // Used in the execution script to get the special abilities. //jData = JsonArrayInsert(jData, jQuickListArray); } @@ -3944,185 +4234,7 @@ void ai_CreateQuickWidgetSelectionNUI(object oPC, object oAssociate) NuiSetUserData(oPC, nToken, jData); // Row 4 Quick widget list label. // Row 5 Quick widget List 1 - json jWidget = JsonArrayGet(jSpells, 2); - nIndex = 0; - while(nIndex < 10) - { - jSpell = JsonArrayGet(jWidget, nIndex); - sIndex = IntToString(nIndex); - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(TRUE)); - if(JsonGetType(jSpell) != JSON_TYPE_NULL) - { - nSpell = JsonGetInt(JsonArrayGet(jSpell, 0)); - nClass = JsonGetInt(JsonArrayGet(jSpell, 1)); - nFeat = JsonGetInt(JsonArrayGet(jSpell, 5)); - if(nClass == -1) // This is an Item. - { - string sBaseName; - sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); - int nBaseItemType = JsonGetInt(JsonArrayGet(jSpell, 3)); - int nIprpSubType = JsonGetInt(JsonArrayGet(jSpell, 4)); - if(nSpell == SPELL_HEALINGKIT) - { - sName = "Healer's Kit +" + IntToString(nIprpSubType); - sSpellIcon = "isk_heal"; - sBaseName = "Healer's Kit"; - } - else if(nBaseItemType == BASE_ITEM_ENCHANTED_SCROLL || - nBaseItemType == BASE_ITEM_SCROLL || - nBaseItemType == BASE_ITEM_SPELLSCROLL) - { - sSpellIcon = Get2DAString("iprp_spells", "Icon", nIprpSubType); - sBaseName = "Scroll"; - } - else - { - if(nBaseItemType == BASE_ITEM_ENCHANTED_POTION || - nBaseItemType == BASE_ITEM_POTIONS) sBaseName = "Potion"; - else if(nBaseItemType == BASE_ITEM_ENCHANTED_WAND || - nBaseItemType == BASE_ITEM_MAGICWAND || - nBaseItemType == FEAT_CRAFT_WAND) sBaseName = "Wand"; - else sBaseName = ai_StripColorCodes(GetName(GetObjectByUUID(JsonGetString(JsonArrayGet(jSpell, 5))))); - sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); - } - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString(sSpellIcon)); - oItem = GetObjectByUUID(JsonGetString(JsonArrayGet(jSpell, 5))); - int nUses = ai_GetItemUses(oItem, nIprpSubType); - if(nUses) - { - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(TRUE)); - if(nUses == 999) sText = "Unlimited"; - else sText = IntToString(nUses); - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sBaseName + " / " + sText + ")")); - } - } - else if(nFeat) // This is a feat. - { - sSpellIcon = ""; - if(nSpell) - { - sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); - sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); - } - if(sSpellIcon == "" || sSpellIcon == "IR_USE") - { - sName = GetStringByStrRef(StringToInt(Get2DAString("feat", "FEAT", nFeat))); - sSpellIcon = Get2DAString("feat", "ICON", nFeat); - } - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString(sSpellIcon)); - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName)); - } - else // This is a spell. - { - sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); - sClass = GetStringByStrRef(StringToInt(Get2DAString("classes", "Name", nClass))); - nLevel = JsonGetInt(JsonArrayGet(jSpell, 2)); - nMetaMagic = JsonGetInt(JsonArrayGet(jSpell, 3)); - nDomain = JsonGetInt(JsonArrayGet(jSpell, 4)); - sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString(sSpellIcon)); - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sClass + " / " + IntToString(nLevel) + ")")); - sMetaMagicText = ai_GetSpellIconAttributes(oAssociate, nMetaMagic, nDomain); - NuiSetBind(oPC, nToken, "metamagic_" + sIndex + "_text", JsonString(sMetaMagicText)); - } - } - else - { - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString("ctl_cg_btn_splvl")); - NuiSetBind(oPC, nToken, "metamagic_" + sIndex + "_text", JsonString("")); - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(FALSE)); - } - ++nIndex; - } - if(nIndex < 10) return; - // Row 6 Quick widget List2 - while(nIndex < 20) - { - jSpell = JsonArrayGet(jWidget, nIndex); - sIndex = IntToString(nIndex); - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(TRUE)); - if(JsonGetType(jSpell) != JSON_TYPE_NULL) - { - nSpell = JsonGetInt(JsonArrayGet(jSpell, 0)); - nClass = JsonGetInt(JsonArrayGet(jSpell, 1)); - nFeat = JsonGetInt(JsonArrayGet(jSpell, 5)); - if(nClass == -1) // This is an Item. - { - string sBaseName; - sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); - int nBaseItemType = JsonGetInt(JsonArrayGet(jSpell, 3)); - int nIprpSubType = JsonGetInt(JsonArrayGet(jSpell, 4)); - if(nSpell == SPELL_HEALINGKIT) - { - sName = "Healer's Kit +" + IntToString(nIprpSubType); - sSpellIcon = "isk_heal"; - sBaseName = "Healer's Kit"; - } - else if(nBaseItemType == BASE_ITEM_ENCHANTED_SCROLL || - nBaseItemType == BASE_ITEM_SCROLL || - nBaseItemType == BASE_ITEM_SPELLSCROLL) - { - sSpellIcon = Get2DAString("iprp_spells", "Icon", nIprpSubType); - sBaseName = "Scroll"; - } - else - { - if(nBaseItemType == BASE_ITEM_ENCHANTED_POTION || - nBaseItemType == BASE_ITEM_POTIONS) sBaseName = "Potion"; - else if(nBaseItemType == BASE_ITEM_ENCHANTED_WAND || - nBaseItemType == BASE_ITEM_MAGICWAND || - nBaseItemType == FEAT_CRAFT_WAND) sBaseName = "Wand"; - else sBaseName = ai_StripColorCodes(GetName(GetObjectByUUID(JsonGetString(JsonArrayGet(jSpell, 5))))); - sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); - } - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString(sSpellIcon)); - oItem = GetObjectByUUID(JsonGetString(JsonArrayGet(jSpell, 5))); - int nUses = ai_GetItemUses(oItem, nIprpSubType); - if(nUses) - { - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(TRUE)); - if(nUses == 999) sText = "Unlimited"; - else sText = IntToString(nUses); - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sBaseName + " / " + sText + ")")); - } - } - else if(nFeat) // This is a feat. - { - sSpellIcon = ""; - if(nSpell) - { - sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); - sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); - } - if(sSpellIcon == "" || sSpellIcon == "IR_USE") - { - sName = GetStringByStrRef(StringToInt(Get2DAString("feat", "FEAT", nFeat))); - sSpellIcon = Get2DAString("feat", "ICON", nFeat); - } - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString(sSpellIcon)); - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName)); - } - else // This is a spell. - { - sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); - sClass = GetStringByStrRef(StringToInt(Get2DAString("classes", "Name", nClass))); - nLevel = JsonGetInt(JsonArrayGet(jSpell, 2)); - nMetaMagic = JsonGetInt(JsonArrayGet(jSpell, 3)); - sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString(sSpellIcon)); - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sClass + " / " + IntToString(nLevel) + ")")); - sMetaMagicText = ai_GetSpellIconAttributes(oAssociate, nMetaMagic, nDomain); - NuiSetBind(oPC, nToken, "metamagic_" + sIndex + "_text", JsonString(sMetaMagicText)); - } - } - else - { - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString("ctl_cg_btn_splvl")); - NuiSetBind(oPC, nToken, "metamagic_" + sIndex + "_text", JsonString("")); - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(FALSE)); - } - ++nIndex; - } + ai_PopulateWidgetList(oPC, oAssociate, nToken, JsonArrayGet(jSpells, 2)); } void ai_CreateSpellMemorizationNUI(object oPC, object oAssociate) { @@ -4289,7 +4401,7 @@ void ai_CreateSpellMemorizationNUI(object oPC, object oAssociate) NuiSetBind(oPC, nToken, "btn_class_" + sIndex + "_tooltip", JsonString(" " + sClass)); if(nClassSelected == nIndex) { - int nClassLevel = GetLevelByClass(nClass, oAssociate); + int nClassLevel = ai_GetCasterTotalLevel(oAssociate, nClass); string sSpellsGained = Get2DAString("classes", "SpellGainTable", nClass); int nMaxSpellLevel = StringToInt(Get2DAString(sSpellsGained, "NumSpellLevels", nClassLevel - 1)); for(nIndexLevel = 0; nIndexLevel <= 9; nIndexLevel++) @@ -4605,7 +4717,7 @@ void ai_CreateSpellKnownNUI(object oPC, object oAssociate) NuiSetBind(oPC, nToken, "btn_class_" + sIndex + "_tooltip", JsonString(" " + sClass)); if(nClassSelected == nIndex) { - nClassLevel = GetLevelByClass(nClass, oAssociate); + nClassLevel = ai_GetCasterTotalLevel(oAssociate, nClass); sSpellsGained = Get2DAString("classes", "SpellGainTable", nClass); nMaxSpellLevel = StringToInt(Get2DAString(sSpellsGained, "NumSpellLevels", nClassLevel - 1)); for(nIndexLevel = 0; nIndexLevel <= 9; nIndexLevel++) diff --git a/_module/nss/0i_spells.nss b/_module/nss/0i_spells.nss index b7b75e2e..3c064c91 100644 --- a/_module/nss/0i_spells.nss +++ b/_module/nss/0i_spells.nss @@ -69,6 +69,8 @@ struct stSpell int nMaxSlots; int nSlot; }; +// Gets the total caster levels for nClass for oCreature. +int ai_GetCasterTotalLevel(object oCreature, int nClass); // Returns TRUE if oCreature can cast nSpell from nLevel. int ai_GetCanCastSpell(object oCreature, int nSpell, int nClass, int nLevel, int nMetaMagic = 0, int nDomain = 0); // Returns TRUE if oCreature is immune to petrification. @@ -184,6 +186,23 @@ void ai_CastWidgetSpell(object oPC, object oAssociate, object oTarget, location void ai_UseWidgetFeat(object oPC, object oAssociate, object oTarget, location lLocation); // Uses the item on the current target for oAssociate. void ai_UseWidgetItem(object oPC, object oAssociate, object oTarget, location lLocation); +int ai_GetCasterTotalLevel(object oCreature, int nClass) +{ + int nIndex, nCheckClass; + int nLevel = GetLevelByClass(nClass, oCreature); + if(nClass == CLASS_TYPE_BARD || nClass == CLASS_TYPE_SORCERER || nClass == CLASS_TYPE_WIZARD) + { + for(nIndex = 1; nIndex <= AI_MAX_CLASSES_PER_CHARACTER; nIndex ++) + { + nCheckClass = GetClassByPosition(nIndex, oCreature); + if(nCheckClass == CLASS_TYPE_PALE_MASTER) + { + nLevel += (GetLevelByClass(CLASS_TYPE_PALE_MASTER, oCreature) + 1) / 2; + } + } + } + return nLevel; +} int ai_GetCanCastSpell(object oCreature, int nSpell, int nClass, int nLevel, int nMetaMagic = 0, int nDomain = 0) { int nIndex, nSpellCount, nClassPosition, nSlot, nMaxSlots, nPosition = 1; @@ -2111,13 +2130,17 @@ void ai_UseWidgetFeat(object oPC, object oAssociate, object oTarget, location lL json jWidget = JsonArrayGet(jSpells, 2); json jFeat = JsonArrayGet(jWidget, nIndex); int nFeat = JsonGetInt(JsonArrayGet(jFeat, 5)); + int nLevel = JsonGetInt(JsonArrayGet(jFeat, 2)); + // We use nLevel at -1 to denote this is a feat with a subradial spell. + int nSubSpell; + if(nLevel == -1) nSubSpell = JsonGetInt(JsonArrayGet(jFeat, 0)); if(ai_GetIsInCombat(oAssociate)) AssignCommand(oAssociate, ai_ClearCreatureActions(TRUE)); //SendMessageToPC(oPC, "0i_spells, 2104, nFeat: " + IntToString(nFeat) + " oTarget: " + GetName(oTarget)); if(!GetIsObjectValid(oTarget)) { - AssignCommand(oAssociate, ActionUseFeat(nFeat, OBJECT_INVALID, 0, lLocation)); + AssignCommand(oAssociate, ActionUseFeat(nFeat, OBJECT_INVALID, nSubSpell, lLocation)); } - else AssignCommand(oAssociate, ActionUseFeat(nFeat, oTarget)); + else AssignCommand(oAssociate, ActionUseFeat(nFeat, oTarget, nSubSpell)); } void ai_UseWidgetItem(object oPC, object oAssociate, object oTarget, location lLocation) { diff --git a/_module/nss/0i_talents.nss b/_module/nss/0i_talents.nss index fa773b9f..6728abbc 100644 --- a/_module/nss/0i_talents.nss +++ b/_module/nss/0i_talents.nss @@ -854,6 +854,8 @@ int ai_TryKnockdownFeat(object oCreature, object oTarget) } int ai_TryPolymorphSelfFeat(object oCreature) { + // Lets check to see if we should actually Polymorph? + if(GetHasFeat(FEAT_EPIC_OUTSIDER_SHAPE)) { int nSubFeat = Random(3) + 733; // 733 azer, 734 rakshasa, 735 Slaad. diff --git a/_module/nss/0i_time.nss b/_module/nss/0i_time.nss index 9db9980a..3052ea67 100644 --- a/_module/nss/0i_time.nss +++ b/_module/nss/0i_time.nss @@ -8,8 +8,6 @@ int GetPosixTimestamp(); string GetCurrentDateTime(); */////////////////////////////////////////////////////////////////////////////// -#include "inc_sqlite_time" - // RETURNS a Timestamp in seconds since 1970-01-01. int GetCurrentTimeInSeconds(); // RETURNS a formated date, good for timestamping logs and text. @@ -32,4 +30,66 @@ string GetCurrentDateTime() sqlquery sqlQuery = SqlPrepareQueryObject(GetModule(), stmt); SqlStep(sqlQuery); return SqlGetString(sqlQuery, 0); -} \ No newline at end of file +} +/// @addtogroup time Time +/// @brief Provides various time related functions. +/// @brief Returns the current time formatted according to the provided sqlite date time format string. +/// @param format Format string as used by sqlites STRFTIME(). +/// @return The current time in the requested format. Empty string on error. +string SQLite_GetFormattedSystemTime(string format); +/// @return Returns the number of seconds since midnight on January 1, 1970. +int SQLite_GetTimeStamp(); +/// @return Returns the number of milliseconds since midnight on January 1, 1970. +int SQLite_GetTimeMilliseconds(); +/// @brief A millisecond timestamp +struct SQLite_MillisecondTimeStamp +{ + int seconds; ///< Seconds since epoch + int milliseconds; ///< Milliseconds +}; +/// @remark For mircosecond timestamps use NWNX_Utility_GetHighResTimeStamp(). +/// @return Returns the number of milliseconds since midnight on January 1, 1970. +struct SQLite_MillisecondTimeStamp SQLite_GetMillisecondTimeStamp(); +/// @brief Returns the current date. +/// @return The date in the format (mm/dd/yyyy). +string SQLite_GetSystemDate(); +/// @brief Returns current time. +/// @return The current time in the format (24:mm:ss). +string SQLite_GetSystemTime(); +/// @} +string SQLite_GetFormattedSystemTime(string format) +{ + sqlquery query = SqlPrepareQueryObject(GetModule(), "SELECT STRFTIME(@format, 'now', 'localtime')"); + SqlBindString(query, "@format", format); + SqlStep(query); // sqlite returns NULL for invalid format in STRFTIME() + return SqlGetString(query, 0); +} +int SQLite_GetTimeStamp() +{ + sqlquery query = SqlPrepareQueryObject(GetModule(), "SELECT STRFTIME('%s', 'now')"); + SqlStep(query); + return SqlGetInt(query, 0); +} +int SQLite_GetTimeMillisecond() +{ + sqlquery query = SqlPrepareQueryObject(GetModule(), "select cast((julianday('now') - 2440587.5) * 86400 * 1000 as integer)"); + SqlStep(query); + return SqlGetInt(query, 0); +} +struct SQLite_MillisecondTimeStamp SQLite_GetMillisecondTimeStamp() +{ + sqlquery query = SqlPrepareQueryObject(GetModule(), "SELECT STRFTIME('%s', 'now'), SUBSTR(STRFTIME('%f', 'now'), 4)"); + SqlStep(query); + struct SQLite_MillisecondTimeStamp t; + t.seconds = SqlGetInt(query, 0); + t.milliseconds = SqlGetInt(query, 1); + return t; +} +string SQLite_GetSystemDate() +{ + return SQLite_GetFormattedSystemTime("%m/%d/%Y"); +} +string SQLite_GetSystemTime() +{ + return SQLite_GetFormattedSystemTime("%H:%M:%S"); +} diff --git a/_module/nss/ai_a_default.nss b/_module/nss/ai_a_default.nss index 7540340c..6491fdf6 100644 --- a/_module/nss/ai_a_default.nss +++ b/_module/nss/ai_a_default.nss @@ -54,13 +54,6 @@ void main() if(ai_TryDivineShieldFeat(oCreature, nInMelee)) return; if(ai_TryDivineMightFeat(oCreature, nInMelee)) return; } - //************************** SKILL FEATURES ************************** - if(ai_TryAnimalEmpathy(oCreature)) return; - // ************************** CLASS FEATURES *************************** - if(ai_TryBarbarianRageFeat(oCreature)) return; - if(ai_TryBardSongFeat(oCreature)) return; - if(ai_TrySummonAnimalCompanionTalent(oCreature)) return; - if(ai_TrySummonFamiliarTalent(oCreature)) return; } // Class and Offensive single target talents. if(nDifficulty >= AI_COMBAT_EFFORTLESS) @@ -74,6 +67,17 @@ void main() if(ai_UseCreatureTalent(oCreature, AI_TALENT_RANGED, nInMelee, nMaxLevel)) return; } } + if(nDifficulty >= AI_COMBAT_MODERATE) + { + //************************** SKILL FEATURES ************************** + if(ai_TryAnimalEmpathy(oCreature)) return; + // ************************** CLASS FEATURES *************************** + if(ai_TryPolymorphSelfFeat(oCreature)) return; + if(ai_TryBarbarianRageFeat(oCreature)) return; + if(ai_TryBardSongFeat(oCreature)) return; + if(ai_TrySummonAnimalCompanionTalent(oCreature)) return; + if(ai_TrySummonFamiliarTalent(oCreature)) return; + } // PHYSICAL ATTACKS - Either we don't have talents or we are saving them. ai_DoPhysicalAttackOnBest(oCreature, nInMelee, !ai_GetAIMode(oCreature, AI_MODE_CHECK_ATTACK)); } diff --git a/_module/nss/ai_a_druid.nss b/_module/nss/ai_a_druid.nss index 6b82c260..53b9303b 100644 --- a/_module/nss/ai_a_druid.nss +++ b/_module/nss/ai_a_druid.nss @@ -17,8 +17,6 @@ void main() if(ai_TryCureConditionTalent(oCreature, nInMelee)) return; int nDifficulty = ai_GetDifficulty(oCreature); int nMaxLevel; - //************************** SKILL FEATURES ************************** - if(ai_TryAnimalEmpathy(oCreature)) return; // Check for moral and get the maximum spell level we should use. if(nDifficulty >= AI_COMBAT_EFFORTLESS) { @@ -30,7 +28,6 @@ void main() { // ************************** CLASS FEATURES *************************** if(ai_TrySummonAnimalCompanionTalent(oCreature)) return; - if(ai_TryPolymorphSelfFeat(oCreature)) return; // *************************** SPELL TALENTS *************************** if(ai_CheckForAssociateSpellTalent(oCreature, nInMelee, nMaxLevel)) return; } @@ -44,6 +41,9 @@ void main() if(ai_UseCreatureTalent(oCreature, AI_TALENT_RANGED, nInMelee, nMaxLevel)) return; } } + if(nDifficulty >= AI_COMBAT_MODERATE && ai_TryPolymorphSelfFeat(oCreature)) return; + //************************** SKILL FEATURES ************************** + if(ai_TryAnimalEmpathy(oCreature)) return; // PHYSICAL ATTACKS - Either we don't have talents or we are saving them. // ************************** Ranged feat attacks ************************** object oTarget; diff --git a/_module/nss/ai_default.nss b/_module/nss/ai_default.nss index cfe8e8f9..f84f6f7d 100644 --- a/_module/nss/ai_default.nss +++ b/_module/nss/ai_default.nss @@ -26,15 +26,11 @@ void main() //**************************** SKILL FEATURES **************************** if(ai_TryAnimalEmpathy(oCreature)) return; //**************************** CLASS FEATURES **************************** - if(ai_TryBarbarianRageFeat(oCreature)) return; - if(ai_TryBardSongFeat(oCreature)) return; - if(ai_TryTurningTalent(oCreature)) return; if(GetLocalInt(GetModule(), AI_RULE_SUMMON_COMPANIONS)) { if(ai_TrySummonFamiliarTalent(oCreature)) return; if(ai_TrySummonAnimalCompanionTalent(oCreature)) return; } - if(ai_TryPolymorphSelfFeat(oCreature)) return; //************************** DEFENSIVE TALENTS *************************** int nRound = ai_GetCurrentRound(oCreature); if(ai_TryDefensiveTalents(oCreature, nInMelee, nMaxLevel, nRound)) return; @@ -44,6 +40,11 @@ void main() // Look for a touch attack since we are in melee. if(nInMelee > 0 && ai_UseCreatureTalent(oCreature, AI_TALENT_TOUCH, nInMelee, nMaxLevel)) return; if(ai_UseCreatureTalent(oCreature, AI_TALENT_RANGED, nInMelee, nMaxLevel)) return; + //**************************** CLASS FEATURES **************************** + if(ai_TryPolymorphSelfFeat(oCreature)) return; + if(ai_TryBarbarianRageFeat(oCreature)) return; + if(ai_TryBardSongFeat(oCreature)) return; + if(ai_TryTurningTalent(oCreature)) return; // PHYSICAL ATTACKS - Either we don't have talents or we are saving them. ai_DoPhysicalAttackOnNearest(oCreature, nInMelee); } diff --git a/_module/nss/ai_druid.nss b/_module/nss/ai_druid.nss index 95cb82b5..7ec19fa4 100644 --- a/_module/nss/ai_druid.nss +++ b/_module/nss/ai_druid.nss @@ -22,8 +22,6 @@ void main() // to take advantage of them as often as possible. if(ai_UseCreatureTalent(oCreature, AI_TALENT_INDISCRIMINANT_AOE, nInMelee, nMaxLevel)) return; if(ai_UseCreatureTalent(oCreature, AI_TALENT_DISCRIMINANT_AOE, nInMelee, nMaxLevel)) return; - //**************************** SKILL FEATURES **************************** - if(ai_TryAnimalEmpathy(oCreature)) return; //**************************** CLASS FEATURES **************************** if(GetLocalInt(GetModule(), AI_RULE_SUMMON_COMPANIONS) && ai_TrySummonAnimalCompanionTalent(oCreature)) return; if(ai_TryPolymorphSelfFeat(oCreature)) return; @@ -34,6 +32,8 @@ void main() // Look for a touch attack since we are in melee. if(nInMelee > 0 && ai_UseCreatureTalent(oCreature, AI_TALENT_TOUCH, nInMelee, nMaxLevel)) return; if(ai_UseCreatureTalent(oCreature, AI_TALENT_RANGED, nInMelee, nMaxLevel)) return; + //**************************** SKILL FEATURES **************************** + if(ai_TryAnimalEmpathy(oCreature)) return; // All else fails lets see if we have any good potions. // PHYSICAL ATTACKS - Either we don't have talents or we are saving them. // ************************ RANGED ATTACKS ******************************* diff --git a/_module/nss/nw_c2_default1.nss b/_module/nss/nw_c2_default1.nss index cbe2fd8b..6d717da3 100644 --- a/_module/nss/nw_c2_default1.nss +++ b/_module/nss/nw_c2_default1.nss @@ -6,18 +6,12 @@ This will usually fire every 6 seconds (1 game round). */////////////////////////////////////////////////////////////////////////////// #include "0i_module" -#include "creature_inc" void main() { // If not runnning normal or better AI then exit for performance reasons if (GetAILevel(OBJECT_SELF) == AI_LEVEL_VERY_LOW) return; - - ExecuteScript("prc_npc_hb", OBJECT_SELF); - - // Set correct name of creature - creature_SetName(OBJECT_SELF); - object oCreature = OBJECT_SELF; + ExecuteScript("prc_npc_hb", oCreature); if(AI_DEBUG) ai_Debug("nw_c2_default1", "16", GetName(oCreature) + " Heartbeat." + " OnSpawn: " + IntToString(GetLocalInt(oCreature, AI_ONSPAWN_EVENT))); // We run our OnSpawn in the heartbeat so the creator can use the original diff --git a/_module/nss/nw_c2_default2.nss b/_module/nss/nw_c2_default2.nss index dea51a1e..fa6f5f82 100644 --- a/_module/nss/nw_c2_default2.nss +++ b/_module/nss/nw_c2_default2.nss @@ -11,35 +11,12 @@ Fires when ever one of these states changes from TRUE to FALSE or FALSE to TRUE. */////////////////////////////////////////////////////////////////////////////// #include "0i_associates" -#include "anph_inc" - -int DruidIsNear(object PC) -{ - if (GetLevelByClass(CLASS_TYPE_DRUID, PC) > 0) - return 1; - - int Nth = 1; - object Druid; - - Druid = GetNearestCreature(CREATURE_TYPE_CLASS, CLASS_TYPE_DRUID, PC, Nth); - // Search friendly druid - while (GetIsEnemy(Druid, PC) && GetIsObjectValid(Druid) && GetDistanceBetween(PC, Druid) < 50.0) - { - Nth++; - Druid = GetNearestCreature(CREATURE_TYPE_CLASS, CLASS_TYPE_DRUID, GetLastPerceived(), Nth); - } - - if (!GetIsEnemy(Druid, PC) && GetIsObjectValid(Druid) && GetDistanceBetween(PC, Druid) < 50.0) - return 1; - - return 0; -} void main() { // * if not runnning normal or better AI then exit for performance reasons //if (GetAILevel() == AI_LEVEL_VERY_LOW) return; object oCreature = OBJECT_SELF; - ExecuteScript("prc_npc_percep", OBJECT_SELF); + ExecuteScript("prc_npc_percep", oCreature); if(AI_DEBUG) ai_Debug("nw_c2_default2", "19", "AI_ONSPAWN_EVENT: " + IntToString(GetLocalInt(oCreature, AI_ONSPAWN_EVENT))); if(!GetLocalInt(oCreature, AI_ONSPAWN_EVENT)) return; if(GetLastPerceptionSeen()) @@ -86,35 +63,6 @@ void main() // ************************** ENEMY SEEN ******************************* if(bSeen) { - if(!GetHasEffect(EFFECT_TYPE_SLEEP)) - { - // Blow fa horn if we have one. The NPC in question MUST have the faction ring of - // his faction somewhere in his inventory AND an item with the tag "NPCHorn" - object oHorn = GetItemPossessedBy(oCreature, "NPCHorn"); - object oPercep = GetLastPerceived(); - if (GetIsObjectValid(oHorn) && - GetIsPC(oPercep) && - !GetIsDM(oPercep) && - GetLocalInt(oCreature, "HornSounded") == FALSE) - { - AnphSendWarningCall(oCreature); - SetLocalInt(oCreature, "HornSounded", TRUE); - AssignCommand(GetModule(), DelayCommand(60.0f, DeleteLocalInt(oCreature, "HornSounded"))); - } - - if(GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL)) - { - //MyPrintString("DetermineSpecialBehavior"); - DetermineSpecialBehavior(); - } else if ((GetLevelByClass(CLASS_TYPE_ANIMAL) == 0) || - (GetLevelByClass(CLASS_TYPE_ANIMAL) > 0 && !DruidIsNear(oPercep))) - { - //MyPrintString("DetermineCombatRound"); - SetFacingPoint(GetPosition(oPercep)); - SpeakString("NW_I_WAS_ATTACKED", TALKVOLUME_SILENT_TALK); - DetermineCombatRound(); - } - } // If the creature we are perceiving was our invisible creature then // remove that they are invisible. if(oLastPerceived == GetLocalObject(oCreature, AI_IS_INVISIBLE)) diff --git a/_module/nss/nw_c2_default3.nss b/_module/nss/nw_c2_default3.nss index 567b327f..6e364125 100644 --- a/_module/nss/nw_c2_default3.nss +++ b/_module/nss/nw_c2_default3.nss @@ -17,7 +17,7 @@ void main() { object oCreature = OBJECT_SELF; - ExecuteScript("prc_npc_combat", OBJECT_SELF); + ExecuteScript("prc_npc_combat", oCreature); if(AI_DEBUG) ai_Debug("nw_c2_default3", "20", GetName(oCreature) + " ends combat round." + " Current action: " + IntToString(GetCurrentAction(oCreature))); if(GetSpawnInCondition(NW_FLAG_END_COMBAT_ROUND_EVENT)) diff --git a/_module/nss/nw_c2_default4.nss b/_module/nss/nw_c2_default4.nss index cd1f6160..38603f10 100644 --- a/_module/nss/nw_c2_default4.nss +++ b/_module/nss/nw_c2_default4.nss @@ -12,7 +12,7 @@ void ai_MonsterCommands(object oCreature, object oSpeaker, int nMatch); void main() { object oCreature = OBJECT_SELF; - ExecuteScript("prc_npc_conv", OBJECT_SELF); + ExecuteScript("prc_npc_conv", oCreature); if(AI_DEBUG) ai_Debug("nw_c2_default4", "15", GetName(oCreature) + " listens " + IntToString(GetListenPatternNumber()) + " to " + GetName(GetLastSpeaker()) + "." + " AI_AM_I_SEARCHING: " + IntToString(GetLocalInt(oCreature, AI_AM_I_SEARCHING))); diff --git a/_module/nss/nw_c2_default5.nss b/_module/nss/nw_c2_default5.nss index acc3b3ed..c2e663dd 100644 --- a/_module/nss/nw_c2_default5.nss +++ b/_module/nss/nw_c2_default5.nss @@ -10,7 +10,7 @@ void main() { object oCreature = OBJECT_SELF; - ExecuteScript("prc_npc_physatt", OBJECT_SELF); + ExecuteScript("prc_npc_physatt", oCreature); object oAttacker = GetLastAttacker(oCreature); if(AI_DEBUG) ai_Debug("nw_c2_default5", "14", GetName(oCreature) + " was attacked by " + GetName(oAttacker) + "."); diff --git a/_module/nss/nw_c2_default6.nss b/_module/nss/nw_c2_default6.nss index 53478420..60aef49b 100644 --- a/_module/nss/nw_c2_default6.nss +++ b/_module/nss/nw_c2_default6.nss @@ -13,9 +13,7 @@ void main() { object oCreature = OBJECT_SELF; - - ExecuteScript("prc_npc_damaged", OBJECT_SELF); - + ExecuteScript("prc_npc_damaged", oCreature); // Send the user-defined event signal if(GetSpawnInCondition(NW_FLAG_DAMAGED_EVENT)) { diff --git a/_module/nss/nw_c2_default8.nss b/_module/nss/nw_c2_default8.nss index fa7ef11b..ef07c733 100644 --- a/_module/nss/nw_c2_default8.nss +++ b/_module/nss/nw_c2_default8.nss @@ -10,9 +10,9 @@ #include "0i_actions" void main() { - ExecuteScript("prc_npc_disturb", OBJECT_SELF); - - if(AI_DEBUG) ai_Debug("nw_c2_default8", "13", GetName(OBJECT_SELF) + " is been disturbed!"); + object oCreature = OBJECT_SELF; + ExecuteScript("prc_npc_disturb", oCreature); + if(AI_DEBUG) ai_Debug("nw_c2_default8", "13", GetName(oCreature) + " is been disturbed!"); // We do nothing at the moment... lets not mess up our factions ok? // This should be defined by the server admins and is commented out. //if(ai_GetIsBusy(OBJECT_SELF, FALSE) || ai_Disabled()) return; @@ -21,6 +21,6 @@ void main() // Send the disturbed flag if appropriate. if(GetSpawnInCondition(NW_FLAG_DISTURBED_EVENT)) { - SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_DISTURBED)); + SignalEvent(oCreature, EventUserDefined(EVENT_DISTURBED)); } } diff --git a/_module/nss/nw_c2_defaultb.nss b/_module/nss/nw_c2_defaultb.nss index 31500267..050a3ea2 100644 --- a/_module/nss/nw_c2_defaultb.nss +++ b/_module/nss/nw_c2_defaultb.nss @@ -10,10 +10,10 @@ void main() { object oCreature = OBJECT_SELF; + ExecuteScript("prc_npc_spellat", oCreature); object oCaster = GetLastSpellCaster(); SetLocalObject(oCaster, AI_ATTACKED_SPELL, oCreature); if(ai_Disabled(oCreature)) return; - ExecuteScript("prc_npc_spellat", OBJECT_SELF); if(!GetLastSpellHarmful()) return; // Send the user-defined event as appropriate if(GetSpawnInCondition(NW_FLAG_SPELL_CAST_AT_EVENT)) diff --git a/_module/nss/nw_c2_defaulte.nss b/_module/nss/nw_c2_defaulte.nss index 76f62db6..98e43646 100644 --- a/_module/nss/nw_c2_defaulte.nss +++ b/_module/nss/nw_c2_defaulte.nss @@ -9,6 +9,7 @@ void main() { object oCreature = OBJECT_SELF; + ExecuteScript("prc_npc_blocked", oCreature); // This actually gets either a Creature or Door that is blocking OBJECT_SELF. object oObject = GetBlockingDoor(); if(AI_DEBUG) ai_Debug("nw_c2_defaulte", "14", GetName(oCreature) + " is being blocked by " + GetName(oObject)); diff --git a/_module/nss/pe_crafting.nss b/_module/nss/pe_crafting.nss index 388c86a4..a1a8fac9 100644 --- a/_module/nss/pe_crafting.nss +++ b/_module/nss/pe_crafting.nss @@ -285,6 +285,7 @@ void main() if(nChange) nColorId = GetColorIDChange(oItem, ITEM_APPR_TYPE_ARMOR_COLOR, nMaterialSelected, nChange); oNewItem = CopyItemAndModify(oItem, ITEM_APPR_TYPE_ARMOR_COLOR, nMaterialSelected, nColorId, TRUE); DestroyObject(oItem); + SetColorPalletPointer(oPC, nToken, oNewItem); } // Lock the new item so they can't change it on the character. LockItemInCraftingWindow(oPC, oNewItem, oTarget, nToken); @@ -643,6 +644,7 @@ void main() int nSelected = StringToInt(GetStringRight(sElem, 1)); SetMaterialButtons(oPC, nToken, nSelected); jCraft = JsonObjectSet(jCraft, CRAFT_MATERIAL_SELECTION, JsonInt(nSelected)); + SetLocalJson(oPC, CRAFT_JSON, jCraft); // Change the pallet for the correct material. string sColorPallet; if(nSelected < 4) diff --git a/_module/nss/pe_test.nss b/_module/nss/pe_test.nss deleted file mode 100644 index 7fd799c8..00000000 --- a/_module/nss/pe_test.nss +++ /dev/null @@ -1,227 +0,0 @@ -/*////////////////////////////////////////////////////////////////////////////// - Script Name: pe_test - Programmer: Philos -//////////////////////////////////////////////////////////////////////////////// - PEPS Plugin to help test errors. - Gives gold, Heals, etc. -/*////////////////////////////////////////////////////////////////////////////// -#include "0i_main" -void main() -{ - // Get the last player to use targeting mode - object oPC = GetLastPlayerToSelectTarget(); - string sTargetMode = GetLocalString(oPC, AI_TARGET_MODE); - if(oPC == OBJECT_SELF && sTargetMode != "") - { - // Get the targeting mode data - object oTarget = GetTargetingModeSelectedObject(); - vector vTarget = GetTargetingModeSelectedPosition(); - location lLocation = Location(GetArea(oPC), vTarget, GetFacing(oPC)); - object oAssociate = GetLocalObject(oPC, AI_TARGET_ASSOCIATE); - // If the user manually exited targeting mode without selecting a target, return - if(!GetIsObjectValid(oTarget) && vTarget == Vector()) - { - return; - } - // Targeting code here. - if(sTargetMode == "TEST_LEVEL_TARGET") - { - int nLevel = ai_GetCharacterLevels(oTarget); - int nXPNeeded = StringToInt(Get2DAString("exptable", "XP", nLevel)); - int nXPToGive = nXPNeeded - GetXP(oTarget); - GiveXPToCreature(oTarget, nXPToGive); - ai_SendMessages(GetName(oTarget) + " has gained " + IntToString(nXPToGive) + " experience to gain 1 level.", AI_COLOR_YELLOW, oPC); - } - else if(sTargetMode == "TEST_GOLD_TARGET") - { - GiveGoldToCreature(oTarget, 10000); - ai_SendMessages(GetName(oTarget) + " has gained 10,000 gold.", AI_COLOR_YELLOW, oPC); - } - else if(sTargetMode == "TEST_REST_TARGET") - { - ForceRest(oTarget); - ai_SendMessages(GetName(oTarget) + " has rested.", AI_COLOR_GREEN, oPC); - } - else if(sTargetMode == "TEST_HEAL_TARGET") - { - int nHeal = GetMaxHitPoints(oTarget) - GetCurrentHitPoints(oTarget); - if(nHeal > 0) - { - effect eHeal = EffectHeal(nHeal); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget); - ai_SendMessages(GetName(oTarget) + " has been healed.", AI_COLOR_GREEN, oPC); - } - } - else if(sTargetMode == "TEST_ID_TARGET") SetIdentified(oTarget, !GetIdentified(oTarget)); - else if(sTargetMode == "TEST_CLEAR_TARGET") - { - ClearAllActions(TRUE, oTarget); - } - else if(sTargetMode == "TEST_KILL_TARGET") - { - effect eDmg = EffectDamage(10000); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eDmg, oTarget); - ai_SendMessages(GetName(oTarget) + " has been killed.", AI_COLOR_RED, oPC); - // Set this variable on the player so PEPS can run the targeting script for this plugin. - SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test"); - // Set Targeting variables. - SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF); - SetLocalString(oPC, AI_TARGET_MODE, "TEST_KILL_TARGET"); - EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE, MOUSECURSOR_KILL, MOUSECURSOR_NOKILL); - } - else if(sTargetMode == "TEST_REMOVE_TARGET") - { - SetIsDestroyable(TRUE, FALSE, FALSE, oTarget); - DestroyObject(oTarget); - ai_SendMessages(GetName(oTarget) + " has been removed!", AI_COLOR_RED, oPC); - } - else if(sTargetMode == "TEST_JUMP") - { - JumpToLocation(lLocation); - int nIndex; - object oAssociate; - for(nIndex = 2; nIndex < 6; nIndex++) - { - oAssociate = GetAssociate(nIndex, oPC); - if(oAssociate != OBJECT_INVALID) AssignCommand(oAssociate, JumpToLocation(lLocation)); - } - for(nIndex = 1; nIndex < AI_MAX_HENCHMAN; nIndex++) - { - oAssociate = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, nIndex); - if(oAssociate != OBJECT_INVALID) AssignCommand(oAssociate, JumpToLocation(lLocation)); - } - // Set this variable on the player so PEPS can run the targeting script for this plugin. - SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test"); - // Set Targeting variables. - SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF); - SetLocalString(oPC, AI_TARGET_MODE, "TEST_JUMP"); - EnterTargetingMode(oPC, OBJECT_TYPE_TILE, MOUSECURSOR_TRANSITION, MOUSECURSOR_NOWALK); - } - else if(sTargetMode == "TEST_KILL_AREA") - { - effect eDmg = EffectDamage(10000); - object oKill = GetFirstObjectInShape(SHAPE_SPHERE, 6.67, lLocation, FALSE); - while(oKill != OBJECT_INVALID) - { - ApplyEffectToObject(DURATION_TYPE_INSTANT, eDmg, oKill); - oKill = GetNextObjectInShape(SHAPE_SPHERE, 6.67, lLocation, FALSE); - } - } - } - // Run all non-targeting code here, usually NUI events. - else - { - object oPC = NuiGetEventPlayer(); - int nToken = NuiGetEventWindow(); - string sEvent = NuiGetEventType(); - string sElem = NuiGetEventElement(); - int nIndex = NuiGetEventArrayIndex(); - //string sWndId = NuiGetWindowId(oPC, nToken); - //********************************************************************** - //if(GetLocalInt(oPC, AI_NO_NUI_SAVE)) return; - if(sEvent == "click") - { - if(sElem == "btn_level") - { - // Set this variable on the player so PEPS can run the targeting script for this plugin. - SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test"); - // Set Targeting variables. - SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF); - SetLocalString(oPC, AI_TARGET_MODE, "TEST_LEVEL_TARGET"); - EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE , MOUSECURSOR_EXAMINE, MOUSECURSOR_NOEXAMINE); - } - else if(sElem == "btn_gold") - { - // Set this variable on the player so PEPS can run the targeting script for this plugin. - SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test"); - // Set Targeting variables. - SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF); - SetLocalString(oPC, AI_TARGET_MODE, "TEST_GOLD_TARGET"); - EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE , MOUSECURSOR_CREATE, MOUSECURSOR_NOCREATE); - } - else if(sElem == "btn_rest") - { - // Set this variable on the player so PEPS can run the targeting script for this plugin. - SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test"); - // Set Targeting variables. - SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF); - SetLocalString(oPC, AI_TARGET_MODE, "TEST_REST_TARGET"); - EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE , MOUSECURSOR_EXAMINE, MOUSECURSOR_NOEXAMINE); - } - else if(sElem == "btn_heal") - { - // Set this variable on the player so PEPS can run the targeting script for this plugin. - SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test"); - // Set Targeting variables. - SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF); - SetLocalString(oPC, AI_TARGET_MODE, "TEST_HEAL_TARGET"); - EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE, MOUSECURSOR_HEAL, MOUSECURSOR_NOHEAL); - } - else if(sElem == "btn_id_item") - { - // Set this variable on the player so PEPS can run the targeting script for this plugin. - SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test"); - // Set Targeting variables. - SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF); - SetLocalString(oPC, AI_TARGET_MODE, "TEST_ID_TARGET"); - EnterTargetingMode(oPC, OBJECT_TYPE_ITEM, MOUSECURSOR_HEAL, MOUSECURSOR_NOHEAL); - } - else if(sElem == "btn_clear") - { - // Set this variable on the player so PEPS can run the targeting script for this plugin. - SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test"); - // Set Targeting variables. - SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF); - SetLocalString(oPC, AI_TARGET_MODE, "TEST_CLEAR_TARGET"); - EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE, MOUSECURSOR_MAGIC, MOUSECURSOR_NOMAGIC); - } - else if(sElem == "btn_kill") - { - // Set this variable on the player so PEPS can run the targeting script for this plugin. - SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test"); - // Set Targeting variables. - SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF); - SetLocalString(oPC, AI_TARGET_MODE, "TEST_KILL_TARGET"); - EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE, MOUSECURSOR_KILL, MOUSECURSOR_NOKILL); - } - else if(sElem == "btn_remove") - { - // Set this variable on the player so PEPS can run the targeting script for this plugin. - SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test"); - // Set Targeting variables. - SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF); - SetLocalString(oPC, AI_TARGET_MODE, "TEST_REMOVE_TARGET"); - EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE | - OBJECT_TYPE_DOOR | OBJECT_TYPE_ITEM | - OBJECT_TYPE_PLACEABLE, MOUSECURSOR_KILL, MOUSECURSOR_NOKILL); - } - else if(sElem == "btn_jump") - { - // Set this variable on the player so PEPS can run the targeting script for this plugin. - SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test"); - // Set Targeting variables. - SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF); - SetLocalString(oPC, AI_TARGET_MODE, "TEST_JUMP"); - EnterTargetingMode(oPC, OBJECT_TYPE_TILE, MOUSECURSOR_TRANSITION, MOUSECURSOR_NOWALK); - } - else if(sElem == "btn_kill_area") - { - // Set this variable on the player so PEPS can run the targeting script for this plugin. - SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test"); - // Set Targeting variables. - SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF); - SetLocalString(oPC, AI_TARGET_MODE, "TEST_KILL_AREA"); - SetEnterTargetingModeData(oPC, SPELL_TARGETING_SHAPE_SPHERE, 6.67, 0.0, 3); - EnterTargetingMode(oPC, OBJECT_TYPE_ALL, MOUSECURSOR_KILL, MOUSECURSOR_NOKILL); - } - } - else if(sEvent == "watch") - { - if(sElem == "txt_debug_creature") - { - } - } - } -} - - diff --git a/_module/nss/pi_crafting.nss b/_module/nss/pi_crafting.nss index 3fa9775d..b7d6309b 100644 --- a/_module/nss/pi_crafting.nss +++ b/_module/nss/pi_crafting.nss @@ -42,6 +42,7 @@ void main() if(oTarget == OBJECT_INVALID) oTarget = oPC; if(StartingUp(oPC)) return; json jCraft = GetLocalJson(oPC, CRAFT_JSON); + if(JsonGetType(jCraft) == JSON_TYPE_NULL) jCraft = JsonObject(); // Row 1 (Object Name)****************************************************** 508 / 83 json jRow = CreateTextEditBox(JsonArray(), "plc_hold_bind", "txt_item_name", 50, FALSE, 486.0f, 30.0f); // 419 json jCol = JsonArrayInsert(JsonArray(), NuiRow(jRow)); @@ -125,7 +126,7 @@ void main() jImage = NuiWidth(jImage, 320.0); // 256 + 64 jImage = NuiHeight(jImage, 220.0); // 176 + 44 jImage = NuiTooltip(jImage, NuiBind("color_pallet_tooltip")); - json jIndicator = JsonArrayInsert(JsonArray(), NuiDrawListRect(JsonBool(TRUE), NuiColor(255,255,255), JsonBool(FALSE), JsonFloat(2.0), NuiBind("color_pallet_pointer"))); + json jIndicator = JsonArrayInsert(JsonArray(), NuiDrawListRect(JsonBool(TRUE), NuiColor(255,0,0), JsonBool(FALSE), JsonFloat(2.0), NuiBind("color_pallet_pointer"))); jImage = NuiDrawList(jImage, JsonBool(FALSE), jIndicator); jGroupRow = JsonArrayInsert(JsonArray(), jImage); jGroupCol = JsonArrayInsert(JsonArray(), NuiRow(jGroupRow)); diff --git a/_module/nss/pi_test.nss b/_module/nss/pi_test.nss deleted file mode 100644 index 818da8c1..00000000 --- a/_module/nss/pi_test.nss +++ /dev/null @@ -1,103 +0,0 @@ -/*////////////////////////////////////////////////////////////////////////////// - Script: pi_test - Programmer: Philos -//////////////////////////////////////////////////////////////////////////////// - Plugin for debugging. -*/////////////////////////////////////////////////////////////////////////////// -#include "0i_nui" -#include "0i_player_target" -// Does startup check if the game has just been loaded. -int StartingUp(object oPC); -void main() -{ - object oPC = OBJECT_SELF; - if(StartingUp(oPC)) return; - string sText; - // Set window to not save until it has been created. - //SetLocalInt (oPC, AI_NO_NUI_SAVE, TRUE); - //DelayCommand (0.5f, DeleteLocalInt (oPC, AI_NO_NUI_SAVE)); - // ************************************************************************* Width / Height - // Row 1 ******************************************************************* 636 / 73 - json jRow = JsonArrayInsert(JsonArray(), NuiSpacer()); - jRow = CreateButton(jRow, "Level Up Creature", "btn_level", 150.0f, 20.0f, -1.0, "btn_level_tooltip"); - jRow = JsonArrayInsert(jRow, NuiSpacer()); - jRow = CreateButton(jRow, "Gold for Creature", "btn_gold", 150.0f, 20.0f, -1.0, "btn_gold_tooltip"); - jRow = JsonArrayInsert(jRow, NuiSpacer()); - jRow = CreateButton(jRow, "Force Rest Creature", "btn_rest", 150.0f, 20.0f, -1.0, "btn_rest_tooltip"); - jRow = JsonArrayInsert(jRow, NuiSpacer()); - jRow = CreateButton(jRow, "ID/UnID Item", "btn_id_item", 150.0f, 20.0f, -1.0, "btn_id_item_tooltip"); - jRow = JsonArrayInsert(jRow, NuiSpacer()); - // Add row to the column. - json jCol = JsonArrayInsert(JsonArray(), NuiRow(jRow)); - // Row 2 ******************************************************************* 636 / 101 - jRow = JsonArrayInsert(JsonArray(), NuiSpacer()); - jRow = CreateButton(jRow, "Heal Creature", "btn_heal", 150.0f, 20.0f, -1.0, "btn_heal_tooltip"); - jRow = JsonArrayInsert(jRow, NuiSpacer()); - jRow = CreateButton(jRow, "Clear Creature Actions", "btn_clear", 150.0f, 20.0f, -1.0, "btn_clear_tooltip"); - jRow = JsonArrayInsert(jRow, NuiSpacer()); - jRow = CreateButton(jRow, "Kill Creature", "btn_kill", 150.0f, 20.0f, -1.0, "btn_kill_tooltip"); - jRow = JsonArrayInsert(jRow, NuiSpacer()); - jRow = CreateButton(jRow, "Remove Object", "btn_remove", 150.0f, 20.0f, -1.0, "btn_remove_tooltip"); - jRow = JsonArrayInsert(jRow, NuiSpacer()); - // Add row to the column. - jCol = JsonArrayInsert(jCol, NuiRow(jRow)); - // Row 3 ******************************************************************* 636 / 101 - jRow = JsonArrayInsert(JsonArray(), NuiSpacer()); - jRow = CreateButton(jRow, "Jump To", "btn_jump", 150.0f, 20.0f, -1.0, "btn_jump_tooltip"); - jRow = JsonArrayInsert(jRow, NuiSpacer()); - jRow = CreateButton(jRow, "Kill In Area", "btn_kill_area", 150.0f, 20.0f, -1.0, "btn_kill_area_tooltip"); - jRow = JsonArrayInsert(jRow, NuiSpacer()); - // Add row to the column. - jCol = JsonArrayInsert(jCol, NuiRow(jRow)); - float fHeight = 129.0; - // Set the Layout of the window. - json jLayout = NuiCol(jCol); - string sName = GetName(oPC); - if(GetStringRight(sName, 1) == "s") sName = sName + "'"; - else sName = sName + "'s"; - int nToken = SetWindow(oPC, jLayout, "pi_test_nui", sName + " PEPS Testing Menu", - -1.0, -1.0, 636.0f, fHeight + 12.0f, FALSE, FALSE, TRUE, FALSE, TRUE, "pe_test"); - // Set all binds, events, and watches. - // Row 1 - NuiSetBind(oPC, nToken, "btn_level_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_level_tooltip", JsonString(" Give level to target creature.")); - NuiSetBind(oPC, nToken, "btn_gold_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_gold_tooltip", JsonString(" Give Gold to target creature.")); - NuiSetBind(oPC, nToken, "btn_rest_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_rest_tooltip", JsonString(" Force rest target creature.")); - NuiSetBind(oPC, nToken, "btn_id_item_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_id_item_tooltip", JsonString(" Identify or UnIdentify the target item.")); - // Row 2 - NuiSetBind(oPC, nToken, "btn_heal_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_heal_tooltip", JsonString(" Heal target creature to max hitpoints.")); - NuiSetBind(oPC, nToken, "btn_clear_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_clear_tooltip", JsonString(" Clears a creature's actions including combat.")); - NuiSetBind(oPC, nToken, "btn_kill_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_kill_tooltip", JsonString(" Kill target creature doing 10,000 magic damage.")); - NuiSetBind(oPC, nToken, "btn_remove_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_remove_tooltip", JsonString(" Remove selected object or the nearest object to ground selection.")); - // Row 3 - NuiSetBind(oPC, nToken, "btn_jump_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_jump_tooltip", JsonString(" Jump to target location.")); - NuiSetBind(oPC, nToken, "btn_kill_area_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_kill_area_tooltip", JsonString(" Kills all creatures in target area.")); -} -int StartingUp(object oPC) -{ - if(GetLocalInt(oPC, AI_ADD_PLUGIN)) - { - json jPlugin = JsonArray(); - jPlugin = JsonArrayInsert(jPlugin, JsonString("pi_test")); - jPlugin = JsonArrayInsert(jPlugin, JsonInt(FALSE)); - jPlugin = JsonArrayInsert(jPlugin, JsonString("Testing Menu")); - jPlugin = JsonArrayInsert(jPlugin, JsonString("ir_charsheet")); - json jPlugins = GetLocalJson(oPC, AI_JSON_PLUGINS); - jPlugins = JsonArrayInsert(jPlugins, jPlugin); - SetLocalJson(oPC, AI_JSON_PLUGINS, jPlugin); - SetLocalInt(oPC, AI_PLUGIN_SET, TRUE); - return TRUE; - } - if(!GetLocalInt(oPC, AI_STARTING_UP)) return FALSE; - return TRUE; -} - diff --git a/_module/nss/pinc_henchmen.nss b/_module/nss/pinc_henchmen.nss index a67141a3..a65adf4b 100644 --- a/_module/nss/pinc_henchmen.nss +++ b/_module/nss/pinc_henchmen.nss @@ -814,7 +814,7 @@ json CreateLevelStatList(json jHenchman, object oHenchman, object oPC, int nLeve { jLevelArray = JsonArrayInsert(jLevelArray, jLevel); } - WriteTimestampedLogEntry("pinc_henchmen, 813, Adding LvlStatList to " + GetName(oHenchman)); + WriteTimestampedLogEntry("pinc_henchmen, 813, Creating LvlStatList for " + GetName(oHenchman)); return GffAddList(jHenchman, "LvlStatList", jLevelArray); } int CanSelectFeat(json jCreature, object oCreature, int nFeat, int nPosition = 1) @@ -969,6 +969,7 @@ json ResetFeats(json jHenchman, object oHenchman) int nRace = GetRacialType(oHenchman); string sRace2DAName = Get2DAString("racialtypes", "FeatsTable", nRace); // Give racial feats. + WriteTimestampedLogEntry("pinc_henchmen, 972, Checking for racial feats."); int nRaceRow, nRaceFeat; int nRaceMaxRow = Get2DARowCount(sRace2DAName); while(nRaceRow < nRaceMaxRow) @@ -978,11 +979,12 @@ json ResetFeats(json jHenchman, object oHenchman) jFeat = GffAddWord(jFeat, "Feat", nRaceFeat); jFeat = JsonObjectSet(jFeat, "__struct_id", JsonInt(1)); jFeatList = JsonArrayInsert(jFeatList, jFeat); - WriteTimestampedLogEntry("pinc_henchmen, 973, Adding racial feat: " + + WriteTimestampedLogEntry("pinc_henchmen, 982, Adding racial feat: " + Get2DAString("feat", "LABEL", nRaceFeat)); nRaceRow++; } // Give class feats. + WriteTimestampedLogEntry("pinc_henchmen, 972, Checking for class feats."); int nClass = GetClassByPosition(1, oHenchman); string sGranted, sList; string sClsFeat2DAName = Get2DAString("classes", "FeatsTable", nClass); @@ -1000,13 +1002,14 @@ json ResetFeats(json jHenchman, object oHenchman) jFeat = GffAddWord(jFeat, "Feat", nClassFeat); jFeat = JsonObjectSet(jFeat, "__struct_id", JsonInt(1)); jFeatList = JsonArrayInsert(jFeatList, jFeat); - WriteTimestampedLogEntry("pinc_henchmen, 995, Adding class feat: " + + WriteTimestampedLogEntry("pinc_henchmen, 1005, Adding class feat: " + Get2DAString("feat", "LABEL", nClassFeat)); } } nClassRow++; } // Give any bonus feats from package. + WriteTimestampedLogEntry("pinc_henchmen, 1012, Checking for selectable feats."); int nPackageFeat, nPackageRow; string sBonusFeat2DAName = Get2DAString("classes", "BonusFeatsTable", nClass); int nNumOfFeats = StringToInt(Get2DAString(sBonusFeat2DAName, "Bonus", nLevel)); @@ -1044,10 +1047,11 @@ json ResetFeats(json jHenchman, object oHenchman) } } // Give picked feats from package. + WriteTimestampedLogEntry("pinc_henchmen, 972, Checking for select feats."); nNumOfFeats = 1; if(GetHasFeat(FEAT_QUICK_TO_MASTER, oHenchman)) nNumOfFeats++; nPackageRow = 0; - while(nPackageRow < nPackageMaxRow) + while(nPackageRow < nPackageMaxRow || nNumOfFeats > 0) { nClassRow = 0; nPackageFeat = StringToInt(Get2DAString(sPackage2DAName, "FeatIndex", nPackageRow)); @@ -1064,6 +1068,7 @@ json ResetFeats(json jHenchman, object oHenchman) if(nNumOfFeats < 1) break; nPackageRow++; } + WriteTimestampedLogEntry("pinc_henchmen, 1071, Adding feat list."); jHenchman = GffReplaceList(jHenchman, "FeatList", jFeatList); return jHenchman; } @@ -1079,6 +1084,7 @@ json ResetSkills(json jHenchman, object oHenchman) json jSkillList = JsonArray(); json jSkill; // Setup the Skill List. + WriteTimestampedLogEntry("pinc_henchmen, 1087, Generating skill list."); int nIndex, nSkillMaxRow = Get2DARowCount("skills"); for(nIndex = 0; nIndex < nSkillMaxRow; nIndex++) { @@ -1088,6 +1094,7 @@ json ResetSkills(json jHenchman, object oHenchman) jSkillList = JsonArrayInsert(jSkillList, jSkill); } // Give skill points based on the package. + WriteTimestampedLogEntry("pinc_henchmen, 1097, Gets " + IntToString(nSkillPoints) + " skill points."); int nPackageSkill, nPackageRow, nCurrentRanks, bCrossClass, nClassRow, nNewRanks; string sPackage2DAName = Get2DAString("packages", "SkillPref2DA", nClass); int nPackageMaxRow = Get2DARowCount(sPackage2DAName); @@ -1116,8 +1123,9 @@ json ResetSkills(json jHenchman, object oHenchman) { jSkill = GffReplaceByte(jSkill, "Rank", nCurrentRanks + nNewRanks); jSkillList = JsonArraySet(jSkillList, nPackageSkill, jSkill); - WriteTimestampedLogEntry("pinc_henchmen, 1110, Adding " + IntToString(nNewRanks) + - " ranks to " + Get2DAString("skills", "Label", nPackageSkill)); + WriteTimestampedLogEntry("pinc_henchmen, 1126, Adding " + IntToString(nNewRanks) + + " ranks to " + Get2DAString("skills", "Label", nPackageSkill) + + " CrossClass: " + IntToString(bCrossClass)); nSkillPoints -= nNewRanks; } nPackageRow++; @@ -1127,7 +1135,9 @@ json ResetSkills(json jHenchman, object oHenchman) } json ResetSpellsKnown(json jClass, object oHenchman) { + WriteTimestampedLogEntry("pinc_henchmen, 1138, Checking for spells known."); int nClass = GetClassByPosition(1, oHenchman); + WriteTimestampedLogEntry("pinc_henchmen, 1140, SpellCaster: " + Get2DAString("classes", "SpellCaster", nClass)); if(Get2DAString("classes", "SpellCaster", nClass) == "0") return jClass; int nLevel = 0; // We remake the Known spell list if the character doesn't have a level list! diff --git a/_module/nss/x0_ch_hen_block.nss b/_module/nss/x0_ch_hen_block.nss new file mode 100644 index 00000000..d7d86a35 --- /dev/null +++ b/_module/nss/x0_ch_hen_block.nss @@ -0,0 +1,14 @@ +//::////////////////////////////////////////////////// +//:: X0_CH_HEN_BLOCK +/* + OnBlocked handler for henchmen/associates. + */ +//::////////////////////////////////////////////////// +//:: Copyright (c) 2002 Floodgate Entertainment +//:: Created By: Naomi Novik +//:: Created On: 01/06/2003 +//::////////////////////////////////////////////////// +void main() +{ + ExecuteScript("nw_ch_ace"); +} diff --git a/_module/nss/x0_ch_hen_combat.nss b/_module/nss/x0_ch_hen_combat.nss new file mode 100644 index 00000000..d3e359b0 --- /dev/null +++ b/_module/nss/x0_ch_hen_combat.nss @@ -0,0 +1,36 @@ +//:://///////////////////////////////////////////// +//:: Associate: End of Combat End +//:: NW_CH_AC3 +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Calls the end of combat script every round +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Oct 16, 2001 +//::////////////////////////////////////////////// +//::////////////////////////////////////////////// +//:: Modified By: Deva Winblood +//:: Modified On: Jan 16th, 2008 +//:: Added Support for Mounted Combat Feat Support +//::////////////////////////////////////////////// +#include "x0_inc_henai" + +void main() +{ + if (!GetLocalInt(GetModule(),"X3_NO_MOUNTED_COMBAT_FEAT")) + { // set variables on target for mounted combat + DeleteLocalInt(OBJECT_SELF,"bX3_LAST_ATTACK_PHYSICAL"); + DeleteLocalInt(OBJECT_SELF,"nX3_HP_BEFORE"); + DeleteLocalInt(OBJECT_SELF,"bX3_ALREADY_MOUNTED_COMBAT"); + } // set variables on target for mounted combat + if(!GetSpawnInCondition(NW_FLAG_SET_WARNINGS)) + { + ExecuteScript("nw_ch_ac3"); + } + if(GetSpawnInCondition(NW_FLAG_END_COMBAT_ROUND_EVENT)) + { + SignalEvent(OBJECT_SELF, EventUserDefined(1003)); + } +} diff --git a/_module/nss/x0_ch_hen_conv.nss b/_module/nss/x0_ch_hen_conv.nss new file mode 100644 index 00000000..6943250d --- /dev/null +++ b/_module/nss/x0_ch_hen_conv.nss @@ -0,0 +1,91 @@ +//::////////////////////////////////////////////////// +//:: X0_CH_HEN_CONV +// OnDialogue event handler for henchmen/associates. +//::////////////////////////////////////////////////// +//:: Copyright (c) 2002 Floodgate Entertainment +//:: Created By: Naomi Novik +//:: Created On: 01/05/2003 +//::////////////////////////////////////////////////// +#include "x0_inc_henai" +#include "x0_i0_henchman" +#include "0i_associates" +//* GeorgZ - Put in a fix for henchmen talking even if they are petrified +int AbleToTalk(object oSelf) +{ + if (GetHasEffect(EFFECT_TYPE_CONFUSED, oSelf) || GetHasEffect(EFFECT_TYPE_DOMINATED, oSelf) || + GetHasEffect(EFFECT_TYPE_PETRIFY, oSelf) || GetHasEffect(EFFECT_TYPE_PARALYZE, oSelf) || + GetHasEffect(EFFECT_TYPE_STUNNED, oSelf) || GetHasEffect(EFFECT_TYPE_FRIGHTENED, oSelf) + ) + { + return FALSE; + } + + return TRUE; +} +void main() +{ + object oCreature = OBJECT_SELF; + // * XP2, special handling code for interjections + // * This script only fires if someone inits with me. + // * with that in mind, I am now clearing any interjections + // * that the character might have on themselves. + if (GetLocalInt(GetModule(), "X2_L_XP2") == TRUE) + { + SetLocalInt(oCreature, "X2_BANTER_TRY", 0); + SetHasInterjection(GetMaster(oCreature), FALSE); + SetLocalInt(oCreature, "X0_L_BUSY_SPEAKING_ONE_LINER", 0); + SetOneLiner(FALSE, 0); + } + object oLastSpeaker = GetLastSpeaker(); + if (GetTag(oCreature) == "x0_hen_dee") + { + string sCall = GetCampaignString("Deekin", "q6_Deekin_Call"+ GetName(oLastSpeaker), oLastSpeaker); + if (sCall == "") SetCustomToken(1001, GetStringByStrRef(40570)); + else SetCustomToken(1001, sCall); + } + // If we are disabled then we can't listen or talk, Busy is checked in ai_SelectAssociateCommand(). + if (GetIsHenchmanDying(oCreature) || ai_Disabled(oCreature)) return; + object oMaster = GetMaster(); + int nMatch = GetListenPatternNumber(); + object oIntruder; + if (nMatch == -1) + { + if (!ai_GetIsBusy(oCreature)) + { + ai_ClearCreatureActions(); + string sDialogFileToUse = GetDialogFileToUse(GetLastSpeaker()); + BeginConversation(sDialogFileToUse); + } + } + else + { + // listening pattern matched + if (GetIsObjectValid(oMaster)) ai_SelectAssociateCommand(oCreature, oLastSpeaker, nMatch); + // we don't have a master, behave in default way + else if (GetIsObjectValid(oLastSpeaker) && + !GetIsPC(oLastSpeaker) && + GetIsFriend(oLastSpeaker)) + { + object oIntruder = OBJECT_INVALID; + // Determine the intruder if any + if(nMatch == 4) oIntruder = GetLocalObject(oLastSpeaker, "NW_BLOCKER_INTRUDER"); + else if (nMatch == 5) + { + oIntruder = GetLastHostileActor(oLastSpeaker); + if(!GetIsObjectValid(oIntruder)) + { + oIntruder = GetAttemptedAttackTarget(); + if(!GetIsObjectValid(oIntruder)) oIntruder = GetAttemptedSpellTarget(); + } + } + // Actually respond to the shout + RespondToShout(oLastSpeaker, nMatch, oIntruder); + } + } + // Signal user-defined event + if(GetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT)) + { + SignalEvent(oCreature, EventUserDefined(EVENT_DIALOGUE)); + } +} + diff --git a/_module/nss/x0_ch_hen_rest.nss b/_module/nss/x0_ch_hen_rest.nss new file mode 100644 index 00000000..8d2fc789 --- /dev/null +++ b/_module/nss/x0_ch_hen_rest.nss @@ -0,0 +1,15 @@ +//::////////////////////////////////////////////////// +//:: X0_CH_HEN_REST +/* + OnRest event handler for henchmen/associates. + */ +//::////////////////////////////////////////////////// +//:: Copyright (c) 2002 Floodgate Entertainment +//:: Created By: Naomi Novik +//:: Created On: 01/06/2003 +//::////////////////////////////////////////////////// + +void main() +{ + ExecuteScript("nw_ch_aca"); +}