Да простит меня великий Visor....Не удержалсо

Она появилась ПОСЛЕ создания дерьмотемы-оскорбления, или может это вранье и я написал ее ДО того, как была создана тема?
Не нужно передергивать факты - факты идут ИМЕННО в той последовательности как они написаны. Это тоже самое что кик спросил, а зачем ты писал в ответ - да потому что я не "терпила", что меня неизвестно кто оскорбляет, а я должен при этом сидеть тихо. Хочешь сидеть тихо когда тебя оскорбляют? Сиди.
На ЗГ этот чел же никого не оскорбляет, хамит только потихоньку. Легко быть героем, и рассказывать другим когда на форуме порядок.
Что ты думаешь, что он бы не стал там оскорблять людей? Да легко, но просто там он знает, что его поставят на место туда откуда он вылез за то то что он будет оскорблять людей.

Или ты ишешь оправдания? По факту получается что так.
Ты каким то образом прочитал больше чем я написал, а мне то всего было интересны причины исчезновения твоей подписи. После чего она появилась я знаю, а пропала почему?
 

Визор настолько ослеплен своим самомнением, повторюсь, беспочвенным, что аж перестал сообщения читать

Человек кривляется дальше.
Человек что же ты не пишешь оскорбления как вчера в чате, ты такой герой и ссыкнул? Кик не видел - но люди то видели.

Ещё раз прочти, хех.

Ты тут кичишься, мол, ФАКТЫ постишь? Ну так ты же вчера скринил чатик, когда я тебя, якобы, оскорблял?
В студию скриншоты.
 
Если бы я защищал троллей генка бы в бане не сидел как минимум. Но я перечитал все от А до Я. И я высказал то что я увидел в данной теме. Генка еще тот ушлый тип.
Да но он не сидит в бане, но написал тему-оскорбление и с другого аккаунта или второй раскручивают этот цирк дальше.
Генка-максимка может и ушлый тип, но на ЗГ таким дают карточки и удаляют их сообщения с оскорблениями ПО ПРАВИЛАМ - я же показывал, что высший его пилотаж там - это хамить новичкам.

Не нужно меня то винить в том, что генка или кто там ушлый - троли они естественно ушлые, но на то и берут модераторов, чтобы они их держали в пределах правил, а не подыгрывали им: легализовывали оскорбления и цирк.
 
Да но он не сидит в бане, но написал тему-оскорбление и с другого аккаунта или второй раскручивают этот цирк дальше.
Генка-максимка может и ушлый тип, но на ЗГ таким дают карточки и удаляют их сообщения с оскорблениями ПО ПРАВИЛАМ - я же показывал, что высший его пилотаж там - это хамить новичкам.

Не нужно меня то винить в том, что генка или кто там ушлый - троли они естественно ушлые, но на то и берут модераторов, чтобы они их держали в пределах правил, а не подыгрывали им: легализовывали оскорбления и цирк.
Тогда хочу спросить, почему ты не в бане ?
Правильно ты же хотел снять бан. С тебя сняли бан вместе с генкой, чем он лучше? Он оскорблял, ты поддался тоже оскорблял. Тебя не заставляли оскорблять. Есть такие чудо кнопки как ПОЖАЛОВАТЬСЯ.
 
Ты каким то образом прочитал больше чем я написал, а мне то всего было интересны причины исчезновения твоей подписи. После чего она появилась я знаю, а пропала почему?
Просто так, ты же не спросил почему чел написал оскорбление и втянул тебя в этот цирк. Но тебя интересует почему подпись. Потому что цирк, поскольку у меня появилось чуток времени и я этот цирк-гнойник с тролями вскрыл - то удалил - ведь в это нет больше нужны - раз до этого никто не замечал этого цирка, то наличие подписи не поможет этому аж никак.
А ты думал почему? Что я ссылкнул как и троль, который оскорблял меня в чате вчера, а тут сегодня ссыт тут писать теже оскорбления. Нет, я не ссылкнул и обратил внимания на очевидный цирк.
 
Ещё раз прочти, хех.

Ты тут кичишься, мол, ФАКТЫ постишь? Ну так ты же вчера скринил чатик, когда я тебя, якобы, оскорблял?
В студию скриншоты.

Что я ссылкнул как и троль, который оскорблял меня в чате вчера, а тут сегодня ссыт тут писать теже оскорбления.

Я буду цитировать до тех пор, пока ты не ответишь за слова.
 
Тогда хочу спросить, почему ты не в бане ?
Правильно ты же хотел снять бан. С тебя сняли бан вместе с генкой, чем он лучше? Он оскорблял, ты поддался тоже оскорблял. Тебя не заставляли оскорблять. Есть такие чудо кнопки как ПОЖАЛОВАТЬСЯ.
Я не в бане потому что он закончился.
С меня не сняли бан - было написано бан до 9 февраля 2016 года.

И посмотри, ты опять путаешь причину со следствием - причина эта дерьмотема, а не бан, который ты насунул удаляя мои сообщения.
У генки или как ты там его ласкательно называешь не было бана за эту тему, ты дал ему за какое-то другое сообщение, почему? да потому что нужно удалить сообщение - а оскорбление - это первое сообщение вместе с заголовком и тегами. Оно на месте, только исковеркано чуток, чтобы типа этот цирк был еще более легален.

Насчет кнопки пожаловаться - я что-то не заметил, чтобы ты или второй модератор удаляли мои сообщения по кнопке - их удаляли сразу, без кнопки.

Я буду цитировать до тех пор, пока ты не ответишь за слова.
Ты будешь кривляться и дальше. То есть легализация таких вот цирковых выступлений - это собственно легализация и всего этого дерьма.

Поэтому я и обращаю внимание администрации, что нужно либо эту дерьмотему удалить по правилам форума, либо ничего не делать, легализуя любые оскорбления тролей.
 
Я не в бане потому что он закончился.
С меня не сняли бан - было написано бан до 9 февраля 2016 года.

И посмотри, ты опять путаешь причину со следствием - причина эта дерьмотема, а не бан, который ты насунул удаляя мои сообщения.
У генки или как ты там его ласкательно называешь не было бана за эту тему, ты дал ему за какое-то другое сообщение, почему? да потому что нужно удалить сообщение - а оскорбление - это первое сообщение вместе с заголовком и тегами. Оно на месте, только исковеркано чуток, чтобы типа этот цирк был еще более легален.

Насчет кнопки пожаловаться - я что-то не заметил, чтобы ты или второй модератор удаляли мои сообщения по кнопке - их удаляли сразу, без кнопки.
Начнем с того что бан у тебя был до 14 числа до 19 55. То что вы с волондам там сделали я не знаю. И ты не мог видеть до какого числа у тебя бан.
Волонда сняли с администратора.
 
Начнем с того что бан у тебя был до 14 числа до 19 55. То что вы с волондам там сделали я не знаю. И ты не мог видеть до какого числа у тебя бан.
Волонда сняли с администратора.
Да ну да, попроси тебя забанить и посмотришь - там пишется до когда бан. Что-то ты либо путаешь, либо пытаешься выдать желаемое за действительно опять.

Ты просто пытаешь скрыть тот факт, что и ты натупил в том числе, участвуя в этом дерьмо-цирке забанив меня, вместо того, чтобы как ты говоришь поступить "по правилам".
Нельзя поступить "по правилам" не поступив по правилам - то есть ты сам себе противоречишь словами и действиями. Делаешь одно, а потом говоришь что это "по правилам".
 
Да ну да, попроси тебя забанить и посмотришь - там пишется до когда бан. Что-то ты либо путаешь, либо пытаешься выдать желаемое за действительно опять.
Бан был до 14 числа 19 55. Лично проверял в тот день когда с тебя волонд снял бан.
 
Ты будешь кривляться и дальше. То есть легализация таких вот цирковых выступлений - это собственно легализация и всего этого дерьма.

Поэтому я и обращаю внимание администрации, что нужно либо эту дерьмотему удалить по правилам форума, либо ничего не делать, легализуя любые оскорбления тролей.

Призываю рассмотреть возможность бана Visor123 за клевету и оскорбления.
 
Бан был до 14 числа 19 55. Лично проверял в тот день когда с тебя волонд снял бан.
Я не знаю снял ли Волонд или нет, я обратил внимания его что было написано до 9 февраля, а потом без даты, не ошибка ли это.

То есть ты сейчас просто раздуваешь цирк дальше, уже про бан.
Почему ты не забанил чела, который написал оскорбление в 1 посту? Пост еще на месте, но правда ты стер почему-то более плохие слова. Это же цирк называется, и уже ты выкручиваешься, расскажи, почему ты занил меня за то что я написал оскорбление на оскорбление? Причем я дал возможность висеть оскорблению полгода - то есть это было не сразу, что типа "обое" плохие.
Нет - ты прицепился ко мне и сейчас тоже, прицепись к тем кто оскорбляет меня.
 
Нет - ты прицепился ко мне и сейчас тоже, прицепись к тем кто оскорбляет меня.
Вот только проблема в том, что тебя никто не оскорбляет.
И не поддерживает тоже, кстати.
 
Ты будешь кривляться и дальше. То есть легализация таких вот цирковых выступлений - это собственно легализация и всего этого дерьма.

Поэтому я и обращаю внимание администрации, что нужно либо эту дерьмотему удалить по правилам форума, либо ничего не делать, легализуя любые оскорбления тролей.
Извини конечно, но надо лукавить, я вчера как раз читал тот чат, и не видел чтобы конкретно velafrys тебя оскорблял. Ты же соответственно в чате писал что делаешь скрины и ждешь администрация(которая куда-то пропала) чтобы показать их, так можно, пожалуйста, эти скрины?
 
Извини конечно, но надо лукавить, я вчера как раз читал тот чат, и не видел чтобы конкретно velafrys тебя оскорблял. Ты же соответственно в чате писал что делаешь скрины и ждешь администрация(которая куда-то пропала) чтобы показать их, так можно, пожалуйста, эти скрины?
Речь вообще не о нем, он появился в теме после создания темы. К примеру пусть тебя назовет говнокодером и что он там еще писал, тебе может это нормально, я же не знаю как ты воспринимаешь тролинг и оскорбления.

Я же не виноват, что нет логов чара, кик бы написал, что не пишите в чат, там все равно что написано. Или "чат не модерируется"
 
Я не знаю снял ли Волонд или нет, я обратил внимания его что было написано до 9 февраля, а потом без даты, не ошибка ли это.

То есть ты сейчас просто раздуваешь цирк дальше, уже про бан.
Почему ты не забанил чела, который написал оскорбление в 1 посту? Пост еще на месте, но правда ты стер почему-то более плохие слова. Это же цирк называется, и уже ты выкручиваешься, расскажи, почему ты занил меня за то что я написал оскорбление на оскорбление? Причем я дал возможность висеть оскорблению полгода - то есть это было не сразу, что типа "обое" плохие.
Нет - ты прицепился ко мне и сейчас тоже, прицепись к тем кто оскорбляет меня.
Я прицепился с той причиной что ты в данной теме реально "обосрался" ты же такой парень, всех натягиваешь, а тут вдруг тебя натянули по полной. И пытаешься выехать на том что висел пол года, и тебе было побоку.
Я закрывал темы. Ты хотел этой темы продолжение, получи продолжение.
 
Речь вообще не о нем, он появился в теме после создания темы. К примеру пусть тебя назовет говнокодером и что он там еще писал, тебе может это нормально, я же не знаю как ты воспринимаешь тролинг и оскорбления.
Тебя уже второй раз просят представить пруфы оскорблений, говнокодер.
Пруфы будут?
Уходи с форума, уходи с форума или не позиционируй себя как разработчик, раз не можешь терпеть критики. Я не называл тебя говнокодером с первого поста, а вполне вежливо с тобой общался, т.к. причин не было общаться с тобой иначе. А потом ты сам доказал, кто ты такой.
Такие дела.
 
Вот оскорбление - прошу принять меры.
Это не оскорбление, а нарицательное слово. Грубое, конечно, но часто применимое, если "разработчик" этого заслуживает.
У меня нет причин называть кого-то другого в этом треде говнокодером, но если и будут - бьюсь об заклад, кто угодно докажет обратное, и мне станет стыдно.
А вот ты не можешь доказать.

Опровергни тот факт, что ты не говнокодер.
 
Это не оскорбление, а нарицательное слово. Грубое, конечно, но часто применимое, если "разработчик" этого заслуживает.
У меня нет причин называть кого-то другого в этом треде говнокодером, но если и будут - бьюсь об заклад, кто угодно докажет обратное, и мне станет стыдно.
А вот ты не можешь доказать.

Опровергни тот факт, что ты не говнокодер.
Код:
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.IceQueenCastle2;

import java.util.Calendar;
import java.util.concurrent.ScheduledFuture;

import ai.group_template.L2AttackableAIScript;

import net.l2emuproject.gameserver.ThreadPoolManager;
import net.l2emuproject.gameserver.ai.CtrlIntention;
import net.l2emuproject.gameserver.datatables.NpcTable;
import net.l2emuproject.gameserver.datatables.SkillTable;
import net.l2emuproject.gameserver.instancemanager.InstanceManager;
import net.l2emuproject.gameserver.instancemanager.ZoneManager;
import net.l2emuproject.gameserver.instancemanager.InstanceManager.InstanceWorld;
import net.l2emuproject.gameserver.model.L2Effect;
import net.l2emuproject.gameserver.model.L2Party;
import net.l2emuproject.gameserver.model.L2Skill;
import net.l2emuproject.gameserver.model.L2Spawn;
import net.l2emuproject.gameserver.model.actor.L2Character;
import net.l2emuproject.gameserver.model.actor.L2Npc;
import net.l2emuproject.gameserver.model.actor.instance.L2DoorInstance;
import net.l2emuproject.gameserver.model.actor.instance.L2MonsterInstance;
import net.l2emuproject.gameserver.model.actor.instance.L2PcInstance;
import net.l2emuproject.gameserver.model.entity.Instance;
import net.l2emuproject.gameserver.model.quest.QuestState;
import net.l2emuproject.gameserver.model.quest.State;
import net.l2emuproject.gameserver.model.zone.L2BossZone;
import net.l2emuproject.gameserver.model.zone.L2Zone;
import net.l2emuproject.gameserver.network.SystemMessageId;
import net.l2emuproject.gameserver.network.serverpackets.ExShowScreenMessage;
import net.l2emuproject.gameserver.network.serverpackets.SystemMessage;
import net.l2emuproject.gameserver.skills.Formulas;
import net.l2emuproject.gameserver.templates.chars.L2NpcTemplate;
import net.l2emuproject.geoserver.model.Location;
import net.l2emuproject.tools.random.Rnd;

/**
*
* @author Visor123
* L2Emu Enterprise Server
*
*/

public class IceQueenCastle2 extends L2AttackableAIScript
{
    private static final boolean debug = false;
    private static final int INSTANCEID = 139;
    private static final String qn = "IceQueenCastle2";
    private static final String qnPrev = "10286_ReunionWithSirra";
    private static final int PLAYERS_MIN = 10;
    private static final int PLAYERS_MAX = 27;
   
    private static int _zoneScriptId = 200010; //script zone for start
    private static int _zoneBossId = 12015;
    private static L2BossZone _Zone;
    private static final Location _enterLoc = new Location(114025, -112300, -11200);
    private static final Location _centerLoc = new Location(114722, -114797, -11200);
   
    private static final int[][] _iceKnightLoc = {{113845,-116091,-11168,8264}
                                            ,{113381,-115622,-11168,8264}
                                            ,{113380,-113978,-11168,-8224}
                                            ,{113845,-113518,-11168,-8224}
                                            ,{115591,-113516,-11168,-24504}
                                            ,{116053,-113981,-11168,-24504}
                                            ,{116061,-115611,-11168,24804}
                                            ,{115597,-116080,-11168,24804}
                                            ,{112942,-115480,-10960,52}
                                            ,{112940,-115146,-10960,52}
                                            ,{112945,-114453,-10960,52}
                                            ,{112945,-114123,-10960,52}
                                            ,{116497,-114117,-10960,32724}
                                            ,{116499,-114454,-10960,32724}
                                            ,{116501,-115145,-10960,32724}
                                            ,{116502,-115473,-10960,32724}};
    private static final int _maxIceKnigth = 20; //OFF 160
    private static final int[][] _iceKnightLocThrone = {{114713,-115109,-11202,16456}
                                            ,{114008,-115080,-11202,3568}
                                            ,{114422,-115508,-11202,12400}
                                            ,{115023,-115508,-11202,20016}
                                            ,{115459,-115079,-11202,27936}};
    private static final int[] _maxIceKnigthThrone = {12,12,30};//first, second, third
    private static final int[][] _iceIceBreathLoc = {{114713,-115109,-11202,16456}
                                            ,{114008,-115080,-11202,3568}
                                            ,{114422,-115508,-11202,12400}
                                            ,{115023,-115508,-11202,20016}
                                            ,{115459,-115079,-11202,27936}};
    private static final int _maxIceBreath = 10;
    private static final int _maxIceStone = 6;
   
    private static final int FreyaOnThrone = 29177;
    private static final int Freya = 29179;
    private static final int[][] Freya_Skills = {{6274,1},{6275,1},{6276,1},{6277,1},{6278,1},{6279,1},{6280,1},{6282,1},{6283,1},{6284,1},{6285,1}};
    private static final int Glacier = 18853;
    private static final int Glakias = 25699;
    private static final int ArcheryKnight = 18855;
    private static final int ArchersBreath = 18854;
    /*private static final int FreyaController = 18930;
    private static final Location FreyaControllerLoc = new Location(114707,-114793,-11199,0);
    private static final int IceElementalController = 18931;
    private static final Location IceElementalControllerLoc = new Location(114707,-114795,-11199,0);
    private static final int IceCastleController = 18932;
    private static final Location IceCastleControllerLoc = new Location(114707,-114797,-11199,0);*/
    private static final int[] _zoneSkill = {6437,7};
   
    private static final int Kegor = 18851;
    private static final int Jinia = 18850;
    private static final int JINIA2 = 32781;
   
    static class Timer implements Runnable
    {
        @Override
        public void run()
        {
            if (time > 10)
            {
                world.BossZone.broadcastPacket(new ExShowScreenMessage("00 : "+time, 1500), world.instanceId); //need check
                ThreadPoolManager.scheduleGeneral(new Timer(time - 1, world), 1000L);
            }
        }
       
        private int time;
        private FreyaWorld world;
       
        public Timer(int _time, FreyaWorld _world)
        {
            time = _time;
            world = _world;
        }
    }
   
    private static class FreyaWorld extends InstanceWorld
    {
        L2AttackableAIScript _quest;
        L2Npc Npc_Freya;
        L2Npc Npc_Kegor;
        L2Npc Npc_Jinia;
        L2Npc Npc_Glakias;
        L2BossZone BossZone;
        int stage = 0;
        ScheduledFuture<?> knigthController = null;
        int countKnigth = 0;
        ScheduledFuture<?> knigthThroneController = null;
        int countKnigthThrone = 0;
        ScheduledFuture<?> breathController = null;
        ScheduledFuture<?> stoneController = null;
        int countIceBreath = 0;
        int countIceStone = 0;
        ScheduledFuture<?> zoneSkillController = null;
        ScheduledFuture<?> helpMoveController = null;
       
        public FreyaWorld(Instance inst, L2AttackableAIScript quest)
        {
            super(inst);
            _quest = quest;
        }
       
        @Override
        public void decayMe()
        {
            stopHelpMoveController();
            stopBreathController();
            stopKnigthController();
            stopKnigthThroneController();
            stopStoneController();
            stopZoneSkillController();
            super.decayMe();
        }

        synchronized void decCountKnigth()
        { countKnigth --; }
        synchronized void decCountKnigthThrone()
        { countKnigthThrone --; }
        synchronized void decCountIceBreath()
        { countIceBreath --; }
        synchronized void decCountIceStone()
        { countIceStone --; }
        synchronized void incCountKnigth()
        { countKnigth ++; }
        synchronized void incCountKnigthThrone()
        { countKnigthThrone ++; }
        synchronized void incCountIceBreath()
        { countIceBreath ++; }
        synchronized void incCountIceStone()
        { countIceStone ++; }
       
        synchronized void startStoneController()
        {
            if (stoneController != null)
                stoneController.cancel(false);
           
            stoneController =    ThreadPoolManager.scheduleGeneralAtFixedRate(new iceStoneController(_quest, this, 3), 1000L, 30000L);
        }
        synchronized void stopStoneController()
        {
            if (stoneController != null)
                stoneController.cancel(false);
            stoneController = null;
        }
        synchronized void startBreathController()
        {
            if (breathController != null)
                breathController.cancel(false);
           
            breathController = ThreadPoolManager.scheduleGeneralAtFixedRate(new breathController(_quest, this, 3), 1000L, 30000L);
        }
        synchronized void stopBreathController()
        {
            if (breathController != null)
                breathController.cancel(false);
            breathController = null;
        }
        synchronized void startZoneSkillController()
        {
            if (zoneSkillController != null)
                zoneSkillController.cancel(false);
           
            zoneSkillController = ThreadPoolManager.scheduleGeneralAtFixedRate(new zoneSkillController(_quest, this), 1000L, 10000L);
        }
        synchronized void stopZoneSkillController()
        {
            if (zoneSkillController != null)
                zoneSkillController.cancel(false);
            zoneSkillController = null;
            for (L2PcInstance player : getPlayers())
            {
                L2Effect effects[] = player.getAllEffects();
                for (int j = 0; j < effects.length; j++)
                {
                    L2Effect e = effects[j];
                    if (e != null && e.getSkill().getId() == 6437)
                        e.exit();
                }
            }
        }   
        synchronized void startKnigthController()
        {
            if (knigthController != null)
                knigthController.cancel(false);
           
            knigthController = ThreadPoolManager.scheduleGeneralAtFixedRate(new knigthController(_quest, this, 12), 1000L, 30000L);
        }
        synchronized void stopKnigthController()
        {
            if (knigthController != null)
                knigthController.cancel(false);
            knigthController = null;
        }
        synchronized void startKnigthThroneController()
        {
            if (knigthThroneController != null)
                knigthThroneController.cancel(false);
           
            knigthThroneController = ThreadPoolManager.scheduleGeneralAtFixedRate(new knigthThroneController(_quest, this, 5), 1000L, 30000L);
        }
        synchronized void stopKnigthThroneController()
        {
            if (knigthThroneController != null)
                knigthThroneController.cancel(false);
            knigthThroneController = null;
        }
        synchronized void startHelpMoveController()
        {
            if (helpMoveController != null)
                helpMoveController.cancel(false);
           
            helpMoveController = ThreadPoolManager.scheduleGeneralAtFixedRate(new helpMoveController(_quest, this), 10000L, 5000L);
        }
        synchronized void stopHelpMoveController()
        {
            if (helpMoveController != null)
                helpMoveController.cancel(false);
            helpMoveController = null;
        }
    }
   
    private static boolean checkConditionsReEnter(L2PcInstance player)
    {
        if (player.getLevel() < 82)
        {
            SystemMessage sm = new SystemMessage(SystemMessageId.C1_LEVEL_REQUIREMENT_NOT_SUFFICIENT);
            sm.addPcName(player);
            player.sendPacket(sm);
            return false;
        }
       
        return true;
    }
   
    private static boolean checkConditions(L2PcInstance player)
    {
        if (debug)
            return true;
        //custom check
        L2Party party = player.getParty();
        if (party == null || !party.isInCommandChannel())
        {
            if (party != null)
                party.broadcastToPartyMembers(new SystemMessage(SystemMessageId.NOT_IN_COMMAND_CHANNEL_CANT_ENTER));
            else
                player.sendPacket(SystemMessageId.NOT_IN_COMMAND_CHANNEL_CANT_ENTER);
            return false;
        }
        if (party.getCommandChannel().getChannelLeader() != player)
        {
            party.getCommandChannel().broadcastToChannelMembers(new SystemMessage(2765));
            return false;
        }
        int count = 0;
        for (int id : InstanceManager.getInstance().getInstances().keySet())
        {
            InstanceWorld inst = InstanceManager.getInstance().getWorld(id);
            if (inst != null && inst.templateId == INSTANCEID)
                count++;
            if (count >= 3)
            {
                party.getCommandChannel().broadcastToChannelMembers(new SystemMessage(2104));
                return false;
            }

        }
        if (party.getCommandChannel().getMembers().size() < PLAYERS_MIN)
        {
            party.getCommandChannel().broadcastToChannelMembers(new SystemMessage(2793).addNumber(10));
            return false;
        }
        if (party.getCommandChannel().getMembers().size() > PLAYERS_MAX)
        {
            party.getCommandChannel().broadcastToChannelMembers(new SystemMessage(2764));
            return false;
        }
        for (L2PcInstance plr : party.getCommandChannel().getMembers())
        {
            if (InstanceManager.getInstance().getPlayerWorld(plr) != null)
            {
                party.getCommandChannel().broadcastToChannelMembers(new SystemMessage(SystemMessageId.ALREADY_ENTERED_ANOTHER_INSTANCE_CANT_ENTER));
                return false;
            }
            if (plr.getLevel() < 82)
            {
                party.getCommandChannel().broadcastToChannelMembers(new SystemMessage(SystemMessageId.C1_LEVEL_REQUIREMENT_NOT_SUFFICIENT).addPcName(plr));
                return false;
            }
            if (!plr.isInsideRadius(player, 1000))
            {
                party.getCommandChannel().broadcastToChannelMembers(new SystemMessage(SystemMessageId.C1_IS_IN_LOCATION_THAT_CANNOT_BE_ENTERED).addPcName(plr));
                return false;
            }
            Long reentertime = InstanceManager.getInstance().getInstanceTime(plr.getObjectId(), INSTANCEID);
            boolean checkTime = true;
            /*QuestState qs = player.getQuestState(qnPrev);
            if (qs == null || !qs.isCompleted())
                checkTime = false;*/
            if (checkTime && System.currentTimeMillis() < reentertime)
            {
                SystemMessage sm = new SystemMessage(SystemMessageId.C1_MAY_NOT_REENTER_YET);
                sm.addPcName(plr);
                party.broadcastToPartyMembers(sm);
                return false;
            }
        }
        return true;
    }
   
    private synchronized void enterInstance(L2Npc npc, L2PcInstance player)
    {
        //_log.info("enterInstance:" + player.getName());
       
        InstanceWorld world = InstanceManager.getInstance().getPlayerWorld(player);
        if (world != null)
        {
            if (!(world instanceof FreyaWorld))
                player.sendPacket(SystemMessageId.ALREADY_ENTERED_ANOTHER_INSTANCE_CANT_ENTER);
            else if (checkConditionsReEnter(player))
                world.teleportInto(player, _enterLoc);
        }
        else if (checkConditions(player))
        {
            int instanceId = InstanceManager.getInstance().createDynamicInstance("IceQueenCastle2.xml");
            world = new FreyaWorld(InstanceManager.getInstance().getInstance(instanceId), this);
            world.templateId = INSTANCEID;
            Instance instance = InstanceManager.getInstance().getInstance(world.instanceId);
            int returnLoc[] = { player.getX(), player.getY(), player.getZ() };
            instance.setSpawnLoc(returnLoc);
            instance.setName("IceQueenCastle2");
            world.setStatus(0);
            ((FreyaWorld)world).BossZone = _Zone;
            _log.info("Instance Ice Queen's Castle created with id= "+world.instanceId+" created player "+player.getName());
           
            L2DoorInstance door = InstanceManager.getInstance().getInstance(world.instanceId).getDoor(23140101);
            if (door != null)
                door.openMe();           
           
            L2Party party = player.getParty();
            if (party == null)
            {
                QuestState hostQuest = player.getQuestState(qnPrev);

                if (hostQuest != null && hostQuest.getState() == State.STARTED && hostQuest.getInt("progress") == 2 && hostQuest.getInt("cond") == 5)
                {
                    hostQuest.set("cond", "6");
                    hostQuest.playSound("ItemSound.quest_middle");
                }
                _Zone.allowPlayerEntry(player, 300);
                instance.teleportInto(player, _enterLoc);
            }
            else
            {
                if (party.isInCommandChannel())
                {
                    for (L2PcInstance partyMember : party.getCommandChannel().getMembers())
                    {
                        QuestState hostQuest = partyMember.getQuestState(qnPrev);

                        if (hostQuest != null && hostQuest.getState() == State.STARTED && hostQuest.getInt("progress") == 2 && hostQuest.getInt("cond") == 5)
                        {
                            hostQuest.set("cond", "6");
                            hostQuest.playSound("ItemSound.quest_middle");
                        }
                        _Zone.allowPlayerEntry(partyMember, 300);
                        instance.teleportInto(partyMember, _enterLoc);
                    }
                }
                else
                {
                    for (L2PcInstance partyMember : party.getPartyMembers())
                    {
                        QuestState hostQuest = partyMember.getQuestState(qnPrev);

                        if (hostQuest != null && hostQuest.getState() == State.STARTED && hostQuest.getInt("progress") == 2 && hostQuest.getInt("cond") == 5)
                        {
                            hostQuest.set("cond", "6");
                            hostQuest.playSound("ItemSound.quest_middle");
                        }
                        _Zone.allowPlayerEntry(partyMember, 300);
                        instance.teleportInto(partyMember, _enterLoc);
                    }
                }
            }
        }
    }
   
    private static L2Npc spawn(int npcId, int X, int Y, int Z, int head, FreyaWorld world)
    {
        try
        {
            L2NpcTemplate template = NpcTable.getInstance().getTemplate(npcId);
            if (template != null)
            {
                L2Spawn spawn = new L2Spawn(template);
                spawn.setHeading(head);
                spawn.setLocx(X);
                spawn.setLocy(Y);
                spawn.setLocz(Z + 20);
                spawn.setInstanceId(world.instanceId);
                //spawn.setAmount(spawn.getAmount() + 1);
                spawn.setAmount(1);
                spawn.stopRespawn();
                //spawn.setOnKillDelay(1500);
                return spawn.doSpawn();
            }
        }
        catch (Exception e1)
        {
            _log.info((new StringBuilder()).append("Freya: Could not spawn Npc ").append(npcId).toString());
        }
        return null;
    }
   
    public static void allowBossZone(FreyaWorld world)
    {
        for (L2PcInstance player : world.getPlayers())
        {
            world.BossZone.allowPlayerEntry(player, 300);
        }
    }
   
    public static void startStage(FreyaWorld world)
    {
        //_log.info("startStage: " + world.stage);
        if (InstanceManager.getInstance().getInstance(world.instanceId) == null) return;
        final FreyaWorld Wworld = world;
        if (world.stage == 1)
        {
            L2DoorInstance door = world.getSelfInstance().getDoor(23140101);
            if (door != null)
                door.closeMe();           
            allowBossZone(world);
            world.BossZone.broadcastMovie(15, world.instanceId);

            ThreadPoolManager.scheduleGeneral(new Runnable()
            {
                public void run()
                {
                    Wworld.Npc_Freya = spawn(FreyaOnThrone, 114720, -117068, -11078, 16384, Wworld);
                    ThreadPoolManager.scheduleGeneral(new Runnable()
                    {
                        public void run()
                        {
                            Wworld.BossZone.broadcastPacket(new ExShowScreenMessage(1801086, 6000, 1, -1, true), Wworld.instanceId);
                            Wworld.startStoneController();
                            Wworld.startKnigthController();
                            Wworld.startKnigthThroneController();
                            Wworld.startZoneSkillController();
                            Wworld.startHelpMoveController();
                        }
                    }, 1000);
                    ThreadPoolManager.scheduleGeneral(new Runnable()
                    {
                        public void run()
                        {
                            Wworld.startBreathController();
                            moveTo(Wworld.Npc_Freya, _centerLoc);
                        }
                    }, 5000);
                }
            }, 53500);
        }
        if (world.stage == 2)
        {
            allowBossZone(world);
            world.BossZone.broadcastMovie(16, world.instanceId);
            ThreadPoolManager.scheduleGeneral(new Runnable()
            {
                public void run()
                {
                    Wworld.Npc_Freya = spawn(FreyaOnThrone, 114719, -117450, -10673, 16384, Wworld);
                    Wworld.Npc_Freya.setIsOverloaded(true);
                    Wworld.Npc_Freya.setIsInvul(true);
                    ThreadPoolManager.scheduleGeneral(new IceQueenCastle2.Timer(60, Wworld), 100);
                    ThreadPoolManager.scheduleGeneral(new Runnable()
                    {
                        public void run()
                        {
                            Wworld.BossZone.broadcastPacket(new ExShowScreenMessage(1801087, 6000, 1, -1, true), Wworld.instanceId);
                            Wworld.startStoneController();
                            Wworld.startBreathController();
                            Wworld.startKnigthController();
                            Wworld.startKnigthThroneController();
                            Wworld.startZoneSkillController();
                            Wworld.startHelpMoveController();
                        }
                    }, 60100);
                }
            }, 21100);
        }
        if (world.stage == 3)
        {
            allowBossZone(world);
            world.BossZone.broadcastMovie(17, world.instanceId);
            ThreadPoolManager.scheduleGeneral(new Runnable()
            {
                public void run()
                {
                    Wworld.setStatus(Wworld.status + 1);
                    if (Wworld.Npc_Freya != null)
                        Wworld.Npc_Freya.deleteMe();
                    Wworld.Npc_Freya = spawn(Freya, 114720, -117068, -11078, 16384, Wworld);
                    Wworld.BossZone.broadcastPacket(new ExShowScreenMessage(1801088, 6000, 1, -1, true), Wworld.instanceId);
                    Wworld.startStoneController();
                    Wworld.startBreathController();
                    Wworld.startKnigthController();
                    Wworld.startKnigthThroneController();
                    Wworld.startZoneSkillController();
                    Wworld.startHelpMoveController();
                    moveTo(Wworld.Npc_Freya, _centerLoc);
                    setInstanceReenterTime(Wworld);
                }
            }, 21600);
        }
    }
   
    private void stopAll(FreyaWorld world)
    {
        world.stopHelpMoveController();
        world.stopBreathController();
        world.stopKnigthController();
        world.stopKnigthThroneController();
        world.stopStoneController();
        world.stopZoneSkillController();

        for (L2PcInstance player : world.getPlayers())
        {
            player.abortCast();
            player.abortAttack();
            player.getAI().stopAutoAttack();
            player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
            player.setIsImmobilized(true);
            player.setIsInvul(true);
        }
        for (L2Npc npc : world.getNpcs())
        {
            if (npc instanceof L2MonsterInstance)
            {
                npc.setIsInvul(true);
                npc.abortCast();
                npc.abortAttack();
                npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
                npc.setIsImmobilized(true);
            }
        }
        if (world.Npc_Freya != null)
        {
            world.Npc_Freya.abortCast();
            world.Npc_Freya.abortAttack();
            world.Npc_Freya.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
            world.Npc_Freya.setIsImmobilized(true);
            world.Npc_Freya.setIsInvul(true);
        }
        if (world.Npc_Glakias != null)
        {
            world.Npc_Glakias.abortCast();
            world.Npc_Glakias.abortAttack();
            world.Npc_Glakias.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
            world.Npc_Glakias.setIsImmobilized(true);
            world.Npc_Glakias.setIsInvul(true);
        }
    }
   
    private void startAll(FreyaWorld world)
    {
        for (L2Npc npc : world.getNpcs())
        {
            if (npc instanceof L2MonsterInstance)
            {
                npc.setIsInvul(false);
                if (npc.getNpcId() != Glacier)
                    npc.setIsImmobilized(false);
                npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
            }
        }
        if (world.Npc_Freya != null)
        {
            world.Npc_Freya.setIsImmobilized(false);
            world.Npc_Freya.setIsInvul(false);
            world.Npc_Freya.getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
        }
        if (world.Npc_Glakias != null)
        {
            world.Npc_Glakias.setIsImmobilized(false);
            world.Npc_Glakias.setIsInvul(false);
            world.Npc_Glakias.getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
        }
        for (L2PcInstance player : world.getPlayers())
        {
            player.setIsImmobilized(false);
            player.setIsInvul(false);
        }
        world.startBreathController();
        world.startKnigthController();
        world.startKnigthThroneController();
        world.startStoneController();
        world.startZoneSkillController();
        world.startHelpMoveController();
    }
   
    private static void endStage(FreyaWorld world)
    {
        world.stopHelpMoveController();
        world.stopBreathController();
        world.stopKnigthController();
        world.stopKnigthThroneController();
        world.stopStoneController();
        world.stopZoneSkillController();
       
        for (L2PcInstance player : world.getPlayers())
        {
            player.abortCast();
            player.abortAttack();
            player.getAI().stopAutoAttack();
            player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
        }
       
        for (L2Npc npc : world.getNpcs())
        {
            if (npc instanceof L2MonsterInstance)
                npc.deleteMe();
        }
        synchronized(world)
        {
            world.countIceBreath = 0;
            world.countIceStone = 0;
            world.countKnigth = 0;
            world.countKnigthThrone = 0;
           
            if (world.Npc_Jinia != null)
            {
                world.Npc_Jinia.deleteMe();
                world.Npc_Jinia = null;
            }
            if (world.Npc_Kegor != null)
            {
                world.Npc_Kegor.deleteMe();
                world.Npc_Kegor = null;
            }
            if (world.Npc_Freya != null)
            {
                world.Npc_Freya.deleteMe();
                world.Npc_Freya = null;
            }
            if (world.Npc_Glakias != null)
            {
                world.Npc_Glakias.deleteMe();
                world.Npc_Glakias = null;
            }
        }
    }
   
    private static long generateUpdateTime()
    {
        Calendar result = Calendar.getInstance();
        result.setTimeInMillis(System.currentTimeMillis());
        if (result.get(Calendar.DAY_OF_WEEK) < Calendar.WEDNESDAY)
        {
            if (result.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
                result.add(Calendar.DATE,1);
            result.set(Calendar.DAY_OF_WEEK,Calendar.WEDNESDAY);
        }
        else if (result.get(Calendar.DAY_OF_WEEK) < Calendar.SATURDAY && result.get(Calendar.DAY_OF_WEEK) > Calendar.WEDNESDAY)
            result.set(Calendar.DAY_OF_WEEK,Calendar.SATURDAY);
        else
        {
            if (result.get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY)
            {
                if (result.get(Calendar.HOUR_OF_DAY) < 6 || result.get(Calendar.HOUR_OF_DAY) == 6 && result.get(Calendar.MINUTE) < 30)
                    result.set(Calendar.DAY_OF_WEEK,Calendar.WEDNESDAY);
                else
                    result.set(Calendar.DAY_OF_WEEK,Calendar.SATURDAY);
            }
            else if (result.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY)
            {
                if (result.get(Calendar.HOUR_OF_DAY) < 6 || result.get(Calendar.HOUR_OF_DAY) == 6 && result.get(Calendar.MINUTE) < 30)
                    result.set(Calendar.DAY_OF_WEEK,Calendar.SATURDAY);
                else
                {
                    result.add(Calendar.DATE,2);
                    result.set(Calendar.DAY_OF_WEEK,Calendar.WEDNESDAY);
                }
            }
        }
        result.set(Calendar.HOUR_OF_DAY,6);
        result.set(Calendar.MINUTE,30);
        result.set(Calendar.SECOND,0);
        return result.getTimeInMillis();
    }
   
    @Override
    public String onEnterZone(L2Character character, L2Zone zone)
    {
        if ((character instanceof L2PcInstance) && (character.getInstanceId() > 0))
        {
            //_log.info("onEnterZone: "+ zone.getId() + "  Zone Name: "+ zone.getName());
            InstanceWorld tmpworld = InstanceManager.getInstance().getWorld(character.getInstanceId());
            //_log.info("freya2 onEnterZone tmpworld="+tmpworld.getClass().getCanonicalName());
            if (tmpworld != null && tmpworld.templateId == INSTANCEID)
            {
                //_log.info("onEnterZone tmpworld.templateId="+tmpworld.templateId+" INSTANCEID="+INSTANCEID);
                final FreyaWorld world = (FreyaWorld) tmpworld;
                //_log.info("zone.getId(): " + zone.getId() + "  world.status: " + world.status);
                if (zone.getId() == _zoneScriptId && world.status < 1)
                {
                    world.setStatus(1);
                    ThreadPoolManager.scheduleGeneral(new Runnable()
                    {
                        @Override
                        public void run()
                        {
                            world.stage = 1;
                            IceQueenCastle2.startStage(world);
                        }
                    }, 180000); //3 min
                }
            }
            }
        return null;
    }
   
    @Override
    public String onKill(L2Npc npc, L2PcInstance player, boolean isPet)
    {
        if (npc.getInstanceId() > 0)
        {
            InstanceWorld tmpworld = InstanceManager.getInstance().getWorld(npc.getInstanceId());
            if (tmpworld instanceof FreyaWorld)
            {
                final FreyaWorld world = (FreyaWorld) tmpworld;
                if (npc.getNpcId() == FreyaOnThrone && world.status == 1)
                {
                    endStage(world);
                    world.setStatus(2);
                    world.stage = 2;
                    startStage(world);
                }
                else if (npc.getNpcId() == ArcheryKnight)
                {
                    if (npc.getTag() != null && (Integer)npc.getTag() == 1)
                        world.decCountKnigthThrone();
                    else
                        world.decCountKnigth();
                   
                    if (world.status >= 2 && world.status < 12)
                    {
                        world.setStatus(world.status + 1);
                        if (world.status >= 12)
                        {
                            allowBossZone(world);
                            world.BossZone.broadcastMovie(23, world.instanceId);
                            stopAll(world);
                            ThreadPoolManager.scheduleGeneral(new Runnable()
                            {
                                @Override
                                public void run()
                                {
                                    world.Npc_Glakias = IceQueenCastle2.spawn(Glakias, 114722, -114797, -11200, 16384, world);
                                    startAll(world);
                                }
                            }, 7000L);
                        }
                    }
                }
                else if (npc.getNpcId() == ArchersBreath)
                {
                    world.decCountIceBreath();
                }
                else if (npc.getNpcId() == Glakias && world.status == 12)
                {
                    world.Npc_Glakias = null;
                    world.setStatus(world.status + 1);
                    endStage(world);
                    ThreadPoolManager.scheduleGeneral(new Timer(60, world), 100L);
                    ThreadPoolManager.scheduleGeneral(new Runnable()
                    {
                        @Override
                        public void run()
                        {
                            world.stage = 3;
                            IceQueenCastle2.startStage(world);
                        }
                    }, 60100L);
                }
                else if (npc.getNpcId() == Freya/* && world.status == 15*/)
                {
                    world.setStatus(16/*world.status + 1*/);
                    endStage(world);
                    //complete quest 10286_ReunionWithSirra
                    for (L2PcInstance player1 : world.getPlayers())
                    {
                        if (player1 != null)
                        {
                            QuestState qs = player1.getQuestState(qnPrev);
                            if (qs != null && !qs.isCompleted() && qs.getInt("progress") == 2 && qs.getInt("cond") == 6)
                            {
                                qs.set("progress", "3");
                                qs.set("cond", "7");
                                qs.playSound("ItemSound.quest_middle");
                            }
                        }
                    }
                    allowBossZone(world);
                    world.BossZone.broadcastMovie(19, world.instanceId);
                    ThreadPoolManager.scheduleGeneral(new Runnable()
                    {
                        @Override
                        public void run()
                        {
                            world.setStatus(world.status + 1);
                        }
                    }, 16000L);
                    world.getSelfInstance().setDuration(5); //duration 5 min
                }
                else if (npc.getNpcId() == Glacier)
                {
                    npc.setDisplayEffect(3);
                    world.decCountIceStone();
                    addSpawn(ArchersBreath, npc.getX(), npc.getY(), npc.getZ(), npc.getHeading(), true, 0, false, world.instanceId);
                    world.incCountIceBreath();
                }
            }
        }
        return null;
    }
   
    private static void setInstanceReenterTime(InstanceWorld world)
    {
        if (world != null)
        {
            try
            {
                long nextUpdate = generateUpdateTime();
               
                // set instance reenter time for all allowed players
                for (L2PcInstance player : world.getPlayers())
                {
                    if (player != null)
                        InstanceManager.getInstance().setInstanceTime(player.getObjectId(), INSTANCEID, nextUpdate);
                }
            }
            catch (Exception e) {
                // TODO: handle exception
            }
        }
    }
   
    @Override
    public String onAttack(L2Npc npc, L2PcInstance player, int damage, boolean isPet)
    {
        if (npc.getInstanceId() > 0)
        {
            InstanceWorld tmpworld = InstanceManager.getInstance().getWorld(npc.getInstanceId());
            if (tmpworld instanceof FreyaWorld && tmpworld.templateId == INSTANCEID)
            {
                final FreyaWorld world = (FreyaWorld) tmpworld;
                if (npc.getNpcId() == Freya && npc.getCurrentHp() < npc.getMaxHp() * 0.45000000000000001D && world.status == 14)
                {
                    world.setStatus(world.status + 1);
                    stopAll(world);
                    allowBossZone(world);
                    world.BossZone.broadcastMovie(18, world.instanceId);
                    ThreadPoolManager.scheduleGeneral(new Runnable()
                    {
                       
                        @Override
                        public void run()
                        {
                            startAll(world);
                            world.Npc_Kegor = IceQueenCastle2.spawn(Kegor, 114690, -114700, -11200, -16260, world);
                            world.Npc_Jinia = IceQueenCastle2.spawn(Jinia, 114727, -114700, -11200, -16260, world);
                            world.BossZone.broadcastPacket(new ExShowScreenMessage(1801089, 6000, 1, -1, true), world.instanceId);
                        }
                       
                    }, 28000L);
                }
                else if (npc.getNpcId() == ArcheryKnight && npc.isImmobilized())
                {
                    startQuestTimer("startAggro", 200, npc, null);
                }
            }
        }
        return super.onAttack(npc, player, damage, isPet);
    }
   
    static class breathController implements Runnable
    {
        private L2AttackableAIScript _quest;
        private FreyaWorld ww;
        private int count;
        public breathController(L2AttackableAIScript quest, FreyaWorld world, int startCount)
        {
            _quest = quest;
            ww = world;
            count = startCount;
        }
       
        @Override
        public void run()
        {
            if (ww != null && ww.countIceBreath < _maxIceBreath)
            {
                for (int i = 0; i < count; i++)
                {
                    if (ww.countIceBreath >= _maxIceBreath) return;
                   
                    int[] loc = _iceIceBreathLoc[Rnd.get(0, _iceIceBreathLoc.length - 1)];
                   
                    _quest.addSpawn(ArchersBreath, loc[0], loc[1], loc[2], loc[3], true, 0, false, ww.instanceId);
                    ww.incCountIceBreath();
                }
            }
        }
    }
   
    static class iceStoneController implements Runnable
    {
        private L2AttackableAIScript _quest;
        private FreyaWorld ww;
        private int count;
        public iceStoneController(L2AttackableAIScript quest, FreyaWorld world, int startCount)
        {
            _quest = quest;
            ww = world;
            count = startCount;
        }
       
        @Override
        public void run()
        {
            if (ww != null && ww.countIceStone < _maxIceStone)
            {
                for (int i = 0; i < count; i++)
                {
                    if (ww.countIceStone >= _maxIceStone) return;
                   
                    int[] loc = _iceIceBreathLoc[Rnd.get(0, _iceIceBreathLoc.length - 1)];
                   
                    _quest.addSpawn(Glacier, loc[0], loc[1], loc[2], loc[3], true, 0, false, ww.instanceId);
                    ww.incCountIceStone();
                }
                count = 1;
            }
        }
    }
   
    static class zoneSkillController implements Runnable
    {
        //private L2AttackableAIScript _quest;
        private FreyaWorld ww;
        public zoneSkillController(L2AttackableAIScript quest, FreyaWorld world)
        {
            //_quest = quest;
            ww = world;
        }
       
        @Override
        public void run()
        {
            if (ww != null && ww.countIceStone > 0)
            {
                int skillLvl = Rnd.get(1, _zoneSkill[1]);
                L2Skill skill = SkillTable.getInstance().getInfo(_zoneSkill[0], skillLvl);
                for (L2PcInstance player : ww.getPlayers())
                {
                    if (Formulas.calcSkillSuccess(player, player, skill, (byte)0, false, false, false))
                        skill.getEffects(player, player);
                }
            }
           
        }
    }
   
    static class knigthController implements Runnable
    {
        private L2AttackableAIScript _quest;
        private FreyaWorld ww;
        private int count;
        public knigthController(L2AttackableAIScript quest, FreyaWorld world, int startCount)
        {
            _quest = quest;
            ww = world;
            count = startCount;
        }
       
        @Override
        public void run()
        {
            if (ww != null && ww.countKnigth < _maxIceKnigth)
            {
                for (int i = 0; i < count; i++)
                {
                    if (ww.countKnigth >= _maxIceKnigth) return;
                   
                    int[] loc = _iceKnightLoc[Rnd.get(0, _iceKnightLoc.length - 1)];
                   
                    L2Npc knight = _quest.addSpawn(ArcheryKnight, loc[0], loc[1], loc[2], loc[3], true, 0, false, ww.instanceId);
                    if (knight != null)
                    {
                        ww.incCountKnigth();
                        knight.setIsImmobilized(true);
                        knight.setDisplayEffect(1);
                        _quest.startQuestTimer("startAggro", 20000L, knight, null);
                    }
                }
            }
        }
    }
   
    static class knigthThroneController implements Runnable
    {
        private L2AttackableAIScript _quest;
        private FreyaWorld ww;
        private int count;
        public knigthThroneController(L2AttackableAIScript quest, FreyaWorld world, int startCount)
        {
            _quest = quest;
            ww = world;
            count = startCount;
        }
       
        @Override
        public void run()
        {
            if (ww != null && ww.countKnigthThrone < _maxIceKnigthThrone[ww.stage - 1])
            {
                for (int i = 0; i < count; i++)
                {
                    if (ww.countKnigthThrone >= _maxIceKnigthThrone[ww.stage - 1]) return;
                   
                    int[] loc = _iceKnightLocThrone[Rnd.get(0, _iceKnightLocThrone.length - 1)];
                   
                    L2Npc knight = _quest.addSpawn(ArcheryKnight, loc[0], loc[1], loc[2], loc[3], true, 0, false, ww.instanceId);
                    if (knight != null)
                    {
                        knight.setTag((Integer)1);
                        ww.incCountKnigthThrone();
                    }
                }
            }
        }
    }
   
    static class helpMoveController implements Runnable
    {
        private L2AttackableAIScript _quest;
        private FreyaWorld ww;
        public helpMoveController(L2AttackableAIScript quest, FreyaWorld world)
        {
            _quest = quest;
            ww = world;
        }
       
        @Override
        public void run()
        {
            if (ww != null)
            {
                for (L2Npc npc : ww.getNpcs())
                {
                    if (npc != null && npc != ww.Npc_Freya && npc != ww.Npc_Glakias && npc != ww.Npc_Jinia && npc != ww.Npc_Kegor && !npc.isImmobilized() && !npc.isInCombat())
                        _quest.startQuestTimer("moveTo", Rnd.get(200, 800), npc, null);
                }
            }
        }
    }
   
    private static void moveTo(L2Npc npc, Location loc)
    {
        if (npc != null)
        {
            npc.setRunning();
            npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(loc.getX(), loc.getY(), loc.getZ()), true);
            if (npc.getSpawn() != null)
            {
                npc.getSpawn().setLocx(loc.getX());
                npc.getSpawn().setLocy(loc.getY());
                npc.getSpawn().setLocz(loc.getZ());
            }
        }
    }
   
    @Override
    public final String onSpawn(L2Npc npc)
    {
        if (npc.getNpcId() == Glacier)
        {
            npc.setDisplayEffect(1);
            npc.setIsImmobilized(true);
            startQuestTimer("changeEffect", 1900L, npc, null);
        }
        npc.setIsNoAnimation(true);
        return null;
    }
   
    @Override
    public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
    {
        if (npc != null && npc.getInstanceId() > 0 && InstanceManager.getInstance().getWorld(npc.getInstanceId()) != null && InstanceManager.getInstance().getWorld(npc.getInstanceId()).templateId == INSTANCEID)
        {
            FreyaWorld world = (FreyaWorld) InstanceManager.getInstance().getWorld(npc.getInstanceId());
            if (event.equalsIgnoreCase("changeEffect"))
            {
                //npc.setIsImmobilized(false);
                npc.setDisplayEffect(2);
                npc.broadcastFullInfo();
            }
            else if (event.equalsIgnoreCase("startAggro"))
            {
                npc.setIsImmobilized(false);
                npc.setDisplayEffect(2);
                npc.broadcastFullInfo();
            }
            else if (event.equalsIgnoreCase("moveTo"))
            {
                if (!npc.isImmobilized() && !npc.isInCombat())
                {
                    if (Rnd.chance100(50) && !world.getPlayers().isEmpty())
                    {
                        try
                        {
                            L2PcInstance target = world.getSelfInstance().getRandomPlayer();
                            if (target != null)
                            {
                                npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
                                return null;
                            }
                           
                        }
                        catch (Exception e) {
                            // TODO: handle exception
                            startQuestTimer("moveTo", 3000L, npc, null);
                        }
                    }
                    Location toLoc = _centerLoc;
                    if (world.Npc_Glakias != null)
                        toLoc = world.Npc_Glakias.getLocation();
                    else if (world.Npc_Freya != null && world.stage != 2)
                        toLoc = world.Npc_Freya.getLocation();
                    if (!npc.isInsideRadius(toLoc.getX(), toLoc.getY(), toLoc.getZ(), 500))
                        moveTo(npc, toLoc);
                }
            }
        }
        return null;
    }
   
    @Override
    public String onTalk(L2Npc npc, L2PcInstance player)
    {
        int npcId = npc.getNpcId();
        if (npcId == JINIA2)
        {
            enterInstance(npc, player);
        }
        return "";
    }
   
    public IceQueenCastle2(int id, String name, String descr)
    {
        super(id, name, descr);
        addEnterZoneId(_zoneScriptId);
        addStartNpc(JINIA2);
        addTalkId(JINIA2);
        addKillId(FreyaOnThrone);
        addKillId(ArcheryKnight);
        addSpawnId(ArcheryKnight);
        addKillId(ArchersBreath);
        addSpawnId(ArchersBreath);
        addKillId(Glakias);
        addKillId(Freya);
        addKillId(Glacier);
        addAttackId(Freya);
        addAttackId(ArcheryKnight);
        addSpawnId(Glacier);
        registerSkillsForNpc(Freya, Freya_Skills);

        _Zone = (L2BossZone)ZoneManager.getInstance().getZoneById(_zoneBossId);;       
}
   
    public static void main(String args[])
    {
        new IceQueenCastle2(-1, qn, "instances");
    }
}
Нет, не говнокодер.
 
Назад
Сверху Снизу