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);
}
}