Scriptname FXfakeCritterScript extends ObjectReference {Make fake critters shootable} container Property myContainer Auto Flora Property myFlora Auto ingredient Property myIngredient Auto potion Property myFood Auto string Property myLocationOffset Auto string Property myFakeForceExplosionOffset Auto Explosion Property myExplosion Auto Explosion Property myFakeForceExplosion Auto objectReference myContainerRef objectReference myIngredientRef objectReference myExplosionRef objectReference myFakeForceExplosionRef objectReference myFloraRef int Property numberOfIngredientsOnCatch Auto int doOnce import utility int property hoursBeforeReset = 72 auto bool readyToReset ;USSEP 4.2.0 Bug #26841 Event OnActivate(ObjectReference akActionRef) self.disable() if myFood akActionRef.additem(myFood, numberOfIngredientsOnCatch) endif if myIngredient akActionRef.additem(myIngredient, numberOfIngredientsOnCatch) endif RegisterForSingleUpdateGameTime(hoursBeforeReset) ;! utility.waitGameTime(hoursBeforeReset) ;! readyToReset = TRUE EndEvent Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) ;~ debug.trace(self + " hit!!!!!!1") if akAggressor == game.getplayer() if doOnce == 0 doOnce = 1 if myContainer if myContainerRef ; [USKP 2.0.1] fix persistent reference to previous object myContainerRef.delete() endif myContainerRef = self.placeAtMe(myContainer, 1, false, true) utility.wait(0.01) myContainerRef.enable(false) myContainerRef.MoveToNode(self, myLocationOffset) endIf if myFlora if myFloraRef ; [USKP 2.0.1] fix persistent reference to previous object myFloraRef.delete() endif myFloraRef = self.placeAtMe(myFlora, 1, false, true) utility.wait(0.01) myFloraRef.enable(false) myFloraRef.MoveToNode(self, myLocationOffset) endIf ;if myIngredient ; myIngredientRef = self.placeAtMe(myIngredient) ; myIngredientRef.MoveToNode(self, myLocationOffset) ;endIf ; If myExplosion ; myExplosionRef = self.placeAtMe(myExplosion) ; myExplosionRef.MoveToNode(self, myLocationOffset) ; endIf ; If myFakeForceExplosion ; myFakeForceExplosionRef = self.placeAtMe(myFakeForceExplosion) ; myFakeForceExplosionRef.MoveToNode(self, myFakeForceExplosionOffset) ; endIf utility.wait(0.1) self.disable() RegisterForSingleUpdateGameTime(hoursBeforeReset) ;! utility.waitGameTime(hoursBeforeReset) ;! readyToReset = TRUE endIf endIf ENDEVENT EVENT onCellAttach() if readyToReset == TRUE ;~ debug.trace(self + "onCellAttach() readyToReset") UnregisterForUpdateGameTime() doOnce = 0 ; [USKP 1.2.7] new instance not empty enable() if myContainerRef myContainerRef.disable() myContainerRef.delete() ; [USKP 1.3.0] This was a PlaceAtMe object. myContainerRef = None; [USKP 2.0.1] fix persistent reference to deleted object endif if myFloraRef myFloraRef.disable() myFloraRef.delete() ; [USKP 1.3.0] This was a PlaceAtMe object. myFloraRef = None; [USKP 2.0.1] fix persistent reference to deleted object endif if myIngredientRef myIngredientRef.disable() myIngredientRef.delete() ; [USKP 1.3.0] This was a PlaceAtMe object. myIngredientRef = None; [USKP 2.0.1] fix persistent reference to deleted object endif readyToReset = FALSE elseif !isDisabled() if myContainerRef && myContainerRef.isDisabled() ; [USKP 2.0.1] fix persistent reference to deleted/disabled object myContainerRef.delete() myContainerRef = None endif if myFloraRef && myFloraRef.isDisabled() ; [USKP 2.0.1] fix persistent reference to deleted/disabled object myFloraRef.delete() myFloraRef = None endif if myIngredientRef && myIngredientRef.isDisabled() ; [USKP 2.0.1] fix persistent reference to deleted/disabled object myIngredientRef.delete() myIngredientRef = None endif endif ENDEVENT ;/*** [USKP 2.0.1] ;* reduce save bloat ;* onCellAttach pending readyToReset on old saves ;* onCellAttach may not occur, as player may never re-visit ;* credit BlueDanieru /; EVENT OnUpdateGameTime() ;~ debug.trace(self + "OnUpdateGameTime()") readyToReset = TRUE onCellAttach() endEVENT