From 45c02973b759c8f836ff02cc9beb8f38097fd065 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Tue, 27 Apr 2021 12:22:23 +0000 Subject: [PATCH] Support for honor points. --- .../gameserver/enums/SpecialItemType.java | 3 ++- .../model/actor/instance/PlayerInstance.java | 10 ++++++++++ .../model/teleporter/TeleportHolder.java | 4 ++++ .../clientpackets/MultiSellChoose.java | 20 ++++++++++++++++++- .../gameserver/enums/SpecialItemType.java | 3 ++- .../model/actor/instance/PlayerInstance.java | 10 ++++++++++ .../model/teleporter/TeleportHolder.java | 4 ++++ .../clientpackets/MultiSellChoose.java | 20 ++++++++++++++++++- .../RequestPurchaseLimitShopItemBuy.java | 14 +++++++++++++ .../ExPurchaseLimitShopItemListNew.java | 1 + 10 files changed, 85 insertions(+), 4 deletions(-) diff --git a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/enums/SpecialItemType.java b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/enums/SpecialItemType.java index 9829cf955a..bbc43c88c3 100644 --- a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/enums/SpecialItemType.java +++ b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/enums/SpecialItemType.java @@ -25,7 +25,8 @@ public enum SpecialItemType CLAN_REPUTATION(-200), FAME(-300), FIELD_CYCLE_POINTS(-400), - RAIDBOSS_POINTS(-500); + RAIDBOSS_POINTS(-500), + HONOR_POINTS(-700); private int _clientId; diff --git a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 3ce80d8f4a..9086a23196 100644 --- a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -12916,6 +12916,16 @@ public class PlayerInstance extends Playable _pcCafePoints = count < Config.PC_CAFE_MAX_POINTS ? count : Config.PC_CAFE_MAX_POINTS; } + public long getHonorPoints() + { + return getVariables().getLong("HONOR_POINTS", 0); + } + + public void setHonorPoints(long value) + { + getVariables().set("HONOR_POINTS", value); + } + /** * Check all player skills for skill level. If player level is lower than skill learn level - 9, skill level is decreased to next possible level. */ diff --git a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index e81350daee..74c6d3f7d1 100644 --- a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -359,6 +359,10 @@ public class TeleportHolder { return "Raid Points"; } + case HONOR_POINTS: + { + return "Honor Points"; + } } } return "Unknown item: " + itemId; diff --git a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/MultiSellChoose.java b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/MultiSellChoose.java index ba55abb399..bd52c975ed 100644 --- a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/MultiSellChoose.java +++ b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/MultiSellChoose.java @@ -218,7 +218,6 @@ public class MultiSellChoose implements IClientIncomingPacket player.sendPacket(SystemMessageId.YOU_ARE_NOT_A_CLAN_MEMBER_AND_CANNOT_PERFORM_THIS_ACTION); return; } - continue; } @@ -366,6 +365,11 @@ public class MultiSellChoose implements IClientIncomingPacket player.sendPacket(new ExPCCafePointInfo(player.getPcCafePoints(), (int) -totalCount, 1)); break; } + case HONOR_POINTS: + { + player.setHonorPoints(player.getHonorPoints() - totalCount); + break; + } default: { LOGGER.severe("Character: " + player.getName() + " has suffered possible item loss by using multisell " + _listId + " which has non-implemented special ingredient with id: " + ingredient.getId() + "."); @@ -464,6 +468,11 @@ public class MultiSellChoose implements IClientIncomingPacket player.sendPacket(new UserInfo(player)); break; } + case HONOR_POINTS: + { + player.setHonorPoints(player.getHonorPoints() + totalCount); + break; + } default: { LOGGER.severe("Character: " + player.getName() + " has suffered possible item loss by using multisell " + _listId + " which has non-implemented special product with id: " + product.getId() + "."); @@ -656,6 +665,15 @@ public class MultiSellChoose implements IClientIncomingPacket } return true; } + case HONOR_POINTS: + { + if (player.getHonorPoints() < totalCount) + { + player.sendMessage("You are short of Honor Points."); + return false; + } + return true; + } default: { LOGGER.severe("Multisell: " + _listId + " is using a non-implemented special ingredient with id: " + ingredientId + "."); diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/enums/SpecialItemType.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/enums/SpecialItemType.java index 9829cf955a..bbc43c88c3 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/enums/SpecialItemType.java +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/enums/SpecialItemType.java @@ -25,7 +25,8 @@ public enum SpecialItemType CLAN_REPUTATION(-200), FAME(-300), FIELD_CYCLE_POINTS(-400), - RAIDBOSS_POINTS(-500); + RAIDBOSS_POINTS(-500), + HONOR_POINTS(-700); private int _clientId; diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index bb807cea20..145cf92b54 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -12874,6 +12874,16 @@ public class PlayerInstance extends Playable _pcCafePoints = count < Config.PC_CAFE_MAX_POINTS ? count : Config.PC_CAFE_MAX_POINTS; } + public long getHonorPoints() + { + return getVariables().getLong("HONOR_POINTS", 0); + } + + public void setHonorPoints(long value) + { + getVariables().set("HONOR_POINTS", value); + } + /** * Check all player skills for skill level. If player level is lower than skill learn level - 9, skill level is decreased to next possible level. */ diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index 4018ad748c..78d6392d5b 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -359,6 +359,10 @@ public class TeleportHolder { return "Raid Points"; } + case HONOR_POINTS: + { + return "Honor Points"; + } } } return "Unknown item: " + itemId; diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/MultiSellChoose.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/MultiSellChoose.java index 9fe97bd58a..3c82a94999 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/MultiSellChoose.java +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/MultiSellChoose.java @@ -218,7 +218,6 @@ public class MultiSellChoose implements IClientIncomingPacket player.sendPacket(SystemMessageId.YOU_ARE_NOT_A_CLAN_MEMBER_AND_CANNOT_PERFORM_THIS_ACTION); return; } - continue; } @@ -366,6 +365,11 @@ public class MultiSellChoose implements IClientIncomingPacket player.sendPacket(new ExPCCafePointInfo(player.getPcCafePoints(), (int) -totalCount, 1)); break; } + case HONOR_POINTS: + { + player.setHonorPoints(player.getHonorPoints() - totalCount); + break; + } default: { LOGGER.severe("Character: " + player.getName() + " has suffered possible item loss by using multisell " + _listId + " which has non-implemented special ingredient with id: " + ingredient.getId() + "."); @@ -464,6 +468,11 @@ public class MultiSellChoose implements IClientIncomingPacket player.sendPacket(new UserInfo(player)); break; } + case HONOR_POINTS: + { + player.setHonorPoints(player.getHonorPoints() + totalCount); + break; + } default: { LOGGER.severe("Character: " + player.getName() + " has suffered possible item loss by using multisell " + _listId + " which has non-implemented special product with id: " + product.getId() + "."); @@ -656,6 +665,15 @@ public class MultiSellChoose implements IClientIncomingPacket } return true; } + case HONOR_POINTS: + { + if (player.getHonorPoints() < totalCount) + { + player.sendMessage("You are short of Honor Points."); + return false; + } + return true; + } default: { LOGGER.severe("Multisell: " + _listId + " is using a non-implemented special ingredient with id: " + ingredientId + "."); diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/limitshop/RequestPurchaseLimitShopItemBuy.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/limitshop/RequestPurchaseLimitShopItemBuy.java index 1bfef55b46..2b85b80b8e 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/limitshop/RequestPurchaseLimitShopItemBuy.java +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/limitshop/RequestPurchaseLimitShopItemBuy.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.data.xml.LCoinShopData; +import org.l2jmobius.gameserver.enums.SpecialItemType; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PrimeShopRequest; import org.l2jmobius.gameserver.model.holders.LCoinShopProductHolder; @@ -124,6 +125,15 @@ public class RequestPurchaseLimitShopItemBuy implements IClientIncomingPacket return; } } + else if (product.getIngredientIds()[i] == SpecialItemType.HONOR_POINTS.getClientId()) + { + if (player.getHonorPoints() < (product.getIngredientQuantities()[i] * _amount)) + { + player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT_2); + player.removeRequest(PrimeShopRequest.class); + return; + } + } else if (player.getInventory().getInventoryItemCount(product.getIngredientIds()[i], -1, true) < (product.getIngredientQuantities()[i] * _amount)) { player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT_2); @@ -143,6 +153,10 @@ public class RequestPurchaseLimitShopItemBuy implements IClientIncomingPacket { player.reduceAdena("LCoinShop", product.getIngredientQuantities()[i] * _amount, player, true); } + else if (product.getIngredientIds()[i] == SpecialItemType.HONOR_POINTS.getClientId()) + { + player.setHonorPoints(player.getHonorPoints() - (product.getIngredientQuantities()[i] * _amount)); + } else { player.destroyItemByItemId("LCoinShop", product.getIngredientIds()[i], product.getIngredientQuantities()[i] * _amount, player, true); diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/limitshop/ExPurchaseLimitShopItemListNew.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/limitshop/ExPurchaseLimitShopItemListNew.java index 00b9bded19..c82a1bd777 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/limitshop/ExPurchaseLimitShopItemListNew.java +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/limitshop/ExPurchaseLimitShopItemListNew.java @@ -54,6 +54,7 @@ public class ExPurchaseLimitShopItemListNew implements IClientOutgoingPacket _products = LCoinShopSpecialCraftData.getInstance().getProducts(); break; } + case 100: // Clan Shop default: { _products = LCoinShopData.getInstance().getProducts();