From 6cc0ba120c775defece2d76bab57de869bc8398c Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Fri, 27 Nov 2020 09:09:38 +0000 Subject: [PATCH] Proper display for shadow and light souls. --- .../model/actor/instance/PlayerInstance.java | 14 +++++++++++-- .../serverpackets/EtcStatusUpdate.java | 18 ++++++++++++++++- .../model/actor/instance/PlayerInstance.java | 14 +++++++++++-- .../serverpackets/EtcStatusUpdate.java | 20 ++++++++++++++++--- 4 files changed, 58 insertions(+), 8 deletions(-) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 81bc323a11..6122a3bdf8 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -11193,7 +11193,7 @@ public class PlayerInstance extends Playable // TODO: Unhardcode? if ((getRace() == Race.KAMAEL) && (_souls >= 100)) { - int skillLevel = getSkillLevel(KAMAEL_SHADOW_MASTER); + int skillLevel = getShadowMasterLevel(); if (skillLevel > 0) { abortCast(); @@ -11202,7 +11202,7 @@ public class PlayerInstance extends Playable } else { - skillLevel = getSkillLevel(KAMAEL_LIGHT_MASTER); + skillLevel = getLightMasterLevel(); if (skillLevel > 0) { abortCast(); @@ -11213,6 +11213,16 @@ public class PlayerInstance extends Playable } } + public int getLightMasterLevel() + { + return getSkillLevel(KAMAEL_LIGHT_MASTER); + } + + public int getShadowMasterLevel() + { + return getSkillLevel(KAMAEL_SHADOW_MASTER); + } + /** * Decreases existing Souls. * @param count diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/EtcStatusUpdate.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/EtcStatusUpdate.java index 95e9f83754..a8c808682d 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/EtcStatusUpdate.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/EtcStatusUpdate.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.enums.Race; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.network.OutgoingPackets; @@ -27,6 +28,8 @@ import org.l2jmobius.gameserver.network.OutgoingPackets; public class EtcStatusUpdate implements IClientOutgoingPacket { private final PlayerInstance _player; + private final boolean _isLight; + private final boolean _isShadow; private int _mask; public EtcStatusUpdate(PlayerInstance player) @@ -35,6 +38,17 @@ public class EtcStatusUpdate implements IClientOutgoingPacket _mask = _player.getMessageRefusal() || _player.isChatBanned() || _player.isSilenceMode() ? 1 : 0; _mask |= _player.isInsideZone(ZoneId.DANGER_AREA) ? 2 : 0; _mask |= _player.hasCharmOfCourage() ? 4 : 0; + + if (_player.getRace() == Race.KAMAEL) + { + _isLight = _player.getLightMasterLevel() > 0; + _isShadow = _player.getShadowMasterLevel() > 0; + } + else + { + _isLight = false; + _isShadow = false; + } } @Override @@ -47,8 +61,10 @@ public class EtcStatusUpdate implements IClientOutgoingPacket packet.writeC(0); // Weapon Grade Penalty [1-4] packet.writeC(0); // Armor Grade Penalty [1-4] packet.writeC(0); // Death Penalty [1-15, 0 = disabled)], not used anymore in Ertheia - packet.writeC(_player.getChargedSouls()); + packet.writeC(!_isShadow && !_isLight ? _player.getChargedSouls() : 0); packet.writeC(_mask); + packet.writeC(_isShadow ? _player.getChargedSouls() : 0); // Shadow souls + packet.writeC(_isLight ? _player.getChargedSouls() : 0); // Light souls return true; } } diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 2809a4fa7b..b4f108127f 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -11232,7 +11232,7 @@ public class PlayerInstance extends Playable // TODO: Unhardcode? if ((getRace() == Race.KAMAEL) && (_souls >= 100)) { - int skillLevel = getSkillLevel(KAMAEL_SHADOW_MASTER); + int skillLevel = getShadowMasterLevel(); if (skillLevel > 0) { abortCast(); @@ -11241,7 +11241,7 @@ public class PlayerInstance extends Playable } else { - skillLevel = getSkillLevel(KAMAEL_LIGHT_MASTER); + skillLevel = getLightMasterLevel(); if (skillLevel > 0) { abortCast(); @@ -11252,6 +11252,16 @@ public class PlayerInstance extends Playable } } + public int getLightMasterLevel() + { + return getSkillLevel(KAMAEL_LIGHT_MASTER); + } + + public int getShadowMasterLevel() + { + return getSkillLevel(KAMAEL_SHADOW_MASTER); + } + /** * Decreases existing Souls. * @param count diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/EtcStatusUpdate.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/EtcStatusUpdate.java index 6f1095c693..a8c808682d 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/EtcStatusUpdate.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/EtcStatusUpdate.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.enums.Race; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.network.OutgoingPackets; @@ -27,6 +28,8 @@ import org.l2jmobius.gameserver.network.OutgoingPackets; public class EtcStatusUpdate implements IClientOutgoingPacket { private final PlayerInstance _player; + private final boolean _isLight; + private final boolean _isShadow; private int _mask; public EtcStatusUpdate(PlayerInstance player) @@ -35,6 +38,17 @@ public class EtcStatusUpdate implements IClientOutgoingPacket _mask = _player.getMessageRefusal() || _player.isChatBanned() || _player.isSilenceMode() ? 1 : 0; _mask |= _player.isInsideZone(ZoneId.DANGER_AREA) ? 2 : 0; _mask |= _player.hasCharmOfCourage() ? 4 : 0; + + if (_player.getRace() == Race.KAMAEL) + { + _isLight = _player.getLightMasterLevel() > 0; + _isShadow = _player.getShadowMasterLevel() > 0; + } + else + { + _isLight = false; + _isShadow = false; + } } @Override @@ -47,10 +61,10 @@ public class EtcStatusUpdate implements IClientOutgoingPacket packet.writeC(0); // Weapon Grade Penalty [1-4] packet.writeC(0); // Armor Grade Penalty [1-4] packet.writeC(0); // Death Penalty [1-15, 0 = disabled)], not used anymore in Ertheia - packet.writeC(_player.getChargedSouls()); + packet.writeC(!_isShadow && !_isLight ? _player.getChargedSouls() : 0); packet.writeC(_mask); - packet.writeC(0); // Shadow souls - packet.writeC(0); // Light souls + packet.writeC(_isShadow ? _player.getChargedSouls() : 0); // Shadow souls + packet.writeC(_isLight ? _player.getChargedSouls() : 0); // Light souls return true; } }