Index: package mods.events;Arena2x2.java
===================================================================
--- package mods.events;Arena2x2.java (revision 84)
+++ package mods.events;Arena2x2.java (working copy)
+ package mods.events;
+
+ import java.util.ArrayList;
+ import java.util.HashMap;
+ import java.util.List;
+ import java.util.Map;
+ import java.util.logging.Logger;
+
+ import org.l2j.commons.concurrent.ThreadPool;
+ import org.l2j.commons.random.Rnd;
+
+ import org.l2j.Config;
+ import org.l2j.gameserver.model.L2Effect;
+ import org.l2j.gameserver.model.actor.Player;
+ import org.l2j.gameserver.model.actor.Summon;
+ import org.l2j.gameserver.model.actor.instance.Pet;
+ import org.l2j.gameserver.enums.actors.ClassId;
+ import org.l2j.gameserver.enums.ZoneId;
+ import org.l2j.gameserver.network.SystemMessageId;
+ import org.l2j.gameserver.network.serverpackets.ExShowScreenMessage;
+ import org.l2j.gameserver.network.serverpackets.SocialAction;
+
+ public class Arena2x2 implements Runnable
+ {
+ protected static final Logger _log = Logger.getLogger(Arena2x2.class.getName());
+
+ public static List<Pair> registered;
+
+ int free = Config.ARENA_EVENT_COUNT;
+
+ Arena[] arenas = new Arena[Config.ARENA_EVENT_COUNT];
+
+ Map<Integer, String> fights = new HashMap<>(Config.ARENA_EVENT_COUNT);
+
+ public Arena2x2()
+ {
+ registered = new ArrayList<>();
+
+ for (int i = 0; i < Config.ARENA_EVENT_COUNT; i++)
+ {
+ int[] coord = Config.ARENA_EVENT_LOCS[i];
+ arenas[i] = new Arena(i, coord[0], coord[1], coord[2]);
+ }
+ }
+
+ public static Arena2x2 getInstance()
+ {
+ return SingletonHolder.INSTANCE;
+ }
+
+ public boolean register(Player player, Player assist)
+ {
+ for (Pair p : registered)
+ {
+ if (p.getLeader() == player || p.getAssist() == player)
+ {
+ player.sendMessage("Tournament: You already registered!");
+ return false;
+ }
+ if (p.getLeader() == assist || p.getAssist() == assist)
+ {
+ player.sendMessage("Tournament: Your partner already registered!");
+ return false;
+ }
+ }
+ return registered.add(new Pair(player, assist));
+ }
+
+ public boolean isRegistered(Player player)
+ {
+ for (Pair p : registered)
+ if (p.getLeader() == player || p.getAssist() == player)
+ return true;
+ return false;
+ }
+
+ public Map<Integer, String> getFights()
+ {
+ return fights;
+ }
+
+ public boolean remove(Player player)
+ {
+ for (Pair p : registered)
+ if (p.getLeader() == player || p.getAssist() == player)
+ {
+ p.removeMessage();
+ registered.remove(p);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public synchronized void run()
+ {
+ for (;;)
+ if (registered.size() < 2 || free == 0)
+ try
+ {
+ Thread.sleep(Config.ARENA_CALL_INTERVAL * 1000);
+
+ }
+ catch (InterruptedException localInterruptedException)
+ {
+ }
+ else
+ {
+ List<Pair> opponents = selectOpponents();
+ if (opponents != null && opponents.size() == 2)
+ {
+ Thread T = new Thread(new EvtArenaTask(opponents));
+ T.setDaemon(true);
+ T.start();
+ }
+
+ try
+ {
+ Thread.sleep(Config.ARENA_CALL_INTERVAL * 1000);
+ }
+ catch (InterruptedException localInterruptedException1)
+ {
+ }
+ }
+ }
+
+ @SuppressWarnings("null")
+ private List<Pair> selectOpponents()
+ {
+ List<Pair> opponents = new ArrayList<>();
+ Pair pairOne = null;
+ Pair pairTwo = null;
+ int tries = 3;
+ do
+ {
+ int first = 0;
+ int second = 0;
+ if (getRegisteredCount() < 2)
+ return opponents;
+ if (pairOne == null)
+ {
+ first = Rnd.get(getRegisteredCount());
+ pairOne = registered.get(first);
+ if (pairOne.check())
+ {
+ opponents.add(0, pairOne);
+ registered.remove(first);
+ }
+ else
+ {
+ pairOne = null;
+ registered.remove(first);
+ return null;
+ }
+ }
+
+ if (pairTwo == null)
+ {
+ second = Rnd.get(getRegisteredCount());
+ pairTwo = registered.get(second);
+ if (pairTwo.check())
+ {
+ opponents.add(1, pairTwo);
+ registered.remove(second);
+ }
+ else
+ {
+ pairTwo = null;
+ registered.remove(second);
+ return null;
+ }
+ }
+
+ if (pairOne != null && pairTwo != null)
+ break;
+ tries--;
+ }
+ while (tries > 0);
+ return opponents;
+ }
+
+ public int getRegisteredCount()
+ {
+ return registered.size();
+ }
+
+ private class Pair
+ {
+ Player leader;
+ Player assist;
+
+ public Pair(Player leader, Player assist)
+ {
+ this.leader = leader;
+ this.assist = assist;
+ }
+
+ public Player getAssist()
+ {
+ return assist;
+ }
+
+ public Player getLeader()
+ {
+ return leader;
+ }
+
+ public boolean check()
+ {
+ if ((leader == null || !leader.isOnline()) && (assist != null || assist.isOnline()))
+ {
+ assist.sendMessage("Tournament: You participation in Event was Canceled.");
+ return false;
+ }
+ if ((assist == null || !assist.isOnline()) && (leader != null || leader.isOnline()))
+ {
+ leader.sendMessage("Tournament: You participation in Event was Canceled.");
+ return false;
+ }
+ return true;
+ }
+
+ public boolean isDead()
+ {
+
+
+ if ((leader == null || leader.isDead() || !leader.isOnline() || !leader.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !leader.isArenaAttack()) && (assist == null || assist.isDead() || !assist.isOnline() || !assist.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist.isArenaAttack()))
+ return false;
+ return !leader.isDead() || !assist.isDead();
+
+ }
+
+
+
+ public boolean isAlive()
+ {
+
+ if ((leader == null || leader.isDead() || !leader.isOnline() || !leader.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !leader.isArenaAttack()) && (assist == null || assist.isDead() || !assist.isOnline() || !assist.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist.isArenaAttack()))
+ return false;
+ return !leader.isDead() || !assist.isDead();
+
+
+ }
+
+ public void teleportTo(int x, int y, int z)
+ {
+ if (leader != null && leader.isOnline())
+ {
+
+ leader.setCurrentCp(leader.getMaxCp());
+ leader.setCurrentHp(leader.getMaxHp());
+ leader.setCurrentMp(leader.getMaxMp());
+
+ if (leader.isInObserverMode())
+ {
+ leader.setLastCords(x, y, z);
+ leader.leaveOlympiadObserverMode();
+ }
+ else
+ leader.teleportTo(x, y, z, 0);
+ leader.broadcastUserInfo();
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.setCurrentCp(assist.getMaxCp());
+ assist.setCurrentHp(assist.getMaxHp());
+ assist.setCurrentMp(assist.getMaxMp());
+
+
+ if (assist.isInObserverMode())
+ {
+ assist.setLastCords(x, y + 50, z);
+ assist.leaveOlympiadObserverMode();
+ }
+ else
+ assist.teleportTo(x, y + 50, z, 0);
+ assist.broadcastUserInfo();
+ }
+ }
+
+ public void EventTitle(String title, String color)
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.setTitle(title);
+ leader.getAppearance().setTitleColor(Integer.decode("0x" + color).intValue());
+ leader.broadcastUserInfo();
+ leader.broadcastTitleInfo();
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.setTitle(title);
+ assist.getAppearance().setTitleColor(Integer.decode("0x" + color).intValue());
+ assist.broadcastUserInfo();
+ assist.broadcastTitleInfo();
+ }
+ }
+
+ public void saveTitle()
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader._originalTitleColorTournament = leader.getAppearance().getTitleColor();
+ leader._originalTitleTournament = leader.getTitle();
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist._originalTitleColorTournament = assist.getAppearance().getTitleColor();
+ assist._originalTitleTournament = assist.getTitle();
+ }
+ }
+
+ public void backTitle()
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.setTitle(leader._originalTitleTournament);
+ leader.getAppearance().setTitleColor(leader._originalTitleColorTournament);
+ leader.broadcastUserInfo();
+ leader.broadcastTitleInfo();
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.setTitle(assist._originalTitleTournament);
+ assist.getAppearance().setTitleColor(assist._originalTitleColorTournament);
+ assist.broadcastUserInfo();
+ assist.broadcastTitleInfo();
+ }
+ }
+
+ public void rewards()
+ {
+ if (leader != null && leader.isOnline())
+
+ leader.addItem("Arena_Event", '.ARENA_REWARD_ID, Config.ARENA_WIN_REWARD_COUNT, leader, true);
+
+ if (assist != null && assist.isOnline())
+ assist.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_WIN_REWARD_COUNT, assist, true);
+
+ sendPacket("Congratulations, your team won the event!", 5);
+ }
+
+ public void rewardsLost()
+ {
+ if (leader != null && leader.isOnline())
+ leader.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_LOST_REWARD_COUNT, leader, true);
+ if (assist != null && assist.isOnline())
+ assist.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_LOST_REWARD_COUNT, assist, true);
+ sendPacket("your team lost the event! =(", 5);
+ }
+
+ public void setInTournamentEvent(boolean val)
+ {
+ if (leader != null && leader.isOnline())
+ leader.setInArenaEvent(val);
+ if (assist != null && assist.isOnline())
+ assist.setInArenaEvent(val);
+ }
+
+ public void removeMessage()
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.sendMessage("Tournament: Your participation has been removed.");
+ leader.setArenaProtection(false);
+ leader.setArena2x2(false);
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.sendMessage("Tournament: Your participation has been removed.");
+ assist.setArenaProtection(false);
+ leader.setArena2x2(false);
+ }
+ }
+
+ public void setArenaProtection(boolean val)
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.setArenaProtection(val);
+ leader.setArena2x2(val);
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.setArenaProtection(val);
+ leader.setArena2x2(val);
+ }
+ }
+
+ public void revive()
+ {
+ if (leader != null && leader.isOnline() && leader.isDead())
+ leader.doRevive();
+ if (assist != null && assist.isOnline() && assist.isDead())
+ assist.doRevive();
+ }
+
+ public void setImobilised(boolean val)
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.setIsInvul(val);
+ leader.setStopArena(val);
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.setIsInvul(val);
+ assist.setStopArena(val);
+ }
+ }
+
+ public void setArenaAttack(boolean val)
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.setArenaAttack(val);
+ leader.broadcastUserInfo();
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.setArenaAttack(val);
+ assist.broadcastUserInfo();
+ }
+ }
+
+
+ public void removePet()
+ {
+ if (leader != null && leader.isOnline())
+ {
+
+ if (leader.getSummon() != null)
+ {
+ Summon summon = leader.getSummon();
+ if (summon != null)
+ summon.unSummon(summon.getOwner());
+ if (summon instanceof Pet)
+ summon.unSummon(leader);
+ }
+ if (leader.getMountType() == 1 || leader.getMountType() == 2)
+ leader.dismount();
+ }
+ if (assist != null && assist.isOnline())
+ {
+
+ if (assist.getSummon() != null)
+ {
+ Summon summon = assist.getSummon();
+ if (summon != null)
+ summon.unSummon(summon.getOwner());
+ if (summon instanceof Pet)
+ summon.unSummon(assist);
+ }
+ if (assist.getMountType() == 1 || assist.getMountType() == 2)
+ assist.dismount();
+ }
+
+
+ }
+
+
+ public void removeSkills()
+ {
+ for (L2Effect effect : leader.getAllEffects())
+ if (effect.getSkill().getId() == 406 || effect.getSkill().getId() == 139 || effect.getSkill().getId() == 176 || effect.getSkill().getId() == 420)
+ {
+ leader.stopSkillEffects(effect.getSkill().getId());
+ leader.enableSkill(effect.getSkill());
+ }
+
+ for (L2Effect effect : assist.getAllEffects())
+ if (effect.getSkill().getId() == 406 || effect.getSkill().getId() == 139 || effect.getSkill().getId() == 176 || effect.getSkill().getId() == 420)
+ {
+ assist.stopSkillEffects(effect.getSkill().getId());
+ assist.enableSkill(effect.getSkill());
+ }
+
+ if (Config.ARENA_SKILL_PROTECT)
+ if (leader != null && leader.isOnline())
+ {
+ for (L2Effect effect : leader.getAllEffects())
+ if (Config.ARENA_STOP_SKILL_LIST.contains(Integer.valueOf(effect.getSkill().getId())))
+ leader.stopSkillEffects(effect.getSkill().getId());
+ if (leader.getMountType() == 2)
+ {
+ leader.sendPacket(SystemMessageId.AREA_CANNOT_BE_ENTERED_WHILE_MOUNTED_WYVERN);
+ leader.enteredNoLanding(5);
+ }
+ }
+
+ if (Config.ARENA_SKILL_PROTECT)
+ if (assist != null && assist.isOnline())
+ {
+ for (L2Effect effect : assist.getAllEffects())
+ if (Config.ARENA_STOP_SKILL_LIST.contains(Integer.valueOf(effect.getSkill().getId())))
+ assist.stopSkillEffects(effect.getSkill().getId());
+ if (assist.getMountType() == 2)
+ {
+ assist.sendPacket(SystemMessageId.AREA_CANNOT_BE_ENTERED_WHILE_MOUNTED_WYVERN);
+ assist.enteredNoLanding(5);
+ }
+ }
+ }
+
+ public void sendPacket(String message, int duration)
+ {
+ if (leader != null && leader.isOnline())
+ leader.sendPacket(new ExShowScreenMessage(message, duration * 1000));
+ if (assist != null && assist.isOnline())
+ assist.sendPacket(new ExShowScreenMessage(message, duration * 1000));
+ }
+
+ public void inicarContagem(int duration)
+ {
+ if (leader != null && leader.isOnline())
+ ThreadPool.schedule(new Arena2x2.countdown(leader, duration), 0L);
+ if (assist != null && assist.isOnline())
+ ThreadPool.schedule(new Arena2x2.countdown(assist, duration), 0L);
+ }
+
+ public void sendPacketinit(String message, int duration)
+ {
+ if (leader != null && leader.isOnline())
+ leader.sendPacket(new ExShowScreenMessage(message, duration * 1000, ExShowScreenMessage.SMPOS.MIDDLE_LEFT, false));
+ if (assist != null && assist.isOnline())
+ assist.sendPacket(new ExShowScreenMessage(message, duration * 1000, ExShowScreenMessage.SMPOS.MIDDLE_LEFT, false));
+ if (leader.getClassId() == ClassId.SHILLIEN_ELDER || leader.getClassId() == ClassId.SHILLIEN_SAINT || leader.getClassId() == ClassId.BISHOP || leader.getClassId() == ClassId.CARDINAL || leader.getClassId() == ClassId.ELVEN_ELDER || leader.getClassId() == ClassId.EVAS_SAINT)
+ ThreadPool.schedule(new Runnable()
+ {
+
+ @Override
+ public void run()
+ {
+ leader.getClient().closeNow();
+ }
+ }, 100L);
+
+ if (assist.getClassId() == ClassId.SHILLIEN_ELDER || assist.getClassId() == ClassId.SHILLIEN_SAINT || assist.getClassId() == ClassId.BISHOP || assist.getClassId() == ClassId.CARDINAL || assist.getClassId() == ClassId.ELVEN_ELDER || assist.getClassId() == ClassId.EVAS_SAINT)
+ ThreadPool.schedule(new Runnable()
+ {
+
+ @Override
+ public void run()
+ {
+ assist.getClient().closeNow();
+ }
+ }, 100L);
+ }
+ }
+
+ private class EvtArenaTask implements Runnable
+ {
+ private final Arena2x2.Pair pairOne;
+ private final Arena2x2.Pair pairTwo;
+ private final int pOneX;
+ private final int pOneY;
+ private final int pOneZ;
+ private final int pTwoX;
+ private final int pTwoY;
+ private final int pTwoZ;
+ private Arena2x2.Arena arena;
+
+ public EvtArenaTask(List<Pair> opponents)
+ {
+ pairOne = opponents.get(0);
+ pairTwo = opponents.get(1);
+ Player leader = pairOne.getLeader();
+ pOneX = leader.getX();
+ pOneY = leader.getY();
+ pOneZ = leader.getZ();
+ leader = pairTwo.getLeader();
+ pTwoX = leader.getX();
+ pTwoY = leader.getY();
+ pTwoZ = leader.getZ();
+ }
+
+ @Override
+ public void run()
+ {
+ free -= 1;
+ pairOne.saveTitle();
+ pairTwo.saveTitle();
+ portPairsToArena();
+ pairOne.inicarContagem(Config.ARENA_WAIT_INTERVAL);
+ pairTwo.inicarContagem(Config.ARENA_WAIT_INTERVAL);
+
+ try
+ {
+ Thread.sleep(Config.ARENA_WAIT_INTERVAL * 1000);
+ }
+ catch (InterruptedException localInterruptedException1)
+ {
+ }
+
+ pairOne.sendPacketinit("Started. Good Fight!", 3);
+ pairTwo.sendPacketinit("Started. Good Fight!", 3);
+ pairOne.EventTitle(Config.MSG_TEAM1, Config.TITLE_COLOR_TEAM1);
+ pairTwo.EventTitle(Config.MSG_TEAM2, Config.TITLE_COLOR_TEAM2);
+
+ pairOne.setImobilised(false);
+ pairTwo.setImobilised(false);
+ pairOne.setArenaAttack(true);
+ pairTwo.setArenaAttack(true);
+ while (check())
+ try
+ {
+
+ Thread.sleep(Config.ARENA_CHECK_INTERVAL);
+ continue;
+ }
+ catch (InterruptedException e)
+ {
+ break;
+ }
+ this.finishDuel();
+ final Arena2x2 this$2 = Arena2x2.this;
+ ++this$2.free;
+
+
+ }
+
+
+
+ private void finishDuel()
+ {
+ fights.remove(Integer.valueOf(arena.id));
+ rewardWinner();
+ pairOne.revive();
+ pairTwo.revive();
+ pairOne.teleportTo(pOneX, pOneY, pOneZ);
+ pairTwo.teleportTo(pTwoX, pTwoY, pTwoZ);
+ pairOne.backTitle();
+ pairTwo.backTitle();
+ pairOne.setInTournamentEvent(false);
+ pairTwo.setInTournamentEvent(false);
+ pairOne.setArenaProtection(false);
+ pairTwo.setArenaProtection(false);
+ pairOne.setArenaAttack(false);
+ pairTwo.setArenaAttack(false);
+ arena.setFree(true);
+ }
+
+ private void rewardWinner()
+ {
+ if (pairOne.isAlive() && !pairTwo.isAlive())
+ {
+ pairOne.rewards();
+ pairTwo.rewardsLost();
+ }
+
+
+ else if (pairTwo.isAlive() && !pairOne.isAlive())
+ {
+ pairTwo.rewards();
+ pairOne.rewardsLost();
+ }
+ }
+
+ private boolean check()
+ {
+ return pairOne.isDead() && pairTwo.isDead();
+ }
+
+ private void portPairsToArena()
+ {
+ for (Arena2x2.Arena arena : arenas)
+ if (arena.isFree)
+ {
+ this.arena = arena;
+ arena.setFree(false);
+ pairOne.removePet();
+ pairTwo.removePet();
+ pairOne.teleportTo(arena.x - 850, arena.y, arena.z);
+ pairTwo.teleportTo(arena.x + 850, arena.y, arena.z);
+ pairOne.setImobilised(true);
+ pairTwo.setImobilised(true);
+ pairOne.setInTournamentEvent(true);
+ pairTwo.setInTournamentEvent(true);
+ pairOne.removeSkills();
+ pairTwo.removeSkills();
+ fights.put(Integer.valueOf(this.arena.id), pairOne.getLeader().getName() + " vs " + pairTwo.getLeader().getName());
+ Arena2x2.this.fights.put(this.arena.id, this.pairOne.getLeader().getName() + " vs " + this.pairTwo.getLeader().getName());
+ break;
+ }
+ }
+ }
+
+ private class Arena
+ {
+ protected int x;
+ protected int y;
+ protected int z;
+ protected boolean isFree = true;
+ int id;
+
+ public Arena(int id, int x, int y, int z)
+ {
+ this.id = id;
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ }
+
+ public void setFree(boolean val)
+ {
+ isFree = val;
+ }
+ }
+
+ protected class countdown implements Runnable
+ {
+ private final Player _player;
+ private final int _time;
+
+ public countdown(Player player, int time)
+ {
+ _time = time;
+ _player = player;
+ }
+
+ @Override
+ public void run()
+ {
+ if (_player.isOnline())
+ {
+
+ switch (_time)
+ {
+ case 60:
+ case 120:
+ case 180:
+ case 240:
+ case 300:
+ if (_player.isOnline())
+ {
+ _player.sendPacket(new ExShowScreenMessage("The battle starts in " + _time + " second(s)..", 4000));
+ _player.sendMessage(_time + " second(s) to start the battle.");
+ _player.setIsParalyzed(true);
+ }
+ break;
+ case 45:
+ if (_player.isOnline())
+ {
+ _player.sendPacket(new ExShowScreenMessage("" + _time + " ..", 3000));
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ _player.broadcastPacket(new SocialAction(_player, 1));
+ }
+ break;
+ case 27:
+ if (_player.isOnline())
+ {
+ _player.sendPacket(new ExShowScreenMessage("The battle starts in 30 second(s)..", 4000));
+ _player.sendMessage("30 second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ _player.broadcastPacket(new SocialAction(_player, 2));
+ }
+ break;
+ case 20:
+ if (_player.isOnline())
+ {
+ _player.sendPacket(new ExShowScreenMessage("" + _time + " ..", 3000));
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+
+ }
+ break;
+ case 15:
+ if (_player.isOnline())
+ {
+ _player.sendPacket(new ExShowScreenMessage("" + _time + " ..", 3000));
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ _player.broadcastPacket(new SocialAction(_player, 9));
+ }
+ break;
+ case 10:
+ if (_player.isOnline())
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ _player.broadcastPacket(new SocialAction(_player, 5));
+ break;
+ case 5:
+ if (_player.isOnline())
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ break;
+ case 4:
+ if (_player.isOnline())
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ break;
+ case 3:
+ if (_player.isOnline())
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ break;
+ case 2:
+ if (_player.isOnline())
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ break;
+ case 1:
+ if (_player.isOnline())
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(false);
+ break;
+ }
+ if (_time > 1)
+ ThreadPool.schedule(new countdown(_player, _time - 1), 1000L);
+ }
+ }
+ }
+
+
+
+ private static class SingletonHolder
+ {
+ protected static final Arena2x2 INSTANCE = new Arena2x2();
+ }
+ }
+
Index: package mods.events;Arena4x4.java
===================================================================
--- package mods.events;Arena4x4.java (revision 84)
+++ package mods.events;Arena4x4.java (working copy)
+ package mods.events;
+
+ import java.util.ArrayList;
+ import java.util.HashMap;
+ import java.util.List;
+ import java.util.Map;
+ import org.l2j.commons.concurrent.ThreadPool;
+ import org.l2j.commons.random.Rnd;
+ import org.l2j.Config;
+ import org.l2j.gameserver.model.L2Effect;
+ import org.l2j.gameserver.model.World;
+ import org.l2j.gameserver.model.actor.Player;
+ import org.l2j.gameserver.model.actor.Summon;
+ import org.l2j.gameserver.model.actor.instance.Pet;
+ import org.l2j.gameserver.enums.actors.ClassId;
+ import org.l2j.gameserver.enums.ZoneId;
+ import org.l2j.gameserver.network.serverpackets.ExShowScreenMessage;
+ import org.l2j.gameserver.network.serverpackets.SocialAction;
+
+
+ public class Arena4x4 implements Runnable
+ {
+ public static List<Pair> registered;
+ int free = Config.ARENA_EVENT_COUNT_4X4;
+
+ Arena[] arenas = new Arena[Config.ARENA_EVENT_COUNT_4X4];
+
+ Map<Integer, String> fights = new HashMap<>(Config.ARENA_EVENT_COUNT_4X4);
+
+ public Arena4x4()
+ {
+ registered = new ArrayList<>();
+
+ for (int i = 0; i < Config.ARENA_EVENT_COUNT_4X4; i++)
+ {
+ int[] coord = Config.ARENA_EVENT_LOCS_4X4[i];
+ arenas[i] = new Arena(i, coord[0], coord[1], coord[2]);
+ }
+ }
+
+ public static Arena4x4 getInstance()
+ {
+ return SingletonHolder.INSTANCE;
+ }
+
+ public boolean register(Player player, Player assist, Player assist2, Player assist3)
+ {
+ for (Pair p : registered)
+ {
+ if (p.getLeader() == player || p.getAssist() == player)
+ {
+ player.sendMessage("Tournament: You already registered!");
+ return false;
+ }
+ if (p.getLeader() == assist || p.getAssist() == assist)
+ {
+ player.sendMessage("Tournament: " + assist.getName() + " already registered!");
+ return false;
+ }
+ if (p.getLeader() == assist2 || p.getAssist2() == assist2)
+ {
+ player.sendMessage("Tournament: " + assist2.getName() + " already registered!");
+ return false;
+ }
+ if (p.getLeader() == assist3 || p.getAssist3() == assist3)
+ {
+ player.sendMessage("Tournament: " + assist3.getName() + " already registered!");
+ return false;
+ }
+ }
+ return registered.add(new Pair(player, assist, assist2, assist3));
+ }
+
+ public boolean isRegistered(Player player)
+ {
+ for (Pair p : registered)
+ if (p.getLeader() == player || p.getAssist() == player || p.getAssist2() == player || p.getAssist3() == player)
+ return true;
+ return false;
+ }
+
+ public Map<Integer, String> getFights()
+ {
+ return fights;
+ }
+
+ public boolean remove(Player player)
+ {
+ for (Pair p : registered)
+ if (p.getLeader() == player || p.getAssist() == player || p.getAssist2() == player || p.getAssist3() == player)
+ {
+ p.removeMessage();
+ registered.remove(p);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public synchronized void run()
+ {
+ for (;;)
+ if (registered.size() < 2 || free == 0)
+ try
+ {
+ Thread.sleep(Config.ARENA_CALL_INTERVAL * 1000);
+
+ }
+ catch (InterruptedException localInterruptedException)
+ {
+ }
+ else
+ {
+ List<Pair> opponents = selectOpponents();
+ if (opponents != null && opponents.size() == 2)
+ {
+ Thread T = new Thread(new EvtArenaTask(opponents));
+ T.setDaemon(true);
+ T.start();
+ }
+
+ try
+ {
+ Thread.sleep(Config.ARENA_CALL_INTERVAL * 1000);
+ }
+ catch (InterruptedException localInterruptedException1)
+ {
+ }
+ }
+ }
+
+ @SuppressWarnings("null")
+ private List<Pair> selectOpponents()
+ {
+ List<Pair> opponents = new ArrayList<>();
+ Pair pairOne = null;
+ Pair pairTwo = null;
+ int tries = 3;
+ do
+ {
+ int first = 0;
+ int second = 0;
+ if (getRegisteredCount() < 2)
+ return opponents;
+ if (pairOne == null)
+ {
+ first = Rnd.get(getRegisteredCount());
+ pairOne = registered.get(first);
+ if (pairOne.check())
+ {
+ opponents.add(0, pairOne);
+ registered.remove(first);
+ }
+ else
+ {
+ pairOne = null;
+ registered.remove(first);
+ return null;
+ }
+ }
+
+ if (pairTwo == null)
+ {
+ second = Rnd.get(getRegisteredCount());
+ pairTwo = registered.get(second);
+ if (pairTwo.check())
+ {
+ opponents.add(1, pairTwo);
+ registered.remove(second);
+ }
+ else
+ {
+ pairTwo = null;
+ registered.remove(second);
+ return null;
+ }
+ }
+
+ if (pairOne != null && pairTwo != null)
+ break;
+ tries--;
+ }
+ while (tries > 0);
+ return opponents;
+ }
+
+ public int getRegisteredCount()
+ {
+ return registered.size();
+ }
+
+ private class Pair
+ {
+ Player leader;
+ Player assist;
+ Player assist2;
+ Player assist3;
+
+ public Pair(Player leader, Player assist, Player assist2, Player assist3)
+ {
+ this.leader = leader;
+ this.assist = assist;
+ this.assist2 = assist2;
+ this.assist3 = assist3;
+ }
+
+ public Player getAssist()
+ {
+ return assist;
+ }
+
+ public Player getAssist2()
+ {
+ return assist2;
+ }
+
+ public Player getAssist3()
+ {
+ return assist3;
+ }
+
+ public Player getLeader()
+ {
+ return leader;
+ }
+
+ public boolean check()
+ {
+ if (leader == null || !leader.isOnline())
+ {
+ if (assist != null || assist.isOnline())
+ assist.sendMessage("Tournament: You participation in Event was Canceled.");
+ if (assist2 != null || assist2.isOnline())
+ assist2.sendMessage("Tournament: You participation in Event was Canceled.");
+ if (assist3 != null || assist3.isOnline())
+ assist3.sendMessage("Tournament: You participation in Event was Canceled.");
+ return false;
+ }
+ if ((assist == null || !assist.isOnline() || assist2 == null || !assist2.isOnline() || assist3 == null || !assist3.isOnline()) && leader != null && leader.isOnline())
+ {
+ leader.sendMessage("Tournament: You participation in Event was Canceled.");
+
+ if (assist != null || assist.isOnline())
+ assist.sendMessage("Tournament: You participation in Event was Canceled.");
+ if (assist2 != null || assist2.isOnline())
+ assist2.sendMessage("Tournament: You participation in Event was Canceled.");
+ if (assist3 != null || assist3.isOnline())
+ assist3.sendMessage("Tournament: You participation in Event was Canceled.");
+ return false;
+ }
+ return true;
+ }
+
+ public boolean isDead()
+ {
+ if ((leader == null || leader.isDead() || !leader.isOnline() || !leader.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !leader.isArenaAttack()) && (assist == null || assist.isDead() || !assist.isOnline() || !assist.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist.isArenaAttack()) && (assist2 == null || assist2.isDead() || !assist2.isOnline() || !assist2.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist2.isArenaAttack()) && (assist3 == null || assist3.isDead() || !assist3.isOnline() || !assist3.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist3.isArenaAttack()))
+ return false;
+ return !leader.isDead() || !assist.isDead() || !assist2.isDead() || !assist3.isDead();
+ }
+
+ public boolean isAlive()
+ {
+ if ((leader == null || leader.isDead() || !leader.isOnline() || !leader.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !leader.isArenaAttack()) && (assist == null || assist.isDead() || !assist.isOnline() || !assist.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist.isArenaAttack()) && (assist2 == null || assist2.isDead() || !assist2.isOnline() || !assist2.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist2.isArenaAttack()) && (assist3 == null || assist3.isDead() || !assist3.isOnline() || !assist3.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist3.isArenaAttack()))
+ return false;
+ return !leader.isDead() || !assist.isDead() || !assist2.isDead() || !assist3.isDead();
+ }
+
+ public void teleportTo(int x, int y, int z)
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.getAppearance().setInvisible();
+ leader.setCurrentCp(leader.getMaxCp());
+ leader.setCurrentHp(leader.getMaxHp());
+ leader.setCurrentMp(leader.getMaxMp());
+
+ if (leader.isInObserverMode())
+ {
+ leader.setLastCords(x, y, z);
+ leader.leaveOlympiadObserverMode();
+ }
+ else
+ leader.teleportTo(x, y, z, 0);
+ leader.broadcastUserInfo();
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.getAppearance().setInvisible();
+ assist.setCurrentCp(assist.getMaxCp());
+ assist.setCurrentHp(assist.getMaxHp());
+ assist.setCurrentMp(assist.getMaxMp());
+
+ if (assist.isInObserverMode())
+ {
+ assist.setLastCords(x, y + 50, z);
+ assist.leaveOlympiadObserverMode();
+ }
+ else
+ assist.teleportTo(x, y + 50, z, 0);
+ assist.broadcastUserInfo();
+ }
+
+ if (assist2 != null && assist2.isOnline())
+ {
+ assist2.getAppearance().setInvisible();
+ assist2.setCurrentCp(assist2.getMaxCp());
+ assist2.setCurrentHp(assist2.getMaxHp());
+ assist2.setCurrentMp(assist2.getMaxMp());
+
+ if (assist2.isInObserverMode())
+ {
+ assist2.setLastCords(x, y - 100, z);
+ assist2.leaveOlympiadObserverMode();
+ }
+ else
+ assist2.teleportTo(x, y - 100, z, 0);
+ assist2.broadcastUserInfo();
+ }
+
+ if (assist3 != null && assist3.isOnline())
+ {
+ assist3.getAppearance().setInvisible();
+ assist3.setCurrentCp(assist3.getMaxCp());
+ assist3.setCurrentHp(assist3.getMaxHp());
+ assist3.setCurrentMp(assist3.getMaxMp());
+
+ if (assist3.isInObserverMode())
+ {
+ assist3.setLastCords(x, y - 50, z);
+ assist3.leaveOlympiadObserverMode();
+ }
+ else
+ assist3.teleportTo(x, y - 50, z, 0);
+ assist3.broadcastUserInfo();
+ }
+ }
+
+ public void EventTitle(String title, String color)
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.setTitle(title);
+ leader.getAppearance().setTitleColor(Integer.decode("0x" + color).intValue());
+ leader.broadcastUserInfo();
+ leader.broadcastTitleInfo();
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.setTitle(title);
+ assist.getAppearance().setTitleColor(Integer.decode("0x" + color).intValue());
+ assist.broadcastUserInfo();
+ assist.broadcastTitleInfo();
+ }
+ if (assist2 != null && assist2.isOnline())
+ {
+ assist2.setTitle(title);
+ assist2.getAppearance().setTitleColor(Integer.decode("0x" + color).intValue());
+ assist2.broadcastUserInfo();
+ assist2.broadcastTitleInfo();
+ }
+
+ if (assist3 != null && assist3.isOnline())
+ {
+ assist3.setTitle(title);
+ assist3.getAppearance().setTitleColor(Integer.decode("0x" + color).intValue());
+ assist3.broadcastUserInfo();
+ assist3.broadcastTitleInfo();
+ }
+ }
+
+ public void saveTitle()
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader._originalTitleColorTournament = leader.getAppearance().getTitleColor();
+ leader._originalTitleTournament = leader.getTitle();
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist._originalTitleColorTournament = assist.getAppearance().getTitleColor();
+ assist._originalTitleTournament = assist.getTitle();
+ }
+
+ if (assist2 != null && assist2.isOnline())
+ {
+ assist2._originalTitleColorTournament = assist2.getAppearance().getTitleColor();
+ assist2._originalTitleTournament = assist2.getTitle();
+ }
+
+ if (assist3 != null && assist3.isOnline())
+ {
+ assist3._originalTitleColorTournament = assist3.getAppearance().getTitleColor();
+ assist3._originalTitleTournament = assist3.getTitle();
+ }
+ }
+
+ public void backTitle()
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.setTitle(leader._originalTitleTournament);
+ leader.getAppearance().setTitleColor(leader._originalTitleColorTournament);
+ leader.broadcastUserInfo();
+ leader.broadcastTitleInfo();
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.setTitle(assist._originalTitleTournament);
+ assist.getAppearance().setTitleColor(assist._originalTitleColorTournament);
+ assist.broadcastUserInfo();
+ assist.broadcastTitleInfo();
+ }
+
+ if (assist2 != null && assist2.isOnline())
+ {
+ assist2.setTitle(assist2._originalTitleTournament);
+ assist2.getAppearance().setTitleColor(assist2._originalTitleColorTournament);
+ assist2.broadcastUserInfo();
+ assist2.broadcastTitleInfo();
+ }
+
+ if (assist3 != null && assist3.isOnline())
+ {
+ assist3.setTitle(assist3._originalTitleTournament);
+ assist3.getAppearance().setTitleColor(assist3._originalTitleColorTournament);
+ assist3.broadcastUserInfo();
+ assist3.broadcastTitleInfo();
+ }
+ }
+
+ public void rewards()
+ {
+ if (leader != null && leader.isOnline())
+
+
+ leader.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_WIN_REWARD_COUNT_4X4, leader, true);
+
+ if (assist != null && assist.isOnline())
+ assist.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_WIN_REWARD_COUNT_4X4, assist, true);
+
+ if (assist2 != null && assist2.isOnline())
+ assist2.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_WIN_REWARD_COUNT_4X4, assist2, true);
+
+ if (assist3 != null && assist3.isOnline())
+ assist3.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_WIN_REWARD_COUNT_4X4, assist3, true);
+ sendPacket("Congratulations, your team won the event!", 5);
+ }
+
+ public void rewardsLost()
+ {
+ if (leader != null && leader.isOnline())
+
+ leader.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_LOST_REWARD_COUNT_4X4, leader, true);
+ if (assist != null && assist.isOnline())
+
+ assist.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_LOST_REWARD_COUNT_4X4, assist, true);
+ if (assist2 != null && assist2.isOnline())
+
+ assist2.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_LOST_REWARD_COUNT_4X4, assist2, true);
+ if (assist3 != null && assist3.isOnline())
+ assist3.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_LOST_REWARD_COUNT_4X4, assist3, true);
+
+ sendPacket("your team lost the event! =(", 5);
+ }
+
+ public void setInTournamentEvent(boolean val)
+ {
+ if (leader != null && leader.isOnline())
+ leader.setInArenaEvent(val);
+ if (assist != null && assist.isOnline())
+ assist.setInArenaEvent(val);
+ if (assist2 != null && assist2.isOnline())
+ assist2.setInArenaEvent(val);
+ if (assist3 != null && assist3.isOnline())
+ assist3.setInArenaEvent(val);
+ }
+
+ public void removeMessage()
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.sendMessage("Tournament: Your participation has been removed.");
+ leader.setArenaProtection(false);
+ leader.setArena4x4(false);
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.sendMessage("Tournament: Your participation has been removed.");
+ assist.setArenaProtection(false);
+ assist.setArena4x4(false);
+ }
+
+ if (assist2 != null && assist2.isOnline())
+ {
+ assist2.sendMessage("Tournament: Your participation has been removed.");
+ assist2.setArenaProtection(false);
+ assist2.setArena4x4(false);
+ }
+
+ if (assist3 != null && assist3.isOnline())
+ {
+ assist3.sendMessage("Tournament: Your participation has been removed.");
+ assist3.setArenaProtection(false);
+ assist3.setArena4x4(false);
+ }
+ }
+
+ public void setArenaProtection(boolean val)
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.setArenaProtection(val);
+ leader.setArena4x4(val);
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.setArenaProtection(val);
+ assist.setArena4x4(val);
+ }
+ if (assist2 != null && assist2.isOnline())
+ {
+ assist2.setArenaProtection(val);
+ assist2.setArena4x4(val);
+ }
+
+ if (assist3 != null && assist3.isOnline())
+ {
+ assist3.setArenaProtection(val);
+ assist3.setArena4x4(val);
+ }
+ }
+
+ public void revive()
+ {
+ if (leader != null && leader.isOnline() && leader.isDead())
+ leader.doRevive();
+ if (assist != null && assist.isOnline() && assist.isDead())
+ assist.doRevive();
+ if (assist2 != null && assist2.isOnline() && assist2.isDead())
+ assist2.doRevive();
+ if (assist3 != null && assist3.isOnline() && assist3.isDead())
+ assist3.doRevive();
+ }
+
+ public void setImobilised(boolean val)
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.setIsInvul(val);
+ leader.setStopArena(val);
+ }
+ if (assist != null && assist.isOnline())
+ {
+ assist.setIsInvul(val);
+ assist.setStopArena(val);
+ }
+ if (assist2 != null && assist2.isOnline())
+ {
+ assist2.setIsInvul(val);
+ assist2.setStopArena(val);
+ }
+ if (assist3 != null && assist3.isOnline())
+ {
+ assist3.setIsInvul(val);
+ assist3.setStopArena(val);
+ }
+ }
+
+ public void setArenaAttack(boolean val)
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.setArenaAttack(val);
+ leader.broadcastUserInfo();
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.setArenaAttack(val);
+ assist.broadcastUserInfo();
+ }
+
+ if (assist2 != null && assist2.isOnline())
+ {
+ assist2.setArenaAttack(val);
+ assist2.broadcastUserInfo();
+ }
+
+ if (assist3 != null && assist3.isOnline())
+ {
+ assist3.setArenaAttack(val);
+ assist3.broadcastUserInfo();
+ }
+ }
+
+
+
+ public void removePet()
+ {
+ if (leader != null && leader.isOnline())
+ {
+
+ if (leader.getSummon() != null)
+ {
+ Summon summon = leader.getSummon();
+ if (summon != null)
+ summon.unSummon(summon.getOwner());
+ if (summon instanceof Pet)
+ summon.unSummon(leader);
+ }
+ if (leader.getMountType() == 1 || leader.getMountType() == 2)
+ leader.dismount();
+ }
+ if (assist != null && assist.isOnline())
+ {
+
+ if (assist.getSummon() != null)
+ {
+ Summon summon = assist.getSummon();
+ if (summon != null)
+ summon.unSummon(summon.getOwner());
+ if (summon instanceof Pet)
+ summon.unSummon(assist);
+ }
+ if (assist.getMountType() == 1 || assist.getMountType() == 2)
+ assist.dismount();
+ }
+
+ if (assist2 != null && assist2.isOnline())
+ {
+
+ if (assist2.getSummon() != null)
+ {
+ Summon summon = assist2.getSummon();
+ if (summon != null)
+ summon.unSummon(summon.getOwner());
+ if (summon instanceof Pet)
+ summon.unSummon(assist2);
+ }
+
+ if (assist2.getMountType() == 1 || assist2.getMountType() == 2)
+ assist2.dismount();
+ }
+
+ if (assist3 != null && assist3.isOnline())
+ {
+
+ if (assist3.getSummon() != null)
+ {
+ Summon summon = assist3.getSummon();
+ if (summon != null)
+ summon.unSummon(summon.getOwner());
+ if (summon instanceof Pet)
+ summon.unSummon(assist3);
+ }
+ if (assist3.getMountType() == 1 || assist3.getMountType() == 2)
+ assist3.dismount();
+ }
+
+
+ }
+
+ public void removeSkills()
+ {
+ if (leader.getClassId() != ClassId.SHILLIEN_ELDER && leader.getClassId() != ClassId.SHILLIEN_SAINT && leader.getClassId() != ClassId.BISHOP && leader.getClassId() != ClassId.CARDINAL && leader.getClassId() != ClassId.ELVEN_ELDER && leader.getClassId() != ClassId.EVAS_SAINT)
+ for (L2Effect effect : leader.getAllEffects())
+ if (Config.ARENA_STOP_SKILL_LIST.contains(Integer.valueOf(effect.getSkill().getId())))
+ leader.stopSkillEffects(effect.getSkill().getId());
+ if (assist.getClassId() != ClassId.SHILLIEN_ELDER && assist.getClassId() != ClassId.SHILLIEN_SAINT && assist.getClassId() != ClassId.BISHOP && assist.getClassId() != ClassId.CARDINAL && assist.getClassId() != ClassId.ELVEN_ELDER && assist.getClassId() != ClassId.EVAS_SAINT)
+ for (L2Effect effect : assist.getAllEffects())
+ if (Config.ARENA_STOP_SKILL_LIST.contains(Integer.valueOf(effect.getSkill().getId())))
+ assist.stopSkillEffects(effect.getSkill().getId());
+ if (assist2.getClassId() != ClassId.SHILLIEN_ELDER && assist2.getClassId() != ClassId.SHILLIEN_SAINT && assist2.getClassId() != ClassId.BISHOP && assist2.getClassId() != ClassId.CARDINAL && assist2.getClassId() != ClassId.ELVEN_ELDER && assist2.getClassId() != ClassId.EVAS_SAINT)
+ for (L2Effect effect : assist2.getAllEffects())
+ if (Config.ARENA_STOP_SKILL_LIST.contains(Integer.valueOf(effect.getSkill().getId())))
+ assist2.stopSkillEffects(effect.getSkill().getId());
+ if (assist3.getClassId() != ClassId.SHILLIEN_ELDER && assist3.getClassId() != ClassId.SHILLIEN_SAINT && assist3.getClassId() != ClassId.BISHOP && assist3.getClassId() != ClassId.CARDINAL && assist3.getClassId() != ClassId.ELVEN_ELDER && assist3.getClassId() != ClassId.EVAS_SAINT)
+ for (L2Effect effect : assist3.getAllEffects())
+ if (Config.ARENA_STOP_SKILL_LIST.contains(Integer.valueOf(effect.getSkill().getId())))
+ assist3.stopSkillEffects(effect.getSkill().getId());
+ }
+
+ public void sendPacket(String message, int duration)
+ {
+ if (leader != null && leader.isOnline())
+ leader.sendPacket(new ExShowScreenMessage(message, duration * 1000));
+ if (assist != null && assist.isOnline())
+ assist.sendPacket(new ExShowScreenMessage(message, duration * 1000));
+ if (assist2 != null && assist2.isOnline())
+ assist2.sendPacket(new ExShowScreenMessage(message, duration * 1000));
+ if (assist3 != null && assist3.isOnline())
+ assist3.sendPacket(new ExShowScreenMessage(message, duration * 1000));
+ }
+
+ public void inicarContagem(int duration)
+ {
+ if (leader != null && leader.isOnline())
+ ThreadPool.schedule(new Arena4x4.countdown(leader, duration), 0L);
+ if (assist != null && assist.isOnline())
+ ThreadPool.schedule(new Arena4x4.countdown(assist, duration), 0L);
+ if (assist2 != null && assist2.isOnline())
+ ThreadPool.schedule(new Arena4x4.countdown(assist2, duration), 0L);
+ if (assist3 != null && assist3.isOnline())
+ ThreadPool.schedule(new Arena4x4.countdown(assist3, duration), 0L);
+ }
+
+ public void sendPacketinit(String message, int duration)
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.sendPacket(new ExShowScreenMessage(message, duration * 1000, ExShowScreenMessage.SMPOS.MIDDLE_LEFT, false));
+
+ if ((leader.getClassId() == ClassId.SHILLIEN_ELDER || leader.getClassId() == ClassId.SHILLIEN_SAINT || leader.getClassId() == ClassId.BISHOP || leader.getClassId() == ClassId.CARDINAL || leader.getClassId() == ClassId.ELVEN_ELDER || leader.getClassId() == ClassId.EVAS_SAINT) && Config.bs_COUNT_4X4 == 0)
+ ThreadPool.schedule(new Runnable()
+ {
+
+ @Override
+ public void run()
+ {
+ leader.getClient().closeNow();
+ }
+ }, 100L);
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.sendPacket(new ExShowScreenMessage(message, duration * 1000, ExShowScreenMessage.SMPOS.MIDDLE_LEFT, false));
+
+ if ((assist.getClassId() == ClassId.SHILLIEN_ELDER || assist.getClassId() == ClassId.SHILLIEN_SAINT || assist.getClassId() == ClassId.BISHOP || assist.getClassId() == ClassId.CARDINAL || assist.getClassId() == ClassId.ELVEN_ELDER || assist.getClassId() == ClassId.EVAS_SAINT) && Config.bs_COUNT_4X4 == 0)
+ ThreadPool.schedule(new Runnable()
+ {
+
+ @Override
+ public void run()
+ {
+ assist.getClient().closeNow();
+ }
+ }, 100L);
+ }
+
+ if (assist2 != null && assist2.isOnline())
+ {
+ assist2.sendPacket(new ExShowScreenMessage(message, duration * 1000, ExShowScreenMessage.SMPOS.MIDDLE_LEFT, false));
+ if ((assist2.getClassId() == ClassId.SHILLIEN_ELDER || assist2.getClassId() == ClassId.SHILLIEN_SAINT || assist2.getClassId() == ClassId.BISHOP || assist2.getClassId() == ClassId.CARDINAL || assist2.getClassId() == ClassId.ELVEN_ELDER || assist2.getClassId() == ClassId.EVAS_SAINT) && Config.bs_COUNT_4X4 == 0)
+ ThreadPool.schedule(new Runnable()
+ {
+
+ @Override
+ public void run()
+ {
+ assist2.getClient().closeNow();
+ }
+ }, 100L);
+ }
+
+ if (assist3 != null && assist3.isOnline())
+ {
+ assist3.sendPacket(new ExShowScreenMessage(message, duration * 1000, ExShowScreenMessage.SMPOS.MIDDLE_LEFT, false));
+ if ((assist3.getClassId() == ClassId.SHILLIEN_ELDER || assist3.getClassId() == ClassId.SHILLIEN_SAINT || assist3.getClassId() == ClassId.BISHOP || assist3.getClassId() == ClassId.CARDINAL || assist3.getClassId() == ClassId.ELVEN_ELDER || assist3.getClassId() == ClassId.EVAS_SAINT) && Config.bs_COUNT_4X4 == 0)
+ ThreadPool.schedule(new Runnable()
+ {
+
+ @Override
+ public void run()
+ {
+ assist3.getClient().closeNow();
+ }
+ }, 100L);
+ }
+ }
+ }
+
+ private class EvtArenaTask implements Runnable
+ {
+ private final Arena4x4.Pair pairOne;
+ private final Arena4x4.Pair pairTwo;
+ private final int pOneX;
+ private final int pOneY;
+ private final int pOneZ;
+ private final int pTwoX;
+ private final int pTwoY;
+ private final int pTwoZ;
+ private Arena4x4.Arena arena;
+
+ public EvtArenaTask(List<Pair> opponents)
+ {
+ pairOne = opponents.get(0);
+ pairTwo = opponents.get(1);
+ Player leader = pairOne.getLeader();
+ pOneX = leader.getX();
+ pOneY = leader.getY();
+ pOneZ = leader.getZ();
+ leader = pairTwo.getLeader();
+ pTwoX = leader.getX();
+ pTwoY = leader.getY();
+ pTwoZ = leader.getZ();
+ }
+
+ @Override
+ public void run()
+ {
+ free -= 1;
+ pairOne.saveTitle();
+ pairTwo.saveTitle();
+ portPairsToArena();
+ pairOne.inicarContagem(Config.ARENA_WAIT_INTERVAL_4X4);
+ pairTwo.inicarContagem(Config.ARENA_WAIT_INTERVAL_4X4);
+ try
+ {
+ Thread.sleep(Config.ARENA_WAIT_INTERVAL_4X4 * 1000);
+ }
+ catch (InterruptedException localInterruptedException1)
+ {
+ }
+
+ pairOne.sendPacketinit("Started. Good Fight!", 3);
+ pairTwo.sendPacketinit("Started. Good Fight!", 3);
+ pairOne.EventTitle(Config.MSG_TEAM1, Config.TITLE_COLOR_TEAM1);
+ pairTwo.EventTitle(Config.MSG_TEAM2, Config.TITLE_COLOR_TEAM2);
+ pairOne.setImobilised(false);
+ pairTwo.setImobilised(false);
+ pairOne.setArenaAttack(true);
+ pairTwo.setArenaAttack(true);
+ while (check())
+ try
+ {
+
+ Thread.sleep(Config.ARENA_CHECK_INTERVAL);
+ }
+ catch (InterruptedException e)
+ {
+ }
+
+ this.finishDuel();
+ final Arena4x4 this$2 = Arena4x4.this;
+ ++this$2.free;
+ }
+
+ private void finishDuel()
+ {
+ fights.remove(Integer.valueOf(arena.id));
+ rewardWinner();
+ pairOne.revive();
+ pairTwo.revive();
+ pairOne.teleportTo(pOneX, pOneY, pOneZ);
+ pairTwo.teleportTo(pTwoX, pTwoY, pTwoZ);
+ pairOne.backTitle();
+ pairTwo.backTitle();
+ pairOne.setInTournamentEvent(false);
+ pairTwo.setInTournamentEvent(false);
+ pairOne.setArenaProtection(false);
+ pairTwo.setArenaProtection(false);
+ pairOne.setArenaAttack(false);
+ pairTwo.setArenaAttack(false);
+ arena.setFree(true);
+ }
+
+ private void rewardWinner()
+ {
+ if (pairOne.isAlive() && !pairTwo.isAlive())
+ {
+ Player leader1 = pairOne.getLeader();
+ Player leader2 = pairTwo.getLeader();
+
+ if (leader1.getClan() != null && leader2.getClan() != null && Config.TOURNAMENT_EVENT_ANNOUNCE)
+
+ World.announceToOnlinePlayers("[4x4]: (" + leader1.getClan().getName() + " VS " + leader2.getClan().getName() + ") ~> " + leader1.getClan().getName() + " win!");
+ pairOne.rewards();
+ pairTwo.rewardsLost();
+ }
+ else if (pairTwo.isAlive() && !pairOne.isAlive())
+ {
+ Player leader1 = pairTwo.getLeader();
+ Player leader2 = pairOne.getLeader();
+
+ if (leader1.getClan() != null && leader2.getClan() != null && Config.TOURNAMENT_EVENT_ANNOUNCE)
+
+ World.announceToOnlinePlayers("[4x4]: (" + leader1.getClan().getName() + " VS " + leader2.getClan().getName() + ") ~> " + leader1.getClan().getName() + " win!");
+
+ pairTwo.rewards();
+ pairOne.rewardsLost();
+ }
+ }
+
+ private boolean check()
+ {
+ return pairOne.isDead() && pairTwo.isDead();
+ }
+
+ private void portPairsToArena()
+ {
+ for (Arena4x4.Arena arena : arenas)
+ if (arena.isFree)
+ {
+ this.arena = arena;
+ arena.setFree(false);
+ pairOne.removePet();
+ pairTwo.removePet();
+ pairOne.teleportTo(arena.x - 850, arena.y, arena.z);
+ pairTwo.teleportTo(arena.x + 850, arena.y, arena.z);
+ pairOne.setImobilised(true);
+ pairTwo.setImobilised(true);
+ pairOne.setInTournamentEvent(true);
+ pairTwo.setInTournamentEvent(true);
+ pairOne.removeSkills();
+ pairTwo.removeSkills();
+ fights.put(Integer.valueOf(this.arena.id), pairOne.getLeader().getName() + " vs " + pairTwo.getLeader().getName());
+ break;
+ }
+ }
+ }
+
+ private class Arena
+ {
+ protected int x;
+ protected int y;
+ protected int z;
+ protected boolean isFree = true;
+ int id;
+
+ public Arena(int id, int x, int y, int z)
+ {
+ this.id = id;
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ }
+
+ public void setFree(boolean val)
+ {
+ isFree = val;
+ }
+ }
+
+ protected class countdown implements Runnable
+ {
+ private final Player _player;
+ private final int _time;
+
+ public countdown(Player player, int time)
+ {
+ _time = time;
+ _player = player;
+ }
+
+ @Override
+ public void run()
+ {
+ if (_player.isOnline())
+ {
+
+ switch (_time)
+ {
+ case 60:
+ case 120:
+ case 180:
+ case 240:
+ case 300:
+ if (_player.isOnline())
+ {
+ _player.sendPacket(new ExShowScreenMessage("The battle starts in " + _time + " second(s)..", 4000));
+ _player.sendMessage(_time + " second(s) to start the battle.");
+ _player.setIsParalyzed(true);
+ }
+ break;
+ case 45:
+ if (_player.isOnline())
+ {
+ _player.sendPacket(new ExShowScreenMessage("" + _time + " ..", 3000));
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ _player.broadcastPacket(new SocialAction(_player, 1));
+ }
+ break;
+ case 27:
+ if (_player.isOnline())
+ {
+ _player.sendPacket(new ExShowScreenMessage("The battle starts in 30 second(s)..", 4000));
+ _player.sendMessage("30 second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ _player.broadcastPacket(new SocialAction(_player, 2));
+ }
+ break;
+ case 20:
+ if (_player.isOnline())
+ {
+ _player.sendPacket(new ExShowScreenMessage("" + _time + " ..", 3000));
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+
+ }
+ break;
+ case 15:
+ if (_player.isOnline())
+ {
+ _player.sendPacket(new ExShowScreenMessage("" + _time + " ..", 3000));
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ _player.broadcastPacket(new SocialAction(_player, 9));
+ }
+ break;
+ case 10:
+ if (_player.isOnline())
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ _player.broadcastPacket(new SocialAction(_player, 5));
+ break;
+ case 5:
+ if (_player.isOnline())
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ break;
+ case 4:
+ if (_player.isOnline())
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ break;
+ case 3:
+ if (_player.isOnline())
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ break;
+ case 2:
+ if (_player.isOnline())
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ break;
+ case 1:
+ if (_player.isOnline())
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(false);
+ break;
+ }
+ if (_time > 1)
+ ThreadPool.schedule(new countdown(_player, _time - 1), 1000L);
+ }
+ }
+ }
+
+ private static class SingletonHolder
+ {
+ protected static final Arena4x4 INSTANCE = new Arena4x4();
+ }
+ }
+
Index: package mods.events;Arena9x9.java
===================================================================
--- package mods.events;Arena9x9.java (revision 84)
+++ package mods.events;Arena9x9.java (working copy)
+ package mods.events;
+
+ import java.util.ArrayList;
+ import java.util.HashMap;
+ import java.util.List;
+ import java.util.Map;
+ import org.l2j.commons.concurrent.ThreadPool;
+ import org.l2j.commons.random.Rnd;
+ import org.l2j.Config;
+ import org.l2j.gameserver.model.L2Effect;
+ import org.l2j.gameserver.model.World;
+ import org.l2j.gameserver.model.actor.Player;
+ import org.l2j.gameserver.model.actor.Summon;
+ import org.l2j.gameserver.model.actor.instance.Pet;
+ import org.l2j.gameserver.enums.actors.ClassId;
+ import org.l2j.gameserver.enums.ZoneId;
+ import org.l2j.gameserver.network.serverpackets.ExShowScreenMessage;
+ import org.l2j.gameserver.network.serverpackets.SocialAction;
+
+ public class Arena9x9 implements Runnable
+ {
+ public static List<Pair> registered;
+ int free = Config.ARENA_EVENT_COUNT_9X9;
+
+ Arena[] arenas = new Arena[Config.ARENA_EVENT_COUNT_9X9];
+
+ Map<Integer, String> fights = new HashMap<>(Config.ARENA_EVENT_COUNT_9X9);
+
+ public Arena9x9()
+ {
+ registered = new ArrayList<>();
+
+ for (int i = 0; i < Config.ARENA_EVENT_COUNT_9X9; i++)
+ {
+ int[] coord = Config.ARENA_EVENT_LOCS_9X9[i];
+ arenas[i] = new Arena(i, coord[0], coord[1], coord[2]);
+ }
+ }
+
+ public static Arena9x9 getInstance()
+ {
+ return SingletonHolder.INSTANCE;
+ }
+
+ public boolean register(Player player, Player assist, Player assist2, Player assist3, Player assist4, Player assist5, Player assist6, Player assist7, Player assist8)
+ {
+ for (Pair p : registered)
+ {
+ if (p.getLeader() == player || p.getAssist() == player)
+ {
+ player.sendMessage("Tournament: You already registered!");
+ return false;
+ }
+ if (p.getLeader() == assist || p.getAssist() == assist)
+ {
+ player.sendMessage("Tournament: " + assist.getName() + " already registered!");
+ return false;
+ }
+ if (p.getLeader() == assist2 || p.getAssist2() == assist2)
+ {
+ player.sendMessage("Tournament: " + assist2.getName() + " already registered!");
+ return false;
+ }
+ if (p.getLeader() == assist3 || p.getAssist3() == assist3)
+ {
+ player.sendMessage("Tournament: " + assist3.getName() + " already registered!");
+ return false;
+ }
+ if (p.getLeader() == assist4 || p.getAssist4() == assist4)
+ {
+ player.sendMessage("Tournament: " + assist4.getName() + " already registered!");
+ return false;
+ }
+ if (p.getLeader() == assist5 || p.getAssist5() == assist5)
+ {
+ player.sendMessage("Tournament: " + assist5.getName() + " already registered!");
+ return false;
+ }
+ if (p.getLeader() == assist6 || p.getAssist6() == assist6)
+ {
+ player.sendMessage("Tournament: " + assist6.getName() + " already registered!");
+ return false;
+ }
+ if (p.getLeader() == assist7 || p.getAssist7() == assist7)
+ {
+ player.sendMessage("Tournament: " + assist7.getName() + " already registered!");
+ return false;
+ }
+ if (p.getLeader() == assist8 || p.getAssist8() == assist8)
+ {
+ player.sendMessage("Tournament: " + assist8.getName() + " already registered!");
+ return false;
+ }
+ }
+ return registered.add(new Pair(player, assist, assist2, assist3, assist4, assist5, assist6, assist7, assist8));
+ }
+
+ public boolean isRegistered(Player player)
+ {
+ for (Pair p : registered)
+ if (p.getLeader() == player || p.getAssist() == player || p.getAssist2() == player || p.getAssist3() == player || p.getAssist4() == player || p.getAssist5() == player || p.getAssist6() == player || p.getAssist7() == player || p.getAssist8() == player)
+ return true;
+ return false;
+ }
+
+ public Map<Integer, String> getFights()
+ {
+ return fights;
+ }
+
+ public boolean remove(Player player)
+ {
+ for (Pair p : registered)
+ if (p.getLeader() == player || p.getAssist() == player || p.getAssist2() == player || p.getAssist3() == player || p.getAssist4() == player || p.getAssist5() == player || p.getAssist6() == player || p.getAssist7() == player || p.getAssist8() == player)
+ {
+ p.removeMessage();
+ registered.remove(p);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public synchronized void run()
+ {
+ for (;;)
+ if (registered.size() < 2 || free == 0)
+ try
+ {
+ Thread.sleep(Config.ARENA_CALL_INTERVAL * 1000);
+
+ }
+ catch (InterruptedException localInterruptedException)
+ {
+ }
+ else
+ {
+ List<Pair> opponents = selectOpponents();
+ if (opponents != null && opponents.size() == 2)
+ {
+ Thread T = new Thread(new EvtArenaTask(opponents));
+ T.setDaemon(true);
+ T.start();
+ }
+
+ try
+ {
+ Thread.sleep(Config.ARENA_CALL_INTERVAL * 1000);
+ }
+ catch (InterruptedException localInterruptedException1)
+ {
+ }
+ }
+ }
+
+ @SuppressWarnings("null")
+ private List<Pair> selectOpponents()
+ {
+ List<Pair> opponents = new ArrayList<>();
+ Pair pairOne = null;
+ Pair pairTwo = null;
+ int tries = 3;
+ do
+ {
+ int first = 0;
+ int second = 0;
+ if (getRegisteredCount() < 2)
+ return opponents;
+ if (pairOne == null)
+ {
+ first = Rnd.get(getRegisteredCount());
+ pairOne = registered.get(first);
+ if (pairOne.check())
+ {
+ opponents.add(0, pairOne);
+ registered.remove(first);
+ }
+ else
+ {
+ pairOne = null;
+ registered.remove(first);
+ return null;
+ }
+ }
+
+ if (pairTwo == null)
+ {
+ second = Rnd.get(getRegisteredCount());
+ pairTwo = registered.get(second);
+ if (pairTwo.check())
+ {
+ opponents.add(1, pairTwo);
+ registered.remove(second);
+ }
+ else
+ {
+ pairTwo = null;
+ registered.remove(second);
+ return null;
+ }
+ }
+
+ if (pairOne != null && pairTwo != null)
+ break;
+ tries--;
+ }
+ while (tries > 0);
+ return opponents;
+ }
+
+ public int getRegisteredCount()
+ {
+ return registered.size();
+ }
+
+ private class Pair
+ {
+ private final Player leader;
+ private final Player assist;
+ private final Player assist2;
+ private final Player assist3;
+
+ public Pair(Player leader, Player assist, Player assist2, Player assist3, Player assist4, Player assist5, Player assist6, Player assist7, Player assist8)
+ {
+ this.leader = leader;
+ this.assist = assist;
+ this.assist2 = assist2;
+ this.assist3 = assist3;
+ this.assist4 = assist4;
+ this.assist5 = assist5;
+ this.assist6 = assist6;
+ this.assist7 = assist7;
+ this.assist8 = assist8;
+ }
+
+ public Player getAssist()
+ {
+ return assist;
+ }
+
+ public Player getAssist2()
+ {
+ return assist2;
+ }
+
+ public Player getAssist3()
+ {
+ return assist3;
+ }
+
+ public Player getAssist4()
+ {
+ return assist4;
+ }
+
+ public Player getAssist5()
+ {
+ return assist5;
+ }
+
+ public Player getAssist6()
+ {
+ return assist6;
+ }
+
+ public Player getAssist7()
+ {
+ return assist7;
+ }
+
+ public Player getAssist8()
+ {
+ return assist8;
+ }
+
+ public Player getLeader()
+ {
+ return leader;
+ }
+
+ public boolean check()
+ {
+ if (leader == null || !leader.isOnline())
+ {
+
+ if (assist != null || assist.isOnline())
+ assist.sendMessage("Tournament: You participation in Event was Canceled.");
+ if (assist2 != null || assist2.isOnline())
+ assist2.sendMessage("Tournament: You participation in Event was Canceled.");
+ if (assist3 != null || assist3.isOnline())
+ assist3.sendMessage("Tournament: You participation in Event was Canceled.");
+ if (assist4 != null || assist4.isOnline())
+ assist4.sendMessage("Tournament: You participation in Event was Canceled.");
+ if (assist5 != null || assist5.isOnline())
+ assist5.sendMessage("Tournament: You participation in Event was Canceled.");
+ if (assist6 != null || assist6.isOnline())
+ assist6.sendMessage("Tournament: You participation in Event was Canceled.");
+ if (assist7 != null || assist7.isOnline())
+ assist7.sendMessage("Tournament: You participation in Event was Canceled.");
+ if (assist8 != null || assist8.isOnline())
+ assist8.sendMessage("Tournament: You participation in Event was Canceled.");
+ return false;
+ }
+ if ((assist == null || !assist.isOnline() || assist2 == null || !assist2.isOnline() || assist3 == null || !assist3.isOnline() || assist4 == null || !assist4.isOnline() || assist5 == null || !assist5.isOnline() || assist6 == null || !assist6.isOnline() || assist7 == null || !assist7.isOnline() || assist8 == null || !assist8.isOnline()) && (leader != null || leader.isOnline()))
+ {
+ leader.sendMessage("Tournament: You participation in Event was Canceled.");
+
+ if (assist != null || assist.isOnline())
+ assist.sendMessage("Tournament: You participation in Event was Canceled.");
+ if (assist2 != null || assist2.isOnline())
+ assist2.sendMessage("Tournament: You participation in Event was Canceled.");
+ if (assist3 != null || assist3.isOnline())
+ assist3.sendMessage("Tournament: You participation in Event was Canceled.");
+ if (assist4 != null || assist4.isOnline())
+ assist4.sendMessage("Tournament: You participation in Event was Canceled.");
+ if (assist5 != null || assist5.isOnline())
+ assist5.sendMessage("Tournament: You participation in Event was Canceled.");
+ if (assist6 != null || assist6.isOnline())
+ assist6.sendMessage("Tournament: You participation in Event was Canceled.");
+ if (assist7 != null || assist7.isOnline())
+ assist7.sendMessage("Tournament: You participation in Event was Canceled.");
+ if (assist8 != null || assist8.isOnline())
+ assist8.sendMessage("Tournament: You participation in Event was Canceled.");
+ return false;
+ }
+ return true;
+ }
+
+ public boolean isDead()
+ {
+ if ((leader == null || leader.isDead() || !leader.isOnline() || !leader.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !leader.isArenaAttack()) && (assist == null || assist.isDead() || !assist.isOnline() || !assist.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist.isArenaAttack()) && (assist2 == null || assist2.isDead() || !assist2.isOnline() || !assist2.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist2.isArenaAttack()) && (assist3 == null || assist3.isDead() || !assist3.isOnline() || !assist3.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist3.isArenaAttack()) && (assist4 == null || assist4.isDead() || !assist4.isOnline() || !assist4.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist4.isArenaAttack()) && (assist5 == null || assist5.isDead() || !assist5.isOnline() || !assist5.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist5.isArenaAttack()) && (assist6 == null || assist6.isDead() || !assist6.isOnline() || !assist6.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist6.isArenaAttack()) && (assist7 == null || assist7.isDead() || !assist7.isOnline() || !assist7.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist7.isArenaAttack()) && (assist8 == null || assist8.isDead() || !assist8.isOnline() || !assist8.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist8.isArenaAttack()))
+ return false;
+ return !leader.isDead() || !assist.isDead() || !assist2.isDead() || !assist3.isDead() || !assist4.isDead() || !assist5.isDead() || !assist6.isDead() || !assist7.isDead() || !assist8.isDead();
+ }
+
+ public boolean isAlive()
+ {
+ if ((leader == null || leader.isDead() || !leader.isOnline() || !leader.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !leader.isArenaAttack()) && (assist == null || assist.isDead() || !assist.isOnline() || !assist.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist.isArenaAttack()) && (assist2 == null || assist2.isDead() || !assist2.isOnline() || !assist2.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist2.isArenaAttack()) && (assist3 == null || assist3.isDead() || !assist3.isOnline() || !assist3.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist3.isArenaAttack()) && (assist4 == null || assist4.isDead() || !assist4.isOnline() || !assist4.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist4.isArenaAttack()) && (assist5 == null || assist5.isDead() || !assist5.isOnline() || !assist5.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist5.isArenaAttack()) && (assist6 == null || assist6.isDead() || !assist6.isOnline() || !assist6.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist6.isArenaAttack()) && (assist7 == null || assist7.isDead() || !assist7.isOnline() || !assist7.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist7.isArenaAttack()) && (assist8 == null || assist8.isDead() || !assist8.isOnline() || !assist8.isInsideZone(ZoneId.TORURNAMENT_ARENA) || !assist8.isArenaAttack()))
+ return false;
+ return !leader.isDead() || !assist.isDead() || !assist2.isDead() || !assist3.isDead() || !assist4.isDead() || !assist5.isDead() || !assist6.isDead() || !assist7.isDead() || !assist8.isDead();
+ }
+
+ public void teleportTo(int x, int y, int z)
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.getAppearance().setInvisible();
+ leader.setCurrentCp(leader.getMaxCp());
+ leader.setCurrentHp(leader.getMaxHp());
+ leader.setCurrentMp(leader.getMaxMp());
+
+ if (leader.isInObserverMode())
+ {
+ leader.setLastCords(x, y, z);
+ leader.leaveOlympiadObserverMode();
+ }
+ else
+ leader.teleportTo(x, y, z, 0);
+ leader.broadcastUserInfo();
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.getAppearance().setInvisible();
+ assist.setCurrentCp(assist.getMaxCp());
+ assist.setCurrentHp(assist.getMaxHp());
+ assist.setCurrentMp(assist.getMaxMp());
+
+ if (assist.isInObserverMode())
+ {
+ assist.setLastCords(x, y + 200, z);
+ assist.leaveOlympiadObserverMode();
+ }
+ else
+ assist.teleportTo(x, y + 200, z, 0);
+ assist.broadcastUserInfo();
+ }
+ if (assist2 != null && assist2.isOnline())
+ {
+ assist2.getAppearance().setInvisible();
+ assist2.setCurrentCp(assist2.getMaxCp());
+ assist2.setCurrentHp(assist2.getMaxHp());
+ assist2.setCurrentMp(assist2.getMaxMp());
+
+ if (assist2.isInObserverMode())
+ {
+ assist2.setLastCords(x, y + 150, z);
+ assist2.leaveOlympiadObserverMode();
+ }
+ else
+ assist2.teleportTo(x, y + 150, z, 0);
+ assist2.broadcastUserInfo();
+ }
+ if (assist3 != null && assist3.isOnline())
+ {
+ assist3.getAppearance().setInvisible();
+ assist3.setCurrentCp(assist3.getMaxCp());
+ assist3.setCurrentHp(assist3.getMaxHp());
+ assist3.setCurrentMp(assist3.getMaxMp());
+
+ if (assist3.isInObserverMode())
+ {
+ assist3.setLastCords(x, y + 100, z);
+ assist3.leaveOlympiadObserverMode();
+ }
+ else
+ assist3.teleportTo(x, y + 100, z, 0);
+ assist3.broadcastUserInfo();
+ }
+ if (assist4 != null && assist4.isOnline())
+ {
+ assist4.getAppearance().setInvisible();
+ assist4.setCurrentCp(assist4.getMaxCp());
+ assist4.setCurrentHp(assist4.getMaxHp());
+ assist4.setCurrentMp(assist4.getMaxMp());
+
+ if (assist4.isInObserverMode())
+ {
+ assist4.setLastCords(x, y + 50, z);
+ assist4.leaveOlympiadObserverMode();
+ }
+ else
+ assist4.teleportTo(x, y + 50, z, 0);
+ assist4.broadcastUserInfo();
+ }
+ if (assist5 != null && assist5.isOnline())
+ {
+ assist5.getAppearance().setInvisible();
+ assist5.setCurrentCp(assist5.getMaxCp());
+ assist5.setCurrentHp(assist5.getMaxHp());
+ assist5.setCurrentMp(assist5.getMaxMp());
+
+ if (assist5.isInObserverMode())
+ {
+ assist5.setLastCords(x, y - 200, z);
+ assist5.leaveOlympiadObserverMode();
+ }
+ else
+ assist5.teleportTo(x, y - 200, z, 0);
+ assist5.broadcastUserInfo();
+ }
+ if (assist6 != null && assist6.isOnline())
+ {
+ assist6.getAppearance().setInvisible();
+ assist6.setCurrentCp(assist6.getMaxCp());
+ assist6.setCurrentHp(assist6.getMaxHp());
+ assist6.setCurrentMp(assist6.getMaxMp());
+
+ if (assist6.isInObserverMode())
+ {
+ assist6.setLastCords(x, y - 150, z);
+ assist6.leaveOlympiadObserverMode();
+ }
+ else
+ assist6.teleportTo(x, y - 150, z, 0);
+ assist6.broadcastUserInfo();
+ }
+ if (assist7 != null && assist7.isOnline())
+ {
+ assist7.getAppearance().setInvisible();
+ assist7.setCurrentCp(assist7.getMaxCp());
+ assist7.setCurrentHp(assist7.getMaxHp());
+ assist7.setCurrentMp(assist7.getMaxMp());
+
+ if (assist7.isInObserverMode())
+ {
+ assist7.setLastCords(x, y - 100, z);
+ assist7.leaveOlympiadObserverMode();
+ }
+ else
+ assist7.teleportTo(x, y - 100, z, 0);
+ assist7.broadcastUserInfo();
+ }
+ if (assist8 != null && assist8.isOnline())
+ {
+ assist8.getAppearance().setInvisible();
+ assist8.setCurrentCp(assist8.getMaxCp());
+ assist8.setCurrentHp(assist8.getMaxHp());
+ assist8.setCurrentMp(assist8.getMaxMp());
+
+ if (assist8.isInObserverMode())
+ {
+ assist8.setLastCords(x, y - 50, z);
+ assist8.leaveOlympiadObserverMode();
+ }
+ else
+ assist8.teleportTo(x, y - 50, z, 0);
+ assist8.broadcastUserInfo();
+ }
+ }
+
+ public void EventTitle(String title, String color)
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.setTitle(title);
+ leader.getAppearance().setTitleColor(Integer.decode("0x" + color).intValue());
+ leader.broadcastUserInfo();
+ leader.broadcastTitleInfo();
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.setTitle(title);
+ assist.getAppearance().setTitleColor(Integer.decode("0x" + color).intValue());
+ assist.broadcastUserInfo();
+ assist.broadcastTitleInfo();
+ }
+ if (assist2 != null && assist2.isOnline())
+ {
+ assist2.setTitle(title);
+ assist2.getAppearance().setTitleColor(Integer.decode("0x" + color).intValue());
+ assist2.broadcastUserInfo();
+ assist2.broadcastTitleInfo();
+ }
+ if (assist3 != null && assist3.isOnline())
+ {
+ assist3.setTitle(title);
+ assist3.getAppearance().setTitleColor(Integer.decode("0x" + color).intValue());
+ assist3.broadcastUserInfo();
+ assist3.broadcastTitleInfo();
+ }
+ if (assist4 != null && assist4.isOnline())
+ {
+ assist4.setTitle(title);
+ assist4.getAppearance().setTitleColor(Integer.decode("0x" + color).intValue());
+ assist4.broadcastUserInfo();
+ assist4.broadcastTitleInfo();
+ }
+ if (assist5 != null && assist5.isOnline())
+ {
+ assist5.setTitle(title);
+ assist5.getAppearance().setTitleColor(Integer.decode("0x" + color).intValue());
+ assist5.broadcastUserInfo();
+ assist5.broadcastTitleInfo();
+ }
+ if (assist6 != null && assist6.isOnline())
+ {
+ assist6.setTitle(title);
+ assist6.getAppearance().setTitleColor(Integer.decode("0x" + color).intValue());
+ assist6.broadcastUserInfo();
+ assist6.broadcastTitleInfo();
+ }
+ if (assist7 != null && assist7.isOnline())
+ {
+ assist7.setTitle(title);
+ assist7.getAppearance().setTitleColor(Integer.decode("0x" + color).intValue());
+ assist7.broadcastUserInfo();
+ assist7.broadcastTitleInfo();
+ }
+ if (assist8 != null && assist8.isOnline())
+ {
+ assist8.setTitle(title);
+ assist8.getAppearance().setTitleColor(Integer.decode("0x" + color).intValue());
+ assist8.broadcastUserInfo();
+ assist8.broadcastTitleInfo();
+ }
+ }
+
+ public void saveTitle()
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader._originalTitleColorTournament = leader.getAppearance().getTitleColor();
+ leader._originalTitleTournament = leader.getTitle();
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist._originalTitleColorTournament = assist.getAppearance().getTitleColor();
+ assist._originalTitleTournament = assist.getTitle();
+ }
+
+ if (assist2 != null && assist2.isOnline())
+ {
+ assist2._originalTitleColorTournament = assist2.getAppearance().getTitleColor();
+ assist2._originalTitleTournament = assist2.getTitle();
+ }
+
+ if (assist3 != null && assist3.isOnline())
+ {
+ assist3._originalTitleColorTournament = assist3.getAppearance().getTitleColor();
+ assist3._originalTitleTournament = assist3.getTitle();
+ }
+
+ if (assist4 != null && assist4.isOnline())
+ {
+ assist4._originalTitleColorTournament = assist4.getAppearance().getTitleColor();
+ assist4._originalTitleTournament = assist4.getTitle();
+ }
+
+ if (assist5 != null && assist5.isOnline())
+ {
+ assist5._originalTitleColorTournament = assist5.getAppearance().getTitleColor();
+ assist5._originalTitleTournament = assist5.getTitle();
+ }
+
+ if (assist6 != null && assist6.isOnline())
+ {
+ assist6._originalTitleColorTournament = assist6.getAppearance().getTitleColor();
+ assist6._originalTitleTournament = assist6.getTitle();
+ assist6._originalTitleTournament = assist6.getTitle();
+ }
+
+ if (assist7 != null && assist7.isOnline())
+ {
+ assist7._originalTitleColorTournament = assist7.getAppearance().getTitleColor();
+ assist7._originalTitleTournament = assist7.getTitle();
+ }
+
+ if (assist8 != null && assist8.isOnline())
+ {
+ assist8._originalTitleColorTournament = assist8.getAppearance().getTitleColor();
+ assist8._originalTitleTournament = assist8.getTitle();
+ }
+ }
+
+ public void backTitle()
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.setTitle(leader._originalTitleTournament);
+ leader.getAppearance().setTitleColor(leader._originalTitleColorTournament);
+ leader.broadcastUserInfo();
+ leader.broadcastTitleInfo();
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.setTitle(assist._originalTitleTournament);
+ assist.getAppearance().setTitleColor(assist._originalTitleColorTournament);
+ assist.broadcastUserInfo();
+ assist.broadcastTitleInfo();
+ }
+
+ if (assist2 != null && assist2.isOnline())
+ {
+ assist2.setTitle(assist2._originalTitleTournament);
+ assist2.getAppearance().setTitleColor(assist2._originalTitleColorTournament);
+ assist2.broadcastUserInfo();
+ assist2.broadcastTitleInfo();
+ }
+
+ if (assist3 != null && assist3.isOnline())
+ {
+ assist3.setTitle(assist3._originalTitleTournament);
+ assist3.getAppearance().setTitleColor(assist3._originalTitleColorTournament);
+ assist3.broadcastUserInfo();
+ assist3.broadcastTitleInfo();
+ }
+
+ if (assist4 != null && assist4.isOnline())
+ {
+ assist4.setTitle(assist4._originalTitleTournament);
+ assist4.getAppearance().setTitleColor(assist4._originalTitleColorTournament);
+ assist4.broadcastUserInfo();
+ assist4.broadcastTitleInfo();
+ }
+
+ if (assist5 != null && assist5.isOnline())
+ {
+ assist5.setTitle(assist5._originalTitleTournament);
+ assist5.getAppearance().setTitleColor(assist5._originalTitleColorTournament);
+ assist5.broadcastUserInfo();
+ assist5.broadcastTitleInfo();
+ }
+
+ if (assist6 != null && assist6.isOnline())
+ {
+ assist6.setTitle(assist6._originalTitleTournament);
+ assist6.getAppearance().setTitleColor(assist6._originalTitleColorTournament);
+ assist6.broadcastUserInfo();
+ assist6.broadcastTitleInfo();
+ }
+
+ if (assist7 != null && assist7.isOnline())
+ {
+ assist7.setTitle(assist7._originalTitleTournament);
+ assist7.getAppearance().setTitleColor(assist7._originalTitleColorTournament);
+ assist7.broadcastUserInfo();
+ assist7.broadcastTitleInfo();
+ }
+
+ if (assist8 != null && assist8.isOnline())
+ {
+ assist8.setTitle(assist8._originalTitleTournament);
+ assist8.getAppearance().setTitleColor(assist8._originalTitleColorTournament);
+ assist8.broadcastUserInfo();
+ assist8.broadcastTitleInfo();
+ }
+ }
+
+ private final Player assist4;
+ private final Player assist5;
+ private final Player assist6;
+ private final Player assist7;
+ private final Player assist8;
+
+ public void rewards()
+ {
+ if (leader != null && leader.isOnline())
+ leader.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_WIN_REWARD_COUNT_9X9, leader, true);
+
+ if (assist != null && assist.isOnline())
+ assist.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_WIN_REWARD_COUNT_9X9, assist, true);
+
+ if (assist2 != null && assist2.isOnline())
+ assist2.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_WIN_REWARD_COUNT_9X9, assist2, true);
+
+ if (assist3 != null && assist3.isOnline())
+ assist3.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_WIN_REWARD_COUNT_9X9, assist3, true);
+
+ if (assist4 != null && assist4.isOnline())
+ assist4.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_WIN_REWARD_COUNT_9X9, assist4, true);
+
+ if (assist5 != null && assist5.isOnline())
+ assist5.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_WIN_REWARD_COUNT_9X9, assist5, true);
+
+ if (assist6 != null && assist6.isOnline())
+ assist6.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_WIN_REWARD_COUNT_9X9, assist6, true);
+
+ if (assist7 != null && assist7.isOnline())
+ assist7.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_WIN_REWARD_COUNT_9X9, assist7, true);
+
+ if (assist8 != null && assist8.isOnline())
+ assist8.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_WIN_REWARD_COUNT_9X9, assist8, true);
+
+
+ sendPacket("Congratulations, your team won the event!", 5);
+ }
+
+ public void rewardsLost()
+ {
+ if (leader != null && leader.isOnline())
+ leader.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_LOST_REWARD_COUNT_9X9, leader, true);
+
+ if (assist != null && assist.isOnline())
+ assist.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_LOST_REWARD_COUNT_9X9, assist, true);
+
+ if (assist2 != null && assist2.isOnline())
+ assist2.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_LOST_REWARD_COUNT_9X9, assist2, true);
+
+ if (assist3 != null && assist3.isOnline())
+ assist3.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_LOST_REWARD_COUNT_9X9, assist3, true);
+
+ if (assist4 != null && assist4.isOnline())
+ assist4.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_LOST_REWARD_COUNT_9X9, assist4, true);
+
+ if (assist5 != null && assist5.isOnline())
+ assist5.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_LOST_REWARD_COUNT_9X9, assist5, true);
+
+ if (assist6 != null && assist6.isOnline())
+ assist6.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_LOST_REWARD_COUNT_9X9, assist6, true);
+
+ if (assist7 != null && assist7.isOnline())
+ assist7.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_LOST_REWARD_COUNT_9X9, assist7, true);
+
+ if (assist8 != null && assist8.isOnline())
+ assist8.addItem("Arena_Event", Config.ARENA_REWARD_ID, Config.ARENA_LOST_REWARD_COUNT_9X9, assist8, true);
+ sendPacket("your team lost the event! =(", 5);
+ }
+
+ public void setInTournamentEvent(boolean val)
+ {
+ if (leader != null && leader.isOnline())
+ leader.setInArenaEvent(val);
+ if (assist != null && assist.isOnline())
+ assist.setInArenaEvent(val);
+ if (assist2 != null && assist2.isOnline())
+ assist2.setInArenaEvent(val);
+ if (assist3 != null && assist3.isOnline())
+ assist3.setInArenaEvent(val);
+ if (assist4 != null && assist4.isOnline())
+ assist4.setInArenaEvent(val);
+ if (assist5 != null && assist5.isOnline())
+ assist5.setInArenaEvent(val);
+ if (assist6 != null && assist6.isOnline())
+ assist6.setInArenaEvent(val);
+ if (assist7 != null && assist7.isOnline())
+ assist7.setInArenaEvent(val);
+ if (assist8 != null && assist8.isOnline())
+ assist8.setInArenaEvent(val);
+ }
+
+ public void removeMessage()
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.sendMessage("Tournament: Your participation has been removed.");
+ leader.setArenaProtection(false);
+ leader.setArena9x9(false);
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.sendMessage("Tournament: Your participation has been removed.");
+ assist.setArenaProtection(false);
+ assist.setArena9x9(false);
+ }
+
+ if (assist2 != null && assist2.isOnline())
+ {
+ assist2.sendMessage("Tournament: Your participation has been removed.");
+ assist2.setArenaProtection(false);
+ assist2.setArena9x9(false);
+ }
+
+ if (assist3 != null && assist3.isOnline())
+ {
+ assist3.sendMessage("Tournament: Your participation has been removed.");
+ assist3.setArenaProtection(false);
+ assist3.setArena9x9(false);
+ }
+
+ if (assist4 != null && assist4.isOnline())
+ {
+ assist4.sendMessage("Tournament: Your participation has been removed.");
+ assist4.setArenaProtection(false);
+ assist4.setArena9x9(false);
+ }
+
+ if (assist5 != null && assist5.isOnline())
+ {
+ assist5.sendMessage("Tournament: Your participation has been removed.");
+ assist5.setArenaProtection(false);
+ assist5.setArena9x9(false);
+ }
+
+ if (assist6 != null && assist6.isOnline())
+ {
+ assist6.sendMessage("Tournament: Your participation has been removed.");
+ assist6.setArenaProtection(false);
+ assist6.setArena9x9(false);
+ }
+
+ if (assist7 != null && assist7.isOnline())
+ {
+ assist7.sendMessage("Tournament: Your participation has been removed.");
+ assist7.setArenaProtection(false);
+ assist7.setArena9x9(false);
+ }
+
+ if (assist8 != null && assist8.isOnline())
+ {
+ assist8.sendMessage("Tournament: Your participation has been removed.");
+ assist8.setArenaProtection(false);
+ assist8.setArena9x9(false);
+ }
+ }
+
+ public void setArenaProtection(boolean val)
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.setArenaProtection(val);
+ leader.setArena9x9(val);
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.setArenaProtection(val);
+ assist.setArena9x9(val);
+ }
+ if (assist2 != null && assist2.isOnline())
+ {
+ assist2.setArenaProtection(val);
+ assist2.setArena9x9(val);
+ }
+
+ if (assist3 != null && assist3.isOnline())
+ {
+ assist3.setArenaProtection(val);
+ assist3.setArena9x9(val);
+ }
+
+ if (assist4 != null && assist4.isOnline())
+ {
+ assist4.setArenaProtection(val);
+ assist4.setArena9x9(val);
+ }
+
+ if (assist5 != null && assist5.isOnline())
+ {
+ assist5.setArenaProtection(val);
+ assist5.setArena9x9(val);
+ }
+
+ if (assist6 != null && assist6.isOnline())
+ {
+ assist6.setArenaProtection(val);
+ assist6.setArena9x9(val);
+ }
+
+ if (assist7 != null && assist7.isOnline())
+ {
+ assist7.setArenaProtection(val);
+ assist7.setArena9x9(val);
+ }
+
+ if (assist8 != null && assist8.isOnline())
+ {
+ assist8.setArenaProtection(val);
+ assist8.setArena9x9(val);
+ }
+ }
+
+ public void revive()
+ {
+ if (leader != null && leader.isOnline() && leader.isDead())
+ leader.doRevive();
+ if (assist != null && assist.isOnline() && assist.isDead())
+ assist.doRevive();
+ if (assist2 != null && assist2.isOnline() && assist2.isDead())
+ assist2.doRevive();
+ if (assist3 != null && assist3.isOnline() && assist3.isDead())
+ assist3.doRevive();
+ if (assist4 != null && assist4.isOnline() && assist4.isDead())
+ assist4.doRevive();
+ if (assist5 != null && assist5.isOnline() && assist5.isDead())
+ assist5.doRevive();
+ if (assist6 != null && assist6.isOnline() && assist6.isDead())
+ assist6.doRevive();
+ if (assist7 != null && assist7.isOnline() && assist7.isDead())
+ assist7.doRevive();
+ if (assist8 != null && assist8.isOnline() && assist8.isDead())
+ assist8.doRevive();
+ }
+
+ public void setImobilised(boolean val)
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.setIsInvul(val);
+ leader.setStopArena(val);
+ }
+ if (assist != null && assist.isOnline())
+ {
+ assist.setIsInvul(val);
+ assist.setStopArena(val);
+ }
+ if (assist2 != null && assist2.isOnline())
+ {
+ assist2.setIsInvul(val);
+ assist2.setStopArena(val);
+ }
+ if (assist3 != null && assist3.isOnline())
+ {
+ assist3.setIsInvul(val);
+ assist3.setStopArena(val);
+ }
+ if (assist4 != null && assist4.isOnline())
+ {
+ assist4.setIsInvul(val);
+ assist4.setStopArena(val);
+ }
+ if (assist5 != null && assist5.isOnline())
+ {
+ assist5.setIsInvul(val);
+ assist5.setStopArena(val);
+ }
+ if (assist6 != null && assist6.isOnline())
+ {
+ assist6.setIsInvul(val);
+ assist6.setStopArena(val);
+ }
+ if (assist7 != null && assist7.isOnline())
+ {
+ assist7.setIsInvul(val);
+ assist7.setStopArena(val);
+ }
+ if (assist8 != null && assist8.isOnline())
+ {
+ assist8.setIsInvul(val);
+ assist8.setStopArena(val);
+ }
+ }
+
+ public void setArenaAttack(boolean val)
+ {
+ if (leader != null && leader.isOnline())
+ {
+ leader.setArenaAttack(val);
+ leader.broadcastUserInfo();
+ }
+
+ if (assist != null && assist.isOnline())
+ {
+ assist.setArenaAttack(val);
+ assist.broadcastUserInfo();
+ }
+
+ if (assist2 != null && assist2.isOnline())
+ {
+ assist2.setArenaAttack(val);
+ assist2.broadcastUserInfo();
+ }
+
+ if (assist3 != null && assist3.isOnline())
+ {
+ assist3.setArenaAttack(val);
+ assist3.broadcastUserInfo();
+ }
+
+ if (assist4 != null && assist4.isOnline())
+ {
+ assist4.setArenaAttack(val);
+ assist4.broadcastUserInfo();
+ }
+
+ if (assist5 != null && assist5.isOnline())
+ {
+ assist5.setArenaAttack(val);
+ assist5.broadcastUserInfo();
+ }
+
+ if (assist6 != null && assist6.isOnline())
+ {
+ assist6.setArenaAttack(val);
+ assist6.broadcastUserInfo();
+ }
+
+ if (assist7 != null && assist7.isOnline())
+ {
+ assist7.setArenaAttack(val);
+ assist7.broadcastUserInfo();
+ }
+
+ if (assist8 != null && assist8.isOnline())
+ {
+ assist8.setArenaAttack(val);
+ assist8.broadcastUserInfo();
+ }
+ }
+
+ public void removePet()
+ {
+ if (leader != null && leader.isOnline())
+ {
+
+ if (leader.getSummon() != null)
+ {
+ Summon summon = leader.getSummon();
+ if (summon != null)
+ summon.unSummon(summon.getOwner());
+ if (summon instanceof Pet)
+ summon.unSummon(leader);
+ }
+ if (leader.getMountType() == 1 || leader.getMountType() == 2)
+ leader.dismount();
+ }
+ if (assist != null && assist.isOnline())
+ {
+
+ if (assist.getSummon() != null)
+ {
+ Summon summon = assist.getSummon();
+ if (summon != null)
+ summon.unSummon(summon.getOwner());
+ if (summon instanceof Pet)
+ summon.unSummon(assist);
+ }
+ if (assist.getMountType() == 1 || assist.getMountType() == 2)
+ assist.dismount();
+ }
+
+ if (assist2 != null && assist2.isOnline())
+ {
+
+ if (assist2.getSummon() != null)
+ {
+ Summon summon = assist2.getSummon();
+ if (summon != null)
+ summon.unSummon(summon.getOwner());
+ if (summon instanceof Pet)
+ summon.unSummon(assist2);
+ }
+
+ if (assist2.getMountType() == 1 || assist2.getMountType() == 2)
+ assist2.dismount();
+ }
+
+ if (assist3 != null && assist3.isOnline())
+ {
+
+ if (assist3.getSummon() != null)
+ {
+ Summon summon = assist3.getSummon();
+ if (summon != null)
+ summon.unSummon(summon.getOwner());
+ if (summon instanceof Pet)
+ summon.unSummon(assist3);
+ }
+ if (assist3.getMountType() == 1 || assist3.getMountType() == 2)
+ assist3.dismount();
+ }
+
+ if (assist4 != null && assist4.isOnline())
+ {
+
+ if (assist4.getSummon() != null)
+ {
+ Summon summon = assist4.getSummon();
+ if (summon != null)
+ summon.unSummon(summon.getOwner());
+ if (summon instanceof Pet)
+ summon.unSummon(assist4);
+ }
+
+ if (assist4.getMountType() == 1 || assist4.getMountType() == 2)
+ assist4.dismount();
+ }
+
+ if (assist5 != null && assist5.isOnline())
+ {
+
+ if (assist5.getSummon() != null)
+ {
+ Summon summon = assist5.getSummon();
+ if (summon != null)
+ summon.unSummon(summon.getOwner());
+ if (summon instanceof Pet)
+ summon.unSummon(assist5);
+ }
+
+ if (assist5.getMountType() == 1 || assist5.getMountType() == 2)
+ assist5.dismount();
+ }
+
+ if (assist6 != null && assist6.isOnline())
+ {
+
+ if (assist6.getSummon() != null)
+ {
+ Summon summon = assist6.getSummon();
+ if (summon != null)
+ summon.unSummon(summon.getOwner());
+ if (summon instanceof Pet)
+ summon.unSummon(assist6);
+ }
+ if (assist6.getMountType() == 1 || assist6.getMountType() == 2)
+ assist6.dismount();
+ }
+
+ if (assist7 != null && assist7.isOnline())
+ {
+
+ if (assist7.getSummon() != null)
+ {
+ Summon summon = assist7.getSummon();
+ if (summon != null)
+ summon.unSummon(summon.getOwner());
+ if (summon instanceof Pet)
+ summon.unSummon(assist7);
+ }
+
+ if (assist7.getMountType() == 1 || assist7.getMountType() == 2)
+ assist7.dismount();
+ }
+
+ if (assist8 != null && assist8.isOnline())
+ {
+
+ if (assist8.getSummon() != null)
+ {
+ Summon summon = assist8.getSummon();
+ if (summon != null)
+ summon.unSummon(summon.getOwner());
+ if (summon instanceof Pet)
+ summon.unSummon(assist8);
+ }
+
+ if (assist8.getMountType() == 1 || assist8.getMountType() == 2)
+ assist8.dismount();
+ }
+ }
+
+ public void removeSkills()
+ {
+ if (leader.getClassId() != ClassId.SHILLIEN_ELDER && leader.getClassId() != ClassId.SHILLIEN_SAINT && leader.getClassId() != ClassId.BISHOP && leader.getClassId() != ClassId.CARDINAL && leader.getClassId() != ClassId.ELVEN_ELDER && leader.getClassId() != ClassId.EVAS_SAINT)
+ for (L2Effect effect : leader.getAllEffects())
+ if (Config.ARENA_STOP_SKILL_LIST.contains(Integer.valueOf(effect.getSkill().getId())))
+ leader.stopSkillEffects(effect.getSkill().getId());
+ if (assist.getClassId() != ClassId.SHILLIEN_ELDER && assist.getClassId() != ClassId.SHILLIEN_SAINT && assist.getClassId() != ClassId.BISHOP && assist.getClassId() != ClassId.CARDINAL && assist.getClassId() != ClassId.ELVEN_ELDER && assist.getClassId() != ClassId.EVAS_SAINT)
+ for (L2Effect effect : assist.getAllEffects())
+ if (Config.ARENA_STOP_SKILL_LIST.contains(Integer.valueOf(effect.getSkill().getId())))
+ assist.stopSkillEffects(effect.getSkill().getId());
+ if (assist2.getClassId() != ClassId.SHILLIEN_ELDER && assist2.getClassId() != ClassId.SHILLIEN_SAINT && assist2.getClassId() != ClassId.BISHOP && assist2.getClassId() != ClassId.CARDINAL && assist2.getClassId() != ClassId.ELVEN_ELDER && assist2.getClassId() != ClassId.EVAS_SAINT)
+ for (L2Effect effect : assist2.getAllEffects())
+ if (Config.ARENA_STOP_SKILL_LIST.contains(Integer.valueOf(effect.getSkill().getId())))
+ assist2.stopSkillEffects(effect.getSkill().getId());
+ if (assist3.getClassId() != ClassId.SHILLIEN_ELDER && assist3.getClassId() != ClassId.SHILLIEN_SAINT && assist3.getClassId() != ClassId.BISHOP && assist3.getClassId() != ClassId.CARDINAL && assist3.getClassId() != ClassId.ELVEN_ELDER && assist3.getClassId() != ClassId.EVAS_SAINT)
+ for (L2Effect effect : assist3.getAllEffects())
+ if (Config.ARENA_STOP_SKILL_LIST.contains(Integer.valueOf(effect.getSkill().getId())))
+ assist3.stopSkillEffects(effect.getSkill().getId());
+ if (assist4.getClassId() != ClassId.SHILLIEN_ELDER && assist4.getClassId() != ClassId.SHILLIEN_SAINT && assist4.getClassId() != ClassId.BISHOP && assist4.getClassId() != ClassId.CARDINAL && assist4.getClassId() != ClassId.ELVEN_ELDER && assist4.getClassId() != ClassId.EVAS_SAINT)
+ for (L2Effect effect : assist4.getAllEffects())
+ if (Config.ARENA_STOP_SKILL_LIST.contains(Integer.valueOf(effect.getSkill().getId())))
+ assist4.stopSkillEffects(effect.getSkill().getId());
+ if (assist5.getClassId() != ClassId.SHILLIEN_ELDER && assist5.getClassId() != ClassId.SHILLIEN_SAINT && assist5.getClassId() != ClassId.BISHOP && assist5.getClassId() != ClassId.CARDINAL && assist5.getClassId() != ClassId.ELVEN_ELDER && assist5.getClassId() != ClassId.EVAS_SAINT)
+ for (L2Effect effect : assist5.getAllEffects())
+ if (Config.ARENA_STOP_SKILL_LIST.contains(Integer.valueOf(effect.getSkill().getId())))
+ assist5.stopSkillEffects(effect.getSkill().getId());
+ if (assist6.getClassId() != ClassId.SHILLIEN_ELDER && assist6.getClassId() != ClassId.SHILLIEN_SAINT && assist6.getClassId() != ClassId.BISHOP && assist6.getClassId() != ClassId.CARDINAL && assist6.getClassId() != ClassId.ELVEN_ELDER && assist6.getClassId() != ClassId.EVAS_SAINT)
+ for (L2Effect effect : assist6.getAllEffects())
+ if (Config.ARENA_STOP_SKILL_LIST.contains(Integer.valueOf(effect.getSkill().getId())))
+ assist6.stopSkillEffects(effect.getSkill().getId());
+ if (assist7.getClassId() != ClassId.SHILLIEN_ELDER && assist7.getClassId() != ClassId.SHILLIEN_SAINT && assist7.getClassId() != ClassId.BISHOP && assist7.getClassId() != ClassId.CARDINAL && assist7.getClassId() != ClassId.ELVEN_ELDER && assist7.getClassId() != ClassId.EVAS_SAINT)
+ for (L2Effect effect : assist7.getAllEffects())
+ if (Config.ARENA_STOP_SKILL_LIST.contains(Integer.valueOf(effect.getSkill().getId())))
+ assist7.stopSkillEffects(effect.getSkill().getId());
+ if (assist8.getClassId() != ClassId.SHILLIEN_ELDER && assist8.getClassId() != ClassId.SHILLIEN_SAINT && assist8.getClassId() != ClassId.BISHOP && assist8.getClassId() != ClassId.CARDINAL && assist8.getClassId() != ClassId.ELVEN_ELDER && assist8.getClassId() != ClassId.EVAS_SAINT)
+ for (L2Effect effect : assist8.getAllEffects())
+ if (Config.ARENA_STOP_SKILL_LIST.contains(Integer.valueOf(effect.getSkill().getId())))
+ assist8.stopSkillEffects(effect.getSkill().getId());
+ }
+
+ public void sendPacket(String message, int duration)
+ {
+ if (leader != null && leader.isOnline())
+ leader.sendPacket(new ExShowScreenMessage(message, duration * 1000));
+ if (assist != null && assist.isOnline())
+ assist.sendPacket(new ExShowScreenMessage(message, duration * 1000));
+ if (assist2 != null && assist2.isOnline())
+ assist2.sendPacket(new ExShowScreenMessage(message, duration * 1000));
+ if (assist3 != null && assist3.isOnline())
+ assist3.sendPacket(new ExShowScreenMessage(message, duration * 1000));
+ if (assist4 != null && assist4.isOnline())
+ assist4.sendPacket(new ExShowScreenMessage(message, duration * 1000));
+ if (assist5 != null && assist5.isOnline())
+ assist5.sendPacket(new ExShowScreenMessage(message, duration * 1000));
+ if (assist6 != null && assist6.isOnline())
+ assist6.sendPacket(new ExShowScreenMessage(message, duration * 1000));
+ if (assist7 != null && assist7.isOnline())
+ assist7.sendPacket(new ExShowScreenMessage(message, duration * 1000));
+ if (assist8 != null && assist8.isOnline())
+ assist8.sendPacket(new ExShowScreenMessage(message, duration * 1000));
+ }
+
+ public void inicarContagem(int duration)
+ {
+ if (leader != null && leader.isOnline())
+ ThreadPool.schedule(new Arena9x9.countdown(leader, duration), 0L);
+ if (assist != null && assist.isOnline())
+ ThreadPool.schedule(new Arena9x9.countdown(assist, duration), 0L);
+ if (assist2 != null && assist2.isOnline())
+ ThreadPool.schedule(new Arena9x9.countdown(assist2, duration), 0L);
+ if (assist3 != null && assist3.isOnline())
+ ThreadPool.schedule(new Arena9x9.countdown(assist3, duration), 0L);
+ if (assist4 != null && assist4.isOnline())
+ ThreadPool.schedule(new Arena9x9.countdown(assist4, duration), 0L);
+ if (assist5 != null && assist5.isOnline())
+ ThreadPool.schedule(new Arena9x9.countdown(assist5, duration), 0L);
+ if (assist6 != null && assist6.isOnline())
+ ThreadPool.schedule(new Arena9x9.countdown(assist6, duration), 0L);
+ if (assist7 != null && assist7.isOnline())
+ ThreadPool.schedule(new Arena9x9.countdown(assist7, duration), 0L);
+ if (assist8 != null && assist8.isOnline())
+ ThreadPool.schedule(new Arena9x9.countdown(assist8, duration), 0L);
+ }
+
+ public void sendPacketinit(String message, int duration)
+ {
+ if (leader != null && leader.isOnline())
+ leader.sendPacket(new ExShowScreenMessage(message, duration * 1000, ExShowScreenMessage.SMPOS.MIDDLE_LEFT, false));
+ if (assist != null && assist.isOnline())
+ assist.sendPacket(new ExShowScreenMessage(message, duration * 1000, ExShowScreenMessage.SMPOS.MIDDLE_LEFT, false));
+ if (assist2 != null && assist2.isOnline())
+ assist2.sendPacket(new ExShowScreenMessage(message, duration * 1000, ExShowScreenMessage.SMPOS.MIDDLE_LEFT, false));
+ if (assist3 != null && assist3.isOnline())
+ assist3.sendPacket(new ExShowScreenMessage(message, duration * 1000, ExShowScreenMessage.SMPOS.MIDDLE_LEFT, false));
+ if (assist4 != null && assist4.isOnline())
+ assist4.sendPacket(new ExShowScreenMessage(message, duration * 1000, ExShowScreenMessage.SMPOS.MIDDLE_LEFT, false));
+ if (assist5 != null && assist5.isOnline())
+ assist5.sendPacket(new ExShowScreenMessage(message, duration * 1000, ExShowScreenMessage.SMPOS.MIDDLE_LEFT, false));
+ if (assist6 != null && assist6.isOnline())
+ assist6.sendPacket(new ExShowScreenMessage(message, duration * 1000, ExShowScreenMessage.SMPOS.MIDDLE_LEFT, false));
+ if (assist7 != null && assist7.isOnline())
+ assist7.sendPacket(new ExShowScreenMessage(message, duration * 1000, ExShowScreenMessage.SMPOS.MIDDLE_LEFT, false));
+ if (assist8 != null && assist8.isOnline())
+ assist8.sendPacket(new ExShowScreenMessage(message, duration * 1000, ExShowScreenMessage.SMPOS.MIDDLE_LEFT, false));
+ }
+ }
+
+ private class EvtArenaTask implements Runnable
+ {
+ private final Arena9x9.Pair pairOne;
+ private final Arena9x9.Pair pairTwo;
+ private final int pOneX;
+ private final int pOneY;
+ private final int pOneZ;
+ private final int pTwoX;
+ private final int pTwoY;
+ private final int pTwoZ;
+ private Arena9x9.Arena arena;
+
+ public EvtArenaTask(List<Pair> opponents)
+ {
+ pairOne = opponents.get(0);
+ pairTwo = opponents.get(1);
+ Player leader = pairOne.getLeader();
+ pOneX = leader.getX();
+ pOneY = leader.getY();
+ pOneZ = leader.getZ();
+ leader = pairTwo.getLeader();
+ pTwoX = leader.getX();
+ pTwoY = leader.getY();
+ pTwoZ = leader.getZ();
+ }
+
+ @Override
+ public void run()
+ {
+ free -= 1;
+ pairOne.saveTitle();
+ pairTwo.saveTitle();
+ portPairsToArena();
+ pairOne.inicarContagem(Config.ARENA_WAIT_INTERVAL_9X9);
+ pairTwo.inicarContagem(Config.ARENA_WAIT_INTERVAL_9X9);
+ try
+ {
+ Thread.sleep(Config.ARENA_WAIT_INTERVAL_9X9 * 1000);
+ }
+ catch (InterruptedException localInterruptedException1)
+ {
+ }
+
+ pairOne.sendPacketinit("Started. Good Fight!", 3);
+ pairTwo.sendPacketinit("Started. Good Fight!", 3);
+ pairOne.EventTitle(Config.MSG_TEAM1, Config.TITLE_COLOR_TEAM1);
+ pairTwo.EventTitle(Config.MSG_TEAM2, Config.TITLE_COLOR_TEAM2);
+ pairOne.setImobilised(false);
+ pairTwo.setImobilised(false);
+ pairOne.setArenaAttack(true);
+ pairTwo.setArenaAttack(true);
+ while (check())
+ try
+ {
+
+ Thread.sleep(Config.ARENA_CHECK_INTERVAL);
+ }
+ catch (InterruptedException e)
+ {
+ }
+
+ this.finishDuel();
+ final Arena9x9 this$2 = Arena9x9.this;
+ ++this$2.free;
+ }
+
+ private void finishDuel()
+ {
+ fights.remove(Integer.valueOf(arena.id));
+ rewardWinner();
+ pairOne.revive();
+ pairTwo.revive();
+ pairOne.teleportTo(pOneX, pOneY, pOneZ);
+ pairTwo.teleportTo(pTwoX, pTwoY, pTwoZ);
+ pairOne.backTitle();
+ pairTwo.backTitle();
+ pairOne.setInTournamentEvent(false);
+ pairTwo.setInTournamentEvent(false);
+ pairOne.setArenaProtection(false);
+ pairTwo.setArenaProtection(false);
+ pairOne.setArenaAttack(false);
+ pairTwo.setArenaAttack(false);
+ arena.setFree(true);
+ }
+
+ private void rewardWinner()
+ {
+ if (pairOne.isAlive() && !pairTwo.isAlive())
+ {
+ Player leader1 = pairOne.getLeader();
+ Player leader2 = pairTwo.getLeader();
+
+ if (leader1.getClan() != null && leader2.getClan() != null && Config.TOURNAMENT_EVENT_ANNOUNCE)
+
+ World.announceToOnlinePlayers("[9x9]: (" + leader1.getClan().getName() + " VS " + leader2.getClan().getName() + ") ~> " + leader1.getClan().getName() + " win!");
+
+
+ pairOne.rewards();
+ pairTwo.rewardsLost();
+ }
+ else if (pairTwo.isAlive() && !pairOne.isAlive())
+ {
+ Player leader1 = pairTwo.getLeader();
+ Player leader2 = pairOne.getLeader();
+
+ if (leader1.getClan() != null && leader2.getClan() != null && Config.TOURNAMENT_EVENT_ANNOUNCE)
+
+
+ World.announceToOnlinePlayers("[9x9]: (" + leader1.getClan().getName() + " VS " + leader2.getClan().getName() + ") ~> " + leader1.getClan().getName() + " win!");
+
+ pairTwo.rewards();
+ pairOne.rewardsLost();
+ }
+ }
+
+ private boolean check()
+ {
+ return pairOne.isDead() && pairTwo.isDead();
+ }
+
+ private void portPairsToArena()
+ {
+ for (Arena9x9.Arena arena : arenas)
+ if (arena.isFree)
+ {
+ this.arena = arena;
+ arena.setFree(false);
+ pairOne.removePet();
+ pairTwo.removePet();
+ pairOne.teleportTo(arena.x - 850, arena.y, arena.z);
+ pairTwo.teleportTo(arena.x + 850, arena.y, arena.z);
+ pairOne.setImobilised(true);
+ pairTwo.setImobilised(true);
+ pairOne.setInTournamentEvent(true);
+ pairTwo.setInTournamentEvent(true);
+ pairOne.removeSkills();
+ pairTwo.removeSkills();
+ fights.put(Integer.valueOf(this.arena.id), pairOne.getLeader().getName() + " vs " + pairTwo.getLeader().getName());
+ break;
+ }
+ }
+ }
+
+ private class Arena
+ {
+ protected int x;
+ protected int y;
+ protected int z;
+ protected boolean isFree = true;
+ int id;
+
+ public Arena(int id, int x, int y, int z)
+ {
+ this.id = id;
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ }
+
+ public void setFree(boolean val)
+ {
+ isFree = val;
+ }
+ }
+
+ protected class countdown implements Runnable
+ {
+ private final Player _player;
+ private final int _time;
+
+ public countdown(Player player, int time)
+ {
+ _time = time;
+ _player = player;
+ }
+
+ @Override
+ public void run()
+ {
+ if (_player.isOnline())
+ {
+
+ switch (_time)
+ {
+ case 60:
+ case 120:
+ case 180:
+ case 240:
+ case 300:
+ if (_player.isOnline())
+ {
+ _player.sendPacket(new ExShowScreenMessage("The battle starts in " + _time + " second(s)..", 4000));
+ _player.sendMessage(_time + " second(s) to start the battle.");
+ _player.setIsParalyzed(true);
+ }
+ break;
+ case 45:
+ if (_player.isOnline())
+ {
+ _player.sendPacket(new ExShowScreenMessage("" + _time + " ..", 3000));
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ _player.broadcastPacket(new SocialAction(_player, 1));
+ }
+ break;
+ case 27:
+ if (_player.isOnline())
+ {
+ _player.sendPacket(new ExShowScreenMessage("The battle starts in 30 second(s)..", 4000));
+ _player.sendMessage("30 second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ _player.broadcastPacket(new SocialAction(_player, 2));
+ }
+ break;
+ case 20:
+ if (_player.isOnline())
+ {
+ _player.sendPacket(new ExShowScreenMessage("" + _time + " ..", 3000));
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+
+ }
+ break;
+ case 15:
+ if (_player.isOnline())
+ {
+ _player.sendPacket(new ExShowScreenMessage("" + _time + " ..", 3000));
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ _player.broadcastPacket(new SocialAction(_player, 9));
+ }
+ break;
+ case 10:
+ if (_player.isOnline())
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ _player.broadcastPacket(new SocialAction(_player, 5));
+ break;
+ case 5:
+ if (_player.isOnline())
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ break;
+ case 4:
+ if (_player.isOnline())
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ break;
+ case 3:
+ if (_player.isOnline())
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ break;
+ case 2:
+ if (_player.isOnline())
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(true);
+ break;
+ case 1:
+ if (_player.isOnline())
+ _player.sendMessage(_time + " second(s) to start the battle!");
+ _player.setIsParalyzed(false);
+ break;
+ }
+ if (_time > 1)
+ ThreadPool.schedule(new countdown(_player, _time - 1), 1000L);
+ }
+ }
+ }
+
+ private static class SingletonHolder
+ {
+ protected static final Arena9x9 INSTANCE = new Arena9x9();
+ }
+ }
+
Index: package mods.events;ArenaEvent.java
===================================================================
--- package mods.events;ArenaEvent.java (revision 84)
+++ package mods.events;ArenaEvent.java (working copy)
+ package mods.events;
+
+ import java.text.SimpleDateFormat;
+ import java.util.Calendar;
+ import java.util.logging.Logger;
+
+ import org.l2j.commons.concurrent.ThreadPool;
+
+ import org.l2j.Config;
+
+ public class ArenaEvent
+ {
+ private static ArenaEvent _instance = null;
+ protected static final Logger _log = Logger.getLogger(ArenaEvent.class.getName());
+ private Calendar NextEvent;
+ private final SimpleDateFormat format = new SimpleDateFormat("HH:mm");
+
+ public static ArenaEvent getInstance()
+ {
+ if (_instance == null)
+ _instance = new ArenaEvent();
+ return _instance;
+ }
+
+ public String getNextTime()
+ {
+ if (NextEvent.getTime() != null)
+ return format.format(NextEvent.getTime());
+ return "Erro";
+ }
+
+ public void StartCalculationOfNextEventTime()
+ {
+ try
+ {
+ Calendar currentTime = Calendar.getInstance();
+ Calendar testStartTime = null;
+ long flush2 = 0L;
+ long timeL = 0L;
+ int count = 0;
+ for (String timeOfDay : Config.TOURNAMENT_EVENT_INTERVAL_BY_TIME_OF_DAY)
+ {
+ testStartTime = Calendar.getInstance();
+ testStartTime.setLenient(true);
+ String[] splitTimeOfDay = timeOfDay.split(":");
+ testStartTime.set(11, Integer.parseInt(splitTimeOfDay[0]));
+ testStartTime.set(12, Integer.parseInt(splitTimeOfDay[1]));
+ testStartTime.set(13, 0);
+ if (testStartTime.getTimeInMillis() < currentTime.getTimeInMillis())
+ testStartTime.add(5, 1);
+ timeL = testStartTime.getTimeInMillis() - currentTime.getTimeInMillis();
+ if (count == 0)
+ {
+ flush2 = timeL;
+ NextEvent = testStartTime;
+ }
+ if (timeL < flush2)
+ {
+ flush2 = timeL;
+ NextEvent = testStartTime;
+ }
+ count++;
+ }
+ _log.info("[Tournament]: Proximo Evento: " + NextEvent.getTime().toString());
+ ThreadPool.schedule(new StartEventTask(), flush2);
+ }
+ catch (Exception e)
+ {
+ System.out.println("[Tournament]: " + e);
+ }
+ }
+
+ class StartEventTask implements Runnable
+ {
+ StartEventTask()
+ {
+ }
+
+ @Override
+ public void run()
+ {
+ ArenaEvent._log.info("----------------------------------------------------------------------------");
+ ArenaEvent._log.info("[Tournament]: Event Started.");
+ ArenaEvent._log.info("----------------------------------------------------------------------------");
+ ArenaTask.SpawnEvent();
+ }
+ }
+ }
+
Index: package mods.events;ArenaTask.java
===================================================================
--- package mods.events;ArenaTask.java (revision 84)
+++ package mods.events;ArenaTask.java (working copy)
+ package mods.events;
+
+ import org.l2j.commons.concurrent.ThreadPool;
+
+ import org.l2j.Config;
+ import org.l2j.gameserver.data.ItemTable;
+ import mods.events.Arena2x2;
+ import org.l2j.gameserver.model.World;
+ import org.l2j.gameserver.model.actor.Player;
+ import org.l2j.gameserver.model.actor.template.NpcTemplate;
+ import org.l2j.gameserver.network.serverpackets.CreatureSay;
+ import org.l2j.gameserver.network.serverpackets.MagicSkillUse;
+
+ import org.l2j.gameserver.handler.admincommandhandlers.AdminCustom;
+ import org.l2j.gameserver.model.spawn.L2Spawn;
+ import org.l2j.gameserver.data.sql.SpawnTable;
+ import org.l2j.gameserver.data.xml.NpcData;
+
+ public abstract class ArenaTask
+ {
+ public static L2Spawn _npcSpawn1;
+ public static L2Spawn _npcSpawn2;
+ public static int _bossHeading = 0;
+ public static boolean _started = false;
+ public static boolean _aborted = false;
+
+ public static void SpawnEvent()
+ {
+ spawnNpc1();
+
+
+ World.announceToOnlinePlayers("Reward: " + ItemTable.getInstance().getTemplate(Config.ARENA_REWARD_ID).getName());
+
+ World.announceToOnlinePlayers("[Tournament]: Party Event PvP");
+ World.announceToOnlinePlayers("[Tournament]: Teleport in the GK to (Tournament) Zone");
+ World.announceToOnlinePlayers("[Tournament]: Duration: " + Config.TOURNAMENT_TIME + " minute(s)!");
+
+
+ _aborted = false;
+ _started = true;
+
+ waiter(Config.TOURNAMENT_TIME * 60 * 1000);
+ if (!_aborted)
+ finishEvent();
+ }
+
+ public static void finishEvent()
+ {
+
+
+ World.announceToOnlinePlayers("[Tournament]: Event Finished!");
+
+ unspawnNpc1();
+ _started = false;
+ if (!AdminCustom._arena_manual)
+ ArenaEvent.getInstance().StartCalculationOfNextEventTime();
+ else
+ AdminCustom._arena_manual = false;
+ for (Player player : World.getInstance().getPlayers())
+ if (player != null && player.isOnline())
+ {
+ if (player.isArenaProtection())
+ ThreadPool.schedule(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ if (player.isOnline() && !player.isInArenaEvent() && !player.isArenaAttack())
+ {
+ Arena4x4.getInstance().remove(player);
+ Arena9x9.getInstance().remove(player);
+ Arena2x2.getInstance().remove(player);
+ player.setArenaProtection(false);
+
+
+ }
+ }
+ }, 25000L);
+ CreatureSay cs = new CreatureSay(player.getObjectId(), 3, "[Tournament]", "Next Tournament: " + ArenaEvent.getInstance().getNextTime() + " (GMT-3).");
+ player.sendPacket(cs);
+ }
+ }
+
+ public static void spawnNpc1()
+ {
+
+ NpcTemplate template = NpcData.getInstance().getTemplate(Config.ARENA_NPC);
+ try
+ {
+ _npcSpawn1 = new L2Spawn(template);
+ _npcSpawn1.setLoc(loc1x(), loc1y(), loc1z(), Config.NPC_Heading);
+ _npcSpawn1.setRespawnDelay(1);
+
+ SpawnTable.getInstance().addSpawn(_npcSpawn1, false);
+
+ _npcSpawn1.setRespawnState(true);
+ _npcSpawn1.doSpawn(false);
+ _npcSpawn1.getNpc().getStatus().setCurrentHp(9.99999999E8);
+ _npcSpawn1.getNpc().isAggressive();
+ _npcSpawn1.getNpc().decayMe();
+ _npcSpawn1.getNpc().spawnMe(_npcSpawn1.getNpc().getX(), _npcSpawn1.getNpc().getY(), _npcSpawn1.getNpc().getZ());
+ _npcSpawn1.getNpc().broadcastPacket(new MagicSkillUse(_npcSpawn1.getNpc(), _npcSpawn1.getNpc(), 1034, 1, 1, 1));
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ public static void spawnNpc2() {
+ final NpcTemplate tmpl = NpcData.getInstance().getTemplate(Config.ARENA_NPC);
+ try {
+ (ArenaTask._npcSpawn2 = new L2Spawn(tmpl)).setLoc(loc2x(), loc2y(), loc2z(), Config.NPC_Heading);
+ ArenaTask._npcSpawn2.setRespawnDelay(1);
+ SpawnTable.getInstance().addSpawn(ArenaTask._npcSpawn2, false);
+ ArenaTask._npcSpawn2.setRespawnState(true);
+ ArenaTask._npcSpawn2.doSpawn(false);
+ ArenaTask._npcSpawn2.getNpc().getStatus().setCurrentHp(9.99999999E8);
+ ArenaTask._npcSpawn2.getNpc().isAggressive();
+ ArenaTask._npcSpawn2.getNpc().decayMe();
+ ArenaTask._npcSpawn2.getNpc().spawnMe(ArenaTask._npcSpawn2.getNpc().getX(), ArenaTask._npcSpawn2.getNpc().getY(), ArenaTask._npcSpawn2.getNpc().getZ());
+ ArenaTask._npcSpawn2.getNpc().broadcastPacket(new MagicSkillUse(ArenaTask._npcSpawn2.getNpc(), ArenaTask._npcSpawn2.getNpc(), 1034, 1, 1, 1));
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static boolean is_started()
+ {
+ return _started;
+ }
+
+ public static void unspawnNpc1()
+ {
+ if (_npcSpawn1 == null)
+ return;
+ _npcSpawn1.getNpc().deleteMe();
+ _npcSpawn1.setRespawnState(false);
+ SpawnTable.getInstance().deleteSpawn(_npcSpawn1, true);
+ }
+
+ public static void unspawnNpc2()
+ {
+ if (_npcSpawn2 == null)
+ return;
+ _npcSpawn2.getNpc().deleteMe();
+ _npcSpawn2.setRespawnState(false);
+ SpawnTable.getInstance().deleteSpawn(_npcSpawn2, true);
+ }
+
+ public static int loc1x()
+ {
+ int loc1x = Config.NPC_locx;
+ return loc1x;
+ }
+
+ public static int loc1y()
+ {
+ int loc1y = Config.NPC_locy;
+ return loc1y;
+ }
+
+ public static int loc1z()
+ {
+ int loc1z = Config.NPC_locz;
+ return loc1z;
+ }
+
+ public static int loc2x() {
+ final int loc2x = Config.NPC_locx;
+ return loc2x;
+ }
+
+ public static int loc2y() {
+ final int loc2y = Config.NPC_locy;
+ return loc2y;
+ }
+
+ public static int loc2z() {
+ final int loc2z = Config.NPC_locz;
+ return loc2z;
+ }
+
+ protected static void waiter(long interval)
+ {
+ long startWaiterTime = System.currentTimeMillis();
+ int seconds = (int) (interval / 1000L);
+ while (startWaiterTime + interval > System.currentTimeMillis() && !_aborted)
+ {
+ seconds--;
+ switch (seconds)
+ {
+ case 3600:
+ if (_started)
+ {
+
+ World.announceToOnlinePlayers("[Tournament]: Party Event PvP");
+ World.announceToOnlinePlayers("[Tournament]: Teleport in the GK to (Tournament) Zone");
+ World.announceToOnlinePlayers("[Tournament]: Reward: " + ItemTable.getInstance().getTemplate(Config.ARENA_REWARD_ID).getName());
+ World.announceToOnlinePlayers("[Tournament]: " + seconds / 60 / 60 + " hour(s) till event finish!");
+ }
+ break;
+ case 60:
+ case 120:
+ case 180:
+ case 240:
+ case 300:
+ case 600:
+ case 900:
+ case 1800:
+ if (_started)
+ World.announceToOnlinePlayers("[Tournament]: " + seconds / 60 + " minute(s) till event finish!");
+ break;
+ case 1:
+ case 2:
+ case 3:
+ case 10:
+ case 15:
+ case 30:
+ if (_started)
+ World.announceToOnlinePlayers("[Tournament]: " + seconds + " second(s) till event finish!");
+ break;
+ }
+ long startOneSecondWaiterStartTime = System.currentTimeMillis();
+ while (startOneSecondWaiterStartTime + 1000L > System.currentTimeMillis())
+ try
+ {
+ Thread.sleep(1L);
+ }
+ catch (InterruptedException ex) {}
+ }
+ }
+ static {
+ ArenaTask._bossHeading = 0;
+ ArenaTask._started = false;
+ ArenaTask._aborted = false;
+ }
+ }
+
Index: package model/actor/plyer.java
===================================================================
--- package model/actor/plyer.java (revision 84)
+++ package model/actor/plyer.java (working copy)
+ public int _originalTitleColorTournament = 0;
+ public String _originalTitleTournament;
+
+ public int duelist_cont = 0;
+ public int dreadnought_cont = 0;
+ public int tanker_cont = 0;
+ public int dagger_cont = 0;
+ public int archer_cont = 0;
+ public int bs_cont = 0;
+ public int archmage_cont = 0;
+ public int soultaker_cont = 0;
+ public int mysticMuse_cont = 0;
+ public int stormScreamer_cont = 0;
+ public int titan_cont = 0;
+ public int grandKhauatari_cont = 0;
+ public int dominator_cont = 0;
+ public int doomcryer_cont = 0;
+
+
+ private boolean _TournamentTeleport;
+
+ public void setTournamentTeleport(boolean comm)
+ {
+ _TournamentTeleport = comm;
+ }
+
+ public boolean isTournamentTeleport()
+ {
+ return _TournamentTeleport;
+ }
Index: org.l2j.gameserver.model.zone.type;TournamentZone.java
===================================================================
--- org.l2j.gameserver.model.zone.type;TournamentZone.java (revision 84)
+++ org.l2j.gameserver.model.zone.type;TournamentZone.java (working copy)
+ package org.l2j.gameserver.model.zone.type;
+
+ import org.l2j.gameserver.model.actor.Creature;
+ import org.l2j.gameserver.model.actor.Player;
+ import org.l2j.gameserver.enums.actors.ClassId;
+ import org.l2j.gameserver.model.zone.SpawnZoneType;
+
+ import org.l2j.commons.concurrent.ThreadPool;
+
+ import org.l2j.gameserver.enums.ZoneId;
+ import org.l2j.gameserver.network.SystemMessageId;
+ import org.l2j.gameserver.network.serverpackets.ExShowScreenMessage;
+ import org.l2j.gameserver.taskmanager.PvpFlagTaskManager;
+
+ public class TournamentZone extends SpawnZoneType
+ {
+ public TournamentZone(int id)
+ {
+ super(id);
+ }
+
+ @Override
+ protected void onEnter(Creature character)
+ {
+ if (character instanceof Player)
+ {
+
+ Player player = (Player) character;
+ if (player.isArenaProtection())
+ {
+ if (player.getPvpFlag() > 0)
+ PvpFlagTaskManager.getInstance().remove(player);
+ player.updatePvPFlag(1);
+ player.broadcastUserInfo();
+ }
+
+ {
+ if (character instanceof Player)
+ ((Player) character).sendPacket(SystemMessageId.ENTERED_COMBAT_ZONE);
+ }
+
+ if (player.getClassId() == ClassId.BISHOP || player.getClassId() == ClassId.CARDINAL || player.getClassId() == ClassId.SHILLIEN_ELDER || player.getClassId() == ClassId.SHILLIEN_SAINT || player.getClassId() == ClassId.EVAS_SAINT || player.getClassId() == ClassId.ELVEN_ELDER || player.getClassId() == ClassId.PROPHET || player.getClassId() == ClassId.HIEROPHANT)
+ {
+ player.sendPacket(new ExShowScreenMessage("Class prohibited at event Tournament", 6000, 2, true));
+ ThreadPool.schedule(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ if (player.isOnline() && !player.isInsideZone(ZoneId.PEACE))
+ player.teleportTo(83485, 148624, -3402, 50);
+ player.isDead();
+ player.broadcastUserInfo();
+ }
+ }, 4000L);
+ }
+
+ {
+ character.setInsideZone(ZoneId.TORURNAMENT_ARENA, true);
+ character.setInsideZone(ZoneId.PVP, true);
+ }
+
+ {
+ if (character instanceof Player)
+ character.setInsideZone(ZoneId.NO_RESTART, true);
+ }
+
+ {
+ if (character instanceof Player)
+ character.setInsideZone(ZoneId.NO_STORE, true);
+ }
+ }
+
+ }
+
+ @Override
+ protected void onExit(Creature character)
+ {
+ character.setInsideZone(ZoneId.TORURNAMENT_ARENA, false);
+ character.setInsideZone(ZoneId.PVP, false);
+
+ if (character instanceof Player)
+ character.setInsideZone(ZoneId.NO_RESTART, false);
+
+ if (character instanceof Player)
+ character.setInsideZone(ZoneId.NO_STORE, false);
+
+ if (character instanceof Player)
+ {
+ Player player = (Player) character;
+ player.updatePvPFlag(0);
+ player.broadcastUserInfo();
+ }
+ if (character instanceof Player)
+ ((Player) character).sendPacket(SystemMessageId.LEFT_COMBAT_ZONE);
+ }
+
+ }
+
Index: org.l2j.gameserver.enums;ZoneId.java
===================================================================
--- org.l2j.gameserver.enums;ZoneId.java (revision 84)
+++ org.l2j.gameserver.enums;ZoneId.java (working copy)
- BOSS(19),
+ BOSS(19),
+ TORURNAMENT_ARENA(20),
Index: org.l2j.gameserver.model.actor.instance;Tournament.java
===================================================================
--- org.l2j.gameserver.model.actor.instance;Tournament.java (revision 84)
+++ org.l2j.gameserver.model.actor.instance;Tournament.java (working copy)
+ package org.l2j.gameserver.model.actor.instance;
+
+ import java.util.StringTokenizer;
+
+ import org.l2j.Config;
+
+ import mods.events.Arena2x2;
+ import mods.events.Arena4x4;
+ import mods.events.Arena9x9;
+
+ import org.l2j.gameserver.model.actor.template.NpcTemplate;
+ import org.l2j.gameserver.model.group.Party;
+ import org.l2j.gameserver.data.xml.PlayerData;
+ import org.l2j.gameserver.enums.actors.ClassId;
+ import org.l2j.gameserver.model.olympiad.OlympiadManager;
+ import org.l2j.gameserver.network.SystemMessageId;
+ import org.l2j.gameserver.network.serverpackets.ActionFailed;
+ import org.l2j.gameserver.network.serverpackets.ExShowScreenMessage;
+ import org.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
+ import org.l2j.gameserver.model.actor.Player;
+
+ public class Tournament extends Folk
+ {
+
+ public Tournament(int objectId, NpcTemplate template)
+ {
+ super(objectId, template);
+ }
+
+ @Override
+ public void showChatWindow(Player player)
+ {
+ player.sendPacket(ActionFailed.STATIC_PACKET);
+ String filename = "data/html/mods/tournament/9996.htm";
+ NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+ html.setFile(filename);
+ html.replace("%objectId%", getObjectId());
+
+ if (Arena2x2.registered.size() == 0) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena2x2.registered.size() == 1) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_1_over\" fore=\"L2UI_CH3.calculate1_1\">");
+ }
+ else if (Arena2x2.registered.size() == 2) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_2_over\" fore=\"L2UI_CH3.calculate1_2\">");
+ }
+ else if (Arena2x2.registered.size() == 3) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_3_over\" fore=\"L2UI_CH3.calculate1_3\">");
+ }
+ else if (Arena2x2.registered.size() == 4) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_4_over\" fore=\"L2UI_CH3.calculate1_4\">");
+ }
+ else if (Arena2x2.registered.size() == 5) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_5_over\" fore=\"L2UI_CH3.calculate1_5\">");
+ }
+ else if (Arena2x2.registered.size() == 6) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_6_over\" fore=\"L2UI_CH3.calculate1_6\">");
+ }
+ else if (Arena2x2.registered.size() == 7) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_7_over\" fore=\"L2UI_CH3.calculate1_7\">");
+ }
+ else if (Arena2x2.registered.size() == 8) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_8_over\" fore=\"L2UI_CH3.calculate1_8\">");
+ }
+ else if (Arena2x2.registered.size() >= 9) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_9_over\" fore=\"L2UI_CH3.calculate1_9\">");
+ }
+
+ if (Arena2x2.registered.size() == 0)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena2x2.registered.size() == 1)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena2x2.registered.size() == 2)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena2x2.registered.size() == 3)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena2x2.registered.size() == 4)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena2x2.registered.size() == 5)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena2x2.registered.size() == 6)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena2x2.registered.size() == 7)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena2x2.registered.size() == 8)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena2x2.registered.size() >= 9)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+
+ if (Arena2x2.registered.size() == 0)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena2x2.registered.size() == 1)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena2x2.registered.size() == 2)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena2x2.registered.size() == 3)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena2x2.registered.size() == 4)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena2x2.registered.size() == 5)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena2x2.registered.size() == 6)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena2x2.registered.size() == 7)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena2x2.registered.size() == 8)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena2x2.registered.size() >= 9)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+
+
+ player.sendPacket(html);
+ }
+
+
+ public void showChatWindow1(Player player)
+ {
+ player.sendPacket(ActionFailed.STATIC_PACKET);
+ String filename = "data/html/mods/tournament/9996.htm";
+ NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+ html.setFile(filename);
+ html.replace("%objectId%", getObjectId());
+
+
+
+ if (Arena4x4.registered.size() == 0)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena4x4.registered.size() == 1)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_1_over\" fore=\"L2UI_CH3.calculate1_1\">");
+ else if (Arena4x4.registered.size() == 2)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_2_over\" fore=\"L2UI_CH3.calculate1_2\">");
+ else if (Arena4x4.registered.size() == 3)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_3_over\" fore=\"L2UI_CH3.calculate1_3\">");
+ else if (Arena4x4.registered.size() == 4)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_4_over\" fore=\"L2UI_CH3.calculate1_4\">");
+ else if (Arena4x4.registered.size() == 5)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_5_over\" fore=\"L2UI_CH3.calculate1_5\">");
+ else if (Arena4x4.registered.size() == 6)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_6_over\" fore=\"L2UI_CH3.calculate1_6\">");
+ else if (Arena4x4.registered.size() == 7)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_7_over\" fore=\"L2UI_CH3.calculate1_7\">");
+ else if (Arena4x4.registered.size() == 8)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_8_over\" fore=\"L2UI_CH3.calculate1_8\">");
+ else if (Arena4x4.registered.size() >= 9)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_9_over\" fore=\"L2UI_CH3.calculate1_9\">");
+
+ if (Arena4x4.registered.size() == 0) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena4x4.registered.size() == 1) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena4x4.registered.size() == 2) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena4x4.registered.size() == 3) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena4x4.registered.size() == 4) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena4x4.registered.size() == 5) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena4x4.registered.size() == 6) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena4x4.registered.size() == 7) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena4x4.registered.size() == 8) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena4x4.registered.size() >= 9) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+
+
+ if (Arena4x4.registered.size() == 0)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena4x4.registered.size() == 1)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena4x4.registered.size() == 2)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena4x4.registered.size() == 3)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena4x4.registered.size() == 4)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena4x4.registered.size() == 5)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena4x4.registered.size() == 6)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena4x4.registered.size() == 7)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena4x4.registered.size() == 8)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena4x4.registered.size() >= 9)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+
+
+ player.sendPacket(html);
+ }
+
+ public void showChatWindow2(Player player)
+ {
+ player.sendPacket(ActionFailed.STATIC_PACKET);
+ String filename = "data/html/mods/tournament/9996.htm";
+ NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+ html.setFile(filename);
+ html.replace("%objectId%", getObjectId());
+
+
+
+ if (Arena9x9.registered.size() == 0)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena9x9.registered.size() == 1)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_1_over\" fore=\"L2UI_CH3.calculate1_1\">");
+ else if (Arena9x9.registered.size() == 2)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_2_over\" fore=\"L2UI_CH3.calculate1_2\">");
+ else if (Arena9x9.registered.size() == 3)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_3_over\" fore=\"L2UI_CH3.calculate1_3\">");
+ else if (Arena9x9.registered.size() == 4)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_4_over\" fore=\"L2UI_CH3.calculate1_4\">");
+ else if (Arena9x9.registered.size() == 5)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_5_over\" fore=\"L2UI_CH3.calculate1_5\">");
+ else if (Arena9x9.registered.size() == 6)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_6_over\" fore=\"L2UI_CH3.calculate1_6\">");
+ else if (Arena9x9.registered.size() == 7)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_7_over\" fore=\"L2UI_CH3.calculate1_7\">");
+ else if (Arena9x9.registered.size() == 8)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_8_over\" fore=\"L2UI_CH3.calculate1_8\">");
+ else if (Arena9x9.registered.size() >= 9)
+ html.replace("%9x9%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_9_over\" fore=\"L2UI_CH3.calculate1_9\">");
+
+ if (Arena9x9.registered.size() == 0) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena9x9.registered.size() == 1) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena9x9.registered.size() == 2) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena9x9.registered.size() == 3) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena9x9.registered.size() == 4) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena9x9.registered.size() == 5) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena9x9.registered.size() == 6) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena9x9.registered.size() == 7) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena9x9.registered.size() == 8) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+ else if (Arena9x9.registered.size() >= 9) {
+ html.replace("%2x2%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ }
+
+ if (Arena9x9.registered.size() == 0)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena9x9.registered.size() == 1)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena9x9.registered.size() == 2)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena9x9.registered.size() == 3)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena9x9.registered.size() == 4)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena9x9.registered.size() == 5)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena9x9.registered.size() == 6)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena9x9.registered.size() == 7)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena9x9.registered.size() == 8)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+ else if (Arena9x9.registered.size() >= 9)
+ html.replace("%4x4%", "<button value=\"\" action=\"\" width=32 height=32 back=\"L2UI_CH3.calculate1_0_over\" fore=\"L2UI_CH3.calculate1_0\">");
+
+
+ player.sendPacket(html);
+ }
+
+
+
+ @Override
+ public void onBypassFeedback(Player player, String command)
+ {
+ Object className;
+ if (command.startsWith("2x2"))
+ {
+ if (!Config.ALLOW_2X2_REGISTER)
+ {
+ player.sendPacket(SystemMessageId.ACADEMY_LIST_HEADER);
+ return;
+ }
+
+ if (player.isArena2x2() || player.isArena4x4() || player.isArena9x9() ||player.isArenaProtection())
+ {
+ player.sendMessage("Tournament: You already registered!");
+ return;
+ }
+ if (!player.isInParty())
+ {
+ player.sendMessage("Tournament: You dont have a party.");
+ return;
+ }
+ if (!player.getParty().isLeader(player))
+ {
+ player.sendMessage("Tournament: You are not the party leader!");
+ return;
+ }
+ if (player.getParty().getMembersCount() < 2)
+ {
+ player.sendMessage("Tournament: Your party does not have 2 members.");
+ player.sendPacket(new ExShowScreenMessage("Your party does not have 2 members", 6000));
+ return;
+ }
+ if (player.getParty().getMembersCount() > 2)
+ {
+ player.sendMessage("Tournament: Your Party can not have more than 2 members.");
+ player.sendPacket(new ExShowScreenMessage("Your Party can not have more than 2 members", 6000));
+ return;
+ }
+
+ Player assist = player.getParty().getMembers().get(1);
+
+ className = PlayerData.getInstance().getClassNameById(player.getClassId().getId());
+ String assist_className = PlayerData.getInstance().getClassNameById(assist.getClassId().getId());
+
+
+
+ if ((player.getClassId() == ClassId.GLADIATOR || player.getClassId() == ClassId.DUELIST || player.getClassId() == ClassId.GRAND_KHAVATARI || player.getClassId() == ClassId.TYRANT) && (assist.getClassId() == ClassId.GLADIATOR || assist.getClassId() == ClassId.DUELIST || assist.getClassId() == ClassId.GRAND_KHAVATARI || assist.getClassId() == ClassId.TYRANT))
+ {
+ player.sendMessage("Tournament: Only 1 " + (String) className + " / " + assist_className + " allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only 1 " + (String) className + " / " + assist_className + " allowed per party.", 6000));
+ return;
+ }
+ if (assist.getClassId() == ClassId.SHILLIEN_ELDER || assist.getClassId() == ClassId.SHILLIEN_SAINT || assist.getClassId() == ClassId.BISHOP || assist.getClassId() == ClassId.CARDINAL || assist.getClassId() == ClassId.ELVEN_ELDER || assist.getClassId() == ClassId.EVAS_SAINT)
+ {
+ assist.sendMessage("Tournament: Bishop not allowed in Tournament 2x2.");
+ player.sendMessage("Tournament: Bishop not allowed in Tournament 2x2.");
+ return;
+ }
+ if (player.getClassId() == ClassId.SHILLIEN_ELDER || player.getClassId() == ClassId.SHILLIEN_SAINT || player.getClassId() == ClassId.BISHOP || player.getClassId() == ClassId.CARDINAL || player.getClassId() == ClassId.ELVEN_ELDER || player.getClassId() == ClassId.EVAS_SAINT)
+ {
+ assist.sendMessage("Tournament: Bishop not allowed in Tournament 2x2.");
+ player.sendMessage("Tournament: Bishop not allowed in Tournament 2x2.");
+ return;
+ }
+ if (player.isCursedWeaponEquipped() || assist.isCursedWeaponEquipped() || player.isInStoreMode() || assist.isInStoreMode() || player.getKarma() > 0 || assist.getKarma() > 0)
+ {
+ player.sendMessage("Tournament: You or your member does not have the necessary requirements.");
+ assist.sendMessage("Tournament: You or your member does not have the necessary requirements.");
+ return;
+ }
+ if (player.getClassId() == assist.getClassId())
+ {
+ player.sendMessage("Tournament: Only 1 " + (String) className + "'s allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only 1 " + (String) className + "'s allowed per party.", 6000));
+ return;
+ }
+ if ((player.getClassId() == ClassId.HAWKEYE || player.getClassId() == ClassId.SAGGITARIUS || player.getClassId() == ClassId.MOONLIGHT_SENTINEL || player.getClassId() == ClassId.SILVER_RANGER || player.getClassId() == ClassId.GHOST_SENTINEL || player.getClassId() == ClassId.PHANTOM_RANGER) && (assist.getClassId() == ClassId.HAWKEYE || assist.getClassId() == ClassId.SAGGITARIUS || assist.getClassId() == ClassId.MOONLIGHT_SENTINEL || assist.getClassId() == ClassId.SILVER_RANGER || assist.getClassId() == ClassId.GHOST_SENTINEL || assist.getClassId() == ClassId.PHANTOM_RANGER))
+ {
+ player.sendMessage("Tournament: Only 1 Acher allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("OOnly 1 Acher allowed per party.", 6000));
+ return;
+ }
+ if ((player.getClassId() == ClassId.ADVENTURER || player.getClassId() == ClassId.TREASURE_HUNTER || player.getClassId() == ClassId.WIND_RIDER || player.getClassId() == ClassId.PLAINS_WALKER || player.getClassId() == ClassId.GHOST_HUNTER || player.getClassId() == ClassId.ABYSS_WALKER) && (assist.getClassId() == ClassId.ADVENTURER || assist.getClassId() == ClassId.TREASURE_HUNTER || assist.getClassId() == ClassId.WIND_RIDER || assist.getClassId() == ClassId.PLAINS_WALKER || assist.getClassId() == ClassId.GHOST_HUNTER || assist.getClassId() == ClassId.ABYSS_WALKER))
+ {
+ player.sendMessage("Tournament: Only 1 Dagger allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("OOnly 1 Dagger allowed per party.", 6000));
+ return;
+ }
+ if (OlympiadManager.getInstance().isRegistered(player) || OlympiadManager.getInstance().isRegistered(assist))
+ {
+ player.sendMessage("Tournament: You or your member is registered in the Olympiad.");
+ assist.sendMessage("Tournament: You or your member is registered in the Olympiad.");
+ return;
+ }
+
+
+ if (Arena2x2.getInstance().register(player, assist))
+ {
+ player.sendMessage("Tournament: Your participation has been approved.");
+ assist.sendMessage("Tournament: Your participation has been approved.");
+ player.setArenaProtection(true);
+ assist.setArenaProtection(true);
+ player.setArena2x2(true);
+ assist.setArena2x2(true);
+ showChatWindow(player);
+ }
+
+
+ else
+ player.sendMessage("Tournament: You or your member does not have the necessary requirements.");
+ }else
+ {
+ Object assist2;
+ if (command.startsWith("4x4"))
+ {
+
+ if (!Config.ALLOW_4X4_REGISTER)
+ {
+ player.sendPacket(SystemMessageId.ACADEMY_LIST_HEADER);
+ return;
+ }
+
+ if (player.isArena2x2() || player.isArena4x4() || player.isArena9x9() || player.isArenaProtection())
+ {
+ player.sendMessage("Tournament: You already registered!");
+ return;
+ }
+ if (!player.isInParty())
+ {
+ player.sendMessage("Tournament: You dont have a party.");
+ return;
+ }
+ if (!player.getParty().isLeader(player))
+ {
+ player.sendMessage("Tournament: You are not the party leader!");
+ return;
+ }
+ if (player.getParty().getMembersCount() < 4)
+ {
+ player.sendMessage("Tournament: Your party does not have 4 members.");
+ player.sendPacket(new ExShowScreenMessage("Your party does not have 4 members", 6000));
+ return;
+ }
+ if (player.getParty().getMembersCount() > 4)
+ {
+ player.sendMessage("Tournament: Your Party can not have more than 4 members.");
+ player.sendPacket(new ExShowScreenMessage("Your Party can not have more than 4 members", 6000));
+ return;
+ }
+
+ Player assist = player.getParty().getMembers().get(1);
+ assist2 = player.getParty().getMembers().get(2);
+ Player assist3 = player.getParty().getMembers().get(3);
+
+ if (player.isCursedWeaponEquipped() || assist.isCursedWeaponEquipped() || ((Player) assist2).isCursedWeaponEquipped() || assist3.isCursedWeaponEquipped() || player.isInStoreMode() || assist.isInStoreMode() || ((Player) assist2).isInStoreMode() || assist3.isInStoreMode() || player.getKarma() > 0 || assist.getKarma() > 0 || ((Player) assist2).getKarma() > 0 || assist3.getKarma() > 0)
+ {
+ player.sendMessage("Tournament: You or your member does not have the necessary requirements.");
+ assist.sendMessage("Tournament: You or your member does not have the necessary requirements.");
+ ((Player) assist2).sendMessage("Tournament: You or your member does not have the necessary requirements.");
+ assist3.sendMessage("Tournament: You or your member does not have the necessary requirements.");
+ return;
+ }
+ if (OlympiadManager.getInstance().isRegistered(player) || OlympiadManager.getInstance().isRegistered(assist) || OlympiadManager.getInstance().isRegistered((Player) assist2) || OlympiadManager.getInstance().isRegistered(assist3))
+ {
+ player.sendMessage("Tournament: You or your member is registered in the Olympiad.");
+ assist.sendMessage("Tournament: You or your member is registered in the Olympiad.");
+ ((Player) assist2).sendMessage("Tournament: You or your member is registered in the Olympiad.");
+ assist3.sendMessage("Tournament: You or your member is registered in the Olympiad.");
+ return;
+ }
+
+
+
+ ClasseCheck(player);
+
+ if (player.duelist_cont > Config.duelist_COUNT_4X4)
+ {
+ player.sendMessage("Tournament: Only " + Config.duelist_COUNT_4X4 + " Duelist's or " + Config.duelist_COUNT_4X4 + " Grand Khauatari's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.duelist_COUNT_4X4 + " Duelist's or " + Config.duelist_COUNT_4X4 + " Grand Khauatari'sallowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.dreadnought_cont > Config.dreadnought_COUNT_4X4)
+ {
+ player.sendMessage("Tournament: Only " + Config.dreadnought_COUNT_4X4 + " Dread Nought's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.dreadnought_COUNT_4X4 + " Dread Nought's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.tanker_cont > Config.tanker_COUNT_4X4)
+ {
+ player.sendMessage("Tournament: Only " + Config.tanker_COUNT_4X4 + " Tanker's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.tanker_COUNT_4X4 + " Tanker's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.dagger_cont > Config.dagger_COUNT_4X4)
+ {
+ player.sendMessage("Tournament: Only " + Config.dagger_COUNT_4X4 + " Dagger's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.dagger_COUNT_4X4 + " Dagger's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.archer_cont > Config.archer_COUNT_4X4)
+ {
+ player.sendMessage("Tournament: Only " + Config.archer_COUNT_4X4 + " Archer's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.archer_COUNT_4X4 + " Archer's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.bs_cont > Config.bs_COUNT_4X4)
+ {
+ player.sendMessage("Tournament: Only " + Config.bs_COUNT_4X4 + " Bishop's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.bs_COUNT_4X4 + " Bishop's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.archmage_cont > Config.archmage_COUNT_4X4)
+ {
+ player.sendMessage("Tournament: Only " + Config.archmage_COUNT_4X4 + " Archmage's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.archmage_COUNT_4X4 + " Archmage's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.soultaker_cont > Config.soultaker_COUNT_4X4)
+ {
+ player.sendMessage("Tournament: Only " + Config.soultaker_COUNT_4X4 + " Soultaker's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.soultaker_COUNT_4X4 + " Soultaker's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.mysticMuse_cont > Config.mysticMuse_COUNT_4X4)
+ {
+ player.sendMessage("Tournament: Only " + Config.mysticMuse_COUNT_4X4 + " Mystic Muse's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.mysticMuse_COUNT_4X4 + " Mystic Muse's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.stormScreamer_cont > Config.stormScreamer_COUNT_4X4)
+ {
+ player.sendMessage("Tournament: Only " + Config.stormScreamer_COUNT_4X4 + " Storm Screamer's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.stormScreamer_COUNT_4X4 + " Storm Screamer's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.titan_cont > Config.titan_COUNT_4X4)
+ {
+ player.sendMessage("Tournament: Only " + Config.titan_COUNT_4X4 + " Titan's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.titan_COUNT_4X4 + " Titan's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.dominator_cont > Config.dominator_COUNT_4X4)
+ {
+ player.sendMessage("Tournament: Only " + Config.dominator_COUNT_4X4 + " Dominator's or " + Config.dominator_COUNT_4X4 + " Doomcryer's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.dominator_COUNT_4X4 + " Dominator's or " + Config.dominator_COUNT_4X4 + " Doomcryer's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (Arena4x4.getInstance().register(player, assist, (Player) assist2, assist3) && player.getParty().getMembers().get(1) != null && player.getParty().getMembers().get(2) != null && player.getParty().getMembers().get(3) != null)
+ {
+ player.sendMessage("Tournament: Your participation has been approved.");
+ assist.sendMessage("Tournament: Your participation has been approved.");
+ ((Player) assist2).sendMessage("Tournament: Your participation has been approved.");
+ assist3.sendMessage("Tournament: Your participation has been approved.");
+
+ player.setArenaProtection(true);
+ assist.setArenaProtection(true);
+ ((Player) assist2).setArenaProtection(true);
+ assist3.setArenaProtection(true);
+
+ player.setArena4x4(true);
+ assist.setArena4x4(true);
+ ((Player) assist2).setArena4x4(true);
+ assist3.setArena4x4(true);
+ clean(player);
+ showChatWindow1(player);
+ }
+ else
+ player.sendMessage("Tournament: You or your member does not have the necessary requirements.");
+ }
+ else if (command.startsWith("9x9"))
+ {
+
+ if (!Config.ALLOW_9X9_REGISTER)
+ {
+ player.sendPacket(SystemMessageId.ACADEMY_LIST_HEADER);
+ return;
+ }
+
+ if (player.isArena2x2() || player.isArena4x4() || player.isArena9x9() || player.isArenaProtection())
+ {
+ player.sendMessage("Tournament: You already registered!");
+ return;
+ }
+ if (!player.isInParty())
+ {
+ player.sendMessage("Tournament: You dont have a party.");
+ return;
+ }
+ if (!player.getParty().isLeader(player))
+ {
+ player.sendMessage("Tournament: You are not the party leader!");
+ return;
+ }
+ if (player.getParty().getMembersCount() < 9)
+ {
+ player.sendMessage("Tournament: Your party does not have 9 members.");
+ player.sendPacket(new ExShowScreenMessage("Your party does not have 9 members", 6000));
+ return;
+ }
+ if (player.getParty().getMembersCount() > 9)
+ {
+ player.sendMessage("Tournament: Your Party can not have more than 9 members.");
+ player.sendPacket(new ExShowScreenMessage("Your Party can not have more than 9 members", 6000));
+ return;
+ }
+
+ Player assist = player.getParty().getMembers().get(1);
+ Player assist21 = player.getParty().getMembers().get(2);
+ Player assist3 = player.getParty().getMembers().get(3);
+ Player assist4 = player.getParty().getMembers().get(4);
+ Player assist5 = player.getParty().getMembers().get(5);
+ Player assist6 = player.getParty().getMembers().get(6);
+ Player assist7 = player.getParty().getMembers().get(7);
+ Player assist8 = player.getParty().getMembers().get(8);
+
+ if (player.isCursedWeaponEquipped() || assist.isCursedWeaponEquipped() || assist21.isCursedWeaponEquipped() || assist3.isCursedWeaponEquipped() || assist4.isCursedWeaponEquipped() || assist5.isCursedWeaponEquipped() || assist6.isCursedWeaponEquipped() || assist7.isCursedWeaponEquipped() || assist8.isCursedWeaponEquipped() || player.isInStoreMode() || assist.isInStoreMode() || assist21.isInStoreMode() || assist3.isInStoreMode() || assist4.isInStoreMode() || assist5.isInStoreMode() || assist6.isInStoreMode() || assist7.isInStoreMode() || assist8.isInStoreMode() || player.getKarma() > 0 || assist.getKarma() > 0 || assist21.getKarma() > 0 || assist3.getKarma() > 0 || assist4.getKarma() > 0 || assist5.getKarma() > 0 || assist6.getKarma() > 0 || assist7.getKarma() > 0 || assist8.getKarma() > 0)
+ {
+ player.sendMessage("Tournament: You or your member does not have the necessary requirements.");
+ assist.sendMessage("Tournament: You or your member does not have the necessary requirements.");
+ assist21.sendMessage("Tournament: You or your member does not have the necessary requirements.");
+ assist3.sendMessage("Tournament: You or your member does not have the necessary requirements.");
+ assist4.sendMessage("Tournament: You or your member does not have the necessary requirements.");
+ assist5.sendMessage("Tournament: You or your member does not have the necessary requirements.");
+ assist6.sendMessage("Tournament: You or your member does not have the necessary requirements.");
+ assist7.sendMessage("Tournament: You or your member does not have the necessary requirements.");
+ assist8.sendMessage("Tournament: You or your member does not have the necessary requirements.");
+ return;
+ }
+ if (OlympiadManager.getInstance().isRegistered(player) || OlympiadManager.getInstance().isRegistered(assist) || OlympiadManager.getInstance().isRegistered(assist21) || OlympiadManager.getInstance().isRegistered(assist3) || OlympiadManager.getInstance().isRegistered(assist4) || OlympiadManager.getInstance().isRegistered(assist5) || OlympiadManager.getInstance().isRegistered(assist6) || OlympiadManager.getInstance().isRegistered(assist7) || OlympiadManager.getInstance().isRegistered(assist8))
+ {
+ player.sendMessage("Tournament: You or your member is registered in the Olympiad.");
+ assist.sendMessage("Tournament: You or your member is registered in the Olympiad.");
+ assist21.sendMessage("Tournament: You or your member is registered in the Olympiad.");
+ assist3.sendMessage("Tournament: You or your member is registered in the Olympiad.");
+ assist4.sendMessage("Tournament: You or your member is registered in the Olympiad.");
+ assist5.sendMessage("Tournament: You or your member is registered in the Olympiad.");
+ assist6.sendMessage("Tournament: You or your member is registered in the Olympiad.");
+ assist7.sendMessage("Tournament: You or your member is registered in the Olympiad.");
+ assist8.sendMessage("Tournament: You or your member is registered in the Olympiad.");
+ return;
+ }
+
+
+
+ ClasseCheck(player);
+
+ if (player.duelist_cont > Config.duelist_COUNT_9X9)
+ {
+ player.sendMessage("Tournament: Only " + Config.duelist_COUNT_9X9 + " Duelist's or " + Config.duelist_COUNT_9X9 + " Grand Khauatari's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.duelist_COUNT_9X9 + " Duelist's or " + Config.duelist_COUNT_9X9 + " Grand Khauatari's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.dreadnought_cont > Config.dreadnought_COUNT_9X9)
+ {
+ player.sendMessage("Tournament: Only " + Config.dreadnought_COUNT_9X9 + " Dread Nought's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.dreadnought_COUNT_9X9 + " Dread Nought's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.tanker_cont > Config.tanker_COUNT_9X9)
+ {
+ player.sendMessage("Tournament: Only " + Config.tanker_COUNT_9X9 + " Tanker's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.tanker_COUNT_9X9 + " Tanker's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.dagger_cont > Config.dagger_COUNT_9X9)
+ {
+ player.sendMessage("Tournament: Only " + Config.dagger_COUNT_9X9 + " Dagger's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.dagger_COUNT_9X9 + " Dagger's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.archer_cont > Config.archer_COUNT_9X9)
+ {
+ player.sendMessage("Tournament: Only " + Config.archer_COUNT_9X9 + " Archer's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.archer_COUNT_9X9 + " Archer's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.bs_cont > Config.bs_COUNT_9X9)
+ {
+ player.sendMessage("Tournament: Only " + Config.bs_COUNT_9X9 + " Bishop's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.bs_COUNT_9X9 + " Bishop's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.archmage_cont > Config.archmage_COUNT_9X9)
+ {
+ player.sendMessage("Tournament: Only " + Config.archmage_COUNT_9X9 + " Archmage's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.archmage_COUNT_9X9 + " Archmage's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.soultaker_cont > Config.soultaker_COUNT_9X9)
+ {
+ player.sendMessage("Tournament: Only " + Config.soultaker_COUNT_9X9 + " Soultaker's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.soultaker_COUNT_9X9 + " Soultaker's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.mysticMuse_cont > Config.mysticMuse_COUNT_9X9)
+ {
+ player.sendMessage("Tournament: Only " + Config.mysticMuse_COUNT_9X9 + " Mystic Muse's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.mysticMuse_COUNT_9X9 + " Mystic Muse's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.stormScreamer_cont > Config.stormScreamer_COUNT_9X9)
+ {
+ player.sendMessage("Tournament: Only " + Config.stormScreamer_COUNT_9X9 + " Storm Screamer's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.stormScreamer_COUNT_9X9 + " Storm Screamer's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.titan_cont > Config.titan_COUNT_9X9)
+ {
+ player.sendMessage("Tournament: Only " + Config.titan_COUNT_9X9 + " Titan's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.titan_COUNT_9X9 + " Titan's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (player.dominator_cont > Config.dominator_COUNT_9X9)
+ {
+ player.sendMessage("Tournament: Only " + Config.dominator_COUNT_9X9 + " Dominator's or " + Config.dominator_COUNT_9X9 + " Doomcryer's allowed per party.");
+ player.sendPacket(new ExShowScreenMessage("Only " + Config.dominator_COUNT_9X9 + " Dominator's or " + Config.dominator_COUNT_9X9 + " Doomcryer's allowed per party.", 6000));
+ clean(player);
+ return;
+ }
+ if (Arena9x9.getInstance().register(player, assist, assist21, assist3, assist4, assist5, assist6, assist7, assist8) && player.getParty().getMembers().get(1) != null && player.getParty().getMembers().get(2) != null && player.getParty().getMembers().get(3) != null && player.getParty().getMembers().get(4) != null && player.getParty().getMembers().get(5) != null && player.getParty().getMembers().get(6) != null && player.getParty().getMembers().get(7) != null && player.getParty().getMembers().get(8) != null)
+ {
+ player.sendMessage("Tournament: Your participation has been approved.");
+ assist.sendMessage("Tournament: Your participation has been approved.");
+ assist21.sendMessage("Tournament: Your participation has been approved.");
+ assist3.sendMessage("Tournament: Your participation has been approved.");
+ assist4.sendMessage("Tournament: Your participation has been approved.");
+ assist5.sendMessage("Tournament: Your participation has been approved.");
+ assist6.sendMessage("Tournament: Your participation has been approved.");
+ assist7.sendMessage("Tournament: Your participation has been approved.");
+ assist8.sendMessage("Tournament: Your participation has been approved.");
+
+ player.setArenaProtection(true);
+ assist.setArenaProtection(true);
+ assist21.setArenaProtection(true);
+ assist3.setArenaProtection(true);
+ assist4.setArenaProtection(true);
+ assist5.setArenaProtection(true);
+ assist6.setArenaProtection(true);
+ assist7.setArenaProtection(true);
+ assist8.setArenaProtection(true);
+
+ player.setArena9x9(true);
+ assist.setArena9x9(true);
+ assist21.setArena9x9(true);
+ assist3.setArena9x9(true);
+ assist4.setArena9x9(true);
+ assist5.setArena9x9(true);
+ assist6.setArena9x9(true);
+ assist7.setArena9x9(true);
+ assist8.setArena9x9(true);
+ clean(player);
+ showChatWindow2(player);
+ }
+ else
+ player.sendMessage("Tournament: You or your member does not have the necessary requirements.");
+ }
+ else if (command.startsWith("remove"))
+ {
+ if (!player.isInParty())
+ {
+ player.sendMessage("Tournament: You dont have a party.");
+ return;
+ }
+ if (!player.getParty().isLeader(player))
+ {
+ player.sendMessage("Tournament: You are not the party leader!");
+ return;
+ }
+
+ Arena2x2.getInstance().remove(player);
+ Arena9x9.getInstance().remove(player);
+ Arena4x4.getInstance().remove(player);
+ showChatWindow(player);
+
+ }
+ else if (command.startsWith("observe_list"))
+ {
+ player.sendPacket(ActionFailed.STATIC_PACKET);
+ String filename = "data/html/mods/tournament/9996-1.htm";
+ NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+ html.setFile(filename);
+ html.replace("%objectId%", String.valueOf(getObjectId()));
+ player.sendPacket(html);
+ }
+ else if (command.startsWith("observe_back"))
+ showChatWindow(player);
+ else if (command.startsWith("tournament_observe"))
+ {
+
+ StringTokenizer st = new StringTokenizer(command);
+ st.nextToken();
+
+ int x = Integer.parseInt(st.nextToken());
+ int y = Integer.parseInt(st.nextToken());
+ int z = Integer.parseInt(st.nextToken());
+
+ player.setArenaObserv(true);
+ player.enterObserverMode(x, y, z);
+ }
+ else
+ super.onBypassFeedback(player, command);
+ }
+
+ }
+
+ public void ClasseCheck(Player activeChar)
+ {
+ Party plparty = activeChar.getParty();
+ for (Player player : plparty.getMembers())
+ if (player != null)
+ if (player.getParty() != null)
+ {
+ if (player.getClassId() == ClassId.GLADIATOR || player.getClassId() == ClassId.DUELIST || player.getClassId() == ClassId.GRAND_KHAVATARI || player.getClassId() == ClassId.TYRANT)
+ activeChar.duelist_cont += 1;
+ if (player.getClassId() == ClassId.WARLORD || player.getClassId() == ClassId.DREADNOUGHT)
+ activeChar.dreadnought_cont += 1;
+ if (player.getClassId() == ClassId.PALADIN || player.getClassId() == ClassId.PHOENIX_KNIGHT || player.getClassId() == ClassId.DARK_AVENGER || player.getClassId() == ClassId.HELL_KNIGHT || player.getClassId() == ClassId.EVAS_TEMPLAR || player.getClassId() == ClassId.TEMPLE_KNIGHT || player.getClassId() == ClassId.SHILLIEN_KNIGHT || player.getClassId() == ClassId.SHILLIEN_TEMPLAR)
+ activeChar.tanker_cont += 1;
+ if (player.getClassId() == ClassId.ADVENTURER || player.getClassId() == ClassId.TREASURE_HUNTER || player.getClassId() == ClassId.WIND_RIDER || player.getClassId() == ClassId.PLAINS_WALKER || player.getClassId() == ClassId.GHOST_HUNTER || player.getClassId() == ClassId.ABYSS_WALKER)
+ activeChar.dagger_cont += 1;
+ if (player.getClassId() == ClassId.HAWKEYE || player.getClassId() == ClassId.SAGGITARIUS || player.getClassId() == ClassId.MOONLIGHT_SENTINEL || player.getClassId() == ClassId.SILVER_RANGER || player.getClassId() == ClassId.GHOST_SENTINEL || player.getClassId() == ClassId.PHANTOM_RANGER)
+ activeChar.archer_cont += 1;
+ if (player.getClassId() == ClassId.SHILLIEN_ELDER || player.getClassId() == ClassId.SHILLIEN_SAINT || player.getClassId() == ClassId.BISHOP || player.getClassId() == ClassId.CARDINAL || player.getClassId() == ClassId.ELVEN_ELDER || player.getClassId() == ClassId.EVAS_SAINT)
+ activeChar.bs_cont += 1;
+ if (player.getClassId() == ClassId.ARCHMAGE || player.getClassId() == ClassId.SORCERER)
+ activeChar.archmage_cont += 1;
+ if (player.getClassId() == ClassId.SOULTAKER || player.getClassId() == ClassId.NECROMANCER)
+ activeChar.soultaker_cont += 1;
+ if (player.getClassId() == ClassId.MYSTIC_MUSE || player.getClassId() == ClassId.SPELLSINGER)
+ activeChar.mysticMuse_cont += 1;
+ if (player.getClassId() == ClassId.STORM_SCREAMER || player.getClassId() == ClassId.SPELLHOWLER)
+ activeChar.stormScreamer_cont += 1;
+ if (player.getClassId() == ClassId.TITAN || player.getClassId() == ClassId.DESTROYER)
+ activeChar.titan_cont += 1;
+ if (player.getClassId() == ClassId.DOMINATOR || player.getClassId() == ClassId.OVERLORD || player.getClassId() == ClassId.DOOMCRYER || player.getClassId() == ClassId.WARCRYER)
+ activeChar.dominator_cont += 1;
+ }
+ }
+
+ public void clean(Player player)
+ {
+ player.duelist_cont = 0;
+ player.dreadnought_cont = 0;
+ player.tanker_cont = 0;
+ player.dagger_cont = 0;
+ player.archer_cont = 0;
+ player.bs_cont = 0;
+ player.archmage_cont = 0;
+ player.soultaker_cont = 0;
+ player.mysticMuse_cont = 0;
+ player.stormScreamer_cont = 0;
+ player.titan_cont = 0;
+ player.dominator_cont = 0;
+ }
+ }
+
Index: data\html\mods\tournament/9996.html
===================================================================
--- data\html\mods\tournament/9996.html (revision 84)
+++ data\html\mods\tournament/9996.html (working copy)
+ <html>
+ <title>Battle Tournament</title>
+ <body>
+ <center>
+ <img src="l2ui_ch3.herotower_deco" width=256 height=32>
+ <br>
+
+ <table><tr><td height=7>
+ <img src="Sek.cbui371" width=300 height=1>
+ </td></tr></table>
+ <table width=320 bgcolor=000000>
+ <tr>
+ <td>2x2:</font></td>
+ <td width=10><img src=l2ui.bbs_reply width=15 height=15></td>
+ <td width=25>%2x2%</td>
+ <td>4x4:</font></td>
+ <td width=10><img src=l2ui.bbs_reply width=15 height=15></td>
+ <td width=25>%4x4%</td>
+ <td>9x9:</font></td>
+ <td width=10><img src=l2ui.bbs_reply width=15 height=15></td>
+ <td width=25>%9x9%</td>
+ <td width=10></td>
+ </tr>
+ </table>
+ <img src="Sek.cbui371" width=300 height=1>
+ <br>
+ <br>
+
+ <img src="Sek.cbui371" width=300 height=1>
+ <table width=280 bgcolor=000000>
+ <tr>
+ <td width=25 align="right"><button action="" width=32 height=32 back="icon.etc_event_medal_i00" fore="icon.etc_event_medal_i00"></td>
+ <td width=120>
+ <table>
+ <tr><td><font color="0066CC">[ Battle Tour 2x2 ] </font></td></tr>
+ <tr><td>{ 2 members for pt }</font></td></tr>
+ </table>
+ </td>
+ <td width=8></td>
+ <td><button width="115" height="30" back="L2UI_ch3.bigbutton2_down" fore="L2UI_ch3.bigbutton2" action="bypass -h npc_%objectId%_2x2" value="Register 2x2"></td>
+ </tr>
+ </table>
+ <img src="Sek.cbui371" width=300 height=1>
+ <table width=280 bgcolor=000000>
+ <tr>
+ <td width=25 align="right"><button action="" width=32 height=32 back="icon.etc_event_medal_i00" fore="icon.etc_event_medal_i00"></td>
+ <td width=120>
+ <table>
+ <tr><td><font color="0066CC">[ Battle Tour 4x4 ] </font></td></tr>
+ <tr><td>{ 4 members for pt } </font></td></tr>
+ </table>
+ </td>
+ <td width=11></td>
+ <td><button width="115" height="30" back="L2UI_ch3.bigbutton2_down" fore="L2UI_ch3.bigbutton2" action="bypass -h npc_%objectId%_4x4" value="Register 4x4"></td>
+ </tr>
+ </table>
+ <img src="Sek.cbui371" width=300 height=1>
+ <table width=280 bgcolor=000000>
+ <tr>
+ <td width=25 align="right"><button action="" width=32 height=32 back="icon.etc_event_medal_i00" fore="icon.etc_event_medal_i00"></td>
+ <td width=120>
+ <table>
+ <tr><td><font color="0066CC">[ Battle Tour 9x9 ] </font></td></tr>
+ <tr><td>{ 9 members for pt } </font></td></tr>
+ </table>
+ </td>
+ <td width=11></td>
+ <td><button width="115" height="30" back="L2UI_ch3.bigbutton2_down" fore="L2UI_ch3.bigbutton2" action="bypass -h npc_%objectId%_9x9" value="Register 9x9"></td>
+ </tr>
+ </table>
+ <img src="Sek.cbui371" width=300 height=1>
+ <table width=277 bgcolor=000000>
+ <tr>
+ <td width=25 align="right"><button action="" width=32 height=32 back="L2UI_CH3.mainwndtabicon1" fore="L2UI_CH3.mainwndtabicon1"></td>
+ <td width=130>
+ <table>
+ <tr><td><font color="0066CC">[ Observer ] </font></td></tr>
+ <tr><td>{ Watch tournament } </font></td></tr>
+ </table>
+ </td>
+ <td><button width="115" height="30" back="L2UI_ch3.bigbutton2_down" fore="L2UI_ch3.bigbutton2" action="bypass -h npc_%objectId%_observe_list" value="Watch battle"></td>
+ </tr>
+ </table>
+ <img src="Sek.cbui371" width=300 height=1>
+ <br>
+ <br>
+ <img src="Sek.cbui371" width=300 height=1>
+ <table width=300 bgcolor="000000">
+ <tr>
+ <td width=40></td>
+
+ <td><font color="ff0000"><a action="bypass -h npc_%objectId%_remove">.: Leave the party :.</font></a></td>
+
+ </tr>
+ <tr>
+ <td height=1></td>
+ </tr>
+ </table>
+ <img src="Sek.cbui371" width=300 height=1>
+ <br>
+
+ </body>
+ </html>
+
Index: data\html\mods\tournament/9996-1.html
===================================================================
--- data\html\mods\tournament/9996.html (revision 84)
+++ data\html\mods\tournament/9996.html (working copy)
+ <html><body><center><title>Tournament</title>
+ <br>
+ <img src="L2UI.L2UI.SquareGray" width=300 height=1>
+ <table bgcolor=000000 width=320>
+ <tr>
+ <td><center><font color="CD6839"></font> <font color="CD6839">Watch Tournament 2x2</font></center></td>
+ </tr>
+ </table>
+ <img src="L2UI.SquareGray" width=295 height=1>
+ <br>
+ <table width=210>
+ <tr>
+ <td align=center>
+ <button value="Observe 2x2 (Arena 1)" action="bypass -h npc_%objectId%_tournament_observe -87523 -240169 -3331" width=134 height=21 back="L2UI_ch3.BigButton3_over" fore="L2UI_ch3.BigButton3">
+ </td>
+ </tr>
+ </table>
+
+
+ <table width=210>
+ <tr>
+ <td align=center>
+ <button value="Observe 2x2 (Arena 2)" action="bypass -h npc_%objectId%_tournament_observe -109629 -201292 -3331" width=134 height=21 back="L2UI_ch3.BigButton3_over" fore="L2UI_ch3.BigButton3">
+ </td>
+ </tr>
+ </table>
+
+ <table width=210>
+ <tr>
+ <td align=center>
+ <button value="Observe 2x2 (Arena 3)" action="bypass -h npc_%objectId%_tournament_observe -126367 -218228 -3331" width=134 height=21 back="L2UI_ch3.BigButton3_over" fore="L2UI_ch3.BigButton3">
+ </td>
+ </tr>
+ </table>
+ <img src="L2UI.L2UI.SquareGray" width=300 height=1>
+ <table bgcolor=000000 width=320>
+ <tr>
+ <td><center><font color="CD6839"></font> <font color="CD6839">Watch Tournament 4x4</font></center></td>
+ </tr>
+ </table>
+ <img src="L2UI.SquareGray" width=295 height=1>
+ <table width=210>
+ <tr>
+ <td align=center>
+ <button value="Observe 4x4 (Arena 1)" action="bypass -h npc_%objectId%_tournament_observe -69778 -241801 -3331" width=134 height=21 back="L2UI_ch3.BigButton3_over" fore="L2UI_ch3.BigButton3">
+ </td>
+ </tr>
+ </table>
+ <table width=210>
+ <tr>
+ <td align=center>
+ <button value="Observe 4x4 (Arena 2)" action="bypass -h npc_%objectId%_tournament_observe -77123 -251473 -3331" width=134 height=21 back="L2UI_ch3.BigButton3_over" fore="L2UI_ch3.BigButton3">
+ </td>
+ </tr>
+ </table>
+ <table width=210>
+ <tr>
+ <td align=center>
+ <button value="Observe 4x4 (Arena 3)" action="bypass -h npc_%objectId%_tournament_observe -81748 -245950 -3331" width=134 height=21 back="L2UI_ch3.BigButton3_over" fore="L2UI_ch3.BigButton3">
+ </td>
+ </tr>
+ </table>
+ <br>
+ <img src="L2UI.L2UI.SquareGray" width=300 height=1>
+ <table bgcolor=000000 width=320>
+ <tr>
+ <td><center><font color="CD6839"></font> <font color="CD6839">Watch Tournament 9x9</font></center></td>
+ </tr>
+ </table>
+ <img src="L2UI.SquareGray" width=295 height=1>
+ <table width=210>
+ <tr>
+ <td align=center>
+ <button value="Observe 9x9 (Arena 1)" action="bypass -h npc_%objectId%_tournament_observe -87466 -257752 -3331" width=134 height=21 back="L2UI_ch3.BigButton3_over" fore="L2UI_ch3.BigButton3">
+ </td>
+ </tr>
+ </table>
+ <table width=210>
+ <tr>
+ <td align=center>
+ <button value="Observe 9x9 (Arena 2)" action="bypass -h npc_%objectId%_tournament_observe -93742 -251032 -3331" width=134 height=21 back="L2UI_ch3.BigButton3_over" fore="L2UI_ch3.BigButton3">
+ </td>
+ </tr>
+ </table>
+ <table width=210>
+ <tr>
+ <td align=center>
+ <button value="Observe 9x9 (Arena 3)" action="bypass -h npc_%objectId%_tournament_observe -76754 -234014 -3331" width=134 height=21 back="L2UI_ch3.BigButton3_over" fore="L2UI_ch3.BigButton3">
+ </td>
+ </tr>
+ </table>
+ <br>
+ <td><font color="ff0000"><a action="bypass -h npc_%objectId%_observe_back">.: Back :.</font></a></td>
+
+ </center>
+ </body>
+ </html>
+
+
Index: data\html\mods\tournament/Change_Arena.html
===================================================================
--- data\html\mods\tournament/Change_Arena.html (revision 84)
+++ data\html\mods\tournament/Change_Arena.html (working copy)
+ <html><body><center><title>Tournament</title>
+ <br>
+ <img src="L2UI.L2UI.SquareGray" width=300 height=1>
+ <table bgcolor=000000 width=320>
+ <tr>
+ <td><center><font color="CD6839"></font> <font color="CD6839">Watch Tournament 2x2</font></center></td>
+ </tr>
+ </table>
+ <img src="L2UI.SquareGray" width=295 height=1>
+ <br>
+ <table width=210>
+ <tr>
+ <td align=center>
+ <button value="Observe 2x2 (Arena 1)" action="bypass -h npc_%objectId%_tournament_observe -87523 -240169 -3331" width=134 height=21 back="L2UI_ch3.BigButton3_over" fore="L2UI_ch3.BigButton3">
+ </td>
+ </tr>
+ </table>
+
+
+ <table width=210>
+ <tr>
+ <td align=center>
+ <button value="Observe 2x2 (Arena 2)" action="bypass -h npc_%objectId%_tournament_observe -109629 -201292 -3331" width=134 height=21 back="L2UI_ch3.BigButton3_over" fore="L2UI_ch3.BigButton3">
+ </td>
+ </tr>
+ </table>
+
+ <table width=210>
+ <tr>
+ <td align=center>
+ <button value="Observe 2x2 (Arena 3)" action="bypass -h npc_%objectId%_tournament_observe -126367 -218228 -3331" width=134 height=21 back="L2UI_ch3.BigButton3_over" fore="L2UI_ch3.BigButton3">
+ </td>
+ </tr>
+ </table>
+
+ <br>
+ <td><font color="ff0000"><a action="bypass -h npc_%objectId%_observe_back">.: Back :.</font></a></td>
+
+ </center>
+ </body>
+ </html>
Index: org.l2j.gameserver;GameServer.java
===================================================================
--- org.l2j.gameserver;GameServer.java (revision 84)
+++ org.l2j.gameserver;GameServer.java (working copy)
+ ThreadPool.schedule(Arena2x2.getInstance(), 5000L);
+ ThreadPool.schedule(Arena9x9.getInstance(), 5000L);
+ ThreadPool.schedule(Arena4x4.getInstance(), 5000L);
+ if (Config.TOURNAMENT_EVENT_TIME)
+ {
+ _log.info("Tournament Event is enabled.");
+ ArenaEvent.getInstance().StartCalculationOfNextEventTime();
+ }
+ else if (Config.TOURNAMENT_EVENT_START)
+ {
+ _log.info("Tournament Event is enabled.");
+ ArenaTask.spawnNpc1();
+ }
+ else
+ _log.info("Tournament Event is disabled");
Index: data\xml\zones/TournamentZone.xml
===================================================================
--- data\xml\zones/TournamentZone.xml (revision 84)
+++ data\xml\zones/TournamentZone.xml (working copy)
+ <?xml version="1.0" encoding="UTF-8"?>
+ <list>
+
+ <zone shape="NPoly" minZ="-3400" maxZ="-3125"><!-- olympiad_stadium_13 -->
+ <node x="-125722" y="-219117" />
+ <node x="-125437" y="-218767" />
+ <node x="-125437" y="-217736" />
+ <node x="-125722" y="-217386" />
+ <node x="-127447" y="-217386" />
+ <node x="-127732" y="-217736" />
+ <node x="-127732" y="-218767" />
+ <node x="-127447" y="-219117" />
+ <!-- point1 -->
+ <spawn x="-125722" y="-218251" z="-3327" />
+ <!-- point2 -->
+ <spawn x="-127447" y="-218251" z="-3327" />
+ <!-- spectator -->
+ <spawn x="-126584" y="-218251" z="-3327" />
+ </zone>
+ <zone shape="NPoly" minZ="-3400" maxZ="-3125"><!-- olympiad_stadium_14 -->
+ <node x="-108730" y="-202093" />
+ <node x="-108445" y="-201743" />
+ <node x="-108445" y="-200712" />
+ <node x="-108730" y="-200362" />
+ <node x="-110455" y="-200362" />
+ <node x="-110740" y="-200712" />
+ <node x="-110740" y="-201743" />
+ <node x="-110455" y="-202093" />
+ <!-- point1 -->
+ <spawn x="-108730" y="-201227" z="-3327" />
+ <!-- point2 -->
+ <spawn x="-110455" y="-201227" z="-3327" />
+ <!-- spectator -->
+ <spawn x="-109592" y="-201227" z="-3327" />
+ </zone>
+ <zone shape="NPoly" minZ="-3400" maxZ="-3125"><!-- olympiad_stadium_15 -->
+ <node x="-86618" y="-241008" />
+ <node x="-86333" y="-240658" />
+ <node x="-86333" y="-239627" />
+ <node x="-86618" y="-239277" />
+ <node x="-88343" y="-239277" />
+ <node x="-88628" y="-239627" />
+ <node x="-88628" y="-240658" />
+ <node x="-88343" y="-241008" />
+ <!-- point1 -->
+ <spawn x="-86618" y="-240142" z="-3327" />
+ <!-- point2 -->
+ <spawn x="-88343" y="-240142" z="-3327" />
+ <!-- spectator -->
+ <spawn x="-87480" y="-240142" z="-3327" />
+ </zone>
+ <zone shape="NPoly" minZ="-3400" maxZ="-3125"><!-- olympiad_stadium_16 -->
+ <node x="-80890" y="-246830" />
+ <node x="-80605" y="-246480" />
+ <node x="-80605" y="-245449" />
+ <node x="-80890" y="-245099" />
+ <node x="-82615" y="-245099" />
+ <node x="-82900" y="-245449" />
+ <node x="-82900" y="-246480" />
+ <node x="-82615" y="-246830" />
+ <!-- point1 -->
+ <spawn x="-80890" y="-245964" z="-3327" />
+ <!-- point2 -->
+ <spawn x="-82615" y="-245964" z="-3327" />
+ <!-- spectator -->
+ <spawn x="-81752" y="-245964" z="-3327" />
+ </zone>
+ <zone shape="NPoly" minZ="-3400" maxZ="-3125"><!-- olympiad_stadium_17 -->
+ <node x="-76249" y="-252348" />
+ <node x="-75964" y="-251998" />
+ <node x="-75964" y="-250967" />
+ <node x="-76249" y="-250617" />
+ <node x="-77974" y="-250617" />
+ <node x="-78259" y="-250967" />
+ <node x="-78259" y="-251998" />
+ <node x="-77974" y="-252348" />
+ <!-- point1 -->
+ <spawn x="-76249" y="-251482" z="-3327" />
+ <!-- point2 -->
+ <spawn x="-77974" y="-251482" z="-3327" />
+ <!-- spectator -->
+ <spawn x="-77111" y="-251482" z="-3327" />
+ </zone>
+ <zone shape="NPoly" minZ="-3400" maxZ="-3125"><!-- olympiad_stadium_18 -->
+ <node x="-68857" y="-242637" />
+ <node x="-68572" y="-242287" />
+ <node x="-68572" y="-241256" />
+ <node x="-68857" y="-240906" />
+ <node x="-70582" y="-240906" />
+ <node x="-70867" y="-241256" />
+ <node x="-70867" y="-242287" />
+ <node x="-70582" y="-242637" />
+ <!-- point1 -->
+ <spawn x="-68857" y="-241771" z="-3327" />
+ <!-- point2 -->
+ <spawn x="-70582" y="-241771" z="-3327" />
+ <!-- spectator -->
+ <spawn x="-69719" y="-241771" z="-3327" />
+ </zone>
+ <zone shape="NPoly" minZ="-3400" maxZ="-3125"><!-- olympiad_stadium_19 -->
+ <node x="-75961" y="-234861" />
+ <node x="-75676" y="-234511" />
+ <node x="-75676" y="-233480" />
+ <node x="-75961" y="-233130" />
+ <node x="-77686" y="-233130" />
+ <node x="-77971" y="-233480" />
+ <node x="-77971" y="-234511" />
+ <node x="-77686" y="-234861" />
+ <!-- point1 -->
+ <spawn x="-75961" y="-233995" z="-3327" />
+ <!-- point2 -->
+ <spawn x="-77686" y="-233995" z="-3327" />
+ <!-- spectator -->
+ <spawn x="-76823" y="-233995" z="-3327" />
+ </zone>
+ <zone shape="NPoly" minZ="-3400" maxZ="-3125"><!-- olympiad_stadium_20 -->
+ <node x="-92953" y="-251900" />
+ <node x="-92668" y="-251550" />
+ <node x="-92668" y="-250519" />
+ <node x="-92953" y="-250169" />
+ <node x="-94678" y="-250169" />
+ <node x="-94963" y="-250519" />
+ <node x="-94963" y="-251550" />
+ <node x="-94678" y="-251900" />
+ <!-- point1 -->
+ <spawn x="-92953" y="-251034" z="-3327" />
+ <!-- point2 -->
+ <spawn x="-94678" y="-251034" z="-3327" />
+ <!-- spectator -->
+ <spawn x="-93815" y="-251034" z="-3327" />
+ </zone>
+ <zone shape="NPoly" minZ="-3400" maxZ="-3125"><!-- olympiad_stadium_21 -->
+ <node x="-86650" y="-258653" />
+ <node x="-86365" y="-258303" />
+ <node x="-86365" y="-257272" />
+ <node x="-86650" y="-256922" />
+ <node x="-88375" y="-256922" />
+ <node x="-88660" y="-257272" />
+ <node x="-88660" y="-258303" />
+ <node x="-88375" y="-258653" />
+ <!-- point1 -->
+ <spawn x="-86650" y="-257787" z="-3327" />
+ <!-- point2 -->
+ <spawn x="-88375" y="-257787" z="-3327" />
+ <!-- spectator -->
+ <spawn x="-87512" y="-257787" z="-3327" />
+ </zone>
+ </list>
+
Index: config\eventos/Tournament.propertis
===================================================================
--- config\eventos/Tournament.propertis (revision 84)
+++ config\eventos/Tournament.propertis (working copy)
+ #=================================================
+ # SPAWN TOURNAMENT
+ #=================================================
+ # Tournament comando spawn manual //tour ou //tour para terminar o evento.
+ # Tournament Npc Auto Spawn
+ # spawnar npc tournament ao ligar servidor
+ TournamentStartOn = False
+
+ # ativar evento automatico
+ TournamentAutoEvent = True
+
+ # aparecer popup teleport para o tournament
+ TournamentSummon = True
+
+ # anunciar start event
+ TournamenAnnounce = True
+
+ # Time heading
+ Heading = 1
+
+ # Pvps para participar do tournament?
+ ArenaPvpJoin = -1
+
+ # ArenaStartTime= 10:30,14:30,18:30,23:30
+ TournamentStartTime = 10:00,15:00,20:00
+ # Duraçao do evento
+ # Tempo em Minutos
+ TournamentEventTime = 90
+
+ #=================================================
+ # 2x2 EVENT LOC
+ #=================================================
+ # Arenas Location
+ # e.g: 149360, 46594, -3415; x, y, z; x1, y1, z1
+ ArenasLoc = -87523, -240169, -3331;-109629, -201292, -3331;-126367, -218228, -3331;
+
+ #=================================================
+ # 4x4 EVENT LOC
+ #=================================================
+ # Arenas Location
+ # e.g: 149360, 46594, -3415; x, y, z; x1, y1, z1
+ Arenas4x4Loc = -69778, -241801, -3331;-77123, -251473, -3331;-81748, -245950, -3331;
+
+ #=================================================
+ # 9x9 EVENT LOC
+ #=================================================
+ # Arenas Location
+ # e.g: 149360, 46594, -3415; x, y, z; x1, y1, z1
+ Arenas9x9Loc = -87466, -257752, -3331;-93742, -251032, -3331;-76754, -234014, -3331;
+
+ #=================================================
+ # REWARD EVENT
+ #=================================================
+ # id do item que sera anunciado.
+ # id do item que sera a recompensa
+ ArenaRewardId = 9301
+ #=================================================
+ # (2x2) quantidade premios para os vencedores
+ ArenaWinRewardCount = 10
+ # (2x2) quantidade que sera retirada para os que perderem
+ ArenaLostRewardCount = 5
+ #=================================================
+ # (4x4) quantidade premios para os vencedores
+ ArenaWinRewardCount4x4 = 10
+ # (4x4) quantidade que sera retirada para os que perderem
+ ArenaLostRewardCount4x4 = 5
+ #=================================================
+ # (9x9) quantidade premios para os vencedores
+ ArenaWinRewardCount9x9 = 10
+ # (9x9) quantidade que sera retirada para os que perderem
+ ArenaLostRewardCount9x9 = 5
+ #=================================================
+
+ # Tempo entre o status dos jogadores de cheques [em segundos]
+ ArenaBattleCheckInterval = 15
+
+ # Tempo para os jogadores inscritos serem chamados [em segundos]
+ ArenaBattleCallInterval = 60
+
+ # Hora de começar a batalha depois que os jogadores são chamados [em segundos]
+ ArenaBattleWaitInterval = 20
+ ArenaBattleWaitInterval4x4 = 45
+ ArenaBattleWaitInterval9x9 = 45
+
+ # lista de items que nao poderao usar no tournament
+ ItemsRestriction = 0
+
+ # skill restriction
+ DisableSkillList = 0
+ ArenaDisableSkillList_noStart = 0
+
+ # ID do NPC de Registro
+ NPCRegister = 9996
+
+ # Local do spawn NPC de Registro.
+ Locx = -115101
+ Locy = -213178
+ Locz = -3334
+
+ # local para onde os players serao teleportados pelo teleport popup
+ Tournament_locx = -115101
+ Tournament_locy = -213178
+ Tournament_locz = -3334
+
+ # ativar registros
+ Allow2x2Register = True
+ Allow4x4Register = True
+ Allow9x9Register = True
+
+ # perder buff em 4x4?
+ Allow4x4LostBuff = False
+
+ # Show screen Arena message on character login
+ # Default: False
+ ScreenArenaMessageEnable = True
+ # Screen Arena message text to show on character login if enabled
+ ScreenArenaMessageText = Tournament 2x2 / 4x4 / 9x9 register now.
+ # Show screen Arena message for x seconds when character log in to game if enabled
+ ScreenArenaMessageTime = 6
+
+ # Color title players
+ TitleColorTeam_1 = 00FFFF
+ TitleColorTeam_2 = 00FFFF
+
+ # Prefix title players
+ TitleTeam_1 = Team [1]
+ TitleTeam_2 = Team [2]
+
+ # Remover efeito e desativar Skill em Arena
+ ArenaSkillProtect = True
+
+ #Lista de Skill Proibidas
+ ArenaDisableSkillList = 1410,438,1016,1254,3160,1410,3123
+
+ #Remover efeito das skills
+ ArenaStopSkillList = 420,406,176,139,1410,438
+
+ #=================================================
+ # PARTY RESTRICED Nº CLASS 4x4
+ #=================================================
+ # maixmo de classes em 1 pt
+ bs_amount_4x4 = 1
+ archer_amount_4x4 = 2
+ dominator_amount_4x4 = 2
+ duelist_amount_4x4 = 1
+ dreadnought_amount_4x4 = 2
+ tanker_amount_4x4 = 1
+ dagger_amount_4x4 = 2
+ archmage_amount_4x4 = 2
+ soultaker_amount_4x4 = 2
+ mysticMuse_amount_4x4 = 2
+ stormScreamer_amount_4x4 = 2
+ titan_amount_4x4 = 1
+ grandKhauatari_amount_4x4 = 1
+ doomcryer_amount_4x4 = 2
+
+ #=================================================
+ # PARTY RESTRICED Nº CLASS 9x9
+ #=================================================
+ # maixmo de classes em 1 pt
+ bs_amount_9x9 = 2
+ archer_amount_9x9 = 9
+ dominator_amount_9x9 = 9
+ duelist_amount_9x9 = 9
+ dreadnought_amount_9x9 = 9
+ tanker_amount_9x9 = 9
+ dagger_amount_9x9 = 9
+ archmage_amount_9x9 = 9
+ soultaker_amount_9x9 = 9
+ mysticMuse_amount_9x9 = 9
+ stormScreamer_amount_9x9 = 9
+ titan_amount_9x9 = 9
+ grandKhauatari_amount_9x9 = 9
+ doomcryer_amount_9x9 = 9
+
Index: org.l2j.gameserver.handler.admincommandhandlers;AdminCustom.java
===================================================================
--- org.l2j.gameserver.handler.admincommandhandlers;AdminCustom.java (revision 84)
+++ org.l2j.gameserver.handler.admincommandhandlers;AdminCustom.java (working copy)
+ package org.l2j.gameserver.handler.admincommandhandlers;
+
+ import java.util.logging.Logger;
+ import org.l2j.commons.concurrent.ThreadPool;
+ import mods.events.ArenaTask;
+ import org.l2j.gameserver.handler.IAdminCommandHandler;
+ import org.l2j.gameserver.model.actor.Player;
+
+
+ public class AdminCustom implements IAdminCommandHandler
+ {
+
+ private static final String[] ADMIN_COMMANDS =
+ {
+ "admin_tour"
+
+ };
+
+ protected static final Logger _log = Logger.getLogger(AdminCustom.class.getName());
+ public static boolean _arena_manual = false;
+
+ @Override
+ public boolean useAdminCommand(String command, Player activeChar)
+ {
+
+
+ if (command.equals("admin_tour"))
+ {
+ if (ArenaTask._started)
+ {
+ _log.info("----------------------------------------------------------------------------");
+ _log.info("[Tournament]: Event Finished.");
+ _log.info("----------------------------------------------------------------------------");
+ ArenaTask._aborted = true;
+ finishEventArena();
+ _arena_manual = true;
+
+ activeChar.sendMessage("SYS: Voce Finalizou o evento Tournament Manualmente..");
+ }
+ else
+ {
+ _log.info("----------------------------------------------------------------------------");
+ _log.info("[Tournament]: Event Started.");
+ _log.info("----------------------------------------------------------------------------");
+ initEventArena();
+ _arena_manual = true;
+ activeChar.sendMessage("SYS: Voce ativou o evento Tournament Manualmente..");
+ }
+ }
+ return true;
+ }
+
+ private static void initEventArena()
+ {
+ ThreadPool.schedule(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+
+ ArenaTask.SpawnEvent();
+ }
+ }, 10L);
+ }
+
+ private static void finishEventArena()
+ {
+ ThreadPool.schedule(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+
+ ArenaTask.finishEvent();
+ }
+ }, 10L);
+ }
+
+
+
+
+ @Override
+ public String[] getAdminCommandList()
+ {
+ return ADMIN_COMMANDS;
+ }
+ }
Index: org.l2j.gameserver.network;L2GameClient.java
===================================================================
--- org.l2j.gameserver.network;L2GameClient.java (revision 84)
+++ org.l2j.gameserver.network;L2GameClient.java (working copy)
public void run()
{
try
{
// we are going to manually save the char below thus we can force the cancel
if (_autoSaveInDB != null)
_autoSaveInDB.cancel(true);
+ Player player = getActiveChar();
+ if (player != null)
+ if (player.isArenaProtection())
+ {
+ player.setXYZ(ArenaTask.loc1x(), ArenaTask.loc1y(), ArenaTask.loc1z());
+ if (player.isInArenaEvent())
+ {
+ player.getAppearance().setTitleColor(player._originalTitleColorTournament);
+ player.setTitle(player._originalTitleTournament);
+ player.broadcastUserInfo();
+ player.broadcastTitleInfo();
+ }
+ }
Index: org.l2j.gameserver.network.DlgAnswer.java
===================================================================
--- org.l2j.gameserver.network.clientpackets;DlgAnswer.java (revision 84)
+++ norg.l2j.gameserver.network.clientpackets;DlgAnswer.java (working copy)
+ import org.l2j.gameserver.events.ArenaTask;
@Override
public void runImpl()
{
final Player activeChar = getClient().getActiveChar();
if (activeChar == null)
return;
if (_messageId == SystemMessageId.RESSURECTION_REQUEST_BY_S1.getId() || _messageId == SystemMessageId.DO_YOU_WANT_TO_BE_RESTORED.getId())
activeChar.reviveAnswer(_answer);
+ else if (_messageId == SystemMessageId.S1_WISHES_TO_SUMMON_YOU_FROM_S2_DO_YOU_ACCEPT.getId())
+ if (Announcements.isSummoning == true && _answer == 1)
+ activeChar.teleToLocation(ArenaTask.loc1x(), ArenaTask.loc1y(), ArenaTask.loc1z(), 125);
else
activeChar.teleportAnswer(_answer, _requesterId);
else if (_messageId == 1983 && Config.ALLOW_WEDDING)
activeChar.engageAnswer(_answer);
else if (_messageId == SystemMessageId.WOULD_YOU_LIKE_TO_OPEN_THE_GATE.getId())
activeChar.activateGate(_answer, 1);
else if (_messageId == SystemMessageId.WOULD_YOU_LIKE_TO_CLOSE_THE_GATE.getId())
activeChar.activateGate(_answer, 0);
}
Index: org.l2j.gameserver.handler;EnterWorld.java
===================================================================
--- org.l2j.gameserver.handler;EnterWorld.java (revision 84)
+++ org.l2j.gameserver.handler;EnterWorld.java (working copy)
+ import org.l2j.gameserver.events.ArenaTask;
+ if (ArenaTask.is_started() && Config.ARENA_MESSAGE_ENABLED)
+ activeChar.sendPacket(new ExShowScreenMessage(Config.ARENA_MESSAGE_TEXT, Config.ARENA_MESSAGE_TIME, 2, true));
- registerHandler(new AdminLevel());
+ registerHandler(new AdminLevel());
+ registerHandler(new AdminCustom());
Index: data\xml/adminCommands.xml
===================================================================
--- data\xml/adminCommands.xml (revision 84)
+++ data\xml/adminCommands.xml (working copy)
+ <!-- Eventos mods -->
+ <aCar name="admin_tour" accessLevel="7"/>
Index: org.l2j/Config.java
===================================================================
--- org.l2j/Config.java (revision 84)
+++ org.l2j/Config.java (working copy)
+ public static final String TOUR_FILE = "./config/events/tournament.properties";
+ /** Arena Event */
+ public static boolean TOURNAMENT_EVENT_START;
+ public static boolean TOURNAMENT_EVENT_TIME;
+ public static boolean TOURNAMENT_EVENT_SUMMON;
+ public static boolean TOURNAMENT_EVENT_ANNOUNCE;
+ public static int TOURNAMENT_TIME;
+ public static String[] TOURNAMENT_EVENT_INTERVAL_BY_TIME_OF_DAY;
+ public static String TITLE_COLOR_TEAM1;
+ public static String TITLE_COLOR_TEAM2;
+ public static String MSG_TEAM1;
+ public static String MSG_TEAM2;
+ public static boolean Allow_Same_HWID_On_Tournament;
+ public static int ARENA_NPC;
+ public static int NPC_locx;
+ public static int NPC_locy;
+ public static int NPC_locz;
+ public static int NPC_Heading;
+ public static int Tournament_locx;
+ public static int Tournament_locy;
+ public static int Tournament_locz;
+ public static boolean ALLOW_2X2_REGISTER;
+ public static boolean ALLOW_4X4_REGISTER;
+ public static boolean ALLOW_9X9_REGISTER;
+ public static boolean ALLOW_4X4_LOSTBUFF;
+ public static boolean ARENA_MESSAGE_ENABLED;
+ public static String ARENA_MESSAGE_TEXT;
+ public static int ARENA_MESSAGE_TIME;
+ public static int ARENA_EVENT_COUNT;
+ public static int[][] ARENA_EVENT_LOCS;
+ public static int ARENA_EVENT_COUNT_4X4;
+ public static int[][] ARENA_EVENT_LOCS_4X4;
+ public static int ARENA_EVENT_COUNT_9X9;
+ public static int[][] ARENA_EVENT_LOCS_9X9;
+ public static int duelist_COUNT_4X4;
+ public static int dreadnought_COUNT_4X4;
+ public static int tanker_COUNT_4X4;
+ public static int dagger_COUNT_4X4;
+ public static int archer_COUNT_4X4;
+ public static int bs_COUNT_4X4;
+ public static int archmage_COUNT_4X4;
+ public static int soultaker_COUNT_4X4;
+ public static int mysticMuse_COUNT_4X4;
+ public static int stormScreamer_COUNT_4X4;
+ public static int titan_COUNT_4X4;
+ public static int dominator_COUNT_4X4;
+ public static int doomcryer_COUNT_4X4;
+ public static int duelist_COUNT_9X9;
+ public static int dreadnought_COUNT_9X9;
+ public static int tanker_COUNT_9X9;
+ public static int dagger_COUNT_9X9;
+ public static int archer_COUNT_9X9;
+ public static int bs_COUNT_9X9;
+ public static int archmage_COUNT_9X9;
+ public static int soultaker_COUNT_9X9;
+ public static int mysticMuse_COUNT_9X9;
+ public static int stormScreamer_COUNT_9X9;
+ public static int titan_COUNT_9X9;
+ public static int grandKhauatari_COUNT_9X9;
+ public static int dominator_COUNT_9X9;
+ public static int doomcryer_COUNT_9X9;
+ public static int ARENA_PVP_AMOUNT;
+ public static int ARENA_REWARD_ID;
+ public static int ARENA_WIN_REWARD_COUNT;
+ public static int ARENA_LOST_REWARD_COUNT;
+ public static int ARENA_WIN_REWARD_COUNT_4X4;
+ public static int ARENA_LOST_REWARD_COUNT_4X4;
+ public static int ARENA_WIN_REWARD_COUNT_9X9;
+ public static int ARENA_LOST_REWARD_COUNT_9X9;
+ public static int ARENA_CHECK_INTERVAL;
+ public static int ARENA_CALL_INTERVAL;
+ public static int ARENA_WAIT_INTERVAL_4X4;
+ public static int ARENA_WAIT_INTERVAL_9X9;
+ public static int ARENA_WAIT_INTERVAL;
+ public static String TOURNAMENT_ID_RESTRICT;
+ public static List<Integer> TOURNAMENT_LISTID_RESTRICT;
+ public static boolean ARENA_SKILL_PROTECT;
+ public static List<Integer> ARENA_SKILL_LIST = new ArrayList<>();
+ public static List<Integer> ARENA_DISABLE_SKILL_LIST = new ArrayList<>();
+ public static List<Integer> ARENA_STOP_SKILL_LIST = new ArrayList<>();
+ public static List<Integer> ARENA_DISABLE_SKILL_LIST_PERM = new ArrayList<>();
+
+ /**
+ * Loads tournament settings.
+ */
+ private static final void loadTour()
+ {
+ final ExProperties tournament = initProperties(Config.TOUR_FILE);
+ TOURNAMENT_EVENT_START = tournament.getProperty("TournamentStartOn", false);
+ TOURNAMENT_EVENT_TIME = tournament.getProperty("TournamentAutoEvent", false);
+ TOURNAMENT_EVENT_SUMMON = tournament.getProperty("TournamentSummon", false);
+ TOURNAMENT_EVENT_ANNOUNCE = tournament.getProperty("TournamenAnnounce", false);
+
+ TOURNAMENT_EVENT_INTERVAL_BY_TIME_OF_DAY = tournament.getProperty("TournamentStartTime", "20:00").split(",");
+
+ TOURNAMENT_TIME = Integer.parseInt(tournament.getProperty("TournamentEventTime", "1"));
+
+ TITLE_COLOR_TEAM1 = tournament.getProperty("TitleColorTeam_1", "FFFFFF");
+ TITLE_COLOR_TEAM2 = tournament.getProperty("TitleColorTeam_2", "FFFFFF");
+
+ MSG_TEAM1 = tournament.getProperty("TitleTeam_1", "Team [1]");
+ MSG_TEAM2 = tournament.getProperty("TitleTeam_2", "Team [2]");
+
+ Allow_Same_HWID_On_Tournament = Boolean.parseBoolean(tournament.getProperty("Allow_Same_HWID_On_Tournament", "true"));
+
+ ARENA_NPC = Integer.parseInt(tournament.getProperty("NPCRegister", "1"));
+
+ NPC_locx = Integer.parseInt(tournament.getProperty("Locx", "1"));
+ NPC_locy = Integer.parseInt(tournament.getProperty("Locy", "1"));
+ NPC_locz = Integer.parseInt(tournament.getProperty("Locz", "1"));
+ NPC_Heading = Integer.parseInt(tournament.getProperty("Heading", "1"));
+
+ Tournament_locx = Integer.parseInt(tournament.getProperty("TournamentLocx", "1"));
+ Tournament_locy = Integer.parseInt(tournament.getProperty("TournamentLocy", "1"));
+ Tournament_locz = Integer.parseInt(tournament.getProperty("TournamentLocz", "1"));
+
+ ALLOW_2X2_REGISTER = Boolean.parseBoolean(tournament.getProperty("Allow2x2Register", "true"));
+ ALLOW_4X4_REGISTER = Boolean.parseBoolean(tournament.getProperty("Allow4x4Register", "true"));
+ ALLOW_9X9_REGISTER = Boolean.parseBoolean(tournament.getProperty("Allow9x9Register", "true"));
+
+ ALLOW_4X4_LOSTBUFF = Boolean.parseBoolean(tournament.getProperty("Allow4x4LostBuff", "false"));
+
+ ARENA_MESSAGE_ENABLED = Boolean.parseBoolean(tournament.getProperty("ScreenArenaMessageEnable", "false"));
+ ARENA_MESSAGE_TEXT = tournament.getProperty("ScreenArenaMessageText", "Welcome to L2J server!");
+ ARENA_MESSAGE_TIME = Integer.parseInt(tournament.getProperty("ScreenArenaMessageTime", "10")) * 1000;
+
+ String[] arenaLocs = tournament.getProperty("ArenasLoc", "").split(";");
+ String[] locSplit = null;
+ ARENA_EVENT_COUNT = arenaLocs.length;
+ ARENA_EVENT_LOCS = new int[ARENA_EVENT_COUNT][3];
+ for (int i = 0; i < ARENA_EVENT_COUNT; i++)
+ {
+ locSplit = arenaLocs[i].split(",");
+ for (int j = 0; j < 3; j++)
+ ARENA_EVENT_LOCS[i][j] = Integer.parseInt(locSplit[j].trim());
+ }
+ String[] arenaLocs4x4 = tournament.getProperty("Arenas4x4Loc", "").split(";");
+ String[] locSplit4x4 = null;
+ ARENA_EVENT_COUNT_4X4 = arenaLocs4x4.length;
+ ARENA_EVENT_LOCS_4X4 = new int[ARENA_EVENT_COUNT_4X4][3];
+ for (int i = 0; i < ARENA_EVENT_COUNT_4X4; i++)
+ {
+ locSplit4x4 = arenaLocs4x4[i].split(",");
+ for (int j = 0; j < 3; j++)
+ ARENA_EVENT_LOCS_4X4[i][j] = Integer.parseInt(locSplit4x4[j].trim());
+ }
+ String[] arenaLocs9x9 = tournament.getProperty("Arenas9x9Loc", "").split(";");
+ String[] locSplit8x8 = null;
+ ARENA_EVENT_COUNT_9X9 = arenaLocs9x9.length;
+ ARENA_EVENT_LOCS_9X9 = new int[ARENA_EVENT_COUNT_9X9][3];
+ int j;
+ for (int i = 0; i < ARENA_EVENT_COUNT_9X9; i++)
+ {
+ locSplit8x8 = arenaLocs9x9[i].split(",");
+ for (j = 0; j < 3; j++)
+ ARENA_EVENT_LOCS_9X9[i][j] = Integer.parseInt(locSplit8x8[j].trim());
+ }
+ duelist_COUNT_4X4 = tournament.getProperty("duelist_amount_4x4", 1);
+ dreadnought_COUNT_4X4 = tournament.getProperty("dreadnought_amount_4x4", 1);
+ tanker_COUNT_4X4 = tournament.getProperty("tanker_amount_4x4", 1);
+ dagger_COUNT_4X4 = tournament.getProperty("dagger_amount_4x4", 1);
+ archer_COUNT_4X4 = tournament.getProperty("archer_amount_4x4", 1);
+ bs_COUNT_4X4 = tournament.getProperty("bs_amount_4x4", 1);
+ archmage_COUNT_4X4 = tournament.getProperty("archmage_amount_4x4", 1);
+ soultaker_COUNT_4X4 = tournament.getProperty("soultaker_amount_4x4", 1);
+ mysticMuse_COUNT_4X4 = tournament.getProperty("mysticMuse_amount_4x4", 1);
+ stormScreamer_COUNT_4X4 = tournament.getProperty("stormScreamer_amount_4x4", 1);
+ titan_COUNT_4X4 = tournament.getProperty("titan_amount_4x4", 1);
+ dominator_COUNT_4X4 = tournament.getProperty("dominator_amount_4x4", 1);
+ doomcryer_COUNT_4X4 = tournament.getProperty("doomcryer_amount_4x4", 1);
+
+ duelist_COUNT_9X9 = tournament.getProperty("duelist_amount_9x9", 1);
+ dreadnought_COUNT_9X9 = tournament.getProperty("dreadnought_amount_9x9", 1);
+ tanker_COUNT_9X9 = tournament.getProperty("tanker_amount_9x9", 1);
+ dagger_COUNT_9X9 = tournament.getProperty("dagger_amount_9x9", 1);
+ archer_COUNT_9X9 = tournament.getProperty("archer_amount_9x9", 1);
+ bs_COUNT_9X9 = tournament.getProperty("bs_amount_9x9", 1);
+ archmage_COUNT_9X9 = tournament.getProperty("archmage_amount_9x9", 1);
+ soultaker_COUNT_9X9 = tournament.getProperty("soultaker_amount_9x9", 1);
+ mysticMuse_COUNT_9X9 = tournament.getProperty("mysticMuse_amount_9x9", 1);
+ stormScreamer_COUNT_9X9 = tournament.getProperty("stormScreamer_amount_9x9", 1);
+ titan_COUNT_9X9 = tournament.getProperty("titan_amount_9x9", 1);
+ grandKhauatari_COUNT_9X9 = tournament.getProperty("grandKhauatari_amount_9x9", 1);
+ dominator_COUNT_9X9 = tournament.getProperty("dominator_amount_9x9", 1);
+ doomcryer_COUNT_9X9 = tournament.getProperty("doomcryer_amount_9x9", 1);
+
+ ARENA_PVP_AMOUNT = tournament.getProperty("ArenaPvpJoin", 10);
+ ARENA_REWARD_ID = tournament.getProperty("ArenaRewardId", 57);
+ ARENA_WIN_REWARD_COUNT = tournament.getProperty("ArenaWinRewardCount", 1);
+ ARENA_LOST_REWARD_COUNT = tournament.getProperty("ArenaLostRewardCount", 1);
+
+ ARENA_WIN_REWARD_COUNT_4X4 = tournament.getProperty("ArenaWinRewardCount4x4", 1);
+ ARENA_LOST_REWARD_COUNT_4X4 = tournament.getProperty("ArenaLostRewardCount4x4", 1);
+
+ ARENA_WIN_REWARD_COUNT_9X9 = tournament.getProperty("ArenaWinRewardCount9x9", 1);
+ ARENA_LOST_REWARD_COUNT_9X9 = tournament.getProperty("ArenaLostRewardCount9x9", 1);
+
+ ARENA_CHECK_INTERVAL = tournament.getProperty("ArenaBattleCheckInterval", 15) * 1000;
+ ARENA_CALL_INTERVAL = tournament.getProperty("ArenaBattleCallInterval", 60);
+
+ ARENA_WAIT_INTERVAL = tournament.getProperty("ArenaBattleWaitInterval", 20);
+ ARENA_WAIT_INTERVAL_4X4 = tournament.getProperty("ArenaBattleWaitInterval4x4", 45);
+ ARENA_WAIT_INTERVAL_9X9 = tournament.getProperty("ArenaBattleWaitInterval9x9", 45);
+
+ TOURNAMENT_ID_RESTRICT = tournament.getProperty("ItemsRestriction");
+
+ TOURNAMENT_LISTID_RESTRICT = new ArrayList<>();
+ for (String id : TOURNAMENT_ID_RESTRICT.split(","))
+ TOURNAMENT_LISTID_RESTRICT.add(Integer.valueOf(Integer.parseInt(id)));
+ ARENA_SKILL_PROTECT = Boolean.parseBoolean(tournament.getProperty("ArenaSkillProtect", "false"));
+ for (String id : tournament.getProperty("ArenaDisableSkillList", "0").split(","))
+ ARENA_SKILL_LIST.add(Integer.valueOf(Integer.parseInt(id)));
+ for (String id : tournament.getProperty("DisableSkillList", "0").split(","))
+ ARENA_DISABLE_SKILL_LIST_PERM.add(Integer.valueOf(Integer.parseInt(id)));
+ for (String id : tournament.getProperty("ArenaDisableSkillList_noStart", "0").split(","))
+ ARENA_DISABLE_SKILL_LIST.add(Integer.valueOf(Integer.parseInt(id)));
+ for (String id : tournament.getProperty("ArenaStopSkillList", "0").split(","))
+ ARENA_STOP_SKILL_LIST.add(Integer.valueOf(Integer.parseInt(id)));
+ }
+
- // siege settings
- loadSieges();
+ // siege settings
+ loadSieges();
+ // tournament settings
+ loadTour();