Sync with L2jServer HighFive Aug 10th 2015.
This commit is contained in:
@@ -130,7 +130,6 @@ import com.l2jserver.gameserver.model.L2ManufactureItem;
|
||||
import com.l2jserver.gameserver.model.L2Object;
|
||||
import com.l2jserver.gameserver.model.L2Party;
|
||||
import com.l2jserver.gameserver.model.L2Party.messageType;
|
||||
import com.l2jserver.gameserver.model.L2PetData;
|
||||
import com.l2jserver.gameserver.model.L2PetLevelData;
|
||||
import com.l2jserver.gameserver.model.L2PremiumItem;
|
||||
import com.l2jserver.gameserver.model.L2Radar;
|
||||
@@ -434,7 +433,6 @@ public final class L2PcInstance extends L2Playable
|
||||
|
||||
/** data for mounted pets */
|
||||
private int _controlItemId;
|
||||
private L2PetData _data;
|
||||
private L2PetLevelData _leveldata;
|
||||
private int _curFeed;
|
||||
protected Future<?> _mountFeedTask;
|
||||
@@ -5821,7 +5819,6 @@ public final class L2PcInstance extends L2Playable
|
||||
stopWarnUserTakeBreak();
|
||||
stopWaterTask();
|
||||
stopFeed();
|
||||
clearPetData();
|
||||
storePetFood(_mountNpcId);
|
||||
stopRentPet();
|
||||
stopPvpRegTask();
|
||||
@@ -6509,7 +6506,6 @@ public final class L2PcInstance extends L2Playable
|
||||
getEffectList().stopAllToggles();
|
||||
setMount(pet.getId(), pet.getLevel());
|
||||
setMountObjectID(pet.getControlObjectId());
|
||||
clearPetData();
|
||||
startFeed(pet.getId());
|
||||
broadcastPacket(new Ride(this));
|
||||
|
||||
@@ -6529,7 +6525,6 @@ public final class L2PcInstance extends L2Playable
|
||||
|
||||
getEffectList().stopAllToggles();
|
||||
setMount(npcId, getLevel());
|
||||
clearPetData();
|
||||
setMountObjectID(controlItemObjId);
|
||||
broadcastPacket(new Ride(this));
|
||||
|
||||
@@ -6653,7 +6648,6 @@ public final class L2PcInstance extends L2Playable
|
||||
int petId = _mountNpcId;
|
||||
setMount(0, 0);
|
||||
stopFeed();
|
||||
clearPetData();
|
||||
if (wasFlying)
|
||||
{
|
||||
removeSkill(CommonSkill.WYVERN_BREATH.getSkill());
|
||||
@@ -13033,20 +13027,6 @@ public final class L2PcInstance extends L2Playable
|
||||
}
|
||||
}
|
||||
|
||||
private final void clearPetData()
|
||||
{
|
||||
_data = null;
|
||||
}
|
||||
|
||||
public final L2PetData getPetData(int npcId)
|
||||
{
|
||||
if (_data == null)
|
||||
{
|
||||
_data = PetDataTable.getInstance().getPetData(npcId);
|
||||
}
|
||||
return _data;
|
||||
}
|
||||
|
||||
private final L2PetLevelData getPetLevelData(int npcId)
|
||||
{
|
||||
if (_leveldata == null)
|
||||
@@ -13091,7 +13071,7 @@ public final class L2PcInstance extends L2Playable
|
||||
|
||||
public boolean isHungry()
|
||||
{
|
||||
return _canFeed ? (getCurrentFeed() < ((getPetData(getMountNpcId()).getHungryLimit() / 100f) * getPetLevelData(getMountNpcId()).getPetMaxFeed())) : false;
|
||||
return _canFeed ? (getCurrentFeed() < ((PetDataTable.getInstance().getPetData(getMountNpcId()).getHungryLimit() / 100f) * getPetLevelData(getMountNpcId()).getPetMaxFeed())) : false;
|
||||
}
|
||||
|
||||
public void enteredNoLanding(int delay)
|
||||
|
@@ -22,6 +22,7 @@ import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.l2jserver.gameserver.data.xml.impl.PetDataTable;
|
||||
import com.l2jserver.gameserver.handler.IItemHandler;
|
||||
import com.l2jserver.gameserver.handler.ItemHandler;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
@@ -47,62 +48,61 @@ public class PetFeedTask implements Runnable
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
if (_player != null)
|
||||
try
|
||||
{
|
||||
try
|
||||
if (!_player.isMounted() || (_player.getMountNpcId() == 0) || (PetDataTable.getInstance().getPetData(_player.getMountNpcId()) == null))
|
||||
{
|
||||
if (!_player.isMounted() || (_player.getMountNpcId() == 0) || (_player.getPetData(_player.getMountNpcId()) == null))
|
||||
_player.stopFeed();
|
||||
return;
|
||||
}
|
||||
|
||||
if (_player.getCurrentFeed() > _player.getFeedConsume())
|
||||
{
|
||||
// eat
|
||||
_player.setCurrentFeed(_player.getCurrentFeed() - _player.getFeedConsume());
|
||||
}
|
||||
else
|
||||
{
|
||||
// go back to pet control item, or simply said, unsummon it
|
||||
_player.setCurrentFeed(0);
|
||||
_player.stopFeed();
|
||||
_player.dismount();
|
||||
_player.sendPacket(SystemMessageId.YOU_ARE_OUT_OF_FEED_MOUNT_STATUS_CANCELED);
|
||||
return;
|
||||
}
|
||||
|
||||
final List<Integer> foodIds = PetDataTable.getInstance().getPetData(_player.getMountNpcId()).getFood();
|
||||
if (foodIds.isEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
L2ItemInstance food = null;
|
||||
for (int id : foodIds)
|
||||
{
|
||||
// TODO: possibly pet inv?
|
||||
food = _player.getInventory().getItemByItemId(id);
|
||||
if (food != null)
|
||||
{
|
||||
_player.stopFeed();
|
||||
return;
|
||||
}
|
||||
|
||||
if (_player.getCurrentFeed() > _player.getFeedConsume())
|
||||
{
|
||||
// eat
|
||||
_player.setCurrentFeed(_player.getCurrentFeed() - _player.getFeedConsume());
|
||||
}
|
||||
else
|
||||
{
|
||||
// go back to pet control item, or simply said, unsummon it
|
||||
_player.setCurrentFeed(0);
|
||||
_player.stopFeed();
|
||||
_player.dismount();
|
||||
_player.sendPacket(SystemMessageId.YOU_ARE_OUT_OF_FEED_MOUNT_STATUS_CANCELED);
|
||||
}
|
||||
|
||||
List<Integer> foodIds = _player.getPetData(_player.getMountNpcId()).getFood();
|
||||
if (foodIds.isEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
L2ItemInstance food = null;
|
||||
for (int id : foodIds)
|
||||
{
|
||||
// TODO: possibly pet inv?
|
||||
food = _player.getInventory().getItemByItemId(id);
|
||||
if (food != null)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ((food != null) && _player.isHungry())
|
||||
{
|
||||
IItemHandler handler = ItemHandler.getInstance().getHandler(food.getEtcItem());
|
||||
if (handler != null)
|
||||
{
|
||||
handler.useItem(_player, food, false);
|
||||
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOUR_PET_WAS_HUNGRY_SO_IT_ATE_S1);
|
||||
sm.addItemName(food.getId());
|
||||
_player.sendPacket(sm);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
|
||||
if ((food != null) && _player.isHungry())
|
||||
{
|
||||
_log.log(Level.SEVERE, "Mounted Pet [NpcId: " + _player.getMountNpcId() + "] a feed task error has occurred", e);
|
||||
IItemHandler handler = ItemHandler.getInstance().getHandler(food.getEtcItem());
|
||||
if (handler != null)
|
||||
{
|
||||
handler.useItem(_player, food, false);
|
||||
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOUR_PET_WAS_HUNGRY_SO_IT_ATE_S1);
|
||||
sm.addItemName(food.getId());
|
||||
_player.sendPacket(sm);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_log.log(Level.SEVERE, "Mounted Pet [NpcId: " + _player.getMountNpcId() + "] a feed task error has occurred", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user