This is damaging both the player that casts it and the NPC. I am clueless, I checked to see if it hits the player.Character or the Humanoid of the NPC which I renamed "NPC".
Event.OnServerEvent:Connect(function(player) local character = player.Character local Humanoid = character.Humanoid local BV = Instance.new("BodyVelocity",character.HumanoidRootPart) BV.MaxForce = Vector3.new(math.huge,math.huge,math.huge) BV.Velocity = character.HumanoidRootPart.CFrame.lookVector*0.05 game.Debris:AddItem(BV,.1) wait(.1) local Ice = Instance.new("Part",character) Ice.Anchored = true Ice.CanCollide = false Ice.Shape = "Cylinder" Ice.Material = "Ice" Ice.BrickColor = BrickColor.new("Cyan") Ice.Transparency = .7 Ice.Size = Vector3.new(.1,.1,.1) Ice.CFrame = character.HumanoidRootPart.CFrame+Vector3.new(0,-2,0) Ice.Orientation = Vector3.new(0,0,90) Ice.Touched:Connect(function(hit) if hit.Parent == character then return end if hit.Parent:FindFirstChild("NPC") and debounce == false then debounce = true local dmg = script.damage.Value local ehumanoid = hit.Parent.NPC ehumanoid:TakeDamage(dmg) end end) local Tw1 = TweenInfo.new(.5,Enum.EasingStyle.Linear,Enum.EasingDirection.Out,0,false,0) local properties = {Size = Vector3.new(1,80,80);Transparency = .6} local Tween = TweenService:Create(Ice,Tw1,properties); Tween:Play() wait(.3) local Tw2 = TweenInfo.new(.5,Enum.EasingStyle.Linear,Enum.EasingDirection.In,0,false,1) local properties2 = {Size = Vector3.new(1,10,10);Transparency = .8} local Tween2 = TweenService:Create(Ice,Tw2,properties2) Tween2:Play() wait(2) debounce = false end)