55 lines
1.3 KiB
Lua
55 lines
1.3 KiB
Lua
function init()
|
|
self.maxHealth = config.getParameter("health")
|
|
|
|
self.autoResetTime = config.getParameter("autoResetTime", 7)
|
|
self.autoResetTimer = 0
|
|
|
|
reset()
|
|
|
|
object.setInteractive(true)
|
|
end
|
|
|
|
function update(dt)
|
|
local currentHealth = object.health()
|
|
|
|
self.autoResetTimer = math.max(0, self.autoResetTimer - dt)
|
|
if self.autoResetTimer == 0 then
|
|
reset()
|
|
end
|
|
|
|
if currentHealth < self.maxHealth then
|
|
self.meterActive = true
|
|
self.autoResetTimer = self.autoResetTime
|
|
end
|
|
|
|
if self.meterActive then
|
|
self.meterTimer = self.meterTimer + dt
|
|
self.totalDamage = self.totalDamage + (self.maxHealth - currentHealth)
|
|
object.setHealth(self.maxHealth)
|
|
end
|
|
|
|
drawOutput()
|
|
end
|
|
|
|
function onInteraction(args)
|
|
if self.meterActive then
|
|
reset()
|
|
else
|
|
object.smash()
|
|
end
|
|
end
|
|
|
|
function reset()
|
|
self.meterActive = false
|
|
self.meterTimer = 0
|
|
self.totalDamage = 0
|
|
object.setHealth(self.maxHealth)
|
|
end
|
|
|
|
function drawOutput()
|
|
local pos = entity.position()
|
|
pos = {pos[1] - 1.5, pos[2] + 4}
|
|
local dps = self.meterTimer > 0 and (self.totalDamage / self.meterTimer) or 0
|
|
local outputString = string.format("%.1f damage over\n%.1f seconds\n%.1f DPS", self.totalDamage, self.meterTimer, dps)
|
|
world.debugText(outputString, pos, "white")
|
|
end
|