From 0af791d800dbc95495979d20e21bba5146c159af Mon Sep 17 00:00:00 2001 From: Melledy <121644117+Melledy@users.noreply.github.com> Date: Tue, 30 Jul 2024 23:58:53 -0700 Subject: [PATCH] Fix relics/lightcones not applying after switching paths --- .../emu/lunarcore/game/avatar/GameAvatar.java | 20 +++++++++---------- .../emu/lunarcore/game/player/Player.java | 6 +----- .../PacketGetMultiPathAvatarInfoScRsp.java | 2 +- 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/src/main/java/emu/lunarcore/game/avatar/GameAvatar.java b/src/main/java/emu/lunarcore/game/avatar/GameAvatar.java index ccb22af..1a69319 100644 --- a/src/main/java/emu/lunarcore/game/avatar/GameAvatar.java +++ b/src/main/java/emu/lunarcore/game/avatar/GameAvatar.java @@ -243,20 +243,18 @@ public class GameAvatar implements GameEntity, IAvatar { .setIsMarked(this.isMarked()) .setFirstMetTimestamp(this.getTimestamp()); - if (!this.hasMultiPath()) { - for (var equip : this.getEquips().values()) { - if (equip.getItemMainType() == ItemMainType.Relic) { - proto.addEquipRelicList(EquipRelic.newInstance().setSlot(equip.getEquipSlot()).setRelicUniqueId(equip.getInternalUid())); - } else if (equip.getItemMainType() == ItemMainType.Equipment) { - proto.setEquipmentUniqueId(equip.getInternalUid()); - } - } - - for (var skill : getSkills().entrySet()) { - proto.addSkilltreeList(AvatarSkillTree.newInstance().setPointId(skill.getKey()).setLevel(skill.getValue())); + for (var equip : this.getEquips().values()) { + if (equip.getItemMainType() == ItemMainType.Relic) { + proto.addEquipRelicList(EquipRelic.newInstance().setSlot(equip.getEquipSlot()).setRelicUniqueId(equip.getInternalUid())); + } else if (equip.getItemMainType() == ItemMainType.Equipment) { + proto.setEquipmentUniqueId(equip.getInternalUid()); } } + for (var skill : getSkills().entrySet()) { + proto.addSkilltreeList(AvatarSkillTree.newInstance().setPointId(skill.getKey()).setLevel(skill.getValue())); + } + for (int i = 0; i < this.getPromotion(); i++) { if (this.hasTakenReward(i)) { proto.addTakenRewards(i); diff --git a/src/main/java/emu/lunarcore/game/player/Player.java b/src/main/java/emu/lunarcore/game/player/Player.java index 3b8436c..3c38f44 100644 --- a/src/main/java/emu/lunarcore/game/player/Player.java +++ b/src/main/java/emu/lunarcore/game/player/Player.java @@ -483,12 +483,8 @@ public class Player implements Tickable { this.getCurAvatarPaths().put(excel.getBaseAvatarID(), pathId); // Sync with client - this.sendPacket(new PacketPlayerSyncScNotify(path)); - for (var item : avatar.getEquips().values()) { - this.sendPacket(new PacketPlayerSyncScNotify(item)); - } - this.sendPacket(new PacketAvatarPathChangedNotify(avatar, path)); + this.sendPacket(new PacketPlayerSyncScNotify(avatar)); // Success return pathId; diff --git a/src/main/java/emu/lunarcore/server/packet/send/PacketGetMultiPathAvatarInfoScRsp.java b/src/main/java/emu/lunarcore/server/packet/send/PacketGetMultiPathAvatarInfoScRsp.java index 51c2f94..a5c2499 100644 --- a/src/main/java/emu/lunarcore/server/packet/send/PacketGetMultiPathAvatarInfoScRsp.java +++ b/src/main/java/emu/lunarcore/server/packet/send/PacketGetMultiPathAvatarInfoScRsp.java @@ -16,7 +16,6 @@ public class PacketGetMultiPathAvatarInfoScRsp extends BasePacket { for (AvatarMultiPath path : player.getAvatars().getMultiPaths().values()) { data.addMultiPathAvatarInfoList(path.toProto()); - data.addBasicTypeIdList(path.getExcelId()); } for (var entry : player.getCurAvatarPaths().entrySet()) { @@ -25,6 +24,7 @@ public class PacketGetMultiPathAvatarInfoScRsp extends BasePacket { .setValueValue(entry.getValue()); data.addCurAvatarPath(info); + data.addBasicTypeIdList(entry.getValue()); } this.setData(data);