From e5ea2c98203a6d3c77635534d62ea76716552201 Mon Sep 17 00:00:00 2001 From: Melledy <121644117+Melledy@users.noreply.github.com> Date: Fri, 27 Oct 2023 12:11:22 -0700 Subject: [PATCH] Fix target order in battles --- .../emu/lunarcore/game/battle/BattleService.java | 9 ++++----- .../packet/recv/HandlerSceneCastSkillCsReq.java | 15 +++++++-------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/main/java/emu/lunarcore/game/battle/BattleService.java b/src/main/java/emu/lunarcore/game/battle/BattleService.java index 46ea9c2..e2d62b6 100644 --- a/src/main/java/emu/lunarcore/game/battle/BattleService.java +++ b/src/main/java/emu/lunarcore/game/battle/BattleService.java @@ -2,6 +2,7 @@ package emu.lunarcore.game.battle; import java.util.ArrayList; import java.util.List; +import java.util.Set; import emu.lunarcore.data.GameData; import emu.lunarcore.data.excel.CocoonExcel; @@ -22,15 +23,13 @@ import emu.lunarcore.server.packet.send.PacketSceneCastSkillScRsp; import emu.lunarcore.server.packet.send.PacketStartCocoonStageScRsp; import emu.lunarcore.server.packet.send.PacketSyncLineupNotify; -import it.unimi.dsi.fastutil.ints.IntSet; - public class BattleService extends BaseGameService { public BattleService(GameServer server) { super(server); } - public void startBattle(Player player, int casterId, int attackedGroupId, boolean castedSkill, IntSet targetList) { + public void startBattle(Player player, int casterId, int attackedGroupId, boolean castedSkill, Set targets) { // Sanity check to make sure player isnt in a battle if (player.isInBattle()) { player.sendPacket(new PacketSceneCastSkillScRsp()); @@ -44,7 +43,7 @@ public class BattleService extends BaseGameService { // Check if attacker is the player or not if (player.getScene().getAvatarEntityIds().contains(casterId)) { // Player is the attacker - for (int entityId : targetList) { + for (int entityId : targets) { GameEntity entity = player.getScene().getEntities().get(entityId); if (entity != null) { @@ -62,7 +61,7 @@ public class BattleService extends BaseGameService { } // Add any assisting monsters from target list - for (int entityId : targetList) { + for (int entityId : targets) { entity = player.getScene().getEntities().get(entityId); if (entity != null) { diff --git a/src/main/java/emu/lunarcore/server/packet/recv/HandlerSceneCastSkillCsReq.java b/src/main/java/emu/lunarcore/server/packet/recv/HandlerSceneCastSkillCsReq.java index abb1bfd..bf4b65e 100644 --- a/src/main/java/emu/lunarcore/server/packet/recv/HandlerSceneCastSkillCsReq.java +++ b/src/main/java/emu/lunarcore/server/packet/recv/HandlerSceneCastSkillCsReq.java @@ -1,5 +1,8 @@ package emu.lunarcore.server.packet.recv; +import java.util.LinkedHashSet; +import java.util.Set; + import emu.lunarcore.game.avatar.GameAvatar; import emu.lunarcore.game.battle.skills.MazeSkill; import emu.lunarcore.proto.SceneCastSkillCsReqOuterClass.SceneCastSkillCsReq; @@ -10,13 +13,9 @@ import emu.lunarcore.server.packet.PacketHandler; import emu.lunarcore.server.packet.send.PacketSceneCastSkillMpUpdateScNotify; import emu.lunarcore.server.packet.send.PacketSceneCastSkillScRsp; -import it.unimi.dsi.fastutil.ints.IntOpenHashSet; -import it.unimi.dsi.fastutil.ints.IntSet; - @Opcodes(CmdId.SceneCastSkillCsReq) public class HandlerSceneCastSkillCsReq extends PacketHandler { - @SuppressWarnings("deprecation") @Override public void handle(GameSession session, byte[] header, byte[] data) throws Exception { var req = SceneCastSkillCsReq.parseFrom(data); @@ -40,12 +39,12 @@ public class HandlerSceneCastSkillCsReq extends PacketHandler { if (req.hasHitTargetIdList()) { // Create target list - IntSet targetList = new IntOpenHashSet(); - req.getHitTargetIdList().forEach(targetList::add); - req.getAssistMonsterIdList().forEach(targetList::add); + Set targets = new LinkedHashSet<>(); + req.getHitTargetIdList().forEach(targets::add); + req.getAssistMonsterIdList().forEach(targets::add); // Start battle - session.getServer().getBattleService().startBattle(session.getPlayer(), req.getCasterId(), req.getAttackedGroupId(), castedSkill, targetList); + session.getServer().getBattleService().startBattle(session.getPlayer(), req.getCasterId(), req.getAttackedGroupId(), castedSkill, targets); } else { session.send(new PacketSceneCastSkillScRsp(req.getAttackedGroupId())); }