From 3864680edd560f8afa9fef787925f78268930963 Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Mon, 16 Nov 2015 20:33:26 +0000 Subject: [PATCH] Moved alchemy packets to seperate folders. --- .../network/L2GamePacketHandler.java | 3 + .../clientpackets/RequestAcquireSkill.java | 2 +- .../RequestAlchemyTryMixCube.java | 118 ------------ .../RequestAlchemyConversion.java | 5 +- .../RequestAlchemySkillList.java | 5 +- .../alchemy/RequestAlchemyTryMixCube.java | 175 ++++++++++++++++++ .../{ => alchemy}/ExAlchemyConversion.java | 6 +- .../{ => alchemy}/ExAlchemySkillList.java | 6 +- .../{ => alchemy}/ExTryMixCube.java | 40 ++-- 9 files changed, 216 insertions(+), 144 deletions(-) delete mode 100644 trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestAlchemyTryMixCube.java rename trunk/java/com/l2jserver/gameserver/network/clientpackets/{ => alchemy}/RequestAlchemyConversion.java (91%) rename trunk/java/com/l2jserver/gameserver/network/clientpackets/{ => alchemy}/RequestAlchemySkillList.java (82%) create mode 100644 trunk/java/com/l2jserver/gameserver/network/clientpackets/alchemy/RequestAlchemyTryMixCube.java rename trunk/java/com/l2jserver/gameserver/network/serverpackets/{ => alchemy}/ExAlchemyConversion.java (83%) rename trunk/java/com/l2jserver/gameserver/network/serverpackets/{ => alchemy}/ExAlchemySkillList.java (84%) rename trunk/java/com/l2jserver/gameserver/network/serverpackets/{ => alchemy}/ExTryMixCube.java (56%) diff --git a/trunk/java/com/l2jserver/gameserver/network/L2GamePacketHandler.java b/trunk/java/com/l2jserver/gameserver/network/L2GamePacketHandler.java index e797db4f7d..a8767043f7 100644 --- a/trunk/java/com/l2jserver/gameserver/network/L2GamePacketHandler.java +++ b/trunk/java/com/l2jserver/gameserver/network/L2GamePacketHandler.java @@ -32,6 +32,9 @@ import com.l2jserver.gameserver.network.clientpackets.*; import com.l2jserver.gameserver.network.clientpackets.adenadistribution.RequestDivideAdena; import com.l2jserver.gameserver.network.clientpackets.adenadistribution.RequestDivideAdenaCancel; import com.l2jserver.gameserver.network.clientpackets.adenadistribution.RequestDivideAdenaStart; +import com.l2jserver.gameserver.network.clientpackets.alchemy.RequestAlchemyConversion; +import com.l2jserver.gameserver.network.clientpackets.alchemy.RequestAlchemySkillList; +import com.l2jserver.gameserver.network.clientpackets.alchemy.RequestAlchemyTryMixCube; import com.l2jserver.gameserver.network.clientpackets.appearance.RequestExCancelShape_Shifting_Item; import com.l2jserver.gameserver.network.clientpackets.appearance.RequestExTryToPutShapeShiftingEnchantSupportItem; import com.l2jserver.gameserver.network.clientpackets.appearance.RequestExTryToPutShapeShiftingTargetItem; diff --git a/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestAcquireSkill.java b/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestAcquireSkill.java index 67a2a9f13f..adea60c960 100644 --- a/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -48,7 +48,6 @@ import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.AcquireSkillDone; import com.l2jserver.gameserver.network.serverpackets.AcquireSkillList; import com.l2jserver.gameserver.network.serverpackets.ExAcquirableSkillListByClass; -import com.l2jserver.gameserver.network.serverpackets.ExAlchemySkillList; import com.l2jserver.gameserver.network.serverpackets.ExBasicActionList; import com.l2jserver.gameserver.network.serverpackets.ExStorageMaxCount; import com.l2jserver.gameserver.network.serverpackets.ItemList; @@ -56,6 +55,7 @@ import com.l2jserver.gameserver.network.serverpackets.PledgeSkillList; import com.l2jserver.gameserver.network.serverpackets.ShortCutInit; import com.l2jserver.gameserver.network.serverpackets.SystemMessage; import com.l2jserver.gameserver.network.serverpackets.UserInfo; +import com.l2jserver.gameserver.network.serverpackets.alchemy.ExAlchemySkillList; import com.l2jserver.gameserver.util.Util; /** diff --git a/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestAlchemyTryMixCube.java b/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestAlchemyTryMixCube.java deleted file mode 100644 index 83109f072e..0000000000 --- a/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestAlchemyTryMixCube.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (C) 2004-2015 L2J Server - * - * This file is part of L2J Server. - * - * L2J Server is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * L2J Server is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package com.l2jserver.gameserver.network.clientpackets; - -import com.l2jserver.gameserver.enums.Race; -import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; -import com.l2jserver.gameserver.network.serverpackets.ExTryMixCube; -import com.l2jserver.gameserver.network.serverpackets.ItemList; - -/** - * @author GenCloud - */ -public class RequestAlchemyTryMixCube extends L2GameClientPacket -{ - private int _activeItems; - private int[] _objId; - private long[] _itemCounts; - private long _allPrice = 0; - private long _stoneCount; - private final int _stoneID = 39461; - @SuppressWarnings("unused") - private final boolean _isActiveMegaStone = false; - - @Override - protected void readImpl() - { - _activeItems = readD(); - - _objId = new int[5]; - _itemCounts = new long[5]; - - switch (_activeItems) - { - case 1: - { - _objId[1] = readD(); - _itemCounts[1] = readQ(); - break; - } - case 2: - { - _objId[1] = readD(); - _itemCounts[1] = readQ(); - _objId[2] = readD(); - _itemCounts[2] = readQ(); - break; - } - case 3: - { - _objId[1] = readD(); - _itemCounts[1] = readQ(); - _objId[2] = readD(); - _itemCounts[2] = readQ(); - _objId[3] = readD(); - _itemCounts[3] = readQ(); - break; - } - case 4: - { - _objId[1] = readD(); - _itemCounts[1] = readQ(); - _objId[2] = readD(); - _itemCounts[2] = readQ(); - _objId[3] = readD(); - _itemCounts[3] = readQ(); - _objId[4] = readD(); - _itemCounts[4] = readQ(); - break; - } - } - } - - @Override - protected void runImpl() - { - final L2PcInstance activeChar = getClient().getActiveChar(); - - if ((activeChar == null) || (activeChar.getRace() != Race.ERTHEIA)) - { - return; - } - - for (int i = 1; i <= _activeItems; i++) - { - _allPrice = _allPrice + (_itemCounts[i] * activeChar.getInventory().getItemByObjectId(_objId[i]).getReferencePrice()); - activeChar.getInventory().destroyItem("Alchemy", _objId[i], _itemCounts[i], activeChar, null); - } - - _stoneCount = _allPrice / 10000; // TODO: formula is not the correct ratio - - activeChar.getInventory().addItem("Alchemy", _stoneID, _stoneCount, activeChar, null); - - activeChar.sendPacket(new ExTryMixCube(_stoneCount, _stoneID, 0)); - activeChar.sendPacket(new ItemList(activeChar, false)); - } - - @Override - public String getType() - { - return getClass().getSimpleName(); - } -} diff --git a/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestAlchemyConversion.java b/trunk/java/com/l2jserver/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java similarity index 91% rename from trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestAlchemyConversion.java rename to trunk/java/com/l2jserver/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java index ee3e11aac6..b7e5ae1835 100644 --- a/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestAlchemyConversion.java +++ b/trunk/java/com/l2jserver/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java @@ -16,7 +16,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.l2jserver.gameserver.network.clientpackets; +package com.l2jserver.gameserver.network.clientpackets.alchemy; import com.l2jserver.gameserver.datatables.SkillData; import com.l2jserver.gameserver.enums.Race; @@ -25,8 +25,9 @@ import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.holders.ItemHolder; import com.l2jserver.gameserver.model.skills.Skill; import com.l2jserver.gameserver.network.SystemMessageId; -import com.l2jserver.gameserver.network.serverpackets.ExAlchemyConversion; +import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket; import com.l2jserver.gameserver.network.serverpackets.ItemList; +import com.l2jserver.gameserver.network.serverpackets.alchemy.ExAlchemyConversion; import com.l2jserver.util.Rnd; /** diff --git a/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestAlchemySkillList.java b/trunk/java/com/l2jserver/gameserver/network/clientpackets/alchemy/RequestAlchemySkillList.java similarity index 82% rename from trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestAlchemySkillList.java rename to trunk/java/com/l2jserver/gameserver/network/clientpackets/alchemy/RequestAlchemySkillList.java index 9f3ab4f5b7..5f6d8c2def 100644 --- a/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestAlchemySkillList.java +++ b/trunk/java/com/l2jserver/gameserver/network/clientpackets/alchemy/RequestAlchemySkillList.java @@ -16,11 +16,12 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.l2jserver.gameserver.network.clientpackets; +package com.l2jserver.gameserver.network.clientpackets.alchemy; import com.l2jserver.gameserver.enums.Race; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; -import com.l2jserver.gameserver.network.serverpackets.ExAlchemySkillList; +import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket; +import com.l2jserver.gameserver.network.serverpackets.alchemy.ExAlchemySkillList; /** * @author UnAfraid diff --git a/trunk/java/com/l2jserver/gameserver/network/clientpackets/alchemy/RequestAlchemyTryMixCube.java b/trunk/java/com/l2jserver/gameserver/network/clientpackets/alchemy/RequestAlchemyTryMixCube.java new file mode 100644 index 0000000000..92eff6e98c --- /dev/null +++ b/trunk/java/com/l2jserver/gameserver/network/clientpackets/alchemy/RequestAlchemyTryMixCube.java @@ -0,0 +1,175 @@ +/* + * Copyright (C) 2004-2015 L2J Server + * + * This file is part of L2J Server. + * + * L2J Server is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * L2J Server is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.l2jserver.gameserver.network.clientpackets.alchemy; + +import java.util.HashMap; +import java.util.Map; + +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; +import com.l2jserver.gameserver.model.itemcontainer.Inventory; +import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; +import com.l2jserver.gameserver.network.SystemMessageId; +import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket; +import com.l2jserver.gameserver.network.serverpackets.alchemy.ExTryMixCube; + +public class RequestAlchemyTryMixCube extends L2GameClientPacket +{ + private final static int AIR_STONE = 39461; + private final static int ELCYUM_CRYSTAL = 36514; + private final Map _items = new HashMap<>(); + + public RequestAlchemyTryMixCube() + { + _items.clear(); + } + + @Override + protected void readImpl() + { + final int count = readD(); + for (int i = 0; i < count; ++i) + { + final int itemObjectId = readD(); + final long itemCount = readQ(); + _items.put(itemObjectId, itemCount); + } + } + + @Override + protected void runImpl() + { + final L2PcInstance activeChar = getClient().getActiveChar(); + if (activeChar == null) + { + return; + } + if ((_items == null) || _items.isEmpty()) + { + activeChar.sendPacket(ExTryMixCube.FAIL); + return; + } + if (activeChar.isInCombat()) + { + activeChar.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_DURING_BATTLE); + activeChar.sendPacket(ExTryMixCube.FAIL); + return; + } + if (activeChar.isInStoreMode() || activeChar.isInStoreMode()) + { + activeChar.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_TRADING_OR_USING_A_PRIVATE_STORE_OR_SHOP); + activeChar.sendPacket(ExTryMixCube.FAIL); + return; + } + if (activeChar.isDead()) + { + activeChar.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_DEAD); + activeChar.sendPacket(ExTryMixCube.FAIL); + return; + } + if (activeChar.isMovementDisabled()) + { + activeChar.sendPacket(SystemMessageId.YOU_CANNOT_USE_ALCHEMY_WHILE_IMMOBILE); + activeChar.sendPacket(ExTryMixCube.FAIL); + return; + } + + long totalPrice = 0; + long count = 0; + for (int itemId : _items.keySet()) + { + final int itemObjectId = itemId; + final long itemCount = _items.get(itemId); + final L2ItemInstance item = activeChar.getInventory().getItemByObjectId(itemObjectId); + if (item != null) + { + if (item.getCount() < itemCount) + { + continue; + } + if (!item.isDestroyable()) + { + continue; + } + if (item.getEnchantLevel() > 0) + { + continue; + } + if (item.isAugmented()) + { + continue; + } + if (item.isShadowItem()) + { + continue; + } + if (item.getId() == ELCYUM_CRYSTAL) + { + if (_items.size() <= 3) + { + continue; + } + count = itemCount; + } + else + { + final long price = item.getId() == Inventory.ADENA_ID ? itemCount : item.getReferencePrice(); + if (price <= 0) + { + continue; + } + totalPrice += price; + } + activeChar.destroyItem("AlchemyMixCube", itemObjectId, itemCount, activeChar, true); + } + } + + long stoneCount = 0; + if (totalPrice > 0) + { + if (_items.size() >= 3) + { + stoneCount = totalPrice / 10000; + stoneCount += count * 1000; + } + else if ((totalPrice >= 20000) && (totalPrice < 35000)) + { + stoneCount = 1; + } + else if ((totalPrice >= 35000) && (totalPrice < 50000)) + { + stoneCount = 2; + } + else if (totalPrice >= 50000) + { + stoneCount = (long) Math.floor(totalPrice / 16666.666666666668); + } + } + if (stoneCount > 0) + { + activeChar.addItem("AlchemyMixCube", AIR_STONE, stoneCount, activeChar, true); + } + activeChar.sendPacket(new ExTryMixCube(AIR_STONE, stoneCount)); + } + + @Override + public String getType() + { + return getClass().getSimpleName(); + } +} diff --git a/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExAlchemyConversion.java b/trunk/java/com/l2jserver/gameserver/network/serverpackets/alchemy/ExAlchemyConversion.java similarity index 83% rename from trunk/java/com/l2jserver/gameserver/network/serverpackets/ExAlchemyConversion.java rename to trunk/java/com/l2jserver/gameserver/network/serverpackets/alchemy/ExAlchemyConversion.java index 89dc751b45..893a3c6acd 100644 --- a/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExAlchemyConversion.java +++ b/trunk/java/com/l2jserver/gameserver/network/serverpackets/alchemy/ExAlchemyConversion.java @@ -16,7 +16,9 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.l2jserver.gameserver.network.serverpackets; +package com.l2jserver.gameserver.network.serverpackets.alchemy; + +import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket; /** * @author Mobius @@ -35,7 +37,7 @@ public class ExAlchemyConversion extends L2GameServerPacket @Override protected void writeImpl() { - writeC(0x00); // Unk + writeC(0x00); // Unk??? writeD(_itemCount); writeD(_failCount); } diff --git a/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExAlchemySkillList.java b/trunk/java/com/l2jserver/gameserver/network/serverpackets/alchemy/ExAlchemySkillList.java similarity index 84% rename from trunk/java/com/l2jserver/gameserver/network/serverpackets/ExAlchemySkillList.java rename to trunk/java/com/l2jserver/gameserver/network/serverpackets/alchemy/ExAlchemySkillList.java index badc16ef0d..006acaa24b 100644 --- a/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExAlchemySkillList.java +++ b/trunk/java/com/l2jserver/gameserver/network/serverpackets/alchemy/ExAlchemySkillList.java @@ -16,7 +16,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.l2jserver.gameserver.network.serverpackets; +package com.l2jserver.gameserver.network.serverpackets.alchemy; import java.util.ArrayList; import java.util.List; @@ -24,12 +24,14 @@ import java.util.List; import com.l2jserver.gameserver.data.xml.impl.SkillTreesData; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.skills.Skill; +import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket; /** * @author UnAfraid */ public class ExAlchemySkillList extends L2GameServerPacket { + private final static int ALCHEMY_CUBE_SKILL = 17943; private final List _skills = new ArrayList<>(); public ExAlchemySkillList(final L2PcInstance player) @@ -55,7 +57,7 @@ public class ExAlchemySkillList extends L2GameServerPacket writeD(skill.getId()); writeD(skill.getLevel()); writeQ(0x00); // Always 0 on Naia, SP i guess? - writeC(0x01); // Always 1 on Naia + writeC(skill.getId() == ALCHEMY_CUBE_SKILL ? 0 : 1); } } } diff --git a/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExTryMixCube.java b/trunk/java/com/l2jserver/gameserver/network/serverpackets/alchemy/ExTryMixCube.java similarity index 56% rename from trunk/java/com/l2jserver/gameserver/network/serverpackets/ExTryMixCube.java rename to trunk/java/com/l2jserver/gameserver/network/serverpackets/alchemy/ExTryMixCube.java index fc5d90db11..4d86fc41a6 100644 --- a/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExTryMixCube.java +++ b/trunk/java/com/l2jserver/gameserver/network/serverpackets/alchemy/ExTryMixCube.java @@ -16,32 +16,38 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.l2jserver.gameserver.network.serverpackets; +package com.l2jserver.gameserver.network.serverpackets.alchemy; + +import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket; -/** - * @author GenCloud - */ public class ExTryMixCube extends L2GameServerPacket { - private final int _stoneID; - private final long _count; - @SuppressWarnings("unused") - private final int _typePacket; + public static final L2GameServerPacket FAIL = new ExTryMixCube(6); + private final int _result; + private final int _itemId; + private final long _itemCount; - public ExTryMixCube(long count, int stoneId, int type) + public ExTryMixCube(final int result) { - _count = count; - _typePacket = type; - _stoneID = stoneId; + _result = result; + _itemId = 0; + _itemCount = 0; + } + + public ExTryMixCube(final int itemId, final long itemCount) + { + _result = 0; + _itemId = itemId; + _itemCount = itemCount; } @Override protected void writeImpl() { - writeC(0x00); // Unk - writeC(0x01); // Type - writeD(0x00); // Unk - writeD(_stoneID); // StoneID - writeQ(_count); // Count + writeC(_result); + writeD(0x01); + writeC(0x00); + writeD(_itemId); + writeQ(_itemCount); } }