40 lines
1.1 KiB
Lua
40 lines
1.1 KiB
Lua
--- @class StatsBehavior : Behavior
|
|
--- @field hp integer
|
|
--- @field mana integer
|
|
--- @field initiative integer
|
|
--- @field isInTurnOrder boolean
|
|
--- @field amIAlive boolean
|
|
local behavior = {}
|
|
behavior.__index = behavior
|
|
behavior.id = "stats"
|
|
|
|
--- план прост, если что-то не так, то мы просто убиваем бехавиор (по крайней мере так должно было быть, но пиаш мне запретил :sob:)
|
|
function behavior:checkStats()
|
|
-- if self.hp <= 0 then behavior:die() end
|
|
if self.hp <= 0 then
|
|
self.amIAlive = false
|
|
end
|
|
end
|
|
|
|
--- @param damage integer
|
|
function behavior:dealDamage(damage)
|
|
self.hp = self.hp - damage
|
|
self:checkStats()
|
|
end
|
|
|
|
--- @param hp? integer
|
|
--- @param mana? integer
|
|
--- @param initiative? integer
|
|
--- @param isInTurnOrder? boolean
|
|
function behavior.new(hp, mana, initiative, isInTurnOrder)
|
|
return setmetatable({
|
|
hp = hp or 20,
|
|
mana = mana or 10,
|
|
initiative = initiative or 10,
|
|
isInTurnOrder = isInTurnOrder or true,
|
|
amIAlive = true
|
|
}, behavior)
|
|
end
|
|
|
|
return behavior
|