add towers / effects

This commit is contained in:
JISAUAY committed 2025-07-25 13:32:06 -05:00
1 parent 3626379b23
commit 6000889ebf
3 files changed
+154 -2

No files matched your search

+35 -1
View File
@@ -7,12 +7,45 @@ function TrackEnemy:new(model, name, health, speed)
self.model = model
self.name = name
self.health = health
self.baseSpeed = speed
self.speed = speed
self.alive = true
self.currentWaypoint = 1
self.effects = {}
return self
end
function TrackEnemy:applyEffect(effectName, params)
self.effects[effectName] = {
duration = params.duration,
tick = params.tick,
value = params.value,
elapsed = 0
}
end
function TrackEnemy:updateEffects(dt)
for name, effect in pairs(self.effects) do
effect.elapsed = effect.elapsed + dt
if name == "burn" and effect.tick then
if effect.elapsed >= effect.tick then
self:damage(effect.value)
effect.elapsed = effect.elapsed - effect.tick
end
elseif name == "slow" then
self.speed = self.baseSpeed * effect.value
elseif name == "freeze" then
self.speed = 0
end
effect.duration = effect.duration - dt
if effect.duration <= 0 then
self.effects[name] = nil
self.speed = self.baseSpeed
end
end
end
function TrackEnemy:damage(amount)
self.health = self.health - amount
if self.health <= 0 then
@@ -28,7 +61,8 @@ function TrackEnemy:die()
end
end
function Trackenemy:moveToWaypoints(waypoints, dt)
function TrackEnemy:moveToWaypoints(waypoints, dt)
self:updateEffects(dt)
if not self.currentWaypoint then self.currentWaypoint = 1 end
local target = waypoints[self.currentWaypoint]
if target then