package com.l2jserver.gameserver.model.actor.instance; import java.util.Collection; import com.l2jserver.gameserver.model.actor.L2Character; import com.l2jserver.gameserver.network.serverpackets.AbstractNpcInfo; import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket; import com.l2jserver.gameserver.templates.chars.L2NpcTemplate; /** ** @author Gnacik ** */ public final class L2EventChestInstance extends L2EventMonsterInstance { private boolean _isVisible = false; private boolean _isTriggered = false; public L2EventChestInstance(int objectId, L2NpcTemplate template) { super(objectId, template); setIsNoRndWalk(true); disableCoreAI(true); eventSetDropOnGround(true); eventSetBlockOffensiveSkills(true); } public boolean canSee(L2Character cha) { if(cha == null) return false; if(cha.isGM()) return true; return _isVisible; } public void trigger() { _isTriggered = true; broadcastPacket(new AbstractNpcInfo.NpcInfo(this, null)); } @Override public void sendInfo(L2PcInstance activeChar) { if (_isTriggered || canSee(activeChar)) activeChar.sendPacket(new AbstractNpcInfo.NpcInfo(this, activeChar)); } @Override public void broadcastPacket(L2GameServerPacket mov) { Collection<L2PcInstance> plrs = getKnownList().getKnownPlayers().values(); for (L2PcInstance player : plrs) if (player != null && (_isTriggered || canSee(player))) player.sendPacket(mov); } @Override public void broadcastPacket(L2GameServerPacket mov, int radiusInKnownlist) { Collection<L2PcInstance> plrs = getKnownList().getKnownPlayers().values(); for (L2PcInstance player : plrs) { if (player == null) continue; if (isInsideRadius(player, radiusInKnownlist, false, false)) if (_isTriggered || canSee(player)) player.sendPacket(mov); } } @Override public boolean isAutoAttackable(L2Character attacker) { return !canSee(attacker); } }