Example #1
0
        public override void OnTick()
        {
            CheckForDisqualification();

            // check for anyone carrying flags
            if (HomeBases != null)
            {
                ArrayList dlist = null;

                foreach (CTFBase b in HomeBases)
                {
                    if (b == null || b.Deleted)
                    {
                        if (dlist == null)
                        {
                            dlist = new ArrayList();
                        }
                        dlist.Add(b);
                        continue;
                    }

                    if (!b.Deleted && b.Flag != null && !b.Flag.Deleted)
                    {
                        if (b.Flag.RootParent is Mobile)
                        {
                            Mobile m = b.Flag.RootParent as Mobile;

                            // make sure a participant has it
                            IChallengeEntry entry = GetParticipant(m);

                            if (entry != null)
                            {
                                // display the flag
                                //m.PublicOverheadMessage( MessageType.Regular, BaseChallengeGame.TeamColor(b.Team), false, b.Team.ToString());

                                Effects.SendTargetParticles(m, 0x375A, 35, 10, BaseChallengeGame.TeamColor(b.Team), 0x00, 9502,
                                                            (EffectLayer)255, 0x100);
                            }
                            else
                            {
                                b.ReturnFlag();
                            }
                        }
                        else
                        // if the flag somehow ends up on the ground, send it back to the base
                        if (!b.HasFlag)
                        {
                            b.ReturnFlag();
                        }
                    }
                }

                if (dlist != null)
                {
                    foreach (CTFBase b in dlist)
                    {
                        HomeBases.Remove(b);
                    }
                }
            }
        }
Example #2
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 0:
                int count = reader.ReadInt();
                for (int i = 0; i < count; i++)
                {
                    CTFBase b = reader.ReadItem() as CTFBase;
                    HomeBases.Add(b);
                }
                m_Challenger = reader.ReadMobile();

                m_Organizers.Add(m_Challenger);

                m_GameLocked     = reader.ReadBool();
                m_GameInProgress = reader.ReadBool();
                m_TotalPurse     = reader.ReadInt();
                m_EntryFee       = reader.ReadInt();
                m_ArenaSize      = reader.ReadInt();
                m_TargetScore    = reader.ReadInt();
                m_MatchLength    = reader.ReadTimeSpan();

                TimeSpan elapsed = reader.ReadTimeSpan();

                if (elapsed > TimeSpan.Zero)
                {
                    m_MatchStart = DateTime.Now - elapsed;
                }

                m_MatchEnd = reader.ReadDateTime();

                count = reader.ReadInt();
                for (int i = 0; i < count; i++)
                {
                    ChallengeEntry entry = new ChallengeEntry();
                    entry.Participant = reader.ReadMobile();
                    string sname = reader.ReadString();
                    // look up the enum by name
                    ChallengeStatus status = ChallengeStatus.None;
                    try{
                        status = (ChallengeStatus)Enum.Parse(typeof(ChallengeStatus), sname);
                    } catch {}
                    entry.Status          = status;
                    entry.Accepted        = reader.ReadBool();
                    entry.PageBeingViewed = reader.ReadInt();
                    entry.Score           = reader.ReadInt();
                    entry.Winner          = reader.ReadBool();
                    entry.Team            = reader.ReadInt();

                    Participants.Add(entry);
                }
                break;
            }

            if (GameCompleted)
            {
                Timer.DelayCall(PostGameDecayTime, new TimerCallback(Delete));
            }

            // start the challenge timer
            StartChallengeTimer();

            SetNameHue();
        }