From e7d8842c37851748065abc93553f549cc4bd0c10 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Wed, 5 Jan 2022 00:38:52 +0000 Subject: [PATCH] Left hand items do not show on Death Knight characters. --- .../handlers/effecthandlers/ClassChange.java | 12 +----------- .../network/clientpackets/UseItem.java | 11 ----------- .../network/serverpackets/CharInfo.java | 17 +++++++++++++++++ .../handlers/effecthandlers/ClassChange.java | 3 ++- .../network/clientpackets/UseItem.java | 11 ----------- .../network/serverpackets/CharInfo.java | 17 +++++++++++++++++ .../handlers/effecthandlers/ClassChange.java | 3 ++- .../network/clientpackets/UseItem.java | 10 ---------- .../network/serverpackets/CharInfo.java | 17 +++++++++++++++++ .../handlers/effecthandlers/ClassChange.java | 3 ++- .../network/clientpackets/UseItem.java | 10 ---------- .../network/serverpackets/CharInfo.java | 17 +++++++++++++++++ 12 files changed, 75 insertions(+), 56 deletions(-) diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java index c1e1f7835c..be4ca67b83 100644 --- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java +++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java @@ -25,8 +25,6 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.item.instance.Item; -import org.l2jmobius.gameserver.model.item.type.ArmorType; -import org.l2jmobius.gameserver.model.itemcontainer.Inventory; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -159,17 +157,9 @@ public class ClassChange extends AbstractEffect } } - // Death Knight adjustments. + // Fix Death Knight model animation. if (player.isDeathKnight()) { - // Unequip shield. - final Item lhand = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LHAND); - if ((lhand != null) && lhand.isArmor() && (lhand.getItemType() == ArmorType.SHIELD)) - { - player.disarmShield(); - } - - // Fix Death Knight model animation. player.transform(101, false); ThreadPool.schedule(() -> player.stopTransformation(false), 50); } diff --git a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index 1a76eb6e6d..500f3545b4 100644 --- a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -26,9 +26,7 @@ import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.ai.CtrlEvent; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.NextAction; -import org.l2jmobius.gameserver.data.xml.CategoryData; import org.l2jmobius.gameserver.data.xml.VariationData; -import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.enums.ItemSkillType; import org.l2jmobius.gameserver.enums.PrivateStoreType; import org.l2jmobius.gameserver.handler.AdminCommandHandler; @@ -44,7 +42,6 @@ import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.type.ActionType; -import org.l2jmobius.gameserver.model.item.type.ArmorType; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -208,14 +205,6 @@ public class UseItem implements IClientIncomingPacket player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_REQUIRED_CONDITION_TO_EQUIP_THAT_ITEM); return; } - - // Prevent equip shields for Death Knight players. - if (item.isArmor() && (item.getArmorItem().getItemType() == ArmorType.SHIELD) && CategoryData.getInstance().isInCategory(CategoryType.DEATH_KNIGHT_ALL_CLASS, player.getClassId().getId())) - { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_REQUIRED_CONDITION_TO_EQUIP_THAT_ITEM); - return; - } - // Prevent players to equip weapon while wearing combat flag // Don't allow weapon/shield equipment if a cursed weapon is equipped. if ((item.getItem().getBodyPart() == ItemTemplate.SLOT_LR_HAND) || (item.getItem().getBodyPart() == ItemTemplate.SLOT_L_HAND) || (item.getItem().getBodyPart() == ItemTemplate.SLOT_R_HAND)) diff --git a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index 09760649cf..b0d9eaf9a0 100644 --- a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -20,6 +20,8 @@ import java.util.Set; import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.data.xml.CategoryData; +import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.RankManager; @@ -132,8 +134,16 @@ public class CharInfo implements IClientOutgoingPacket packet.writeC(_player.getAppearance().isFemale() ? 1 : 0); // Confirmed packet.writeD(_player.isDeathKnight() && _player.isSubClassActive() ? 0 : _player.getBaseTemplate().getClassId().getRootClassId().getId()); + final boolean isDeathKnightClass = CategoryData.getInstance().isInCategory(CategoryType.DEATH_KNIGHT_ALL_CLASS, _player.getClassId().getId()); for (int slot : getPaperdollOrder()) { + // Left hand items do not show on Death Knight characters. + if ((slot == Inventory.PAPERDOLL_LHAND) && isDeathKnightClass) + { + packet.writeD(0); + continue; + } + packet.writeD(_player.getInventory().getPaperdollItemDisplayId(slot)); // Confirmed } @@ -148,6 +158,13 @@ public class CharInfo implements IClientOutgoingPacket for (int slot : getPaperdollOrderVisualId()) { + // Left hand items do not show on Death Knight characters. + if ((slot == Inventory.PAPERDOLL_LHAND) && isDeathKnightClass) + { + packet.writeD(0); + continue; + } + packet.writeD(_player.getInventory().getPaperdollItemVisualId(slot)); } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java index 334b5f2e8a..04ffadb655 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java @@ -41,9 +41,10 @@ import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager; */ public class ClassChange extends AbstractEffect { - private final int _index; private static final int IDENTITY_CRISIS_SKILL_ID = 1570; + private final int _index; + public ClassChange(StatSet params) { _index = params.getInt("index", 0); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index a4c6f92f3e..96f0d966ac 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -26,9 +26,7 @@ import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.ai.CtrlEvent; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.NextAction; -import org.l2jmobius.gameserver.data.xml.CategoryData; import org.l2jmobius.gameserver.data.xml.VariationData; -import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.enums.ItemSkillType; import org.l2jmobius.gameserver.enums.PrivateStoreType; import org.l2jmobius.gameserver.handler.AdminCommandHandler; @@ -44,7 +42,6 @@ import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.type.ActionType; -import org.l2jmobius.gameserver.model.item.type.ArmorType; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -208,14 +205,6 @@ public class UseItem implements IClientIncomingPacket player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_REQUIRED_CONDITION_TO_EQUIP_THAT_ITEM); return; } - - // Prevent equip shields for Death Knight players. - if (item.isArmor() && (item.getArmorItem().getItemType() == ArmorType.SHIELD) && CategoryData.getInstance().isInCategory(CategoryType.DEATH_KNIGHT_ALL_CLASS, player.getClassId().getId())) - { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_REQUIRED_CONDITION_TO_EQUIP_THAT_ITEM); - return; - } - // Prevent players to equip weapon while wearing combat flag // Don't allow weapon/shield equipment if a cursed weapon is equipped. if ((item.getItem().getBodyPart() == ItemTemplate.SLOT_LR_HAND) || (item.getItem().getBodyPart() == ItemTemplate.SLOT_L_HAND) || (item.getItem().getBodyPart() == ItemTemplate.SLOT_R_HAND)) diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index f635495c17..2c57810a11 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -20,6 +20,8 @@ import java.util.Set; import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.data.xml.CategoryData; +import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.RankManager; @@ -132,8 +134,16 @@ public class CharInfo implements IClientOutgoingPacket packet.writeC(_player.getAppearance().isFemale() ? 1 : 0); // Confirmed packet.writeD(_player.getBaseTemplate().getClassId().getRootClassId().getId()); + final boolean isDeathKnightClass = CategoryData.getInstance().isInCategory(CategoryType.DEATH_KNIGHT_ALL_CLASS, _player.getClassId().getId()); for (int slot : getPaperdollOrder()) { + // Left hand items do not show on Death Knight characters. + if ((slot == Inventory.PAPERDOLL_LHAND) && isDeathKnightClass) + { + packet.writeD(0); + continue; + } + packet.writeD(_player.getInventory().getPaperdollItemDisplayId(slot)); // Confirmed } @@ -148,6 +158,13 @@ public class CharInfo implements IClientOutgoingPacket for (int slot : getPaperdollOrderVisualId()) { + // Left hand items do not show on Death Knight characters. + if ((slot == Inventory.PAPERDOLL_LHAND) && isDeathKnightClass) + { + packet.writeD(0); + continue; + } + packet.writeD(_player.getInventory().getPaperdollItemVisualId(slot)); } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java index 334b5f2e8a..04ffadb655 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java @@ -41,9 +41,10 @@ import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager; */ public class ClassChange extends AbstractEffect { - private final int _index; private static final int IDENTITY_CRISIS_SKILL_ID = 1570; + private final int _index; + public ClassChange(StatSet params) { _index = params.getInt("index", 0); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index 99dc9a7d88..4b9b76d898 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -26,9 +26,7 @@ import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.ai.CtrlEvent; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.NextAction; -import org.l2jmobius.gameserver.data.xml.CategoryData; import org.l2jmobius.gameserver.data.xml.VariationData; -import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.enums.ItemSkillType; import org.l2jmobius.gameserver.enums.PrivateStoreType; import org.l2jmobius.gameserver.enums.Race; @@ -45,7 +43,6 @@ import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.type.ActionType; -import org.l2jmobius.gameserver.model.item.type.ArmorType; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.network.GameClient; @@ -211,13 +208,6 @@ public class UseItem implements IClientIncomingPacket return; } - // Prevent equip shields for Death Knight players. - if (item.isArmor() && (item.getArmorItem().getItemType() == ArmorType.SHIELD) && CategoryData.getInstance().isInCategory(CategoryType.DEATH_KNIGHT_ALL_CLASS, player.getClassId().getId())) - { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_REQUIRED_CONDITION_TO_EQUIP_THAT_ITEM); - return; - } - // Prevent equip pistols for non Sylph players. if (item.isWeapon() && (item.getWeaponItem().getItemType() == WeaponType.PISTOLS) && (player.getRace() != Race.SYLPH)) { diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index f635495c17..2c57810a11 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -20,6 +20,8 @@ import java.util.Set; import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.data.xml.CategoryData; +import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.RankManager; @@ -132,8 +134,16 @@ public class CharInfo implements IClientOutgoingPacket packet.writeC(_player.getAppearance().isFemale() ? 1 : 0); // Confirmed packet.writeD(_player.getBaseTemplate().getClassId().getRootClassId().getId()); + final boolean isDeathKnightClass = CategoryData.getInstance().isInCategory(CategoryType.DEATH_KNIGHT_ALL_CLASS, _player.getClassId().getId()); for (int slot : getPaperdollOrder()) { + // Left hand items do not show on Death Knight characters. + if ((slot == Inventory.PAPERDOLL_LHAND) && isDeathKnightClass) + { + packet.writeD(0); + continue; + } + packet.writeD(_player.getInventory().getPaperdollItemDisplayId(slot)); // Confirmed } @@ -148,6 +158,13 @@ public class CharInfo implements IClientOutgoingPacket for (int slot : getPaperdollOrderVisualId()) { + // Left hand items do not show on Death Knight characters. + if ((slot == Inventory.PAPERDOLL_LHAND) && isDeathKnightClass) + { + packet.writeD(0); + continue; + } + packet.writeD(_player.getInventory().getPaperdollItemVisualId(slot)); } diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java index 334b5f2e8a..04ffadb655 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java @@ -41,9 +41,10 @@ import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager; */ public class ClassChange extends AbstractEffect { - private final int _index; private static final int IDENTITY_CRISIS_SKILL_ID = 1570; + private final int _index; + public ClassChange(StatSet params) { _index = params.getInt("index", 0); diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index 99dc9a7d88..4b9b76d898 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -26,9 +26,7 @@ import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.ai.CtrlEvent; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.NextAction; -import org.l2jmobius.gameserver.data.xml.CategoryData; import org.l2jmobius.gameserver.data.xml.VariationData; -import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.enums.ItemSkillType; import org.l2jmobius.gameserver.enums.PrivateStoreType; import org.l2jmobius.gameserver.enums.Race; @@ -45,7 +43,6 @@ import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.type.ActionType; -import org.l2jmobius.gameserver.model.item.type.ArmorType; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.network.GameClient; @@ -211,13 +208,6 @@ public class UseItem implements IClientIncomingPacket return; } - // Prevent equip shields for Death Knight players. - if (item.isArmor() && (item.getArmorItem().getItemType() == ArmorType.SHIELD) && CategoryData.getInstance().isInCategory(CategoryType.DEATH_KNIGHT_ALL_CLASS, player.getClassId().getId())) - { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_REQUIRED_CONDITION_TO_EQUIP_THAT_ITEM); - return; - } - // Prevent equip pistols for non Sylph players. if (item.isWeapon() && (item.getWeaponItem().getItemType() == WeaponType.PISTOLS) && (player.getRace() != Race.SYLPH)) { diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index dbab053663..72dc961926 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -20,6 +20,8 @@ import java.util.Set; import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.data.xml.CategoryData; +import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.RankManager; @@ -132,8 +134,16 @@ public class CharInfo implements IClientOutgoingPacket packet.writeC(_player.getAppearance().isFemale() ? 1 : 0); // Confirmed packet.writeD(_player.getBaseTemplate().getClassId().getRootClassId().getId()); + final boolean isDeathKnightClass = CategoryData.getInstance().isInCategory(CategoryType.DEATH_KNIGHT_ALL_CLASS, _player.getClassId().getId()); for (int slot : getPaperdollOrder()) { + // Left hand items do not show on Death Knight characters. + if ((slot == Inventory.PAPERDOLL_LHAND) && isDeathKnightClass) + { + packet.writeD(0); + continue; + } + packet.writeD(_player.getInventory().getPaperdollItemDisplayId(slot)); // Confirmed } @@ -148,6 +158,13 @@ public class CharInfo implements IClientOutgoingPacket for (int slot : getPaperdollOrderVisualId()) { + // Left hand items do not show on Death Knight characters. + if ((slot == Inventory.PAPERDOLL_LHAND) && isDeathKnightClass) + { + packet.writeD(0); + continue; + } + packet.writeD(_player.getInventory().getPaperdollItemVisualId(slot)); }