|
@@ -23,6 +23,7 @@ import com.l2jserver.gameserver.handler.IItemHandler;
|
|
import com.l2jserver.gameserver.model.actor.L2Playable;
|
|
import com.l2jserver.gameserver.model.actor.L2Playable;
|
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
|
import com.l2jserver.gameserver.model.actor.instance.L2PetInstance;
|
|
import com.l2jserver.gameserver.model.actor.instance.L2PetInstance;
|
|
|
|
+import com.l2jserver.gameserver.model.holders.SkillHolder;
|
|
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
|
|
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
|
|
import com.l2jserver.gameserver.model.skills.L2Skill;
|
|
import com.l2jserver.gameserver.model.skills.L2Skill;
|
|
import com.l2jserver.gameserver.network.SystemMessageId;
|
|
import com.l2jserver.gameserver.network.SystemMessageId;
|
|
@@ -37,64 +38,38 @@ public class PetFood implements IItemHandler
|
|
@Override
|
|
@Override
|
|
public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
|
|
public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
|
|
{
|
|
{
|
|
- int itemId = item.getItemId();
|
|
|
|
- boolean used = false;
|
|
|
|
- switch (itemId)
|
|
|
|
|
|
+ final SkillHolder[] skills = item.getItem().getSkills();
|
|
|
|
+ if (skills != null)
|
|
{
|
|
{
|
|
- case 2515: // Food For Wolves
|
|
|
|
- used = useFood(playable, 2048, item);
|
|
|
|
- break;
|
|
|
|
- case 4038: // Food For Hatchling
|
|
|
|
- used = useFood(playable, 2063, item);
|
|
|
|
- break;
|
|
|
|
- case 5168: // Food for Strider
|
|
|
|
- used = useFood(playable, 2101, item);
|
|
|
|
- break;
|
|
|
|
- case 5169: // Deluxe Food for Strider
|
|
|
|
- used = useFood(playable, 2102, item);
|
|
|
|
- break;
|
|
|
|
- case 6316: // Food for Wyvern
|
|
|
|
- used = useFood(playable, 2180, item);
|
|
|
|
- break;
|
|
|
|
- case 7582: // Baby Spice
|
|
|
|
- used = useFood(playable, 2048, item);
|
|
|
|
- break;
|
|
|
|
- case 9668: // Great Wolf Food
|
|
|
|
- used = useFood(playable, 2361, item);
|
|
|
|
- break;
|
|
|
|
- case 10425: // Improved Baby Pet Food
|
|
|
|
- used = useFood(playable, 2361, item);
|
|
|
|
- break;
|
|
|
|
- case 14818: // Enriched Pet Food for Wolves
|
|
|
|
- used = useFood(playable, 2916, item);
|
|
|
|
- break;
|
|
|
|
- default:
|
|
|
|
- _log.warning("Pet Food Id: " + itemId + " without handler!");
|
|
|
|
- break;
|
|
|
|
|
|
+ for (SkillHolder sk : skills)
|
|
|
|
+ {
|
|
|
|
+ useFood(playable, sk.getSkillId(), sk.getSkillLvl(), item);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- return used;
|
|
|
|
|
|
+ return true;
|
|
}
|
|
}
|
|
|
|
|
|
- public boolean useFood(L2Playable activeChar, int magicId, L2ItemInstance item)
|
|
|
|
|
|
+ public boolean useFood(L2Playable activeChar, int skillId, int skillLevel, L2ItemInstance item)
|
|
{
|
|
{
|
|
- L2Skill skill = SkillTable.getInstance().getInfo(magicId, 1);
|
|
|
|
|
|
+ L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLevel);
|
|
if (skill != null)
|
|
if (skill != null)
|
|
{
|
|
{
|
|
- if (activeChar instanceof L2PetInstance)
|
|
|
|
|
|
+ if (activeChar.isPet())
|
|
{
|
|
{
|
|
- if (((L2PetInstance) activeChar).destroyItem("Consume", item.getObjectId(), 1, null, false))
|
|
|
|
|
|
+ L2PetInstance pet = (L2PetInstance) activeChar;
|
|
|
|
+ if (pet.destroyItem("Consume", item.getObjectId(), 1, null, false))
|
|
{
|
|
{
|
|
- activeChar.broadcastPacket(new MagicSkillUse(activeChar, activeChar, magicId, 1, 0, 0));
|
|
|
|
- ((L2PetInstance) activeChar).setCurrentFed(((L2PetInstance) activeChar).getCurrentFed() + (skill.getFeed() * Config.PET_FOOD_RATE));
|
|
|
|
- ((L2PetInstance) activeChar).broadcastStatusUpdate();
|
|
|
|
- if (((L2PetInstance) activeChar).getCurrentFed() < ((((L2PetInstance) activeChar).getPetData().getHungryLimit() / 100f) * ((L2PetInstance) activeChar).getPetLevelData().getPetMaxFeed()))
|
|
|
|
|
|
+ pet.broadcastPacket(new MagicSkillUse(pet, pet, skillId, skillLevel, 0, 0));
|
|
|
|
+ pet.setCurrentFed(((L2PetInstance) activeChar).getCurrentFed() + (skill.getFeed() * Config.PET_FOOD_RATE));
|
|
|
|
+ pet.broadcastStatusUpdate();
|
|
|
|
+ if (pet.getCurrentFed() < ((pet.getPetData().getHungryLimit() / 100f) * pet.getPetLevelData().getPetMaxFeed()))
|
|
{
|
|
{
|
|
activeChar.sendPacket(SystemMessageId.YOUR_PET_ATE_A_LITTLE_BUT_IS_STILL_HUNGRY);
|
|
activeChar.sendPacket(SystemMessageId.YOUR_PET_ATE_A_LITTLE_BUT_IS_STILL_HUNGRY);
|
|
}
|
|
}
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- else if (activeChar instanceof L2PcInstance)
|
|
|
|
|
|
+ else if (activeChar.isPlayer())
|
|
{
|
|
{
|
|
final L2PcInstance player = activeChar.getActingPlayer();
|
|
final L2PcInstance player = activeChar.getActingPlayer();
|
|
if (player.isMounted())
|
|
if (player.isMounted())
|
|
@@ -104,7 +79,7 @@ public class PetFood implements IItemHandler
|
|
{
|
|
{
|
|
if (player.destroyItem("Consume", item.getObjectId(), 1, null, false))
|
|
if (player.destroyItem("Consume", item.getObjectId(), 1, null, false))
|
|
{
|
|
{
|
|
- player.broadcastPacket(new MagicSkillUse(activeChar, activeChar, magicId, 1, 0, 0));
|
|
|
|
|
|
+ player.broadcastPacket(new MagicSkillUse(activeChar, activeChar, skillId, skillLevel, 0, 0));
|
|
player.setCurrentFeed(player.getCurrentFeed() + skill.getFeed());
|
|
player.setCurrentFeed(player.getCurrentFeed() + skill.getFeed());
|
|
}
|
|
}
|
|
return true;
|
|
return true;
|