diff --git a/trunk/dist/game/data/stats/skills/17900-17999.xml b/trunk/dist/game/data/stats/skills/17900-17999.xml
index a56cd0c036..cce716256e 100644
--- a/trunk/dist/game/data/stats/skills/17900-17999.xml
+++ b/trunk/dist/game/data/stats/skills/17900-17999.xml
@@ -159,201 +159,499 @@
-
+
+ 1540,2;39461,2
+ 39471,2;39461,2
+ 39472,2;39461,2
+ 39473,2;39461,2
+
+
+ 39471,1
+ 39472,1
+ 39473,1
+ 39474,1
+
+
+
-
+
+ 1061,2;39461,1
+ 39466,2;39461,1
+ 39467,2;39461,1
+ 39468,2;39461,1
+
+
+ 39466,3
+ 39467,2
+ 39468,2
+ 39469,2
+
+
+
-
+
+ 6035,3;735,2;39461,20
+ 39476,2;39461,2
+ 32316,2;39461,3
+ 39478,2;39461,1
+
+
+ 39476,1
+ 39477,1
+ 39478,1
+ 39479,1
+
+
+
-
+
+ 37097,3;37098,2;37099,1
+
+
+
+
-
icon.etc_potion_scarlet_i00 icon.etc_potion_gold_i00 icon.love_potion
+
+ 39469,2;39592,1
+ 39474,2;39592,2
+ 37041,3;39479,1;39592,1
+
+
+ 39470,50
+ 39475,10
+ 39480,1
+
+
+
-
-
icon.giant_scrl_of_ench_am_r icon.giant_scrl_of_ench_wp_r
+
+ 17527,2;39461,3
+ 17526,2;39461,3
+
+
+
+
-
icon.giant_ench_armor_stone_r_i01 icon.giant_ench_wp_stone_r_i01
+
+ 36389,2;39461,3
+ 36386,2;39461,2
+
+
+
+
-
icon.giant_ench_armor_stone_r_i02 icon.giant_ench_wp_stone_r_i02
+
+ 39462,2;39592,2
+ 39463,2;39592,2
+
+
+
+
-
icon.lv1_unique_dye_men_luc icon.lv1_unique_dye_con_luc icon.lv1_unique_dye_wit_luc icon.lv1_unique_dye_dex_luc icon.lv1_unique_dye_int_luc icon.lv1_unique_dye_str_luc
-
-
-
17642,3;39386,2;39461,100
- 17642,3;39386,2;39461,100
- 17642,3;39386,2;39461,100
- 17642,3;39386,2;39461,100
- 17642,3;39386,2;39461,100
- 17642,3;39386,2;39461,100
+ 17639,3;39386,2;39461,100
+ 17641,3;39386,2;39461,100
+ 17638,3;39386,2;39461,100
+ 17640,3;39386,2;39461,100
+ 17637,3;39386,2;39461,100
39426,1
- 39426,1
- 39426,1
- 39426,1
- 39426,1
- 39426,1
+ 39423,1
+ 39425,1
+ 39422,1
+ 39424,1
+ 39421,1
+
+
+
-
icon.lv2_unique_dye_men_luc icon.lv2_unique_dye_con_luc icon.lv2_unique_dye_wit_luc icon.lv2_unique_dye_dex_luc icon.lv2_unique_dye_int_luc icon.lv2_unique_dye_str_luc
+
+ 17660,3;39387,2;39461,100
+ 17657,3;39387,2;39461,100
+ 17659,3;39387,2;39461,100
+ 17656,3;39387,2;39461,100
+ 17658,3;39387,2;39461,100
+ 17655,3;39387,2;39461,100
+
+
+ 39432,1
+ 39429,1
+ 39431,1
+ 39428,1
+ 39430,1
+ 39427,1
+
+
+
-
icon.lv3_unique_dye_men_luc icon.lv3_unique_dye_con_luc icon.lv3_unique_dye_wit_luc icon.lv3_unique_dye_dex_luc icon.lv3_unique_dye_int_luc icon.lv3_unique_dye_str_luc
+
+ 17678,3;39388,2;39461,100
+ 17675,3;39388,2;39461,100
+ 17677,3;39388,2;39461,100
+ 17674,3;39388,2;39461,100
+ 17676,3;39388,2;39461,100
+ 17673,3;39388,2;39461,100
+
+
+ 39438,1
+ 39435,1
+ 39437,1
+ 39434,1
+ 39436,1
+ 39433,1
+
+
+
-
icon.lv4_unique_dye_men_luc icon.lv4_unique_dye_con_luc icon.lv4_unique_dye_wit_luc icon.lv4_unique_dye_dex_luc icon.lv4_unique_dye_int_luc icon.lv4_unique_dye_str_luc
+
+ 17696,3;39389,2;39461,100
+ 17693,3;39389,2;39461,100
+ 17695,3;39389,2;39461,100
+ 17692,3;39389,2;39461,100
+ 17694,3;39389,2;39461,100
+ 17691,3;39389,2;39461,100
+
+
+ 39444,1
+ 39441,1
+ 39443,1
+ 39440,1
+ 39442,1
+ 39439,1
+
+
+
-
icon.lv1_unique_dye_men_cha icon.lv1_unique_dye_con_cha icon.lv1_unique_dye_wit_cha icon.lv1_unique_dye_dex_cha icon.lv1_unique_dye_int_cha icon.lv1_unique_dye_str_cha
+
+ 17642,3;39381,2;39461,100
+ 17639,3;39381,2;39461,100
+ 17641,3;39381,2;39461,100
+ 17638,3;39381,2;39461,100
+ 17640,3;39381,2;39461,100
+ 17637,3;39381,2;39461,100
+
+
+ 39396,1
+ 39393,1
+ 39395,1
+ 39392,1
+ 39394,1
+ 39391,1
+
+
+
-
icon.lv2_unique_dye_men_cha icon.lv2_unique_dye_con_cha icon.lv2_unique_dye_wit_cha icon.lv2_unique_dye_dex_cha icon.lv2_unique_dye_int_cha icon.lv2_unique_dye_str_cha
+
+ 17660,3;39382,2;39461,100
+ 17657,3;39382,2;39461,100
+ 17659,3;39382,2;39461,100
+ 17656,3;39382,2;39461,100
+ 17658,3;39382,2;39461,100
+ 17655,3;39382,2;39461,100
+
+
+ 39402,1
+ 39399,1
+ 39401,1
+ 39398,1
+ 39400,1
+ 39397,1
+
+
+
-
icon.lv3_unique_dye_men_cha icon.lv3_unique_dye_con_cha icon.lv3_unique_dye_wit_cha icon.lv3_unique_dye_dex_cha icon.lv3_unique_dye_int_cha icon.lv3_unique_dye_str_cha
+
+ 17678,3;39383,2;39461,100
+ 17675,3;39383,2;39461,100
+ 17677,3;39383,2;39461,100
+ 17674,3;39383,2;39461,100
+ 17676,3;39383,2;39461,100
+ 17673,3;39383,2;39461,100
+
+
+ 39408,1
+ 39405,1
+ 39407,1
+ 39404,1
+ 39406,1
+ 39403,1
+
+
+
-
icon.lv4_unique_dye_men_cha icon.lv4_unique_dye_con_cha icon.lv4_unique_dye_wit_cha icon.lv4_unique_dye_dex_cha icon.lv4_unique_dye_int_cha icon.lv4_unique_dye_str_cha
+
+ 17696,3;39384,2;39461,100
+ 17693,3;39384,2;39461,100
+ 17695,3;39384,2;39461,100
+ 17692,3;39384,2;39461,100
+ 17694,3;39384,2;39461,100
+ 17691,3;39384,2;39461,100
+
+
+ 39414,1
+ 39411,1
+ 39413,1
+ 39410,1
+ 39412,1
+ 39409,1
+
+
+
-
icon.lv5_unique_dye_men_luc icon.lv5_unique_dye_con_luc icon.lv5_unique_dye_wit_luc icon.lv5_unique_dye_dex_luc icon.lv5_unique_dye_int_luc icon.lv5_unique_dye_str_luc icon.lv5_unique_dye_men_cha icon.lv5_unique_dye_con_cha icon.lv5_unique_dye_wit_cha icon.lv5_unique_dye_dex_cha icon.lv5_unique_dye_int_cha icon.lv5_unique_dye_str_cha icon.lv5_unique_dye_cha_luc icon.lv5_unique_dye_luc_cha
+
+ 17714,3;39390,2;39592,1
+ 17711,3;39390,2;39592,1
+ 17713,3;39390,2;39592,1
+ 17710,3;39390,2;39592,1
+ 17712,3;39390,2;39592,1
+ 17709,3;39390,2;39592,1
+ 17714,3;39385,2;39592,1
+ 17711,3;39385,2;39592,1
+ 17713,3;39385,2;39592,1
+ 17710,3;39385,2;39592,1
+ 17712,3;39385,2;39592,1
+ 17709,3;39385,2;39592,1
+ 39385,3;39390,2;39592,1
+ 39390,3;39385,2;39592,1
+
+
+ 39450,1
+ 39447,1
+ 39449,1
+ 39446,1
+ 39448,1
+ 39445,1
+ 39420,1
+ 39417,1
+ 39419,1
+ 39416,1
+ 39418,1
+ 39415,1
+ 39455,1
+ 39460,1
+
+
+
-
-
icon.r_mineral_special_i00 icon.r_mineral_rare_i00 icon.r_mineral_unique_i00
+
+ 18563,2;39461,3
+ 18564,2;39461,2
+ 18565,2;39461,3
+
+
+ 18564,2
+ 18565,1
+ 18566,1
+
+
+
-
icon.r95_mineral_special_i00 icon.r95_mineral_rare_i00 icon.r95_mineral_unique_i00
+
+ 18568,2;39461,2
+ 18569,2;39461,2
+ 18570,2;39461,3
+
+
+ 18569,1
+ 18570,1
+ 18571,1
+
+
+
-
icon.r99_mineral_special_i00 icon.r99_mineral_rare_i00 icon.r99_mineral_unique_i00
+
+ 18573,2;39461,2
+ 18574,2;39461,2
+ 18575,2;39461,3
+
+
+ 18574,1
+ 18575,1
+ 18576,1
+
+
+
-
+
+ 18576,3;36515,10;39592,50
+
+
+
+
-
-
icon.lv1_unique_dye_cha_luc icon.lv2_unique_dye_cha_luc icon.lv3_unique_dye_cha_luc icon.lv4_unique_dye_cha_luc
+
+ 39381,3;39386,2;39461,100
+ 39382,3;39387,2;39461,100
+ 39383,3;39388,2;39461,100
+ 39384,3;39389,2;39461,100
+
+
+ 39451,1
+ 39452,1
+ 39453,1
+ 39454,1
+
+
+
-
icon.lv1_unique_dye_luc_cha icon.lv2_unique_dye_luc_cha icon.lv3_unique_dye_luc_cha icon.lv4_unique_dye_luc_cha
+
+ 39386,3;39381,2;39461,100
+ 39387,3;39382,2;39461,100
+ 39388,3;39383,2;39461,100
+ 39389,3;39384,2;39461,100
+
+
+ 39456,1
+ 39457,1
+ 39458,1
+ 39459,1
+
+
+
diff --git a/trunk/dist/game/data/stats/skills/26900-26999.xml b/trunk/dist/game/data/stats/skills/26900-26999.xml
index e0a345ba9d..2e56bc2bb2 100644
--- a/trunk/dist/game/data/stats/skills/26900-26999.xml
+++ b/trunk/dist/game/data/stats/skills/26900-26999.xml
@@ -37,36 +37,84 @@
-
+
+ 17371,2;39461,20
+ 24368,2;39461,1
+ 24369,2;39461,1
+ 24370,2;39461,1
+
+
+ 24368,1
+ 24369,1
+ 24370,1
+ 24371,1
+
+
+
-
-
+
+ 17371,2;39461,20
+ 24372,2;39461,1
+ 24373,2;39461,1
+ 24374,2;39461,1
+
+
+ 24372,1
+ 24373,1
+ 24374,1
+ 24375,1
+
+
+
-
-
+
+ 17371,2;39461,20
+ 24376,2;39461,1
+ 24377,2;39461,1
+ 24378,2;39461,1
+
+
+ 24376,1
+ 24377,1
+ 24378,1
+ 24379,1
+
+
+
-
-
+
+ 24368,3;24372,1;24376,1
+ 24369,3;24373,1;24377,1
+ 24370,3;24374,1;24378,1
+ 24371,3;24375,1;24379,1
+
+
+ 24380,1
+ 24381,1
+ 24382,1
+ 24383,1
+
+
+
-
diff --git a/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestAlchemyConversion.java b/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestAlchemyConversion.java
index 440d3b54f1..ee3e11aac6 100644
--- a/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestAlchemyConversion.java
+++ b/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestAlchemyConversion.java
@@ -18,16 +18,14 @@
*/
package com.l2jserver.gameserver.network.clientpackets;
-import com.l2jserver.Config;
import com.l2jserver.gameserver.datatables.SkillData;
import com.l2jserver.gameserver.enums.Race;
+import com.l2jserver.gameserver.model.L2AlchemySkill;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.holders.ItemHolder;
-import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
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.serverpackets.InventoryUpdate;
import com.l2jserver.gameserver.network.serverpackets.ItemList;
import com.l2jserver.util.Rnd;
@@ -49,7 +47,7 @@ public class RequestAlchemyConversion extends L2GameClientPacket
protected void readImpl()
{
_skillUseCount = readD();
- _unk = readH(); // Unk = 10; xs is
+ _unk = readH(); // Unk = 10;
_skillId = readD();
_skillLevel = readD();
readB(new byte[28]);
@@ -58,19 +56,17 @@ public class RequestAlchemyConversion extends L2GameClientPacket
@Override
protected void runImpl()
{
- L2PcInstance activeChar = getClient().getActiveChar();
- Skill skill = SkillData.getInstance().getSkill(_skillId, _skillLevel);
- L2ItemInstance invitem = null;
+ final L2PcInstance activeChar = getClient().getActiveChar();
+ final Skill skill = SkillData.getInstance().getSkill(_skillId, _skillLevel);
+ final L2AlchemySkill alchemySkill = skill.getAlchemySkill();
- if ((activeChar == null) || (activeChar.getRace() != Race.ERTHEIA))
+ if ((activeChar == null) || (activeChar.getRace() != Race.ERTHEIA) || (_skillUseCount < 0))
{
return;
}
- double chance = 100; // 100% ?
-
boolean hasIngidients = true;
- for (ItemHolder item : skill.getAlchemySkill().getIngridientItems())
+ for (ItemHolder item : alchemySkill.getIngridientItems())
{
if ((activeChar.getInventory().getInventoryItemCount(item.getId(), -1) * _skillUseCount) < (item.getCount() * _skillUseCount))
{
@@ -84,43 +80,39 @@ public class RequestAlchemyConversion extends L2GameClientPacket
return;
}
+ final double chance = 80; // 80% ?
for (int i = 0; i < _skillUseCount; i++)
{
boolean ok = Rnd.get(1, 100) < chance;
- skill.getAlchemySkill().getIngridientItems().forEach(holder -> activeChar.getInventory().destroyItemByItemId("Alchemy", holder.getId(), holder.getCount(), activeChar, null));
if (ok)
{
- _resultItemCount = skill.getAlchemySkill().getTransmutedItem().getCount() * _skillUseCount;
+ _resultItemCount += alchemySkill.getTransmutedItem().getCount();
}
else
{
- _resultFailCount++; // ?
+ _resultFailCount++;
}
- }
- if (_resultItemCount > 0)
- {
- invitem = activeChar.getInventory().addItem("Alchemy", skill.getAlchemySkill().getTransmutedItem().getId(), _resultItemCount, activeChar, null);
+
+ alchemySkill.getIngridientItems().forEach(holder -> activeChar.getInventory().destroyItemByItemId("Alchemy", holder.getId(), holder.getCount(), activeChar, null));
}
- if (_resultFailCount > 0) // ?
+ if (_resultItemCount > 0)
{
- invitem = activeChar.getInventory().destroyItemByItemId("Alchemy", skill.getAlchemySkill().getTransmutedItem().getId(), _resultFailCount, activeChar, null);
+ activeChar.addItem("Alchemy", alchemySkill.getTransmutedItem(), activeChar, true);
+ }
+ if (_resultFailCount > 0)
+ {
+ for (ItemHolder item : alchemySkill.getIngridientItems())
+ {
+ activeChar.getInventory().destroyItemByItemId("Alchemy", item.getId(), _resultFailCount, activeChar, null);
+ break; // FIXME: Take only 1st ingridient.
+ }
activeChar.sendPacket(SystemMessageId.FAILURE_TO_TRANSMUTE_WILL_DESTROY_SOME_INGREDIENTS);
}
activeChar.sendPacket(new ExAlchemyConversion((int) _resultItemCount, (int) _resultFailCount));
-
- if (Config.FORCE_INVENTORY_UPDATE)
- {
- activeChar.sendPacket(new ItemList(activeChar, false));
- }
- else
- {
- InventoryUpdate playerIU = new InventoryUpdate();
- playerIU.addItem(invitem);
- sendPacket(playerIU);
- }
+ activeChar.sendPacket(new ItemList(activeChar, false));
}
@Override
diff --git a/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExAlchemyConversion.java b/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExAlchemyConversion.java
index 1588236e10..89dc751b45 100644
--- a/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExAlchemyConversion.java
+++ b/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExAlchemyConversion.java
@@ -19,16 +19,16 @@
package com.l2jserver.gameserver.network.serverpackets;
/**
- * @author GenCloud
+ * @author Mobius
*/
public class ExAlchemyConversion extends L2GameServerPacket
{
private final int _itemCount;
private final int _failCount;
- public ExAlchemyConversion(int _resultItemCount, int failCount)
+ public ExAlchemyConversion(int itemCount, int failCount)
{
- _itemCount = _resultItemCount;
+ _itemCount = itemCount;
_failCount = failCount;
}