diff --git a/sonic-radiance.love/datas/gamedata/characters/amy/sprites.lua b/sonic-radiance.love/datas/gamedata/characters/amy/sprites.lua index bc77bf6..8c06048 100644 --- a/sonic-radiance.love/datas/gamedata/characters/amy/sprites.lua +++ b/sonic-radiance.love/datas/gamedata/characters/amy/sprites.lua @@ -132,6 +132,13 @@ return { loop = 52, speed = 15, pauseAtEnd = true, + }, + ["defend"] = { + startAt = 53, + endAt = 54, + loop = 54, + speed = 15, + pauseAtEnd = true, } } } diff --git a/sonic-radiance.love/datas/gamedata/characters/amy/sprites.png b/sonic-radiance.love/datas/gamedata/characters/amy/sprites.png index 221fa43..ad36196 100644 Binary files a/sonic-radiance.love/datas/gamedata/characters/amy/sprites.png and b/sonic-radiance.love/datas/gamedata/characters/amy/sprites.png differ diff --git a/sonic-radiance.love/datas/gamedata/characters/sonic/sprites.lua b/sonic-radiance.love/datas/gamedata/characters/sonic/sprites.lua index 91bf2c2..eee3107 100644 --- a/sonic-radiance.love/datas/gamedata/characters/sonic/sprites.lua +++ b/sonic-radiance.love/datas/gamedata/characters/sonic/sprites.lua @@ -132,6 +132,13 @@ return { loop = 62, speed = 15, pauseAtEnd = true, + }, + ["defend"] = { + startAt = 63, + endAt = 64, + loop = 64, + speed = 15, + pauseAtEnd = true, } } } diff --git a/sonic-radiance.love/datas/gamedata/characters/sonic/sprites.png b/sonic-radiance.love/datas/gamedata/characters/sonic/sprites.png index 02da380..6fda58b 100644 Binary files a/sonic-radiance.love/datas/gamedata/characters/sonic/sprites.png and b/sonic-radiance.love/datas/gamedata/characters/sonic/sprites.png differ diff --git a/sonic-radiance.love/datas/gamedata/characters/tails/sprites.lua b/sonic-radiance.love/datas/gamedata/characters/tails/sprites.lua index bcf738c..e5ed31b 100644 --- a/sonic-radiance.love/datas/gamedata/characters/tails/sprites.lua +++ b/sonic-radiance.love/datas/gamedata/characters/tails/sprites.lua @@ -132,6 +132,13 @@ return { loop = 59, speed = 15, pauseAtEnd = true, + }, + ["defend"] = { + startAt = 60, + endAt = 61, + loop = 61, + speed = 15, + pauseAtEnd = true, } } } diff --git a/sonic-radiance.love/datas/gamedata/characters/tails/sprites.png b/sonic-radiance.love/datas/gamedata/characters/tails/sprites.png index 6e67e13..ec441bd 100644 Binary files a/sonic-radiance.love/datas/gamedata/characters/tails/sprites.png and b/sonic-radiance.love/datas/gamedata/characters/tails/sprites.png differ diff --git a/sonic-radiance.love/scenes/battlesystem/actors/battler.lua b/sonic-radiance.love/scenes/battlesystem/actors/battler.lua index 707c31d..a1f93e2 100644 --- a/sonic-radiance.love/scenes/battlesystem/actors/battler.lua +++ b/sonic-radiance.love/scenes/battlesystem/actors/battler.lua @@ -34,6 +34,8 @@ function Battler:new(world, x, y, z, owner) self.isSelected = false self.owner = owner + + self.isDefending = false end function Battler:destroy() diff --git a/sonic-radiance.love/scenes/battlesystem/actors/hero.lua b/sonic-radiance.love/scenes/battlesystem/actors/hero.lua index b0c90e0..ac8cd14 100644 --- a/sonic-radiance.love/scenes/battlesystem/actors/hero.lua +++ b/sonic-radiance.love/scenes/battlesystem/actors/hero.lua @@ -35,6 +35,7 @@ function Hero:revive() if (self.isKo) then self:changeAnimation("idle") self.isKo = false + self.isDefending = false end end diff --git a/sonic-radiance.love/scenes/battlesystem/controllers/fighters/parent.lua b/sonic-radiance.love/scenes/battlesystem/controllers/fighters/parent.lua index 20c1bf4..8fdc974 100644 --- a/sonic-radiance.love/scenes/battlesystem/controllers/fighters/parent.lua +++ b/sonic-radiance.love/scenes/battlesystem/controllers/fighters/parent.lua @@ -19,6 +19,8 @@ function FighterParent:new(owner, isHero, id) self.isActive = false self.isAlive = true + self.isDefending = false + self.action = nil end @@ -51,6 +53,7 @@ end function FighterParent:revive() self.isAlive = true + self.isDefending = false self.actor:revive() end @@ -92,8 +95,12 @@ function FighterParent:receiveDamage(value, accuracy, isSpecial, isAerial, fromW end core.debug:print("cbs/fighter", "Taken " .. value .. " damage" ) - self:setHP(value * -1, true) - self.actor:getHurt() + if (self.isDefending) then + self:setHP(value * -0.66, true) + else + self:setHP(value * -1, true) + self.actor:getHurt() + end end function FighterParent:getAbstract() @@ -119,6 +126,10 @@ end function FighterParent:setActive() counter = 0 self.isActive = true + if (self.isDefending) then + self.actor:changeAnimation("idle") + self.actor.isDefending = false + end self:startAction() end diff --git a/sonic-radiance.love/scenes/battlesystem/controllers/fighters/systems/actions/defend.lua b/sonic-radiance.love/scenes/battlesystem/controllers/fighters/systems/actions/defend.lua index 10597b9..ad5a2b9 100644 --- a/sonic-radiance.love/scenes/battlesystem/controllers/fighters/systems/actions/defend.lua +++ b/sonic-radiance.love/scenes/battlesystem/controllers/fighters/systems/actions/defend.lua @@ -11,6 +11,9 @@ end function DefendAction:startAction() core.debug:print("cbs/action", "Starting defend action") + self.fighter.isDefending = true + self.fighter.actor:changeAnimation("defend") + self.fighter.actor.isDefending = true self:finishAction() end