diff --git a/TrackEnemy.lua b/TrackEnemy.lua index 7db7b44..ae2501b 100644 --- a/TrackEnemy.lua +++ b/TrackEnemy.lua @@ -22,6 +22,7 @@ function TrackEnemy:applyEffect(effectName, params) value = params.value, elapsed = 0 } + self:showEffect(effectName) end function TrackEnemy:updateEffects(dt) @@ -32,7 +33,8 @@ function TrackEnemy:updateEffects(dt) self:damage(effect.value) effect.elapsed = effect.elapsed - effect.tick end - elseif name == "slow" then + end + if name == "slow" then self.speed = self.baseSpeed * effect.value elseif name == "freeze" then self.speed = 0 @@ -42,6 +44,7 @@ function TrackEnemy:updateEffects(dt) if effect.duration <= 0 then self.effects[name] = nil self.speed = self.baseSpeed + self:hideEffect(name) end end end @@ -83,3 +86,48 @@ function TrackEnemy:moveToWaypoints(waypoints, dt) end end +-- Effects Visuals +function TrackEnemy:showEffect(effectName) + if not self.model.PrimaryPart then return end + if effectName == "burn" then + if not self.model.PrimaryPart:FindFirstChild("BurnEffect") then + local fire = Instance.new("ParticleEmitter") + fire.Name = "BurnEffect" + fire.Texture = "rbxassetid://243098098" + fire.Color = ColorSequence.new(Color3.new(1, 0.5, 0)) + fire.Parent = self.model.PrimaryPart + end + elseif effectName == "slow" then + if not self.model.PrimaryPart:FindFirstChild("SlowEffect") then + local fire = Instance.new("ParticleEmitter") + fire.Name = "SlowEffect" + fire.Texture = "rbxassetid://243098098" + fire.Color = ColorSequence.new(Color3.new(0, 0.9, 1)) + fire.Parent = self.model.PrimaryPart + end + elseif effectName == "freeze" then + if not self.model.PrimaryPart:FindFirstChild("FreezeEffect") then + local gui = Instance.new("BillboardGui") + gui.Name = "FreezeEffect" + gui.Size = UDim2.new(0, 50, 0, 50) + gui.AlwaysOnTop = true + gui.Parent = self.model.PrimaryPart + local label = Instance.new("TextLabel") + label.Size = UDim2.new(1,0,1,0) + label.BackgroundTransparency = 1 + label.Text = "FROZEN" + label.TextColor3 = Color3.new(0,1,1) + label.Parent = gui + end + end +end + +function TrackEnemy:hideEffect(effectName) + if not self.model.PrimaryPart then return end + local effect = self.model.PrimaryPart:FindFirstChild(effectName == "burn" and "BurnEffect" + or effectName == "slow" and "SlowEffect" + or effectName == "freeze" and "FreezeEffect") + if effect then + effect:Destroy() + end +end