private static RunStatus DetectTheTank() { IamTheTank = false; if (RaFHelper.Leader != null && invalidDelegate == null) { invalidDelegate = new ObjectInvalidateDelegate(Leader_OnInvalidate); RaFHelper.Leader.OnInvalidate += invalidDelegate; } if (RaFHelper.Leader != null && !RaFHelper.Leader.IsValid) { Log(Color.Blue, "Tank invalid, resetting"); RaFHelper.ClearLeader(); } if (IsInGroup && RaFHelper.Leader == null) { IamTheTank = (GetGroupRoleAssigned(Me) == WoWPartyMember.GroupRole.Tank); if (IamTheTank || LazyRaiderSettings.Instance.NoTank) { Log(Color.Blue, "Tank set to -ME-, max health {0}", Me.MaxHealth); return(RunStatus.Failure); } foreach (WoWPlayer p in GroupMembers) { if (GetGroupRoleAssigned(p) == WoWPartyMember.GroupRole.Tank) { RaFHelper.SetLeader(p); Log(Color.Blue, "Tank set to {0}, max health {1}", RaFHelper.Leader.Class, RaFHelper.Leader.MaxHealth); return(RunStatus.Failure); } } WoWPlayer tank = (from p in GroupMembers orderby p.MaxHealth descending where !p.IsMe select p).FirstOrDefault(); if (tank != null) { RaFHelper.SetLeader(tank); Log(Color.Blue, "Tank set to {0}, max health {1}", RaFHelper.Leader.Class, RaFHelper.Leader.MaxHealth); return(RunStatus.Failure); } } if (IsInGroup) { Log(Color.Red, "Could not find suitable unit to Tank!"); } haveWeChecked = true; return(RunStatus.Failure); }
public static void SetAsLeader(ulong guidNew) { WoWPlayer p = null; Tank.Guid = guidNew; if (Tank.Guid != 0) { p = Tank.Current.ToPlayer(); } if (p == null) { LazyRaider.Dlog("Tank.SetAsLeader: out of range and cannot resolve {0}", LazyRaider.Safe_UnitName(Tank.Current)); RaFHelper.ClearLeader(); } else { LazyRaider.Dlog("Tank.SetAsLeader: setting tank {0}", LazyRaider.Safe_UnitName(p)); RaFHelper.SetLeader(p); invalidDelegate = new ObjectInvalidateDelegate(RaFLeader_OnInvalidate); RaFHelper.Leader.OnInvalidate += invalidDelegate; } }
static void Leader_OnInvalidate() { RaFHelper.ClearLeader(); invalidDelegate = null; haveWeChecked = false; }
private static RunStatus DetectTheTank() { IamTheTank = false; if (RaFHelper.Leader != null && invalidDelegate == null) { invalidDelegate = new ObjectInvalidateDelegate(Leader_OnInvalidate); RaFHelper.Leader.OnInvalidate += invalidDelegate; } if (RaFHelper.Leader != null && !RaFHelper.Leader.IsValid) { Log(Color.Blue, "Tank invalid, resetting"); RaFHelper.ClearLeader(); } if (IsInGroup && RaFHelper.Leader == null) { IamTheTank = ( GetGroupRoleAssigned( Me ) == WoWPartyMember.GroupRole.Tank ); if ( IamTheTank || LazyRaiderSettings.Instance.NoTank) { Log(Color.Blue, "Tank set to -ME-, max health {0}", Me.MaxHealth); return RunStatus.Failure; } foreach (WoWPlayer p in GroupMembers) { if ( GetGroupRoleAssigned( p ) == WoWPartyMember.GroupRole.Tank ) { RaFHelper.SetLeader(p); Log(Color.Blue, "Tank set to {0}, max health {1}", RaFHelper.Leader.Class, RaFHelper.Leader.MaxHealth); return RunStatus.Failure; } } WoWPlayer tank = (from p in GroupMembers orderby p.MaxHealth descending where !p.IsMe select p).FirstOrDefault(); if (tank != null) { RaFHelper.SetLeader(tank); Log( Color.Blue, "Tank set to {0}, max health {1}", RaFHelper.Leader.Class, RaFHelper.Leader.MaxHealth); return RunStatus.Failure; } } if (IsInGroup) Log( Color.Red, "Could not find suitable unit to Tank!"); haveWeChecked = true; return RunStatus.Failure; }
public static void RaFLeader_OnInvalidate() { LazyRaider.Dlog("RaFLeader_OnInvalidate: tank reference now invalid, resetting"); RaFHelper.ClearLeader(); invalidDelegate = null; }
public static void SetAsLeader(ulong guidNew) { WoWPlayer p = null; Tank.Guid = guidNew; if (Tank.Guid != 0) p = Tank.Current.ToPlayer(); if (p == null) { LazyRaider.Dlog("Tank.SetAsLeader: out of range and cannot resolve {0}", LazyRaider.Safe_UnitName(Tank.Current)); RaFHelper.ClearLeader(); } else { LazyRaider.Dlog("Tank.SetAsLeader: setting tank {0}", LazyRaider.Safe_UnitName(p)); RaFHelper.SetLeader(p); invalidDelegate = new ObjectInvalidateDelegate(RaFLeader_OnInvalidate); RaFHelper.Leader.OnInvalidate += invalidDelegate; } }