From a3560e8e65cfd9eeae3feefcc3249ac15bdbb6e1 Mon Sep 17 00:00:00 2001 From: Eddoursul Date: Tue, 23 Jan 2024 03:41:33 +0100 Subject: [PATCH] Another update for unloaded smokers --- .../_00e_smoking_crossleggedmarkerscript.pex | Bin 3252 -> 3346 bytes scripts/barreddoor.pex | Bin 1960 -> 1984 bytes .../_00e_smoking_crossleggedmarkerscript.psc | 113 ++++++++++-------- source/scripts/barreddoor.psc | 4 +- 4 files changed, 66 insertions(+), 51 deletions(-) diff --git a/scripts/_00e_smoking_crossleggedmarkerscript.pex b/scripts/_00e_smoking_crossleggedmarkerscript.pex index f4add3bfeb78a90480db67a39383da8aed36cec0..d7666affc8ce045f1e468f1760eac9b8ca65fef4 100644 GIT binary patch literal 3346 zcmaJ>*;3p_6g@o)3_IS~;yB}k05;eLyfU$4V-~Z6852L`ff7>BAS0xSqyamrROKP5 zJmdrN8Tkc&fb$FakUWH(Zb`EM#oUtS>UQ7L=bpaZ|GxeBPdWtw{^VbyofzAloLtx~ z9(o71Ti%`Xy&zbV<+8Na4gWy;Mboz{;oVALqJ6=#ys95mojkf_;@>^C-8^=tXYVrn^uoNmGsZAv!nRIq5jFVQ859=-G6) z4D-M!%ej5SElYGKvlngG4))Pq486*%Yabe+?YRN2?XG#|K`pRTvAA4-{@oqdId7mf zt{$D9`%;!|HzJkWbfZ+or|3voX<|1oHM@4tU2v@^qh;T=Ea{@d^jynUWDEzF3^TNk zC^tuG{zUDPa%RxKU0Q=JjP0F9YNmSAg_Z;I#iR(a|iB!8WZ(Q`1`1>wE3C0$CW?g9V9_4&{J; zyrUh!(dNR%4>Vs}h$GrD-fQ~_KhqRmn_A^p{6_m-2ijHi54s)b1gZ5Ac0iAG0mHbC z8>cLfJZ{pyq>a!AmX`809#loefb6dou!5ON~*-TYMsf6jS;H z#+Z_>r-&3)&(*U8B^)HoINuX|l!$8me(EqTa8)l(m~rLw(YdXhOt-)t!Ve1E6PS!i zrWj0NO6R06m@!T4i5OcDa-tEEbngoc#gKxK8c#6(Ko_L-5LwZqL2hSNks2XOHV*|J zC8?PgdEf#X5m5#FxDgoCEh;-&n8FU@iQXXn667|@jjIW-I!Q^EA&~)9O8PXBXP-X( zeKmb@a`GRs2eN`q(~zCQ429PS?E*6bHwZMNfynLD-o>2S8v#f_XwqmWK+{$Vx3D#om+Z)m(?dI#EO9S)2xI3N|dpZWT@Mvne;D+ntm`! zj#OMxaQ%W<$!S$p^OKWSlMpdi)x0)hHl0wV!sEu1CCFl(fit(pdJ3;E7~4M0Rvm1; zQ|%Zj)8 GD*gw!!$_+D literal 3252 zcma)6+fo}x5Iw642*kw(gN)-Oasv34*nqJOvK@@M*f@Z&1#$9_sFvN4SZmo;?XJM~ zL&~3#xBNlA!5`rKLaOo`c?dZ(yQ>RUQK3t0PfvGG_vth9&#MoAB@@uVKk>)kzvEhY zW@fEiI&^E6Q!TG}uJ3P(YE_t9x>plk$?&XtaI5Yc=wCBUx8eB>JC7j|>$i?ACy!lB zGLI)cE>{y3-V7ZQu zvGS&C)S8CyKp(mCo@000$QrI=S~6C*(Q{y#rf_gxHv;QO9O_le5UK;*E)+T--LdK- zf>(aT+M5I27Gb;PBi+Nmk>xjN3d5&Qg?~Dc9Tk=K>%;*=%?8*t@kwqt0WOyJo93u5 z*{d*-dg8h^vilo;hzdb3UF38lEG^Bl1SWV~d=b znnC~mi-u*?my|rN;48}4lu61IWtwue zO>U}$J@ULcrS<}8+@svb0!40Qz@i@EJGJQJLydJjqior zP5z>m=*R>&_!*P2VC*-oSS_{mLD{}-+1Nhw-IC4{nA@0%awQo%+vdldbKIx(PMa0| z-Kt4oo{&h8(+rzv>uo;njd|MP;<5t`Svf;nUH7!k(Quc<)=2G(XrXpL&P<9l0Rl%S z%UGc6BAHa+_W^$o`IA>+iF16+@8qd+IK71!L$a0n0_V6OkC1a*RxmFri0N9;p!8(F z(hFfkA&!tpc240vpk_M}28S#u$aFc4xuTOb0x-rUogTy{=6oRi`k3>Hsv_iUS^~Dx zZqQi8BN|BVRSjzqFB3E-uztqg)6>;H&PUbuvyg{TAqf`pP!^IoBh@qREy;Uy5;^hn zSQfgW;e1q3QdPOcjgal#IX~DwQu36@1R(4`iwHdLgj_) b;F-Lp;bRj)m}#LEKeY)4oqGF9ZI}B$%tu16 diff --git a/scripts/barreddoor.pex b/scripts/barreddoor.pex index 0e79a32ec8dd05c6badd967f56e8d1fd79be3917..53700b3814c7cc9d9594fe0f81a440b1fe97ff2c 100644 GIT binary patch delta 975 zcmY*XO-~b16g_u7I(DEP$~P!di-HAOm`X(lP(!SkC?uvqm!{GQX@D8h7LBVWZry0! z&V_4t{s9-nHU0$s2ga2fSKjwt0evrhx#!$-Kc}C(V{hZnv*RD80Ro@!^Xf08U(}k- zuzo*|o5jP{4%|w;9v?MZNBdc%!&AHXsu5*z53W|%-><)!^@3ns#cozNp1-U$;T(jm zR&6&#CJ45p{di|@GgLld)69ak9>@Dg9K3$qi1yGM1Ui+9OtM|wX*LeqaO&I%=M`V* zq1ZN7#9Jx}%XlIx^gz5b=EQHKl1o(E%|^6~WDsn{QTUXLyKz*B>eY6w9l{9$@yI+8 zUyXdSJ89vA$XW%;i7hKXmxsLbd>8(^K71HR5FF?YnG@opHQMQs+X7NZYr{jIG;AP) z3!3WhQiK5vYRbkCdN3@30~aFWM@|OBg=Ed4gxtFdMRpF(}_G^94e` zP24IQ1$Gyt!yY5tBHShvRZr|*WSiwa7iXaLKI^wsfTtBx+;yN7B^gJoJY$x+Or}p| zDG`=9+?T9e!3x18l*P|PNqkQv9mc&~++kfx>a6oBt7^;T(<*8l(p|6dUR73W?d0U! z`J*&0m%5|&s$!u>Qntz2c|3pUv@7;4%dHjVdf2mk*6%oULH<)t<1TmBJv7cA?=Ovj Bf8YQB delta 979 zcmY*V+int36kU4;7#X>>KyPZL_6DthOfTZpdLfNOZJQ{mJ{k&ykkZlsn)pQGn~%+j z|Ijx-!9Mv^f5F6W=$j9X`vu?_N(1) zqrTPYbaThO8Up+8TkU!e;ny$Ul**OT-t+CPLIF=;d&HCSr>7&XyLZ&?)DCtUJC*Xg z57jQL!$z-HZ8i{cUCmUmuhi+Z5oDxN>$Z;juX4r~voN$LQOGufr8(~76lL%pkBhF;R4TCw%%T|48im(8aH5WYqY0PnZh9Q$R zmy~8kYD&okLYmR#e^B_Z91-raADed@MvlKc?xDbl!|@7Mv4+)wl3vGs6d6oK30cCZ zpT;A3{0pslNIa%gRtRg{?nqRw;2|MFSQoznPE46IG-!L^;A+Gsfi>2L6SUVyyiKL$ t+dM!2arIMLHfudr+f-f94^gqny8I|7IrPG{qS}=%6g`tR%qb`_`UB?5c6|T< diff --git a/source/scripts/_00e_smoking_crossleggedmarkerscript.psc b/source/scripts/_00e_smoking_crossleggedmarkerscript.psc index 66bb0bb8..3ccb4443 100644 --- a/source/scripts/_00e_smoking_crossleggedmarkerscript.psc +++ b/source/scripts/_00e_smoking_crossleggedmarkerscript.psc @@ -12,70 +12,83 @@ Event OnEffectStart(Actor akTarget, Actor akCaster) ; Debug.Trace(self + ": OnEffectStart, " + akTarget) Target = akTarget - AnimationStage = 0 - RegisterForSingleUpdate(1.5) - RegisterForSleep() + GotoState("Smoking") EndEvent -Event OnUpdate() - _LockAnimationUpdates() +state Smoking - If AnimationStage == 0 && Target.GetSitState() != 3 - ; Debug.Trace(self + ": OnUpdate, " + Target + ", stage " + AnimationStage + ", waiting...") - RegisterForSingleUpdate(1.0) - ElseIf bIsFinished == False - AnimationStage += 1 - - ; Debug.Trace(self + ": OnUpdate, " + Target + ", stage " + AnimationStage) - - If AnimationStage == 1 - Target.SetHeadtracking(False) - Target.SetDontMove(True) - Debug.SendAnimationEvent(Target, "pipesmokingcrossleggedstartblaze") - Debug.SendAnimationEvent(Target, "pipesmokingcrossleggedblazed") - RegisterForSingleUpdate(2.5) - ElseIf AnimationStage == 2 - Debug.SendAnimationEvent(Target, "pipesmokingcrosslegged") - _00E_Smoking_PipeSmokingSmokeExhaleEffect.Play(Target, -1 as Float, none) + event OnBeginState() + ; Debug.Trace(self + ": Registering for updates, " + Target) + AnimationStage = 0 + RegisterForSingleUpdate(1.5) + RegisterForSleep() + endevent + + Event OnUpdate() + _LockAnimationUpdates() + + If AnimationStage == 0 && Target.GetSitState() != 3 + ; Debug.Trace(self + ": OnUpdate, " + Target + ", stage " + AnimationStage + ", waiting...") + RegisterForSingleUpdate(1.0) + ElseIf bIsFinished == False + AnimationStage += 1 + + ; Debug.Trace(self + ": OnUpdate, " + Target + ", stage " + AnimationStage) + + If AnimationStage == 1 + Target.SetHeadtracking(False) + Target.SetDontMove(True) + Debug.SendAnimationEvent(Target, "pipesmokingcrossleggedstartblaze") + Debug.SendAnimationEvent(Target, "pipesmokingcrossleggedblazed") + RegisterForSingleUpdate(2.5) + ElseIf AnimationStage == 2 + Debug.SendAnimationEvent(Target, "pipesmokingcrosslegged") + _00E_Smoking_PipeSmokingSmokeExhaleEffect.Play(Target, -1 as Float, none) + EndIf EndIf - EndIf - _UnlockAnimationUpdates() -EndEvent + _UnlockAnimationUpdates() + EndEvent -Event OnPackageChange(Package akOldPackage) - ; Debug.Trace(self + ": OnPackageChange, " + Target + ", old package " + akOldPackage) + Event OnSleepStart(float afSleepStartTime, float afDesiredSleepEndTime) + ; Debug.Trace(self + ": OnSleepStart, " + Target) - ; Failsafe auto-stop smoking on package change - Target.RemoveSpell(_00E_Smoking_CrossLeggedMarkerSP) -EndEvent + ; Force reset of the animations to make the NPC re-enter the furniture (if it wishes). + ; Fixes NPCs creeping away from the furniture while the player is sleeping in the same location. + _LockAnimationUpdates() + + If bIsFinished == False + UnregisterForUpdate() + StopAnimations(True) + Target.RemoveSpell(_00E_Smoking_CrossLeggedMarkerSP) + EndIf + + _UnlockAnimationUpdates() + EndEvent + + Event OnCellDetach() + GotoState("") + endEvent + + event OnEndState() + ; Debug.Trace(self + ": Unregistering for updates, " + Target) + UnregisterForUpdate() + UnregisterForSleep() + endevent + +endstate Event OnCellAttach() If ! bIsFinished - RegisterForSingleUpdate(1.0) - RegisterForSleep() + GotoState("Smoking") endif endEvent -Event OnCellDetach() - UnregisterForUpdate() - UnregisterForSleep() -endEvent - -Event OnSleepStart(float afSleepStartTime, float afDesiredSleepEndTime) - ; Debug.Trace(self + ": OnSleepStart, " + Target) - - ; Force reset of the animations to make the NPC re-enter the furniture (if it wishes). - ; Fixes NPCs creeping away from the furniture while the player is sleeping in the same location. - _LockAnimationUpdates() - - If bIsFinished == False - UnregisterForUpdate() - StopAnimations(True) - Target.RemoveSpell(_00E_Smoking_CrossLeggedMarkerSP) - EndIf +Event OnPackageChange(Package akOldPackage) + ; Debug.Trace(self + ": OnPackageChange, " + Target + ", old package " + akOldPackage) - _UnlockAnimationUpdates() + ; Failsafe auto-stop smoking on package change + Target.RemoveSpell(_00E_Smoking_CrossLeggedMarkerSP) EndEvent Event OnEffectFinish(Actor akTarget, Actor akCaster) diff --git a/source/scripts/barreddoor.psc b/source/scripts/barreddoor.psc index 9b312d7c..9c3f0a75 100644 --- a/source/scripts/barreddoor.psc +++ b/source/scripts/barreddoor.psc @@ -37,7 +37,9 @@ EVENT onActivate(objectReference actronaut) UnlockMeMSG.show() endif ; either way, play a nice ker-chunk sound to feedback why door isn't opening - barredSFX.play(self) + if barredSFX + barredSFX.play(self) + endif ; add a tiny rumble bump for good measure game.shakeController(0.1, 0.1, 0.1) else