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