sonic-bluestreak/sonic-bluestreak.love/scenes/battlesystem/choregraphy/mixins/wrappers.lua

71 lines
1.9 KiB
Lua
Raw Permalink Normal View History

2021-11-25 10:57:13 +01:00
local InfosMixin = Object:extend()
function InfosMixin:initWrappers(action, target)
self.action = action
self.fighter = action.fighter
self.actor = self.fighter.actor
self.assets = self.fighter.actor.assets
self.world = self.actor.world
self.scene = self.world.scene
self.turns = self.scene.turns
self.rewards = self.turns.rewards
self:initTargets(target or action.target)
end
function InfosMixin:initTargets(target)
self.target = target
self.haveSentDamage = false
if (self.target == nil) then
local _, targetEnnemies = self.action:needTarget()
self.targetList = self.fighter:getTargets(targetEnnemies == false)
end
end
function InfosMixin:getActor(name)
if (name == "actor") then
return self.actor
elseif (name == "target") then
return self:getTargetActor()
else
return self.fighter.world:getActorByName(name)
end
end
function InfosMixin:getTargetActor()
return self.target.actor
end
function InfosMixin:sendDamage(power, type, element, isSpecial)
if (self.fighter.isAlive) then
if (self.target ~= nil) then
self.haveSentDamage = self.fighter:sendDamage(self.target, power, type, element, isSpecial)
else
self.haveSentDamage = self.fighter:sendDamageToAll(self.targetList, power, type, element, isSpecial)
end
else
self.haveSentDamage = false
end
end
function InfosMixin:sendStatus(status, duration, force)
if (self.fighter.isAlive) then
if (self.target ~= nil) then
self.fighter:sendStatus(self.target, status, duration, force)
else
self.fighter:sendStatus(self.targetList, status, duration, force)
end
end
end
function InfosMixin:haveFrameSignal(signal)
return self.actor:haveFrameSignal(signal)
end
function InfosMixin:useItemEffect()
self.action:useItemEffect()
end
return InfosMixin