Пример #1
0
        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);
        }
Пример #2
0
        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;
        }
Пример #5
0
 public static void RaFLeader_OnInvalidate()
 {
     LazyRaider.Dlog("RaFLeader_OnInvalidate: tank reference now invalid, resetting");
     RaFHelper.ClearLeader();
     invalidDelegate = null;
 }
Пример #6
0
        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;
            }
        }
Пример #7
0
 static void Leader_OnInvalidate()
 {
     RaFHelper.ClearLeader();
     invalidDelegate = null;
     haveWeChecked   = false;
 }
Пример #8
0
 public static void RaFLeader_OnInvalidate()
 {
     LazyRaider.Dlog("RaFLeader_OnInvalidate: tank reference now invalid, resetting");
     RaFHelper.ClearLeader();
     invalidDelegate = null;
 }