From 36e30be245f7a5af9dad3b5a449958b8b0fbcbd4 Mon Sep 17 00:00:00 2001 From: Kazhnuz Date: Sun, 18 Apr 2021 19:59:03 +0200 Subject: [PATCH] feat: handle ko characters on overworld Preparation for full damage support --- sonic-radiance.love/game/characters.lua | 5 +++++ .../scenes/overworld/actors/player/init.lua | 1 + .../scenes/overworld/actors/player/team.lua | 10 ++++++++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/sonic-radiance.love/game/characters.lua b/sonic-radiance.love/game/characters.lua index b63ea5e..4771f39 100644 --- a/sonic-radiance.love/game/characters.lua +++ b/sonic-radiance.love/game/characters.lua @@ -131,6 +131,7 @@ end function CharacterManager:setActiveCharacter(direction) local direction = direction or 1 + local count = direction self.active = self.active + utils.math.sign(direction) if (self.active > #self.team) then self.active = 1 @@ -138,6 +139,10 @@ function CharacterManager:setActiveCharacter(direction) if (self.active < 1) then self.active = #self.team end + if (self.list[self.team[self.active]].hp <= 0) and not game.difficulty:get("playerKoChar") then + count = count + self:setActiveCharacter(direction) + end + return count end function CharacterManager:fixActiveCharacter() diff --git a/sonic-radiance.love/scenes/overworld/actors/player/init.lua b/sonic-radiance.love/scenes/overworld/actors/player/init.lua index 857a361..4cec1d3 100644 --- a/sonic-radiance.love/scenes/overworld/actors/player/init.lua +++ b/sonic-radiance.love/scenes/overworld/actors/player/init.lua @@ -44,6 +44,7 @@ end function Player:updateStart(dt) self.tweens:update(dt) self:updateTerrain() + self:updateActiveCharacter() self:act() diff --git a/sonic-radiance.love/scenes/overworld/actors/player/team.lua b/sonic-radiance.love/scenes/overworld/actors/player/team.lua index 4107446..5390061 100644 --- a/sonic-radiance.love/scenes/overworld/actors/player/team.lua +++ b/sonic-radiance.love/scenes/overworld/actors/player/team.lua @@ -15,17 +15,23 @@ function Team:initTeam() self.canChangeActive = true end +function Team:updateActiveCharacter() + if ((self.active.hp == 0) and not game.difficulty:get("playerKoChar")) then + self:switchActiveCharacter() + end +end + function Team:getCurrentCharType() return self.active.data.class end function Team:switchActiveCharacter() if (self.canChangeActive) then - game.characters:setActiveCharacter() + local count = game.characters:setActiveCharacter() self.active = game.characters:getActiveCharacterData() self.canChangeActive = false self.tweens:newTimer(0.3, "changeCharacter") - self.tweens:newTween(0, 0.3, {activeVisible = self.activeVisible + 1}, "inQuad") + self.tweens:newTween(0, 0.3, {activeVisible = self.activeVisible + count}, "inQuad") end end