public static void HandleProgress(ConquestProgressContainer e)
 {
     if (e != null && e.State != null && e.State.User != null)
     {
         CheckProgress <ConquestProgressConquest>(e.State.User, e);
     }
     else if (e != null && e.State != null)
     {
         CheckProgress <ConquestProgressConquest>(e.State.Owner, e);
     }
 }
Beispiel #2
0
        public void UpdateProgress(int offset)
        {
            if (offset <= 0 || !ConquestExists)
            {
                return;
            }

            if (Completed)
            {
                _Progress = ProgressMax;
                return;
            }

            DateTime now = DateTime.Now;

            if (Conquest.TimeoutReset > TimeSpan.Zero && LastProgress + Conquest.TimeoutReset < now)
            {
                _Progress = 0;
                return;
            }

            LastProgress = now;

            var args = new ConquestProgressContainer(this, offset);

            Conquests.HandleProgress(args);

            offset = args.Offset;

            _Progress += offset;

            Conquest.OnProgress(this, offset);

            while (ProgressComplete && !Completed)
            {
                int pMax = ProgressMax;

                ++Tier;

                Conquest.OnTierComplete(this);

                Conquests.HandleTierCompleted(new ConquestTierCompletedContainer(this, Tier));

                if (TiersComplete)
                {
                    _Progress = pMax;
                    break;
                }

                _Progress -= pMax;
            }

            if (!Completed)
            {
                return;
            }

            _Progress = ProgressMax;

            CompletedDate = DateTime.Now;

            ConquestState wf = Conquests.FindWorldFirst(Conquest);

            if (wf == null && (Owner.AccessLevel == AccessLevel.Player || Owner.AccessLevel > AccessLevel.Player && Conquests.CMOptions.StaffWorldFirsts))
            {
                WorldFirst = true;

                Conquest.OnWorldFirst(this);
            }

            Conquests.HandleCompleted(new ConquestCompletedContainer(this));
        }