// Another option instead of switchable, is to just implement a second set of // Heal tasks in each healer Logic that work off the HealableAlliance instead. // Switching the arrays is less code duplication. public static void SwitchCastableToAlliance() { ClearCastable(); foreach (var ally in CastableAlliance.OrderBy(a => a.GetHealingWeight())) { AddAllyToCastable(ally); } }
public static void UpdateAlliance( bool IgnoreAlliance, bool HealAllianceDps, bool HealAllianceHealers, bool HealAllianceTanks, bool ResAllianceDps, bool ResAllianceHealers, bool ResAllianceTanks ) { CastableAlliance.Clear(); // Should we be ignoring our alliance? if (!IgnoreAlliance && (Globals.InActiveDuty || WorldManager.InPvP)) { // Create a list of alliance members that we need to check if (HealAllianceDps || HealAllianceHealers || HealAllianceTanks) { var allianceToHeal = AllianceMembers.Where(a => !a.CanAttack && !a.HasAura(Auras.MountedPvp) && ( HealAllianceDps && a.IsDps() || HealAllianceTanks && a.IsTank() || HealAllianceHealers && a.IsDps())); foreach (var ally in allianceToHeal) { if (ally.Distance(Core.Me) <= 30) { CastableAlliance.Add(ally); } } } if (ResAllianceDps || ResAllianceHealers || ResAllianceTanks) { var allianceToRes = AllianceMembers.Where(a => a.CurrentHealth <= 0 && (ResAllianceDps && a.IsDps() || ResAllianceTanks && a.IsTank() || ResAllianceHealers && a.IsDps())); foreach (var ally in allianceToRes) { CastableAlliance.Add(ally); } } } }