Sync with L2jServer HighFive Aug 10th 2015.

This commit is contained in:
MobiusDev
2015-08-10 16:00:44 +00:00
parent 5d66d96eff
commit cd6d0d7188
7 changed files with 199 additions and 175 deletions

View File

@ -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;
}

View File

@ -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)

View File

@ -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);
}
}
}

View File

@ -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:
{