add towers / effects
This commit is contained in:
1 parent
3626379b23
commit
6000889ebf
3 files changed
+154
-2
No files matched your search
+35
-1
@@ -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
|
||||
|
||||
Reference in new issue
Block a user