diff --git a/sonic-radiance.love/game/abstractmobs/ennemy/init.lua b/sonic-radiance.love/game/abstractmobs/ennemy/init.lua index 7005bd2..bee003c 100644 --- a/sonic-radiance.love/game/abstractmobs/ennemy/init.lua +++ b/sonic-radiance.love/game/abstractmobs/ennemy/init.lua @@ -2,11 +2,12 @@ local AbstractMobParent = require "game.abstractmobs.parent" local AbstractEnnemy = AbstractMobParent:extend() local elements = require "datas.gamedata.battles.elements" +local EnnemyStatManager = require "game.abstractmobs.ennemy.statmanager" function AbstractEnnemy:new(directory, name) self.simplename = name self.directory = directory - self.super.new(self) + AbstractEnnemy.super.new(self, nil, nil, EnnemyStatManager) end function AbstractEnnemy:getWeaknesses() @@ -42,4 +43,9 @@ function AbstractEnnemy:createSkills() return self.data.skills end +function AbstractEnnemy:setBonus(pvFactor, statFactor) + self.stats:setBonus(pvFactor, statFactor) + self.hp = self.stats:get(self.stats.HPMAX) +end + return AbstractEnnemy diff --git a/sonic-radiance.love/game/abstractmobs/ennemy/statmanager.lua b/sonic-radiance.love/game/abstractmobs/ennemy/statmanager.lua new file mode 100644 index 0000000..5480215 --- /dev/null +++ b/sonic-radiance.love/game/abstractmobs/ennemy/statmanager.lua @@ -0,0 +1,25 @@ +local StatManager = require "game.abstractmobs.statmanager" +local EnnemyStatManager = StatManager:extend() + +function EnnemyStatManager:new(owner) + EnnemyStatManager.super.new(self, owner) + self.pvFactor = 1 + self.statFactor = 1 +end + +function EnnemyStatManager:setBonus(pvFactor, statFactor) + self.pvFactor = pvFactor or 1 + self.statFactor = statFactor or 1 +end + +function EnnemyStatManager:computeStat(statname) + local stat = self.owner.data.stats[statname] + + if statname == EnnemyStatManager.HPMAX then + return stat * self.pvFactor + elseif (statname ~= EnnemyStatManager.PPMAX) then + return stat * self.statFactor + end +end + +return EnnemyStatManager \ No newline at end of file diff --git a/sonic-radiance.love/game/abstractmobs/parent.lua b/sonic-radiance.love/game/abstractmobs/parent.lua index a21fcb0..5c6728a 100644 --- a/sonic-radiance.love/game/abstractmobs/parent.lua +++ b/sonic-radiance.love/game/abstractmobs/parent.lua @@ -3,10 +3,11 @@ local AbstractMobParent = Serializable:extend() local StatManager = require "game.abstractmobs.statmanager" function AbstractMobParent:new(serializeFields, listSerializable, statManager) + print(statManager) local statManager = statManager or StatManager self:initBasicElements() - self.stats = statManager() + self.stats = statManager(self) self.stats:setStats(self:createStats()) self.skills = self:createSkills() self.statuts = {} @@ -118,18 +119,4 @@ function AbstractMobParent:removeOneTurnToStatut() end end --- Bonus stuff - -function AbstractMobParent:setBonus(pvFactor, statFactor) - self.stats.hpmax = self.stats.hpmax * pvFactor - self.hp = self.stats:get(self.stats.HPMAX) - - self.stats.attack = self.stats.attack * statFactor - self.stats.power = self.stats.power * statFactor - self.stats.defense = self.stats.defense * statFactor - self.stats.mind = self.stats.mind * statFactor - self.stats.technic = self.stats.technic * statFactor - self.stats.speed = self.stats.speed * statFactor -end - return AbstractMobParent