Example #1
0
        private string ReturnGeoSpell(int GEOSpell_ID, int GeoSpell_Type)
        {
            // GRAB THE SPELL FROM THE CUSTOM LIST
            GeoData GeoSpell = GeomancerInfo.Where(c => c.geo_position == GEOSpell_ID).FirstOrDefault();

            if (GeoSpell_Type == 1)
            {
                var apiSpell = PL.Resources.GetSpell(GeoSpell.indi_spell, 0);
                if (PL.SpellAvailable(apiSpell.Name[0]))
                {
                    return(GeoSpell.indi_spell);
                }
                else
                {
                    return("SpellNA");
                }
            }
            else if (GeoSpell_Type == 2)
            {
                var apiSpell = PL.Resources.GetSpell(GeoSpell.geo_spell, 0);

                if (PL.SpellAvailable(apiSpell.Name[0]))
                {
                    return(GeoSpell.geo_spell);
                }
                else
                {
                    return("SpellNA");
                }
            }
            else
            {
                return("SpellError_Cancel");
            }
        }
        // TODO: Not working? No debuffs being cured
        public static PartyMember GetHighestPriorityDebuff(this EliteAPI api, Dictionary <string, IEnumerable <short> > debuffs)
        {
            var members = api.GetActivePartyMembers().Where(pm => api.CanCastOn(pm));

            int         lowestIndex    = int.MaxValue;
            PartyMember priorityMember = null;

            foreach (PartyMember pm in members)
            {
                if (!debuffs.ContainsKey(pm.Name))
                {
                    continue;
                }

                // We get the debuffs and order them by priority, filtering for statuses we have the right spell off cooldown.
                var debuffIds = debuffs[pm.Name].Where(id => Data.DebuffPriorities.Keys.Cast <short>().Contains(id));

                if (debuffIds.Any())
                {
                    var pmPriorities = debuffIds.Cast <StatusEffect>().OrderBy(status => Array.IndexOf(Data.DebuffPriorities.Keys.ToArray(), status)).Where(status => api.SpellAvailable(Data.DebuffPriorities[status]));

                    if (pmPriorities.Any())
                    {
                        var priority = Array.IndexOf(Data.DebuffPriorities.Keys.ToArray(), pmPriorities.FirstOrDefault());
                        if (priority < lowestIndex)
                        {
                            lowestIndex    = priority;
                            priorityMember = pm;
                        }
                    }
                }
            }

            return(priorityMember);
        }