Package l2p.gameserver.instancemanager

Source Code of l2p.gameserver.instancemanager.ClanHallSiegeManager

package l2p.gameserver.instancemanager;

import javolution.util.FastMap;
import l2p.Config;
import l2p.gameserver.idfactory.IdFactory;
import l2p.gameserver.model.L2Object;
import l2p.gameserver.model.entity.residence.ClanHall;
import l2p.gameserver.model.entity.siege.SiegeSpawn;
import l2p.gameserver.model.entity.siege.clanhall.ClanHallSiege;
import l2p.gameserver.model.instances.L2ClanHallMessengerInstance;
import l2p.gameserver.tables.NpcTable;
import l2p.util.GArray;
import l2p.util.Location;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.logging.Logger;

public class ClanHallSiegeManager extends SiegeManager
{
  protected static Logger _log = Logger.getLogger(CastleSiegeManager.class.getName());
  private static FastMap<Integer, GArray<SiegeSpawn>> _siegeBossSpawnList;
  private static FastMap<Integer, GArray<L2ClanHallMessengerInstance>> _messengersList;
  private static int _defenderRespawnDelay = 20000;
  private static int _siegeClanMinLevel = 4;
  private static int _siegeLength = 60;

  public static void load()
  {
    try
    {
      InputStream is = new FileInputStream(new File(Config.SIEGE_CLANHALL_CONFIGURATION_FILE));
      Properties siegeSettings = new Properties();
      siegeSettings.load(is);
      is.close();
      // Siege spawns settings
      _siegeBossSpawnList = new FastMap<Integer, GArray<SiegeSpawn>>().setShared(true);
      _messengersList = new FastMap<Integer, GArray<L2ClanHallMessengerInstance>>().setShared(true);
      for(ClanHall clanhall : ClanHallManager.getInstance().getClanHalls().values())
      {
        if(clanhall.getSiege() == null)
        {
          continue;
        }
        GArray<SiegeSpawn> _siegeBossSpawns = new GArray<SiegeSpawn>();
        GArray<L2ClanHallMessengerInstance> _messengers = new GArray<L2ClanHallMessengerInstance>();
        for(int i = 1; i < 0xFF; i++)
        {
          String _spawnParams = siegeSettings.getProperty("N" + clanhall.getId() + "SiegeBoss" + i, "");
          if(_spawnParams.length() == 0)
          {
            break;
          }
          StringTokenizer st = new StringTokenizer(_spawnParams.trim(), ",");
          try
          {
            Location loc = new Location(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
            int npc_id = Integer.parseInt(st.nextToken());
            _siegeBossSpawns.add(new SiegeSpawn(clanhall.getId(), loc, npc_id));
          }
          catch(Exception e)
          {
            _log.warning("Error while loading Siege Boss for " + clanhall.getName());
          }
        }
        for(int i = 1; i < 0xFF; i++)
        {
          String _spawnParams = siegeSettings.getProperty("N" + clanhall.getId() + "Messenger" + i, "");
          if(_spawnParams.length() == 0)
          {
            break;
          }
          StringTokenizer st = new StringTokenizer(_spawnParams.trim(), ",");
          try
          {
            Location loc = new Location(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
            loc.setH(Integer.parseInt(st.nextToken()));
            int npc_id = Integer.parseInt(st.nextToken());
            L2ClanHallMessengerInstance messenger = new L2ClanHallMessengerInstance(IdFactory.getInstance().getNextId(), NpcTable.getTemplate(npc_id));
            messenger.setCurrentHpMp(messenger.getMaxHp(), messenger.getMaxMp(), true);
            messenger.setXYZInvisible(loc.correctGeoZ());
            messenger.setSpawnedLoc(messenger.getLoc());
            messenger.setHeading(loc.h);
            messenger.spawnMe();
            _messengers.add(messenger);
          }
          catch(Exception e)
          {
            _log.warning("Error while loading Messenger(s) for " + clanhall.getName());
          }
        }
        _siegeBossSpawnList.put(clanhall.getId(), _siegeBossSpawns);
        _messengersList.put(clanhall.getId(), _messengers);
        if(_siegeBossSpawns.isEmpty())
        {
          _log.warning("Not found Siege Boss for " + clanhall.getName());
        }
        if(_messengersList.isEmpty())
        {
          _log.warning("Not found Messengers for " + clanhall.getName());
        }
        clanhall.getSiege().setDefenderRespawnDelay(_defenderRespawnDelay);
        clanhall.getSiege().setSiegeClanMinLevel(_siegeClanMinLevel);
        clanhall.getSiege().setSiegeLength(_siegeLength);
        if(clanhall.getSiege().getZone() != null)
        {
          clanhall.getSiege().getZone().setActive(false);
        }
        else
        {
          _log.warning("Not found Zone for " + clanhall.getName());
        }
        clanhall.getSiege().startAutoTask(true);
      }
    }
    catch(Exception e)
    {
      System.err.println("Error while loading siege data.");
      e.printStackTrace();
    }
  }

  public static GArray<SiegeSpawn> getSiegeBossSpawnList(int siegeUnitId)
  {
    return _siegeBossSpawnList.get(siegeUnitId);
  }

  public static ClanHallSiege getSiege(L2Object activeObject)
  {
    return getSiege(activeObject.getX(), activeObject.getY());
  }

  public static ClanHallSiege getSiege(int x, int y)
  {
    for(ClanHall clanhall : ClanHallManager.getInstance().getClanHalls().values())
    {
      if(clanhall.getSiege() != null && clanhall.getSiege().checkIfInZone(x, y, true))
      {
        return clanhall.getSiege();
      }
    }
    return null;
  }

  public static int getSiegeClanMinLevel()
  {
    return _siegeClanMinLevel;
  }

  public static int getSiegeLength()
  {
    return _siegeLength;
  }
}
TOP

Related Classes of l2p.gameserver.instancemanager.ClanHallSiegeManager

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.