public void SetTalent(int garrTalentID, TalentTreeItemAbilityButton sameTierButton)
        {
            this.m_garrTalentID   = garrTalentID;
            this.m_sameTierButton = sameTierButton;
            if (PersistentTalentData.talentDictionary.ContainsKey(garrTalentID))
            {
                this.m_talent = PersistentTalentData.talentDictionary[garrTalentID];
            }
            this.m_garrTalentRec = StaticDB.garrTalentDB.GetRecord(garrTalentID);
            Sprite sprite = GeneralHelpers.LoadIconAsset(AssetBundleType.Icons, this.m_garrTalentRec.IconFileDataID);

            if (sprite == null)
            {
                this.m_missingIconText.gameObject.SetActive(true);
                this.m_missingIconText.text = string.Concat(string.Empty, this.m_garrTalentRec.IconFileDataID);
            }
            else
            {
                this.m_missingIconText.gameObject.SetActive(false);
                this.m_abilityIcon.sprite = sprite;
            }
            Material material = new Material(this.m_grayscaleShader);

            this.m_abilityIcon.material = material;
            this.m_abilityIcon.material.SetFloat("_GrayscaleAmount", 1f);
        }
        private int GetMaxTroops(int garrClassSpecID)
        {
            GarrClassSpecRec record = StaticDB.garrClassSpecDB.GetRecord(garrClassSpecID);
            int followerClassLimit  = 0;

            if (record != null)
            {
                followerClassLimit = (int)record.FollowerClassLimit;
            }
            foreach (WrapperGarrisonTalent value in PersistentTalentData.talentDictionary.Values)
            {
                if ((value.Flags & 1) == 0)
                {
                    continue;
                }
                GarrTalentRec garrTalentRec = StaticDB.garrTalentDB.GetRecord(value.GarrTalentID);
                if (garrTalentRec == null)
                {
                    continue;
                }
                foreach (GarrAbilityEffectRec garrAbilityEffectRec in
                         from rec in StaticDB.garrAbilityEffectDB.GetRecordsByParentID((int)garrTalentRec.GarrAbilityID)
                         where (rec.AbilityAction != 34 ? false : (ulong)rec.ActionRecordID == (long)garrClassSpecID)
                         select rec)
                {
                    followerClassLimit += (int)garrAbilityEffectRec.ActionValueFlat;
                }
            }
            return(followerClassLimit);
        }
Exemplo n.º 3
0
        private int GetMaxTroops(int garrClassSpecID)
        {
            GarrClassSpecRec record = StaticDB.garrClassSpecDB.GetRecord(garrClassSpecID);
            int num = 0;

            if (record != null)
            {
                num = (int)record.FollowerClassLimit;
            }
            foreach (WrapperGarrisonTalent wrapperGarrisonTalent in PersistentTalentData.talentDictionary.Values)
            {
                if ((wrapperGarrisonTalent.Flags & 1) != 0)
                {
                    GarrTalentRec record2 = StaticDB.garrTalentDB.GetRecord(wrapperGarrisonTalent.GarrTalentID);
                    if (record2 != null)
                    {
                        foreach (GarrAbilityEffectRec garrAbilityEffectRec in from rec in StaticDB.garrAbilityEffectDB.GetRecordsByParentID((int)record2.GarrAbilityID)
                                 where rec.AbilityAction == 34 && rec.ActionRecordID == garrClassSpecID
                                 select rec)
                        {
                            num += (int)garrAbilityEffectRec.ActionValueFlat;
                        }
                    }
                }
            }
            return(num);
        }
Exemplo n.º 4
0
    public void SetTalent(int garrTalentID)
    {
        this.m_garrTalentID = garrTalentID;
        this.m_talent       = null;
        if (PersistentTalentData.talentDictionary.ContainsKey(garrTalentID))
        {
            this.m_talent = (JamGarrisonTalent)PersistentTalentData.talentDictionary.get_Item(garrTalentID);
        }
        this.m_garrTalentRec = StaticDB.garrTalentDB.GetRecord(garrTalentID);
        Sprite sprite = GeneralHelpers.LoadIconAsset(AssetBundleType.Icons, this.m_garrTalentRec.IconFileDataID);

        if (sprite != null)
        {
            this.m_missingIconText.get_gameObject().SetActive(false);
            this.m_abilityIcon.set_sprite(sprite);
        }
        else
        {
            this.m_missingIconText.get_gameObject().SetActive(true);
            this.m_missingIconText.set_text(string.Empty + this.m_garrTalentRec.IconFileDataID);
        }
        Material material = new Material(this.m_grayscaleShader);

        this.m_abilityIcon.set_material(material);
        this.m_abilityIcon.get_material().SetFloat("_GrayscaleAmount", 1f);
    }
Exemplo n.º 5
0
        public static float GetMissionDurationTalentMultiplier()
        {
            float num = 1f;

            foreach (WrapperGarrisonTalent wrapperGarrisonTalent in PersistentTalentData.talentDictionary.Values)
            {
                if ((wrapperGarrisonTalent.Flags & 1) != 0)
                {
                    GarrTalentRec record = StaticDB.garrTalentDB.GetRecord(wrapperGarrisonTalent.GarrTalentID);
                    if (record != null)
                    {
                        if (record.GarrAbilityID > 0u)
                        {
                            foreach (GarrAbilityEffectRec garrAbilityEffectRec in from rec in StaticDB.garrAbilityEffectDB.GetRecordsByParentID((int)record.GarrAbilityID)
                                     where rec.AbilityAction == 17
                                     select rec)
                            {
                                num *= garrAbilityEffectRec.ActionValueFlat;
                            }
                        }
                    }
                }
            }
            return(num);
        }
Exemplo n.º 6
0
    public void SetTalent(GarrTalentRec garrTalentRec)
    {
        TalentTreeItemAbilityButton talentTreeItemAbilityButton;

        if (garrTalentRec.UiOrder == 0)
        {
            talentTreeItemAbilityButton = this.m_talentButtonLeft;
        }
        else
        {
            talentTreeItemAbilityButton = this.m_talentButtonRight;
        }
        talentTreeItemAbilityButton.SetTalent(garrTalentRec.ID);
        this.m_talentButtonSolo.SetTalent(garrTalentRec.ID);
    }
        public void SetTalent(GarrTalentRec garrTalentRec)
        {
            TalentTreeItemAbilityButton mTalentButtonRight = null;
            TalentTreeItemAbilityButton mTalentButtonLeft  = null;

            if (garrTalentRec.UiOrder != 0)
            {
                mTalentButtonRight = this.m_talentButtonRight;
                mTalentButtonLeft  = this.m_talentButtonLeft;
            }
            else
            {
                mTalentButtonRight = this.m_talentButtonLeft;
                mTalentButtonLeft  = this.m_talentButtonRight;
            }
            mTalentButtonRight.SetTalent(garrTalentRec.ID, mTalentButtonLeft);
            this.m_talentButtonSolo.SetTalent(garrTalentRec.ID, null);
        }
Exemplo n.º 8
0
        public void SetTalent(GarrTalentRec garrTalentRec)
        {
            TalentTreeItemAbilityButton talentTreeItemAbilityButton;
            TalentTreeItemAbilityButton sameTierButton;

            if ((int)garrTalentRec.UiOrder == 0)
            {
                talentTreeItemAbilityButton = this.m_talentButtonLeft;
                sameTierButton = this.m_talentButtonRight;
            }
            else
            {
                talentTreeItemAbilityButton = this.m_talentButtonRight;
                sameTierButton = this.m_talentButtonLeft;
            }
            talentTreeItemAbilityButton.SetTalent(garrTalentRec.ID, sameTierButton);
            this.m_talentButtonSolo.SetTalent(garrTalentRec.ID, null);
        }
Exemplo n.º 9
0
    private int GetMaxTroops(int garrClassSpecID)
    {
        GarrClassSpecRec record = StaticDB.garrClassSpecDB.GetRecord(garrClassSpecID);
        int maxTroops           = 0;

        if (record != null)
        {
            maxTroops = (int)record.FollowerClassLimit;
        }
        IEnumerator enumerator = PersistentTalentData.talentDictionary.Values.GetEnumerator();

        try
        {
            while (enumerator.MoveNext())
            {
                object            obj = enumerator.Current;
                JamGarrisonTalent jamGarrisonTalent = (JamGarrisonTalent)obj;
                if ((jamGarrisonTalent.Flags & 1) != 0)
                {
                    GarrTalentRec record2 = StaticDB.garrTalentDB.GetRecord(jamGarrisonTalent.GarrTalentID);
                    if (record2 != null)
                    {
                        StaticDB.garrAbilityEffectDB.EnumRecordsByParentID((int)record2.GarrAbilityID, delegate(GarrAbilityEffectRec effectRec)
                        {
                            if (effectRec.AbilityAction == 34u && (ulong)effectRec.ActionRecordID == (ulong)((long)garrClassSpecID))
                            {
                                maxTroops += (int)effectRec.ActionValueFlat;
                            }
                            return(true);
                        });
                    }
                }
            }
        }
        finally
        {
            IDisposable disposable;
            if ((disposable = (enumerator as IDisposable)) != null)
            {
                disposable.Dispose();
            }
        }
        return(maxTroops);
    }
Exemplo n.º 10
0
    public static float GetMissionDurationTalentMultiplier()
    {
        float       multiplier = 1f;
        IEnumerator enumerator = PersistentTalentData.talentDictionary.Values.GetEnumerator();

        try
        {
            while (enumerator.MoveNext())
            {
                object            obj = enumerator.Current;
                JamGarrisonTalent jamGarrisonTalent = (JamGarrisonTalent)obj;
                if ((jamGarrisonTalent.Flags & 1) != 0)
                {
                    GarrTalentRec record = StaticDB.garrTalentDB.GetRecord(jamGarrisonTalent.GarrTalentID);
                    if (record != null)
                    {
                        if (record.GarrAbilityID > 0u)
                        {
                            StaticDB.garrAbilityEffectDB.EnumRecordsByParentID((int)record.GarrAbilityID, delegate(GarrAbilityEffectRec garrAbilityEffectRec)
                            {
                                if (garrAbilityEffectRec.AbilityAction == 17u)
                                {
                                    multiplier *= garrAbilityEffectRec.ActionValueFlat;
                                }
                                return(true);
                            });
                        }
                    }
                }
            }
        }
        finally
        {
            IDisposable disposable;
            if ((disposable = (enumerator as IDisposable)) != null)
            {
                disposable.Dispose();
            }
        }
        return(multiplier);
    }
 public void HandleCanResearchGarrisonTalentResult(int garrTalentID, int result, string whyCantResearch)
 {
     if (this.m_garrTalentID != garrTalentID)
     {
         return;
     }
     if (PersistentTalentData.talentDictionary.ContainsKey(garrTalentID))
     {
         this.m_talent = PersistentTalentData.talentDictionary[garrTalentID];
     }
     this.m_garrTalentRec = StaticDB.garrTalentDB.GetRecord(garrTalentID);
     this.m_canResearch   = false;
     if (result != 0)
     {
         this.m_whyCantResearch = whyCantResearch;
     }
     else
     {
         this.m_canResearch = true;
     }
 }
        public void SetTalent(TalentTreeItemAbilityButton abilityButton)
        {
            this.m_abilityButton          = abilityButton;
            this.m_garrTalentRec          = StaticDB.garrTalentDB.GetRecord(abilityButton.GetTalentID());
            this.m_talentName.text        = this.m_garrTalentRec.Name;
            this.m_talentDescription.text = WowTextParser.parser.Parse(this.m_garrTalentRec.Description, 0);
            if (MobileDeviceLocale.GetLanguageCode().StartsWith("ru", StringComparison.OrdinalIgnoreCase) && (this.m_garrTalentRec.ID == 548 || this.m_garrTalentRec.ID == 552))
            {
                try
                {
                    Regex regex = new Regex("(?<quantity>\\d+)\\s+4(?<singular>[\\p{L}\\d\\s]+):(?<plural1>[\\p{L}\\d\\s]+):(?<plural2>[\\p{L}\\d\\s]+);");
                    if (regex.Match(this.m_talentDescription.text).Success)
                    {
                        try
                        {
                            this.m_talentDescription.text = regex.Replace(this.m_talentDescription.text, (Match m) => {
                                int num = int.Parse(m.Groups["quantity"].Value);
                                int russianPluralIndex = GeneralHelpers.GetRussianPluralIndex(num);
                                if (russianPluralIndex == 0)
                                {
                                    return(string.Concat(num, " ", m.Groups["singular"].Value));
                                }
                                if (russianPluralIndex == 1)
                                {
                                    return(string.Concat(num, " ", m.Groups["plural1"].Value));
                                }
                                return(string.Concat(num, " ", m.Groups["plural2"].Value));
                            });
                        }
                        catch (Exception exception)
                        {
                            Debug.LogException(exception);
                        }
                    }
                }
                catch (Exception exception1)
                {
                    Debug.LogException(exception1);
                }
            }
            this.m_talentDescription.supportRichText = WowTextParser.parser.IsRichText();
            Sprite sprite = GeneralHelpers.LoadIconAsset(AssetBundleType.Icons, this.m_garrTalentRec.IconFileDataID);

            if (sprite != null)
            {
                this.m_abilityIcon.sprite = sprite;
            }
            this.m_researchTimeAndCostSection.SetActive(true);
            int num1 = (!abilityButton.CanRespec() ? this.m_garrTalentRec.ResearchCost : this.m_garrTalentRec.RespecCost);

            this.m_resourceCostText.text = string.Concat((GarrisonStatus.WarResources() >= num1 ? "<color=#ffffffff>" : "<color=#FF0000FF>"), (!abilityButton.CanRespec() ? this.m_garrTalentRec.ResearchCost : this.m_garrTalentRec.RespecCost), "</color>");
            Sprite sprite1 = GeneralHelpers.LoadCurrencyIcon((int)this.m_garrTalentRec.ResearchCostCurrencyTypesID);

            if (sprite1 != null)
            {
                this.m_resourceIcon.sprite = sprite1;
            }
            bool flag  = (!abilityButton.IsResearching() ? false : abilityButton.IsRespec());
            bool flag1 = false;
            TalentTreeItemAbilityButton sameTierButton = abilityButton.GetSameTierButton();

            if (sameTierButton != null && (sameTierButton.IsOwned() || sameTierButton.IsResearching() && sameTierButton.IsRespec()))
            {
                flag1 = true;
            }
            TimeSpan timeSpan = TimeSpan.FromSeconds((double)((abilityButton.CanRespec() || flag || flag1 ? this.m_garrTalentRec.RespecDurationSecs : this.m_garrTalentRec.ResearchDurationSecs)));

            this.m_researchDurationText.text = timeSpan.GetDurationString(false);
            this.m_yourResourcesDisplayObj.SetActive(false);
            if (abilityButton.CanResearch() || abilityButton.CanRespec())
            {
                this.m_availableForResearchSection.SetActive(true);
                this.m_unavailableForResearchSection.SetActive(false);
                this.m_researchOrRespecText.text = (!abilityButton.CanRespec() ? StaticDB.GetString("RESEARCH", null) : StaticDB.GetString("RESPEC", null));
                this.m_yourResourcesDisplayObj.SetActive(true);
            }
            else
            {
                this.m_availableForResearchSection.SetActive(false);
                this.m_unavailableForResearchSection.SetActive(true);
                if (this.m_abilityButton.IsOwned())
                {
                    this.m_yourResourcesDisplayObj.SetActive(false);
                    this.m_statusText.text = string.Concat("<color=#ffffffff>", StaticDB.GetString("TALENT_OWNED", null), "</color>");
                    this.m_researchTimeAndCostSection.SetActive(false);
                }
                else if (this.m_abilityButton.IsResearching())
                {
                    TimeSpan timeSpan1 = (!abilityButton.IsRespec() ? this.m_abilityButton.GetRemainingResearchTime() : this.m_abilityButton.GetRemainingRespecTime());
                    this.m_statusText.text = string.Concat(new string[] { "<color=#FFC600FF>", StaticDB.GetString("TIME_LEFT", null), "</color> <color=#ffffffff>", timeSpan1.GetDurationString(false), "</color>" });
                }
                else if (GarrisonStatus.WarResources() < num1)
                {
                    this.m_yourResourcesDisplayObj.SetActive(true);
                    this.m_statusText.text = string.Concat("<color=#FF0000FF>", StaticDB.GetString("NEED_MORE_RESOURCES", null), "</color>");
                }
                else if (!this.m_talentTreePanel.AnyTalentIsResearching())
                {
                    string whyCantResearch = this.m_abilityButton.GetWhyCantResearch();
                    if (whyCantResearch == null || !(whyCantResearch != string.Empty))
                    {
                        this.m_statusText.text = string.Concat("<color=#FF0000FF>", StaticDB.GetString("MUST_RESEARCH_PREVIOUS_TIER", null), "</color>");
                    }
                    else
                    {
                        this.m_statusText.text = string.Concat("<color=#FF0000FF>", whyCantResearch, "</color>");
                    }
                }
                else
                {
                    this.m_statusText.text = string.Concat("<color=#FF0000FF>", StaticDB.GetString("ALREADY_RESEARCHING", null), "</color>");
                }
            }
        }
    public void SetTalent(TalentTreeItemAbilityButton abilityButton)
    {
        this.m_abilityButton = abilityButton;
        this.m_garrTalentRec = StaticDB.garrTalentDB.GetRecord(abilityButton.GetTalentID());
        this.m_talentName.set_text(this.m_garrTalentRec.Name);
        this.m_talentDescription.set_text(WowTextParser.parser.Parse(this.m_garrTalentRec.Description, 0));
        this.m_talentDescription.set_supportRichText(WowTextParser.parser.IsRichText());
        Sprite sprite = GeneralHelpers.LoadIconAsset(AssetBundleType.Icons, this.m_garrTalentRec.IconFileDataID);

        if (sprite != null)
        {
            this.m_abilityIcon.set_sprite(sprite);
        }
        this.m_researchTimeAndCostSection.SetActive(false);
        int num = (!abilityButton.CanRespec()) ? this.m_garrTalentRec.ResearchCost : this.m_garrTalentRec.RespecCost;

        this.m_resourceCostText.set_text(((GarrisonStatus.Resources() >= num) ? "<color=#ffffffff>" : "<color=#FF0000FF>") + ((!abilityButton.CanRespec()) ? this.m_garrTalentRec.ResearchCost : this.m_garrTalentRec.RespecCost) + "</color>");
        Sprite sprite2 = GeneralHelpers.LoadCurrencyIcon((int)this.m_garrTalentRec.ResearchCostCurrencyTypesID);

        if (sprite2 != null)
        {
            this.m_resourceIcon.set_sprite(sprite2);
        }
        Duration duration = new Duration((!abilityButton.CanRespec()) ? this.m_garrTalentRec.ResearchDurationSecs : this.m_garrTalentRec.RespecDurationSecs, false);

        this.m_researchDurationText.set_text(duration.DurationString);
        this.m_yourResourcesDisplayObj.SetActive(false);
        if (abilityButton.CanResearch() || abilityButton.CanRespec())
        {
            this.m_availableForResearchSection.SetActive(true);
            this.m_unavailableForResearchSection.SetActive(false);
            this.m_researchOrRespecText.set_text((!abilityButton.CanRespec()) ? StaticDB.GetString("RESEARCH", null) : StaticDB.GetString("RESPEC", null));
            this.m_yourResourcesDisplayObj.SetActive(true);
            this.m_researchTimeAndCostSection.SetActive(true);
        }
        else
        {
            this.m_availableForResearchSection.SetActive(false);
            this.m_unavailableForResearchSection.SetActive(true);
            if (this.m_abilityButton.IsOwned())
            {
                this.m_yourResourcesDisplayObj.SetActive(false);
                this.m_statusText.set_text("<color=#ffffffff>" + StaticDB.GetString("TALENT_OWNED", null) + "</color>");
            }
            else if (this.m_abilityButton.IsResearching())
            {
                Duration duration2 = new Duration((!abilityButton.IsRespec()) ? ((int)this.m_abilityButton.GetRemainingResearchTime()) : ((int)this.m_abilityButton.GetRemainingRespecTime()), false);
                this.m_statusText.set_text(string.Concat(new string[]
                {
                    "<color=#FFC600FF>",
                    StaticDB.GetString("TIME_LEFT", null),
                    "</color> <color=#ffffffff>",
                    duration2.DurationString,
                    "</color>"
                }));
            }
            else if (GarrisonStatus.Resources() < num)
            {
                this.m_researchTimeAndCostSection.SetActive(true);
                this.m_yourResourcesDisplayObj.SetActive(true);
                this.m_statusText.set_text("<color=#FF0000FF>" + StaticDB.GetString("NEED_MORE_RESOURCES", null) + "</color>");
            }
            else if (this.m_talentTreePanel.AnyTalentIsResearching())
            {
                this.m_statusText.set_text("<color=#FF0000FF>" + StaticDB.GetString("ALREADY_RESEARCHING", null) + "</color>");
            }
            else
            {
                string whyCantResearch = this.m_abilityButton.GetWhyCantResearch();
                if (whyCantResearch != null && whyCantResearch != string.Empty)
                {
                    this.m_statusText.set_text("<color=#FF0000FF>" + whyCantResearch + "</color>");
                }
                else
                {
                    this.m_statusText.set_text("<color=#FF0000FF>" + StaticDB.GetString("MUST_RESEARCH_PREVIOUS_TIER", null) + "</color>");
                }
            }
        }
    }
Exemplo n.º 14
0
        public void ScheduleNotifications()
        {
            this.ClearPendingNotifications();
            if (!Main.instance.m_enableNotifications)
            {
                return;
            }
            List <NotificationData> list = new List <NotificationData>();
            ICollection <WrapperGarrisonMission> values = PersistentMissionData.missionDictionary.Values;

            foreach (WrapperGarrisonMission wrapperGarrisonMission in values)
            {
                GarrMissionRec record = StaticDB.garrMissionDB.GetRecord(wrapperGarrisonMission.MissionRecID);
                if (record != null && (GARR_FOLLOWER_TYPE)record.GarrFollowerTypeID == GarrisonStatus.GarrisonFollowerType)
                {
                    if (wrapperGarrisonMission.MissionState == 1)
                    {
                        if ((record.Flags & 16u) == 0u)
                        {
                            TimeSpan t             = GarrisonStatus.CurrentTime() - wrapperGarrisonMission.StartTime;
                            TimeSpan timeRemaining = wrapperGarrisonMission.MissionDuration - t;
                            list.Add(new NotificationData
                            {
                                notificationText = record.Name,
                                timeRemaining    = timeRemaining,
                                notificationType = NotificationType.missionCompete
                            });
                        }
                    }
                }
            }
            foreach (WrapperCharacterShipment wrapperCharacterShipment in PersistentShipmentData.shipmentDictionary.Values)
            {
                CharShipmentRec record2 = StaticDB.charShipmentDB.GetRecord(wrapperCharacterShipment.ShipmentRecID);
                if (record2 == null)
                {
                    Debug.LogError("Invalid Shipment ID: " + wrapperCharacterShipment.ShipmentRecID);
                }
                else
                {
                    string notificationText = "Invalid";
                    if (record2.GarrFollowerID > 0)
                    {
                        GarrFollowerRec record3 = StaticDB.garrFollowerDB.GetRecord((int)record2.GarrFollowerID);
                        if (record3 == null)
                        {
                            Debug.LogError("Invalid Follower ID: " + record2.GarrFollowerID);
                            continue;
                        }
                        int         num     = (GarrisonStatus.Faction() != PVP_FACTION.HORDE) ? record3.AllianceCreatureID : record3.HordeCreatureID;
                        CreatureRec record4 = StaticDB.creatureDB.GetRecord(num);
                        if (record4 == null)
                        {
                            Debug.LogError("Invalid Creature ID: " + num);
                            continue;
                        }
                        notificationText = record4.Name;
                    }
                    if (record2.DummyItemID > 0)
                    {
                        ItemRec record5 = StaticDB.itemDB.GetRecord(record2.DummyItemID);
                        if (record5 == null)
                        {
                            Debug.LogError("Invalid Item ID: " + record2.DummyItemID);
                            continue;
                        }
                        notificationText = record5.Display;
                    }
                    TimeSpan t2             = GarrisonStatus.CurrentTime() - wrapperCharacterShipment.CreationTime;
                    TimeSpan timeRemaining2 = wrapperCharacterShipment.ShipmentDuration - t2;
                    list.Add(new NotificationData
                    {
                        notificationText = notificationText,
                        timeRemaining    = timeRemaining2,
                        notificationType = NotificationType.workOrderReady
                    });
                }
            }
            foreach (WrapperGarrisonTalent wrapperGarrisonTalent in PersistentTalentData.talentDictionary.Values)
            {
                if ((wrapperGarrisonTalent.Flags & 1) == 0)
                {
                    if (!(wrapperGarrisonTalent.StartTime <= DateTime.UtcNow))
                    {
                        GarrTalentRec record6 = StaticDB.garrTalentDB.GetRecord(wrapperGarrisonTalent.GarrTalentID);
                        if (record6 != null)
                        {
                            TimeSpan timeRemaining3 = TimeSpan.Zero;
                            if ((wrapperGarrisonTalent.Flags & 2) == 0)
                            {
                                timeRemaining3 = TimeSpan.FromSeconds((double)record6.ResearchDurationSecs) - (GarrisonStatus.CurrentTime() - wrapperGarrisonTalent.StartTime);
                            }
                            else
                            {
                                timeRemaining3 = TimeSpan.FromSeconds((double)record6.RespecDurationSecs) - (GarrisonStatus.CurrentTime() - wrapperGarrisonTalent.StartTime);
                            }
                            list.Add(new NotificationData
                            {
                                notificationText = record6.Name,
                                timeRemaining    = timeRemaining3,
                                notificationType = NotificationType.talentReady
                            });
                        }
                    }
                }
            }
            int num2 = 0;

            foreach (NotificationData notificationData in from n in list
                     orderby n.timeRemaining
                     select n)
            {
                if (notificationData.notificationType == NotificationType.missionCompete)
                {
                    LocalNotifications.ScheduleMissionCompleteNotification(notificationData.notificationText, ++num2, Convert.ToInt64(notificationData.timeRemaining.TotalSeconds));
                }
                if (notificationData.notificationType == NotificationType.workOrderReady)
                {
                    LocalNotifications.ScheduleWorkOrderReadyNotification(notificationData.notificationText, ++num2, Convert.ToInt64(notificationData.timeRemaining.TotalSeconds));
                }
                if (notificationData.notificationType == NotificationType.talentReady)
                {
                    LocalNotifications.ScheduleTalentResearchCompleteNotification(notificationData.notificationText, ++num2, Convert.ToInt64(notificationData.timeRemaining.TotalSeconds));
                }
                Debug.Log(string.Concat(new object[]
                {
                    "Scheduling Notification for [",
                    notificationData.notificationType,
                    "] ",
                    notificationData.notificationText,
                    " (",
                    num2,
                    ") in ",
                    notificationData.timeRemaining.TotalSeconds,
                    " seconds"
                }));
            }
        }