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.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import emu.lunarcore.data.GameData;
|
import emu.lunarcore.data.GameData;
|
||||||
import emu.lunarcore.data.excel.CocoonExcel;
|
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.PacketStartCocoonStageScRsp;
|
||||||
import emu.lunarcore.server.packet.send.PacketSyncLineupNotify;
|
import emu.lunarcore.server.packet.send.PacketSyncLineupNotify;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.ints.IntSet;
|
|
||||||
|
|
||||||
public class BattleService extends BaseGameService {
|
public class BattleService extends BaseGameService {
|
||||||
|
|
||||||
public BattleService(GameServer server) {
|
public BattleService(GameServer server) {
|
||||||
super(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
|
// Sanity check to make sure player isnt in a battle
|
||||||
if (player.isInBattle()) {
|
if (player.isInBattle()) {
|
||||||
player.sendPacket(new PacketSceneCastSkillScRsp());
|
player.sendPacket(new PacketSceneCastSkillScRsp());
|
||||||
@@ -44,7 +43,7 @@ public class BattleService extends BaseGameService {
|
|||||||
// Check if attacker is the player or not
|
// Check if attacker is the player or not
|
||||||
if (player.getScene().getAvatarEntityIds().contains(casterId)) {
|
if (player.getScene().getAvatarEntityIds().contains(casterId)) {
|
||||||
// Player is the attacker
|
// Player is the attacker
|
||||||
for (int entityId : targetList) {
|
for (int entityId : targets) {
|
||||||
GameEntity entity = player.getScene().getEntities().get(entityId);
|
GameEntity entity = player.getScene().getEntities().get(entityId);
|
||||||
|
|
||||||
if (entity != null) {
|
if (entity != null) {
|
||||||
@@ -62,7 +61,7 @@ public class BattleService extends BaseGameService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add any assisting monsters from target list
|
// Add any assisting monsters from target list
|
||||||
for (int entityId : targetList) {
|
for (int entityId : targets) {
|
||||||
entity = player.getScene().getEntities().get(entityId);
|
entity = player.getScene().getEntities().get(entityId);
|
||||||
|
|
||||||
if (entity != null) {
|
if (entity != null) {
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
package emu.lunarcore.server.packet.recv;
|
package emu.lunarcore.server.packet.recv;
|
||||||
|
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import emu.lunarcore.game.avatar.GameAvatar;
|
import emu.lunarcore.game.avatar.GameAvatar;
|
||||||
import emu.lunarcore.game.battle.skills.MazeSkill;
|
import emu.lunarcore.game.battle.skills.MazeSkill;
|
||||||
import emu.lunarcore.proto.SceneCastSkillCsReqOuterClass.SceneCastSkillCsReq;
|
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.PacketSceneCastSkillMpUpdateScNotify;
|
||||||
import emu.lunarcore.server.packet.send.PacketSceneCastSkillScRsp;
|
import emu.lunarcore.server.packet.send.PacketSceneCastSkillScRsp;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
|
|
||||||
import it.unimi.dsi.fastutil.ints.IntSet;
|
|
||||||
|
|
||||||
@Opcodes(CmdId.SceneCastSkillCsReq)
|
@Opcodes(CmdId.SceneCastSkillCsReq)
|
||||||
public class HandlerSceneCastSkillCsReq extends PacketHandler {
|
public class HandlerSceneCastSkillCsReq extends PacketHandler {
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(GameSession session, byte[] header, byte[] data) throws Exception {
|
public void handle(GameSession session, byte[] header, byte[] data) throws Exception {
|
||||||
var req = SceneCastSkillCsReq.parseFrom(data);
|
var req = SceneCastSkillCsReq.parseFrom(data);
|
||||||
@@ -40,12 +39,12 @@ public class HandlerSceneCastSkillCsReq extends PacketHandler {
|
|||||||
|
|
||||||
if (req.hasHitTargetIdList()) {
|
if (req.hasHitTargetIdList()) {
|
||||||
// Create target list
|
// Create target list
|
||||||
IntSet targetList = new IntOpenHashSet();
|
Set<Integer> targets = new LinkedHashSet<>();
|
||||||
req.getHitTargetIdList().forEach(targetList::add);
|
req.getHitTargetIdList().forEach(targets::add);
|
||||||
req.getAssistMonsterIdList().forEach(targetList::add);
|
req.getAssistMonsterIdList().forEach(targets::add);
|
||||||
|
|
||||||
// Start battle
|
// 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 {
|
} else {
|
||||||
session.send(new PacketSceneCastSkillScRsp(req.getAttackedGroupId()));
|
session.send(new PacketSceneCastSkillScRsp(req.getAttackedGroupId()));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user