feat: use the new statuses data

This commit is contained in:
Kazhnuz 2021-08-13 20:14:34 +02:00
parent a53e367e01
commit 06b0fb76ba

View file

@ -72,17 +72,71 @@ end
-- STATUT HANDLING
function AbstractMobParent:addStatut(name, duration, source)
local duration = duration or -1
self.statuts[name] = {}
self.statuts[name].duration = duration
local statut = self:getStatutData(name)
local duration = duration or 1
if (statut.remove ~= nil) then
duration = - self:removeStatutTurns(statut.remove, duration)
end
if (duration > 0) then
if (statut.replaceAll == true) then
self:resetStatut()
else
self:removeStatut(name)
end
self.statuts[name] = {}
self.statuts[name].duration = duration
end
end
function AbstractMobParent:getStatutKey(statutName)
local statut = self:getStatutData(statutName)
local key = ""
if (self.statuts[statutName] ~= nil) then
key = statutName
end
if (statut.alternative ~= nil) then
for _, alternative in ipairs(statut.alternative) do
if (self.statuts[alternative] ~= nil) then
key = alternative
end
end
end
return key
end
function AbstractMobParent:haveStatuts(statutName)
return (self.statuts[statutName] ~= nil)
return (self.statuts[self:getStatutKey(statutName)] ~= nil)
end
function AbstractMobParent:removeStatut(statutName)
self.statuts[statutName] = nil
local key = self:getStatutKey(statutName)
if (key ~= nil) then
self.statuts[key] = nil
return true
end
return false
end
function AbstractMobParent:removeStatutTurns(statutName, turns)
local statut = self:getStatutData(statutName)
if (statut.temporary == false) then
return 0
end
if (not self:haveStatuts(statutName)) then
return turns
end
local key = self:getStatutKey(statutName)
local relativeTurns = self.statuts[key].duration - turns
if (relativeTurns <= 0) then
self:removeStatut(statutName)
else
self.statuts[key].duration = relativeTurns
end
return relativeTurns
end
function AbstractMobParent:resetStatut()
@ -98,22 +152,16 @@ function AbstractMobParent:isAlive()
end
function AbstractMobParent:removeOneTurnToStatut()
for name, statut in pairs(self.statuts) do
if (statut ~= nil) then
if (statut.duration == 1) then
self.statuts[name] = nil
else
self.statuts[name].duration = (statut.duration - 1)
end
end
for name, _ in pairs(self.statuts) do
self:removeStatutTurns(name, 1)
end
end
function AbstractMobParent:getStatutsStat(statName)
local stat = 0
for statutName, _ in pairs(self.statuts) do
local statut = statutStatList[statutName]
if (statut ~= nil) then
local statut = self:getStatutData(statutName)
if (statut.stats ~= nil) then
for _, statutStat in ipairs(statut.stats) do
if (statutStat[1] == statName) then
stat = stat + statutStat[2]
@ -124,4 +172,8 @@ function AbstractMobParent:getStatutsStat(statName)
return stat
end
function AbstractMobParent:getStatutData(statutName)
return statutStatList[statutName]
end
return AbstractMobParent