Skip to content
La2Base
Home
DownloadsWikiForumFAQ
Search
ruen
Sign up Login
HomeFilesWikiLogin
  • Home
  • Downloads
  • Wiki
  • FAQ
  • Contact Us
  • About
  • Rules
  • Privacy
  • Terms of Service

© 2026 la2base.com · All rights reserved

ruen
Forum/Форум для новичков[JAVA]/[help] Настрйока епик РБ ВАлика ,Антараса
Search

[help] Настрйока епик РБ ВАлика ,Антараса

16 replies181 viewsCurrently viewing: 1
Fix009
Fix009

User

Бывалый

Posts: 270

На форуме с: 05/01/2009

Репутация: +4

Рейтинг: 0

· 05/02/2009, 04:02 PM

Сборка: La2base 1.1.7
Краткое изложение СУТИ проблемы: как настроить епик РБ с тем что вот прихожу к антарасу давай его бить а он тп в город ! и ещо вот квест иду к валику тпшыт через квест ждал валика минут 40 и он так не разбудился что за прикол?
Вопрос: Как сделать?
Мои соображения по этому поводу: нету

0
Евгений
Евгений

User

Бывалый

Posts: 164

На форуме с: 10/06/2009

Репутация: +122

Рейтинг: 0

· 05/02/2009, 04:06 PM

Не давно была такая тема....))
знач так server/config/scripts отключаешь ai тараса баюма закена валакаса ак фринтезы коре орфена потом идёшь в
server/data/zones/zone.xml там удаляешь зоны этих рб удаляешь с таблицы grandboss всех рб ,рестарт сервера,
заходишь спамишь всех рб которых ты удалил из грандбосс нажимаешь по ним shift + правая клавиша мыши и ишешь l2grandboss строчку -> меняешь её на l2RaidBoss ,если хочешь чтобы они респились определённое кол-во времени зайди в raidboss_spawnlist найди там своих рб и выстави respawn_min_delay и max_delay заметь 1 час = 3600 сек следовательно 24 часа = 3600 * на 24 = 86400
Скопировал от "Doom"...

0
Fix009
Fix009

User

Бывалый

Posts: 270

На форуме с: 05/01/2009

Репутация: +4

Рейтинг: 0

· 05/02/2009, 04:14 PM

да ! но если я так зделаю к ним через квест не попасть! и такой прикол только с валиком и антарасом бай закен ! и т.д все норм

ну помогите плз очень прошу !

0
Евгений
Евгений

User

Бывалый

Posts: 164

На форуме с: 10/06/2009

Репутация: +122

Рейтинг: 0

· 05/02/2009, 04:15 PM

Потомучто у баюма закена и ак в AI отключен телепорт без квеста ведь к ним поподаешь?
и ещо када бьёшь баюма сам умираешь!
поэтому надо в AI убрать телепорт у

Код
# ai/individual/Antharas.java
# ai/individual/Baium.java
# ai/individual/Valakas.java

а у баюма убийство.
извени но в скриптах я не разбираюсь..

0
PyJIuK
PyJIuK

User

Бывалый

Posts: 190

На форуме с: 10/06/2008

Репутация: +43

Рейтинг: 0

· 05/02/2009, 04:16 PM

ты через квест приходил ?

0
Fix009
Fix009

User

Бывалый

Posts: 270

На форуме с: 05/01/2009

Репутация: +4

Рейтинг: 0

· 05/02/2009, 04:17 PM

та блин баюм когда его будиш он убивать и должен ! да к баю через квест и он норм не тпшыт в город ! а вот антарас и валакас тпшыт и то валакаса чета нету к нему через квест а его нету

0
Евгений
Евгений

User

Бывалый

Posts: 164

На форуме с: 10/06/2009

Репутация: +122

Рейтинг: 0

· 05/02/2009, 04:24 PM

у мну на сервере нормально с рб тока если по квесту к нему поподешь.....а без квеста никак нельзя

0
Fix009
Fix009

User

Бывалый

Posts: 270

На форуме с: 05/01/2009

Репутация: +4

Рейтинг: 0

· 05/02/2009, 04:24 PM

ну помогите что никто не шарит?

0
Евгений
Евгений

User

Бывалый

Posts: 164

На форуме с: 10/06/2009

Репутация: +122

Рейтинг: 0

· 05/02/2009, 04:26 PM

я тя не пойму раз тебе через квест надо к ним попасть у тя всё норм сделано,
а если не через квест то сделай как я тебе скопировал у дума вот и всё.

0
Fix009
Fix009

User

Бывалый

Posts: 270

На форуме с: 05/01/2009

Репутация: +4

Рейтинг: 0

· 05/02/2009, 04:27 PM

та мне через квест надо ! я ходил через квест
и меня тпшыло в город !

0
Евгений
Евгений

User

Бывалый

Posts: 164

На форуме с: 10/06/2009

Репутация: +122

Рейтинг: 0

· 05/02/2009, 04:31 PM

у мну всё норм....тогда я не знаю

0
Fix009
Fix009

User

Бывалый

Posts: 270

На форуме с: 05/01/2009

Репутация: +4

Рейтинг: 0

· 05/02/2009, 04:41 PM

я в шоке ну народ может ктот шарит ну помогите плз!

блин и что за прикол иду к антарасу через квест и он не выходит сидит у себя в жопе!

0
Евгений
Евгений

User

Бывалый

Posts: 164

На форуме с: 10/06/2009

Репутация: +122

Рейтинг: 0

· 05/02/2009, 04:49 PM

Ну найди людей каторые понимают что тут написано и попроси чтобы убрали телепорт когда бьют валика и тд..

Код
package ai.individual;

import static net.sf.l2j.gameserver.ai.CtrlIntention.AI_INTENTION_FOLLOW;
import static net.sf.l2j.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE;

import java.util.Collection;

import javolution.util.FastList;
import ai.group_template.L2AttackableAIScript;

import net.sf.l2j.gameserver.ThreadPoolManager;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.instancemanager.GrandBossManager;
import net.sf.l2j.gameserver.model.L2Character;
import net.sf.l2j.gameserver.model.L2Effect;
import net.sf.l2j.gameserver.model.L2Object;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.L2Summon;
import net.sf.l2j.gameserver.model.actor.instance.L2GrandBossInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.quest.QuestTimer;
import net.sf.l2j.gameserver.model.zone.type.L2BossZone;
import net.sf.l2j.gameserver.serverpackets.PlaySound;
import net.sf.l2j.gameserver.serverpackets.SocialAction;
import net.sf.l2j.gameserver.serverpackets.SpecialCamera;
import net.sf.l2j.gameserver.templates.StatsSet;
import net.sf.l2j.gameserver.util.Util;
import net.sf.l2j.util.Rnd;

public class Valakas extends L2AttackableAIScript
{
    private int i_ai0 = 0;
    private int i_ai1 = 0;
    private int i_ai2 = 0;
    private int i_ai3 = 0;
    private int i_ai4 = 0;
    private int i_quest0 = 0;
    private long i_quest1 = 0; // time to tracking valakas when was last time attacked
    private int i_quest2 = 0; // hate value for 1st player
    private int i_quest3 = 0; // hate value for 2nd player
    private int i_quest4 = 0; // hate value for 3rd player
    private L2Character c_quest2 = null; // 1st most hated target
    private L2Character c_quest3 = null; // 2nd most hated target
    private L2Character c_quest4 = null; // 3rd most hated target

    private static final int VALAKAS = 29028;

    //Valakas Status Tracking :
    private static final byte DORMANT = 0;         //Valakas is spawned and no one has entered yet. Entry is unlocked
    private static final byte WAITING = 1;         //Valakas is spawend and someone has entered, triggering a 30 minute window for additional people to enter
                                                //before he unleashes his attack. Entry is unlocked
    private static final byte FIGHTING = 2;        //Valakas is engaged in battle, annihilating his foes. Entry is locked
    private static final byte DEAD = 3;            //Valakas has been killed. Entry is locked
    
    private static L2BossZone _Zone;
    
    // Boss: Valakas
    public Valakas(int id,String name,String descr)
    {
        super(id,name,descr);
        int[] mob = {VALAKAS};
        this.registerMobs(mob);
        i_ai0 = 0;
        i_ai1 = 0;
        i_ai2 = 0;
        i_ai3 = 0;
        i_ai4 = 0;
        i_quest0 = 0;
        i_quest1 = System.currentTimeMillis();
        _Zone = GrandBossManager.getInstance().getZone(212852,-114842,-1632);
        StatsSet info = GrandBossManager.getInstance().getStatsSet(VALAKAS);
        int status = GrandBossManager.getInstance().getBossStatus(VALAKAS);
        if (status == DEAD)
        {
            // load the unlock date and time for valakas from DB
            long temp = (info.getLong("respawn_time") - System.currentTimeMillis());
            // if valakas is locked until a certain time, mark it so and start the unlock timer
            // the unlock time has not yet expired.  Mark valakas as currently locked.  Setup a timer
            // to fire at the correct time (calculate the time between now and the unlock time,
            // setup a timer to fire after that many msec)
            if (temp > 0)
            {
                this.startQuestTimer("valakas_unlock", temp, null, null);
            }
            else
            {
                // the time has already expired while the server was offline. Immediately spawn valakas in his cave.
                // also, the status needs to be changed to DORMANT
                L2GrandBossInstance valakas = (L2GrandBossInstance) addSpawn(VALAKAS,-105200,-253104,-15264,0,false,0);
                GrandBossManager.getInstance().setBossStatus(VALAKAS,DORMANT);
                GrandBossManager.getInstance().addBoss(valakas);
                final L2NpcInstance _valakas = valakas;
                ThreadPoolManager.getInstance().scheduleGeneral(new Runnable() {
                    public void run()
                    {
                        try
                        {
                            _valakas.setIsInvul(true);
                            _valakas.setRunning();
                        }
                        catch (Throwable e)
                        {
                        }
                    }
                },(long)100);
                startQuestTimer("1003", 60000, valakas, null, true);
            }
        }
        else
        {
            int loc_x = info.getInteger("loc_x");
            int loc_y = info.getInteger("loc_y");
            int loc_z = info.getInteger("loc_z");
            int heading = info.getInteger("heading");
            final int hp = info.getInteger("currentHP");
            final int mp = info.getInteger("currentMP");
            L2GrandBossInstance valakas = (L2GrandBossInstance) addSpawn(VALAKAS,loc_x,loc_y,loc_z,heading,false,0);
            GrandBossManager.getInstance().addBoss(valakas);
            final L2NpcInstance _valakas = valakas;
            ThreadPoolManager.getInstance().scheduleGeneral(new Runnable() {
                public void run()
                {
                    try
                    {
                        _valakas.setCurrentHpMp(hp,mp);
                        _valakas.setIsInvul(true);
                        _valakas.setRunning();
                    }
                    catch (Throwable e)
                    {
                    }
                }
            },(long)100);

            startQuestTimer("1003", 60000, valakas, null, true);
            if (status == WAITING)
            {
                // Start timer to lock entry after 30 minutes
                startQuestTimer("1001",1800000, valakas, null);
            }
            else if (status == FIGHTING)
            {
                // Start repeating timer to check for inactivity
                startQuestTimer("valakas_despawn",60000, valakas, null, true);
                valakas.setIsInvul(false);
            }
        }
    }

    public String onAdvEvent (String event, L2NpcInstance npc, L2PcInstance player)
    {
        if (npc != null)
        {
            long temp = 0;
            if (event.equalsIgnoreCase("1001"))
            {
                npc.teleToLocation(212852,-114842,-1632);
                i_quest1 = System.currentTimeMillis();
                final L2NpcInstance _valakas = npc;
                ThreadPoolManager.getInstance().scheduleGeneral(new Runnable() {
                    public void run()
                    {
                        try
                        {
                            broadcastSpawn(_valakas);
                        }
                        catch (Throwable e)
                        {
                        }
                    }
                },(long)1);
                startQuestTimer("1004",2000, npc, null);
            }
            else if (event.equalsIgnoreCase("1002"))
            {
                int lvl = 0;
                int sk_4691 = 0;
                L2Effect[] effects = npc.getAllEffects();
                if (effects.length != 0 || effects != null)
                {
                    for (L2Effect e : effects)
                    {
                        if (e.getSkill().getId() == 4629)
                        {
                            sk_4691 = 1;
                            lvl = e.getSkill().getLevel();
                            break;
                        }
                    }
                }
                if (GrandBossManager.getInstance().getBossStatus(VALAKAS) == FIGHTING)
                {
                    temp = (System.currentTimeMillis() - i_quest1);
                    if (temp > 900000)
                    {
                        npc.getAI().setIntention(AI_INTENTION_IDLE);
                        npc.teleToLocation(-105200,-253104,-15264);
                        GrandBossManager.getInstance().setBossStatus(VALAKAS,DORMANT);
                        npc.setCurrentHpMp(npc.getMaxHp(),npc.getMaxMp());
                        _Zone.oustAllPlayers();
                        cancelQuestTimer("1002", npc, null);
                        i_quest2 = 0;
                        i_quest3 = 0;
                        i_quest4 = 0;
                    }
                }
                else if (npc.getCurrentHp() > ( ( npc.getMaxHp() * 1 ) / 4 ) )
                {
                    if (sk_4691 == 0 ||(sk_4691 == 1 && lvl != 4))
                    {
                        npc.setTarget(npc);
                        npc.doCast(SkillTable.getInstance().getInfo(4691,4));
                    }
                }
                else if (npc.getCurrentHp() > ( ( npc.getMaxHp() * 2 ) / 4 ) )
                {
                    if (sk_4691 == 0 ||(sk_4691 == 1 && lvl != 3))
                    {
                        npc.setTarget(npc);
                        npc.doCast(SkillTable.getInstance().getInfo(4691,3));
                    }
                }
                else if (npc.getCurrentHp() > ( ( npc.getMaxHp() * 3 ) / 4 ) )
                {
                    if (sk_4691 == 0 ||(sk_4691 == 1 && lvl != 2))
                    {
                        npc.setTarget(npc);
                        npc.doCast(SkillTable.getInstance().getInfo(4691,2));
                    }
                }
                else if (sk_4691 == 0 ||(sk_4691 == 1 && lvl != 1))
                {
                    npc.setTarget(npc);
                    npc.doCast(SkillTable.getInstance().getInfo(4691,1));
                }
            }
            else if (event.equalsIgnoreCase("1003") && npc != null)
            {
                if (!npc.isInvul())
                    getRandomSkill(npc);
                else
                    npc.getAI().setIntention(AI_INTENTION_IDLE);
            }
            else if (event.equalsIgnoreCase("1004"))
            {
                startQuestTimer("1102",1500, npc, null);
                //npc.broadcastPacket(new SpecialCamera(npc.getObjectId(),180,-1,1500,15000,10000));
            }
            else if (event.equalsIgnoreCase("1102"))
            {
                startQuestTimer("1103",3300, npc, null);
                //npc.broadcastPacket(new SpecialCamera(npc.getObjectId(),180,-5,3000,15000,10000));
            }
            else if (event.equalsIgnoreCase("1103"))
            {
                startQuestTimer("1104",2900, npc, null);
                //npc.broadcastPacket(new SpecialCamera(npc.getObjectId(),180,-8,600,15000,10000));
            }
            else if (event.equalsIgnoreCase("1104"))
            {
                startQuestTimer("1105",2700, npc, null);
                //npc.broadcastPacket(new SpecialCamera(npc.getObjectId(),180,-8,2700,15000,10000));
            }
            else if (event.equalsIgnoreCase("1105"))
            {
                startQuestTimer("1106",1, npc, null);
                //npc.broadcastPacket(new SpecialCamera(npc.getObjectId(),250,70,0,15000,10000));
            }
            else if (event.equalsIgnoreCase("1106"))
            {
                startQuestTimer("1107",3200, npc, null);
                //npc.broadcastPacket(new SpecialCamera(npc.getObjectId(),250,70,2500,15000,10000));
            }
            else if (event.equalsIgnoreCase("1107"))
            {
                startQuestTimer("1108",1400, npc, null);
                //npc.broadcastPacket(new SpecialCamera(npc.getObjectId(),150,30,0,15000,10000));
            }
            else if (event.equalsIgnoreCase("1108"))
            {
                startQuestTimer("1109",6700, npc, null);
                //npc.broadcastPacket(new SpecialCamera(npc.getObjectId(),150,20,2900,15000,10000));
            }
            else if (event.equalsIgnoreCase("1109"))
            {
                startQuestTimer("1110",5700, npc, null);
                //npc.broadcastPacket(new SpecialCamera(npc.getObjectId(),170,-10,3400,15000,4000));
            }
            else if (event.equalsIgnoreCase("1110"))
            {
                GrandBossManager.getInstance().setBossStatus(VALAKAS,FIGHTING);
                startQuestTimer("1002",60000, npc, null, true);
                npc.setIsInvul(false);
                getRandomSkill(npc);
            }
            else if (event.equalsIgnoreCase("1111"))
            {
                startQuestTimer("1112",3500, npc, null);
                //npc.broadcastPacket(new SpecialCamera(npc.getObjectId(),210,-5,3000,15000,10000));
            }
            else if (event.equalsIgnoreCase("1112"))
            {
                startQuestTimer("1113",4500, npc, null);
                //npc.broadcastPacket(new SpecialCamera(npc.getObjectId(),200,-8,3000,15000,10000));
            }
            else if (event.equalsIgnoreCase("1113"))
            {
                startQuestTimer("1114",500, npc, null);
                //npc.broadcastPacket(new SpecialCamera(npc.getObjectId(),190,0,500,15000,10000));
            }
            else if (event.equalsIgnoreCase("1114"))
            {
                startQuestTimer("1115",4600, npc, null);
                //npc.broadcastPacket(new SpecialCamera(npc.getObjectId(),120,0,2500,15000,10000));
            }
            else if (event.equalsIgnoreCase("1115"))
            {
                startQuestTimer("1116",750, npc, null);
                //npc.broadcastPacket(new SpecialCamera(npc.getObjectId(),20,0,700,15000,10000));
            }
            else if (event.equalsIgnoreCase("1116"))
            {
                startQuestTimer("1117",2500, npc, null);
                //npc.broadcastPacket(new SpecialCamera(npc.getObjectId(),10,0,1000,15000,10000));
            }
            else if (event.equalsIgnoreCase("1117"))
            {
                //npc.broadcastPacket(new SpecialCamera(npc.getObjectId(),10,0,300,15000,250));
                addSpawn(31759,212852,-114842,-1632,0,false,900000);
                int radius = 1500;
                for (int i=0; i < 20; i++)
                {
                    int x = (int) (radius*Math.cos(i*.331)); //.331~2pi/19
                    int y = (int) (radius*Math.sin(i*.331));
                    addSpawn(31759,212852+x,-114842+y,-1632,0,false,900000);
                }
                cancelQuestTimer("1002", npc, null);
                startQuestTimer("remove_players",900000, null, null);
            }
        }
        else
        {
            if (event.equalsIgnoreCase("valakas_unlock"))
            {
                L2GrandBossInstance valakas = (L2GrandBossInstance) addSpawn(VALAKAS,-105200,-253104,-15264,32768,false,0);
                GrandBossManager.getInstance().addBoss(valakas);
                GrandBossManager.getInstance().setBossStatus(VALAKAS,DORMANT);
            }
            else if (event.equalsIgnoreCase("remove_players"))
            {
                _Zone.oustAllPlayers();
            }
        }
        return super.onAdvEvent(event, npc, player);
    }

    public String onAttack (L2NpcInstance npc, L2PcInstance attacker, int damage, boolean isPet)
    {
        if (npc.isInvul())
        {
            return null;
        }
        i_quest1 = System.currentTimeMillis();
        if (GrandBossManager.getInstance().getBossStatus(VALAKAS) != FIGHTING)
        {
            attacker.teleToLocation(150037,-57255,-2976);
        }
        if (attacker.getMountType() == 1)
        {
            int sk_4258 = 0;
            L2Effect[] effects = attacker.getAllEffects();
            if (effects.length != 0 || effects != null)
            {
                for (L2Effect e : effects)
                {
                    if (e.getSkill().getId() == 4258)
                    {
                        sk_4258 = 1;
                    }
                }
            }
            if (sk_4258 == 0)
            {
                npc.setTarget(attacker);
                npc.doCast(SkillTable.getInstance().getInfo(4258,1));
            }
        }
        if( attacker.getZ() < ( npc.getZ() + 200 ) )
        {
            if( i_ai2 == 0 )
            {
                i_ai1 = ( i_ai1 + damage );
            }
            if( i_quest0 == 0 )
            {
                i_ai4 = ( i_ai4 + damage );
            }
            if( i_quest0 == 0 )
            {
                i_ai3 = ( i_ai3 + damage );
            }
            else if(i_ai2 == 0 )
            {
                i_ai0 = ( i_ai0 + damage );
            }
            if( i_quest0 == 0 )
            {
                if((((i_ai4 / npc.getMaxHp()) * 100)) > 1)
                {
                    if( i_ai3 > ( i_ai4 - i_ai3 ) )
                    {
                        i_ai3 = 0;
                        i_ai4 = 0;
                        npc.setTarget(npc);
                        npc.doCast(SkillTable.getInstance().getInfo(4687,1));
                        i_quest0 = 1;
                    }
                }
            }

        }
        L2Skill skill = null; // TODO: attack handler require skill
        int i1 = 0;
        if (skill == null)
        {
            if (attacker == c_quest2)
            {
                if (((damage * 1000) + 1000) > i_quest2)
                {
                    i_quest2 = ((damage * 1000) + Rnd.get(3000));
                }
            }
            else if (attacker == c_quest3)
            {
                if ((( damage * 1000) + 1000) > i_quest3)
                {
                    i_quest3 = ((damage * 1000) + Rnd.get(3000));
                }
            }
            else if (attacker == c_quest4)
            {
                if ((( damage * 1000) + 1000) > i_quest4)
                {
                    i_quest4 = ((damage * 1000) + Rnd.get(3000));
                }
            }
            else if( i_quest2 > i_quest3 )
            {
                i1 = 3;
            }
            else if( i_quest2 == i_quest3 )
            {
                if( Rnd.get(100) < 50 )
                {
                    i1 = 2;
                }
                else
                {
                    i1 = 3;
                }
            }
            else if( i_quest2 < i_quest3 )
            {
                i1 = 2;
            }
            if( i1 == 2 )
            {
                if( i_quest2 > i_quest4 )
                {
                    i1 = 4;
                }
                else if( i_quest2 == i_quest4 )
                {
                    if( Rnd.get(100) < 50 )
                    {
                        i1 = 2;
                    }
                    else
                    {
                        i1 = 4;
                    }
                }
                else if( i_quest2 < i_quest4 )
                {
                    i1 = 2;
                }
            }
            else if( i1 == 3 )
            {
                if( i_quest3 > i_quest4 )
                {
                    i1 = 4;
                }
                else if( i_quest3 == i_quest4 )
                {
                    if( Rnd.get(100) < 50 )
                    {
                        i1 = 3;
                    }
                    else
                    {
                        i1 = 4;
                    }
                }
                else if(i_quest3 < i_quest4 )
                {
                    i1 = 3;
                }
            }
            if (i1 == 2)
            {
                i_quest2 = (damage * 1000) + Rnd.get(3000);
                c_quest2 = attacker;
            }
            else if (i1 == 3)
            {
                i_quest3 = (damage * 1000) + Rnd.get(3000);
                c_quest3 = attacker;
            }
            else if (i1 == 4)
            {
                i_quest4 = (damage * 1000) + Rnd.get(3000);
                c_quest4 = attacker;
            }
        }
        else if( npc.getCurrentHp() > ( ( npc.getMaxHp() * 1 ) / 4 ))
        {
            if( attacker == c_quest2 )
            {
                if( ( ( ( damage / 30 ) * 1000 ) + 1000 ) > i_quest2 )
                {
                    i_quest2 = ( ( ( damage / 30 ) * 1000 ) + Rnd.get(3000) );
                }
            }
            else if( attacker == c_quest3 )
            {
                if( ( ( ( damage / 30 ) * 1000 ) + 1000 ) > i_quest3 )
                {
                    i_quest3 = ( ( ( damage / 30 ) * 1000 ) + Rnd.get(3000) );
                }
            }
            else if( attacker == c_quest4 )
            {
                if( ( ( ( damage / 30 ) * 1000 ) + 1000 ) > i_quest4 )
                {
                    i_quest4 = ( ( ( damage / 30 ) * 1000 ) + Rnd.get(3000) );
                }
            }
            else if( i_quest2 > i_quest3 )
            {
                i1 = 3;
            }
            else if( i_quest2 == i_quest3 )
            {
                if( Rnd.get(100) < 50 )
                {
                    i1 = 2;
                }
                else
                {
                    i1 = 3;
                }
            }
            else if( i_quest2 < i_quest3 )
            {
                i1 = 2;
            }
            if( i1 == 2 )
            {
                if( i_quest2 > i_quest4 )
                {
                    i1 = 4;
                }
                else if( i_quest2 == i_quest4 )
                {
                    if( Rnd.get(100) < 50 )
                    {
                        i1 = 2;
                    }
                    else
                    {
                        i1 = 4;
                    }
                }
                else if( i_quest2 < i_quest4 )
                {
                    i1 = 2;
                }
            }
            else if( i1 == 3 )
            {
                if( i_quest3 > i_quest4 )
                {
                    i1 = 4;
                }
                else if( i_quest3 == i_quest4 )
                {
                    if( Rnd.get(100) < 50 )
                    {
                        i1 = 3;
                    }
                    else
                    {
                        i1 = 4;
                    }
                }
                else if( i_quest3 < i_quest4 )
                {
                    i1 = 3;
                }
            }
            if (i1 == 2)
            {
                    i_quest2 = ( ( ( damage / 30 ) * 1000 ) + Rnd.get(3000) );
                    c_quest2 = attacker;
            }
            else if (i1 == 3)
            {
                    i_quest3 = ( ( ( damage / 30 ) * 1000 ) + Rnd.get(3000) );
                    c_quest3 = attacker;
            }
            else if (i1 == 4)
            {
                    i_quest4 = ( ( ( damage / 30 ) * 1000 ) + Rnd.get(3000) );
                    c_quest4 = attacker;
            }
        }
        else if( npc.getCurrentHp() > ( ( npc.getMaxHp() * 2 ) / 4 ))
        {
            if( attacker == c_quest2 )
            {
                if( ( ( ( damage / 50 ) * 1000 ) + 1000 ) > i_quest2 )
                {
                    i_quest2 = ( ( ( damage / 50 ) * 1000 ) + Rnd.get(3000) );
                }
            }
            else if( attacker == c_quest3 )
            {
                if( ( ( ( damage / 50 ) * 1000 ) + 1000 ) > i_quest3 )
                {
                    i_quest3 = ( ( ( damage / 50 ) * 1000 ) + Rnd.get(3000) );
                }
            }
            else if( attacker == c_quest4 )
            {
                if( ( ( ( damage / 50 ) * 1000 ) + 1000 ) > i_quest4 )
                {
                    i_quest4 = ( ( ( damage / 50 ) * 1000 ) + Rnd.get(3000) );
                }
            }
            else if( i_quest2 > i_quest3 )
            {
                i1 = 3;
            }
            else if( i_quest2 == i_quest3 )
            {
                if( Rnd.get(100) < 50 )
                {
                    i1 = 2;
                }
                else
                {
                    i1 = 3;
                }
            }
            else if( i_quest2 < i_quest3 )
            {
                i1 = 2;
            }
            if( i1 == 2 )
            {
                if( i_quest2 > i_quest4 )
                {
                    i1 = 4;
                }
                else if( i_quest2 == i_quest4 )
                {
                    if( Rnd.get(100) < 50 )
                    {
                        i1 = 2;
                    }
                    else
                    {
                        i1 = 4;
                    }
                }
                else if( i_quest2 < i_quest4 )
                {
                    i1 = 2;
                }
            }
            else if( i1 == 3 )
            {
                if( i_quest3 > i_quest4 )
                {
                    i1 = 4;
                }
                else if( i_quest3 == i_quest4 )
                {
                    if( Rnd.get(100) < 50 )
                    {
                        i1 = 3;
                    }
                    else
                    {
                        i1 = 4;
                    }
                }
                else if( i_quest3 < i_quest4 )
                {
                    i1 = 3;
                }
            }
            if (i1 == 2)
            {
                    i_quest2 = ( ( ( damage / 50 ) * 1000 ) + Rnd.get(3000) );
                    c_quest2 = attacker;
            }
            else if (i1 == 3)
            {
                    i_quest3 = ( ( ( damage / 50 ) * 1000 ) + Rnd.get(3000) );
                    c_quest3 = attacker;
            }
            else if (i1 == 4)
            {
                    i_quest4 = ( ( ( damage / 50 ) * 1000 ) + Rnd.get(3000) );
                    c_quest4 = attacker;
            }
        }
        else if( npc.getCurrentHp() > ( ( npc.getMaxHp() * 3 ) / 4 ))
        {
            if( attacker == c_quest2 )
            {
                if( ( ( ( damage / 100 ) * 1000 ) + 1000 ) > i_quest2 )
                {
                    i_quest2 = ( ( ( damage / 100 ) * 1000 ) + Rnd.get(3000) );
                }
            }
            else if( attacker == c_quest3 )
            {
                if( ( ( ( damage / 100 ) * 1000 ) + 1000 ) > i_quest3 )
                {
                    i_quest3 = ( ( ( damage / 100 ) * 1000 ) + Rnd.get(3000) );
                }
            }
            else if( attacker == c_quest4 )
            {
                if( ( ( ( damage / 100 ) * 1000 ) + 1000 ) > i_quest4 )
                {
                    i_quest4 = ( ( ( damage / 100 ) * 1000 ) + Rnd.get(3000) );
                }
            }
            else if( i_quest2 > i_quest3 )
            {
                i1 = 3;
            }
            else if( i_quest2 == i_quest3 )
            {
                if( Rnd.get(100) < 50 )
                {
                    i1 = 2;
                }
                else
                {
                    i1 = 3;
                }
            }
            else if( i_quest2 < i_quest3 )
            {
                i1 = 2;
            }
            if( i1 == 2 )
            {
                if( i_quest2 > i_quest4 )
                {
                    i1 = 4;
                }
                else if( i_quest2 == i_quest4 )
                {
                    if( Rnd.get(100) < 50 )
                    {
                        i1 = 2;
                    }
                    else
                    {
                        i1 = 4;
                    }
                }
                else if( i_quest2 < i_quest4 )
                {
                    i1 = 2;
                }
            }
            else if( i1 == 3 )
            {
                if( i_quest3 > i_quest4 )
                {
                    i1 = 4;
                }
                else if( i_quest3 == i_quest4 )
                {
                    if( Rnd.get(100) < 50 )
                    {
                        i1 = 3;
                    }
                    else
                    {
                        i1 = 4;
                    }
                }
                else if( i_quest3 < i_quest4 )
                {
                    i1 = 3;
                }
                if (i1 == 2)
                {
                        i_quest2 = ( ( ( damage / 100 ) * 1000 ) + Rnd.get(3000) );
                        c_quest2 = attacker;
                }
                else if (i1 == 3)
                {
                        i_quest3 = ( ( ( damage / 100 ) * 1000 ) + Rnd.get(3000) );
                        c_quest3 = attacker;
                }
                else if (i1 == 4)
                {
                        i_quest4 = ( ( ( damage / 100 ) * 1000 ) + Rnd.get(3000) );
                        c_quest4 = attacker;
                }
            }
        }
        else if( attacker == c_quest2 )
        {
            if( ( ( ( damage / 150 ) * 1000 ) + 1000 ) > i_quest2 )
            {
                i_quest2 = ( ( ( damage / 150 ) * 1000 ) + Rnd.get(3000) );
            }
        }
        else if( attacker == c_quest3 )
        {
            if( ( ( ( damage / 150 ) * 1000 ) + 1000 ) > i_quest3 )
            {
                i_quest3 = ( ( ( damage / 150 ) * 1000 ) + Rnd.get(3000) );
            }
        }
        else if( attacker == c_quest4 )
        {
            if( ( ( ( damage / 150 ) * 1000 ) + 1000 ) > i_quest4 )
            {
                i_quest4 = ( ( ( damage / 150 ) * 1000 ) + Rnd.get(3000) );
            }
        }
        else if( i_quest2 > i_quest3 )
        {
            i1 = 3;
        }
        else if( i_quest2 == i_quest3 )
        {
            if( Rnd.get(100) < 50 )
            {
                i1 = 2;
            }
            else
            {
                i1 = 3;
            }
        }
        else if( i_quest2 < i_quest3 )
        {
            i1 = 2;
        }
        if( i1 == 2 )
        {
            if( i_quest2 > i_quest4 )
            {
                i1 = 4;
            }
            else if( i_quest2 == i_quest4 )
            {
                if( Rnd.get(100) < 50 )
                {
                    i1 = 2;
                }
                else
                {
                    i1 = 4;
                }
            }
            else if( i_quest2 < i_quest4 )
            {
                i1 = 2;
            }
        }
        else if( i1 == 3 )
        {
            if( i_quest3 > i_quest4 )
            {
                i1 = 4;
            }
            else if( i_quest3 == i_quest4 )
            {
                if( Rnd.get(100) < 50 )
                {
                    i1 = 3;
                }
                else
                {
                    i1 = 4;
                }
            }
            else if( i_quest3 < i_quest4 )
            {
                i1 = 3;
            }
        }
        if (i1 == 2)
        {
                i_quest2 = ( ( ( damage / 150 ) * 1000 ) + Rnd.get(3000) );
                c_quest2 = attacker;
        }
        else if (i1 == 3)
        {
                i_quest3 = ( ( ( damage / 150 ) * 1000 ) + Rnd.get(3000) );
                c_quest3 = attacker;
        }
        else if (i1 == 4)
        {
                i_quest4 = ( ( ( damage / 150 ) * 1000 ) + Rnd.get(3000) );
                c_quest4 = attacker;
        }
        getRandomSkill(npc);
        return super.onAttack(npc, attacker, damage, isPet);
    }

    public String onKill (L2NpcInstance npc, L2PcInstance killer, boolean isPet)
    {
        startQuestTimer("1111",500, npc, null);
        npc.broadcastPacket(new SpecialCamera(npc.getObjectId(),2000,130,-1,0,10000));
        npc.broadcastPacket(new PlaySound(1, "B03_D", 1, npc.getObjectId(), npc.getX(), npc.getY(), npc.getZ()));
        GrandBossManager.getInstance().setBossStatus(VALAKAS,DEAD);
        long respawnTime = ((192 + Rnd.get(145) ) * 3600000);
        this.startQuestTimer("valakas_unlock", respawnTime, null, null);
        // also save the respawn time so that the info is maintained past reboots
        StatsSet info = GrandBossManager.getInstance().getStatsSet(VALAKAS);
        info.set("respawn_time",(System.currentTimeMillis() + respawnTime));
        GrandBossManager.getInstance().setStatsSet(VALAKAS,info);
        return super.onKill(npc,killer,isPet);
    }

    public void getRandomSkill(L2NpcInstance npc)
    {
        if (npc.isInvul())
        {
            return;
        }
        L2Skill skill = null;
        int i0 = 0;
        int i1 = 0;
        int i2 = 0;
        L2Character c2 = null;
        if (c_quest2 == null)
            i_quest2 = 0;
        else if (!Util.checkIfInRange(5000, npc, c_quest2, true) || c_quest2.isDead())
            i_quest2 = 0;
        if (c_quest3 == null)
            i_quest3 = 0;
        else if (!Util.checkIfInRange(5000, npc, c_quest3, true) || c_quest3.isDead())
            i_quest3 = 0;    
        if (c_quest4 == null)
            i_quest4 = 0;
        else if (!Util.checkIfInRange(5000, npc, c_quest4, true) || c_quest4.isDead())
            i_quest4 = 0;
        if (i_quest2 > i_quest3)
        {
            i1 = 2;
            i2 = i_quest2;
            c2 = c_quest2;
        }
        else
        {
            i1 = 3;
            i2 = i_quest3;
            c2 = c_quest3;
        }
        if( i_quest4 > i2 )
        {
            i1 = 4;
            i2 = i_quest4;
            c2 = c_quest4;
        }
        if (i2 == 0)
            c2 = getRandomTarget(npc);
        if( i2 > 0 )
        {
            if( Rnd.get(100) < 70)
            {
                if (i1 == 2)
                    i_quest2 = 500;
                else if (i1 == 3)
                    i_quest3 = 500;
                else if (i1 == 4)
                    i_quest4 = 500;
            }
            if( npc.getCurrentHp() > ( ( npc.getMaxHp() * 1 ) / 4 ) )
            {
                i0 = 0;
                i1 = 0;
                if (Util.checkIfInRange(1423, npc, c2, true))
                {
                    i0 = 1;
                    i1 = 1;
                }
                if (c2.getZ() < (npc.getZ() + 200))
                {
                    if( Rnd.get(100) < 20)
                    {
                        skill = SkillTable.getInstance().getInfo(4690,1);
                    }
                    else if( Rnd.get(100) < 15)
                    {
                        skill = SkillTable.getInstance().getInfo(4689,1);
                    }
                    else if( Rnd.get(100) < 15 && i0 == 1 && i_quest0 == 1 )
                    {
                        skill = SkillTable.getInstance().getInfo(4685,1);
                        i_quest0 = 0;
                    }
                    else if( Rnd.get(100) < 10 && i1 == 1 )
                    {
                        skill = SkillTable.getInstance().getInfo(4688,1);
                    }
                    else if( Rnd.get(100) < 35)
                    {
                        skill = SkillTable.getInstance().getInfo(4683,1);
                    }
                    else
                    {
                        if( Rnd.get(2) == 0) // TODO: replace me with direction, to check if player standing on left or right side of valakas
                            skill = SkillTable.getInstance().getInfo(4681,1); // left hand
                        else
                            skill = SkillTable.getInstance().getInfo(4682,1); // right hand
                    }
                }
                else if( Rnd.get(100) < 20)
                {
                    skill = SkillTable.getInstance().getInfo(4690,1);
                }
                else if( Rnd.get(100) < 15)
                {
                    skill = SkillTable.getInstance().getInfo(4689,1);
                }
                else
                {
                    skill = SkillTable.getInstance().getInfo(4684,1);
                }
            }
            else if( npc.getCurrentHp() > ( ( npc.getMaxHp() * 2 ) / 4 ) )
            {
                i0 = 0;
                i1 = 0;
                if (Util.checkIfInRange(1423, npc, c2, true))
                {
                    i0 = 1;
                    i1 = 1;
                }
                if (c2.getZ() < (npc.getZ() + 200))
                {
                    if( Rnd.get(100) < 5 )
                    {
                        skill = SkillTable.getInstance().getInfo(4690,1);
                    }
                    else if( Rnd.get(100) < 10 )
                    {
                        skill = SkillTable.getInstance().getInfo(4689,1);
                    }
                    else if( Rnd.get(100) < 10 && i0 == 1 && i_quest0 == 1 )
                    {
                        skill = SkillTable.getInstance().getInfo(4685,1);
                        i_quest0 = 0;
                    }
                    else if( Rnd.get(100) < 10 && i1 == 1 )
                    {
                        skill = SkillTable.getInstance().getInfo(4688,1);
                    }
                    else if( Rnd.get(100) < 20 )
                    {
                        skill = SkillTable.getInstance().getInfo(4683,1);
                    }
                    else
                    {
                        if( Rnd.get(2) == 0) // TODO: replace me with direction, to check if player standing on left or right side of valakas
                            skill = SkillTable.getInstance().getInfo(4681,1); // left hand
                        else
                            skill = SkillTable.getInstance().getInfo(4682,1); // right hand
                    }
                }
                else if( Rnd.get(100) < 5)
                {
                    skill = SkillTable.getInstance().getInfo(4690,1);
                }
                else if( Rnd.get(100) < 10)
                {
                    skill = SkillTable.getInstance().getInfo(4689,1);
                }
                else
                {
                    skill = SkillTable.getInstance().getInfo(4684,1);
                }
            }
            else if( npc.getCurrentHp() > ( ( npc.getMaxHp() * 3 ) / 4 ) )
            {
                i0 = 0;
                i1 = 0;
                if (Util.checkIfInRange(1423, npc, c2, true))
                {
                    i0 = 1;
                    i1 = 1;
                }
                if (c2.getZ() < (npc.getZ() + 200))
                {
                    if( Rnd.get(100) < 0 )
                    {
                        skill = SkillTable.getInstance().getInfo(4690,1);
                    }
                    else if( Rnd.get(100) < 5 )
                    {
                        skill = SkillTable.getInstance().getInfo(4689,1);
                    }
                    else if( Rnd.get(100) < 5 && i0 == 1 && i_quest0 == 1 )
                    {
                        skill = SkillTable.getInstance().getInfo(4685,1);
                        i_quest0 = 0;
                    }
                    else if( Rnd.get(100) < 10 && i1 == 1 )
                    {
                        skill = SkillTable.getInstance().getInfo(4688,1);
                    }
                    else if( Rnd.get(100) < 15 )
                    {
                        skill = SkillTable.getInstance().getInfo(4683,1);
                    }
                    else
                    {
                        if( Rnd.get(2) == 0) // TODO: replace me with direction, to check if player standing on left or right side of valakas
                            skill = SkillTable.getInstance().getInfo(4681,1); // left hand
                        else
                            skill = SkillTable.getInstance().getInfo(4682,1); // right hand
                    }
                }
                else if( Rnd.get(100) < 0)
                {
                    skill = SkillTable.getInstance().getInfo(4690,1);
                }
                else if( Rnd.get(100) < 5)
                {
                    skill = SkillTable.getInstance().getInfo(4689,1);
                }
                else
                {
                    skill = SkillTable.getInstance().getInfo(4684,1);
                }
            }
            else
            {
                i0 = 0;
                i1 = 0;
                if (Util.checkIfInRange(1423, npc, c2, true))
                {
                    i0 = 1;
                    i1 = 1;
                }
                if (c2.getZ() < (npc.getZ() + 200))
                {
                    if( Rnd.get(100) < 0 )
                    {
                        skill = SkillTable.getInstance().getInfo(4690,1);
                    }
                    else if( Rnd.get(100) < 10 )
                    {
                        skill = SkillTable.getInstance().getInfo(4689,1);
                    }
                    else if( Rnd.get(100) < 5 && i0 == 1 && i_quest0 == 1 )
                    {
                        skill = SkillTable.getInstance().getInfo(4685,1);
                        i_quest0 = 0;
                    }
                    else if( Rnd.get(100) < 10 && i1 == 1 )
                    {
                        skill = SkillTable.getInstance().getInfo(4688,1);
                    }
                    else if( Rnd.get(100) < 15 )
                    {
                        skill = SkillTable.getInstance().getInfo(4683,1);
                    }
                    else
                    {
                        if( Rnd.get(2) == 0) // TODO: replace me with direction, to check if player standing on left or right side of valakas
                            skill = SkillTable.getInstance().getInfo(4681,1); // left hand
                        else
                            skill = SkillTable.getInstance().getInfo(4682,1); // right hand
                    }
                }
                else if( Rnd.get(100) < 0)
                {
                    skill = SkillTable.getInstance().getInfo(4690,1);
                }
                else if( Rnd.get(100) < 10)
                {
                    skill = SkillTable.getInstance().getInfo(4689,1);
                }
                else
                {
                    skill = SkillTable.getInstance().getInfo(4684,1);
                }
            }
        }
        if (skill != null)
            callSkillAI(npc,c2,skill);
    }

    public void callSkillAI(L2NpcInstance npc, L2Character c2, L2Skill skill)
    {
        if (npc.isInvul())
            return;
        QuestTimer timer = getQuestTimer("1003", npc, null);

        if (npc == null)
        {
            if (timer != null)
                timer.cancel();
            return;
        }

        if (c2 == null || c2.isDead() || c2.isAlikeDead() || timer == null)
        {
            c2 = getRandomTarget(npc); // just in case if hate AI fail
            if (timer == null)
            {
                startQuestTimer("1003", 500, npc, null, true);
                return;
            }
        }
        L2Character target = c2;
        if (target == null || target.isDead() || target.isAlikeDead())
        {
            if (timer == null)
                startQuestTimer("1003", 500, npc, null, true);
            return;
        }

        if (Util.checkIfInRange(skill.getCastRange(), npc, target, true))
        {
            if (timer != null)
                timer.cancel();
            npc.getAI().setIntention(AI_INTENTION_IDLE);
            npc.setTarget(target);
            npc.doCast(skill);
        }
        else
        {
            if (timer == null)
                startQuestTimer("1003", 500, npc, null, true);
            npc.getAI().setIntention(AI_INTENTION_FOLLOW, target, null);
        }
    }
    public void broadcastSpawn(L2NpcInstance npc)
    {
        Collection<L2Object> objs = npc.getKnownList().getKnownObjects().values();
        {
            for (L2Object obj : objs)
            {
                if (obj instanceof L2PcInstance)
                {
                    if (Util.checkIfInRange(10000, npc, obj, true))
                    {
                        ((L2Character) obj).sendPacket(new PlaySound(1, "B03_A", 1, npc.getObjectId(), 212852,-114842,-1632));
                        ((L2Character) obj).sendPacket(new SocialAction(npc.getObjectId(),3));
                    }
                }
            }
        }
        return;
    }
    
    public L2Character getRandomTarget(L2NpcInstance npc)
    {
        FastList<L2Character> result = new FastList<L2Character>();
        Collection<L2Object> objs = npc.getKnownList().getKnownObjects().values();
        {
            for (L2Object obj : objs)
            {
                if (obj instanceof L2PcInstance)
                {
                    if (Util.checkIfInRange(5000, npc, obj, true) && !((L2Character) obj).isDead() && !((L2Character) obj).isAlikeDead())
                        result.add((L2PcInstance) obj);
                }
                if (obj instanceof L2Summon)
                {
                    if (Util.checkIfInRange(5000, npc, obj, true) && !((L2Character) obj).isDead() && !((L2Character) obj).isAlikeDead())
                        result.add((L2Summon) obj);
                }
            }
        }
        if (!result.isEmpty() && result.size() != 0)
        {
            Object[] characters = result.toArray();
            return (L2Character) characters[Rnd.get(characters.length)];
        }
        return null;
    }

    public String onSpellFinished(L2NpcInstance npc, L2PcInstance player, L2Skill skill)
    {
        if (npc.isInvul())
        {
            return null;
        }
        else if (npc.getNpcId() == VALAKAS && !npc.isInvul())
        {
            getRandomSkill(npc);
        }
        return super.onSpellFinished(npc, player, skill);
    }

    public String onAggroRangeEnter (L2NpcInstance npc, L2PcInstance player, boolean isPet)
    {
        int i1 = 0;
        if (GrandBossManager.getInstance().getBossStatus(VALAKAS) == FIGHTING)
        {
            if( npc.getCurrentHp() > ( ( npc.getMaxHp() * 1 ) / 4 ))
            {
                if( player == c_quest2 )
                {
                    if( ( ( 10 * 1000 ) + 1000 ) > i_quest2 )
                    {
                        i_quest2 = ((10 * 1000) + Rnd.get(3000));
                    }
                }
                else if( player == c_quest3 )
                {
                    if( ( ( 10 * 1000 ) + 1000 ) > i_quest3 )
                    {
                        i_quest3 = ((10 * 1000) + Rnd.get(3000));
                    }
                }
                else if( player == c_quest4 )
                {
                    if( ( ( 10 * 1000 ) + 1000 ) > i_quest4 )
                    {
                        i_quest4 = ((10 * 1000) + Rnd.get(3000));
                    }
                }
                else if( i_quest2 > i_quest3 )
                {
                    i1 = 3;
                }
                else if( i_quest2 == i_quest3 )
                {
                    if( Rnd.get(100) < 50 )
                    {
                        i1 = 2;
                    }
                    else
                    {
                        i1 = 3;
                    }
                }
                else if( i_quest2 < i_quest3 )
                {
                    i1 = 2;
                }
                if( i1 == 2 )
                {
                    if( i_quest2 > i_quest4 )
                    {
                        i1 = 4;
                    }
                    else if( i_quest2 == i_quest4 )
                    {
                        if( Rnd.get(100) < 50 )
                        {
                            i1 = 2;
                        }
                        else
                        {
                            i1 = 4;
                        }
                    }
                    else if( i_quest2 < i_quest4 )
                    {
                        i1 = 2;
                    }
                }
                else if( i1 == 3 )
                {
                    if( i_quest3 > i_quest4 )
                    {
                        i1 = 4;
                    }
                    else if( i_quest3 == i_quest4 )
                    {
                        if( Rnd.get(100) < 50 )
                        {
                            i1 = 3;
                        }
                        else
                        {
                            i1 = 4;
                        }
                    }
                    else if( i_quest3 < i_quest4 )
                    {
                        i1 = 3;
                    }
                }
                if (i1 == 2)
                {
                        i_quest2 = ( ( 10 * 1000 ) + Rnd.get(3000) );
                        c_quest2 = player;
                }
                else if (i1 == 3)
                {
                        i_quest3 = ( ( 10 * 1000 ) + Rnd.get(3000) );
                        c_quest3 = player;
                }
                else if (i1 == 4)
                {
                        i_quest4 = ( ( 10 * 1000 ) + Rnd.get(3000) );
                        c_quest4 = player;
                }
            }
            else if( npc.getCurrentHp() > ( ( npc.getMaxHp() * 2 ) / 4 ))
            {
                if( player == c_quest2 )
                {
                    if( ( ( 6 * 1000 ) + 1000 ) > i_quest2 )
                    {
                        i_quest2 = ( ( 6 * 1000 ) + Rnd.get(3000) );
                    }
                }
                else if( player == c_quest3 )
                {
                    if( ( ( 6 * 1000 ) + 1000 ) > i_quest3 )
                    {
                        i_quest3 = ( ( 6 * 1000 ) + Rnd.get(3000) );
                    }
                }
                else if( player == c_quest4 )
                {
                    if( ( ( 6 * 1000 ) + 1000 ) > i_quest4 )
                    {
                        i_quest4 = ( ( 6 * 1000 ) + Rnd.get(3000) );
                    }
                }
                else if( i_quest2 > i_quest3 )
                {
                    i1 = 3;
                }
                else if( i_quest2 == i_quest3 )
                {
                    if( Rnd.get(100) < 50 )
                    {
                        i1 = 2;
                    }
                    else
                    {
                        i1 = 3;
                    }
                }
                else if( i_quest2 < i_quest3 )
                {
                    i1 = 2;
                }
                if( i1 == 2 )
                {
                    if( i_quest2 > i_quest4 )
                    {
                        i1 = 4;
                    }
                    else if( i_quest2 == i_quest4 )
                    {
                        if( Rnd.get(100) < 50 )
                        {
                            i1 = 2;
                        }
                        else
                        {
                            i1 = 4;
                        }
                    }
                    else if( i_quest2 < i_quest4 )
                    {
                        i1 = 2;
                    }
                }
                else if( i1 == 3 )
                {
                    if( i_quest3 > i_quest4 )
                    {
                        i1 = 4;
                    }
                    else if( i_quest3 == i_quest4 )
                    {
                        if( Rnd.get(100) < 50 )
                        {
                            i1 = 3;
                        }
                        else
                        {
                            i1 = 4;
                        }
                    }
                    else if( i_quest3 < i_quest4 )
                    {
                        i1 = 3;
                    }
                }
                if (i1 == 2)
                {
                        i_quest2 = ( ( 6 * 1000 ) + Rnd.get(3000) );
                        c_quest2 = player;
                }
                else if (i1 == 3)
                {
                        i_quest3 = ( ( 6 * 1000 ) + Rnd.get(3000) );
                        c_quest3 = player;
                }
                else if (i1 == 4)
                {
                        i_quest4 = ( ( 6 * 1000 ) + Rnd.get(3000) );
                        c_quest4 = player;
                }
            }
            else if( npc.getCurrentHp() > ( ( npc.getMaxHp() * 3 ) / 4 ))
            {
                if( player == c_quest2 )
                {
                    if( ( ( 3 * 1000 ) + 1000 ) > i_quest2 )
                    {
                        i_quest2 = ( ( 3 * 1000 ) + Rnd.get(3000) );
                    }
                }
                else if( player == c_quest3 )
                {
                    if( ( ( 3 * 1000 ) + 1000 ) > i_quest3 )
                    {
                        i_quest3 = ( ( 3 * 1000 ) + Rnd.get(3000) );
                    }
                }
                else if( player == c_quest4 )
                {
                    if( ( ( 3 * 1000 ) + 1000 ) > i_quest4 )
                    {
                        i_quest4 = ( ( 3 * 1000 ) + Rnd.get(3000) );
                    }
                }
                else if( i_quest2 > i_quest3 )
                {
                    i1 = 3;
                }
                else if( i_quest2 == i_quest3 )
                {
                    if( Rnd.get(100) < 50 )
                    {
                        i1 = 2;
                    }
                    else
                    {
                        i1 = 3;
                    }
                }
                else if( i_quest2 < i_quest3 )
                {
                    i1 = 2;
                }
                if( i1 == 2 )
                {
                    if( i_quest2 > i_quest4 )
                    {
                        i1 = 4;
                    }
                    else if( i_quest2 == i_quest4 )
                    {
                        if( Rnd.get(100) < 50 )
                        {
                            i1 = 2;
                        }
                        else
                        {
                            i1 = 4;
                        }
                    }
                    else if( i_quest2 < i_quest4 )
                    {
                        i1 = 2;
                    }
                }
                else if( i1 == 3 )
                {
                    if( i_quest3 > i_quest4 )
                    {
                        i1 = 4;
                    }
                    else if( i_quest3 == i_quest4 )
                    {
                        if( Rnd.get(100) < 50 )
                        {
                            i1 = 3;
                        }
                        else
                        {
                            i1 = 4;
                        }
                    }
                    else if( i_quest3 < i_quest4 )
                    {
                        i1 = 3;
                    }
                }
                if (i1 == 2)
                {
                        i_quest2 = ( ( 3 * 1000 ) + Rnd.get(3000) );
                        c_quest2 = player;
                }
                else if (i1 == 3)
                {
                        i_quest3 = ( ( 3 * 1000 ) + Rnd.get(3000) );
                        c_quest3 = player;
                }
                else if (i1 == 4)
                {
                        i_quest4 = ( ( 3 * 1000 ) + Rnd.get(3000) );
                        c_quest4 = player;
                }
            }
            else if( player == c_quest2 )
            {
                if( ( ( 2 * 1000 ) + 1000 ) > i_quest2 )
                {
                    i_quest2 = ( ( 2 * 1000 ) + Rnd.get(3000));
                }
            }
            else if( player == c_quest3 )
            {
                if( ( ( 2 * 1000 ) + 1000 ) > i_quest3 )
                {
                    i_quest3 = ( ( 2 * 1000 ) + Rnd.get(3000));
                }
            }
            else if( player == c_quest4 )
            {
                if( ( ( 2 * 1000 ) + 1000 ) > i_quest4 )
                {
                    i_quest4 = ( ( 2 * 1000 ) + Rnd.get(3000));
                }
            }
            else if( i_quest2 > i_quest3 )
            {
                i1 = 3;
            }
            else if( i_quest2 == i_quest3 )
            {
                if( Rnd.get(100) < 50 )
                {
                    i1 = 2;
                }
                else
                {
                    i1 = 3;
                }
            }
            else if( i_quest2 < i_quest3 )
            {
                i1 = 2;
            }
            if( i1 == 2 )
            {
                if( i_quest2 > i_quest4 )
                {
                    i1 = 4;
                }
                else if( i_quest2 == i_quest4 )
                {
                    if( Rnd.get(100) < 50 )
                    {
                        i1 = 2;
                    }
                    else
                    {
                        i1 = 4;
                    }
                }
                else if( i_quest2 < i_quest4 )
                {
                    i1 = 2;
                }
            }
            else if( i1 == 3 )
            {
                if( i_quest3 > i_quest4 )
                {
                    i1 = 4;
                }
                else if( i_quest3 == i_quest4 )
                {
                    if( Rnd.get(100) < 50 )
                    {
                        i1 = 3;
                    }
                    else
                    {
                        i1 = 4;
                    }
                }
                else if( i_quest3 < i_quest4 )
                {
                    i1 = 3;
                }
            }
            if (i1 == 2)
            {
                    i_quest2 = ( ( 2 * 1000 ) + Rnd.get(3000) );
                    c_quest2 = player;
            }
            else if (i1 == 3)
            {
                    i_quest3 = ( ( 2 * 1000 ) + Rnd.get(3000) );
                    c_quest3 = player;
            }
            else if (i1 == 4)
            {
                    i_quest4 = ( ( 2 * 1000 ) + Rnd.get(3000) );
                    c_quest4 = player;
            }
        }
        else if( player == c_quest2 )
        {
            if( ( ( 1 * 1000 ) + 1000 ) > i_quest2 )
            {
                i_quest2 = ( ( 1 * 1000 ) + Rnd.get(3000) );
            }
        }
        else if( player == c_quest3 )
        {
            if( ( ( 1 * 1000 ) + 1000 ) > i_quest3 )
            {
                i_quest3 = ( ( 1 * 1000 ) + Rnd.get(3000) );
            }
        }
        else if( player == c_quest4 )
        {
            if( ( ( 1 * 1000 ) + 1000 ) > i_quest4 )
            {
                i_quest4 = ( ( 1 * 1000 ) + Rnd.get(3000) );
            }
        }
        else if( i_quest2 > i_quest3 )
        {
            i1 = 3;
        }
        else if( i_quest2 == i_quest3 )
        {
            if( Rnd.get(100) < 50 )
            {
                i1 = 2;
            }
            else
            {
                i1 = 3;
            }
        }
        else if( i_quest2 < i_quest3 )
        {
            i1 = 2;
        }
        if( i1 == 2 )
        {
            if( i_quest2 > i_quest4 )
            {
                i1 = 4;
            }
            else if( i_quest2 == i_quest4 )
            {
                if( Rnd.get(100) < 50 )
                {
                    i1 = 2;
                }
                else
                {
                    i1 = 4;
                }
            }
            else if( i_quest2 < i_quest4 )
            {
                i1 = 2;
            }
        }
        else if( i1 == 3 )
        {
            if( i_quest3 > i_quest4 )
            {
                i1 = 4;
            }
            else if( i_quest3 == i_quest4 )
            {
                if( Rnd.get(100) < 50 )
                {
                    i1 = 3;
                }
                else
                {
                    i1 = 4;
                }
            }
            else if( i_quest3 < i_quest4 )
            {
                i1 = 3;
            }
        }
        if (i1 == 2)
        {
                i_quest2 = ( ( 1 * 1000 ) + Rnd.get(3000) );
                c_quest2 = player;
        }
        else if (i1 == 3)
        {
                i_quest3 = ( ( 1 * 1000 ) + Rnd.get(3000) );
                c_quest3 = player;
        }
        else if (i1 == 4)
        {
                i_quest4 = ( ( 1 * 1000 ) + Rnd.get(3000) );
                c_quest4 = player;
        }
        if (GrandBossManager.getInstance().getBossStatus(VALAKAS) == FIGHTING && !npc.isInvul())
        {
            getRandomSkill(npc);
        }
        else
            return null;
        return super.onAggroRangeEnter(npc, player, isPet);
    }

    public String onSkillSee (L2NpcInstance npc, L2PcInstance caster, L2Skill skill, L2Object[] targets, boolean isPet)
    {
        if (npc.isInvul())
        {
            return null;
        }
        npc.setTarget(caster);
        return super.onSkillSee(npc, caster, skill, targets, isPet);
    }

    public static void main(String[] args)
    {
        // now call the constructor (starts up the ai)
        new Valakas(-1,"valakas","ai");
    }
}

0
Fix009
Fix009

User

Бывалый

Posts: 270

На форуме с: 05/01/2009

Репутация: +4

Рейтинг: 0

· 05/02/2009, 04:52 PM

ето у тебя так написано и когда валика бьеш он не тпает?и скажы куда ето залитЬ?

0
Евгений
Евгений

User

Бывалый

Posts: 164

На форуме с: 10/06/2009

Репутация: +122

Рейтинг: 0

· 05/02/2009, 04:55 PM

он тпшит но когда с квестом проходят люди с ним всё норм

Код
Server\data\scripts\ai\individual\valakas.java

0
Fix009
Fix009

User

Бывалый

Posts: 270

На форуме с: 05/01/2009

Репутация: +4

Рейтинг: 0

· 05/02/2009, 05:14 PM

и скажы плз как добавить дроп к антарасу или там фринтезе ?

фозик может подскажеш норм сборку интерлюд ? дай сылку плз

блин валакас чета бесмертный чего?*

0
Войдите или зарегистрируйтесь чтобы ответить