SkillCreateItem fix and rework.

This commit is contained in:
MobiusDevelopment
2020-03-30 13:33:18 +00:00
parent 9cb1ed319e
commit fede9fd0cb
6 changed files with 95 additions and 136 deletions

View File

@@ -16,81 +16,40 @@
*/
package org.l2jmobius.gameserver.model.skills.handlers;
import java.util.List;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.idfactory.IdFactory;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ItemList;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* @author Nemesiss
* @author Nemesiss, Mobius
*/
public class SkillCreateItem extends Skill
{
private final List<Integer> _createItemId;
private final int _createItemId;
private final int _createItemCount;
private final int _randomCount;
private final int _createRandomCount;
public SkillCreateItem(StatSet set)
{
super(set);
_createItemId = set.getList("create_item_id", Integer.class);
_createItemCount = set.getInt("create_item_count", 0);
_randomCount = set.getInt("random_count", 1);
_createItemId = set.getInt("createItemId", 0);
_createItemCount = set.getInt("createItemCount", 0);
_createRandomCount = set.getInt("createRandomCount", 0);
}
@Override
public void useSkill(Creature creature, WorldObject[] targets)
{
if (creature.isAlikeDead())
if (creature.isAlikeDead() || (_createItemId == 0) || (_createItemCount == 0))
{
return;
}
if ((_createItemId == null) || (_createItemCount == 0))
if (creature.isPlayable())
{
// player.sendPacket(new SystemMessage(SystemMessageId.SKILL_NOT_AVAILABLE));
return;
creature.getActingPlayer().addItem("Create Item Skill", _createItemId, _createRandomCount > 1 ? _createItemCount * (Rnd.get(_createRandomCount) + 1) : _createItemCount, creature, true);
}
final PlayerInstance player = (PlayerInstance) creature;
if (creature instanceof PlayerInstance)
{
final int count = _createItemCount * (Rnd.get(_randomCount) + 1);
final int rndId = Rnd.get(_createItemId.size());
giveItems(player, _createItemId.get(rndId), count);
}
}
/**
* @param player
* @param itemId
* @param count
*/
public void giveItems(PlayerInstance player, int itemId, int count)
{
final ItemInstance item = new ItemInstance(IdFactory.getNextId(), itemId);
item.setCount(count);
player.getInventory().addItem("Skill", item, player, player);
if (count > 1)
{
final SystemMessage smsg = new SystemMessage(SystemMessageId.YOU_HAVE_EARNED_S2_S1_S);
smsg.addItemName(item.getItemId());
smsg.addNumber(count);
player.sendPacket(smsg);
}
else
{
final SystemMessage smsg = new SystemMessage(SystemMessageId.YOU_HAVE_EARNED_S1);
smsg.addItemName(item.getItemId());
player.sendPacket(smsg);
}
player.sendPacket(new ItemList(player, false));
}
}