function Create(self) self.delayTimer = Timer(); self.startDelay = 500; -- Time before the missile thrust starts self.searchDelay = 200; -- Time in between target scans self.searchRange = 500; -- radius of the missile's search area self.started = false; end function Update(self) if self.started then if (self.target == nil or MovableMan:IsActor(self.target) == false) and self.delayTimer:IsPastSimMS(self.searchDelay) then self.delayTimer:Reset(); local dist = Vector(self.searchRange+1,0); for actor in MovableMan.Actors do if actor.Team ~= self.Team then local curdist = SceneMan:ShortestDistance(self.Pos,actor.Pos,SceneMan.SceneWrapsX); if curdist.Magnitude < dist.Magnitude and SceneMan:CastStrengthRay(self.Pos,curdist:SetMagnitude(curdist.Magnitude-actor.Radius),0,Vector(0,0),5,0,SceneMan.SceneWrapsX) == false then self.target = actor; dist = curdist; end end end end else if self.delayTimer:IsPastSimMS(self.startDelay) then self.delayTimer:Reset(); self:EnableEmission(true); self.started = true; end end if self.target ~= nil and MovableMan:IsActor(self.target) then local dist = SceneMan:ShortestDistance(self.Pos,self.target.Pos,SceneMan.SceneWrapsX); self.RotAngle = dist.AbsRadAngle; end end