All pastes #810927 Raw Edit

Mine

public java v1 · immutable
·published 2007-12-10 12:54 UTC
rendered paste body
/* This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * * http://www.gnu.org/copyleft/gpl.html */package net.sf.l2j.gameserver.model.actor.instance;import net.sf.l2j.gameserver.ai.CtrlIntention;import net.sf.l2j.gameserver.instancemanager.SiegeManager;import net.sf.l2j.gameserver.model.L2Character;import net.sf.l2j.gameserver.model.L2SiegeClan;import net.sf.l2j.gameserver.model.entity.Siege;import net.sf.l2j.gameserver.serverpackets.ActionFailed;import net.sf.l2j.gameserver.serverpackets.MyTargetSelected;import net.sf.l2j.gameserver.serverpackets.StatusUpdate;import net.sf.l2j.gameserver.serverpackets.ValidateLocation;import net.sf.l2j.gameserver.templates.L2NpcTemplate;public class L2SiegeFlagInstance extends L2NpcInstance{    private L2PcInstance _player;    private Siege _siege;    public L2SiegeFlagInstance(L2PcInstance player, int objectId, L2NpcTemplate template)    {	super(objectId, template);	_player = player;	_siege = SiegeManager.getInstance().getSiege(_player.getX(), _player.getY(), _player.getZ());	if (_player.getClan() == null || _siege == null)	{	    deleteMe();	} else	{	    L2SiegeClan sc = _siege.getAttackerClan(_player.getClan());	    if (sc == null)	    {		deleteMe();	    } else	    {		sc.addFlag(this);	    }	}    }    @Override    public boolean isAttackable()    {	// Attackable during siege by attacker only	return getCastle() != null && getCastle().getCastleId() > 0 && getCastle().getSiege().getIsInProgress();    }    @Override    public boolean isAutoAttackable(L2Character attacker)    {	// Attackable during siege by attacker only	return attacker != null && attacker instanceof L2PcInstance && getCastle() != null && getCastle().getCastleId() > 0 && getCastle().getSiege().getIsInProgress();    }    @Override    public boolean doDie(L2Character killer)    {	if (!super.doDie(killer))	{	    return false;	}	L2SiegeClan sc = _siege.getAttackerClan(_player.getClan());	if (sc != null)	{	    sc.removeFlag(this);	}	return true;    }    @Override    public void onForcedAttack(L2PcInstance player)    {	onAction(player);    }    @Override    public void onAction(L2PcInstance player)    {    	if (player == null || !canTarget(player))	{	    return;	}	if (this != player.getTarget())	{		// Check if the L2PcInstance already target the L2NpcInstance	    player.setTarget(this);	    //	  Send a Server->Client packet MyTargetSelected to the L2PcInstance player	    MyTargetSelected my = new MyTargetSelected(getObjectId(), player.getLevel() - getLevel());	    player.sendPacket(my);        // Send a Server->Client packet StatusUpdate of the L2NpcInstance to the L2PcInstance to update its HP bar 	 	StatusUpdate su = new StatusUpdate(getObjectId()); 	 	su.addAttribute(StatusUpdate.CUR_HP, (int)getStatus().getCurrentHp() ); 	 	su.addAttribute(StatusUpdate.MAX_HP, getMaxHp() ); 	 	player.sendPacket(su); //	  Send a Server->Client packet ValidateLocation to correct the L2NpcInstance position and heading on the client 	    player.sendPacket(new ValidateLocation(this));	} else	{        if (isAutoAttackable(player) && Math.abs(player.getZ() - getZ()) < 100)          		player.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, this);          		else          		{          			// Send a Server->Client ActionFailed to the L2PcInstance in order to avoid that the client wait another packet          			player.sendPacket(new ActionFailed());          		} 		}	}    }}