/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jfrozen.gameserver.model.scripts;
import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.ai.CtrlIntention;
import com.l2jfrozen.gameserver.controllers.GameTimeController;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.network.serverpackets.MagicSkillUser;
import com.l2jfrozen.gameserver.network.serverpackets.SetupGauge;
import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
import com.l2jfrozen.gameserver.util.Broadcast;
import com.l2jfrozen.util.random.Rnd;
/**
* @author xAddytzu moded by Bobi
*/
public class L2RBManager
{
//Level 40-45
public static void RaidbossLevel40(L2PcInstance player)
{
if(!player.isInParty() || !player.getParty().isLeader(player))
{
player.sendMessage("You are not a party leader");
return;
}
int unstuckTimer = (Config.UNSTUCK_INTERVAL*1000 );
player.setTarget(player);
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
player.disableAllSkills();
MagicSkillUser msk = new MagicSkillUser(player, 361, 1, unstuckTimer, 0);
Broadcast.toSelfAndKnownPlayersInRadius(player, msk, 810000);
SetupGauge sg = new SetupGauge(0, unstuckTimer);
player.sendPacket(sg);
RaidbossLevel40 ef = new RaidbossLevel40(player);
player.setSkillCast(ThreadPoolManager.getInstance().scheduleGeneral(ef, unstuckTimer));
player.setSkillCastEndTime(10+GameTimeController.getGameTicks()+unstuckTimer/GameTimeController.MILLIS_IN_TICK);
}
static class RaidbossLevel40 implements Runnable
{
private L2PcInstance _player;
RaidbossLevel40(L2PcInstance player)
{
_player = player;
}
@Override
public void run()
{
if(_player.isDead())
return;
_player.setIsIn7sDungeon(false);
_player.enableAllSkills();
int chance = Rnd.get(22);
if(_player.getParty().isLeader(_player))
{
for(L2PcInstance pm : _player.getParty().getPartyMembers())
{
if(pm.getParty().isLeader(pm))
continue;
pm.showTeleportHtml();
}
if(chance == 0)
_player.teleToLocation(87536,75872,-3591,true); // Leto Chief Talkin (40)
else if(chance == 1)
_player.teleToLocation(83056,183232,-3616,true); // Water Spirit Lian (40)
else if(chance == 2)
_player.teleToLocation(73520,66912,-3728,true); // Shaman King Selu (40)
else if(chance == 3)
_player.teleToLocation(86528,216864,-3584,true); // Gwindorr (40)
else if(chance == 4)
_player.teleToLocation(94000,197500,-3300,true); // Icarus Sample 1 (40)
else if(chance == 5)
_player.teleToLocation(112112,209936,-3616,true); // Fafurion's Page Sika (40)
else if(chance == 6)
_player.teleToLocation(128352,138464,-3467,true); // Nakondas (40)
else if(chance == 7)
_player.teleToLocation(72192,125424,-3657,true); // Road Scavenger Leader (40)
else if(chance == 8)
_player.teleToLocation(92528,84752,-3703,true); // Wizard of Storm Teruk (40)
else if(chance == 9)
_player.teleToLocation(73776,201552,-3760,true); // Water Couatle Ateka (40)
else if(chance == 10)
_player.teleToLocation(90848,16368,-5296 ,true); // Crazy Mechanic Golem (43)
else if(chance == 11)
_player.teleToLocation(125920,190208,-3291 ,true); // Earth Protector Panathen (43)
else if(chance == 12)
_player.teleToLocation(107000,92000,-2272 ,true); // Thief Kelbar (44)
else if(chance == 13)
_player.teleToLocation(66944,67504,-3704 ,true); // Timak Orc Chief Ranger (44)
else if(chance == 14)
_player.teleToLocation(64048,16048,-3536 ,true); // Rotten Tree Repiro (44)
else if(chance == 15)
_player.teleToLocation(62416,8096,-3376 ,true); // Dread Avenger Kraven (44)
else if(chance == 16)
_player.teleToLocation(107056,168176,-3456 ,true); // Biconne of Blue Sky (45)
else if(chance == 17)
_player.teleToLocation(111440,82912,-2912 ,true); // Evil Spirit Cyrion (45)
else if(chance == 18)
_player.teleToLocation(93120,19440,-3607 ,true); // Iron Giant Totem (45)
else if(chance == 19)
_player.teleToLocation(67296,64128,-3723 ,true); // Timak Orc Gosmos (45)
else if(chance == 20)
_player.teleToLocation(113840,84256,-2480 ,true); // Shacram (45)
else if(chance == 21)
_player.teleToLocation(126624,174448,-3056 ,true); // Fafurion's Henchman Istary (45)
}
else return;
}
}
//Level 45-50
public static void RaidbossLevel45(L2PcInstance player)
{
if(!player.isInParty() || !player.getParty().isLeader(player))
{
player.sendMessage("You are not a party leader");
return;
}
int unstuckTimer = (Config.UNSTUCK_INTERVAL*1000 );
player.setTarget(player);
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
player.disableAllSkills();
MagicSkillUser msk = new MagicSkillUser(player, 361, 1, unstuckTimer, 0);
Broadcast.toSelfAndKnownPlayersInRadius(player, msk, 810000);
SetupGauge sg = new SetupGauge(0, unstuckTimer);
player.sendPacket(sg);
RaidbossLevel45 ef = new RaidbossLevel45(player);
player.setSkillCast(ThreadPoolManager.getInstance().scheduleGeneral(ef, unstuckTimer));
player.setSkillCastEndTime(10+GameTimeController.getGameTicks()+unstuckTimer/GameTimeController.MILLIS_IN_TICK);
}
static class RaidbossLevel45 implements Runnable
{
private L2PcInstance _player;
RaidbossLevel45(L2PcInstance player)
{
_player = player;
}
@Override
public void run()
{
if(_player.isDead())
return;
_player.setIsIn7sDungeon(false);
_player.enableAllSkills();
int chance = Rnd.get(10);
if(_player.getParty().isLeader(_player))
{
for(L2PcInstance pm : _player.getParty().getPartyMembers())
{
if(pm.getParty().isLeader(pm))
continue;
pm.showTeleportHtml();
}
if(chance == 0)
_player.teleToLocation(81920,113136,-3056 ,true); // Necrosentinel Royal Guard (47)
else if(chance == 1)
_player.teleToLocation(107792,27728,-3488 ,true); // Barion (47)
else if(chance == 2)
_player.teleToLocation(42032,24128,-4704 ,true); // Orfen's Handmaiden (48)
else if(chance == 3)
_player.teleToLocation(77104,5408,-3088 ,true); // King Tarlk (48)
else if(chance == 4)
_player.teleToLocation(92976,7920,-3914 ,true); // Katu Van Leader Atui (49)
else if(chance == 5)
_player.teleToLocation(133632,87072,-3623 ,true); // Mirror of Oblivion (49)
else if(chance == 6)
_player.teleToLocation(116352,27648,-3319 ,true); // Karte (49)
else if(chance == 7)
_player.teleToLocation(169744,11920,-2732 ,true); // Ghost of Peasant Leader (50)
else if(chance == 8)
_player.teleToLocation(89904,105712,-3292 ,true); // Cursed Clara (50)
else if(chance == 9)
_player.teleToLocation(75488,-9360,-2720 ,true); // Carnage Lord Gato (50)
}
else return;
}
}
//Level 50-55
public static void RaidbossLevel50(L2PcInstance player)
{
if(!player.isInParty() || !player.getParty().isLeader(player))
{
player.sendMessage("You are not a party leader");
return;
}
int unstuckTimer = (Config.UNSTUCK_INTERVAL*1000 );
player.setTarget(player);
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
player.disableAllSkills();
MagicSkillUser msk = new MagicSkillUser(player, 361, 1, unstuckTimer, 0);
Broadcast.toSelfAndKnownPlayersInRadius(player, msk, 810000);
SetupGauge sg = new SetupGauge(0, unstuckTimer);
player.sendPacket(sg);
RaidbossLevel50 ef = new RaidbossLevel50(player);
player.setSkillCast(ThreadPoolManager.getInstance().scheduleGeneral(ef, unstuckTimer));
player.setSkillCastEndTime(10+GameTimeController.getGameTicks()+unstuckTimer/GameTimeController.MILLIS_IN_TICK);
}
static class RaidbossLevel50 implements Runnable
{
private L2PcInstance _player;
RaidbossLevel50(L2PcInstance player)
{
_player = player;
}
@Override
public void run()
{
if(_player.isDead())
return;
_player.setIsIn7sDungeon(false);
_player.enableAllSkills();
int chance = Rnd.get(15);
if(_player.getParty().isLeader(_player))
{
for(L2PcInstance pm : _player.getParty().getPartyMembers())
{
if(pm.getParty().isLeader(pm))
continue;
pm.showTeleportHtml();
}
if(chance == 0)
_player.teleToLocation(125520,27216,-3632, true); // Verfa (51)
else if(chance == 1)
_player.teleToLocation(150304,67776,-3688, true); // Deadman Ereve (51)
else if(chance == 2)
_player.teleToLocation(94992,-23168,-2176, true); // Captain of Red Flag Shaka (52)
else if(chance == 3)
_player.teleToLocation(175712,29856,-3776, true); // Grave Robber Kim (52)
else if(chance == 4)
_player.teleToLocation(124984,43200,-3625 ,true); // Paniel the Unicorn (54)
else if(chance == 5)
_player.teleToLocation(104096,-16896,-1803 ,true); // Bandit Leader Barda (55)
else if(chance == 6)
_player.teleToLocation(83174,254428,-10873 ,true); // Eva's Spirit Niniel (55)
else if(chance == 7)
_player.teleToLocation(125280,102576,-3305 ,true); // Beleth's Seer Sephia (55)
else if(chance == 8)
_player.teleToLocation(85622,88766,-5120 ,true); // Pagan Watcher Cerberon (55)
else if(chance == 9)
_player.teleToLocation(73520,66912,-3728 ,true); // Shaman King Selu (55)
else if(chance == 10)
_player.teleToLocation(92544,115232,-3200 ,true); // Black Lily (55)
else if(chance == 11)
_player.teleToLocation(183568,24560,-3184 ,true); // Ghost Knight Kabed (55)
else if(chance == 12)
_player.teleToLocation(135872,94592,-3735 ,true); // Sorcerer Isirr (55)
else if(chance == 13)
_player.teleToLocation(113920,52960,-3735 ,true); // Furious Thieles (55)
else if(chance == 14)
_player.teleToLocation(125600,50100,-3600 ,true); // Enchanted Forest Watcher Ruell (55)
}
else return;
}
}
//Level 55-60
public static void RaidbossLevel55(L2PcInstance player)
{
if(!player.isInParty() || !player.getParty().isLeader(player))
{
player.sendMessage("You are not a party leader");
return;
}
int unstuckTimer = (Config.UNSTUCK_INTERVAL*1000 );
player.setTarget(player);
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
player.disableAllSkills();
MagicSkillUser msk = new MagicSkillUser(player, 361, 1, unstuckTimer, 0);
Broadcast.toSelfAndKnownPlayersInRadius(player, msk, 810000);
SetupGauge sg = new SetupGauge(0, unstuckTimer);
player.sendPacket(sg);
RaidbossLevel55 ef = new RaidbossLevel55(player);
player.setSkillCast(ThreadPoolManager.getInstance().scheduleGeneral(ef, unstuckTimer));
player.setSkillCastEndTime(10+GameTimeController.getGameTicks()+unstuckTimer/GameTimeController.MILLIS_IN_TICK);
}
static class RaidbossLevel55 implements Runnable
{
private L2PcInstance _player;
RaidbossLevel55(L2PcInstance player)
{
_player = player;
}
@Override
public void run()
{
if(_player.isDead())
return;
_player.setIsIn7sDungeon(false);
_player.enableAllSkills();
int chance = Rnd.get(13);
if(_player.getParty().isLeader(_player))
{
for(L2PcInstance pm : _player.getParty().getPartyMembers())
{
if(pm.getParty().isLeader(pm))
continue;
pm.showTeleportHtml();
}
if(chance == 0)
_player.teleToLocation(113600,47120,-4640 ,true); // Fairy Queen Timiniel (56)
else if(chance == 1)
_player.teleToLocation(166288,68096,-3264 ,true);// Harit Guardian Garangky (56)
else if(chance == 2)
_player.teleToLocation(86300,-8200,-3000 ,true); // Refugee Hopeful Leo (56)
else if(chance == 3)
_player.teleToLocation(66672,46704,-3920 ,true); // Timak Seer Ragoth (57)
else if(chance == 4)
_player.teleToLocation(165424,93776,-2992 ,true); // Soulless Wild Boar (59)
else if(chance == 5)
_player.teleToLocation(155000,85400,-3200 ,true); // Abyss Brukunt (59)
else if(chance == 6)
_player.teleToLocation(194107,53884,-4368 ,true); // Giant Marpanak (60)
else if(chance == 7)
_player.teleToLocation(173880,-11412,-2880 ,true); // Ghost of the Well Lidia (60)
else if(chance == 8)
_player.teleToLocation(181814,52379,-4344 ,true); // Guardian of the Statue of Giant Karum (60)
else if(chance == 9)
_player.teleToLocation(76787,245775,-10376 ,true); // The 3rd Underwater Guardian (60)
else if(chance == 10)
_player.teleToLocation(170320,42640,-4832 ,true); // Taik High Prefect Arak (60)
else if(chance == 11)
_player.teleToLocation(120080,111248,-3047 ,true); // Ancient Weird Drake (60)
else if(chance == 12)
_player.teleToLocation(115072,112272,-3018 ,true); // Lord Ishka (60)
}
else return;
}
}
//Level 60-65
public static void RaidbossLevel60(L2PcInstance player)
{
if(!player.isInParty() || !player.getParty().isLeader(player))
{
player.sendMessage("You are not a party leader");
return;
}
int unstuckTimer = (Config.UNSTUCK_INTERVAL*1000 );
player.setTarget(player);
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
player.disableAllSkills();
MagicSkillUser msk = new MagicSkillUser(player, 361, 1, unstuckTimer, 0);
Broadcast.toSelfAndKnownPlayersInRadius(player, msk, 810000);
SetupGauge sg = new SetupGauge(0, unstuckTimer);
player.sendPacket(sg);
RaidbossLevel60 ef = new RaidbossLevel60(player);
player.setSkillCast(ThreadPoolManager.getInstance().scheduleGeneral(ef, unstuckTimer));
player.setSkillCastEndTime(10+GameTimeController.getGameTicks()+unstuckTimer/GameTimeController.MILLIS_IN_TICK);
}
static class RaidbossLevel60 implements Runnable
{
private L2PcInstance _player;
RaidbossLevel60(L2PcInstance player)
{
_player = player;
}
@Override
public void run()
{
if(_player.isDead())
return;
_player.setIsIn7sDungeon(false);
_player.enableAllSkills();
int chance = Rnd.get(8);
if(_player.getParty().isLeader(_player))
{
for(L2PcInstance pm : _player.getParty().getPartyMembers())
{
if(pm.getParty().isLeader(pm))
continue;
pm.showTeleportHtml();
}
if(chance == 0)
_player.teleToLocation(104240,-3664,-3392 ,true); // Roaring Lord Kastor (62)
else if(chance == 1)
_player.teleToLocation(186192,61472,-4160 ,true); // Gorgolos (64)
else if(chance == 2)
_player.teleToLocation(191975,56959,-7616 ,true); // Hekaton Prime (65)
else if(chance == 3)
_player.teleToLocation(170048,-24896,-3440 ,true); // Gargoyle Lord Tiphon (65)
else if(chance == 4)
_player.teleToLocation(170656,85184,-2000 ,true); // Fierce Tiger King Angel (65)
else if(chance == 5)
_player.teleToLocation(113232,17456,-4384 ,true); // Enmity Ghost Ramdal (65)
else if(chance == 6)
_player.teleToLocation(117760,-9072,-3264 ,true); // Rahha (65)
else if(chance == 7)
_player.teleToLocation(168288,28368,-3632 ,true); // Shilen's Priest Hisilrome (65)
}
else return;
}
}
//Level 65-70
public static void RaidbossLevel65(L2PcInstance player)
{
if(!player.isInParty() || !player.getParty().isLeader(player))
{
player.sendMessage("You are not a party leader");
return;
}
int unstuckTimer = (Config.UNSTUCK_INTERVAL*1000 );
player.setTarget(player);
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
player.disableAllSkills();
MagicSkillUser msk = new MagicSkillUser(player, 361, 1, unstuckTimer, 0);
Broadcast.toSelfAndKnownPlayersInRadius(player, msk, 810000);
SetupGauge sg = new SetupGauge(0, unstuckTimer);
player.sendPacket(sg);
RaidbossLevel65 ef = new RaidbossLevel65(player);
player.setSkillCast(ThreadPoolManager.getInstance().scheduleGeneral(ef, unstuckTimer));
player.setSkillCastEndTime(10+GameTimeController.getGameTicks()+unstuckTimer/GameTimeController.MILLIS_IN_TICK);
}
static class RaidbossLevel65 implements Runnable
{
private L2PcInstance _player;
RaidbossLevel65(L2PcInstance player)
{
_player = player;
}
@Override
public void run()
{
if(_player.isDead())
return;
_player.setIsIn7sDungeon(false);
_player.enableAllSkills();
int chance = Rnd.get(14);
if(_player.getParty().isLeader(_player))
{
for(L2PcInstance pm : _player.getParty().getPartyMembers())
{
if(pm.getParty().isLeader(pm))
continue;
pm.showTeleportHtml();
}
if(chance == 0)
_player.teleToLocation(93296,-75104,-1824 ,true); // Demon's Agent Falston (66)
else if(chance == 1)
_player.teleToLocation(186896,56276,-4576 ,true); // Last Titan utenus (66)
else if(chance == 2)
_player.teleToLocation(144400,-28192,-1920 ,true); // Kernon's Faithful Servant Kelone (67)
else if(chance == 3)
_player.teleToLocation(185800,-26500,-2000 ,true); // Spirit of Andras, the Betrayer (69)
else if(chance == 4)
_player.teleToLocation(143265,110044,-3944 ,true); // Bloody Priest Rudelto (69)
else if(chance == 5)
_player.teleToLocation(180968,12035,-2720 ,true); // Shilen's Messenger Cabrio (70)
else if(chance == 6)
_player.teleToLocation(151053,88124,-5424 ,true); // Anakim's Nemesis Zakaron (70)
else if(chance == 7)
_player.teleToLocation(91008,-85904,-2736 ,true); // Flame of Splendor Barakiel (70)
else if(chance == 8)
_player.teleToLocation(130500,59098,3584 ,true); // Roaring Skylancer (70)
else if(chance == 9)
_player.teleToLocation(123504,-23696,-3481 ,true); // Beast Lord Behemoth (70)
else if(chance == 10)
_player.teleToLocation(192376,22087,-3608 ,true); // Palibati Queen Themis (70)
else if(chance == 11)
_player.teleToLocation(102656,157424,-3735 ,true); // Fafurion's Herald Lokness (70)
else if(chance == 12)
_player.teleToLocation(156704,-6096,-4185 ,true); // Meanas Anor (70)
else if(chance == 13)
_player.teleToLocation(116151,16227,1944 ,true); // Korim (70)
}
else return;
}
}
//70-75
public static void RaidbossLevel70(L2PcInstance player)
{
if(!player.isInParty() || !player.getParty().isLeader(player))
{
player.sendMessage("You are not a party leader");
return;
}
int unstuckTimer = (Config.UNSTUCK_INTERVAL*1000 );
player.setTarget(player);
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
player.disableAllSkills();
MagicSkillUser msk = new MagicSkillUser(player, 361, 1, unstuckTimer, 0);
Broadcast.toSelfAndKnownPlayersInRadius(player, msk, 810000);
SetupGauge sg = new SetupGauge(0, unstuckTimer);
player.sendPacket(sg);
RaidbossLevel70 ef = new RaidbossLevel70(player);
player.setSkillCast(ThreadPoolManager.getInstance().scheduleGeneral(ef, unstuckTimer));
player.setSkillCastEndTime(10+GameTimeController.getGameTicks()+unstuckTimer/GameTimeController.MILLIS_IN_TICK);
}
static class RaidbossLevel70 implements Runnable
{
private L2PcInstance _player;
RaidbossLevel70(L2PcInstance player)
{
_player = player;
}
@Override
public void run()
{
if(_player.isDead())
return;
_player.setIsIn7sDungeon(false);
_player.enableAllSkills();
int chance = Rnd.get(7);
if(_player.getParty().isLeader(_player))
{
for(L2PcInstance pm : _player.getParty().getPartyMembers())
{
if(pm.getParty().isLeader(pm))
continue;
pm.showTeleportHtml();
}
if(chance == 0)
_player.teleToLocation(113200,17552,-1424 ,true); // Immortal Savior Mardil (71)
else if(chance == 1)
_player.teleToLocation(116400,-62528,-3264 ,true); // Vanor Chief Kandra (72)
else if(chance == 2)
_player.teleToLocation(108096,157408,-3688 ,true); // Water Dragon Seer Sheshark (72)
else if(chance == 3)
_player.teleToLocation(127903,-13399,-3720 ,true); // Doom Blade Tanatos (72)
else if(chance == 4)
_player.teleToLocation(113551,17083,-2120 ,true); // Death Lord Hallate (73)
else if(chance == 5)
_player.teleToLocation(152660,110387,-5520 ,true); // Antharas Priest Cloe (74)
else if(chance == 6)
_player.teleToLocation(119760,157392,-3744 ,true); // Krokian Padisha Sobekk (74)
}
else return;
}
}
}