Implemented new combination item data values.

This commit is contained in:
MobiusDevelopment
2021-10-07 01:44:11 +00:00
parent eb93f0e96a
commit 8b2ff17fff
16 changed files with 18153 additions and 7103 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -14,8 +14,10 @@
</xs:element>
</xs:sequence>
<xs:attribute type="xs:int" name="one" use="required" />
<xs:attribute type="xs:byte" name="enchant" use="optional" />
<xs:attribute type="xs:int" name="two" use="required" />
<xs:attribute type="xs:byte" name="chance" use="required" />
<xs:attribute type="xs:long" name="commission" use="optional" />
<xs:attribute type="xs:byte" name="chance" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>

View File

@@ -83,11 +83,11 @@ public class CombinationItemsData implements IXmlReader
return _items;
}
public CombinationItem getItemsBySlots(int firstSlot, int secondSlot)
public CombinationItem getItemsBySlots(int firstSlot, int enchant, int secondSlot)
{
for (CombinationItem item : _items)
{
if ((item.getItemOne() == firstSlot) && (item.getItemTwo() == secondSlot))
if ((item.getItemOne() == firstSlot) && (item.getItemTwo() == secondSlot) && (item.getEnchant() == enchant))
{
return item;
}
@@ -95,25 +95,12 @@ public class CombinationItemsData implements IXmlReader
return null;
}
public List<CombinationItem> getItemsByFirstSlot(int id)
public List<CombinationItem> getItemsByFirstSlot(int id, int enchant)
{
final List<CombinationItem> result = new ArrayList<>();
for (CombinationItem item : _items)
{
if (item.getItemOne() == id)
{
result.add(item);
}
}
return result;
}
public List<CombinationItem> getItemsBySecondSlot(int id)
{
final List<CombinationItem> result = new ArrayList<>();
for (CombinationItem item : _items)
{
if (item.getItemTwo() == id)
if ((item.getItemOne() == id) && (item.getEnchant() == enchant))
{
result.add(item);
}

View File

@@ -22,20 +22,24 @@ import java.util.Map;
import org.l2jmobius.gameserver.model.StatSet;
/**
* @author UnAfraid
* @author UnAfraid, Mobius
*/
public class CombinationItem
{
private final int _itemOne;
private final int _enchant;
private final int _itemTwo;
private final long _commission;
private final int _chance;
private final Map<CombinationItemType, CombinationItemReward> _rewards = new EnumMap<>(CombinationItemType.class);
public CombinationItem(StatSet set)
{
_itemOne = set.getInt("one");
_enchant = set.getInt("enchant", 0);
_itemTwo = set.getInt("two");
_chance = set.getInt("chance");
_commission = set.getLong("commission", 0);
_chance = set.getInt("chance", 33);
}
public int getItemOne()
@@ -43,11 +47,21 @@ public class CombinationItem
return _itemOne;
}
public int getEnchant()
{
return _enchant;
}
public int getItemTwo()
{
return _itemTwo;
}
public long getCommission()
{
return _commission;
}
public int getChance()
{
return _chance;

View File

@@ -82,7 +82,7 @@ public class RequestNewEnchantPushOne implements IClientIncomingPacket
return;
}
final List<CombinationItem> combinationItems = CombinationItemsData.getInstance().getItemsByFirstSlot(itemOne.getId());
final List<CombinationItem> combinationItems = CombinationItemsData.getInstance().getItemsByFirstSlot(itemOne.getId(), itemOne.getEnchantLevel());
// Not implemented or not able to merge!
if (combinationItems.isEmpty())

View File

@@ -88,7 +88,7 @@ public class RequestNewEnchantPushTwo implements IClientIncomingPacket
return;
}
final CombinationItem combinationItem = CombinationItemsData.getInstance().getItemsBySlots(itemOne.getId(), itemTwo.getId());
final CombinationItem combinationItem = CombinationItemsData.getInstance().getItemsBySlots(itemOne.getId(), itemOne.getEnchantLevel(), itemTwo.getId());
// Not implemented or not able to merge!
if (combinationItem == null)

View File

@@ -94,7 +94,7 @@ public class RequestNewEnchantRetryToPutItems implements IClientIncomingPacket
return;
}
final CombinationItem combinationItem = CombinationItemsData.getInstance().getItemsBySlots(itemOne.getId(), itemTwo.getId());
final CombinationItem combinationItem = CombinationItemsData.getInstance().getItemsBySlots(itemOne.getId(), itemOne.getEnchantLevel(), itemTwo.getId());
// Not implemented or not able to merge!
if (combinationItem == null)

View File

@@ -91,7 +91,7 @@ public class RequestNewEnchantTry implements IClientIncomingPacket
return;
}
final CombinationItem combinationItem = CombinationItemsData.getInstance().getItemsBySlots(itemOne.getId(), itemTwo.getId());
final CombinationItem combinationItem = CombinationItemsData.getInstance().getItemsBySlots(itemOne.getId(), itemOne.getEnchantLevel(), itemTwo.getId());
// Not implemented or not able to merge!
if (combinationItem == null)
@@ -101,11 +101,19 @@ public class RequestNewEnchantTry implements IClientIncomingPacket
return;
}
if (combinationItem.getCommission() > player.getAdena())
{
client.sendPacket(new ExEnchantFail(itemOne.getId(), itemTwo.getId()));
player.removeRequest(request.getClass());
player.sendPacket(SystemMessageId.NOT_ENOUGH_ADENA);
return;
}
final InventoryUpdate iu = new InventoryUpdate();
iu.addRemovedItem(itemOne);
// iu.addRemovedItem(itemTwo);
if (player.destroyItem("Compound-Item-One", itemOne, 1, null, true) && player.destroyItem("Compound-Item-Two", itemTwo, 1, null, true))
if (player.destroyItem("Compound-Item-One", itemOne, 1, null, true) && player.destroyItem("Compound-Item-Two", itemTwo, 1, null, true) && ((combinationItem.getCommission() <= 0) || player.reduceAdena("Compound-Commission", combinationItem.getCommission(), player, true)))
{
final double random = (Rnd.nextDouble() * 100);
final boolean success = random <= combinationItem.getChance();

File diff suppressed because it is too large Load Diff

View File

@@ -14,8 +14,10 @@
</xs:element>
</xs:sequence>
<xs:attribute type="xs:int" name="one" use="required" />
<xs:attribute type="xs:byte" name="enchant" use="optional" />
<xs:attribute type="xs:int" name="two" use="required" />
<xs:attribute type="xs:byte" name="chance" use="required" />
<xs:attribute type="xs:long" name="commission" use="optional" />
<xs:attribute type="xs:byte" name="chance" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>

View File

@@ -83,11 +83,11 @@ public class CombinationItemsData implements IXmlReader
return _items;
}
public CombinationItem getItemsBySlots(int firstSlot, int secondSlot)
public CombinationItem getItemsBySlots(int firstSlot, int enchant, int secondSlot)
{
for (CombinationItem item : _items)
{
if ((item.getItemOne() == firstSlot) && (item.getItemTwo() == secondSlot))
if ((item.getItemOne() == firstSlot) && (item.getItemTwo() == secondSlot) && (item.getEnchant() == enchant))
{
return item;
}
@@ -95,25 +95,12 @@ public class CombinationItemsData implements IXmlReader
return null;
}
public List<CombinationItem> getItemsByFirstSlot(int id)
public List<CombinationItem> getItemsByFirstSlot(int id, int enchant)
{
final List<CombinationItem> result = new ArrayList<>();
for (CombinationItem item : _items)
{
if (item.getItemOne() == id)
{
result.add(item);
}
}
return result;
}
public List<CombinationItem> getItemsBySecondSlot(int id)
{
final List<CombinationItem> result = new ArrayList<>();
for (CombinationItem item : _items)
{
if (item.getItemTwo() == id)
if ((item.getItemOne() == id) && (item.getEnchant() == enchant))
{
result.add(item);
}

View File

@@ -22,20 +22,24 @@ import java.util.Map;
import org.l2jmobius.gameserver.model.StatSet;
/**
* @author UnAfraid
* @author UnAfraid, Mobius
*/
public class CombinationItem
{
private final int _itemOne;
private final int _enchant;
private final int _itemTwo;
private final long _commission;
private final int _chance;
private final Map<CombinationItemType, CombinationItemReward> _rewards = new EnumMap<>(CombinationItemType.class);
public CombinationItem(StatSet set)
{
_itemOne = set.getInt("one");
_enchant = set.getInt("enchant", 0);
_itemTwo = set.getInt("two");
_chance = set.getInt("chance");
_commission = set.getLong("commission", 0);
_chance = set.getInt("chance", 33);
}
public int getItemOne()
@@ -43,11 +47,21 @@ public class CombinationItem
return _itemOne;
}
public int getEnchant()
{
return _enchant;
}
public int getItemTwo()
{
return _itemTwo;
}
public long getCommission()
{
return _commission;
}
public int getChance()
{
return _chance;

View File

@@ -82,7 +82,7 @@ public class RequestNewEnchantPushOne implements IClientIncomingPacket
return;
}
final List<CombinationItem> combinationItems = CombinationItemsData.getInstance().getItemsByFirstSlot(itemOne.getId());
final List<CombinationItem> combinationItems = CombinationItemsData.getInstance().getItemsByFirstSlot(itemOne.getId(), itemOne.getEnchantLevel());
// Not implemented or not able to merge!
if (combinationItems.isEmpty())

View File

@@ -88,7 +88,7 @@ public class RequestNewEnchantPushTwo implements IClientIncomingPacket
return;
}
final CombinationItem combinationItem = CombinationItemsData.getInstance().getItemsBySlots(itemOne.getId(), itemTwo.getId());
final CombinationItem combinationItem = CombinationItemsData.getInstance().getItemsBySlots(itemOne.getId(), itemOne.getEnchantLevel(), itemTwo.getId());
// Not implemented or not able to merge!
if (combinationItem == null)

View File

@@ -94,7 +94,7 @@ public class RequestNewEnchantRetryToPutItems implements IClientIncomingPacket
return;
}
final CombinationItem combinationItem = CombinationItemsData.getInstance().getItemsBySlots(itemOne.getId(), itemTwo.getId());
final CombinationItem combinationItem = CombinationItemsData.getInstance().getItemsBySlots(itemOne.getId(), itemOne.getEnchantLevel(), itemTwo.getId());
// Not implemented or not able to merge!
if (combinationItem == null)

View File

@@ -91,7 +91,7 @@ public class RequestNewEnchantTry implements IClientIncomingPacket
return;
}
final CombinationItem combinationItem = CombinationItemsData.getInstance().getItemsBySlots(itemOne.getId(), itemTwo.getId());
final CombinationItem combinationItem = CombinationItemsData.getInstance().getItemsBySlots(itemOne.getId(), itemOne.getEnchantLevel(), itemTwo.getId());
// Not implemented or not able to merge!
if (combinationItem == null)
@@ -101,11 +101,19 @@ public class RequestNewEnchantTry implements IClientIncomingPacket
return;
}
if (combinationItem.getCommission() > player.getAdena())
{
client.sendPacket(new ExEnchantFail(itemOne.getId(), itemTwo.getId()));
player.removeRequest(request.getClass());
player.sendPacket(SystemMessageId.NOT_ENOUGH_ADENA);
return;
}
final InventoryUpdate iu = new InventoryUpdate();
iu.addRemovedItem(itemOne);
// iu.addRemovedItem(itemTwo);
if (player.destroyItem("Compound-Item-One", itemOne, 1, null, true) && player.destroyItem("Compound-Item-Two", itemTwo, 1, null, true))
if (player.destroyItem("Compound-Item-One", itemOne, 1, null, true) && player.destroyItem("Compound-Item-Two", itemTwo, 1, null, true) && ((combinationItem.getCommission() <= 0) || player.reduceAdena("Compound-Commission", combinationItem.getCommission(), player, true)))
{
final double random = (Rnd.nextDouble() * 100);
final boolean success = random <= combinationItem.getChance();