Ejemplo n.º 1
0
 public void Tick()
 {
     if (APFBuddy.IsLeader && APFBuddy.Running && Team.IsInTeam && Team.IsRaid)
     {
         APFBuddy.Start();
     }
 }
Ejemplo n.º 2
0
        public void Tick()
        {
            if (_phase == ReformPhase.PostReformBuffer && Time.NormalTime > _reformFinishedTime + PostReformBuffer)
            {
                if (Team.IsInTeam && Team.IsRaid)
                {
                    APFBuddy.Start();
                    return;
                }
                else
                {
                    Chat.WriteLine("Reform failed? Expected to be in raid.");
                    APFBuddy.FSM.Fire(Trigger.TeamReformFailed);
                    return;
                }
            }

            if (_phase == ReformPhase.Disbanding)
            {
                _teamCache = Team.Members.Select(x => x.Identity).ToArray();
                Team.Disband();
                _phase = ReformPhase.AwaitingZoneChange;
                Chat.WriteLine("ReformPhase.AwaitingZoneChange");
            }

            if (_phase == ReformPhase.AwaitingZoneChange && Playfield.ModelIdentity.Instance == Constants.APFHubId)
            {
                _zoneChangedTime = Time.NormalTime;
                _phase           = ReformPhase.PreReformBuffer;
                Chat.WriteLine("ReformPhase.PreReformBuffer");
            }

            if (_phase == ReformPhase.PreReformBuffer && Time.NormalTime > _zoneChangedTime + PreReformBuffer)
            {
                _phase = ReformPhase.BulkInvite;
                Chat.WriteLine("ReformPhase.BulkInvite");
            }

            if (_phase == ReformPhase.BulkInvite)
            {
                foreach (SimpleChar player in DynelManager.Players.Where(x => _teamCache.Contains(x.Identity) && x.IsInPlay))
                {
                    InvitePlayer(player.Identity);
                }

                _phase = ReformPhase.AwaitingTeammembers;
                Chat.WriteLine("ReformPhase.AwaitingTeammembers");
            }

            if (_phase == ReformPhase.AwaitingTeammembers)
            {
                if (!_invitedPastTeamMembers && Time.NormalTime > _reformStartedTime + InviteAllDelay)
                {
                    foreach (Identity oldTeammate in _teamCache)
                    {
                        InvitePlayer(oldTeammate);
                    }

                    _invitedPastTeamMembers = true;
                }

                if (Time.NormalTime < _reformStartedTime + ReformTimeout && Team.Members.Count < 6 && _teamCache.Except(Team.Members.Select(x => x.Identity).ToArray()).Any())
                {
                    return;
                }

                if (Time.NormalTime > _reformStartedTime + ReformTimeout)
                {
                    Chat.WriteLine($"Reform timed out..");
                }
                else
                {
                    Chat.WriteLine("Reform complete.");
                }

                _phase = ReformPhase.PostReformBuffer;
                _reformFinishedTime = Time.NormalTime;
                Team.ConvertToRaid();
            }
        }