diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/xsd/AlchemyData.xsd b/L2J_Mobius_01.0_Ertheia/dist/game/data/xsd/AlchemyData.xsd index d703156dfa..05325e5a0c 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/xsd/AlchemyData.xsd +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/xsd/AlchemyData.xsd @@ -43,6 +43,7 @@ + diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java index 096bfee373..1e043dd7a6 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java @@ -32,6 +32,7 @@ public class AlchemyCraftData private final int _level; private final int _grade; private final int _category; + private final float _chance; private Set _ingredients; private ItemHolder _productionSuccess; private ItemHolder _productionFailure; @@ -42,6 +43,7 @@ public class AlchemyCraftData _level = set.getInt("level"); _grade = set.getInt("grade"); _category = set.getInt("category"); + _chance = set.getFloat("chance", 0); } public int getId() @@ -59,6 +61,11 @@ public class AlchemyCraftData return _grade; } + public float getChance() + { + return _chance; + } + public int getCategory() { return _category; diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java index 348dc87199..dd7073630e 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java @@ -44,8 +44,8 @@ public class RequestAlchemyConversion implements IClientIncomingPacket private int _craftTimes; private int _skillId; private int _skillLevel; - // private final Set _ingredients = new HashSet<>(); + @Override public boolean read(GameClient client, PacketReader packet) { @@ -110,27 +110,31 @@ public class RequestAlchemyConversion implements IClientIncomingPacket // } // Chance based on grade. - final int baseChance; + final float baseChance; + + // Custom XML chance value. + final float customChance = data.getChance(); + switch (data.getGrade()) { case 1: // Elementary { - baseChance = 100; + baseChance = customChance > 0 ? customChance : 100; break; } case 2: // Intermediate { - baseChance = 80; + baseChance = customChance > 0 ? customChance : 80; break; } case 3: // Advanced { - baseChance = 60; + baseChance = customChance > 0 ? customChance : 60; break; } default: // Master { - baseChance = 50; + baseChance = customChance > 0 ? customChance : 50; break; } } diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/xsd/AlchemyData.xsd b/L2J_Mobius_02.5_Underground/dist/game/data/xsd/AlchemyData.xsd index d703156dfa..05325e5a0c 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/xsd/AlchemyData.xsd +++ b/L2J_Mobius_02.5_Underground/dist/game/data/xsd/AlchemyData.xsd @@ -43,6 +43,7 @@ + diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java index 096bfee373..1e043dd7a6 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java @@ -32,6 +32,7 @@ public class AlchemyCraftData private final int _level; private final int _grade; private final int _category; + private final float _chance; private Set _ingredients; private ItemHolder _productionSuccess; private ItemHolder _productionFailure; @@ -42,6 +43,7 @@ public class AlchemyCraftData _level = set.getInt("level"); _grade = set.getInt("grade"); _category = set.getInt("category"); + _chance = set.getFloat("chance", 0); } public int getId() @@ -59,6 +61,11 @@ public class AlchemyCraftData return _grade; } + public float getChance() + { + return _chance; + } + public int getCategory() { return _category; diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java index 348dc87199..dd7073630e 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java @@ -44,8 +44,8 @@ public class RequestAlchemyConversion implements IClientIncomingPacket private int _craftTimes; private int _skillId; private int _skillLevel; - // private final Set _ingredients = new HashSet<>(); + @Override public boolean read(GameClient client, PacketReader packet) { @@ -110,27 +110,31 @@ public class RequestAlchemyConversion implements IClientIncomingPacket // } // Chance based on grade. - final int baseChance; + final float baseChance; + + // Custom XML chance value. + final float customChance = data.getChance(); + switch (data.getGrade()) { case 1: // Elementary { - baseChance = 100; + baseChance = customChance > 0 ? customChance : 100; break; } case 2: // Intermediate { - baseChance = 80; + baseChance = customChance > 0 ? customChance : 80; break; } case 3: // Advanced { - baseChance = 60; + baseChance = customChance > 0 ? customChance : 60; break; } default: // Master { - baseChance = 50; + baseChance = customChance > 0 ? customChance : 50; break; } } diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/xsd/AlchemyData.xsd b/L2J_Mobius_03.0_Helios/dist/game/data/xsd/AlchemyData.xsd index d703156dfa..05325e5a0c 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/xsd/AlchemyData.xsd +++ b/L2J_Mobius_03.0_Helios/dist/game/data/xsd/AlchemyData.xsd @@ -43,6 +43,7 @@ + diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java index 096bfee373..1e043dd7a6 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java @@ -32,6 +32,7 @@ public class AlchemyCraftData private final int _level; private final int _grade; private final int _category; + private final float _chance; private Set _ingredients; private ItemHolder _productionSuccess; private ItemHolder _productionFailure; @@ -42,6 +43,7 @@ public class AlchemyCraftData _level = set.getInt("level"); _grade = set.getInt("grade"); _category = set.getInt("category"); + _chance = set.getFloat("chance", 0); } public int getId() @@ -59,6 +61,11 @@ public class AlchemyCraftData return _grade; } + public float getChance() + { + return _chance; + } + public int getCategory() { return _category; diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java index 348dc87199..dd7073630e 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java @@ -44,8 +44,8 @@ public class RequestAlchemyConversion implements IClientIncomingPacket private int _craftTimes; private int _skillId; private int _skillLevel; - // private final Set _ingredients = new HashSet<>(); + @Override public boolean read(GameClient client, PacketReader packet) { @@ -110,27 +110,31 @@ public class RequestAlchemyConversion implements IClientIncomingPacket // } // Chance based on grade. - final int baseChance; + final float baseChance; + + // Custom XML chance value. + final float customChance = data.getChance(); + switch (data.getGrade()) { case 1: // Elementary { - baseChance = 100; + baseChance = customChance > 0 ? customChance : 100; break; } case 2: // Intermediate { - baseChance = 80; + baseChance = customChance > 0 ? customChance : 80; break; } case 3: // Advanced { - baseChance = 60; + baseChance = customChance > 0 ? customChance : 60; break; } default: // Master { - baseChance = 50; + baseChance = customChance > 0 ? customChance : 50; break; } } diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/xsd/AlchemyData.xsd b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/xsd/AlchemyData.xsd index d703156dfa..05325e5a0c 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/xsd/AlchemyData.xsd +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/xsd/AlchemyData.xsd @@ -43,6 +43,7 @@ + diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java index 096bfee373..1e043dd7a6 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java @@ -32,6 +32,7 @@ public class AlchemyCraftData private final int _level; private final int _grade; private final int _category; + private final float _chance; private Set _ingredients; private ItemHolder _productionSuccess; private ItemHolder _productionFailure; @@ -42,6 +43,7 @@ public class AlchemyCraftData _level = set.getInt("level"); _grade = set.getInt("grade"); _category = set.getInt("category"); + _chance = set.getFloat("chance", 0); } public int getId() @@ -59,6 +61,11 @@ public class AlchemyCraftData return _grade; } + public float getChance() + { + return _chance; + } + public int getCategory() { return _category; diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java index 348dc87199..dd7073630e 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java @@ -44,8 +44,8 @@ public class RequestAlchemyConversion implements IClientIncomingPacket private int _craftTimes; private int _skillId; private int _skillLevel; - // private final Set _ingredients = new HashSet<>(); + @Override public boolean read(GameClient client, PacketReader packet) { @@ -110,27 +110,31 @@ public class RequestAlchemyConversion implements IClientIncomingPacket // } // Chance based on grade. - final int baseChance; + final float baseChance; + + // Custom XML chance value. + final float customChance = data.getChance(); + switch (data.getGrade()) { case 1: // Elementary { - baseChance = 100; + baseChance = customChance > 0 ? customChance : 100; break; } case 2: // Intermediate { - baseChance = 80; + baseChance = customChance > 0 ? customChance : 80; break; } case 3: // Advanced { - baseChance = 60; + baseChance = customChance > 0 ? customChance : 60; break; } default: // Master { - baseChance = 50; + baseChance = customChance > 0 ? customChance : 50; break; } } diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/xsd/AlchemyData.xsd b/L2J_Mobius_05.0_Salvation/dist/game/data/xsd/AlchemyData.xsd index d703156dfa..05325e5a0c 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/xsd/AlchemyData.xsd +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/xsd/AlchemyData.xsd @@ -43,6 +43,7 @@ + diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java index 096bfee373..1e043dd7a6 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java @@ -32,6 +32,7 @@ public class AlchemyCraftData private final int _level; private final int _grade; private final int _category; + private final float _chance; private Set _ingredients; private ItemHolder _productionSuccess; private ItemHolder _productionFailure; @@ -42,6 +43,7 @@ public class AlchemyCraftData _level = set.getInt("level"); _grade = set.getInt("grade"); _category = set.getInt("category"); + _chance = set.getFloat("chance", 0); } public int getId() @@ -59,6 +61,11 @@ public class AlchemyCraftData return _grade; } + public float getChance() + { + return _chance; + } + public int getCategory() { return _category; diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java index 348dc87199..dd7073630e 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java @@ -44,8 +44,8 @@ public class RequestAlchemyConversion implements IClientIncomingPacket private int _craftTimes; private int _skillId; private int _skillLevel; - // private final Set _ingredients = new HashSet<>(); + @Override public boolean read(GameClient client, PacketReader packet) { @@ -110,27 +110,31 @@ public class RequestAlchemyConversion implements IClientIncomingPacket // } // Chance based on grade. - final int baseChance; + final float baseChance; + + // Custom XML chance value. + final float customChance = data.getChance(); + switch (data.getGrade()) { case 1: // Elementary { - baseChance = 100; + baseChance = customChance > 0 ? customChance : 100; break; } case 2: // Intermediate { - baseChance = 80; + baseChance = customChance > 0 ? customChance : 80; break; } case 3: // Advanced { - baseChance = 60; + baseChance = customChance > 0 ? customChance : 60; break; } default: // Master { - baseChance = 50; + baseChance = customChance > 0 ? customChance : 50; break; } } diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/xsd/AlchemyData.xsd b/L2J_Mobius_05.5_EtinasFate/dist/game/data/xsd/AlchemyData.xsd index d703156dfa..05325e5a0c 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/xsd/AlchemyData.xsd +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/xsd/AlchemyData.xsd @@ -43,6 +43,7 @@ + diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java index 096bfee373..1e043dd7a6 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java @@ -32,6 +32,7 @@ public class AlchemyCraftData private final int _level; private final int _grade; private final int _category; + private final float _chance; private Set _ingredients; private ItemHolder _productionSuccess; private ItemHolder _productionFailure; @@ -42,6 +43,7 @@ public class AlchemyCraftData _level = set.getInt("level"); _grade = set.getInt("grade"); _category = set.getInt("category"); + _chance = set.getFloat("chance", 0); } public int getId() @@ -59,6 +61,11 @@ public class AlchemyCraftData return _grade; } + public float getChance() + { + return _chance; + } + public int getCategory() { return _category; diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java index 348dc87199..dd7073630e 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java @@ -44,8 +44,8 @@ public class RequestAlchemyConversion implements IClientIncomingPacket private int _craftTimes; private int _skillId; private int _skillLevel; - // private final Set _ingredients = new HashSet<>(); + @Override public boolean read(GameClient client, PacketReader packet) { @@ -110,27 +110,31 @@ public class RequestAlchemyConversion implements IClientIncomingPacket // } // Chance based on grade. - final int baseChance; + final float baseChance; + + // Custom XML chance value. + final float customChance = data.getChance(); + switch (data.getGrade()) { case 1: // Elementary { - baseChance = 100; + baseChance = customChance > 0 ? customChance : 100; break; } case 2: // Intermediate { - baseChance = 80; + baseChance = customChance > 0 ? customChance : 80; break; } case 3: // Advanced { - baseChance = 60; + baseChance = customChance > 0 ? customChance : 60; break; } default: // Master { - baseChance = 50; + baseChance = customChance > 0 ? customChance : 50; break; } } diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/xsd/AlchemyData.xsd b/L2J_Mobius_06.0_Fafurion/dist/game/data/xsd/AlchemyData.xsd index d703156dfa..05325e5a0c 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/xsd/AlchemyData.xsd +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/xsd/AlchemyData.xsd @@ -43,6 +43,7 @@ + diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java index 096bfee373..1e043dd7a6 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java @@ -32,6 +32,7 @@ public class AlchemyCraftData private final int _level; private final int _grade; private final int _category; + private final float _chance; private Set _ingredients; private ItemHolder _productionSuccess; private ItemHolder _productionFailure; @@ -42,6 +43,7 @@ public class AlchemyCraftData _level = set.getInt("level"); _grade = set.getInt("grade"); _category = set.getInt("category"); + _chance = set.getFloat("chance", 0); } public int getId() @@ -59,6 +61,11 @@ public class AlchemyCraftData return _grade; } + public float getChance() + { + return _chance; + } + public int getCategory() { return _category; diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java index 348dc87199..dd7073630e 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java @@ -44,8 +44,8 @@ public class RequestAlchemyConversion implements IClientIncomingPacket private int _craftTimes; private int _skillId; private int _skillLevel; - // private final Set _ingredients = new HashSet<>(); + @Override public boolean read(GameClient client, PacketReader packet) { @@ -110,27 +110,31 @@ public class RequestAlchemyConversion implements IClientIncomingPacket // } // Chance based on grade. - final int baseChance; + final float baseChance; + + // Custom XML chance value. + final float customChance = data.getChance(); + switch (data.getGrade()) { case 1: // Elementary { - baseChance = 100; + baseChance = customChance > 0 ? customChance : 100; break; } case 2: // Intermediate { - baseChance = 80; + baseChance = customChance > 0 ? customChance : 80; break; } case 3: // Advanced { - baseChance = 60; + baseChance = customChance > 0 ? customChance : 60; break; } default: // Master { - baseChance = 50; + baseChance = customChance > 0 ? customChance : 50; break; } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/xsd/AlchemyData.xsd b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/xsd/AlchemyData.xsd index d703156dfa..05325e5a0c 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/xsd/AlchemyData.xsd +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/xsd/AlchemyData.xsd @@ -43,6 +43,7 @@ + diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java index 096bfee373..1e043dd7a6 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java @@ -32,6 +32,7 @@ public class AlchemyCraftData private final int _level; private final int _grade; private final int _category; + private final float _chance; private Set _ingredients; private ItemHolder _productionSuccess; private ItemHolder _productionFailure; @@ -42,6 +43,7 @@ public class AlchemyCraftData _level = set.getInt("level"); _grade = set.getInt("grade"); _category = set.getInt("category"); + _chance = set.getFloat("chance", 0); } public int getId() @@ -59,6 +61,11 @@ public class AlchemyCraftData return _grade; } + public float getChance() + { + return _chance; + } + public int getCategory() { return _category; diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java index d25abdb61e..8652d0c227 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java @@ -44,8 +44,8 @@ public class RequestAlchemyConversion implements IClientIncomingPacket private int _craftTimes; private int _skillId; private int _skillLevel; - // private final Set _ingredients = new HashSet<>(); + @Override public boolean read(GameClient client, PacketReader packet) { @@ -110,27 +110,31 @@ public class RequestAlchemyConversion implements IClientIncomingPacket // } // Chance based on grade. - final int baseChance; + final float baseChance; + + // Custom XML chance value. + final float customChance = data.getChance(); + switch (data.getGrade()) { case 1: // Elementary { - baseChance = 100; + baseChance = customChance > 0 ? customChance : 100; break; } case 2: // Intermediate { - baseChance = 80; + baseChance = customChance > 0 ? customChance : 80; break; } case 3: // Advanced { - baseChance = 60; + baseChance = customChance > 0 ? customChance : 60; break; } default: // Master { - baseChance = 50; + baseChance = customChance > 0 ? customChance : 50; break; } } diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/xsd/AlchemyData.xsd b/L2J_Mobius_08.2_Homunculus/dist/game/data/xsd/AlchemyData.xsd index d703156dfa..05325e5a0c 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/xsd/AlchemyData.xsd +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/xsd/AlchemyData.xsd @@ -43,6 +43,7 @@ + diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java index 096bfee373..1e043dd7a6 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java @@ -32,6 +32,7 @@ public class AlchemyCraftData private final int _level; private final int _grade; private final int _category; + private final float _chance; private Set _ingredients; private ItemHolder _productionSuccess; private ItemHolder _productionFailure; @@ -42,6 +43,7 @@ public class AlchemyCraftData _level = set.getInt("level"); _grade = set.getInt("grade"); _category = set.getInt("category"); + _chance = set.getFloat("chance", 0); } public int getId() @@ -59,6 +61,11 @@ public class AlchemyCraftData return _grade; } + public float getChance() + { + return _chance; + } + public int getCategory() { return _category; diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java index d25abdb61e..8652d0c227 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java @@ -44,8 +44,8 @@ public class RequestAlchemyConversion implements IClientIncomingPacket private int _craftTimes; private int _skillId; private int _skillLevel; - // private final Set _ingredients = new HashSet<>(); + @Override public boolean read(GameClient client, PacketReader packet) { @@ -110,27 +110,31 @@ public class RequestAlchemyConversion implements IClientIncomingPacket // } // Chance based on grade. - final int baseChance; + final float baseChance; + + // Custom XML chance value. + final float customChance = data.getChance(); + switch (data.getGrade()) { case 1: // Elementary { - baseChance = 100; + baseChance = customChance > 0 ? customChance : 100; break; } case 2: // Intermediate { - baseChance = 80; + baseChance = customChance > 0 ? customChance : 80; break; } case 3: // Advanced { - baseChance = 60; + baseChance = customChance > 0 ? customChance : 60; break; } default: // Master { - baseChance = 50; + baseChance = customChance > 0 ? customChance : 50; break; } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/xsd/AlchemyData.xsd b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/xsd/AlchemyData.xsd index d703156dfa..05325e5a0c 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/xsd/AlchemyData.xsd +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/xsd/AlchemyData.xsd @@ -43,6 +43,7 @@ + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java index 096bfee373..1e043dd7a6 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java @@ -32,6 +32,7 @@ public class AlchemyCraftData private final int _level; private final int _grade; private final int _category; + private final float _chance; private Set _ingredients; private ItemHolder _productionSuccess; private ItemHolder _productionFailure; @@ -42,6 +43,7 @@ public class AlchemyCraftData _level = set.getInt("level"); _grade = set.getInt("grade"); _category = set.getInt("category"); + _chance = set.getFloat("chance", 0); } public int getId() @@ -59,6 +61,11 @@ public class AlchemyCraftData return _grade; } + public float getChance() + { + return _chance; + } + public int getCategory() { return _category; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java index d25abdb61e..8652d0c227 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java @@ -44,8 +44,8 @@ public class RequestAlchemyConversion implements IClientIncomingPacket private int _craftTimes; private int _skillId; private int _skillLevel; - // private final Set _ingredients = new HashSet<>(); + @Override public boolean read(GameClient client, PacketReader packet) { @@ -110,27 +110,31 @@ public class RequestAlchemyConversion implements IClientIncomingPacket // } // Chance based on grade. - final int baseChance; + final float baseChance; + + // Custom XML chance value. + final float customChance = data.getChance(); + switch (data.getGrade()) { case 1: // Elementary { - baseChance = 100; + baseChance = customChance > 0 ? customChance : 100; break; } case 2: // Intermediate { - baseChance = 80; + baseChance = customChance > 0 ? customChance : 80; break; } case 3: // Advanced { - baseChance = 60; + baseChance = customChance > 0 ? customChance : 60; break; } default: // Master { - baseChance = 50; + baseChance = customChance > 0 ? customChance : 50; break; } } diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/data/xsd/AlchemyData.xsd b/L2J_Mobius_10.2_MasterClass/dist/game/data/xsd/AlchemyData.xsd index d703156dfa..05325e5a0c 100644 --- a/L2J_Mobius_10.2_MasterClass/dist/game/data/xsd/AlchemyData.xsd +++ b/L2J_Mobius_10.2_MasterClass/dist/game/data/xsd/AlchemyData.xsd @@ -43,6 +43,7 @@ + diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java index 096bfee373..1e043dd7a6 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/alchemy/AlchemyCraftData.java @@ -32,6 +32,7 @@ public class AlchemyCraftData private final int _level; private final int _grade; private final int _category; + private final float _chance; private Set _ingredients; private ItemHolder _productionSuccess; private ItemHolder _productionFailure; @@ -42,6 +43,7 @@ public class AlchemyCraftData _level = set.getInt("level"); _grade = set.getInt("grade"); _category = set.getInt("category"); + _chance = set.getFloat("chance", 0); } public int getId() @@ -59,6 +61,11 @@ public class AlchemyCraftData return _grade; } + public float getChance() + { + return _chance; + } + public int getCategory() { return _category; diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java index b65c634749..b3ec811b78 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/alchemy/RequestAlchemyConversion.java @@ -44,8 +44,8 @@ public class RequestAlchemyConversion implements IClientIncomingPacket private int _craftTimes; private int _skillId; private int _skillLevel; - // private final Set _ingredients = new HashSet<>(); + @Override public boolean read(GameClient client, PacketReader packet) { @@ -110,27 +110,31 @@ public class RequestAlchemyConversion implements IClientIncomingPacket // } // Chance based on grade. - final int baseChance; + final float baseChance; + + // Custom XML chance value. + final float customChance = data.getChance(); + switch (data.getGrade()) { case 1: // Elementary { - baseChance = 100; + baseChance = customChance > 0 ? customChance : 100; break; } case 2: // Intermediate { - baseChance = 80; + baseChance = customChance > 0 ? customChance : 80; break; } case 3: // Advanced { - baseChance = 60; + baseChance = customChance > 0 ? customChance : 60; break; } default: // Master { - baseChance = 50; + baseChance = customChance > 0 ? customChance : 50; break; } }