diff --git a/Campofinale/Commands/Handlers/CommandHeal.cs b/Campofinale/Commands/Handlers/CommandHeal.cs index 992c2b2..60c049d 100644 --- a/Campofinale/Commands/Handlers/CommandHeal.cs +++ b/Campofinale/Commands/Handlers/CommandHeal.cs @@ -10,21 +10,8 @@ namespace Campofinale.Commands.Handlers [Server.Command("heal", "Revives/Heals your team characters", true)] public static void Handle(Player sender, string cmd, string[] args, Player target) { - target.GetCurTeam().ForEach(chara => - { - chara.curHp = chara.CalcAttributes()[AttributeType.MaxHp].val; - ScCharSyncStatus state = new ScCharSyncStatus() - { - Objid=chara.guid, - IsDead=chara.curHp < 1, - BattleInfo = new() - { - Hp=chara.curHp, - Ultimatesp=chara.ultimateSp - } - }; - target.Send(ScMsgId.ScCharSyncStatus, state); - }); + target.RestTeam(); + target.Send(ScMsgId.ScSceneRevival, new ScSceneRevival() { diff --git a/Campofinale/Game/Factory/BuildingsBehaviour/NodeBuilding_ProducerFurnace.cs b/Campofinale/Game/Factory/BuildingsBehaviour/NodeBuilding_ProducerFurnace.cs index 8c2d01c..b9f82c0 100644 --- a/Campofinale/Game/Factory/BuildingsBehaviour/NodeBuilding_ProducerFurnace.cs +++ b/Campofinale/Game/Factory/BuildingsBehaviour/NodeBuilding_ProducerFurnace.cs @@ -80,7 +80,7 @@ namespace Campofinale.Game.Factory.BuildingsBehaviour producer.lastFormulaId = recipe; producer.progress += craftingRecipe.totalProgress/craftingRecipe.progressRound; - currentProgress++; + currentProgress++; if (currentProgress >= craftingRecipe.progressRound) { currentProgress = 0; diff --git a/Campofinale/Packets/Cs/HandleCsSceneRest.cs b/Campofinale/Packets/Cs/HandleCsSceneRest.cs new file mode 100644 index 0000000..ad7f36e --- /dev/null +++ b/Campofinale/Packets/Cs/HandleCsSceneRest.cs @@ -0,0 +1,28 @@ +using Campofinale.Network; +using Campofinale.Packets.Sc; +using Campofinale.Protocol; +using Campofinale.Resource; + +namespace Campofinale.Packets.Cs +{ + public class HandleCsSceneRest + { + + [Server.Handler(CsMsgId.CsSceneRest)] + public static void Handle(Player session, CsMsgId cmdId, Packet packet) + { + CsSceneRest req = packet.DecodeBody(); + + ScSceneRevival revival = new() + { + + }; + session.RestTeam(); + session.sceneManager.LoadCurrentTeamEntities(); + session.Send(ScMsgId.ScSceneRevival, revival, packet.csHead.UpSeqid); + session.Send(new PacketScSelfSceneInfo(session, SelfInfoReasonType.SlrReviveRest)); + + } + + } +} diff --git a/Campofinale/Player.cs b/Campofinale/Player.cs index ebce970..86db04e 100644 --- a/Campofinale/Player.cs +++ b/Campofinale/Player.cs @@ -759,5 +759,24 @@ namespace Campofinale } } + + public void RestTeam() + { + GetCurTeam().ForEach(chara => + { + chara.curHp = chara.CalcAttributes()[AttributeType.MaxHp].val; + ScCharSyncStatus state = new ScCharSyncStatus() + { + Objid = chara.guid, + IsDead = chara.curHp < 1, + BattleInfo = new() + { + Hp = chara.curHp, + Ultimatesp = chara.ultimateSp + } + }; + Send(ScMsgId.ScCharSyncStatus, state); + }); + } } }