Fix target order in battles

This commit is contained in:
Melledy
2023-10-27 12:11:22 -07:00
parent e26ced7169
commit e5ea2c9820
2 changed files with 11 additions and 13 deletions

View File

@@ -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<Integer> 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) {

View File

@@ -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<Integer> 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()));
}