Package ai

Source Code of ai.ThroneofDestruction

package ai;

import l2p.gameserver.ai.DefaultAI;
import l2p.gameserver.idfactory.IdFactory;
import l2p.gameserver.model.L2Character;
import l2p.gameserver.model.L2ObjectsStorage;
import l2p.gameserver.model.L2Player;
import l2p.gameserver.model.L2World;
import l2p.gameserver.model.Reflection;
import l2p.gameserver.model.instances.L2NpcInstance;
import l2p.gameserver.model.instances.L2ReflectionBossInstance;
import l2p.gameserver.serverpackets.ExStartScenePlayer;
import l2p.gameserver.tables.NpcTable;
import l2p.util.Location;

/**
* AI Throne of Destruction Powerful Device (ID: 18778) в Seed of Destruction:
* - при смерти всех в этом измерении открывает дверь
* - спаунит боса Tiat (ID: 29163)
* - показывает заставку
*
* @author SYS
*/
public class ThroneofDestruction extends DefaultAI
{
  private static final int DOOR = 12240031;
  private static final int TIAT_NPC_ID = 29163;
  private static final Location TIAT_LOC = new Location(-250408, 207416, -11968, 16384);

  public ThroneofDestruction(L2Character actor)
  {
    super(actor);
  }

  @Override
  protected void onEvtDead(L2Character killer)
  {
    L2NpcInstance actor = getActor();
    if(actor == null)
    {
      return;
    }
    Reflection ref = actor.getReflection();
    // Открываем дверь, спауним тиата
    if(checkAllDestroyed(actor.getNpcId(), ref.getId()))
    {
      ref.openDoor(DOOR);
      spawnTiat();
      // Показываем заставку спауна Тиата
      for(L2Player pl : L2World.getAroundPlayers(actor))
      {
        if(pl != null)
        {
          pl.showQuestMovie(ExStartScenePlayer.SCENE_TIAT_OPENING);
        }
      }
    }
    super.onEvtDead(killer);
  }

  /**
   * Проверяет, уничтожены ли все Throne of Destruction Powerful Device в текущем измерении
   *
   * @return true если все уничтожены
   */
  private static boolean checkAllDestroyed(int mobId, long refId)
  {
    for(L2NpcInstance npc : L2ObjectsStorage.getAllByNpcId(mobId, true))
    {
      if(npc.getReflection().getId() == refId)
      {
        return false;
      }
    }
    return true;
  }

  /**
   * Спаунит боса
   */
  private void spawnTiat()
  {
    L2NpcInstance actor = getActor();
    if(actor == null)
    {
      return;
    }
    L2ReflectionBossInstance tiat = new L2ReflectionBossInstance(IdFactory.getInstance().getNextId(), NpcTable.getTemplate(TIAT_NPC_ID));
    tiat.setSpawnedLoc(TIAT_LOC);
    tiat.setReflection(actor.getReflection());
    tiat.onSpawn();
    tiat.spawnMe(tiat.getSpawnedLoc());
    actor.getReflection().addSpawn(tiat.getSpawn());
  }

  @Override
  protected boolean randomWalk()
  {
    return false;
  }
}
TOP

Related Classes of ai.ThroneofDestruction

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.