Jump to content
  • 0

GrandBoss teleport


remigas

Question

Hello guys, need help, how to disable grand boss quest teleport.

 

expl. When you get to baium,valakas or antharas lair, other ppl cant teleport. until rb dead or you dead, how to disable this that all ppl can tp anytime?

thanks.

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

as i understand i need to remove smth from here, or add some lines, SweeTs can you give me help with it?

 

 

package net.sf.l2j.gameserver.scripting.scripts.teleports;

import java.util.List;

import net.sf.l2j.commons.math.MathUtil;
import net.sf.l2j.commons.random.Rnd;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.data.DoorTable;
import net.sf.l2j.gameserver.instancemanager.GrandBossManager;
import net.sf.l2j.gameserver.instancemanager.ZoneManager;
import net.sf.l2j.gameserver.model.Location;
import net.sf.l2j.gameserver.model.actor.Npc;
import net.sf.l2j.gameserver.model.actor.instance.Player;
import net.sf.l2j.gameserver.model.zone.type.L2BossZone;
import net.sf.l2j.gameserver.scripting.Quest;
import net.sf.l2j.gameserver.scripting.QuestState;
import net.sf.l2j.gameserver.scripting.ScriptManager;
import net.sf.l2j.gameserver.scripting.scripts.ai.individual.Antharas;
import net.sf.l2j.gameserver.scripting.scripts.ai.individual.Baium;
import net.sf.l2j.gameserver.scripting.scripts.ai.individual.Sailren;
import net.sf.l2j.gameserver.scripting.scripts.ai.individual.Valakas;

/**
 * This script leads behavior of multiple bosses teleporters.
 * <ul>
 * <li>13001, Heart of Warding : Teleport into Lair of Antharas</li>
 * <li>29055, Teleportation Cubic : Teleport out of Baium zone</li>
 * <li>31859, Teleportation Cubic : Teleport out of Lair of Antharas</li>
 * <li>31384, Gatekeeper of Fire Dragon : Opening some doors</li>
 * <li>31385, Heart of Volcano : Teleport into Lair of Valakas</li>
 * <li>31540, Watcher of Valakas Klein : Teleport into Hall of Flames</li>
 * <li>31686, Gatekeeper of Fire Dragon : Opens doors to Heart of Volcano</li>
 * <li>31687, Gatekeeper of Fire Dragon : Opens doors to Heart of Volcano</li>
 * <li>31759, Teleportation Cubic : Teleport out of Lair of Valakas</li>
 * <li>31862, Angelic Vortex : Baium Teleport (3 different HTMs according of situation)</li>
 * <li>32107, Teleportation Cubic : Teleport out of Sailren Nest</li>
 * <li>32109, Shilen's Stone Statue : Teleport to Sailren Nest</li>
 * </ul>
 * @author Plim, original python script by Emperorc
 */
public class GrandBossTeleporters extends Quest
{
    private static final String qn = "GrandBossTeleporters";
    
    private static final Location BAIUM_IN = new Location(113100, 14500, 10077);
    private static final Location[] BAIUM_OUT =
    {
        new Location(108784, 16000, -4928),
        new Location(113824, 10448, -5164),
        new Location(115488, 22096, -5168)
    };
    
    private static final Location SAILREN_IN = new Location(27333, -6835, -1970);
    private static final Location[] SAILREN_OUT =
    {
        new Location(10610, -24035, -3676),
        new Location(10703, -24041, -3673),
        new Location(10769, -24107, -3672)
    };
    
    private static int _valakasPlayersCount = 0;
    
    public GrandBossTeleporters()
    {
        super(-1, "teleports");
        
        addFirstTalkId(29055, 31862);
        addStartNpc(13001, 29055, 31859, 31384, 31385, 31540, 31686, 31687, 31759, 31862, 32107, 32109);
        addTalkId(13001, 29055, 31859, 31384, 31385, 31540, 31686, 31687, 31759, 31862, 32107, 32109);
    }
    
    @Override
    public String onAdvEvent(String event, Npc npc, Player player)
    {
        String htmltext = "";
        QuestState st = player.getQuestState(qn);
        if (st == null)
            st = newQuestState(player);
        
        st.setState(STATE_STARTED);
        
        if (event.equalsIgnoreCase("baium"))
        {
            // Player is mounted on a wyvern, cancel it.
            if (player.isFlying())
                htmltext = "31862-05.htm";
            // Player hasn't blooded fabric, cancel it.
            else if (!st.hasQuestItems(4295))
                htmltext = "31862-03.htm";
            // All is ok, take the item and teleport the player inside.
            else
            {
                st.takeItems(4295, 1);
                
                // allow entry for the player for the next 30 secs.
                ZoneManager.getInstance().getZoneById(110002, L2BossZone.class).allowPlayerEntry(player, 30);
                player.teleToLocation(BAIUM_IN, 0);
            }
        }
        else if (event.equalsIgnoreCase("baium_story"))
            htmltext = "31862-02.htm";
        else if (event.equalsIgnoreCase("baium_exit"))
            player.teleToLocation(Rnd.get(BAIUM_OUT), 100);
        else if (event.equalsIgnoreCase("31540"))
        {
            if (st.hasQuestItems(7267))
            {
                st.takeItems(7267, 1);
                player.teleToLocation(183813, -115157, -3303, 0);
                st.set("allowEnter", "1");
            }
            else
                htmltext = "31540-06.htm";
        }
        return htmltext;
    }
    
    @Override
    public String onFirstTalk(Npc npc, Player player)
    {
        String htmltext = "";
        QuestState st = player.getQuestState(qn);
        if (st == null)
            st = newQuestState(player);
        
        st.setState(STATE_STARTED);
        
        switch (npc.getNpcId())
        {
            case 29055:
                htmltext = "29055-01.htm";
                break;
            
            case 31862:
                final int status = GrandBossManager.getInstance().getBossStatus(29020);
                if (status == Baium.AWAKE)
                    htmltext = "31862-01.htm";
                else if (status == Baium.DEAD)
                    htmltext = "31862-04.htm";
                else
                    htmltext = "31862-00.htm";
                break;
        }
        
        return htmltext;
    }
    
    @Override
    public String onTalk(Npc npc, Player player)
    {
        String htmltext = "";
        QuestState st = player.getQuestState(getName());
        if (st == null)
            return null;
        
        st.setState(STATE_STARTED);
        
        int status;
        switch (npc.getNpcId())
        {
            case 13001:
                status = GrandBossManager.getInstance().getBossStatus(Antharas.ANTHARAS);
                if (status == Antharas.FIGHTING)
                    htmltext = "13001-02.htm";
                else if (status == Antharas.DEAD)
                    htmltext = "13001-01.htm";
                else if (status == Antharas.DORMANT || status == Antharas.WAITING)
                {
                    if (st.hasQuestItems(3865))
                    {
                        st.takeItems(3865, 1);
                        ZoneManager.getInstance().getZoneById(110001, L2BossZone.class).allowPlayerEntry(player, 30);
                        
                        player.teleToLocation(175300 + Rnd.get(-350, 350), 115180 + Rnd.get(-1000, 1000), -7709, 0);
                        
                        if (status == Antharas.DORMANT)
                        {
                            GrandBossManager.getInstance().setBossStatus(Antharas.ANTHARAS, Antharas.WAITING);
                            ScriptManager.getInstance().getQuest("Antharas").startQuestTimer("beginning", Config.WAIT_TIME_ANTHARAS, null, null, false);
                        }
                    }
                    else
                        htmltext = "13001-03.htm";
                }
                break;
            
            case 31859:
                player.teleToLocation(79800 + Rnd.get(600), 151200 + Rnd.get(1100), -3534, 0);
                break;
            
            case 31385:
                status = GrandBossManager.getInstance().getBossStatus(Valakas.VALAKAS);
                if (status == 0 || status == 1)
                {
                    if (_valakasPlayersCount >= 200)
                        htmltext = "31385-03.htm";
                    else if (st.getInt("allowEnter") == 1)
                    {
                        st.unset("allowEnter");
                        ZoneManager.getInstance().getZoneById(110010, L2BossZone.class).allowPlayerEntry(player, 30);
                        
                        player.teleToLocation(204328, -111874, 70, 300);
                        
                        _valakasPlayersCount++;
                        
                        if (status == Valakas.DORMANT)
                        {
                            GrandBossManager.getInstance().setBossStatus(Valakas.VALAKAS, Valakas.WAITING);
                            ScriptManager.getInstance().getQuest("Valakas").startQuestTimer("beginning", Config.WAIT_TIME_VALAKAS, null, null, false);
                        }
                    }
                    else
                        htmltext = "31385-04.htm";
                }
                else if (status == 2)
                    htmltext = "31385-02.htm";
                else
                    htmltext = "31385-01.htm";
                break;
            
            case 31384:
                DoorTable.getInstance().getDoor(24210004).openMe();
                break;
            
            case 31686:
                DoorTable.getInstance().getDoor(24210006).openMe();
                break;
            
            case 31687:
                DoorTable.getInstance().getDoor(24210005).openMe();
                break;
            
            case 31540:
                if (_valakasPlayersCount < 50)
                    htmltext = "31540-01.htm";
                else if (_valakasPlayersCount < 100)
                    htmltext = "31540-02.htm";
                else if (_valakasPlayersCount < 150)
                    htmltext = "31540-03.htm";
                else if (_valakasPlayersCount < 200)
                    htmltext = "31540-04.htm";
                else
                    htmltext = "31540-05.htm";
                break;
            
            case 31759:
                player.teleToLocation(150037, -57720, -2976, 250);
                break;
            
            case 32107:
                player.teleToLocation(Rnd.get(SAILREN_OUT), 100);
                break;
            
            case 32109:
                if (!player.isInParty())
                    htmltext = "32109-03.htm";
                else if (!player.getParty().isLeader(player))
                    htmltext = "32109-01.htm";
                else
                {
                    if (st.hasQuestItems(8784))
                    {
                        status = GrandBossManager.getInstance().getBossStatus(Sailren.SAILREN);
                        if (status == Sailren.DORMANT)
                        {
                            final List<Player> party = player.getParty().getMembers();
                            
                            // Check players conditions.
                            for (Player member : party)
                            {
                                if (member.getLevel() < 70)
                                    return "32109-06.htm";
                                
                                if (!MathUtil.checkIfInRange(1000, player, member, true))
                                    return "32109-07.htm";
                            }
                            
                            // Take item from party leader.
                            st.takeItems(8784, 1);
                            
                            final L2BossZone nest = ZoneManager.getInstance().getZoneById(110015, L2BossZone.class);
                            
                            // Teleport players.
                            for (Player member : party)
                            {
                                if (nest != null)
                                {
                                    nest.allowPlayerEntry(member, 30);
                                    member.teleToLocation(SAILREN_IN, 100);
                                }
                            }
                            GrandBossManager.getInstance().setBossStatus(Sailren.SAILREN, Sailren.FIGHTING);
                            ScriptManager.getInstance().getQuest("Sailren").startQuestTimer("beginning", 60000, null, null, false);
                        }
                        else if (status == Sailren.DEAD)
                            htmltext = "32109-04.htm";
                        else
                            htmltext = "32109-05.htm";
                    }
                    else
                        htmltext = "32109-02.htm";
                }
                break;
        }
        
        return htmltext;
    }
}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • - lost love spells caster in, Amsterdam,Brazil,London,Kuwait .Egypt, Atlanta, Latvia, Lithuania, Sweden۞۩ஜ???? +256704892479  Results are 100% s=ure and guaranteed, spell casting specialist, , black magic death spells that work overnight or by accident. I Cast these strongest black magic revenge death spells that work fast overnight to kill ex-lover, husband, wife girlfriend Enemies overnight Https://nativelovespellscaster.com or she is in a far location, I guarantee you to have your results you are looking for immediately. Just make sure before you contact me you are committed and you want what you are looking for (Victim Death) because my death spell work fast overnight after casting the spells that work, guaranteed black magic love spells, guaranteed voodoo spells, spell to make someone sick and die, revenge spells that work instantly, real witches for hire, revenge spells on an ex- lover, how to put a Black magic death spells on ex-lover, Revenge instant death spells on toxic uncles powerful instant death spells online instant spell that work fast in USA, UK, Kuwait, Germany, Asian, Europe, Philippines, Canada, South Africa, Italy, Peru, India, Iran, Gambia. Sweden, Australia, Nigeria, Spain, Ghana, California, Greece. Death spell on someone, death spells that Death Revenge Spell on wicked friends, Voodoo Death Spells to kill Enemies Black Magic Spells To Harm Someone, Black magic death spells on ex-lover, Revenge instant death spells on toxic uncles powerful instant death spells online instant spell that work fast in USA, UK, Kuwait, Germany, Asian, Europe, Philippines, Canada, revenge spells, most powerful death spell, spell to die in your sleep, successful death spell, most powerful voodoo spell caster, voodoo spell casters in new Orleans, voodoo love spells reviews, proven authentic voodoo spell casters, most powerful voodoo priest in world, black magic tricks to destroy enemy. Results are 100% sure and guaranteed whatapp or cal, Europe, Philippines, Canada, South Africa, Italy, Peru, India, Iran, Gambia. spells, guaranteed voodoo spells, spell to make someone sick and die, revenge spells that work instantly, real witches for hire, revenge spells on an ex- lover, how to put a spell on someone who hurts you, spell to make someone sick, voodoo spells to hurt someone, spells to curse someone, powerful revenge spells, most powerful death spell, spell to die in your sleep, successful death spell, most powerful voodoo spell caster, voodoo spell casters in new Orleans, voodoo love spells reviews, proven authentic voodoo spell casters, most powerful voodoo priest in world, black magic tricks to destroy enemy. Results are 100% sure and guaranteed whatapp or call  ஜ۩۞۩ஜ ??? + 256704892479ஜ۩۞۩ஜ ??Https://nativelovespellscaster.com
    • Hello, my discord is : misanthropic1085           I am selling Frintezza Aq Baium     Reborn origins x1    
    • L2Topzone has a lower traffic ranking than every other website! We spent over 160 Euro for listing server and banner and we've got only 4 download conversions!  Proof: https://prnt.sc/YeJudEKFov1m
    • Any WTS code global chat for this? 
    • Hi, I see what you mean, but I do it differently.   I don't want some features from Hi5 in my project, so I gradually add Ai, zones, items, etc... manually.   And again I want some features from Classic.   So I'm continuing the Classic storyline up to High Five.   My project runs on the client's Prelude of War.   I will release the first public test version soon, which will still be without some "hi5" stuff, because first I need to test for example Fortress Siege, pets and some instances/quests. In the future, I also want to "unlock" new locations from the GoD story.   And what I like most about Classic is that you don't have SA in weapons and it goes back to the roots of Lineage 2. Also you can connect to my discord and talk about with me.
  • Topics

×
×
  • Create New...