Fixed CreateItemRandom handler consuming more than one reagent.

This commit is contained in:
MobiusDev 2018-09-01 17:38:57 +00:00
parent 101ec3e0a7
commit 03da47d5c6
7 changed files with 56 additions and 133 deletions

View File

@ -25,9 +25,7 @@ import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.holders.ItemChanceHolder;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ActionType;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.network.SystemMessageId;
/**
* @author UnAfraid
@ -65,28 +63,19 @@ public class CreateItemRandom extends AbstractEffect
return;
}
ItemChanceHolder selectedItem = null;
final double random = Rnd.nextDouble() * 100;
double comulativeChance = 0;
for (ItemChanceHolder holder : item.getItem().getCreateItems())
for (int attempt = 0; attempt <= 1000; attempt++) // 1000 attempts! TODO: Remove this whole handler.
{
comulativeChance += holder.getChance();
if (comulativeChance >= random)
for (ItemChanceHolder holder : item.getItem().getCreateItems())
{
selectedItem = holder;
break;
comulativeChance += holder.getChance();
if (comulativeChance >= random)
{
player.addItem("CreateItems", holder.getId(), holder.getCount(), player, true);
return;
}
}
}
if (selectedItem == null)
{
player.sendPacket(SystemMessageId.THERE_WAS_NOTHING_FOUND_INSIDE);
return;
}
if ((item.getItem().getDefaultAction() != ActionType.SKILL_REDUCE_ON_SKILL_SUCCESS) || player.destroyItem("Consume", item.getObjectId(), 1, player, true))
{
player.addItem("CreateItems", selectedItem.getId(), selectedItem.getCount(), player, true);
}
}
}

View File

@ -25,9 +25,7 @@ import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.holders.ItemChanceHolder;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ActionType;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.network.SystemMessageId;
/**
* @author UnAfraid
@ -65,28 +63,19 @@ public class CreateItemRandom extends AbstractEffect
return;
}
ItemChanceHolder selectedItem = null;
final double random = Rnd.nextDouble() * 100;
double comulativeChance = 0;
for (ItemChanceHolder holder : item.getItem().getCreateItems())
for (int attempt = 0; attempt <= 1000; attempt++) // 1000 attempts! TODO: Remove this whole handler.
{
comulativeChance += holder.getChance();
if (comulativeChance >= random)
for (ItemChanceHolder holder : item.getItem().getCreateItems())
{
selectedItem = holder;
break;
comulativeChance += holder.getChance();
if (comulativeChance >= random)
{
player.addItem("CreateItems", holder.getId(), holder.getCount(), player, true);
return;
}
}
}
if (selectedItem == null)
{
player.sendPacket(SystemMessageId.THERE_WAS_NOTHING_FOUND_INSIDE);
return;
}
if ((item.getItem().getDefaultAction() != ActionType.SKILL_REDUCE_ON_SKILL_SUCCESS) || player.destroyItem("Consume", item.getObjectId(), 1, player, true))
{
player.addItem("CreateItems", selectedItem.getId(), selectedItem.getCount(), player, true);
}
}
}

View File

@ -25,9 +25,7 @@ import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.holders.ItemChanceHolder;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ActionType;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.network.SystemMessageId;
/**
* @author UnAfraid
@ -65,28 +63,19 @@ public class CreateItemRandom extends AbstractEffect
return;
}
ItemChanceHolder selectedItem = null;
final double random = Rnd.nextDouble() * 100;
double comulativeChance = 0;
for (ItemChanceHolder holder : item.getItem().getCreateItems())
for (int attempt = 0; attempt <= 1000; attempt++) // 1000 attempts! TODO: Remove this whole handler.
{
comulativeChance += holder.getChance();
if (comulativeChance >= random)
for (ItemChanceHolder holder : item.getItem().getCreateItems())
{
selectedItem = holder;
break;
comulativeChance += holder.getChance();
if (comulativeChance >= random)
{
player.addItem("CreateItems", holder.getId(), holder.getCount(), player, true);
return;
}
}
}
if (selectedItem == null)
{
player.sendPacket(SystemMessageId.THERE_WAS_NOTHING_FOUND_INSIDE);
return;
}
if ((item.getItem().getDefaultAction() != ActionType.SKILL_REDUCE_ON_SKILL_SUCCESS) || player.destroyItem("Consume", item.getObjectId(), 1, player, true))
{
player.addItem("CreateItems", selectedItem.getId(), selectedItem.getCount(), player, true);
}
}
}

View File

@ -25,9 +25,7 @@ import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.holders.ItemChanceHolder;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ActionType;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.network.SystemMessageId;
/**
* @author UnAfraid
@ -65,28 +63,19 @@ public class CreateItemRandom extends AbstractEffect
return;
}
ItemChanceHolder selectedItem = null;
final double random = Rnd.nextDouble() * 100;
double comulativeChance = 0;
for (ItemChanceHolder holder : item.getItem().getCreateItems())
for (int attempt = 0; attempt <= 1000; attempt++) // 1000 attempts! TODO: Remove this whole handler.
{
comulativeChance += holder.getChance();
if (comulativeChance >= random)
for (ItemChanceHolder holder : item.getItem().getCreateItems())
{
selectedItem = holder;
break;
comulativeChance += holder.getChance();
if (comulativeChance >= random)
{
player.addItem("CreateItems", holder.getId(), holder.getCount(), player, true);
return;
}
}
}
if (selectedItem == null)
{
player.sendPacket(SystemMessageId.THERE_WAS_NOTHING_FOUND_INSIDE);
return;
}
if ((item.getItem().getDefaultAction() != ActionType.SKILL_REDUCE_ON_SKILL_SUCCESS) || player.destroyItem("Consume", item.getObjectId(), 1, player, true))
{
player.addItem("CreateItems", selectedItem.getId(), selectedItem.getCount(), player, true);
}
}
}

View File

@ -25,9 +25,7 @@ import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.holders.ItemChanceHolder;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ActionType;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.network.SystemMessageId;
/**
* @author UnAfraid
@ -65,28 +63,19 @@ public class CreateItemRandom extends AbstractEffect
return;
}
ItemChanceHolder selectedItem = null;
final double random = Rnd.nextDouble() * 100;
double comulativeChance = 0;
for (ItemChanceHolder holder : item.getItem().getCreateItems())
for (int attempt = 0; attempt <= 1000; attempt++) // 1000 attempts! TODO: Remove this whole handler.
{
comulativeChance += holder.getChance();
if (comulativeChance >= random)
for (ItemChanceHolder holder : item.getItem().getCreateItems())
{
selectedItem = holder;
break;
comulativeChance += holder.getChance();
if (comulativeChance >= random)
{
player.addItem("CreateItems", holder.getId(), holder.getCount(), player, true);
return;
}
}
}
if (selectedItem == null)
{
player.sendPacket(SystemMessageId.THERE_WAS_NOTHING_FOUND_INSIDE);
return;
}
if ((item.getItem().getDefaultAction() != ActionType.SKILL_REDUCE_ON_SKILL_SUCCESS) || player.destroyItem("Consume", item.getObjectId(), 1, player, true))
{
player.addItem("CreateItems", selectedItem.getId(), selectedItem.getCount(), player, true);
}
}
}

View File

@ -25,9 +25,7 @@ import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.holders.ItemChanceHolder;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ActionType;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.network.SystemMessageId;
/**
* @author UnAfraid
@ -65,28 +63,19 @@ public class CreateItemRandom extends AbstractEffect
return;
}
ItemChanceHolder selectedItem = null;
final double random = Rnd.nextDouble() * 100;
double comulativeChance = 0;
for (ItemChanceHolder holder : item.getItem().getCreateItems())
for (int attempt = 0; attempt <= 1000; attempt++) // 1000 attempts! TODO: Remove this whole handler.
{
comulativeChance += holder.getChance();
if (comulativeChance >= random)
for (ItemChanceHolder holder : item.getItem().getCreateItems())
{
selectedItem = holder;
break;
comulativeChance += holder.getChance();
if (comulativeChance >= random)
{
player.addItem("CreateItems", holder.getId(), holder.getCount(), player, true);
return;
}
}
}
if (selectedItem == null)
{
player.sendPacket(SystemMessageId.THERE_WAS_NOTHING_FOUND_INSIDE);
return;
}
if ((item.getItem().getDefaultAction() != ActionType.SKILL_REDUCE_ON_SKILL_SUCCESS) || player.destroyItem("Consume", item.getObjectId(), 1, player, true))
{
player.addItem("CreateItems", selectedItem.getId(), selectedItem.getCount(), player, true);
}
}
}

View File

@ -25,9 +25,7 @@ import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.holders.ItemChanceHolder;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ActionType;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.network.SystemMessageId;
/**
* @author UnAfraid
@ -65,28 +63,19 @@ public class CreateItemRandom extends AbstractEffect
return;
}
ItemChanceHolder selectedItem = null;
final double random = Rnd.nextDouble() * 100;
double comulativeChance = 0;
for (ItemChanceHolder holder : item.getItem().getCreateItems())
for (int attempt = 0; attempt <= 1000; attempt++) // 1000 attempts! TODO: Remove this whole handler.
{
comulativeChance += holder.getChance();
if (comulativeChance >= random)
for (ItemChanceHolder holder : item.getItem().getCreateItems())
{
selectedItem = holder;
break;
comulativeChance += holder.getChance();
if (comulativeChance >= random)
{
player.addItem("CreateItems", holder.getId(), holder.getCount(), player, true);
return;
}
}
}
if (selectedItem == null)
{
player.sendPacket(SystemMessageId.THERE_WAS_NOTHING_FOUND_INSIDE);
return;
}
if ((item.getItem().getDefaultAction() != ActionType.SKILL_REDUCE_ON_SKILL_SUCCESS) || player.destroyItem("Consume", item.getObjectId(), 1, player, true))
{
player.addItem("CreateItems", selectedItem.getId(), selectedItem.getCount(), player, true);
}
}
}