|
@@ -0,0 +1,144 @@
|
|
|
|
+/*
|
|
|
|
+ * 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.l2jserver.gameserver.model.zone.type;
|
|
|
|
+
|
|
|
|
+import com.l2jserver.gameserver.model.actor.L2Character;
|
|
|
|
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
|
|
|
+import com.l2jserver.gameserver.model.zone.L2ZoneType;
|
|
|
|
+import com.l2jserver.util.Rnd;
|
|
|
|
+
|
|
|
|
+import javolution.util.FastList;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * A castle teleporter zone
|
|
|
|
+ * used for Mass Gatekeepers
|
|
|
|
+ *
|
|
|
|
+ * @author Kerberos
|
|
|
|
+ */
|
|
|
|
+public class L2CastleTeleportZone extends L2ZoneType
|
|
|
|
+{
|
|
|
|
+ private int[] _spawnLoc;
|
|
|
|
+ private int _castleId;
|
|
|
|
+
|
|
|
|
+ public L2CastleTeleportZone(int id)
|
|
|
|
+ {
|
|
|
|
+ super(id);
|
|
|
|
+
|
|
|
|
+ _spawnLoc = new int[5];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void setParameter(String name, String value)
|
|
|
|
+ {
|
|
|
|
+ if (name.equals("castleId"))
|
|
|
|
+ {
|
|
|
|
+ _castleId = Integer.parseInt(value);
|
|
|
|
+ }
|
|
|
|
+ else if (name.equals("spawnMinX"))
|
|
|
|
+ {
|
|
|
|
+ _spawnLoc[0] = Integer.parseInt(value);
|
|
|
|
+ }
|
|
|
|
+ else if (name.equals("spawnMaxX"))
|
|
|
|
+ {
|
|
|
|
+ _spawnLoc[1] = Integer.parseInt(value);
|
|
|
|
+ }
|
|
|
|
+ else if (name.equals("spawnMinY"))
|
|
|
|
+ {
|
|
|
|
+ _spawnLoc[2] = Integer.parseInt(value);
|
|
|
|
+ }
|
|
|
|
+ else if (name.equals("spawnMaxY"))
|
|
|
|
+ {
|
|
|
|
+ _spawnLoc[3] = Integer.parseInt(value);
|
|
|
|
+ }
|
|
|
|
+ else if (name.equals("spawnZ"))
|
|
|
|
+ {
|
|
|
|
+ _spawnLoc[4] = Integer.parseInt(value);
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ super.setParameter(name, value);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ protected void onEnter(L2Character character)
|
|
|
|
+ {
|
|
|
|
+ character.setInsideZone(L2Character.ZONE_NOSUMMONFRIEND, true);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ protected void onExit(L2Character character)
|
|
|
|
+ {
|
|
|
|
+ character.setInsideZone(L2Character.ZONE_NOSUMMONFRIEND, false);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void onDieInside(L2Character character)
|
|
|
|
+ {
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void onReviveInside(L2Character character)
|
|
|
|
+ {
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Returns all players within this zone
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public FastList<L2PcInstance> getAllPlayers()
|
|
|
|
+ {
|
|
|
|
+ FastList<L2PcInstance> players = new FastList<L2PcInstance>();
|
|
|
|
+
|
|
|
|
+ for (L2Character temp : _characterList.values())
|
|
|
|
+ {
|
|
|
|
+ if (temp instanceof L2PcInstance)
|
|
|
|
+ players.add((L2PcInstance) temp);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return players;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void oustAllPlayers()
|
|
|
|
+ {
|
|
|
|
+ if (_characterList == null)
|
|
|
|
+ return;
|
|
|
|
+ if (_characterList.isEmpty())
|
|
|
|
+ return;
|
|
|
|
+ for (L2Character character : _characterList.values())
|
|
|
|
+ {
|
|
|
|
+ if (character == null)
|
|
|
|
+ continue;
|
|
|
|
+ if (character instanceof L2PcInstance)
|
|
|
|
+ {
|
|
|
|
+ L2PcInstance player = (L2PcInstance) character;
|
|
|
|
+ if (player.isOnline() == 1)
|
|
|
|
+ player.teleToLocation(Rnd.get(_spawnLoc[0], _spawnLoc[1]), Rnd.get(_spawnLoc[2], _spawnLoc[3]), _spawnLoc[4]);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public int getCastleId()
|
|
|
|
+ {
|
|
|
|
+ return _castleId;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Get the spawn locations
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public int[] getSpawn()
|
|
|
|
+ {
|
|
|
|
+ return _spawnLoc;
|
|
|
|
+ }
|
|
|
|
+}
|