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; }
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; } }
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); }