Sync with L2jServer HighFive Aug 10th 2015.
This commit is contained in:
@ -28,8 +28,8 @@ import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.logging.Level;
|
||||
@ -134,8 +134,8 @@ public class L2Clan implements IIdentifiable, INamable
|
||||
private int _bloodOathCount;
|
||||
|
||||
private final ItemContainer _warehouse = new ClanWarehouse(this);
|
||||
private final List<Integer> _atWarWith = new CopyOnWriteArrayList<>();
|
||||
private final List<Integer> _atWarAttackers = new CopyOnWriteArrayList<>();
|
||||
private final Set<Integer> _atWarWith = ConcurrentHashMap.newKeySet();
|
||||
private final Set<Integer> _atWarAttackers = ConcurrentHashMap.newKeySet();
|
||||
|
||||
private Forum _forum;
|
||||
|
||||
@ -1598,7 +1598,7 @@ public class L2Clan implements IIdentifiable, INamable
|
||||
return _warehouse;
|
||||
}
|
||||
|
||||
public boolean isAtWarWith(Integer id)
|
||||
public boolean isAtWarWith(int id)
|
||||
{
|
||||
return _atWarWith.contains(id);
|
||||
}
|
||||
@ -1658,12 +1658,12 @@ public class L2Clan implements IIdentifiable, INamable
|
||||
return (_atWarWith != null) && !_atWarWith.isEmpty();
|
||||
}
|
||||
|
||||
public List<Integer> getWarList()
|
||||
public Set<Integer> getWarList()
|
||||
{
|
||||
return _atWarWith;
|
||||
}
|
||||
|
||||
public List<Integer> getAttackerList()
|
||||
public Set<Integer> getAttackerList()
|
||||
{
|
||||
return _atWarAttackers;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -98,6 +98,7 @@ public final class OlympiadGameTask implements Runnable
|
||||
BATTLE_COUNTDOWN_SECOND,
|
||||
BATTLE_STARTED,
|
||||
BATTLE_IN_PROGRESS,
|
||||
GAME_CANCELLED,
|
||||
GAME_STOPPED,
|
||||
TELEPORT_TO_TOWN,
|
||||
CLEANUP,
|
||||
@ -201,7 +202,7 @@ public final class OlympiadGameTask implements Runnable
|
||||
{
|
||||
if (!startGame())
|
||||
{
|
||||
_state = GameState.GAME_STOPPED;
|
||||
_state = GameState.GAME_CANCELLED;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -273,6 +274,13 @@ public final class OlympiadGameTask implements Runnable
|
||||
|
||||
break;
|
||||
}
|
||||
// Battle cancelled before teleport participants to the stadium
|
||||
case GAME_CANCELLED:
|
||||
{
|
||||
stopGame();
|
||||
_state = GameState.CLEANUP;
|
||||
break;
|
||||
}
|
||||
// End of the battle
|
||||
case GAME_STOPPED:
|
||||
{
|
||||
|
Reference in New Issue
Block a user