From ae5bb8af7d2097aab4f0ea99b47439930866dd1c Mon Sep 17 00:00:00 2001 From: Eddoursul Date: Wed, 6 Dec 2023 16:31:10 +0100 Subject: [PATCH] Added USSEP fixes to 47 scripts --- scripts/atronachfrostscript.pex | Bin 1438 -> 1577 bytes scripts/blackreachdoorscript.pex | Bin 1753 -> 1525 bytes scripts/blacksmithforge01.pex | Bin 846 -> 851 bytes scripts/carryactorscript.pex | Bin 2690 -> 2618 bytes scripts/defaultdisableexitenableenter.pex | Bin 1949 -> 2441 bytes .../defaultforceevaluatepackagetrigger.pex | Bin 1059 -> 1145 bytes scripts/defaultpillarpuzzlelever.pex | Bin 2239 -> 2423 bytes scripts/defaultpillarpuzzlelevernofurn.pex | Bin 2418 -> 2602 bytes scripts/defaultpillarpuzzlepullbarnofurn.pex | Bin 2231 -> 2415 bytes scripts/doorbar.pex | Bin 2511 -> 2574 bytes scripts/dragonpriestactorscript.pex | Bin 2871 -> 3369 bytes scripts/dunkarthspireplatepuzzlescript.pex | Bin 2270 -> 2111 bytes scripts/dwespidercenturionpipescript.pex | Bin 796 -> 821 bytes scripts/favordialoguescript.pex | Bin 5148 -> 4155 bytes scripts/flameatronacheffectscript.pex | Bin 1967 -> 2107 bytes scripts/fxbirdfleescript.pex | Bin 1457 -> 1475 bytes scripts/fxdragonblooddamagescript.pex | Bin 6734 -> 4849 bytes scripts/fxdraugrmagicscript.pex | Bin 1745 -> 1857 bytes scripts/fxdwarvencenturionscript.pex | Bin 1964 -> 2163 bytes scripts/fxdwarvenspherescript.pex | Bin 1106 -> 1276 bytes scripts/fxdwarvenspiderscript.pex | Bin 1676 -> 1840 bytes scripts/fxgreybeardshoutscript.pex | Bin 1995 -> 1872 bytes scripts/fxsetblendvariablescript.pex | Bin 2079 -> 2143 bytes scripts/fxskeletonnecroscript.pex | Bin 1758 -> 1880 bytes scripts/fxsovengardescript.pex | Bin 956 -> 1090 bytes scripts/icewraithparticlesscript.pex | Bin 2767 -> 2919 bytes scripts/magicattachashpileondeath.pex | Bin 2726 -> 2559 bytes scripts/magiceffectshadersonendscript.pex | Bin 1357 -> 1414 bytes scripts/pf_carryfirewood_000d97fa.pex | Bin 904 -> 806 bytes scripts/playerbookshelfclicktriggerscript.pex | Bin 1198 -> 1018 bytes scripts/playerbookshelfcontainerscript.pex | Bin 14933 -> 22353 bytes scripts/playerbookshelftriggerscript.pex | Bin 1625 -> 1427 bytes .../playerpotionrackclicktriggerscript.pex | Bin 1200 -> 1014 bytes scripts/playerpotionracktriggerscript.pex | Bin 1767 -> 1260 bytes scripts/reanimateashpile.pex | Bin 3087 -> 3177 bytes scripts/silverswordscript.pex | Bin 697 -> 733 bytes scripts/spiderwebanimationsscript.pex | Bin 2744 -> 2788 bytes scripts/sprigganswarmactorscript.pex | Bin 1278 -> 1390 bytes scripts/trapbear.pex | Bin 3354 -> 3439 bytes scripts/trapdweflamepillar.pex | Bin 2118 -> 1898 bytes scripts/traphitbase.pex | Bin 4652 -> 4890 bytes scripts/trapsoulgemcontroller.pex | Bin 2366 -> 2311 bytes scripts/traptriggerbase.pex | Bin 7845 -> 7856 bytes scripts/traptriggerhinge.pex | Bin 2546 -> 2565 bytes scripts/tripwire.pex | Bin 1689 -> 1454 bytes scripts/weaponracktriggerscript.pex | Bin 1926 -> 3245 bytes source/scripts/atronachfrostscript.psc | 13 +- source/scripts/blackreachdoorscript.psc | 6 +- source/scripts/blacksmithforge01.psc | 2 +- source/scripts/carryactorscript.psc | 6 +- .../scripts/defaultdisableexitenableenter.psc | 50 +- .../defaultforceevaluatepackagetrigger.psc | 4 +- source/scripts/defaultpillarpuzzlelever.psc | 17 +- .../defaultpillarpuzzlelevernofurn.psc | 17 +- .../defaultpillarpuzzlepullbarnofurn.psc | 17 +- source/scripts/doorbar.psc | 5 + source/scripts/dragonpriestactorscript.psc | 31 ++ .../dunkarthspireplatepuzzlescript.psc | 16 +- .../scripts/dwespidercenturionpipescript.psc | 3 +- source/scripts/favordialoguescript.psc | 20 +- source/scripts/flameatronacheffectscript.psc | 13 +- source/scripts/fxbirdfleescript.psc | 2 + source/scripts/fxdragonblooddamagescript.psc | 433 ++++++------------ source/scripts/fxdraugrmagicscript.psc | 11 +- source/scripts/fxdwarvencenturionscript.psc | 14 + source/scripts/fxdwarvenspherescript.psc | 11 +- source/scripts/fxdwarvenspiderscript.psc | 12 +- source/scripts/fxgreybeardshoutscript.psc | 2 +- source/scripts/fxsetblendvariablescript.psc | 5 + source/scripts/fxskeletonnecroscript.psc | 7 + source/scripts/fxsovengardescript.psc | 8 + source/scripts/icewraithparticlesscript.psc | 21 +- source/scripts/magicattachashpileondeath.psc | 4 +- .../scripts/magiceffectshadersonendscript.psc | 21 +- source/scripts/pf_carryfirewood_000d97fa.psc | 11 +- .../playerbookshelfclicktriggerscript.psc | 2 +- .../playerbookshelfcontainerscript.psc | 399 +++++++++++++++- .../scripts/playerbookshelftriggerscript.psc | 16 +- .../playerpotionrackclicktriggerscript.psc | 2 +- .../scripts/playerpotionracktriggerscript.psc | 8 +- source/scripts/reanimateashpile.psc | 41 +- source/scripts/silverswordscript.psc | 10 +- source/scripts/spiderwebanimationsscript.psc | 8 +- source/scripts/sprigganswarmactorscript.psc | 7 + source/scripts/trapbear.psc | 7 +- source/scripts/trapdweflamepillar.psc | 9 +- source/scripts/traphitbase.psc | 9 +- source/scripts/trapsoulgemcontroller.psc | 3 +- source/scripts/traptriggerbase.psc | 7 +- source/scripts/traptriggerhinge.psc | 2 +- source/scripts/tripwire.psc | 99 ++-- source/scripts/weaponracktriggerscript.psc | 285 +++++++++--- 92 files changed, 1147 insertions(+), 549 deletions(-) diff --git a/scripts/atronachfrostscript.pex b/scripts/atronachfrostscript.pex index 64afa328953c7b215db177598c844f31909cf0b8..ba4fd29498ddddc783f708b4cd36e8a3fe190fc5 100644 GIT binary patch literal 1577 zcmZ8g+jiST6x}1sx5RPcG$d(4QiX;F3N6j0m#9x^8@F8$!ir1bjV0u25ToK)hdby?Nn!`6Q{}8 z+#P2zDxGMQX@&a9#j6)*=jRvuc#Lb&B)ey`GnY-I+H+|-CNdKB=i2C8T{u^#y`GG1 zBsFLjW;;*-L6z)|X;Pj92P-kr7a_X`$(JZd?LPkR~Kq1bqe6LzMg8k<^seGqKjJe`vi&FEY@N1XN*zi zhb`dQKgBAgLh*rlEMUn=3oU#?S#@IbSmt4qVvPzIzu_c6fX^s5o$O*4woqp2Vjb79LEKGziY-3d96n&$4o7dT3EUKz6Ii!w2oJkWfeo4q0!!4E1vaTUs#d96 zrNWeL7P0nofrdcfYU!K?ZV9l|1w01)zyAbQY+9`)u=N4rR)M%9&?MrXn`Ya3eSsZ^ zT;|25&>!`5sCJpF_<}_|0$<`b-}aIvLVhLi^<)Unj|09B$>Y(4$9ZCs!2Rn2_XQpZ9N3|;D8NsTfdle(XkDd^oC3k_4_(N) rQN(@T@rZtgNngP$={uUzXLtO5!yX=SmSa91!pSrqLBbqlmZnhIiW~$zRM9t2Ot)<`-R()XDsR5}Pki$y z=r8ey_~3DN(^%?Z=cK(eleu$evcF&d{FSl5K*vAV{*KC~ilp%TPCb&bYWPvmQ+Il? zkKDU{5H@2>9PS-$?KHMt?LK=_tKmM*o>D<a+^QSd$tDhQ3%)L=K1?BT}fOc7W8 zNa&HcoK6uKU5)Ki`n0o62D6>#sp31vUszphTwQ^qPffGVSDmGG>icP{BOe zd1DJ$z(uk}V;1rZ1zkYLdWd3z4BHsa=qNBwP0T4_G67R*s%+X(FoUxcGcoqNR2?R0)~VsFRWs|1E-sWA)=n_4rHnOZ)NB|vRUNe%YWkmLX-h-u K(LGcREBg!IDiE~* diff --git a/scripts/blackreachdoorscript.pex b/scripts/blackreachdoorscript.pex index bada758f92a95a3944b884e16cf215e3f9ed1a61..27e86bd11e53a27bda30fff4325dfd517ac455ec 100644 GIT binary patch literal 1525 zcmZuwYi}Dx6g{)v_>q^}ByE!vk|ixPEi@#h2w@OWqP77EuoPGHBU|byG__Go~f$RL6o!_u|I*60ExsH?m3v2UE zl4m1#Fe(yMJMplv291;R*WdooZl53F88+UPPOSQwb{!WxjmDXEwlu44^SzBz)H>R= zN7^9lj*BT4tvN|tb}8AlNu0UNTwp1&CZ%ajJV3Rdr7829?d~r+ap$_Hb8QlhlagQL zY-9--xxS84(iTVeT1YhMGZxQ!q)~V369+bVdw|=mR#u#tY#2-5pD*Ja;iOAgp7w3C3#$3B6Xx$`4ILqvFDIP){o zLNYS(P)AQA8Fvx&WMX}iDPvtthmLpyMV4w29WhG}deNRB?4d4yG8pX4Xj;zRMx#MI zEr%@$epo+}IKF%}Hk`gB^a|#sySEwXMZT1a3!U?!&Kn)hKe1m?<@ccw$R{U8 zWp0F^y^Z_a;$Hw(@u}a3IK*do&iy&Q;BMh7e9fdPYGrXBk)VhPJ) zpiaOQB61PAiCba?xQ#XM4Cq{+J2!9#cO@>|6hho%&ZgKkVr=oSEzufl@3ZE;GO~{M zdDtlrO;$-|1-ppo;!^m4aYc^1sN7R{pzx3FuCQMtOh`kQT67Sy6IS)1pF zM6CSFLJ^9dr{42K0NIXR);Gjfgjicp|0_B0&@$m$yu$0Hwkeb`+DU0ri pL3;dAykNyCUneWRgCz;`Hs28la5NiCKuJdgC9Q=UO6bG^@DCJSJ|O@A literal 1753 zcmZ`(T~8ZF6g{*4g7BT1BtV-?fRv8mND)gnVO%#-7;F8jK%iHuGWi zI6cb37_}2)k9#IXxz#TQxRIs%kxkA8UAqVqo1|@2J4qZ9G7)8I%v6?!UCbP}em0SP zZB9*Y(#T-nYt%N=840!R7#&l(BwAO)=!*{b!eNhCw+0T_&7ybfm}xYm^u@VJ?N8@n zj_QfcMZx$Fd6*Ul*+q)UMk6Uiu>+KwS=L4EY~ZIVy-F?S1hJncXQ8NfuxU>$Nnhru z#-y3#a5wbujIuM`>xKibQvl8Z-x3Rjv4XI9-^jDDVQ$^Hn0T)zo+pJHYd9xOi26Bg zvfY6mwo2RjG|$d-mKve4jxS6z+Lk}Z_>~Vhlu#S-M5p1I(T}wpOrcN3+YUSVy_R9Z zXr57##71n>M49fXUKWOBti9}~^j&7`gjVOq_Vd*19IEp|P-`^2o#pST4%M)AOae(; zbJlx03Z9LEEmU51v(RF^(U6KaJh>rw8)cDzTHhw!#12pv?HJR-D9%=5)9UkK^N@F_ zF4oJ5@aTBU()g{QYYuH-V&dUsW2w3D zqw%7@NMj#QW@*#3lXSSlE7xwDoHu(k#l|SuL`66Gow)Dx=#M{JsPY3-2;{q!pfn1~ zV7!PWF3DGbc|37z1G1iBi)$NSyS0NI?77vzH~5w%Rn&yxkz4$Rl0;o~v0x^qHQX|U} zUq1Cab$mwHUH>x0D#gEmse1zUKeec!nZED!`DE#q!mRW!O)1=T9@V{^$~91NwmAx0 zA>k^c2lyOo++$+=d(&gpl z-)vp4C>qDg*-=@I#3e`U(PSji3NuUY!4_YU@Ug=BkdQLG239_Cl@Fy4)AI^beysme zZ2S)eCCygU2NE`&R5`KxciIw2P5u^E%*nykX&T| diff --git a/scripts/blacksmithforge01.pex b/scripts/blacksmithforge01.pex index 3fd28cf5d0c1b3bb0043194e13ecfd194598c622..60c3d1ff0f2248f7e187d66d3c66ec40f9c74a8a 100644 GIT binary patch delta 432 zcmZ8bO-sW-6r7jDq`}sv8vEU}f>6+lR|`F~9`sUL8bR>3NGO3ek#-S0^(RQl!GGe} zU(iFn`#<#L+q8nXk6rf7n|U*9^TTw$@7_Ok4Fo=;%eT$SsW`rvE#e4vZ+v?*7!Jp) z?yF_`avnyLtsoc7N(U0RPa*tE-+>64QkRdP2 zhzA)y2^l0Wbm~pSEP#C-$Ptr*IgBf@kiQw$$rrVo7WQ|Qg(?ju!NN8v)swDvzSJ1c zspQ*3Rl)&u)HH~4Dk8&g31txTDk-m| z)TE(`z34yJKn-;?Smm)sxmql05?X{>>dKZ4{^toEujhuZrzXaB;P!QQ3RQhL!% GJ%0c$mpLN< delta 472 zcmZ8c%TB^j5Ixgkc@|K42#RQ8Vxk*eT2|tN7>qFxab4lkG$}19)x?$GK)UcZOxzp4 zz>N!cet>&7uAEy~80Y5R+&O3F%$axXP0RmWzkaF;2ps*Q^)$^_3OBd5Gnhc{w0q4~ zw|RATe!M?Dcnnk2ZfM=Ww_OWK!?^HV(KCIdJom&MbOSRGh)skuMBFfDX~uJ#!m`~c zn||!1Q`~J?!taP-_)J@;P0w=>v&@k|vL%8`$GjIlVn^mAkSc)~jrX9B89sFFkr~*Y zi-g$^>^q(onQni*jKgo*u4zcmPX-w%&GX(?g`$-nsv1d%Io4y`#;KL94kpaQdHqzBgi_dVOGb4~htMoPO8+VWzFX zq5ZPs{x+|;jX-M{eZcsR)9O11i0;c{%X!rsV3fG(870psBeKtw!-sZfjH)2+?7pz~ z27S9@_wC-E?V+oPO3rN+g|(~djJQ`2ZAa{`^V*gg+_!-@5wE*-_kwl)Tnv|RS$$Wb zzZ`PNqllvW)cPQL?jP&xFo*>`6*(CLi?~M60?y0{q)fU3F@Z(eX9bo7t_$R(*Hq4o zr7?owxf9^I)4($)!0|CSEfAkXyNU4pvt?wdHcL?j{!39Y)>-ya3(^qN0`md|C3T8Y z3%nDhf`-25y}QXmA>D&}6iyDkW`qTalzbTR5qU!)brpeW$|zz*LiA5$1y&LEr)QwV z*_APiASx7G<*mkZjh;HzvB5JD7pMr7RjDD1@>1alDqd4n5K$8-2~>5sM)fLeW=F%O z#5HovD&U%;BBmw{i@I+r-F102NF-0e=h|SFvUU1K${ZdaAOAzh??9lT#=SY(ffQ*Q zGAB$an|cSr{tl3x&Ww)9C!dJT=$L%qiC8k_{))^DN3^$m+JL6DaLR5GEelPcxm!Lu zE+xygC0drAKqtp&6fD1e15HffHlK-0PPfVS=Ovfi8>*7);x0ul=8GPH{yV;KxjU-@ KEqd>s@csuW9)SD+ delta 1270 zcmZuvOHUI~6#ni!D6N*ZP+pCRPa>}Zg#zt>$WuTGCaAa-$~0ntA*JZb)EGA=CWg$? z#I-x))|DIgChqkY_y;tK-@P-_G005XIrp6JeCIpo+>hz!t;wJFKYi0R2=FPjJ}ez2 zJK8r7w|BM<5MR5sKD&5l_TKW!d@hHZM-y+8iQAix>{4~jF54A*uVjDt{z9w8maF#e zU1z@H?87KKm0iTPS;u!xwX@XEnBuy@Kq zXarHqT6Om9^^FQ5Gh6O6y}^B@U%Bj8$_2n-m>Z?4Q$bXw&q&jKuP?YyjVE0&HE~an+m(<$@@9jYkvKZn!EMGToz7en8FXrc3Bd&U* z1T=IL){AB|pbr`JtE3DD=o!QrCO0FQ5a<)=)#db?l-<|Lk31VZ_k)0}KsQYN zdIo6;6LEn7QZ!3o4FigbpsX~^c7dG0u)v@^YGhJ5y1)?AlL$&TnU-wb0tm#w*+7qp&|`q z9OO8ECJOv7a*P%xl)_1VQ)C{i1=NM0y-tCG65mAe1%Xb&R8aHI

{l1SKj;+*IduCsOj5gCDLHdCLuh8gxT%c~(& zS30G2stJ?K@T9pvqUUQ<0f7F6P_h&>Eig~-jeop|ge3$PIXVqX{%X@Ku_#M4QvQ;+ z+Qu-KcZSXmFDCb@Vl}9}d%=_!lzaRyu|-WV&Kk;)D<_@2KFeVZHYRJB2ro!mutf%B Z)e~q-fY&L6*Y6YIQpX9n0PmBJ{tKxCldu2) diff --git a/scripts/defaultdisableexitenableenter.pex b/scripts/defaultdisableexitenableenter.pex index dc3b8e429708a3933ce3194eda57adbba70d7905..3569cc7574507b347f1c9ac9903cacfe96c996d6 100644 GIT binary patch literal 2441 zcma)6T~pge6ukmtgCUqCG=T(%CC~!KfWM#<&onckG08&`GC<2?t5|DW#olEkIh6PQ zu>O!ve@LHt?n<&T$erq1qqFz!*}Z%3S^snK=iiePWD%av-mlBF_Exs+em8jQ`u3Nu zZ2ay94P}rDq_=nFHz|E)_k68r=FRE(`;R9lr)4^z{D1PW`t&;)oCS6uY37{{bO`6Q zI``amTY3#%o`&NO(*7!GwyBll2Ci0im(m^AaipT$$(P?`GdPtk=}Fa;^hcDeFFv^H zQaXri`P)J(an-eNq$ea!Q53dvgeP~UIgT%aj_mOqX%3dX(B7pluHB%6N$q~u_C(jL zhG9$Wn5BR0`+@G2%DbhSxRf{7+H<61rulocP_O$P-S0Zbwj+P}YI~GA(z;8J>UB;l z;#N!~6S40Et0p)~C@1)8#+My#N1rY_5(o15RAE9QjEWYr5!w?<2jaRT`MlgtXWt1s z?Cc2<^$s=B;{5cd#vaYxPI+Wh9vM|fMm0)((n?Y`2%CyVP^MlFWbdj(Q+6}ZUOXBr9a;Awlp1nOXUHo3{Z7|YBW=?^L9UTsoQpsl_i7ErsXsT$cq^@P|BCx7NtWa z#~apSa1evT7<^BeNK^FcxUZV5K$O-Fgb#%@JCfz&`a&Bea@n}<{*`RHEfW%4-@u+mwnR(xJhBy9q1DI)30jYAgEnY0vMplc-KKbx zq3zQ?m0)F91y+R}M0QAr^eVDC)#-=GUejxO6WI|RQ6sWrVw<3}MH$`-PwFq4rWtcU z-a1ROjHfJ`qX))I^D)T9U?B!mD8MWVfF}d$WBARY8L$_JgBxJhkXMi#Flnp+yfYdV#?mw?#PwR+9pA2#BP>JOXP;fdvF!BEU%zQp$&0 zW(~?CvplCVi4?X>WZh(DQFhUQTQp86nTE)C8mF5~Lu5RS50gwoWITR$3)$ zP04prFdB(yU`o(u`$V`O1wHVT^aC9z>4sDs2fi;P)qlD8U3mIb3`HcQC+N>~!!bVz zGMb&2-{N3^;le)HNrMmK3CCY%x?lc#-h-=_X)5^HtUb`IJ-ekpEmROAcaE{mJ=sNXl`(>1-{KDrT=(p57~$2zA2y7yom zi#_c3cW~VIygTCtf~8F|Hym zmF72NVR$m5;J5r_I{YT*>6wE|#owL2A2g|WrlUZPX#3Sfdgk1a*wvs=Pa(S!Ky)yGI^sjahsRGqxuro@<YS0GcJIE$v3$jf+ zv`c%m4_Tlhqml{4Q@EgITCv4VqB1?OI#n{InkltRsbh0^mdyH9fHqHws@P?2l(F61 zs9@i@QM2tmF&Ro!M=%2w3$`bN*@vw&G+3}LCICId3P#TX6`nHshS9gMENNA&W%LXv zzk?#_Is($@hHcVNvI%Vq4VX+Xpl{>b!MBTV58oPc?K67GXv1c&LBWgPCVq8BTZ|eo zoG*Z08&% laL(bpBjs@3k#aciNI5i)&K!q8W;g^g!y%9v4uQ;b_%8zYT4?|P diff --git a/scripts/defaultforceevaluatepackagetrigger.pex b/scripts/defaultforceevaluatepackagetrigger.pex index 91d388bafc65e1c6fbb09c159778c16ee6060d82..d6a76709e47eeb0ef216cc4fa9fdb9a10fe41f85 100644 GIT binary patch delta 486 zcmZ8dJx{|h5WRCklNPlN{h&<~5@VB-K6(8x1TkTBb{Cd4K~qc_N}s@Y@?A8C2DqYnl7bzY!CnGn)R@Xl72FKP<(aDB zfzJLx$waDlRq7g9m`Yv8=~9C{nkJv-D8LGFuewb0Obg?xY;F%nqqhP>P-Fs$FVu57 za^d4DYZJ5&2G)x@N*`2F9E0=5Qpmi2(i}8POhA4831kN X>KIH~kUFM233O^%H6|V0K!1J!+pjS- delta 401 zcmZ8cyH3ME5S%?bu>mFLB!pmN6CM?GE@&cA5FsHH+}Hvt3LXL?Aqp^cz5!j6o-ZI$ z8Y(^@w1|q1ni?wBXA2=#r_2a!#C{iN|)Eo8Gh6ty$TNFQisG;yl zsm2X|U`9-Dhvq{(!^ i4CgKDE?-37#GGG9S?2$jvSx+AXrPzREhM}B_4onSR;C1 zy|U-*Mss)H?O?Q8-@d^*O{o87x^uXFJ9u-S#a(m4?GT24Hn zlK4s!;swnur?xC!Yg?kC=fzunny#Ll=#MGHZ}Uc2Mvls&WGwct!@~_oI6f+n zxas2-ByRhtLIN-lmR|>m$il=bV+{`!Hn4#$G@xOGFbeNG>YrJ4&bOF|GQ)(VF~n6D zmTbw(hAB>s$-YlhNPGQEpv(px6XRUU|3ndFIWHcN3??~lN*W^^m}4^SkpyO#%zDJa z++dQ#JO?azlNc^64zg2N8tBGwen6t)I6S_VMuEi_*gpya1e;4cuOo}a4%`<2r3SAqams8~MXnE*aO@*f8f&B)ZUI`HtS#Q#>k~BtgCb{Q3-{a0r@;mcQQ_miMKb0jA_}a@o|M^~>%0BIP ztKZrr=I^l5pP#7C-#UsM(qX*?ot^p3I zJ+tFYA}!mt#7oMGH&oO!&E`S>HDzYd zKm*sgZgAb?0u+q6X9c2e6UPcy3#(qOVGVb%2?;U6DEzk~FS2TEXo(}i$h(q3lM0$N zRG-p<$siMSI@0}~7;eULVW1iQ`yw=%ONE50A ze&!7BWEQ8BguFs|!U9hdgqk~*2!;Y4ULhoe65VX*3S~Wp^|}JDk9%IE2zA1uAHiUL gm{30FaQwkoyOjTxtcr&jk%Nr0|W4 z7t&b$^jF?chrG!nE*hMEUu4IvAZBqR3Ob5~!8wna6il@^3-#f^d5R&2iewlw?loFW zHjTYw8WC3(*$b_;B8yux34PY`&N&NIjFjRx?gNo^WFQn%@@jI`QvgcAS#G&*$Mkm> zEl5u+qhHRwh~`{3;!Wu4V$Tc0B;w1}cNtcVVKPg0B*Sy=8(m>r%CI-rQPODeI9^_P zSFV~djJvLxN{5Ry(*&}cKJ3UuDC3m>TBzRKS)Dfbtm}%TZI>wSDQWzwmWFK)tPf3G zJ$8+D%;=zJXq%TVhR-fqTreA}4MHjwo1-&N_~}%kxBEgvJ>}E*}OGU|DfrUkKlt3o#FyG~l{c9F}66p9R873vU+?afL66#^$9v_0JuEX|1* zC@Sya19N~s8qGNF@5&321+GyMD41P}x^7UV$(;trEgH7L`rGw=C;PgFRKjP_p`8BO zY9^mC1)@c|4|;(266j$MEz>epL2I;;(j(I3ru2j~Jx%EuY1&L_i!>1x4K$bm%@pW_ zex#r1XDG^AQKD}^-_k4Er#k8zB&s;}ze1rxLo{p(EmMU?Aem=0W5zOOoF=SkGSf_D z%yed&p;_xQmzm}>O@(fO)xB~CXr68(Bo)T#J$S#b0|#h|K7iXDE6mV`UCSJ?t}sR) zbrVd}U06Q0F(dQ|gioz7NuPCNM$s5Olsqla=i07k^ab6+?|rE9a}GUlXc3Yb+=xR< zutWQ>M~m*=!@w>d=QiAsc)^^;s7r*;3I;kst2jyx?=`&FQOM$$Ln{u=J2W#3PQ#1= zX1wSCWy7IKhpJkcb7-VU&^d=~2IirTJ&ZJ>^*lMXQXKgj$n3Q?o zOc$MLliu)T_&Wxl;Jr>Z9I)%y4kXgSH62jUW;DT8iQlZs^`gz9D>3mXO|ysxSIxlR zj)#NEic|K*0~J-=jITRjj&V&qP^bP29}a!^xIqrC$>kIsdW?DLXW%+R&TNc}(H78+ ze0M*b92KD{bTxX6PmJiAqI2|Rj-K{Km2p$Asi1(%{@j3V0&EL>3GI7^@-Vk8aD9p1 P3BQ@bZ|7*IFKXal^Rp1r literal 2418 zcma)6*;3p_6up|A0fv2Z61(Fp#5Q0ygRLaCfdR@D2PWX2v$;xBK6>fBao6kVW|1sm@8G$k1NARZJ(=S@Z7c_Es@(Xv>5pVN|3zySxi|kd$k6G+SeyCXBcX`aDV5-Aepc4dg6oV}l$slIj zaXU=5jXX5Pi0g}NSF`Ds#T}Uh9_u(=&U_War1+J4@W?{x3&oVYYFu3k0HGk4QQJ1j zhg@*)=dKe`X^XjrM0|P0h^K8^Bxh-N;$sXDszx5}nh}iW5nT#(>{@2DV_E~A zp)5|;c#oZTxL|2US|Friu}PUZ!pph_KAi^|yp$l#9wcWcXev6G4l&DWMm_hv-00c= za{m$6J)3#q*TBD)V zYg%op_h*YL$13v0Db4RC0tGgck9m){!nKagq`FCDB8$xht=e{aJxd2taKcvcvv4^F zD>+!r!5R%n%yFue9bczf-cA}i6V>?rhJ2aFk>$mH5XkOSK|NQ57 zs^A&4sGwh54T?D^5zWy9tOZ)6C9H>+)-o;AD%K;~z}m!mjP(SIsBBCER5d8k0k!BS zIs#GCM1{7nw(&gg(jNQ{SX9@J@fEu?NJARoXq|?sVK9w=Hs2_XrC>Z~CURynXQpy6 zor9Si%;pB`NNtdAXyU%@p0~ADbkG&F86PobEzL2W?epl)mU6 zo2D=On;H5FF0*5^^mTtTjKb(*7igZo(Kgf1x@FNli0-Ea(PRZJXrKuVv|$WwXrK*a zDE}bMjac-+qEU+`rh#hng zt6}g$u2zI>DU%ga*%JI1lSQZxm#s---e5AgZu}EYFI%*hhM~=5VJw&57ftpfyefk3 zhqUq_kQcO2#QU_4_;m^x$a(y4fGWbmCW62&Pxv0>U>{#%F|8I#+^e^R5l)A#dXu1F zOxtKe35JS&Lso&xU`l;P7yMhZwN3T~`mR9VU(>2#)NhEOL{I6NarPX}wty=r>QjV= W3U2{jGxS0C&olSi1=_i$Rs9c~83r8y diff --git a/scripts/defaultpillarpuzzlepullbarnofurn.pex b/scripts/defaultpillarpuzzlepullbarnofurn.pex index 0482bbd96ca3b3eda81e734a4848f2dd6bdea013..69f90564bf3d1a36c0ce852d56623729d874669f 100644 GIT binary patch delta 956 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 Qskf75llqi!4Nrl80A!4mf&c&j diff --git a/scripts/dragonpriestactorscript.pex b/scripts/dragonpriestactorscript.pex index d94ef7a273823af37d9e95987dd1f14c5003ecf5..fd813a569bbca119dc1ca4cb92f9abe398871683 100644 GIT binary patch literal 3369 zcmah~Yg-dX6n>Y4gb0X=NI|Sy>!mjp#2e98gIpBEL;}^?3!Q8x$;xIo-JOVh>)+|G zXrKO&{)T?;m-e06Y%Z4CIZxos%(=ejoY}u#{Pss`2o|`${eAftoLvb;J@8ARDTl6Wl+rn_sf9#t5%AxDmaiZuKe77l-8~Celq_1G_mdmT9y=_@{BPGMNARH8k zFzN(;)zuopL#E+YtJ23wrs2MkTcYkdv1eQ;R9ug8GO~qVwbx$SwIH?soXh9? zGb=Gz*YRYu_Hyry2r>4?joQMKCKX)D=ht4=gy%8xGEMet#y*YG1ufQpS8h^g^=-=w zA_i?_ax&RsGM_I*jgsrhV&ydvi|>U_N3b%;M$)To%NmAFr7$xXav^L6;rxQp8Wwtk zvx5?=hjQHu4mv4iszK3rBvMZZ_P;`XD#E%P40WWcWFcsuIotj;3N6M~=O6WRq*is44uDB|)yCtz(o;akhz_+WWOW(0PSWnCw zo4Un1c8@X?=?Sr&hVbhWQ~i*3%Y#vQDD66dwQFy2{(o8xvz<<~BjY*@nsy^#>uTln zv%r@a75jyHJ(N+zrkIF<4`oe;Qa8Ye*e?g|kX)K`(Zrb8FNJ~bK$Zi?`uK5CDFp{I zEGQ+MeWaIzzylAx%sZrlLU z=*)qx$XYw}UDXaHvN0^T6Xs6B+)bFJu9tbF>!PWjSgCZ%3?;MTMlI&!LWxnTryvyw9NmR%@68eQtlATYOg@n10 zFpCLuGhuFFTz_^vDO<*9{B8U7&(AQzPm+Zp{jJkXDq+&VX?%dQhURdN^btPp&=p+4 zCx$+SCapOP9LEhqi?~U;L%M5d37WJ}2AIHCqz9yjqylN#&?BrE(qdU)92=xfJSAjKLc$R2z#URZknptA=0Y20>Sxn-ecCBDE_T*GzDV}WpMuorQQzuWv}2>MxqzDU5Y zBTvbDRK1TcF=1J_V_{YYZ;g}TcEZBl&e8B0^7?MJPC#NlZWns!fUZ19UXf%ge zXiDUHMTrNN-rO@cJnUTX-~H6zT$Ffd;Y3FwWz_D2rv+m<)*Hg|5uu$nHd(T6;uapU zGDB>Vt60^kGU7*CDnoxO-PIW! zA;pLWq}T?p@U0FmUKYFgJI+Zr$01J0ReVn=y;8jRp(Dw+;uU8}Cz@iQKlY`;srb&q z9#2KzDboFBD+JBqFN-SwO2Sv;z-eoB!q}iwmoT2DDUOcQMY5V8Da}QdNXqvi$ry6I x7+66)ZLf`PtM9%|)mH^0^$$6`#diPz literal 2871 zcmah~+ji4N6x~W3Cn0eHgb)&-sFX`vAmj!irUmTWppZ*rE`iW?jpebeMwVP@Ovqbb z`zig4en}tt8GUHGXCyf`gjJnoduGm=GkfoIM*jQNAAk1tzycp<-2DsZS3*$>{O!<{ zkt#SU2un`rHq~@9a*!>zT(1%#xAXL6alKT0@#NXc>@0r7#3yz!>%h8HB_))^;Ci5f zc$nMrSF2U&XiuonzvVOPMH78n{$tn7R}Njjh9M{LE3R?_UwFvY-AYCJI7L|QJGmih zt`ld$Ez zz{6NRUx@14t|zz3KNGJB85A0Tpf-6Abc&1ld}r`B$-9mx zqqSWVIoa(lgpDAanKiCHp(h`o_e_K}*?nHN5^VX7MDG)yQby9N?#L?oOfhl3`-s&; zx$XrA$@v$$xpe17-qUBp5=wVR$elodPh?TRU6u1iH+ zcwU!wU=+0vq}__7Em%6cNuj4P-lnVkN`anS){wt zcIv{fNsM)#nFx<7S{t^D?T983GF>BRsk$AhP>Kcto0@bre@97iZOseVhGh{^ig=G5 zRP9#tK!g>$nHC?H{--Z7m9(uL8A@T$uuW8aZArydT_`)0sulVX zC#2X4L+L9*(ATg(pN}tLW;5_5vd?u@6|&1BQZm$TB^%9|bTErdF$lbLI)@CeRs)0i zyx#tjHzwIJkI}fIp{z=t#|}(93+ST~LLsN$1)h}67{H+XrR6qV9*2x>7%X*jhz?xk z)Jap--6(Ar6&OxYQ#x+dHNt9E1HL?nvz`e2Rlkx@)ZLHaz%R<0>&I&YV*jb@d89fJ zQ=Oe}j}|aUAdW1k4TVk))D>!E1Y3%=VBT3%!$C2DdWLoL4pe@O*R^tY6L4ILtL zAov=~6_gTAJ!yRmiTyR!#ARXH(%eZkx|6!GR3Tar@x3pqsK8RuN zG|vc6GS5kziU+4t*BH*kE90r_EGG0y%u#bQ&s4ghALki)K`-`WoPLi(m0{Q7$!Us`GlDSNFi~q=dhiv#*8cdhrYzh*1~+4pp#K(O zP4knbY!gN{E!hG??%*yKaSyqig>x3BCoC+P(QQL$)WVDfGwwahv0m&sqrV47EU@BZ z+>kdL7W8T_7yDR4I`43mKa0Kp@?q3{3#TolQS>f;B8u?4qA2Z6R?$2bz9m@(aH*F` zA6R&pgo6xj(9hLJ9jnx-Eri7em}I&l$uE<*&XOa>qJ?p8TQNMAHIEDz^{=JL(6xF* z(dxlkyhn3iKXQBlzD|DITOP{MOw*BAV}*>W326g{oQmgIPeapHv}C|a4@7l7ucX4ulxzvqn7^wQ4NGlX~FD{Q?ot<5*-~>&tf@_J9Gj$mT&87?wl#$_k>r?4-zgX8wn^vHjD5gg-&nP*s-<)3)(e^0lq1(MddB_Qx$P0X2~4d; z?bwp29Fr~^?IMt0EocO?-j7jG@=d@0o@e>|Ks8HR9jJP2&PB4_z&))hvPu11;u4A4 z+i)Qp3H@zkPn1bkJ1E3ett_W#1rK=F`mH~6O77_%ea2#j(MfX2FwEY+-Bm%yw=y8} zeK!fbl7Q6&tRe5$j1H6adIB~Qu$h1@5r=LZ!H#48M4WJ|VB==- z(hZxuXp?790)|BVJCywu_b_bDj>QN@9mW{$$6y>E#9#ssEXaeDCu7r80&WECe17;=On4jV*!ht&q?|PXMui8 z&Tlb^HZQRFSm1MKoqv>~QGw?I^X}L~Vhb#pWq0s}U5X4=CLCa6?&L0Dm3h}V*Rg?3 zve{z(ZO$D|TiHy?Wz8jFWvc>fDVNo00Z-ryfpxb}5jTm+Ym4P^K?Bhi$!*yKxjW|> z{!5-0*me{J#$t!<#Nnoz_(TR@xoUWsQ9{o3V1V$BOPaJ2~*0XaC*HJSx<3k8{7T-vPfxx-Yqg z>{)kE!-~LOs$nJVXN9`$bJras<9!Qqbk90>$C&**O!*x2`TS>xGklo~e47jITEr}l T6Bb7T$0>^=KGZwcgUSB^Bo2F* literal 2270 zcmZ`(YgZFT7=9*MLI`pxMFgu76^qIp0>TPy1pyJL9An#$o@Fy6Tf=P5?gWnhmiE8& zm-L79Q=gf=fb=xOu+O~nUY_@|`_FHG{aq|TfIq+RXAO@UU3KV1x)pbVNS?GkEl;{% zzO-e1=l#LShxtzIqq5s*gxx6awyPMF8J@okR29c~Ko6gC4;|y7V?D%v6m&ELmG`Bt zYs%5LAL=lHrBEG(UIV39z78%V2H&XBUMx{ds8r9wsH$7C+KFTwcOwGBHm)*}s~S`z$!t$G zN*4jCont6G{ayMxl4mlK%9rSO-P5{vCO=+y5uEKXY-7}QZ4HisW=rpdp-%2PGWvwd zxfiH9ooCUIx`Y0=TnNEc38iv2Jl9f>HszxGqV%a{!tx#>t zCW~hSS4h;%$9s8(a+1)}GKvRE=f{;C)pE3o+nm329NyVh?u1<$4JRDqgKY3HztXvsHsI`V2H+Te7;)V+8xDnP*kQ@)v7QIWgD&SmmzPjJP-Jc1 zx6EQKM=#Q^!XF>e%ePjbV7?Lt6f@v}S7YhA1G9i0lz>S*wCgc$t|?4mI$h6jeLcra zx)y90M(x8}yAEO25kD`-yegXrMQqz;2=y641ylt3&5=K+7q>8AkmWOoA&W7LZxR_s z@NFU*#q9))S^C7|nYM!oYFUT9G`LIS^e~L?sGT0haE})0VVulNi5%QdM8X^@hu2l!3l@4`wmPJx{s|+-2G=TD!T-+l;{6 zeSsw_ow=7I<}@!bW7U|>ya9&HvQ=C#M^V5^no{Xz>flJ_MRnOCnmoQrpW^ZL>nZzVHBJj`gH#j^#xqZ zSzshFa5ICetP+g^UfHaS-b>S4*LLqEdrM@@tlj`?wQX-Ud9%qs>YE1@HchA^#ajZy ziFhj$_mI$z0FSn#1v@y;sl=?F^6s_3u0Sm%yPgy{`On*={9E>xMEL?0`Oe&EJcIvt z8hWtDZtQcvNh^QAXCHkg6R~f6g7dW}u%B0dFQ14#R^knBts2?CF~FgD(N2U-h7<8N gCwY*P{NEWV@Ix@mPrY^D=W2OEQ7VSW+u8OJMpJO@6>Aqsha-4TQWXkdJ{M2$>kz7#Y|Z zAoejzOqOTLsAmE4SQ&UAVjwAD1`Y-`1`!5P1~CRs25|-n21y{BAE-nM$mZc=WDo%= z;$>uz1hRlUaUe?!NHGKbzzXCrfn~%%Tn2uyv=|eEG#8j94pA=-Q_mu<%gDgY$RNnb bzz@>E$iyH6G(r|EA_WzZ69F?AWEdC#P97pa delta 262 zcmdnWHiu2%SNMT@%uEc73_y@9n)!dCfQm>`X=YAJF#~UqcbJoVuv4g~kBi|(7d1u} zmX!Rw$r+4+llL=9viSZ#r8oHwql_{q12+)zKp`&!9}qGzurV^QGeFE`WSp$Xlu<7X zw1NdF!U|LgwhtsN!ob16#vsZd#vsnX$soZX$sh$}^8=Mg1KFH>j0~bcMZAm*Qb3kC zBLfqdCC&_TFFzxL1S5ku6N3yFm?a?wq(Cw(K!wbV41$ad{2(qP6N9igqZorMSV$Tw JBqsu9000MR983TJ diff --git a/scripts/favordialoguescript.pex b/scripts/favordialoguescript.pex index 3cd7b1b4045de983a9286150ad359dc7d5264a81..8f5f3db5f48b03ec04cb51808dbc4aaaf91795bc 100644 GIT binary patch literal 4155 zcmb7G>v|K{6**jep=mOVr#{E!Jv;9NSk(BXJUi@%=Cf z4LNq82;;a4wXG;pagy(=+mUyqF!3Nryte0x9$8M`Cy>`u`(7)-$cg8=D!^nj3|ueq z!ocxSebOZkzG!uWrm$k$30%7qg&h?oo{H^mtX%tOU~4z+%ug)U>y3Aw?>~zPZVWu? z`pN5_6QR22hfactdVN3iUCo+kdvP;7daIfVE>g9lRP#gwjkHzu~6pU4`btE2}d08I=-i(3?~aL%dY0n)$2OP zCFtccv_9NXzBAZy2C-I|7Zujvp&ImAV$BKorJclnDVw4C_9z{O9RAM z$b2mq8(W2hErwdAUiRm0lT$^Ou=#AcJtt@?4P&>RSD|vu9_L(B$pNp6;=mxe)x%^dlcAzS; zponLAlx>apTg?-XcSj&FohEKC@>JmF@!iIlA2uDCq8V@PI%dq&i&RTRiZ>uXT1Blv z^@d!_U41J@O%B(Q5*rzDD{BPPBb9U`PH}14W|uDs_D8JW zBLp>Xk=v&=;=Y$OPdMq56SlqaR_1_i`;KaQEsqz$V2lN-Z$Ku(U{{=%H%%p0ehX7! zu&s{0!0@u7-^$`$-IREfJhRHpV!56Xs~NGD5jQg8W(KpihH*#QRqkibWIsyR`5v!E zYI&_tStYmL6k0$90#V**K2?Q ze&YI>>leL-FabV=W<3Y zW=B^tVktZNC?l@oR|ar7lleG1vNK`^zb0v%#K-uADxZqdD6Zl+Jo&BJ%;R^&_{?l- z_?(+-W^)C^Z7i|mfv&NAEN0&W`U z%UCaTKB5haH5*|AX=_rOTkM`O+@^k=)E)d8clms&+ejK{gAH^K%U3PzSeUnPd)mSx zzphx=wXkQQt~>Rzg?-XIkgYX@uSZB5QEDu6Ly-rxXW@?4I1lg_4RBYV&RO`9k{0e> zA|Wnb`-(p3oj9Q^k^!{OHp3(pwb4;ENY9ZQu0`uK&wr&Fg| zpi_^?BOCxTy!M+K^%WcBHJ>+ZjJdoq4ozbm=4E=R5owN%@zTPf_TMzdp>7P(pmeJ7 zxJV?kd*xhqpKAR)cdt^o1BUg+!Yk(Pjj)RBzD^}1yOel+M&d)+Jy&?nAqPj28S}B0 zEHs&=4Y(DQsQ!Af$ZD?J#%o$%s;M13O>Px^XhkQD$^la{z zZ~XFezuG0g+7|qhU%vKBG$@^F{GXK$QaGt}$3nn5c7#<_I!q;`(v%3#NPMW$d?%fW zd<^gT%8HSo%ZPi7xX(;TU4JBRK;9J7`gfhy_hL{A@sox37Gk|+j6ael_h&8C6>gROyj^sV0U9r2e&pFCn zNTFP)`9S$I`4agc`76)NY?DoX(ID^J<}J^>^RD>M%0K?ylY;?%g!`{~>|U_eJ%7%z znqH$LmTSJ#4v(~h8jAC_?REU1(=<^MF@0piaZUUk<8`^sjHIkqia4Awl? zc0$KK(TxMS*F#w%PW*w(vto1ZF1?wz;}#sx-|wPfS!Qi&jg_S)0L< z70~AXy5*zPXnLzwlcZy0(iDl4*VL62TTW2(R=*at5IgCuEktcim6$kU%~493 z%9wxZH6x!)rQO(K#}?n%zo-tz3_a5pEV$*k!VDz3@_++O#7JjLLp8N9>z;4cHCpDU zEe)`sNQ(Kb+Uu5E6UvR*vKp=vc5HD7gPCK(NSd%N19=G!hP!IU$ktQASe#yZvan{Y zK$uY`JZhCjn(z^G!SkuLOeZi`X=5nUnYy#P0}-0Mks7#~Z`H#v4V&hTnKZ-} zOyZ)q;c*BfasF}tVJO@8m{PY);)#ziEnf;f5HF_bMb&N^_B|iBI&!Yf{zT7rYsYt^c zyx5U$Iws07F%uKV(8J7P?s!a`Kz`QqnkdGVS4psJqe@HK*?I_5|u})bEN7{W2X^_9cN!o@+&6?Tjs$wy_zLot%==f?9d?lqAu9TyaX`- zN97rF0x+?G!@SAT|5=ol`B;`SVP1`dgWc!ni?HMK%`MNX7F~@%pO$XOGO>=R1mSXm zaQQfflD-zQyVxnIz>cr-$(T456G^X5AB_V{PbXA4`fc>jHT3frje(r}tt5$_n8*Wr za8#`_%9x4PF{JA_PT*u_ox&;QqX10ctXk)B9>0!O6|=aIS#y}fqT0|49KtY#t0f>%k5&Wea_~Tz5``ijW|j}Vq@Mv` z5*uoLgLG|T6W?+@;(D4{-$AY%9b(Ync76tazz~K>$X}&9P~um8Mq*+VV_Gs!=%g8T z#;RShWOqzV#;QFrF{M@c^WSmv-q>y*ex#l5kL?b`gc%b%@MDrH$v%wW6EZ)MoBFUH zKc%CeX=VyPPtA7nw30n0K4qB5!9E;HH3#sEl$pdY>Fu!gwhO-^b3`+H@mb33X2XqP zT5CqxcZu0J8*m4kkDoqv=JC{ZiO~)Aah~m{@{nhClD*iE)2QHciqFu`SxU~4mkn9v zS2p9Gl7Z7S-pfZ0bNsu8Az1?Q-ufDg*fY1O$LF8_}#bkMKjCPH=&HtyA|vrZbV?O5bT=- z`xg1z1o{rYcM0}A{0{f|JjgINH0U>S_&phB(hd3z83YOFD;o3_oiRbbsq`B3n+8@? zP8#$T1-jfZPK6F7L1#oplc3+CiUK|;yQNjPJ_fqZf>A7HYv8sDx;=+g=40TF(vBLq zOG~l@@van2Y~PS|$9(P?*vB9>nCX{gg`O6(UsRdw;42JvpDYWxFD=r3QMu4U_6sd!sacDU^-I(>J?xsgJX(20 z8|)9Z7DYYGe9gd@QKNx}=TJ}S*BL42@Rkc+$p6WI*|4-B*v%YY$i*5lELE#c+x4gX3?F`HDiX+!}Zl(mUhch9zC$A3_9 z9!fS}Fu19Jg24zK0}sax_@t!HCTzYWdZbQCG)fE=P{IMi2mej!v;rABn--aGw`Ji; zN7&{3vT>d_3bGp2c4b@aCv)E*N;K)X$W?`os5O1%H)=>5nnR z2H|TU$)3)bc>&L(tY7fxUsCdl{3ydb*I7T$;RiC?QhTnVB;)1<4}^#FLW9O}^HS-V zCujUiDkK}t_!rugJ6QS)9ZHTHMr1TOZeCGE0UwmT(yCV<8#g)&M)@1Fjc0Cri8J^0 znhMWqx0K(9*HQUzSpHj<|Bjvip5G6=4HHb|wT9ufdeyz&2E*%a7~W_Y-Xt)*&A{;1 zz?%#VZxjr22lJ11ba&hTeNVlM+{yRU2LtbT0w1I(ojdO%3psaa@qUZN$L0>R=^lyy E1x$1Jng9R* diff --git a/scripts/flameatronacheffectscript.pex b/scripts/flameatronacheffectscript.pex index ee9118054e6a1fb57ab02b1106fc7d6975f23711..247e36cec00c3e51fedabeff80053923dee3342b 100644 GIT binary patch literal 2107 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 diff --git a/scripts/fxdragonblooddamagescript.pex b/scripts/fxdragonblooddamagescript.pex index b283089f33f78a450b6a8d48ef44bbc7a9f4d61a..97c6828b35c8643d49a36ab1fdb5cbb7d8d0ef09 100644 GIT binary patch literal 4849 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 literal 6734 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 N2-=PQm)?A_{T~W)F8crg diff --git a/scripts/fxdraugrmagicscript.pex b/scripts/fxdraugrmagicscript.pex index 44a03ace60483cb1977c97b3d45c2eb5f0287d6a..3581a12d304b0ca4138f7ca1d6e7e6f3687f16f3 100644 GIT binary patch literal 1857 zcmaJ=+j1L45ItkbD=YE^M@f81fW@&1;o`)1XMqGcvK$JGDJvE7MlHJ|dC6)SoYB!JIHN#FW1h|#cVB7$r(4IEDNf&IQBbQr5_u` ze(N0NAlQ?=pU=V!UXO=e5?l#_+Bsi;VK%3NpxKjIyk?iBoTsg0-onh$FTavBf;{6Q z;8Ri97_V8NKs=ak7f!l8tiF^N72;;^Nlm|SKY3qA_##0_&ydy<@$bEgkW1K!7hB5s$YEW>X2rS?( z#Rr4<5I)6yiWQ0nCLTh^=O(^@4$VQ76+Fc=6E)QE+(aF9llJtPS5&e@pDiOyPhk~h z+|Y>DWx76TFs2-sc3=kY+0-mPn?|?_m+_a@in8)J9VwPGQX6A5@ z>KH{Os{Q`OVwzkSW-4?buF%J5-}3?IS6l4a1X+{ZHgujs8ghL0KOe?@!D7-q=q zC9=^x44)90JzAhc4;elk9K{sTQl54{8`-7$!$M;;fn{=knJ9I!RdV7H9;0%-DDA8< zR2f#ysAm`+Iedq(-qiI;>ime*TSoJ{@3Jd*XRqBwaa8U)N!_4d37a&}EkfHQcZVjq zizf(3zHVb-nqiY+gA5>@n+ptIGJM6bWu)8W7G<_=o-}OhOp$bcJ>t|NhVq{h8^eyd zPpo9a4$dUK#y1bP{ML^xEHzoPITyY0QlOATTYQM@Q=w3HoYp`_e(i}#yXH6v=_c>GA>SYIgHR5d?@X|C z9K?O{n!S;adDwo<+n9g({sR#q$RjR1juppgzB9`uz4qMbBNxOb+12#Ak`6jNGp5)b z5kDC<+?XVr!lL8s4*6EH==GmXz>G;mC7FL>1ghr}M1Cv-vLqR-mWs6eYt6nOt);Nl zk*n;8t9~S6I&j1aUig%ljt8#n53MT=-AupYay;t?oI@osN31+^4x zVWt^MSLrL$4c^j~jg#-C;68Ec$@60UTpH*fC*C=N!_IJbi|YFg=+sDByxdbS_YN$zYT*mw@@yvw(||~Pu zXIB}ik;6*Tn^@sDl4g~D7H-kHYqZxo{=jWYxkJo0@Fy1M7;Z7FmKhcaEi>Gu6T_O( zp1hX`Q_gz!e|jkV7sC?6Z5_^cW#j|CTRku^lb%q4f zs&(zmCRHg_J?s?CGqsxL_q8dzX)SHGg1@OdJ&fM%8)IgA*h2M-YA@ z@A;Wj{vvPrkh~;kW?2vsq%vJ9^>m+}?mpepU*G@!XFf-aaO!{jdP;Zqe%L+b@rh77 zLYZzXwQB6t-@ZRw=_COa8oZroMMJgv;aBet4(b*9lICv;!JC8o!ZZvwf`<0B(WyFi zpx!i_BCwv=Q1L(k^=*g7Gy9%YGHFp!t6jlOiwZ3nhCl*t5$1iw&yc3DE0d0h$g{1{nBAvHh)%jmvli6o9_`1x)2b=i z=5{$~xM6hXd?!2$p%MOJuNy0gjlRhFJWKu}Q(k7uCN{ilbX_E9cx$h#uxeUiy4?85 zsWd?g8(~^9@zZ{?O+%%DY)XNxa!Ws`#A#Y-py%{wVkiS9aCBrErv*w_I=zyl`_=@I0qlTXP? z*~zj?f}91aK-M7}5F1^@{|3FJP1=G~A+I1g*l38sjg$Y4hH1oVF4-uJIi1F7B2^|c zWhzsqQNBBQnt{zdQ$)b*(rswgM;p5R@zJzaz9>FGaEJv}*8 zAG>S#EzDs@-C=G~K?6*75YKvMh}l1fAJ!K=R_x6N*7@SF5@1;J9^y7ZS=yPOkTL%{UqM96ij%vPe6>Xy$+h_q# TZeN#c`--C{*HuSPuI+ySldYKj literal 1964 zcma)5+fo}x5IrjiiTf?aTx{%dY=_vv1Yxj)o+7|dloQ*9u#>mcuscFyFSDxM5rj|3 zOFkrDkuS-I6%zPj}D!`NQvjluHP}6;8b$#_jDNw@zewtjwk| zwwLO}v^Mv4-|R1Svk=vTo{pmoBYQ93ZS1r*-tK<4Rj;Fgnd^=*ZvT$5Ei0|Uz)oV5 zTpf9BUbNdPbe`0r_Sz8jwu{lizO9YUI;bUPOG(>7wWFg*84QJqiL@mz8DpXuT79g( zmxnsc!{OIv6bai=qW!aAWMLD(i}IpGSX8wrvTjGEYEhbqs*Y5;B=((!$CR)tvzcfo zspzIjSEW{~OdKd}4n%)+%6A0wSK*rJ(ejE1U+b=WcP&$Kdr!5|CqtX0n7o`5)0b^7e*HSf z3M#J>qfp(K>7lZyZpzH66tzafs-y05q0~{?NRk)>jfTU&V`*oQ6^tbZ?>X;Owb^5~ zuJAlX-*%ixixGEEVx_wI4Viiq%hOixU?-K`PSfZk>4uKMmQA{6v#vM@`j1Xu`jHe7 zpQF~ZI@b0Sl@qBgD((!{w|j=yB{7_kv?4pvHtcY!wxctVlPhjZ)>WZyYsH)4FK)k4 zCpoKX%ci^p7);Cy6Xmvw>$ppvZ-*1Jp$@glcMBJ@rizcsxTH#iy_B6G6Q5&9e%Pi< z(|_KZ)uN;|3^aQ-*;5(2-!DI$&4Jp*Nj&o}`PDCf{e~)^UVxH&*-j}JN(C6BjC+~H zByM<_f|HwG9KH`2#BDG0aB|1XT_23GtGG{jKzT@UCu)4^c!bCJin2&~LMhRPfq-tV z^0$mRI3WSaRWO}{K?*Yr zGRt2d=9uypi<+nV4(>wW9>zujOa_>p4)D3x=6tWl0^ADV_3};X&R8bqzQ@eFZBW94 z8%`M<4RD8c{)zJ6T*N&Lz^%uXy;r#X6{v~-g&O}CitRqHFu)hAuH>s)U{(E>Y0d`t zGQgv=AVH-`)}*sQ(gZ*L$Tgtxf}@~!$x$$J4qmTmPTjA-kDi%mat&Jw@by_yrYXvaB*z`CY?3AKLYNHShV_)jg+o%@uhCswj$+`43c4 tVS&2T)@QtF=Ojyb&MAE3C$UbVuKp_1uV2;U^$U)I4qJKAQ7~|he*n(0fJFcR diff --git a/scripts/fxdwarvenspherescript.pex b/scripts/fxdwarvenspherescript.pex index 3a7ec31309a13b550665d5f64da7585f3915c1e4..b24fa04f7a2c40ee1eaf80f1742ee31123a7b525 100644 GIT binary patch delta 711 zcmY*V%Wl(95Iy5Zo6v^1q@gs8iQDoj5TI$?rZ3tMUtx zKY%6wz=~gh4LeqRLM0@G1m`*lgc)7?-ZL|2&dit0udMU)<)?3^0RgS`^}~;$;}+U} zcMyfh-fumB^ki?ZwTarWahklB()u>?(VMqwKklnT)mP!ZLbhIi8ineG--p$Xqh9h+ zUN^0sC<-uJug9v}t4%Ijupb1GAHzEGyR3Yu;%9+>tooQ~bOt>Yz#6FF5NDc$t;XZX zKTrpWYrOL2qi{zZb;5S+#|oM5@opywST*Lqn<%MeCnKCDL!;cxVIKL^9W2ln>BX^w zKW#sudm^Wqw`iC^B3jwTD&Y$ToK(SXmaV3DyN=&5gXk zWrR<5bTwqL`z68Uad(ckn5rOrCCyB;w7~RYQ*(tlf1df9#=NWl#G7f<8*#9|Nln+r zGhl;5u?-=URoADQQZ0pU5WO*la>0KG7TipCr>m)T>KiT1z-=Mpe16lds9oDbG@tj?`Na&H+{05<@;!B|JXI;F;7(5G zU>1G%0x|n++xAYBuTM*M)hDCYI2~MygGk+qEwqk(Mfh!$hXMWGbB52tp8dq zy68raw)qvJQ=pfd{NeSHmE~ukpS&CfLZ(RrG@K>6pC|ru#s`D$27lcdVKoOB3q%gp bW?+~@>7SCp_ag$MwQclTy#m8j$Ns3FVgpE4 diff --git a/scripts/fxdwarvenspiderscript.pex b/scripts/fxdwarvenspiderscript.pex index cf1d04733aaa7df79ba9d6bb38fe479e0918e7cd..08d37a58d9bd5b9673b2ee0d5b1d7da0ae19d3ff 100644 GIT binary patch literal 1840 zcmZ`(*-{%v6uqq#iQOy?*m1@3r#%gp6Y1{^Aq`q zd_t;HmB)NZUh@xmNly37#1NBiNpt%y=bn3SkN*1Z_dkjSVuaQH?ayCnZvXq%CD#KX z+i@5O-QGPte0jDKCq7l$yq73RwdU#B^W&3~(>3~wGBkb{y*1r1@znW`xC!~pl34g*Clr{ELmHCeGKH!&8W!wZbg-`Eo(!@K zwmCGS=g*7TYQ!2`jk7+z5p+yIG0VB>W>r~#4 z6gO15;5~bVg?SnAD?nCSA*e=FKTOtJM~Vj`ppv!G5Py}Whjf#`6DqZhifO2K^}=1K zJkJId52eXZo4K%+3){J{LnYkLo_np1!~g^)4wGHg>)}R=AiW;-=RA3lU7Zu{=pH;6-G{1pm(jb7 z9^m9UF$!PUp?&X~7Ch(DEVct42tLHOjN&KA7HW|e=>uA#4`~z-!=DWl1ZdC^&yG7NCL zMtB7@Kf|{`s~~B~7J#w}Fkq~`!C+8guKz|ddW@(Ftc*9X$ zcQxK&w86;9RV0AC0rnetv7bBFP3Kx?w24pZl|61afAPi{v_^0G=crW>_|iGL>9GQR g1;j0A-YRShhHXZ}Fg$e;TaFf#_Q}fVSla%70P0_Q6#xJL delta 913 zcmZ`$%W@Jy6g}NDK*A%Cgz!qDCIn34lUEXOqaeC7frxe$U&qd%Ago=}P6PWok#Q9{iSBGdoSYWouCT zn(+d@N@bJ=Ewief=%&n^EZ^LjI(=8y4MXb*kgc6|3sCk=+s%qltCnTBX~_+?oC}_0 z+s&qsV;5195~!pp&7CLG0!8GC$^|WA-n+a diff --git a/scripts/fxgreybeardshoutscript.pex b/scripts/fxgreybeardshoutscript.pex index f2da8c3fd072dbcbf0c9bf10013dedc6e977a2c8..9bc19332aadd3619b68026d9469883481796524a 100644 GIT binary patch delta 1013 zcmZuvO>YuW6g}^~8IYpTmT75Gv@J-*Pg)AdxM*wwjY-pmO(bzQI-`!knPxg$L!vtq z7i5?|TEGU&H3!^X@(8-gEh${gIhH=^g(P91Qe5cV5pk0V;mNS`)kwegJ=+ak-?REiymM{a@rHkPqW7#2RoPP`x93=a*Yg9rYuV18 z?;qASqfgA$w0+-;zVO|0;vfuM?=4cMNs#lx3NYh)9nU@pt$ zaIB#Oj%y4V#Jh@0^if+HWaZvK4n`aZEKsPrlY}lJi@bbEVh&4`EXT<_bSe_`E8u$E z$#4Tj0&fx|@(i~aRwxtlm2_9>ozS&YC^QTTv6d{-Xv8AQxQz*G1X)oDMIctP*t6s<295~bV`ORQw0#S9IZj@P14dY3?$DGo6}GX z9IZSX$UWvJd+4A;G|50JeXM*`rF6U|#}-l~dFfIdZIYGpIvuyoutDW?+_pOIg-PUW aW-QxMqv#kfCI60z(@VvEv$$bpI_G~IhiKyf literal 1995 zcmah|?NZxD6g{$K8)AsVN1%M95ur``1p$+gMkFv00@Id+4sMe6S4Wl>TZzzmq%|%N z)c44f^g-Gm^z6zuCNPuT8T;!2*|m`~3)J_kQ0`#93WUg~bPNykiCsdB6l{#y?7<1isG6{Z5!bU?Rf1Y{?W?c7xD#hBr=LOSXw zhDckUFHU3-9)}{qwCmPnI}TpPUOf`8yyQa{XY7g_i^2psCnm}{mWkt~sq{k%891qi zNl_jkgawr`bL#Rh6CY`6RL4u~aBMv3)I@V$DNE!8x zPf*ySA_~KK5YWcB>Vgy+~x59#a{N{z`rO?SpN)Upb;U zr@};O{qS_J9s9arSkfc`@kk8oSU+jn(2G(o%Cg^ z_Vigpp1D!XTHNzK!u{@~y3XLFI!jKs&E4Li5Quuafr3gnIKAsDJ!2KNmJu^YEG1PU z*^^0M)9#bV`uL-H&VRgG`5QxggBEi7d21uzGi;!Y@629;-Vd>YRaCLYhysc__-C3W zjZomvFylwKLF!0kZEg)kR|(VHGu*S7KSJaUMCQ+7 zn4YgKjQ1k#EncVZzKJrZRt^t7!LzqM0`yH-_~z10Rxyij3BhHtOY{8I-1CI|{vt6( zE&Ram^ezo}sq;LRv)cw?mSIMm;-EAcq{Yh*FD_dJ-Od~v+7~g$(Wr1Z=E zmZ)6S!fFnWs9aSmRHSli+Q@%WDc#KT*uq$^&VrWbvWTTgqcW$apBtpI&dj>_0>RhG zbk6*(=kSC{IO|WlkZkI@2GGEt%fvylIMoAr@+ODN`Zic?;R-oDHd!}a!!n0wS)R#@ xib!yS1nGZn6g82gwLyvaZmjE7&0&*SO@&l+v#;o;&SPI8qN%ZA18Fna{s-xBZgT(t diff --git a/scripts/fxsetblendvariablescript.pex b/scripts/fxsetblendvariablescript.pex index 1a1fac678327d80b5347d3c67d2f7195451b601d..f82321d47c6c2a11f5d65cb140c67efb54b3a891 100644 GIT binary patch delta 896 zcmZutO-~b16g_ul+L1!(K+9L5N<|8Ym6oC+8zUj8i2|V}Zrn6!MG`t=po!5<{R1wV zXJTCW6O8}B-{At$AK=D?iH6{L??LFocQcuH&bjx#bMMFCTM+zt^5xKVAmFLiXIDGH zWV%{w9z-E}?ruN6|7de_yNs32z4x8J`Oaak=R)(Ce^;UdUkU8~Ea_Xr} zt0Q@>KFfl7=B}yl&Ic7b2Y$TT+TRU#RLLu5tF2nA0dFG;8}L_FT8-w5C3ve*w5L9~ z>+0CeCHtaqwXw4snpE}Nt7j7r4k~L8qguUDhxf9!+p=z}`#;oIZ$k3ww>Q6BfQ}i) zRmME7F^UXuwiw`{!dPNBhzop8^SGk6V)=Gb-+>f*?InO=ygP4*2P^;vPg#?b?oP>c zD??{pd<>Hx(dj-i7$rYu!4R@k#x3YWdx9uu(I74|?~(-xOj5~Pkj7<#DGLJn7f$8i z3Z^w>k7R{gh;a*MJWUE_F$XWjzaZsmW|((qI&atSe9_yU@kbPS?9Jl=yC$-y**Xt?N$tK|x6{WZLwbdudqxjQ2}I9mfkr%4v3| zQepR-=iMC#x5yix31*eqL~Z%wtlRTP+jcOcI{z!|$0kYK=$F%R6dKQa$CDCY-UdYF}PULfw{_D%iW~qxC^;S=oSdtJ$ckpY~O^ zXQQ=KYiz1zXEf;+iyN(StBP>5QL1j%8V0F-d!esYtv_9YQ))K1RmG{yJNjDF!P@8R zzu~YIfu%drf!z(rXH>_T-(5*Q^o>4P}Nm^SW%FeZ31sllELkIe~NwlT$7m?dT;!huY|P6p(Qxhlo|_WCgXxA?NX-T QS6w_9y^xIColfW1KjuGWvj6}9 diff --git a/scripts/fxskeletonnecroscript.pex b/scripts/fxskeletonnecroscript.pex index 1ca316f85f045bbf1c0883bd0b5f72c03063862d..acf503156d2f3634b0db65fd289898d1c343916b 100644 GIT binary patch literal 1880 zcmaJ>+fo}x5IrL;5*UO48#`PQZ-@zj5Mq2sj!D2E;&NeJh)VqCnyg0B#LKQ~cLd=r zpOe2x{vi)}%ZKD8IWwy@QWeg2N$TnDIde|;tp54&kH3or2=F=n>$ew}tG{WyQ=u|( z^hyOu+z1lgH5=VDK&c^5(>TJ|&hg3jhet=po7lzdmGwj$Jy51$q)`|J}>$q=QEZZ=hf>7BsnGj%B2I>=D4+>uc; zRH<(|%5VMRx8lUPk)`gZeIY2PDr_CA7DfmWC%9g#?WCR8I#fqL{Y*A*&t!rzY2l^K z`?XsAO(wq&ao7uu&JK0O6K6W@$xt~lShDp)ZQH+42Vs0Zuw$WC8>-k-(sZ~hgUf)@ zj%=y~i~k3P$`Exdo=|%1WccUG@1@F@sW1I5)ooz@!#Xf~B_EF2Bz6WX^u<3^;@oT!Q2n9{BabW5vdA89mF z=NZ&kt!BY~;9Rc7(SFqIpI`@xi8$I-Z5?H?QTgsfCT(Rv@3~A3J4i}Kopv9fnsp{o zEk(wGg4Zx{7o(>aFLfARRzA$PJVNnBWb)Nxc)U`l`SJ-y>R~JmylyBju<$(5_9nO0 z+dZA?$f$P03(pAe_EbX|o7aI1T@43kj0`&c@uA!^I@IO@-nrBy&-$IP+mV>N8kS8! zsjsv&tn+S8a1-8c9EbVxUhdq7*OsUDRaE9RsZ)4~l)Ea--~2j8_|gg#>_35Zin-$f z6-=P&Yzot~8_s57&DL_OhdJ6j%?3(f^(VC3G@rIa`;4|s`y4B@0?GoTwwO=hPmJN3 z^&Hwb&vQ=&lbKV+ROU?Q&J3<+5szf1GMF;C&2r04n<k0d=VdKF+mA)th~)o@s@xu@F`cWHx<@0&*;)Xl%R{;;GO~nPv8ze1t;60 zc#{Il0^{7aB2evv2?mD}(*p^1^F5@%7la$ZD!XXm*6=0P@f9}kHL65dy$X7DC@}y% zkhm)_(?7F781MIAfklB$;t8yg?LFr?>14Y`$aR4V6ZeM_>r8Ce{uJf}9tb?V6tcnM zN0-F~UM$#l2|WJLDZEzir5Eso(zl%a8o!_78$4qhwkh4VqQZfY>lV-bR^U5mnu2$eSj6}L0gUp#xYd)V6j>FE!98yol@3lravv34j;%LpSeeVCXe-`0=y zey1ZN>q!mfisOOOD(j(otoP29?qViNbXysfXc42*Q|-3YnBR$vI+M>uS4BAsZuNw2 z$1)2{PX?V|gHDpVt+wF@*(e#Th2j6g+&`CxaWc$lUZ05+vu7$Bh*-MtupEYCrP!0g z^vIDzb5Pb3ZJDB)$++`Eb}+^Gk`#dz%j-ANe?Ewfx+HZy40p2Lk1CeOZ{D&Pj&xes z?1W`ldjESYObiS4F+!}oWIYl`9t>qL$Ydb0Km>hiu4Cmx#ejd5Xo=eC`7;&AHoq`5 z^0fZ|jhrx*9hpiUv9V!jv9DOY5$GYxPqisdkKnT*r^WFxrVipn82Bxd^x^koagOCD zsj}11m9O_yrnHgWltYux$JLfJ)~_NFI}GzQMnt_)wx|w_ij_HsKNQNKM*L3P?+G*~ z)9&jwwhjiGrA{;_MVKHPDiihG2&t^7nMvFjWqlc`j*{&lbCX=ta>zJ1)0LJ6YEQ zi--AZ$FM{g75}Sd36EIK$NZJB$-Y}^p9yR-9&(LWadXUZsfwE%t4oyMk#38>GD1>r lvoV&o$`Dz}Es})X@!xj&A1=zU^hLAE&by7ts6w+q{R=M}Y&-w} diff --git a/scripts/fxsovengardescript.pex b/scripts/fxsovengardescript.pex index 78b68ae1031ef83b812507309ac8df501d3ca395..00cad0fc9b86e5972097c2b3eac1c9c64dabc133 100644 GIT binary patch delta 638 zcmYjN!H&{U6g{^stp%o#0YMOl5k_SuaiK;RbzztV;|4KcW;Vv8!W*n<`zD=d46E@I zBwhI*E=@Fkg)4u-y$kiWz{LAr`|dsG-1Bbx#rl4w{QKnFPhA6nWBliby(~8?6E8fM z5$yi>#na(vG`@#}W&d%tFqP5FSH6tA0OlKiHWShE;~?3luHJIp#l=5wzB2GK^0doR~>a|$PrAe{uhPGC+*=yepOkp zv5n%UC~!j1xue1^mqATpLmf3X%Ytx?6@&&udY!=hb*}W3++r>BjJEzmVX!nC8ti`K z0%h#*lS7-|ySSNIb$IwL_TaEbiLlck+#=j2v@>Uhb~B<~<1B^rCaUR4th__$t!E(P t$p^q8bXd+uSO3ew6YUcUndTAqW^{KgYw(r4JL{&E)?WK*Oc-C;@*m2OWz_%x delta 487 zcmYjNO;5r=5PjPg$~Q!T3W9)=5EBn_@KWPJq8LBI0V19&Em+fR4b((WdNuK2(|_T~ zA7G;KA9(cQzwqKg9a>|Y&F;*+d2e=hUm}lk=JV+JT@=7THprbO-AqwAJ~u6Wf@F8U z-`eT54tEc>noTUZ8|&HdiK*)bM|@y&-E>TwYnFT4c0X3q^2D%)U1NyQ=D@MX?rYtv zv4Xe98j{qpxmOYDN~mqwnuDmS5@PhVF{Cp~yYwDddo|p1#wH&jX7g>X_Z-bJAWeHh zR@ER)*t}(oOzvmi1zV2#b9ZjO?!7yqREr>nWXp6`r0|j#^P&txhh%@9;40(#kDdIPo!cb(OnF=EPrs!7{ z1grvS(uAa#?TZ2~fj(EDiu80nRZ;(W@?;Dplut<_rP;-#!qMIeZZp#;HRtR0g{vURhY?ruQ(S0A9i zK2sl{eT4Qw`cM1KY&Ib_?)eeUob%0@bG~zC{yF;n@7^8=@GBI4dx`m-qB`=W9ai_G zAKFDn1%-|MoxOwW^`MAkLDmA##o+q>!K2-Let!uP)9>5Dm;>7?EQB&t7~J+kFH%SH z?pC?1irV9c7>$=X+qHu#(w@8S+BF&4p1XCd+z|bqyLoE66(p;6sia(_ik@4tH9$HT zTQ7$8vD%dtyBNjArB?FU(96n({wbBTZWmSd#MFoWKsn`oRYo5Jcs}MWtMJBlTh$b5 z-W$c7f>+1VN1ya-1dUnNMpe2MmGk^sqt6IzMS*DAZ(o;?GEb7adhPMpt@%}D*yUN@@9O4QkN}t z<{8T>DH&F`-qsy2AS)3-#Y-$$R_;YB^s-yh*+*O%=S$~%R~w+6yATLD_^ zE-o40Xy@q|Im3f|i;<4xF@I21Sr+f5>!W4w-I= zB6X&3n0_A}9l6^sF6SC9dG_3FSe0ScS7F0<11?my*zkQ$XEreN-OuSUO5&O4Dh$Xs z1+U>370yMa`l_r5ry(T+GuF>!O@Z4&Rjc1Y;-Tj`@$w4{T9%G;$jM7=$RNbTo+D2S zjn~`0tXEt211U{cPL@=@!F$pOZO0BzkvQQE#!&3raWPOkePTO~^5Y{`F%TWSw1`BR zQ@*I#LaH>!*fY-(i**tUI!(*27(exeede_qU>6ZQ6nDhN|N8nnyP} zT~ML++q@12!x0EWS*$h(0RsfAJN2r>O!qijZV9WM)CVVaSgb0|y&c5!!yBzz!D~{q z%eE>tn=#<3lc*a*d_&w)q$l)+$FS!3q7DO;2r6v@)%F> zl+uF%U{DawFYyk3J3Z>$8|Phj9t~OSmtVl z?$kMfMS&XvnMrE8<%v;&Wr5)-ftvyo0xR0uLnAU;6Rj=jcuOC#x45N=6+O5;BXCFH zi`bHQz@7g?twsS!Q7cgai~UP*B%%cMVBEufq?y&-D60no3vpZ;I~;SJjx~W%p1R)7 ztyf^JkAulwbk5NE&^Yg!(rGj$YQ((2hH>2^XtNzb2;7TyPtmc};aH<3*S7TV<^X-- zT{7c|5mv(wV1YuN!N7P1f4G&TyS)$IhJj70=t}UlIlW9&p~C^GsdAAxHO! zc}z2Pj>|roc_Hw%Ktb~kj@E&36gXN3rX|eqn={4DHiwYrZw=C*5W|Nes=pIB)Vn#g z=LIeh{L+BUD6@fwtn!E!{yXgbmmd+|x5tV@Lhqp-k}jyY?idvfF|p4h-d?qjBIJ3K XHywzl{9tM^Ni#VbGtEP~`O^OZ6dpwD literal 2767 zcmZ`(*-{%v6g`6^5EdW^ivbg?ERGW=wpolZ<9J~cCN_&DY@DUa)gHCb*u#u6(*l#H zRNhjRFUeQr1Cn3JhvXs2=^l-i1otgzy6?Sx`rM`aufyN|O!dG5hco^*|YXiKOtlq`#`??yEY2mY$>9t-6L{^p7F75V~y zFHb~>ffF}s2u~WSn6~YfZwq~H-gr*g_Es1){K^J-(Cd--L4*}!>Mg5KGw1e0;dy)2 zVi-iKg=Bm(QC)f-Mr}KCcwR~PM{>vYV_VS+gu;kzuh+C*bBv6I?yFI4-}U6)tJh4X zQT7X+3!#D#W42w9Le)0k*1aHN%3=qZEHPu-I~L=5pGUCdO5+-aeMP96> z<5pc+DMY64v%WlS-T>RyV9(iF7ueZ;C03_(hSA4j82^F5Uz10!AFr~T7r;Uv9XO>nnK_^0rdLi#c4DO50s_rSV}QloC#@Sq^0BubrC6y?|b5`+<3JWih8Z} zI3TC{r6?+Luc2@uS#10IkOL7ONu_5Rp`E~63HB0tn?AkW9&?Gud@@-`CX2}Nc2$;HXq=?+t}!lZerYQ8*U}!`@ue{> z)9GFtfoCqqyC-P4-(^^$=0RK2!#)Kv)|7>Z7FH8(=?6bT!>_#yo(XLwqzCIv#RgNF z!X}E?Y9=O^x3Fnp!$N+7Gee)Wwung*k1UKdkL#flVxXk7Gclse|YfR&IyC6n2{=_gKANvf7PVbyseehQ0F&wAU<9dsjzUci9{rXYTX7 zr~GA5V)N>bDf8?Dp8Jf+%Cq5^=%;Z^&n=X69+;6)3$qOBup@LDNvKQ>Kc&<^9Q1h6 zZZ@_KttH($2Qlrh+uLb8Xwp6hBH`Zwp}mOzjkyQUnzX3QH%Xjl8|T9_jBgo2b6C^7 GQ2zoq>@W@h diff --git a/scripts/magicattachashpileondeath.pex b/scripts/magicattachashpileondeath.pex index afa516f281d9209e95e88ad849169fc7fce383de..1222632dea2de9a16512a5e754844e4d0461e875 100644 GIT binary patch delta 1272 zcmaJ>OHUJF6g^+3(-)-=psl49M0}t~3$&$nz{p!F1*8ylV{|N2Z0y5K2NPG_>%x$4 z=gtkk!KKlk;L3$=T(WlKM(@nm0TPXqPIK-(_nhzEJCiwz{O%9^dhqePdR_HgHt#E1G}oeuNlR5vC%kaYVa#cby=&cuS^;L z%*OZ;8wv&O>`HUbBHlP2@?-X%_eq<)EoJ!+N4gWqQ#q@Q7emd_vqIi7H(dC67mNT1+=*L*6( z^uR|qT{45ei-2AP%p4FzNPsZ(j*GmCPQJk2me6}QQNKk~#nHs=r)&q7&}X3YvG(X%8VYSAjNbPg*Swi;s54n1G9R-&S% zQ*(#)M7wP>8g-drg~2{JDh3IXX!TS?9i{&&P1rrAPI@GivNzW`)8w7gCdq16bSS3t z$;_VWzn#*u)~ts9u`J;S2a32$6N_sPY>;7{-r#ZZNdgs==sn-C-gQQMr(X#Y@tZ=z autgTM3`&{J++*18uEwlgC!Vt9Guc1R)~B!l literal 2726 zcmah}*-{%v6g?xf07mSK!FJMF94E0Oz$}I#*am|MHUhvX@zyEQ_Nor-Qry4`m>ck92;{`jje0|)&0Qy<20r|H!Ke@iLPuWu#w*Fi%b zg*(zy^-?SGkw0$-jY@*z@ypZgz4G>({ezvwMf`@@|Fom${ynM6%2N^pdy$GPTRaMP zt5xZ1Nvu#{n5!VH;f5cDl|Thi=rxe92bGEpF}CHa;6lFA;H(wymi;(rDOnNHxDnMT z7EvfF8m#b=x@ZwRMqIbLBOBh;ZdiGL;l;>3Z$zF#{xqP=CUTyyq8JmddtR1mtI?`^ z?_?Yq)$Dc@HMA(L#Q6u}HKGBU1s9$+9X|2mnpFGAezVyQB?hhMW6zh!#`zQd$`aQ|4jHEFr6>B0VlcPiYjN(@}c2k}|6)^C%ry9S;Mpt7DyV zQ95DP(6=9QKW)%;^mn2!V8pgEmQ_we$T=@^&$X8$(_$2OG+R)pdx-&-tH|?q4LN1j zV)VkSp!m>E6bmOSxb-X!^m|Z~?{|6%X+ab4`Z;7gVO2ksN<1jIE;J0I@szhR5GuDJa z_^hpeY>`|B%CAdp!inh&JSR_YO45>kP-U_mAN`@cv`z-2kSHvlO=P2rp(xyzwIH;2 zdHc>F|IAC&^%yK*uv5p)O@Yw|dPq&&IH=Xt6Z5nmE}V@b%a_`dyTE{vz4E>Csv1#Zr9^)x?NW0i0?RV$}G#%g-=?Je$Wt?>A4K$sR z-jd!K${_EcphNSMoj^YZ3_J%nFvzdIee&nh5{6JT0t{nBGdTyN7_(R7-Kz;q+N-J5 z_9@TPor4k0bd-Ucn6=7txMi7s+@|!7J`^y6FBsrUdl-eFbP;zjS>@+#u;l84S@f;>KKQ`lF)4`B~dDDEFERv_j zDme-t8*a%6c{|}?i8}M-DC8v3@v;^=ykr2w+W?LUP_WvoUG0?~ZNv9!XDl>gUNIQy z(ddX-2TvVrIe4VaGZ}0fM7JG0Gw9dof5&h}foRqk*wxuDJD4LoXt?DRW0v9#8qjXn zC|Jkla@rtws5+yg^ik*eweO5x8V;FNBCtINzjS~x?vzbpg<2#_Yv-@#awnM%N_qnd-<8WsW zIF5SIbWwhFaNJ28Y}_H`ye;?Ka*(@YoZ+q)x#dO1Ii(-%B}X&P-U$nFO70f_GC1R} P=FH*kzdFxL)A@e@w7@oS diff --git a/scripts/magiceffectshadersonendscript.pex b/scripts/magiceffectshadersonendscript.pex index ec9604721686dbdd52898c16a8b33f43d1e88cb9..0726ec4c4a783feff819f9f1f2f4a69913731fe4 100644 GIT binary patch literal 1414 zcmah|OH&g;5dJn<0!bhNML-@pfFz()iX8+E~gTv$FlQPz^aBm)=kL+_*SB~OH?@J|PHAmQ{ z)SfT=sD)I^_dG6;b*1opd!H>4~gt~(ukM?a9HmA8=4-<4LhX%rin0V7%L z%M!Fa>&ptX6#KG@SP~clQdaz#T9+8c$Q4`~8KWbMQLWgU7Z=|!Ht^;Kij6#}<2qy* zIZTl8AU4MEkWwdOBa26LG8G$Xs;GNUVw$=(kA=sWCFdNulG7IEEi8~__>Eb3Lg(at zdd&-)Ld{@6^U%bX=r@FAqP#-23iMwjq8f3Aa@Q;{3(E#^s;^AvEQ-xrC|IB>D;c8| z=(wQcY&tGd8f8B>0j8gXab_oVgmn!-tM>v>z`X$J{{c|IU4Xa`8o?}H#Iw|IYnF!g E8#qrd^8f$< literal 1357 zcma)5+foxj5Iq}~KrSSJT$GCpVgxKJMUp2|#e)%omV%a1^vzm!XOpFtnbhut6yN0! z=sW&`@BV^M_RJ;F(*-AMZbZ8%epS!BnaXcQy zuf(qKT5c3{Rk<6xNFVir(2Ftg=EY%Suhn?>{N+xif`?eX@hoK+-{Y#K9L15@lS(FT zf%HwfW*~yNgPbdc7pOoACq%jvcpev+dg7|!l<)s84hKm|++!v!<3@z}GGb1*8=eKC z&3av?B&)F`0UI>L`W-Hq>TuTT@-Sr7UR=gpy?(Ln=7+7y$5SUlJ`s-1Wn9Cm8dkAh z_jh`cqw6-nXfu?Kx`tmf+nHZ%JbEVkERT7iri@54VA~xN) zy(r>BvDgfLtX@yXZXZa&@%Zw&xF0CD!}Y-+X7cEmUZI|#o)xv@27W;EPL#$4?bh(y+49JXVv+j(O-KFGYj51CdbEZ=I;k6-Mbj$q4DEPONwYs!H*b?$*$$z-~wx z4#O&nNi7lgIW^;Q*snw9%zQTcU%sa?La*CGN`FS$(V=l{U=}L_W6*YQU~AA;8rTD9 zOJUSPS}W+&pD>1T?NMwagRJq98#;MRXvE$=KmUrt5VcVxd{Xa>A&)7-r;{LqTNKPB zL5>Q`VlD{^ltEXW!aQzkC|TBmg*yZe;#ycDlwCln z@C7UbR+Ms2oW5mvNNvXCJ+YrN7N{b_ZZw%0AJlKQ40n4BpC Z=4Z_9Ul7RsOMnPB3TUkxDs>TPJwZVbf<;Qx84vi z))%n!L9CohP6?S|VfNdZZ+7Cnx$5Wc!~^nlm2L&X{?^dH=V0qFK!~5 zcHYeaMW#)G@>;Dt9X&VUCi%-y56mZ>nl4?QtY!K_KO}iSPhpSKr$?-3x}6S&ddB{C zbdAr)M~qMsve^X~ktD+-tQ4r=wz=oVs{?<2FK`7L(xkA7KrmMbN??r;&Z@wYId6-^lx3X@D=igu0yl G1^Np~11iD* delta 492 zcmZ9HyG{Z@7=_QUyI_n9D;HN#ZiN;a6VQ%E0~lj477(@OG9UyNv#f;`t(Iip!Nymx z@JaMNEY!1$V#55%c41U*n^sR&nzsGm4n?gH zY&dq`>S1+kom!oS({v=%i5zyl+jF@#w#u^Cw|wOuiv!b3J^YJ5^7$^GzFyo9v9qTl z#)`8*@*toh&C0L>2nnosws%%=cLV!V75ZFzb{G-w2->o#!oWJBez1-Ndo?Uz@P;ms zU`G{YX9{fiU0h*IKw}aVhM9gWU)V&Fdz_ZS*_4=Ki_#kgleRfPJ1zcQLMMs7SR%zS cert(ZMV3&xCBW;_LGk>8HzJANPr;|0~;d)I|IaMM$gGo%zNsY z8Dtn_8RQr^7~~na7?>p)859^96d4(0m_hdQF*3*j+2V{0N{kG=j12N1Q6``uD+2=y zg9yYVkU}N~WuSHypfPOxj10<*44kYCVn7B+Ju6VVDkB5XXcZ8bk&%HLXcQ2s@G^1% J6*7u|g#l`PAsqk! delta 435 zcmYLFOHKko5PdZ;z-UlRzzGqs@rNLq5I+lCNk|9*6N6ut19S)m1~LvLt~i64jXQ5( z!or;kH(tO4co0_Bpv3O3u2-+?Raa{2f7L?M+mCOL0s^mQ}^A*Cre zyE8Iu*~*IkK$;!1Et-APHae!X@&am0Him7eSC-L~@V1SfgjSOFMb~(g7MxS%z=bP9?V?$*$xm@Y zkO_9o#iN8R!Ztzo@N^VrTo0yq2q{8h7P3q*)(N|;CL}%e-)x}*UjBbJTUV$c%`IfO j72h%;P0&=VGH}bNtl#6t2pKmd!Xnq=lVQ_T3eVUdIzL6` diff --git a/scripts/playerbookshelfcontainerscript.pex b/scripts/playerbookshelfcontainerscript.pex index 6cf52a6231aa8b352a6d07f93604b83393c7d88e..d39d020eb13421b1af4e2f2421744e52d89ca4fd 100644 GIT binary patch literal 22353 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 literal 14933 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 Z0o#MgNTu?P*;e0}HNqu_-VLE{zW|PF3tj*K diff --git a/scripts/playerbookshelftriggerscript.pex b/scripts/playerbookshelftriggerscript.pex index 596a4f972cf340a3697b0ffcb0a5a01ab72784fa..98fdc60e89da7576cd32f997e38b5d9ec471d633 100644 GIT binary patch delta 813 zcmZ8dO-~b16uoz*AGD=(Ds4f9`lOVig=#gJNQkBw5))Af1znnH`>+%144IjtxM||n z6`7ym%7uG>g$Wyfh%3)~rJC?w+Bf&!bI!fzUQ9(85?zfFUfa9)4gesXRt&$jIk zf#*`Hb#VCn<=);wlkT0r_&)k_*mnXEbbaR}6n#4o9VuPmol3uN4+pX*LQfn!pF|*$ zvIoKmf}sq=zzISW9akK+cXxL7#lyz^MpLYd?cqC7X+GX)ZZw3Jo=Az05bt_!=sTUE z;&#qNs~7VfyAkENSS)OAw)=8${0tD=ai#zE)b^t)uPr1)8HA1-QnoelrQJK*_3WPP zQS6oHMk!+{9t*&WT$a%VKZxqa)99-qq94X1E3xl%-yfY!7O@p=ndMBDvNVI6qg*7- z$|y~@^{vqO)=6E1(o7i|FOh%IG+62+$<$mOSV-%Wr)%ns6RNXFs*ao_iwbC?+b6*) z0(Du*1IYNrXjB>l6yKmZK;|Kk$T7_^<>OSshpDs?UT3<&G_OLYER%%*Pd?6tan7U? z-Bd~nut1CWFC%4wdrNc63a6+7bz~DfQj+5|`Y&P?{|=)fUg^VX~?UQ*gM(w9d4mao9o)+6aND fsg$9enlntR@DH7a{?Y~*(91QT+KaQQ#- zLHUyWLtgWg)7>)_2vwQZa_)Zay*+<__~XxF0Rnu2+n+wdJ01I9Wzvn~&w~p&K7W@) zqmfJoy|e!5yT{WsKxH_K#$k%)*)Q+AM}zLK{o|hx4)7A|{};;qwIitq+Sd|uN3o6_ zte>c!9FLDq1STV5$zCo1FhT4|YFk&mT+DKQ_! zDvWd#D}Rj2MHGfoVc}%>Ne22%p36k4Kw_oSu`TvurTs|BUuE*-N3Z1!>a&4%xIUCo$ zUNVt-mMBwEdciE=BuK+LGD6GAbl-#;aDWCEb{whCGUU)u&qi)==JEukfXmCpr#X0* zgXcMTfzo-LOmgvM4t~nPD{M^d&9mD#H;+4XYe|D7nrhTCTKi~{*Qsx)o2!F*KRwji z=O9CrM*c)%**Ms2M~OciI{qfA>!;FP1KV7mefHuRH(WoHllW2^1(telF6JFLoLKX` zGaF56-<7xi>0hYwQVSH!yJJ8x2PL3_22Ycx#RHV7u}?Jz0=3+K4p@U{&lcQi!<~nC zh@C5E7x^imE--KE@+thzY8H`HkyRTmcMA&+EMm!kGHAV(`HCtXmuWD86c({Ucblb3 z(nZ1|&uy%_90GU9Q{XOD#XADu2z*P)w%rt1r=8l$6)k78hI=mB{0fGwqr`Z}m8t?Z z$Y7I{DhmP|0*hs=5}2%Irt@sNO(P1h3O}3tE|$fL)0L^OT+K*NJA~T5N`ddPiQMp< z`>$7>8~7ggN$LS(w)x+-J6Pc4mu&Bk@B{WZsWsAjZ0T*;8BqLDU`yb>71@Oat9J$V z1r7urSUua^CLxOS*fy$yZDon^PpqMxr+aGq-7%sNXfF%w3OJFmyGGx<8THIY*}aq) wWuv+HmcS!gxTfb8?G**~__215bcZBUpj zjN7yv&l#gDrsJwGg0;1!WbbDE&)L90$LUGfyHXu?ojVy}aNAY>ZTv(nD|4(OKj_5Y zRIhU7v2v6|J`8qb#}9NAKhTn$Zs6>G#jnQdl|Wrz0~x@gbU$igF!lHqusPBvi(Fz& zAdfKMCSxKPA!;i7o;332qVVp2Qs3rL*5}4Fjds2%v&J%1f^VKjtk&TE^Zd_r;U9&;1OLm2Mp~I#9E1Gj%SX~jOX{4??2NiFwo~uotXRe5KZvM2 z!~1cwh&E}}+uIraOKJR$uqm?7b=(@6tWCC8(^cpA)i<=T>-^}vP5wFl~J)faixjA zn8fCYxH?Q^Ih5$aN_;|2nG8lkGq{@s+w>I1DPn?BvQ>t0hO&ccGHe0P48tVD6vKpd z8AGAMP$HMMvco20lqjaDl8Lfj%Enx%6>@83YF zsB4J~53D#W5(lTBWm&>9RtQ}s>4h`u_qa#j&380NIKF6@m@QAe7 f+f#(ZDhS?Sc+9XAyOg#!?m%BO)UUBdT@3r-4 diff --git a/scripts/playerpotionracktriggerscript.pex b/scripts/playerpotionracktriggerscript.pex index 58c1a5aa9cf9716049cb02af2a13154ed9b6caa7..9991735a8f921900629274435d6fbe8e81bad1a1 100644 GIT binary patch literal 1260 zcmaJ=TTc@~6#k}HXiE{fs9dCoi27i>#@II?NJt2f)=1)uS#}R)rOY(D1B8EP;;-<< zAHtL0%x(oVanEjZ?%#LLOs@{U|0))sz^5Z$eqd?8A6!bZZ)|LICkRhIC2_AONjFU5 zfqgMZLzJx~NsQ9L_U?N;$HIRr*mq=0Y}W=>FuG-|$<*4O-jIHO#{?1T+dXX(SvTe+ zMZ@TI>BTxrYg`1eJu=Cmk2UvnPG?h-1g`BJ3C;zT<2Z^$qaGR^#cqP2kMX_3ZxY&$ z97!TN6il_--DBw=Z5VBXSWEKtJV-FvZm;zd38G8KNh0qoky9Vd+vym)m59==(Si>j z&vfV@TlP4xt@I+c;jyH&;lh?a|N+)CFbvF>5C-F8hs zlUL2?O&w+7QcBvWlE1H8y$zX&JxjDhlva3_a9GmtiL9`4I(X?yo$?9|p2<$EPbA`A zP|LUK^gQJ?N?iNt(0qf31Aj66LAdR4#o6{!e=~-OZ&BRVc4)oB7=hMmI3I1C3tf@<&W$5v;*^`X1F(`euo?*4Bq5hgk^-A}z# zVzLvZkrm5(YFiElyO9@Qs@qplEL%}@lAsc)mh6Yhx>YW`Fg=RmLvvQ!QyHtMpf>77s4NyD|gFq@w?;U=Ye%g~qGM37hm~A%qkLBQKJ5s3^DjENJ?!~y> zY;Fx==>=ajCm9%Ho}31#jvb&j9*yFD8i%Tnhi`_;*Whk??4@oj(_yRNT3fD!WVA|*jJm8WO*k-jZBGd8X2_Y zO#0zbD1!`dLdgpYIN5A!$d9bI9I3VnthtK>42mA!3w ziL|!@<(@o^&SjSqz^!dNCQWSXG#WC=lsz_7FEci<{GYPS1=e-hn#_mw;~#(hh7#|; zfTKS&E#yW*9w?&1RpqL20R>v<@V!}Jq*3RfmyVs#wuP~!&6B_k?u{)ME>^Cs`_Ril zSzt7r(W?RV8W080QOEl#e zd)LG+nT|4MR$!6V;x#MVm1EZ~`3NkNNsg_WVS{E&rczDd9%B}{IauLaOGdfRBbPBW zaHGw&N3Mf!$@)8i2V|r19UdDV9N8tBu6{K`$uZTcMd7yU;Ngt~t2V*pRRT-5gf%8v z&k{Z2<#>!I*uW2{^FPDHYc}zkp}$6sG*Hp>*DZZ+w5{8tbq9?b=xYX@{d>v?fkz|t znVE?xGM||R?*>yp=E;)4b0gJr0(Jg$nBXurC}%z#ll9ri3^zeum>i={8f?KE$YEYJ XLw9rYS~oXs(cCs2yu4A*rYYcGYkD^v diff --git a/scripts/reanimateashpile.pex b/scripts/reanimateashpile.pex index 2b4355cbe4a04e3091a771b6fe925649594e402d..a0ed179ec4163399744c3f2125c285b1aeff951a 100644 GIT binary patch literal 3177 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 NZL_C?NSg_N>t74&a?Ah# diff --git a/scripts/silverswordscript.pex b/scripts/silverswordscript.pex index b07995c014a31b133f69b5f52bd731f61aeb5224..5764008bc75af3659ce47208f8b99df911bb4321 100644 GIT binary patch delta 225 zcmdnVdY4t;SNMT@%uEc73_uX{uVT$a0ZHND#N6WiJO)n3pb!sVfBzsu2APcx0gM_} zRwb#q1qKW(PWkyc4D23>#Q~{B*$nKCDJdWZ%#4+j*D%VcurhFfAtwVT&}c>mR*(%$ z3~Y=H>>w@(yq)}vu|JB5L4rY&L4bjWfmNK5L5h(|St^JP*6XLa`v3zA&=5ujCXiVm1~ZHS6lY{$1BW)-AT|hGpZtZf--VGufPsgBQJj%Mf{{TC$OGwTWMtrEUQ!0t7 F6acNM8_ECx diff --git a/scripts/spiderwebanimationsscript.pex b/scripts/spiderwebanimationsscript.pex index d1f5950bdc46aa84c9597a2bba6cb200191f2f7c..a1427cc5c4a02957f72d0be940743da1b04ff84a 100644 GIT binary patch literal 2788 zcmah}+j7%Z6kW3A*iJ$MAy-;jwUh)J5^~`xLTT<80s%W*`ot*KajcFlc_by7y!Fr8 znSMgw`vZMzUpjrEYadyP1MT1)$9wOy&OU2j&iUufFTdw=Fu+gsw_pFlLT_q^}l-?`}$jw>)CxmfS#b`@}CvOLC0!@LEDOgwmRl^WvN!g`nbWa zRKQ#d0v5)$S@(VAZoRF&J90t{sz!sAikc4Fjw##r+?FC_uNgW~v(^m4cu50IS-_BO zvmUFGzV=?UZ8>>8t-W>**mhgmtBtak_79W)6Opy5CYEf@D2wXwp2^EY>;BVaUOZ*)|#ZqHQM^!+g%kL&>&d)$S}VU|3Jl=~c{@7Ll*`ab_-| zptH&x%P4HM0w+e;VHM9V#!y>Nsj%2zv;V)J{b7= zmM2!4_pL0A+c017;^4}v>u#uy@_Ezaq#Vlq@QxQeNkob%)muoF#Z*~Jm0PK@jJ`^= zq4?O8pzPdtol4|60$&hk@op>2Cfy1ApuKC0f*%9-nLHtM8=QH5dB3y^caSwIbqe0U7%_J1vo0&Tcwb>0dlCa|T4e@;3wGF19 z;{;|^H+ba+IiD5g|AhHJ<*#&Lhx#DnR0v=_pHkxpJTvf|n#2bAK1mkH=ZUyV1WptT znqy*`q?bQ!wvodwJuh^xb_5{3(u8yLzwAMpkGPto!pGqQu6b0+vDW2UB*$vTv6^wL UrW|XUW0j<8;>v4|Y4Ba(Up`|pH2?qr literal 2744 zcmah}*;d^!q=)=^1Y@Ldx0NS zHp{z5$Fr@dhJ5wRYq${x%FkbI>{K>h?(S{P&!d9re?3R!;*N?du@fuw>;!R;u*0o} zb9p5Wih=*K<%(ZE@b?18MQ%f#dOijN|2XtcPgVHDk5$+u?na~Zht;1{EiS7Q6)L}`@Yj9oxb8((R13XUY=w^R2F=E$6--e|;IwaAPbG;3z_3AlEfSRD;^2>_ipk8fI<;K?Bpa?YRv_fa7}TMD+nUOF92eau(8j@q`Qx0wz~EBkD_DLbHrVwwZSbQ|AmFLK%y1u@bU16S}c`jI3t zs|U^&IaZ`(Ni6Z|j5Qe{I~VK9W-;<12=1jAGO+(X-osjwF2g+F{$OSM%&*B_GJ+FZ z(S;Y+>UxIEDbV{VgA?SarE1=Zr(BLvu0YXO7s*Y@SGXqrDSB*MKwoiwy@CJ4cN4Q2 zsm2Kkww;Lmfv+!3A{A{rR?XJ@9ES8VzPr^(P4md^`f*2GKu))%qgX_4yAe1sOt~>A zG%xk0pm4@D_2NtPl=V##kX)o<=N!Gv(Q~Q|HMa=!!tr9~ifaQ)VG$mQrRBMY$lmvWjUpd&ZD`uW zCX?7N$Srsb(V8Os1Nt^i&?xWUq^VfmokV z_%sowaD(0w+bCcXpAqBp#4-wt!WW4!fiIbgPO*SN_E$QU)qNEQinnl^-*>3WP8zst z;2tGChXDg$(@yO-U0R;MnE=Z9BHKTL`~089x0u5`7O<$%mMAY%zDAh)Ib+bkjDhh9 z{s?%My`wytsAp1j-?V`T1|Axi6|anZ8JZ)?61DW7Gc@KhIZ6xEGs8y)sL*+5GFYLW zO7mUX2HnJ4uyRQdyX{ZY!dUk0+qZvmq__3F=_DWHIy(UKUA+drXH^9}W?ieSd5!<; z?Rurw66G<5dE80y@sNR49@B-;LVlISu8J%@SW9|9^;$>G%r|s7Yx%*MIX`g+~RMZVKxm66Ms`5 zC;k%yL`yo)vdv$A0jS<4Z(yq(c8cR0&KXH?HZa2r)rn$YhkKpHQ+9BdQJ(R)K+LB! z@Z2+UoY->%d*lQV?8I(jU?#hw%F=N>hjxJC``|e~3-dT=gUhlXlJ94b{Z5emPLTaH z$bk;B&mae)D(WBx#YquOmYMBZu?&u=d7%qG6bEkBl+GwaeYwk%uLa*X?ZOud{{UIu BDt71cGp$hGtnWR2xw~6m!v-$>FNHJ*o(R)0+z6DPXrpsDysI8J znI9<^PyIeG*T;`pxBa8BoxM|2YD!7@>qs>7H(`B!^4)y0k)|Zd#h!v}6|K69q<-DT1scLfMoe3Np9(0VR&|#TOeUl`2NLRAdeoWfMN0MeqP^nWJw%QI|M(RHiZ#t2^Q-de7(msAJlZ2}H4Wm1~AK(joy0r}F>z(GmjfsaAz6ISfO*fmFwEur6d}v_RQ}eP^3#~GZbt6gF4FbN{D+?bl3uXnAdz<*=_HV=&K1xT z9T;a=>IIW?$!2+7X^$~1cS&X?$(-;`PELMNlk*mwkp5i;GF@@cm72Hfs9=?px(}mG X&Y*C*E`~K)P`+$C!1}2M)g1i`Mw1}F delta 722 zcmY*V%Wl(95Iy7T#7){X4ow`BRr-`H`kx|!@|kkh)*ZU8<0J9tB=CHsEK4R1Z69hs@Fw9$>V>2#H51atWJ$oAP z8O^c+XEeFH0Bxup&vO^yeI%Z^o*jUO5c}g`!S61>z3_u#rlK46-d}tQbE5n}N13gH zO>9M0MHL2HJu(v}KL;Tp-7XX)37W)`{T!Z(o!PR)Ko)uo1aip43Joi`!h9sxSh9xY zC?E}K1_YHW=i|JrTEIH{qNIw1tArJf1lJ|PDg^V_;wFR=HX`XP55d|pp>nB3hOo&3 zX1D%fdH4-%$H%3o63cjiKkXIlaQiAR4K*HAj$zYDK4swKsoIB0QTT#-GA+iL6{{+_AOJ-?}&{~L@Y)Mj-kdJo0wt1N(S(3xN Xn9t`wxp7^Bd9gsa{r8KA6#izf>;j?!q9D5QhUQ{iZpsQOAb1yp2*$+du-oiT9A>E5SuEdEshFzx z5Fg@0@|xe_ORADTk(d07Jmu@|xvgwfwrk;>)93P?ulw}=yYc?-bP5LeS^ek7ztFSh znL7)@^v>@ztH?bxx0|km!u;ym&3h{=t7UAVD|BH@*A3x6^i5x&aKrUoE#_TkRWyZ< zoa@|m%^LQtIBT9&uM2O<@r8%tiZfsJtz8*ctTsgT#RK8JXkvh2uDvVnid|ug+I4f= ztP5l|Tg_MKah(NGw;Wv}w`jXfQA1{BM>y!Nx=zjVE!Qz^t71!d z!l?@MRVsI_dc$9KUH{px=^?YjswgZ75#Y@%xUP+U`t90l4No*1u3ei_zUfyRxoHdRS5|7a=aoXjBIGrrtu>1wHDbOv??`EJRgQq(c9S@7jD0MKMye9V`*=y063K4h|NwX$k z9KA`(%kAoT!gDGimoeD!IM7!UTV~7lOLKE2-)r%bMU^HK@^pKdDHNg}QHTyW5io(F z$lQL!?U^Rp)k$RTyN*CtrQ(b2o$^E^O-9lbx@+pXD~gfR3WgRY1^XE}9@Ew>yFlZEsxjVFE!Pa=GEnqV;A7(cz{NU z>k_hN)pxy6pNYU-Kz7-7O+PY}BWWD@hS`)ufPBlhY|DRzZqIaT?sgDT7yi0w^AKj* zK{j7nK95hLw3;P7tR>%7pqo3QYHeAf7QpUu#7jN+g-S(oxz6z|y3UeQ)8;IPl@CtP z$%RlThXP^hCV4bFw)tw_v9?V~SZKe9!lLOouFt{1K%2|FQ`<0U!*ac?gMRA%^ z&{?NKVH!E6kvRrs3?GW9($X%EA@rL>UOkaT>}C9cbu#T>5SDz0(Ktvryy4cx>n+*XDzF!wW6xW2~^iS-(<@l#^G!5jRXSa0zbza-W>yu+_tzj6J}1r$}^6na9T zR|_fZGYE~C`N_R!|4O3YK^#zA(B6*${slQ1BqQoG6qpQBb3~hl!@ZGEI2sD0k@vCC zbUYMF_(;c}2rVZ=;glBS8KrPKw4Motu~68Lvn-&1=P^nO4~5DYK8}^+_#{?N;?r0e z#%HlIg7eJwxdfHR5H7?!XHbrn6Bv(`K}^KTDNK^N0L}qS#XH9^O}2ua!?+ml9OXTV zP@m@QG0?^9HKUy+mMkjtxJ+oX{LWFn!tc2u16K`PGf_?8Npy@1jA7RjbQMD7EkDX!mW_4QN>t^3a{Hd79{KXV+*phpkApQ&5=5?(F&i7@1%E_N z*ZCYspc`cJF~7Ye@ezyg-#R6h-~p|(av`oP->?k>qvU2oaZ^-!zcz1#=B&bJF!oCo z`&jxKDV(LHy|Z3@FZdIX-rG$|;d?@CnLU9;Z6QQOFOz>o%h#&h6Im{m!qXJK*%K(= z`--qe~@zrurb&Y*fiz+|n&R4_bVx3np-xdmu>cn<`-#6~IhH r$!^-I>Itao=}c8MK$~KqrlA_pP)kAV$tHi5{*MO9O%c4XA9(%;WVlBZ literal 3354 zcmZuxNplld5dKEi?j75B0fSf!Aq%m*fdvj&-XIu^7Ys?*M$)rAVLam+jZAS&r9vg) z5DwvxT=OGx%`v|sKO~1#zW1JHMzTCzD)sB_b${Lc{(bz{KW#A>;8z}SX3(+anFmE- zdRGssWh6^A%dS+>xp8m1xUyM%ba!I$B72$9CrZ13LaeY^_Dc9K$RpBG) zI;*Z(LD!nI1QyY^RiPlxEiMp1Mj%{e5yhvXuNw`Nsio|SHjeuv|YJ z%uzYU4+t$NCUBlF;nL!w>)K6)>l#lL3aTN?t{29U%~4K`*XeSO(+zwcolWg)KISoSY~JXuh#j+L`?`B!PG4O)fp}HeJLo*H%{TLowQtH< zMz)?5M>w#&hJ;!6-O%%TpqNEs*>+7IX?7OFXU{qNAnu4H%?EW%gmp}Y+!Wd?>TOVKgrq)T zaKW_8HJh)>l2dkT@~P1V39dY!qdM9%$SjzS;VPuQ}>BEHyJGXR5gaW%sq||E|#hOr0?t`EH`xEVaLk+~_6D*mwfQf^` zE_5qtg6}N)6%F7d1~EjE=1CxfY0`DfqJSH?i8+!~rGPjVv4mx;C_x&G_7u+*y@aL` zN)RNAWGk}_a0TCyzQ+#@^cHXNa|6A@JN(i>@9`eLHqZxrz;C4ANq>-ltg4kvN5FJy zhIJaUPz6fzNAzfpcDHxS^)_q=B4d;*@`(0Ffx8A4q$#`KJjU=G*ij5?UR)#Zn z53ABuf5wP``)p5$oUTAB+bDccx566Th!I6?OyOaK1Bl~&18bDFH%PhU$Arv8Le4GL z*~1MYv&r8U`A7U+VW4dlXuXcg5O3Hru+G0n1}>d2u%QGagpu3^E8kF+6O2uz>D8Le zP@`Q(b-x%OG9xF=HiG~<^dJLJBSUMA4sbCH5SbmHLI3d?oDT!&45Zod8H^pD!EhKr zXE1i8#6GQOy6Z%1R3XMGU*|f6?T}L{8yO?g%>&&*$>XSr+@&mS+Z$cwJalq2S|%o@ zVm@Ifc+Q`!Aw!q6iu0^K zEw_k>;?q>=4Sudvyh6usNaIDzjWX4jDq!GM&#J*oCf{6Ohlafss*dBKGVAHf7HAmE UIt-;4$}QnLTVarWINF&10d&wkHvj+t diff --git a/scripts/trapdweflamepillar.pex b/scripts/trapdweflamepillar.pex index 077fd373009582a2000161fe644b654fad3d6c30..050686f81a54806398867eddebb16e59ba8cd0db 100644 GIT binary patch literal 1898 zcmaJ=+fo}x5be9oefD;HVL_%J2S?`X}gw>2{cVrcB z`KVOoHD8h+$RFgzIXx@M;8e0*TJ?0FK7D4U_wTbm{>nf34M#G6rr9D(lWo1G`q0y1D%IF}bfrg4Asi|^g-Y9+U;1j;DGyp-oE92nur#C@D z#l6@BmPWy3gTx*h(*m3d&y9(xS_eLD$mkW|9KP-QjUeTfjJB-}!i#OKn#Venj%>>J zcT8JD%uZ~=i;haO_zmAr47LMlwU(5T15f`46OCNM((qNyH1>W2@>SilNn3ihp;E7d z^Y&~z(O#G-SqytpD&pXoeH+>Cd zSvcn(_ndVaYF-{FTMHA_vNXs8QsahQ;2Py$>VDYY**(_rWq)Q6W5v5F4U%SeG+Z;D_3nC- zCypo0jnKA^&X}!ynyB-0nXIf*3G#Icr{eoDM%YO#L!veoDyekBAIdx68Wmln_tE}F zMSOLFa{LjqlkYi&o&&%#J#_Yn7HJ8#23w~MXHRI8p2D_ZFRs`=9l&1FSM)XP2zEl> z(i!Y~XFt%-6wqr5Vcd9tUl$Nk5;Vv@o_vMMndbl%8scc-%U|&xrV(C1-Duyd_Pw#b zH{LCJ#zh61K!UkNiK=u1IoGH}<23nhQK6fFO#wzF8UsY2PmZSP0}f@6m=W|Lj%$WK z>IUc*5Q1(al%E##v7kFxxdR;mR?sa(y(>|W&Y+MYk5{`=|wciNl3%7*)#% z33}kbKx9>bSBtEFMbK(@M?z4gDri>Fn(I63`U3g5D6*<7J6a^L12&6p83>6vLF+|U zgT!1fF`jKAOQRv;bIe+D{dsd^t_fsrxI+(QGxtBK_v9Czp%%oWMS+G3 zf}Xf-I7&Xgfh*UP?PoIo_U+rhkh*@do6xn+LW)j4^(8p%Q0M39i>#_Q4Y-e|87GGR P$^hVkoFX36Yhn5a!R>6S literal 2118 zcmaJ>-B#O15T3PV8ym0#;U_>yl>Q_sf5AXPP(lcXLTKG2jVavpoK#3_yotQ>k=F6y zuD9(A^|nva7w8-GqV(I9Z6G}BzA^afZsew;8&Q92t!0rU0 z_r4=y{`P|#kyQ!9fMy-1;l{56_l*17O1a+qZ7G_sq?dq-sHNOURl~4_gjA{vDdGnA zb%ZvIIu0yKxWO)m$z;y#1);0xy5mG4+5x3ni*w)ju6@jf98tGb)aJHoh}iC6dbVmu z()JS4i(Zd)A@B3L+YXeyxoOwkAm%i5xi(FHrV|>z!h@`rq2!cv9L1ZhWy(8_HXLCl zshuNA@8C9d%9S33VGoaRPXfGN-If*epiWb@&jPYF73tC3+iOctcaP3oWk+1M7308d zuN_5PDjT!K+Xj>5U2j~Ch&w`g4X#5lnegNt_mr(dlOb+#Pt*nXyEz6V?<7eIq5M|* zi9Qs{3O^MxIdwZOQz^+6@j3?$uRn_w8dumbzr*W#lUrt!8$$JFwboM}(qQxKg-|sw z5-mjodeLfnEZq{Tls=ICut!wHmc)BPkHu`k;EpR1UJX4g>xknV3+cC8HN5d;ORN@l ziE?cv0-?^x>bM|*Rnyi_Y*eFcvr-3)a|T;R+K0TL1Nsh9h5Sf| zbObpz@-w}qU&y5sh$fQNw|5|x0}%!tSNeC#Cz=5iXi!^0XsE9Z_qAeQE73KLv!4Bm z`$+e&r4JU30(Bi4$`oh}K2s=1B^rlEA6O3QCoViAurd_2XfgroXp3$DF$L2!o-_Cj zOftI3XqM3pJyVvV=`3_cBe)MUn#SW3$jlYUOai%OvP|hLDP%z?;;tHjoWZDWlMPV! zVnE)(7%#B|4OA{-U}>1YNPvvKL?AQd)5!eQML7cc4*alweaVXEFD1>>UAjm2u@G~Z z*gSp<(Df)5VPC?sEW`Go$mlL|;Bg-s5-&i*qnu$AIOy(l^|W!AW-+prF*CbvEYORH z1$n)WS%`sXxb?3A(4dmktOQI4lW`yj3 z&7oQXf@7Z1MusJh`JQ70(P$!Zqaf__I&03<*Uc475zutZ5SR54Z}Lfso|>Ae|8adp z-`YYf5*JOuWk#E(4U% NB&wGX?_)d3`5$BvjYR+e diff --git a/scripts/traphitbase.pex b/scripts/traphitbase.pex index 676f6743b9b19ed522d01ca08e81e1a503044f15..365c9d0428cf641abe965a7fe5603c2699ccd1e1 100644 GIT binary patch literal 4890 zcmbVOYkL#d5q{T}Y)O`Fj7lPk%^1_E+?W^i$t+S!qSXmukG;GjnF<%)B$_oc+(EfBt)T2oCs@@!h{; zax)g~+kUzz5;@;a>Zq)EUet+`PT*ofX5;x?KXma|jHOg>`so(c>7sN?rW>h9CCay= zG%~|d6n@_Jv~Wp;VU*H6$`3-j5=QDGqzg>+M6`=jj5K}ElOe|HQRw-pAB7^oWVH2C z*3)&_kg*Kw68mbkB*Xo?-V(4wkw zTwDzzk%IH>PSV^G^_`Wyb`T{5P8*hG#^TUGe2cO0!}Z8`p}DH*lISEdVIj7+Eh2w664Z~nkW3c*oq1B4?OhIs@LeEuZAr*VR z(9^^$m$McTEzeYNsVOobS%tXM+6oM;lkGs%rPo6NGuiZVClINByLyVcu4uP|u4^+++$eO}M3wRY1g&mjEXLz-czXN(ZNivLcPYuR8DH@hVg-B<}U6xEvorWvWsc3 zP*slDHoBiM^*^1A5rZW5=T@{^bUHJpPyFubjl8d{6^t5ylvLc23|Qo2pBAzWIXv z?WU2-z2u673nii<**Gn!R`-+ET;;8z&$*((&S2Njkocp<4 zQjzW*CTvb>S0CbY?tPvS?7&78Ga(VHs4L~=te394s|)uwRxqX951bvC_afbo8aJ+O zw~GotijzDZrXNSlIf`n217dt&m!X!TFPUE`!&tEn&^^6sic;Y#QkaY0oC)hJw)+kR+dC9$(9 z;%&*>Q8XSul!1DGVc$>e`|(#Ac9b7BRBBv&2u2R4()2){VFFicN+| zeYGz|VH!t4K(NM)K%b!YTW#fUDDsQT!I1iPQ-k4bP*B`=qF|tQ|QxXhy&x99ENs8<#I%#``#;7;s&?&<8!+V?A3J9~!OW z_<s}QV5OS7n5n!W zdjyxr>b@GqIb7yCA1SR-W_pD|*_jD^Okb9n$0uCQGF4pdGjq7sx0yk$&z!=K>Dt=N z;wOFPG#k^*IHNd*Py69qWNUty*|@mLV6B7q*|0rtXR+8{XNoP{i+Vr1`DA8uf{opq zIm!<2rF{su$lNw*pTV8J+CKc0>)bUn2XK$feZzdfO<^!#)YIG@J#Xi^MS9Ey{EW3; zH#W!FjcThFuwjByV(!;*2gizPGjHN^Bhuo-4jxi_gIi7i96Y9m!yUJQ;aLYy9DGSm zbvWqaA?GQ5nv=419UcR{)hhUk-Sdp$J?Ha+kKnV#r_RS?LXsIa_*TDB8khbb<7vI6 z)pp*YyMRxN%Z6Mc;?pLtQuvz7#2hEw{3+!fKCk%fQntsrF5j>Dyqs{b?cgiEd;J>=H0C045r-VSaqug`p`5~KZ%=AG zm_my|Xq1Mvy3{)2HGGEl8$Am3)DV74o0MpAo`4_Bybl>Z zHZN5Gv*HB1ilv$s~^M3)Y;1EUt literal 4652 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 Mcu!97XuSsSB`j)u#sB~S literal 2366 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 literal 7845 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 P6Fwcq~&&4v_j diff --git a/scripts/traptriggerhinge.pex b/scripts/traptriggerhinge.pex index eb439c4268fecabf43b8cb105fbe36fb86ffbdac..8ee84a39aa94ccf30e35787b4f4cb03009d2ef82 100644 GIT binary patch literal 2565 zcmZux*-{%v6g{nd1H6D8Z?O_5-mozk@S?hvX@zduAkItk#syy?y)ixy$Ik-M{}$ry#&j^Pj)|#N@W`^tXMl(~ z6|=9XQ2HbGx^zBDqScb@cq*d0&`=vr$8%Tq_oW-w`~BVtNN;1! ztrxUf*KXGaFCRG6-$queRWC#_zL%cDD=%>TL!z>)Roe?at(+cm2VT1^6(&X!TXF)4 zv5-Ys_f%K5n{po$dha*hPAGk;T#56wTH7+V^pR@+`qA-`4Gcu7ult8G2%L^YdQF9x zs@06ZzUOu~BEJpKCqbk#x4)Ao$J&pm^4-WVGHhRDyJ2q4ENR_i_EtWb~Uj5Ehu>$ z^(5D#F4aM?Rx_kK%$_Y-QSE3u6BudvS}igOLV4JqH68=z67V(-OF+Q z;YnZO&S~ks43B(el*_7nQ%R86GbD6^2ofR>~!m$j?czx8?!5& zJ}EM8?V4eP;Eg;pZ`T4Au*mg<%WP3+1~0f?aslIp zJcA}z3)^%|7)K7PShMRL)|u2f!321ipUm&f!y*dH+iZ**Q@CV*aT#Ak;0mrr;2N$+ z;0C@lfEnLp3G640Dt9ek9@p>{Sz==fUy~ph(6*f6|{4z>D>wyF<+Go2j|7Rwd6rJ|oQ$hrTYF3C15-EIV2j&#LN&d4!J}bF2RF=Z`)b#>C*z%1HH}ah7 zN&JX9mavRh6u!deHJ>+pQk?5Jl?j1Wfg4${cdI51Gef5 z?`)Q9h65#mHGauy?X#Q{mNUy^>-N}NdyMfGoQ+R3l!qFk9%iwD_h|6hq?WB%PnjLs zV89iDra()eVfmTtrrl`prcL9@4}@z>% literal 2546 zcmZux*;X4z5WORfB!nd74LjbIcmX?!4F+tZEDi$9CL4mVojm0Xqee_5x^-p-b9l{L zz9_Hxl6*)Wa&o(SMiRzqjZ{@#ee2fJ^Y4eh|H)?HfFFNSF5=2w==Jx)pwkiIdLTRE zNk8(D-#-p|?Fg0Kt@n+!R^#19b7giGzv9BD?!*~e6LBl{Vu9kCij@_|m0T9RUQ>B( zOemQ|Se3B|NA#xfJ_;0++!c|CkzexTfQGV?4bcgtg}SsY-*}zCUp+Vwe!SH0_fA20 z_Nm1MQ+^;jJBXHsD{6`rNSTq?}Njdb90N5sQ~O9_qmv@fvu`dG4QO4i~- zFRn!=LF^xjh*}WUEcaThsES(D7k+RMh;}V9(=sN-iS2N{MM&8}v0m2{-?P?i@TzRv zZ8Ek(&W_0izbCwKMMQCUY+|F#=`p%GWrL^AatcL!97;_|)coU+O(IXjU_8l0w{gtt zE_;z4PfB*wP#T##l)UazrxUV)%J_T`USCPLuT^-2ve(@Sm7as3#|apbE8hN&IuYSg z9D9BjR9jLI%Bp2=pVM|Y)Ht<`9*0FwtZfwUUDC3}foTR~L8RMDx3ZNQq3Uvu6W0ag zJU=GUM1P(NFH+$p+>Up|JImhg^t@A@coJ}dCD0d9U#?1@drLAn@^q627iwm9;5|Q( zo(-fqxcXdr>9lts4W=-!p0|Jg_ZKRBcR0xCSCJO7so(--T;#fB)@5AAmBG@UxzsbC z3I)K$K76zxXd6Q@-5F1X5>Uc)vK~RN$7VgDhr@_GGiTO3=CQ!_oJ((!r;8uBUU2~v z8a#_#w6I6Ds?|K!v0>I0noQ|}L;5_*kNXF+FcN7MOfK4tNnADmxP~vRa2+?Sa1*zz za69$6gS*yVax{l!IwHJfs7$Xs0xF z#Q>4{J$$2S=)!!9C;WX%Qg2Q`J7UPNAsO;mu%ryJ8;s7f4PrT*0o$kC=Zw0epWP@9y)F9q(2&6kV!p(p+4*d+ z%Fw%jI=#Qc_Z+|TZ6Q3nM4L%tx^H&&=0bo$wp#5g$_zA~zxV!C{b*#7OY%kOv{^JIKk kqq@v|kLL;Vo+bzHw3Qcf&vtPD-!k?LKG1TO0e%7g2RIb9ZU6uP diff --git a/scripts/tripwire.pex b/scripts/tripwire.pex index 389460ac04e035442b498b7e56a874c7349c55bb..763bd881f99194aa164653ba95c32be0cc3f2568 100644 GIT binary patch literal 1454 zcma)4$#T;`5Pf6Iww%~;685l}ge`<6;Xn~_a@eaNPT2vD)I{#s!p@9qG$xe;|HhYa zQpSZ)jKVFIQLG6a?}cK^pzuCO%zL9tkPB;ipiqX zR&OGUauPwPX|+TBNM-e2=v{3Gk?LbU)T$S`TscB{5cPVb(AYO}%)|EkWOigs@OHH# zY){)X?LgXQd>q+uKrw4k+|&nOD6~zhS*2z?rZ75;sMm}W1iqr<3_zD5a^q?cxS}7W z!JJkvRWEgWF^vvU34&BDrDztPk4Tyq6k9V%f!4ZY6J4KB5B^&v9TkK|5IoltWk1B! z`}~!Q&&y$}-!~M;+Mv-+rtHum8B!s^m&2}}7?!+O+8m)KhkHglB+-a4cS^3ygFSsr zre&=Rhwyf^9)XQrMcg4Z*5m=xHOMu-f}N2Lhdg4P2Y#;|(fcQ3!kt+z4cUoNj!J5V z6T`zXzX@|pg{7nMrsKp3TPVI&cB(ywHy+6oEC)e$Ukpd3$QuW)b+#gIIsECmpuWdR zEfpQfbZfHQY*kl(!sq=HD7e*iLUAg1Q=#O{n~Adwl<)*kv5f%F5>q7&^HBxA6)xw* zIsVO~hB|xaoJ-&$_m~%KW0{}AH+Cjc_AT;%ncFX*k(Lx##1b2q*;KqBa7N%PYsr9h zfphF8(75}pPPJc@kx7&ziRpL@)FY#UD)lsWx@6GO72dUa3|%$eZ>lcX8!+z_^&oT zXaD!Ku6p%!T`wX1E(2W0J!~+b>OW=_C9xoImnUcEeSrr8>uz?zMz%c6Au+9a+o#mL85>yw#;6NTd>0H&^hNb7b<2c=dQm2Q{ng_ literal 1689 zcma)5+j1L45Iv*I>S8HMoR~nkL_k6a5Mzg1MQ>7ki6Pi7%L$LvYBiP?t!GrTBfI?$kG()y(g zFPOoOKGb#`s}a^Bt%k8XCrl8GllVdZ0qrO^H^g^IXrAeU-}Lj~5j1(Q1xH+L=)a%pS**vCG zSH3C%#?4S4V%;t8 z3fvaBBe3o=FSu8!EKtd*73S~;?&3|ng?o4#@8DfN@A0|MhmP|w#XO8Cph_ifq0Ml- z1m4F7b83+%ewb6y6nMaWqO~OyOH{aPuGgew-8lCgo5l*Y#*0_gYHghwbn6-qL>w)1zwR48r?Il*JBpny zwt4fc=-8)LtLGZNg@Bo=UF4n4KKG4gJ3JM9bqed?ey>ZD!D-*}jJF+bQnG3vIfhBu zsvW3~xN*U0=ESgk%Wjn%x5iJo%k3toi9*x2E)3ss_j=wt8gDwb2`k4oI+Sc%rpaxZ ztiJt$H~qfTl&)7=w&U`Gd+xa3Ul=Zp>^V+{rgc4v2Xm=`aiQaK!+ck1ma{-~Rd2*a7U01`*6pc;?t_K%T(wMHl zc5MEwKu9nIJD;C-*Ft7JWHv%3A2ORX;_=QYWw0|xmVL%eQRdd_J?)@YtJZYw-10nR z(uNz})^br_Vx~D&;R8yT{B5sAiH2)n@OvMK6D|7i5U!1ww!CQTCIarYBi4*YRiEqm zh}HW!#%p619+)O<&d!0Ym+b!u@l7{aK{ zFVz&%j(uR8!9*N;kGCvaoo0hOp{olPT&Wu;rP{D0jRg>wU0@zIvleli6t7^sp<+Ga zHfUOf8oGKnF~UHg?o!d|!TpBV>=VNaQ~)Dbk4GW%IApeHq>1++JU*dx*AVL`9*I!+ z6gO2~{cyBPG=ap&eZ%Epy{-+ZwVfSJE@`^rDO^y|!c~`k-W|$nOMTPTdo&kx5^e<` zl}}Nsf~5zN;j8*HjpH$76cewkVB#S&LbOH?XC252l1^OHGFM|cc z2cuDfz4#c7g-lv8<3h#gC!8|MDn=6w5h28vY|y0S7}`(L4Vn^C6fzCD{AQGhXqIj& z$sFBM%gTcV2b8wzJIt)3-A{jmZBN@B+QmVf=>etrI2?7MoECbNS~?T;(s>J zNP|j65CU3)MUw8)=kx`#EJL+|m^sw83eDOr%#G1KMt8;dSd21R2FpoC%Z%p0;%`}~ z;`0eMD{bI%U%ITwBg}x$G@})Gu0WxDg&_1z2#r8d2%|Vs_`Y!p@>PUckU!v-0xm{h z-eL3=qpyQ%W3Uh<&|t_MvLMqeqZ|U|f=wp+ z!aNTT>BUf7UQLmrA&$u6*MlK0!9?=$`M${`38bnT$x!M>Fvbn=n}P?jct}yxLYQleo%;p_$m;-2kIq@Pz=Q z!T_p8+1PWrx=6S$L6p(3(a#t?4}%H(hHvM%n%;Fu@UUIMD1|4L@Ssk~$Fzdch(2G+ zXLXSl5$Hf%k&-Ow0EtVYtR&b4k6x7#WpM&>)LRO}iTgZM>@fs~ut)Xyf$C88aTudFAI~(rcD3OR6Dv2gOLc6I R_%c_47s8?C6oL=A{s%tY9d-Z! literal 1926 zcmZ`(Yg5}s6g`XIU~KbFleRHQQ=kumgA=ftnGPmE+|tr9X_&q%tOZoeijicP{JZ{= z{*Zp^*Y0W!I5+?1J!kV=Wjy)^i+n2+uhE0 zZ&oj(9`eTnzwbqu?0)^Wy?5CDzO(Uu8d@i z{DImJTn{rxt{?mAbT{x^A4Zqq~d+dxUQb_a^$167aD+_)ZH`*H6~MvVNZ z9+)ev#{olGk1l1;Kk=nkkIWv6N?zMF<`3hLOGC+V^w77w+VMc`D9@I&k?fzK;5arc z2dXVkePyGi+XO-x4??B!WxZ#wKY`=kv$2*i!^K@=js;(#RO(;=ru6O>1{WX_T9o9!{p7hneAY} z6($JlsnblI=c)4og;##08JjQep!&@Z$nzr+7}H;%b~34x)zN*E%K=r?M{E&`c!bBa zC$x`g;G67Swt}@Fhjl>raw$lc!)ZC7MaQ{2s{#a%*ZT(-5&`& zWcJBOmZR(DzU=^r`)uPaj38yPME=YCTOmO`x>^-jGT;^CEY0(u2GN+GnCZ&~)0UUh z@;J+%n(~S+3xO%JV$%vcD(QgFOv;cJIn0_)-Gijp$QCxw)s1ogL$(5+lVcvMWcw6r zXy6&vdEw23`81iY3Y2q#6X~oHcvT~0N$ojL3p~}KCe@&CyBcZNm_=pp3nOFQ^xB!$ zPdkf4sZAqbD78uYwH#Q!t&>R2L}4@0R=BGxhYjl5q^=fqIf+hxS%iodqGY@-}whz6HRyk diff --git a/source/scripts/atronachfrostscript.psc b/source/scripts/atronachfrostscript.psc index 43765dd6..08c89a34 100644 --- a/source/scripts/atronachfrostscript.psc +++ b/source/scripts/atronachfrostscript.psc @@ -10,8 +10,17 @@ Actor selfRef int atronachHealth EVENT OnEffectStart(Actor Target, Actor Caster) - selfRef = caster - AtronachFrostFXS.Play(selfRef) + selfRef = caster + + ;USKP 2.0.5 - Stop this from attaching to the player. + if( selfRef == Game.GetPlayer() ) + Return + EndIf + + ;USKP 2.0.3 - 3D check needed + if( selfRef.Is3DLoaded() ) + AtronachFrostFXS.Play(selfRef) + EndIf ENDEVENT Event OnEffectFinish(Actor akTarget, Actor akCaster) diff --git a/source/scripts/blackreachdoorscript.psc b/source/scripts/blackreachdoorscript.psc index bab8e1fa..12a475af 100644 --- a/source/scripts/blackreachdoorscript.psc +++ b/source/scripts/blackreachdoorscript.psc @@ -38,7 +38,7 @@ endState STATE busy ; This is the state when I'm busy animating EVENT onActivate (objectReference triggerRef) - trace (self + " Busy") + ;trace (self + " Busy") endEVENT endSTATE @@ -51,10 +51,10 @@ function SetOpen(bool abOpen = true) isAnimating = true if !isOpen gotoState ("busy") - trace(self + " Opening") + ;trace(self + " Opening") playAnimationandWait(openAnim, openEvent) ; Animate Open endif - trace(self + " Opened") + ;trace(self + " Opened") isOpen = true gotoState("done") isAnimating = false diff --git a/source/scripts/blacksmithforge01.psc b/source/scripts/blacksmithforge01.psc index 2a1e8ee0..1fa2ccaa 100644 --- a/source/scripts/blacksmithforge01.psc +++ b/source/scripts/blacksmithforge01.psc @@ -9,6 +9,6 @@ endEvent Event OnTriggerEnter ( objectReference triggerRef ) if (triggerRef == Game.GetPlayer()) - FlameDamage.Cast(triggerRef, triggerRef) + FlameDamage.Cast(self, triggerRef) endIf endEvent diff --git a/source/scripts/carryactorscript.psc b/source/scripts/carryactorscript.psc index 931c6e23..d9cc1972 100644 --- a/source/scripts/carryactorscript.psc +++ b/source/scripts/carryactorscript.psc @@ -1,5 +1,6 @@ -Scriptname CarryActorScript extends ObjectReference +Scriptname CarryActorScript extends Actor {Script for actors who carry items around} +;USKP 2.0.1 - Yes. So explain why it was extending ObjectReference instead. No? Don't even want to try? I thought not. MiscObject Property CarryItemMisc Auto {item being carried - MiscObject} @@ -47,8 +48,7 @@ function ChangeCarryState(bool bBeginCarrying, bool bDropItem = false) ; I'm not carrying anything any more bCarryFlag = 0 ; get rid of anim object - Actor selfActor = (self as ObjectReference) as Actor - selfActor.PlayIdle(StopCarryingEvent) + Self.PlayIdle(StopCarryingEvent) endif endFunction diff --git a/source/scripts/defaultdisableexitenableenter.psc b/source/scripts/defaultdisableexitenableenter.psc index db32a29c..bc2737aa 100644 --- a/source/scripts/defaultdisableexitenableenter.psc +++ b/source/scripts/defaultdisableexitenableenter.psc @@ -20,11 +20,25 @@ EVENT onTriggerEnter(objectReference triggerRef) ObjectReference MyLink03 = GetLinkedRef(LinkCustom03) ObjectReference MyLink04 = GetLinkedRef(LinkCustom04) - MyLink.Enable(shouldFade) - MyLink01.Enable(shouldFade) - MyLink02.Enable(shouldFade) - MyLink03.Enable(shouldFade) - MyLink04.Enable(shouldFade) + if( MyLink != None ) + MyLink.Enable(shouldFade) + EndIf + + if( MyLink01 != None ) + MyLink01.Enable(shouldFade) + EndIf + + if( MyLink02 != None ) + MyLink02.Enable(shouldFade) + EndIf + + if( MyLink03 != None ) + MyLink03.Enable(shouldFade) + EndIf + + if( MyLink04 != None ) + MyLink04.Enable(shouldFade) + EndIf endif endEVENT @@ -36,10 +50,24 @@ EVENT onTriggerLeave(objectReference triggerRef) ObjectReference MyLink03 = GetLinkedRef(LinkCustom03) ObjectReference MyLink04 = GetLinkedRef(LinkCustom04) - MyLink.Disable(shouldFade) - MyLink01.Disable(shouldFade) - MyLink02.Disable(shouldFade) - MyLink03.Disable(shouldFade) - MyLink04.Disable(shouldFade) + if( MyLink != None ) + MyLink.Disable(shouldFade) + EndIf + + if( MyLink01 != None ) + MyLink01.Disable(shouldFade) + EndIf + + if( MyLink02 != None ) + MyLink02.Disable(shouldFade) + EndIf + + if( MyLink03 != None ) + MyLink03.Disable(shouldFade) + EndIf + + if( MyLink04 != None ) + MyLink04.Disable(shouldFade) + EndIf endif -endEVENT \ No newline at end of file +endEVENT diff --git a/source/scripts/defaultforceevaluatepackagetrigger.psc b/source/scripts/defaultforceevaluatepackagetrigger.psc index 5ba7b9f2..af549bfb 100644 --- a/source/scripts/defaultforceevaluatepackagetrigger.psc +++ b/source/scripts/defaultforceevaluatepackagetrigger.psc @@ -10,6 +10,8 @@ EVENT OnTriggerEnter(objectReference actronaut) (actorToForce As Actor).EvaluatePackage() EndIf if (aliasToForce != None) - aliasToForce.GetActorReference().EvaluatePackage() + if( aliasToForce.GetActorReference() != None ) ;USKP 2.0 - Ya just needed one more sanity check guys :P + aliasToForce.GetActorReference().EvaluatePackage() + EndIf EndIf endEVENT diff --git a/source/scripts/defaultpillarpuzzlelever.psc b/source/scripts/defaultpillarpuzzlelever.psc index 86079750..a81f1df3 100644 --- a/source/scripts/defaultpillarpuzzlelever.psc +++ b/source/scripts/defaultpillarpuzzlelever.psc @@ -51,10 +51,19 @@ Function doorOrDarts() endif else puzzleSolved = false - refActOnFailure01.activate (self as objectReference) - refActOnFailure02.activate (self as objectReference) - refActOnFailure03.activate (self as objectReference) - refActOnFailure04.activate (self as objectReference) + ;USKP 2.0.1 - Sanity checks. Not all of these are used in each instance of this script. + if( refActOnFailure01 != None ) + refActOnFailure01.activate (self as objectReference) + EndIf + if( refActOnFailure02 != None ) + refActOnFailure02.activate (self as objectReference) + EndIf + if( refActOnFailure03 != None ) + refActOnFailure03.activate (self as objectReference) + EndIf + if( refActOnFailure04 != None ) + refActOnFailure04.activate (self as objectReference) + EndIf endif endFunction diff --git a/source/scripts/defaultpillarpuzzlelevernofurn.psc b/source/scripts/defaultpillarpuzzlelevernofurn.psc index 77e61bd1..3f20fc7b 100644 --- a/source/scripts/defaultpillarpuzzlelevernofurn.psc +++ b/source/scripts/defaultpillarpuzzlelevernofurn.psc @@ -51,10 +51,19 @@ Function doorOrDarts() endif else puzzleSolved = false - refActOnFailure01.activate (self as objectReference) - refActOnFailure02.activate (self as objectReference) - refActOnFailure03.activate (self as objectReference) - refActOnFailure04.activate (self as objectReference) + ;USKP 2.0.1 - Sanity checks. Not all of these are used in each instance of this script. + if( refActOnFailure01 != None ) + refActOnFailure01.activate (self as objectReference) + EndIf + if( refActOnFailure02 != None ) + refActOnFailure02.activate (self as objectReference) + EndIf + if( refActOnFailure03 != None ) + refActOnFailure03.activate (self as objectReference) + EndIf + if( refActOnFailure04 != None ) + refActOnFailure04.activate (self as objectReference) + EndIf endif endFunction diff --git a/source/scripts/defaultpillarpuzzlepullbarnofurn.psc b/source/scripts/defaultpillarpuzzlepullbarnofurn.psc index 74ea34e5..18a88366 100644 --- a/source/scripts/defaultpillarpuzzlepullbarnofurn.psc +++ b/source/scripts/defaultpillarpuzzlepullbarnofurn.psc @@ -51,10 +51,19 @@ Function doorOrDarts() endif else puzzleSolved = false - refActOnFailure01.activate (self as objectReference) - refActOnFailure02.activate (self as objectReference) - refActOnFailure03.activate (self as objectReference) - refActOnFailure04.activate (self as objectReference) + ;USKP 2.0.1 - Sanity checks. Not all of these are used in each instance of this script. + if( refActOnFailure01 != None ) + refActOnFailure01.activate (self as objectReference) + EndIf + if( refActOnFailure02 != None ) + refActOnFailure02.activate (self as objectReference) + EndIf + if( refActOnFailure03 != None ) + refActOnFailure03.activate (self as objectReference) + EndIf + if( refActOnFailure04 != None ) + refActOnFailure04.activate (self as objectReference) + EndIf endif endFunction diff --git a/source/scripts/doorbar.psc b/source/scripts/doorbar.psc index ac3c06ed..c9fb9b7f 100644 --- a/source/scripts/doorbar.psc +++ b/source/scripts/doorbar.psc @@ -41,6 +41,11 @@ EVENT onCellLoad() gotoState("down") endif endif + + ;USKP 2.0.5 - If the door bar is disabled, then the navcut box should be as well or it may lead to NPC pathing problems. + if( IsDisabled() ) + myNavCutLink.disable() + EndIf endEVENT STATE down diff --git a/source/scripts/dragonpriestactorscript.psc b/source/scripts/dragonpriestactorscript.psc index 4e64ef35..3bfd8ed0 100644 --- a/source/scripts/dragonpriestactorscript.psc +++ b/source/scripts/dragonpriestactorscript.psc @@ -22,6 +22,16 @@ Actor selfRef ;local pointer to the curren dragon priest EVENT OnEffectStart(Actor Target, Actor Caster) selfRef = caster ;local pointer to the curren dragon priest + + ;Added by USKP to prevent this effect from appearing on the player. + If selfRef == Game.GetPlayer() + Dispel() + return + EndIf + + ;USSEP 4.1.5 Bug #13749: added this line: + USSEP_RegisterForAnimationEvents (selfRef) + if (selfRef.GetSleepState() == 3) ; Debug.Trace("DP is sleeping! 3") else @@ -35,6 +45,13 @@ ENDEVENT Event OnGetUp(ObjectReference akFurniture) ; Debug.Trace("Dragon preist just got up from " ) ;Play all of the magic fx + + ;Added by USKP to prevent this effect from appearing on the player. + If selfRef == Game.GetPlayer() + Dispel() + return + EndIf + selfRef.equipitem(DragonPriestArmor01) DragonPriestParticlesFX.play(selfRef, -1) DragonPriestEyeGlowFX.play(selfRef, -1) @@ -66,3 +83,17 @@ EVENT OnDying(Actor akKiller) ENDEVENT +;----------------------------------------------------------------- +; Added by USSEP 4.1.5 for Bug #13749 +;----------------------------------------------------------------- + +Event OnAnimationEvent (ObjectReference akSource, string asEventName) + ;do nothing +EndEvent + +function USSEP_RegisterForAnimationEvents (actor actorRef) + if actorRef + RegisterForAnimationEvent (actorRef, "stage2") + RegisterForAnimationEvent (actorRef, "stage3") + endif +endFunction diff --git a/source/scripts/dunkarthspireplatepuzzlescript.psc b/source/scripts/dunkarthspireplatepuzzlescript.psc index 20b3eae7..7cfa7428 100644 --- a/source/scripts/dunkarthspireplatepuzzlescript.psc +++ b/source/scripts/dunkarthspireplatepuzzlescript.psc @@ -19,9 +19,7 @@ OBJECTREFERENCE victim EVENT onLoad() ; //setting the master script to be the one with the stored vars - if castSource != None - mainScript = castSource AS dunKarthspirePuzzleMaster - endif + mainScript = castSource AS dunKarthspirePuzzleMaster endEVENT @@ -36,13 +34,11 @@ auto STATE Active playAnimation("Down") ELSE - if mainScript != None - ;USKP 2.0.5 - Bethesda didn't bother to check their bool to see if the trigger being stepped on is safe! - IF(!mainScript.plateSolved && !bSafe) - spellDmg.cast(castSource, triggerRef) - TriggerSound.play(self) - ENDIF - endif + ;USKP 2.0.5 - Bethesda didn't bother to check their bool to see if the trigger being stepped on is safe! + IF(!mainScript.plateSolved && !bSafe) + spellDmg.cast(castSource, triggerRef) + TriggerSound.play(self) + ENDIF playAnimation("Down") diff --git a/source/scripts/dwespidercenturionpipescript.psc b/source/scripts/dwespidercenturionpipescript.psc index 8c338e5a..2f1e4092 100644 --- a/source/scripts/dwespidercenturionpipescript.psc +++ b/source/scripts/dwespidercenturionpipescript.psc @@ -9,7 +9,8 @@ auto State Listening Event onActivate(objectReference triggerRef) Actor myActor = triggerRef as Actor - if (myActor.getState() != "Waiting") + ;USKP 2.0.1 - Added check to make sure the actor exists. + if (myActor && myActor.getState() != "Waiting") gotoState("done") playAnimation("exit") endif diff --git a/source/scripts/favordialoguescript.psc b/source/scripts/favordialoguescript.psc index f9c2b1e6..11a87ae3 100644 --- a/source/scripts/favordialoguescript.psc +++ b/source/scripts/favordialoguescript.psc @@ -45,11 +45,11 @@ import debug ; call this to persuade target actor Function Persuade(Actor pTarget) - trace("Persuade: " + pTarget) + ;trace("Persuade: " + pTarget) ; give player skill uses SkillUseMultiplier = SpeechSkillMult.value SkillUsePersuade = SkillUseMultiplier * Game.GetPlayer().GetAv("Speechcraft") - trace(self + "Current Skill uses given: " + SkillUsePersuade + " times the Skill Use Multiplier") + ;trace(self + "Current Skill uses given: " + SkillUsePersuade + " times the Skill Use Multiplier") AdvanceSkill("Speechcraft", SkillUsePersuade) Game.IncrementStat( "Persuasions" ) if ( Game.QueryStat( "Bribes" ) && Game.QueryStat( "Intimidations" ) ) @@ -58,7 +58,7 @@ Function Persuade(Actor pTarget) endFunction Function ArrestPersuade(Actor pTarget) - trace("Persuade: " + pTarget) + ;trace("Persuade: " + pTarget) ; give player skill uses SkillUseMultiplier = SpeechSkillMult.value SkillUsePersuade = SkillUseMultiplier * Game.GetPlayer().GetAv("Speechcraft") @@ -74,10 +74,10 @@ endFunction ; call this to bribe target actor Function Bribe(Actor pTarget) - trace("Bribe: " + pTarget) + ;trace("Bribe: " + pTarget) SkillUseMultiplier = SpeechSkillMult.value SkillUseBribe = SkillUseMultiplier * Game.GetPlayer().GetAv("Speechcraft") - trace(self + "Current Skill uses given: " + SkillUseBribe + " times the Skill Use Multiplier") + ;trace(self + "Current Skill uses given: " + SkillUseBribe + " times the Skill Use Multiplier") if pTarget.GetBribeAmount() <= GetPlayer().GetGoldAmount() ; remove gold GetPlayer().RemoveItem(Gold, pTarget.GetBribeAmount()) @@ -97,10 +97,10 @@ endFunction ; call this to intimidate target actor Function Intimidate(Actor pTarget) - trace("Intimidate: " + pTarget) + ;trace("Intimidate: " + pTarget) SkillUseMultiplier = SpeechSkillMult.value SkillUseIntimidate = SkillUseMultiplier * Game.GetPlayer().GetAv("Speechcraft") - trace(self + "Current Skill uses given: " + SkillUseIntimidate + " times the Skill Use Multiplier") + ;trace(self + "Current Skill uses given: " + SkillUseIntimidate + " times the Skill Use Multiplier") ; intimidate actor pTarget.SetIntimidated() ; give player skill uses. don't if the Brawl quest is running, don't track intimidation stats for Brawl @@ -110,20 +110,20 @@ endFunction ; call this to initiate brawl quest through story manager Function Brawl(Actor pTarget, Actor pTargetFriend = None) - trace("Brawl: " + pTarget + ", friend=" + pTargetFriend) + ;trace("Brawl: " + pTarget + ", friend=" + pTargetFriend) BrawlKeyword.SendStoryEvent(None, pTarget, pTargetFriend) endFunction ; call this to give gift to target actor Function GiveGift(Actor pTarget) FormList giftFilter = pTarget.GetActorBase().GetGiftFilter() - trace("Give Gift: " + pTarget + ", gift filter = " + giftFilter) + ;trace("Give Gift: " + pTarget + ", gift filter = " + giftFilter) int favorPointsEarned = pTarget.ShowGiftMenu(true, giftFilter) ; TEMP cap until we have a formula for this: if favorPointsEarned > 100 favorPointsEarned = 100 endif ; give player skill uses - trace("Give Gift: " + favorPointsEarned * SkillUseGiveGiftMult + " skill uses earned") + ;trace("Give Gift: " + favorPointsEarned * SkillUseGiveGiftMult + " skill uses earned") AdvanceSkill("Speechcraft", favorPointsEarned * SkillUseGiveGiftMult) endFunction diff --git a/source/scripts/flameatronacheffectscript.psc b/source/scripts/flameatronacheffectscript.psc index f3d24963..d8058ea1 100644 --- a/source/scripts/flameatronacheffectscript.psc +++ b/source/scripts/flameatronacheffectscript.psc @@ -18,7 +18,16 @@ int atronachHealth EVENT OnEffectStart(Actor Target, Actor Caster) selfRef = caster - AtronachFlameTrail.Play(selfRef, -1) + + ;USKP 2.0.1 - Stop this from attaching to the player. + if( selfRef == Game.GetPlayer() ) + Return + EndIf + + ;USKP 2.0.3 - 3D check, shaders, etc + if( selfRef.Is3DLoaded() ) + AtronachFlameTrail.Play(selfRef, -1) + EndIf ENDEVENT Event OnEffectFinish(Actor akTarget, Actor akCaster) @@ -44,5 +53,3 @@ int atronachHealth AtronachFlameDeathFXS.Stop(selfRef) endif ENDEVENT - - diff --git a/source/scripts/fxbirdfleescript.psc b/source/scripts/fxbirdfleescript.psc index 8921ec91..4a5bf78b 100644 --- a/source/scripts/fxbirdfleescript.psc +++ b/source/scripts/fxbirdfleescript.psc @@ -16,6 +16,8 @@ int instanceID00 ;************************************************* Event onCellAttach() + ;USKP 2.0.1 - Short delay added to let 3D catch up. + Utility.Wait(0.5) instanceID00 = BirdFlockSound.Play(Self) gotoState("Waiting") endEvent diff --git a/source/scripts/fxdragonblooddamagescript.psc b/source/scripts/fxdragonblooddamagescript.psc index 08209b8b..9c9d83a3 100644 --- a/source/scripts/fxdragonblooddamagescript.psc +++ b/source/scripts/fxdragonblooddamagescript.psc @@ -1,4 +1,4 @@ -Scriptname FXDragonBloodDamageScript extends ActiveMagicEffect +Scriptname FXDragonBloodDamageScript extends ActiveMagicEffect {This script applies blood damage geometry to the dragon and turns it on when they are hit based on the direction they are hit from} ;=============================================== @@ -22,7 +22,7 @@ float property HPpctT1 = 0.98 auto {relative total HP at which first blood should appear DEFAULT: 0.??} float property HPpctT2 = 0.95 auto {relative total HP at which second blood should appear DEFAULT: 0.??} -float property HPpctT3 = 0.90auto +float property HPpctT3 = 0.90 auto {relative total HP at which third blood should appear DEFAULT: 0.??} float property HPpctT4 = 0.80 auto {relative total HP at which final blood should appear DEFAULT: "+HPpctT4} @@ -50,311 +50,152 @@ float HPt3 float HPt4 bool bDebug = FALSE - -;=============================================== - -EVENT OnEffectStart(Actor Target, Actor Caster) - ;Setup stuff has to go here for activeMagicEffect - selfRef = caster - ; store HP for future use. THis should usually be 100% HP. - previousHP = selfRef.getActorValue("health") -; ; debug.TraceConditional("TEST JOEL: Dragon has set previousHP to :"+previousHP, bDebug) -; ; debug.TraceConditional("TEST JOEL: Dragon Blood FX onEffectStart initialized", bDebug) - dragonBloodInit() -ENDEVENT - -EVENT onLoad() -; ; debug.traceConditional("TEST JOEL: Dragon has loaded ("+selfRef+")", bDebug) -endEVENT - -EVENT OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) - - ; first intercept to figure out how much damage was done. -; ; debug.TraceConditional("||===============================", bDebug) -; ; debug.TraceConditional("|| TEST JOEL: DRAGON HP DIAGNOSTIC", bDebug) -; ; debug.TraceConditional("|| TEST JOEL: Dragon previous HP="+previousHP, bDebug) -; ; debug.TraceConditional("|| TEST JOEL: Dragon current HP="+selfRef.getActorValue("health"), bDebug) - - diffHP = previousHP - (selfRef.getActorValue("health")) -; ; debug.TraceConditional("|| TEST JOEL: Dragon damaged for "+diffHP+"HP", bDebug) - - ; determine if I was hit in the front/back/left/right - hitAngle = selfRef.GetHeadingAngle(akAggressor) - if hitAngle >= -45 && hitAngle <= 45 - hitDirection = "FRONT" - ; decrement a fake HP counter for this side of the body - HPfront = (HPfront - diffHP) - endif - if hitAngle >= 135 || hitAngle <= -135 - hitDirection = "BACK" - ; decrement a fake HP counter for this side of the body - HPback = (HPback - diffHP) - endif - if hitAngle < -45 && hitAngle > -135 - hitDirection = "LEFT" - ; decrement a fake HP counter for this side of the body - HPleft = (HPleft - diffHP) - endif - if hitAngle > 45 && hitAngle < 135 - hitDirection = "RIGHT" - ; decrement a fake HP counter for this side of the body - HPright = (HPright - diffHP) - endif - -; ; debug.TraceConditional("|| TEST JOEL: Dragon was hit from the "+hitDirection, bDebug) -; ; debug.TraceConditional("|| TEST JOEL: "+hitdirection+" HP = "+HPleft, bDebug) - - ; ============================================== - ; check for updates to blood state - if hitDirection == "FRONT" - - int prevStateFront = stateFront - - if (HPfront <= HPt1) && (HPfront > HPt2) - stateFront = 1 - elseif (HPfront <= HPt2) && (HPfront > HPt3) - stateFront = 2 - elseif (HPfront <= HPt3) && (HPfront > HPt4) - stateFront = 3 - elseif (HPfront <= HPt4) - stateFront = 4 - endif - - ; see if there was a change in state for this side - if stateFront != prevStateFront - ; concatenate and play appropriate blood FX -; ; debug.TraceConditional("|| TEST JOEL: Blood FX State Change: HeadBleed0"+stateFront, bDebug) - selfRef.PlaySubGraphAnimation("HeadBleed0"+stateFront) - endif - endif - - if hitDirection == "BACK" - - int prevStateback = stateback - - if (HPback <= HPt1) && (HPback > HPt2) - stateback = 1 - elseif (HPback <= HPt2) && (HPback > HPt3) - stateback = 2 - elseif (HPback <= HPt3) && (HPback > HPt4) - stateback = 3 - elseif (HPback <= HPt4) - stateback = 4 - endif - - ; see if there was a change in state for this side - if stateback != prevStateback - ; concatenate and play appropriate blood FX -; ; debug.TraceConditional("|| TEST JOEL: Blood FX State Change: BackBleed0"+stateback, bDebug) - selfRef.PlaySubGraphAnimation("TailBleed0"+stateback) - endif - endif - - if hitDirection == "LEFT" - - int prevStateleft = stateleft - - if (HPleft <= HPt1) && (HPleft > HPt2) - stateleft = 1 - elseif (HPleft <= HPt2) && (HPleft > HPt3) - stateleft = 2 - elseif (HPleft <= HPt3) && (HPleft > HPt4) - stateleft = 3 - elseif (HPleft <= HPt4) - stateleft = 4 - endif - - ; see if there was a change in state for this side - if stateleft != prevStateleft - ; concatenate and play appropriate blood FX -; ; debug.TraceConditional("|| TEST JOEL: Blood FX State Change: WingLBleed0"+stateleft, bDebug) - selfRef.PlaySubGraphAnimation("WingLBleed0"+stateleft) - endif - endif - - if hitDirection == "RIGHT" - - int prevStateright = stateright - - if (HPright <= HPt1) && (HPright > HPt2) - stateright = 1 - elseif (HPright <= HPt2) && (HPright > HPt3) - stateright = 2 - elseif (HPright <= HPt3) && (HPright > HPt4) - stateright = 3 - elseif (HPright <= HPt4) - stateright = 4 - endif - - ; see if there was a change in state for this side - if stateright != prevStateright - ; concatenate and play appropriate blood FX -; ; debug.TraceConditional("|| TEST JOEL: Blood FX State Change: WingRBleed0"+stateright, bDebug) - selfRef.PlaySubGraphAnimation("WingRBleed0"+stateright) - endif - endif - - ; ============================================== - ; store our current HP as the previous for accurate maths on future hits. - previousHP = selfRef.getActorValue("health") - if bDebug == TRUE -; ; debug.TraceConditional("|| TEST JOEL: End of onHit()", bDebug) - bDebug = false - debugVars() - endif - -endEVENT +;2017-01-05 by Taka2nd ======================== +; +;Nexus ver1.2 +;・変数をデフォルトのものに戻す +;・不要な変数をコメントアウト +;Nexus ver1.2a +;・不要な変数をコメントアウトを外す +;Nexus ver1.2b +;・機能していない不要なイベント処理を削除 +; +; +;・PlaySubAnimation()の頻繁なエラーおよびエラースタック +;↓ +;PlaySubAnimation()へのコマンドが逆行および多重化を起こしていた +;→排他制御を行っていなかったのとグローバル変数で計算していたのが原因 +;↓ +;State文によるの排他の追加および変数の見直しにより解決、それにより多少の負荷軽減効果もあり +; +;・死亡チェックを追加 +;・HP計算の不具合→GetActorValuePercentage()に変更 +; +;・PlaySubAnimation()の定期的なエラー、Bleed**を順番通りに実行することで解決 +; +; +;Entire script rewritten for USLEEP 3.0.10. Used with permission from Taka2nd. + +Event OnEffectStart(Actor Target, Actor Caster) + selfRef = Caster + stateFront = 0 + stateBack = 0 + stateLeft = 0 + stateRight = 0 + PreviousHP = 1.0 + HPfront = 1.0 + HPback = 1.0 + HPleft = 1.0 + HPright = 1.0 + + ;USSEP 4.1.5 for Bug #13547: added this line: + USSEP_RegisterForAnimationEvents (selfRef) +endEvent + +State __Busy__ + Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) + endEvent +endState -; EVENT onDeath(actor myKiller) - ; utility.wait(8.5) - ; selfRef.PlaySubGraphAnimation("BloodFade") - ; utility.wait(1.5) -; ENDEVENT +Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) + GotoState("__Busy__") -;==================================================================== -; Initialize a bunch of variables -;==================================================================== -FUNCTION dragonBloodInit() - ; quick safety net to convert percentages if they are entered incorrectly (ie 75% = 0.75) -; ; debug.TraceConditional("convert % values to integers", bDebug) - if HPpctT1 > 1.0 && HPpctT1 < 100 - HPpctT1 = HPpctT1*0.01 - endif - if HPpctT2 > 1.0 && HPpctT2 < 100 - HPpctT2 = HPpctT2*0.01 - endif - if HPpctT2 > 1.0 && HPpctT2 < 100 - HPpctT2 = HPpctT2*0.01 - endif - if HPpctT3 > 1.0 && HPpctT3 < 100 - HPpctT3 = HPpctT3*0.01 + if !selfRef + return ;OnHit Event Finish endif - - ; store hard point values so we don't have to always work in percentages later - HPt1 = HPpctT1 * (selfRef.getBaseAV("health")) - HPt2 = HPpctT2 * (selfRef.getBaseAV("health")) - HPt3 = HPpctT3 * (selfRef.getBaseAV("health")) - HPt4 = HPpctT4 * (selfRef.getBaseAV("health")) - - ; set fake location HP counters to current(assume full?) HP - HPfront = selfRef.getAV("health") - HPback = selfRef.getAV("health") - HPleft = selfRef.getAV("health") - HPright = selfRef.getAV("health") - - if bDebug == TRUE -; ; debug.TraceConditional("|| TEST JOEL : finished Init()", bDebug) - debugVars() - endif - -endFUNCTION - -FUNCTION debugVars() -; ; debug.TraceConditional("||===============================", bDebug) -; ; debug.TraceConditional("|| DRAGON BLOOD FX VARIABLE READOUT", bDebug) -; ; debug.TraceConditional("|| HPpctT1 = "+HPpctT1, bDebug) -; ; debug.TraceConditional("|| HPpctT2 = "+HPpctT2, bDebug) -; ; debug.TraceConditional("|| HPpctT3 = "+HPpctT3, bDebug) -; ; debug.TraceConditional("|| HPpctT4 = "+HPpctT4, bDebug) -; ; debug.TraceConditional("|| HPFront = "+HPFront, bDebug) -; ; debug.TraceConditional("|| HPBack = "+HPBack, bDebug) -; ; debug.TraceConditional("|| HPLeft = "+HPLeft, bDebug) -; ; debug.TraceConditional("|| HPRight = "+HPRight, bDebug) -; ; debug.TraceConditional("|| stateFront = "+stateFront, bDebug) -; ; debug.TraceConditional("|| stateBack = "+stateBack, bDebug) -; ; debug.TraceConditional("|| stateLeft = "+stateLeft, bDebug) -; ; debug.TraceConditional("|| stateRight = "+stateRight, bDebug) -; ; debug.TraceConditional("|| HPt1 = "+HPt1, bDebug) -; ; debug.TraceConditional("|| HPt2 = "+HPt2, bDebug) -; ; debug.TraceConditional("|| HPt3 = "+HPt3, bDebug) -; ; debug.TraceConditional("|| HPt4 = "+HPt4, bDebug) -endFUNCTION - - - - - - - - - - + if akAggressor -STATE markSTATE + float fCurrentHP = selfRef.GetActorValuePercentage("health") + if fCurrentHP <= 0 + return ;OnHit Event Finish + endif - Event OnLoad() -; ;Debug.Trace("This dragon is loaded, playing animations should work now") - + float fDiffHP = PreviousHP - fCurrentHP + if fDiffHP > 0 + + PreviousHP = fCurrentHP + float fHitAngle = selfRef.GetHeadingAngle(akAggressor) + + ;FRONT + if fHitAngle >= -45 && fHitAngle <= 45 + HPfront -= fDiffHP + if GetBleedState(HPfront) > stateFront + stateFront += 1 + selfRef.PlaySubGraphAnimation("HeadBleed0" + stateFront) + endif + ;BACK + elseif fHitAngle >= 135 || fHitAngle <= -135 + HPback -= fDiffHP + if GetBleedState(HPback) > stateBack + stateBack += 1 + selfRef.PlaySubGraphAnimation("TailBleed0" + stateBack) + endif + ;LEFT + elseif fHitAngle < 0 + HPleft -= fDiffHP + if GetBleedState(HPleft) > stateLeft + stateLeft += 1 + selfRef.PlaySubGraphAnimation("WingLBleed0" + stateLeft) + endif + ;RIGHT + else + HPright -= fDiffHP + if GetBleedState(HPright) > stateRight + stateRight += 1 + selfRef.PlaySubGraphAnimation("WingRBleed0" + stateRight) + endif + endif - endEvent + endif - EVENT OnEffectStart(Actor Target, Actor Caster) - ;Play your particles. - selfRef = caster - dragonHealth = selfRef.GetAV("Health") as int - ENDEVENT + endif + ;Debug.Trace("OnHit : akAggressor=" + akAggressor + " : akSource=" + akSource + " (" + akSource.GetType() + ") : akProjectile=" + akProjectile) + GotoState("") - Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) - - dragonHealth = selfRef.GetAV("Health") as int -; ; Debug.TraceConditional("Dragon's health is" + dragonHealth, bDebug) - hitAngle = selfRef.GetHeadingAngle(akAggressor) - if hitAngle >= -45 && hitAngle <= 45 -; ; Debug.TraceConditional(akAggressor + " angle is " + hitAngle, bDebug) -; ; Debug.TraceConditional("Dragon was hit in front", bDebug) - hitDirection = 0 - frontBloodStepper = frontBloodStepper + 1 - elseIf hitAngle > 45 && hitAngle < 135 -; ; Debug.TraceConditional(akAggressor + " angle is " + hitAngle, bDebug) -; ; Debug.TraceConditional("Dragon was hit on right", bDebug) - hitDirection = 1 - rightBloodStepper = rightBloodStepper + 1 - elseIf hitAngle >= 135 || hitAngle <= -135 -; ; Debug.TraceConditional(akAggressor + " angle is " + hitAngle, bDebug) -; ; Debug.TraceConditional("Dragon was hit in back", bDebug) - hitDirection = 2 - backBloodStepper = backBloodStepper + 1 - elseIf hitAngle < -45 && hitAngle > -135 -; ; Debug.TraceConditional(akAggressor + " angle is " + hitAngle, bDebug) -; ; Debug.TraceConditional("Dragon was hit on left", bDebug) - hitDirection = 3 - leftBloodStepper = leftBloodStepper + 1 - endif - - if hitDirection == 0 - if frontBloodStepper <= 4 -; ; Debug.TraceConditional("Dragon head blood stage0" + frontBloodStepper, bDebug) - selfRef.PlaySubGraphAnimation("HeadBleed0" + frontBloodStepper) - endif - elseif hitDirection == 1 - if rightBloodStepper <= 4 -; ; Debug.TraceConditional("Dragon wing r blood stage0" + rightBloodStepper, bDebug) - selfRef.PlaySubGraphAnimation("WingRBleed0" + rightBloodStepper) - endif - elseif hitDirection == 2 - if backBloodStepper <= 4 -; ; Debug.TraceConditional("Dragon back blood stage0" + backBloodStepper, bDebug) - selfRef.PlaySubGraphAnimation("TailBleed0" + backBloodStepper) - endif - elseif hitDirection == 3 - if leftBloodStepper <= 4 -; ; Debug.TraceConditional("Dragon wing l blood stage0" + leftBloodStepper, bDebug) - selfRef.PlaySubGraphAnimation("WingLBleed0" + leftBloodStepper) - endif - endif +endEVENT - - ENDEVENT - - - EVENT onDeath(actor myKiller) +int FUNCTION GetBleedState(float fHP) + if fHP > HPpctT1 + return 0 + elseif fHP > HPpctT2 + return 1 + elseif fHP > HPpctT3 + return 2 + elseif fHP > HPpctT4 + return 3 + endif + return 4 +endFUNCTION - ; selfRef.UnequipItem(ChaurusSpitSkin) - - ENDEVENT -endSTATE - +;----------------------------------------------------------------- +; Added by USSEP 4.1.5 for Bug #13547: +;----------------------------------------------------------------- + +Event OnAnimationEvent (ObjectReference akSource, string asEventName) + ;do nothing +EndEvent + +function USSEP_RegisterForAnimationEvents (actor dragonRef) + if dragonRef + RegisterForAnimationEvent (dragonRef, "HeadBleed01") + RegisterForAnimationEvent (dragonRef, "HeadBleed02") + RegisterForAnimationEvent (dragonRef, "HeadBleed03") + RegisterForAnimationEvent (dragonRef, "HeadBleed04") + RegisterForAnimationEvent (dragonRef, "TailBleed01") + RegisterForAnimationEvent (dragonRef, "TailBleed02") + RegisterForAnimationEvent (dragonRef, "TailBleed03") + RegisterForAnimationEvent (dragonRef, "TailBleed04") + RegisterForAnimationEvent (dragonRef, "WingLBleed01") + RegisterForAnimationEvent (dragonRef, "WingLBleed02") + RegisterForAnimationEvent (dragonRef, "WingLBleed03") + RegisterForAnimationEvent (dragonRef, "WingLBleed04") + RegisterForAnimationEvent (dragonRef, "WingRBleed01") + RegisterForAnimationEvent (dragonRef, "WingRBleed02") + RegisterForAnimationEvent (dragonRef, "WingRBleed03") + RegisterForAnimationEvent (dragonRef, "WingRBleed04") + endif +endFunction diff --git a/source/scripts/fxdraugrmagicscript.psc b/source/scripts/fxdraugrmagicscript.psc index 93b59b67..d218d431 100644 --- a/source/scripts/fxdraugrmagicscript.psc +++ b/source/scripts/fxdraugrmagicscript.psc @@ -23,7 +23,15 @@ weapon property Bow auto EVENT OnEffectStart(Actor Target, Actor Caster) + selfRef = caster + + ;Added by USKP to prevent this effect from appearing on the player. + If selfRef == Game.GetPlayer() + Dispel() + return + EndIf + myActorBase = caster.GetLeveledActorBase() ;add darkened area fx to all magic draugr FXMagicDraugrDarkeningEffect.Play(selfRef, -1) @@ -50,6 +58,7 @@ weapon property Bow auto ENDEVENT Event OnEffectFinish(Actor akTarget, Actor akCaster) + FXMagicDraugrDarkeningEffect.Stop(selfRef) if myActorBase.GetSex() == 0 ;Play glow art @@ -71,7 +80,7 @@ weapon property Bow auto endEvent EVENT onDying(actor myKiller) - + ;DraugrMaleEyeGlowFX.Stop(selfRef) ;DraugrFemaleEyeGlowFX.Stop(selfRef) FXMagicDraugrDarkeningEffect.Stop(selfRef) diff --git a/source/scripts/fxdwarvencenturionscript.psc b/source/scripts/fxdwarvencenturionscript.psc index 61af39c3..5ec96e64 100644 --- a/source/scripts/fxdwarvencenturionscript.psc +++ b/source/scripts/fxdwarvencenturionscript.psc @@ -12,7 +12,15 @@ VisualEffect Property FXDwarvenCenturionArm02 Auto int test EVENT OnEffectStart(Actor Target, Actor Caster) + selfRef = caster + + ;Added by USKP to prevent this effect from appearing on the player. + If selfRef == Game.GetPlayer() + Dispel() + return + EndIf + if (selfRef.GetSleepState() == 3) ; Debug.Trace("Dwarven cent is sleeping! 3") selfRef.PlaySubGraphAnimation( "StopEffect" ) @@ -24,6 +32,12 @@ int test ENDEVENT Event OnGetUp(ObjectReference akFurniture) + ;Added by USKP to prevent this effect from appearing on the player. + If selfRef == Game.GetPlayer() + Dispel() + return + EndIf + ; Debug.Trace("Dwarven cent just got up from " ) FXDwarvenCenturion.Play(selfRef, -1) FXDwarvenCenturionArm01.Play(selfRef, -1) diff --git a/source/scripts/fxdwarvenspherescript.psc b/source/scripts/fxdwarvenspherescript.psc index af9be74b..32f584b9 100644 --- a/source/scripts/fxdwarvenspherescript.psc +++ b/source/scripts/fxdwarvenspherescript.psc @@ -10,7 +10,16 @@ VisualEffect Property FXDwarvenSphereEffect Auto EVENT OnEffectStart(Actor Target, Actor Caster) selfRef = caster - FXDwarvenSphereEffect.Play(selfRef, -1) + + ;Added by USKP to prevent this effect from appearing on the player. + If selfRef == Game.GetPlayer() + Dispel() + return + EndIf + + if( selfRef.Is3DLoaded() ) ; 3D check added by USKP 2.0 - triggers errors without it. + FXDwarvenSphereEffect.Play(selfRef, -1) + EndIf ENDEVENT Event OnEffectFinish(Actor akTarget, Actor akCaster) diff --git a/source/scripts/fxdwarvenspiderscript.psc b/source/scripts/fxdwarvenspiderscript.psc index 6347e9fa..ec53c200 100644 --- a/source/scripts/fxdwarvenspiderscript.psc +++ b/source/scripts/fxdwarvenspiderscript.psc @@ -13,7 +13,17 @@ Explosion Property ExplosionDwarvenSpider Auto EVENT OnEffectStart(Actor Target, Actor Caster) selfRef = caster - FXDwarvenSpiderEffect.Play(selfRef, -1) + + ;Added by USKP to prevent this effect from appearing on the player. + If selfRef == Game.GetPlayer() + Dispel() + return + EndIf + + ;USKP 2.0.3 - 3D check for shaders. + if( selfRef.Is3DLoaded() ) + FXDwarvenSpiderEffect.Play(selfRef, -1) + EndIf ENDEVENT Event OnEffectFinish(Actor akTarget, Actor akCaster) diff --git a/source/scripts/fxgreybeardshoutscript.psc b/source/scripts/fxgreybeardshoutscript.psc index f9126657..4e5be822 100644 --- a/source/scripts/fxgreybeardshoutscript.psc +++ b/source/scripts/fxgreybeardshoutscript.psc @@ -30,7 +30,7 @@ state playing ; patch 1.9: event OnCellDetach() - debug.trace(self + "playing: OnCellDetach - enable trigger") +; debug.trace(self + "playing: OnCellDetach - enable trigger") WordTrigger.Enable() gotoState("waiting") endEvent diff --git a/source/scripts/fxsetblendvariablescript.psc b/source/scripts/fxsetblendvariablescript.psc index b5787154..f1284f44 100644 --- a/source/scripts/fxsetblendvariablescript.psc +++ b/source/scripts/fxsetblendvariablescript.psc @@ -34,6 +34,11 @@ int doWhileLoop endif ;Loop to change variable over time while doWhileLoop == 1 + ;USKP 1.3.3 - Bail out of this loop if 3D becomes unloaded. + if( !Is3DLoaded() ) + doWhileLoop = 0 + EndIf + myRandom = utility.RandomFloat(myfToggleBlendRageMin,myfToggleBlendRageMax) SetAnimationVariableFloat("fToggleBlend", myRandom) myWaitTime = utility.RandomFloat(waitTimeMin,waitTimeMax) diff --git a/source/scripts/fxskeletonnecroscript.psc b/source/scripts/fxskeletonnecroscript.psc index 1221f689..2732ba2a 100644 --- a/source/scripts/fxskeletonnecroscript.psc +++ b/source/scripts/fxskeletonnecroscript.psc @@ -10,6 +10,13 @@ Actor selfRef EVENT OnEffectStart(Actor Target, Actor Caster) selfRef = caster + + ;Added by USKP to prevent this effect from appearing on the player. + If selfRef == Game.GetPlayer() + Dispel() + return + EndIf + FXNecroSkeletonMultiEffect.play(selfRef, -1) FXSkeletonNecroEyeGlowEffect.play(selfRef, -1) ENDEVENT diff --git a/source/scripts/fxsovengardescript.psc b/source/scripts/fxsovengardescript.psc index bcb56502..4de0a0c1 100644 --- a/source/scripts/fxsovengardescript.psc +++ b/source/scripts/fxsovengardescript.psc @@ -8,8 +8,16 @@ ObjectReference myGlow EVENT OnEffectStart(Actor Target, Actor Caster) selfRef = caster + + ;USKP 2.0.1 - Stop this from attaching to the player. + if( selfRef == Game.GetPlayer() ) + Return + EndIf + ;float myScale = selfRef.getScale() ; ;debug.trace("my scale is" + myScale) + ;USKP 2.0.2 - Delay the effect to let 3D catch up. + Utility.Wait(1.0) myGlow = FXSovengardeGlowEffect.play(selfRef, -1) ;myGlow.setScale(myScale) SovengardeFXS.Play(selfRef) diff --git a/source/scripts/icewraithparticlesscript.psc b/source/scripts/icewraithparticlesscript.psc index 3d5dcec4..74b1333e 100644 --- a/source/scripts/icewraithparticlesscript.psc +++ b/source/scripts/icewraithparticlesscript.psc @@ -23,12 +23,22 @@ Activator property AshPileObject auto {The object we use as a pile.} - EVENT OnEffectStart(Actor Target, Actor Caster) - selfRef = caster - selfRef.setScale(RandomFloat(scaleRangeMin, scaleRangeMax)) - IceWraithParticles01.Play(selfRef, -1) + EVENT OnEffectStart(Actor Target, Actor Caster) + selfRef = caster + + ;Added by USKP to prevent this effect from appearing on the player. + If selfRef == Game.GetPlayer() + Dispel() + return + EndIf + + ;USKP 2.0.3 - 3D check, shaders, etc + if( selfRef.Is3DLoaded() ) + selfRef.setScale(RandomFloat(scaleRangeMin, scaleRangeMax)) + IceWraithParticles01.Play(selfRef, -1) + FXIceWraith2ndFormEffect.play(selfRef, -1) + EndIf selfRef.EquipItem(SkinIceWraithSmokeFins) - FXIceWraith2ndFormEffect.play(selfRef, -1) registerForAnimationEvent(selfRef, GroundDiveIceHazard) registerForAnimationEvent(selfRef, ChangeForms) ENDEVENT @@ -53,6 +63,7 @@ Activator property AshPileObject auto endEVENT EVENT onDying(actor myKiller) + IceWraithParticles01.Stop(selfRef) FXIceWraith2ndFormEffect.stop(selfRef) selfRef.unEquipItem(SkinIceWraithSmokeFins) diff --git a/source/scripts/magicattachashpileondeath.psc b/source/scripts/magicattachashpileondeath.psc index 45012052..a47583da 100644 --- a/source/scripts/magicattachashpileondeath.psc +++ b/source/scripts/magicattachashpileondeath.psc @@ -44,7 +44,7 @@ bool TargetIsImmune = True Event OnEffectStart(Actor Target, Actor Caster) victim = target ; DeadAlready = Victim.IsDead() - trace("victim == " + victim + ", is this right?") + ;trace("victim == " + victim + ", is this right?") EndEvent @@ -66,7 +66,7 @@ Event OnDying(Actor Killer) endif if TargetIsImmune == False - trace("victim just died") + ;trace("victim just died") ; DeadAlready = true victim.SetCriticalStage(Victim.CritStage_DisintegrateStart) ;victim.SetAlpha (0.99,False) diff --git a/source/scripts/magiceffectshadersonendscript.psc b/source/scripts/magiceffectshadersonendscript.psc index c8de1197..fee9c618 100644 --- a/source/scripts/magiceffectshadersonendscript.psc +++ b/source/scripts/magiceffectshadersonendscript.psc @@ -28,13 +28,16 @@ Float Property fDuration = 0.1 auto ;=============/ Event OnEffectFinish(Actor Target, Actor Caster) - if EffectShaderFX01 != None - EffectShaderFX01.Play(Target,fDuration) - endif - if EffectShaderFX02 != None - EffectShaderFX02.Play(Target,fDuration) - endif - if EffectShaderFX03 != None - EffectShaderFX03.Play(Target,fDuration) - endif + ;USKP 2.0.1 - Can't play stuff if 3D isn't loaded. + if( Target.Is3DLoaded() ) + if EffectShaderFX01 != None + EffectShaderFX01.Play(Target,fDuration) + endif + if EffectShaderFX02 != None + EffectShaderFX02.Play(Target,fDuration) + endif + if EffectShaderFX03 != None + EffectShaderFX03.Play(Target,fDuration) + endif + EndIf EndEvent diff --git a/source/scripts/pf_carryfirewood_000d97fa.psc b/source/scripts/pf_carryfirewood_000d97fa.psc index d64bff40..9fac3906 100644 --- a/source/scripts/pf_carryfirewood_000d97fa.psc +++ b/source/scripts/pf_carryfirewood_000d97fa.psc @@ -6,8 +6,7 @@ Scriptname PF_CarryFirewood_000D97FA Extends Package Hidden Function Fragment_2(Actor akActor) ;BEGIN CODE ; ; debug.trace(self + " OnEnd") -;ObjectReference meRef = akActor as ObjectReference -;(meRef as CarryActorScript).ChangeCarryState(false) +;(akActor as CarryActorScript).ChangeCarryState(false) ;END CODE EndFunction ;END FRAGMENT @@ -16,8 +15,8 @@ EndFunction Function Fragment_1(Actor akActor) ;BEGIN CODE ; ; debug.trace(self + " OnChange") -ObjectReference meRef = akActor as ObjectReference -(meRef as CarryActorScript).ChangeCarryState(false) +;USKP 2.0.1 - Properly handling itself as an Actor now. +(akActor as CarryActorScript).ChangeCarryState(false) ;END CODE EndFunction ;END FRAGMENT @@ -26,8 +25,8 @@ EndFunction Function Fragment_3(Actor akActor) ;BEGIN CODE ; ; debug.trace(self + " OnBegin") -ObjectReference meRef = akActor as ObjectReference -(meRef as CarryActorScript).ChangeCarryState(true) +;USKP 2.0.1 - Properly handling itself as an Actor now. +(akActor as CarryActorScript).ChangeCarryState(true) ;END CODE EndFunction ;END FRAGMENT diff --git a/source/scripts/playerbookshelfclicktriggerscript.psc b/source/scripts/playerbookshelfclicktriggerscript.psc index 90ab7ee9..b5c0eeca 100644 --- a/source/scripts/playerbookshelfclicktriggerscript.psc +++ b/source/scripts/playerbookshelfclicktriggerscript.psc @@ -20,7 +20,7 @@ endEVENT EVENT OnActivate(ObjectReference TriggerRef) - Trace("DARYL - " + self + " I've been activated, opening container: " + ShelfContainer) + ;Trace("DARYL - " + self + " I've been activated, opening container: " + ShelfContainer) ShelfContainer.Activate(Game.GetPlayer(), FALSE) endEVENT diff --git a/source/scripts/playerbookshelfcontainerscript.psc b/source/scripts/playerbookshelfcontainerscript.psc index f93dc73d..20a58148 100644 --- a/source/scripts/playerbookshelfcontainerscript.psc +++ b/source/scripts/playerbookshelfcontainerscript.psc @@ -1,4 +1,5 @@ Scriptname PlayerBookShelfContainerScript extends ObjectReference +{This script has been overhauled to fix several issues listed in USLEEP 3.0.1 - Bug #19515. This overhaul was contributed by Adria.} import debug import utility @@ -133,6 +134,7 @@ GlobalVariable Property BookShelfGlobal Auto {Global showing whether or not the player has ever activated a bookshelf} + EVENT OnCellLoad() if AlreadyLoaded == FALSE ;Trace("BOOKCASE - Running OnCellLoad()") @@ -164,13 +166,23 @@ EVENT OnCellLoad() AlreadyLoaded = TRUE endif -endEVENT + ; Check if this shelf has already been messed up by vanilla bug, and issue a warning in a log. + ; Actual healing process will trigger when all books are removed from the display shelf. + ;if !(CurrentBookAmount >= 0 && CurrentBookAmount <= MaxBooksAllowed && CurrentBookAmount == NumBooksOnShelf()) + ; Trace("BookShelfFix - An inconsistent bookshelf " + self + " found in " + self.GetCurrentLocation() + ", fix will be applied when you pull out all the books from the shelf.") + ;endif +endEVENT EVENT OnActivate(ObjectReference akActionRef) ; Removing all items from container as a precaution ;Trace("BOOKCASE - I've been ACTIVATED!") + + ;USLEEP 3.0.1 - Bug #19515 + CleanInvalidPlacedBooks() + CurrentBookAmount = NumBooksOnShelf() + BlockActivate() ;Trace("BOOKCASE - Blocking activate on all books") ;Trace("BOOKCASE - BookShelfTrigger01Ref = " + BookShelfTrigger01Ref) @@ -202,6 +214,17 @@ EVENT OnActivate(ObjectReference akActionRef) Wait(0.25) ; The following will fire when the player leaves inventory + + ;USLEEP 3.0.1 - Bug #19515 + ; When display shelf becomes empty, reset it to fix corrupted shelves + if NumBooksOnShelf() == 0 + RemoveAllItems(akTransferTo = Game.GetPlayer(), abRemoveQuestItems = true) ; make sure all the books are transfered into player's inventory + ClearDisplayShelf() + Wait(0.25) ; wait until RemoveAllItems() is (hopefully) done + CurrentBookAmount = 0 + ;Trace("BookShelfFix - Cleaned up bookshelf " + self + ". This is not an error.") + endif + ;Trace("BOOKCASE - Out of Inventory so placing all the books") UpdateBooks() @@ -394,7 +417,8 @@ endFunction Function RemoveBooks(Form BookBase, Int BookAmount) - ; Find an empty book form and place the new book there + ; Find the removed book form(s) and remove it from the display + While BookAmount > 0 if PlacedBook01 == BookBase ;Trace("BOOKCASE - PlacedBook01 matches, Removing this book") @@ -515,7 +539,7 @@ Function AddBooks(Form BookBase, Int BookAmount) ;Trace("BOOKCASE - PlacedBook18 is empty, placing book there") PlacedBook18 = BookBase endif - + BookAmount = BookAmount - 1 endWhile @@ -572,7 +596,8 @@ ObjectReference Function UpdateSingleBook(Form TargetBook, ObjectReference Place ; Note - it would be more efficient to move the book to its home position if the desired ; book matches the placed book, but MoveTo doesn't work correctly with multi-part dynamic ; objects. So we sidestep the issue by always deleting and placing - if PlacedBookRef + ;USLEEP 3.0.1 - Bug #19515 added form ID check here. + if PlacedBookRef && PlacedBookRef.GetFormID() PlacedBookRef.Disable() PlacedBookRef.Delete() endIf @@ -613,9 +638,373 @@ Function UpdateBooks() GoToState("") ; Now allow books to be updated again EndFunction + State PlacingBooks Function UpdateBooks() ; Already updating books, so ignore EndFunction EndState - \ No newline at end of file + + +; +; ;USLEEP 3.0.1 - Bug #19515: Everything past this point is new stuff to support fixing the bookshelf containers. +; +Function PickUp(ObjectReference BookRef) + ;Trace("BookShelfFix " + self + " PickUp() - " + BookRef + ", Base = " + BookRef.GetBaseObject()) + + if (BookRef && BookRef.GetBaseObject() as Book) + + ; Remove a display book first + if RemoveBookByRef(BookRef) + + GoToState("PickingUp") + ; Then remove a book in container + self.RemoveItem(BookRef.GetBaseObject(), 1) + Wait(0.25) ; wait for OnItemRemoved() event to fire + + GoToState("") + endif + endIf +EndFunction + + +State PickingUp + ; Used when a book has been picked up directly from the display + + Event OnBeginState() ; You Shall Not Pass! + self.BlockActivation(True) + BlockActivate() + ;Trace("BookShelfFix " + self + " PickingUp State - Entered State") + EndEvent + + Event OnActivate(ObjectReference akActionRef) + EndEvent + + Event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer) + ;Trace("BookShelfFix " + self + " PickingUp State - Item " + akBaseItem + " removed from shelf inventory") + CurrentBookAmount -= aiItemCount + EndEvent + + Event OnEndState() + ;Trace("BookShelfFix " + self + " PickingUp State - Leaving State") + UnblockActivate() + self.BlockActivation(False) + EndEvent + +EndState + + +Bool Function RemoveBookByRef(ObjectReference BookRef) + ; If the book had been picked up directly, and if there were multiple copies of it on the shelf, + ; we need to determine the exact location of the book rather than the first copy in a list. + ; Returns True if BookRef has been successfully dismembered from the list or False when the book was missing + + if !BookRef + return False + endif + + int BookRefID = BookRef.GetFormID() + + ; These references could be a derivative of ObjectReference such as DefaultSetStageOnPlayerAcquireItem + ; and would never match even if they were cast into ObjectReference, so compare their FormIDs rather than comparing them directly. + if PlacedBook01Ref && PlacedBook01Ref.GetFormID() == BookRefID + ;Trace("BookShelfFix RemoveBookByRef() - PlacedBook01 matches, Removing this book") + PlacedBook01 = EmptyForm + PlacedBook01Ref = EmptyRef + elseif PlacedBook02Ref && PlacedBook02Ref.GetFormID() == BookRefID + ;Trace("BookShelfFix RemoveBookByRef() - PlacedBook02 matches, Removing this book") + PlacedBook02 = EmptyForm + PlacedBook02Ref = EmptyRef + elseif PlacedBook03Ref && PlacedBook03Ref.GetFormID() == BookRefID + ;Trace("BookShelfFix RemoveBookByRef() - PlacedBook03 matches, Removing this book") + PlacedBook03 = EmptyForm + PlacedBook03Ref = EmptyRef + elseif PlacedBook04Ref && PlacedBook04Ref.GetFormID() == BookRefID + ;Trace("BookShelfFix RemoveBookByRef() - PlacedBook04 matches, Removing this book") + PlacedBook04 = EmptyForm + PlacedBook04Ref = EmptyRef + elseif PlacedBook05Ref && PlacedBook05Ref.GetFormID() == BookRefID + ;Trace("BookShelfFix RemoveBookByRef() - PlacedBook05 matches, Removing this book") + PlacedBook05 = EmptyForm + PlacedBook05Ref = EmptyRef + elseif PlacedBook06Ref && PlacedBook06Ref.GetFormID() == BookRefID + ;Trace("BookShelfFix RemoveBookByRef() - PlacedBook06 matches, Removing this book") + PlacedBook06 = EmptyForm + PlacedBook06Ref = EmptyRef + elseif PlacedBook07Ref && PlacedBook07Ref.GetFormID() == BookRefID + ;Trace("BookShelfFix RemoveBookByRef() - PlacedBook07 matches, Removing this book") + PlacedBook07 = EmptyForm + PlacedBook07Ref = EmptyRef + elseif PlacedBook08Ref && PlacedBook08Ref.GetFormID() == BookRefID + ;Trace("BookShelfFix RemoveBookByRef() - PlacedBook08 matches, Removing this book") + PlacedBook08 = EmptyForm + PlacedBook08Ref = EmptyRef + elseif PlacedBook09Ref && PlacedBook09Ref.GetFormID() == BookRefID + ;Trace("BookShelfFix RemoveBookByRef() - PlacedBook09 matches, Removing this book") + PlacedBook09 = EmptyForm + PlacedBook09Ref = EmptyRef + elseif PlacedBook10Ref && PlacedBook10Ref.GetFormID() == BookRefID + ;Trace("BookShelfFix RemoveBookByRef() - PlacedBook10 matches, Removing this book") + PlacedBook10 = EmptyForm + PlacedBook10Ref = EmptyRef + elseif PlacedBook11Ref && PlacedBook11Ref.GetFormID() == BookRefID + ;Trace("BookShelfFix RemoveBookByRef() - PlacedBook11 matches, Removing this book") + PlacedBook11 = EmptyForm + PlacedBook11Ref = EmptyRef + elseif PlacedBook12Ref && PlacedBook12Ref.GetFormID() == BookRefID + ;Trace("BookShelfFix RemoveBookByRef() - PlacedBook12 matches, Removing this book") + PlacedBook12 = EmptyForm + PlacedBook12Ref = EmptyRef + elseif PlacedBook13Ref && PlacedBook13Ref.GetFormID() == BookRefID + ;Trace("BookShelfFix RemoveBookByRef() - PlacedBook13 matches, Removing this book") + PlacedBook13 = EmptyForm + PlacedBook13Ref = EmptyRef + elseif PlacedBook14Ref && PlacedBook14Ref.GetFormID() == BookRefID + ;Trace("BookShelfFix RemoveBookByRef() - PlacedBook14 matches, Removing this book") + PlacedBook14 = EmptyForm + PlacedBook14Ref = EmptyRef + elseif PlacedBook15Ref && PlacedBook15Ref.GetFormID() == BookRefID + ;Trace("BookShelfFix RemoveBookByRef() - PlacedBook15 matches, Removing this book") + PlacedBook15 = EmptyForm + PlacedBook15Ref = EmptyRef + elseif PlacedBook16Ref && PlacedBook16Ref.GetFormID() == BookRefID + ;Trace("BookShelfFix RemoveBookByRef() - PlacedBook16 matches, Removing this book") + PlacedBook16 = EmptyForm + PlacedBook16Ref = EmptyRef + elseif PlacedBook17Ref && PlacedBook17Ref.GetFormID() == BookRefID + ;Trace("BookShelfFix RemoveBookByRef() - PlacedBook17 matches, Removing this book") + PlacedBook17 = EmptyForm + PlacedBook17Ref = EmptyRef + elseif PlacedBook18Ref && PlacedBook18Ref.GetFormID() == BookRefID + ;Trace("BookShelfFix RemoveBookByRef() - PlacedBook18 matches, Removing this book") + PlacedBook18 = EmptyForm + PlacedBook18Ref = EmptyRef + else + return False + endif + + return True +EndFunction + + +Int Function NumBooksOnShelf() + ; Count number of books displayed on shelf (not ones kept in inventory) + int bookCnt = 0 + + Form[] PlacedBookAr = new Form[18] + + PlacedBookAr[0] = PlacedBook01 + PlacedBookAr[1] = PlacedBook02 + PlacedBookAr[2] = PlacedBook03 + PlacedBookAr[3] = PlacedBook04 + PlacedBookAr[4] = PlacedBook05 + PlacedBookAr[5] = PlacedBook06 + PlacedBookAr[6] = PlacedBook07 + PlacedBookAr[7] = PlacedBook08 + PlacedBookAr[8] = PlacedBook09 + PlacedBookAr[9] = PlacedBook10 + PlacedBookAr[10] = PlacedBook11 + PlacedBookAr[11] = PlacedBook12 + PlacedBookAr[12] = PlacedBook13 + PlacedBookAr[13] = PlacedBook14 + PlacedBookAr[14] = PlacedBook15 + PlacedBookAr[15] = PlacedBook16 + PlacedBookAr[16] = PlacedBook17 + PlacedBookAr[17] = PlacedBook18 + + int i = 0 + + while (i < MaxBooksAllowed && i < 18) + if PlacedBookAr[i] + bookCnt += 1 + endif + i += 1 + endwhile + + ; Note that number of books in inventory could NOT match this number due to bugs in vanilla script + return bookCnt +EndFunction + +Function ClearDisplayShelf() + ; Clear BaseID row for display shelf and give back any books in incorrect slots to player + + ObjectReference player = Game.GetPlayer() + + ;Trace("BookShelfFix - ClearDisplayShelf()") + + if (MaxBooksAllowed < 1 && PlacedBook01) + player.AddItem(PlacedBook01, 1, true) + endif + if (MaxBooksAllowed < 2 && PlacedBook02) + player.AddItem(PlacedBook02, 1, true) + endif + if (MaxBooksAllowed < 3 && PlacedBook03) + player.AddItem(PlacedBook03, 1, true) + endif + if (MaxBooksAllowed < 4 && PlacedBook04) + player.AddItem(PlacedBook04, 1, true) + endif + if (MaxBooksAllowed < 5 && PlacedBook05) + player.AddItem(PlacedBook05, 1, true) + endif + if (MaxBooksAllowed < 6 && PlacedBook06) + player.AddItem(PlacedBook06, 1, true) + endif + if (MaxBooksAllowed < 7 && PlacedBook07) + player.AddItem(PlacedBook07, 1, true) + endif + if (MaxBooksAllowed < 8 && PlacedBook08) + player.AddItem(PlacedBook08, 1, true) + endif + if (MaxBooksAllowed < 9 && PlacedBook09) + player.AddItem(PlacedBook09, 1, true) + endif + if (MaxBooksAllowed < 10 && PlacedBook10) + player.AddItem(PlacedBook10, 1, true) + endif + if (MaxBooksAllowed < 11 && PlacedBook11) + player.AddItem(PlacedBook11, 1, true) + endif + if (MaxBooksAllowed < 12 && PlacedBook12) + player.AddItem(PlacedBook12, 1, true) + endif + if (MaxBooksAllowed < 13 && PlacedBook13) + player.AddItem(PlacedBook13, 1, true) + endif + if (MaxBooksAllowed < 14 && PlacedBook14) + player.AddItem(PlacedBook14, 1, true) + endif + if (MaxBooksAllowed < 15 && PlacedBook15) + player.AddItem(PlacedBook15, 1, true) + endif + if (MaxBooksAllowed < 16 && PlacedBook16) + player.AddItem(PlacedBook16, 1, true) + endif + if (MaxBooksAllowed < 17 && PlacedBook17) + player.AddItem(PlacedBook17, 1, true) + endif + if (MaxBooksAllowed < 18 && PlacedBook18) + player.AddItem(PlacedBook18, 1, true) + endif + + PlacedBook01 = EmptyForm + PlacedBook02 = EmptyForm + PlacedBook03 = EmptyForm + PlacedBook04 = EmptyForm + PlacedBook05 = EmptyForm + PlacedBook06 = EmptyForm + PlacedBook07 = EmptyForm + PlacedBook08 = EmptyForm + PlacedBook09 = EmptyForm + PlacedBook10 = EmptyForm + PlacedBook11 = EmptyForm + PlacedBook12 = EmptyForm + PlacedBook13 = EmptyForm + PlacedBook14 = EmptyForm + PlacedBook15 = EmptyForm + PlacedBook16 = EmptyForm + PlacedBook17 = EmptyForm + PlacedBook18 = EmptyForm +EndFunction + + +Function CleanInvalidPlacedBooks() + ; Clean invalid (nonexistent) forms off PlacedBook**. Invalid forms may be resulted in removed mods. + ; Cleaning them will prevent them from eating up PlacedBook slots permanently. + + if !(PlacedBook01 && PlacedBook01.GetFormID()) ; nonexistent forms are still cast into True, but their ID are always 0 + PlacedBook01 = EmptyForm + endif + if !(PlacedBook02 && PlacedBook02.GetFormID()) + PlacedBook02 = EmptyForm + endif + if !(PlacedBook03 && PlacedBook03.GetFormID()) + PlacedBook03 = EmptyForm + endif + if !(PlacedBook04 && PlacedBook04.GetFormID()) + PlacedBook04 = EmptyForm + endif + if !(PlacedBook05 && PlacedBook05.GetFormID()) + PlacedBook05 = EmptyForm + endif + if !(PlacedBook06 && PlacedBook06.GetFormID()) + PlacedBook06 = EmptyForm + endif + if !(PlacedBook07 && PlacedBook07.GetFormID()) + PlacedBook07 = EmptyForm + endif + if !(PlacedBook08 && PlacedBook08.GetFormID()) + PlacedBook08 = EmptyForm + endif + if !(PlacedBook09 && PlacedBook09.GetFormID()) + PlacedBook09 = EmptyForm + endif + if !(PlacedBook10 && PlacedBook10.GetFormID()) + PlacedBook10 = EmptyForm + endif + if !(PlacedBook11 && PlacedBook11.GetFormID()) + PlacedBook11 = EmptyForm + endif + if !(PlacedBook12 && PlacedBook12.GetFormID()) + PlacedBook12 = EmptyForm + endif + if !(PlacedBook13 && PlacedBook13.GetFormID()) + PlacedBook13 = EmptyForm + endif + if !(PlacedBook14 && PlacedBook14.GetFormID()) + PlacedBook14 = EmptyForm + endif + if !(PlacedBook15 && PlacedBook15.GetFormID()) + PlacedBook15 = EmptyForm + endif + if !(PlacedBook16 && PlacedBook16.GetFormID()) + PlacedBook16 = EmptyForm + endif + if !(PlacedBook17 && PlacedBook17.GetFormID()) + PlacedBook17 = EmptyForm + endif + if !(PlacedBook18 && PlacedBook18.GetFormID()) + PlacedBook18 = EmptyForm + endif + +EndFunction + +;USSEP 4.1.5 Bug #13862 - Added to reset all bookshelf form and reference pointers after the chest has been dumped by the prefabs script. +Function USSEP_ClearAllBookForms() + PlacedBook01 = EmptyForm + PlacedBook02 = EmptyForm + PlacedBook03 = EmptyForm + PlacedBook04 = EmptyForm + PlacedBook05 = EmptyForm + PlacedBook06 = EmptyForm + PlacedBook07 = EmptyForm + PlacedBook08 = EmptyForm + PlacedBook09 = EmptyForm + PlacedBook10 = EmptyForm + PlacedBook11 = EmptyForm + PlacedBook12 = EmptyForm + PlacedBook13 = EmptyForm + PlacedBook14 = EmptyForm + PlacedBook15 = EmptyForm + PlacedBook16 = EmptyForm + PlacedBook17 = EmptyForm + PlacedBook18 = EmptyForm + PlacedBook01Ref = EmptyRef + PlacedBook02Ref = EmptyRef + PlacedBook03Ref = EmptyRef + PlacedBook04Ref = EmptyRef + PlacedBook05Ref = EmptyRef + PlacedBook06Ref = EmptyRef + PlacedBook07Ref = EmptyRef + PlacedBook08Ref = EmptyRef + PlacedBook09Ref = EmptyRef + PlacedBook10Ref = EmptyRef + PlacedBook11Ref = EmptyRef + PlacedBook12Ref = EmptyRef + PlacedBook13Ref = EmptyRef + PlacedBook14Ref = EmptyRef + PlacedBook15Ref = EmptyRef + PlacedBook16Ref = EmptyRef + PlacedBook17Ref = EmptyRef + PlacedBook18Ref = EmptyRef +EndFunction diff --git a/source/scripts/playerbookshelftriggerscript.psc b/source/scripts/playerbookshelftriggerscript.psc index c0a40da8..2c56b9d1 100644 --- a/source/scripts/playerbookshelftriggerscript.psc +++ b/source/scripts/playerbookshelftriggerscript.psc @@ -1,4 +1,5 @@ Scriptname PlayerBookShelfTriggerSCRIPT extends ObjectReference +{This script has been overhauled to fix several issues listed in USLEEP 3.0.1 - Bug #19515. This overhaul was contributed by Adria.} import debug import utility @@ -36,14 +37,16 @@ auto STATE WaitForBooks ;Trace("DARYL - " + self + " Player has a hold of this reference, do nothing") else ; Player isnt' grabbing this reference, check to see if it's in the container. - if Shelfcontainer.GetItemCount(TriggerRef.GetBaseObject()) >= 1 - Shelfcontainer.RemoveItem(TriggerRef.GetBaseObject(), 1) - (Shelfcontainer as PlayerBookShelfContainerScript).CurrentBookAmount = (Shelfcontainer as PlayerBookShelfContainerScript).CurrentBookAmount - 1 - (ShelfContainer as PlayerBookShelfContainerScript).RemoveBooks((TriggerRef.GetBaseObject()), 1) - else + ;Trace("BookShelfFix Trigger - Trying to pick up " + TriggerRef) + ;if Shelfcontainer.GetItemCount(TriggerRef.GetBaseObject()) >= 1 + ;USLEEP 3.0.1 - Bug #19515 + (Shelfcontainer as PlayerBookShelfContainerScript).PickUp(TriggerRef) + ;(Shelfcontainer as PlayerBookShelfContainerScript).CurrentBookAmount = (Shelfcontainer as PlayerBookShelfContainerScript).CurrentBookAmount - 1 + ;(ShelfContainer as PlayerBookShelfContainerScript).RemoveBooks((TriggerRef.GetBaseObject()), 1) + ;else ; There is no book based on this form in the container ;Trace("DARYL - " + self + " Container doesn't contain this book") - endif + ;endif endif endif endEvent @@ -59,5 +62,4 @@ STATE IgnoreBooks endSTATE - int Property testint Auto diff --git a/source/scripts/playerpotionrackclicktriggerscript.psc b/source/scripts/playerpotionrackclicktriggerscript.psc index 29a1aee0..a4d64af4 100644 --- a/source/scripts/playerpotionrackclicktriggerscript.psc +++ b/source/scripts/playerpotionrackclicktriggerscript.psc @@ -20,7 +20,7 @@ endEVENT EVENT OnActivate(ObjectReference TriggerRef) - Trace("DARYL - " + self + " I've been activated, opening container: " + ShelfContainer) + ;Trace("DARYL - " + self + " I've been activated, opening container: " + ShelfContainer) ShelfContainer.Activate(Game.GetPlayer(), FALSE) endEVENT diff --git a/source/scripts/playerpotionracktriggerscript.psc b/source/scripts/playerpotionracktriggerscript.psc index 870a15ef..12f764d5 100644 --- a/source/scripts/playerpotionracktriggerscript.psc +++ b/source/scripts/playerpotionracktriggerscript.psc @@ -19,16 +19,16 @@ endEVENT STATE WaitForBooks EVENT OnBeginState() - trace(self + " BOOKTRIGGER - Waiting For Books!") + ;trace(self + " BOOKTRIGGER - Waiting For Books!") endEVENT EVENT OnTriggerEnter(ObjectReference TriggerRef) - Trace("DARYL - " + self + " Reference " + TriggerRef + " has ENTERED") + ;Trace("DARYL - " + self + " Reference " + TriggerRef + " has ENTERED") endEvent EVENT OnTriggerLeave(ObjectReference TriggerRef) - Trace("DARYL - " + self + " Reference " + TriggerRef + " has EXITED") + ;Trace("DARYL - " + self + " Reference " + TriggerRef + " has EXITED") Shelfcontainer.RemoveItem(TriggerRef.GetBaseObject(), 1) (Shelfcontainer as PlayerBookShelfContainerScript).CurrentBookAmount = (Shelfcontainer as PlayerBookShelfContainerScript).CurrentBookAmount - 1 (ShelfContainer as PlayerBookShelfContainerScript).RemoveBooks((TriggerRef.GetBaseObject()), 1) @@ -40,7 +40,7 @@ endSTATE auto STATE IgnoreBooks Event OnBeginState() - trace(self + " BOOKTRIGGER - Ignoring Books!") + ;trace(self + " BOOKTRIGGER - Ignoring Books!") endEVENT endSTATE diff --git a/source/scripts/reanimateashpile.psc b/source/scripts/reanimateashpile.psc index f71f6ec8..2bf9f6f0 100644 --- a/source/scripts/reanimateashpile.psc +++ b/source/scripts/reanimateashpile.psc @@ -55,27 +55,33 @@ bool function IsSummoned() endIf endFunction -bool function TurnToAsh() - trace("victim just died") +function TurnToAsh() + ;trace("victim just died") victim.SetCriticalStage(Victim.CritStage_DisintegrateStart) ; victim.SetAlpha (0.99,False) - if MagicEffectShader != none - MagicEffectShader.play(Victim,ShaderDuration) - endif - if bSetAlphaToZeroEarly - victim.SetAlpha (0.0,True) - endif + ;USKP 2.0.3 - Victim needs to have 3D loaded. + if( Victim.Is3DLoaded() ) + if MagicEffectShader != none + MagicEffectShader.play(Victim,ShaderDuration) + endif + if bSetAlphaToZeroEarly + victim.SetAlpha (0.0,True) + endif + EndIf utility.wait(fDelay) Victim.AttachAshPile(AshPileObject) ; AshPileRef = AshPileObject ; AshPileRef.SetAngle(0.0,0.0,(Victim.GetAngleZ())) utility.wait(fDelayEnd) - if MagicEffectShader != none - MagicEffectShader.stop(Victim) - endif - if bSetAlphaZero == True - victim.SetAlpha (0.0,True) - endif + ;USKP 2.0.3 - Victim needs to have 3D loaded. + if( Victim.Is3DLoaded() ) + if MagicEffectShader != none + MagicEffectShader.stop(Victim) + endif + if bSetAlphaZero == True + victim.SetAlpha (0.0,True) + EndIf + EndIf victim.SetCriticalStage(Victim.CritStage_DisintegrateEnd) endFunction @@ -111,8 +117,11 @@ EndEvent Event OnEffectFinish(Actor Target, Actor Caster) if TargetIsImmune == False && AshPileCreated == False - TurnToAsh() - AshPileCreated = True + ;USLEEP 3.0.1 - Prevent thralls from being purged before they died + if( !Target.IsCommandedActor() ) + TurnToAsh() + AshPileCreated = True + endif endif EndEvent diff --git a/source/scripts/silverswordscript.psc b/source/scripts/silverswordscript.psc index 03c8852f..7689aefb 100644 --- a/source/scripts/silverswordscript.psc +++ b/source/scripts/silverswordscript.psc @@ -1,11 +1,15 @@ Scriptname SilverSwordScript extends ObjectReference +;Script modified by USKP 2.0.2. Silver weapon perk does not need to constantly be added or removed in order to function. +;This also fixes a bug where dual-wielding and then unequipping one silver weapon would remove the perk even if another silver weapon was still equipped. Perk Property SilverPerk auto Event OnEquipped(Actor akActor) - akActor.AddPerk(SilverPerk) + if( !akActor.HasPerk(SilverPerk) ) + akActor.AddPerk(SilverPerk) + EndIf EndEvent Event OnUnEquipped(Actor akActor) - akActor.RemovePerk(SilverPerk) -EndEvent \ No newline at end of file + ;akActor.RemovePerk(SilverPerk) +EndEvent \ No newline at end of file diff --git a/source/scripts/spiderwebanimationsscript.psc b/source/scripts/spiderwebanimationsscript.psc index cce8d4ad..0b606e0d 100644 --- a/source/scripts/spiderwebanimationsscript.psc +++ b/source/scripts/spiderwebanimationsscript.psc @@ -33,8 +33,14 @@ EffectShader Property WebbedFXS auto Function playWebAnimations(int iRand) ;notification("Rand = " + iRand) Actor myActor = webActor as Actor + + ;USKP 2.0.1 - If he's dead, don't have him still trying to thrash in the web! + if( myActor.IsDead() ) + Return + EndIf + if(iRand == 1 && !stopCondition) - myActor.playIdle( idleWebThrashShort ); + myActor.playIdle( idleWebThrashShort ) else if(iRand == 2 && !stopCondition) myActor.playIdle( idleWebThrashShort2 ) diff --git a/source/scripts/sprigganswarmactorscript.psc b/source/scripts/sprigganswarmactorscript.psc index c426e795..8d926681 100644 --- a/source/scripts/sprigganswarmactorscript.psc +++ b/source/scripts/sprigganswarmactorscript.psc @@ -26,6 +26,13 @@ ObjectReference selfRef selfRef = caster + + ;Added by USKP to prevent this effect from appearing on the player. + If selfRef == Game.GetPlayer() + Dispel() + return + EndIf + selfRef.RegisterForSingleUpdate(0.25) int i = 10 ; recursion limiter for 3dLoaded check while selfRef.is3dLoaded() == FALSE diff --git a/source/scripts/trapbear.psc b/source/scripts/trapbear.psc index 2e04b679..10a9e022 100644 --- a/source/scripts/trapbear.psc +++ b/source/scripts/trapbear.psc @@ -9,17 +9,20 @@ perk property LightFoot auto bool property checkForLightFootPerk = true Auto {default == true} globalVariable property LightFootTriggerPercent auto +bool BeenReset = False ; USKP 2.0.1 - Used along with StartOpen to open them once on cell reset if necessary. Event onReset() goToState("Closed") self.reset() + + BeenReset = False endEvent - event onLoad() hitBase = (self as objectReference) as TrapHitBase ResolveLeveledDamage() - if StartOpen + if StartOpen && !BeenReset + BeenReset = True playAnimation("StartOpen") goToState("Open") endif diff --git a/source/scripts/trapdweflamepillar.psc b/source/scripts/trapdweflamepillar.psc index 0e6bbeea..666e84f4 100644 --- a/source/scripts/trapdweflamepillar.psc +++ b/source/scripts/trapdweflamepillar.psc @@ -25,10 +25,11 @@ bool property hasPlayedAttackAnimOnce = false auto hidden event onLoad() - float CV = (rotationSpeed * getAnimationVariableFloat("CV")) - float CCV = (rotationSpeed * getAnimationVariableFloat("CCV")) - SetAnimationVariableFloat("CV", CV) - SetAnimationVariableFloat("CCV", CCV) +;USSEP 4.2.2 Bug #28456 CV and CCV are not valid animation variables for this object. Attempting to read or set them will cause an error. +; float CV = (rotationSpeed * getAnimationVariableFloat("CV")) +; float CCV = (rotationSpeed * getAnimationVariableFloat("CCV")) +; SetAnimationVariableFloat("CV", CV) +; SetAnimationVariableFloat("CCV", CCV) ;hitBase = (self as objectReference) as TrapDweFlamePillarHit endEvent diff --git a/source/scripts/traphitbase.psc b/source/scripts/traphitbase.psc index 25a75d22..1817af6e 100644 --- a/source/scripts/traphitbase.psc +++ b/source/scripts/traphitbase.psc @@ -83,8 +83,13 @@ state CanHit actor myTarget myTarget = akTarget as Actor - if canDisease && isPlayer - if randomFloat(0.0, 100.0) <= diseaseChance + ;USSEP 4.2.5 Bug #29500 - Traps weren't accounting for players' disease resistance. + Float diseaseResistMult = (Game.GetForm(0x14) as Actor).GetActorValue("DiseaseResist") + + if canDisease && isPlayer && diseaseResistMult < 100.0 + Float chance = diseaseChance * (100.0 - diseaseResistMult) + Float result = utility.RandomFloat(1.0, 10000.0) + if result <= chance int diseasePick diseasePick = randomInt(1,6) if diseasePick == 1 diff --git a/source/scripts/trapsoulgemcontroller.psc b/source/scripts/trapsoulgemcontroller.psc index 1806c24c..91336a31 100644 --- a/source/scripts/trapsoulgemcontroller.psc +++ b/source/scripts/trapsoulgemcontroller.psc @@ -34,7 +34,8 @@ endState state inMagicTrap event onBeginState() - (self as objectReference).SetMotionType(4) + ;USLEEP 3.08 Bug #14888 + ;(self as objectReference).SetMotionType(4) ; ;debug.Trace(self + " has begun inMagicTrap") ;self.TranslateTo(self.getpositionx(), self.getpositiony(), self.getpositionz(), self.getAngleX(), self.getAngleY() + 180, self.getAngleZ(), idleRotateSpeed) endEvent diff --git a/source/scripts/traptriggerbase.psc b/source/scripts/traptriggerbase.psc index a62e23a6..8ec97952 100644 --- a/source/scripts/traptriggerbase.psc +++ b/source/scripts/traptriggerbase.psc @@ -133,6 +133,11 @@ Event onCellLoad() endif endEvent +;USSEP 4.2.2 Bug #28300 +Event OnCellDetach() + lastTriggerRef = None +endEvent + ;THIS SECTION IS USED FOR TRAP LINKERS event onActivate(objectReference akActivator) ; debug.Trace(self + " has been activated by + " + akActivator) @@ -262,7 +267,7 @@ State Active endEvent event OnMagicEffectApply(objectReference akCaster, MagicEffect akEffect) - Trace("MagicEffectHit") + ;Trace("MagicEffectHit") activate(self as objectReference) goToState( "Inactive" ) endEvent diff --git a/source/scripts/traptriggerhinge.psc b/source/scripts/traptriggerhinge.psc index 23ee264a..9893b21e 100644 --- a/source/scripts/traptriggerhinge.psc +++ b/source/scripts/traptriggerhinge.psc @@ -79,7 +79,7 @@ EndState state Triggered event onBeginState() - (trapLinkedRef).activate(objectSelf) + (trapLinkedRef).activate(self) ; USKP 2.0.1 - No need to have it use a variable with no purpose. "self" works just fine. setDestroyed(true) playAnimation("Trigger01") EndEvent diff --git a/source/scripts/tripwire.psc b/source/scripts/tripwire.psc index 03178d51..9a20cf62 100644 --- a/source/scripts/tripwire.psc +++ b/source/scripts/tripwire.psc @@ -1,81 +1,66 @@ scriptName Tripwire extends TrapTriggerBase -; -; -; -;================================================================ -; event onActivate(objectReference akActivator) - ; if (akActivator as actor) && akActivator != (self as objectReference) - ; goToState("Active") - ; endif -; endEvent State Active + Event OnBeginState() - SetMotionType(1) - TriggerSound.play( self as ObjectReference) ;play trigger sound - self.blockActivation(false) - activate(self as objectReference) - self.blockActivation(true) - PlayAnimation("Trigger") - goToState("DoNothing") - ;applyHavokImpulse 15 0 0 -1 ;push down at a force of 15 to break the havok constraint. - - endEvent - - event onActivate(objectReference akActivator) - endEvent - - event OnTriggerEnter( objectReference triggerRef ) - endEvent + SetMotionType (1) + TriggerSound.play (Self as ObjectReference) + Self.blockActivation (False) + Activate (Self as ObjectReference) + Self.blockActivation (True) + PlayAnimation ("Trigger") + GoToState ("DoNothing") + EndEvent - event OnTriggerLeave( objectReference triggerRef ) - endEvent - - Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) - endEvent -endState + Event OnHit (ObjectReference akAggressor, Form akSource, Projectile akProjectile, Bool abPowerAttack, Bool abSneakAttack, Bool abBashAttack, Bool abHitBlocked) + EndEvent -State DoNothing ;Dummy state, don't do anything if animating - event onBeginState() - setDestroyed(true) - endEvent +EndState + +State DoNothing + + Event OnBeginState() + SetDestroyed (True) + EndEvent + + Event OnLoad() + EndEvent - event OnTriggerEnter( objectReference triggerRef ) - endEvent - - event OnTriggerLeave( objectReference triggerRef ) - endEvent - - event onCellAttach() - endEvent EndState -Event OnCellAttach() +Event OnLoad() + SetMotionType(4) + EndEvent ;/ Event OnCellDetach() + SetMotionType(1) + EndEvent /; -function localActivateFunction() - goToState("Active") -endFunction +Function LocalActivateFunction() -Event onReset() - self.reset() - SetMotionType(4) - self.clearDestruction() - self.setDestroyed(False) - goToState("Inactive") + GoToState ("Active") + +EndFunction + +Event OnReset() + + Self.Reset() + ;SetMotionType (4) - USKP 2.0.1: Can't do this here, needs to rely on the OnLoad event above. + Self.ClearDestruction() + Self.SetDestroyed (False) + GoToState ("Inactive") CountUsed = 0 -endEvent + +EndEvent Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) -; ;debug.Trace(self + ": was hit by " + akAggressor + " with " + akSource + " or " + akProjectile) - goToState("Active") -endEvent + GoToState ("Active") +EndEvent diff --git a/source/scripts/weaponracktriggerscript.psc b/source/scripts/weaponracktriggerscript.psc index 456e2a30..4d662f0c 100644 --- a/source/scripts/weaponracktriggerscript.psc +++ b/source/scripts/weaponracktriggerscript.psc @@ -1,14 +1,20 @@ -Scriptname WeaponRackTriggerSCRIPT extends ObjectReference Hidden +Scriptname WeaponRackTriggerSCRIPT extends ObjectReference Hidden + +;Modifications by Sclerocephalus - debug version 3.4 (10/21/2013) +;modified by taleden - rev 4 (2013-11-01) +;Modifications by DayDreamer - version 5.0 (2014 Mar 15) import game import debug import utility +;------------------------------------------- + Keyword Property WRackActivator Auto ;The activator we must disable if there is already something in this trigger ObjectReference Property ActivatorRef Auto Hidden - +;/// ;Reference that is currently in the trigger ObjectReference Property RefCurrentlyInTrig Auto Hidden @@ -16,87 +22,238 @@ ObjectReference Property RefCurrentlyInTrig Auto Hidden Bool Property HasBeenTriggered Auto Hidden Int Property numInTrig Auto Hidden - +///; Bool Property AlreadyInit Auto Hidden Bool Property IgnoreArmor = FALSE Auto +;------------------------------------------- +;*** USKP Properties *** + +Keyword Property ArmorShield Auto + +;------------------------------------------- +;*** USKP Variables *** + +WeaponRackActivateScript ActivatorScript = None + +;/------------------------------------------ + Handle mis-configured triggers. + + Returns False for success. +/; +Bool Function CheckConfiguration(String CallingEvent) + + GoToState("ActivatorBusy") + + If WRackActivator == None + ; script was deleted, properties missing + ;~ Trace(Self + CallingEvent + "() CHECK: WRackActivator == None; 'ActivatorBusy' state.") + Return True + EndIf + + ActivatorRef = GetLinkedRef(WRackActivator) + If ActivatorRef == Self + ; hand fixed, don't disable + ;~ Trace(Self + CallingEvent + "() CHECK: WRackActivator == Self; 'ActivatorBusy' state.") + ActivatorRef = None + Return True + EndIf + + If ActivatorRef == None + Trace(Self + CallingEvent + "() ERROR: missing WRackActivator; 'ActivatorBusy' state.") + Return True + EndIf + + ActivatorScript = ActivatorRef As WeaponRackActivateScript + If ActivatorScript == None + Trace(Self + CallingEvent + "() ERROR: missing WeaponRackActivateScript; 'ActivatorBusy' state.") + ActivatorRef = None + Return True + EndIf + + If isDisabled() + GoToState("TriggerDisabled") + ActivatorRef.DisableNoWait() + ;~ Trace(Self + CallingEvent + "() CHECK: is disabled; set 'TriggerDisabled' state; " + ActivatorRef + " disabled too.") + ActivatorRef = NONE + ActivatorScript = NONE + Return True + EndIf + + Return False + +EndFunction + +;------------------------------------------- + +EVENT OnCellDetach(); replace OnReset() -EVENT OnReset() AlreadyInit = FALSE - ;Trace("DARYL - " + self + " running OnReset() and AlreadyInit = " + AlreadyInit) + endEVENT -EVENT OnLoad() - ;Trace("DARYL - " + self + " running OnLoad() and AlreadyInit = " + AlreadyInit) - if (AlreadyInit == FALSE) && (self.IsEnabled()) - ActivatorRef = GetLinkedRef(WRackActivator) - if (ActivatorRef) - ActivatorRef.Enable() - endif - ActivatorRef = NONE - AlreadyInit = TRUE - ;Trace("DARYL - " + self + " The Activator Ref is " + ActivatorRef) - else - ;Do nothing - endif - ;Trace("DARYL - " + self + " finishing OnLoad() and AlreadyInit = " + AlreadyInit) +;/------------------------------------------ + This event must be present to catch extant USKP 2.0.0 racks, + or otherwise without known state. + + This is present solely for backward compatibility. +/; +EVENT OnCellAttach(); replace OnCellLoad() + + TriggerSetup("Trigger:OnCellAttach") + endEVENT -;EVENT OnCellLoad() -; ;Trace("DARYL - " + self + " running OnCellLoad() and AlreadyInit = " + AlreadyInit) -; if (AlreadyInit == FALSE) && (self.IsEnabled()) -; ActivatorRef = GetLinkedRef(WRackActivator) -; AlreadyInit = TRUE -; ;Trace("DARYL - " + self + " The Activator Ref is " + ActivatorRef) -; else -; ;Do nothing -; endif -; ;Trace("DARYL - " + self + " finishing OnCellLoad() and AlreadyInit = " + AlreadyInit) -;endEVENT +;/------------------------------------------ + This state must be present to catch extant USKP 1.3.3 racks. + + (1) The activator is known to be missing, but can be resuscitated. + + (2) The activator status is currently being tested. Suppress redundant + OnLoad() and trigger events. + + (3) The activator is either enabled (and the rack empty, so the trigger + won't be needed anyway) or running a placement procedure. OnTriggerLeave() + events during placement are from adjacent racks ("cross-activation") or + from a temporary loss of the item's 3D during a MoveToNode command. + Skip them to prevent the items from being mis-interpreted as having been + grabbed from the rack. +/; +STATE ActivatorBusy + + EVENT OnCellAttach() + endEVENT + + EVENT OnLoad() + endEVENT + + EVENT OnTriggerLeave(ObjectReference ItemRef) + ;~ Trace(Self + "ActivatorBusy:OnTriggerLeave() " + ItemRef + "; Base = " + ItemRef.GetBaseObject()) + endEVENT + +endSTATE + +;/------------------------------------------ + This state must be present to catch extant USKP 2.0.1 racks. + + The activator has been detected by OnCellAttach(), this trigger is + currently disabled. Allows OnLoad() to setup. +/; +STATE TriggerDisabled + + EVENT OnCellAttach() + endEVENT + +;/ Catch newly enabled racks with player present. + + Starting items must be done upon constructing the rack at a + workbench in a player home. OnCellAttach() does not fire. +/; + EVENT OnLoad() + + If Self == None + Trace(Self + "OnLoad() ERROR!") + return + EndIf + Cell parentCell = GetParentCell() + If parentCell == None + Trace(Self + "OnLoad() ERROR: GetParentCell == None") + return + EndIf + + If !parentCell.IsAttached() + Trace(Self + "OnLoad() ERROR: parentCell=" + parentCell + " !IsAttached()") + return + EndIf + + TriggerSetup("TriggerDisabled:OnLoad") + + endEVENT + + EVENT OnTriggerLeave(ObjectReference ItemRef) + ;~ Trace(Self + "TriggerDisabled:OnTriggerLeave() " + ItemRef + "; Base = " + ItemRef.GetBaseObject()) + endEVENT + +endSTATE +;/------------------------------------------ + This is a vanilla state and must be present to catch extant vanilla racks. + However, the contents have been significantly revised. +/; auto STATE WaitingForReference - EVENT onTriggerEnter(objectReference triggerRef) - ;Trace("DARYL - " + self + " Just OnTriggerEntered by " + triggerref) - - if (IgnoreArmor == TRUE) && (triggerRef.GetBaseObject() as Armor) - ;Trace("DARYL - " + self + " I'm ignoring armor, and this is armor, so I'm doing nothing.") - ;Do Nothing - else - ;Trace("DARYL - " + self + " I'm updating as normal") - ;numInTrig = (numInTrig + 1) - HasBeenTriggered = TRUE - ActivatorRef = GetLinkedRef(WRackActivator) - if ActivatorRef - ActivatorRef.Disable() - endif - ActivatorRef = NONE - endif - - + +;/ Catch newly enabled racks without player present. + + Previously placed items must be renewed on every cell attach, + re-adjusting to current game mesh defined nodes. +/; + EVENT OnCellAttach() + + TriggerSetup("WFR:OnCellAttach") + endEVENT + + EVENT OnLoad() + endEVENT + +;/ It would be nice if we could filter out spurious events fired by bouncing + clutter etc, but we can't call any native methods on triggerRef such as + GetBaseObject() -- if the retrieved item was scripted, then by the time + this runs it may already be in the player's inventory and our pointer + will be broken. So we'll have to make do with just comparing the pointer + itself to our other stored pointers. --taleden +/; EVENT OnTriggerLeave(objectReference triggerRef) - ;Trace("DARYL - " + self + " A References has EXITED, refs in this trigger now = " + numInTrig) - - if (IgnoreArmor == TRUE) && (triggerRef.GetBaseObject() as Armor) - ;Trace("DARYL - " + self + " I'm ignoring armor, and this is armor, so I'm doing nothing.") - ;Do Nothing - else - ;Trace("DARYL - " + self + " I'm updating as normal") - ;numInTrig = (numInTrig - 1) - endif - - if (GetTriggerObjectCount() == 0) - ActivatorRef = GetLinkedRef(WRackActivator) - - HasBeenTriggered = FALSE - ActivatorRef.Enable() + If CheckConfiguration("WFR:OnTriggerLeave") + return + EndIf + ; state ActivatorBusy + + If !ActivatorRef.IsDisabled() + ;~ Trace(Self + "OnTriggerLeave() CHECK: activator was enabled; 'ActivatorBusy' state.") ActivatorRef = NONE + ActivatorScript = NONE + return + EndIf + + If ActivatorScript.RackWasTriggered(triggerRef, GetTriggerObjectCount()) + GoToState("WaitingForReference") + ;~ Trace(Self + "OnTriggerLeave() retain 'WaitingForReference' state.") + EndIf + + ActivatorRef = NONE + ActivatorScript = NONE - endif endEVENT endSTATE +;/------------------------------------------ + TriggerSetup() CheckConfiguration() immediately changes state, + suppressing OnLoad() and trigger events. + + Called from OnLoad() and OnCellAttach() both here and there. +/; +Function TriggerSetup(String CallingEvent) + + Bool wasHandled = AlreadyInit + AlreadyInit = True + If wasHandled + ;~ Trace(Self + CallingEvent + "() TriggerSetup() was handled.") + Return + EndIf + + If CheckConfiguration(CallingEvent) + Return + EndIf + ; state ActivatorBusy + +;~ Trace(Self + CallingEvent + "() " + ActivatorRef + " update setup.") + ActivatorScript.ActivatorSetup(CallingEvent) + + ActivatorRef = NONE + ActivatorScript = NONE +EndFunction