Exemplo n.º 1
0
        private static ushort GetRegionFromLevel(byte level, eRealm realm, eDungeonType dungeonType)
        {
            //return 286;

            //TODO: fill this properly for all levels
            //Done by Argoras: filled all the Values for possible Realms and levels

            if (level <= 10)
            {
                switch (realm)
                {
                    case eRealm.Albion:
                        if(dungeonType == eDungeonType.Ranged)
                            return GetRandomRegion(burial_tomb_long);
                        else
                            return GetRandomRegion(burial_tomb_laby);
                    case eRealm.Midgard:
                        if(dungeonType == eDungeonType.Ranged)
                            return GetRandomRegion(damp_cavern_long);
                        else
                            return GetRandomRegion(damp_cavern_laby);
                    case eRealm.Hibernia:
                        if(dungeonType == eDungeonType.Ranged)
                            return GetRandomRegion(the_cursed_barrow_long);
                        else
                            return GetRandomRegion(the_cursed_barrow_laby);
                }
            }
            else if (level > 10 && level <= 20)
            {
                switch (realm)
                {
                    case eRealm.Albion:
                        if(dungeonType == eDungeonType.Ranged)
                            return GetRandomRegion(forgotten_mines_long);
                        else
                            return GetRandomRegion(forgotten_mines_laby);
                    case eRealm.Midgard:
                        if(dungeonType == eDungeonType.Ranged)
                            return GetRandomRegion(forgotten_sepulchre_long);
                        else
                            return GetRandomRegion(forgotten_sepulchre_laby);
                    case eRealm.Hibernia:
                        if(dungeonType == eDungeonType.Ranged)
                            return GetRandomRegion(dismal_grotto_long);
                        else
                            return GetRandomRegion(dismal_grotto_laby);
                }
            }
            else if (level > 20 && level <= 30)
            {
                switch (realm)
                {
                    case eRealm.Albion:
                        if(dungeonType == eDungeonType.Ranged)
                            return GetRandomRegion(desecrated_grounds_long);
                        else
                            return GetRandomRegion(desecrated_grounds_laby);
                    case eRealm.Midgard:
                        if(dungeonType == eDungeonType.Ranged)
                            return GetRandomRegion(the_concealed_guardhouse_long);
                        else
                            return GetRandomRegion(the_concealed_guardhouse_laby);
                    case eRealm.Hibernia:
                        if(dungeonType == eDungeonType.Ranged)
                            return GetRandomRegion(the_accursed_caves_long);
                        else
                            return GetRandomRegion(the_accursed_caves_laby);
                }
            }
            else if (level > 30 && level <= 40)
            {
                switch (realm)
                {
                    case eRealm.Albion:
                        if(dungeonType == eDungeonType.Ranged)
                            return GetRandomRegion(funerary_hall_long);
                        else
                            return GetRandomRegion(funerary_hall_laby);
                    case eRealm.Midgard:
                        if(dungeonType == eDungeonType.Ranged)
                            return GetRandomRegion(the_gossamer_grotto_long);
                        else
                            return GetRandomRegion(the_gossamer_grotto_laby);
                    case eRealm.Hibernia:
                        if(dungeonType == eDungeonType.Ranged)
                            return GetRandomRegion(dark_cavern_long);
                        else
                            return GetRandomRegion(dark_cavern_laby);
                }
            }
            else if (level > 40)
            {
                switch (realm)
                {
                    case eRealm.Albion:
                        if(dungeonType == eDungeonType.Ranged)
                            return GetRandomRegion(sundered_tombs_long);
                        else
                            return GetRandomRegion(sundered_tombs_laby);
                    case eRealm.Midgard:
                        if(dungeonType == eDungeonType.Ranged)
                            return GetRandomRegion(underground_tunnel_long);
                        else
                            return GetRandomRegion(underground_tunnel_laby);
                    case eRealm.Hibernia:
                        if(dungeonType == eDungeonType.Ranged)
                            return GetRandomRegion(unused_mine_long);
                        else
                            return GetRandomRegion(unused_mine_laby);
                }
            }
            return 0;
        }
Exemplo n.º 2
0
        public TaskDungeonMission(object owner, eDungeonType dungeonType = eDungeonType.Ranged)
            : base(owner)
        {
            log.Info("INFO: Successfully entered TaskDungeonMission!");
            GamePlayer player = owner as GamePlayer;

            if (owner is Group)
            {
                player = (owner as Group).Leader;
                //Assign the mission to the group.
                (owner as Group).Mission = this;
            }

            if (player == null)
                return;

            //check level range and get region id from it
            ushort rid = GetRegionFromLevel(player.Level, player.Realm, dungeonType);

            TaskDungeonInstance instance = (TaskDungeonInstance)WorldMgr.CreateInstance(rid, typeof(TaskDungeonInstance));
            m_taskRegion = instance;
            instance.Mission = this;

            //Dinberg: I've removed instance level, and have commented this out so it compiles.
            //I dont have time to implement the rest right now,
            //m_taskRegion.InstanceLevel = GetLevelFromPlayer(player);

            //Infact, this clearly isnt in use. I'll fix it to use the new instance system, and then itll work.
            //Do that later this week ^^.

            //Lets load the region from the InstanceXElementDB!

            //First we get the instance keyname.
            string keyname = "TaskDungeon" + rid + ".1"; //TODO; variations, eg .2, .3 etc.
            instance.LoadFromDatabase(keyname);

            //Now, search for the boss and possible targets in the instance!
            foreach (GameNPC npc in instance.Objects)
            {
                if (npc == null)
                    continue;

                if (npc.Name.ToLower() != npc.Name)
                {
                    if (m_bossName == "")
                        m_bossName = npc.Name; //Some instances have multiple bosses, eg Gregorian - why break?
                    else if (Util.Chance(50))
                        m_bossName = npc.Name;
                } //else what if we aren't looking at a boss, but a normal mob?
                else
                    if (Util.Chance(20) || m_targetName == "")
                        m_targetName = npc.Name;
            }

            int specificCount = 0;

            //Draw the mission type before we do anymore counting...
            if (Util.Chance(40) && m_bossName != "")
                m_missionType = eTDMissionType.Boss;
            else if (Util.Chance(20) && m_targetName != "")
                m_missionType = eTDMissionType.Specific;
            else
                m_missionType = eTDMissionType.Clear;

            //Now, count if we need to.
            if (m_missionType != eTDMissionType.Boss)
            {
                foreach (GameNPC entry in instance.Objects)
                {
                    if (entry == null)
                        continue;

                    //Now, if we want all mobs, get all mobs...
                    if (m_missionType == eTDMissionType.Clear)
                        specificCount++;
                    else if (entry.Name == m_targetName)
                        //only count target mobs for specific dungeons.
                        specificCount++;
                }
            }

            //append the count to the total!
            m_total = specificCount;

            //Set the mission description again if owner is group, otherwise
            //mission description is always "Clear" before entering the dungeon.
            if (owner is Group)
                UpdateMission();

            m_mobIsAlive = new bool[m_total];
            for(int i = 0; i < m_total; i++)
                m_mobIsAlive[i] = true;
        }
        private static ushort GetRegionFromLevel(byte level, eRealm realm, eDungeonType dungeonType)
        {
            //return 286;

            //TODO: fill this properly for all levels
            //Done by Argoras: filled all the Values for possible Realms and levels

            if (level <= 10)
            {
                switch (realm)
                {
                case eRealm.Albion:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(burial_tomb_long));
                    }
                    else
                    {
                        return(GetRandomRegion(burial_tomb_laby));
                    }

                case eRealm.Midgard:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(damp_cavern_long));
                    }
                    else
                    {
                        return(GetRandomRegion(damp_cavern_laby));
                    }

                case eRealm.Hibernia:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(the_cursed_barrow_long));
                    }
                    else
                    {
                        return(GetRandomRegion(the_cursed_barrow_laby));
                    }
                }
            }
            else if (level > 10 && level <= 20)
            {
                switch (realm)
                {
                case eRealm.Albion:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(forgotten_mines_long));
                    }
                    else
                    {
                        return(GetRandomRegion(forgotten_mines_laby));
                    }

                case eRealm.Midgard:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(forgotten_sepulchre_long));
                    }
                    else
                    {
                        return(GetRandomRegion(forgotten_sepulchre_laby));
                    }

                case eRealm.Hibernia:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(dismal_grotto_long));
                    }
                    else
                    {
                        return(GetRandomRegion(dismal_grotto_laby));
                    }
                }
            }
            else if (level > 20 && level <= 30)
            {
                switch (realm)
                {
                case eRealm.Albion:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(desecrated_grounds_long));
                    }
                    else
                    {
                        return(GetRandomRegion(desecrated_grounds_laby));
                    }

                case eRealm.Midgard:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(the_concealed_guardhouse_long));
                    }
                    else
                    {
                        return(GetRandomRegion(the_concealed_guardhouse_laby));
                    }

                case eRealm.Hibernia:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(the_accursed_caves_long));
                    }
                    else
                    {
                        return(GetRandomRegion(the_accursed_caves_laby));
                    }
                }
            }
            else if (level > 30 && level <= 40)
            {
                switch (realm)
                {
                case eRealm.Albion:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(funerary_hall_long));
                    }
                    else
                    {
                        return(GetRandomRegion(funerary_hall_laby));
                    }

                case eRealm.Midgard:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(the_gossamer_grotto_long));
                    }
                    else
                    {
                        return(GetRandomRegion(the_gossamer_grotto_laby));
                    }

                case eRealm.Hibernia:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(dark_cavern_long));
                    }
                    else
                    {
                        return(GetRandomRegion(dark_cavern_laby));
                    }
                }
            }
            else if (level > 40)
            {
                switch (realm)
                {
                case eRealm.Albion:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(sundered_tombs_long));
                    }
                    else
                    {
                        return(GetRandomRegion(sundered_tombs_laby));
                    }

                case eRealm.Midgard:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(underground_tunnel_long));
                    }
                    else
                    {
                        return(GetRandomRegion(underground_tunnel_laby));
                    }

                case eRealm.Hibernia:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(unused_mine_long));
                    }
                    else
                    {
                        return(GetRandomRegion(unused_mine_laby));
                    }
                }
            }
            return(0);
        }
        public TaskDungeonMission(object owner, eDungeonType dungeonType = eDungeonType.Ranged)
            : base(owner)
        {
            log.Info("INFO: Successfully entered TaskDungeonMission!");
            GamePlayer player = owner as GamePlayer;

            if (owner is Group)
            {
                player = (owner as Group).Leader;
                //Assign the mission to the group.
                (owner as Group).Mission = this;
            }

            if (player == null)
            {
                return;
            }

            //check level range and get region id from it
            ushort rid = GetRegionFromLevel(player.Level, player.Realm, dungeonType);

            TaskDungeonInstance instance = (TaskDungeonInstance)WorldMgr.CreateInstance(rid, typeof(TaskDungeonInstance));

            m_taskRegion     = instance;
            instance.Mission = this;

            //Dinberg: I've removed instance level, and have commented this out so it compiles.
            //I dont have time to implement the rest right now,
            //m_taskRegion.InstanceLevel = GetLevelFromPlayer(player);

            //Infact, this clearly isnt in use. I'll fix it to use the new instance system, and then itll work.
            //Do that later this week ^^.


            //Lets load the region from the InstanceXElementDB!


            //First we get the instance keyname.
            string keyname = "TaskDungeon" + rid + ".1"; //TODO; variations, eg .2, .3 etc.

            instance.LoadFromDatabase(keyname);

            //Now, search for the boss and possible targets in the instance!
            foreach (GameNPC npc in instance.Objects)
            {
                if (npc == null)
                {
                    continue;
                }

                if (npc.Name.ToLower() != npc.Name)
                {
                    if (m_bossName == "")
                    {
                        m_bossName = npc.Name; //Some instances have multiple bosses, eg Gregorian - why break?
                    }
                    else if (Util.Chance(50))
                    {
                        m_bossName = npc.Name;
                    }
                } //else what if we aren't looking at a boss, but a normal mob?
                else
                if (Util.Chance(20) || m_targetName == "")
                {
                    m_targetName = npc.Name;
                }
            }

            int specificCount = 0;

            //Draw the mission type before we do anymore counting...
            if (Util.Chance(40) && m_bossName != "")
            {
                m_missionType = eTDMissionType.Boss;
            }
            else if (Util.Chance(20) && m_targetName != "")
            {
                m_missionType = eTDMissionType.Specific;
            }
            else
            {
                m_missionType = eTDMissionType.Clear;
            }

            //Now, count if we need to.
            if (m_missionType != eTDMissionType.Boss)
            {
                foreach (GameNPC entry in instance.Objects)
                {
                    if (entry == null)
                    {
                        continue;
                    }

                    //Now, if we want all mobs, get all mobs...
                    if (m_missionType == eTDMissionType.Clear)
                    {
                        specificCount++;
                    }
                    else if (entry.Name == m_targetName)
                    {
                        //only count target mobs for specific dungeons.
                        specificCount++;
                    }
                }
            }

            //append the count to the total!
            m_total = specificCount;

            //Set the mission description again if owner is group, otherwise
            //mission description is always "Clear" before entering the dungeon.
            if (owner is Group)
            {
                UpdateMission();
            }

            m_mobIsAlive = new bool[m_total];
            for (int i = 0; i < m_total; i++)
            {
                m_mobIsAlive[i] = true;
            }
        }
Exemplo n.º 5
0
        private static ushort GetRegionFromLevel(byte level, eRealm realm, eDungeonType dungeonType)
        {
            // return 286;

            // TODO: fill this properly for all levels
            // Done by Argoras: filled all the Values for possible Realms and levels
            if (level <= 10)
            {
                switch (realm)
                {
                case eRealm.Albion:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(BurialTombLong));
                    }
                    else
                    {
                        return(GetRandomRegion(BurialTombLaby));
                    }

                case eRealm.Midgard:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(DampCavernLong));
                    }
                    else
                    {
                        return(GetRandomRegion(DampCavernLaby));
                    }

                case eRealm.Hibernia:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(TheCursedBarrowLong));
                    }
                    else
                    {
                        return(GetRandomRegion(TheCursedBarrowLaby));
                    }
                }
            }
            else if (level > 10 && level <= 20)
            {
                switch (realm)
                {
                case eRealm.Albion:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(ForgottenMinesLong));
                    }
                    else
                    {
                        return(GetRandomRegion(ForgottenMinesLaby));
                    }

                case eRealm.Midgard:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(ForgottenSepulchreLong));
                    }
                    else
                    {
                        return(GetRandomRegion(ForgottenSepulchreLaby));
                    }

                case eRealm.Hibernia:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(DismalGrottoLong));
                    }
                    else
                    {
                        return(GetRandomRegion(DismalGrottoLaby));
                    }
                }
            }
            else if (level > 20 && level <= 30)
            {
                switch (realm)
                {
                case eRealm.Albion:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(DesecratedGroundsLong));
                    }
                    else
                    {
                        return(GetRandomRegion(DesecratedGroundsLaby));
                    }

                case eRealm.Midgard:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(TheConcealedGuardhouseLong));
                    }
                    else
                    {
                        return(GetRandomRegion(TheConcealedGuardhouseLaby));
                    }

                case eRealm.Hibernia:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(TheAccursedCavesLong));
                    }
                    else
                    {
                        return(GetRandomRegion(TheAccursedCavesLaby));
                    }
                }
            }
            else if (level > 30 && level <= 40)
            {
                switch (realm)
                {
                case eRealm.Albion:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(FuneraryHallLong));
                    }
                    else
                    {
                        return(GetRandomRegion(FuneraryHallLaby));
                    }

                case eRealm.Midgard:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(TheGossamerGrottoLong));
                    }
                    else
                    {
                        return(GetRandomRegion(TheGossamerGrottoLaby));
                    }

                case eRealm.Hibernia:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(DarkCavernLong));
                    }
                    else
                    {
                        return(GetRandomRegion(DarkCavernLaby));
                    }
                }
            }
            else if (level > 40)
            {
                switch (realm)
                {
                case eRealm.Albion:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(SunderedTombsLong));
                    }
                    else
                    {
                        return(GetRandomRegion(SunderedTombsLaby));
                    }

                case eRealm.Midgard:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(UndergroundTunnelLong));
                    }
                    else
                    {
                        return(GetRandomRegion(UndergroundTunnelLaby));
                    }

                case eRealm.Hibernia:
                    if (dungeonType == eDungeonType.Ranged)
                    {
                        return(GetRandomRegion(UnusedMineLong));
                    }
                    else
                    {
                        return(GetRandomRegion(UnusedMineLaby));
                    }
                }
            }

            return(0);
        }