Пример #1
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 0:
            {
                m_Town       = Town.ReadReference(reader);
                m_Corrupted  = Faction.ReadReference(reader);
                m_Corrupting = Faction.ReadReference(reader);

                m_LastMonolith = reader.ReadItem() as BaseMonolith;

                m_LastStolen        = reader.ReadDateTime();
                m_GraceStart        = reader.ReadDateTime();
                m_CorruptionStart   = reader.ReadDateTime();
                m_PurificationStart = reader.ReadDateTime();

                Update();

                Mobile mob = RootParent as Mobile;

                if (mob != null)
                {
                    mob.SolidHueOverride = OwnershipHue;
                }

                break;
            }
            }
        }
Пример #2
0
        public Election(GenericReader reader)
        {
            int version = reader.ReadEncodedInt();

            switch (version)
            {
            case 0:
            {
                m_Faction = Faction.ReadReference(reader);

                m_LastStateTime = reader.ReadDateTime();
                m_State         = (ElectionState)reader.ReadEncodedInt();

                m_Candidates = new CandidateCollection();

                int count = reader.ReadEncodedInt();

                for (int i = 0; i < count; ++i)
                {
                    Candidate cd = new Candidate(reader);

                    if (cd.Mobile != null)
                    {
                        m_Candidates.Add(cd);
                    }
                }

                break;
            }
            }

            StartTimer();
        }
Пример #3
0
        public Election(IGenericReader reader)
        {
            var version = reader.ReadEncodedInt();

            switch (version)
            {
            case 0:
            {
                Faction = Faction.ReadReference(reader);

                LastStateTime = reader.ReadDateTime();
                CurrentState  = (ElectionState)reader.ReadEncodedInt();

                Candidates = new List <Candidate>();

                var count = reader.ReadEncodedInt();

                for (var i = 0; i < count; ++i)
                {
                    var cd = new Candidate(reader);

                    if (cd.Mobile != null)
                    {
                        Candidates.Add(cd);
                    }
                }

                break;
            }
            }

            StartTimer();
        }
Пример #4
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            m_Faction = Faction.ReadReference(reader);
            m_Town    = Town.ReadReference(reader);
            m_Orders  = new Orders(this, reader);

            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(Register));
        }
Пример #5
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 0:
            {
                Faction = Faction.ReadReference(reader);
                break;
            }
            }
        }
Пример #6
0
        public TownState(GenericReader reader)
        {
            int version = reader.ReadEncodedInt();

            switch (version)
            {
            case 4:
            {
                m_Active = reader.ReadBool();
                goto case 3;
            }

            case 3:
            {
                m_LastIncome = reader.ReadDateTime();

                goto case 2;
            }

            case 2:
            {
                m_Tax           = reader.ReadEncodedInt();
                m_LastTaxChange = reader.ReadDateTime();

                goto case 1;
            }

            case 1:
            {
                m_Silver = reader.ReadEncodedInt();

                goto case 0;
            }

            case 0:
            {
                m_Town  = Town.ReadReference(reader);
                m_Owner = Faction.ReadReference(reader);

                m_Sheriff = reader.ReadMobile();
                m_Finance = reader.ReadMobile();

                m_Town.State = this;

                break;
            }
            }
        }
Пример #7
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            /*int version = */ reader.ReadInt();

            m_Faction         = Faction.ReadReference(reader);
            m_Placer          = reader.ReadMobile();
            m_TimeOfPlacement = reader.ReadDateTime();

            if (Visible)
            {
                BeginConceal();
            }

            CheckDecay();
        }
Пример #8
0
        public override void Deserialize(IGenericReader reader)
        {
            base.Deserialize(reader);

            var version = reader.ReadInt();

            Faction         = Faction.ReadReference(reader);
            Placer          = reader.ReadEntity <Mobile>();
            TimeOfPlacement = reader.ReadDateTime();

            if (Visible)
            {
                BeginConceal();
            }

            CheckDecay();
        }
Пример #9
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 0:
            {
                Town    = Town.ReadReference(reader);
                Faction = Faction.ReadReference(reader);
                m_Sigil = reader.ReadItem() as Sigil;
                break;
            }
            }
        }
Пример #10
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 0:
            {
                m_Town    = Town.ReadReference(reader);
                m_Faction = Faction.ReadReference(reader);
                Register();
                break;
            }
            }

            Frozen = true;
        }
Пример #11
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 0:
            {
                Town    = Town.ReadReference(reader);
                Faction = Faction.ReadReference(reader);
                m_Sigil = reader.ReadItem() as Sigil;
                break;
            }
            }

            Timer.DelayCall(TimeSpan.FromSeconds(5.0), new TimerCallback(CheckActive));
        }
Пример #12
0
        public FactionState(GenericReader reader)
        {
            int version = reader.ReadEncodedInt();

            switch (version)
            {
            case 5:
            {
                m_LastAtrophy = reader.ReadDateTime();
                goto case 4;
            }

            case 4:
            {
                int count = reader.ReadEncodedInt();

                for (int i = 0; i < count; ++i)
                {
                    DateTime time = reader.ReadDateTime();

                    if (i < m_LastBroadcasts.Length)
                    {
                        m_LastBroadcasts[i] = time;
                    }
                }

                goto case 3;
            }

            case 3:
            case 2:
            case 1:
            {
                m_Election = new Election(reader);

                goto case 0;
            }

            case 0:
            {
                m_Faction = Faction.ReadReference(reader);

                m_Commander = reader.ReadMobile();

                if (version < 5)
                {
                    m_LastAtrophy = DateTime.UtcNow;
                }

                if (version < 4)
                {
                    DateTime time = reader.ReadDateTime();

                    if (m_LastBroadcasts.Length > 0)
                    {
                        m_LastBroadcasts[0] = time;
                    }
                }

                m_Tithe  = reader.ReadEncodedInt();
                m_Silver = reader.ReadEncodedInt();

                int memberCount = reader.ReadEncodedInt();

                m_Members = new List <PlayerState>();

                for (int i = 0; i < memberCount; ++i)
                {
                    PlayerState pl = new PlayerState(reader, m_Faction, m_Members);

                    if (pl.Mobile != null)
                    {
                        m_Members.Add(pl);
                    }
                }

                m_Faction.State = this;

                m_Faction.ZeroRankOffset = m_Members.Count;
                m_Members.Sort();

                for (int i = m_Members.Count - 1; i >= 0; i--)
                {
                    PlayerState player = m_Members[i];

                    if (player.KillPoints <= 0)
                    {
                        m_Faction.ZeroRankOffset = i;
                    }
                    else
                    {
                        player.RankIndex = i;
                    }
                }

                m_FactionItems = new List <FactionItem>();

                if (version >= 2)
                {
                    int factionItemCount = reader.ReadEncodedInt();

                    for (int i = 0; i < factionItemCount; ++i)
                    {
                        FactionItem factionItem = new FactionItem(reader, m_Faction);

                        Timer.DelayCall(TimeSpan.Zero, new TimerCallback(factionItem.CheckAttach));         // sandbox attachment
                    }
                }

                m_FactionTraps = new List <BaseFactionTrap>();

                if (version >= 3)
                {
                    int factionTrapCount = reader.ReadEncodedInt();

                    for (int i = 0; i < factionTrapCount; ++i)
                    {
                        BaseFactionTrap trap = reader.ReadItem() as BaseFactionTrap;

                        if (trap != null && !trap.CheckDecay())
                        {
                            m_FactionTraps.Add(trap);
                        }
                    }
                }

                break;
            }
            }

            if (version < 1)
            {
                m_Election = new Election(m_Faction);
            }
        }
Пример #13
0
        public FactionState(GenericReader reader)
        {
            int version = reader.ReadEncodedInt();

            switch (version)
            {
            case 4:
            {
                int count = reader.ReadEncodedInt();

                for (int i = 0; i < count; ++i)
                {
                    DateTime time = reader.ReadDateTime();

                    if (i < m_LastBroadcasts.Length)
                    {
                        m_LastBroadcasts[i] = time;
                    }
                }

                goto case 3;
            }

            case 3:
            case 2:
            case 1:
            {
                m_Election = new Election(reader);

                goto case 0;
            }

            case 0:
            {
                m_Faction = Faction.ReadReference(reader);

                m_Commander = reader.ReadMobile();

                if (version < 4)
                {
                    DateTime time = reader.ReadDateTime();

                    if (m_LastBroadcasts.Length > 0)
                    {
                        m_LastBroadcasts[0] = time;
                    }
                }

                m_Tithe  = reader.ReadEncodedInt();
                m_Silver = reader.ReadEncodedInt();

                int memberCount = reader.ReadEncodedInt();

                m_Members = new PlayerStateCollection();

                for (int i = 0; i < memberCount; ++i)
                {
                    PlayerState pl = new PlayerState(reader, m_Faction, m_Members);

                    if (pl.Mobile != null)
                    {
                        m_Members.Add(pl);
                    }
                }

                m_Faction.State = this;
                m_Faction.UpdateRanks();

                m_FactionItems = new FactionItemCollection();

                if (version >= 2)
                {
                    int factionItemCount = reader.ReadEncodedInt();

                    for (int i = 0; i < factionItemCount; ++i)
                    {
                        FactionItem factionItem = new FactionItem(reader, m_Faction);

                        if (!factionItem.HasExpired)
                        {
                            factionItem.Attach();
                        }
                        else
                        {
                            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(factionItem.Detach));                                         // sandbox detachment
                        }
                    }
                }

                m_FactionTraps = new FactionTrapCollection();

                if (version >= 3)
                {
                    int factionTrapCount = reader.ReadEncodedInt();

                    for (int i = 0; i < factionTrapCount; ++i)
                    {
                        BaseFactionTrap trap = reader.ReadItem() as BaseFactionTrap;

                        if (trap != null && !trap.CheckDecay())
                        {
                            m_FactionTraps.Add(trap);
                        }
                    }
                }

                break;
            }
            }

            if (version < 1)
            {
                m_Election = new Election(m_Faction);
            }
        }
Пример #14
0
        public FactionState(IGenericReader reader)
        {
            var version = reader.ReadEncodedInt();

            switch (version)
            {
            case 5:
            {
                LastAtrophy = reader.ReadDateTime();
                goto case 4;
            }

            case 4:
            {
                var count = reader.ReadEncodedInt();

                for (var i = 0; i < count; ++i)
                {
                    var time = reader.ReadDateTime();

                    if (i < m_LastBroadcasts.Length)
                    {
                        m_LastBroadcasts[i] = time;
                    }
                }

                goto case 3;
            }

            case 3:
            case 2:
            case 1:
            {
                Election = new Election(reader);

                goto case 0;
            }

            case 0:
            {
                m_Faction = Faction.ReadReference(reader);

                m_Commander = reader.ReadEntity <Mobile>();

                if (version < 5)
                {
                    LastAtrophy = Core.Now;
                }

                if (version < 4)
                {
                    var time = reader.ReadDateTime();

                    if (m_LastBroadcasts.Length > 0)
                    {
                        m_LastBroadcasts[0] = time;
                    }
                }

                Tithe  = reader.ReadEncodedInt();
                Silver = reader.ReadEncodedInt();

                var memberCount = reader.ReadEncodedInt();

                Members = new List <PlayerState>();

                for (var i = 0; i < memberCount; ++i)
                {
                    var pl = new PlayerState(reader, m_Faction, Members);

                    if (pl.Mobile != null)
                    {
                        Members.Add(pl);
                    }
                }

                m_Faction.State = this;

                m_Faction.ZeroRankOffset = Members.Count;
                Members.Sort();

                for (var i = Members.Count - 1; i >= 0; i--)
                {
                    var player = Members[i];

                    if (player.KillPoints <= 0)
                    {
                        m_Faction.ZeroRankOffset = i;
                    }
                    else
                    {
                        player.RankIndex = i;
                    }
                }

                FactionItems = new List <FactionItem>();

                if (version >= 2)
                {
                    var factionItemCount = reader.ReadEncodedInt();

                    for (var i = 0; i < factionItemCount; ++i)
                    {
                        var factionItem = new FactionItem(reader, m_Faction);

                        Timer.StartTimer(factionItem.CheckAttach);         // sandbox attachment
                    }
                }

                Traps = new List <BaseFactionTrap>();

                if (version >= 3)
                {
                    var factionTrapCount = reader.ReadEncodedInt();

                    for (var i = 0; i < factionTrapCount; ++i)
                    {
                        if (reader.ReadEntity <Item>() is BaseFactionTrap trap && !trap.CheckDecay())
                        {
                            Traps.Add(trap);
                        }
                    }
                }

                break;
            }
            }

            if (version < 1)
            {
                Election = new Election(m_Faction);
            }
        }
Пример #15
0
        public FactionState(GenericReader reader)
        {
            int version = reader.ReadEncodedInt();

            switch (version)
            {
            case 6:
            case 5:
            {
                m_LastAtrophy = reader.ReadDateTime();
                goto case 4;
            }

            case 4:
            {
                int count = reader.ReadEncodedInt();

                for (int i = 0; i < count; ++i)
                {
                    DateTime time = reader.ReadDateTime();

                    if (i < m_LastBroadcasts.Length)
                    {
                        m_LastBroadcasts[i] = time;
                    }
                }

                goto case 3;
            }

            case 3:
            case 2:
            case 1:
            {
                Election ele = new Election(reader);

                if (Settings.Enabled)
                {
                    m_Election = ele;
                }
                else
                {
                    m_Election = new Election(m_Faction);
                }

                goto case 0;
            }

            case 0:
            {
                m_Faction = Faction.ReadReference(reader);

                if (m_Election.Faction == null)
                {
                    m_Election.Faction = m_Faction;
                }

                m_Commander = reader.ReadMobile();

                if (version < 5)
                {
                    m_LastAtrophy = DateTime.UtcNow;
                }

                if (version < 4)
                {
                    DateTime time = reader.ReadDateTime();

                    if (m_LastBroadcasts.Length > 0)
                    {
                        m_LastBroadcasts[0] = time;
                    }
                }

                m_Tithe  = reader.ReadEncodedInt();
                m_Silver = reader.ReadEncodedInt();

                int memberCount = reader.ReadEncodedInt();

                m_Members = new List <PlayerState>();

                for (int i = 0; i < memberCount; ++i)
                {
                    PlayerState pl = new PlayerState(reader, m_Faction, m_Members);

                    if (pl.Mobile != null)
                    {
                        if (Settings.Enabled)
                        {
                            m_Members.Add(pl);
                        }
                        else
                        {
                            Settings.AddDisabledNotice(pl.Mobile);
                        }
                    }
                }

                m_Faction.State = this;

                m_Faction.ZeroRankOffset = m_Members.Count;
                m_Members.Sort();

                for (int i = m_Members.Count - 1; i >= 0; i--)
                {
                    PlayerState player = m_Members[i];

                    if (player.KillPoints <= 0)
                    {
                        m_Faction.ZeroRankOffset = i;
                    }
                    else
                    {
                        player.RankIndex = i;
                    }
                }

                m_FactionItems = new List <FactionItem>();

                if (version >= 2)
                {
                    int factionItemCount = reader.ReadEncodedInt();

                    for (int i = 0; i < factionItemCount; ++i)
                    {
                        FactionItem factionItem = new FactionItem(reader, m_Faction);

                        if (Settings.Enabled)
                        {
                            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(factionItem.CheckAttach));         // sandbox attachment
                        }
                    }
                }

                m_FactionTraps = new List <BaseFactionTrap>();

                if (version >= 3)
                {
                    int factionTrapCount = reader.ReadEncodedInt();

                    for (int i = 0; i < factionTrapCount; ++i)
                    {
                        BaseFactionTrap trap = reader.ReadItem() as BaseFactionTrap;

                        if (trap != null && !trap.CheckDecay())
                        {
                            if (Settings.Enabled)
                            {
                                m_FactionTraps.Add(trap);
                            }
                            else
                            {
                                trap.Delete();
                            }
                        }
                    }
                }

                break;
            }
            }

            if (version < 6 && Settings.Enabled && Core.ML)
            {
                FactionCollectionBox box = new FactionCollectionBox(m_Faction);
                WeakEntityCollection.Add("factions", box);
                box.MoveToWorld(m_Faction.Definition.Stronghold.CollectionBox, Faction.Facet);
            }

            if (version < 1)
            {
                m_Election = new Election(m_Faction);
            }
        }