Package com.l2jfrozen.gameserver.ai.special

Source Code of com.l2jfrozen.gameserver.ai.special.Monastery

/*
* 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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
*/
package com.l2jfrozen.gameserver.ai.special;

import java.util.Collection;

import javolution.util.FastList;

import com.l2jfrozen.gameserver.ai.CtrlIntention;
import com.l2jfrozen.gameserver.datatables.SkillTable;
import com.l2jfrozen.gameserver.model.L2Attackable;
import com.l2jfrozen.gameserver.model.L2Character;
import com.l2jfrozen.gameserver.model.L2Object;
import com.l2jfrozen.gameserver.model.L2Skill;
import com.l2jfrozen.gameserver.model.L2Skill.SkillType;
import com.l2jfrozen.gameserver.model.L2Summon;
import com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2PetInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2PlayableInstance;
import com.l2jfrozen.gameserver.model.quest.Quest;
import com.l2jfrozen.gameserver.network.serverpackets.CreatureSay;
import com.l2jfrozen.gameserver.util.Util;
import com.l2jfrozen.util.random.Rnd;


public class Monastery extends Quest implements Runnable
{
  static final int[] mobs1 = {22124, 22125, 22126, 22127, 22129};
  static final int[] mobs2 = {22134, 22135};
  //TODO: npcstring
  static final String[] text = {
    "You cannot carry a weapon without authorization!",
    "name, why would you choose the path of darkness?!",
    "name! How dare you defy the will of Einhasad!"
  };
  public Monastery(int questId, String name, String descr)
  {
    super(questId, name, descr);
    registerMobs(mobs1, QuestEventType.ON_AGGRO_RANGE_ENTER, QuestEventType.ON_SPAWN, QuestEventType.ON_SPELL_FINISHED);
    registerMobs(mobs2, QuestEventType.ON_SPELL_FINISHED);
  }
 
  @Override
  public String onAggroRangeEnter(L2NpcInstance npc, L2PcInstance player, boolean isPet)
  {
    if (Util.contains(mobs1,npc.getNpcId()) && !npc.isInCombat() && npc.getTarget() == null)
    {
      if (player.getActiveWeaponInstance() != null && !player.isSilentMoving())
      {
        npc.setTarget(player);
        npc.broadcastPacket(new CreatureSay(npc.getObjectId(), 0, npc.getName(),  text[0]));
       
        switch (npc.getNpcId())
        {
          case 22124:
          case 22126:
          {
            L2Skill skill = SkillTable.getInstance().getInfo(4589,8);
            npc.doCast(skill);
            break;
          }
          default:
          {
            npc.setIsRunning(true);
            ((L2Attackable) npc).addDamageHate(player, 0, 999);
            npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player);
            break;
          }
        }
      }
      else if (((L2Attackable)npc).getMostHated() == null)
        return null;
    }
    return super.onAggroRangeEnter(npc, player, isPet);
  }
 
 
  @Override
  public String onSpawn(L2NpcInstance npc)
  {
    if (Util.contains(mobs1,npc.getNpcId()))
    {
      FastList<L2PlayableInstance> result = new FastList<L2PlayableInstance>();
      Collection<L2Object> objs = npc.getKnownList().getKnownObjects().values();
      for (L2Object obj : objs)
      {
        if (obj instanceof L2PcInstance || obj instanceof L2PetInstance)
        {
          if (Util.checkIfInRange(npc.getAggroRange(), npc, obj, true) && !((L2Character) obj).isDead())
            result.add((L2PlayableInstance) obj);
        }
      }
      if (!result.isEmpty() && result.size() != 0)
      {
        Object[] characters = result.toArray();
        for (Object obj : characters)
        {
          L2PlayableInstance target = (L2PlayableInstance) (obj instanceof L2PcInstance ? obj : ((L2Summon) obj).getOwner());
         
          if(target.getActiveWeaponInstance() == null || (target instanceof L2PcInstance && ((L2PcInstance)target).isSilentMoving()) || (target instanceof L2Summon && ((L2Summon)target).getOwner().isSilentMoving())){
            continue;
          }
         
          if (target.getActiveWeaponInstance() != null && !npc.isInCombat() && npc.getTarget() == null)
          {
            npc.setTarget(target);
            npc.broadcastPacket(new CreatureSay(npc.getObjectId(), 0, npc.getName(),  text[0]));
            switch (npc.getNpcId())
            {
              case 22124:
              case 22126:
              case 22127:
              {
                L2Skill skill = SkillTable.getInstance().getInfo(4589,8);
                npc.doCast(skill);
                break;
              }
              default:
              {
                npc.setIsRunning(true);
                ((L2Attackable) npc).addDamageHate(target, 0, 999);
                npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
                break;
              }
            }
          }
        }
      }
    }
   
    return super.onSpawn(npc);
  }
 
  @Override
  public String onSpellFinished(L2NpcInstance npc, L2PcInstance player, L2Skill skill)
  {
    if (Util.contains(mobs1,npc.getNpcId()) && skill.getId() == 4589)
    {
      npc.setIsRunning(true);
      ((L2Attackable) npc).addDamageHate(player, 0, 999);
      npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player);
    }
   
    if (Util.contains(mobs2,npc.getNpcId()))
    {
      if (skill.getSkillType() == SkillType.AGGDAMAGE)
      {
        npc.broadcastPacket(new CreatureSay(npc.getObjectId(), 0, npc.getName(),  text[Rnd.get(2)+1].replace("name", player.getName())));
        ((L2Attackable) npc).addDamageHate(player, 0, 999);
        npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player);
     
      }
    }
   
    return super.onSpellFinished(npc, player, skill);
  }
 

  @Override
  public void run()
  {}
 
}
TOP

Related Classes of com.l2jfrozen.gameserver.ai.special.Monastery

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.