Support for adding multiple non stackable items in multisells.

This commit is contained in:
MobiusDevelopment
2020-09-07 08:22:29 +00:00
parent 1c438fc2e5
commit 3362138af2
15 changed files with 285 additions and 0 deletions

View File

@@ -16,6 +16,7 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.OptionalLong; import java.util.OptionalLong;
@@ -243,7 +244,25 @@ public class MultiSellChoose implements IClientIncomingPacket
} }
// Check for enchanted level and ingredient count requirements. // Check for enchanted level and ingredient count requirements.
final List<ItemChanceHolder> summedIngredients = new ArrayList<>();
for (ItemChanceHolder ingredient : entry.getIngredients()) for (ItemChanceHolder ingredient : entry.getIngredients())
{
boolean added = false;
for (ItemChanceHolder summedIngredient : summedIngredients)
{
if ((summedIngredient.getId() == ingredient.getId()) && (summedIngredient.getEnchantmentLevel() == ingredient.getEnchantmentLevel()))
{
summedIngredients.add(new ItemChanceHolder(ingredient.getId(), ingredient.getChance(), ingredient.getCount() + summedIngredient.getCount(), ingredient.getEnchantmentLevel(), ingredient.isMaintainIngredient()));
summedIngredients.remove(summedIngredient);
added = true;
}
}
if (!added)
{
summedIngredients.add(ingredient);
}
}
for (ItemChanceHolder ingredient : summedIngredients)
{ {
if (ingredient.getEnchantmentLevel() > 0) if (ingredient.getEnchantmentLevel() > 0)
{ {

View File

@@ -16,6 +16,7 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.OptionalLong; import java.util.OptionalLong;
@@ -271,7 +272,25 @@ public class MultiSellChoose implements IClientIncomingPacket
} }
// Check for enchanted level and ingredient count requirements. // Check for enchanted level and ingredient count requirements.
final List<ItemChanceHolder> summedIngredients = new ArrayList<>();
for (ItemChanceHolder ingredient : entry.getIngredients()) for (ItemChanceHolder ingredient : entry.getIngredients())
{
boolean added = false;
for (ItemChanceHolder summedIngredient : summedIngredients)
{
if ((summedIngredient.getId() == ingredient.getId()) && (summedIngredient.getEnchantmentLevel() == ingredient.getEnchantmentLevel()))
{
summedIngredients.add(new ItemChanceHolder(ingredient.getId(), ingredient.getChance(), ingredient.getCount() + summedIngredient.getCount(), ingredient.getEnchantmentLevel(), ingredient.isMaintainIngredient()));
summedIngredients.remove(summedIngredient);
added = true;
}
}
if (!added)
{
summedIngredients.add(ingredient);
}
}
for (ItemChanceHolder ingredient : summedIngredients)
{ {
if (ingredient.getEnchantmentLevel() > 0) if (ingredient.getEnchantmentLevel() > 0)
{ {

View File

@@ -16,6 +16,7 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.OptionalLong; import java.util.OptionalLong;
@@ -271,7 +272,25 @@ public class MultiSellChoose implements IClientIncomingPacket
} }
// Check for enchanted level and ingredient count requirements. // Check for enchanted level and ingredient count requirements.
final List<ItemChanceHolder> summedIngredients = new ArrayList<>();
for (ItemChanceHolder ingredient : entry.getIngredients()) for (ItemChanceHolder ingredient : entry.getIngredients())
{
boolean added = false;
for (ItemChanceHolder summedIngredient : summedIngredients)
{
if ((summedIngredient.getId() == ingredient.getId()) && (summedIngredient.getEnchantmentLevel() == ingredient.getEnchantmentLevel()))
{
summedIngredients.add(new ItemChanceHolder(ingredient.getId(), ingredient.getChance(), ingredient.getCount() + summedIngredient.getCount(), ingredient.getEnchantmentLevel(), ingredient.isMaintainIngredient()));
summedIngredients.remove(summedIngredient);
added = true;
}
}
if (!added)
{
summedIngredients.add(ingredient);
}
}
for (ItemChanceHolder ingredient : summedIngredients)
{ {
if (ingredient.getEnchantmentLevel() > 0) if (ingredient.getEnchantmentLevel() > 0)
{ {

View File

@@ -16,6 +16,7 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.OptionalLong; import java.util.OptionalLong;
@@ -271,7 +272,25 @@ public class MultiSellChoose implements IClientIncomingPacket
} }
// Check for enchanted level and ingredient count requirements. // Check for enchanted level and ingredient count requirements.
final List<ItemChanceHolder> summedIngredients = new ArrayList<>();
for (ItemChanceHolder ingredient : entry.getIngredients()) for (ItemChanceHolder ingredient : entry.getIngredients())
{
boolean added = false;
for (ItemChanceHolder summedIngredient : summedIngredients)
{
if ((summedIngredient.getId() == ingredient.getId()) && (summedIngredient.getEnchantmentLevel() == ingredient.getEnchantmentLevel()))
{
summedIngredients.add(new ItemChanceHolder(ingredient.getId(), ingredient.getChance(), ingredient.getCount() + summedIngredient.getCount(), ingredient.getEnchantmentLevel(), ingredient.isMaintainIngredient()));
summedIngredients.remove(summedIngredient);
added = true;
}
}
if (!added)
{
summedIngredients.add(ingredient);
}
}
for (ItemChanceHolder ingredient : summedIngredients)
{ {
if (ingredient.getEnchantmentLevel() > 0) if (ingredient.getEnchantmentLevel() > 0)
{ {

View File

@@ -16,6 +16,7 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.OptionalLong; import java.util.OptionalLong;
@@ -271,7 +272,25 @@ public class MultiSellChoose implements IClientIncomingPacket
} }
// Check for enchanted level and ingredient count requirements. // Check for enchanted level and ingredient count requirements.
final List<ItemChanceHolder> summedIngredients = new ArrayList<>();
for (ItemChanceHolder ingredient : entry.getIngredients()) for (ItemChanceHolder ingredient : entry.getIngredients())
{
boolean added = false;
for (ItemChanceHolder summedIngredient : summedIngredients)
{
if ((summedIngredient.getId() == ingredient.getId()) && (summedIngredient.getEnchantmentLevel() == ingredient.getEnchantmentLevel()))
{
summedIngredients.add(new ItemChanceHolder(ingredient.getId(), ingredient.getChance(), ingredient.getCount() + summedIngredient.getCount(), ingredient.getEnchantmentLevel(), ingredient.isMaintainIngredient()));
summedIngredients.remove(summedIngredient);
added = true;
}
}
if (!added)
{
summedIngredients.add(ingredient);
}
}
for (ItemChanceHolder ingredient : summedIngredients)
{ {
if (ingredient.getEnchantmentLevel() > 0) if (ingredient.getEnchantmentLevel() > 0)
{ {

View File

@@ -16,6 +16,7 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.OptionalLong; import java.util.OptionalLong;
@@ -271,7 +272,25 @@ public class MultiSellChoose implements IClientIncomingPacket
} }
// Check for enchanted level and ingredient count requirements. // Check for enchanted level and ingredient count requirements.
final List<ItemChanceHolder> summedIngredients = new ArrayList<>();
for (ItemChanceHolder ingredient : entry.getIngredients()) for (ItemChanceHolder ingredient : entry.getIngredients())
{
boolean added = false;
for (ItemChanceHolder summedIngredient : summedIngredients)
{
if ((summedIngredient.getId() == ingredient.getId()) && (summedIngredient.getEnchantmentLevel() == ingredient.getEnchantmentLevel()))
{
summedIngredients.add(new ItemChanceHolder(ingredient.getId(), ingredient.getChance(), ingredient.getCount() + summedIngredient.getCount(), ingredient.getEnchantmentLevel(), ingredient.isMaintainIngredient()));
summedIngredients.remove(summedIngredient);
added = true;
}
}
if (!added)
{
summedIngredients.add(ingredient);
}
}
for (ItemChanceHolder ingredient : summedIngredients)
{ {
if (ingredient.getEnchantmentLevel() > 0) if (ingredient.getEnchantmentLevel() > 0)
{ {

View File

@@ -16,6 +16,7 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.OptionalLong; import java.util.OptionalLong;
@@ -271,7 +272,25 @@ public class MultiSellChoose implements IClientIncomingPacket
} }
// Check for enchanted level and ingredient count requirements. // Check for enchanted level and ingredient count requirements.
final List<ItemChanceHolder> summedIngredients = new ArrayList<>();
for (ItemChanceHolder ingredient : entry.getIngredients()) for (ItemChanceHolder ingredient : entry.getIngredients())
{
boolean added = false;
for (ItemChanceHolder summedIngredient : summedIngredients)
{
if ((summedIngredient.getId() == ingredient.getId()) && (summedIngredient.getEnchantmentLevel() == ingredient.getEnchantmentLevel()))
{
summedIngredients.add(new ItemChanceHolder(ingredient.getId(), ingredient.getChance(), ingredient.getCount() + summedIngredient.getCount(), ingredient.getEnchantmentLevel(), ingredient.isMaintainIngredient()));
summedIngredients.remove(summedIngredient);
added = true;
}
}
if (!added)
{
summedIngredients.add(ingredient);
}
}
for (ItemChanceHolder ingredient : summedIngredients)
{ {
if (ingredient.getEnchantmentLevel() > 0) if (ingredient.getEnchantmentLevel() > 0)
{ {

View File

@@ -16,6 +16,7 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.OptionalLong; import java.util.OptionalLong;
@@ -271,7 +272,25 @@ public class MultiSellChoose implements IClientIncomingPacket
} }
// Check for enchanted level and ingredient count requirements. // Check for enchanted level and ingredient count requirements.
final List<ItemChanceHolder> summedIngredients = new ArrayList<>();
for (ItemChanceHolder ingredient : entry.getIngredients()) for (ItemChanceHolder ingredient : entry.getIngredients())
{
boolean added = false;
for (ItemChanceHolder summedIngredient : summedIngredients)
{
if ((summedIngredient.getId() == ingredient.getId()) && (summedIngredient.getEnchantmentLevel() == ingredient.getEnchantmentLevel()))
{
summedIngredients.add(new ItemChanceHolder(ingredient.getId(), ingredient.getChance(), ingredient.getCount() + summedIngredient.getCount(), ingredient.getEnchantmentLevel(), ingredient.isMaintainIngredient()));
summedIngredients.remove(summedIngredient);
added = true;
}
}
if (!added)
{
summedIngredients.add(ingredient);
}
}
for (ItemChanceHolder ingredient : summedIngredients)
{ {
if (ingredient.getEnchantmentLevel() > 0) if (ingredient.getEnchantmentLevel() > 0)
{ {

View File

@@ -16,6 +16,7 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.OptionalLong; import java.util.OptionalLong;
@@ -271,7 +272,25 @@ public class MultiSellChoose implements IClientIncomingPacket
} }
// Check for enchanted level and ingredient count requirements. // Check for enchanted level and ingredient count requirements.
final List<ItemChanceHolder> summedIngredients = new ArrayList<>();
for (ItemChanceHolder ingredient : entry.getIngredients()) for (ItemChanceHolder ingredient : entry.getIngredients())
{
boolean added = false;
for (ItemChanceHolder summedIngredient : summedIngredients)
{
if ((summedIngredient.getId() == ingredient.getId()) && (summedIngredient.getEnchantmentLevel() == ingredient.getEnchantmentLevel()))
{
summedIngredients.add(new ItemChanceHolder(ingredient.getId(), ingredient.getChance(), ingredient.getCount() + summedIngredient.getCount(), ingredient.getEnchantmentLevel(), ingredient.isMaintainIngredient()));
summedIngredients.remove(summedIngredient);
added = true;
}
}
if (!added)
{
summedIngredients.add(ingredient);
}
}
for (ItemChanceHolder ingredient : summedIngredients)
{ {
if (ingredient.getEnchantmentLevel() > 0) if (ingredient.getEnchantmentLevel() > 0)
{ {

View File

@@ -16,6 +16,7 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.OptionalLong; import java.util.OptionalLong;
@@ -271,7 +272,25 @@ public class MultiSellChoose implements IClientIncomingPacket
} }
// Check for enchanted level and ingredient count requirements. // Check for enchanted level and ingredient count requirements.
final List<ItemChanceHolder> summedIngredients = new ArrayList<>();
for (ItemChanceHolder ingredient : entry.getIngredients()) for (ItemChanceHolder ingredient : entry.getIngredients())
{
boolean added = false;
for (ItemChanceHolder summedIngredient : summedIngredients)
{
if ((summedIngredient.getId() == ingredient.getId()) && (summedIngredient.getEnchantmentLevel() == ingredient.getEnchantmentLevel()))
{
summedIngredients.add(new ItemChanceHolder(ingredient.getId(), ingredient.getChance(), ingredient.getCount() + summedIngredient.getCount(), ingredient.getEnchantmentLevel(), ingredient.isMaintainIngredient()));
summedIngredients.remove(summedIngredient);
added = true;
}
}
if (!added)
{
summedIngredients.add(ingredient);
}
}
for (ItemChanceHolder ingredient : summedIngredients)
{ {
if (ingredient.getEnchantmentLevel() > 0) if (ingredient.getEnchantmentLevel() > 0)
{ {

View File

@@ -16,6 +16,7 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.OptionalLong; import java.util.OptionalLong;
@@ -271,7 +272,25 @@ public class MultiSellChoose implements IClientIncomingPacket
} }
// Check for enchanted level and ingredient count requirements. // Check for enchanted level and ingredient count requirements.
final List<ItemChanceHolder> summedIngredients = new ArrayList<>();
for (ItemChanceHolder ingredient : entry.getIngredients()) for (ItemChanceHolder ingredient : entry.getIngredients())
{
boolean added = false;
for (ItemChanceHolder summedIngredient : summedIngredients)
{
if ((summedIngredient.getId() == ingredient.getId()) && (summedIngredient.getEnchantmentLevel() == ingredient.getEnchantmentLevel()))
{
summedIngredients.add(new ItemChanceHolder(ingredient.getId(), ingredient.getChance(), ingredient.getCount() + summedIngredient.getCount(), ingredient.getEnchantmentLevel(), ingredient.isMaintainIngredient()));
summedIngredients.remove(summedIngredient);
added = true;
}
}
if (!added)
{
summedIngredients.add(ingredient);
}
}
for (ItemChanceHolder ingredient : summedIngredients)
{ {
if (ingredient.getEnchantmentLevel() > 0) if (ingredient.getEnchantmentLevel() > 0)
{ {

View File

@@ -16,6 +16,7 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.OptionalLong; import java.util.OptionalLong;
@@ -271,7 +272,25 @@ public class MultiSellChoose implements IClientIncomingPacket
} }
// Check for enchanted level and ingredient count requirements. // Check for enchanted level and ingredient count requirements.
final List<ItemChanceHolder> summedIngredients = new ArrayList<>();
for (ItemChanceHolder ingredient : entry.getIngredients()) for (ItemChanceHolder ingredient : entry.getIngredients())
{
boolean added = false;
for (ItemChanceHolder summedIngredient : summedIngredients)
{
if ((summedIngredient.getId() == ingredient.getId()) && (summedIngredient.getEnchantmentLevel() == ingredient.getEnchantmentLevel()))
{
summedIngredients.add(new ItemChanceHolder(ingredient.getId(), ingredient.getChance(), ingredient.getCount() + summedIngredient.getCount(), ingredient.getEnchantmentLevel(), ingredient.isMaintainIngredient()));
summedIngredients.remove(summedIngredient);
added = true;
}
}
if (!added)
{
summedIngredients.add(ingredient);
}
}
for (ItemChanceHolder ingredient : summedIngredients)
{ {
if (ingredient.getEnchantmentLevel() > 0) if (ingredient.getEnchantmentLevel() > 0)
{ {

View File

@@ -16,6 +16,7 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.OptionalLong; import java.util.OptionalLong;
@@ -271,7 +272,25 @@ public class MultiSellChoose implements IClientIncomingPacket
} }
// Check for enchanted level and ingredient count requirements. // Check for enchanted level and ingredient count requirements.
final List<ItemChanceHolder> summedIngredients = new ArrayList<>();
for (ItemChanceHolder ingredient : entry.getIngredients()) for (ItemChanceHolder ingredient : entry.getIngredients())
{
boolean added = false;
for (ItemChanceHolder summedIngredient : summedIngredients)
{
if ((summedIngredient.getId() == ingredient.getId()) && (summedIngredient.getEnchantmentLevel() == ingredient.getEnchantmentLevel()))
{
summedIngredients.add(new ItemChanceHolder(ingredient.getId(), ingredient.getChance(), ingredient.getCount() + summedIngredient.getCount(), ingredient.getEnchantmentLevel(), ingredient.isMaintainIngredient()));
summedIngredients.remove(summedIngredient);
added = true;
}
}
if (!added)
{
summedIngredients.add(ingredient);
}
}
for (ItemChanceHolder ingredient : summedIngredients)
{ {
if (ingredient.getEnchantmentLevel() > 0) if (ingredient.getEnchantmentLevel() > 0)
{ {

View File

@@ -16,6 +16,7 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.OptionalLong; import java.util.OptionalLong;
@@ -271,7 +272,25 @@ public class MultiSellChoose implements IClientIncomingPacket
} }
// Check for enchanted level and ingredient count requirements. // Check for enchanted level and ingredient count requirements.
final List<ItemChanceHolder> summedIngredients = new ArrayList<>();
for (ItemChanceHolder ingredient : entry.getIngredients()) for (ItemChanceHolder ingredient : entry.getIngredients())
{
boolean added = false;
for (ItemChanceHolder summedIngredient : summedIngredients)
{
if ((summedIngredient.getId() == ingredient.getId()) && (summedIngredient.getEnchantmentLevel() == ingredient.getEnchantmentLevel()))
{
summedIngredients.add(new ItemChanceHolder(ingredient.getId(), ingredient.getChance(), ingredient.getCount() + summedIngredient.getCount(), ingredient.getEnchantmentLevel(), ingredient.isMaintainIngredient()));
summedIngredients.remove(summedIngredient);
added = true;
}
}
if (!added)
{
summedIngredients.add(ingredient);
}
}
for (ItemChanceHolder ingredient : summedIngredients)
{ {
if (ingredient.getEnchantmentLevel() > 0) if (ingredient.getEnchantmentLevel() > 0)
{ {

View File

@@ -16,6 +16,7 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.OptionalLong; import java.util.OptionalLong;
@@ -236,7 +237,25 @@ public class MultiSellChoose implements IClientIncomingPacket
} }
// Check for enchanted level and ingredient count requirements. // Check for enchanted level and ingredient count requirements.
final List<ItemChanceHolder> summedIngredients = new ArrayList<>();
for (ItemChanceHolder ingredient : entry.getIngredients()) for (ItemChanceHolder ingredient : entry.getIngredients())
{
boolean added = false;
for (ItemChanceHolder summedIngredient : summedIngredients)
{
if ((summedIngredient.getId() == ingredient.getId()) && (summedIngredient.getEnchantmentLevel() == ingredient.getEnchantmentLevel()))
{
summedIngredients.add(new ItemChanceHolder(ingredient.getId(), ingredient.getChance(), ingredient.getCount() + summedIngredient.getCount(), ingredient.getEnchantmentLevel(), ingredient.isMaintainIngredient()));
summedIngredients.remove(summedIngredient);
added = true;
}
}
if (!added)
{
summedIngredients.add(ingredient);
}
}
for (ItemChanceHolder ingredient : summedIngredients)
{ {
if (ingredient.getEnchantmentLevel() > 0) if (ingredient.getEnchantmentLevel() > 0)
{ {