Esempio n. 1
0
    public void CreateEmptyQuestFromTurnIn(TurnIn turnin)
    {
        bool found      = false;
        var  emptyQuest = new Quester.Profile.Quest {
            Id = (int)turnin.QuestId, Name = turnin.QuestName, TurnIn = (int)turnin.TurnInId
        };

        for (int i = 0; i < _tnbProfile.Quests.Count; i++)
        {
            Quester.Profile.Quest q = _tnbProfile.Quests[i];
            if (q.Id == turnin.QuestId)
            {
                found = true;
                break;
            }
        }
        if (!found)
        {
            _tnbProfile.Quests.Add(emptyQuest);
        }
    }
Esempio n. 2
0
        /// <summary>
        /// Return data by filtering
        /// </summary>
        public static List <quest_template> Get(QuestFilter filter)
        {
            using (var db = Access.Linq())
            {
                IEnumerable <Data_quest_template_addon> data0 = new Data_quest_template_addon[0];
                IEnumerable <Data_areatrigger>          data1 = new Data_areatrigger[0];
                var data2 = new PickUp();
                var data3 = new TurnIn();
                if (filter == null)
                {
                    return(new List <quest_template>());
                }
                var quest_template =
                    from qt in db.quest_template
                    select qt;
                var areatrigger_involvedrelation =
                    from ai in db.areatrigger_involvedrelation
                    select ai;
                var areatrigger =
                    from at in db.areatrigger
                    select at;
                var quest_template_addon =
                    from qta in db.quest_template_addon
                    select new quest_template_addon
                {
                    ID = qta.ID,
                    AllowableClasses = qta.AllowableClasses,
                    PrevQuestID      = qta.PrevQuestID,
                    NextQuestID      = qta.NextQuestID,
                };

                var creature_queststarter =
                    from cqs in db.creature_queststarter
                    select cqs;
                var creature_questender =
                    from cqe in db.creature_questender
                    select cqe;
                var gameobject_queststarter =
                    from gqs in db.gameobject_queststarter
                    select gqs;
                var gameobject_questender =
                    from gqe in db.gameobject_questender
                    select gqe;
                var item_template =
                    from it in db.item_template
                    select new item_template
                {
                    entry      = it.entry,
                    startquest = it.startquest,
                };
                if (!string.IsNullOrWhiteSpace(filter.Name))
                {
                    var n = filter.Name.ToLower();
                    quest_template = quest_template.Where(qt => qt.LogTitle.ToLower().Contains(n));
                }
                if (filter.QuestIds.Any())
                {
                    quest_template = quest_template.Where(qt => filter.QuestIds.Contains(qt.ID));
                }
                if (filter.ExcludeIds.Any())
                {
                    quest_template = quest_template.Where(qt => !filter.ExcludeIds.Contains(qt.ID));
                }
                if (filter.QuestFlags.Flags.Any())
                {
                    int m = Utilities.Other.EnumToBitmask(filter.QuestFlags.Flags ?? new List <QuestFlags>());
                    quest_template = quest_template.Where(qt =>
                                                          filter.QuestFlags.Mode == Operator.And && (qt.Flags & m) == m
                                                          ||
                                                          filter.QuestFlags.Mode == Operator.Or && (qt.Flags & m) != 0
                                                          ||
                                                          filter.QuestFlags.Mode == Operator.Equal && m == qt.Flags
                                                          );
                }
                if (filter.RaceFlags.Flags.Any())
                {
                    int r = Utilities.Other.EnumToBitmask(filter.RaceFlags.Flags ?? new List <RaceFlags>());
                    quest_template = quest_template.Where(qt =>
                                                          filter.RaceFlags.Mode == Operator.And && (qt.AllowableRaces & r) == r
                                                          ||
                                                          filter.RaceFlags.Mode == Operator.Or && (qt.AllowableRaces & r) != 0
                                                          ||
                                                          filter.RaceFlags.Mode == Operator.Equal && r == qt.AllowableRaces
                                                          );
                }
                if (filter.AcceptLevel != Int32.MaxValue)
                {
                    quest_template = quest_template.Where(qt => qt.MinLevel <= filter.AcceptLevel);
                }
                if (filter.MinimumQuestLevel != 0)
                {
                    quest_template = quest_template.Where(qt => qt.QuestLevel >= filter.MinimumQuestLevel);
                }
                if (filter.MaximumQuestLevel != int.MaxValue)
                {
                    quest_template = quest_template.Where(qt => qt.QuestLevel <= filter.MaximumQuestLevel);
                }
                if (filter.Type != QuestInfo.All)
                {
                    var id = (int)filter.Type;
                    quest_template = quest_template.Where(qt => qt.QuestInfoID == id);
                }
                if (filter.State != QuestState.All)
                {
                    var id = (int)filter.State;
                    quest_template = quest_template.Where(qt => qt.QuestType == id);
                }
                if (filter.ReturnData.Any())
                {
                    if (filter.ReturnData.Contains(QuestData.Data_quest_template_addon))
                    {
                        data0 = null;
                    }
                    if (filter.ReturnData.Contains(QuestData.Data_areatrigger))
                    {
                        data1 = null;
                    }
                    if (filter.ReturnData.Contains(QuestData.PickUp))
                    {
                        data2 = null;
                    }
                    if (filter.ReturnData.Contains(QuestData.TurnIn))
                    {
                        data3 = null;
                    }
                }
                if (filter.QuestFrom.Ids.Any())
                {
                    if (filter.QuestFrom.SearchOn == Table.All)
                    {
                        switch (filter.QuestFrom.Type)
                        {
                        case QuestMark.All:
                            quest_template =
                                (from qt in quest_template
                                 join cqs in creature_queststarter.Where(i => filter.QuestFrom.Ids.Contains(i.id)) on qt
                                 .ID equals cqs.quest
                                 select qt)
                                .Union(
                                    from qt in quest_template
                                    join cqe in creature_questender.Where(i => filter.QuestFrom.Ids.Contains(i.id)) on qt
                                    .ID equals cqe.quest
                                    select qt)
                                .Union(
                                    from qt in quest_template
                                    join cqe in gameobject_queststarter.Where(i => filter.QuestFrom.Ids.Contains(i.id)) on qt
                                    .ID equals cqe.quest
                                    select qt)
                                .Union(
                                    from qt in quest_template
                                    join cqe in gameobject_questender.Where(i => filter.QuestFrom.Ids.Contains(i.id)) on qt
                                    .ID equals cqe.quest
                                    select qt)
                                .Union(
                                    from qt in quest_template
                                    join cqe in item_template.Where(i => filter.QuestFrom.Ids.Contains(i.entry)) on qt
                                    .ID equals cqe.startquest
                                    select qt);
                            break;

                        case QuestMark.PickUp:
                            quest_template =
                                (from qt in quest_template
                                 join cqs in creature_queststarter.Where(i => filter.QuestFrom.Ids.Contains(i.id)) on qt
                                 .ID equals cqs.quest
                                 select qt)
                                .Union(
                                    from qt in quest_template
                                    join cqe in gameobject_queststarter.Where(i => filter.QuestFrom.Ids.Contains(i.id)) on qt
                                    .ID equals cqe.quest
                                    select qt)
                                .Union(
                                    from qt in quest_template
                                    join cqe in item_template.Where(i => filter.QuestFrom.Ids.Contains(i.entry)) on qt
                                    .ID equals cqe.startquest
                                    select qt);
                            break;

                        case QuestMark.TurnIn:
                            quest_template =
                                (from qt in quest_template
                                 join cqe in creature_questender.Where(i => filter.QuestFrom.Ids.Contains(i.id)) on qt
                                 .ID equals cqe.quest
                                 select qt)
                                .Union(
                                    from qt in quest_template
                                    join cqe in gameobject_questender.Where(i => filter.QuestFrom.Ids.Contains(i.id)) on qt
                                    .ID equals cqe.quest
                                    select qt);
                            break;
                        }
                    }
                    else if (filter.QuestFrom.SearchOn == Table.Creature)
                    {
                        switch (filter.QuestFrom.Type)
                        {
                        case QuestMark.All:
                            quest_template =
                                (from qt in quest_template
                                 join cqs in creature_queststarter.Where(i => filter.QuestFrom.Ids.Contains(i.id)) on qt
                                 .ID equals cqs.quest
                                 select qt)
                                .Union(
                                    from qt in quest_template
                                    join cqe in creature_questender.Where(i => filter.QuestFrom.Ids.Contains(i.id)) on qt
                                    .ID equals cqe.quest
                                    select qt);
                            break;

                        case QuestMark.PickUp:
                            quest_template =
                                from qt in quest_template
                                join cqs in creature_queststarter.Where(i => filter.QuestFrom.Ids.Contains(i.id)) on qt
                                .ID equals cqs.quest
                                select qt;
                            break;

                        case QuestMark.TurnIn:
                            quest_template =
                                from qt in quest_template
                                join cqe in creature_questender.Where(i => filter.QuestFrom.Ids.Contains(i.id)) on qt
                                .ID equals cqe.quest
                                select qt;
                            break;
                        }
                    }
                    if (filter.QuestFrom.SearchOn == Table.GameOjbect)
                    {
                        switch (filter.QuestFrom.Type)
                        {
                        case QuestMark.All:
                            quest_template =
                                (from qt in quest_template
                                 join cqe in gameobject_queststarter.Where(i => filter.QuestFrom.Ids.Contains(i.id)) on qt
                                 .ID equals cqe.quest
                                 select qt)
                                .Union(
                                    from qt in quest_template
                                    join cqe in gameobject_questender.Where(i => filter.QuestFrom.Ids.Contains(i.id)) on qt
                                    .ID equals cqe.quest
                                    select qt);
                            break;

                        case QuestMark.PickUp:
                            quest_template =
                                from qt in quest_template
                                join cqe in gameobject_queststarter.Where(i => filter.QuestFrom.Ids.Contains(i.id)) on qt
                                .ID equals cqe.quest
                                select qt;
                            break;

                        case QuestMark.TurnIn:
                            quest_template =
                                from qt in quest_template
                                join cqe in gameobject_questender.Where(i => filter.QuestFrom.Ids.Contains(i.id)) on qt
                                .ID equals cqe.quest
                                select qt;
                            break;
                        }
                    }
                    if (filter.QuestFrom.SearchOn == Table.Item)
                    {
                        quest_template =
                            from qt in quest_template
                            join cqe in item_template.Where(i => filter.QuestFrom.Ids.Contains(i.entry)) on qt
                            .ID equals cqe.startquest
                            select qt;
                    }
                }
                quest_template =
                    from qt in quest_template
                    select new quest_template
                {
                    ID                        = qt.ID,
                    QuestType                 = qt.QuestType,
                    QuestLevel                = qt.QuestLevel,
                    MinLevel                  = qt.MinLevel,
                    QuestInfoID               = qt.QuestInfoID,
                    SuggestedGroupNum         = qt.SuggestedGroupNum,
                    RewardNextQuest           = qt.RewardNextQuest,
                    RewardXPDifficulty        = qt.RewardXPDifficulty,
                    RewardMoney               = qt.RewardMoney,
                    RewardBonusMoney          = qt.RewardBonusMoney,
                    RewardSpell               = qt.RewardSpell,
                    RewardHonor               = qt.RewardHonor,
                    RewardKillHonor           = qt.RewardKillHonor,
                    StartItem                 = qt.StartItem,
                    Flags                     = qt.Flags,
                    RequiredPlayerKills       = qt.RequiredPlayerKills,
                    RewardItem1               = qt.RewardItem1,
                    RewardAmount1             = qt.RewardAmount1,
                    RewardItem2               = qt.RewardItem2,
                    RewardAmount2             = qt.RewardAmount2,
                    RewardItem3               = qt.RewardItem3,
                    RewardAmount3             = qt.RewardAmount3,
                    RewardItem4               = qt.RewardItem4,
                    RewardAmount4             = qt.RewardAmount4,
                    ItemDrop1                 = qt.ItemDrop1,
                    ItemDropQuantity1         = qt.ItemDropQuantity1,
                    ItemDrop2                 = qt.ItemDrop2,
                    ItemDropQuantity2         = qt.ItemDropQuantity2,
                    ItemDrop3                 = qt.ItemDrop3,
                    ItemDropQuantity3         = qt.ItemDropQuantity3,
                    ItemDrop4                 = qt.ItemDrop4,
                    ItemDropQuantity4         = qt.ItemDropQuantity4,
                    RewardChoiceItemID1       = qt.RewardChoiceItemID1,
                    RewardChoiceItemQuantity1 = qt.RewardChoiceItemQuantity1,
                    RewardChoiceItemID2       = qt.RewardChoiceItemID2,
                    RewardChoiceItemQuantity2 = qt.RewardChoiceItemQuantity2,
                    RewardChoiceItemID3       = qt.RewardChoiceItemID3,
                    RewardChoiceItemQuantity3 = qt.RewardChoiceItemQuantity3,
                    RewardChoiceItemID4       = qt.RewardChoiceItemID4,
                    RewardChoiceItemQuantity4 = qt.RewardChoiceItemQuantity4,
                    RewardChoiceItemID5       = qt.RewardChoiceItemID5,
                    RewardChoiceItemQuantity5 = qt.RewardChoiceItemQuantity5,
                    RewardChoiceItemID6       = qt.RewardChoiceItemID6,
                    RewardChoiceItemQuantity6 = qt.RewardChoiceItemQuantity6,
                    POIContinent              = qt.POIContinent,
                    POIx                      = qt.POIx,
                    POIy                      = qt.POIy,
                    RewardTitle               = qt.RewardTitle,
                    RewardTalents             = qt.RewardTalents,
                    RewardFactionID1          = qt.RewardFactionID1,
                    RewardFactionValue1       = qt.RewardFactionValue1,
                    RewardFactionID2          = qt.RewardFactionID2,
                    RewardFactionValue2       = qt.RewardFactionValue2,
                    RewardFactionID3          = qt.RewardFactionID3,
                    RewardFactionValue3       = qt.RewardFactionValue3,
                    RewardFactionID4          = qt.RewardFactionID4,
                    RewardFactionValue4       = qt.RewardFactionValue4,
                    RewardFactionID5          = qt.RewardFactionID5,
                    RewardFactionValue5       = qt.RewardFactionValue5,
                    TimeAllowed               = qt.TimeAllowed,
                    AllowableRaces            = qt.AllowableRaces,
                    LogTitle                  = qt.LogTitle,
                    LogDescription            = qt.LogDescription,
                    QuestDescription          = qt.QuestDescription,
                    AreaDescription           = qt.AreaDescription,
                    QuestCompletionLog        = qt.QuestCompletionLog,
                    RequiredNpcOrGo1          = qt.RequiredNpcOrGo1,
                    RequiredNpcOrGo2          = qt.RequiredNpcOrGo2,
                    RequiredNpcOrGo3          = qt.RequiredNpcOrGo3,
                    RequiredNpcOrGo4          = qt.RequiredNpcOrGo4,
                    RequiredNpcOrGoCount1     = qt.RequiredNpcOrGoCount1,
                    RequiredNpcOrGoCount2     = qt.RequiredNpcOrGoCount2,
                    RequiredNpcOrGoCount3     = qt.RequiredNpcOrGoCount3,
                    RequiredNpcOrGoCount4     = qt.RequiredNpcOrGoCount4,
                    RequiredItemId1           = qt.RequiredItemId1,
                    RequiredItemId2           = qt.RequiredItemId2,
                    RequiredItemId3           = qt.RequiredItemId3,
                    RequiredItemId4           = qt.RequiredItemId4,
                    RequiredItemCount1        = qt.RequiredItemCount1,
                    RequiredItemCount2        = qt.RequiredItemCount2,
                    RequiredItemCount3        = qt.RequiredItemCount3,
                    RequiredItemCount4        = qt.RequiredItemCount4,
                    ObjectiveText1            = qt.ObjectiveText1,
                    ObjectiveText2            = qt.ObjectiveText2,
                    ObjectiveText3            = qt.ObjectiveText3,
                    ObjectiveText4            = qt.ObjectiveText4,
                    Data                      =
                        data0 ??
                        quest_template_addon
                        .Where(i => i.ID == qt.ID)
                        .Select(i => new Data_quest_template_addon(i.AllowableClasses, i.PrevQuestID, i.NextQuestID))
                        .AsEnumerable(),
                    Data1 =
                        data1 ??
                        (from at in areatrigger
                         join ati in areatrigger_involvedrelation.Where(i => i.quest == qt.ID) on at.ID equals ati.id
                         select at)
                        .Select(i => new Data_areatrigger(i.ID, i.ContinentID, i.x, i.y, i.z, i.radius, i.box_length, i.box_width, i.box_height, i.box_yaw))
                        .AsEnumerable(),
                    Data2 =
                        data2 ??
                        new PickUp(
                            creature_queststarter.Where(i => i.quest == qt.ID).Select(i => i.id).AsEnumerable(),
                            gameobject_queststarter.Where(i => i.quest == qt.ID).Select(i => i.id).AsEnumerable(),
                            item_template.Where(i => i.startquest == qt.ID).Select(i => i.entry).AsEnumerable()),
                    Data3 =
                        data3 ??
                        new TurnIn(
                            creature_questender.Where(i => i.quest == qt.ID).Select(i => i.id).AsEnumerable(),
                            gameobject_questender.Where(i => i.quest == qt.ID).Select(i => i.id).AsEnumerable()),
                };
                //Logging.Write(quest_template.ToString());
                return(quest_template.ToList());
            }
        }