mirror of
https://github.com/Melledy/LunarCore.git
synced 2025-12-14 14:24:37 +01:00
Fix target order in battles
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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()));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user