diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/config/Character.ini b/L2J_Mobius_4.0_GrandCrusade/dist/game/config/Character.ini index c7370e2d71..80902e60da 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/config/Character.ini +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/config/Character.ini @@ -831,6 +831,6 @@ GoDVideoIntro = True # Default: 16 AbilityMaxPoints = 16 -# Adena needed to reset used ability point. -# Default: 10000000 -AbilityPointsResetAdena = 10000000 +# SP needed to reset used ability point. +# Default: 500000000 +AbilityPointsResetSP = 500000000 diff --git a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/Config.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/Config.java index e822225315..033c694c4a 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/Config.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/Config.java @@ -577,7 +577,7 @@ public final class Config public static boolean HBCE_FAIR_PLAY; public static int PLAYER_MOVEMENT_BLOCK_TIME; public static int ABILITY_MAX_POINTS; - public static long ABILITY_POINTS_RESET_ADENA; + public static long ABILITY_POINTS_RESET_SP; public static int NORMAL_ENCHANT_COST_MULTIPLIER; public static int SAFE_ENCHANT_COST_MULTIPLIER; public static boolean BOTREPORT_ENABLE; @@ -1695,7 +1695,7 @@ public final class Config SHOW_GOD_VIDEO_INTRO = Character.getBoolean("GoDVideoIntro", true); PLAYER_MOVEMENT_BLOCK_TIME = Character.getInt("NpcTalkBlockingTime", 0) * 1000; ABILITY_MAX_POINTS = Character.getInt("AbilityMaxPoints", 16); - ABILITY_POINTS_RESET_ADENA = Character.getLong("AbilityPointsResetAdena", 10_000_000); + ABILITY_POINTS_RESET_SP = Character.getLong("AbilityPointsResetSP", 500000000); // Load Telnet config file (if exists) final PropertiesParser telnetSettings = new PropertiesParser(TELNET_CONFIG_FILE); diff --git a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/SystemMessageId.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/SystemMessageId.java index 27b56e38bd..b00080881d 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/SystemMessageId.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/SystemMessageId.java @@ -11890,8 +11890,8 @@ public final class SystemMessageId @ClientString(id = 4194, message = "Ability Points: $s1") public static SystemMessageId ABILITY_POINTS_S1; - @ClientString(id = 4195, message = "Abilities can be used by Noblesse/Exalted Lv. 99 or above.") - public static SystemMessageId ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE; + @ClientString(id = 4195, message = "Reach level 85 to use the ability.") + public static SystemMessageId REACH_LEVEL_85_TO_USE_THE_ABILITY; @ClientString(id = 4196, message = "The requested operation has failed. Please try again.") public static SystemMessageId THE_REQUESTED_OPERATION_HAS_FAILED_PLEASE_TRY_AGAIN; diff --git a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestAbilityList.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestAbilityList.java index 20cfe2b43f..e94bd45bdc 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestAbilityList.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestAbilityList.java @@ -48,9 +48,9 @@ public class RequestAbilityList implements IClientIncomingPacket return; } - if ((activeChar.getLevel() < 99) || (activeChar.getNobleLevel() == 0)) + if (activeChar.getLevel() < 85) { - activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); + activeChar.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } diff --git a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestAbilityWndClose.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestAbilityWndClose.java index bba56abdc8..be8e5a8349 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestAbilityWndClose.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestAbilityWndClose.java @@ -44,9 +44,9 @@ public class RequestAbilityWndClose implements IClientIncomingPacket return; } - if ((activeChar.getLevel() < 99) || (activeChar.getNobleLevel() == 0)) + if (activeChar.getLevel() < 85) { - activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); + activeChar.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } diff --git a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestAbilityWndOpen.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestAbilityWndOpen.java index bd5039b381..50645f8072 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestAbilityWndOpen.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestAbilityWndOpen.java @@ -44,9 +44,9 @@ public class RequestAbilityWndOpen implements IClientIncomingPacket return; } - if ((activeChar.getLevel() < 99) || (activeChar.getNobleLevel() == 0)) + if (activeChar.getLevel() < 85) { - activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); + activeChar.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } diff --git a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java index 9a65c0b9ab..550c346bca 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java @@ -90,9 +90,9 @@ public class RequestAcquireAbilityList implements IClientIncomingPacket return; } - if ((activeChar.getLevel() < 99) || (activeChar.getNobleLevel() == 0)) + if (activeChar.getLevel() < 85) { - activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); + activeChar.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } else if (activeChar.isInOlympiadMode() || activeChar.isOnEvent(CeremonyOfChaosEvent.class)) @@ -186,5 +186,6 @@ public class RequestAcquireAbilityList implements IClientIncomingPacket activeChar.setAbilityPointsUsed(activeChar.getAbilityPointsUsed() + points); } activeChar.sendPacket(new ExAcquireAPSkillList(activeChar)); + activeChar.broadcastUserInfo(); } } \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestChangeAbilityPoint.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestChangeAbilityPoint.java index 2f7a122e79..c079c179eb 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestChangeAbilityPoint.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestChangeAbilityPoint.java @@ -16,22 +16,10 @@ */ package com.l2jmobius.gameserver.network.clientpackets.ability; -import com.l2jmobius.Config; import com.l2jmobius.commons.network.PacketReader; -import com.l2jmobius.gameserver.data.xml.impl.AbilityPointsData; -import com.l2jmobius.gameserver.enums.UserInfoType; -import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; -import com.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import com.l2jmobius.gameserver.network.L2GameClient; -import com.l2jmobius.gameserver.network.SystemMessageId; import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import com.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import com.l2jmobius.gameserver.network.serverpackets.UserInfo; -import com.l2jmobius.gameserver.network.serverpackets.ability.ExAcquireAPSkillList; -/** - * @author UnAfraid - */ public class RequestChangeAbilityPoint implements IClientIncomingPacket { @Override @@ -43,56 +31,6 @@ public class RequestChangeAbilityPoint implements IClientIncomingPacket @Override public void run(L2GameClient client) { - final L2PcInstance activeChar = client.getActiveChar(); - if (activeChar == null) - { - return; - } - - if (activeChar.isSubClassActive() && !activeChar.isDualClassActive()) - { - return; - } - - if ((activeChar.getLevel() < 99) || (activeChar.getNobleLevel() == 0)) - { - activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); - return; - } - - if (activeChar.getAbilityPoints() >= Config.ABILITY_MAX_POINTS) - { - activeChar.sendPacket(SystemMessageId.YOU_CANNOT_ACQUIRE_ANY_MORE_ABILITY_POINTS); - return; - } - - if (activeChar.isInOlympiadMode() || activeChar.isOnEvent(CeremonyOfChaosEvent.class)) - { - activeChar.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); - return; - } - else if (activeChar.isOnEvent()) // custom event message - { - activeChar.sendMessage("You cannot use or reset Ability Points while participating in an event."); - return; - } - - final long spRequired = AbilityPointsData.getInstance().getPrice(activeChar.getAbilityPoints()); - if (spRequired > activeChar.getSp()) - { - final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOU_NEED_S1_SP_TO_CONVERT_TO1_ABILITY_POINT); - sm.addLong(spRequired); - activeChar.sendPacket(sm); - return; - } - - if (activeChar.getStat().removeSp(spRequired)) - { - activeChar.setAbilityPoints(activeChar.getAbilityPoints() + 1); - final UserInfo info = new UserInfo(activeChar, false); - info.addComponentType(UserInfoType.SLOTS, UserInfoType.CURRENT_HPMPCP_EXP_SP); - activeChar.sendPacket(info); - activeChar.sendPacket(new ExAcquireAPSkillList(activeChar)); - } + // removed } } diff --git a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java index ed43c52c44..e63b3cae0a 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java @@ -58,9 +58,9 @@ public class RequestResetAbilityPoint implements IClientIncomingPacket { return; } - else if ((activeChar.getLevel() < 99) || (activeChar.getNobleLevel() == 0)) + else if (activeChar.getLevel() < 85) { - client.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); + client.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } else if (activeChar.isInOlympiadMode() || activeChar.isOnEvent(CeremonyOfChaosEvent.class)) @@ -83,24 +83,23 @@ public class RequestResetAbilityPoint implements IClientIncomingPacket activeChar.sendMessage("You haven't used your ability points yet!"); return; } - else if (activeChar.getAdena() < Config.ABILITY_POINTS_RESET_ADENA) + else if (activeChar.getSp() < Config.ABILITY_POINTS_RESET_SP) { - client.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ADENA); + client.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_FOR_THIS); return; } + activeChar.setSp(activeChar.getSp() - Config.ABILITY_POINTS_RESET_SP); - if (activeChar.reduceAdena("AbilityPointsReset", Config.ABILITY_POINTS_RESET_ADENA, activeChar, true)) + for (L2SkillLearn sk : SkillTreesData.getInstance().getAbilitySkillTree().values()) { - for (L2SkillLearn sk : SkillTreesData.getInstance().getAbilitySkillTree().values()) + final Skill skill = activeChar.getKnownSkill(sk.getSkillId()); + if (skill != null) { - final Skill skill = activeChar.getKnownSkill(sk.getSkillId()); - if (skill != null) - { - activeChar.removeSkill(skill); - } + activeChar.removeSkill(skill); } - activeChar.setAbilityPointsUsed(0); - client.sendPacket(new ExAcquireAPSkillList(activeChar)); } + activeChar.setAbilityPointsUsed(0); + activeChar.sendPacket(new ExAcquireAPSkillList(activeChar)); + activeChar.broadcastUserInfo(); } } diff --git a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/serverpackets/ability/ExAcquireAPSkillList.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/serverpackets/ability/ExAcquireAPSkillList.java index f0d1ff56bc..50015ae337 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/serverpackets/ability/ExAcquireAPSkillList.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/serverpackets/ability/ExAcquireAPSkillList.java @@ -54,7 +54,7 @@ public class ExAcquireAPSkillList implements IClientOutgoingPacket } } } - _enable = (!activeChar.isSubClassActive() || activeChar.isDualClassActive()) && (activeChar.getLevel() >= 99) && (activeChar.getNobleLevel() > 0); + _enable = (!activeChar.isSubClassActive() || activeChar.isDualClassActive()) && (activeChar.getLevel() >= 85); } @Override @@ -63,7 +63,7 @@ public class ExAcquireAPSkillList implements IClientOutgoingPacket OutgoingPackets.EX_ACQUIRE_AP_SKILL_LIST.writeId(packet); packet.writeD(_enable ? 1 : 0); - packet.writeQ(Config.ABILITY_POINTS_RESET_ADENA); + packet.writeQ(Config.ABILITY_POINTS_RESET_SP); // Changed to from Adena to SP on Grand Crusade // packet.writeQ(_price); Removed on Grand Crusade // packet.writeD(Config.ABILITY_MAX_POINTS); Removed on Grand Crusade packet.writeD(_abilityPoints);