Thank you
Joe
Scriptname LightningSpoke extends ObjectReference import UtilityFloat Property xOffset Auto {Relative X position for the target}Float Property yOffset Auto {Y Offset for Target}Float Property zOffset Auto {Z offset for Target}Float Property RandomOffsetX = 0.0 Auto{Randomness applied to X Offset}Float Property RandomOffsetY = 0.0 Auto{Randomness applied to X Offset}Float Property RandomOffsetZ = 0.0 Auto{Randomness applied to X Offset}Float Property PulseRate = 1.0 Auto {How often do we shoot the other node?}Float Property RandomRate = 0.0 Auto{Add random delay to pulse rate, capped at this value}Activator Property TargetType Auto {What type of object are we zapping if we're spawning a node?}ObjectReference Property CurrentTarget Auto {The actual target we're shooting at}Bool Property SpawnNode Auto {Do we spawn a target? If not, zap the nearest Actor.}Spell Property Zap Auto{What spell shall we use for the effect?}FormList Property TargetTypeList Auto{List of potential targets}Event OnInit() if SpawnNode && !CurrentTarget CurrentTarget = PlaceAtme(TargetType,1) CurrentTarget.MoveTo(Self,XOffSet,YOffSet,ZOffSet) endif RegisterForSingleUpdate(PulseRate)EndEventEvent OnUpdate() if !SpawnNode CurrentTarget = Game.FindClosestReferenceOfAnyTypeInListfromRef(TargetTypeList,Self,1000.0) ; find an actor to shoot at else CurrentTarget.MoveTo(Self, XOffSet+(RandomFloat(0.0,RandomOffsetX)-RandomOffsetX/2 ), \ YOffSet+(RandomFloat(0.0,RandomOffsetY)-RandomOffsetY/2), \ ZOffSet+(RandomFloat(0.0,RandomOffsetZ)-RandomOffsetZ/2)) endif Zap.Cast(Self,CurrentTarget) RegisterForSingleUpdate(PulseRate+RandomFloat(0.0,RandomRate))EndEvent